{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/assets/js/tinymce/tinymce.js","webpack:///./src/assets/js/tinymce/plugins/code/plugin.js","webpack:///./src/common/cache.js","webpack:///./src/common/directives/datepicker.js","webpack:///./src/common/components/loading.vue?cfb8","webpack:///./src/assets/js/tinymce/plugins/link/plugin.js","webpack:///./src/assets/js/tinymce/plugins/paste/plugin.js","webpack:///./src/common/api.js","webpack:///./src/assets/js/tinymce/plugins/textcolor/plugin.js","webpack:///./src/assets/js/tinymce/plugins/media/plugin.js","webpack:///./node_modules/moment/locale sync ^\\.\\/.*$","webpack:///./src/assets/js/tinymce/plugins/advlist/plugin.js","webpack:///./src/assets/js/tinymce/plugins/preview/plugin.js","webpack:///./src/App.vue","webpack:///./src/App.vue?180a","webpack:///./src/template/index.vue","webpack:///./src/template/footer.vue","webpack:///src/template/footer.vue","webpack:///./src/template/footer.vue?e91c","webpack:///./src/template/footer.vue?8a0a","webpack:///./src/template/header.vue","webpack:///src/template/header.vue","webpack:///./src/template/header.vue?1e38","webpack:///./src/template/header.vue?e466","webpack:///./src/common/components/loading.vue","webpack:///src/common/components/loading.vue","webpack:///./src/common/components/loading.vue?6c16","webpack:///./src/common/components/loading.vue?d289","webpack:///src/template/index.vue","webpack:///./src/template/index.vue?1d83","webpack:///./src/template/index.vue?b239","webpack:///./src/views/authorized/index.vue","webpack:///src/views/authorized/index.vue","webpack:///./src/views/authorized/index.vue?42de","webpack:///./src/views/authorized/index.vue?095f","webpack:///./src/views/trocarescola/index.vue","webpack:///src/views/trocarescola/index.vue","webpack:///./src/views/trocarescola/index.vue?4ea0","webpack:///./src/views/trocarescola/index.vue?6163","webpack:///./src/views/acessonegado/index.vue","webpack:///src/views/acessonegado/index.vue","webpack:///./src/views/acessonegado/index.vue?f784","webpack:///./src/views/acessonegado/index.vue?af6e","webpack:///./src/views/cadastro/index.vue","webpack:///src/views/cadastro/index.vue","webpack:///./src/views/cadastro/index.vue?e784","webpack:///./src/views/cadastro/index.vue?a721","webpack:///./src/views/404.vue","webpack:///src/views/404.vue","webpack:///./src/views/404.vue?8ea3","webpack:///./src/views/404.vue?8b9a","webpack:///./src/router/generated.js","webpack:///./src/router/index.js","webpack:///./src/common/directives/canaccess.js","webpack:///./src/main.js","webpack:///./src/common/components/pagination.vue","webpack:///src/common/components/pagination.vue","webpack:///./src/common/components/pagination.vue?db56","webpack:///./src/common/components/pagination.vue?9268","webpack:///./src/common/base.js","webpack:///./src/assets/js/tinymce/plugins/lists/plugin.js","webpack:///./src/common/auth.js","webpack:///./src/common/global.js","webpack:///./src/assets/loader.png","webpack:///./src/common/directives/select.js","webpack:///./src/assets/js/tinymce/plugins/colorpicker/plugin.js","webpack:///./src/assets/js/tinymce/plugins/image/plugin.js","webpack:///./src/assets/js/tinymce/themes/modern/theme.js","webpack:///./src/assets/imagens/logos/logo-CNA-big.png","webpack:///./src/views/404.vue?b5e2","webpack:///./src/common/directives/htmleditor.js","webpack:///./src/views/cadastro/index.vue?f9d4"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","jsonpScriptSrc","p","exports","module","l","e","promises","installedChunkData","promise","Promise","resolve","reject","onScriptComplete","script","document","createElement","charset","timeout","nc","setAttribute","src","error","Error","event","onerror","onload","clearTimeout","chunk","errorType","type","realSrc","target","message","name","request","undefined","setTimeout","head","appendChild","all","m","c","d","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","oe","err","console","jsonpArray","window","oldJsonpFunction","slice","opera","webkit","ie","ie11","ie12","gecko","mac","iDevice","android","fileApi","phone","tablet","windowsPhone","noop","x","_i","arguments","compose","fa","fb","constant","identity","curry","f","args","Array","newArgs","concat","die","msg","never","always","never$1","always$1","none","NONE","eq","isNone","call$$1","thunk","id","noop$$1","nul","undef","me","fold","is","isSome","getOr","getOrThunk","getOrDie","getOrNull","getOrUndefined","or","orThunk","map","ap","each","flatten","exists","forall","filter","equals","equals_","toArray","toString","freeze","some","a","constant_a","self","v","optfab","fab","elementEq","b","from","Option","typeOf","_typeof","isPrototypeOf","String","isType","isString","isObject","isArray","isNull","isBoolean","isFunction","isNumber","rawIndexOf","pIndexOf","indexOf","fastIndex","xs","slowIndex","slowIndexOf","contains","pred","findIndex","len","eachr","partition","pass","fail","arr","foldr","acc","foldl","find","output","reverse","difference","a1","a2","mapToObject","sort","comparator","copy","last","from$1","Global","Function","path","parts","scope","split","unsafe","actual","$_89i3w1cjkmcwk2c","url","createObjectURL","blob","revokeObjectURL","u","$_ci16mbjkmcwk2b","nav","navigator","userAgent","matchMediaQuery","query","matchMedia","matches","test","appName","exec","requestAnimationFramePromise","support","Expr","getText","isXML","tokenize","compile","select","outermostContext","sortInput","hasDuplicate","setDocument","document$1","docElem","documentIsHTML","rbuggyQSA","rbuggyMatches","contains$1","contentEditable","parseInt","match","$_cvvl9iajkmcwk25","iOS","transparentSrc","caretAfter","range","getSelection","documentMode","ceFalse","cacheSuffix","container","overrideViewPort","experimentalShadowDom","canHaveCSP","desktop","fn","thisArg","this","TypeError","_state","_value","_deferreds","doResolve","asap","immediateFn","setImmediate","handle","deferred","cb","onFulfilled","onRejected","ret","newValue","then","finale","Handler","done","reason","ex","catch","remaining","res","val","constructor","race","values","promiseObj","requestAnimationFrame$$1","callback","element","requestAnimationFrameFunc","requestAnimationFrame","vendors","featurefill","wrappedSetTimeout","time","wrappedSetInterval","setInterval","wrappedClearTimeout","wrappedClearInterval","clearInterval","debounce","timer","func","stop","$_3l01gcijkmcwk99","body","setEditorTimeout","editor","removed","setEditorInterval","throttle","eventExpandoPrefix","mouseEventRe","deprecated","keyLocation","layerX","layerY","returnValue","webkitMovementX","webkitMovementY","keyIdentifier","hasIsDefaultPrevented","event$$1","isDefaultPrevented","returnTrue","returnFalse","addEvent","name$$1","capture","addEventListener","attachEvent","removeEvent","removeEventListener","detachEvent","getTargetFromShadowDom","defaultTarget","composedPath","fix","originalEvent","srcElement","pageX","clientX","eventDoc","ownerDocument","doc","documentElement","scrollLeft","clientLeft","pageY","clientY","scrollTop","clientTop","preventDefault","stopPropagation","isPropagationStopped","cancelBubble","stopImmediatePropagation","isImmediatePropagationStopped","metaKey","bindOnReady","win","eventUtils","domLoaded","isDocReady","readyState","readyHandler","waitForDomLoaded","tryScroll","doScroll","top","EventUtils","count","expando","hasFocusIn","hasMouseEnterLeave","mouseEnterLeave","self$$1","events","Date","mouseenter","mouseleave","executeHandlers","evt","callbackList","names","fakeName","nativeHandler","defaultNativeHandler","nodeType","current","related","currentTarget","relatedTarget","parentNode","unbind","ci","eventMap","fire","defaultView","parentWindow","clean","children","getElementsByTagName","destroy","cancel","Event","preferredDoc","dirruns","classCache","createCache","tokenCache","compilerCache","sortOrder","strundefined","MAX_NEGATIVE","hasOwn","pop","push_native","push$1","slice$1","indexOf$1","elem","booleans","whitespace","identifier","attributes","pseudos","rtrim","RegExp","rcomma","rcombinators","rattributeQuotes","rpseudo","ridentifier","matchExpr","ID","CLASS","TAG","ATTR","PSEUDO","CHILD","bool","needsContext","rinputs","rheader","rnative","rquickExpr","rsibling","rescape","runescape","funescape","_","escaped","escapedWhitespace","high","fromCharCode","childNodes","els","Sizzle","selector","context","results","seed","groups","old","nid","newContext","newSelector","getElementById","getElementsByClassName","qsa","nodeName","toLowerCase","getAttribute","replace","toSelector","testContext","join","querySelectorAll","qsaError","removeAttribute","keys","cache","cacheLength","markFunction","siblingCheck","cur","diff","sourceIndex","nextSibling","createInputPseudo","createButtonPseudo","createPositionalPseudo","argument","matchIndexes","node","hasCompare","parent$$1","getTop","getById","attrId","tag","tmp","className","disconnectedMatch","compareDocumentPosition","adown","bup","compare","sortDetached","aup","bp","unshift","expr","elements","matchesSelector","attr","attrHandle","getAttributeNode","specified","uniqueSort","duplicates","detectDuplicates","sortStable","textContent","firstChild","nodeValue","selectors","createPseudo","relative","dir","first","preFilter","excess","unquoted","nodeNameSelector","pattern","operator","check","what","simple","forward","ofType","xml","outerCache","nodeIndex","start","useCache","lastChild","pseudo","setFilters","idx","matched","not","input","matcher","unmatched","has","text","innerText","lang","elemLang","hash","location","root","focus","activeElement","hasFocus","href","tabIndex","enabled","disabled","checked","selected","selectedIndex","empty","parent","header","button","length$$1","even","odd","lt","gt","nth","radio","checkbox","file","password","image","submit","reset","tokens","addCombinator","combinator","base","checkNonElements","doneName","oldCache","newCache","elementMatcher","matchers","multipleContexts","contexts","condense","newUnmatched","mapped","setMatcher","postFilter","postFinder","postSelector","temp","preMap","postMap","preexisting","elems","matcherIn","matcherOut","matcherFromTokens","checkContext","leadingRelative","implicitRelative","matchContext","matchAnyContext","matcherFromGroupMatchers","elementMatchers","setMatchers","bySet","byElement","superMatcher","outermost","matchedCount","setMatched","contextBackup","dirrunsUnique","Math","random","filters","parseOnly","soFar","preFilters","cached","token","compiled","isArray$1","obj","array","each$1","map$1","out","item","index","filter$1","indexOf$2","reduce","collection","iteratee","accumulator","findIndex$1","predicate","find$1","last$1","$_9g1fibmjkmcwkbu","whiteSpaceRegExp","trim","str","makeMap","items","delim","prop","sp","cn","scn","de","createNS","onCreate","extend","static","ext","walk","resolve$1","explode","_addCacheSuffix","$_4ujg4tljkmcwkbk","grep","inArray","push$2","slice$2","rquickExpr$1","Event$$1","skipUniques","isDefined","isString$1","isWindow","createFragment","html","fragDoc","frag","createDocumentFragment","innerHTML","domManipulate","targetNodes","sourceItem","getElementDocument","DomQuery","makeArray","hasClass","wrap","wrapper","lastParent","newWrapper","cloneNode","insertBefore","numericCssMap","booleanMap","propFix","for","class","readonly","cssFix","float","attrHooks","cssHooks","init","whiteSpaceRegExp$1","trim$1","each$2","charAt","add","nodes","unique","hook","set","removeAttr","css","elm","camel","toUpperCase","dashed","style","removeProperty","currentStyle","getComputedStyle","getPropertyValue","remove","removeChild","append","host","prepend","before","after","appendTo","prependTo","replaceWith","content","wrapAll","wrapInner","contents","unwrap","clone","addClass","toggleClass","removeClass","state","existingClassName","classState","on","off","trigger","show","hide","closest","offset","docElm","pos","y","getBoundingClientRect","left","el","until","sibling","siblingName","firstSibling","parents","next","prev","contentDocument","contentWindow","parentsUntil","nextUntil","prevUntil","overrideDefaults","defaults","sub","appendHooks","targetHooks","hooks","maxlength","maxLength","size","cssText","opacity","zoom","called","firstMatch","regexes","find$2","agent","major","minor","group","Number","nu","detect","versionRegexes","cleanedAgent","unknown","$_2kio3msjkmcwkcv","edge","chrome","ie$1","opera$1","firefox","safari","isBrowser","unknown$1","nu$1","version","info","isEdge","isChrome","isIE","isOpera","isFirefox","isSafari","$_ei4lq0rjkmcwkcq","windows","ios","android$1","linux","osx","solaris","freebsd","isOS","unknown$2","nu$2","isWindows","isiOS","isAndroid","isOSX","isLinux","isSolaris","isFreeBSD","$_85w4ndtjkmcwkcx","DeviceType","os","browser","isiPad","isiPhone","isAndroid3","isAndroid4","isTablet","isTouch","isPhone","iOSwebview","isWebView","detect$1","candidates","candidate","search","detectBrowser","browsers","detectOs","oses","$_6qxoukvjkmcwkd5","contains$2","substr","trim$2","normalVersionRegex","checkContains","uastring","monstrosity","$_6vxr68wjkmcwkdc","detect$2","deviceType","$_c5ox8vqjkmcwkco","detect$3","$_b1ykk4ojkmcwkcj","fromHtml","div","hasChildNodes","fromDom","fromTag","fromText","createTextNode","dom","fromPoint","elementFromPoint","Element$$1","$_c8e5uh12jkmcwke2","ATTRIBUTE","Node","ATTRIBUTE_NODE","CDATA_SECTION","CDATA_SECTION_NODE","COMMENT","COMMENT_NODE","DOCUMENT","DOCUMENT_NODE","DOCUMENT_TYPE","DOCUMENT_TYPE_NODE","DOCUMENT_FRAGMENT","DOCUMENT_FRAGMENT_NODE","ELEMENT","ELEMENT_NODE","TEXT","TEXT_NODE","PROCESSING_INSTRUCTION","PROCESSING_INSTRUCTION_NODE","ENTITY_REFERENCE","ENTITY_REFERENCE_NODE","ENTITY","ENTITY_NODE","NOTATION","NOTATION_NODE","isType$1","isComment","isElement","isText","isDocument","$_2xwdjv11jkmcwke0","each$3","props","k","map$2","tupleMap","tuple","bifilter","branch","rawSet","setAll","attrs","hasAttribute","hasNone","transferOne","source","destination","transfer","$_29helg15jkmcwkf0","inBody","getBody","$_g4uup916jkmcwkfg","isSupported","$_crv2n17jkmcwkfl","internalSet","setProperty","internalRemove","set$1","setAll$1","setOptions","get$1","styles","getUnsafeProperty","getRaw","raw","getAllRaw","ruleName","isValidValue","remove$1","preserve","oldStyles","restore","sourceDom","targetDom","reflow","offsetWidth","transferOne$1","transfer$1","$_4enzit13jkmcwke5","Immutable","fields","struct","toArray$1","recurse","$_ea405s1djkmcwkgi","documentPositionPreceding","DOCUMENT_POSITION_PRECEDING","documentPositionContainedBy","DOCUMENT_POSITION_CONTAINED_BY","$_ggq6431fjkmcwkgt","is$1","msMatchesSelector","webkitMatchesSelector","mozMatchesSelector","bypassSelector","childElementCount","one","querySelector","$_4jv6d81gjkmcwkgv","e1","e2","isEqualNode","member","regularContains","d1","d2","ieContains","contains$3","$_e4hu6h1ejkmcwkgj","owner","findIndex$2","kin","isRoot","rawParent","siblings","filterSelf","offsetParent","prevSibling","previousSibling","prevSiblings","nextSiblings","child","childNodesCount","spot","leaf","cs","$_ca6pc118jkmcwkfs","browser$1","firstElement","getTableCaptionDeltaY","caption","bodyTop","offsetTop","captionTop","captionHeight","offsetHeight","getPos","rootElm","offsetLeft","$_5o0xi0njkmcwkbz","nu$3","baseFn","callbacks","map$$1","nCallback","isReady","run","cbs","pure$1","LazyValue","pure","bounce","nu$4","aFutureB","anonBind","futureB","toLazy","pure$2","Future","par","asyncValues","asyncValue","par$1","futures","value$1","opt","onValue","toOption","isValue","isError","onError","Result","StyleSheetLoader","document$$1","settings","maxLoadTime","idCount","loadedStates","appendToHead","load","loadedCallback","errorCallback","link","startTime","passed","status","failed","isOldWebKit","webKitChunks","wait","testCallback","waitCallback","getTime","waitForWebKitLinkLoaded","styleSheet","styleSheets","ownerNode","owningElement","waitForGeckoLinkLoaded","cssRules","sheet","rel","async","defer","loadF","unbox","loadAll","urls","success","failure","TreeWalker","startNode","rootNode","findSibling","startName","shallow","findPreviousNode","prev2","namedEntities","baseEntities","reverseEntities","blocks","voids","tableCells","tableSections","textBlocks","headings","listItems","lists","wsElements","lazyLookup","lookup","isHeading","isBlock","isInline","isBr","isTextBlock","isList","isListItem","isVoid","isTableSection","isTableCell","isWsPreserveElement","isNodeType","isElement$1","matchNodeNames","matchStyleValues","cssValue","computed","hasPropValue","propName","propValue","attrName","attrValue","hasAttributeValue","isBogus","isBogusAll","isTable","tagName","hasContentEditableState","isText$1","isComment$1","isDocument$1","isBr$1","isContentEditableTrue","isContentEditableFalse","$_bjermr1rjkmcwkij","surroundedBySpans","previousIsSpan","nextIsSpan","isBookmarkNode","trimNode","trimmedLength","$_br9sxm1pjkmcwki4","makeMap$1","attrsCharsRegExp","textCharsRegExp","rawCharsRegExp","entityRegExp","asciiMap","128","130","131","132","133","134","135","136","137","138","139","140","142","145","146","147","148","149","150","151","152","153","154","155","156","158","159","'","nativeDecode","buildEntitiesLookup","radix","chr","entity","encodeRaw","encodeAllRaw","encodeNumeric","charCodeAt","encodeNamed","entities","getEncodeFunc","entitiesMap","encodeNamedAndNumeric","encodeCustomNamed","nameMap","named","numeric","decode","$_33qwr1sjkmcwkip","mapCache","dummyObj","makeMap$2","each$4","extend$1","explode$1","inArray$1","compileSchema","globalAttributes","blockContent","phrasingContent","flowContent","html4BlockContent","html4PhrasingContent","schema","ni","attributesOrder","arrayToMap","addAttrs","schemaItem","table","compileElementMap","Schema","validStyles","invalidStyles","schemaItems","whiteSpaceElementsMap","selfClosingElementsMap","shortEndedElementsMap","boolAttrMap","validClasses","blockElementsMap","nonEmptyElementsMap","moveCaretBeforeOnEnterElementsMap","textBlockElementsMap","textInlineElementsMap","patternElements","customElementsMap","specialElements","createLookupTable","option","defaultValue","extendWith","verify_html","valid_elements","valid_styles","invalid_styles","valid_classes","special","patternToRegExp","addValidElements","validElements","ei","ai","al","attrData","elementName","attrType","prefix","outputName","globalAttributesOrder","elementRuleRegExp","attrRuleRegExp","hasPatternsRegExp","paddEmpty","removeEmpty","removeEmptyAttrs","attributesRequired","required","attributesDefault","attributesForced","forcedValue","validValues","attributePatterns","setValidElements","addCustomElements","customElements","customElementRegExp","text_block_elements","block_elements","rule","inline","cloneName","customRule","elmName","addValidChildren","validChildren","childRuleRegExp","getElementRule","custom_elements","valid_children","extended_valid_elements","dd","dt","li","td","th","tr","tbody","thead","tfoot","legend","area","param","parentsRequired","invalid_elements","getValidStyles","getInvalidStyles","getValidClasses","getBoolAttrs","getBlockElements","getTextBlockElements","getTextInlineElements","getShortEndedElements","getSelfClosingElements","getNonEmptyElements","getMoveCaretBeforeOnEnterElements","getWhiteSpaceElements","getSpecialElements","isValidChild","isValid","attrPatterns","getCustomElements","toHex","g","hex","Styles","encodingItems","rgbRegExp","urlOrStrRegExp","styleRegExp","trimRightRegExp","encodingLookup","invisibleChar","color","parse","isEncoded","urlConverter","url_converter","urlConverterScope","url_converter_scope","compress","suffix","noJoin","right","bottom","box","canCompress","compress2","encode","keepSlashes","decodeSingleHexSequence","escSeq","decodeHexSequences","processUrl","url2","url3","str2","allow_script_urls","scriptUrl","allow_svg_data_urls","lastIndex","border","serialize","serializeStyles","styleList","styleMap","each$5","grep$1","simpleSelectorRe","whiteSpaceRegExp$2","setupAttrHooks","getContext","keepValues","keep_values","keepUrlHook","$elm","updateInternalStyleAttr","rawValue","findNodeIndex","normalized","lastNodeType","DOMUtils","_this","addedStyles","files","counter","stdMode","boxModel","styleSheetLoader","boundEvents","ownEvents","proxy","$","getRoot","getElementsByName","$$","getAttrib","defaultVal","getAttribs","setAttrib","originalValue","onSetAttrib","attrElm","deep","clone_1","root_element","getViewPort","argWin","actWin","pageXOffset","pageYOffset","w","innerWidth","clientWidth","h","innerHeight","clientHeight","setStyle","update_styles","setStyles","stylesArg","getStyle","getSize","getRect","elms","getParents","collect","selectorVal","getParent","_findSib","getNext","getPrev","setAttribs","setHTML","canHaveHTML","parentElm","newElm","createHTML","outHtml","keepChildren","$node","removeAllAttribs","removeAttributeNode","parseStyle","serializeStyle","addStyle","styleElm","DOM","loadCSS","cls","isHidden","uniqueId","getOuterHTML","outerHTML","setOuterHTML","insertAfter","reference","referenceNode","oldElm","replaceChild","rename","attrNode","findCommonAncestor","pe","ps","rgbVal","isEmpty","walker","brCount","bogusVal","createRng","createRange","splitElm","replacementElm","bef","aft","pa","setStart","setEnd","extractContents","getContentEditable","getContentEditableParent","isChildOf","dumpRng","startContainer","startOffset","endContainer","endOffset","DOMUtils$1","each$6","grep$2","isFunction$1","ScriptLoader","QUEUED","LOADING","LOADED","FAILED","states","queue","scriptLoadedCallbacks","queueLoadedCallbacks","loading","loadScript","onreadystatechange","log","isDone","markDone","loadQueue","loadScripts","scripts","failures","execCallbacks","loadingScripts","notifyCallbacks","each$7","AddOnManager","_listeners","instance","dependencies","requireLangPack","languages","language","languageLoad","addOn","listener","createUrl","baseUrl","dep","resource","addComponents","pluginName","pluginUrl","loadDependencies","addOnUrl","deps","newUrl","urlString","baseURL","substring","lastIndexOf","waitFor","PluginManager","ThemeManager","marker","appendAt","wrap$1","$_f4qt4v1yjkmcwkl2","before$1","after$1","prepend$1","append$1","$_1ev7t1xjkmcwkky","rogue","remove$2","$_eualm21wjkmcwkku","first$1","rate","last$3","Cell","initial","Toggler","turnOff","turnOn","active","toggle","isOn","read","remove$3","$_4m1njo26jkmcwkme","supports","classList","get$2","add$1","clazz","remove$4","$_ewhsr825jkmcwkm2","add$2","cleanClass","remove$5","toggle$1","toggler","hasClasslist","has$1","$_ftm4v023jkmcwklz","all$1","descendants","ancestors","siblings$1","children$1","$_733l9k28jkmcwkmj","all$2","ancestors$1","siblings$2","children$2","descendants$1","$_2gqm0n27jkmcwkmi","ClosestOrAncestor","ancestor","first$2","descendant","sibling$1","child$1","descend","$_253nd92ajkmcwkmp","first$3","ancestor$1","sibling$2","child$2","descendant$1","closest$1","$_4ki4d929jkmcwkmn","annotation","dataAnnotation","dataAnnotationId","identify","annotationName","rng","selection","getRng","an","newStart","getAttr","uid","findMarkers","isAnnotation","findAll","markers","directory","nodesAlready","setup","registry","changeCallbacks","initData","listeners","previous","withCallbacks","updateCallbacks","callbackMap","outputData","fireCallbacks","fireNoAnnotation","onNodeChange","annotations","_a","addListener","setup$1","identifyParserNode","span","optAnnotation","serializer","addNodeFilter","spans","persistent","create$1","register","generate","date","floor","add$3","classes","remove$6","toggle$2","hasAll","hasAny","getNative","get$3","$_dw1myr2hjkmcwko1","clone$1","original","shallowAs","copy$1","cloneChildren","mutate","$_44uvy22ijkmcwko5","slice$3","constant$1","negate","compose$2","and","curry$1","tempArgs","noop$1","$_fl2rax2ljkmcwkot","ZWSP","isZwsp","trim$3","$_cadvcr2pjkmcwkph","isElement$2","isText$2","isCaretContainerBlock","isCaretContainerInline","isCaretContainer","hasContent","insertInline","textNode","endsWithCaretContainer","splitText","startsWithCaretContainer","isBeforeInline","isAfterInline","createBogusBr","br","insertBlock","blockName","blockNode","trimBogusBr","brs","lastBr","showCaretContainerBlock","caretContainer","isRangeInCaretContainerBlock","isContentEditableTrue$1","isContentEditableFalse$1","isBr$2","isText$3","isInvalidTextElement","isAtomicInline","isTable$1","isCaretContainer$1","isCaretCandidate","isNonUiContentEditableFalse","isUnselectable","isInEditable","isAtomicContentEditableFalse","isAtomic","isEditableCaretCandidate","round","clone$2","rect","width","height","collapse","toStart","isEqual","rect1","rect2","isValidOverflow","overflowY","min","isAbove","isBelow","containsXY","overflowX","outer","inner","getOverflow","getSelectedNode","getNode","extendingChars","isExtendingChar","ch","liftN","isElement$3","isCaretCandidate$1","isBlock$1","isFloated","isValidElementCaretCandidate","isNotPre","isText$4","isBr$3","resolveIndex","isWhiteSpace","isRange","isHiddenWhiteSpaceRange","range$$1","getBrClientRect","brNode","clientRect","nbsp","getBoundingClientRectWebKitText","sc","ec","so","eo","newRng","cloneRange","setEndAfter","isZeroRect","clientRects","getClientRects","collapseAndInflateWidth","newClientRect","getCaretPositionClientRects","caretPosition","beforeNode","addUniqueAndValidRect","addCharacterOffset","isAtEnd","CaretPosition","isAtStart","toRange","isVisible","isEqual$$1","getNode$$1","fromRangeStart","fromRangeEnd","pos1","pos2","isTextPosition","isElementPosition","HDirection","CaretPosition$1","isText$5","isBogus$1","nodeIndex$1","normalizedParent","getChildNodes","normalizedTextOffset","equal$1","normalizedNodeIndex","numTextFragments","createPathItem","create$2","outputOffset","resolvePathItem","findTextPosition","dataLen","targetOffset","resolve$2","isContentEditableFalse$2","getNormalizedTextOffset","trimmedOffset","getPoint","point","max","getLocation","bookmark","isCollapsed","end","trimEmptyTextNode","findIndex$3","moveEndPoint","normalizeTableCellSelection","findAdjacentContentEditableFalseElm","getOffsetBookmark","getCaretBookmark","getRangeBookmark","createBookmarkSpan","filled","getPersistentBookmark","collapsed","rng2","endBookmarkNode","insertNode","startBookmarkNode","moveToBookmark","keep","getBookmark","$_aw3zi52jjkmcwkoa","getUndoBookmark","CARET_ID","isCaretNode","getParentCaretContainer","isElement$4","isText$6","removeNode","getNodeValue","setNodeValue","trimCount","trimmedText","removeUnchanged","remove$7","removeTextAndReposition","removeElementAndReposition","newPosition","removeTextCaretContainer","removeElementCaretContainer","removeAndReposition","caretContainerNode","$_xl2r331jkmcwkri","isContentEditableTrue$2","isContentEditableFalse$3","showCaret","direction","scrollIntoView","_selectionOverrides","getNodeRange","selectNode","renderCaretAtRange","normalizedRange","normalizeRange","caretPositionNode","caretPositionBeforeNode","ceRoot","renderRangeCaret","caretRange","BreakType","isContentEditableFalse$4","isText$7","isElement$5","isBr$4","isCaretCandidate$2","isAtomic$1","isEditableCaretCandidate$1","nodeAtIndex","getCaretCandidatePosition","isForwards","isBackwards","isBrBeforeBlock","findCaretPosition","isInSameBlock","startPos","nextNode","innerNode","rootContentEditableFalseElm","findNode","CaretWalker","Forwards","Backwards","flip","positions","walk$1","caretWalker","getBreakType","currentPos","nextPos","Br","Block","Wrap","getPositionsUntil","breakType","breakAt","Eol","getAdjacentLinePositions","getPositionsUntilBreak","findClosestHorizontalPositionFromPoint","newPos","lastPos","lastRect","newRect","lastDist","abs","newDist","findClosestHorizontalPosition","targetRect","getPositionsUntilPreviousLine","getPositionsUntilNextLine","getPositionsAbove","getPositionsBelow","getFirstLinePositions","$_1m3f3j2yjkmcwkqg","firstPositionIn","getLastLinePositions","lastPositionIn","deflate","delta","getCorners","getYAxisValue","tds","cell","findClosestCorner","corners","newCorner","oldCorner","oldDist","sqrt","getClosestCell","isTargetCorner","cells","corner","getBottomValue","getTopValue","isAbove$1","isBelow$1","getClosestCellAbove","getClosestCellBelow","findClosestPositionInAboveCell","findClosestPositionInBelowCell","getPos$1","fireScrollIntoViewEvent","alignToTop","scrollEvent","scrollElementIntoView","viewPort","viewPortY","viewPortH","offsetY","scrollContainer","getScrollContainer","getWin","scrollTo","getViewPortRect","scrollBy","dx","dy","scrollRangeIntoView","rngRect","bodyRect","overflow","margin","$_a6610x37jkmcwkt5","getBodySetting","getParam","bodyObj","getIframeAttrs","getDocType","getDocumentBaseUrl","getBodyId","getBodyClass","getContentSecurityPolicy","shouldPutBrInPre","getForcedRootBlock","block","getForcedRootBlockAttrs","getBrNewLineSelector","getNoNewLineSelector","shouldKeepStyles","shouldEndContainerOnEmptyBlock","getFontStyleValues","getFontSizeClasses","$_2ycm1438jkmcwkta","browser$2","isFakeCaretTableBrowser","moveToRange","setRng","isAtTableCellLine","lineInfo","breakPos","isAtFirstTableCellLine","isAtLastTableCellLine","isCaretAtStartOrEndOfTable","caretPos","positionIn","navigateHorizontally","getClosestAbovePosition","getClosestBelowPosition","getTable","renderBlock","down","forcedRootBlock","undoManager","transact","moveCaret","last$$1","navigateVertically","moveH","moveV","isContentEditableFalse$5","isTableCell$1","getAbsoluteClientRect","scrollX","scrollY","rootRect","trimInlineCaretContainers","contentEditableFalseNodes","deleteData","FakeCaret","cursorInterval","lastVisualCaret","caret","caretState","startBlink","reposition","getCss","isFakeCaretTarget","isContentEditableFalse$6","isBlockLike","isCaretContainer$2","isCaretContainerBlock$1","curry$2","isElement$6","isCaretCandidate$3","skipCaretContainers","predicateFn","getParentBlock","caretPosition1","caretPosition2","getChildNodeAtRelativeOffset","relativeOffset","beforeAfter","setStartBefore","setEndBefore","setStartAfter","isNodesInSameBlock","node1","node2","lean","before$2","after$2","leanLeft","leanRight","isNextToContentEditableFalse","isNextToTable","getRelativeCefElm","getNormalizedRangeEndPoint","isBeforeContentEditableFalse","isAfterContentEditableFalse","isBeforeTable","isAfterTable","walkToPositionIn","position","fromPosition","afterElement","isBeforeOrStart","isAfterOrEnd","isBeforeAfterSameElement","to","isAtBr","shouldSkipPosition","navigate","nextPosition","prevPosition","isStringPathBookmark","isRangeBookmark","isIdBookmark","isIndexBookmark","isPathBookmark","addBogus","resolveCaretPositionBookmark","insertZwsp","tryFindRangePosition","padEmptyCaretContainer","setEndPoint","isValidTextNode","restoreEndPoint","appendData","alt","o1","o2","resolvePaths","resolveId","endPos","spos","epos","resolveIndex$1","resolve$3","$_1fx23n2wjkmcwkq6","getBookmark$1","isBookmarkNode$1","$_e4btcc2vjkmcwkq3","isInlineBlock","moveStart","isWhiteSpaceNode","getNonWhiteSpaceSibling","inc","isTextBlock$1","ed","replaceVars","vars","isEq","str1","normalizeStyleValue","getTextDecoration","decoration","getParents$1","$_dli08w3ajkmcwktg","isBookmarkNode$2","getParents$2","isWhiteSpaceNode$1","isTextBlock$2","findLeaf","excludeTrailingWhitespace","isBogusBr","findParentContentEditable","findSpace","findWordEndPoint","lastTextNode","findSelectorEndPoint","format","curFormat","findBlockEndPoint","scopeRoot","findParentContainer","block_expand","expandRng","endPoint","expand","$_97afwh2ujkmcwkpw","each$8","getEndChild","walk$2","startPoint","exclude","collectSiblings","endNode","findEndPoint","walkBoundary","$_cuckrv3bjkmcwktk","zeroWidth","NodeValue","getOption","getOptionIE10","getOptionSafe","api","get$4","set$2","$_ckzc193ejkmcwktu","isZeroWidth","wrapName","__rest","getOwnPropertySymbols","applyWordGrab","annotate","decorate","_b","newWrappers","master","_c","_d","_e","finishWrapper","getOrOpenWrapper","processElements","processElement","ctx","processNodes","annotateWithBookmark","initialRng","Annotator","changes","annotationChanged","getAll","hasOnlyOneChild","isPaddingNode","isPaddedEmptyBlock","blockElements","isEmptyFragmentElement","nonEmptyElements","isListFragment","fragment","cleanupDomFragment","domFragment","toDomFragment","listItems$1","isPadding","isListItemPadded","isEmptyOrPadded","trimListItems","getParentLi","parentBlock","isParentBlockLi","getSplit","beforeRng","afterRng","cloneContents","findFirstIn","newCaretPos","findLastOf","insertMiddle","insertAtCaret","liTarget","liElms","BEGINNING","END","isAt","$_e6q31u3jjkmcwkvd","each$9","ElementUtils","attribs","compareObjects","obj1","obj2","getLastChildren","rawNode","removeTrailingBr","allBrs","fillWithPaddingBr","isPaddingContents","isPaddedElement","trimBlockTrailingBr","lastChildPrevSibling","$_zygeg3ljkmcwkvo","makeMap$3","Writer","indent","indentBefore","indentAfter","htmlOutput","indent_before","indent_after","entity_encoding","element_format","cdata","comment","pi","doctype","getContent","HtmlSerializer","writer","validate","handlers","3","8","7","10","4","11","sortedAttrs","elementRule","handler","shortEnded","createRange$1","normalizeBlockSelectionRange","commonAncestorContainer","newEndPos","normalize","$_bx30le3ojkmcwkw9","isTableCell$2","validInsertion","setContent","trimBrsFromTableCell","insertHtmlAtCaret","details","parser","bookmarkHtml","merge","textInlineElements","trimOrPaddLeftRight","hasSiblingText","trimNbspAfterDeleteAndPaddValue","reduceInlineTextElements","root_1","elementUtils_1","testNode","markFragmentElements","umarkFragmentElements","isPartOfFragment","canHaveChildren","moveSelectionToMarker","parentEditableFalseElm","nextRng","getContentEditableFalseParent","findNextCaretRng","paste","caretElement","parentElement","getDoc","execCommand","parserArgs","insert","showBlockCaretContainer","invalid","getStart","addVisual","processValue","insertAtCaret$1","$_g2yj883ijkmcwkv2","sectionResult","detection","mobilePlugins","defaultMobileSettings","theme","normalizePlugins","plugins","pluginNames","trimmedPlugins","filterMobilePlugins","extractSections","keys$$1","getSection","sections","sectionSettings","hasSection","getDefaultSettings","documentBaseUrl","delta_width","delta_height","popup_css","document_base_url","add_form_submit_trigger","submit_patch","add_unload_trigger","convert_urls","relative_urls","remove_script_host","object_resizing","visual","font_size_style_values","font_size_legacy_values","forced_root_block","hidden_input","render_ui","indentation","inline_styles","convert_fonts_to_spans","convertURL","ie7_compat","getExternalPlugins","overrideSettings","userDefinedExternalPlugins","external_plugins","combinePlugins","forcedPlugins","processPlugins","isTouchDevice","defaultOverrideSettings","forced_plugins","platformPlugins","combinedPlugins","isOnMobile","combineSettings","defaultSettings","extendedSettings","content_editable","getEditorSettings","getFiltered","getString","getParamObject","isArrayOf","strongRtl","hasStrongRtl","isInlineTarget","isRtl","findInlineParents","findRootInline","hasSameParentBlock","block1","block2","isAtZwsp","normalizePosition","normalizeForwards","normalizeBackwards","$_crqmqb3tjkmcwkxd","isBeforeRoot","getParentBlock$1","placeCaretInEmptyBody","setCursorLocation","paddEmptyBody","willDeleteLastPositionInElement","fromPos","firstPos","normalizedFirstPos","normalizedLastPos","normalizedFromPos","prevPos","$_8z75uj3sjkmcwkx3","any","ancestor$2","sibling$3","child$3","descendant$2","closest$2","$_6rijl23xjkmcwl24","hasWhitespacePreserveParent","rootElement","isWhitespace","isNamedAnchor","isContent","isBookmark","isBogus$2","isBogusAll$1","isEmptyNode","targetNode","isEmpty$1","$_1jnfso3wjkmcwl1v","BlockPosition","BlockBoundary","getBlockPosition","containerElm","isDifferentBlocks","blockBoundary","hasSameParent","parent1","parent2","isEditable","skipLastBr","blockPosition","lastPositionInBlock","readFromRange","fromBlockPos","toBlockPos","blockPos","read$1","$_2x2kic3rjkmcwkwi","dropLast","parentsUntil$1","parents$1","parentsAndSelf","$_cir6zl3zjkmcwl2j","getChildrenUntilBlockBoundary","extractChildren","trimBr","removeEmptyRoot","findParentInsertPoint","toBlock","getInsertionPoint","fromBlock","mergeBlockInto","children_1","mergeBlocks","$_ezyxdl3yjkmcwl27","backspaceDelete","$_1wrlyf3qjkmcwkwe","deleteRangeMergeBlocks","deleteContents","isRawNodeInTable","isSelectionInTable","isEverythingSelected","noPrevious","noNext","emptyEditor","deleteRange","backspaceDelete$1","$_egxtcx40jkmcwl2q","generate$1","cases","constructors","adt","acase","argLength","branches","branchKeys","allReqd","reqKey","label","params","Adt","isCompoundElement","DeleteAction","moveToElement","moveToPosition","isAtContentEditableBlockCaret","caretLocation","isDeleteFromCefDifferentBlocks","inSameBlock","deleteEmptyBlockOrMoveToCef","toCefElm","blockElm","findCefPosition","getContentEditableBlockAction","skipMoveToActionFromInlineCefToContent","deleteAction","getContentEditableAction","read$2","needsReposition","beforeOrStartOf","afterOrEndOf","getPreviousSiblingCaretPosition","getNextSiblingCaretPosition","findCaretPositionBackwardsFromElm","startPosition","findCaretPositionForwardsFromElm","findCaretPositionBackwards","findCaretPositionForward","findCaretPosition$1","findCaretPosOutsideElmAfterDelete","setSelection","eqRawNode","isBlock$2","paddEmptyBlock","deleteNormalized","afterDeletePosOpt","afterDeletePos","prevNode","deleteElement","normalizedAfterDeletePos","paddPos","$_4yq1i444jkmcwl3w","deleteElement$1","hideFakeCaret","backspaceDeleteCaret","deleteOffscreenSelection","backspaceDeleteRange","selectedElement","getContentEditableRoot","paddEmptyElement","backspaceDelete$2","$_1hyiiy41jkmcwl2z","isText$8","startsWithCaretContainer$1","endsWithCaretContainer$1","createZwsp","insertBefore$1","insertData","newNode","insertAfter$1","insertInline$1","insertInlineBefore","insertInlineAfter","insertInlinePos","isPosCaretContainer","caretNode","renderCaret","$_efgx6546jkmcwl4n","evaluateUntil","fns","$_8hyv6o49jkmcwl58","Location","rescope","before$3","nPos","isNotInsideFormatCaretContainer","findInsideRootInline","after$3","isValidLocation","getElement","readLocation","getName","outside","inside","isEq$1","location1","location2","betweenInlines","fromInline","toInline","skipNoMovement","fromLocation","toLocation","findLocationTraverse","findLocationSimple","findLocation","$_gau9ep48jkmcwl4x","prevLocation","nextLocation","hasSelectionModifyApi","getSel","modify","moveRel","moveByWord","$_dessn94bjkmcwl5p","setCaretPosition","isFeatureEnabled","inline_boundaries","setSelected","renderCaretLocation","findLocation$1","toggleInlines","selectedInlines","targetInlines","safeRemoveCaretContainer","composing","renderInsideInlineCaret","inlines","move","moveWord","setupSelectedState","moveNextWord","movePrevWord","$_dl6t9m4ajkmcwl5b","isFeatureEnabled$1","rangeFromPositions","hasOnlyTwoOrLessPositionsLeft","setCaretLocation","location$$1","deleteFromTo","ignore","nodeChanged","rescope$1","backspaceDeleteCollapsed","toPosition","backspaceDelete$3","$_dqvreg45jkmcwl4e","tableCellRng","tableSelection","removeTable","emptyCells","isRootFromElement","getClosestCell$1","getClosestTable","isExpandedCellRng","cellRng","getTableFromCellRng","startParentTable","endParentTable","getTableCells","getCellRangeFromStartTable","endCell","partialSelection","startCell","isWithinSameTable","getCellRng","getTableSelectionFromCellRng","getTableSelectionFromRng","getCellIndex","getSelectedCells","startIndex","endIndex","getAction","getActionFromCells","getActionFromRange","$_2x2sml4djkmcwl68","getRanges","ranges","rangeCount","getRangeAt","getSelectedNodes","hasMultipleRanges","$_admly54fjkmcwl6u","getCellsFromRanges","getCellsFromElement","selectedCells","getCellsFromElementOrRanges","rangeCells","getCellsFromEditor","$_7q5gk44ejkmcwl6p","deleteTableElement","deleteCellRange","action","deleteCaptionRange","emptyElement","deleteTableRange","startElm","getParentCaption","deleteRange$1","getParentCell","deleteBetweenCells","fromCell","toCell","isDeleteOfLastCharPos","fromCaption","emptyCaretCaption","validateCaretCaption","toCaption","deleteCaretInsideCaption","deleteCaretCells","deleteCaretCaption","deleteCaret","backspaceDelete$4","$_5lrlvq4cjkmcwl5t","nativeCommand","command","deleteCommand","forwardDeleteCommand","$_3ahn8y3pjkmcwkwc","getSpecifiedFontProp","getProperty","round$1","number","precision","factor","pow","toPt","fontSize","normalizeFontFamily","fontFamily","getComputedFontProp","getFontProp","$_3qs0f64hjkmcwl74","getFontSize","getFontFamily","findFirstCaretElement","isRangeAtStartOfNode","getCaretElement","fromFontSizeNumber","fontSizeNumber","fontSizes","fontClasses","fontNameAction","formatter","fontNameQuery","fontSizeAction","fontSizeQuery","isEq$2","rng1","$_axtxv74kjkmcwl84","findParent","hasParent","hasParentWithName","isTable$2","isTableCell$3","isCeFalseCaretContainer","hasBrBeforeAfter","isPrevNode","hasContentEditableFalseParent","findTextNodeRelative","isAfterNode","lastInlineElement","parentBlockContainer","normalizeEndPoint","directionLeft","normalize$1","normRng","$_21c07i4jjkmcwl7w","hasRightSideContent","scrollToBr","brElm","moveSelectionToBr","extraBr","insertBrAtCaret","isAfterLastNodeInContainer","containerBlock","containerBlockName","isControlKey","ctrlKey","insertBrBefore","insertBrAfter","hasBrAfter","isBeforeBr","isAnchorLink","isInsideAnchor","readInlineAnchorLocation","insertBrOutsideAnchor","anchorLocation","$_dc07up4ijkmcwl7n","cata","subject","onBefore","onOn","onAfter","situ","$_1s5vuk4njkmcwl8r","type$1","domRange","exact","range$1","exactFromRange","simRange","soffset","finish","foffset","getStart$1","startSitu","finishSitu","$_2v8ne64mjkmcwl8l","browser$3","clamp","normalizeRng","isOrContains","isRngInRoot","shouldStore","nativeRangeToSelectionRange","readRange","getBookmark$2","bookmarkToNativeRng","store","newBookmark","storeNative","$_39c3zs4ljkmcwl86","indentElement","useMargin","unit","indentStyleName","styleValue","indentUnit","indentValue","queryCommandState","getSelectedBlocks","each$10","extend$2","map$3","inArray$2","EditorCommands","commands","ui","customCommand","skip_focus","quirks","queryCommandValue","addCommands","commandList","addCommand","queryCommandSupported","addQueryStateHandler","addQueryValueHandler","hasCustomCommand","execNativeCommand","isFormatMatch","toggleFormat","storeSelection","restoreSelection","queryCommandEnabled","translate","notificationManager","open","align","listElm","listParent","hasVisual","anchor","editingHost","selectNodeContents","alignStates","matchNode","paddingLeft","getEnd","list","Undo","undo","Redo","redo","nativeEvents","Dispatcher","toggleEvent","bindings","beforeFire","once","extra","bindingName","hi","isNative","customEventRootDelegates","getEventDispatcher","_eventDispatcher","toggleNativeEvent","$_ed2ug44qjkmcwl97","bubble","hasEventListeners","firePreProcess","firePostProcess","fireRemove","fireSwitchMode","fireObjectResizeStart","fireObjectResized","$_q3ric4tjkmcwl9q","setEditorCommandState","cmd","toggleReadOnly","controlSelection","hideResizeRect","setMode","getMode","initialized","isReadOnly","DOM$1","getEventTarget","eventName","event_root","eventRoot","isListening","hidden","fireEvent","bindEventDelegate","eventRootElm","delegate","delegates","editorManager","activeEditor","editors","EditorObservable","bindPendingEventDelegates","_pendingNativeEvents","unbindAllNativeEvents","getContainer","EditorObservable$1","each$11","explode$2","keyCodeLookup","f9","f10","f11","modifierNames","Shortcuts","shortcuts","pendingPatterns","parseShortcut","shortcut","keyCode","charCode","access","ctrl","meta","createShortcut","desc","cmdFunc","subpatterns","hasModifier","altKey","isFunctionKey","matchShortcut","shiftKey","executeShortcutAction","any$1","ancestor$3","closest$3","sibling$4","child$4","descendant$3","$_szg1f4xjkmcwlad","focus$$1","blur$$1","blur","_doc","focusInside","$_468a0m4wjkmcwla6","getContentEditableHost","getCollapsedNode","getFocusInElement","normalizeSelection","focusBody","setActive","hasElementFocus","hasIframeFocus","iframeElement","hasInlineFocus","rawBody","hasFocus$1","focusEditor","refreshContentEditable","contentEditableHost","activateEditor","bookmarkRng","focus$1","skipFocus","$_e3v8sn4vjkmcwl9y","getProp","rawElm","getComputedSizeProp","getClientWidth","getClientHeight","getMarginTop","getMarginLeft","getBoundingClientRect$1","isInsideElementContentArea","bodyElm","transpose","deltaX","deltaY","isXYInContentArea","targetElm","transposedPoint","fromDomSafe","isEditorAttachedToDom","rawContainer","getContentAreaContainer","$_8we2e850jkmcwlaw","NotificationManagerImpl","unimplemented","close","getArgs","NotificationManager","notifications","getImplementation","getNotificationManagerImpl","getTopNotification","progressBar","addNotification","notification","closeNotification","otherNotification","getNotifications","registerEvents","serviceMessage","service_message","icon","WindowManagerImpl","alert","confirm","getParams","setParams","WindowManager","getWindowManagerImpl","funcBind","fireOpenEvent","fireCloseEvent","addWindow","closeWindow","otherWindow","getTopWindow","getWindows","resolvePluginName","targetUrl","matchUrl","pluginUrlToMessage","plugin","displayNotification","displayError","_skinLoaded","uploadError","pluginLoadError","initError","console$$1","$_b9je0i54jkmcwlbe","PluginManager$1","XMLHttpRequest","Uploader","uploadStatus","pendingPromises","pathJoin","path1","path2","defaultHandler","blobInfo","progress","xhr","formData","withCredentials","credentials","upload","onprogress","loaded","total","json","JSON","responseText","basePath","FormData","filename","send","noUpload","handlerSuccess","handlerFailure","resolvePending","blobUri","uploadBlobInfo","openNotification","markPending","closeNotification_1","markUploaded","removeFailed","percent","isDefaultHandler","pendingUploadBlobInfo","uploadBlobs","blobInfos","isUploaded","isPending","Blob","properties","FileReader","Uint8Array","requestAnimationFrame$1","atob","base64","$_b0eesx5hjkmcwld6","blobUriToBlob","rejectWithError","responseType","response","parseDataUri","uri","decodeURIComponent","dataUriToBlob","uriToBlob","blobToDataUri","reader","onloadend","readAsDataURL","$_7eufcj5djkmcwlcv","imageToBlobInfo","blobCache","img","getByUri","dataUri","findFirst","cachedBlobInfo","getAllImages","ImageScanner","cachedPromises","images","imageInfo","newPromise","count$1","rnd","now","uuid","$_8flfjw5jjkmcwldd","BlobCache","mimeToExt","mime","mimes","toBlobInfo","removeByUri","UploadStatus","PENDING","UPLOADED","blobUriStatuses","createStatus","resultUri","hasBlobUri","getResultUri","EditorUpload","uploader","imageScanner","aliveGuard","cacheInvalidator","replaceString","replaceImageUrl","replacementUrl","replaceUrlInUndoStack","level","fragments","replaceImageUri","images_reuse_filename","uploadImages","images_upload_url","images_upload_base_path","images_upload_credentials","images_upload_handler","scanForImages","imageInfos","filteredResult","uploadInfo","images_replace_blob_uris","uploadImagesAuto","automatic_uploads","isValidDataUriImage","imgElm","images_dataimg_filter","resultItem","replaceBlobUris","editorUpload","source_view","isBlockElement","isValidTarget","hasBlockParent","shouldRemoveTextNode","addRootBlocks","rootBlockNode","tempNode","wrapped","rootNodeName","forced_root_block_attrs","setup$2","$_5utnj35ljkmcwldh","getStartNode","getEndNode","getFirstChildren","getLastChildren$1","hasAllContentsSelected","moveEndPoint$1","hasAnyRanges","sel","NodeChange","lastRng","lastPath","isSameElementPath","currentPath","nativeRng","fakeRng","selectionChange","disable_nodechange","VDirection","getAbsolutePosition","getBodyPosition","getScrollPosition","getBodyScroll","inlineScroll","iframeScroll","getMousePosition","iframePosition","scrollPosition","calculatePosition","bodyPosition","mousePosition","calc","$_7vqqhl5qjkmcwlfd","isContentEditableFalse$7","isContentEditableTrue$4","isDraggable","isValidDropTarget","targetElement","dragElement","cloneElement","cloneElm","createGhost","clonedElm","ghostElm","padding","boxSizing","appendGhostToBody","moveGhost","maxX","maxY","removeElement","isLeftMouseButtonPressed","hasDraggableElement","applyRelPos","relX","start$1","ceElm","elmPos","screenX","screenY","scrollWidth","scrollHeight","relY","ghost","move$1","throttledPlaceCaretAt","placeCaretAt","movement","dragging","targetPos","getRawTarget","drop","targetClone_1","targetClone","insertContent","removeDragState","stop$$1","bindFakeDragEvents","pageDom","dragStartHandler","dragHandler","dropHandler","dragEndHandler","rootDocument","blockIeDrop","realTarget","$_amfo0m5pjkmcwlf7","getNodeClientRects","toArrayWithNode","findUntil","walkUntil","isAboveFn","isBeflowFn","targetClientRect","line","aboveLineNumber","lineNumber","isLineNumber","upUntil","Up","downUntil","Down","positionsUntil","walkFn","isBelowFn","getClientRect","isAboveLine","isLine","isContentEditableFalse$8","findNode$1","distanceToRectLeft","distanceToRectRight","isInside","findClosestClientRect","oldClientRect","oldDistance","newDistance","walkUntil$1","findLineNodeRects","targetNodeRect","checkPosFn","lineRects","getFakeCaretTargets","caretInfo","closestCaret","closestNodeRect","contentEditableFalseNodeRects","targetNodeRects","isXYWithinRange","$_95lcbc5ujkmcwlg1","setup$3","renderFocusCaret","$_8glegd5vjkmcwlg3","$_6bj5795wjkmcwlg6","BACKSPACE","DELETE","DOWN","ENTER","LEFT","RIGHT","SPACEBAR","TAB","UP","modifierPressed","metaKeyPressed","isContentEditableTrue$5","isContentEditableFalse$9","isAfterContentEditableFalse$1","isBeforeContentEditableFalse$1","getContentEditableRoot$1","SelectionOverrides","selectedContentEditableNode","fakeCaret","realSelectionId","isFakeSelectionElement","getRealSelectionElement","setRange","getRange","showCaret$$1","getNormalizedRangeEndPoint$$1","blockCaretContainer","contentEditableRoot","removeContentEditableSelection","handleTouchSelect","moved","setContentEditableSelection","hasNormalCaretPosition","isInSameBlock$$1","hasBetterMouseTarget","targetBlock","caretBlock","isPasteBin","isRangeInCaretContainer","clipboardData","realSelectionElement","clearData","setData","outerText","addCss","contentStyles","rootClass","isWithinCaretContainer","$realSelectionContainer","origTargetClone","removeAllRanges","addRange","isValidPrefixAttrName","trimComments","isInvalidUri","allow_html_data_urls","findEndTagIndex","tokenRegExp","shortEndedElements","SaxParser","fix_self_closing","endRegExp","attrList","textData","isInternalElement","removeInternalElements","fillAttrsMap","isShortEnded","isValidElement","attribsValue","validAttributesMap","validAttributePatterns","processHtml","anyAttributesRequired","selfClosing","attrRegExp","fixSelfClosing","stack","filteredUrlAttrs","scriptUriRegExp","processEndTag","valid","parseAttribute","val2","val3","attrRule","trimRegExp","unescape","self_closing_elements","remove_internals","allow_conditional_comments","findEndTag","SaxParser$1","trimHtml","tempAttrs","trimContentRegExp","trimInternal","endTagIndex","matchLength","bogusAllRegExp","getTempAttrs","trimExternal","$_2varuf5zjkmcwlgq","KEEP","INSERT","vDown","vUp","snake","diag","buildScript","start1","end1","start2","end2","middle","getMiddleSnake","i2","buildSnake","sum","$_3xze2m62jkmcwlh7","getOuterHtml","createFragment$1","insertAt","removeAt","applyDiff","read$3","write","currentFragments","$_cyedqm61jkmcwlh3","fromHtml$1","fromTags","tags","fromText$1","texts","fromDom$1","$_bos53z64jkmcwlhd","get$6","set$3","docDom","contentElements","getOuter","$_xg5463jkmcwlhb","undoLevelDocument","lazyTempDocument","implementation","createHTMLDocument","hasIframes","createFragmentedLevel","beforeBookmark","createCompleteLevel","createFromEditor","trimmedFragments","trimmed","applyToEditor","getLevelContent","getCleanLevelContent","hasEqualContent","level1","level2","hasEqualCleanedContent","isEq$3","$_3cqp0r5yjkmcwlgf","UndoManager","isFirstTypedCharacter","locks","isUnlocked","setTyping","typing","setDirty","addNonTypingUndoLevel","endTyping","beforeChange","isDirty","lastLevel","modKey","isInsertReplacementText","inputType","isInsertTextDataNull","addShortcut","currentLevel","custom_undo_redo_levels","clear","hasUndo","hasRedo","callback1","callback2","isEq$4","matchesUnInheritedFormatSelector","formatList","inherit","matchParents","matchName","matchItems","itemName","similar","onmatch","matchAll","startElement","matchedFormatNames","checkedMap","canApply","defaultBlock","$_axwnk168jkmcwlim","split$1","$_bnmynr69jkmcwlir","ZWSP$1","CARET_ID$1","importNode","getEmptyCaretContainers","isCaretContainerEmpty","findFirstTextNode","createCaretContainer","fill","trimZwspFromCaretContainer","removeCaretContainerNode","removeCaretContainer","insertCaretContainerNode","formatNode","appendNode","insertFormatNodesIntoCaretContainer","formatNodes","innerMostFormatNode","applyCaretFormat","wordcharRegex","removeCaretFormat","hasContentAfter","expandedRng","newCaretContainer","disableCaretContainer","setup$4","replaceWithCaretFormat","innerMost","isFormatElement","inlineElements","postProcessHooks","filter$2","each$12","addPostProcessHook","postProcess","isPre","hasPreSibling","pre","joinPre","pre1","pre2","$_dp9y746ajkmcwlit","MCE_ATTR_RE","each$13","isEq$5","isTableCell$4","lastIdx","wrap$2","matchName$1","isColorFormatAndAnchor","links","find$4","removeNode$1","rootBlockElm","list_block","removeFormat","compareNode","stylesModified","remove_similar","valueOut","findFormatRoot","formatRoot","wrapAndSplit","lastClone","firstClone","formatRootParent","mixed","remove$8","splitToFormatRoot","process","lastContentEditable","removeRngStyle","textDecoration","ceFalseOverride","$_2vklhc6cjkmcwlj5","each$14","isElementNode","findElementSibling","mergeSiblingsNodes","tmpSibling","elementUtils","processChildElements","hasStyle","applyStyle","unwrapEmptySpan","processUnderlineAndColor","mergeUnderlineAndColor","mergeBackgroundColorAndFontSize","backgroundColor","mergeSubSup","mergeSiblings","merge_siblings","clearChildStyles","clear_child_styles","mergeWithChildren","mergeWithParents","merge_with_parents","$_ehzows6bjkmcwliw","each$15","isElementNode$1","applyFormat","setElementFormat","fmt","onformat","styleVal","applyNodeStyle","found","applyRngStyle","nodeSpecific","wrapElm","currentWrapElm","parentName","childCount","getChildCount","getChildElementNode","mergeStyles","curSelNode","$_bcenmc66jkmcwlhp","each$16","setup$5","formatChangeData","currentFormats","matchedFormats","addListeners","formats","formatChangeItems","formatChanged","formatChangeState","$_5j3j9s6djkmcwljg","get$7","valigntop","verticalAlign","valignmiddle","valignbottom","alignleft","preview","textAlign","aligncenter","display","marginLeft","marginRight","alignright","alignjustify","bold","fontWeight","italic","fontStyle","underline","strikethrough","forecolor","hilitecolor","fontname","fontsize","fontsize_class","blockquote","subscript","superscript","code","removeformat","$_8oc5be6fjkmcwljl","FormatRegistry","unregister","each$17","parsedSelectorToHtml","ancestry","sItem","getRequiredParent","elmRule","wrapInHtml","parentCandidate","parentRequired","ancestorName","siblingElm","selectorToHtml","parseSelector","parseSelectorItem","$0","$1","$2","$3","$4","getCssText","previewFrag","previewElm","parentFontSize","previewStyles","previewCss","preview_styles","removeVars","numValue","parseFloat","$_ga7lpr6gjkmcwlk1","toggle$3","$_1zpcor6hjkmcwlk7","setup$6","$_2ind0x6ijkmcwlk8","Formatter","hasOwnProperty$1","shallow$1","baseMerge","merger","objects","curObject","htmlParser","addAttributeFilter","internalName","cleanup","trimTrailingBr","brNode1","brNode2","$_ft0zjh6mjkmcwlkr","preProcess","impl","oldDoc","shouldFireEvent","no_events","$_27apc6njkmcwll3","removeAttrs","addFontToSpansFilter","domParser","face","addStrikeToSpanFilter","addFilters","register$1","$_2klegh6pjkmcwllk","whiteSpaceRegExp$3","typeLookup","walk$3","Node$2","selfAttrs","selfAttr","cloneAttrs","refNode","paddEmptyNode","brPreferred","padd_empty_with_br","isPaddedWithNbsp","hasOnlyChild","isPadded","isEmpty$2","whitespaceElements","isLineBreakNode","register$2","remove_trailing_brs","prevName","whiteSpaceElements","appendRel","addNoOpener","newRel","allow_unsafe_link_target","allow_html_in_named_anchor","fix_list_elements","classValue","validClassesMap","makeMap$4","each$18","explode$3","extend$3","DomParser","nodeFilters","attributeFilters","matchedNodes","matchedAttributes","root_name","fixInvalidChildren","newParent","currentNode","childNode","nonSplitableElements","textBlockElements","fixed","filterNode","getNodeFilters","getAttributeFilters","fi","fl","isInWhiteSpacePreservedElement","invalidChildren","rootBlockName","startWhiteSpaceRegExp","endWhiteSpaceRegExp","allWhiteSpaceRegExp","isAllWhiteSpaceRegExp","createNode","removeWhitespaceBefore","textNodeNext","textVal","cloneAndExcludeBlocks","attrFiltersLen","isRootContent","addTempAttr","postProcess$1","outArgs","getHtmlFromNode","getInner","parseHtml","serializeNode","htmlSerializer","toHtml","DomSerializer","addRules","rules","setRules","DomSerializer$1","domSerializer","BookmarkManager","BookmarkManager$1","isContentEditableFalse$10","isContentEditableTrue$6","getContentEditableRoot$2","ControlSelection","selectedElm","selectedElmGhost","resizeHelper","resizeHandles","selectedHandle","startX","startY","selectedElmX","selectedElmY","startW","startH","ratio","resizeStarted","startScrollWidth","startScrollHeight","editableDoc","nw","ne","se","sw","isImage","isEventOnImageOutsideRange","contextMenuSelectImage","getResizeTarget","isResizable","resizeGhostElement","proportional","resizeHelperX","resizeHelperY","resize_img_proportional","endGhostResize","setSizeProp","showResizeRect","targetWidth","targetHeight","unbindResizeHandleEvents","handleElm","startDrag","unSelectabe","updateResizeRect","controlElm","isChildOrEqual","disableGeckoResize","isWithinContentEditableFalse","delayedSelect","throttledUpdateResizeRect","hasCeProperty","findParent$1","findClosestIeRange","rects","createTextRange","moveToElementText","moveToPoint","moveOutOfContentEditableFalse","fromPoint$1","pointDoc","caretPositionFromPoint","offsetNode","caretRangeFromPoint","$_52q21w6wjkmcwlna","processRanges","$_8161126xjkmcwlnd","fromElements","$_a3l7fy70jkmcwloa","tableModel","tableRow","cellPosition","getSpan","isNaN","fillout","rowspan","colspan","rows","y2","x2","cellExists","skipCellsX","getWidth","row","findElementPos","extractRows","sx","sy","ey","newRows","subTable","createDomTable","tableElement","tableBody","modelRowsToDomRows","fromDom$2","tableElm","toDom","subsection","endElement","$_6wuzo771jkmcwlof","findParentListContainer","getFullySelectedListWrappers","listCont","wrap$3","innerElm","directListWrappers","commonAnchorContainer","getWrapElements","wrapElements","listWrappers","allWrappers","emptyFragment","getFragmentFromRange","getParentTable","getTableFragment","selectedTableCells","firstCell","lastCell","fullTableModel","sectionedTableModel","getSelectionFragment","read$4","$_2bm266zjkmcwlnj","tmpElm","contextual","htmlText","$_eu7sms6yjkmcwlnf","createContextualFragment","pasteHTML","$_b7rwud72jkmcwlow","getEndpointElement","real","getStart$2","skipEmptyTextNodes","forwards","orig","getNode$1","endElm","selectedBlocks","select$1","each$19","isNativeIeSelection","isAttachedToDom","isValidRange","Selection$1","bookmarkManager","selectedRange","explicitRange","selectorChangedData","getEnd$$1","compareEndPoints","tryCompareBoundaryPoints","how","sourceRange","destinationRange","compareBoundaryPoints","START_TO_START","END_TO_END","ieRange","setBaseAndExtent","anchorNode","focusNode","setNode","getSelectedBlocks$$1","isForward","anchorRange","focusRange","anchorOffset","focusOffset","selectorChanged","currentSelectors","matchedSelectors","isContentEditableFalse$11","getSelectedNode$1","isAfterContentEditableFalse$2","isBeforeContentEditableFalse$2","getVisualCaretPosition","isMoveInsideSameBlock","moveToCeFalseHorizontally","getNextPosFn","peekCaretPosition","rangeIsInContainerBlock","isBeforeContentEditableFalseFn","moveToCeFalseVertically","walkerFn","linePositions","nextLinePositions","closestNextLineRect","caretClientRect","dist1","dist2","contentEditableFalseNode","caretPositions","createTextBlock","textBlock","exitPreBlock","newBlock","getNextVisualCaretPosition","getPrevVisualCaretPosition","getHorizontalRange","newRange","getVerticalRange","moveH$1","moveV$1","defaultPatterns","patterns","matchesEvent","match$1","execute","$_3olmgr77jkmcwlpj","executeKeydownOverride","setup$7","$_emza9w75jkmcwlp9","getParentInlines","hasOnlyOneChild$1","deleteLastPosition","parentInlines","isFormatElement$$1","deleteCaret$1","backspaceDelete$5","$_7tr96779jkmcwlpz","executeKeydownOverride$1","executeKeyupOverride","setup$8","$_4dsl7478jkmcwlpw","firstNonWhiteSpaceNodeSibling","moveToCaretPosition","tempElm","lastNode","getEditableRoot","editableRoot","getParentBlock$2","getParentBlockName","isListItemParentBlock","$_79nvm87ejkmcwlqu","hasFirstChild","hasParent$1","isListBlock","isNestedList","getContainerBlock","containerBlockParent","isFirstOrLastLi","insert$1","createNewBlock","newBlockName","tmpRng","$_5ckamj7djkmcwlqo","isEmptyAnchor","isTableCell$5","emptyBlock","containerAndSiblingName","canSplitBlock","trimInlineElementsOnLeftSideOfBlock","firstChilds","normalizeZwspOffset","includeZwspInRange","trimLeadingLineBreaks","getEditableRoot$1","setForcedBlockAttrs","forcedRootBlockName","wrapSelfAndSiblingsInDefaultBlock","addBrToBlockIfNeeded","insert$2","parentBlockName","clonedNode","isCaretAtStartOrEndOfBlock","normalizedOffset","insertNewBlockAfter","$_dr0y3j7cjkmcwlqe","shouldInsertBr","shouldBlockNewLine","$_g7oj6o7gjkmcwlr8","newLineAction","shouldBlockNewLine$1","isBrMode","requiredState","brMode","inListBlock","inBlock","inPreBlock","inSummaryBlock","shouldPutBrInPre$1","inBrContext","hasShiftKey","canInsertIntoEditableRoot","rootEditable","match$2","predicates","isMatch","getAction$1","$_47r1sh7fjkmcwlr1","insert$3","$_fs2ah67bjkmcwlq8","endTypingLevel","handleEnterKeyEvent","setup$9","$_ni5l67ajkmcwlq7","isValidInsertPoint","isAtStartOrEnd","insertNbspAtPosition","insertAtLocation","insertAtCaret$2","boundaryLocation","insertAtSelection","$_2cwo047ijkmcwlrj","executeKeydownOverride$2","setup$10","$_agfz917hjkmcwlrh","findBlockCaretContainer","removeIeControlRect","handleBlockContainer","setup$11","$_gfp1h7jjkmcwlrn","setup$12","$_ejk8vk74jkmcwlp8","Quirks","isGecko","isWebKit","mceInternalUrlPrefix","mceInternalDataType","setMceInternalContent","selectionHtml","internalContent","dataTransfer","escape","getMceInternalContent","getData","insertClipboardContents","internal","emptyEditorWhenDeleting","serializeRng","allContentsSelected","allRng","allSelection","selectAll","inputMethodFocus","removeHrOnBackspace","Range","body_1","selectControlElements","removeStylesWhenDeletingAcrossBlockElements","getAttributeApplyFunction","template","setAttributeNode","isSelectionAcrossElements","applyAttributes","disableBackspaceIntoATable","removeBlockQuoteOnBackSpace","setGeckoEditingOptions","setOpts","addBrAfterLastLinks","fixLinks","setDefaultBlockType","showBrokenImageIcon","restoreFocusOnKeyDown","bodyHeight","blockCmdArrowNavigation","disableAutoUrlDetect","tapLinksAndImages","blockFormSubmitInsideEditor","removeAppleInterchangeBrs","ieInternalDragAndDrop","isTextBlockNode","normalizeSelection$1","setup$13","detail","preventSummaryToggle","filterDetails","setup$14","DOM$2","appendStyle","createParser","autoFocus","auto_focus","destroyed","initEditor","execCallback","getStyleSheetLoader","initContentBody","skipWrite","contentCssText","visibility","orgVisibility","iframeHTML","bodyEl","content_document","content_window","bodyElement","hex_colors","force_hex_style_colors","class_filter","annotator","_nodeChangeDispatcher","browser_spellcheck","gecko_spellcheck","spellcheck","directionality","nowrap","whiteSpace","protect","startContent","contentCSS","content_style","$_fssayf58jkmcwlbz","DOM$3","relaxDomain","ifr","domain","hostname","bodyUuid","domainRelaxUrl","normalizeHeight","normalizedHeight","createIframeElement","title","customAttrs","iframe","frameBorder","allowTransparency","getIframeHtml","bodyId","bodyClass","documentBaseURI","getURI","createIframe","isDomainRelaxed","contentAreaContainer","iframeContainer","init$1","boxInfo","editorContainer","orgDisplay","$_9jv4e17njkmcwlsj","DOM$4","initPlugin","initializedPlugins","pluginInstance","Plugin","trimLegacyPrefix","initPlugins","initTheme","Theme","renderFromLoadedTheme","minHeight","re","min_height","renderUI","deltaWidth","deltaHeight","iframeHeight","renderFromThemeFunc","createThemeFalseResult","renderThemeFalseIframe","renderThemeFalse","renderThemeUi","init$2","rtl","rtl_ui","i18n","setCode","aria_label","getLang","content_css","toAbsolute","$_4z079955jkmcwlbj","DOM$5","hasSkipLoadPrefix","loadLanguage","scriptLoader","language_url","loadTheme","themeUrl","theme_url","loadPlugins","render","form","formElement","hasHiddenInput","formEventDelegate","_mceOldSubmit","triggerSave","windowManager","encoding","save","_beforeUnload","set_dirty","$_9u29xe4yjkmcwlai","add$4","sidebars","$_gcw4n27ojkmcwlsr","each$20","trim$4","queryParts","DEFAULT_PORTS","ftp","http","https","mailto","URI","baseUri","base_uri","isProtocolRelative","protocol","toAbsPath","part","userInfo","port","setPath","toRelative","tu","uu","toRelPath","noHost","isSameOrigin","defaultPort","breakPoint","outPath","nb","noProtoHost","loc","pathname","defaultFormat","trimEmptyContents","emptyRegExp","getContentFromBody","getContent$1","traverse","findMatchingNodes","nodeMatches","attrMatches","filter$$1","filter$3","defaultFormat$1","isTreeNode","moveSelection","setEditorHtml","setContentString","padd","setContentTree","setContent$1","DOM$6","restoreOriginalStyles","safeDestroy","clearDomReferences","restoreForm","remove$9","is_removing","automatic","DOM$7","extend$4","each$21","resolve$4","ie$2","Editor","documentBaseURL","baseURI","language_load","loadedCSS","editorCommands","buttons","menuItems","cache_suffix","override_viewport","callbackLookup","lang_1","i18n_1","addButton","onclick","stateSelector","tooltip","addSidebar","addMenuItem","addContextToolbar","contextToolbars","focusedEditor","setProgressState","isNotDirty","oldState","urlconverter_callback","visual_table_class","visual_anchor_class","_scanForImages","documentFocusInHandler","beforeUnloadDelegate","EditorManager","isEditorUIElement","$_48zpgt7xjkmcwlum","isManualNodeChange","registerPageMouseUp","throttledStore","mouseUpPage","registerFocusOut","registerMouseUp","registerEditorEvents","register$3","$_d657g07yjkmcwlun","DOM$8","isEditorUIElement$1","isUIElement","customSelector","custom_ui_selector","getActiveElement","blurredEditor","unregisterDocumentEvents","setup$15","$_6zk6867wjkmcwluj","$_9pp0ut7zjkmcwlut","newCode","_dir","getCode","langData","getLangData","values_1","DOM$9","explode$4","each$22","extend$5","instanceCounter","boundGlobalEvents","legacyEditors","isValidLegacyKey","globalEventDelegate","toggleGlobalEvents","removeEditorFromList","targetEditor","oldEditors","purgeDestroyedEditor","majorVersion","minorVersion","releaseDate","preInit","tinymce","tinyMCEPreInit","srcScript","currentScript","base_url","pluginBaseUrls","plugin_base_urls","invalidInlineTargets","isInvalidInlineTarget","createId","findTargets","targets","types","forms","editor_deselector","editor_selector","provideResults","initEditors","initCount","createEditor","existingEditor","addI18n","EditorManager$1","RangeUtils","normalizedRng","compareRanges","getCaretRangeFromPoint","extendClass","initializing","RangeUtils$1","round$2","relativePosition","targetW","targetH","create$3","findBestRelativePosition","constrainRect","rels","inflate","intersect","cropRect","x1","y1","clamp$1","clampRect","fixedSize","underflowX1","underflowY1","overflowX2","overflowY2","cx2","cy2","fromClientRect","$_es7eh281jkmcwlv1","$_e5pe6n82jkmcwlv8","typeClass","lctype","controlType","ControlType","each$23","extend$6","Class$1","_super","Class","mixins","mixin","Mixins","dummy","createMethod","name_1","Methods","Properties","fieldName","Statics","Defaults","min$1","max$1","round$3","Color","rgb2hsv","minRGB","maxRGB","hsvToRgb","hue","saturation","brightness","side","chroma","toRgb","toHsv","quote","$_6nxmdo85jkmcwlvi","$_cygb5686jkmcwlvk","XHR","ready","success_scope","error_scope","overrideMimeType","content_type","crossDomain","setRequestHeader","requestheaders","extend$7","JSONRequest","sendRPC","ecb","scb","ty","method","localStorage$$1","create$4","storage","getItem","setItem","removeItem","configurable","localStorage","LocalStorage","publicApi","geom","Rect","util","Delay","Tools","VK","EventDispatcher","Observable","I18n","JSONP","Serializer","Selection","Entities","Factory","Env","FocusManager","isMac","Tinymce","exportToModuleLoaders","exportToWindowGlobal","tinyMCE","global","global$1","getMinWidth","getMinHeight","$_2agnwba2jkmcwo8k","$_gf01w3a4jkmcwo8n","minWidth","multiline","onSubmit","$_4xs1xna1jkmcwo8j","$_atmzsea0jkmcwo8i","$_f9f308a5jkmcwo8o","_get","sessionStorage","_add","_update","_remove","_reset","update","Vue","directive","twoWay","binding","vnode","picker","Pikaday","field","onSelect","setVModelValue","previousMonth","nextMonth","months","weekdays","weekdaysShort","findVModelName","directives","expression","eval","assumeExternalTargets","editorSettings","link_assume_external_targets","hasContextToolbar","link_context_toolbar","getLinkList","link_list","hasDefaultLinkTarget","default_link_target","getDefaultLinkTarget","getTargetList","target_list","setTargetList","shouldShowTargetList","getRelList","rel_list","hasRelList","getLinkClassList","link_class_list","hasLinkClassList","shouldShowLinkTitle","link_title","allowUnsafeLinkTarget","$_7h5h1kfvjkmcwp8j","global$2","global$3","appendClickRemove","dispatchEvent","open$$1","createEvent","initMouseEvent","opener","$_50rjczfwjkmcwp8l","global$4","toggleTargetRules","isUnsafe","addTargetRules","removeTargetRules","trimCaretContainers","getAnchorElement","isImageFigure","getAnchorText","anchorElm","isLink","hasLinks","isOnlyTextSelected","attachState","linkAttrs","attach","linkImageFigure","unlink","unlinkImageFigure","fig","$_f96xu2g0jkmcwp91","global$5","global$6","createLinkList","linkList","buildListItems","inputList","itemCallback","startItems","appendItems","menuItem","menu","delayedConfirm","showDialog","initialText","onlyText","textListCtrl","linkListCtrl","relListCtrl","targetListCtrl","classListCtrl","linkTitleCtrl","linkListChangeHandler","textCtrl","lastControl","control","buildAnchorListControl","anchorList","onselect","updateText","urlChange","inp","onBeforeCall","toJSON","onchange","onPostRender","textStyle","filetype","autofocus","onkeyup","onpaste","onbeforecall","insertLink","removeLink","resultData","open$1","$_1hdbnpg2jkmcwp96","getLink","getSelectedLink","getHref","isContextMenuVisible","contextmenu","hasOnlyAltModifier","gotoLink","targetEl","openDialog","gotoSelectedLink","leftClickedOnAHref","setupGotoLinks","toggleActiveState","toggleViewLinkState","toggleVisibility","$_dlew49ftjkmcwp8f","$_3nvo42fsjkmcwp8b","$_aoohpyg5jkmcwp9f","setupButtons","onpostrender","setupMenuItems","prependToContext","setupContextToolbars","$_3wxsofg6jkmcwp9g","hasProPlugin","$_ee0gktiejkmcwpkb","clipboard","$_6khw6eigjkmcwpkp","firePastePreProcess","isWordHtml","wordContent","firePastePostProcess","firePastePlainTextToggle","firePaste","ieFake","$_d8ovv8ijjkmcwpku","shouldPlainTextInform","shouldBlockDrop","shouldPasteDataImages","shouldFilterDrop","getPreProcess","getPostProcess","getWebkitStyles","shouldRemoveWebKitStyles","shouldMergeFormats","isSmartPasteEnabled","isPasteAsTextEnabled","getRetainStyleProps","getWordValidElements","defaultValidElements","shouldConvertWordFakeLists","shouldUseDefaultFilters","$_5peev0ikjkmcwpkv","shouldInformUserAboutPlainText","userIsInformedState","togglePlainTextPaste","pasteFormat","$_7rw4pkiijkmcwpks","pasteHtml","pasteText","$_gh26txihjkmcwpkr","internalMimeType","internalMark","mark","unmark","isMarked","$_93gcj3irjkmcwpld","internalHtmlMime","isPlainText","toBRs","openContainer","rootTag","rootAttrs","toBlockElements","tagOpen","tagClose","paragraphs","stitch","convert","$_3nag2qisjkmcwple","global$7","global$8","global$9","ignoreElements","trimSpaces","s1","s2","createIdGenerator","isMsEdge","$_2u5gcyj0jkmcwplv","isWordContent","isNumericList","isBulletList","convertFakeListsToProperLists","currentListNode","prevListNode","txt","trimListStart","regExp","removeIgnoredNodes","_listIgnore","convertParagraphToLi","paragraphNode","listName","_listLevel","nodeText","filterStyles","outputStyles","filterWordContent","retainStyleProperties","spaces","$_759xt5ivjkmcwplk","processResult","cancelled","postProcessFilter","tempBody","postProcessArgs","filterContent","preProcessArgs","$_7a37nniujkmcwplh","isAbsoluteUrl","isImageUrl","createImage","pasteHtmlFn","createLink","linkSelection","insertImage","smartInsertContent","$_3wqigwj1jkmcwplz","pasteHtml$1","internalFlag","getDataTransferItems","legacyText","contentType","getClipboardContent","clipboardEvent","hasContentType","clipboardContent","mimeType","hasHtmlOrText","getBase64FromUri","extractFilename","pasteImage","Image","existingBlobInfo","isClipboardEvent","pasteImageData","processItems","hadImage","getAsFile","paste_data_images","isBrokenAndroidClipboardEvent","isKeyboardPasteEvent","registerEventHandlers","pasteBin","keyboardPastePlainTextState","keyboardPasteTimeStamp","insertClipboardContent","isKeyBoardPaste","plainTextMode","isPlainTextHtml","getHtml","isDefaultContent","removePasteBinOnKeyUp","getLastRng","clipboardTimer","clipboardDelay","getEl","registerEventsAndFilters","isPasteInsert","isWebKitFakeUrl","isDataUri","getPasteBinParent","isExternalPasteBin","delegatePasteEvents","pasteBinElm","pasteBinDefaultContent","isDefault","lastRngCell","pasteBinClone","pasteBinClones","dirtyWrappers","cleanWrapper","copyAndRemove","toElm","fromElm","PasteBin","Clipboard","hasWorkingClipboardApi","setHtml5Clipboard","setClipboardData","fallback","markedHtml","contenteditable","offscreenRange","cut","$_5k6lg4j3jkmcwpmg","global$10","getCaretRangeFromEvent","isPlainTextFileUrl","plainTextContent","setFocusedRange","draggingInternallyState","dropContent","content_1","$_eiqz0aj4jkmcwpmj","$_9alamfj6jkmcwpmm","addPreProcessFilter","filterFunc","addPostProcessFilter","removeExplorerBrElementsAfterBlocks","explorerBlocksRegExp","removeWebKitStyles","webKitStyles","webKitStylesSetting","dom_1","node_1","inputStyles","inputValue","currentValue","removeUnderlineAndFontInAnchor","$_ca6muwj7jkmcwpmo","stateChange","postRender","selectable","$_98erksj8jkmcwpmr","Api","endpoint","Resourse","EndPoint","defaultFilter","pageSize","pageIndex","isPaginate","byCache","hasDefaultFilters","lastAction","post","_post","put","_put","delete","_delete","dataItem","_dataItem","export","_export","_upload","folder","makeUri","axios","handleSuccess","handleError","model","_filters","assign","paramsSerializer","qs","stringify","END_POINT_DEFAULT","configHeaders","accesstoken","Cache","ACCESS_TOKEN","headers","common","addCache","Auth","login","Data","DataList","Add","theString","regEx","$httpParamSerializer","entries","_ref","_ref2","_slicedToArray","use","VueAxios","getCurrentColor","mapColors","colorMap","colors","$_fyfrxgrijkmcws5a","$_fr9cbdrhjkmcws58","defaultColorMap","getTextColorMap","getForeColorMap","getBackColorMap","getTextColorRows","getTextColorCols","getForeColorRows","getBackColorRows","getForeColorCols","getBackColorCols","getColorPickerCallback","hasColorPicker","$_9xkreprmjkmcws5h","cols","getColorCellHtml","isNoColor","$_4vmnmvrnjkmcws5o","setDivColor","background","onButtonClick","_color","onPanelClick","buttonCtrl","currentColor","selectColor","hidePanel","resetColor","colorPickerCallback","customColorCells","panel","lastId","renderColorPicker","foreColor","role","ariaRemember","$_38ipxvrjjkmcws5c","getScripts","getAudioTemplateCallback","getVideoTemplateCallback","hasLiveEmbeds","shouldFilterHtml","getUrlResolver","hasAltSource","hasPoster","hasDimensions","$_6qt1nth3jkmcwpf2","getVideoScriptMatch","prefixes","$_5qpz66h7jkmcwpf7","trimPx","addPx","setSize","$_1gasfuh8jkmcwpf8","getMaxWidth","getMaxHeight","setMaxWidth","setMaxHeight","getEphoxEmbedIri","isEphoxEmbed","htmlToDataSax","source1","movie","videoScript","source2","poster","ephoxEmbedHtmlToData","htmlToData","$_1f89fyh4jkmcwpf3","guess","mp3","wav","mp4","webm","ogg","swf","fileEnd","$_e86s3ihcjkmcwpfk","setAttributes","updatedAttrs","normalizeHtml","updateHtmlSax","updateAll","hasImage","sourceCount","imgAttrs","isEphoxEmbed$1","updateEphoxEmbed","updateHtml","$_6s992lhdjkmcwpfn","urlPatterns","regex","allowFullscreen","getUrl","_loop_1","matchPattern","getFlashHtml","getAudioHtml","audioTemplateCallback","source2mime","getVideoHtml","videoTemplateCallback","source1mime","getScriptHtml","dataToHtml","dataIn","embed","$_65qpjdhbjkmcwpfc","embedPromise","rej","wrappedResolve","defaultPromise","loadedData","getEmbedHtml","embedHandler","isCached","$_74pv8fh9jkmcwpf9","doSyncSize","widthCtrl","heightCtrl","doSizeControls","constrained","doUpdateSize","isContrained","oldWidth","oldHeight","newWidth","newHeight","syncSize","updateSize","createUi","onChange","recalcSize","layout","spacing","ariaLabel","$_gd8vqohhjkmcwpg2","embedChange","errorMessage","dataEmbed","getSource","addEmbedHtml","fromJSON","selectPlaceholder","beforeObjects","afterObjects","handleInsert","submitForm","populateMeta","generalFormItems","advancedFormItems","reserialise","embedTextBox","flex","updateValueOnChange","forId","bodyType","$_3njyjoh0jkmcwpew","$_eg0prjgzjkmcwpeu","$_8o48izhijkmcwpg5","sanitize","blocked","$_f1oicehmjkmcwpge","createPlaceholderNode","placeHolder","retainAttributesAndInnerHtml","createPreviewIframeNode","previewWrapper","previewNode","shimNode","allowfullscreen","frameborder","sourceNode","innerHtml","isWithinEphoxEmbed","placeHolderConverter","$_f6hjinhljkmcwpga","boolAttrs","realElm","realElmName","$_b6ycdhhjjkmcwpg6","$_c1o1r8hnjkmcwpgg","selectedNode","objectType","$_8yods0hojkmcwpgh","$_ew8gthhpjkmcwpgk","webpackContext","req","webpackContextResolve","applyListFormat","$_55fky08fjkmcwo2a","$_cjqqqe8ejkmcwo28","getNumberStyles","getBulletStyles","$_2zo4iv8hjkmcwo2f","isChildOfBody","isTableCellNode","isListNode","getSelectedStyleType","$_djj0lo8ijkmcwo2g","styleValueToText","toMenuItems","$_cbyrf58jjkmcwo2h","listState","tableCellIndex","updateSelection","listStyleType","addSplitButton","onshow","addControl","$_d74fz58gjkmcwo2b","hasPlugin","getPreviewDialogWidth","getPreviewDialogHeight","getContentStyle","$_6hy26xjfjkmcwppy","getPreviewHtml","previewHtml","headHtml","contentStyle","body_id","body_class","preventClicksOnLinksScript","dirAttr","injectIframeContent","sandbox","encodeURIComponent","$_5s7etcjgjkmcwppz","dialogHtml","dialogWidth","dialogHeight","iframeElm","$_4mmnpbjdjkmcwppw","$_c197icjcjkmcwppv","$_eluyd4jijkmcwpq6","_vm","_self","staticRenderFns","component","_m","staticClass","changelog","staticStyle","$event","dialogChangeLog","_v","_s","versao","$$v","domProps","detalhes","mounted","Scroll","user","escolaNome","irParaPortalCorporativo","logout","isActive","rawName","require","urlPortalCorporativo","URL_PORTAL_CORPORATIVO","escolas","foto","urlFoto","URL_DOWNLOAD","escola","escolaId","tenant","nomeEscola","methods","updateScroll","myBody","checkIsLogged","currentUser","getFotoUser","isloading","$eventHub","$on","beforeDestroy","$off","components","footerCna","headerCna","processTokenCallback","getCurrentUser","END_POINT_PORTAL_CORPORATIVO","filterBehavior","attributeBehavior","colaboradorId","chaveIdentificacaoSistema","CHAVE_IDENTIFICACAO_SISTEMA","menu_key","permissoes_key","permissoes","foto_key","loadfinished_key","_lastlocation","lastlocation_key","escola_escolhida","$$selectedVal","options","multiple","_l","trocarEscola","colaborador_id","claimsAddLoginSso","sucesso","carregando","statusAcaoComercialId","descricao","ref","nome","$set","aceitaEmail","$$a","$$el","$$c","$$i","aceitaWhatsApp","aceitaTelefone","aceitaSMS","email","telefone","checkedMaiorIdade","checkedConsentimento","cadastrar","itemInfo","Url","Titulo","LinkImagem","mask","expirada","regexEmail","_cadastrar","_asyncToGenerator","regeneratorRuntime","_callee","_context","defaultErrorResult","abrupt","formValidate","$recaptcha","sent","acaoComercialId","acaoExpirada","showLoading","blog","hideLoading","t0","$form","$refs","frmCadastro","checkValidity","_this2","fetch","_callee2","_context2","_x","verificaAcaoComercial","_verificaAcaoComercial","_callee3","acaoComercialExternalHash","_context3","$route","$router","created","routers","Router","childrens","routersgenerated","router","routes","redirect","Template","requiresAuth","Cadastro","Authorized","TrocarEscola","AcessoNegado","beforeEnter","NotFound","beforeEach","record","logged","canAccess","_x2","_x3","can","BootstrapVue","BootstrapVueIcons","VueSweetalert2","VueReCaptcha","siteKey","KEY_RECAPTCHA","loaderOptions","useEnterprise","config","productionTip","App","_config","toast","showConfirmButton","showCancelButton","cancelButtonText","modal","allowOutsideClick","allowEscapeKey","allowEnterKey","$swal","$mount","navClass","ulClass","showPrevious","liClass","internalCurrentPage","previousText","ariaPrevious","changePage","num","showNext","lastPage","nextText","ariaNext","currentPage","default","watch","immediate","_total","_pageSize","_from","_to","_arr","alwaysShowPrevNext","page","pagination","mask_data","mask_cpf","mask_rg","mask_tel","mask_cel","mask_cep","mask_ddd","money","decimal","thousands","masked","optionsJsonEditor","formatPrice","toFixed","defaultPageChanged","defaultOrderBy","orderByType","orderFields","isOrderByDynamic","defaultPageSizeChanged","defaultInfoMessage","$emit","defaultWarningMessage","defaultSuccessResult","errors","configNotification","$notify","duration","speed","failLoading","escolaBox","isTextNode","isListItemNode","isFirstChild","isLastChild","keepBookmarks","$_eyfb4cgljkmcwpc0","getNormalizedEndPoint","textNodeOffset","outRng","rangeStart","rangeEnd","$_8n62cfgkjkmcwpbw","createBookmark","setupEndPoint","resolveBookmark","$_aredwjgjjkmcwpbt","normalizeList","ul","normalizeLists","$_f0sxyjgmjkmcwpc3","getParentList","selectionStart","getClosestListRootElm","isParentListSelected","parentList","findSubLists","getSelectedSubLists","findParentListItemsNodes","listItemsElms","parentLi","getSelectedListItems","parentTableCell","$_g5359xgnjkmcwpc5","createNewTextBlock","contentNode","hasContentNode","$_givla1gqjkmcwpcb","splitList","bookmarks","removeAndKeepBookmarks","$_3aykwpgpjkmcwpc8","removeEmptyLi","outdent","ulParent","outdentSelection","listElements","$_80fi2gghjkmcwpbq","updateListStyle","updateListAttrs","updateListWithDetails","removeStyles","getEndPointNode","getSelectedTextBlocks","hasCompatibleStyle","sib","sibStyle","detailStyle","applyList","listItemName","listBlock","mergeWithAdjacentLists","removeList","emptyListItems","rootList","isValidLists","list1","list2","hasSameListStyle","targetStyle","hasSameClasses","elm1","elm2","shouldMerge","updateList","newList","toggleMultipleLists","hasListStyleDetail","toggleSingleList","toggleList","selectedSubLists","$_8bvl87gejkmcwpbi","findNextCaretContainer","nonEmptyBlocks","hasOnlyOneBlockChild","unwrapSingleBlockChild","moveChildren","mergeLiElements","listNode","mergeIntoEmptyLi","fromLi","toLi","mergeForward","mergeBackward","resolvedBookmark","backspaceDeleteFromListToListCaret","otherLi","selectionStartElm","removeBlock","backspaceDeleteIntoListCaret","otherLi_1","startListParent","$_17li1sgajkmcwpb9","$_4wrbe2g9jkmcwpb7","mergeLists","listStyle","indentSelection","$_fhzwh2gtjkmcwpco","queryListCommandState","isHandled","$_7snno4gsjkmcwpcf","shouldIndentOnTab","$_7hi6itgvjkmcwpcr","setupTabKey","$_fv3b7wgujkmcwpcq","indentPostRender","listItemBlocks","disable","$_e09q6ogwjkmcwpct","authorize_url","SSO_END_POINT","addclaims_authorize_url","endsession_url","redirect_uri","SSO_REDIRECT_LOGIN_URL","post_logout_redirect_uri","SSO_REDIRECT_LOGOUT_URL","client_id","SSO_CLIENT_ID","response_type","SSO_RESPONSE_TYPE","SSO_SCOPE","getToken","ID_TOKEN","getAccessToken","getState","ID_STATE","saveActualPage","_user","USER_INFO","itens","escola_box","access_token","expires_in","id_token","claim_type","claim_value","getPermissoes","_fromcache","getMenu","_addOption","placeholder","_addItems","inserted","isMultiple","dataitem","customdataitem","getVModelValue","dataList","Choices","placeholderValue","searchPlaceholderValue","removeItems","removeItemButton","shouldSort","shouldSortItems","loadingText","noResultsText","noChoicesText","itemSelectText","searchResultLimit","oninvalid","elParent","click","wasValidated","showPreview","hexColor","setColor","rgb","labelGap","colorPickerCtrl","$_f3o2huanjkmcwocp","color_picker_callback","image_dimensions","hasAdvTab","image_advtab","getPrependUrl","getClassList","hasDescription","image_description","hasImageTitle","image_title","hasImageCaption","image_caption","getImageList","hasUploadUrl","hasUploadHandler","getUploadUrl","getUploadHandler","getUploadBasePath","getUploadCredentials","$_gc1jdictjkmcwomd","$_db9o2scwjkmcwomp","parseIntAndGetMax","val1","getImageSize","removePixelSuffix","addPixelSuffix","mergeMargins","splitMargin","createImageList","imageList","waitLoadImage","selectImage","$_9v7cmwcujkmcwomi","getHspace","getVspace","marginTop","marginBottom","getBorder","borderWidth","hasCaption","wrapInFigure","figureElm","removeFigure","toggleCaption","normalizeStyle","normalizeCss","setHspace","pxValue","setVspace","setBorder","setBorderStyle","borderStyle","getBorderStyle","isFigure","defaultData","hspace","vspace","getStyleValue","figure","updateProp","oldData","newData","_name","mergedCss","compressed","getSelectedImage","splitTextBlock","readImageDataFromSelection","insertImageAtCaret","insertedElm","syncSrcAttr","deleteImage","writeImageDataToSelection","insertOrUpdateImage","updateVSpaceHSpaceBorder","rootControl","updateStyle","makeTab","pack","packV","columns","maxWidth","$_4qd61kd3jkmcwonl","$_14kdtjdajkmcwoo8","onSrcChange","srcURL","prependURL","absoluteURLPattern","imageListCtrl","getGeneralItems","makeTab$1","$_bpqbuud9jkmcwoo5","$_e8tsx4dcjkmcwooe","uploadBlob","onFileInput","Throbber","throbber","finalize","dataUrl","activateTab","acceptExts","makeTab$2","accept","$_26ghgddbjkmcwooa","Dialog","altCtrl","$_cwg86qcrjkmcwom6","hasImageClass","toggleContentEditableState","toggleContentEditable","$_8m7aavdhjkmcwooq","$_2zobs0dijkmcwoos","isBrandingEnabled","hasMenubar","getMenubar","hasStatusbar","getToolbarSize","getFixedToolbarContainer","getInlineToolbarPositionHandler","getRemovedMenuItems","isSkinDisabled","skin","getResize","resize","getSkinUrl","skinUrl","skin_url","skinName","getIndexedToolbars","defaultToolbar","toolbars","toolbar","mainToolbar","getToolbars","fireSkinLoaded","fireResizeEditor","fireBeforeRenderUI","$_1jkxpltzjkmcwsg4","addKeys","$_1mdekmu0jkmcwsg5","getUiContainerDelta","uiContainer","getUiContainer","containerPos","setUiContainer","ui_container","inheritUiContainer","fromCtrl","toCtrl","$_5kmlp5u4jkmcwsge","createToolbar","buttonGroup","toolbarItems","bindSelectorChanged","disabledStateSelector","createToolbars","addToolbar","ariaRoot","$_5g1hacu7jkmcwsgn","toClientRect","geomRect","hideAllFloatingPanels","movePanelTo","moveTo","togglePositionClass","relPos","userConstrain","elementRect","contentAreaRect","panelRect","addContextualToolbars","getContextToolbars","getElementRect","shouldShow","relRect","testPositions","smallElementWidthThreshold","repositionHandler","findFrontMostMatch","bindScrollEvent","reposition_1","uiContainer_1","showContextToolbar","autohide","autofix","oncancel","renderTo","hideAllContextToolbars","$_44ggy0u1jkmcwsg7","defaultMenus","edit","view","tools","help","delimiterMenuNamePair","createMenuNameItemPair","hasItemName","namedMenuItems","namedMenuItem","isSeparator","cleanupMenu","removedMenuItems","menuItemsPass1","menuItemsPass2","createMenu","editorMenuItems","menus","menuButton","isUserDefined","separator","getDefaultMenubar","defaultMenuBar","createMenuButtons","menuButtons","menubar","enabledMenuNames","$_3ke8tlu8jkmcwsgq","resizeTo","containerSize","iframeSize","resizeBy","dw","dh","$_focm2tubjkmcwsh5","sidebar","callbackName","hidePanels","visible","deactivateButtons","findSidebar","showPanel","btnCtrl","isModernBrowser","hasSidebar","createSidebar","$_93h32bucjkmcwsh7","fireSkinLoaded$1","$_2tsyb2uejkmcwsha","switchMode","editArea","editAreaContainer","resizeHandleCtrl","startSize","skinUiCss","onResizeStart","onResize","linkHtml","brandingLabel","renderBefore","$_9mz4sntvjkmcwsft","funcs","getWindowSize","getRuntimeStyle","isStatic","isFixed","calculateRelativePosition","ctrlElm","selfW","selfH","viewport","getWindowViewPort","getUiContainerViewPort","customUiContainer","$_77p0ikukjkmcwsie","testMoveRel","viewPortRect","moveBy","layoutRect","constrain","constrainToViewport","repaint","global$11","$_79d0aauqjkmcwsj9","parseBox","measureBox","computedStyle","getSide","ClassList","_map","uniqueItems","__checked","_change","curState","clsValue","Collection","Collection$1","proto","chunker","Selector","compileNameFilter","compileIdFilter","compileClassesFilter","compileAttrFilter","cmp","compilePsuedoFilter","notSelectors","parseChunks","direct","_selectors","si","sl","Collection$2","Binding","otherModel","otherName","fromSelfToOther","fromOtherToSelf","_bindings","global$12","isNode","animationFrameRequested","Control","ObservableObject","oldValue","dirtyCtrls","$_921m08uxjkmcwsk2","_layout","_id","hasMouseWheelEventSupport","hasWheelEventSupport","classPrefix","idCounter","proto$1","defaultClasses","applyClasses","_aria","_elmCache","borderBox","paddingBox","marginBox","getContainerElm","getParentCtrl","controlIdLookup","initLayoutRect","autoResize","startMinWidth","startMinHeight","initialSize","deltaW","deltaH","maxW","maxH","maxHeight","_layoutRect","contentW","contentH","innerW","innerH","minW","minH","scrollW","_lastLayoutRect","lastLayoutRect","repaintControls","curRect","bodyStyle","borderW","borderH","lastRepaintRect","_lastRepaintRect","_hasBody","updateLayoutRect","_lastRect","resolveCallbackName","parentControls","$el","aria","ariaTarget","newItems","controls","_eventsRoot","renderHtml","preRender","parentEventsRoot","_nativeEvents","bindPendingEvents","bindStates","parentCtrl","getOffset","parentWidth","parentHeight","eventCtrl","eventRootCtrl","mouseLeaveHandler","_lastHoverCtrl","mouseEnterHandler","lastParents","lastCtrl","fixWheelEvent","wheelDelta","wheelDeltaX","eventRootDelegates","_delegates","_hasMouseEnter","Control$1","hasTabstopData","KeyboardNavigation","focusedElement","focusedControl","getRole","getParentRole","getAriaProp","isTextInputElement","canFocus","getFocusElements","getNavigationRoot","targetControl","navigationRoot","focusFirst","focusElements","moveFocusToIndex","lastAriaIndex","moveFocus","parentRole","submenu","enter","up","tab","handleNonTabOrEscEvent","selectorCache","Container","_items","bodyClasses","containerCls","keyboard","focusCtrl","keyboardNav","statusbar","oldItem","newItem","ctrlItems","defaultType","renderNew","curItems","beforeItems","afterItems","recalc","getDocumentSize","updateWithTouchData","changedTouches","DragHelper","$eventOverlay","downButton","drag","handleElement","cursor","docSize","runtimeStyle","zIndex","documentClickHandler","documentScrollHandler","windowResizeHandler","hasModal","$_c9juz9uzjkmcwskb","renderScroll","repaintScroll","hasScrollH","hasScrollV","repaintAxis","axisName","posName","sizeName","contentSizeName","hasScroll","ax","scrollBarElm","scrollThumbElm","scrollSize","posNameLower","sizeNameLower","addScroll","addScrollAxis","deltaPosName","scrollStart","axisId","draghelper","autoScroll","_hasScroll","Panel","_preBodyHtml","$_4ci2x6v1jkmcwski","resizeToContent","visiblePanels","zOrder","skipOrHidePanels","clickCtrl","bindDocumentClickHandler","bindDocumentScrollHandler","repositionPanel","bindWindowResizeHandler","docElm_1","clientWidth_1","clientHeight_1","FloatPanel","hideAll","scrollY$$1","toggleFixedChildPanels","_autoFixY","addRemove","topModal","modalBlockEl","currentZIndex","$modalBlockEl_1","prefix_1","popover","describedBy","removeVisiblePanel","bodyRole","isFixed$1","inlineToolbarContainer","render$1","fixedToolbarContainer","_fixed","bodyPos","scrollContainerPos","$_aqv3nuufjkmcwshc","$_575jhev2jkmcwskj","$_7k92xgtrjkmcwsfn","Tooltip","Widget","tooltips","_tooltip","Progress","setValue","updateLiveRegion","Notification","closeButton","notificationStyle","getEditorContainer","getContainerWidth","prePositionNotifications","positionNotifications","firstItem","closeCallback","extendedArgs","notif","oldMetaValue","toggleFullScreenState","contentValue","noScaleMetaValue","toggleBodyFullScreenClasses","checkFullscreenWindows","_fullscreen","handleWindowResize","lastSize_1","Window$$1","closeClass","needsRecalc","statusbar$$1","headerW","headEl","headerH","headerHtml","footerHtml","fullscreen","slowRendering","_timer","_initial","dragHelper","getContentWindow","MessageBox","OK","OK_CANCEL","YES_NO","YES_NO_CANCEL","msgBox","createButton","status$$1","primary","subtype","onClick","onClose","onCancel","features","alert$$1","choiceCallback","confirm$$1","close$$1","window$$1","$_f0tepxtqjkmcwsfm","Layout","firstControlClass","lastControlClass","containerClass","firstClass","lastClass","lastItem","controlClass","AbsoluteLayout","Button","btnStyle","btnElm","ariaPressed","textHtml","textCls","setButtonText","$span","iconElm","BrowseButton","ButtonGroup","Checkbox","global$13","ComboBox","subinput","showMenu","statusLevel","statusMessage","lineHeight","openElm","innerPadding","inputElm","openBtnHtml","extraAttrs","statusHtml","showAutoComplete","term","previewUrl","hideMenu","statusIconElm","focusIdx","ColorBox","onaction","repaintColor","PanelButton","panelSettings","rtlRels","ltrRels","popoverAlign","isTop","ColorButton","onClickHandler","global$14","ColorPicker","hsv","hueRootElm","huePointElm","svRootElm","svPointElm","updateColor","hueUpdate","updateSaturationAndValue","updateHue","_repaint","_svdraghelper","_hdraghelper","_rendered","hueHtml","stops","getOldIeFallbackHtml","gradientPrefix","stopsList","gradientCssText","DropZone","cfg","hidefocus","toggleDragClass","Path","delimiter","_getDataPathHtml","ElementPath","elementpath","outParents","FormItem","Form","formItemDefaults","formItem","recalcLabels","maxLabelWidth","labels","labelGapCalc","labelCtrl","labelWidth","FieldSet","unique$1","$_g9js5fw5jkmcwsoh","$_dg0wqww4jkmcwsog","$_9gi0tmw2jkmcwsob","$_9vmnzpwcjkmcwsph","$_22q3m2wfjkmcwsps","$_60zxbqwejkmcwspr","$_7ota5pwljkmcwsq4","$_fknyifwkjkmcwsq1","windows$1","$_4dmnqawmjkmcwsq6","$_21yllowojkmcwsqc","$_993j3rwpjkmcwsqg","$_4sbeluwjjkmcwsq0","$_g4vzapwijkmcwspx","$_3tbwnywtjkmcwsqr","$_622morwdjkmcwspi","$_adk4mbw6jkmcwsok","$_bf8vd5w1jkmcwso8","$_4ig9ruw0jkmcwso7","isChildOfContentEditableTrue","getElementText","getOrGenerateId","isAnchor","isValidAnchor","isHeader","isValidHeader","getLevel","headerTarget","headerId","anchorTarget","anchorId","anchorText","getHeaderTargets","getAnchorTargets","getTargetElements","hasTitle","find$3","$_cb7rvvvxjkmcwsnn","getActiveEditor","history","HISTORY_LENGTH","clearHistory","toMenuItem","staticMenuItem","isUniqueUrl","foundTarget","getSetting","createMenuItems","fileType","fromHistoryMenuItems","historyItems","uniqueHistory","fromMenuItems","filteredTargets","anchorMenuItems","topAnchor","bottomAchor","bothEmpty","typeahead_urls","filterByQuery","addToHistory","lowerCaseTerm","getTitle","linkDetails","setupAutoCompleteHandler","autocomplete","linkTargets","statusToUiState","setupLinkValidatorHandler","validatorHandler","filepicker_validator_handler","validateUrl_1","uiState","FilePicker","actionCallback","fileBrowserCallback","fileBrowserCallbackTypes","file_picker_types","file_browser_callback_types","file_picker_callback","file_browser_callback","FitLayout","contLayoutRect","FlexLayout","contPaddingBox","contSettings","totalFlex","availableSpace","ctrlLayoutRect","ctrlSettings","maxSize","maxAlignEndPos","minSizeName","maxSizeName","beforeName","innerSizeName","deltaSizeName","alignAxisName","alignInnerSizeName","alignSizeName","alignMinSizeName","alignBeforeName","alignAfterName","alignDeltaSizeName","alignContentSizeName","maxSizeItems","maxFlexSize","FlowLayout","endClass","$_13w0c1wzjkmcwsri","$_epq3p6wyjkmcwsrh","addFormatChangedListener","changed","postRenderFormatToggle","alignFormats","defaultAlign","alignMenuItems","onShowMenu","formatName","alignnone","$_ffg0cgx1jkmcwsrx","getFirstFont","findMatchingValue","font","createFontNameListBoxChangeHandler","createFormats","getFontItems","defaultFontsFormats","fonts","font_formats","registerButtons","fixedWidth","$_1be6fjx3jkmcwss1","findMatchingValue$1","pt","px","createFontSizeListBoxChangeHandler","getFontSizeItems","defaultFontsizeFormats","fontsizeFormats","fontsize_formats","registerButtons$1","$_fnu5cxx4jkmcwss4","hideMenuObjects","hideFormatMenuItems","createFormatMenu","newFormats","defaultStyleFormats","createStylesMenu","style_formats_merge","style_formats","itemDefaults","registerMenuItems","formatMenu","registerButtons$2","style_formats_autohide","$_cmdomhx5jkmcwss6","defaultBlocks","createFormats$1","createListBoxChangeHandler","lazyFormatSelectBoxItems","buildMenuItems","register$4","block_formats","$_cl4rffx6jkmcwssb","createCustomMenuItems","nameList","isSeparator$1","trimMenuItems","menuItems2","createContextMenuItems","outputMenuItems","createInsertMenu","insertButtonItems","insert_button_items","registerButtons$3","oncreatemenu","register$5","$_7ix8zax7jkmcwssd","registerFormatButtons","registerCommandButtons","selectall","visualaid","newdocument","registerCommandToggleButtons","registerButtons$4","registerMenuItems$1","register$6","$_gbsmm2x8jkmcwssh","toggleUndoRedoState","checkState","typeFn","registerMenuItems$2","registerButtons$5","register$7","$_1bdkmax9jkmcwssr","toggleVisualAidState","registerMenuItems$3","register$8","$_21pl3hxajkmcwsst","setupEnvironment","setupUiContainer","setupRtlMode","setupHideFloatPanels","$_drujjnwxjkmcwsrc","GridLayout","posX","posY","spacingH","spacingV","alignH","alignV","ctrlMinWidth","ctrlMinHeight","availableWidth","availableHeight","reverseRows","colWidths","rowHeights","ceil","flexV","flexWidths","Iframe$1","InfoBox","severity","Label","strong","startMinH","targetCtrl","forName","Toolbar$1","MenuBar","isChildOf$1","MenuButton","_renderOpen","animate","activeMenu","hasVisibleSiblingMenu","overCtrl","Menu","itemsFactory","factory","hideThrobber","requestTime","_hasIcons","ListBox","selectedText","lastItemCtrl","menuValues","_values","matchingValues","activateMenuItemsByValue","hasMenus","getSelectedItem","selectedItem","toggleTextStyle","_textStyle","textElm","MenuItem","ariaHideMenu","_parentMenu","_lastRel","iconHtml","convertShortcut","escapeRegExp","markMatches","boldMatches","hover","Radio","ResizeHandle","resizeDragHelper","createOptions","strOptions","SelectBox","_options","minVal","maxVal","setAriaProp","updateSliderHandle","maxHandlePos","shortSizeName","stylePosName","handleEl","orientation","_minValue","_maxValue","previewFilter","Slider","minValue","maxValue","_initValue","screenCordName","toFraction","fromFraction","handleKeyboard","alter","handleDrag","startHandlePos","handlePos","_dragHelper","Spacer","SplitButton","mainButtonElm","menuButtonElm","_menuBtnText","StackLayout","TabPanel","activeTabElm","activeTabId","tabsHtml","activeTab","targetParent","headH","TextBox","getApi","ReflowQueue","Scrollable","Movable","Resizable","Window","FormatControls","Iframe","Toolbar","registerToFactory","_lastfileuploaded","_interval","_hascustomtag","_pluginWindowsCustomTag","onsubmit","description","hascustomtag","_defineProperty","media_live_embeds"],"mappings":"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,EAASjF,EAAKtG,WACVuL,GAAUA,IAAWwhB,EACvB,OAAOxhB,IAIbhU,KAAKqI,QAAU,WACb,OAAO0G,GAET/O,KAAKghB,KAAO,SAAU2U,GAEpB,OADA5mB,EAAO0mB,EAAY1mB,EAAM,aAAc,cAAe4mB,GAC/C5mB,GAET/O,KAAKihB,KAAO,SAAU0U,GAEpB,OADA5mB,EAAO0mB,EAAY1mB,EAAM,YAAa,kBAAmB4mB,GAClD5mB,GAET/O,KAAK61B,MAAQ,SAAUF,GAErB,OADA5mB,EAAO6mB,EAAiB7mB,EAAM,YAAa,kBAAmB4mB,GACvD5mB,GAIX,IAkSI+mB,GACAC,GACAC,GApSAC,GAAS,CACX,UACA,QACA,UACA,MACA,KACA,aACA,SACA,OACA,WACA,SACA,SACA,OACA,OACA,MACA,UACA,UACA,OACA,IACA,KACA,WACA,KACA,SACA,UACA,SACA,aACA,KACA,KACA,KACA,KACA,KACA,KACA,UACA,MACA,MACA,YACA,OACA,MACA,KACA,KACA,KACA,KACA,QACA,QACA,QACA,QACA,KACA,KACA,KACA,WAEEC,GAAQ,CACV,OACA,OACA,WACA,KACA,MACA,QACA,KACA,MACA,QACA,UACA,OACA,OACA,QACA,QACA,SACA,MACA,SAEEC,GAAa,CACf,KACA,MAEEC,GAAgB,CAClB,QACA,QACA,SAEEC,GAAa,CACf,KACA,KACA,KACA,KACA,KACA,KACA,IACA,MACA,UACA,MACA,OACA,aACA,SACA,MACA,WACA,SACA,SACA,UACA,UACA,SACA,QACA,MACA,UAEEC,GAAW,CACb,KACA,KACA,KACA,KACA,KACA,MAEEC,GAAY,CACd,KACA,KACA,MAEEC,GAAQ,CACV,KACA,KACA,MAEEC,GAAa,CACf,MACA,SACA,WACA,SAEEC,GAAa,SAAU/c,GACzB,IAAIgd,EACJ,OAAO,SAAU5nB,GAEf,OADA4nB,EAASA,GAAkB/6B,GAAY+d,EAAO9jB,GAAS,IAChD8gC,EAAO1nC,eAAei7B,GAAmB73B,KAAK0c,MAGrD6nB,GAAYF,GAAWJ,IACvBO,GAAUH,GAAWT,IACrBa,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","file":"js/app.b04ba42f.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t\"app\": 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// script path function\n \tfunction jsonpScriptSrc(chunkId) {\n \t\treturn __webpack_require__.p + \"js/\" + ({}[chunkId]||chunkId) + \".\" + {\"chunk-2d208a58\":\"c96743d4\",\"chunk-5ac299ce\":\"4fa6f20d\",\"chunk-864dd45a\":\"5f903c39\"}[chunkId] + \".js\"\n \t}\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n \t// This file contains only the entry chunk.\n \t// The chunk loading function for additional chunks\n \t__webpack_require__.e = function requireEnsure(chunkId) {\n \t\tvar promises = [];\n\n\n \t\t// JSONP chunk loading for javascript\n\n \t\tvar installedChunkData = installedChunks[chunkId];\n \t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n \t\t\t// a Promise means \"currently loading\".\n \t\t\tif(installedChunkData) {\n \t\t\t\tpromises.push(installedChunkData[2]);\n \t\t\t} else {\n \t\t\t\t// setup Promise in chunk cache\n \t\t\t\tvar promise = new Promise(function(resolve, reject) {\n \t\t\t\t\tinstalledChunkData = installedChunks[chunkId] = [resolve, reject];\n \t\t\t\t});\n \t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n \t\t\t\t// start chunk loading\n \t\t\t\tvar script = document.createElement('script');\n \t\t\t\tvar onScriptComplete;\n\n \t\t\t\tscript.charset = 'utf-8';\n \t\t\t\tscript.timeout = 120;\n \t\t\t\tif (__webpack_require__.nc) {\n \t\t\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n \t\t\t\t}\n \t\t\t\tscript.src = jsonpScriptSrc(chunkId);\n\n \t\t\t\t// create error before stack unwound to get useful stacktrace later\n \t\t\t\tvar error = new Error();\n \t\t\t\tonScriptComplete = function (event) {\n \t\t\t\t\t// avoid mem leaks in IE.\n \t\t\t\t\tscript.onerror = script.onload = null;\n \t\t\t\t\tclearTimeout(timeout);\n \t\t\t\t\tvar chunk = installedChunks[chunkId];\n \t\t\t\t\tif(chunk !== 0) {\n \t\t\t\t\t\tif(chunk) {\n \t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n \t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n \t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n \t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n \t\t\t\t\t\t\terror.type = errorType;\n \t\t\t\t\t\t\terror.request = realSrc;\n \t\t\t\t\t\t\tchunk[1](error);\n \t\t\t\t\t\t}\n \t\t\t\t\t\tinstalledChunks[chunkId] = undefined;\n \t\t\t\t\t}\n \t\t\t\t};\n \t\t\t\tvar timeout = setTimeout(function(){\n \t\t\t\t\tonScriptComplete({ type: 'timeout', target: script });\n \t\t\t\t}, 120000);\n \t\t\t\tscript.onerror = script.onload = onScriptComplete;\n \t\t\t\tdocument.head.appendChild(script);\n \t\t\t}\n \t\t}\n \t\treturn Promise.all(promises);\n \t};\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/\";\n\n \t// on error function for async loading\n \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([0,\"chunk-vendors\"]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","// 4.8.2 (2018-08-09)\n(function () {\n(function () {\n 'use strict';\n\n var noop = function () {\n var x = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n x[_i] = arguments[_i];\n }\n };\n\n var compose = function (fa, fb) {\n return function () {\n var x = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n x[_i] = arguments[_i];\n }\n return fa(fb.apply(null, arguments));\n };\n };\n var constant = function (value) {\n return function () {\n return value;\n };\n };\n var identity = function (x) {\n return x;\n };\n\n var curry = function (f) {\n var x = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n x[_i - 1] = arguments[_i];\n }\n var args = new Array(arguments.length - 1);\n for (var i = 1; i < arguments.length; i++)\n args[i - 1] = arguments[i];\n return function () {\n var x = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n x[_i] = arguments[_i];\n }\n var newArgs = new Array(arguments.length);\n for (var j = 0; j < newArgs.length; j++)\n newArgs[j] = arguments[j];\n var all = args.concat(newArgs);\n return f.apply(null, all);\n };\n };\n\n var die = function (msg) {\n return function () {\n throw new Error(msg);\n };\n };\n\n\n var never = constant(false);\n var always = constant(true);\n\n var never$1 = never;\n var always$1 = always;\n var none = function () {\n return NONE;\n };\n var NONE = function () {\n var eq = function (o) {\n return o.isNone();\n };\n var call$$1 = function (thunk) {\n return thunk();\n };\n var id = function (n) {\n return n;\n };\n var noop$$1 = function () {\n };\n var nul = function () {\n return null;\n };\n var undef = function () {\n return undefined;\n };\n var me = {\n fold: function (n, s) {\n return n();\n },\n is: never$1,\n isSome: never$1,\n isNone: always$1,\n getOr: id,\n getOrThunk: call$$1,\n getOrDie: function (msg) {\n throw new Error(msg || 'error: getOrDie called on none.');\n },\n getOrNull: nul,\n getOrUndefined: undef,\n or: id,\n orThunk: call$$1,\n map: none,\n ap: none,\n each: noop$$1,\n bind: none,\n flatten: none,\n exists: never$1,\n forall: always$1,\n filter: none,\n equals: eq,\n equals_: eq,\n toArray: function () {\n return [];\n },\n toString: constant('none()')\n };\n if (Object.freeze)\n Object.freeze(me);\n return me;\n }();\n var some = function (a) {\n var constant_a = function () {\n return a;\n };\n var self = function () {\n return me;\n };\n var map = function (f) {\n return some(f(a));\n };\n var bind = function (f) {\n return f(a);\n };\n var me = {\n fold: function (n, s) {\n return s(a);\n },\n is: function (v) {\n return a === v;\n },\n isSome: always$1,\n isNone: never$1,\n getOr: constant_a,\n getOrThunk: constant_a,\n getOrDie: constant_a,\n getOrNull: constant_a,\n getOrUndefined: constant_a,\n or: self,\n orThunk: self,\n map: map,\n ap: function (optfab) {\n return optfab.fold(none, function (fab) {\n return some(fab(a));\n });\n },\n each: function (f) {\n f(a);\n },\n bind: bind,\n flatten: constant_a,\n exists: bind,\n forall: bind,\n filter: function (f) {\n return f(a) ? me : NONE;\n },\n equals: function (o) {\n return o.is(a);\n },\n equals_: function (o, elementEq) {\n return o.fold(never$1, function (b) {\n return elementEq(a, b);\n });\n },\n toArray: function () {\n return [a];\n },\n toString: function () {\n return 'some(' + a + ')';\n }\n };\n return me;\n };\n var from = function (value) {\n return value === null || value === undefined ? NONE : some(value);\n };\n var Option = {\n some: some,\n none: none,\n from: from\n };\n\n var typeOf = function (x) {\n if (x === null)\n return 'null';\n var t = typeof x;\n if (t === 'object' && Array.prototype.isPrototypeOf(x))\n return 'array';\n if (t === 'object' && String.prototype.isPrototypeOf(x))\n return 'string';\n return t;\n };\n var isType = function (type) {\n return function (value) {\n return typeOf(value) === type;\n };\n };\n var isString = isType('string');\n var isObject = isType('object');\n var isArray = isType('array');\n var isNull = isType('null');\n var isBoolean = isType('boolean');\n\n var isFunction = isType('function');\n var isNumber = isType('number');\n\n var rawIndexOf = function () {\n var pIndexOf = Array.prototype.indexOf;\n var fastIndex = function (xs, x) {\n return pIndexOf.call(xs, x);\n };\n var slowIndex = function (xs, x) {\n return slowIndexOf(xs, x);\n };\n return pIndexOf === undefined ? slowIndex : fastIndex;\n }();\n var indexOf = function (xs, x) {\n var r = rawIndexOf(xs, x);\n return r === -1 ? Option.none() : Option.some(r);\n };\n var contains = function (xs, x) {\n return rawIndexOf(xs, x) > -1;\n };\n var exists = function (xs, pred) {\n return findIndex(xs, pred).isSome();\n };\n\n\n var map = function (xs, f) {\n var len = xs.length;\n var r = new Array(len);\n for (var i = 0; i < len; i++) {\n var x = xs[i];\n r[i] = f(x, i, xs);\n }\n return r;\n };\n var each = function (xs, f) {\n for (var i = 0, len = xs.length; i < len; i++) {\n var x = xs[i];\n f(x, i, xs);\n }\n };\n var eachr = function (xs, f) {\n for (var i = xs.length - 1; i >= 0; i--) {\n var x = xs[i];\n f(x, i, xs);\n }\n };\n var partition = function (xs, pred) {\n var pass = [];\n var fail = [];\n for (var i = 0, len = xs.length; i < len; i++) {\n var x = xs[i];\n var arr = pred(x, i, xs) ? pass : fail;\n arr.push(x);\n }\n return {\n pass: pass,\n fail: fail\n };\n };\n var filter = function (xs, pred) {\n var r = [];\n for (var i = 0, len = xs.length; i < len; i++) {\n var x = xs[i];\n if (pred(x, i, xs)) {\n r.push(x);\n }\n }\n return r;\n };\n\n var foldr = function (xs, f, acc) {\n eachr(xs, function (x) {\n acc = f(acc, x);\n });\n return acc;\n };\n var foldl = function (xs, f, acc) {\n each(xs, function (x) {\n acc = f(acc, x);\n });\n return acc;\n };\n var find = function (xs, pred) {\n for (var i = 0, len = xs.length; i < len; i++) {\n var x = xs[i];\n if (pred(x, i, xs)) {\n return Option.some(x);\n }\n }\n return Option.none();\n };\n var findIndex = function (xs, pred) {\n for (var i = 0, len = xs.length; i < len; i++) {\n var x = xs[i];\n if (pred(x, i, xs)) {\n return Option.some(i);\n }\n }\n return Option.none();\n };\n var slowIndexOf = function (xs, x) {\n for (var i = 0, len = xs.length; i < len; ++i) {\n if (xs[i] === x) {\n return i;\n }\n }\n return -1;\n };\n var push = Array.prototype.push;\n var flatten = function (xs) {\n var r = [];\n for (var i = 0, len = xs.length; i < len; ++i) {\n if (!Array.prototype.isPrototypeOf(xs[i]))\n throw new Error('Arr.flatten item ' + i + ' was not an array, input: ' + xs);\n push.apply(r, xs[i]);\n }\n return r;\n };\n var bind = function (xs, f) {\n var output = map(xs, f);\n return flatten(output);\n };\n var forall = function (xs, pred) {\n for (var i = 0, len = xs.length; i < len; ++i) {\n var x = xs[i];\n if (pred(x, i, xs) !== true) {\n return false;\n }\n }\n return true;\n };\n\n var slice = Array.prototype.slice;\n var reverse = function (xs) {\n var r = slice.call(xs, 0);\n r.reverse();\n return r;\n };\n var difference = function (a1, a2) {\n return filter(a1, function (x) {\n return !contains(a2, x);\n });\n };\n var mapToObject = function (xs, f) {\n var r = {};\n for (var i = 0, len = xs.length; i < len; i++) {\n var x = xs[i];\n r[String(x)] = f(x, i);\n }\n return r;\n };\n\n var sort = function (xs, comparator) {\n var copy = slice.call(xs, 0);\n copy.sort(comparator);\n return copy;\n };\n var head = function (xs) {\n return xs.length === 0 ? Option.none() : Option.some(xs[0]);\n };\n var last = function (xs) {\n return xs.length === 0 ? Option.none() : Option.some(xs[xs.length - 1]);\n };\n var from$1 = isFunction(Array.from) ? Array.from : function (x) {\n return slice.call(x);\n };\n\n var Global = typeof window !== 'undefined' ? window : Function('return this;')();\n\n var path = function (parts, scope) {\n var o = scope !== undefined && scope !== null ? scope : Global;\n for (var i = 0; i < parts.length && o !== undefined && o !== null; ++i)\n o = o[parts[i]];\n return o;\n };\n var resolve = function (p, scope) {\n var parts = p.split('.');\n return path(parts, scope);\n };\n\n var unsafe = function (name, scope) {\n return resolve(name, scope);\n };\n var getOrDie = function (name, scope) {\n var actual = unsafe(name, scope);\n if (actual === undefined || actual === null)\n throw name + ' not available on this browser';\n return actual;\n };\n var $_89i3w1cjkmcwk2c = { getOrDie: getOrDie };\n\n var url = function () {\n return $_89i3w1cjkmcwk2c.getOrDie('URL');\n };\n var createObjectURL = function (blob) {\n return url().createObjectURL(blob);\n };\n var revokeObjectURL = function (u) {\n url().revokeObjectURL(u);\n };\n var $_ci16mbjkmcwk2b = {\n createObjectURL: createObjectURL,\n revokeObjectURL: revokeObjectURL\n };\n\n var nav = navigator;\n var userAgent = nav.userAgent;\n var opera;\n var webkit;\n var ie;\n var ie11;\n var ie12;\n var gecko;\n var mac;\n var iDevice;\n var android;\n var fileApi;\n var phone;\n var tablet;\n var windowsPhone;\n var matchMediaQuery = function (query) {\n return 'matchMedia' in window ? matchMedia(query).matches : false;\n };\n opera = false;\n android = /Android/.test(userAgent);\n webkit = /WebKit/.test(userAgent);\n ie = !webkit && !opera && /MSIE/gi.test(userAgent) && /Explorer/gi.test(nav.appName);\n ie = ie && /MSIE (\\w+)\\./.exec(userAgent)[1];\n ie11 = userAgent.indexOf('Trident/') !== -1 && (userAgent.indexOf('rv:') !== -1 || nav.appName.indexOf('Netscape') !== -1) ? 11 : false;\n ie12 = userAgent.indexOf('Edge/') !== -1 && !ie && !ie11 ? 12 : false;\n ie = ie || ie11 || ie12;\n gecko = !webkit && !ie11 && /Gecko/.test(userAgent);\n mac = userAgent.indexOf('Mac') !== -1;\n iDevice = /(iPad|iPhone)/.test(userAgent);\n fileApi = 'FormData' in window && 'FileReader' in window && 'URL' in window && !!$_ci16mbjkmcwk2b.createObjectURL;\n phone = matchMediaQuery('only screen and (max-device-width: 480px)') && (android || iDevice);\n tablet = matchMediaQuery('only screen and (min-width: 800px)') && (android || iDevice);\n windowsPhone = userAgent.indexOf('Windows Phone') !== -1;\n if (ie12) {\n webkit = false;\n }\n var contentEditable = !iDevice || fileApi || parseInt(userAgent.match(/AppleWebKit\\/(\\d*)/)[1], 10) >= 534;\n var $_cvvl9iajkmcwk25 = {\n opera: opera,\n webkit: webkit,\n ie: ie,\n gecko: gecko,\n mac: mac,\n iOS: iDevice,\n android: android,\n contentEditable: contentEditable,\n transparentSrc: 'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7',\n caretAfter: ie !== 8,\n range: window.getSelection && 'Range' in window,\n documentMode: ie && !ie12 ? document.documentMode || 7 : 10,\n fileApi: fileApi,\n ceFalse: ie === false || ie > 8,\n cacheSuffix: null,\n container: null,\n overrideViewPort: null,\n experimentalShadowDom: false,\n canHaveCSP: ie === false || ie > 11,\n desktop: !phone && !tablet,\n windowsPhone: windowsPhone\n };\n\n var promise = function () {\n function bind(fn, thisArg) {\n return function () {\n fn.apply(thisArg, arguments);\n };\n }\n var isArray = Array.isArray || function (value) {\n return Object.prototype.toString.call(value) === '[object Array]';\n };\n var Promise = function (fn) {\n if (typeof this !== 'object') {\n throw new TypeError('Promises must be constructed via new');\n }\n if (typeof fn !== 'function') {\n throw new TypeError('not a function');\n }\n this._state = null;\n this._value = null;\n this._deferreds = [];\n doResolve(fn, bind(resolve, this), bind(reject, this));\n };\n var asap = Promise.immediateFn || typeof setImmediate === 'function' && setImmediate || function (fn) {\n setTimeout(fn, 1);\n };\n function handle(deferred) {\n var me = this;\n if (this._state === null) {\n this._deferreds.push(deferred);\n return;\n }\n asap(function () {\n var cb = me._state ? deferred.onFulfilled : deferred.onRejected;\n if (cb === null) {\n (me._state ? deferred.resolve : deferred.reject)(me._value);\n return;\n }\n var ret;\n try {\n ret = cb(me._value);\n } catch (e) {\n deferred.reject(e);\n return;\n }\n deferred.resolve(ret);\n });\n }\n function resolve(newValue) {\n try {\n if (newValue === this) {\n throw new TypeError('A promise cannot be resolved with itself.');\n }\n if (newValue && (typeof newValue === 'object' || typeof newValue === 'function')) {\n var then = newValue.then;\n if (typeof then === 'function') {\n doResolve(bind(then, newValue), bind(resolve, this), bind(reject, this));\n return;\n }\n }\n this._state = true;\n this._value = newValue;\n finale.call(this);\n } catch (e) {\n reject.call(this, e);\n }\n }\n function reject(newValue) {\n this._state = false;\n this._value = newValue;\n finale.call(this);\n }\n function finale() {\n for (var i = 0, len = this._deferreds.length; i < len; i++) {\n handle.call(this, this._deferreds[i]);\n }\n this._deferreds = null;\n }\n function Handler(onFulfilled, onRejected, resolve, reject) {\n this.onFulfilled = typeof onFulfilled === 'function' ? onFulfilled : null;\n this.onRejected = typeof onRejected === 'function' ? onRejected : null;\n this.resolve = resolve;\n this.reject = reject;\n }\n function doResolve(fn, onFulfilled, onRejected) {\n var done = false;\n try {\n fn(function (value) {\n if (done) {\n return;\n }\n done = true;\n onFulfilled(value);\n }, function (reason) {\n if (done) {\n return;\n }\n done = true;\n onRejected(reason);\n });\n } catch (ex) {\n if (done) {\n return;\n }\n done = true;\n onRejected(ex);\n }\n }\n Promise.prototype.catch = function (onRejected) {\n return this.then(null, onRejected);\n };\n Promise.prototype.then = function (onFulfilled, onRejected) {\n var me = this;\n return new Promise(function (resolve, reject) {\n handle.call(me, new Handler(onFulfilled, onRejected, resolve, reject));\n });\n };\n Promise.all = function () {\n var args = Array.prototype.slice.call(arguments.length === 1 && isArray(arguments[0]) ? arguments[0] : arguments);\n return new Promise(function (resolve, reject) {\n if (args.length === 0) {\n return resolve([]);\n }\n var remaining = args.length;\n function res(i, val) {\n try {\n if (val && (typeof val === 'object' || typeof val === 'function')) {\n var then = val.then;\n if (typeof then === 'function') {\n then.call(val, function (val) {\n res(i, val);\n }, reject);\n return;\n }\n }\n args[i] = val;\n if (--remaining === 0) {\n resolve(args);\n }\n } catch (ex) {\n reject(ex);\n }\n }\n for (var i = 0; i < args.length; i++) {\n res(i, args[i]);\n }\n });\n };\n Promise.resolve = function (value) {\n if (value && typeof value === 'object' && value.constructor === Promise) {\n return value;\n }\n return new Promise(function (resolve) {\n resolve(value);\n });\n };\n Promise.reject = function (value) {\n return new Promise(function (resolve, reject) {\n reject(value);\n });\n };\n Promise.race = function (values) {\n return new Promise(function (resolve, reject) {\n for (var i = 0, len = values.length; i < len; i++) {\n values[i].then(resolve, reject);\n }\n });\n };\n return Promise;\n };\n var promiseObj = window.Promise ? window.Promise : promise();\n\n var requestAnimationFramePromise;\n var requestAnimationFrame$$1 = function (callback, element) {\n var i, requestAnimationFrameFunc = window.requestAnimationFrame;\n var vendors = [\n 'ms',\n 'moz',\n 'webkit'\n ];\n var featurefill = function (callback) {\n window.setTimeout(callback, 0);\n };\n for (i = 0; i < vendors.length && !requestAnimationFrameFunc; i++) {\n requestAnimationFrameFunc = window[vendors[i] + 'RequestAnimationFrame'];\n }\n if (!requestAnimationFrameFunc) {\n requestAnimationFrameFunc = featurefill;\n }\n requestAnimationFrameFunc(callback, element);\n };\n var wrappedSetTimeout = function (callback, time) {\n if (typeof time !== 'number') {\n time = 0;\n }\n return setTimeout(callback, time);\n };\n var wrappedSetInterval = function (callback, time) {\n if (typeof time !== 'number') {\n time = 1;\n }\n return setInterval(callback, time);\n };\n var wrappedClearTimeout = function (id) {\n return clearTimeout(id);\n };\n var wrappedClearInterval = function (id) {\n return clearInterval(id);\n };\n var debounce = function (callback, time) {\n var timer, func;\n func = function () {\n var args = arguments;\n clearTimeout(timer);\n timer = wrappedSetTimeout(function () {\n callback.apply(this, args);\n }, time);\n };\n func.stop = function () {\n clearTimeout(timer);\n };\n return func;\n };\n var $_3l01gcijkmcwk99 = {\n requestAnimationFrame: function (callback, element) {\n if (requestAnimationFramePromise) {\n requestAnimationFramePromise.then(callback);\n return;\n }\n requestAnimationFramePromise = new promiseObj(function (resolve) {\n if (!element) {\n element = document.body;\n }\n requestAnimationFrame$$1(resolve, element);\n }).then(callback);\n },\n setTimeout: wrappedSetTimeout,\n setInterval: wrappedSetInterval,\n setEditorTimeout: function (editor, callback, time) {\n return wrappedSetTimeout(function () {\n if (!editor.removed) {\n callback();\n }\n }, time);\n },\n setEditorInterval: function (editor, callback, time) {\n var timer;\n timer = wrappedSetInterval(function () {\n if (!editor.removed) {\n callback();\n } else {\n clearInterval(timer);\n }\n }, time);\n return timer;\n },\n debounce: debounce,\n throttle: debounce,\n clearInterval: wrappedClearInterval,\n clearTimeout: wrappedClearTimeout\n };\n\n var eventExpandoPrefix = 'mce-data-';\n var mouseEventRe = /^(?:mouse|contextmenu)|click/;\n var deprecated = {\n keyLocation: 1,\n layerX: 1,\n layerY: 1,\n returnValue: 1,\n webkitMovementX: 1,\n webkitMovementY: 1,\n keyIdentifier: 1\n };\n var hasIsDefaultPrevented = function (event$$1) {\n return event$$1.isDefaultPrevented === returnTrue || event$$1.isDefaultPrevented === returnFalse;\n };\n var returnFalse = function () {\n return false;\n };\n var returnTrue = function () {\n return true;\n };\n var addEvent = function (target, name$$1, callback, capture) {\n if (target.addEventListener) {\n target.addEventListener(name$$1, callback, capture || false);\n } else if (target.attachEvent) {\n target.attachEvent('on' + name$$1, callback);\n }\n };\n var removeEvent = function (target, name$$1, callback, capture) {\n if (target.removeEventListener) {\n target.removeEventListener(name$$1, callback, capture || false);\n } else if (target.detachEvent) {\n target.detachEvent('on' + name$$1, callback);\n }\n };\n var getTargetFromShadowDom = function (event$$1, defaultTarget) {\n if (event$$1.composedPath) {\n var composedPath = event$$1.composedPath();\n if (composedPath && composedPath.length > 0) {\n return composedPath[0];\n }\n }\n return defaultTarget;\n };\n var fix = function (originalEvent, data) {\n var name$$1;\n var event$$1 = data || {};\n for (name$$1 in originalEvent) {\n if (!deprecated[name$$1]) {\n event$$1[name$$1] = originalEvent[name$$1];\n }\n }\n if (!event$$1.target) {\n event$$1.target = event$$1.srcElement || document;\n }\n if ($_cvvl9iajkmcwk25.experimentalShadowDom) {\n event$$1.target = getTargetFromShadowDom(originalEvent, event$$1.target);\n }\n if (originalEvent && mouseEventRe.test(originalEvent.type) && originalEvent.pageX === undefined && originalEvent.clientX !== undefined) {\n var eventDoc = event$$1.target.ownerDocument || document;\n var doc = eventDoc.documentElement;\n var body = eventDoc.body;\n event$$1.pageX = originalEvent.clientX + (doc && doc.scrollLeft || body && body.scrollLeft || 0) - (doc && doc.clientLeft || body && body.clientLeft || 0);\n event$$1.pageY = originalEvent.clientY + (doc && doc.scrollTop || body && body.scrollTop || 0) - (doc && doc.clientTop || body && body.clientTop || 0);\n }\n event$$1.preventDefault = function () {\n event$$1.isDefaultPrevented = returnTrue;\n if (originalEvent) {\n if (originalEvent.preventDefault) {\n originalEvent.preventDefault();\n } else {\n originalEvent.returnValue = false;\n }\n }\n };\n event$$1.stopPropagation = function () {\n event$$1.isPropagationStopped = returnTrue;\n if (originalEvent) {\n if (originalEvent.stopPropagation) {\n originalEvent.stopPropagation();\n } else {\n originalEvent.cancelBubble = true;\n }\n }\n };\n event$$1.stopImmediatePropagation = function () {\n event$$1.isImmediatePropagationStopped = returnTrue;\n event$$1.stopPropagation();\n };\n if (hasIsDefaultPrevented(event$$1) === false) {\n event$$1.isDefaultPrevented = returnFalse;\n event$$1.isPropagationStopped = returnFalse;\n event$$1.isImmediatePropagationStopped = returnFalse;\n }\n if (typeof event$$1.metaKey === 'undefined') {\n event$$1.metaKey = false;\n }\n return event$$1;\n };\n var bindOnReady = function (win, callback, eventUtils) {\n var doc = win.document, event$$1 = { type: 'ready' };\n if (eventUtils.domLoaded) {\n callback(event$$1);\n return;\n }\n var isDocReady = function () {\n return doc.readyState === 'complete' || doc.readyState === 'interactive' && doc.body;\n };\n var readyHandler = function () {\n if (!eventUtils.domLoaded) {\n eventUtils.domLoaded = true;\n callback(event$$1);\n }\n };\n var waitForDomLoaded = function () {\n if (isDocReady()) {\n removeEvent(doc, 'readystatechange', waitForDomLoaded);\n readyHandler();\n }\n };\n var tryScroll = function () {\n try {\n doc.documentElement.doScroll('left');\n } catch (ex) {\n $_3l01gcijkmcwk99.setTimeout(tryScroll);\n return;\n }\n readyHandler();\n };\n if (doc.addEventListener && !($_cvvl9iajkmcwk25.ie && $_cvvl9iajkmcwk25.ie < 11)) {\n if (isDocReady()) {\n readyHandler();\n } else {\n addEvent(win, 'DOMContentLoaded', readyHandler);\n }\n } else {\n addEvent(doc, 'readystatechange', waitForDomLoaded);\n if (doc.documentElement.doScroll && win.self === win.top) {\n tryScroll();\n }\n }\n addEvent(win, 'load', readyHandler);\n };\n var EventUtils = function () {\n var self$$1 = this;\n var events = {}, count, expando, hasFocusIn, hasMouseEnterLeave, mouseEnterLeave;\n expando = eventExpandoPrefix + (+new Date()).toString(32);\n hasMouseEnterLeave = 'onmouseenter' in document.documentElement;\n hasFocusIn = 'onfocusin' in document.documentElement;\n mouseEnterLeave = {\n mouseenter: 'mouseover',\n mouseleave: 'mouseout'\n };\n count = 1;\n self$$1.domLoaded = false;\n self$$1.events = events;\n var executeHandlers = function (evt, id) {\n var callbackList, i, l, callback;\n var container = events[id];\n callbackList = container && container[evt.type];\n if (callbackList) {\n for (i = 0, l = callbackList.length; i < l; i++) {\n callback = callbackList[i];\n if (callback && callback.func.call(callback.scope, evt) === false) {\n evt.preventDefault();\n }\n if (evt.isImmediatePropagationStopped()) {\n return;\n }\n }\n }\n };\n self$$1.bind = function (target, names, callback, scope) {\n var id, callbackList, i, name$$1, fakeName, nativeHandler, capture;\n var win = window;\n var defaultNativeHandler = function (evt) {\n executeHandlers(fix(evt || win.event), id);\n };\n if (!target || target.nodeType === 3 || target.nodeType === 8) {\n return;\n }\n if (!target[expando]) {\n id = count++;\n target[expando] = id;\n events[id] = {};\n } else {\n id = target[expando];\n }\n scope = scope || target;\n names = names.split(' ');\n i = names.length;\n while (i--) {\n name$$1 = names[i];\n nativeHandler = defaultNativeHandler;\n fakeName = capture = false;\n if (name$$1 === 'DOMContentLoaded') {\n name$$1 = 'ready';\n }\n if (self$$1.domLoaded && name$$1 === 'ready' && target.readyState === 'complete') {\n callback.call(scope, fix({ type: name$$1 }));\n continue;\n }\n if (!hasMouseEnterLeave) {\n fakeName = mouseEnterLeave[name$$1];\n if (fakeName) {\n nativeHandler = function (evt) {\n var current, related;\n current = evt.currentTarget;\n related = evt.relatedTarget;\n if (related && current.contains) {\n related = current.contains(related);\n } else {\n while (related && related !== current) {\n related = related.parentNode;\n }\n }\n if (!related) {\n evt = fix(evt || win.event);\n evt.type = evt.type === 'mouseout' ? 'mouseleave' : 'mouseenter';\n evt.target = current;\n executeHandlers(evt, id);\n }\n };\n }\n }\n if (!hasFocusIn && (name$$1 === 'focusin' || name$$1 === 'focusout')) {\n capture = true;\n fakeName = name$$1 === 'focusin' ? 'focus' : 'blur';\n nativeHandler = function (evt) {\n evt = fix(evt || win.event);\n evt.type = evt.type === 'focus' ? 'focusin' : 'focusout';\n executeHandlers(evt, id);\n };\n }\n callbackList = events[id][name$$1];\n if (!callbackList) {\n events[id][name$$1] = callbackList = [{\n func: callback,\n scope: scope\n }];\n callbackList.fakeName = fakeName;\n callbackList.capture = capture;\n callbackList.nativeHandler = nativeHandler;\n if (name$$1 === 'ready') {\n bindOnReady(target, nativeHandler, self$$1);\n } else {\n addEvent(target, fakeName || name$$1, nativeHandler, capture);\n }\n } else {\n if (name$$1 === 'ready' && self$$1.domLoaded) {\n callback({ type: name$$1 });\n } else {\n callbackList.push({\n func: callback,\n scope: scope\n });\n }\n }\n }\n target = callbackList = 0;\n return callback;\n };\n self$$1.unbind = function (target, names, callback) {\n var id, callbackList, i, ci, name$$1, eventMap;\n if (!target || target.nodeType === 3 || target.nodeType === 8) {\n return self$$1;\n }\n id = target[expando];\n if (id) {\n eventMap = events[id];\n if (names) {\n names = names.split(' ');\n i = names.length;\n while (i--) {\n name$$1 = names[i];\n callbackList = eventMap[name$$1];\n if (callbackList) {\n if (callback) {\n ci = callbackList.length;\n while (ci--) {\n if (callbackList[ci].func === callback) {\n var nativeHandler = callbackList.nativeHandler;\n var fakeName = callbackList.fakeName, capture = callbackList.capture;\n callbackList = callbackList.slice(0, ci).concat(callbackList.slice(ci + 1));\n callbackList.nativeHandler = nativeHandler;\n callbackList.fakeName = fakeName;\n callbackList.capture = capture;\n eventMap[name$$1] = callbackList;\n }\n }\n }\n if (!callback || callbackList.length === 0) {\n delete eventMap[name$$1];\n removeEvent(target, callbackList.fakeName || name$$1, callbackList.nativeHandler, callbackList.capture);\n }\n }\n }\n } else {\n for (name$$1 in eventMap) {\n callbackList = eventMap[name$$1];\n removeEvent(target, callbackList.fakeName || name$$1, callbackList.nativeHandler, callbackList.capture);\n }\n eventMap = {};\n }\n for (name$$1 in eventMap) {\n return self$$1;\n }\n delete events[id];\n try {\n delete target[expando];\n } catch (ex) {\n target[expando] = null;\n }\n }\n return self$$1;\n };\n self$$1.fire = function (target, name$$1, args) {\n var id;\n if (!target || target.nodeType === 3 || target.nodeType === 8) {\n return self$$1;\n }\n args = fix(null, args);\n args.type = name$$1;\n args.target = target;\n do {\n id = target[expando];\n if (id) {\n executeHandlers(args, id);\n }\n target = target.parentNode || target.ownerDocument || target.defaultView || target.parentWindow;\n } while (target && !args.isPropagationStopped());\n return self$$1;\n };\n self$$1.clean = function (target) {\n var i, children;\n var unbind = self$$1.unbind;\n if (!target || target.nodeType === 3 || target.nodeType === 8) {\n return self$$1;\n }\n if (target[expando]) {\n unbind(target);\n }\n if (!target.getElementsByTagName) {\n target = target.document;\n }\n if (target && target.getElementsByTagName) {\n unbind(target);\n children = target.getElementsByTagName('*');\n i = children.length;\n while (i--) {\n target = children[i];\n if (target[expando]) {\n unbind(target);\n }\n }\n }\n return self$$1;\n };\n self$$1.destroy = function () {\n events = {};\n };\n self$$1.cancel = function (e) {\n if (e) {\n e.preventDefault();\n e.stopImmediatePropagation();\n }\n return false;\n };\n };\n EventUtils.Event = new EventUtils();\n EventUtils.Event.bind(window, 'ready', function () {\n });\n\n var i;\n var support;\n var Expr;\n var getText;\n var isXML;\n var tokenize;\n var compile;\n var select;\n var outermostContext;\n var sortInput;\n var hasDuplicate;\n var setDocument;\n var document$1;\n var docElem;\n var documentIsHTML;\n var rbuggyQSA;\n var rbuggyMatches;\n var matches;\n var contains$1;\n var expando = 'sizzle' + -new Date();\n var preferredDoc = window.document;\n var dirruns = 0;\n var done = 0;\n var classCache = createCache();\n var tokenCache = createCache();\n var compilerCache = createCache();\n var sortOrder = function (a, b) {\n if (a === b) {\n hasDuplicate = true;\n }\n return 0;\n };\n var strundefined = typeof undefined;\n var MAX_NEGATIVE = 1 << 31;\n var hasOwn = {}.hasOwnProperty;\n var arr = [];\n var pop = arr.pop;\n var push_native = arr.push;\n var push$1 = arr.push;\n var slice$1 = arr.slice;\n var indexOf$1 = arr.indexOf || function (elem) {\n var i = 0, len = this.length;\n for (; i < len; i++) {\n if (this[i] === elem) {\n return i;\n }\n }\n return -1;\n };\n var booleans = 'checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped';\n var whitespace = '[\\\\x20\\\\t\\\\r\\\\n\\\\f]';\n var identifier = '(?:\\\\\\\\.|[\\\\w-]|[^\\\\x00-\\\\xa0])+';\n var attributes = '\\\\[' + whitespace + '*(' + identifier + ')(?:' + whitespace + '*([*^$|!~]?=)' + whitespace + '*(?:\\'((?:\\\\\\\\.|[^\\\\\\\\\\'])*)\\'|\"((?:\\\\\\\\.|[^\\\\\\\\\"])*)\"|(' + identifier + '))|)' + whitespace + '*\\\\]';\n var pseudos = ':(' + identifier + ')(?:\\\\((' + '(\\'((?:\\\\\\\\.|[^\\\\\\\\\\'])*)\\'|\"((?:\\\\\\\\.|[^\\\\\\\\\"])*)\")|' + '((?:\\\\\\\\.|[^\\\\\\\\()[\\\\]]|' + attributes + ')*)|' + '.*' + ')\\\\)|)';\n var rtrim = new RegExp('^' + whitespace + '+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)' + whitespace + '+$', 'g');\n var rcomma = new RegExp('^' + whitespace + '*,' + whitespace + '*');\n var rcombinators = new RegExp('^' + whitespace + '*([>+~]|' + whitespace + ')' + whitespace + '*');\n var rattributeQuotes = new RegExp('=' + whitespace + '*([^\\\\]\\'\"]*?)' + whitespace + '*\\\\]', 'g');\n var rpseudo = new RegExp(pseudos);\n var ridentifier = new RegExp('^' + identifier + '$');\n var matchExpr = {\n ID: new RegExp('^#(' + identifier + ')'),\n CLASS: new RegExp('^\\\\.(' + identifier + ')'),\n TAG: new RegExp('^(' + identifier + '|[*])'),\n ATTR: new RegExp('^' + attributes),\n PSEUDO: new RegExp('^' + pseudos),\n CHILD: new RegExp('^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\(' + whitespace + '*(even|odd|(([+-]|)(\\\\d*)n|)' + whitespace + '*(?:([+-]|)' + whitespace + '*(\\\\d+)|))' + whitespace + '*\\\\)|)', 'i'),\n bool: new RegExp('^(?:' + booleans + ')$', 'i'),\n needsContext: new RegExp('^' + whitespace + '*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(' + whitespace + '*((?:-\\\\d)?\\\\d*)' + whitespace + '*\\\\)|)(?=[^-]|$)', 'i')\n };\n var rinputs = /^(?:input|select|textarea|button)$/i;\n var rheader = /^h\\d$/i;\n var rnative = /^[^{]+\\{\\s*\\[native \\w/;\n var rquickExpr = /^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/;\n var rsibling = /[+~]/;\n var rescape = /'|\\\\/g;\n var runescape = new RegExp('\\\\\\\\([\\\\da-f]{1,6}' + whitespace + '?|(' + whitespace + ')|.)', 'ig');\n var funescape = function (_, escaped, escapedWhitespace) {\n var high = '0x' + escaped - 65536;\n return high !== high || escapedWhitespace ? escaped : high < 0 ? String.fromCharCode(high + 65536) : String.fromCharCode(high >> 10 | 55296, high & 1023 | 56320);\n };\n try {\n push$1.apply(arr = slice$1.call(preferredDoc.childNodes), preferredDoc.childNodes);\n arr[preferredDoc.childNodes.length].nodeType;\n } catch (e) {\n push$1 = {\n apply: arr.length ? function (target, els) {\n push_native.apply(target, slice$1.call(els));\n } : function (target, els) {\n var j = target.length, i = 0;\n while (target[j++] = els[i++]) {\n }\n target.length = j - 1;\n }\n };\n }\n var Sizzle = function (selector, context, results, seed) {\n var match, elem, m, nodeType, i, groups, old, nid, newContext, newSelector;\n if ((context ? context.ownerDocument || context : preferredDoc) !== document$1) {\n setDocument(context);\n }\n context = context || document$1;\n results = results || [];\n if (!selector || typeof selector !== 'string') {\n return results;\n }\n if ((nodeType = context.nodeType) !== 1 && nodeType !== 9) {\n return [];\n }\n if (documentIsHTML && !seed) {\n if (match = rquickExpr.exec(selector)) {\n if (m = match[1]) {\n if (nodeType === 9) {\n elem = context.getElementById(m);\n if (elem && elem.parentNode) {\n if (elem.id === m) {\n results.push(elem);\n return results;\n }\n } else {\n return results;\n }\n } else {\n if (context.ownerDocument && (elem = context.ownerDocument.getElementById(m)) && contains$1(context, elem) && elem.id === m) {\n results.push(elem);\n return results;\n }\n }\n } else if (match[2]) {\n push$1.apply(results, context.getElementsByTagName(selector));\n return results;\n } else if ((m = match[3]) && support.getElementsByClassName) {\n push$1.apply(results, context.getElementsByClassName(m));\n return results;\n }\n }\n if (support.qsa && (!rbuggyQSA || !rbuggyQSA.test(selector))) {\n nid = old = expando;\n newContext = context;\n newSelector = nodeType === 9 && selector;\n if (nodeType === 1 && context.nodeName.toLowerCase() !== 'object') {\n groups = tokenize(selector);\n if (old = context.getAttribute('id')) {\n nid = old.replace(rescape, '\\\\$&');\n } else {\n context.setAttribute('id', nid);\n }\n nid = '[id=\\'' + nid + '\\'] ';\n i = groups.length;\n while (i--) {\n groups[i] = nid + toSelector(groups[i]);\n }\n newContext = rsibling.test(selector) && testContext(context.parentNode) || context;\n newSelector = groups.join(',');\n }\n if (newSelector) {\n try {\n push$1.apply(results, newContext.querySelectorAll(newSelector));\n return results;\n } catch (qsaError) {\n } finally {\n if (!old) {\n context.removeAttribute('id');\n }\n }\n }\n }\n }\n return select(selector.replace(rtrim, '$1'), context, results, seed);\n };\n function createCache() {\n var keys = [];\n function cache(key, value) {\n if (keys.push(key + ' ') > Expr.cacheLength) {\n delete cache[keys.shift()];\n }\n return cache[key + ' '] = value;\n }\n return cache;\n }\n function markFunction(fn) {\n fn[expando] = true;\n return fn;\n }\n function siblingCheck(a, b) {\n var cur = b && a, diff = cur && a.nodeType === 1 && b.nodeType === 1 && (~b.sourceIndex || MAX_NEGATIVE) - (~a.sourceIndex || MAX_NEGATIVE);\n if (diff) {\n return diff;\n }\n if (cur) {\n while (cur = cur.nextSibling) {\n if (cur === b) {\n return -1;\n }\n }\n }\n return a ? 1 : -1;\n }\n function createInputPseudo(type) {\n return function (elem) {\n var name$$1 = elem.nodeName.toLowerCase();\n return name$$1 === 'input' && elem.type === type;\n };\n }\n function createButtonPseudo(type) {\n return function (elem) {\n var name$$1 = elem.nodeName.toLowerCase();\n return (name$$1 === 'input' || name$$1 === 'button') && elem.type === type;\n };\n }\n function createPositionalPseudo(fn) {\n return markFunction(function (argument) {\n argument = +argument;\n return markFunction(function (seed, matches) {\n var j, matchIndexes = fn([], seed.length, argument), i = matchIndexes.length;\n while (i--) {\n if (seed[j = matchIndexes[i]]) {\n seed[j] = !(matches[j] = seed[j]);\n }\n }\n });\n });\n }\n function testContext(context) {\n return context && typeof context.getElementsByTagName !== strundefined && context;\n }\n support = Sizzle.support = {};\n isXML = Sizzle.isXML = function (elem) {\n var documentElement = elem && (elem.ownerDocument || elem).documentElement;\n return documentElement ? documentElement.nodeName !== 'HTML' : false;\n };\n setDocument = Sizzle.setDocument = function (node) {\n var hasCompare, doc = node ? node.ownerDocument || node : preferredDoc, parent$$1 = doc.defaultView;\n function getTop(win) {\n try {\n return win.top;\n } catch (ex) {\n }\n return null;\n }\n if (doc === document$1 || doc.nodeType !== 9 || !doc.documentElement) {\n return document$1;\n }\n document$1 = doc;\n docElem = doc.documentElement;\n documentIsHTML = !isXML(doc);\n if (parent$$1 && parent$$1 !== getTop(parent$$1)) {\n if (parent$$1.addEventListener) {\n parent$$1.addEventListener('unload', function () {\n setDocument();\n }, false);\n } else if (parent$$1.attachEvent) {\n parent$$1.attachEvent('onunload', function () {\n setDocument();\n });\n }\n }\n support.attributes = true;\n support.getElementsByTagName = true;\n support.getElementsByClassName = rnative.test(doc.getElementsByClassName);\n support.getById = true;\n Expr.find.ID = function (id, context) {\n if (typeof context.getElementById !== strundefined && documentIsHTML) {\n var m = context.getElementById(id);\n return m && m.parentNode ? [m] : [];\n }\n };\n Expr.filter.ID = function (id) {\n var attrId = id.replace(runescape, funescape);\n return function (elem) {\n return elem.getAttribute('id') === attrId;\n };\n };\n Expr.find.TAG = support.getElementsByTagName ? function (tag, context) {\n if (typeof context.getElementsByTagName !== strundefined) {\n return context.getElementsByTagName(tag);\n }\n } : function (tag, context) {\n var elem, tmp = [], i = 0, results = context.getElementsByTagName(tag);\n if (tag === '*') {\n while (elem = results[i++]) {\n if (elem.nodeType === 1) {\n tmp.push(elem);\n }\n }\n return tmp;\n }\n return results;\n };\n Expr.find.CLASS = support.getElementsByClassName && function (className, context) {\n if (documentIsHTML) {\n return context.getElementsByClassName(className);\n }\n };\n rbuggyMatches = [];\n rbuggyQSA = [];\n support.disconnectedMatch = true;\n rbuggyQSA = rbuggyQSA.length && new RegExp(rbuggyQSA.join('|'));\n rbuggyMatches = rbuggyMatches.length && new RegExp(rbuggyMatches.join('|'));\n hasCompare = rnative.test(docElem.compareDocumentPosition);\n contains$1 = hasCompare || rnative.test(docElem.contains) ? function (a, b) {\n var adown = a.nodeType === 9 ? a.documentElement : a, bup = b && b.parentNode;\n return a === bup || !!(bup && bup.nodeType === 1 && (adown.contains ? adown.contains(bup) : a.compareDocumentPosition && a.compareDocumentPosition(bup) & 16));\n } : function (a, b) {\n if (b) {\n while (b = b.parentNode) {\n if (b === a) {\n return true;\n }\n }\n }\n return false;\n };\n sortOrder = hasCompare ? function (a, b) {\n if (a === b) {\n hasDuplicate = true;\n return 0;\n }\n var compare = !a.compareDocumentPosition - !b.compareDocumentPosition;\n if (compare) {\n return compare;\n }\n compare = (a.ownerDocument || a) === (b.ownerDocument || b) ? a.compareDocumentPosition(b) : 1;\n if (compare & 1 || !support.sortDetached && b.compareDocumentPosition(a) === compare) {\n if (a === doc || a.ownerDocument === preferredDoc && contains$1(preferredDoc, a)) {\n return -1;\n }\n if (b === doc || b.ownerDocument === preferredDoc && contains$1(preferredDoc, b)) {\n return 1;\n }\n return sortInput ? indexOf$1.call(sortInput, a) - indexOf$1.call(sortInput, b) : 0;\n }\n return compare & 4 ? -1 : 1;\n } : function (a, b) {\n if (a === b) {\n hasDuplicate = true;\n return 0;\n }\n var cur, i = 0, aup = a.parentNode, bup = b.parentNode, ap = [a], bp = [b];\n if (!aup || !bup) {\n return a === doc ? -1 : b === doc ? 1 : aup ? -1 : bup ? 1 : sortInput ? indexOf$1.call(sortInput, a) - indexOf$1.call(sortInput, b) : 0;\n } else if (aup === bup) {\n return siblingCheck(a, b);\n }\n cur = a;\n while (cur = cur.parentNode) {\n ap.unshift(cur);\n }\n cur = b;\n while (cur = cur.parentNode) {\n bp.unshift(cur);\n }\n while (ap[i] === bp[i]) {\n i++;\n }\n return i ? siblingCheck(ap[i], bp[i]) : ap[i] === preferredDoc ? -1 : bp[i] === preferredDoc ? 1 : 0;\n };\n return doc;\n };\n Sizzle.matches = function (expr, elements) {\n return Sizzle(expr, null, null, elements);\n };\n Sizzle.matchesSelector = function (elem, expr) {\n if ((elem.ownerDocument || elem) !== document$1) {\n setDocument(elem);\n }\n expr = expr.replace(rattributeQuotes, '=\\'$1\\']');\n if (support.matchesSelector && documentIsHTML && (!rbuggyMatches || !rbuggyMatches.test(expr)) && (!rbuggyQSA || !rbuggyQSA.test(expr))) {\n try {\n var ret = matches.call(elem, expr);\n if (ret || support.disconnectedMatch || elem.document && elem.document.nodeType !== 11) {\n return ret;\n }\n } catch (e) {\n }\n }\n return Sizzle(expr, document$1, null, [elem]).length > 0;\n };\n Sizzle.contains = function (context, elem) {\n if ((context.ownerDocument || context) !== document$1) {\n setDocument(context);\n }\n return contains$1(context, elem);\n };\n Sizzle.attr = function (elem, name$$1) {\n if ((elem.ownerDocument || elem) !== document$1) {\n setDocument(elem);\n }\n var fn = Expr.attrHandle[name$$1.toLowerCase()], val = fn && hasOwn.call(Expr.attrHandle, name$$1.toLowerCase()) ? fn(elem, name$$1, !documentIsHTML) : undefined;\n return val !== undefined ? val : support.attributes || !documentIsHTML ? elem.getAttribute(name$$1) : (val = elem.getAttributeNode(name$$1)) && val.specified ? val.value : null;\n };\n Sizzle.error = function (msg) {\n throw new Error('Syntax error, unrecognized expression: ' + msg);\n };\n Sizzle.uniqueSort = function (results) {\n var elem, duplicates = [], j = 0, i = 0;\n hasDuplicate = !support.detectDuplicates;\n sortInput = !support.sortStable && results.slice(0);\n results.sort(sortOrder);\n if (hasDuplicate) {\n while (elem = results[i++]) {\n if (elem === results[i]) {\n j = duplicates.push(i);\n }\n }\n while (j--) {\n results.splice(duplicates[j], 1);\n }\n }\n sortInput = null;\n return results;\n };\n getText = Sizzle.getText = function (elem) {\n var node, ret = '', i = 0, nodeType = elem.nodeType;\n if (!nodeType) {\n while (node = elem[i++]) {\n ret += getText(node);\n }\n } else if (nodeType === 1 || nodeType === 9 || nodeType === 11) {\n if (typeof elem.textContent === 'string') {\n return elem.textContent;\n } else {\n for (elem = elem.firstChild; elem; elem = elem.nextSibling) {\n ret += getText(elem);\n }\n }\n } else if (nodeType === 3 || nodeType === 4) {\n return elem.nodeValue;\n }\n return ret;\n };\n Expr = Sizzle.selectors = {\n cacheLength: 50,\n createPseudo: markFunction,\n match: matchExpr,\n attrHandle: {},\n find: {},\n relative: {\n '>': {\n dir: 'parentNode',\n first: true\n },\n ' ': { dir: 'parentNode' },\n '+': {\n dir: 'previousSibling',\n first: true\n },\n '~': { dir: 'previousSibling' }\n },\n preFilter: {\n ATTR: function (match) {\n match[1] = match[1].replace(runescape, funescape);\n match[3] = (match[3] || match[4] || match[5] || '').replace(runescape, funescape);\n if (match[2] === '~=') {\n match[3] = ' ' + match[3] + ' ';\n }\n return match.slice(0, 4);\n },\n CHILD: function (match) {\n match[1] = match[1].toLowerCase();\n if (match[1].slice(0, 3) === 'nth') {\n if (!match[3]) {\n Sizzle.error(match[0]);\n }\n match[4] = +(match[4] ? match[5] + (match[6] || 1) : 2 * (match[3] === 'even' || match[3] === 'odd'));\n match[5] = +(match[7] + match[8] || match[3] === 'odd');\n } else if (match[3]) {\n Sizzle.error(match[0]);\n }\n return match;\n },\n PSEUDO: function (match) {\n var excess, unquoted = !match[6] && match[2];\n if (matchExpr.CHILD.test(match[0])) {\n return null;\n }\n if (match[3]) {\n match[2] = match[4] || match[5] || '';\n } else if (unquoted && rpseudo.test(unquoted) && (excess = tokenize(unquoted, true)) && (excess = unquoted.indexOf(')', unquoted.length - excess) - unquoted.length)) {\n match[0] = match[0].slice(0, excess);\n match[2] = unquoted.slice(0, excess);\n }\n return match.slice(0, 3);\n }\n },\n filter: {\n TAG: function (nodeNameSelector) {\n var nodeName = nodeNameSelector.replace(runescape, funescape).toLowerCase();\n return nodeNameSelector === '*' ? function () {\n return true;\n } : function (elem) {\n return elem.nodeName && elem.nodeName.toLowerCase() === nodeName;\n };\n },\n CLASS: function (className) {\n var pattern = classCache[className + ' '];\n return pattern || (pattern = new RegExp('(^|' + whitespace + ')' + className + '(' + whitespace + '|$)')) && classCache(className, function (elem) {\n return pattern.test(typeof elem.className === 'string' && elem.className || typeof elem.getAttribute !== strundefined && elem.getAttribute('class') || '');\n });\n },\n ATTR: function (name$$1, operator, check) {\n return function (elem) {\n var result = Sizzle.attr(elem, name$$1);\n if (result == null) {\n return operator === '!=';\n }\n if (!operator) {\n return true;\n }\n result += '';\n return operator === '=' ? result === check : operator === '!=' ? result !== check : operator === '^=' ? check && result.indexOf(check) === 0 : operator === '*=' ? check && result.indexOf(check) > -1 : operator === '$=' ? check && result.slice(-check.length) === check : operator === '~=' ? (' ' + result + ' ').indexOf(check) > -1 : operator === '|=' ? result === check || result.slice(0, check.length + 1) === check + '-' : false;\n };\n },\n CHILD: function (type, what, argument, first, last) {\n var simple = type.slice(0, 3) !== 'nth', forward = type.slice(-4) !== 'last', ofType = what === 'of-type';\n return first === 1 && last === 0 ? function (elem) {\n return !!elem.parentNode;\n } : function (elem, context, xml) {\n var cache, outerCache, node, diff, nodeIndex, start, dir = simple !== forward ? 'nextSibling' : 'previousSibling', parent$$1 = elem.parentNode, name$$1 = ofType && elem.nodeName.toLowerCase(), useCache = !xml && !ofType;\n if (parent$$1) {\n if (simple) {\n while (dir) {\n node = elem;\n while (node = node[dir]) {\n if (ofType ? node.nodeName.toLowerCase() === name$$1 : node.nodeType === 1) {\n return false;\n }\n }\n start = dir = type === 'only' && !start && 'nextSibling';\n }\n return true;\n }\n start = [forward ? parent$$1.firstChild : parent$$1.lastChild];\n if (forward && useCache) {\n outerCache = parent$$1[expando] || (parent$$1[expando] = {});\n cache = outerCache[type] || [];\n nodeIndex = cache[0] === dirruns && cache[1];\n diff = cache[0] === dirruns && cache[2];\n node = nodeIndex && parent$$1.childNodes[nodeIndex];\n while (node = ++nodeIndex && node && node[dir] || (diff = nodeIndex = 0) || start.pop()) {\n if (node.nodeType === 1 && ++diff && node === elem) {\n outerCache[type] = [\n dirruns,\n nodeIndex,\n diff\n ];\n break;\n }\n }\n } else if (useCache && (cache = (elem[expando] || (elem[expando] = {}))[type]) && cache[0] === dirruns) {\n diff = cache[1];\n } else {\n while (node = ++nodeIndex && node && node[dir] || (diff = nodeIndex = 0) || start.pop()) {\n if ((ofType ? node.nodeName.toLowerCase() === name$$1 : node.nodeType === 1) && ++diff) {\n if (useCache) {\n (node[expando] || (node[expando] = {}))[type] = [\n dirruns,\n diff\n ];\n }\n if (node === elem) {\n break;\n }\n }\n }\n }\n diff -= last;\n return diff === first || diff % first === 0 && diff / first >= 0;\n }\n };\n },\n PSEUDO: function (pseudo, argument) {\n var args, fn = Expr.pseudos[pseudo] || Expr.setFilters[pseudo.toLowerCase()] || Sizzle.error('unsupported pseudo: ' + pseudo);\n if (fn[expando]) {\n return fn(argument);\n }\n if (fn.length > 1) {\n args = [\n pseudo,\n pseudo,\n '',\n argument\n ];\n return Expr.setFilters.hasOwnProperty(pseudo.toLowerCase()) ? markFunction(function (seed, matches) {\n var idx, matched = fn(seed, argument), i = matched.length;\n while (i--) {\n idx = indexOf$1.call(seed, matched[i]);\n seed[idx] = !(matches[idx] = matched[i]);\n }\n }) : function (elem) {\n return fn(elem, 0, args);\n };\n }\n return fn;\n }\n },\n pseudos: {\n not: markFunction(function (selector) {\n var input = [], results = [], matcher = compile(selector.replace(rtrim, '$1'));\n return matcher[expando] ? markFunction(function (seed, matches, context, xml) {\n var elem, unmatched = matcher(seed, null, xml, []), i = seed.length;\n while (i--) {\n if (elem = unmatched[i]) {\n seed[i] = !(matches[i] = elem);\n }\n }\n }) : function (elem, context, xml) {\n input[0] = elem;\n matcher(input, null, xml, results);\n return !results.pop();\n };\n }),\n has: markFunction(function (selector) {\n return function (elem) {\n return Sizzle(selector, elem).length > 0;\n };\n }),\n contains: markFunction(function (text) {\n text = text.replace(runescape, funescape);\n return function (elem) {\n return (elem.textContent || elem.innerText || getText(elem)).indexOf(text) > -1;\n };\n }),\n lang: markFunction(function (lang) {\n if (!ridentifier.test(lang || '')) {\n Sizzle.error('unsupported lang: ' + lang);\n }\n lang = lang.replace(runescape, funescape).toLowerCase();\n return function (elem) {\n var elemLang;\n do {\n if (elemLang = documentIsHTML ? elem.lang : elem.getAttribute('xml:lang') || elem.getAttribute('lang')) {\n elemLang = elemLang.toLowerCase();\n return elemLang === lang || elemLang.indexOf(lang + '-') === 0;\n }\n } while ((elem = elem.parentNode) && elem.nodeType === 1);\n return false;\n };\n }),\n target: function (elem) {\n var hash = window.location && window.location.hash;\n return hash && hash.slice(1) === elem.id;\n },\n root: function (elem) {\n return elem === docElem;\n },\n focus: function (elem) {\n return elem === document$1.activeElement && (!document$1.hasFocus || document$1.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex);\n },\n enabled: function (elem) {\n return elem.disabled === false;\n },\n disabled: function (elem) {\n return elem.disabled === true;\n },\n checked: function (elem) {\n var nodeName = elem.nodeName.toLowerCase();\n return nodeName === 'input' && !!elem.checked || nodeName === 'option' && !!elem.selected;\n },\n selected: function (elem) {\n if (elem.parentNode) {\n elem.parentNode.selectedIndex;\n }\n return elem.selected === true;\n },\n empty: function (elem) {\n for (elem = elem.firstChild; elem; elem = elem.nextSibling) {\n if (elem.nodeType < 6) {\n return false;\n }\n }\n return true;\n },\n parent: function (elem) {\n return !Expr.pseudos.empty(elem);\n },\n header: function (elem) {\n return rheader.test(elem.nodeName);\n },\n input: function (elem) {\n return rinputs.test(elem.nodeName);\n },\n button: function (elem) {\n var name$$1 = elem.nodeName.toLowerCase();\n return name$$1 === 'input' && elem.type === 'button' || name$$1 === 'button';\n },\n text: function (elem) {\n var attr;\n return elem.nodeName.toLowerCase() === 'input' && elem.type === 'text' && ((attr = elem.getAttribute('type')) == null || attr.toLowerCase() === 'text');\n },\n first: createPositionalPseudo(function () {\n return [0];\n }),\n last: createPositionalPseudo(function (matchIndexes, length$$1) {\n return [length$$1 - 1];\n }),\n eq: createPositionalPseudo(function (matchIndexes, length$$1, argument) {\n return [argument < 0 ? argument + length$$1 : argument];\n }),\n even: createPositionalPseudo(function (matchIndexes, length$$1) {\n var i = 0;\n for (; i < length$$1; i += 2) {\n matchIndexes.push(i);\n }\n return matchIndexes;\n }),\n odd: createPositionalPseudo(function (matchIndexes, length$$1) {\n var i = 1;\n for (; i < length$$1; i += 2) {\n matchIndexes.push(i);\n }\n return matchIndexes;\n }),\n lt: createPositionalPseudo(function (matchIndexes, length$$1, argument) {\n var i = argument < 0 ? argument + length$$1 : argument;\n for (; --i >= 0;) {\n matchIndexes.push(i);\n }\n return matchIndexes;\n }),\n gt: createPositionalPseudo(function (matchIndexes, length$$1, argument) {\n var i = argument < 0 ? argument + length$$1 : argument;\n for (; ++i < length$$1;) {\n matchIndexes.push(i);\n }\n return matchIndexes;\n })\n }\n };\n Expr.pseudos.nth = Expr.pseudos.eq;\n for (i in {\n radio: true,\n checkbox: true,\n file: true,\n password: true,\n image: true\n }) {\n Expr.pseudos[i] = createInputPseudo(i);\n }\n for (i in {\n submit: true,\n reset: true\n }) {\n Expr.pseudos[i] = createButtonPseudo(i);\n }\n function setFilters() {\n }\n setFilters.prototype = Expr.filters = Expr.pseudos;\n Expr.setFilters = new setFilters();\n tokenize = Sizzle.tokenize = function (selector, parseOnly) {\n var matched, match, tokens, type, soFar, groups, preFilters, cached = tokenCache[selector + ' '];\n if (cached) {\n return parseOnly ? 0 : cached.slice(0);\n }\n soFar = selector;\n groups = [];\n preFilters = Expr.preFilter;\n while (soFar) {\n if (!matched || (match = rcomma.exec(soFar))) {\n if (match) {\n soFar = soFar.slice(match[0].length) || soFar;\n }\n groups.push(tokens = []);\n }\n matched = false;\n if (match = rcombinators.exec(soFar)) {\n matched = match.shift();\n tokens.push({\n value: matched,\n type: match[0].replace(rtrim, ' ')\n });\n soFar = soFar.slice(matched.length);\n }\n for (type in Expr.filter) {\n if ((match = matchExpr[type].exec(soFar)) && (!preFilters[type] || (match = preFilters[type](match)))) {\n matched = match.shift();\n tokens.push({\n value: matched,\n type: type,\n matches: match\n });\n soFar = soFar.slice(matched.length);\n }\n }\n if (!matched) {\n break;\n }\n }\n return parseOnly ? soFar.length : soFar ? Sizzle.error(selector) : tokenCache(selector, groups).slice(0);\n };\n function toSelector(tokens) {\n var i = 0, len = tokens.length, selector = '';\n for (; i < len; i++) {\n selector += tokens[i].value;\n }\n return selector;\n }\n function addCombinator(matcher, combinator, base) {\n var dir = combinator.dir, checkNonElements = base && dir === 'parentNode', doneName = done++;\n return combinator.first ? function (elem, context, xml) {\n while (elem = elem[dir]) {\n if (elem.nodeType === 1 || checkNonElements) {\n return matcher(elem, context, xml);\n }\n }\n } : function (elem, context, xml) {\n var oldCache, outerCache, newCache = [\n dirruns,\n doneName\n ];\n if (xml) {\n while (elem = elem[dir]) {\n if (elem.nodeType === 1 || checkNonElements) {\n if (matcher(elem, context, xml)) {\n return true;\n }\n }\n }\n } else {\n while (elem = elem[dir]) {\n if (elem.nodeType === 1 || checkNonElements) {\n outerCache = elem[expando] || (elem[expando] = {});\n if ((oldCache = outerCache[dir]) && oldCache[0] === dirruns && oldCache[1] === doneName) {\n return newCache[2] = oldCache[2];\n } else {\n outerCache[dir] = newCache;\n if (newCache[2] = matcher(elem, context, xml)) {\n return true;\n }\n }\n }\n }\n }\n };\n }\n function elementMatcher(matchers) {\n return matchers.length > 1 ? function (elem, context, xml) {\n var i = matchers.length;\n while (i--) {\n if (!matchers[i](elem, context, xml)) {\n return false;\n }\n }\n return true;\n } : matchers[0];\n }\n function multipleContexts(selector, contexts, results) {\n var i = 0, len = contexts.length;\n for (; i < len; i++) {\n Sizzle(selector, contexts[i], results);\n }\n return results;\n }\n function condense(unmatched, map, filter, context, xml) {\n var elem, newUnmatched = [], i = 0, len = unmatched.length, mapped = map != null;\n for (; i < len; i++) {\n if (elem = unmatched[i]) {\n if (!filter || filter(elem, context, xml)) {\n newUnmatched.push(elem);\n if (mapped) {\n map.push(i);\n }\n }\n }\n }\n return newUnmatched;\n }\n function setMatcher(preFilter, selector, matcher, postFilter, postFinder, postSelector) {\n if (postFilter && !postFilter[expando]) {\n postFilter = setMatcher(postFilter);\n }\n if (postFinder && !postFinder[expando]) {\n postFinder = setMatcher(postFinder, postSelector);\n }\n return markFunction(function (seed, results, context, xml) {\n var temp, i, elem, preMap = [], postMap = [], preexisting = results.length, elems = seed || multipleContexts(selector || '*', context.nodeType ? [context] : context, []), matcherIn = preFilter && (seed || !selector) ? condense(elems, preMap, preFilter, context, xml) : elems, matcherOut = matcher ? postFinder || (seed ? preFilter : preexisting || postFilter) ? [] : results : matcherIn;\n if (matcher) {\n matcher(matcherIn, matcherOut, context, xml);\n }\n if (postFilter) {\n temp = condense(matcherOut, postMap);\n postFilter(temp, [], context, xml);\n i = temp.length;\n while (i--) {\n if (elem = temp[i]) {\n matcherOut[postMap[i]] = !(matcherIn[postMap[i]] = elem);\n }\n }\n }\n if (seed) {\n if (postFinder || preFilter) {\n if (postFinder) {\n temp = [];\n i = matcherOut.length;\n while (i--) {\n if (elem = matcherOut[i]) {\n temp.push(matcherIn[i] = elem);\n }\n }\n postFinder(null, matcherOut = [], temp, xml);\n }\n i = matcherOut.length;\n while (i--) {\n if ((elem = matcherOut[i]) && (temp = postFinder ? indexOf$1.call(seed, elem) : preMap[i]) > -1) {\n seed[temp] = !(results[temp] = elem);\n }\n }\n }\n } else {\n matcherOut = condense(matcherOut === results ? matcherOut.splice(preexisting, matcherOut.length) : matcherOut);\n if (postFinder) {\n postFinder(null, results, matcherOut, xml);\n } else {\n push$1.apply(results, matcherOut);\n }\n }\n });\n }\n function matcherFromTokens(tokens) {\n var checkContext, matcher, j, len = tokens.length, leadingRelative = Expr.relative[tokens[0].type], implicitRelative = leadingRelative || Expr.relative[' '], i = leadingRelative ? 1 : 0, matchContext = addCombinator(function (elem) {\n return elem === checkContext;\n }, implicitRelative, true), matchAnyContext = addCombinator(function (elem) {\n return indexOf$1.call(checkContext, elem) > -1;\n }, implicitRelative, true), matchers = [function (elem, context, xml) {\n return !leadingRelative && (xml || context !== outermostContext) || ((checkContext = context).nodeType ? matchContext(elem, context, xml) : matchAnyContext(elem, context, xml));\n }];\n for (; i < len; i++) {\n if (matcher = Expr.relative[tokens[i].type]) {\n matchers = [addCombinator(elementMatcher(matchers), matcher)];\n } else {\n matcher = Expr.filter[tokens[i].type].apply(null, tokens[i].matches);\n if (matcher[expando]) {\n j = ++i;\n for (; j < len; j++) {\n if (Expr.relative[tokens[j].type]) {\n break;\n }\n }\n return setMatcher(i > 1 && elementMatcher(matchers), i > 1 && toSelector(tokens.slice(0, i - 1).concat({ value: tokens[i - 2].type === ' ' ? '*' : '' })).replace(rtrim, '$1'), matcher, i < j && matcherFromTokens(tokens.slice(i, j)), j < len && matcherFromTokens(tokens = tokens.slice(j)), j < len && toSelector(tokens));\n }\n matchers.push(matcher);\n }\n }\n return elementMatcher(matchers);\n }\n function matcherFromGroupMatchers(elementMatchers, setMatchers) {\n var bySet = setMatchers.length > 0, byElement = elementMatchers.length > 0, superMatcher = function (seed, context, xml, results, outermost) {\n var elem, j, matcher, matchedCount = 0, i = '0', unmatched = seed && [], setMatched = [], contextBackup = outermostContext, elems = seed || byElement && Expr.find.TAG('*', outermost), dirrunsUnique = dirruns += contextBackup == null ? 1 : Math.random() || 0.1, len = elems.length;\n if (outermost) {\n outermostContext = context !== document$1 && context;\n }\n for (; i !== len && (elem = elems[i]) != null; i++) {\n if (byElement && elem) {\n j = 0;\n while (matcher = elementMatchers[j++]) {\n if (matcher(elem, context, xml)) {\n results.push(elem);\n break;\n }\n }\n if (outermost) {\n dirruns = dirrunsUnique;\n }\n }\n if (bySet) {\n if (elem = !matcher && elem) {\n matchedCount--;\n }\n if (seed) {\n unmatched.push(elem);\n }\n }\n }\n matchedCount += i;\n if (bySet && i !== matchedCount) {\n j = 0;\n while (matcher = setMatchers[j++]) {\n matcher(unmatched, setMatched, context, xml);\n }\n if (seed) {\n if (matchedCount > 0) {\n while (i--) {\n if (!(unmatched[i] || setMatched[i])) {\n setMatched[i] = pop.call(results);\n }\n }\n }\n setMatched = condense(setMatched);\n }\n push$1.apply(results, setMatched);\n if (outermost && !seed && setMatched.length > 0 && matchedCount + setMatchers.length > 1) {\n Sizzle.uniqueSort(results);\n }\n }\n if (outermost) {\n dirruns = dirrunsUnique;\n outermostContext = contextBackup;\n }\n return unmatched;\n };\n return bySet ? markFunction(superMatcher) : superMatcher;\n }\n compile = Sizzle.compile = function (selector, match) {\n var i, setMatchers = [], elementMatchers = [], cached = compilerCache[selector + ' '];\n if (!cached) {\n if (!match) {\n match = tokenize(selector);\n }\n i = match.length;\n while (i--) {\n cached = matcherFromTokens(match[i]);\n if (cached[expando]) {\n setMatchers.push(cached);\n } else {\n elementMatchers.push(cached);\n }\n }\n cached = compilerCache(selector, matcherFromGroupMatchers(elementMatchers, setMatchers));\n cached.selector = selector;\n }\n return cached;\n };\n select = Sizzle.select = function (selector, context, results, seed) {\n var i, tokens, token, type, find, compiled = typeof selector === 'function' && selector, match = !seed && tokenize(selector = compiled.selector || selector);\n results = results || [];\n if (match.length === 1) {\n tokens = match[0] = match[0].slice(0);\n if (tokens.length > 2 && (token = tokens[0]).type === 'ID' && support.getById && context.nodeType === 9 && documentIsHTML && Expr.relative[tokens[1].type]) {\n context = (Expr.find.ID(token.matches[0].replace(runescape, funescape), context) || [])[0];\n if (!context) {\n return results;\n } else if (compiled) {\n context = context.parentNode;\n }\n selector = selector.slice(tokens.shift().value.length);\n }\n i = matchExpr.needsContext.test(selector) ? 0 : tokens.length;\n while (i--) {\n token = tokens[i];\n if (Expr.relative[type = token.type]) {\n break;\n }\n if (find = Expr.find[type]) {\n if (seed = find(token.matches[0].replace(runescape, funescape), rsibling.test(tokens[0].type) && testContext(context.parentNode) || context)) {\n tokens.splice(i, 1);\n selector = seed.length && toSelector(tokens);\n if (!selector) {\n push$1.apply(results, seed);\n return results;\n }\n break;\n }\n }\n }\n }\n (compiled || compile(selector, match))(seed, context, !documentIsHTML, results, rsibling.test(selector) && testContext(context.parentNode) || context);\n return results;\n };\n support.sortStable = expando.split('').sort(sortOrder).join('') === expando;\n support.detectDuplicates = !!hasDuplicate;\n setDocument();\n support.sortDetached = true;\n\n var isArray$1 = Array.isArray;\n var toArray = function (obj) {\n var array = obj, i, l;\n if (!isArray$1(obj)) {\n array = [];\n for (i = 0, l = obj.length; i < l; i++) {\n array[i] = obj[i];\n }\n }\n return array;\n };\n var each$1 = function (o, cb, s) {\n var n, l;\n if (!o) {\n return 0;\n }\n s = s || o;\n if (o.length !== undefined) {\n for (n = 0, l = o.length; n < l; n++) {\n if (cb.call(s, o[n], n, o) === false) {\n return 0;\n }\n }\n } else {\n for (n in o) {\n if (o.hasOwnProperty(n)) {\n if (cb.call(s, o[n], n, o) === false) {\n return 0;\n }\n }\n }\n }\n return 1;\n };\n var map$1 = function (array, callback) {\n var out = [];\n each$1(array, function (item, index) {\n out.push(callback(item, index, array));\n });\n return out;\n };\n var filter$1 = function (a, f) {\n var o = [];\n each$1(a, function (v, index) {\n if (!f || f(v, index, a)) {\n o.push(v);\n }\n });\n return o;\n };\n var indexOf$2 = function (a, v) {\n var i, l;\n if (a) {\n for (i = 0, l = a.length; i < l; i++) {\n if (a[i] === v) {\n return i;\n }\n }\n }\n return -1;\n };\n var reduce = function (collection, iteratee, accumulator, thisArg) {\n var i = 0;\n if (arguments.length < 3) {\n accumulator = collection[0];\n }\n for (; i < collection.length; i++) {\n accumulator = iteratee.call(thisArg, accumulator, collection[i], i);\n }\n return accumulator;\n };\n var findIndex$1 = function (array, predicate, thisArg) {\n var i, l;\n for (i = 0, l = array.length; i < l; i++) {\n if (predicate.call(thisArg, array[i], i, array)) {\n return i;\n }\n }\n return -1;\n };\n var find$1 = function (array, predicate, thisArg) {\n var idx = findIndex$1(array, predicate, thisArg);\n if (idx !== -1) {\n return array[idx];\n }\n return undefined;\n };\n var last$1 = function (collection) {\n return collection[collection.length - 1];\n };\n var $_9g1fibmjkmcwkbu = {\n isArray: isArray$1,\n toArray: toArray,\n each: each$1,\n map: map$1,\n filter: filter$1,\n indexOf: indexOf$2,\n reduce: reduce,\n findIndex: findIndex$1,\n find: find$1,\n last: last$1\n };\n\n var whiteSpaceRegExp = /^\\s*|\\s*$/g;\n var trim = function (str) {\n return str === null || str === undefined ? '' : ('' + str).replace(whiteSpaceRegExp, '');\n };\n var is = function (obj, type) {\n if (!type) {\n return obj !== undefined;\n }\n if (type === 'array' && $_9g1fibmjkmcwkbu.isArray(obj)) {\n return true;\n }\n return typeof obj === type;\n };\n var makeMap = function (items, delim, map) {\n var i;\n items = items || [];\n delim = delim || ',';\n if (typeof items === 'string') {\n items = items.split(delim);\n }\n map = map || {};\n i = items.length;\n while (i--) {\n map[items[i]] = {};\n }\n return map;\n };\n var hasOwnProperty = function (obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n };\n var create = function (s, p, root) {\n var self$$1 = this;\n var sp, ns, cn, scn, c, de = 0;\n s = /^((static) )?([\\w.]+)(:([\\w.]+))?/.exec(s);\n cn = s[3].match(/(^|\\.)(\\w+)$/i)[2];\n ns = self$$1.createNS(s[3].replace(/\\.\\w+$/, ''), root);\n if (ns[cn]) {\n return;\n }\n if (s[2] === 'static') {\n ns[cn] = p;\n if (this.onCreate) {\n this.onCreate(s[2], s[3], ns[cn]);\n }\n return;\n }\n if (!p[cn]) {\n p[cn] = function () {\n };\n de = 1;\n }\n ns[cn] = p[cn];\n self$$1.extend(ns[cn].prototype, p);\n if (s[5]) {\n sp = self$$1.resolve(s[5]).prototype;\n scn = s[5].match(/\\.(\\w+)$/i)[1];\n c = ns[cn];\n if (de) {\n ns[cn] = function () {\n return sp[scn].apply(this, arguments);\n };\n } else {\n ns[cn] = function () {\n this.parent = sp[scn];\n return c.apply(this, arguments);\n };\n }\n ns[cn].prototype[cn] = ns[cn];\n self$$1.each(sp, function (f, n) {\n ns[cn].prototype[n] = sp[n];\n });\n self$$1.each(p, function (f, n) {\n if (sp[n]) {\n ns[cn].prototype[n] = function () {\n this.parent = sp[n];\n return f.apply(this, arguments);\n };\n } else {\n if (n !== cn) {\n ns[cn].prototype[n] = f;\n }\n }\n });\n }\n self$$1.each(p.static, function (f, n) {\n ns[cn][n] = f;\n });\n };\n var extend = function (obj, ext) {\n var x = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n x[_i - 2] = arguments[_i];\n }\n var i, l, name$$1;\n var args = arguments;\n var value;\n for (i = 1, l = args.length; i < l; i++) {\n ext = args[i];\n for (name$$1 in ext) {\n if (ext.hasOwnProperty(name$$1)) {\n value = ext[name$$1];\n if (value !== undefined) {\n obj[name$$1] = value;\n }\n }\n }\n }\n return obj;\n };\n var walk = function (o, f, n, s) {\n s = s || this;\n if (o) {\n if (n) {\n o = o[n];\n }\n $_9g1fibmjkmcwkbu.each(o, function (o, i) {\n if (f.call(s, o, i, n) === false) {\n return false;\n }\n walk(o, f, n, s);\n });\n }\n };\n var createNS = function (n, o) {\n var i, v;\n o = o || window;\n n = n.split('.');\n for (i = 0; i < n.length; i++) {\n v = n[i];\n if (!o[v]) {\n o[v] = {};\n }\n o = o[v];\n }\n return o;\n };\n var resolve$1 = function (n, o) {\n var i, l;\n o = o || window;\n n = n.split('.');\n for (i = 0, l = n.length; i < l; i++) {\n o = o[n[i]];\n if (!o) {\n break;\n }\n }\n return o;\n };\n var explode = function (s, d) {\n if (!s || is(s, 'array')) {\n return s;\n }\n return $_9g1fibmjkmcwkbu.map(s.split(d || ','), trim);\n };\n var _addCacheSuffix = function (url) {\n var cacheSuffix = $_cvvl9iajkmcwk25.cacheSuffix;\n if (cacheSuffix) {\n url += (url.indexOf('?') === -1 ? '?' : '&') + cacheSuffix;\n }\n return url;\n };\n var $_4ujg4tljkmcwkbk = {\n trim: trim,\n isArray: $_9g1fibmjkmcwkbu.isArray,\n is: is,\n toArray: $_9g1fibmjkmcwkbu.toArray,\n makeMap: makeMap,\n each: $_9g1fibmjkmcwkbu.each,\n map: $_9g1fibmjkmcwkbu.map,\n grep: $_9g1fibmjkmcwkbu.filter,\n inArray: $_9g1fibmjkmcwkbu.indexOf,\n hasOwn: hasOwnProperty,\n extend: extend,\n create: create,\n walk: walk,\n createNS: createNS,\n resolve: resolve$1,\n explode: explode,\n _addCacheSuffix: _addCacheSuffix\n };\n\n var doc = document;\n var push$2 = Array.prototype.push;\n var slice$2 = Array.prototype.slice;\n var rquickExpr$1 = /^(?:[^#<]*(<[\\w\\W]+>)[^>]*$|#([\\w\\-]*)$)/;\n var Event$$1 = EventUtils.Event;\n var skipUniques = $_4ujg4tljkmcwkbk.makeMap('children,contents,next,prev');\n var isDefined = function (obj) {\n return typeof obj !== 'undefined';\n };\n var isString$1 = function (obj) {\n return typeof obj === 'string';\n };\n var isWindow = function (obj) {\n return obj && obj === obj.window;\n };\n var createFragment = function (html, fragDoc) {\n var frag, node, container;\n fragDoc = fragDoc || doc;\n container = fragDoc.createElement('div');\n frag = fragDoc.createDocumentFragment();\n container.innerHTML = html;\n while (node = container.firstChild) {\n frag.appendChild(node);\n }\n return frag;\n };\n var domManipulate = function (targetNodes, sourceItem, callback, reverse) {\n var i;\n if (isString$1(sourceItem)) {\n sourceItem = createFragment(sourceItem, getElementDocument(targetNodes[0]));\n } else if (sourceItem.length && !sourceItem.nodeType) {\n sourceItem = DomQuery.makeArray(sourceItem);\n if (reverse) {\n for (i = sourceItem.length - 1; i >= 0; i--) {\n domManipulate(targetNodes, sourceItem[i], callback, reverse);\n }\n } else {\n for (i = 0; i < sourceItem.length; i++) {\n domManipulate(targetNodes, sourceItem[i], callback, reverse);\n }\n }\n return targetNodes;\n }\n if (sourceItem.nodeType) {\n i = targetNodes.length;\n while (i--) {\n callback.call(targetNodes[i], sourceItem);\n }\n }\n return targetNodes;\n };\n var hasClass = function (node, className) {\n return node && className && (' ' + node.className + ' ').indexOf(' ' + className + ' ') !== -1;\n };\n var wrap = function (elements, wrapper, all) {\n var lastParent, newWrapper;\n wrapper = DomQuery(wrapper)[0];\n elements.each(function () {\n var self$$1 = this;\n if (!all || lastParent !== self$$1.parentNode) {\n lastParent = self$$1.parentNode;\n newWrapper = wrapper.cloneNode(false);\n self$$1.parentNode.insertBefore(newWrapper, self$$1);\n newWrapper.appendChild(self$$1);\n } else {\n newWrapper.appendChild(self$$1);\n }\n });\n return elements;\n };\n var numericCssMap = $_4ujg4tljkmcwkbk.makeMap('fillOpacity fontWeight lineHeight opacity orphans widows zIndex zoom', ' ');\n var booleanMap = $_4ujg4tljkmcwkbk.makeMap('checked compact declare defer disabled ismap multiple nohref noshade nowrap readonly selected', ' ');\n var propFix = {\n for: 'htmlFor',\n class: 'className',\n readonly: 'readOnly'\n };\n var cssFix = { float: 'cssFloat' };\n var attrHooks = {};\n var cssHooks = {};\n var DomQuery = function (selector, context) {\n return new DomQuery.fn.init(selector, context);\n };\n var inArray = function (item, array) {\n var i;\n if (array.indexOf) {\n return array.indexOf(item);\n }\n i = array.length;\n while (i--) {\n if (array[i] === item) {\n return i;\n }\n }\n return -1;\n };\n var whiteSpaceRegExp$1 = /^\\s*|\\s*$/g;\n var trim$1 = function (str) {\n return str === null || str === undefined ? '' : ('' + str).replace(whiteSpaceRegExp$1, '');\n };\n var each$2 = function (obj, callback) {\n var length$$1, key, i, value;\n if (obj) {\n length$$1 = obj.length;\n if (length$$1 === undefined) {\n for (key in obj) {\n if (obj.hasOwnProperty(key)) {\n value = obj[key];\n if (callback.call(value, key, value) === false) {\n break;\n }\n }\n }\n } else {\n for (i = 0; i < length$$1; i++) {\n value = obj[i];\n if (callback.call(value, i, value) === false) {\n break;\n }\n }\n }\n }\n return obj;\n };\n var grep = function (array, callback) {\n var out = [];\n each$2(array, function (i, item) {\n if (callback(item, i)) {\n out.push(item);\n }\n });\n return out;\n };\n var getElementDocument = function (element) {\n if (!element) {\n return doc;\n }\n if (element.nodeType === 9) {\n return element;\n }\n return element.ownerDocument;\n };\n DomQuery.fn = DomQuery.prototype = {\n constructor: DomQuery,\n selector: '',\n context: null,\n length: 0,\n init: function (selector, context) {\n var self$$1 = this;\n var match, node;\n if (!selector) {\n return self$$1;\n }\n if (selector.nodeType) {\n self$$1.context = self$$1[0] = selector;\n self$$1.length = 1;\n return self$$1;\n }\n if (context && context.nodeType) {\n self$$1.context = context;\n } else {\n if (context) {\n return DomQuery(selector).attr(context);\n }\n self$$1.context = context = document;\n }\n if (isString$1(selector)) {\n self$$1.selector = selector;\n if (selector.charAt(0) === '<' && selector.charAt(selector.length - 1) === '>' && selector.length >= 3) {\n match = [\n null,\n selector,\n null\n ];\n } else {\n match = rquickExpr$1.exec(selector);\n }\n if (match) {\n if (match[1]) {\n node = createFragment(selector, getElementDocument(context)).firstChild;\n while (node) {\n push$2.call(self$$1, node);\n node = node.nextSibling;\n }\n } else {\n node = getElementDocument(context).getElementById(match[2]);\n if (!node) {\n return self$$1;\n }\n if (node.id !== match[2]) {\n return self$$1.find(selector);\n }\n self$$1.length = 1;\n self$$1[0] = node;\n }\n } else {\n return DomQuery(context).find(selector);\n }\n } else {\n this.add(selector, false);\n }\n return self$$1;\n },\n toArray: function () {\n return $_4ujg4tljkmcwkbk.toArray(this);\n },\n add: function (items, sort) {\n var self$$1 = this;\n var nodes, i;\n if (isString$1(items)) {\n return self$$1.add(DomQuery(items));\n }\n if (sort !== false) {\n nodes = DomQuery.unique(self$$1.toArray().concat(DomQuery.makeArray(items)));\n self$$1.length = nodes.length;\n for (i = 0; i < nodes.length; i++) {\n self$$1[i] = nodes[i];\n }\n } else {\n push$2.apply(self$$1, DomQuery.makeArray(items));\n }\n return self$$1;\n },\n attr: function (name$$1, value) {\n var self$$1 = this;\n var hook;\n if (typeof name$$1 === 'object') {\n each$2(name$$1, function (name$$1, value) {\n self$$1.attr(name$$1, value);\n });\n } else if (isDefined(value)) {\n this.each(function () {\n var hook;\n if (this.nodeType === 1) {\n hook = attrHooks[name$$1];\n if (hook && hook.set) {\n hook.set(this, value);\n return;\n }\n if (value === null) {\n this.removeAttribute(name$$1, 2);\n } else {\n this.setAttribute(name$$1, value, 2);\n }\n }\n });\n } else {\n if (self$$1[0] && self$$1[0].nodeType === 1) {\n hook = attrHooks[name$$1];\n if (hook && hook.get) {\n return hook.get(self$$1[0], name$$1);\n }\n if (booleanMap[name$$1]) {\n return self$$1.prop(name$$1) ? name$$1 : undefined;\n }\n value = self$$1[0].getAttribute(name$$1, 2);\n if (value === null) {\n value = undefined;\n }\n }\n return value;\n }\n return self$$1;\n },\n removeAttr: function (name$$1) {\n return this.attr(name$$1, null);\n },\n prop: function (name$$1, value) {\n var self$$1 = this;\n name$$1 = propFix[name$$1] || name$$1;\n if (typeof name$$1 === 'object') {\n each$2(name$$1, function (name$$1, value) {\n self$$1.prop(name$$1, value);\n });\n } else if (isDefined(value)) {\n this.each(function () {\n if (this.nodeType === 1) {\n this[name$$1] = value;\n }\n });\n } else {\n if (self$$1[0] && self$$1[0].nodeType && name$$1 in self$$1[0]) {\n return self$$1[0][name$$1];\n }\n return value;\n }\n return self$$1;\n },\n css: function (name$$1, value) {\n var self$$1 = this;\n var elm, hook;\n var camel = function (name$$1) {\n return name$$1.replace(/-(\\D)/g, function (a, b) {\n return b.toUpperCase();\n });\n };\n var dashed = function (name$$1) {\n return name$$1.replace(/[A-Z]/g, function (a) {\n return '-' + a;\n });\n };\n if (typeof name$$1 === 'object') {\n each$2(name$$1, function (name$$1, value) {\n self$$1.css(name$$1, value);\n });\n } else {\n if (isDefined(value)) {\n name$$1 = camel(name$$1);\n if (typeof value === 'number' && !numericCssMap[name$$1]) {\n value = value.toString() + 'px';\n }\n self$$1.each(function () {\n var style = this.style;\n hook = cssHooks[name$$1];\n if (hook && hook.set) {\n hook.set(this, value);\n return;\n }\n try {\n this.style[cssFix[name$$1] || name$$1] = value;\n } catch (ex) {\n }\n if (value === null || value === '') {\n if (style.removeProperty) {\n style.removeProperty(dashed(name$$1));\n } else {\n style.removeAttribute(name$$1);\n }\n }\n });\n } else {\n elm = self$$1[0];\n hook = cssHooks[name$$1];\n if (hook && hook.get) {\n return hook.get(elm);\n }\n if (elm.ownerDocument.defaultView) {\n try {\n return elm.ownerDocument.defaultView.getComputedStyle(elm, null).getPropertyValue(dashed(name$$1));\n } catch (ex) {\n return undefined;\n }\n } else if (elm.currentStyle) {\n return elm.currentStyle[camel(name$$1)];\n } else {\n return '';\n }\n }\n }\n return self$$1;\n },\n remove: function () {\n var self$$1 = this;\n var node, i = this.length;\n while (i--) {\n node = self$$1[i];\n Event$$1.clean(node);\n if (node.parentNode) {\n node.parentNode.removeChild(node);\n }\n }\n return this;\n },\n empty: function () {\n var self$$1 = this;\n var node, i = this.length;\n while (i--) {\n node = self$$1[i];\n while (node.firstChild) {\n node.removeChild(node.firstChild);\n }\n }\n return this;\n },\n html: function (value) {\n var self$$1 = this;\n var i;\n if (isDefined(value)) {\n i = self$$1.length;\n try {\n while (i--) {\n self$$1[i].innerHTML = value;\n }\n } catch (ex) {\n DomQuery(self$$1[i]).empty().append(value);\n }\n return self$$1;\n }\n return self$$1[0] ? self$$1[0].innerHTML : '';\n },\n text: function (value) {\n var self$$1 = this;\n var i;\n if (isDefined(value)) {\n i = self$$1.length;\n while (i--) {\n if ('innerText' in self$$1[i]) {\n self$$1[i].innerText = value;\n } else {\n self$$1[0].textContent = value;\n }\n }\n return self$$1;\n }\n return self$$1[0] ? self$$1[0].innerText || self$$1[0].textContent : '';\n },\n append: function () {\n return domManipulate(this, arguments, function (node) {\n if (this.nodeType === 1 || this.host && this.host.nodeType === 1) {\n this.appendChild(node);\n }\n });\n },\n prepend: function () {\n return domManipulate(this, arguments, function (node) {\n if (this.nodeType === 1 || this.host && this.host.nodeType === 1) {\n this.insertBefore(node, this.firstChild);\n }\n }, true);\n },\n before: function () {\n var self$$1 = this;\n if (self$$1[0] && self$$1[0].parentNode) {\n return domManipulate(self$$1, arguments, function (node) {\n this.parentNode.insertBefore(node, this);\n });\n }\n return self$$1;\n },\n after: function () {\n var self$$1 = this;\n if (self$$1[0] && self$$1[0].parentNode) {\n return domManipulate(self$$1, arguments, function (node) {\n this.parentNode.insertBefore(node, this.nextSibling);\n }, true);\n }\n return self$$1;\n },\n appendTo: function (val) {\n DomQuery(val).append(this);\n return this;\n },\n prependTo: function (val) {\n DomQuery(val).prepend(this);\n return this;\n },\n replaceWith: function (content) {\n return this.before(content).remove();\n },\n wrap: function (content) {\n return wrap(this, content);\n },\n wrapAll: function (content) {\n return wrap(this, content, true);\n },\n wrapInner: function (content) {\n this.each(function () {\n DomQuery(this).contents().wrapAll(content);\n });\n return this;\n },\n unwrap: function () {\n return this.parent().each(function () {\n DomQuery(this).replaceWith(this.childNodes);\n });\n },\n clone: function () {\n var result = [];\n this.each(function () {\n result.push(this.cloneNode(true));\n });\n return DomQuery(result);\n },\n addClass: function (className) {\n return this.toggleClass(className, true);\n },\n removeClass: function (className) {\n return this.toggleClass(className, false);\n },\n toggleClass: function (className, state) {\n var self$$1 = this;\n if (typeof className !== 'string') {\n return self$$1;\n }\n if (className.indexOf(' ') !== -1) {\n each$2(className.split(' '), function () {\n self$$1.toggleClass(this, state);\n });\n } else {\n self$$1.each(function (index, node) {\n var existingClassName, classState;\n classState = hasClass(node, className);\n if (classState !== state) {\n existingClassName = node.className;\n if (classState) {\n node.className = trim$1((' ' + existingClassName + ' ').replace(' ' + className + ' ', ' '));\n } else {\n node.className += existingClassName ? ' ' + className : className;\n }\n }\n });\n }\n return self$$1;\n },\n hasClass: function (className) {\n return hasClass(this[0], className);\n },\n each: function (callback) {\n return each$2(this, callback);\n },\n on: function (name$$1, callback) {\n return this.each(function () {\n Event$$1.bind(this, name$$1, callback);\n });\n },\n off: function (name$$1, callback) {\n return this.each(function () {\n Event$$1.unbind(this, name$$1, callback);\n });\n },\n trigger: function (name$$1) {\n return this.each(function () {\n if (typeof name$$1 === 'object') {\n Event$$1.fire(this, name$$1.type, name$$1);\n } else {\n Event$$1.fire(this, name$$1);\n }\n });\n },\n show: function () {\n return this.css('display', '');\n },\n hide: function () {\n return this.css('display', 'none');\n },\n slice: function () {\n return new DomQuery(slice$2.apply(this, arguments));\n },\n eq: function (index) {\n return index === -1 ? this.slice(index) : this.slice(index, +index + 1);\n },\n first: function () {\n return this.eq(0);\n },\n last: function () {\n return this.eq(-1);\n },\n find: function (selector) {\n var i, l;\n var ret = [];\n for (i = 0, l = this.length; i < l; i++) {\n DomQuery.find(selector, this[i], ret);\n }\n return DomQuery(ret);\n },\n filter: function (selector) {\n if (typeof selector === 'function') {\n return DomQuery(grep(this.toArray(), function (item, i) {\n return selector(i, item);\n }));\n }\n return DomQuery(DomQuery.filter(selector, this.toArray()));\n },\n closest: function (selector) {\n var result = [];\n if (selector instanceof DomQuery) {\n selector = selector[0];\n }\n this.each(function (i, node) {\n while (node) {\n if (typeof selector === 'string' && DomQuery(node).is(selector)) {\n result.push(node);\n break;\n } else if (node === selector) {\n result.push(node);\n break;\n }\n node = node.parentNode;\n }\n });\n return DomQuery(result);\n },\n offset: function (offset) {\n var elm, doc, docElm;\n var x = 0, y = 0, pos;\n if (!offset) {\n elm = this[0];\n if (elm) {\n doc = elm.ownerDocument;\n docElm = doc.documentElement;\n if (elm.getBoundingClientRect) {\n pos = elm.getBoundingClientRect();\n x = pos.left + (docElm.scrollLeft || doc.body.scrollLeft) - docElm.clientLeft;\n y = pos.top + (docElm.scrollTop || doc.body.scrollTop) - docElm.clientTop;\n }\n }\n return {\n left: x,\n top: y\n };\n }\n return this.css(offset);\n },\n push: push$2,\n sort: [].sort,\n splice: [].splice\n };\n $_4ujg4tljkmcwkbk.extend(DomQuery, {\n extend: $_4ujg4tljkmcwkbk.extend,\n makeArray: function (object) {\n if (isWindow(object) || object.nodeType) {\n return [object];\n }\n return $_4ujg4tljkmcwkbk.toArray(object);\n },\n inArray: inArray,\n isArray: $_4ujg4tljkmcwkbk.isArray,\n each: each$2,\n trim: trim$1,\n grep: grep,\n find: Sizzle,\n expr: Sizzle.selectors,\n unique: Sizzle.uniqueSort,\n text: Sizzle.getText,\n contains: Sizzle.contains,\n filter: function (expr, elems, not) {\n var i = elems.length;\n if (not) {\n expr = ':not(' + expr + ')';\n }\n while (i--) {\n if (elems[i].nodeType !== 1) {\n elems.splice(i, 1);\n }\n }\n if (elems.length === 1) {\n elems = DomQuery.find.matchesSelector(elems[0], expr) ? [elems[0]] : [];\n } else {\n elems = DomQuery.find.matches(expr, elems);\n }\n return elems;\n }\n });\n var dir = function (el, prop, until) {\n var matched = [];\n var cur = el[prop];\n if (typeof until !== 'string' && until instanceof DomQuery) {\n until = until[0];\n }\n while (cur && cur.nodeType !== 9) {\n if (until !== undefined) {\n if (cur === until) {\n break;\n }\n if (typeof until === 'string' && DomQuery(cur).is(until)) {\n break;\n }\n }\n if (cur.nodeType === 1) {\n matched.push(cur);\n }\n cur = cur[prop];\n }\n return matched;\n };\n var sibling = function (node, siblingName, nodeType, until) {\n var result = [];\n if (until instanceof DomQuery) {\n until = until[0];\n }\n for (; node; node = node[siblingName]) {\n if (nodeType && node.nodeType !== nodeType) {\n continue;\n }\n if (until !== undefined) {\n if (node === until) {\n break;\n }\n if (typeof until === 'string' && DomQuery(node).is(until)) {\n break;\n }\n }\n result.push(node);\n }\n return result;\n };\n var firstSibling = function (node, siblingName, nodeType) {\n for (node = node[siblingName]; node; node = node[siblingName]) {\n if (node.nodeType === nodeType) {\n return node;\n }\n }\n return null;\n };\n each$2({\n parent: function (node) {\n var parent$$1 = node.parentNode;\n return parent$$1 && parent$$1.nodeType !== 11 ? parent$$1 : null;\n },\n parents: function (node) {\n return dir(node, 'parentNode');\n },\n next: function (node) {\n return firstSibling(node, 'nextSibling', 1);\n },\n prev: function (node) {\n return firstSibling(node, 'previousSibling', 1);\n },\n children: function (node) {\n return sibling(node.firstChild, 'nextSibling', 1);\n },\n contents: function (node) {\n return $_4ujg4tljkmcwkbk.toArray((node.nodeName === 'iframe' ? node.contentDocument || node.contentWindow.document : node).childNodes);\n }\n }, function (name$$1, fn) {\n DomQuery.fn[name$$1] = function (selector) {\n var self$$1 = this;\n var result = [];\n self$$1.each(function () {\n var nodes = fn.call(result, this, selector, result);\n if (nodes) {\n if (DomQuery.isArray(nodes)) {\n result.push.apply(result, nodes);\n } else {\n result.push(nodes);\n }\n }\n });\n if (this.length > 1) {\n if (!skipUniques[name$$1]) {\n result = DomQuery.unique(result);\n }\n if (name$$1.indexOf('parents') === 0) {\n result = result.reverse();\n }\n }\n result = DomQuery(result);\n if (selector) {\n return result.filter(selector);\n }\n return result;\n };\n });\n each$2({\n parentsUntil: function (node, until) {\n return dir(node, 'parentNode', until);\n },\n nextUntil: function (node, until) {\n return sibling(node, 'nextSibling', 1, until).slice(1);\n },\n prevUntil: function (node, until) {\n return sibling(node, 'previousSibling', 1, until).slice(1);\n }\n }, function (name$$1, fn) {\n DomQuery.fn[name$$1] = function (selector, filter) {\n var self$$1 = this;\n var result = [];\n self$$1.each(function () {\n var nodes = fn.call(result, this, selector, result);\n if (nodes) {\n if (DomQuery.isArray(nodes)) {\n result.push.apply(result, nodes);\n } else {\n result.push(nodes);\n }\n }\n });\n if (this.length > 1) {\n result = DomQuery.unique(result);\n if (name$$1.indexOf('parents') === 0 || name$$1 === 'prevUntil') {\n result = result.reverse();\n }\n }\n result = DomQuery(result);\n if (filter) {\n return result.filter(filter);\n }\n return result;\n };\n });\n DomQuery.fn.is = function (selector) {\n return !!selector && this.filter(selector).length > 0;\n };\n DomQuery.fn.init.prototype = DomQuery.fn;\n DomQuery.overrideDefaults = function (callback) {\n var defaults;\n var sub = function (selector, context) {\n defaults = defaults || callback();\n if (arguments.length === 0) {\n selector = defaults.element;\n }\n if (!context) {\n context = defaults.context;\n }\n return new sub.fn.init(selector, context);\n };\n DomQuery.extend(sub, this);\n return sub;\n };\n var appendHooks = function (targetHooks, prop, hooks) {\n each$2(hooks, function (name$$1, func) {\n targetHooks[name$$1] = targetHooks[name$$1] || {};\n targetHooks[name$$1][prop] = func;\n });\n };\n if ($_cvvl9iajkmcwk25.ie && $_cvvl9iajkmcwk25.ie < 8) {\n appendHooks(attrHooks, 'get', {\n maxlength: function (elm) {\n var value = elm.maxLength;\n if (value === 2147483647) {\n return undefined;\n }\n return value;\n },\n size: function (elm) {\n var value = elm.size;\n if (value === 20) {\n return undefined;\n }\n return value;\n },\n class: function (elm) {\n return elm.className;\n },\n style: function (elm) {\n var value = elm.style.cssText;\n if (value.length === 0) {\n return undefined;\n }\n return value;\n }\n });\n appendHooks(attrHooks, 'set', {\n class: function (elm, value) {\n elm.className = value;\n },\n style: function (elm, value) {\n elm.style.cssText = value;\n }\n });\n }\n if ($_cvvl9iajkmcwk25.ie && $_cvvl9iajkmcwk25.ie < 9) {\n cssFix.float = 'styleFloat';\n appendHooks(cssHooks, 'set', {\n opacity: function (elm, value) {\n var style = elm.style;\n if (value === null || value === '') {\n style.removeAttribute('filter');\n } else {\n style.zoom = 1;\n style.filter = 'alpha(opacity=' + value * 100 + ')';\n }\n }\n });\n }\n DomQuery.attrHooks = attrHooks;\n DomQuery.cssHooks = cssHooks;\n\n var cached = function (f) {\n var called = false;\n var r;\n return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n if (!called) {\n called = true;\n r = f.apply(null, args);\n }\n return r;\n };\n };\n\n var firstMatch = function (regexes, s) {\n for (var i = 0; i < regexes.length; i++) {\n var x = regexes[i];\n if (x.test(s))\n return x;\n }\n return undefined;\n };\n var find$2 = function (regexes, agent) {\n var r = firstMatch(regexes, agent);\n if (!r)\n return {\n major: 0,\n minor: 0\n };\n var group = function (i) {\n return Number(agent.replace(r, '$' + i));\n };\n return nu(group(1), group(2));\n };\n var detect = function (versionRegexes, agent) {\n var cleanedAgent = String(agent).toLowerCase();\n if (versionRegexes.length === 0)\n return unknown();\n return find$2(versionRegexes, cleanedAgent);\n };\n var unknown = function () {\n return nu(0, 0);\n };\n var nu = function (major, minor) {\n return {\n major: major,\n minor: minor\n };\n };\n var $_2kio3msjkmcwkcv = {\n nu: nu,\n detect: detect,\n unknown: unknown\n };\n\n var edge = 'Edge';\n var chrome = 'Chrome';\n var ie$1 = 'IE';\n var opera$1 = 'Opera';\n var firefox = 'Firefox';\n var safari = 'Safari';\n var isBrowser = function (name, current) {\n return function () {\n return current === name;\n };\n };\n var unknown$1 = function () {\n return nu$1({\n current: undefined,\n version: $_2kio3msjkmcwkcv.unknown()\n });\n };\n var nu$1 = function (info) {\n var current = info.current;\n var version = info.version;\n return {\n current: current,\n version: version,\n isEdge: isBrowser(edge, current),\n isChrome: isBrowser(chrome, current),\n isIE: isBrowser(ie$1, current),\n isOpera: isBrowser(opera$1, current),\n isFirefox: isBrowser(firefox, current),\n isSafari: isBrowser(safari, current)\n };\n };\n var $_ei4lq0rjkmcwkcq = {\n unknown: unknown$1,\n nu: nu$1,\n edge: constant(edge),\n chrome: constant(chrome),\n ie: constant(ie$1),\n opera: constant(opera$1),\n firefox: constant(firefox),\n safari: constant(safari)\n };\n\n var windows = 'Windows';\n var ios = 'iOS';\n var android$1 = 'Android';\n var linux = 'Linux';\n var osx = 'OSX';\n var solaris = 'Solaris';\n var freebsd = 'FreeBSD';\n var isOS = function (name, current) {\n return function () {\n return current === name;\n };\n };\n var unknown$2 = function () {\n return nu$2({\n current: undefined,\n version: $_2kio3msjkmcwkcv.unknown()\n });\n };\n var nu$2 = function (info) {\n var current = info.current;\n var version = info.version;\n return {\n current: current,\n version: version,\n isWindows: isOS(windows, current),\n isiOS: isOS(ios, current),\n isAndroid: isOS(android$1, current),\n isOSX: isOS(osx, current),\n isLinux: isOS(linux, current),\n isSolaris: isOS(solaris, current),\n isFreeBSD: isOS(freebsd, current)\n };\n };\n var $_85w4ndtjkmcwkcx = {\n unknown: unknown$2,\n nu: nu$2,\n windows: constant(windows),\n ios: constant(ios),\n android: constant(android$1),\n linux: constant(linux),\n osx: constant(osx),\n solaris: constant(solaris),\n freebsd: constant(freebsd)\n };\n\n function DeviceType (os, browser, userAgent) {\n var isiPad = os.isiOS() && /ipad/i.test(userAgent) === true;\n var isiPhone = os.isiOS() && !isiPad;\n var isAndroid3 = os.isAndroid() && os.version.major === 3;\n var isAndroid4 = os.isAndroid() && os.version.major === 4;\n var isTablet = isiPad || isAndroid3 || isAndroid4 && /mobile/i.test(userAgent) === true;\n var isTouch = os.isiOS() || os.isAndroid();\n var isPhone = isTouch && !isTablet;\n var iOSwebview = browser.isSafari() && os.isiOS() && /safari/i.test(userAgent) === false;\n return {\n isiPad: constant(isiPad),\n isiPhone: constant(isiPhone),\n isTablet: constant(isTablet),\n isPhone: constant(isPhone),\n isTouch: constant(isTouch),\n isAndroid: os.isAndroid,\n isiOS: os.isiOS,\n isWebView: constant(iOSwebview)\n };\n }\n\n var detect$1 = function (candidates, userAgent) {\n var agent = String(userAgent).toLowerCase();\n return find(candidates, function (candidate) {\n return candidate.search(agent);\n });\n };\n var detectBrowser = function (browsers, userAgent) {\n return detect$1(browsers, userAgent).map(function (browser) {\n var version = $_2kio3msjkmcwkcv.detect(browser.versionRegexes, userAgent);\n return {\n current: browser.name,\n version: version\n };\n });\n };\n var detectOs = function (oses, userAgent) {\n return detect$1(oses, userAgent).map(function (os) {\n var version = $_2kio3msjkmcwkcv.detect(os.versionRegexes, userAgent);\n return {\n current: os.name,\n version: version\n };\n });\n };\n var $_6qxoukvjkmcwkd5 = {\n detectBrowser: detectBrowser,\n detectOs: detectOs\n };\n\n var contains$2 = function (str, substr) {\n return str.indexOf(substr) !== -1;\n };\n\n\n\n var trim$2 = function (str) {\n return str.replace(/^\\s+|\\s+$/g, '');\n };\n\n var normalVersionRegex = /.*?version\\/\\ ?([0-9]+)\\.([0-9]+).*/;\n var checkContains = function (target) {\n return function (uastring) {\n return contains$2(uastring, target);\n };\n };\n var browsers = [\n {\n name: 'Edge',\n versionRegexes: [/.*?edge\\/ ?([0-9]+)\\.([0-9]+)$/],\n search: function (uastring) {\n var monstrosity = contains$2(uastring, 'edge/') && contains$2(uastring, 'chrome') && contains$2(uastring, 'safari') && contains$2(uastring, 'applewebkit');\n return monstrosity;\n }\n },\n {\n name: 'Chrome',\n versionRegexes: [\n /.*?chrome\\/([0-9]+)\\.([0-9]+).*/,\n normalVersionRegex\n ],\n search: function (uastring) {\n return contains$2(uastring, 'chrome') && !contains$2(uastring, 'chromeframe');\n }\n },\n {\n name: 'IE',\n versionRegexes: [\n /.*?msie\\ ?([0-9]+)\\.([0-9]+).*/,\n /.*?rv:([0-9]+)\\.([0-9]+).*/\n ],\n search: function (uastring) {\n return contains$2(uastring, 'msie') || contains$2(uastring, 'trident');\n }\n },\n {\n name: 'Opera',\n versionRegexes: [\n normalVersionRegex,\n /.*?opera\\/([0-9]+)\\.([0-9]+).*/\n ],\n search: checkContains('opera')\n },\n {\n name: 'Firefox',\n versionRegexes: [/.*?firefox\\/\\ ?([0-9]+)\\.([0-9]+).*/],\n search: checkContains('firefox')\n },\n {\n name: 'Safari',\n versionRegexes: [\n normalVersionRegex,\n /.*?cpu os ([0-9]+)_([0-9]+).*/\n ],\n search: function (uastring) {\n return (contains$2(uastring, 'safari') || contains$2(uastring, 'mobile/')) && contains$2(uastring, 'applewebkit');\n }\n }\n ];\n var oses = [\n {\n name: 'Windows',\n search: checkContains('win'),\n versionRegexes: [/.*?windows\\ nt\\ ?([0-9]+)\\.([0-9]+).*/]\n },\n {\n name: 'iOS',\n search: function (uastring) {\n return contains$2(uastring, 'iphone') || contains$2(uastring, 'ipad');\n },\n versionRegexes: [\n /.*?version\\/\\ ?([0-9]+)\\.([0-9]+).*/,\n /.*cpu os ([0-9]+)_([0-9]+).*/,\n /.*cpu iphone os ([0-9]+)_([0-9]+).*/\n ]\n },\n {\n name: 'Android',\n search: checkContains('android'),\n versionRegexes: [/.*?android\\ ?([0-9]+)\\.([0-9]+).*/]\n },\n {\n name: 'OSX',\n search: checkContains('os x'),\n versionRegexes: [/.*?os\\ x\\ ?([0-9]+)_([0-9]+).*/]\n },\n {\n name: 'Linux',\n search: checkContains('linux'),\n versionRegexes: []\n },\n {\n name: 'Solaris',\n search: checkContains('sunos'),\n versionRegexes: []\n },\n {\n name: 'FreeBSD',\n search: checkContains('freebsd'),\n versionRegexes: []\n }\n ];\n var $_6vxr68wjkmcwkdc = {\n browsers: constant(browsers),\n oses: constant(oses)\n };\n\n var detect$2 = function (userAgent) {\n var browsers = $_6vxr68wjkmcwkdc.browsers();\n var oses = $_6vxr68wjkmcwkdc.oses();\n var browser = $_6qxoukvjkmcwkd5.detectBrowser(browsers, userAgent).fold($_ei4lq0rjkmcwkcq.unknown, $_ei4lq0rjkmcwkcq.nu);\n var os = $_6qxoukvjkmcwkd5.detectOs(oses, userAgent).fold($_85w4ndtjkmcwkcx.unknown, $_85w4ndtjkmcwkcx.nu);\n var deviceType = DeviceType(os, browser, userAgent);\n return {\n browser: browser,\n os: os,\n deviceType: deviceType\n };\n };\n var $_c5ox8vqjkmcwkco = { detect: detect$2 };\n\n var detect$3 = cached(function () {\n var userAgent = navigator.userAgent;\n return $_c5ox8vqjkmcwkco.detect(userAgent);\n });\n var $_b1ykk4ojkmcwkcj = { detect: detect$3 };\n\n var fromHtml = function (html, scope) {\n var doc = scope || document;\n var div = doc.createElement('div');\n div.innerHTML = html;\n if (!div.hasChildNodes() || div.childNodes.length > 1) {\n console.error('HTML does not have a single root node', html);\n throw 'HTML must have a single root node';\n }\n return fromDom(div.childNodes[0]);\n };\n var fromTag = function (tag, scope) {\n var doc = scope || document;\n var node = doc.createElement(tag);\n return fromDom(node);\n };\n var fromText = function (text, scope) {\n var doc = scope || document;\n var node = doc.createTextNode(text);\n return fromDom(node);\n };\n var fromDom = function (node) {\n if (node === null || node === undefined)\n throw new Error('Node cannot be null or undefined');\n return { dom: constant(node) };\n };\n var fromPoint = function (docElm, x, y) {\n var doc = docElm.dom();\n return Option.from(doc.elementFromPoint(x, y)).map(fromDom);\n };\n var Element$$1 = {\n fromHtml: fromHtml,\n fromTag: fromTag,\n fromText: fromText,\n fromDom: fromDom,\n fromPoint: fromPoint\n };\n\n var $_c8e5uh12jkmcwke2 = {\n ATTRIBUTE: Node.ATTRIBUTE_NODE,\n CDATA_SECTION: Node.CDATA_SECTION_NODE,\n COMMENT: Node.COMMENT_NODE,\n DOCUMENT: Node.DOCUMENT_NODE,\n DOCUMENT_TYPE: Node.DOCUMENT_TYPE_NODE,\n DOCUMENT_FRAGMENT: Node.DOCUMENT_FRAGMENT_NODE,\n ELEMENT: Node.ELEMENT_NODE,\n TEXT: Node.TEXT_NODE,\n PROCESSING_INSTRUCTION: Node.PROCESSING_INSTRUCTION_NODE,\n ENTITY_REFERENCE: Node.ENTITY_REFERENCE_NODE,\n ENTITY: Node.ENTITY_NODE,\n NOTATION: Node.NOTATION_NODE\n };\n\n var name = function (element) {\n var r = element.dom().nodeName;\n return r.toLowerCase();\n };\n var type = function (element) {\n return element.dom().nodeType;\n };\n var value = function (element) {\n return element.dom().nodeValue;\n };\n var isType$1 = function (t) {\n return function (element) {\n return type(element) === t;\n };\n };\n var isComment = function (element) {\n return type(element) === $_c8e5uh12jkmcwke2.COMMENT || name(element) === '#comment';\n };\n var isElement = isType$1($_c8e5uh12jkmcwke2.ELEMENT);\n var isText = isType$1($_c8e5uh12jkmcwke2.TEXT);\n var isDocument = isType$1($_c8e5uh12jkmcwke2.DOCUMENT);\n var $_2xwdjv11jkmcwke0 = {\n name: name,\n type: type,\n value: value,\n isElement: isElement,\n isText: isText,\n isDocument: isDocument,\n isComment: isComment\n };\n\n var keys = Object.keys;\n var each$3 = function (obj, f) {\n var props = keys(obj);\n for (var k = 0, len = props.length; k < len; k++) {\n var i = props[k];\n var x = obj[i];\n f(x, i, obj);\n }\n };\n var map$2 = function (obj, f) {\n return tupleMap(obj, function (x, i, obj) {\n return {\n k: i,\n v: f(x, i, obj)\n };\n });\n };\n var tupleMap = function (obj, f) {\n var r = {};\n each$3(obj, function (x, i) {\n var tuple = f(x, i, obj);\n r[tuple.k] = tuple.v;\n });\n return r;\n };\n var bifilter = function (obj, pred) {\n var t = {};\n var f = {};\n each$3(obj, function (x, i) {\n var branch = pred(x, i) ? t : f;\n branch[i] = x;\n });\n return {\n t: t,\n f: f\n };\n };\n\n var rawSet = function (dom, key, value) {\n if (isString(value) || isBoolean(value) || isNumber(value)) {\n dom.setAttribute(key, value + '');\n } else {\n console.error('Invalid call to Attr.set. Key ', key, ':: Value ', value, ':: Element ', dom);\n throw new Error('Attribute value was not simple');\n }\n };\n var set = function (element, key, value) {\n rawSet(element.dom(), key, value);\n };\n var setAll = function (element, attrs) {\n var dom = element.dom();\n each$3(attrs, function (v, k) {\n rawSet(dom, k, v);\n });\n };\n var get = function (element, key) {\n var v = element.dom().getAttribute(key);\n return v === null ? undefined : v;\n };\n var has = function (element, key) {\n var dom = element.dom();\n return dom && dom.hasAttribute ? dom.hasAttribute(key) : false;\n };\n var remove = function (element, key) {\n element.dom().removeAttribute(key);\n };\n var hasNone = function (element) {\n var attrs = element.dom().attributes;\n return attrs === undefined || attrs === null || attrs.length === 0;\n };\n var clone = function (element) {\n return foldl(element.dom().attributes, function (acc, attr) {\n acc[attr.name] = attr.value;\n return acc;\n }, {});\n };\n var transferOne = function (source, destination, attr) {\n if (has(source, attr) && !has(destination, attr))\n set(destination, attr, get(source, attr));\n };\n var transfer = function (source, destination, attrs) {\n if (!$_2xwdjv11jkmcwke0.isElement(source) || !$_2xwdjv11jkmcwke0.isElement(destination))\n return;\n each(attrs, function (attr) {\n transferOne(source, destination, attr);\n });\n };\n var $_29helg15jkmcwkf0 = {\n clone: clone,\n set: set,\n setAll: setAll,\n get: get,\n has: has,\n remove: remove,\n hasNone: hasNone,\n transfer: transfer\n };\n\n var inBody = function (element) {\n var dom = $_2xwdjv11jkmcwke0.isText(element) ? element.dom().parentNode : element.dom();\n return dom !== undefined && dom !== null && dom.ownerDocument.body.contains(dom);\n };\n var body = cached(function () {\n return getBody(Element$$1.fromDom(document));\n });\n var getBody = function (doc) {\n var body = doc.dom().body;\n if (body === null || body === undefined)\n throw 'Body is not available yet';\n return Element$$1.fromDom(body);\n };\n var $_g4uup916jkmcwkfg = {\n body: body,\n getBody: getBody,\n inBody: inBody\n };\n\n var isSupported = function (dom) {\n return dom.style !== undefined;\n };\n var $_crv2n17jkmcwkfl = { isSupported: isSupported };\n\n var internalSet = function (dom, property, value) {\n if (!isString(value)) {\n console.error('Invalid call to CSS.set. Property ', property, ':: Value ', value, ':: Element ', dom);\n throw new Error('CSS value must be a string: ' + value);\n }\n if ($_crv2n17jkmcwkfl.isSupported(dom))\n dom.style.setProperty(property, value);\n };\n var internalRemove = function (dom, property) {\n if ($_crv2n17jkmcwkfl.isSupported(dom))\n dom.style.removeProperty(property);\n };\n var set$1 = function (element, property, value) {\n var dom = element.dom();\n internalSet(dom, property, value);\n };\n var setAll$1 = function (element, css) {\n var dom = element.dom();\n each$3(css, function (v, k) {\n internalSet(dom, k, v);\n });\n };\n var setOptions = function (element, css) {\n var dom = element.dom();\n each$3(css, function (v, k) {\n v.fold(function () {\n internalRemove(dom, k);\n }, function (value) {\n internalSet(dom, k, value);\n });\n });\n };\n var get$1 = function (element, property) {\n var dom = element.dom();\n var styles = window.getComputedStyle(dom);\n var r = styles.getPropertyValue(property);\n var v = r === '' && !$_g4uup916jkmcwkfg.inBody(element) ? getUnsafeProperty(dom, property) : r;\n return v === null ? undefined : v;\n };\n var getUnsafeProperty = function (dom, property) {\n return $_crv2n17jkmcwkfl.isSupported(dom) ? dom.style.getPropertyValue(property) : '';\n };\n var getRaw = function (element, property) {\n var dom = element.dom();\n var raw = getUnsafeProperty(dom, property);\n return Option.from(raw).filter(function (r) {\n return r.length > 0;\n });\n };\n var getAllRaw = function (element) {\n var css = {};\n var dom = element.dom();\n if ($_crv2n17jkmcwkfl.isSupported(dom)) {\n for (var i = 0; i < dom.style.length; i++) {\n var ruleName = dom.style.item(i);\n css[ruleName] = dom.style[ruleName];\n }\n }\n return css;\n };\n var isValidValue = function (tag, property, value) {\n var element = Element$$1.fromTag(tag);\n set$1(element, property, value);\n var style = getRaw(element, property);\n return style.isSome();\n };\n var remove$1 = function (element, property) {\n var dom = element.dom();\n internalRemove(dom, property);\n if ($_29helg15jkmcwkf0.has(element, 'style') && trim$2($_29helg15jkmcwkf0.get(element, 'style')) === '') {\n $_29helg15jkmcwkf0.remove(element, 'style');\n }\n };\n var preserve = function (element, f) {\n var oldStyles = $_29helg15jkmcwkf0.get(element, 'style');\n var result = f(element);\n var restore = oldStyles === undefined ? $_29helg15jkmcwkf0.remove : $_29helg15jkmcwkf0.set;\n restore(element, 'style', oldStyles);\n return result;\n };\n var copy = function (source, target) {\n var sourceDom = source.dom();\n var targetDom = target.dom();\n if ($_crv2n17jkmcwkfl.isSupported(sourceDom) && $_crv2n17jkmcwkfl.isSupported(targetDom)) {\n targetDom.style.cssText = sourceDom.style.cssText;\n }\n };\n var reflow = function (e) {\n return e.dom().offsetWidth;\n };\n var transferOne$1 = function (source, destination, style) {\n getRaw(source, style).each(function (value) {\n if (getRaw(destination, style).isNone())\n set$1(destination, style, value);\n });\n };\n var transfer$1 = function (source, destination, styles) {\n if (!$_2xwdjv11jkmcwke0.isElement(source) || !$_2xwdjv11jkmcwke0.isElement(destination))\n return;\n each(styles, function (style) {\n transferOne$1(source, destination, style);\n });\n };\n var $_4enzit13jkmcwke5 = {\n copy: copy,\n set: set$1,\n preserve: preserve,\n setAll: setAll$1,\n setOptions: setOptions,\n remove: remove$1,\n get: get$1,\n getRaw: getRaw,\n getAllRaw: getAllRaw,\n isValidValue: isValidValue,\n reflow: reflow,\n transfer: transfer$1\n };\n\n var Immutable = function () {\n var fields = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n fields[_i] = arguments[_i];\n }\n return function () {\n var values = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n values[_i] = arguments[_i];\n }\n if (fields.length !== values.length) {\n throw new Error('Wrong number of arguments to struct. Expected \"[' + fields.length + ']\", got ' + values.length + ' arguments');\n }\n var struct = {};\n each(fields, function (name, i) {\n struct[name] = constant(values[i]);\n });\n return struct;\n };\n };\n\n var toArray$1 = function (target, f) {\n var r = [];\n var recurse = function (e) {\n r.push(e);\n return f(e);\n };\n var cur = f(target);\n do {\n cur = cur.bind(recurse);\n } while (cur.isSome());\n return r;\n };\n var $_ea405s1djkmcwkgi = { toArray: toArray$1 };\n\n var node = function () {\n var f = $_89i3w1cjkmcwk2c.getOrDie('Node');\n return f;\n };\n var compareDocumentPosition = function (a, b, match) {\n return (a.compareDocumentPosition(b) & match) !== 0;\n };\n var documentPositionPreceding = function (a, b) {\n return compareDocumentPosition(a, b, node().DOCUMENT_POSITION_PRECEDING);\n };\n var documentPositionContainedBy = function (a, b) {\n return compareDocumentPosition(a, b, node().DOCUMENT_POSITION_CONTAINED_BY);\n };\n var $_ggq6431fjkmcwkgt = {\n documentPositionPreceding: documentPositionPreceding,\n documentPositionContainedBy: documentPositionContainedBy\n };\n\n var ELEMENT = $_c8e5uh12jkmcwke2.ELEMENT;\n var DOCUMENT = $_c8e5uh12jkmcwke2.DOCUMENT;\n var is$1 = function (element, selector) {\n var elem = element.dom();\n if (elem.nodeType !== ELEMENT)\n return false;\n else if (elem.matches !== undefined)\n return elem.matches(selector);\n else if (elem.msMatchesSelector !== undefined)\n return elem.msMatchesSelector(selector);\n else if (elem.webkitMatchesSelector !== undefined)\n return elem.webkitMatchesSelector(selector);\n else if (elem.mozMatchesSelector !== undefined)\n return elem.mozMatchesSelector(selector);\n else\n throw new Error('Browser lacks native selectors');\n };\n var bypassSelector = function (dom) {\n return dom.nodeType !== ELEMENT && dom.nodeType !== DOCUMENT || dom.childElementCount === 0;\n };\n var all = function (selector, scope) {\n var base = scope === undefined ? document : scope.dom();\n return bypassSelector(base) ? [] : map(base.querySelectorAll(selector), Element$$1.fromDom);\n };\n var one = function (selector, scope) {\n var base = scope === undefined ? document : scope.dom();\n return bypassSelector(base) ? Option.none() : Option.from(base.querySelector(selector)).map(Element$$1.fromDom);\n };\n var $_4jv6d81gjkmcwkgv = {\n all: all,\n is: is$1,\n one: one\n };\n\n var eq = function (e1, e2) {\n return e1.dom() === e2.dom();\n };\n var isEqualNode = function (e1, e2) {\n return e1.dom().isEqualNode(e2.dom());\n };\n var member = function (element, elements) {\n return exists(elements, curry(eq, element));\n };\n var regularContains = function (e1, e2) {\n var d1 = e1.dom(), d2 = e2.dom();\n return d1 === d2 ? false : d1.contains(d2);\n };\n var ieContains = function (e1, e2) {\n return $_ggq6431fjkmcwkgt.documentPositionContainedBy(e1.dom(), e2.dom());\n };\n var browser = $_b1ykk4ojkmcwkcj.detect().browser;\n var contains$3 = browser.isIE() ? ieContains : regularContains;\n var $_e4hu6h1ejkmcwkgj = {\n eq: eq,\n isEqualNode: isEqualNode,\n member: member,\n contains: contains$3,\n is: $_4jv6d81gjkmcwkgv.is\n };\n\n var owner = function (element) {\n return Element$$1.fromDom(element.dom().ownerDocument);\n };\n var documentElement = function (element) {\n return Element$$1.fromDom(element.dom().ownerDocument.documentElement);\n };\n var defaultView = function (element) {\n var el = element.dom();\n var defaultView = el.ownerDocument.defaultView;\n return Element$$1.fromDom(defaultView);\n };\n var parent = function (element) {\n var dom = element.dom();\n return Option.from(dom.parentNode).map(Element$$1.fromDom);\n };\n var findIndex$2 = function (element) {\n return parent(element).bind(function (p) {\n var kin = children(p);\n return findIndex(kin, function (elem) {\n return $_e4hu6h1ejkmcwkgj.eq(element, elem);\n });\n });\n };\n var parents = function (element, isRoot) {\n var stop = isFunction(isRoot) ? isRoot : constant(false);\n var dom = element.dom();\n var ret = [];\n while (dom.parentNode !== null && dom.parentNode !== undefined) {\n var rawParent = dom.parentNode;\n var parent = Element$$1.fromDom(rawParent);\n ret.push(parent);\n if (stop(parent) === true)\n break;\n else\n dom = rawParent;\n }\n return ret;\n };\n var siblings = function (element) {\n var filterSelf = function (elements) {\n return filter(elements, function (x) {\n return !$_e4hu6h1ejkmcwkgj.eq(element, x);\n });\n };\n return parent(element).map(children).map(filterSelf).getOr([]);\n };\n var offsetParent = function (element) {\n var dom = element.dom();\n return Option.from(dom.offsetParent).map(Element$$1.fromDom);\n };\n var prevSibling = function (element) {\n var dom = element.dom();\n return Option.from(dom.previousSibling).map(Element$$1.fromDom);\n };\n var nextSibling = function (element) {\n var dom = element.dom();\n return Option.from(dom.nextSibling).map(Element$$1.fromDom);\n };\n var prevSiblings = function (element) {\n return reverse($_ea405s1djkmcwkgi.toArray(element, prevSibling));\n };\n var nextSiblings = function (element) {\n return $_ea405s1djkmcwkgi.toArray(element, nextSibling);\n };\n var children = function (element) {\n var dom = element.dom();\n return map(dom.childNodes, Element$$1.fromDom);\n };\n var child = function (element, index) {\n var children = element.dom().childNodes;\n return Option.from(children[index]).map(Element$$1.fromDom);\n };\n var firstChild = function (element) {\n return child(element, 0);\n };\n var lastChild = function (element) {\n return child(element, element.dom().childNodes.length - 1);\n };\n var childNodesCount = function (element) {\n return element.dom().childNodes.length;\n };\n var hasChildNodes = function (element) {\n return element.dom().hasChildNodes();\n };\n var spot = Immutable('element', 'offset');\n var leaf = function (element, offset) {\n var cs = children(element);\n return cs.length > 0 && offset < cs.length ? spot(cs[offset], 0) : spot(element, offset);\n };\n var $_ca6pc118jkmcwkfs = {\n owner: owner,\n defaultView: defaultView,\n documentElement: documentElement,\n parent: parent,\n findIndex: findIndex$2,\n parents: parents,\n siblings: siblings,\n prevSibling: prevSibling,\n offsetParent: offsetParent,\n prevSiblings: prevSiblings,\n nextSibling: nextSibling,\n nextSiblings: nextSiblings,\n children: children,\n child: child,\n firstChild: firstChild,\n lastChild: lastChild,\n childNodesCount: childNodesCount,\n hasChildNodes: hasChildNodes,\n leaf: leaf\n };\n\n var browser$1 = $_b1ykk4ojkmcwkcj.detect().browser;\n var firstElement = function (nodes) {\n return find(nodes, $_2xwdjv11jkmcwke0.isElement);\n };\n var getTableCaptionDeltaY = function (elm) {\n if (browser$1.isFirefox() && $_2xwdjv11jkmcwke0.name(elm) === 'table') {\n return firstElement($_ca6pc118jkmcwkfs.children(elm)).filter(function (elm) {\n return $_2xwdjv11jkmcwke0.name(elm) === 'caption';\n }).bind(function (caption) {\n return firstElement($_ca6pc118jkmcwkfs.nextSiblings(caption)).map(function (body) {\n var bodyTop = body.dom().offsetTop;\n var captionTop = caption.dom().offsetTop;\n var captionHeight = caption.dom().offsetHeight;\n return bodyTop <= captionTop ? -captionHeight : 0;\n });\n }).getOr(0);\n } else {\n return 0;\n }\n };\n var getPos = function (body, elm, rootElm) {\n var x = 0, y = 0, offsetParent;\n var doc = body.ownerDocument;\n var pos;\n rootElm = rootElm ? rootElm : body;\n if (elm) {\n if (rootElm === body && elm.getBoundingClientRect && $_4enzit13jkmcwke5.get(Element$$1.fromDom(body), 'position') === 'static') {\n pos = elm.getBoundingClientRect();\n x = pos.left + (doc.documentElement.scrollLeft || body.scrollLeft) - doc.documentElement.clientLeft;\n y = pos.top + (doc.documentElement.scrollTop || body.scrollTop) - doc.documentElement.clientTop;\n return {\n x: x,\n y: y\n };\n }\n offsetParent = elm;\n while (offsetParent && offsetParent !== rootElm && offsetParent.nodeType) {\n x += offsetParent.offsetLeft || 0;\n y += offsetParent.offsetTop || 0;\n offsetParent = offsetParent.offsetParent;\n }\n offsetParent = elm.parentNode;\n while (offsetParent && offsetParent !== rootElm && offsetParent.nodeType) {\n x -= offsetParent.scrollLeft || 0;\n y -= offsetParent.scrollTop || 0;\n offsetParent = offsetParent.parentNode;\n }\n y += getTableCaptionDeltaY(Element$$1.fromDom(elm));\n }\n return {\n x: x,\n y: y\n };\n };\n var $_5o0xi0njkmcwkbz = { getPos: getPos };\n\n var nu$3 = function (baseFn) {\n var data = Option.none();\n var callbacks = [];\n var map$$1 = function (f) {\n return nu$3(function (nCallback) {\n get(function (data) {\n nCallback(f(data));\n });\n });\n };\n var get = function (nCallback) {\n if (isReady())\n call(nCallback);\n else\n callbacks.push(nCallback);\n };\n var set = function (x) {\n data = Option.some(x);\n run(callbacks);\n callbacks = [];\n };\n var isReady = function () {\n return data.isSome();\n };\n var run = function (cbs) {\n each(cbs, call);\n };\n var call = function (cb) {\n data.each(function (x) {\n setTimeout(function () {\n cb(x);\n }, 0);\n });\n };\n baseFn(set);\n return {\n get: get,\n map: map$$1,\n isReady: isReady\n };\n };\n var pure$1 = function (a) {\n return nu$3(function (callback) {\n callback(a);\n });\n };\n var LazyValue = {\n nu: nu$3,\n pure: pure$1\n };\n\n var bounce = function (f) {\n return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var me = this;\n setTimeout(function () {\n f.apply(me, args);\n }, 0);\n };\n };\n\n var nu$4 = function (baseFn) {\n var get = function (callback) {\n baseFn(bounce(callback));\n };\n var map = function (fab) {\n return nu$4(function (callback) {\n get(function (a) {\n var value = fab(a);\n callback(value);\n });\n });\n };\n var bind = function (aFutureB) {\n return nu$4(function (callback) {\n get(function (a) {\n aFutureB(a).get(callback);\n });\n });\n };\n var anonBind = function (futureB) {\n return nu$4(function (callback) {\n get(function (a) {\n futureB.get(callback);\n });\n });\n };\n var toLazy = function () {\n return LazyValue.nu(get);\n };\n return {\n map: map,\n bind: bind,\n anonBind: anonBind,\n toLazy: toLazy,\n get: get\n };\n };\n var pure$2 = function (a) {\n return nu$4(function (callback) {\n callback(a);\n });\n };\n var Future = {\n nu: nu$4,\n pure: pure$2\n };\n\n var par = function (asyncValues, nu) {\n return nu(function (callback) {\n var r = [];\n var count = 0;\n var cb = function (i) {\n return function (value) {\n r[i] = value;\n count++;\n if (count >= asyncValues.length) {\n callback(r);\n }\n };\n };\n if (asyncValues.length === 0) {\n callback([]);\n } else {\n each(asyncValues, function (asyncValue, i) {\n asyncValue.get(cb(i));\n });\n }\n });\n };\n\n var par$1 = function (futures) {\n return par(futures, Future.nu);\n };\n\n var value$1 = function (o) {\n var is = function (v) {\n return o === v;\n };\n var or = function (opt) {\n return value$1(o);\n };\n var orThunk = function (f) {\n return value$1(o);\n };\n var map = function (f) {\n return value$1(f(o));\n };\n var each = function (f) {\n f(o);\n };\n var bind = function (f) {\n return f(o);\n };\n var fold = function (_, onValue) {\n return onValue(o);\n };\n var exists = function (f) {\n return f(o);\n };\n var forall = function (f) {\n return f(o);\n };\n var toOption = function () {\n return Option.some(o);\n };\n return {\n is: is,\n isValue: always,\n isError: never,\n getOr: constant(o),\n getOrThunk: constant(o),\n getOrDie: constant(o),\n or: or,\n orThunk: orThunk,\n fold: fold,\n map: map,\n each: each,\n bind: bind,\n exists: exists,\n forall: forall,\n toOption: toOption\n };\n };\n var error = function (message) {\n var getOrThunk = function (f) {\n return f();\n };\n var getOrDie = function () {\n return die(String(message))();\n };\n var or = function (opt) {\n return opt;\n };\n var orThunk = function (f) {\n return f();\n };\n var map = function (f) {\n return error(message);\n };\n var bind = function (f) {\n return error(message);\n };\n var fold = function (onError, _) {\n return onError(message);\n };\n return {\n is: never,\n isValue: never,\n isError: always,\n getOr: identity,\n getOrThunk: getOrThunk,\n getOrDie: getOrDie,\n or: or,\n orThunk: orThunk,\n fold: fold,\n map: map,\n each: noop,\n bind: bind,\n exists: never,\n forall: always,\n toOption: Option.none\n };\n };\n var Result = {\n value: value$1,\n error: error\n };\n\n function StyleSheetLoader(document$$1, settings) {\n var idCount = 0;\n var loadedStates = {};\n var maxLoadTime;\n settings = settings || {};\n maxLoadTime = settings.maxLoadTime || 5000;\n var appendToHead = function (node) {\n document$$1.getElementsByTagName('head')[0].appendChild(node);\n };\n var load = function (url, loadedCallback, errorCallback) {\n var link, style, startTime, state;\n var passed = function () {\n var callbacks = state.passed;\n var i = callbacks.length;\n while (i--) {\n callbacks[i]();\n }\n state.status = 2;\n state.passed = [];\n state.failed = [];\n };\n var failed = function () {\n var callbacks = state.failed;\n var i = callbacks.length;\n while (i--) {\n callbacks[i]();\n }\n state.status = 3;\n state.passed = [];\n state.failed = [];\n };\n var isOldWebKit = function () {\n var webKitChunks = navigator.userAgent.match(/WebKit\\/(\\d*)/);\n return !!(webKitChunks && parseInt(webKitChunks[1], 10) < 536);\n };\n var wait = function (testCallback, waitCallback) {\n if (!testCallback()) {\n if (new Date().getTime() - startTime < maxLoadTime) {\n $_3l01gcijkmcwk99.setTimeout(waitCallback);\n } else {\n failed();\n }\n }\n };\n var waitForWebKitLinkLoaded = function () {\n wait(function () {\n var styleSheets = document$$1.styleSheets;\n var styleSheet, i = styleSheets.length, owner;\n while (i--) {\n styleSheet = styleSheets[i];\n owner = styleSheet.ownerNode ? styleSheet.ownerNode : styleSheet.owningElement;\n if (owner && owner.id === link.id) {\n passed();\n return true;\n }\n }\n }, waitForWebKitLinkLoaded);\n };\n var waitForGeckoLinkLoaded = function () {\n wait(function () {\n try {\n var cssRules = style.sheet.cssRules;\n passed();\n return !!cssRules;\n } catch (ex) {\n }\n }, waitForGeckoLinkLoaded);\n };\n url = $_4ujg4tljkmcwkbk._addCacheSuffix(url);\n if (!loadedStates[url]) {\n state = {\n passed: [],\n failed: []\n };\n loadedStates[url] = state;\n } else {\n state = loadedStates[url];\n }\n if (loadedCallback) {\n state.passed.push(loadedCallback);\n }\n if (errorCallback) {\n state.failed.push(errorCallback);\n }\n if (state.status === 1) {\n return;\n }\n if (state.status === 2) {\n passed();\n return;\n }\n if (state.status === 3) {\n failed();\n return;\n }\n state.status = 1;\n link = document$$1.createElement('link');\n link.rel = 'stylesheet';\n link.type = 'text/css';\n link.id = 'u' + idCount++;\n link.async = false;\n link.defer = false;\n startTime = new Date().getTime();\n if ('onload' in link && !isOldWebKit()) {\n link.onload = waitForWebKitLinkLoaded;\n link.onerror = failed;\n } else {\n if (navigator.userAgent.indexOf('Firefox') > 0) {\n style = document$$1.createElement('style');\n style.textContent = '@import \"' + url + '\"';\n waitForGeckoLinkLoaded();\n appendToHead(style);\n return;\n }\n waitForWebKitLinkLoaded();\n }\n appendToHead(link);\n link.href = url;\n };\n var loadF = function (url) {\n return Future.nu(function (resolve) {\n load(url, compose(resolve, constant(Result.value(url))), compose(resolve, constant(Result.error(url))));\n });\n };\n var unbox = function (result) {\n return result.fold(identity, identity);\n };\n var loadAll = function (urls, success, failure) {\n par$1(map(urls, loadF)).get(function (result) {\n var parts = partition(result, function (r) {\n return r.isValue();\n });\n if (parts.fail.length > 0) {\n failure(parts.fail.map(unbox));\n } else {\n success(parts.pass.map(unbox));\n }\n });\n };\n return {\n load: load,\n loadAll: loadAll\n };\n }\n\n function TreeWalker (startNode, rootNode) {\n var node = startNode;\n var findSibling = function (node, startName, siblingName, shallow) {\n var sibling, parent;\n if (node) {\n if (!shallow && node[startName]) {\n return node[startName];\n }\n if (node !== rootNode) {\n sibling = node[siblingName];\n if (sibling) {\n return sibling;\n }\n for (parent = node.parentNode; parent && parent !== rootNode; parent = parent.parentNode) {\n sibling = parent[siblingName];\n if (sibling) {\n return sibling;\n }\n }\n }\n }\n };\n var findPreviousNode = function (node, startName, siblingName, shallow) {\n var sibling, parent, child;\n if (node) {\n sibling = node[siblingName];\n if (rootNode && sibling === rootNode) {\n return;\n }\n if (sibling) {\n if (!shallow) {\n for (child = sibling[startName]; child; child = child[startName]) {\n if (!child[startName]) {\n return child;\n }\n }\n }\n return sibling;\n }\n parent = node.parentNode;\n if (parent && parent !== rootNode) {\n return parent;\n }\n }\n };\n this.current = function () {\n return node;\n };\n this.next = function (shallow) {\n node = findSibling(node, 'firstChild', 'nextSibling', shallow);\n return node;\n };\n this.prev = function (shallow) {\n node = findSibling(node, 'lastChild', 'previousSibling', shallow);\n return node;\n };\n this.prev2 = function (shallow) {\n node = findPreviousNode(node, 'lastChild', 'previousSibling', shallow);\n return node;\n };\n }\n\n var blocks = [\n 'article',\n 'aside',\n 'details',\n 'div',\n 'dt',\n 'figcaption',\n 'footer',\n 'form',\n 'fieldset',\n 'header',\n 'hgroup',\n 'html',\n 'main',\n 'nav',\n 'section',\n 'summary',\n 'body',\n 'p',\n 'dl',\n 'multicol',\n 'dd',\n 'figure',\n 'address',\n 'center',\n 'blockquote',\n 'h1',\n 'h2',\n 'h3',\n 'h4',\n 'h5',\n 'h6',\n 'listing',\n 'xmp',\n 'pre',\n 'plaintext',\n 'menu',\n 'dir',\n 'ul',\n 'ol',\n 'li',\n 'hr',\n 'table',\n 'tbody',\n 'thead',\n 'tfoot',\n 'th',\n 'tr',\n 'td',\n 'caption'\n ];\n var voids = [\n 'area',\n 'base',\n 'basefont',\n 'br',\n 'col',\n 'frame',\n 'hr',\n 'img',\n 'input',\n 'isindex',\n 'link',\n 'meta',\n 'param',\n 'embed',\n 'source',\n 'wbr',\n 'track'\n ];\n var tableCells = [\n 'td',\n 'th'\n ];\n var tableSections = [\n 'thead',\n 'tbody',\n 'tfoot'\n ];\n var textBlocks = [\n 'h1',\n 'h2',\n 'h3',\n 'h4',\n 'h5',\n 'h6',\n 'p',\n 'div',\n 'address',\n 'pre',\n 'form',\n 'blockquote',\n 'center',\n 'dir',\n 'fieldset',\n 'header',\n 'footer',\n 'article',\n 'section',\n 'hgroup',\n 'aside',\n 'nav',\n 'figure'\n ];\n var headings = [\n 'h1',\n 'h2',\n 'h3',\n 'h4',\n 'h5',\n 'h6'\n ];\n var listItems = [\n 'li',\n 'dd',\n 'dt'\n ];\n var lists = [\n 'ul',\n 'ol',\n 'dl'\n ];\n var wsElements = [\n 'pre',\n 'script',\n 'textarea',\n 'style'\n ];\n var lazyLookup = function (items) {\n var lookup;\n return function (node) {\n lookup = lookup ? lookup : mapToObject(items, constant(true));\n return lookup.hasOwnProperty($_2xwdjv11jkmcwke0.name(node));\n };\n };\n var isHeading = lazyLookup(headings);\n var isBlock = lazyLookup(blocks);\n var isInline = function (node) {\n return $_2xwdjv11jkmcwke0.isElement(node) && !isBlock(node);\n };\n var isBr = function (node) {\n return $_2xwdjv11jkmcwke0.isElement(node) && $_2xwdjv11jkmcwke0.name(node) === 'br';\n };\n var isTextBlock = lazyLookup(textBlocks);\n var isList = lazyLookup(lists);\n var isListItem = lazyLookup(listItems);\n var isVoid = lazyLookup(voids);\n var isTableSection = lazyLookup(tableSections);\n var isTableCell = lazyLookup(tableCells);\n var isWsPreserveElement = lazyLookup(wsElements);\n\n var isNodeType = function (type) {\n return function (node) {\n return !!node && node.nodeType === type;\n };\n };\n var isElement$1 = isNodeType(1);\n var matchNodeNames = function (names) {\n var items = names.toLowerCase().split(' ');\n return function (node) {\n var i, name;\n if (node && node.nodeType) {\n name = node.nodeName.toLowerCase();\n for (i = 0; i < items.length; i++) {\n if (name === items[i]) {\n return true;\n }\n }\n }\n return false;\n };\n };\n var matchStyleValues = function (name, values) {\n var items = values.toLowerCase().split(' ');\n return function (node) {\n var i, cssValue;\n if (isElement$1(node)) {\n for (i = 0; i < items.length; i++) {\n var computed = node.ownerDocument.defaultView.getComputedStyle(node, null);\n cssValue = computed ? computed.getPropertyValue(name) : null;\n if (cssValue === items[i]) {\n return true;\n }\n }\n }\n return false;\n };\n };\n var hasPropValue = function (propName, propValue) {\n return function (node) {\n return isElement$1(node) && node[propName] === propValue;\n };\n };\n var hasAttribute = function (attrName, attrValue) {\n return function (node) {\n return isElement$1(node) && node.hasAttribute(attrName);\n };\n };\n var hasAttributeValue = function (attrName, attrValue) {\n return function (node) {\n return isElement$1(node) && node.getAttribute(attrName) === attrValue;\n };\n };\n var isBogus = function (node) {\n return isElement$1(node) && node.hasAttribute('data-mce-bogus');\n };\n var isBogusAll = function (node) {\n return isElement$1(node) && node.getAttribute('data-mce-bogus') === 'all';\n };\n var isTable = function (node) {\n return isElement$1(node) && node.tagName === 'TABLE';\n };\n var hasContentEditableState = function (value) {\n return function (node) {\n if (isElement$1(node)) {\n if (node.contentEditable === value) {\n return true;\n }\n if (node.getAttribute('data-mce-contenteditable') === value) {\n return true;\n }\n }\n return false;\n };\n };\n var isText$1 = isNodeType(3);\n var isComment$1 = isNodeType(8);\n var isDocument$1 = isNodeType(9);\n var isBr$1 = matchNodeNames('br');\n var isContentEditableTrue = hasContentEditableState('true');\n var isContentEditableFalse = hasContentEditableState('false');\n var $_bjermr1rjkmcwkij = {\n isText: isText$1,\n isElement: isElement$1,\n isComment: isComment$1,\n isDocument: isDocument$1,\n isBr: isBr$1,\n isContentEditableTrue: isContentEditableTrue,\n isContentEditableFalse: isContentEditableFalse,\n matchNodeNames: matchNodeNames,\n hasPropValue: hasPropValue,\n hasAttribute: hasAttribute,\n hasAttributeValue: hasAttributeValue,\n matchStyleValues: matchStyleValues,\n isBogus: isBogus,\n isBogusAll: isBogusAll,\n isTable: isTable\n };\n\n var surroundedBySpans = function (node) {\n var previousIsSpan = node.previousSibling && node.previousSibling.nodeName === 'SPAN';\n var nextIsSpan = node.nextSibling && node.nextSibling.nodeName === 'SPAN';\n return previousIsSpan && nextIsSpan;\n };\n var isBookmarkNode = function (node) {\n return node && node.tagName === 'SPAN' && node.getAttribute('data-mce-type') === 'bookmark';\n };\n var trimNode = function (dom, node) {\n var i, children = node.childNodes;\n if ($_bjermr1rjkmcwkij.isElement(node) && isBookmarkNode(node)) {\n return;\n }\n for (i = children.length - 1; i >= 0; i--) {\n trimNode(dom, children[i]);\n }\n if ($_bjermr1rjkmcwkij.isDocument(node) === false) {\n if ($_bjermr1rjkmcwkij.isText(node) && node.nodeValue.length > 0) {\n var trimmedLength = $_4ujg4tljkmcwkbk.trim(node.nodeValue).length;\n if (dom.isBlock(node.parentNode) || trimmedLength > 0) {\n return;\n }\n if (trimmedLength === 0 && surroundedBySpans(node)) {\n return;\n }\n } else if ($_bjermr1rjkmcwkij.isElement(node)) {\n children = node.childNodes;\n if (children.length === 1 && isBookmarkNode(children[0])) {\n node.parentNode.insertBefore(children[0], node);\n }\n if (children.length || isVoid(Element$$1.fromDom(node))) {\n return;\n }\n }\n dom.remove(node);\n }\n return node;\n };\n var $_br9sxm1pjkmcwki4 = { trimNode: trimNode };\n\n var makeMap$1 = $_4ujg4tljkmcwkbk.makeMap;\n var namedEntities;\n var baseEntities;\n var reverseEntities;\n var attrsCharsRegExp = /[&<>\\\"\\u0060\\u007E-\\uD7FF\\uE000-\\uFFEF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/g;\n var textCharsRegExp = /[<>&\\u007E-\\uD7FF\\uE000-\\uFFEF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/g;\n var rawCharsRegExp = /[<>&\\\"\\']/g;\n var entityRegExp = /&#([a-z0-9]+);?|&([a-z0-9]+);/gi;\n var asciiMap = {\n 128: '\\u20AC',\n 130: '\\u201A',\n 131: '\\u0192',\n 132: '\\u201E',\n 133: '\\u2026',\n 134: '\\u2020',\n 135: '\\u2021',\n 136: '\\u02c6',\n 137: '\\u2030',\n 138: '\\u0160',\n 139: '\\u2039',\n 140: '\\u0152',\n 142: '\\u017d',\n 145: '\\u2018',\n 146: '\\u2019',\n 147: '\\u201C',\n 148: '\\u201D',\n 149: '\\u2022',\n 150: '\\u2013',\n 151: '\\u2014',\n 152: '\\u02DC',\n 153: '\\u2122',\n 154: '\\u0161',\n 155: '\\u203A',\n 156: '\\u0153',\n 158: '\\u017e',\n 159: '\\u0178'\n };\n baseEntities = {\n '\"': '"',\n '\\'': ''',\n '<': '<',\n '>': '>',\n '&': '&',\n '`': '`'\n };\n reverseEntities = {\n '<': '<',\n '>': '>',\n '&': '&',\n '"': '\"',\n ''': '\\''\n };\n var nativeDecode = function (text) {\n var elm;\n elm = Element$$1.fromTag('div').dom();\n elm.innerHTML = text;\n return elm.textContent || elm.innerText || text;\n };\n var buildEntitiesLookup = function (items, radix) {\n var i, chr, entity;\n var lookup = {};\n if (items) {\n items = items.split(',');\n radix = radix || 10;\n for (i = 0; i < items.length; i += 2) {\n chr = String.fromCharCode(parseInt(items[i], radix));\n if (!baseEntities[chr]) {\n entity = '&' + items[i + 1] + ';';\n lookup[chr] = entity;\n lookup[entity] = chr;\n }\n }\n return lookup;\n }\n };\n namedEntities = buildEntitiesLookup('50,nbsp,51,iexcl,52,cent,53,pound,54,curren,55,yen,56,brvbar,57,sect,58,uml,59,copy,' + '5a,ordf,5b,laquo,5c,not,5d,shy,5e,reg,5f,macr,5g,deg,5h,plusmn,5i,sup2,5j,sup3,5k,acute,' + '5l,micro,5m,para,5n,middot,5o,cedil,5p,sup1,5q,ordm,5r,raquo,5s,frac14,5t,frac12,5u,frac34,' + '5v,iquest,60,Agrave,61,Aacute,62,Acirc,63,Atilde,64,Auml,65,Aring,66,AElig,67,Ccedil,' + '68,Egrave,69,Eacute,6a,Ecirc,6b,Euml,6c,Igrave,6d,Iacute,6e,Icirc,6f,Iuml,6g,ETH,6h,Ntilde,' + '6i,Ograve,6j,Oacute,6k,Ocirc,6l,Otilde,6m,Ouml,6n,times,6o,Oslash,6p,Ugrave,6q,Uacute,' + '6r,Ucirc,6s,Uuml,6t,Yacute,6u,THORN,6v,szlig,70,agrave,71,aacute,72,acirc,73,atilde,74,auml,' + '75,aring,76,aelig,77,ccedil,78,egrave,79,eacute,7a,ecirc,7b,euml,7c,igrave,7d,iacute,7e,icirc,' + '7f,iuml,7g,eth,7h,ntilde,7i,ograve,7j,oacute,7k,ocirc,7l,otilde,7m,ouml,7n,divide,7o,oslash,' + '7p,ugrave,7q,uacute,7r,ucirc,7s,uuml,7t,yacute,7u,thorn,7v,yuml,ci,fnof,sh,Alpha,si,Beta,' + 'sj,Gamma,sk,Delta,sl,Epsilon,sm,Zeta,sn,Eta,so,Theta,sp,Iota,sq,Kappa,sr,Lambda,ss,Mu,' + 'st,Nu,su,Xi,sv,Omicron,t0,Pi,t1,Rho,t3,Sigma,t4,Tau,t5,Upsilon,t6,Phi,t7,Chi,t8,Psi,' + 't9,Omega,th,alpha,ti,beta,tj,gamma,tk,delta,tl,epsilon,tm,zeta,tn,eta,to,theta,tp,iota,' + 'tq,kappa,tr,lambda,ts,mu,tt,nu,tu,xi,tv,omicron,u0,pi,u1,rho,u2,sigmaf,u3,sigma,u4,tau,' + 'u5,upsilon,u6,phi,u7,chi,u8,psi,u9,omega,uh,thetasym,ui,upsih,um,piv,812,bull,816,hellip,' + '81i,prime,81j,Prime,81u,oline,824,frasl,88o,weierp,88h,image,88s,real,892,trade,89l,alefsym,' + '8cg,larr,8ch,uarr,8ci,rarr,8cj,darr,8ck,harr,8dl,crarr,8eg,lArr,8eh,uArr,8ei,rArr,8ej,dArr,' + '8ek,hArr,8g0,forall,8g2,part,8g3,exist,8g5,empty,8g7,nabla,8g8,isin,8g9,notin,8gb,ni,8gf,prod,' + '8gh,sum,8gi,minus,8gn,lowast,8gq,radic,8gt,prop,8gu,infin,8h0,ang,8h7,and,8h8,or,8h9,cap,8ha,cup,' + '8hb,int,8hk,there4,8hs,sim,8i5,cong,8i8,asymp,8j0,ne,8j1,equiv,8j4,le,8j5,ge,8k2,sub,8k3,sup,8k4,' + 'nsub,8k6,sube,8k7,supe,8kl,oplus,8kn,otimes,8l5,perp,8m5,sdot,8o8,lceil,8o9,rceil,8oa,lfloor,8ob,' + 'rfloor,8p9,lang,8pa,rang,9ea,loz,9j0,spades,9j3,clubs,9j5,hearts,9j6,diams,ai,OElig,aj,oelig,b0,' + 'Scaron,b1,scaron,bo,Yuml,m6,circ,ms,tilde,802,ensp,803,emsp,809,thinsp,80c,zwnj,80d,zwj,80e,lrm,' + '80f,rlm,80j,ndash,80k,mdash,80o,lsquo,80p,rsquo,80q,sbquo,80s,ldquo,80t,rdquo,80u,bdquo,810,dagger,' + '811,Dagger,81g,permil,81p,lsaquo,81q,rsaquo,85c,euro', 32);\n var encodeRaw = function (text, attr) {\n return text.replace(attr ? attrsCharsRegExp : textCharsRegExp, function (chr) {\n return baseEntities[chr] || chr;\n });\n };\n var encodeAllRaw = function (text) {\n return ('' + text).replace(rawCharsRegExp, function (chr) {\n return baseEntities[chr] || chr;\n });\n };\n var encodeNumeric = function (text, attr) {\n return text.replace(attr ? attrsCharsRegExp : textCharsRegExp, function (chr) {\n if (chr.length > 1) {\n return '&#' + ((chr.charCodeAt(0) - 55296) * 1024 + (chr.charCodeAt(1) - 56320) + 65536) + ';';\n }\n return baseEntities[chr] || '&#' + chr.charCodeAt(0) + ';';\n });\n };\n var encodeNamed = function (text, attr, entities) {\n entities = entities || namedEntities;\n return text.replace(attr ? attrsCharsRegExp : textCharsRegExp, function (chr) {\n return baseEntities[chr] || entities[chr] || chr;\n });\n };\n var getEncodeFunc = function (name, entities) {\n var entitiesMap = buildEntitiesLookup(entities) || namedEntities;\n var encodeNamedAndNumeric = function (text, attr) {\n return text.replace(attr ? attrsCharsRegExp : textCharsRegExp, function (chr) {\n if (baseEntities[chr] !== undefined) {\n return baseEntities[chr];\n }\n if (entitiesMap[chr] !== undefined) {\n return entitiesMap[chr];\n }\n if (chr.length > 1) {\n return '&#' + ((chr.charCodeAt(0) - 55296) * 1024 + (chr.charCodeAt(1) - 56320) + 65536) + ';';\n }\n return '&#' + chr.charCodeAt(0) + ';';\n });\n };\n var encodeCustomNamed = function (text, attr) {\n return encodeNamed(text, attr, entitiesMap);\n };\n var nameMap = makeMap$1(name.replace(/\\+/g, ','));\n if (nameMap.named && nameMap.numeric) {\n return encodeNamedAndNumeric;\n }\n if (nameMap.named) {\n if (entities) {\n return encodeCustomNamed;\n }\n return encodeNamed;\n }\n if (nameMap.numeric) {\n return encodeNumeric;\n }\n return encodeRaw;\n };\n var decode = function (text) {\n return text.replace(entityRegExp, function (all, numeric) {\n if (numeric) {\n if (numeric.charAt(0).toLowerCase() === 'x') {\n numeric = parseInt(numeric.substr(1), 16);\n } else {\n numeric = parseInt(numeric, 10);\n }\n if (numeric > 65535) {\n numeric -= 65536;\n return String.fromCharCode(55296 + (numeric >> 10), 56320 + (numeric & 1023));\n }\n return asciiMap[numeric] || String.fromCharCode(numeric);\n }\n return reverseEntities[all] || namedEntities[all] || nativeDecode(all);\n });\n };\n var $_33qwr1sjkmcwkip = {\n encodeRaw: encodeRaw,\n encodeAllRaw: encodeAllRaw,\n encodeNumeric: encodeNumeric,\n encodeNamed: encodeNamed,\n getEncodeFunc: getEncodeFunc,\n decode: decode\n };\n\n var mapCache = {};\n var dummyObj = {};\n var makeMap$2 = $_4ujg4tljkmcwkbk.makeMap;\n var each$4 = $_4ujg4tljkmcwkbk.each;\n var extend$1 = $_4ujg4tljkmcwkbk.extend;\n var explode$1 = $_4ujg4tljkmcwkbk.explode;\n var inArray$1 = $_4ujg4tljkmcwkbk.inArray;\n var split = function (items, delim) {\n items = $_4ujg4tljkmcwkbk.trim(items);\n return items ? items.split(delim || ' ') : [];\n };\n var compileSchema = function (type) {\n var schema = {};\n var globalAttributes, blockContent;\n var phrasingContent, flowContent, html4BlockContent, html4PhrasingContent;\n var add = function (name, attributes, children) {\n var ni, attributesOrder, element;\n var arrayToMap = function (array, obj) {\n var map = {};\n var i, l;\n for (i = 0, l = array.length; i < l; i++) {\n map[array[i]] = obj || {};\n }\n return map;\n };\n children = children || [];\n attributes = attributes || '';\n if (typeof children === 'string') {\n children = split(children);\n }\n name = split(name);\n ni = name.length;\n while (ni--) {\n attributesOrder = split([\n globalAttributes,\n attributes\n ].join(' '));\n element = {\n attributes: arrayToMap(attributesOrder),\n attributesOrder: attributesOrder,\n children: arrayToMap(children, dummyObj)\n };\n schema[name[ni]] = element;\n }\n };\n var addAttrs = function (name, attributes) {\n var ni, schemaItem, i, l;\n name = split(name);\n ni = name.length;\n attributes = split(attributes);\n while (ni--) {\n schemaItem = schema[name[ni]];\n for (i = 0, l = attributes.length; i < l; i++) {\n schemaItem.attributes[attributes[i]] = {};\n schemaItem.attributesOrder.push(attributes[i]);\n }\n }\n };\n if (mapCache[type]) {\n return mapCache[type];\n }\n globalAttributes = 'id accesskey class dir lang style tabindex title role';\n blockContent = 'address blockquote div dl fieldset form h1 h2 h3 h4 h5 h6 hr menu ol p pre table ul';\n phrasingContent = 'a abbr b bdo br button cite code del dfn em embed i iframe img input ins kbd ' + 'label map noscript object q s samp script select small span strong sub sup ' + 'textarea u var #text #comment';\n if (type !== 'html4') {\n globalAttributes += ' contenteditable contextmenu draggable dropzone ' + 'hidden spellcheck translate';\n blockContent += ' article aside details dialog figure header footer hgroup section nav';\n phrasingContent += ' audio canvas command datalist mark meter output picture ' + 'progress time wbr video ruby bdi keygen';\n }\n if (type !== 'html5-strict') {\n globalAttributes += ' xml:lang';\n html4PhrasingContent = 'acronym applet basefont big font strike tt';\n phrasingContent = [\n phrasingContent,\n html4PhrasingContent\n ].join(' ');\n each$4(split(html4PhrasingContent), function (name) {\n add(name, '', phrasingContent);\n });\n html4BlockContent = 'center dir isindex noframes';\n blockContent = [\n blockContent,\n html4BlockContent\n ].join(' ');\n flowContent = [\n blockContent,\n phrasingContent\n ].join(' ');\n each$4(split(html4BlockContent), function (name) {\n add(name, '', flowContent);\n });\n }\n flowContent = flowContent || [\n blockContent,\n phrasingContent\n ].join(' ');\n add('html', 'manifest', 'head body');\n add('head', '', 'base command link meta noscript script style title');\n add('title hr noscript br');\n add('base', 'href target');\n add('link', 'href rel media hreflang type sizes hreflang');\n add('meta', 'name http-equiv content charset');\n add('style', 'media type scoped');\n add('script', 'src async defer type charset');\n add('body', 'onafterprint onbeforeprint onbeforeunload onblur onerror onfocus ' + 'onhashchange onload onmessage onoffline ononline onpagehide onpageshow ' + 'onpopstate onresize onscroll onstorage onunload', flowContent);\n add('address dt dd div caption', '', flowContent);\n add('h1 h2 h3 h4 h5 h6 pre p abbr code var samp kbd sub sup i b u bdo span legend em strong small s cite dfn', '', phrasingContent);\n add('blockquote', 'cite', flowContent);\n add('ol', 'reversed start type', 'li');\n add('ul', '', 'li');\n add('li', 'value', flowContent);\n add('dl', '', 'dt dd');\n add('a', 'href target rel media hreflang type', phrasingContent);\n add('q', 'cite', phrasingContent);\n add('ins del', 'cite datetime', flowContent);\n add('img', 'src sizes srcset alt usemap ismap width height');\n add('iframe', 'src name width height', flowContent);\n add('embed', 'src type width height');\n add('object', 'data type typemustmatch name usemap form width height', [\n flowContent,\n 'param'\n ].join(' '));\n add('param', 'name value');\n add('map', 'name', [\n flowContent,\n 'area'\n ].join(' '));\n add('area', 'alt coords shape href target rel media hreflang type');\n add('table', 'border', 'caption colgroup thead tfoot tbody tr' + (type === 'html4' ? ' col' : ''));\n add('colgroup', 'span', 'col');\n add('col', 'span');\n add('tbody thead tfoot', '', 'tr');\n add('tr', '', 'td th');\n add('td', 'colspan rowspan headers', flowContent);\n add('th', 'colspan rowspan headers scope abbr', flowContent);\n add('form', 'accept-charset action autocomplete enctype method name novalidate target', flowContent);\n add('fieldset', 'disabled form name', [\n flowContent,\n 'legend'\n ].join(' '));\n add('label', 'form for', phrasingContent);\n add('input', 'accept alt autocomplete checked dirname disabled form formaction formenctype formmethod formnovalidate ' + 'formtarget height list max maxlength min multiple name pattern readonly required size src step type value width');\n add('button', 'disabled form formaction formenctype formmethod formnovalidate formtarget name type value', type === 'html4' ? flowContent : phrasingContent);\n add('select', 'disabled form multiple name required size', 'option optgroup');\n add('optgroup', 'disabled label', 'option');\n add('option', 'disabled label selected value');\n add('textarea', 'cols dirname disabled form maxlength name readonly required rows wrap');\n add('menu', 'type label', [\n flowContent,\n 'li'\n ].join(' '));\n add('noscript', '', flowContent);\n if (type !== 'html4') {\n add('wbr');\n add('ruby', '', [\n phrasingContent,\n 'rt rp'\n ].join(' '));\n add('figcaption', '', flowContent);\n add('mark rt rp summary bdi', '', phrasingContent);\n add('canvas', 'width height', flowContent);\n add('video', 'src crossorigin poster preload autoplay mediagroup loop ' + 'muted controls width height buffered', [\n flowContent,\n 'track source'\n ].join(' '));\n add('audio', 'src crossorigin preload autoplay mediagroup loop muted controls ' + 'buffered volume', [\n flowContent,\n 'track source'\n ].join(' '));\n add('picture', '', 'img source');\n add('source', 'src srcset type media sizes');\n add('track', 'kind src srclang label default');\n add('datalist', '', [\n phrasingContent,\n 'option'\n ].join(' '));\n add('article section nav aside header footer', '', flowContent);\n add('hgroup', '', 'h1 h2 h3 h4 h5 h6');\n add('figure', '', [\n flowContent,\n 'figcaption'\n ].join(' '));\n add('time', 'datetime', phrasingContent);\n add('dialog', 'open', flowContent);\n add('command', 'type label icon disabled checked radiogroup command');\n add('output', 'for form name', phrasingContent);\n add('progress', 'value max', phrasingContent);\n add('meter', 'value min max low high optimum', phrasingContent);\n add('details', 'open', [\n flowContent,\n 'summary'\n ].join(' '));\n add('keygen', 'autofocus challenge disabled form keytype name');\n }\n if (type !== 'html5-strict') {\n addAttrs('script', 'language xml:space');\n addAttrs('style', 'xml:space');\n addAttrs('object', 'declare classid code codebase codetype archive standby align border hspace vspace');\n addAttrs('embed', 'align name hspace vspace');\n addAttrs('param', 'valuetype type');\n addAttrs('a', 'charset name rev shape coords');\n addAttrs('br', 'clear');\n addAttrs('applet', 'codebase archive code object alt name width height align hspace vspace');\n addAttrs('img', 'name longdesc align border hspace vspace');\n addAttrs('iframe', 'longdesc frameborder marginwidth marginheight scrolling align');\n addAttrs('font basefont', 'size color face');\n addAttrs('input', 'usemap align');\n addAttrs('select', 'onchange');\n addAttrs('textarea');\n addAttrs('h1 h2 h3 h4 h5 h6 div p legend caption', 'align');\n addAttrs('ul', 'type compact');\n addAttrs('li', 'type');\n addAttrs('ol dl menu dir', 'compact');\n addAttrs('pre', 'width xml:space');\n addAttrs('hr', 'align noshade size width');\n addAttrs('isindex', 'prompt');\n addAttrs('table', 'summary width frame rules cellspacing cellpadding align bgcolor');\n addAttrs('col', 'width align char charoff valign');\n addAttrs('colgroup', 'width align char charoff valign');\n addAttrs('thead', 'align char charoff valign');\n addAttrs('tr', 'align char charoff valign bgcolor');\n addAttrs('th', 'axis align char charoff valign nowrap bgcolor width height');\n addAttrs('form', 'accept');\n addAttrs('td', 'abbr axis scope align char charoff valign nowrap bgcolor width height');\n addAttrs('tfoot', 'align char charoff valign');\n addAttrs('tbody', 'align char charoff valign');\n addAttrs('area', 'nohref');\n addAttrs('body', 'background bgcolor text link vlink alink');\n }\n if (type !== 'html4') {\n addAttrs('input button select textarea', 'autofocus');\n addAttrs('input textarea', 'placeholder');\n addAttrs('a', 'download');\n addAttrs('link script img', 'crossorigin');\n addAttrs('iframe', 'sandbox seamless allowfullscreen');\n }\n each$4(split('a form meter progress dfn'), function (name) {\n if (schema[name]) {\n delete schema[name].children[name];\n }\n });\n delete schema.caption.children.table;\n delete schema.script;\n mapCache[type] = schema;\n return schema;\n };\n var compileElementMap = function (value, mode) {\n var styles;\n if (value) {\n styles = {};\n if (typeof value === 'string') {\n value = { '*': value };\n }\n each$4(value, function (value, key) {\n styles[key] = styles[key.toUpperCase()] = mode === 'map' ? makeMap$2(value, /[, ]/) : explode$1(value, /[, ]/);\n });\n }\n return styles;\n };\n function Schema(settings) {\n var elements = {};\n var children = {};\n var patternElements = [];\n var validStyles;\n var invalidStyles;\n var schemaItems;\n var whiteSpaceElementsMap, selfClosingElementsMap, shortEndedElementsMap, boolAttrMap, validClasses;\n var blockElementsMap, nonEmptyElementsMap, moveCaretBeforeOnEnterElementsMap, textBlockElementsMap, textInlineElementsMap;\n var customElementsMap = {}, specialElements = {};\n var createLookupTable = function (option, defaultValue, extendWith) {\n var value = settings[option];\n if (!value) {\n value = mapCache[option];\n if (!value) {\n value = makeMap$2(defaultValue, ' ', makeMap$2(defaultValue.toUpperCase(), ' '));\n value = extend$1(value, extendWith);\n mapCache[option] = value;\n }\n } else {\n value = makeMap$2(value, /[, ]/, makeMap$2(value.toUpperCase(), /[, ]/));\n }\n return value;\n };\n settings = settings || {};\n schemaItems = compileSchema(settings.schema);\n if (settings.verify_html === false) {\n settings.valid_elements = '*[*]';\n }\n validStyles = compileElementMap(settings.valid_styles);\n invalidStyles = compileElementMap(settings.invalid_styles, 'map');\n validClasses = compileElementMap(settings.valid_classes, 'map');\n whiteSpaceElementsMap = createLookupTable('whitespace_elements', 'pre script noscript style textarea video audio iframe object code');\n selfClosingElementsMap = createLookupTable('self_closing_elements', 'colgroup dd dt li option p td tfoot th thead tr');\n shortEndedElementsMap = createLookupTable('short_ended_elements', 'area base basefont br col frame hr img input isindex link ' + 'meta param embed source wbr track');\n boolAttrMap = createLookupTable('boolean_attributes', 'checked compact declare defer disabled ismap multiple nohref noresize ' + 'noshade nowrap readonly selected autoplay loop controls');\n nonEmptyElementsMap = createLookupTable('non_empty_elements', 'td th iframe video audio object ' + 'script pre code', shortEndedElementsMap);\n moveCaretBeforeOnEnterElementsMap = createLookupTable('move_caret_before_on_enter_elements', 'table', nonEmptyElementsMap);\n textBlockElementsMap = createLookupTable('text_block_elements', 'h1 h2 h3 h4 h5 h6 p div address pre form ' + 'blockquote center dir fieldset header footer article section hgroup aside nav figure');\n blockElementsMap = createLookupTable('block_elements', 'hr table tbody thead tfoot ' + 'th tr td li ol ul caption dl dt dd noscript menu isindex option ' + 'datalist select optgroup figcaption details summary', textBlockElementsMap);\n textInlineElementsMap = createLookupTable('text_inline_elements', 'span strong b em i font strike u var cite ' + 'dfn code mark q sup sub samp');\n each$4((settings.special || 'script noscript noframes noembed title style textarea xmp').split(' '), function (name) {\n specialElements[name] = new RegExp(']*>', 'gi');\n });\n var patternToRegExp = function (str) {\n return new RegExp('^' + str.replace(/([?+*])/g, '.$1') + '$');\n };\n var addValidElements = function (validElements) {\n var ei, el, ai, al, matches, element, attr, attrData, elementName, attrName, attrType, attributes, attributesOrder, prefix, outputName, globalAttributes, globalAttributesOrder, key, value;\n var elementRuleRegExp = /^([#+\\-])?([^\\[!\\/]+)(?:\\/([^\\[!]+))?(?:(!?)\\[([^\\]]+)\\])?$/, attrRuleRegExp = /^([!\\-])?(\\w+[\\\\:]:\\w+|[^=:<]+)?(?:([=:<])(.*))?$/, hasPatternsRegExp = /[*?+]/;\n if (validElements) {\n validElements = split(validElements, ',');\n if (elements['@']) {\n globalAttributes = elements['@'].attributes;\n globalAttributesOrder = elements['@'].attributesOrder;\n }\n for (ei = 0, el = validElements.length; ei < el; ei++) {\n matches = elementRuleRegExp.exec(validElements[ei]);\n if (matches) {\n prefix = matches[1];\n elementName = matches[2];\n outputName = matches[3];\n attrData = matches[5];\n attributes = {};\n attributesOrder = [];\n element = {\n attributes: attributes,\n attributesOrder: attributesOrder\n };\n if (prefix === '#') {\n element.paddEmpty = true;\n }\n if (prefix === '-') {\n element.removeEmpty = true;\n }\n if (matches[4] === '!') {\n element.removeEmptyAttrs = true;\n }\n if (globalAttributes) {\n for (key in globalAttributes) {\n attributes[key] = globalAttributes[key];\n }\n attributesOrder.push.apply(attributesOrder, globalAttributesOrder);\n }\n if (attrData) {\n attrData = split(attrData, '|');\n for (ai = 0, al = attrData.length; ai < al; ai++) {\n matches = attrRuleRegExp.exec(attrData[ai]);\n if (matches) {\n attr = {};\n attrType = matches[1];\n attrName = matches[2].replace(/[\\\\:]:/g, ':');\n prefix = matches[3];\n value = matches[4];\n if (attrType === '!') {\n element.attributesRequired = element.attributesRequired || [];\n element.attributesRequired.push(attrName);\n attr.required = true;\n }\n if (attrType === '-') {\n delete attributes[attrName];\n attributesOrder.splice(inArray$1(attributesOrder, attrName), 1);\n continue;\n }\n if (prefix) {\n if (prefix === '=') {\n element.attributesDefault = element.attributesDefault || [];\n element.attributesDefault.push({\n name: attrName,\n value: value\n });\n attr.defaultValue = value;\n }\n if (prefix === ':') {\n element.attributesForced = element.attributesForced || [];\n element.attributesForced.push({\n name: attrName,\n value: value\n });\n attr.forcedValue = value;\n }\n if (prefix === '<') {\n attr.validValues = makeMap$2(value, '?');\n }\n }\n if (hasPatternsRegExp.test(attrName)) {\n element.attributePatterns = element.attributePatterns || [];\n attr.pattern = patternToRegExp(attrName);\n element.attributePatterns.push(attr);\n } else {\n if (!attributes[attrName]) {\n attributesOrder.push(attrName);\n }\n attributes[attrName] = attr;\n }\n }\n }\n }\n if (!globalAttributes && elementName === '@') {\n globalAttributes = attributes;\n globalAttributesOrder = attributesOrder;\n }\n if (outputName) {\n element.outputName = elementName;\n elements[outputName] = element;\n }\n if (hasPatternsRegExp.test(elementName)) {\n element.pattern = patternToRegExp(elementName);\n patternElements.push(element);\n } else {\n elements[elementName] = element;\n }\n }\n }\n }\n };\n var setValidElements = function (validElements) {\n elements = {};\n patternElements = [];\n addValidElements(validElements);\n each$4(schemaItems, function (element, name) {\n children[name] = element.children;\n });\n };\n var addCustomElements = function (customElements) {\n var customElementRegExp = /^(~)?(.+)$/;\n if (customElements) {\n mapCache.text_block_elements = mapCache.block_elements = null;\n each$4(split(customElements, ','), function (rule) {\n var matches = customElementRegExp.exec(rule), inline = matches[1] === '~', cloneName = inline ? 'span' : 'div', name = matches[2];\n children[name] = children[cloneName];\n customElementsMap[name] = cloneName;\n if (!inline) {\n blockElementsMap[name.toUpperCase()] = {};\n blockElementsMap[name] = {};\n }\n if (!elements[name]) {\n var customRule = elements[cloneName];\n customRule = extend$1({}, customRule);\n delete customRule.removeEmptyAttrs;\n delete customRule.removeEmpty;\n elements[name] = customRule;\n }\n each$4(children, function (element, elmName) {\n if (element[cloneName]) {\n children[elmName] = element = extend$1({}, children[elmName]);\n element[name] = element[cloneName];\n }\n });\n });\n }\n };\n var addValidChildren = function (validChildren) {\n var childRuleRegExp = /^([+\\-]?)(\\w+)\\[([^\\]]+)\\]$/;\n mapCache[settings.schema] = null;\n if (validChildren) {\n each$4(split(validChildren, ','), function (rule) {\n var matches = childRuleRegExp.exec(rule);\n var parent, prefix;\n if (matches) {\n prefix = matches[1];\n if (prefix) {\n parent = children[matches[2]];\n } else {\n parent = children[matches[2]] = { '#comment': {} };\n }\n parent = children[matches[2]];\n each$4(split(matches[3], '|'), function (child) {\n if (prefix === '-') {\n delete parent[child];\n } else {\n parent[child] = {};\n }\n });\n }\n });\n }\n };\n var getElementRule = function (name) {\n var element = elements[name], i;\n if (element) {\n return element;\n }\n i = patternElements.length;\n while (i--) {\n element = patternElements[i];\n if (element.pattern.test(name)) {\n return element;\n }\n }\n };\n if (!settings.valid_elements) {\n each$4(schemaItems, function (element, name) {\n elements[name] = {\n attributes: element.attributes,\n attributesOrder: element.attributesOrder\n };\n children[name] = element.children;\n });\n if (settings.schema !== 'html5') {\n each$4(split('strong/b em/i'), function (item) {\n item = split(item, '/');\n elements[item[1]].outputName = item[0];\n });\n }\n each$4(split('ol ul sub sup blockquote span font a table tbody tr strong em b i'), function (name) {\n if (elements[name]) {\n elements[name].removeEmpty = true;\n }\n });\n each$4(split('p h1 h2 h3 h4 h5 h6 th td pre div address caption li'), function (name) {\n elements[name].paddEmpty = true;\n });\n each$4(split('span'), function (name) {\n elements[name].removeEmptyAttrs = true;\n });\n } else {\n setValidElements(settings.valid_elements);\n }\n addCustomElements(settings.custom_elements);\n addValidChildren(settings.valid_children);\n addValidElements(settings.extended_valid_elements);\n addValidChildren('+ol[ul|ol],+ul[ul|ol]');\n each$4({\n dd: 'dl',\n dt: 'dl',\n li: 'ul ol',\n td: 'tr',\n th: 'tr',\n tr: 'tbody thead tfoot',\n tbody: 'table',\n thead: 'table',\n tfoot: 'table',\n legend: 'fieldset',\n area: 'map',\n param: 'video audio object'\n }, function (parents, item) {\n if (elements[item]) {\n elements[item].parentsRequired = split(parents);\n }\n });\n if (settings.invalid_elements) {\n each$4(explode$1(settings.invalid_elements), function (item) {\n if (elements[item]) {\n delete elements[item];\n }\n });\n }\n if (!getElementRule('span')) {\n addValidElements('span[!data-mce-type|*]');\n }\n var getValidStyles = function () {\n return validStyles;\n };\n var getInvalidStyles = function () {\n return invalidStyles;\n };\n var getValidClasses = function () {\n return validClasses;\n };\n var getBoolAttrs = function () {\n return boolAttrMap;\n };\n var getBlockElements = function () {\n return blockElementsMap;\n };\n var getTextBlockElements = function () {\n return textBlockElementsMap;\n };\n var getTextInlineElements = function () {\n return textInlineElementsMap;\n };\n var getShortEndedElements = function () {\n return shortEndedElementsMap;\n };\n var getSelfClosingElements = function () {\n return selfClosingElementsMap;\n };\n var getNonEmptyElements = function () {\n return nonEmptyElementsMap;\n };\n var getMoveCaretBeforeOnEnterElements = function () {\n return moveCaretBeforeOnEnterElementsMap;\n };\n var getWhiteSpaceElements = function () {\n return whiteSpaceElementsMap;\n };\n var getSpecialElements = function () {\n return specialElements;\n };\n var isValidChild = function (name, child) {\n var parent = children[name.toLowerCase()];\n return !!(parent && parent[child.toLowerCase()]);\n };\n var isValid = function (name, attr) {\n var attrPatterns, i;\n var rule = getElementRule(name);\n if (rule) {\n if (attr) {\n if (rule.attributes[attr]) {\n return true;\n }\n attrPatterns = rule.attributePatterns;\n if (attrPatterns) {\n i = attrPatterns.length;\n while (i--) {\n if (attrPatterns[i].pattern.test(name)) {\n return true;\n }\n }\n }\n } else {\n return true;\n }\n }\n return false;\n };\n var getCustomElements = function () {\n return customElementsMap;\n };\n return {\n children: children,\n elements: elements,\n getValidStyles: getValidStyles,\n getValidClasses: getValidClasses,\n getBlockElements: getBlockElements,\n getInvalidStyles: getInvalidStyles,\n getShortEndedElements: getShortEndedElements,\n getTextBlockElements: getTextBlockElements,\n getTextInlineElements: getTextInlineElements,\n getBoolAttrs: getBoolAttrs,\n getElementRule: getElementRule,\n getSelfClosingElements: getSelfClosingElements,\n getNonEmptyElements: getNonEmptyElements,\n getMoveCaretBeforeOnEnterElements: getMoveCaretBeforeOnEnterElements,\n getWhiteSpaceElements: getWhiteSpaceElements,\n getSpecialElements: getSpecialElements,\n isValidChild: isValidChild,\n isValid: isValid,\n getCustomElements: getCustomElements,\n addValidElements: addValidElements,\n setValidElements: setValidElements,\n addCustomElements: addCustomElements,\n addValidChildren: addValidChildren\n };\n }\n\n var toHex = function (match, r, g, b) {\n var hex = function (val) {\n val = parseInt(val, 10).toString(16);\n return val.length > 1 ? val : '0' + val;\n };\n return '#' + hex(r) + hex(g) + hex(b);\n };\n function Styles(settings, schema) {\n var rgbRegExp = /rgb\\s*\\(\\s*([0-9]+)\\s*,\\s*([0-9]+)\\s*,\\s*([0-9]+)\\s*\\)/gi;\n var urlOrStrRegExp = /(?:url(?:(?:\\(\\s*\\\"([^\\\"]+)\\\"\\s*\\))|(?:\\(\\s*\\'([^\\']+)\\'\\s*\\))|(?:\\(\\s*([^)\\s]+)\\s*\\))))|(?:\\'([^\\']+)\\')|(?:\\\"([^\\\"]+)\\\")/gi;\n var styleRegExp = /\\s*([^:]+):\\s*([^;]+);?/g;\n var trimRightRegExp = /\\s+$/;\n var i;\n var encodingLookup = {};\n var encodingItems;\n var validStyles;\n var invalidStyles;\n var invisibleChar = '\\uFEFF';\n settings = settings || {};\n if (schema) {\n validStyles = schema.getValidStyles();\n invalidStyles = schema.getInvalidStyles();\n }\n encodingItems = ('\\\\\" \\\\\\' \\\\; \\\\: ; : ' + invisibleChar).split(' ');\n for (i = 0; i < encodingItems.length; i++) {\n encodingLookup[encodingItems[i]] = invisibleChar + i;\n encodingLookup[invisibleChar + i] = encodingItems[i];\n }\n return {\n toHex: function (color) {\n return color.replace(rgbRegExp, toHex);\n },\n parse: function (css) {\n var styles = {};\n var matches, name, value, isEncoded;\n var urlConverter = settings.url_converter;\n var urlConverterScope = settings.url_converter_scope || this;\n var compress = function (prefix, suffix, noJoin) {\n var top, right, bottom, left;\n top = styles[prefix + '-top' + suffix];\n if (!top) {\n return;\n }\n right = styles[prefix + '-right' + suffix];\n if (!right) {\n return;\n }\n bottom = styles[prefix + '-bottom' + suffix];\n if (!bottom) {\n return;\n }\n left = styles[prefix + '-left' + suffix];\n if (!left) {\n return;\n }\n var box = [\n top,\n right,\n bottom,\n left\n ];\n i = box.length - 1;\n while (i--) {\n if (box[i] !== box[i + 1]) {\n break;\n }\n }\n if (i > -1 && noJoin) {\n return;\n }\n styles[prefix + suffix] = i === -1 ? box[0] : box.join(' ');\n delete styles[prefix + '-top' + suffix];\n delete styles[prefix + '-right' + suffix];\n delete styles[prefix + '-bottom' + suffix];\n delete styles[prefix + '-left' + suffix];\n };\n var canCompress = function (key) {\n var value = styles[key], i;\n if (!value) {\n return;\n }\n value = value.split(' ');\n i = value.length;\n while (i--) {\n if (value[i] !== value[0]) {\n return false;\n }\n }\n styles[key] = value[0];\n return true;\n };\n var compress2 = function (target, a, b, c) {\n if (!canCompress(a)) {\n return;\n }\n if (!canCompress(b)) {\n return;\n }\n if (!canCompress(c)) {\n return;\n }\n styles[target] = styles[a] + ' ' + styles[b] + ' ' + styles[c];\n delete styles[a];\n delete styles[b];\n delete styles[c];\n };\n var encode = function (str) {\n isEncoded = true;\n return encodingLookup[str];\n };\n var decode = function (str, keepSlashes) {\n if (isEncoded) {\n str = str.replace(/\\uFEFF[0-9]/g, function (str) {\n return encodingLookup[str];\n });\n }\n if (!keepSlashes) {\n str = str.replace(/\\\\([\\'\\\";:])/g, '$1');\n }\n return str;\n };\n var decodeSingleHexSequence = function (escSeq) {\n return String.fromCharCode(parseInt(escSeq.slice(1), 16));\n };\n var decodeHexSequences = function (value) {\n return value.replace(/\\\\[0-9a-f]+/gi, decodeSingleHexSequence);\n };\n var processUrl = function (match, url, url2, url3, str, str2) {\n str = str || str2;\n if (str) {\n str = decode(str);\n return '\\'' + str.replace(/\\'/g, '\\\\\\'') + '\\'';\n }\n url = decode(url || url2 || url3);\n if (!settings.allow_script_urls) {\n var scriptUrl = url.replace(/[\\s\\r\\n]+/g, '');\n if (/(java|vb)script:/i.test(scriptUrl)) {\n return '';\n }\n if (!settings.allow_svg_data_urls && /^data:image\\/svg/i.test(scriptUrl)) {\n return '';\n }\n }\n if (urlConverter) {\n url = urlConverter.call(urlConverterScope, url, 'style');\n }\n return 'url(\\'' + url.replace(/\\'/g, '\\\\\\'') + '\\')';\n };\n if (css) {\n css = css.replace(/[\\u0000-\\u001F]/g, '');\n css = css.replace(/\\\\[\\\"\\';:\\uFEFF]/g, encode).replace(/\\\"[^\\\"]+\\\"|\\'[^\\']+\\'/g, function (str) {\n return str.replace(/[;:]/g, encode);\n });\n while (matches = styleRegExp.exec(css)) {\n styleRegExp.lastIndex = matches.index + matches[0].length;\n name = matches[1].replace(trimRightRegExp, '').toLowerCase();\n value = matches[2].replace(trimRightRegExp, '');\n if (name && value) {\n name = decodeHexSequences(name);\n value = decodeHexSequences(value);\n if (name.indexOf(invisibleChar) !== -1 || name.indexOf('\"') !== -1) {\n continue;\n }\n if (!settings.allow_script_urls && (name === 'behavior' || /expression\\s*\\(|\\/\\*|\\*\\//.test(value))) {\n continue;\n }\n if (name === 'font-weight' && value === '700') {\n value = 'bold';\n } else if (name === 'color' || name === 'background-color') {\n value = value.toLowerCase();\n }\n value = value.replace(rgbRegExp, toHex);\n value = value.replace(urlOrStrRegExp, processUrl);\n styles[name] = isEncoded ? decode(value, true) : value;\n }\n }\n compress('border', '', true);\n compress('border', '-width');\n compress('border', '-color');\n compress('border', '-style');\n compress('padding', '');\n compress('margin', '');\n compress2('border', 'border-width', 'border-style', 'border-color');\n if (styles.border === 'medium none') {\n delete styles.border;\n }\n if (styles['border-image'] === 'none') {\n delete styles['border-image'];\n }\n }\n return styles;\n },\n serialize: function (styles, elementName) {\n var css = '', name, value;\n var serializeStyles = function (name) {\n var styleList, i, l, value;\n styleList = validStyles[name];\n if (styleList) {\n for (i = 0, l = styleList.length; i < l; i++) {\n name = styleList[i];\n value = styles[name];\n if (value) {\n css += (css.length > 0 ? ' ' : '') + name + ': ' + value + ';';\n }\n }\n }\n };\n var isValid = function (name, elementName) {\n var styleMap;\n styleMap = invalidStyles['*'];\n if (styleMap && styleMap[name]) {\n return false;\n }\n styleMap = invalidStyles[elementName];\n if (styleMap && styleMap[name]) {\n return false;\n }\n return true;\n };\n if (elementName && validStyles) {\n serializeStyles('*');\n serializeStyles(elementName);\n } else {\n for (name in styles) {\n value = styles[name];\n if (value && (!invalidStyles || isValid(name, elementName))) {\n css += (css.length > 0 ? ' ' : '') + name + ': ' + value + ';';\n }\n }\n }\n return css;\n }\n };\n }\n\n var each$5 = $_4ujg4tljkmcwkbk.each;\n var grep$1 = $_4ujg4tljkmcwkbk.grep;\n var isIE = $_cvvl9iajkmcwk25.ie;\n var simpleSelectorRe = /^([a-z0-9],?)+$/i;\n var whiteSpaceRegExp$2 = /^[ \\t\\r\\n]*$/;\n var setupAttrHooks = function (styles, settings, getContext) {\n var attrHooks = {};\n var keepValues = settings.keep_values;\n var keepUrlHook = {\n set: function ($elm, value, name$$1) {\n if (settings.url_converter) {\n value = settings.url_converter.call(settings.url_converter_scope || getContext(), value, name$$1, $elm[0]);\n }\n $elm.attr('data-mce-' + name$$1, value).attr(name$$1, value);\n },\n get: function ($elm, name$$1) {\n return $elm.attr('data-mce-' + name$$1) || $elm.attr(name$$1);\n }\n };\n attrHooks = {\n style: {\n set: function ($elm, value) {\n if (value !== null && typeof value === 'object') {\n $elm.css(value);\n return;\n }\n if (keepValues) {\n $elm.attr('data-mce-style', value);\n }\n $elm.attr('style', value);\n },\n get: function ($elm) {\n var value = $elm.attr('data-mce-style') || $elm.attr('style');\n value = styles.serialize(styles.parse(value), $elm[0].nodeName);\n return value;\n }\n }\n };\n if (keepValues) {\n attrHooks.href = attrHooks.src = keepUrlHook;\n }\n return attrHooks;\n };\n var updateInternalStyleAttr = function (styles, $elm) {\n var rawValue = $elm.attr('style');\n var value = styles.serialize(styles.parse(rawValue), $elm[0].nodeName);\n if (!value) {\n value = null;\n }\n $elm.attr('data-mce-style', value);\n };\n var findNodeIndex = function (node, normalized) {\n var idx = 0, lastNodeType, nodeType;\n if (node) {\n for (lastNodeType = node.nodeType, node = node.previousSibling; node; node = node.previousSibling) {\n nodeType = node.nodeType;\n if (normalized && nodeType === 3) {\n if (nodeType === lastNodeType || !node.nodeValue.length) {\n continue;\n }\n }\n idx++;\n lastNodeType = nodeType;\n }\n }\n return idx;\n };\n function DOMUtils(doc, settings) {\n var _this = this;\n if (settings === void 0) {\n settings = {};\n }\n var attrHooks;\n var addedStyles = {};\n var win = window;\n var files = {};\n var counter = 0;\n var stdMode = true;\n var boxModel = true;\n var styleSheetLoader = StyleSheetLoader(doc);\n var boundEvents = [];\n var schema = settings.schema ? settings.schema : Schema({});\n var styles = Styles({\n url_converter: settings.url_converter,\n url_converter_scope: settings.url_converter_scope\n }, settings.schema);\n var events = settings.ownEvents ? new EventUtils(settings.proxy) : EventUtils.Event;\n var blockElementsMap = schema.getBlockElements();\n var $ = DomQuery.overrideDefaults(function () {\n return {\n context: doc,\n element: self$$1.getRoot()\n };\n });\n var isBlock = function (node) {\n if (typeof node === 'string') {\n return !!blockElementsMap[node];\n } else if (node) {\n var type = node.nodeType;\n if (type) {\n return !!(type === 1 && blockElementsMap[node.nodeName]);\n }\n }\n return false;\n };\n var get = function (elm) {\n if (elm && doc && typeof elm === 'string') {\n var node = doc.getElementById(elm);\n if (node && node.id !== elm) {\n return doc.getElementsByName(elm)[1];\n } else {\n return node;\n }\n }\n return elm;\n };\n var $$ = function (elm) {\n if (typeof elm === 'string') {\n elm = get(elm);\n }\n return $(elm);\n };\n var getAttrib = function (elm, name$$1, defaultVal) {\n var hook, value;\n var $elm = $$(elm);\n if ($elm.length) {\n hook = attrHooks[name$$1];\n if (hook && hook.get) {\n value = hook.get($elm, name$$1);\n } else {\n value = $elm.attr(name$$1);\n }\n }\n if (typeof value === 'undefined') {\n value = defaultVal || '';\n }\n return value;\n };\n var getAttribs = function (elm) {\n var node = get(elm);\n if (!node) {\n return [];\n }\n return node.attributes;\n };\n var setAttrib = function (elm, name$$1, value) {\n var originalValue, hook;\n if (value === '') {\n value = null;\n }\n var $elm = $$(elm);\n originalValue = $elm.attr(name$$1);\n if (!$elm.length) {\n return;\n }\n hook = attrHooks[name$$1];\n if (hook && hook.set) {\n hook.set($elm, value, name$$1);\n } else {\n $elm.attr(name$$1, value);\n }\n if (originalValue !== value && settings.onSetAttrib) {\n settings.onSetAttrib({\n attrElm: $elm,\n attrName: name$$1,\n attrValue: value\n });\n }\n };\n var clone = function (node, deep) {\n if (!isIE || node.nodeType !== 1 || deep) {\n return node.cloneNode(deep);\n }\n if (!deep) {\n var clone_1 = doc.createElement(node.nodeName);\n each$5(getAttribs(node), function (attr) {\n setAttrib(clone_1, attr.nodeName, getAttrib(node, attr.nodeName));\n });\n return clone_1;\n }\n return null;\n };\n var getRoot = function () {\n return settings.root_element || doc.body;\n };\n var getViewPort = function (argWin) {\n var actWin = !argWin ? win : argWin;\n var doc = actWin.document;\n var rootElm = boxModel ? doc.documentElement : doc.body;\n return {\n x: actWin.pageXOffset || rootElm.scrollLeft,\n y: actWin.pageYOffset || rootElm.scrollTop,\n w: actWin.innerWidth || rootElm.clientWidth,\n h: actWin.innerHeight || rootElm.clientHeight\n };\n };\n var getPos = function (elm, rootElm) {\n return $_5o0xi0njkmcwkbz.getPos(doc.body, get(elm), rootElm);\n };\n var setStyle = function (elm, name$$1, value) {\n var $elm = $$(elm).css(name$$1, value);\n if (settings.update_styles) {\n updateInternalStyleAttr(styles, $elm);\n }\n };\n var setStyles = function (elm, stylesArg) {\n var $elm = $$(elm).css(stylesArg);\n if (settings.update_styles) {\n updateInternalStyleAttr(styles, $elm);\n }\n };\n var getStyle = function (elm, name$$1, computed) {\n var $elm = $$(elm);\n if (computed) {\n return $elm.css(name$$1);\n }\n name$$1 = name$$1.replace(/-(\\D)/g, function (a, b) {\n return b.toUpperCase();\n });\n if (name$$1 === 'float') {\n name$$1 = $_cvvl9iajkmcwk25.ie && $_cvvl9iajkmcwk25.ie < 12 ? 'styleFloat' : 'cssFloat';\n }\n return $elm[0] && $elm[0].style ? $elm[0].style[name$$1] : undefined;\n };\n var getSize = function (elm) {\n var w, h;\n elm = get(elm);\n w = getStyle(elm, 'width');\n h = getStyle(elm, 'height');\n if (w.indexOf('px') === -1) {\n w = 0;\n }\n if (h.indexOf('px') === -1) {\n h = 0;\n }\n return {\n w: parseInt(w, 10) || elm.offsetWidth || elm.clientWidth,\n h: parseInt(h, 10) || elm.offsetHeight || elm.clientHeight\n };\n };\n var getRect = function (elm) {\n var pos, size;\n elm = get(elm);\n pos = getPos(elm);\n size = getSize(elm);\n return {\n x: pos.x,\n y: pos.y,\n w: size.w,\n h: size.h\n };\n };\n var is = function (elm, selector) {\n var i;\n if (!elm) {\n return false;\n }\n if (!Array.isArray(elm)) {\n if (selector === '*') {\n return elm.nodeType === 1;\n }\n if (simpleSelectorRe.test(selector)) {\n var selectors = selector.toLowerCase().split(/,/);\n var elmName = elm.nodeName.toLowerCase();\n for (i = selectors.length - 1; i >= 0; i--) {\n if (selectors[i] === elmName) {\n return true;\n }\n }\n return false;\n }\n if (elm.nodeType && elm.nodeType !== 1) {\n return false;\n }\n }\n var elms = !Array.isArray(elm) ? [elm] : elm;\n return Sizzle(selector, elms[0].ownerDocument || elms[0], null, elms).length > 0;\n };\n var getParents = function (elm, selector, root, collect) {\n var result = [];\n var selectorVal;\n var node = get(elm);\n collect = collect === undefined;\n root = root || (getRoot().nodeName !== 'BODY' ? getRoot().parentNode : null);\n if ($_4ujg4tljkmcwkbk.is(selector, 'string')) {\n selectorVal = selector;\n if (selector === '*') {\n selector = function (node) {\n return node.nodeType === 1;\n };\n } else {\n selector = function (node) {\n return is(node, selectorVal);\n };\n }\n }\n while (node) {\n if (node === root || !node.nodeType || node.nodeType === 9) {\n break;\n }\n if (!selector || typeof selector === 'function' && selector(node)) {\n if (collect) {\n result.push(node);\n } else {\n return [node];\n }\n }\n node = node.parentNode;\n }\n return collect ? result : null;\n };\n var getParent = function (node, selector, root) {\n var parents = getParents(node, selector, root, false);\n return parents && parents.length > 0 ? parents[0] : null;\n };\n var _findSib = function (node, selector, name$$1) {\n var func = selector;\n if (node) {\n if (typeof selector === 'string') {\n func = function (node) {\n return is(node, selector);\n };\n }\n for (node = node[name$$1]; node; node = node[name$$1]) {\n if (typeof func === 'function' && func(node)) {\n return node;\n }\n }\n }\n return null;\n };\n var getNext = function (node, selector) {\n return _findSib(node, selector, 'nextSibling');\n };\n var getPrev = function (node, selector) {\n return _findSib(node, selector, 'previousSibling');\n };\n var select = function (selector, scope) {\n return Sizzle(selector, get(scope) || settings.root_element || doc, []);\n };\n var run = function (elm, func, scope) {\n var result;\n var node = typeof elm === 'string' ? get(elm) : elm;\n if (!node) {\n return false;\n }\n if ($_4ujg4tljkmcwkbk.isArray(node) && (node.length || node.length === 0)) {\n result = [];\n each$5(node, function (elm, i) {\n if (elm) {\n if (typeof elm === 'string') {\n elm = get(elm);\n }\n result.push(func.call(scope, elm, i));\n }\n });\n return result;\n }\n var context = scope ? scope : _this;\n return func.call(context, node);\n };\n var setAttribs = function (elm, attrs) {\n $$(elm).each(function (i, node) {\n each$5(attrs, function (value, name$$1) {\n setAttrib(node, name$$1, value);\n });\n });\n };\n var setHTML = function (elm, html) {\n var $elm = $$(elm);\n if (isIE) {\n $elm.each(function (i, target) {\n if (target.canHaveHTML === false) {\n return;\n }\n while (target.firstChild) {\n target.removeChild(target.firstChild);\n }\n try {\n target.innerHTML = '
' + html;\n target.removeChild(target.firstChild);\n } catch (ex) {\n DomQuery('
').html('
' + html).contents().slice(1).appendTo(target);\n }\n return html;\n });\n } else {\n $elm.html(html);\n }\n };\n var add = function (parentElm, name$$1, attrs, html, create) {\n return run(parentElm, function (parentElm) {\n var newElm = typeof name$$1 === 'string' ? doc.createElement(name$$1) : name$$1;\n setAttribs(newElm, attrs);\n if (html) {\n if (typeof html !== 'string' && html.nodeType) {\n newElm.appendChild(html);\n } else if (typeof html === 'string') {\n setHTML(newElm, html);\n }\n }\n return !create ? parentElm.appendChild(newElm) : newElm;\n });\n };\n var create = function (name$$1, attrs, html) {\n return add(doc.createElement(name$$1), name$$1, attrs, html, true);\n };\n var decode = $_33qwr1sjkmcwkip.decode;\n var encode = $_33qwr1sjkmcwkip.encodeAllRaw;\n var createHTML = function (name$$1, attrs, html) {\n var outHtml = '', key;\n outHtml += '<' + name$$1;\n for (key in attrs) {\n if (attrs.hasOwnProperty(key) && attrs[key] !== null && typeof attrs[key] !== 'undefined') {\n outHtml += ' ' + key + '=\"' + encode(attrs[key]) + '\"';\n }\n }\n if (typeof html !== 'undefined') {\n return outHtml + '>' + html + '';\n }\n return outHtml + ' />';\n };\n var createFragment = function (html) {\n var node;\n var container = doc.createElement('div');\n var frag = doc.createDocumentFragment();\n if (html) {\n container.innerHTML = html;\n }\n while (node = container.firstChild) {\n frag.appendChild(node);\n }\n return frag;\n };\n var remove = function (node, keepChildren) {\n var $node = $$(node);\n if (keepChildren) {\n $node.each(function () {\n var child;\n while (child = this.firstChild) {\n if (child.nodeType === 3 && child.data.length === 0) {\n this.removeChild(child);\n } else {\n this.parentNode.insertBefore(child, this);\n }\n }\n }).remove();\n } else {\n $node.remove();\n }\n return $node.length > 1 ? $node.toArray() : $node[0];\n };\n var removeAllAttribs = function (e) {\n return run(e, function (e) {\n var i;\n var attrs = e.attributes;\n for (i = attrs.length - 1; i >= 0; i--) {\n e.removeAttributeNode(attrs.item(i));\n }\n });\n };\n var parseStyle = function (cssText) {\n return styles.parse(cssText);\n };\n var serializeStyle = function (stylesArg, name$$1) {\n return styles.serialize(stylesArg, name$$1);\n };\n var addStyle = function (cssText) {\n var head, styleElm;\n if (self$$1 !== DOMUtils.DOM && doc === document) {\n if (addedStyles[cssText]) {\n return;\n }\n addedStyles[cssText] = true;\n }\n styleElm = doc.getElementById('mceDefaultStyles');\n if (!styleElm) {\n styleElm = doc.createElement('style');\n styleElm.id = 'mceDefaultStyles';\n styleElm.type = 'text/css';\n head = doc.getElementsByTagName('head')[0];\n if (head.firstChild) {\n head.insertBefore(styleElm, head.firstChild);\n } else {\n head.appendChild(styleElm);\n }\n }\n if (styleElm.styleSheet) {\n styleElm.styleSheet.cssText += cssText;\n } else {\n styleElm.appendChild(doc.createTextNode(cssText));\n }\n };\n var loadCSS = function (url) {\n var head;\n if (self$$1 !== DOMUtils.DOM && doc === document) {\n DOMUtils.DOM.loadCSS(url);\n return;\n }\n if (!url) {\n url = '';\n }\n head = doc.getElementsByTagName('head')[0];\n each$5(url.split(','), function (url) {\n var link;\n url = $_4ujg4tljkmcwkbk._addCacheSuffix(url);\n if (files[url]) {\n return;\n }\n files[url] = true;\n link = create('link', {\n rel: 'stylesheet',\n href: url\n });\n head.appendChild(link);\n });\n };\n var toggleClass = function (elm, cls, state) {\n $$(elm).toggleClass(cls, state).each(function () {\n if (this.className === '') {\n DomQuery(this).attr('class', null);\n }\n });\n };\n var addClass = function (elm, cls) {\n $$(elm).addClass(cls);\n };\n var removeClass = function (elm, cls) {\n toggleClass(elm, cls, false);\n };\n var hasClass = function (elm, cls) {\n return $$(elm).hasClass(cls);\n };\n var show = function (elm) {\n $$(elm).show();\n };\n var hide = function (elm) {\n $$(elm).hide();\n };\n var isHidden = function (elm) {\n return $$(elm).css('display') === 'none';\n };\n var uniqueId = function (prefix) {\n return (!prefix ? 'mce_' : prefix) + counter++;\n };\n var getOuterHTML = function (elm) {\n var node = typeof elm === 'string' ? get(elm) : elm;\n return $_bjermr1rjkmcwkij.isElement(node) ? node.outerHTML : DomQuery('
').append(DomQuery(node).clone()).html();\n };\n var setOuterHTML = function (elm, html) {\n $$(elm).each(function () {\n try {\n if ('outerHTML' in this) {\n this.outerHTML = html;\n return;\n }\n } catch (ex) {\n }\n remove(DomQuery(this).html(html), true);\n });\n };\n var insertAfter = function (node, reference) {\n var referenceNode = get(reference);\n return run(node, function (node) {\n var parent$$1, nextSibling;\n parent$$1 = referenceNode.parentNode;\n nextSibling = referenceNode.nextSibling;\n if (nextSibling) {\n parent$$1.insertBefore(node, nextSibling);\n } else {\n parent$$1.appendChild(node);\n }\n return node;\n });\n };\n var replace = function (newElm, oldElm, keepChildren) {\n return run(oldElm, function (oldElm) {\n if ($_4ujg4tljkmcwkbk.is(oldElm, 'array')) {\n newElm = newElm.cloneNode(true);\n }\n if (keepChildren) {\n each$5(grep$1(oldElm.childNodes), function (node) {\n newElm.appendChild(node);\n });\n }\n return oldElm.parentNode.replaceChild(newElm, oldElm);\n });\n };\n var rename = function (elm, name$$1) {\n var newElm;\n if (elm.nodeName !== name$$1.toUpperCase()) {\n newElm = create(name$$1);\n each$5(getAttribs(elm), function (attrNode) {\n setAttrib(newElm, attrNode.nodeName, getAttrib(elm, attrNode.nodeName));\n });\n replace(newElm, elm, true);\n }\n return newElm || elm;\n };\n var findCommonAncestor = function (a, b) {\n var ps = a, pe;\n while (ps) {\n pe = b;\n while (pe && ps !== pe) {\n pe = pe.parentNode;\n }\n if (ps === pe) {\n break;\n }\n ps = ps.parentNode;\n }\n if (!ps && a.ownerDocument) {\n return a.ownerDocument.documentElement;\n }\n return ps;\n };\n var toHex = function (rgbVal) {\n return styles.toHex($_4ujg4tljkmcwkbk.trim(rgbVal));\n };\n var isEmpty = function (node, elements) {\n var i, attributes, type, whitespace, walker, name$$1, brCount = 0;\n node = node.firstChild;\n if (node) {\n walker = new TreeWalker(node, node.parentNode);\n elements = elements || (schema ? schema.getNonEmptyElements() : null);\n whitespace = schema ? schema.getWhiteSpaceElements() : {};\n do {\n type = node.nodeType;\n if ($_bjermr1rjkmcwkij.isElement(node)) {\n var bogusVal = node.getAttribute('data-mce-bogus');\n if (bogusVal) {\n node = walker.next(bogusVal === 'all');\n continue;\n }\n name$$1 = node.nodeName.toLowerCase();\n if (elements && elements[name$$1]) {\n if (name$$1 === 'br') {\n brCount++;\n node = walker.next();\n continue;\n }\n return false;\n }\n attributes = getAttribs(node);\n i = attributes.length;\n while (i--) {\n name$$1 = attributes[i].nodeName;\n if (name$$1 === 'name' || name$$1 === 'data-mce-bookmark') {\n return false;\n }\n }\n }\n if (type === 8) {\n return false;\n }\n if (type === 3 && !whiteSpaceRegExp$2.test(node.nodeValue)) {\n return false;\n }\n if (type === 3 && node.parentNode && whitespace[node.parentNode.nodeName] && whiteSpaceRegExp$2.test(node.nodeValue)) {\n return false;\n }\n node = walker.next();\n } while (node);\n }\n return brCount <= 1;\n };\n var createRng = function () {\n return doc.createRange();\n };\n var split = function (parentElm, splitElm, replacementElm) {\n var r = createRng(), bef, aft, pa;\n if (parentElm && splitElm) {\n r.setStart(parentElm.parentNode, findNodeIndex(parentElm));\n r.setEnd(splitElm.parentNode, findNodeIndex(splitElm));\n bef = r.extractContents();\n r = createRng();\n r.setStart(splitElm.parentNode, findNodeIndex(splitElm) + 1);\n r.setEnd(parentElm.parentNode, findNodeIndex(parentElm) + 1);\n aft = r.extractContents();\n pa = parentElm.parentNode;\n pa.insertBefore($_br9sxm1pjkmcwki4.trimNode(self$$1, bef), parentElm);\n if (replacementElm) {\n pa.insertBefore(replacementElm, parentElm);\n } else {\n pa.insertBefore(splitElm, parentElm);\n }\n pa.insertBefore($_br9sxm1pjkmcwki4.trimNode(self$$1, aft), parentElm);\n remove(parentElm);\n return replacementElm || splitElm;\n }\n };\n var bind = function (target, name$$1, func, scope) {\n if ($_4ujg4tljkmcwkbk.isArray(target)) {\n var i = target.length;\n while (i--) {\n target[i] = bind(target[i], name$$1, func, scope);\n }\n return target;\n }\n if (settings.collect && (target === doc || target === win)) {\n boundEvents.push([\n target,\n name$$1,\n func,\n scope\n ]);\n }\n return events.bind(target, name$$1, func, scope || self$$1);\n };\n var unbind = function (target, name$$1, func) {\n var i;\n if ($_4ujg4tljkmcwkbk.isArray(target)) {\n i = target.length;\n while (i--) {\n target[i] = unbind(target[i], name$$1, func);\n }\n return target;\n }\n if (boundEvents && (target === doc || target === win)) {\n i = boundEvents.length;\n while (i--) {\n var item = boundEvents[i];\n if (target === item[0] && (!name$$1 || name$$1 === item[1]) && (!func || func === item[2])) {\n events.unbind(item[0], item[1], item[2]);\n }\n }\n }\n return events.unbind(target, name$$1, func);\n };\n var fire = function (target, name$$1, evt) {\n return events.fire(target, name$$1, evt);\n };\n var getContentEditable = function (node) {\n if (node && $_bjermr1rjkmcwkij.isElement(node)) {\n var contentEditable = node.getAttribute('data-mce-contenteditable');\n if (contentEditable && contentEditable !== 'inherit') {\n return contentEditable;\n }\n return node.contentEditable !== 'inherit' ? node.contentEditable : null;\n } else {\n return null;\n }\n };\n var getContentEditableParent = function (node) {\n var root = getRoot();\n var state = null;\n for (; node && node !== root; node = node.parentNode) {\n state = getContentEditable(node);\n if (state !== null) {\n break;\n }\n }\n return state;\n };\n var destroy = function () {\n if (boundEvents) {\n var i = boundEvents.length;\n while (i--) {\n var item = boundEvents[i];\n events.unbind(item[0], item[1], item[2]);\n }\n }\n if (Sizzle.setDocument) {\n Sizzle.setDocument();\n }\n };\n var isChildOf = function (node, parent$$1) {\n while (node) {\n if (parent$$1 === node) {\n return true;\n }\n node = node.parentNode;\n }\n return false;\n };\n var dumpRng = function (r) {\n return 'startContainer: ' + r.startContainer.nodeName + ', startOffset: ' + r.startOffset + ', endContainer: ' + r.endContainer.nodeName + ', endOffset: ' + r.endOffset;\n };\n var self$$1 = {\n doc: doc,\n settings: settings,\n win: win,\n files: files,\n stdMode: stdMode,\n boxModel: boxModel,\n styleSheetLoader: styleSheetLoader,\n boundEvents: boundEvents,\n styles: styles,\n schema: schema,\n events: events,\n isBlock: isBlock,\n $: $,\n $$: $$,\n root: null,\n clone: clone,\n getRoot: getRoot,\n getViewPort: getViewPort,\n getRect: getRect,\n getSize: getSize,\n getParent: getParent,\n getParents: getParents,\n get: get,\n getNext: getNext,\n getPrev: getPrev,\n select: select,\n is: is,\n add: add,\n create: create,\n createHTML: createHTML,\n createFragment: createFragment,\n remove: remove,\n setStyle: setStyle,\n getStyle: getStyle,\n setStyles: setStyles,\n removeAllAttribs: removeAllAttribs,\n setAttrib: setAttrib,\n setAttribs: setAttribs,\n getAttrib: getAttrib,\n getPos: getPos,\n parseStyle: parseStyle,\n serializeStyle: serializeStyle,\n addStyle: addStyle,\n loadCSS: loadCSS,\n addClass: addClass,\n removeClass: removeClass,\n hasClass: hasClass,\n toggleClass: toggleClass,\n show: show,\n hide: hide,\n isHidden: isHidden,\n uniqueId: uniqueId,\n setHTML: setHTML,\n getOuterHTML: getOuterHTML,\n setOuterHTML: setOuterHTML,\n decode: decode,\n encode: encode,\n insertAfter: insertAfter,\n replace: replace,\n rename: rename,\n findCommonAncestor: findCommonAncestor,\n toHex: toHex,\n run: run,\n getAttribs: getAttribs,\n isEmpty: isEmpty,\n createRng: createRng,\n nodeIndex: findNodeIndex,\n split: split,\n bind: bind,\n unbind: unbind,\n fire: fire,\n getContentEditable: getContentEditable,\n getContentEditableParent: getContentEditableParent,\n destroy: destroy,\n isChildOf: isChildOf,\n dumpRng: dumpRng\n };\n attrHooks = setupAttrHooks(styles, settings, function () {\n return self$$1;\n });\n return self$$1;\n }\n (function (DOMUtils) {\n DOMUtils.DOM = DOMUtils(document);\n DOMUtils.nodeIndex = findNodeIndex;\n }(DOMUtils || (DOMUtils = {})));\n var DOMUtils$1 = DOMUtils;\n\n var DOM = DOMUtils$1.DOM;\n var each$6 = $_4ujg4tljkmcwkbk.each;\n var grep$2 = $_4ujg4tljkmcwkbk.grep;\n var isFunction$1 = function (f) {\n return typeof f === 'function';\n };\n var ScriptLoader = function () {\n var QUEUED = 0;\n var LOADING = 1;\n var LOADED = 2;\n var FAILED = 3;\n var states = {};\n var queue = [];\n var scriptLoadedCallbacks = {};\n var queueLoadedCallbacks = [];\n var loading = 0;\n var loadScript = function (url, success, failure) {\n var dom = DOM;\n var elm, id;\n var done = function () {\n dom.remove(id);\n if (elm) {\n elm.onreadystatechange = elm.onload = elm = null;\n }\n success();\n };\n var error = function () {\n if (isFunction$1(failure)) {\n failure();\n } else {\n if (typeof console !== 'undefined' && console.log) {\n console.log('Failed to load script: ' + url);\n }\n }\n };\n id = dom.uniqueId();\n elm = document.createElement('script');\n elm.id = id;\n elm.type = 'text/javascript';\n elm.src = $_4ujg4tljkmcwkbk._addCacheSuffix(url);\n elm.onload = done;\n elm.onerror = error;\n (document.getElementsByTagName('head')[0] || document.body).appendChild(elm);\n };\n this.isDone = function (url) {\n return states[url] === LOADED;\n };\n this.markDone = function (url) {\n states[url] = LOADED;\n };\n this.add = this.load = function (url, success, scope, failure) {\n var state = states[url];\n if (state === undefined) {\n queue.push(url);\n states[url] = QUEUED;\n }\n if (success) {\n if (!scriptLoadedCallbacks[url]) {\n scriptLoadedCallbacks[url] = [];\n }\n scriptLoadedCallbacks[url].push({\n success: success,\n failure: failure,\n scope: scope || this\n });\n }\n };\n this.remove = function (url) {\n delete states[url];\n delete scriptLoadedCallbacks[url];\n };\n this.loadQueue = function (success, scope, failure) {\n this.loadScripts(queue, success, scope, failure);\n };\n this.loadScripts = function (scripts, success, scope, failure) {\n var loadScripts;\n var failures = [];\n var execCallbacks = function (name$$1, url) {\n each$6(scriptLoadedCallbacks[url], function (callback) {\n if (isFunction$1(callback[name$$1])) {\n callback[name$$1].call(callback.scope);\n }\n });\n scriptLoadedCallbacks[url] = undefined;\n };\n queueLoadedCallbacks.push({\n success: success,\n failure: failure,\n scope: scope || this\n });\n loadScripts = function () {\n var loadingScripts = grep$2(scripts);\n scripts.length = 0;\n each$6(loadingScripts, function (url) {\n if (states[url] === LOADED) {\n execCallbacks('success', url);\n return;\n }\n if (states[url] === FAILED) {\n execCallbacks('failure', url);\n return;\n }\n if (states[url] !== LOADING) {\n states[url] = LOADING;\n loading++;\n loadScript(url, function () {\n states[url] = LOADED;\n loading--;\n execCallbacks('success', url);\n loadScripts();\n }, function () {\n states[url] = FAILED;\n loading--;\n failures.push(url);\n execCallbacks('failure', url);\n loadScripts();\n });\n }\n });\n if (!loading) {\n var notifyCallbacks = queueLoadedCallbacks.slice(0);\n queueLoadedCallbacks.length = 0;\n each$6(notifyCallbacks, function (callback) {\n if (failures.length === 0) {\n if (isFunction$1(callback.success)) {\n callback.success.call(callback.scope);\n }\n } else {\n if (isFunction$1(callback.failure)) {\n callback.failure.call(callback.scope, failures);\n }\n }\n });\n }\n };\n loadScripts();\n };\n };\n ScriptLoader.ScriptLoader = new ScriptLoader();\n\n var each$7 = $_4ujg4tljkmcwkbk.each;\n function AddOnManager() {\n var _this = this;\n var items = [];\n var urls = {};\n var lookup = {};\n var _listeners = [];\n var get = function (name) {\n if (lookup[name]) {\n return lookup[name].instance;\n }\n return undefined;\n };\n var dependencies = function (name) {\n var result;\n if (lookup[name]) {\n result = lookup[name].dependencies;\n }\n return result || [];\n };\n var requireLangPack = function (name, languages) {\n var language = AddOnManager.language;\n if (language && AddOnManager.languageLoad !== false) {\n if (languages) {\n languages = ',' + languages + ',';\n if (languages.indexOf(',' + language.substr(0, 2) + ',') !== -1) {\n language = language.substr(0, 2);\n } else if (languages.indexOf(',' + language + ',') === -1) {\n return;\n }\n }\n ScriptLoader.ScriptLoader.add(urls[name] + '/langs/' + language + '.js');\n }\n };\n var add = function (id, addOn, dependencies) {\n items.push(addOn);\n lookup[id] = {\n instance: addOn,\n dependencies: dependencies\n };\n var result = partition(_listeners, function (listener) {\n return listener.name === id;\n });\n _listeners = result.fail;\n each$7(result.pass, function (listener) {\n listener.callback();\n });\n return addOn;\n };\n var remove = function (name) {\n delete urls[name];\n delete lookup[name];\n };\n var createUrl = function (baseUrl, dep) {\n if (typeof dep === 'object') {\n return dep;\n }\n return typeof baseUrl === 'string' ? {\n prefix: '',\n resource: dep,\n suffix: ''\n } : {\n prefix: baseUrl.prefix,\n resource: dep,\n suffix: baseUrl.suffix\n };\n };\n var addComponents = function (pluginName, scripts) {\n var pluginUrl = _this.urls[pluginName];\n each$7(scripts, function (script) {\n ScriptLoader.ScriptLoader.add(pluginUrl + '/' + script);\n });\n };\n var loadDependencies = function (name, addOnUrl, success, scope) {\n var deps = dependencies(name);\n each$7(deps, function (dep) {\n var newUrl = createUrl(addOnUrl, dep);\n load(newUrl.resource, newUrl, undefined, undefined);\n });\n if (success) {\n if (scope) {\n success.call(scope);\n } else {\n success.call(ScriptLoader);\n }\n }\n };\n var load = function (name, addOnUrl, success, scope, failure) {\n if (urls[name]) {\n return;\n }\n var urlString = typeof addOnUrl === 'string' ? addOnUrl : addOnUrl.prefix + addOnUrl.resource + addOnUrl.suffix;\n if (urlString.indexOf('/') !== 0 && urlString.indexOf('://') === -1) {\n urlString = AddOnManager.baseURL + '/' + urlString;\n }\n urls[name] = urlString.substring(0, urlString.lastIndexOf('/'));\n if (lookup[name]) {\n loadDependencies(name, addOnUrl, success, scope);\n } else {\n ScriptLoader.ScriptLoader.add(urlString, function () {\n return loadDependencies(name, addOnUrl, success, scope);\n }, scope, failure);\n }\n };\n var waitFor = function (name, callback) {\n if (lookup.hasOwnProperty(name)) {\n callback();\n } else {\n _listeners.push({\n name: name,\n callback: callback\n });\n }\n };\n return {\n items: items,\n urls: urls,\n lookup: lookup,\n _listeners: _listeners,\n get: get,\n dependencies: dependencies,\n requireLangPack: requireLangPack,\n add: add,\n remove: remove,\n createUrl: createUrl,\n addComponents: addComponents,\n load: load,\n waitFor: waitFor\n };\n }\n (function (AddOnManager) {\n AddOnManager.PluginManager = AddOnManager();\n AddOnManager.ThemeManager = AddOnManager();\n }(AddOnManager || (AddOnManager = {})));\n\n var before = function (marker, element) {\n var parent = $_ca6pc118jkmcwkfs.parent(marker);\n parent.each(function (v) {\n v.dom().insertBefore(element.dom(), marker.dom());\n });\n };\n var after = function (marker, element) {\n var sibling = $_ca6pc118jkmcwkfs.nextSibling(marker);\n sibling.fold(function () {\n var parent = $_ca6pc118jkmcwkfs.parent(marker);\n parent.each(function (v) {\n append(v, element);\n });\n }, function (v) {\n before(v, element);\n });\n };\n var prepend = function (parent, element) {\n var firstChild = $_ca6pc118jkmcwkfs.firstChild(parent);\n firstChild.fold(function () {\n append(parent, element);\n }, function (v) {\n parent.dom().insertBefore(element.dom(), v.dom());\n });\n };\n var append = function (parent, element) {\n parent.dom().appendChild(element.dom());\n };\n var appendAt = function (parent, element, index) {\n $_ca6pc118jkmcwkfs.child(parent, index).fold(function () {\n append(parent, element);\n }, function (v) {\n before(v, element);\n });\n };\n var wrap$1 = function (element, wrapper) {\n before(element, wrapper);\n append(wrapper, element);\n };\n var $_f4qt4v1yjkmcwkl2 = {\n before: before,\n after: after,\n prepend: prepend,\n append: append,\n appendAt: appendAt,\n wrap: wrap$1\n };\n\n var before$1 = function (marker, elements) {\n each(elements, function (x) {\n $_f4qt4v1yjkmcwkl2.before(marker, x);\n });\n };\n var after$1 = function (marker, elements) {\n each(elements, function (x, i) {\n var e = i === 0 ? marker : elements[i - 1];\n $_f4qt4v1yjkmcwkl2.after(e, x);\n });\n };\n var prepend$1 = function (parent, elements) {\n each(elements.slice().reverse(), function (x) {\n $_f4qt4v1yjkmcwkl2.prepend(parent, x);\n });\n };\n var append$1 = function (parent, elements) {\n each(elements, function (x) {\n $_f4qt4v1yjkmcwkl2.append(parent, x);\n });\n };\n var $_1ev7t1xjkmcwkky = {\n before: before$1,\n after: after$1,\n prepend: prepend$1,\n append: append$1\n };\n\n var empty = function (element) {\n element.dom().textContent = '';\n each($_ca6pc118jkmcwkfs.children(element), function (rogue) {\n remove$2(rogue);\n });\n };\n var remove$2 = function (element) {\n var dom = element.dom();\n if (dom.parentNode !== null)\n dom.parentNode.removeChild(dom);\n };\n var unwrap = function (wrapper) {\n var children = $_ca6pc118jkmcwkfs.children(wrapper);\n if (children.length > 0)\n $_1ev7t1xjkmcwkky.before(wrapper, children);\n remove$2(wrapper);\n };\n var $_eualm21wjkmcwkku = {\n empty: empty,\n remove: remove$2,\n unwrap: unwrap\n };\n\n var first$1 = function (fn, rate) {\n var timer = null;\n var cancel = function () {\n if (timer !== null) {\n clearTimeout(timer);\n timer = null;\n }\n };\n var throttle = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n if (timer === null) {\n timer = setTimeout(function () {\n fn.apply(null, args);\n timer = null;\n }, rate);\n }\n };\n return {\n cancel: cancel,\n throttle: throttle\n };\n };\n var last$3 = function (fn, rate) {\n var timer = null;\n var cancel = function () {\n if (timer !== null) {\n clearTimeout(timer);\n timer = null;\n }\n };\n var throttle = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n if (timer !== null)\n clearTimeout(timer);\n timer = setTimeout(function () {\n fn.apply(null, args);\n timer = null;\n }, rate);\n };\n return {\n cancel: cancel,\n throttle: throttle\n };\n };\n\n var Cell = function (initial) {\n var value = initial;\n var get = function () {\n return value;\n };\n var set = function (v) {\n value = v;\n };\n var clone = function () {\n return Cell(get());\n };\n return {\n get: get,\n set: set,\n clone: clone\n };\n };\n\n function Toggler (turnOff, turnOn, initial) {\n var active = initial || false;\n var on = function () {\n turnOn();\n active = true;\n };\n var off = function () {\n turnOff();\n active = false;\n };\n var toggle = function () {\n var f = active ? off : on;\n f();\n };\n var isOn = function () {\n return active;\n };\n return {\n on: on,\n off: off,\n toggle: toggle,\n isOn: isOn\n };\n }\n\n var read = function (element, attr) {\n var value = $_29helg15jkmcwkf0.get(element, attr);\n return value === undefined || value === '' ? [] : value.split(' ');\n };\n var add = function (element, attr, id) {\n var old = read(element, attr);\n var nu = old.concat([id]);\n $_29helg15jkmcwkf0.set(element, attr, nu.join(' '));\n return true;\n };\n var remove$3 = function (element, attr, id) {\n var nu = filter(read(element, attr), function (v) {\n return v !== id;\n });\n if (nu.length > 0)\n $_29helg15jkmcwkf0.set(element, attr, nu.join(' '));\n else\n $_29helg15jkmcwkf0.remove(element, attr);\n return false;\n };\n var $_4m1njo26jkmcwkme = {\n read: read,\n add: add,\n remove: remove$3\n };\n\n var supports = function (element) {\n return element.dom().classList !== undefined;\n };\n var get$2 = function (element) {\n return $_4m1njo26jkmcwkme.read(element, 'class');\n };\n var add$1 = function (element, clazz) {\n return $_4m1njo26jkmcwkme.add(element, 'class', clazz);\n };\n var remove$4 = function (element, clazz) {\n return $_4m1njo26jkmcwkme.remove(element, 'class', clazz);\n };\n var toggle = function (element, clazz) {\n if (contains(get$2(element), clazz)) {\n return remove$4(element, clazz);\n } else {\n return add$1(element, clazz);\n }\n };\n var $_ewhsr825jkmcwkm2 = {\n get: get$2,\n add: add$1,\n remove: remove$4,\n toggle: toggle,\n supports: supports\n };\n\n var add$2 = function (element, clazz) {\n if ($_ewhsr825jkmcwkm2.supports(element))\n element.dom().classList.add(clazz);\n else\n $_ewhsr825jkmcwkm2.add(element, clazz);\n };\n var cleanClass = function (element) {\n var classList = $_ewhsr825jkmcwkm2.supports(element) ? element.dom().classList : $_ewhsr825jkmcwkm2.get(element);\n if (classList.length === 0) {\n $_29helg15jkmcwkf0.remove(element, 'class');\n }\n };\n var remove$5 = function (element, clazz) {\n if ($_ewhsr825jkmcwkm2.supports(element)) {\n var classList = element.dom().classList;\n classList.remove(clazz);\n } else\n $_ewhsr825jkmcwkm2.remove(element, clazz);\n cleanClass(element);\n };\n var toggle$1 = function (element, clazz) {\n return $_ewhsr825jkmcwkm2.supports(element) ? element.dom().classList.toggle(clazz) : $_ewhsr825jkmcwkm2.toggle(element, clazz);\n };\n var toggler = function (element, clazz) {\n var hasClasslist = $_ewhsr825jkmcwkm2.supports(element);\n var classList = element.dom().classList;\n var off = function () {\n if (hasClasslist)\n classList.remove(clazz);\n else\n $_ewhsr825jkmcwkm2.remove(element, clazz);\n };\n var on = function () {\n if (hasClasslist)\n classList.add(clazz);\n else\n $_ewhsr825jkmcwkm2.add(element, clazz);\n };\n return Toggler(off, on, has$1(element, clazz));\n };\n var has$1 = function (element, clazz) {\n return $_ewhsr825jkmcwkm2.supports(element) && element.dom().classList.contains(clazz);\n };\n var $_ftm4v023jkmcwklz = {\n add: add$2,\n remove: remove$5,\n toggle: toggle$1,\n toggler: toggler,\n has: has$1\n };\n\n var all$1 = function (predicate) {\n return descendants($_g4uup916jkmcwkfg.body(), predicate);\n };\n var ancestors = function (scope, predicate, isRoot) {\n return filter($_ca6pc118jkmcwkfs.parents(scope, isRoot), predicate);\n };\n var siblings$1 = function (scope, predicate) {\n return filter($_ca6pc118jkmcwkfs.siblings(scope), predicate);\n };\n var children$1 = function (scope, predicate) {\n return filter($_ca6pc118jkmcwkfs.children(scope), predicate);\n };\n var descendants = function (scope, predicate) {\n var result = [];\n each($_ca6pc118jkmcwkfs.children(scope), function (x) {\n if (predicate(x)) {\n result = result.concat([x]);\n }\n result = result.concat(descendants(x, predicate));\n });\n return result;\n };\n var $_733l9k28jkmcwkmj = {\n all: all$1,\n ancestors: ancestors,\n siblings: siblings$1,\n children: children$1,\n descendants: descendants\n };\n\n var all$2 = function (selector) {\n return $_4jv6d81gjkmcwkgv.all(selector);\n };\n var ancestors$1 = function (scope, selector, isRoot) {\n return $_733l9k28jkmcwkmj.ancestors(scope, function (e) {\n return $_4jv6d81gjkmcwkgv.is(e, selector);\n }, isRoot);\n };\n var siblings$2 = function (scope, selector) {\n return $_733l9k28jkmcwkmj.siblings(scope, function (e) {\n return $_4jv6d81gjkmcwkgv.is(e, selector);\n });\n };\n var children$2 = function (scope, selector) {\n return $_733l9k28jkmcwkmj.children(scope, function (e) {\n return $_4jv6d81gjkmcwkgv.is(e, selector);\n });\n };\n var descendants$1 = function (scope, selector) {\n return $_4jv6d81gjkmcwkgv.all(selector, scope);\n };\n var $_2gqm0n27jkmcwkmi = {\n all: all$2,\n ancestors: ancestors$1,\n siblings: siblings$2,\n children: children$2,\n descendants: descendants$1\n };\n\n function ClosestOrAncestor (is, ancestor, scope, a, isRoot) {\n return is(scope, a) ? Option.some(scope) : isFunction(isRoot) && isRoot(scope) ? Option.none() : ancestor(scope, a, isRoot);\n }\n\n var first$2 = function (predicate) {\n return descendant($_g4uup916jkmcwkfg.body(), predicate);\n };\n var ancestor = function (scope, predicate, isRoot) {\n var element = scope.dom();\n var stop = isFunction(isRoot) ? isRoot : constant(false);\n while (element.parentNode) {\n element = element.parentNode;\n var el = Element$$1.fromDom(element);\n if (predicate(el))\n return Option.some(el);\n else if (stop(el))\n break;\n }\n return Option.none();\n };\n var closest = function (scope, predicate, isRoot) {\n var is = function (scope) {\n return predicate(scope);\n };\n return ClosestOrAncestor(is, ancestor, scope, predicate, isRoot);\n };\n var sibling$1 = function (scope, predicate) {\n var element = scope.dom();\n if (!element.parentNode)\n return Option.none();\n return child$1(Element$$1.fromDom(element.parentNode), function (x) {\n return !$_e4hu6h1ejkmcwkgj.eq(scope, x) && predicate(x);\n });\n };\n var child$1 = function (scope, predicate) {\n var result = find(scope.dom().childNodes, compose(predicate, Element$$1.fromDom));\n return result.map(Element$$1.fromDom);\n };\n var descendant = function (scope, predicate) {\n var descend = function (node) {\n for (var i = 0; i < node.childNodes.length; i++) {\n if (predicate(Element$$1.fromDom(node.childNodes[i])))\n return Option.some(Element$$1.fromDom(node.childNodes[i]));\n var res = descend(node.childNodes[i]);\n if (res.isSome())\n return res;\n }\n return Option.none();\n };\n return descend(scope.dom());\n };\n var $_253nd92ajkmcwkmp = {\n first: first$2,\n ancestor: ancestor,\n closest: closest,\n sibling: sibling$1,\n child: child$1,\n descendant: descendant\n };\n\n var first$3 = function (selector) {\n return $_4jv6d81gjkmcwkgv.one(selector);\n };\n var ancestor$1 = function (scope, selector, isRoot) {\n return $_253nd92ajkmcwkmp.ancestor(scope, function (e) {\n return $_4jv6d81gjkmcwkgv.is(e, selector);\n }, isRoot);\n };\n var sibling$2 = function (scope, selector) {\n return $_253nd92ajkmcwkmp.sibling(scope, function (e) {\n return $_4jv6d81gjkmcwkgv.is(e, selector);\n });\n };\n var child$2 = function (scope, selector) {\n return $_253nd92ajkmcwkmp.child(scope, function (e) {\n return $_4jv6d81gjkmcwkgv.is(e, selector);\n });\n };\n var descendant$1 = function (scope, selector) {\n return $_4jv6d81gjkmcwkgv.one(selector, scope);\n };\n var closest$1 = function (scope, selector, isRoot) {\n return ClosestOrAncestor($_4jv6d81gjkmcwkgv.is, ancestor$1, scope, selector, isRoot);\n };\n var $_4ki4d929jkmcwkmn = {\n first: first$3,\n ancestor: ancestor$1,\n sibling: sibling$2,\n child: child$2,\n descendant: descendant$1,\n closest: closest$1\n };\n\n var annotation = constant('mce-annotation');\n var dataAnnotation = constant('data-mce-annotation');\n var dataAnnotationId = constant('data-mce-annotation-uid');\n\n var identify = function (editor, annotationName) {\n var rng = editor.selection.getRng();\n var start = Element$$1.fromDom(rng.startContainer);\n var root = Element$$1.fromDom(editor.getBody());\n var selector = annotationName.fold(function () {\n return '.' + annotation();\n }, function (an) {\n return '[' + dataAnnotation() + '=\"' + an + '\"]';\n });\n var newStart = $_ca6pc118jkmcwkfs.child(start, rng.startOffset).getOr(start);\n var closest = $_4ki4d929jkmcwkmn.closest(newStart, selector, function (n) {\n return $_e4hu6h1ejkmcwkgj.eq(n, root);\n });\n var getAttr = function (c, property) {\n if ($_29helg15jkmcwkf0.has(c, property)) {\n return Option.some($_29helg15jkmcwkf0.get(c, property));\n } else {\n return Option.none();\n }\n };\n return closest.bind(function (c) {\n return getAttr(c, '' + dataAnnotationId()).bind(function (uid) {\n return getAttr(c, '' + dataAnnotation()).map(function (name) {\n var elements = findMarkers(editor, uid);\n return {\n uid: uid,\n name: name,\n elements: elements\n };\n });\n });\n });\n };\n var isAnnotation = function (elem) {\n return $_2xwdjv11jkmcwke0.isElement(elem) && $_ftm4v023jkmcwklz.has(elem, annotation());\n };\n var findMarkers = function (editor, uid) {\n var body = Element$$1.fromDom(editor.getBody());\n return $_2gqm0n27jkmcwkmi.descendants(body, '[' + dataAnnotationId() + '=\"' + uid + '\"]');\n };\n var findAll = function (editor, name) {\n var body = Element$$1.fromDom(editor.getBody());\n var markers = $_2gqm0n27jkmcwkmi.descendants(body, '[' + dataAnnotation() + '=\"' + name + '\"]');\n var directory = {};\n each(markers, function (m) {\n var uid = $_29helg15jkmcwkf0.get(m, dataAnnotationId());\n var nodesAlready = directory.hasOwnProperty(uid) ? directory[uid] : [];\n directory[uid] = nodesAlready.concat([m]);\n });\n return directory;\n };\n\n var setup = function (editor, registry) {\n var changeCallbacks = Cell({});\n var initData = function () {\n return {\n listeners: [],\n previous: Cell(Option.none())\n };\n };\n var withCallbacks = function (name, f) {\n updateCallbacks(name, function (data) {\n f(data);\n return data;\n });\n };\n var updateCallbacks = function (name, f) {\n var callbackMap = changeCallbacks.get();\n var data = callbackMap.hasOwnProperty(name) ? callbackMap[name] : initData();\n var outputData = f(data);\n callbackMap[name] = outputData;\n changeCallbacks.set(callbackMap);\n };\n var fireCallbacks = function (name, uid, elements) {\n withCallbacks(name, function (data) {\n each(data.listeners, function (f) {\n return f(true, name, {\n uid: uid,\n nodes: map(elements, function (elem) {\n return elem.dom();\n })\n });\n });\n });\n };\n var fireNoAnnotation = function (name) {\n withCallbacks(name, function (data) {\n each(data.listeners, function (f) {\n return f(false, name);\n });\n });\n };\n var onNodeChange = last$3(function () {\n var callbackMap = changeCallbacks.get();\n var annotations = sort(keys(callbackMap));\n each(annotations, function (name) {\n updateCallbacks(name, function (data) {\n var prev = data.previous.get();\n identify(editor, Option.some(name)).fold(function () {\n if (prev.isSome()) {\n fireNoAnnotation(name);\n data.previous.set(Option.none());\n }\n }, function (_a) {\n var uid = _a.uid, name = _a.name, elements = _a.elements;\n if (!prev.is(uid)) {\n fireCallbacks(name, uid, elements);\n data.previous.set(Option.some(uid));\n }\n });\n return {\n previous: data.previous,\n listeners: data.listeners\n };\n });\n });\n }, 30);\n editor.on('remove', function () {\n onNodeChange.cancel();\n });\n editor.on('nodeChange', function () {\n onNodeChange.throttle();\n });\n var addListener = function (name, f) {\n updateCallbacks(name, function (data) {\n return {\n previous: data.previous,\n listeners: data.listeners.concat([f])\n };\n });\n };\n return { addListener: addListener };\n };\n\n var setup$1 = function (editor, registry) {\n var identifyParserNode = function (span) {\n var optAnnotation = Option.from(span.attributes.map[dataAnnotation()]);\n return optAnnotation.bind(registry.lookup);\n };\n editor.on('init', function () {\n editor.serializer.addNodeFilter('span', function (spans) {\n each(spans, function (span) {\n identifyParserNode(span).each(function (settings) {\n if (settings.persistent === false) {\n span.unwrap();\n }\n });\n });\n });\n });\n };\n\n var create$1 = function () {\n var annotations = {};\n var register = function (name, settings) {\n annotations[name] = {\n name: name,\n settings: settings\n };\n };\n var lookup = function (name) {\n return annotations.hasOwnProperty(name) ? Option.from(annotations[name]).map(function (a) {\n return a.settings;\n }) : Option.none();\n };\n return {\n register: register,\n lookup: lookup\n };\n };\n\n var unique = 0;\n var generate = function (prefix) {\n var date = new Date();\n var time = date.getTime();\n var random = Math.floor(Math.random() * 1000000000);\n unique++;\n return prefix + '_' + random + unique + String(time);\n };\n\n var add$3 = function (element, classes) {\n each(classes, function (x) {\n $_ftm4v023jkmcwklz.add(element, x);\n });\n };\n var remove$6 = function (element, classes) {\n each(classes, function (x) {\n $_ftm4v023jkmcwklz.remove(element, x);\n });\n };\n var toggle$2 = function (element, classes) {\n each(classes, function (x) {\n $_ftm4v023jkmcwklz.toggle(element, x);\n });\n };\n var hasAll = function (element, classes) {\n return forall(classes, function (clazz) {\n return $_ftm4v023jkmcwklz.has(element, clazz);\n });\n };\n var hasAny = function (element, classes) {\n return exists(classes, function (clazz) {\n return $_ftm4v023jkmcwklz.has(element, clazz);\n });\n };\n var getNative = function (element) {\n var classList = element.dom().classList;\n var r = new Array(classList.length);\n for (var i = 0; i < classList.length; i++) {\n r[i] = classList.item(i);\n }\n return r;\n };\n var get$3 = function (element) {\n return $_ewhsr825jkmcwkm2.supports(element) ? getNative(element) : $_ewhsr825jkmcwkm2.get(element);\n };\n var $_dw1myr2hjkmcwko1 = {\n add: add$3,\n remove: remove$6,\n toggle: toggle$2,\n hasAll: hasAll,\n hasAny: hasAny,\n get: get$3\n };\n\n var clone$1 = function (original, deep) {\n return Element$$1.fromDom(original.dom().cloneNode(deep));\n };\n var shallow = function (original) {\n return clone$1(original, false);\n };\n var deep = function (original) {\n return clone$1(original, true);\n };\n var shallowAs = function (original, tag) {\n var nu = Element$$1.fromTag(tag);\n var attributes = $_29helg15jkmcwkf0.clone(original);\n $_29helg15jkmcwkf0.setAll(nu, attributes);\n return nu;\n };\n var copy$1 = function (original, tag) {\n var nu = shallowAs(original, tag);\n var cloneChildren = $_ca6pc118jkmcwkfs.children(deep(original));\n $_1ev7t1xjkmcwkky.append(nu, cloneChildren);\n return nu;\n };\n var mutate = function (original, tag) {\n var nu = shallowAs(original, tag);\n $_f4qt4v1yjkmcwkl2.before(original, nu);\n var children = $_ca6pc118jkmcwkfs.children(original);\n $_1ev7t1xjkmcwkky.append(nu, children);\n $_eualm21wjkmcwkku.remove(original);\n return nu;\n };\n var $_44uvy22ijkmcwko5 = {\n shallow: shallow,\n shallowAs: shallowAs,\n deep: deep,\n copy: copy$1,\n mutate: mutate\n };\n\n var slice$3 = [].slice;\n var constant$1 = function (value) {\n return function () {\n return value;\n };\n };\n var negate = function (predicate) {\n return function (x) {\n return !predicate(x);\n };\n };\n var compose$2 = function (f, g) {\n return function (x) {\n return f(g(x));\n };\n };\n var or = function () {\n var x = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n x[_i] = arguments[_i];\n }\n var args = slice$3.call(arguments);\n return function (x) {\n for (var i = 0; i < args.length; i++) {\n if (args[i](x)) {\n return true;\n }\n }\n return false;\n };\n };\n var and = function () {\n var x = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n x[_i] = arguments[_i];\n }\n var args = slice$3.call(arguments);\n return function (x) {\n for (var i = 0; i < args.length; i++) {\n if (!args[i](x)) {\n return false;\n }\n }\n return true;\n };\n };\n var curry$1 = function (fn) {\n var x = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n x[_i - 1] = arguments[_i];\n }\n var args = slice$3.call(arguments);\n if (args.length - 1 >= fn.length) {\n return fn.apply(this, args.slice(1));\n }\n return function () {\n var tempArgs = args.concat([].slice.call(arguments));\n return curry$1.apply(this, tempArgs);\n };\n };\n var noop$1 = function () {\n };\n var $_fl2rax2ljkmcwkot = {\n constant: constant$1,\n negate: negate,\n and: and,\n or: or,\n curry: curry$1,\n compose: compose$2,\n noop: noop$1\n };\n\n var ZWSP = '\\uFEFF';\n var isZwsp = function (chr) {\n return chr === ZWSP;\n };\n var trim$3 = function (text) {\n return text.replace(new RegExp(ZWSP, 'g'), '');\n };\n var $_cadvcr2pjkmcwkph = {\n isZwsp: isZwsp,\n ZWSP: ZWSP,\n trim: trim$3\n };\n\n var isElement$2 = $_bjermr1rjkmcwkij.isElement;\n var isText$2 = $_bjermr1rjkmcwkij.isText;\n var isCaretContainerBlock = function (node) {\n if (isText$2(node)) {\n node = node.parentNode;\n }\n return isElement$2(node) && node.hasAttribute('data-mce-caret');\n };\n var isCaretContainerInline = function (node) {\n return isText$2(node) && $_cadvcr2pjkmcwkph.isZwsp(node.data);\n };\n var isCaretContainer = function (node) {\n return isCaretContainerBlock(node) || isCaretContainerInline(node);\n };\n var hasContent = function (node) {\n return node.firstChild !== node.lastChild || !$_bjermr1rjkmcwkij.isBr(node.firstChild);\n };\n var insertInline = function (node, before) {\n var doc, sibling, textNode, parentNode;\n doc = node.ownerDocument;\n textNode = doc.createTextNode($_cadvcr2pjkmcwkph.ZWSP);\n parentNode = node.parentNode;\n if (!before) {\n sibling = node.nextSibling;\n if (isText$2(sibling)) {\n if (isCaretContainer(sibling)) {\n return sibling;\n }\n if (startsWithCaretContainer(sibling)) {\n sibling.splitText(1);\n return sibling;\n }\n }\n if (node.nextSibling) {\n parentNode.insertBefore(textNode, node.nextSibling);\n } else {\n parentNode.appendChild(textNode);\n }\n } else {\n sibling = node.previousSibling;\n if (isText$2(sibling)) {\n if (isCaretContainer(sibling)) {\n return sibling;\n }\n if (endsWithCaretContainer(sibling)) {\n return sibling.splitText(sibling.data.length - 1);\n }\n }\n parentNode.insertBefore(textNode, node);\n }\n return textNode;\n };\n var isBeforeInline = function (pos) {\n var container = pos.container();\n return pos && $_bjermr1rjkmcwkij.isText(container) && container.data.charAt(pos.offset()) === $_cadvcr2pjkmcwkph.ZWSP;\n };\n var isAfterInline = function (pos) {\n var container = pos.container();\n return pos && $_bjermr1rjkmcwkij.isText(container) && container.data.charAt(pos.offset() - 1) === $_cadvcr2pjkmcwkph.ZWSP;\n };\n var createBogusBr = function () {\n var br = document.createElement('br');\n br.setAttribute('data-mce-bogus', '1');\n return br;\n };\n var insertBlock = function (blockName, node, before) {\n var doc, blockNode, parentNode;\n doc = node.ownerDocument;\n blockNode = doc.createElement(blockName);\n blockNode.setAttribute('data-mce-caret', before ? 'before' : 'after');\n blockNode.setAttribute('data-mce-bogus', 'all');\n blockNode.appendChild(createBogusBr());\n parentNode = node.parentNode;\n if (!before) {\n if (node.nextSibling) {\n parentNode.insertBefore(blockNode, node.nextSibling);\n } else {\n parentNode.appendChild(blockNode);\n }\n } else {\n parentNode.insertBefore(blockNode, node);\n }\n return blockNode;\n };\n var startsWithCaretContainer = function (node) {\n return isText$2(node) && node.data[0] === $_cadvcr2pjkmcwkph.ZWSP;\n };\n var endsWithCaretContainer = function (node) {\n return isText$2(node) && node.data[node.data.length - 1] === $_cadvcr2pjkmcwkph.ZWSP;\n };\n var trimBogusBr = function (elm) {\n var brs = elm.getElementsByTagName('br');\n var lastBr = brs[brs.length - 1];\n if ($_bjermr1rjkmcwkij.isBogus(lastBr)) {\n lastBr.parentNode.removeChild(lastBr);\n }\n };\n var showCaretContainerBlock = function (caretContainer) {\n if (caretContainer && caretContainer.hasAttribute('data-mce-caret')) {\n trimBogusBr(caretContainer);\n caretContainer.removeAttribute('data-mce-caret');\n caretContainer.removeAttribute('data-mce-bogus');\n caretContainer.removeAttribute('style');\n caretContainer.removeAttribute('_moz_abspos');\n return caretContainer;\n }\n return null;\n };\n var isRangeInCaretContainerBlock = function (range) {\n return isCaretContainerBlock(range.startContainer);\n };\n\n var isContentEditableTrue$1 = $_bjermr1rjkmcwkij.isContentEditableTrue;\n var isContentEditableFalse$1 = $_bjermr1rjkmcwkij.isContentEditableFalse;\n var isBr$2 = $_bjermr1rjkmcwkij.isBr;\n var isText$3 = $_bjermr1rjkmcwkij.isText;\n var isInvalidTextElement = $_bjermr1rjkmcwkij.matchNodeNames('script style textarea');\n var isAtomicInline = $_bjermr1rjkmcwkij.matchNodeNames('img input textarea hr iframe video audio object');\n var isTable$1 = $_bjermr1rjkmcwkij.matchNodeNames('table');\n var isCaretContainer$1 = isCaretContainer;\n var isCaretCandidate = function (node) {\n if (isCaretContainer$1(node)) {\n return false;\n }\n if (isText$3(node)) {\n if (isInvalidTextElement(node.parentNode)) {\n return false;\n }\n return true;\n }\n return isAtomicInline(node) || isBr$2(node) || isTable$1(node) || isNonUiContentEditableFalse(node);\n };\n var isUnselectable = function (node) {\n return $_bjermr1rjkmcwkij.isElement(node) && node.getAttribute('unselectable') === 'true';\n };\n var isNonUiContentEditableFalse = function (node) {\n return isUnselectable(node) === false && isContentEditableFalse$1(node);\n };\n var isInEditable = function (node, root) {\n for (node = node.parentNode; node && node !== root; node = node.parentNode) {\n if (isNonUiContentEditableFalse(node)) {\n return false;\n }\n if (isContentEditableTrue$1(node)) {\n return true;\n }\n }\n return true;\n };\n var isAtomicContentEditableFalse = function (node) {\n if (!isNonUiContentEditableFalse(node)) {\n return false;\n }\n return $_9g1fibmjkmcwkbu.reduce(node.getElementsByTagName('*'), function (result, elm) {\n return result || isContentEditableTrue$1(elm);\n }, false) !== true;\n };\n var isAtomic = function (node) {\n return isAtomicInline(node) || isAtomicContentEditableFalse(node);\n };\n var isEditableCaretCandidate = function (node, root) {\n return isCaretCandidate(node) && isInEditable(node, root);\n };\n\n var round = Math.round;\n var clone$2 = function (rect) {\n if (!rect) {\n return {\n left: 0,\n top: 0,\n bottom: 0,\n right: 0,\n width: 0,\n height: 0\n };\n }\n return {\n left: round(rect.left),\n top: round(rect.top),\n bottom: round(rect.bottom),\n right: round(rect.right),\n width: round(rect.width),\n height: round(rect.height)\n };\n };\n var collapse = function (rect, toStart) {\n rect = clone$2(rect);\n if (toStart) {\n rect.right = rect.left;\n } else {\n rect.left = rect.left + rect.width;\n rect.right = rect.left;\n }\n rect.width = 0;\n return rect;\n };\n var isEqual = function (rect1, rect2) {\n return rect1.left === rect2.left && rect1.top === rect2.top && rect1.bottom === rect2.bottom && rect1.right === rect2.right;\n };\n var isValidOverflow = function (overflowY, rect1, rect2) {\n return overflowY >= 0 && overflowY <= Math.min(rect1.height, rect2.height) / 2;\n };\n var isAbove = function (rect1, rect2) {\n if (rect1.bottom - rect1.height / 2 < rect2.top) {\n return true;\n }\n if (rect1.top > rect2.bottom) {\n return false;\n }\n return isValidOverflow(rect2.top - rect1.bottom, rect1, rect2);\n };\n var isBelow = function (rect1, rect2) {\n if (rect1.top > rect2.bottom) {\n return true;\n }\n if (rect1.bottom < rect2.top) {\n return false;\n }\n return isValidOverflow(rect2.bottom - rect1.top, rect1, rect2);\n };\n var containsXY = function (rect, clientX, clientY) {\n return clientX >= rect.left && clientX <= rect.right && clientY >= rect.top && clientY <= rect.bottom;\n };\n var overflowX = function (outer, inner) {\n if (inner.left > outer.left && inner.right < outer.right) {\n return 0;\n } else {\n return inner.left < outer.left ? inner.left - outer.left : inner.right - outer.right;\n }\n };\n var overflowY = function (outer, inner) {\n if (inner.top > outer.top && inner.bottom < outer.bottom) {\n return 0;\n } else {\n return inner.top < outer.top ? inner.top - outer.top : inner.bottom - outer.bottom;\n }\n };\n var getOverflow = function (outer, inner) {\n return {\n x: overflowX(outer, inner),\n y: overflowY(outer, inner)\n };\n };\n\n var getSelectedNode = function (range) {\n var startContainer = range.startContainer, startOffset = range.startOffset;\n if (startContainer.hasChildNodes() && range.endOffset === startOffset + 1) {\n return startContainer.childNodes[startOffset];\n }\n return null;\n };\n var getNode = function (container, offset) {\n if (container.nodeType === 1 && container.hasChildNodes()) {\n if (offset >= container.childNodes.length) {\n offset = container.childNodes.length - 1;\n }\n container = container.childNodes[offset];\n }\n return container;\n };\n\n var extendingChars = new RegExp('[\\u0300-\\u036f\\u0483-\\u0487\\u0488-\\u0489\\u0591-\\u05bd\\u05bf\\u05c1-\\u05c2\\u05c4-\\u05c5\\u05c7\\u0610-\\u061a' + '\\u064b-\\u065f\\u0670\\u06d6-\\u06dc\\u06df-\\u06e4\\u06e7-\\u06e8\\u06ea-\\u06ed\\u0711\\u0730-\\u074a\\u07a6-\\u07b0' + '\\u07eb-\\u07f3\\u0816-\\u0819\\u081b-\\u0823\\u0825-\\u0827\\u0829-\\u082d\\u0859-\\u085b\\u08E3-\\u0902\\u093a\\u093c' + '\\u0941-\\u0948\\u094d\\u0951-\\u0957\\u0962-\\u0963\\u0981\\u09bc\\u09be\\u09c1-\\u09c4\\u09cd\\u09d7\\u09e2-\\u09e3' + '\\u0a01-\\u0a02\\u0a3c\\u0a41-\\u0a42\\u0a47-\\u0a48\\u0a4b-\\u0a4d\\u0a51\\u0a70-\\u0a71\\u0a75\\u0a81-\\u0a82\\u0abc' + '\\u0ac1-\\u0ac5\\u0ac7-\\u0ac8\\u0acd\\u0ae2-\\u0ae3\\u0b01\\u0b3c\\u0b3e\\u0b3f\\u0b41-\\u0b44\\u0b4d\\u0b56\\u0b57' + '\\u0b62-\\u0b63\\u0b82\\u0bbe\\u0bc0\\u0bcd\\u0bd7\\u0c00\\u0c3e-\\u0c40\\u0c46-\\u0c48\\u0c4a-\\u0c4d\\u0c55-\\u0c56' + '\\u0c62-\\u0c63\\u0c81\\u0cbc\\u0cbf\\u0cc2\\u0cc6\\u0ccc-\\u0ccd\\u0cd5-\\u0cd6\\u0ce2-\\u0ce3\\u0d01\\u0d3e\\u0d41-\\u0d44' + '\\u0d4d\\u0d57\\u0d62-\\u0d63\\u0dca\\u0dcf\\u0dd2-\\u0dd4\\u0dd6\\u0ddf\\u0e31\\u0e34-\\u0e3a\\u0e47-\\u0e4e\\u0eb1\\u0eb4-\\u0eb9' + '\\u0ebb-\\u0ebc\\u0ec8-\\u0ecd\\u0f18-\\u0f19\\u0f35\\u0f37\\u0f39\\u0f71-\\u0f7e\\u0f80-\\u0f84\\u0f86-\\u0f87\\u0f8d-\\u0f97' + '\\u0f99-\\u0fbc\\u0fc6\\u102d-\\u1030\\u1032-\\u1037\\u1039-\\u103a\\u103d-\\u103e\\u1058-\\u1059\\u105e-\\u1060\\u1071-\\u1074' + '\\u1082\\u1085-\\u1086\\u108d\\u109d\\u135d-\\u135f\\u1712-\\u1714\\u1732-\\u1734\\u1752-\\u1753\\u1772-\\u1773\\u17b4-\\u17b5' + '\\u17b7-\\u17bd\\u17c6\\u17c9-\\u17d3\\u17dd\\u180b-\\u180d\\u18a9\\u1920-\\u1922\\u1927-\\u1928\\u1932\\u1939-\\u193b\\u1a17-\\u1a18' + '\\u1a1b\\u1a56\\u1a58-\\u1a5e\\u1a60\\u1a62\\u1a65-\\u1a6c\\u1a73-\\u1a7c\\u1a7f\\u1ab0-\\u1abd\\u1ABE\\u1b00-\\u1b03\\u1b34' + '\\u1b36-\\u1b3a\\u1b3c\\u1b42\\u1b6b-\\u1b73\\u1b80-\\u1b81\\u1ba2-\\u1ba5\\u1ba8-\\u1ba9\\u1bab-\\u1bad\\u1be6\\u1be8-\\u1be9' + '\\u1bed\\u1bef-\\u1bf1\\u1c2c-\\u1c33\\u1c36-\\u1c37\\u1cd0-\\u1cd2\\u1cd4-\\u1ce0\\u1ce2-\\u1ce8\\u1ced\\u1cf4\\u1cf8-\\u1cf9' + '\\u1dc0-\\u1df5\\u1dfc-\\u1dff\\u200c-\\u200d\\u20d0-\\u20dc\\u20DD-\\u20E0\\u20e1\\u20E2-\\u20E4\\u20e5-\\u20f0\\u2cef-\\u2cf1' + '\\u2d7f\\u2de0-\\u2dff\\u302a-\\u302d\\u302e-\\u302f\\u3099-\\u309a\\ua66f\\uA670-\\uA672\\ua674-\\ua67d\\uA69E-\\ua69f\\ua6f0-\\ua6f1' + '\\ua802\\ua806\\ua80b\\ua825-\\ua826\\ua8c4\\ua8e0-\\ua8f1\\ua926-\\ua92d\\ua947-\\ua951\\ua980-\\ua982\\ua9b3\\ua9b6-\\ua9b9\\ua9bc' + '\\ua9e5\\uaa29-\\uaa2e\\uaa31-\\uaa32\\uaa35-\\uaa36\\uaa43\\uaa4c\\uaa7c\\uaab0\\uaab2-\\uaab4\\uaab7-\\uaab8\\uaabe-\\uaabf\\uaac1' + '\\uaaec-\\uaaed\\uaaf6\\uabe5\\uabe8\\uabed\\ufb1e\\ufe00-\\ufe0f\\ufe20-\\uFE2F\\uff9e-\\uff9f]');\n var isExtendingChar = function (ch) {\n return typeof ch === 'string' && ch.charCodeAt(0) >= 768 && extendingChars.test(ch);\n };\n\n var liftN = function (arr, f) {\n var r = [];\n for (var i = 0; i < arr.length; i++) {\n var x = arr[i];\n if (x.isSome()) {\n r.push(x.getOrDie());\n } else {\n return Option.none();\n }\n }\n return Option.some(f.apply(null, r));\n };\n\n var isElement$3 = $_bjermr1rjkmcwkij.isElement;\n var isCaretCandidate$1 = isCaretCandidate;\n var isBlock$1 = $_bjermr1rjkmcwkij.matchStyleValues('display', 'block table');\n var isFloated = $_bjermr1rjkmcwkij.matchStyleValues('float', 'left right');\n var isValidElementCaretCandidate = $_fl2rax2ljkmcwkot.and(isElement$3, isCaretCandidate$1, $_fl2rax2ljkmcwkot.negate(isFloated));\n var isNotPre = $_fl2rax2ljkmcwkot.negate($_bjermr1rjkmcwkij.matchStyleValues('white-space', 'pre pre-line pre-wrap'));\n var isText$4 = $_bjermr1rjkmcwkij.isText;\n var isBr$3 = $_bjermr1rjkmcwkij.isBr;\n var nodeIndex = DOMUtils$1.nodeIndex;\n var resolveIndex = getNode;\n var createRange = function (doc) {\n return 'createRange' in doc ? doc.createRange() : DOMUtils$1.DOM.createRng();\n };\n var isWhiteSpace = function (chr) {\n return chr && /[\\r\\n\\t ]/.test(chr);\n };\n var isRange = function (rng) {\n return !!rng.setStart && !!rng.setEnd;\n };\n var isHiddenWhiteSpaceRange = function (range$$1) {\n var container = range$$1.startContainer;\n var offset = range$$1.startOffset;\n var text;\n if (isWhiteSpace(range$$1.toString()) && isNotPre(container.parentNode) && $_bjermr1rjkmcwkij.isText(container)) {\n text = container.data;\n if (isWhiteSpace(text[offset - 1]) || isWhiteSpace(text[offset + 1])) {\n return true;\n }\n }\n return false;\n };\n var getBrClientRect = function (brNode) {\n var doc = brNode.ownerDocument;\n var rng = createRange(doc);\n var nbsp = doc.createTextNode('\\xA0');\n var parentNode = brNode.parentNode;\n var clientRect;\n parentNode.insertBefore(nbsp, brNode);\n rng.setStart(nbsp, 0);\n rng.setEnd(nbsp, 1);\n clientRect = clone$2(rng.getBoundingClientRect());\n parentNode.removeChild(nbsp);\n return clientRect;\n };\n var getBoundingClientRectWebKitText = function (rng) {\n var sc = rng.startContainer;\n var ec = rng.endContainer;\n var so = rng.startOffset;\n var eo = rng.endOffset;\n if (sc === ec && $_bjermr1rjkmcwkij.isText(ec) && so === 0 && eo === 1) {\n var newRng = rng.cloneRange();\n newRng.setEndAfter(ec);\n return getBoundingClientRect(newRng);\n } else {\n return null;\n }\n };\n var isZeroRect = function (r) {\n return r.left === 0 && r.right === 0 && r.top === 0 && r.bottom === 0;\n };\n var getBoundingClientRect = function (item) {\n var clientRect, clientRects;\n clientRects = item.getClientRects();\n if (clientRects.length > 0) {\n clientRect = clone$2(clientRects[0]);\n } else {\n clientRect = clone$2(item.getBoundingClientRect());\n }\n if (!isRange(item) && isBr$3(item) && isZeroRect(clientRect)) {\n return getBrClientRect(item);\n }\n if (isZeroRect(clientRect) && isRange(item)) {\n return getBoundingClientRectWebKitText(item);\n }\n return clientRect;\n };\n var collapseAndInflateWidth = function (clientRect, toStart) {\n var newClientRect = collapse(clientRect, toStart);\n newClientRect.width = 1;\n newClientRect.right = newClientRect.left + 1;\n return newClientRect;\n };\n var getCaretPositionClientRects = function (caretPosition) {\n var clientRects = [];\n var beforeNode, node;\n var addUniqueAndValidRect = function (clientRect) {\n if (clientRect.height === 0) {\n return;\n }\n if (clientRects.length > 0) {\n if (isEqual(clientRect, clientRects[clientRects.length - 1])) {\n return;\n }\n }\n clientRects.push(clientRect);\n };\n var addCharacterOffset = function (container, offset) {\n var range$$1 = createRange(container.ownerDocument);\n if (offset < container.data.length) {\n if (isExtendingChar(container.data[offset])) {\n return clientRects;\n }\n if (isExtendingChar(container.data[offset - 1])) {\n range$$1.setStart(container, offset);\n range$$1.setEnd(container, offset + 1);\n if (!isHiddenWhiteSpaceRange(range$$1)) {\n addUniqueAndValidRect(collapseAndInflateWidth(getBoundingClientRect(range$$1), false));\n return clientRects;\n }\n }\n }\n if (offset > 0) {\n range$$1.setStart(container, offset - 1);\n range$$1.setEnd(container, offset);\n if (!isHiddenWhiteSpaceRange(range$$1)) {\n addUniqueAndValidRect(collapseAndInflateWidth(getBoundingClientRect(range$$1), false));\n }\n }\n if (offset < container.data.length) {\n range$$1.setStart(container, offset);\n range$$1.setEnd(container, offset + 1);\n if (!isHiddenWhiteSpaceRange(range$$1)) {\n addUniqueAndValidRect(collapseAndInflateWidth(getBoundingClientRect(range$$1), true));\n }\n }\n };\n if (isText$4(caretPosition.container())) {\n addCharacterOffset(caretPosition.container(), caretPosition.offset());\n return clientRects;\n }\n if (isElement$3(caretPosition.container())) {\n if (caretPosition.isAtEnd()) {\n node = resolveIndex(caretPosition.container(), caretPosition.offset());\n if (isText$4(node)) {\n addCharacterOffset(node, node.data.length);\n }\n if (isValidElementCaretCandidate(node) && !isBr$3(node)) {\n addUniqueAndValidRect(collapseAndInflateWidth(getBoundingClientRect(node), false));\n }\n } else {\n node = resolveIndex(caretPosition.container(), caretPosition.offset());\n if (isText$4(node)) {\n addCharacterOffset(node, 0);\n }\n if (isValidElementCaretCandidate(node) && caretPosition.isAtEnd()) {\n addUniqueAndValidRect(collapseAndInflateWidth(getBoundingClientRect(node), false));\n return clientRects;\n }\n beforeNode = resolveIndex(caretPosition.container(), caretPosition.offset() - 1);\n if (isValidElementCaretCandidate(beforeNode) && !isBr$3(beforeNode)) {\n if (isBlock$1(beforeNode) || isBlock$1(node) || !isValidElementCaretCandidate(node)) {\n addUniqueAndValidRect(collapseAndInflateWidth(getBoundingClientRect(beforeNode), false));\n }\n }\n if (isValidElementCaretCandidate(node)) {\n addUniqueAndValidRect(collapseAndInflateWidth(getBoundingClientRect(node), true));\n }\n }\n }\n return clientRects;\n };\n function CaretPosition(container, offset, clientRects) {\n var isAtStart = function () {\n if (isText$4(container)) {\n return offset === 0;\n }\n return offset === 0;\n };\n var isAtEnd = function () {\n if (isText$4(container)) {\n return offset >= container.data.length;\n }\n return offset >= container.childNodes.length;\n };\n var toRange = function () {\n var range$$1;\n range$$1 = createRange(container.ownerDocument);\n range$$1.setStart(container, offset);\n range$$1.setEnd(container, offset);\n return range$$1;\n };\n var getClientRects = function () {\n if (!clientRects) {\n clientRects = getCaretPositionClientRects(CaretPosition(container, offset));\n }\n return clientRects;\n };\n var isVisible = function () {\n return getClientRects().length > 0;\n };\n var isEqual$$1 = function (caretPosition) {\n return caretPosition && container === caretPosition.container() && offset === caretPosition.offset();\n };\n var getNode$$1 = function (before) {\n return resolveIndex(container, before ? offset - 1 : offset);\n };\n return {\n container: $_fl2rax2ljkmcwkot.constant(container),\n offset: $_fl2rax2ljkmcwkot.constant(offset),\n toRange: toRange,\n getClientRects: getClientRects,\n isVisible: isVisible,\n isAtStart: isAtStart,\n isAtEnd: isAtEnd,\n isEqual: isEqual$$1,\n getNode: getNode$$1\n };\n }\n (function (CaretPosition) {\n CaretPosition.fromRangeStart = function (range$$1) {\n return CaretPosition(range$$1.startContainer, range$$1.startOffset);\n };\n CaretPosition.fromRangeEnd = function (range$$1) {\n return CaretPosition(range$$1.endContainer, range$$1.endOffset);\n };\n CaretPosition.after = function (node) {\n return CaretPosition(node.parentNode, nodeIndex(node) + 1);\n };\n CaretPosition.before = function (node) {\n return CaretPosition(node.parentNode, nodeIndex(node));\n };\n CaretPosition.isAbove = function (pos1, pos2) {\n return liftN([\n head(pos2.getClientRects()),\n last(pos1.getClientRects())\n ], isAbove).getOr(false);\n };\n CaretPosition.isBelow = function (pos1, pos2) {\n return liftN([\n last(pos2.getClientRects()),\n head(pos1.getClientRects())\n ], isBelow).getOr(false);\n };\n CaretPosition.isAtStart = function (pos) {\n return pos ? pos.isAtStart() : false;\n };\n CaretPosition.isAtEnd = function (pos) {\n return pos ? pos.isAtEnd() : false;\n };\n CaretPosition.isTextPosition = function (pos) {\n return pos ? $_bjermr1rjkmcwkij.isText(pos.container()) : false;\n };\n CaretPosition.isElementPosition = function (pos) {\n return CaretPosition.isTextPosition(pos) === false;\n };\n }(CaretPosition || (CaretPosition = {})));\n var CaretPosition$1 = CaretPosition;\n\n var isText$5 = $_bjermr1rjkmcwkij.isText;\n var isBogus$1 = $_bjermr1rjkmcwkij.isBogus;\n var nodeIndex$1 = DOMUtils$1.nodeIndex;\n var normalizedParent = function (node) {\n var parentNode = node.parentNode;\n if (isBogus$1(parentNode)) {\n return normalizedParent(parentNode);\n }\n return parentNode;\n };\n var getChildNodes = function (node) {\n if (!node) {\n return [];\n }\n return $_9g1fibmjkmcwkbu.reduce(node.childNodes, function (result, node) {\n if (isBogus$1(node) && node.nodeName !== 'BR') {\n result = result.concat(getChildNodes(node));\n } else {\n result.push(node);\n }\n return result;\n }, []);\n };\n var normalizedTextOffset = function (node, offset) {\n while (node = node.previousSibling) {\n if (!isText$5(node)) {\n break;\n }\n offset += node.data.length;\n }\n return offset;\n };\n var equal$1 = function (a) {\n return function (b) {\n return a === b;\n };\n };\n var normalizedNodeIndex = function (node) {\n var nodes, index, numTextFragments;\n nodes = getChildNodes(normalizedParent(node));\n index = $_9g1fibmjkmcwkbu.findIndex(nodes, equal$1(node), node);\n nodes = nodes.slice(0, index + 1);\n numTextFragments = $_9g1fibmjkmcwkbu.reduce(nodes, function (result, node, i) {\n if (isText$5(node) && isText$5(nodes[i - 1])) {\n result++;\n }\n return result;\n }, 0);\n nodes = $_9g1fibmjkmcwkbu.filter(nodes, $_bjermr1rjkmcwkij.matchNodeNames(node.nodeName));\n index = $_9g1fibmjkmcwkbu.findIndex(nodes, equal$1(node), node);\n return index - numTextFragments;\n };\n var createPathItem = function (node) {\n var name;\n if (isText$5(node)) {\n name = 'text()';\n } else {\n name = node.nodeName.toLowerCase();\n }\n return name + '[' + normalizedNodeIndex(node) + ']';\n };\n var parentsUntil = function (root, node, predicate) {\n var parents = [];\n for (node = node.parentNode; node !== root; node = node.parentNode) {\n if (predicate && predicate(node)) {\n break;\n }\n parents.push(node);\n }\n return parents;\n };\n var create$2 = function (root, caretPosition) {\n var container, offset, path = [], outputOffset, childNodes, parents;\n container = caretPosition.container();\n offset = caretPosition.offset();\n if (isText$5(container)) {\n outputOffset = normalizedTextOffset(container, offset);\n } else {\n childNodes = container.childNodes;\n if (offset >= childNodes.length) {\n outputOffset = 'after';\n offset = childNodes.length - 1;\n } else {\n outputOffset = 'before';\n }\n container = childNodes[offset];\n }\n path.push(createPathItem(container));\n parents = parentsUntil(root, container);\n parents = $_9g1fibmjkmcwkbu.filter(parents, $_fl2rax2ljkmcwkot.negate($_bjermr1rjkmcwkij.isBogus));\n path = path.concat($_9g1fibmjkmcwkbu.map(parents, function (node) {\n return createPathItem(node);\n }));\n return path.reverse().join('/') + ',' + outputOffset;\n };\n var resolvePathItem = function (node, name, index) {\n var nodes = getChildNodes(node);\n nodes = $_9g1fibmjkmcwkbu.filter(nodes, function (node, index) {\n return !isText$5(node) || !isText$5(nodes[index - 1]);\n });\n nodes = $_9g1fibmjkmcwkbu.filter(nodes, $_bjermr1rjkmcwkij.matchNodeNames(name));\n return nodes[index];\n };\n var findTextPosition = function (container, offset) {\n var node = container, targetOffset = 0, dataLen;\n while (isText$5(node)) {\n dataLen = node.data.length;\n if (offset >= targetOffset && offset <= targetOffset + dataLen) {\n container = node;\n offset = offset - targetOffset;\n break;\n }\n if (!isText$5(node.nextSibling)) {\n container = node;\n offset = dataLen;\n break;\n }\n targetOffset += dataLen;\n node = node.nextSibling;\n }\n if (isText$5(container) && offset > container.data.length) {\n offset = container.data.length;\n }\n return CaretPosition$1(container, offset);\n };\n var resolve$2 = function (root, path) {\n var parts, container, offset;\n if (!path) {\n return null;\n }\n parts = path.split(',');\n path = parts[0].split('/');\n offset = parts.length > 1 ? parts[1] : 'before';\n container = $_9g1fibmjkmcwkbu.reduce(path, function (result, value) {\n value = /([\\w\\-\\(\\)]+)\\[([0-9]+)\\]/.exec(value);\n if (!value) {\n return null;\n }\n if (value[1] === 'text()') {\n value[1] = '#text';\n }\n return resolvePathItem(result, value[1], parseInt(value[2], 10));\n }, root);\n if (!container) {\n return null;\n }\n if (!isText$5(container)) {\n if (offset === 'after') {\n offset = nodeIndex$1(container) + 1;\n } else {\n offset = nodeIndex$1(container);\n }\n return CaretPosition$1(container.parentNode, offset);\n }\n return findTextPosition(container, parseInt(offset, 10));\n };\n\n var isContentEditableFalse$2 = $_bjermr1rjkmcwkij.isContentEditableFalse;\n var getNormalizedTextOffset = function (trim, container, offset) {\n var node, trimmedOffset;\n trimmedOffset = trim(container.data.slice(0, offset)).length;\n for (node = container.previousSibling; node && $_bjermr1rjkmcwkij.isText(node); node = node.previousSibling) {\n trimmedOffset += trim(node.data).length;\n }\n return trimmedOffset;\n };\n var getPoint = function (dom, trim, normalized, rng, start) {\n var container = rng[start ? 'startContainer' : 'endContainer'];\n var offset = rng[start ? 'startOffset' : 'endOffset'];\n var point = [];\n var childNodes, after = 0;\n var root = dom.getRoot();\n if ($_bjermr1rjkmcwkij.isText(container)) {\n point.push(normalized ? getNormalizedTextOffset(trim, container, offset) : offset);\n } else {\n childNodes = container.childNodes;\n if (offset >= childNodes.length && childNodes.length) {\n after = 1;\n offset = Math.max(0, childNodes.length - 1);\n }\n point.push(dom.nodeIndex(childNodes[offset], normalized) + after);\n }\n for (; container && container !== root; container = container.parentNode) {\n point.push(dom.nodeIndex(container, normalized));\n }\n return point;\n };\n var getLocation = function (trim, selection, normalized, rng) {\n var dom = selection.dom, bookmark = {};\n bookmark.start = getPoint(dom, trim, normalized, rng, true);\n if (!selection.isCollapsed()) {\n bookmark.end = getPoint(dom, trim, normalized, rng, false);\n }\n return bookmark;\n };\n var trimEmptyTextNode = function (node) {\n if ($_bjermr1rjkmcwkij.isText(node) && node.data.length === 0) {\n node.parentNode.removeChild(node);\n }\n };\n var findIndex$3 = function (dom, name, element) {\n var count = 0;\n $_4ujg4tljkmcwkbk.each(dom.select(name), function (node) {\n if (node.getAttribute('data-mce-bogus') === 'all') {\n return;\n }\n if (node === element) {\n return false;\n }\n count++;\n });\n return count;\n };\n var moveEndPoint = function (rng, start) {\n var container, offset, childNodes;\n var prefix = start ? 'start' : 'end';\n container = rng[prefix + 'Container'];\n offset = rng[prefix + 'Offset'];\n if ($_bjermr1rjkmcwkij.isElement(container) && container.nodeName === 'TR') {\n childNodes = container.childNodes;\n container = childNodes[Math.min(start ? offset : offset - 1, childNodes.length - 1)];\n if (container) {\n offset = start ? 0 : container.childNodes.length;\n rng['set' + (start ? 'Start' : 'End')](container, offset);\n }\n }\n };\n var normalizeTableCellSelection = function (rng) {\n moveEndPoint(rng, true);\n moveEndPoint(rng, false);\n return rng;\n };\n var findSibling = function (node, offset) {\n var sibling;\n if ($_bjermr1rjkmcwkij.isElement(node)) {\n node = getNode(node, offset);\n if (isContentEditableFalse$2(node)) {\n return node;\n }\n }\n if (isCaretContainer(node)) {\n if ($_bjermr1rjkmcwkij.isText(node) && isCaretContainerBlock(node)) {\n node = node.parentNode;\n }\n sibling = node.previousSibling;\n if (isContentEditableFalse$2(sibling)) {\n return sibling;\n }\n sibling = node.nextSibling;\n if (isContentEditableFalse$2(sibling)) {\n return sibling;\n }\n }\n };\n var findAdjacentContentEditableFalseElm = function (rng) {\n return findSibling(rng.startContainer, rng.startOffset) || findSibling(rng.endContainer, rng.endOffset);\n };\n var getOffsetBookmark = function (trim, normalized, selection) {\n var element = selection.getNode();\n var name = element ? element.nodeName : null;\n var rng = selection.getRng();\n if (isContentEditableFalse$2(element) || name === 'IMG') {\n return {\n name: name,\n index: findIndex$3(selection.dom, name, element)\n };\n }\n var sibling = findAdjacentContentEditableFalseElm(rng);\n if (sibling) {\n name = sibling.tagName;\n return {\n name: name,\n index: findIndex$3(selection.dom, name, sibling)\n };\n }\n return getLocation(trim, selection, normalized, rng);\n };\n var getCaretBookmark = function (selection) {\n var rng = selection.getRng();\n return {\n start: create$2(selection.dom.getRoot(), CaretPosition$1.fromRangeStart(rng)),\n end: create$2(selection.dom.getRoot(), CaretPosition$1.fromRangeEnd(rng))\n };\n };\n var getRangeBookmark = function (selection) {\n return { rng: selection.getRng() };\n };\n var createBookmarkSpan = function (dom, id, filled) {\n var args = {\n 'data-mce-type': 'bookmark',\n 'id': id,\n 'style': 'overflow:hidden;line-height:0px'\n };\n return filled ? dom.create('span', args, '') : dom.create('span', args);\n };\n var getPersistentBookmark = function (selection, filled) {\n var dom = selection.dom;\n var rng = selection.getRng();\n var id = dom.uniqueId();\n var collapsed = selection.isCollapsed();\n var element = selection.getNode();\n var name = element.nodeName;\n if (name === 'IMG') {\n return {\n name: name,\n index: findIndex$3(dom, name, element)\n };\n }\n var rng2 = normalizeTableCellSelection(rng.cloneRange());\n if (!collapsed) {\n rng2.collapse(false);\n var endBookmarkNode = createBookmarkSpan(dom, id + '_end', filled);\n rng2.insertNode(endBookmarkNode);\n trimEmptyTextNode(endBookmarkNode.nextSibling);\n }\n rng = normalizeTableCellSelection(rng);\n rng.collapse(true);\n var startBookmarkNode = createBookmarkSpan(dom, id + '_start', filled);\n rng.insertNode(startBookmarkNode);\n trimEmptyTextNode(startBookmarkNode.previousSibling);\n selection.moveToBookmark({\n id: id,\n keep: 1\n });\n return { id: id };\n };\n var getBookmark = function (selection, type, normalized) {\n if (type === 2) {\n return getOffsetBookmark($_cadvcr2pjkmcwkph.trim, normalized, selection);\n } else if (type === 3) {\n return getCaretBookmark(selection);\n } else if (type) {\n return getRangeBookmark(selection);\n } else {\n return getPersistentBookmark(selection, false);\n }\n };\n var $_aw3zi52jjkmcwkoa = {\n getBookmark: getBookmark,\n getUndoBookmark: curry(getOffsetBookmark, identity, true),\n getPersistentBookmark: getPersistentBookmark\n };\n\n var CARET_ID = '_mce_caret';\n var isCaretNode = function (node) {\n return $_bjermr1rjkmcwkij.isElement(node) && node.id === CARET_ID;\n };\n var getParentCaretContainer = function (body, node) {\n while (node && node !== body) {\n if (node.id === CARET_ID) {\n return node;\n }\n node = node.parentNode;\n }\n return null;\n };\n\n var isElement$4 = $_bjermr1rjkmcwkij.isElement;\n var isText$6 = $_bjermr1rjkmcwkij.isText;\n var removeNode = function (node) {\n var parentNode = node.parentNode;\n if (parentNode) {\n parentNode.removeChild(node);\n }\n };\n var getNodeValue = function (node) {\n try {\n return node.nodeValue;\n } catch (ex) {\n return '';\n }\n };\n var setNodeValue = function (node, text) {\n if (text.length === 0) {\n removeNode(node);\n } else {\n node.nodeValue = text;\n }\n };\n var trimCount = function (text) {\n var trimmedText = $_cadvcr2pjkmcwkph.trim(text);\n return {\n count: text.length - trimmedText.length,\n text: trimmedText\n };\n };\n var removeUnchanged = function (caretContainer, pos) {\n remove$7(caretContainer);\n return pos;\n };\n var removeTextAndReposition = function (caretContainer, pos) {\n var before = trimCount(caretContainer.data.substr(0, pos.offset()));\n var after = trimCount(caretContainer.data.substr(pos.offset()));\n var text = before.text + after.text;\n if (text.length > 0) {\n setNodeValue(caretContainer, text);\n return CaretPosition$1(caretContainer, pos.offset() - before.count);\n } else {\n return pos;\n }\n };\n var removeElementAndReposition = function (caretContainer, pos) {\n var parentNode = pos.container();\n var newPosition = indexOf(from$1(parentNode.childNodes), caretContainer).map(function (index) {\n return index < pos.offset() ? CaretPosition$1(parentNode, pos.offset() - 1) : pos;\n }).getOr(pos);\n remove$7(caretContainer);\n return newPosition;\n };\n var removeTextCaretContainer = function (caretContainer, pos) {\n return isText$6(caretContainer) && pos.container() === caretContainer ? removeTextAndReposition(caretContainer, pos) : removeUnchanged(caretContainer, pos);\n };\n var removeElementCaretContainer = function (caretContainer, pos) {\n return pos.container() === caretContainer.parentNode ? removeElementAndReposition(caretContainer, pos) : removeUnchanged(caretContainer, pos);\n };\n var removeAndReposition = function (container, pos) {\n return CaretPosition$1.isTextPosition(pos) ? removeTextCaretContainer(container, pos) : removeElementCaretContainer(container, pos);\n };\n var remove$7 = function (caretContainerNode) {\n if (isElement$4(caretContainerNode) && isCaretContainer(caretContainerNode)) {\n if (hasContent(caretContainerNode)) {\n caretContainerNode.removeAttribute('data-mce-caret');\n } else {\n removeNode(caretContainerNode);\n }\n }\n if (isText$6(caretContainerNode)) {\n var text = $_cadvcr2pjkmcwkph.trim(getNodeValue(caretContainerNode));\n setNodeValue(caretContainerNode, text);\n }\n };\n var $_xl2r331jkmcwkri = {\n removeAndReposition: removeAndReposition,\n remove: remove$7\n };\n\n var isContentEditableTrue$2 = $_bjermr1rjkmcwkij.isContentEditableTrue;\n var isContentEditableFalse$3 = $_bjermr1rjkmcwkij.isContentEditableFalse;\n var showCaret = function (direction, editor, node, before, scrollIntoView) {\n return editor._selectionOverrides.showCaret(direction, node, before, scrollIntoView);\n };\n var getNodeRange = function (node) {\n var rng = node.ownerDocument.createRange();\n rng.selectNode(node);\n return rng;\n };\n var selectNode = function (editor, node) {\n var e = editor.fire('BeforeObjectSelected', { target: node });\n if (e.isDefaultPrevented()) {\n return null;\n }\n return getNodeRange(node);\n };\n var renderCaretAtRange = function (editor, range, scrollIntoView) {\n var normalizedRange = normalizeRange(1, editor.getBody(), range);\n var caretPosition = CaretPosition$1.fromRangeStart(normalizedRange);\n var caretPositionNode = caretPosition.getNode();\n if (isContentEditableFalse$3(caretPositionNode)) {\n return showCaret(1, editor, caretPositionNode, !caretPosition.isAtEnd(), false);\n }\n var caretPositionBeforeNode = caretPosition.getNode(true);\n if (isContentEditableFalse$3(caretPositionBeforeNode)) {\n return showCaret(1, editor, caretPositionBeforeNode, false, false);\n }\n var ceRoot = editor.dom.getParent(caretPosition.getNode(), function (node) {\n return isContentEditableFalse$3(node) || isContentEditableTrue$2(node);\n });\n if (isContentEditableFalse$3(ceRoot)) {\n return showCaret(1, editor, ceRoot, false, scrollIntoView);\n }\n return null;\n };\n var renderRangeCaret = function (editor, range, scrollIntoView) {\n if (!range || !range.collapsed) {\n return range;\n }\n var caretRange = renderCaretAtRange(editor, range, scrollIntoView);\n if (caretRange) {\n return caretRange;\n }\n return range;\n };\n\n var HDirection;\n (function (HDirection) {\n HDirection[HDirection['Backwards'] = -1] = 'Backwards';\n HDirection[HDirection['Forwards'] = 1] = 'Forwards';\n }(HDirection || (HDirection = {})));\n var isContentEditableFalse$4 = $_bjermr1rjkmcwkij.isContentEditableFalse;\n var isText$7 = $_bjermr1rjkmcwkij.isText;\n var isElement$5 = $_bjermr1rjkmcwkij.isElement;\n var isBr$4 = $_bjermr1rjkmcwkij.isBr;\n var isCaretCandidate$2 = isCaretCandidate;\n var isAtomic$1 = isAtomic;\n var isEditableCaretCandidate$1 = isEditableCaretCandidate;\n var getParents = function (node, root) {\n var parents = [];\n while (node && node !== root) {\n parents.push(node);\n node = node.parentNode;\n }\n return parents;\n };\n var nodeAtIndex = function (container, offset) {\n if (container.hasChildNodes() && offset < container.childNodes.length) {\n return container.childNodes[offset];\n }\n return null;\n };\n var getCaretCandidatePosition = function (direction, node) {\n if (isForwards(direction)) {\n if (isCaretCandidate$2(node.previousSibling) && !isText$7(node.previousSibling)) {\n return CaretPosition$1.before(node);\n }\n if (isText$7(node)) {\n return CaretPosition$1(node, 0);\n }\n }\n if (isBackwards(direction)) {\n if (isCaretCandidate$2(node.nextSibling) && !isText$7(node.nextSibling)) {\n return CaretPosition$1.after(node);\n }\n if (isText$7(node)) {\n return CaretPosition$1(node, node.data.length);\n }\n }\n if (isBackwards(direction)) {\n if (isBr$4(node)) {\n return CaretPosition$1.before(node);\n }\n return CaretPosition$1.after(node);\n }\n return CaretPosition$1.before(node);\n };\n var isBrBeforeBlock = function (node, root) {\n var next;\n if (!$_bjermr1rjkmcwkij.isBr(node)) {\n return false;\n }\n next = findCaretPosition(1, CaretPosition$1.after(node), root);\n if (!next) {\n return false;\n }\n return !isInSameBlock(CaretPosition$1.before(node), CaretPosition$1.before(next), root);\n };\n var findCaretPosition = function (direction, startPos, root) {\n var node, nextNode, innerNode;\n var rootContentEditableFalseElm, caretPosition;\n if (!isElement$5(root) || !startPos) {\n return null;\n }\n if (startPos.isEqual(CaretPosition$1.after(root)) && root.lastChild) {\n caretPosition = CaretPosition$1.after(root.lastChild);\n if (isBackwards(direction) && isCaretCandidate$2(root.lastChild) && isElement$5(root.lastChild)) {\n return isBr$4(root.lastChild) ? CaretPosition$1.before(root.lastChild) : caretPosition;\n }\n } else {\n caretPosition = startPos;\n }\n var container = caretPosition.container();\n var offset = caretPosition.offset();\n if (isText$7(container)) {\n if (isBackwards(direction) && offset > 0) {\n return CaretPosition$1(container, --offset);\n }\n if (isForwards(direction) && offset < container.length) {\n return CaretPosition$1(container, ++offset);\n }\n node = container;\n } else {\n if (isBackwards(direction) && offset > 0) {\n nextNode = nodeAtIndex(container, offset - 1);\n if (isCaretCandidate$2(nextNode)) {\n if (!isAtomic$1(nextNode)) {\n innerNode = findNode(nextNode, direction, isEditableCaretCandidate$1, nextNode);\n if (innerNode) {\n if (isText$7(innerNode)) {\n return CaretPosition$1(innerNode, innerNode.data.length);\n }\n return CaretPosition$1.after(innerNode);\n }\n }\n if (isText$7(nextNode)) {\n return CaretPosition$1(nextNode, nextNode.data.length);\n }\n return CaretPosition$1.before(nextNode);\n }\n }\n if (isForwards(direction) && offset < container.childNodes.length) {\n nextNode = nodeAtIndex(container, offset);\n if (isCaretCandidate$2(nextNode)) {\n if (isBr$4(nextNode) && root.lastChild === nextNode) {\n return null;\n }\n if (isBrBeforeBlock(nextNode, root)) {\n return findCaretPosition(direction, CaretPosition$1.after(nextNode), root);\n }\n if (!isAtomic$1(nextNode)) {\n innerNode = findNode(nextNode, direction, isEditableCaretCandidate$1, nextNode);\n if (innerNode) {\n if (isText$7(innerNode)) {\n return CaretPosition$1(innerNode, 0);\n }\n return CaretPosition$1.before(innerNode);\n }\n }\n if (isText$7(nextNode)) {\n return CaretPosition$1(nextNode, 0);\n }\n return CaretPosition$1.after(nextNode);\n }\n }\n node = nextNode ? nextNode : caretPosition.getNode();\n }\n if (isForwards(direction) && caretPosition.isAtEnd() || isBackwards(direction) && caretPosition.isAtStart()) {\n node = findNode(node, direction, $_fl2rax2ljkmcwkot.constant(true), root, true);\n if (isEditableCaretCandidate$1(node, root)) {\n return getCaretCandidatePosition(direction, node);\n }\n }\n nextNode = findNode(node, direction, isEditableCaretCandidate$1, root);\n rootContentEditableFalseElm = $_9g1fibmjkmcwkbu.last($_9g1fibmjkmcwkbu.filter(getParents(container, root), isContentEditableFalse$4));\n if (rootContentEditableFalseElm && (!nextNode || !rootContentEditableFalseElm.contains(nextNode))) {\n if (isForwards(direction)) {\n caretPosition = CaretPosition$1.after(rootContentEditableFalseElm);\n } else {\n caretPosition = CaretPosition$1.before(rootContentEditableFalseElm);\n }\n return caretPosition;\n }\n if (nextNode) {\n return getCaretCandidatePosition(direction, nextNode);\n }\n return null;\n };\n var CaretWalker = function (root) {\n return {\n next: function (caretPosition) {\n return findCaretPosition(HDirection.Forwards, caretPosition, root);\n },\n prev: function (caretPosition) {\n return findCaretPosition(HDirection.Backwards, caretPosition, root);\n }\n };\n };\n\n var BreakType;\n (function (BreakType) {\n BreakType[BreakType['Br'] = 0] = 'Br';\n BreakType[BreakType['Block'] = 1] = 'Block';\n BreakType[BreakType['Wrap'] = 2] = 'Wrap';\n BreakType[BreakType['Eol'] = 3] = 'Eol';\n }(BreakType || (BreakType = {})));\n var flip = function (direction, positions) {\n return direction === HDirection.Backwards ? positions.reverse() : positions;\n };\n var walk$1 = function (direction, caretWalker, pos) {\n return direction === HDirection.Forwards ? caretWalker.next(pos) : caretWalker.prev(pos);\n };\n var getBreakType = function (scope, direction, currentPos, nextPos) {\n if ($_bjermr1rjkmcwkij.isBr(nextPos.getNode(direction === HDirection.Forwards))) {\n return BreakType.Br;\n } else if (isInSameBlock(currentPos, nextPos) === false) {\n return BreakType.Block;\n } else {\n return BreakType.Wrap;\n }\n };\n var getPositionsUntil = function (predicate, direction, scope, start) {\n var caretWalker = CaretWalker(scope);\n var currentPos = start, nextPos;\n var positions = [];\n while (currentPos) {\n nextPos = walk$1(direction, caretWalker, currentPos);\n if (!nextPos) {\n break;\n }\n if ($_bjermr1rjkmcwkij.isBr(nextPos.getNode(false))) {\n if (direction === HDirection.Forwards) {\n return {\n positions: flip(direction, positions).concat([nextPos]),\n breakType: BreakType.Br,\n breakAt: Option.some(nextPos)\n };\n } else {\n return {\n positions: flip(direction, positions),\n breakType: BreakType.Br,\n breakAt: Option.some(nextPos)\n };\n }\n }\n if (!nextPos.isVisible()) {\n currentPos = nextPos;\n continue;\n }\n if (predicate(currentPos, nextPos)) {\n var breakType = getBreakType(scope, direction, currentPos, nextPos);\n return {\n positions: flip(direction, positions),\n breakType: breakType,\n breakAt: Option.some(nextPos)\n };\n }\n positions.push(nextPos);\n currentPos = nextPos;\n }\n return {\n positions: flip(direction, positions),\n breakType: BreakType.Eol,\n breakAt: Option.none()\n };\n };\n var getAdjacentLinePositions = function (direction, getPositionsUntilBreak, scope, start) {\n return getPositionsUntilBreak(scope, start).breakAt.map(function (pos) {\n var positions = getPositionsUntilBreak(scope, pos).positions;\n return direction === HDirection.Backwards ? positions.concat(pos) : [pos].concat(positions);\n }).getOr([]);\n };\n var findClosestHorizontalPositionFromPoint = function (positions, x) {\n return foldl(positions, function (acc, newPos) {\n return acc.fold(function () {\n return Option.some(newPos);\n }, function (lastPos) {\n return liftN([\n head(lastPos.getClientRects()),\n head(newPos.getClientRects())\n ], function (lastRect, newRect) {\n var lastDist = Math.abs(x - lastRect.left);\n var newDist = Math.abs(x - newRect.left);\n return newDist <= lastDist ? newPos : lastPos;\n }).or(acc);\n });\n }, Option.none());\n };\n var findClosestHorizontalPosition = function (positions, pos) {\n return head(pos.getClientRects()).bind(function (targetRect) {\n return findClosestHorizontalPositionFromPoint(positions, targetRect.left);\n });\n };\n var getPositionsUntilPreviousLine = curry(getPositionsUntil, CaretPosition.isAbove, -1);\n var getPositionsUntilNextLine = curry(getPositionsUntil, CaretPosition.isBelow, 1);\n var getPositionsAbove = curry(getAdjacentLinePositions, -1, getPositionsUntilPreviousLine);\n var getPositionsBelow = curry(getAdjacentLinePositions, 1, getPositionsUntilNextLine);\n var getFirstLinePositions = function (scope) {\n return $_1m3f3j2yjkmcwkqg.firstPositionIn(scope).map(function (pos) {\n return [pos].concat(getPositionsUntilNextLine(scope, pos).positions);\n }).getOr([]);\n };\n var getLastLinePositions = function (scope) {\n return $_1m3f3j2yjkmcwkqg.lastPositionIn(scope).map(function (pos) {\n return getPositionsUntilPreviousLine(scope, pos).positions.concat(pos);\n }).getOr([]);\n };\n\n var deflate = function (rect, delta) {\n return {\n left: rect.left - delta,\n top: rect.top - delta,\n right: rect.right + delta * 2,\n bottom: rect.bottom + delta * 2,\n width: rect.width + delta,\n height: rect.height + delta\n };\n };\n var getCorners = function (getYAxisValue, tds) {\n return bind(tds, function (td) {\n var rect = deflate(td.getBoundingClientRect(), -1);\n return [\n {\n x: rect.left,\n y: getYAxisValue(rect),\n cell: td\n },\n {\n x: rect.right,\n y: getYAxisValue(rect),\n cell: td\n }\n ];\n });\n };\n var findClosestCorner = function (corners, x, y) {\n return foldl(corners, function (acc, newCorner) {\n return acc.fold(function () {\n return Option.some(newCorner);\n }, function (oldCorner) {\n var oldDist = Math.sqrt(Math.abs(oldCorner.x - x) + Math.abs(oldCorner.y - y));\n var newDist = Math.sqrt(Math.abs(newCorner.x - x) + Math.abs(newCorner.y - y));\n return Option.some(newDist < oldDist ? newCorner : oldCorner);\n });\n }, Option.none());\n };\n var getClosestCell = function (getYAxisValue, isTargetCorner, table, x, y) {\n var cells = $_2gqm0n27jkmcwkmi.descendants(Element$$1.fromDom(table), 'td,th').map(function (e) {\n return e.dom();\n });\n var corners = filter(getCorners(getYAxisValue, cells), function (corner) {\n return isTargetCorner(corner, y);\n });\n return findClosestCorner(corners, x, y).map(function (corner) {\n return corner.cell;\n });\n };\n var getBottomValue = function (rect) {\n return rect.bottom;\n };\n var getTopValue = function (rect) {\n return rect.top;\n };\n var isAbove$1 = function (corner, y) {\n return corner.y < y;\n };\n var isBelow$1 = function (corner, y) {\n return corner.y > y;\n };\n var getClosestCellAbove = curry(getClosestCell, getBottomValue, isAbove$1);\n var getClosestCellBelow = curry(getClosestCell, getTopValue, isBelow$1);\n var findClosestPositionInAboveCell = function (table, pos) {\n return head(pos.getClientRects()).bind(function (rect) {\n return getClosestCellAbove(table, rect.left, rect.top);\n }).bind(function (cell) {\n return findClosestHorizontalPosition(getLastLinePositions(cell), pos);\n });\n };\n var findClosestPositionInBelowCell = function (table, pos) {\n return last(pos.getClientRects()).bind(function (rect) {\n return getClosestCellBelow(table, rect.left, rect.top);\n }).bind(function (cell) {\n return findClosestHorizontalPosition(getFirstLinePositions(cell), pos);\n });\n };\n\n var getPos$1 = function (elm) {\n var x = 0, y = 0;\n var offsetParent = elm;\n while (offsetParent && offsetParent.nodeType) {\n x += offsetParent.offsetLeft || 0;\n y += offsetParent.offsetTop || 0;\n offsetParent = offsetParent.offsetParent;\n }\n return {\n x: x,\n y: y\n };\n };\n var fireScrollIntoViewEvent = function (editor, elm, alignToTop) {\n var scrollEvent = {\n elm: elm,\n alignToTop: alignToTop\n };\n editor.fire('scrollIntoView', scrollEvent);\n return scrollEvent.isDefaultPrevented();\n };\n var scrollElementIntoView = function (editor, elm, alignToTop) {\n var y, viewPort;\n var dom = editor.dom;\n var root = dom.getRoot();\n var viewPortY, viewPortH, offsetY = 0;\n if (fireScrollIntoViewEvent(editor, elm, alignToTop)) {\n return;\n }\n if (!$_bjermr1rjkmcwkij.isElement(elm)) {\n return;\n }\n if (alignToTop === false) {\n offsetY = elm.offsetHeight;\n }\n if (root.nodeName !== 'BODY') {\n var scrollContainer = editor.selection.getScrollContainer();\n if (scrollContainer) {\n y = getPos$1(elm).y - getPos$1(scrollContainer).y + offsetY;\n viewPortH = scrollContainer.clientHeight;\n viewPortY = scrollContainer.scrollTop;\n if (y < viewPortY || y + 25 > viewPortY + viewPortH) {\n scrollContainer.scrollTop = y < viewPortY ? y : y - viewPortH + 25;\n }\n return;\n }\n }\n viewPort = dom.getViewPort(editor.getWin());\n y = dom.getPos(elm).y + offsetY;\n viewPortY = viewPort.y;\n viewPortH = viewPort.h;\n if (y < viewPort.y || y + 25 > viewPortY + viewPortH) {\n editor.getWin().scrollTo(0, y < viewPortY ? y : y - viewPortH + 25);\n }\n };\n var getViewPortRect = function (editor) {\n if (editor.inline) {\n return editor.getBody().getBoundingClientRect();\n } else {\n var win = editor.getWin();\n return {\n left: 0,\n right: win.innerWidth,\n top: 0,\n bottom: win.innerHeight,\n width: win.innerWidth,\n height: win.innerHeight\n };\n }\n };\n var scrollBy = function (editor, dx, dy) {\n if (editor.inline) {\n editor.getBody().scrollLeft += dx;\n editor.getBody().scrollTop += dy;\n } else {\n editor.getWin().scrollBy(dx, dy);\n }\n };\n var scrollRangeIntoView = function (editor, rng) {\n head(CaretPosition.fromRangeStart(rng).getClientRects()).each(function (rngRect) {\n var bodyRect = getViewPortRect(editor);\n var overflow = getOverflow(bodyRect, rngRect);\n var margin = 4;\n var dx = overflow.x > 0 ? overflow.x + margin : overflow.x - margin;\n var dy = overflow.y > 0 ? overflow.y + margin : overflow.y - margin;\n scrollBy(editor, overflow.x !== 0 ? dx : 0, overflow.y !== 0 ? dy : 0);\n });\n };\n var $_a6610x37jkmcwkt5 = {\n scrollElementIntoView: scrollElementIntoView,\n scrollRangeIntoView: scrollRangeIntoView\n };\n\n var getBodySetting = function (editor, name, defaultValue) {\n var value = editor.getParam(name, defaultValue);\n if (value.indexOf('=') !== -1) {\n var bodyObj = editor.getParam(name, '', 'hash');\n return bodyObj.hasOwnProperty(editor.id) ? bodyObj[editor.id] : defaultValue;\n } else {\n return value;\n }\n };\n var getIframeAttrs = function (editor) {\n return editor.getParam('iframe_attrs', {});\n };\n var getDocType = function (editor) {\n return editor.getParam('doctype', '');\n };\n var getDocumentBaseUrl = function (editor) {\n return editor.getParam('document_base_url', '');\n };\n var getBodyId = function (editor) {\n return getBodySetting(editor, 'body_id', 'tinymce');\n };\n var getBodyClass = function (editor) {\n return getBodySetting(editor, 'body_class', '');\n };\n var getContentSecurityPolicy = function (editor) {\n return editor.getParam('content_security_policy', '');\n };\n var shouldPutBrInPre = function (editor) {\n return editor.getParam('br_in_pre', true);\n };\n var getForcedRootBlock = function (editor) {\n if (editor.getParam('force_p_newlines', false)) {\n return 'p';\n }\n var block = editor.getParam('forced_root_block', 'p');\n return block === false ? '' : block;\n };\n var getForcedRootBlockAttrs = function (editor) {\n return editor.getParam('forced_root_block_attrs', {});\n };\n var getBrNewLineSelector = function (editor) {\n return editor.getParam('br_newline_selector', '.mce-toc h2,figcaption,caption');\n };\n var getNoNewLineSelector = function (editor) {\n return editor.getParam('no_newline_selector', '');\n };\n var shouldKeepStyles = function (editor) {\n return editor.getParam('keep_styles', true);\n };\n var shouldEndContainerOnEmptyBlock = function (editor) {\n return editor.getParam('end_container_on_empty_block', false);\n };\n var getFontStyleValues = function (editor) {\n return $_4ujg4tljkmcwkbk.explode(editor.getParam('font_size_style_values', ''));\n };\n var getFontSizeClasses = function (editor) {\n return $_4ujg4tljkmcwkbk.explode(editor.getParam('font_size_classes', ''));\n };\n var $_2ycm1438jkmcwkta = {\n getIframeAttrs: getIframeAttrs,\n getDocType: getDocType,\n getDocumentBaseUrl: getDocumentBaseUrl,\n getBodyId: getBodyId,\n getBodyClass: getBodyClass,\n getContentSecurityPolicy: getContentSecurityPolicy,\n shouldPutBrInPre: shouldPutBrInPre,\n getForcedRootBlock: getForcedRootBlock,\n getForcedRootBlockAttrs: getForcedRootBlockAttrs,\n getBrNewLineSelector: getBrNewLineSelector,\n getNoNewLineSelector: getNoNewLineSelector,\n shouldKeepStyles: shouldKeepStyles,\n shouldEndContainerOnEmptyBlock: shouldEndContainerOnEmptyBlock,\n getFontStyleValues: getFontStyleValues,\n getFontSizeClasses: getFontSizeClasses\n };\n\n var browser$2 = $_b1ykk4ojkmcwkcj.detect().browser;\n var isFakeCaretTableBrowser = function () {\n return browser$2.isIE() || browser$2.isEdge() || browser$2.isFirefox();\n };\n var moveToRange = function (editor, rng) {\n editor.selection.setRng(rng);\n $_a6610x37jkmcwkt5.scrollRangeIntoView(editor, rng);\n };\n var isAtTableCellLine = function (getPositionsUntil, scope, pos) {\n var lineInfo = getPositionsUntil(scope, pos);\n if (lineInfo.breakType === BreakType.Wrap && lineInfo.positions.length === 0) {\n return lineInfo.breakAt.map(function (breakPos) {\n return getPositionsUntil(scope, breakPos).breakAt.isNone();\n }).getOr(true);\n } else {\n return lineInfo.breakAt.isNone();\n }\n };\n var isAtFirstTableCellLine = $_fl2rax2ljkmcwkot.curry(isAtTableCellLine, getPositionsUntilPreviousLine);\n var isAtLastTableCellLine = $_fl2rax2ljkmcwkot.curry(isAtTableCellLine, getPositionsUntilNextLine);\n var isCaretAtStartOrEndOfTable = function (forward, rng, table) {\n var caretPos = CaretPosition$1.fromRangeStart(rng);\n return $_1m3f3j2yjkmcwkqg.positionIn(!forward, table).map(function (pos) {\n return pos.isEqual(caretPos);\n }).getOr(false);\n };\n var navigateHorizontally = function (editor, forward, table, td) {\n var rng = editor.selection.getRng();\n var direction = forward ? 1 : -1;\n if (isFakeCaretTableBrowser() && isCaretAtStartOrEndOfTable(forward, rng, table)) {\n var newRng = showCaret(direction, editor, table, !forward, true);\n moveToRange(editor, newRng);\n return true;\n }\n return false;\n };\n var getClosestAbovePosition = function (root, table, start) {\n return findClosestPositionInAboveCell(table, start).orThunk(function () {\n return head(start.getClientRects()).bind(function (rect) {\n return findClosestHorizontalPositionFromPoint(getPositionsAbove(root, CaretPosition$1.before(table)), rect.left);\n });\n }).getOr(CaretPosition$1.before(table));\n };\n var getClosestBelowPosition = function (root, table, start) {\n return findClosestPositionInBelowCell(table, start).orThunk(function () {\n return head(start.getClientRects()).bind(function (rect) {\n return findClosestHorizontalPositionFromPoint(getPositionsBelow(root, CaretPosition$1.after(table)), rect.left);\n });\n }).getOr(CaretPosition$1.after(table));\n };\n var getTable = function (previous, pos) {\n var node = pos.getNode(previous);\n return $_bjermr1rjkmcwkij.isElement(node) && node.nodeName === 'TABLE' ? Option.some(node) : Option.none();\n };\n var renderBlock = function (down, editor, table, pos) {\n var forcedRootBlock = $_2ycm1438jkmcwkta.getForcedRootBlock(editor);\n if (forcedRootBlock) {\n editor.undoManager.transact(function () {\n var element = Element$$1.fromTag(forcedRootBlock);\n $_29helg15jkmcwkf0.setAll(element, $_2ycm1438jkmcwkta.getForcedRootBlockAttrs(editor));\n $_f4qt4v1yjkmcwkl2.append(element, Element$$1.fromTag('br'));\n if (down) {\n $_f4qt4v1yjkmcwkl2.after(Element$$1.fromDom(table), element);\n } else {\n $_f4qt4v1yjkmcwkl2.before(Element$$1.fromDom(table), element);\n }\n var rng = editor.dom.createRng();\n rng.setStart(element.dom(), 0);\n rng.setEnd(element.dom(), 0);\n moveToRange(editor, rng);\n });\n } else {\n moveToRange(editor, pos.toRange());\n }\n };\n var moveCaret = function (editor, down, pos) {\n var table = down ? getTable(true, pos) : getTable(false, pos);\n var last$$1 = down === false;\n table.fold(function () {\n return moveToRange(editor, pos.toRange());\n }, function (table) {\n return $_1m3f3j2yjkmcwkqg.positionIn(last$$1, editor.getBody()).filter(function (lastPos) {\n return lastPos.isEqual(pos);\n }).fold(function () {\n return moveToRange(editor, pos.toRange());\n }, function (_) {\n return renderBlock(down, editor, table, pos);\n });\n });\n };\n var navigateVertically = function (editor, down, table, td) {\n var rng = editor.selection.getRng();\n var pos = CaretPosition$1.fromRangeStart(rng);\n var root = editor.getBody();\n if (!down && isAtFirstTableCellLine(td, pos)) {\n var newPos = getClosestAbovePosition(root, table, pos);\n moveCaret(editor, down, newPos);\n return true;\n } else if (down && isAtLastTableCellLine(td, pos)) {\n var newPos = getClosestBelowPosition(root, table, pos);\n moveCaret(editor, down, newPos);\n return true;\n } else {\n return false;\n }\n };\n var moveH = function (editor, forward) {\n return function () {\n return Option.from(editor.dom.getParent(editor.selection.getNode(), 'td,th')).bind(function (td) {\n return Option.from(editor.dom.getParent(td, 'table')).map(function (table) {\n return navigateHorizontally(editor, forward, table, td);\n });\n }).getOr(false);\n };\n };\n var moveV = function (editor, forward) {\n return function () {\n return Option.from(editor.dom.getParent(editor.selection.getNode(), 'td,th')).bind(function (td) {\n return Option.from(editor.dom.getParent(td, 'table')).map(function (table) {\n return navigateVertically(editor, forward, table, td);\n });\n }).getOr(false);\n };\n };\n\n var isContentEditableFalse$5 = $_bjermr1rjkmcwkij.isContentEditableFalse;\n var isTableCell$1 = function (node) {\n return $_bjermr1rjkmcwkij.isElement(node) && /^(TD|TH)$/i.test(node.tagName);\n };\n var getAbsoluteClientRect = function (root, element, before) {\n var clientRect = collapse(element.getBoundingClientRect(), before);\n var docElm, scrollX, scrollY, margin, rootRect;\n if (root.tagName === 'BODY') {\n docElm = root.ownerDocument.documentElement;\n scrollX = root.scrollLeft || docElm.scrollLeft;\n scrollY = root.scrollTop || docElm.scrollTop;\n } else {\n rootRect = root.getBoundingClientRect();\n scrollX = root.scrollLeft - rootRect.left;\n scrollY = root.scrollTop - rootRect.top;\n }\n clientRect.left += scrollX;\n clientRect.right += scrollX;\n clientRect.top += scrollY;\n clientRect.bottom += scrollY;\n clientRect.width = 1;\n margin = element.offsetWidth - element.clientWidth;\n if (margin > 0) {\n if (before) {\n margin *= -1;\n }\n clientRect.left += margin;\n clientRect.right += margin;\n }\n return clientRect;\n };\n var trimInlineCaretContainers = function (root) {\n var contentEditableFalseNodes, node, sibling, i, data;\n contentEditableFalseNodes = DomQuery('*[contentEditable=false]', root);\n for (i = 0; i < contentEditableFalseNodes.length; i++) {\n node = contentEditableFalseNodes[i];\n sibling = node.previousSibling;\n if (endsWithCaretContainer(sibling)) {\n data = sibling.data;\n if (data.length === 1) {\n sibling.parentNode.removeChild(sibling);\n } else {\n sibling.deleteData(data.length - 1, 1);\n }\n }\n sibling = node.nextSibling;\n if (startsWithCaretContainer(sibling)) {\n data = sibling.data;\n if (data.length === 1) {\n sibling.parentNode.removeChild(sibling);\n } else {\n sibling.deleteData(0, 1);\n }\n }\n }\n };\n var FakeCaret = function (root, isBlock, hasFocus) {\n var lastVisualCaret = Cell(Option.none());\n var cursorInterval, caretContainerNode;\n var show = function (before, element) {\n var clientRect, rng;\n hide();\n if (isTableCell$1(element)) {\n return null;\n }\n if (isBlock(element)) {\n caretContainerNode = insertBlock('p', element, before);\n clientRect = getAbsoluteClientRect(root, element, before);\n DomQuery(caretContainerNode).css('top', clientRect.top);\n var caret = DomQuery('
').css(clientRect).appendTo(root)[0];\n lastVisualCaret.set(Option.some({\n caret: caret,\n element: element,\n before: before\n }));\n lastVisualCaret.get().each(function (caretState) {\n if (before) {\n DomQuery(caretState.caret).addClass('mce-visual-caret-before');\n }\n });\n startBlink();\n rng = element.ownerDocument.createRange();\n rng.setStart(caretContainerNode, 0);\n rng.setEnd(caretContainerNode, 0);\n } else {\n caretContainerNode = insertInline(element, before);\n rng = element.ownerDocument.createRange();\n if (isContentEditableFalse$5(caretContainerNode.nextSibling)) {\n rng.setStart(caretContainerNode, 0);\n rng.setEnd(caretContainerNode, 0);\n } else {\n rng.setStart(caretContainerNode, 1);\n rng.setEnd(caretContainerNode, 1);\n }\n return rng;\n }\n return rng;\n };\n var hide = function () {\n trimInlineCaretContainers(root);\n if (caretContainerNode) {\n $_xl2r331jkmcwkri.remove(caretContainerNode);\n caretContainerNode = null;\n }\n lastVisualCaret.get().each(function (caretState) {\n DomQuery(caretState.caret).remove();\n lastVisualCaret.set(Option.none());\n });\n clearInterval(cursorInterval);\n };\n var startBlink = function () {\n cursorInterval = $_3l01gcijkmcwk99.setInterval(function () {\n if (hasFocus()) {\n DomQuery('div.mce-visual-caret', root).toggleClass('mce-visual-caret-hidden');\n } else {\n DomQuery('div.mce-visual-caret', root).addClass('mce-visual-caret-hidden');\n }\n }, 500);\n };\n var reposition = function () {\n lastVisualCaret.get().each(function (caretState) {\n var clientRect = getAbsoluteClientRect(root, caretState.element, caretState.before);\n DomQuery(caretState.caret).css(clientRect);\n });\n };\n var destroy = function () {\n return $_3l01gcijkmcwk99.clearInterval(cursorInterval);\n };\n var getCss = function () {\n return '.mce-visual-caret {' + 'position: absolute;' + 'background-color: black;' + 'background-color: currentcolor;' + '}' + '.mce-visual-caret-hidden {' + 'display: none;' + '}' + '*[data-mce-caret] {' + 'position: absolute;' + 'left: -1000px;' + 'right: auto;' + 'top: 0;' + 'margin: 0;' + 'padding: 0;' + '}';\n };\n return {\n show: show,\n hide: hide,\n getCss: getCss,\n reposition: reposition,\n destroy: destroy\n };\n };\n var isFakeCaretTarget = function (node) {\n return isContentEditableFalse$5(node) || $_bjermr1rjkmcwkij.isTable(node) && isFakeCaretTableBrowser();\n };\n\n var isContentEditableFalse$6 = $_bjermr1rjkmcwkij.isContentEditableFalse;\n var isBlockLike = $_bjermr1rjkmcwkij.matchStyleValues('display', 'block table table-cell table-caption list-item');\n var isCaretContainer$2 = isCaretContainer;\n var isCaretContainerBlock$1 = isCaretContainerBlock;\n var curry$2 = $_fl2rax2ljkmcwkot.curry;\n var isElement$6 = $_bjermr1rjkmcwkij.isElement;\n var isCaretCandidate$3 = isCaretCandidate;\n var isForwards = function (direction) {\n return direction > 0;\n };\n var isBackwards = function (direction) {\n return direction < 0;\n };\n var skipCaretContainers = function (walk, shallow) {\n var node;\n while (node = walk(shallow)) {\n if (!isCaretContainerBlock$1(node)) {\n return node;\n }\n }\n return null;\n };\n var findNode = function (node, direction, predicateFn, rootNode, shallow) {\n var walker = new TreeWalker(node, rootNode);\n if (isBackwards(direction)) {\n if (isContentEditableFalse$6(node) || isCaretContainerBlock$1(node)) {\n node = skipCaretContainers(walker.prev, true);\n if (predicateFn(node)) {\n return node;\n }\n }\n while (node = skipCaretContainers(walker.prev, shallow)) {\n if (predicateFn(node)) {\n return node;\n }\n }\n }\n if (isForwards(direction)) {\n if (isContentEditableFalse$6(node) || isCaretContainerBlock$1(node)) {\n node = skipCaretContainers(walker.next, true);\n if (predicateFn(node)) {\n return node;\n }\n }\n while (node = skipCaretContainers(walker.next, shallow)) {\n if (predicateFn(node)) {\n return node;\n }\n }\n }\n return null;\n };\n var getParentBlock = function (node, rootNode) {\n while (node && node !== rootNode) {\n if (isBlockLike(node)) {\n return node;\n }\n node = node.parentNode;\n }\n return null;\n };\n var isInSameBlock = function (caretPosition1, caretPosition2, rootNode) {\n return getParentBlock(caretPosition1.container(), rootNode) === getParentBlock(caretPosition2.container(), rootNode);\n };\n var getChildNodeAtRelativeOffset = function (relativeOffset, caretPosition) {\n var container, offset;\n if (!caretPosition) {\n return null;\n }\n container = caretPosition.container();\n offset = caretPosition.offset();\n if (!isElement$6(container)) {\n return null;\n }\n return container.childNodes[offset + relativeOffset];\n };\n var beforeAfter = function (before, node) {\n var range = node.ownerDocument.createRange();\n if (before) {\n range.setStartBefore(node);\n range.setEndBefore(node);\n } else {\n range.setStartAfter(node);\n range.setEndAfter(node);\n }\n return range;\n };\n var isNodesInSameBlock = function (root, node1, node2) {\n return getParentBlock(node1, root) === getParentBlock(node2, root);\n };\n var lean = function (left, root, node) {\n var sibling, siblingName;\n if (left) {\n siblingName = 'previousSibling';\n } else {\n siblingName = 'nextSibling';\n }\n while (node && node !== root) {\n sibling = node[siblingName];\n if (isCaretContainer$2(sibling)) {\n sibling = sibling[siblingName];\n }\n if (isContentEditableFalse$6(sibling)) {\n if (isNodesInSameBlock(root, sibling, node)) {\n return sibling;\n }\n break;\n }\n if (isCaretCandidate$3(sibling)) {\n break;\n }\n node = node.parentNode;\n }\n return null;\n };\n var before$2 = curry$2(beforeAfter, true);\n var after$2 = curry$2(beforeAfter, false);\n var normalizeRange = function (direction, root, range) {\n var node, container, offset, location;\n var leanLeft = curry$2(lean, true, root);\n var leanRight = curry$2(lean, false, root);\n container = range.startContainer;\n offset = range.startOffset;\n if (isCaretContainerBlock(container)) {\n if (!isElement$6(container)) {\n container = container.parentNode;\n }\n location = container.getAttribute('data-mce-caret');\n if (location === 'before') {\n node = container.nextSibling;\n if (isFakeCaretTarget(node)) {\n return before$2(node);\n }\n }\n if (location === 'after') {\n node = container.previousSibling;\n if (isFakeCaretTarget(node)) {\n return after$2(node);\n }\n }\n }\n if (!range.collapsed) {\n return range;\n }\n if ($_bjermr1rjkmcwkij.isText(container)) {\n if (isCaretContainer$2(container)) {\n if (direction === 1) {\n node = leanRight(container);\n if (node) {\n return before$2(node);\n }\n node = leanLeft(container);\n if (node) {\n return after$2(node);\n }\n }\n if (direction === -1) {\n node = leanLeft(container);\n if (node) {\n return after$2(node);\n }\n node = leanRight(container);\n if (node) {\n return before$2(node);\n }\n }\n return range;\n }\n if (endsWithCaretContainer(container) && offset >= container.data.length - 1) {\n if (direction === 1) {\n node = leanRight(container);\n if (node) {\n return before$2(node);\n }\n }\n return range;\n }\n if (startsWithCaretContainer(container) && offset <= 1) {\n if (direction === -1) {\n node = leanLeft(container);\n if (node) {\n return after$2(node);\n }\n }\n return range;\n }\n if (offset === container.data.length) {\n node = leanRight(container);\n if (node) {\n return before$2(node);\n }\n return range;\n }\n if (offset === 0) {\n node = leanLeft(container);\n if (node) {\n return after$2(node);\n }\n return range;\n }\n }\n return range;\n };\n var isNextToContentEditableFalse = function (relativeOffset, caretPosition) {\n var node = getChildNodeAtRelativeOffset(relativeOffset, caretPosition);\n return isContentEditableFalse$6(node) && !$_bjermr1rjkmcwkij.isBogusAll(node);\n };\n var isNextToTable = function (relativeOffset, caretPosition) {\n return $_bjermr1rjkmcwkij.isTable(getChildNodeAtRelativeOffset(relativeOffset, caretPosition));\n };\n var getRelativeCefElm = function (forward, caretPosition) {\n return Option.from(getChildNodeAtRelativeOffset(forward ? 0 : -1, caretPosition)).filter(isContentEditableFalse$6);\n };\n var getNormalizedRangeEndPoint = function (direction, root, range) {\n var normalizedRange = normalizeRange(direction, root, range);\n if (direction === -1) {\n return CaretPosition.fromRangeStart(normalizedRange);\n }\n return CaretPosition.fromRangeEnd(normalizedRange);\n };\n var isBeforeContentEditableFalse = curry$2(isNextToContentEditableFalse, 0);\n var isAfterContentEditableFalse = curry$2(isNextToContentEditableFalse, -1);\n var isBeforeTable = curry$2(isNextToTable, 0);\n var isAfterTable = curry$2(isNextToTable, -1);\n\n var walkToPositionIn = function (forward, root, start) {\n var position = forward ? CaretPosition$1.before(start) : CaretPosition$1.after(start);\n return fromPosition(forward, root, position);\n };\n var afterElement = function (node) {\n return $_bjermr1rjkmcwkij.isBr(node) ? CaretPosition$1.before(node) : CaretPosition$1.after(node);\n };\n var isBeforeOrStart = function (position) {\n if (CaretPosition$1.isTextPosition(position)) {\n return position.offset() === 0;\n } else {\n return isCaretCandidate(position.getNode());\n }\n };\n var isAfterOrEnd = function (position) {\n if (CaretPosition$1.isTextPosition(position)) {\n var container = position.container();\n return position.offset() === container.data.length;\n } else {\n return isCaretCandidate(position.getNode(true));\n }\n };\n var isBeforeAfterSameElement = function (from, to) {\n return !CaretPosition$1.isTextPosition(from) && !CaretPosition$1.isTextPosition(to) && from.getNode() === to.getNode(true);\n };\n var isAtBr = function (position) {\n return !CaretPosition$1.isTextPosition(position) && $_bjermr1rjkmcwkij.isBr(position.getNode());\n };\n var shouldSkipPosition = function (forward, from, to) {\n if (forward) {\n return !isBeforeAfterSameElement(from, to) && !isAtBr(from) && isAfterOrEnd(from) && isBeforeOrStart(to);\n } else {\n return !isBeforeAfterSameElement(to, from) && isBeforeOrStart(from) && isAfterOrEnd(to);\n }\n };\n var fromPosition = function (forward, root, pos) {\n var walker = CaretWalker(root);\n return Option.from(forward ? walker.next(pos) : walker.prev(pos));\n };\n var navigate = function (forward, root, from) {\n return fromPosition(forward, root, from).bind(function (to) {\n if (isInSameBlock(from, to, root) && shouldSkipPosition(forward, from, to)) {\n return fromPosition(forward, root, to);\n } else {\n return Option.some(to);\n }\n });\n };\n var positionIn = function (forward, element) {\n var startNode = forward ? element.firstChild : element.lastChild;\n if ($_bjermr1rjkmcwkij.isText(startNode)) {\n return Option.some(CaretPosition$1(startNode, forward ? 0 : startNode.data.length));\n } else if (startNode) {\n if (isCaretCandidate(startNode)) {\n return Option.some(forward ? CaretPosition$1.before(startNode) : afterElement(startNode));\n } else {\n return walkToPositionIn(forward, element, startNode);\n }\n } else {\n return Option.none();\n }\n };\n var $_1m3f3j2yjkmcwkqg = {\n fromPosition: fromPosition,\n nextPosition: curry(fromPosition, true),\n prevPosition: curry(fromPosition, false),\n navigate: navigate,\n positionIn: positionIn,\n firstPositionIn: curry(positionIn, true),\n lastPositionIn: curry(positionIn, false)\n };\n\n var isStringPathBookmark = function (bookmark) {\n return typeof bookmark.start === 'string';\n };\n var isRangeBookmark = function (bookmark) {\n return bookmark.hasOwnProperty('rng');\n };\n var isIdBookmark = function (bookmark) {\n return bookmark.hasOwnProperty('id');\n };\n var isIndexBookmark = function (bookmark) {\n return bookmark.hasOwnProperty('name');\n };\n var isPathBookmark = function (bookmark) {\n return $_4ujg4tljkmcwkbk.isArray(bookmark.start);\n };\n\n var addBogus = function (dom, node) {\n if (dom.isBlock(node) && !node.innerHTML && !$_cvvl9iajkmcwk25.ie) {\n node.innerHTML = '
';\n }\n return node;\n };\n var resolveCaretPositionBookmark = function (dom, bookmark) {\n var rng, pos;\n rng = dom.createRng();\n pos = resolve$2(dom.getRoot(), bookmark.start);\n rng.setStart(pos.container(), pos.offset());\n pos = resolve$2(dom.getRoot(), bookmark.end);\n rng.setEnd(pos.container(), pos.offset());\n return rng;\n };\n var insertZwsp = function (node, rng) {\n var textNode = node.ownerDocument.createTextNode($_cadvcr2pjkmcwkph.ZWSP);\n node.appendChild(textNode);\n rng.setStart(textNode, 0);\n rng.setEnd(textNode, 0);\n };\n var isEmpty = function (node) {\n return node.hasChildNodes() === false;\n };\n var tryFindRangePosition = function (node, rng) {\n return $_1m3f3j2yjkmcwkqg.lastPositionIn(node).fold(function () {\n return false;\n }, function (pos) {\n rng.setStart(pos.container(), pos.offset());\n rng.setEnd(pos.container(), pos.offset());\n return true;\n });\n };\n var padEmptyCaretContainer = function (root, node, rng) {\n if (isEmpty(node) && getParentCaretContainer(root, node)) {\n insertZwsp(node, rng);\n return true;\n } else {\n return false;\n }\n };\n var setEndPoint = function (dom, start, bookmark, rng) {\n var point = bookmark[start ? 'start' : 'end'];\n var i, node, offset, children;\n var root = dom.getRoot();\n if (point) {\n offset = point[0];\n for (node = root, i = point.length - 1; i >= 1; i--) {\n children = node.childNodes;\n if (padEmptyCaretContainer(root, node, rng)) {\n return true;\n }\n if (point[i] > children.length - 1) {\n if (padEmptyCaretContainer(root, node, rng)) {\n return true;\n }\n return tryFindRangePosition(node, rng);\n }\n node = children[point[i]];\n }\n if (node.nodeType === 3) {\n offset = Math.min(point[0], node.nodeValue.length);\n }\n if (node.nodeType === 1) {\n offset = Math.min(point[0], node.childNodes.length);\n }\n if (start) {\n rng.setStart(node, offset);\n } else {\n rng.setEnd(node, offset);\n }\n }\n return true;\n };\n var isValidTextNode = function (node) {\n return $_bjermr1rjkmcwkij.isText(node) && node.data.length > 0;\n };\n var restoreEndPoint = function (dom, suffix, bookmark) {\n var marker = dom.get(bookmark.id + '_' + suffix), node, idx, next, prev;\n var keep = bookmark.keep;\n var container, offset;\n if (marker) {\n node = marker.parentNode;\n if (suffix === 'start') {\n if (!keep) {\n idx = dom.nodeIndex(marker);\n } else {\n if (marker.hasChildNodes()) {\n node = marker.firstChild;\n idx = 1;\n } else if (isValidTextNode(marker.nextSibling)) {\n node = marker.nextSibling;\n idx = 0;\n } else if (isValidTextNode(marker.previousSibling)) {\n node = marker.previousSibling;\n idx = marker.previousSibling.data.length;\n } else {\n node = marker.parentNode;\n idx = dom.nodeIndex(marker) + 1;\n }\n }\n container = node;\n offset = idx;\n } else {\n if (!keep) {\n idx = dom.nodeIndex(marker);\n } else {\n if (marker.hasChildNodes()) {\n node = marker.firstChild;\n idx = 1;\n } else if (isValidTextNode(marker.previousSibling)) {\n node = marker.previousSibling;\n idx = marker.previousSibling.data.length;\n } else {\n node = marker.parentNode;\n idx = dom.nodeIndex(marker);\n }\n }\n container = node;\n offset = idx;\n }\n if (!keep) {\n prev = marker.previousSibling;\n next = marker.nextSibling;\n $_4ujg4tljkmcwkbk.each($_4ujg4tljkmcwkbk.grep(marker.childNodes), function (node) {\n if ($_bjermr1rjkmcwkij.isText(node)) {\n node.nodeValue = node.nodeValue.replace(/\\uFEFF/g, '');\n }\n });\n while (marker = dom.get(bookmark.id + '_' + suffix)) {\n dom.remove(marker, true);\n }\n if (prev && next && prev.nodeType === next.nodeType && $_bjermr1rjkmcwkij.isText(prev) && !$_cvvl9iajkmcwk25.opera) {\n idx = prev.nodeValue.length;\n prev.appendData(next.nodeValue);\n dom.remove(next);\n if (suffix === 'start') {\n container = prev;\n offset = idx;\n } else {\n container = prev;\n offset = idx;\n }\n }\n }\n return Option.some(CaretPosition$1(container, offset));\n } else {\n return Option.none();\n }\n };\n var alt = function (o1, o2) {\n return o1.isSome() ? o1 : o2;\n };\n var resolvePaths = function (dom, bookmark) {\n var rng = dom.createRng();\n if (setEndPoint(dom, true, bookmark, rng) && setEndPoint(dom, false, bookmark, rng)) {\n return Option.some(rng);\n } else {\n return Option.none();\n }\n };\n var resolveId = function (dom, bookmark) {\n var startPos = restoreEndPoint(dom, 'start', bookmark);\n var endPos = restoreEndPoint(dom, 'end', bookmark);\n return liftN([\n startPos,\n alt(endPos, startPos)\n ], function (spos, epos) {\n var rng = dom.createRng();\n rng.setStart(addBogus(dom, spos.container()), spos.offset());\n rng.setEnd(addBogus(dom, epos.container()), epos.offset());\n return rng;\n });\n };\n var resolveIndex$1 = function (dom, bookmark) {\n return Option.from(dom.select(bookmark.name)[bookmark.index]).map(function (elm) {\n var rng = dom.createRng();\n rng.selectNode(elm);\n return rng;\n });\n };\n var resolve$3 = function (selection, bookmark) {\n var dom = selection.dom;\n if (bookmark) {\n if (isPathBookmark(bookmark)) {\n return resolvePaths(dom, bookmark);\n } else if (isStringPathBookmark(bookmark)) {\n return Option.some(resolveCaretPositionBookmark(dom, bookmark));\n } else if (isIdBookmark(bookmark)) {\n return resolveId(dom, bookmark);\n } else if (isIndexBookmark(bookmark)) {\n return resolveIndex$1(dom, bookmark);\n } else if (isRangeBookmark(bookmark)) {\n return Option.some(bookmark.rng);\n }\n }\n return Option.none();\n };\n var $_1fx23n2wjkmcwkq6 = { resolve: resolve$3 };\n\n var getBookmark$1 = function (selection, type, normalized) {\n return $_aw3zi52jjkmcwkoa.getBookmark(selection, type, normalized);\n };\n var moveToBookmark = function (selection, bookmark) {\n $_1fx23n2wjkmcwkq6.resolve(selection, bookmark).each(function (rng) {\n selection.setRng(rng);\n });\n };\n var isBookmarkNode$1 = function (node) {\n return $_bjermr1rjkmcwkij.isElement(node) && node.tagName === 'SPAN' && node.getAttribute('data-mce-type') === 'bookmark';\n };\n var $_e4btcc2vjkmcwkq3 = {\n getBookmark: getBookmark$1,\n moveToBookmark: moveToBookmark,\n isBookmarkNode: isBookmarkNode$1\n };\n\n var isInlineBlock = function (node) {\n return node && /^(IMG)$/.test(node.nodeName);\n };\n var moveStart = function (dom, selection, rng) {\n var offset = rng.startOffset;\n var container = rng.startContainer, walker, node, nodes;\n if (rng.startContainer === rng.endContainer) {\n if (isInlineBlock(rng.startContainer.childNodes[rng.startOffset])) {\n return;\n }\n }\n if (container.nodeType === 1) {\n nodes = container.childNodes;\n if (offset < nodes.length) {\n container = nodes[offset];\n walker = new TreeWalker(container, dom.getParent(container, dom.isBlock));\n } else {\n container = nodes[nodes.length - 1];\n walker = new TreeWalker(container, dom.getParent(container, dom.isBlock));\n walker.next(true);\n }\n for (node = walker.current(); node; node = walker.next()) {\n if (node.nodeType === 3 && !isWhiteSpaceNode(node)) {\n rng.setStart(node, 0);\n selection.setRng(rng);\n return;\n }\n }\n }\n };\n var getNonWhiteSpaceSibling = function (node, next, inc) {\n if (node) {\n next = next ? 'nextSibling' : 'previousSibling';\n for (node = inc ? node : node[next]; node; node = node[next]) {\n if (node.nodeType === 1 || !isWhiteSpaceNode(node)) {\n return node;\n }\n }\n }\n };\n var isTextBlock$1 = function (editor, name) {\n if (name.nodeType) {\n name = name.nodeName;\n }\n return !!editor.schema.getTextBlockElements()[name.toLowerCase()];\n };\n var isValid = function (ed, parent, child) {\n return ed.schema.isValidChild(parent, child);\n };\n var isWhiteSpaceNode = function (node) {\n return node && node.nodeType === 3 && /^([\\t \\r\\n]+|)$/.test(node.nodeValue);\n };\n var replaceVars = function (value, vars) {\n if (typeof value !== 'string') {\n value = value(vars);\n } else if (vars) {\n value = value.replace(/%(\\w+)/g, function (str, name) {\n return vars[name] || str;\n });\n }\n return value;\n };\n var isEq = function (str1, str2) {\n str1 = str1 || '';\n str2 = str2 || '';\n str1 = '' + (str1.nodeName || str1);\n str2 = '' + (str2.nodeName || str2);\n return str1.toLowerCase() === str2.toLowerCase();\n };\n var normalizeStyleValue = function (dom, value, name) {\n if (name === 'color' || name === 'backgroundColor') {\n value = dom.toHex(value);\n }\n if (name === 'fontWeight' && value === 700) {\n value = 'bold';\n }\n if (name === 'fontFamily') {\n value = value.replace(/[\\'\\\"]/g, '').replace(/,\\s+/g, ',');\n }\n return '' + value;\n };\n var getStyle = function (dom, node, name) {\n return normalizeStyleValue(dom, dom.getStyle(node, name), name);\n };\n var getTextDecoration = function (dom, node) {\n var decoration;\n dom.getParent(node, function (n) {\n decoration = dom.getStyle(n, 'text-decoration');\n return decoration && decoration !== 'none';\n });\n return decoration;\n };\n var getParents$1 = function (dom, node, selector) {\n return dom.getParents(node, selector, dom.getRoot());\n };\n var $_dli08w3ajkmcwktg = {\n isInlineBlock: isInlineBlock,\n moveStart: moveStart,\n getNonWhiteSpaceSibling: getNonWhiteSpaceSibling,\n isTextBlock: isTextBlock$1,\n isValid: isValid,\n isWhiteSpaceNode: isWhiteSpaceNode,\n replaceVars: replaceVars,\n isEq: isEq,\n normalizeStyleValue: normalizeStyleValue,\n getStyle: getStyle,\n getTextDecoration: getTextDecoration,\n getParents: getParents$1\n };\n\n var isBookmarkNode$2 = $_e4btcc2vjkmcwkq3.isBookmarkNode;\n var getParents$2 = $_dli08w3ajkmcwktg.getParents;\n var isWhiteSpaceNode$1 = $_dli08w3ajkmcwktg.isWhiteSpaceNode;\n var isTextBlock$2 = $_dli08w3ajkmcwktg.isTextBlock;\n var findLeaf = function (node, offset) {\n if (typeof offset === 'undefined') {\n offset = node.nodeType === 3 ? node.length : node.childNodes.length;\n }\n while (node && node.hasChildNodes()) {\n node = node.childNodes[offset];\n if (node) {\n offset = node.nodeType === 3 ? node.length : node.childNodes.length;\n }\n }\n return {\n node: node,\n offset: offset\n };\n };\n var excludeTrailingWhitespace = function (endContainer, endOffset) {\n var leaf = findLeaf(endContainer, endOffset);\n if (leaf.node) {\n while (leaf.node && leaf.offset === 0 && leaf.node.previousSibling) {\n leaf = findLeaf(leaf.node.previousSibling);\n }\n if (leaf.node && leaf.offset > 0 && leaf.node.nodeType === 3 && leaf.node.nodeValue.charAt(leaf.offset - 1) === ' ') {\n if (leaf.offset > 1) {\n endContainer = leaf.node;\n endContainer.splitText(leaf.offset - 1);\n }\n }\n }\n return endContainer;\n };\n var isBogusBr = function (node) {\n return node.nodeName === 'BR' && node.getAttribute('data-mce-bogus') && !node.nextSibling;\n };\n var findParentContentEditable = function (dom, node) {\n var parent = node;\n while (parent) {\n if (parent.nodeType === 1 && dom.getContentEditable(parent)) {\n return dom.getContentEditable(parent) === 'false' ? parent : node;\n }\n parent = parent.parentNode;\n }\n return node;\n };\n var findSpace = function (start, remove, node, offset) {\n var pos, pos2;\n var str = node.nodeValue;\n if (typeof offset === 'undefined') {\n offset = start ? str.length : 0;\n }\n if (start) {\n pos = str.lastIndexOf(' ', offset);\n pos2 = str.lastIndexOf('\\xA0', offset);\n pos = pos > pos2 ? pos : pos2;\n if (pos !== -1 && !remove) {\n pos++;\n }\n } else {\n pos = str.indexOf(' ', offset);\n pos2 = str.indexOf('\\xA0', offset);\n pos = pos !== -1 && (pos2 === -1 || pos < pos2) ? pos : pos2;\n }\n return pos;\n };\n var findWordEndPoint = function (dom, body, container, offset, start, remove) {\n var walker, node, pos, lastTextNode;\n if (container.nodeType === 3) {\n pos = findSpace(start, remove, container, offset);\n if (pos !== -1) {\n return {\n container: container,\n offset: pos\n };\n }\n lastTextNode = container;\n }\n walker = new TreeWalker(container, dom.getParent(container, dom.isBlock) || body);\n while (node = walker[start ? 'prev' : 'next']()) {\n if (node.nodeType === 3) {\n lastTextNode = node;\n pos = findSpace(start, remove, node);\n if (pos !== -1) {\n return {\n container: node,\n offset: pos\n };\n }\n } else if (dom.isBlock(node)) {\n break;\n }\n }\n if (lastTextNode) {\n if (start) {\n offset = 0;\n } else {\n offset = lastTextNode.length;\n }\n return {\n container: lastTextNode,\n offset: offset\n };\n }\n };\n var findSelectorEndPoint = function (dom, format, rng, container, siblingName) {\n var parents, i, y, curFormat;\n if (container.nodeType === 3 && container.nodeValue.length === 0 && container[siblingName]) {\n container = container[siblingName];\n }\n parents = getParents$2(dom, container);\n for (i = 0; i < parents.length; i++) {\n for (y = 0; y < format.length; y++) {\n curFormat = format[y];\n if ('collapsed' in curFormat && curFormat.collapsed !== rng.collapsed) {\n continue;\n }\n if (dom.is(parents[i], curFormat.selector)) {\n return parents[i];\n }\n }\n }\n return container;\n };\n var findBlockEndPoint = function (editor, format, container, siblingName) {\n var node;\n var dom = editor.dom;\n var root = dom.getRoot();\n if (!format[0].wrapper) {\n node = dom.getParent(container, format[0].block, root);\n }\n if (!node) {\n var scopeRoot = dom.getParent(container, 'LI,TD,TH');\n node = dom.getParent(container.nodeType === 3 ? container.parentNode : container, function (node) {\n return node !== root && isTextBlock$2(editor, node);\n }, scopeRoot);\n }\n if (node && format[0].wrapper) {\n node = getParents$2(dom, node, 'ul,ol').reverse()[0] || node;\n }\n if (!node) {\n node = container;\n while (node[siblingName] && !dom.isBlock(node[siblingName])) {\n node = node[siblingName];\n if ($_dli08w3ajkmcwktg.isEq(node, 'br')) {\n break;\n }\n }\n }\n return node || container;\n };\n var findParentContainer = function (dom, format, startContainer, startOffset, endContainer, endOffset, start) {\n var container, parent, sibling, siblingName, root;\n container = parent = start ? startContainer : endContainer;\n siblingName = start ? 'previousSibling' : 'nextSibling';\n root = dom.getRoot();\n if (container.nodeType === 3 && !isWhiteSpaceNode$1(container)) {\n if (start ? startOffset > 0 : endOffset < container.nodeValue.length) {\n return container;\n }\n }\n while (true) {\n if (!format[0].block_expand && dom.isBlock(parent)) {\n return parent;\n }\n for (sibling = parent[siblingName]; sibling; sibling = sibling[siblingName]) {\n if (!isBookmarkNode$2(sibling) && !isWhiteSpaceNode$1(sibling) && !isBogusBr(sibling)) {\n return parent;\n }\n }\n if (parent === root || parent.parentNode === root) {\n container = parent;\n break;\n }\n parent = parent.parentNode;\n }\n return container;\n };\n var expandRng = function (editor, rng, format, remove) {\n var endPoint, startContainer = rng.startContainer, startOffset = rng.startOffset, endContainer = rng.endContainer, endOffset = rng.endOffset;\n var dom = editor.dom;\n if (startContainer.nodeType === 1 && startContainer.hasChildNodes()) {\n startContainer = getNode(startContainer, startOffset);\n if (startContainer.nodeType === 3) {\n startOffset = 0;\n }\n }\n if (endContainer.nodeType === 1 && endContainer.hasChildNodes()) {\n endContainer = getNode(endContainer, rng.collapsed ? endOffset : endOffset - 1);\n if (endContainer.nodeType === 3) {\n endOffset = endContainer.nodeValue.length;\n }\n }\n startContainer = findParentContentEditable(dom, startContainer);\n endContainer = findParentContentEditable(dom, endContainer);\n if (isBookmarkNode$2(startContainer.parentNode) || isBookmarkNode$2(startContainer)) {\n startContainer = isBookmarkNode$2(startContainer) ? startContainer : startContainer.parentNode;\n startContainer = startContainer.nextSibling || startContainer;\n if (startContainer.nodeType === 3) {\n startOffset = 0;\n }\n }\n if (isBookmarkNode$2(endContainer.parentNode) || isBookmarkNode$2(endContainer)) {\n endContainer = isBookmarkNode$2(endContainer) ? endContainer : endContainer.parentNode;\n endContainer = endContainer.previousSibling || endContainer;\n if (endContainer.nodeType === 3) {\n endOffset = endContainer.length;\n }\n }\n if (format[0].inline) {\n if (rng.collapsed) {\n endPoint = findWordEndPoint(dom, editor.getBody(), startContainer, startOffset, true, remove);\n if (endPoint) {\n startContainer = endPoint.container;\n startOffset = endPoint.offset;\n }\n endPoint = findWordEndPoint(dom, editor.getBody(), endContainer, endOffset, false, remove);\n if (endPoint) {\n endContainer = endPoint.container;\n endOffset = endPoint.offset;\n }\n }\n endContainer = remove ? endContainer : excludeTrailingWhitespace(endContainer, endOffset);\n }\n if (format[0].inline || format[0].block_expand) {\n if (!format[0].inline || (startContainer.nodeType !== 3 || startOffset === 0)) {\n startContainer = findParentContainer(dom, format, startContainer, startOffset, endContainer, endOffset, true);\n }\n if (!format[0].inline || (endContainer.nodeType !== 3 || endOffset === endContainer.nodeValue.length)) {\n endContainer = findParentContainer(dom, format, startContainer, startOffset, endContainer, endOffset, false);\n }\n }\n if (format[0].selector && format[0].expand !== false && !format[0].inline) {\n startContainer = findSelectorEndPoint(dom, format, rng, startContainer, 'previousSibling');\n endContainer = findSelectorEndPoint(dom, format, rng, endContainer, 'nextSibling');\n }\n if (format[0].block || format[0].selector) {\n startContainer = findBlockEndPoint(editor, format, startContainer, 'previousSibling');\n endContainer = findBlockEndPoint(editor, format, endContainer, 'nextSibling');\n if (format[0].block) {\n if (!dom.isBlock(startContainer)) {\n startContainer = findParentContainer(dom, format, startContainer, startOffset, endContainer, endOffset, true);\n }\n if (!dom.isBlock(endContainer)) {\n endContainer = findParentContainer(dom, format, startContainer, startOffset, endContainer, endOffset, false);\n }\n }\n }\n if (startContainer.nodeType === 1) {\n startOffset = dom.nodeIndex(startContainer);\n startContainer = startContainer.parentNode;\n }\n if (endContainer.nodeType === 1) {\n endOffset = dom.nodeIndex(endContainer) + 1;\n endContainer = endContainer.parentNode;\n }\n return {\n startContainer: startContainer,\n startOffset: startOffset,\n endContainer: endContainer,\n endOffset: endOffset\n };\n };\n var $_97afwh2ujkmcwkpw = { expandRng: expandRng };\n\n var each$8 = $_4ujg4tljkmcwkbk.each;\n var getEndChild = function (container, index) {\n var childNodes = container.childNodes;\n index--;\n if (index > childNodes.length - 1) {\n index = childNodes.length - 1;\n } else if (index < 0) {\n index = 0;\n }\n return childNodes[index] || container;\n };\n var walk$2 = function (dom, rng, callback) {\n var startContainer = rng.startContainer;\n var startOffset = rng.startOffset;\n var endContainer = rng.endContainer;\n var endOffset = rng.endOffset;\n var ancestor;\n var startPoint;\n var endPoint;\n var node;\n var parent;\n var siblings;\n var nodes;\n nodes = dom.select('td[data-mce-selected],th[data-mce-selected]');\n if (nodes.length > 0) {\n each$8(nodes, function (node) {\n callback([node]);\n });\n return;\n }\n var exclude = function (nodes) {\n var node;\n node = nodes[0];\n if (node.nodeType === 3 && node === startContainer && startOffset >= node.nodeValue.length) {\n nodes.splice(0, 1);\n }\n node = nodes[nodes.length - 1];\n if (endOffset === 0 && nodes.length > 0 && node === endContainer && node.nodeType === 3) {\n nodes.splice(nodes.length - 1, 1);\n }\n return nodes;\n };\n var collectSiblings = function (node, name, endNode) {\n var siblings = [];\n for (; node && node !== endNode; node = node[name]) {\n siblings.push(node);\n }\n return siblings;\n };\n var findEndPoint = function (node, root) {\n do {\n if (node.parentNode === root) {\n return node;\n }\n node = node.parentNode;\n } while (node);\n };\n var walkBoundary = function (startNode, endNode, next) {\n var siblingName = next ? 'nextSibling' : 'previousSibling';\n for (node = startNode, parent = node.parentNode; node && node !== endNode; node = parent) {\n parent = node.parentNode;\n siblings = collectSiblings(node === startNode ? node : node[siblingName], siblingName);\n if (siblings.length) {\n if (!next) {\n siblings.reverse();\n }\n callback(exclude(siblings));\n }\n }\n };\n if (startContainer.nodeType === 1 && startContainer.hasChildNodes()) {\n startContainer = startContainer.childNodes[startOffset];\n }\n if (endContainer.nodeType === 1 && endContainer.hasChildNodes()) {\n endContainer = getEndChild(endContainer, endOffset);\n }\n if (startContainer === endContainer) {\n return callback(exclude([startContainer]));\n }\n ancestor = dom.findCommonAncestor(startContainer, endContainer);\n for (node = startContainer; node; node = node.parentNode) {\n if (node === endContainer) {\n return walkBoundary(startContainer, ancestor, true);\n }\n if (node === ancestor) {\n break;\n }\n }\n for (node = endContainer; node; node = node.parentNode) {\n if (node === startContainer) {\n return walkBoundary(endContainer, ancestor);\n }\n if (node === ancestor) {\n break;\n }\n }\n startPoint = findEndPoint(startContainer, ancestor) || startContainer;\n endPoint = findEndPoint(endContainer, ancestor) || endContainer;\n walkBoundary(startContainer, startPoint, true);\n siblings = collectSiblings(startPoint === startContainer ? startPoint : startPoint.nextSibling, 'nextSibling', endPoint === endContainer ? endPoint.nextSibling : endPoint);\n if (siblings.length) {\n callback(exclude(siblings));\n }\n walkBoundary(endContainer, endPoint);\n };\n var $_cuckrv3bjkmcwktk = { walk: walk$2 };\n\n var zeroWidth = function () {\n return '\\uFEFF';\n };\n\n function NodeValue (is, name) {\n var get = function (element) {\n if (!is(element))\n throw new Error('Can only get ' + name + ' value of a ' + name + ' node');\n return getOption(element).getOr('');\n };\n var getOptionIE10 = function (element) {\n try {\n return getOptionSafe(element);\n } catch (e) {\n return Option.none();\n }\n };\n var getOptionSafe = function (element) {\n return is(element) ? Option.from(element.dom().nodeValue) : Option.none();\n };\n var browser = $_b1ykk4ojkmcwkcj.detect().browser;\n var getOption = browser.isIE() && browser.version.major === 10 ? getOptionIE10 : getOptionSafe;\n var set = function (element, value) {\n if (!is(element))\n throw new Error('Can only set raw ' + name + ' value of a ' + name + ' node');\n element.dom().nodeValue = value;\n };\n return {\n get: get,\n getOption: getOption,\n set: set\n };\n }\n\n var api = NodeValue($_2xwdjv11jkmcwke0.isText, 'text');\n var get$4 = function (element) {\n return api.get(element);\n };\n var getOption = function (element) {\n return api.getOption(element);\n };\n var set$2 = function (element, value) {\n api.set(element, value);\n };\n var $_ckzc193ejkmcwktu = {\n get: get$4,\n getOption: getOption,\n set: set$2\n };\n\n var isZeroWidth = function (elem) {\n return $_2xwdjv11jkmcwke0.isText(elem) && $_ckzc193ejkmcwktu.get(elem) === zeroWidth();\n };\n var context = function (editor, elem, wrapName, nodeName) {\n return $_ca6pc118jkmcwkfs.parent(elem).fold(function () {\n return 'skipping';\n }, function (parent) {\n if (nodeName === 'br' || isZeroWidth(elem)) {\n return 'skipping';\n } else if (isAnnotation(elem)) {\n return 'existing';\n } else if (isCaretNode(elem)) {\n return 'caret';\n } else if (!$_dli08w3ajkmcwktg.isValid(editor, wrapName, nodeName) || !$_dli08w3ajkmcwktg.isValid(editor, $_2xwdjv11jkmcwke0.name(parent), wrapName)) {\n return 'invalid-child';\n } else {\n return 'valid';\n }\n });\n };\n\n var __rest = undefined && undefined.__rest || function (s, e) {\n var t = {};\n for (var p in s)\n if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === 'function')\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++)\n if (e.indexOf(p[i]) < 0)\n t[p[i]] = s[p[i]];\n return t;\n };\n var applyWordGrab = function (editor, rng) {\n var r = $_97afwh2ujkmcwkpw.expandRng(editor, rng, [{ inline: true }], false);\n rng.setStart(r.startContainer, r.startOffset);\n rng.setEnd(r.endContainer, r.endOffset);\n editor.selection.setRng(rng);\n };\n var annotate = function (editor, rng, annotationName, decorate, _a) {\n var _b = _a.uid, uid = _b === void 0 ? generate('mce-annotation') : _b, data = __rest(_a, ['uid']);\n var newWrappers = [];\n var master = Element$$1.fromTag('span');\n $_ftm4v023jkmcwklz.add(master, annotation());\n $_29helg15jkmcwkf0.set(master, '' + dataAnnotationId(), uid);\n $_29helg15jkmcwkf0.set(master, '' + dataAnnotation(), annotationName);\n var _c = decorate(uid, data), _d = _c.attributes, attributes = _d === void 0 ? {} : _d, _e = _c.classes, classes = _e === void 0 ? [] : _e;\n $_29helg15jkmcwkf0.setAll(master, attributes);\n $_dw1myr2hjkmcwko1.add(master, classes);\n var wrapper = Cell(Option.none());\n var finishWrapper = function () {\n wrapper.set(Option.none());\n };\n var getOrOpenWrapper = function () {\n return wrapper.get().getOrThunk(function () {\n var nu = $_44uvy22ijkmcwko5.shallow(master);\n newWrappers.push(nu);\n wrapper.set(Option.some(nu));\n return nu;\n });\n };\n var processElements = function (elems) {\n each(elems, processElement);\n };\n var processElement = function (elem) {\n var ctx = context(editor, elem, 'span', $_2xwdjv11jkmcwke0.name(elem));\n switch (ctx) {\n case 'invalid-child': {\n finishWrapper();\n var children = $_ca6pc118jkmcwkfs.children(elem);\n processElements(children);\n finishWrapper();\n break;\n }\n case 'valid': {\n var w = getOrOpenWrapper();\n $_f4qt4v1yjkmcwkl2.wrap(elem, w);\n break;\n }\n case 'skipping':\n case 'existing':\n case 'caret': \n }\n };\n var processNodes = function (nodes) {\n var elems = map(nodes, Element$$1.fromDom);\n processElements(elems);\n };\n $_cuckrv3bjkmcwktk.walk(editor.dom, rng, function (nodes) {\n finishWrapper();\n processNodes(nodes);\n });\n return newWrappers;\n };\n var annotateWithBookmark = function (editor, name, settings, data) {\n editor.undoManager.transact(function () {\n var initialRng = editor.selection.getRng();\n if (initialRng.collapsed) {\n applyWordGrab(editor, initialRng);\n }\n var bookmark = $_aw3zi52jjkmcwkoa.getPersistentBookmark(editor.selection, true);\n var rng = editor.selection.getRng();\n annotate(editor, rng, name, settings.decorate, data);\n editor.selection.moveToBookmark(bookmark);\n });\n };\n\n function Annotator (editor) {\n var registry = create$1();\n setup$1(editor, registry);\n var changes = setup(editor, registry);\n return {\n register: function (name, settings) {\n registry.register(name, settings);\n },\n annotate: function (name, data) {\n registry.lookup(name).each(function (settings) {\n annotateWithBookmark(editor, name, settings, data);\n });\n },\n annotationChanged: function (name, callback) {\n changes.addListener(name, callback);\n },\n remove: function (name) {\n identify(editor, Option.some(name)).each(function (_a) {\n var elements = _a.elements;\n each(elements, $_eualm21wjkmcwkku.unwrap);\n });\n },\n getAll: function (name) {\n var directory = findAll(editor, name);\n return map$2(directory, function (elems) {\n return map(elems, function (elem) {\n return elem.dom();\n });\n });\n }\n };\n }\n\n var hasOnlyOneChild = function (node) {\n return node.firstChild && node.firstChild === node.lastChild;\n };\n var isPaddingNode = function (node) {\n return node.name === 'br' || node.value === '\\xA0';\n };\n var isPaddedEmptyBlock = function (schema, node) {\n var blockElements = schema.getBlockElements();\n return blockElements[node.name] && hasOnlyOneChild(node) && isPaddingNode(node.firstChild);\n };\n var isEmptyFragmentElement = function (schema, node) {\n var nonEmptyElements = schema.getNonEmptyElements();\n return node && (node.isEmpty(nonEmptyElements) || isPaddedEmptyBlock(schema, node));\n };\n var isListFragment = function (schema, fragment) {\n var firstChild = fragment.firstChild;\n var lastChild = fragment.lastChild;\n if (firstChild && firstChild.name === 'meta') {\n firstChild = firstChild.next;\n }\n if (lastChild && lastChild.attr('id') === 'mce_marker') {\n lastChild = lastChild.prev;\n }\n if (isEmptyFragmentElement(schema, lastChild)) {\n lastChild = lastChild.prev;\n }\n if (!firstChild || firstChild !== lastChild) {\n return false;\n }\n return firstChild.name === 'ul' || firstChild.name === 'ol';\n };\n var cleanupDomFragment = function (domFragment) {\n var firstChild = domFragment.firstChild;\n var lastChild = domFragment.lastChild;\n if (firstChild && firstChild.nodeName === 'META') {\n firstChild.parentNode.removeChild(firstChild);\n }\n if (lastChild && lastChild.id === 'mce_marker') {\n lastChild.parentNode.removeChild(lastChild);\n }\n return domFragment;\n };\n var toDomFragment = function (dom, serializer, fragment) {\n var html = serializer.serialize(fragment);\n var domFragment = dom.createFragment(html);\n return cleanupDomFragment(domFragment);\n };\n var listItems$1 = function (elm) {\n return $_4ujg4tljkmcwkbk.grep(elm.childNodes, function (child) {\n return child.nodeName === 'LI';\n });\n };\n var isPadding = function (node) {\n return node.data === '\\xA0' || $_bjermr1rjkmcwkij.isBr(node);\n };\n var isListItemPadded = function (node) {\n return node && node.firstChild && node.firstChild === node.lastChild && isPadding(node.firstChild);\n };\n var isEmptyOrPadded = function (elm) {\n return !elm.firstChild || isListItemPadded(elm);\n };\n var trimListItems = function (elms) {\n return elms.length > 0 && isEmptyOrPadded(elms[elms.length - 1]) ? elms.slice(0, -1) : elms;\n };\n var getParentLi = function (dom, node) {\n var parentBlock = dom.getParent(node, dom.isBlock);\n return parentBlock && parentBlock.nodeName === 'LI' ? parentBlock : null;\n };\n var isParentBlockLi = function (dom, node) {\n return !!getParentLi(dom, node);\n };\n var getSplit = function (parentNode, rng) {\n var beforeRng = rng.cloneRange();\n var afterRng = rng.cloneRange();\n beforeRng.setStartBefore(parentNode);\n afterRng.setEndAfter(parentNode);\n return [\n beforeRng.cloneContents(),\n afterRng.cloneContents()\n ];\n };\n var findFirstIn = function (node, rootNode) {\n var caretPos = CaretPosition$1.before(node);\n var caretWalker = CaretWalker(rootNode);\n var newCaretPos = caretWalker.next(caretPos);\n return newCaretPos ? newCaretPos.toRange() : null;\n };\n var findLastOf = function (node, rootNode) {\n var caretPos = CaretPosition$1.after(node);\n var caretWalker = CaretWalker(rootNode);\n var newCaretPos = caretWalker.prev(caretPos);\n return newCaretPos ? newCaretPos.toRange() : null;\n };\n var insertMiddle = function (target, elms, rootNode, rng) {\n var parts = getSplit(target, rng);\n var parentElm = target.parentNode;\n parentElm.insertBefore(parts[0], target);\n $_4ujg4tljkmcwkbk.each(elms, function (li) {\n parentElm.insertBefore(li, target);\n });\n parentElm.insertBefore(parts[1], target);\n parentElm.removeChild(target);\n return findLastOf(elms[elms.length - 1], rootNode);\n };\n var insertBefore = function (target, elms, rootNode) {\n var parentElm = target.parentNode;\n $_4ujg4tljkmcwkbk.each(elms, function (elm) {\n parentElm.insertBefore(elm, target);\n });\n return findFirstIn(target, rootNode);\n };\n var insertAfter = function (target, elms, rootNode, dom) {\n dom.insertAfter(elms.reverse(), target);\n return findLastOf(elms[0], rootNode);\n };\n var insertAtCaret = function (serializer, dom, rng, fragment) {\n var domFragment = toDomFragment(dom, serializer, fragment);\n var liTarget = getParentLi(dom, rng.startContainer);\n var liElms = trimListItems(listItems$1(domFragment.firstChild));\n var BEGINNING = 1, END = 2;\n var rootNode = dom.getRoot();\n var isAt = function (location) {\n var caretPos = CaretPosition$1.fromRangeStart(rng);\n var caretWalker = CaretWalker(dom.getRoot());\n var newPos = location === BEGINNING ? caretWalker.prev(caretPos) : caretWalker.next(caretPos);\n return newPos ? getParentLi(dom, newPos.getNode()) !== liTarget : true;\n };\n if (isAt(BEGINNING)) {\n return insertBefore(liTarget, liElms, rootNode);\n } else if (isAt(END)) {\n return insertAfter(liTarget, liElms, rootNode, dom);\n }\n return insertMiddle(liTarget, liElms, rootNode, rng);\n };\n var $_e6q31u3jjkmcwkvd = {\n isListFragment: isListFragment,\n insertAtCaret: insertAtCaret,\n isParentBlockLi: isParentBlockLi,\n trimListItems: trimListItems,\n listItems: listItems$1\n };\n\n var each$9 = $_4ujg4tljkmcwkbk.each;\n var ElementUtils = function (dom) {\n this.compare = function (node1, node2) {\n if (node1.nodeName !== node2.nodeName) {\n return false;\n }\n var getAttribs = function (node) {\n var attribs = {};\n each$9(dom.getAttribs(node), function (attr) {\n var name = attr.nodeName.toLowerCase();\n if (name.indexOf('_') !== 0 && name !== 'style' && name.indexOf('data-') !== 0) {\n attribs[name] = dom.getAttrib(node, name);\n }\n });\n return attribs;\n };\n var compareObjects = function (obj1, obj2) {\n var value, name;\n for (name in obj1) {\n if (obj1.hasOwnProperty(name)) {\n value = obj2[name];\n if (typeof value === 'undefined') {\n return false;\n }\n if (obj1[name] !== value) {\n return false;\n }\n delete obj2[name];\n }\n }\n for (name in obj2) {\n if (obj2.hasOwnProperty(name)) {\n return false;\n }\n }\n return true;\n };\n if (!compareObjects(getAttribs(node1), getAttribs(node2))) {\n return false;\n }\n if (!compareObjects(dom.parseStyle(dom.getAttrib(node1, 'style')), dom.parseStyle(dom.getAttrib(node2, 'style')))) {\n return false;\n }\n return !$_e4btcc2vjkmcwkq3.isBookmarkNode(node1) && !$_e4btcc2vjkmcwkq3.isBookmarkNode(node2);\n };\n };\n\n var getLastChildren = function (elm) {\n var children = [];\n var rawNode = elm.dom();\n while (rawNode) {\n children.push(Element$$1.fromDom(rawNode));\n rawNode = rawNode.lastChild;\n }\n return children;\n };\n var removeTrailingBr = function (elm) {\n var allBrs = $_2gqm0n27jkmcwkmi.descendants(elm, 'br');\n var brs = filter(getLastChildren(elm).slice(-1), isBr);\n if (allBrs.length === brs.length) {\n each(brs, $_eualm21wjkmcwkku.remove);\n }\n };\n var fillWithPaddingBr = function (elm) {\n $_eualm21wjkmcwkku.empty(elm);\n $_f4qt4v1yjkmcwkl2.append(elm, Element$$1.fromHtml('
'));\n };\n var isPaddingContents = function (elm) {\n return $_2xwdjv11jkmcwke0.isText(elm) ? $_ckzc193ejkmcwktu.get(elm) === '\\xA0' : isBr(elm);\n };\n var isPaddedElement = function (elm) {\n return filter($_ca6pc118jkmcwkfs.children(elm), isPaddingContents).length === 1;\n };\n var trimBlockTrailingBr = function (elm) {\n $_ca6pc118jkmcwkfs.lastChild(elm).each(function (lastChild) {\n $_ca6pc118jkmcwkfs.prevSibling(lastChild).each(function (lastChildPrevSibling) {\n if (isBlock(elm) && isBr(lastChild) && isBlock(lastChildPrevSibling)) {\n $_eualm21wjkmcwkku.remove(lastChild);\n }\n });\n });\n };\n var $_zygeg3ljkmcwkvo = {\n removeTrailingBr: removeTrailingBr,\n fillWithPaddingBr: fillWithPaddingBr,\n isPaddedElement: isPaddedElement,\n trimBlockTrailingBr: trimBlockTrailingBr\n };\n\n var makeMap$3 = $_4ujg4tljkmcwkbk.makeMap;\n function Writer (settings) {\n var html = [];\n var indent, indentBefore, indentAfter, encode, htmlOutput;\n settings = settings || {};\n indent = settings.indent;\n indentBefore = makeMap$3(settings.indent_before || '');\n indentAfter = makeMap$3(settings.indent_after || '');\n encode = $_33qwr1sjkmcwkip.getEncodeFunc(settings.entity_encoding || 'raw', settings.entities);\n htmlOutput = settings.element_format === 'html';\n return {\n start: function (name, attrs, empty) {\n var i, l, attr, value;\n if (indent && indentBefore[name] && html.length > 0) {\n value = html[html.length - 1];\n if (value.length > 0 && value !== '\\n') {\n html.push('\\n');\n }\n }\n html.push('<', name);\n if (attrs) {\n for (i = 0, l = attrs.length; i < l; i++) {\n attr = attrs[i];\n html.push(' ', attr.name, '=\"', encode(attr.value, true), '\"');\n }\n }\n if (!empty || htmlOutput) {\n html[html.length] = '>';\n } else {\n html[html.length] = ' />';\n }\n if (empty && indent && indentAfter[name] && html.length > 0) {\n value = html[html.length - 1];\n if (value.length > 0 && value !== '\\n') {\n html.push('\\n');\n }\n }\n },\n end: function (name) {\n var value;\n html.push('');\n if (indent && indentAfter[name] && html.length > 0) {\n value = html[html.length - 1];\n if (value.length > 0 && value !== '\\n') {\n html.push('\\n');\n }\n }\n },\n text: function (text, raw) {\n if (text.length > 0) {\n html[html.length] = raw ? text : encode(text);\n }\n },\n cdata: function (text) {\n html.push('');\n },\n comment: function (text) {\n html.push('');\n },\n pi: function (name, text) {\n if (text) {\n html.push('');\n } else {\n html.push('');\n }\n if (indent) {\n html.push('\\n');\n }\n },\n doctype: function (text) {\n html.push('', indent ? '\\n' : '');\n },\n reset: function () {\n html.length = 0;\n },\n getContent: function () {\n return html.join('').replace(/\\n$/, '');\n }\n };\n }\n\n function HtmlSerializer (settings, schema) {\n if (schema === void 0) {\n schema = Schema();\n }\n var writer = Writer(settings);\n settings = settings || {};\n settings.validate = 'validate' in settings ? settings.validate : true;\n var serialize = function (node) {\n var handlers, validate;\n validate = settings.validate;\n handlers = {\n 3: function (node) {\n writer.text(node.value, node.raw);\n },\n 8: function (node) {\n writer.comment(node.value);\n },\n 7: function (node) {\n writer.pi(node.name, node.value);\n },\n 10: function (node) {\n writer.doctype(node.value);\n },\n 4: function (node) {\n writer.cdata(node.value);\n },\n 11: function (node) {\n if (node = node.firstChild) {\n do {\n walk(node);\n } while (node = node.next);\n }\n }\n };\n writer.reset();\n var walk = function (node) {\n var handler = handlers[node.type];\n var name, isEmpty, attrs, attrName, attrValue, sortedAttrs, i, l, elementRule;\n if (!handler) {\n name = node.name;\n isEmpty = node.shortEnded;\n attrs = node.attributes;\n if (validate && attrs && attrs.length > 1) {\n sortedAttrs = [];\n sortedAttrs.map = {};\n elementRule = schema.getElementRule(node.name);\n if (elementRule) {\n for (i = 0, l = elementRule.attributesOrder.length; i < l; i++) {\n attrName = elementRule.attributesOrder[i];\n if (attrName in attrs.map) {\n attrValue = attrs.map[attrName];\n sortedAttrs.map[attrName] = attrValue;\n sortedAttrs.push({\n name: attrName,\n value: attrValue\n });\n }\n }\n for (i = 0, l = attrs.length; i < l; i++) {\n attrName = attrs[i].name;\n if (!(attrName in sortedAttrs.map)) {\n attrValue = attrs.map[attrName];\n sortedAttrs.map[attrName] = attrValue;\n sortedAttrs.push({\n name: attrName,\n value: attrValue\n });\n }\n }\n attrs = sortedAttrs;\n }\n }\n writer.start(node.name, attrs, isEmpty);\n if (!isEmpty) {\n if (node = node.firstChild) {\n do {\n walk(node);\n } while (node = node.next);\n }\n writer.end(name);\n }\n } else {\n handler(node);\n }\n };\n if (node.type === 1 && !settings.inner) {\n walk(node);\n } else {\n handlers[11](node);\n }\n return writer.getContent();\n };\n return { serialize: serialize };\n }\n\n var createRange$1 = function (sc, so, ec, eo) {\n var rng = document.createRange();\n rng.setStart(sc, so);\n rng.setEnd(ec, eo);\n return rng;\n };\n var normalizeBlockSelectionRange = function (rng) {\n var startPos = CaretPosition$1.fromRangeStart(rng);\n var endPos = CaretPosition$1.fromRangeEnd(rng);\n var rootNode = rng.commonAncestorContainer;\n return $_1m3f3j2yjkmcwkqg.fromPosition(false, rootNode, endPos).map(function (newEndPos) {\n if (!isInSameBlock(startPos, endPos, rootNode) && isInSameBlock(startPos, newEndPos, rootNode)) {\n return createRange$1(startPos.container(), startPos.offset(), newEndPos.container(), newEndPos.offset());\n } else {\n return rng;\n }\n }).getOr(rng);\n };\n var normalize = function (rng) {\n return rng.collapsed ? rng : normalizeBlockSelectionRange(rng);\n };\n var $_bx30le3ojkmcwkw9 = { normalize: normalize };\n\n var isTableCell$2 = $_bjermr1rjkmcwkij.matchNodeNames('td th');\n var validInsertion = function (editor, value, parentNode) {\n if (parentNode.getAttribute('data-mce-bogus') === 'all') {\n parentNode.parentNode.insertBefore(editor.dom.createFragment(value), parentNode);\n } else {\n var node = parentNode.firstChild;\n var node2 = parentNode.lastChild;\n if (!node || node === node2 && node.nodeName === 'BR') {\n editor.dom.setHTML(parentNode, value);\n } else {\n editor.selection.setContent(value);\n }\n }\n };\n var trimBrsFromTableCell = function (dom, elm) {\n Option.from(dom.getParent(elm, 'td,th')).map(Element$$1.fromDom).each($_zygeg3ljkmcwkvo.trimBlockTrailingBr);\n };\n var insertHtmlAtCaret = function (editor, value, details) {\n var parser, serializer, parentNode, rootNode, fragment, args;\n var marker, rng, node, node2, bookmarkHtml, merge;\n var textInlineElements = editor.schema.getTextInlineElements();\n var selection = editor.selection, dom = editor.dom;\n var trimOrPaddLeftRight = function (html) {\n var rng, container, offset;\n rng = selection.getRng();\n container = rng.startContainer;\n offset = rng.startOffset;\n var hasSiblingText = function (siblingName) {\n return container[siblingName] && container[siblingName].nodeType === 3;\n };\n if (container.nodeType === 3) {\n if (offset > 0) {\n html = html.replace(/^ /, ' ');\n } else if (!hasSiblingText('previousSibling')) {\n html = html.replace(/^ /, ' ');\n }\n if (offset < container.length) {\n html = html.replace(/ (
|)$/, ' ');\n } else if (!hasSiblingText('nextSibling')) {\n html = html.replace(/( | )(
|)$/, ' ');\n }\n }\n return html;\n };\n var trimNbspAfterDeleteAndPaddValue = function () {\n var rng, container, offset;\n rng = selection.getRng();\n container = rng.startContainer;\n offset = rng.startOffset;\n if (container.nodeType === 3 && rng.collapsed) {\n if (container.data[offset] === '\\xA0') {\n container.deleteData(offset, 1);\n if (!/[\\u00a0| ]$/.test(value)) {\n value += ' ';\n }\n } else if (container.data[offset - 1] === '\\xA0') {\n container.deleteData(offset - 1, 1);\n if (!/[\\u00a0| ]$/.test(value)) {\n value = ' ' + value;\n }\n }\n }\n };\n var reduceInlineTextElements = function () {\n if (merge) {\n var root_1 = editor.getBody(), elementUtils_1 = new ElementUtils(dom);\n $_4ujg4tljkmcwkbk.each(dom.select('*[data-mce-fragment]'), function (node) {\n for (var testNode = node.parentNode; testNode && testNode !== root_1; testNode = testNode.parentNode) {\n if (textInlineElements[node.nodeName.toLowerCase()] && elementUtils_1.compare(testNode, node)) {\n dom.remove(node, true);\n }\n }\n });\n }\n };\n var markFragmentElements = function (fragment) {\n var node = fragment;\n while (node = node.walk()) {\n if (node.type === 1) {\n node.attr('data-mce-fragment', '1');\n }\n }\n };\n var umarkFragmentElements = function (elm) {\n $_4ujg4tljkmcwkbk.each(elm.getElementsByTagName('*'), function (elm) {\n elm.removeAttribute('data-mce-fragment');\n });\n };\n var isPartOfFragment = function (node) {\n return !!node.getAttribute('data-mce-fragment');\n };\n var canHaveChildren = function (node) {\n return node && !editor.schema.getShortEndedElements()[node.nodeName];\n };\n var moveSelectionToMarker = function (marker) {\n var parentEditableFalseElm, parentBlock, nextRng;\n var getContentEditableFalseParent = function (node) {\n var root = editor.getBody();\n for (; node && node !== root; node = node.parentNode) {\n if (editor.dom.getContentEditable(node) === 'false') {\n return node;\n }\n }\n return null;\n };\n if (!marker) {\n return;\n }\n selection.scrollIntoView(marker);\n parentEditableFalseElm = getContentEditableFalseParent(marker);\n if (parentEditableFalseElm) {\n dom.remove(marker);\n selection.select(parentEditableFalseElm);\n return;\n }\n rng = dom.createRng();\n node = marker.previousSibling;\n if (node && node.nodeType === 3) {\n rng.setStart(node, node.nodeValue.length);\n if (!$_cvvl9iajkmcwk25.ie) {\n node2 = marker.nextSibling;\n if (node2 && node2.nodeType === 3) {\n node.appendData(node2.data);\n node2.parentNode.removeChild(node2);\n }\n }\n } else {\n rng.setStartBefore(marker);\n rng.setEndBefore(marker);\n }\n var findNextCaretRng = function (rng) {\n var caretPos = CaretPosition$1.fromRangeStart(rng);\n var caretWalker = CaretWalker(editor.getBody());\n caretPos = caretWalker.next(caretPos);\n if (caretPos) {\n return caretPos.toRange();\n }\n };\n parentBlock = dom.getParent(marker, dom.isBlock);\n dom.remove(marker);\n if (parentBlock && dom.isEmpty(parentBlock)) {\n editor.$(parentBlock).empty();\n rng.setStart(parentBlock, 0);\n rng.setEnd(parentBlock, 0);\n if (!isTableCell$2(parentBlock) && !isPartOfFragment(parentBlock) && (nextRng = findNextCaretRng(rng))) {\n rng = nextRng;\n dom.remove(parentBlock);\n } else {\n dom.add(parentBlock, dom.create('br', { 'data-mce-bogus': '1' }));\n }\n }\n selection.setRng(rng);\n };\n if (/^ | $/.test(value)) {\n value = trimOrPaddLeftRight(value);\n }\n parser = editor.parser;\n merge = details.merge;\n serializer = HtmlSerializer({ validate: editor.settings.validate }, editor.schema);\n bookmarkHtml = '​';\n args = {\n content: value,\n format: 'html',\n selection: true,\n paste: details.paste\n };\n args = editor.fire('BeforeSetContent', args);\n if (args.isDefaultPrevented()) {\n editor.fire('SetContent', {\n content: args.content,\n format: 'html',\n selection: true,\n paste: details.paste\n });\n return;\n }\n value = args.content;\n if (value.indexOf('{$caret}') === -1) {\n value += '{$caret}';\n }\n value = value.replace(/\\{\\$caret\\}/, bookmarkHtml);\n rng = selection.getRng();\n var caretElement = rng.startContainer || (rng.parentElement ? rng.parentElement() : null);\n var body = editor.getBody();\n if (caretElement === body && selection.isCollapsed()) {\n if (dom.isBlock(body.firstChild) && canHaveChildren(body.firstChild) && dom.isEmpty(body.firstChild)) {\n rng = dom.createRng();\n rng.setStart(body.firstChild, 0);\n rng.setEnd(body.firstChild, 0);\n selection.setRng(rng);\n }\n }\n if (!selection.isCollapsed()) {\n editor.selection.setRng($_bx30le3ojkmcwkw9.normalize(editor.selection.getRng()));\n editor.getDoc().execCommand('Delete', false, null);\n trimNbspAfterDeleteAndPaddValue();\n }\n parentNode = selection.getNode();\n var parserArgs = {\n context: parentNode.nodeName.toLowerCase(),\n data: details.data,\n insert: true\n };\n fragment = parser.parse(value, parserArgs);\n if (details.paste === true && $_e6q31u3jjkmcwkvd.isListFragment(editor.schema, fragment) && $_e6q31u3jjkmcwkvd.isParentBlockLi(dom, parentNode)) {\n rng = $_e6q31u3jjkmcwkvd.insertAtCaret(serializer, dom, editor.selection.getRng(), fragment);\n editor.selection.setRng(rng);\n editor.fire('SetContent', args);\n return;\n }\n markFragmentElements(fragment);\n node = fragment.lastChild;\n if (node.attr('id') === 'mce_marker') {\n marker = node;\n for (node = node.prev; node; node = node.walk(true)) {\n if (node.type === 3 || !dom.isBlock(node.name)) {\n if (editor.schema.isValidChild(node.parent.name, 'span')) {\n node.parent.insert(marker, node, node.name === 'br');\n }\n break;\n }\n }\n }\n editor._selectionOverrides.showBlockCaretContainer(parentNode);\n if (!parserArgs.invalid) {\n value = serializer.serialize(fragment);\n validInsertion(editor, value, parentNode);\n } else {\n selection.setContent(bookmarkHtml);\n parentNode = selection.getNode();\n rootNode = editor.getBody();\n if (parentNode.nodeType === 9) {\n parentNode = node = rootNode;\n } else {\n node = parentNode;\n }\n while (node !== rootNode) {\n parentNode = node;\n node = node.parentNode;\n }\n value = parentNode === rootNode ? rootNode.innerHTML : dom.getOuterHTML(parentNode);\n value = serializer.serialize(parser.parse(value.replace(//i, function () {\n return serializer.serialize(fragment);\n })));\n if (parentNode === rootNode) {\n dom.setHTML(rootNode, value);\n } else {\n dom.setOuterHTML(parentNode, value);\n }\n }\n reduceInlineTextElements();\n moveSelectionToMarker(dom.get('mce_marker'));\n umarkFragmentElements(editor.getBody());\n trimBrsFromTableCell(editor.dom, editor.selection.getStart());\n editor.fire('SetContent', args);\n editor.addVisual();\n };\n var processValue = function (value) {\n var details;\n if (typeof value !== 'string') {\n details = $_4ujg4tljkmcwkbk.extend({\n paste: value.paste,\n data: { paste: value.paste }\n }, value);\n return {\n content: value.content,\n details: details\n };\n }\n return {\n content: value,\n details: {}\n };\n };\n var insertAtCaret$1 = function (editor, value) {\n var result = processValue(value);\n insertHtmlAtCaret(editor, result.content, result.details);\n };\n var $_g2yj883ijkmcwkv2 = { insertAtCaret: insertAtCaret$1 };\n\n var sectionResult = Immutable('sections', 'settings');\n var detection = $_b1ykk4ojkmcwkcj.detect();\n var isTouch = detection.deviceType.isTouch();\n var mobilePlugins = [\n 'lists',\n 'autolink',\n 'autosave'\n ];\n var defaultMobileSettings = { theme: 'mobile' };\n var normalizePlugins = function (plugins) {\n var pluginNames = isArray(plugins) ? plugins.join(' ') : plugins;\n var trimmedPlugins = map(isString(pluginNames) ? pluginNames.split(' ') : [], trim$2);\n return filter(trimmedPlugins, function (item) {\n return item.length > 0;\n });\n };\n var filterMobilePlugins = function (plugins) {\n return filter(plugins, curry(contains, mobilePlugins));\n };\n var extractSections = function (keys$$1, settings) {\n var result = bifilter(settings, function (value, key) {\n return contains(keys$$1, key);\n });\n return sectionResult(result.t, result.f);\n };\n var getSection = function (sectionResult, name, defaults) {\n var sections = sectionResult.sections();\n var sectionSettings = sections.hasOwnProperty(name) ? sections[name] : {};\n return $_4ujg4tljkmcwkbk.extend({}, defaults, sectionSettings);\n };\n var hasSection = function (sectionResult, name) {\n return sectionResult.sections().hasOwnProperty(name);\n };\n var getDefaultSettings = function (id, documentBaseUrl, editor) {\n return {\n id: id,\n theme: 'modern',\n delta_width: 0,\n delta_height: 0,\n popup_css: '',\n plugins: '',\n document_base_url: documentBaseUrl,\n add_form_submit_trigger: true,\n submit_patch: true,\n add_unload_trigger: true,\n convert_urls: true,\n relative_urls: true,\n remove_script_host: true,\n object_resizing: true,\n doctype: '',\n visual: true,\n font_size_style_values: 'xx-small,x-small,small,medium,large,x-large,xx-large',\n font_size_legacy_values: 'xx-small,small,medium,large,x-large,xx-large,300%',\n forced_root_block: 'p',\n hidden_input: true,\n render_ui: true,\n indentation: '30px',\n inline_styles: true,\n convert_fonts_to_spans: true,\n indent: 'simple',\n indent_before: 'p,h1,h2,h3,h4,h5,h6,blockquote,div,title,style,pre,script,td,th,ul,ol,li,dl,dt,dd,area,table,thead,' + 'tfoot,tbody,tr,section,summary,article,hgroup,aside,figure,figcaption,option,optgroup,datalist',\n indent_after: 'p,h1,h2,h3,h4,h5,h6,blockquote,div,title,style,pre,script,td,th,ul,ol,li,dl,dt,dd,area,table,thead,' + 'tfoot,tbody,tr,section,summary,article,hgroup,aside,figure,figcaption,option,optgroup,datalist',\n entity_encoding: 'named',\n url_converter: editor.convertURL,\n url_converter_scope: editor,\n ie7_compat: true\n };\n };\n var getExternalPlugins = function (overrideSettings, settings) {\n var userDefinedExternalPlugins = settings.external_plugins ? settings.external_plugins : {};\n if (overrideSettings && overrideSettings.external_plugins) {\n return $_4ujg4tljkmcwkbk.extend({}, overrideSettings.external_plugins, userDefinedExternalPlugins);\n } else {\n return userDefinedExternalPlugins;\n }\n };\n var combinePlugins = function (forcedPlugins, plugins) {\n return [].concat(normalizePlugins(forcedPlugins)).concat(normalizePlugins(plugins));\n };\n var processPlugins = function (isTouchDevice, sectionResult, defaultOverrideSettings, settings) {\n var forcedPlugins = normalizePlugins(defaultOverrideSettings.forced_plugins);\n var plugins = normalizePlugins(settings.plugins);\n var platformPlugins = isTouchDevice && hasSection(sectionResult, 'mobile') ? filterMobilePlugins(plugins) : plugins;\n var combinedPlugins = combinePlugins(forcedPlugins, platformPlugins);\n return $_4ujg4tljkmcwkbk.extend(settings, { plugins: combinedPlugins.join(' ') });\n };\n var isOnMobile = function (isTouchDevice, sectionResult) {\n var isInline = sectionResult.settings().inline;\n return isTouchDevice && hasSection(sectionResult, 'mobile') && !isInline;\n };\n var combineSettings = function (isTouchDevice, defaultSettings, defaultOverrideSettings, settings) {\n var sectionResult = extractSections(['mobile'], settings);\n var extendedSettings = $_4ujg4tljkmcwkbk.extend(defaultSettings, defaultOverrideSettings, sectionResult.settings(), isOnMobile(isTouchDevice, sectionResult) ? getSection(sectionResult, 'mobile', defaultMobileSettings) : {}, {\n validate: true,\n content_editable: sectionResult.settings().inline,\n external_plugins: getExternalPlugins(defaultOverrideSettings, sectionResult.settings())\n });\n return processPlugins(isTouchDevice, sectionResult, defaultOverrideSettings, extendedSettings);\n };\n var getEditorSettings = function (editor, id, documentBaseUrl, defaultOverrideSettings, settings) {\n var defaultSettings = getDefaultSettings(id, documentBaseUrl, editor);\n return combineSettings(isTouch, defaultSettings, defaultOverrideSettings, settings);\n };\n var getFiltered = function (predicate, editor, name) {\n return Option.from(editor.settings[name]).filter(predicate);\n };\n var getString = curry(getFiltered, isString);\n var getParamObject = function (value) {\n var output = {};\n if (typeof value === 'string') {\n each(value.indexOf('=') > 0 ? value.split(/[;,](?![^=;,]*(?:[;,]|$))/) : value.split(','), function (val) {\n var arr = val.split('=');\n if (arr.length > 1) {\n output[$_4ujg4tljkmcwkbk.trim(arr[0])] = $_4ujg4tljkmcwkbk.trim(arr[1]);\n } else {\n output[$_4ujg4tljkmcwkbk.trim(arr[0])] = $_4ujg4tljkmcwkbk.trim(arr);\n }\n });\n } else {\n output = value;\n }\n return output;\n };\n var isArrayOf = function (p) {\n return function (a) {\n return isArray(a) && forall(a, p);\n };\n };\n var getParam = function (editor, name, defaultVal, type) {\n var value = name in editor.settings ? editor.settings[name] : defaultVal;\n if (type === 'hash') {\n return getParamObject(value);\n } else if (type === 'string') {\n return getFiltered(isString, editor, name).getOr(defaultVal);\n } else if (type === 'number') {\n return getFiltered(isNumber, editor, name).getOr(defaultVal);\n } else if (type === 'boolean') {\n return getFiltered(isBoolean, editor, name).getOr(defaultVal);\n } else if (type === 'object') {\n return getFiltered(isObject, editor, name).getOr(defaultVal);\n } else if (type === 'array') {\n return getFiltered(isArray, editor, name).getOr(defaultVal);\n } else if (type === 'string[]') {\n return getFiltered(isArrayOf(isString), editor, name).getOr(defaultVal);\n } else if (type === 'function') {\n return getFiltered(isFunction, editor, name).getOr(defaultVal);\n } else {\n return value;\n }\n };\n\n var strongRtl = /[\\u0591-\\u07FF\\uFB1D-\\uFDFF\\uFE70-\\uFEFC]/;\n var hasStrongRtl = function (text) {\n return strongRtl.test(text);\n };\n\n var isInlineTarget = function (editor, elm) {\n var selector = getString(editor, 'inline_boundaries_selector').getOr('a[href],code');\n return $_4jv6d81gjkmcwkgv.is(Element$$1.fromDom(elm), selector);\n };\n var isRtl = function (element) {\n return DOMUtils$1.DOM.getStyle(element, 'direction', true) === 'rtl' || hasStrongRtl(element.textContent);\n };\n var findInlineParents = function (isInlineTarget, rootNode, pos) {\n return filter(DOMUtils$1.DOM.getParents(pos.container(), '*', rootNode), isInlineTarget);\n };\n var findRootInline = function (isInlineTarget, rootNode, pos) {\n var parents = findInlineParents(isInlineTarget, rootNode, pos);\n return Option.from(parents[parents.length - 1]);\n };\n var hasSameParentBlock = function (rootNode, node1, node2) {\n var block1 = getParentBlock(node1, rootNode);\n var block2 = getParentBlock(node2, rootNode);\n return block1 && block1 === block2;\n };\n var isAtZwsp = function (pos) {\n return isBeforeInline(pos) || isAfterInline(pos);\n };\n var normalizePosition = function (forward, pos) {\n var container = pos.container(), offset = pos.offset();\n if (forward) {\n if (isCaretContainerInline(container)) {\n if ($_bjermr1rjkmcwkij.isText(container.nextSibling)) {\n return CaretPosition$1(container.nextSibling, 0);\n } else {\n return CaretPosition$1.after(container);\n }\n } else {\n return isBeforeInline(pos) ? CaretPosition$1(container, offset + 1) : pos;\n }\n } else {\n if (isCaretContainerInline(container)) {\n if ($_bjermr1rjkmcwkij.isText(container.previousSibling)) {\n return CaretPosition$1(container.previousSibling, container.previousSibling.data.length);\n } else {\n return CaretPosition$1.before(container);\n }\n } else {\n return isAfterInline(pos) ? CaretPosition$1(container, offset - 1) : pos;\n }\n }\n };\n var normalizeForwards = curry(normalizePosition, true);\n var normalizeBackwards = curry(normalizePosition, false);\n var $_crqmqb3tjkmcwkxd = {\n isInlineTarget: isInlineTarget,\n findRootInline: findRootInline,\n isRtl: isRtl,\n isAtZwsp: isAtZwsp,\n normalizePosition: normalizePosition,\n normalizeForwards: normalizeForwards,\n normalizeBackwards: normalizeBackwards,\n hasSameParentBlock: hasSameParentBlock\n };\n\n var isBeforeRoot = function (rootNode) {\n return function (elm) {\n return $_e4hu6h1ejkmcwkgj.eq(rootNode, Element$$1.fromDom(elm.dom().parentNode));\n };\n };\n var getParentBlock$1 = function (rootNode, elm) {\n return $_e4hu6h1ejkmcwkgj.contains(rootNode, elm) ? $_253nd92ajkmcwkmp.closest(elm, function (element) {\n return isTextBlock(element) || isListItem(element);\n }, isBeforeRoot(rootNode)) : Option.none();\n };\n var placeCaretInEmptyBody = function (editor) {\n var body = editor.getBody();\n var node = body.firstChild && editor.dom.isBlock(body.firstChild) ? body.firstChild : body;\n editor.selection.setCursorLocation(node, 0);\n };\n var paddEmptyBody = function (editor) {\n if (editor.dom.isEmpty(editor.getBody())) {\n editor.setContent('');\n placeCaretInEmptyBody(editor);\n }\n };\n var willDeleteLastPositionInElement = function (forward, fromPos, elm) {\n return liftN([\n $_1m3f3j2yjkmcwkqg.firstPositionIn(elm),\n $_1m3f3j2yjkmcwkqg.lastPositionIn(elm)\n ], function (firstPos, lastPos) {\n var normalizedFirstPos = $_crqmqb3tjkmcwkxd.normalizePosition(true, firstPos);\n var normalizedLastPos = $_crqmqb3tjkmcwkxd.normalizePosition(false, lastPos);\n var normalizedFromPos = $_crqmqb3tjkmcwkxd.normalizePosition(false, fromPos);\n if (forward) {\n return $_1m3f3j2yjkmcwkqg.nextPosition(elm, normalizedFromPos).map(function (nextPos) {\n return nextPos.isEqual(normalizedLastPos) && fromPos.isEqual(normalizedFirstPos);\n }).getOr(false);\n } else {\n return $_1m3f3j2yjkmcwkqg.prevPosition(elm, normalizedFromPos).map(function (prevPos) {\n return prevPos.isEqual(normalizedFirstPos) && fromPos.isEqual(normalizedLastPos);\n }).getOr(false);\n }\n }).getOr(true);\n };\n var $_8z75uj3sjkmcwkx3 = {\n getParentBlock: getParentBlock$1,\n paddEmptyBody: paddEmptyBody,\n willDeleteLastPositionInElement: willDeleteLastPositionInElement\n };\n\n var any = function (selector) {\n return $_4ki4d929jkmcwkmn.first(selector).isSome();\n };\n var ancestor$2 = function (scope, selector, isRoot) {\n return $_4ki4d929jkmcwkmn.ancestor(scope, selector, isRoot).isSome();\n };\n var sibling$3 = function (scope, selector) {\n return $_4ki4d929jkmcwkmn.sibling(scope, selector).isSome();\n };\n var child$3 = function (scope, selector) {\n return $_4ki4d929jkmcwkmn.child(scope, selector).isSome();\n };\n var descendant$2 = function (scope, selector) {\n return $_4ki4d929jkmcwkmn.descendant(scope, selector).isSome();\n };\n var closest$2 = function (scope, selector, isRoot) {\n return $_4ki4d929jkmcwkmn.closest(scope, selector, isRoot).isSome();\n };\n var $_6rijl23xjkmcwl24 = {\n any: any,\n ancestor: ancestor$2,\n sibling: sibling$3,\n child: child$3,\n descendant: descendant$2,\n closest: closest$2\n };\n\n var hasWhitespacePreserveParent = function (rootNode, node) {\n var rootElement = Element$$1.fromDom(rootNode);\n var startNode = Element$$1.fromDom(node);\n return $_6rijl23xjkmcwl24.ancestor(startNode, 'pre,code', curry($_e4hu6h1ejkmcwkgj.eq, rootElement));\n };\n var isWhitespace = function (rootNode, node) {\n return $_bjermr1rjkmcwkij.isText(node) && /^[ \\t\\r\\n]*$/.test(node.data) && hasWhitespacePreserveParent(rootNode, node) === false;\n };\n var isNamedAnchor = function (node) {\n return $_bjermr1rjkmcwkij.isElement(node) && node.nodeName === 'A' && node.hasAttribute('name');\n };\n var isContent = function (rootNode, node) {\n return isCaretCandidate(node) && isWhitespace(rootNode, node) === false || isNamedAnchor(node) || isBookmark(node);\n };\n var isBookmark = $_bjermr1rjkmcwkij.hasAttribute('data-mce-bookmark');\n var isBogus$2 = $_bjermr1rjkmcwkij.hasAttribute('data-mce-bogus');\n var isBogusAll$1 = $_bjermr1rjkmcwkij.hasAttributeValue('data-mce-bogus', 'all');\n var isEmptyNode = function (targetNode) {\n var walker, node, brCount = 0;\n if (isContent(targetNode, targetNode)) {\n return false;\n } else {\n node = targetNode.firstChild;\n if (!node) {\n return true;\n }\n walker = new TreeWalker(node, targetNode);\n do {\n if (isBogusAll$1(node)) {\n node = walker.next(true);\n continue;\n }\n if (isBogus$2(node)) {\n node = walker.next();\n continue;\n }\n if ($_bjermr1rjkmcwkij.isBr(node)) {\n brCount++;\n node = walker.next();\n continue;\n }\n if (isContent(targetNode, node)) {\n return false;\n }\n node = walker.next();\n } while (node);\n return brCount <= 1;\n }\n };\n var isEmpty$1 = function (elm) {\n return isEmptyNode(elm.dom());\n };\n var $_1jnfso3wjkmcwl1v = { isEmpty: isEmpty$1 };\n\n var BlockPosition = Immutable('block', 'position');\n var BlockBoundary = Immutable('from', 'to');\n var getBlockPosition = function (rootNode, pos) {\n var rootElm = Element$$1.fromDom(rootNode);\n var containerElm = Element$$1.fromDom(pos.container());\n return $_8z75uj3sjkmcwkx3.getParentBlock(rootElm, containerElm).map(function (block) {\n return BlockPosition(block, pos);\n });\n };\n var isDifferentBlocks = function (blockBoundary) {\n return $_e4hu6h1ejkmcwkgj.eq(blockBoundary.from().block(), blockBoundary.to().block()) === false;\n };\n var hasSameParent = function (blockBoundary) {\n return $_ca6pc118jkmcwkfs.parent(blockBoundary.from().block()).bind(function (parent1) {\n return $_ca6pc118jkmcwkfs.parent(blockBoundary.to().block()).filter(function (parent2) {\n return $_e4hu6h1ejkmcwkgj.eq(parent1, parent2);\n });\n }).isSome();\n };\n var isEditable = function (blockBoundary) {\n return $_bjermr1rjkmcwkij.isContentEditableFalse(blockBoundary.from().block()) === false && $_bjermr1rjkmcwkij.isContentEditableFalse(blockBoundary.to().block()) === false;\n };\n var skipLastBr = function (rootNode, forward, blockPosition) {\n if ($_bjermr1rjkmcwkij.isBr(blockPosition.position().getNode()) && $_1jnfso3wjkmcwl1v.isEmpty(blockPosition.block()) === false) {\n return $_1m3f3j2yjkmcwkqg.positionIn(false, blockPosition.block().dom()).bind(function (lastPositionInBlock) {\n if (lastPositionInBlock.isEqual(blockPosition.position())) {\n return $_1m3f3j2yjkmcwkqg.fromPosition(forward, rootNode, lastPositionInBlock).bind(function (to) {\n return getBlockPosition(rootNode, to);\n });\n } else {\n return Option.some(blockPosition);\n }\n }).getOr(blockPosition);\n } else {\n return blockPosition;\n }\n };\n var readFromRange = function (rootNode, forward, rng) {\n var fromBlockPos = getBlockPosition(rootNode, CaretPosition$1.fromRangeStart(rng));\n var toBlockPos = fromBlockPos.bind(function (blockPos) {\n return $_1m3f3j2yjkmcwkqg.fromPosition(forward, rootNode, blockPos.position()).bind(function (to) {\n return getBlockPosition(rootNode, to).map(function (blockPos) {\n return skipLastBr(rootNode, forward, blockPos);\n });\n });\n });\n return liftN([\n fromBlockPos,\n toBlockPos\n ], BlockBoundary).filter(function (blockBoundary) {\n return isDifferentBlocks(blockBoundary) && hasSameParent(blockBoundary) && isEditable(blockBoundary);\n });\n };\n var read$1 = function (rootNode, forward, rng) {\n return rng.collapsed ? readFromRange(rootNode, forward, rng) : Option.none();\n };\n var $_2x2kic3rjkmcwkwi = { read: read$1 };\n\n var dropLast = function (xs) {\n return xs.slice(0, -1);\n };\n var parentsUntil$1 = function (startNode, rootElm, predicate) {\n if ($_e4hu6h1ejkmcwkgj.contains(rootElm, startNode)) {\n return dropLast($_ca6pc118jkmcwkfs.parents(startNode, function (elm) {\n return predicate(elm) || $_e4hu6h1ejkmcwkgj.eq(elm, rootElm);\n }));\n } else {\n return [];\n }\n };\n var parents$1 = function (startNode, rootElm) {\n return parentsUntil$1(startNode, rootElm, constant(false));\n };\n var parentsAndSelf = function (startNode, rootElm) {\n return [startNode].concat(parents$1(startNode, rootElm));\n };\n var $_cir6zl3zjkmcwl2j = {\n parentsUntil: parentsUntil$1,\n parents: parents$1,\n parentsAndSelf: parentsAndSelf\n };\n\n var getChildrenUntilBlockBoundary = function (block) {\n var children = $_ca6pc118jkmcwkfs.children(block);\n return findIndex(children, isBlock).fold(function () {\n return children;\n }, function (index) {\n return children.slice(0, index);\n });\n };\n var extractChildren = function (block) {\n var children = getChildrenUntilBlockBoundary(block);\n each(children, function (node) {\n $_eualm21wjkmcwkku.remove(node);\n });\n return children;\n };\n var trimBr = function (first, block) {\n $_1m3f3j2yjkmcwkqg.positionIn(first, block.dom()).each(function (position) {\n var node = position.getNode();\n if ($_bjermr1rjkmcwkij.isBr(node)) {\n $_eualm21wjkmcwkku.remove(Element$$1.fromDom(node));\n }\n });\n };\n var removeEmptyRoot = function (rootNode, block) {\n var parents = $_cir6zl3zjkmcwl2j.parentsAndSelf(block, rootNode);\n return find(parents.reverse(), $_1jnfso3wjkmcwl1v.isEmpty).each($_eualm21wjkmcwkku.remove);\n };\n var findParentInsertPoint = function (toBlock, block) {\n var parents = $_ca6pc118jkmcwkfs.parents(block, function (elm) {\n return $_e4hu6h1ejkmcwkgj.eq(elm, toBlock);\n });\n return Option.from(parents[parents.length - 2]);\n };\n var getInsertionPoint = function (fromBlock, toBlock) {\n if ($_e4hu6h1ejkmcwkgj.contains(toBlock, fromBlock)) {\n return $_ca6pc118jkmcwkfs.parent(fromBlock).bind(function (parent) {\n return $_e4hu6h1ejkmcwkgj.eq(parent, toBlock) ? Option.some(fromBlock) : findParentInsertPoint(toBlock, fromBlock);\n });\n } else {\n return Option.none();\n }\n };\n var mergeBlockInto = function (rootNode, fromBlock, toBlock) {\n if ($_1jnfso3wjkmcwl1v.isEmpty(toBlock)) {\n $_eualm21wjkmcwkku.remove(toBlock);\n if ($_1jnfso3wjkmcwl1v.isEmpty(fromBlock)) {\n $_zygeg3ljkmcwkvo.fillWithPaddingBr(fromBlock);\n }\n return $_1m3f3j2yjkmcwkqg.firstPositionIn(fromBlock.dom());\n } else {\n trimBr(true, fromBlock);\n trimBr(false, toBlock);\n var children_1 = extractChildren(fromBlock);\n return getInsertionPoint(fromBlock, toBlock).fold(function () {\n removeEmptyRoot(rootNode, fromBlock);\n var position = $_1m3f3j2yjkmcwkqg.lastPositionIn(toBlock.dom());\n each(children_1, function (node) {\n $_f4qt4v1yjkmcwkl2.append(toBlock, node);\n });\n return position;\n }, function (target) {\n var position = $_1m3f3j2yjkmcwkqg.prevPosition(toBlock.dom(), CaretPosition$1.before(target.dom()));\n each(children_1, function (node) {\n $_f4qt4v1yjkmcwkl2.before(target, node);\n });\n removeEmptyRoot(rootNode, fromBlock);\n return position;\n });\n }\n };\n var mergeBlocks = function (rootNode, forward, block1, block2) {\n return forward ? mergeBlockInto(rootNode, block2, block1) : mergeBlockInto(rootNode, block1, block2);\n };\n var $_ezyxdl3yjkmcwl27 = { mergeBlocks: mergeBlocks };\n\n var backspaceDelete = function (editor, forward) {\n var position;\n var rootNode = Element$$1.fromDom(editor.getBody());\n position = $_2x2kic3rjkmcwkwi.read(rootNode.dom(), forward, editor.selection.getRng()).bind(function (blockBoundary) {\n return $_ezyxdl3yjkmcwl27.mergeBlocks(rootNode, forward, blockBoundary.from().block(), blockBoundary.to().block());\n });\n position.each(function (pos) {\n editor.selection.setRng(pos.toRange());\n });\n return position.isSome();\n };\n var $_1wrlyf3qjkmcwkwe = { backspaceDelete: backspaceDelete };\n\n var deleteRangeMergeBlocks = function (rootNode, selection) {\n var rng = selection.getRng();\n return liftN([\n $_8z75uj3sjkmcwkx3.getParentBlock(rootNode, Element$$1.fromDom(rng.startContainer)),\n $_8z75uj3sjkmcwkx3.getParentBlock(rootNode, Element$$1.fromDom(rng.endContainer))\n ], function (block1, block2) {\n if ($_e4hu6h1ejkmcwkgj.eq(block1, block2) === false) {\n rng.deleteContents();\n $_ezyxdl3yjkmcwl27.mergeBlocks(rootNode, true, block1, block2).each(function (pos) {\n selection.setRng(pos.toRange());\n });\n return true;\n } else {\n return false;\n }\n }).getOr(false);\n };\n var isRawNodeInTable = function (root, rawNode) {\n var node = Element$$1.fromDom(rawNode);\n var isRoot = curry($_e4hu6h1ejkmcwkgj.eq, root);\n return $_253nd92ajkmcwkmp.ancestor(node, isTableCell, isRoot).isSome();\n };\n var isSelectionInTable = function (root, rng) {\n return isRawNodeInTable(root, rng.startContainer) || isRawNodeInTable(root, rng.endContainer);\n };\n var isEverythingSelected = function (root, rng) {\n var noPrevious = $_1m3f3j2yjkmcwkqg.prevPosition(root.dom(), CaretPosition$1.fromRangeStart(rng)).isNone();\n var noNext = $_1m3f3j2yjkmcwkqg.nextPosition(root.dom(), CaretPosition$1.fromRangeEnd(rng)).isNone();\n return !isSelectionInTable(root, rng) && noPrevious && noNext;\n };\n var emptyEditor = function (editor) {\n editor.setContent('');\n editor.selection.setCursorLocation();\n return true;\n };\n var deleteRange = function (editor) {\n var rootNode = Element$$1.fromDom(editor.getBody());\n var rng = editor.selection.getRng();\n return isEverythingSelected(rootNode, rng) ? emptyEditor(editor) : deleteRangeMergeBlocks(rootNode, editor.selection);\n };\n var backspaceDelete$1 = function (editor, forward) {\n return editor.selection.isCollapsed() ? false : deleteRange(editor);\n };\n var $_egxtcx40jkmcwl2q = { backspaceDelete: backspaceDelete$1 };\n\n var generate$1 = function (cases) {\n if (!isArray(cases)) {\n throw new Error('cases must be an array');\n }\n if (cases.length === 0) {\n throw new Error('there must be at least one case');\n }\n var constructors = [];\n var adt = {};\n each(cases, function (acase, count) {\n var keys$$1 = keys(acase);\n if (keys$$1.length !== 1) {\n throw new Error('one and only one name per case');\n }\n var key = keys$$1[0];\n var value = acase[key];\n if (adt[key] !== undefined) {\n throw new Error('duplicate key detected:' + key);\n } else if (key === 'cata') {\n throw new Error('cannot have a case named cata (sorry)');\n } else if (!isArray(value)) {\n throw new Error('case arguments must be an array');\n }\n constructors.push(key);\n adt[key] = function () {\n var argLength = arguments.length;\n if (argLength !== value.length) {\n throw new Error('Wrong number of arguments to case ' + key + '. Expected ' + value.length + ' (' + value + '), got ' + argLength);\n }\n var args = new Array(argLength);\n for (var i = 0; i < args.length; i++)\n args[i] = arguments[i];\n var match = function (branches) {\n var branchKeys = keys(branches);\n if (constructors.length !== branchKeys.length) {\n throw new Error('Wrong number of arguments to match. Expected: ' + constructors.join(',') + '\\nActual: ' + branchKeys.join(','));\n }\n var allReqd = forall(constructors, function (reqKey) {\n return contains(branchKeys, reqKey);\n });\n if (!allReqd)\n throw new Error('Not all branches were specified when using match. Specified: ' + branchKeys.join(', ') + '\\nRequired: ' + constructors.join(', '));\n return branches[key].apply(null, args);\n };\n return {\n fold: function () {\n if (arguments.length !== cases.length) {\n throw new Error('Wrong number of arguments to fold. Expected ' + cases.length + ', got ' + arguments.length);\n }\n var target = arguments[count];\n return target.apply(null, args);\n },\n match: match,\n log: function (label) {\n console.log(label, {\n constructors: constructors,\n constructor: key,\n params: args\n });\n }\n };\n };\n });\n return adt;\n };\n var Adt = { generate: generate$1 };\n\n var isCompoundElement = function (node) {\n return isTableCell(Element$$1.fromDom(node)) || isListItem(Element$$1.fromDom(node));\n };\n var DeleteAction = Adt.generate([\n { remove: ['element'] },\n { moveToElement: ['element'] },\n { moveToPosition: ['position'] }\n ]);\n var isAtContentEditableBlockCaret = function (forward, from) {\n var elm = from.getNode(forward === false);\n var caretLocation = forward ? 'after' : 'before';\n return $_bjermr1rjkmcwkij.isElement(elm) && elm.getAttribute('data-mce-caret') === caretLocation;\n };\n var isDeleteFromCefDifferentBlocks = function (root, forward, from, to) {\n var inSameBlock = function (elm) {\n return isInline(Element$$1.fromDom(elm)) && !isInSameBlock(from, to, root);\n };\n return getRelativeCefElm(!forward, from).fold(function () {\n return getRelativeCefElm(forward, to).fold(constant(false), inSameBlock);\n }, inSameBlock);\n };\n var deleteEmptyBlockOrMoveToCef = function (root, forward, from, to) {\n var toCefElm = to.getNode(forward === false);\n return $_8z75uj3sjkmcwkx3.getParentBlock(Element$$1.fromDom(root), Element$$1.fromDom(from.getNode())).map(function (blockElm) {\n return $_1jnfso3wjkmcwl1v.isEmpty(blockElm) ? DeleteAction.remove(blockElm.dom()) : DeleteAction.moveToElement(toCefElm);\n }).orThunk(function () {\n return Option.some(DeleteAction.moveToElement(toCefElm));\n });\n };\n var findCefPosition = function (root, forward, from) {\n return $_1m3f3j2yjkmcwkqg.fromPosition(forward, root, from).bind(function (to) {\n if (isCompoundElement(to.getNode())) {\n return Option.none();\n } else if (isDeleteFromCefDifferentBlocks(root, forward, from, to)) {\n return Option.none();\n } else if (forward && $_bjermr1rjkmcwkij.isContentEditableFalse(to.getNode())) {\n return deleteEmptyBlockOrMoveToCef(root, forward, from, to);\n } else if (forward === false && $_bjermr1rjkmcwkij.isContentEditableFalse(to.getNode(true))) {\n return deleteEmptyBlockOrMoveToCef(root, forward, from, to);\n } else if (forward && isAfterContentEditableFalse(from)) {\n return Option.some(DeleteAction.moveToPosition(to));\n } else if (forward === false && isBeforeContentEditableFalse(from)) {\n return Option.some(DeleteAction.moveToPosition(to));\n } else {\n return Option.none();\n }\n });\n };\n var getContentEditableBlockAction = function (forward, elm) {\n if (forward && $_bjermr1rjkmcwkij.isContentEditableFalse(elm.nextSibling)) {\n return Option.some(DeleteAction.moveToElement(elm.nextSibling));\n } else if (forward === false && $_bjermr1rjkmcwkij.isContentEditableFalse(elm.previousSibling)) {\n return Option.some(DeleteAction.moveToElement(elm.previousSibling));\n } else {\n return Option.none();\n }\n };\n var skipMoveToActionFromInlineCefToContent = function (root, from, deleteAction) {\n return deleteAction.fold(function (elm) {\n return Option.some(DeleteAction.remove(elm));\n }, function (elm) {\n return Option.some(DeleteAction.moveToElement(elm));\n }, function (to) {\n if (isInSameBlock(from, to, root)) {\n return Option.none();\n } else {\n return Option.some(DeleteAction.moveToPosition(to));\n }\n });\n };\n var getContentEditableAction = function (root, forward, from) {\n if (isAtContentEditableBlockCaret(forward, from)) {\n return getContentEditableBlockAction(forward, from.getNode(forward === false)).fold(function () {\n return findCefPosition(root, forward, from);\n }, Option.some);\n } else {\n return findCefPosition(root, forward, from).bind(function (deleteAction) {\n return skipMoveToActionFromInlineCefToContent(root, from, deleteAction);\n });\n }\n };\n var read$2 = function (root, forward, rng) {\n var normalizedRange = normalizeRange(forward ? 1 : -1, root, rng);\n var from = CaretPosition$1.fromRangeStart(normalizedRange);\n if (forward === false && isAfterContentEditableFalse(from)) {\n return Option.some(DeleteAction.remove(from.getNode(true)));\n } else if (forward && isBeforeContentEditableFalse(from)) {\n return Option.some(DeleteAction.remove(from.getNode()));\n } else {\n return getContentEditableAction(root, forward, from);\n }\n };\n\n var needsReposition = function (pos, elm) {\n var container = pos.container();\n var offset = pos.offset();\n return CaretPosition$1.isTextPosition(pos) === false && container === elm.parentNode && offset > CaretPosition$1.before(elm).offset();\n };\n var reposition = function (elm, pos) {\n return needsReposition(pos, elm) ? CaretPosition$1(pos.container(), pos.offset() - 1) : pos;\n };\n var beforeOrStartOf = function (node) {\n return $_bjermr1rjkmcwkij.isText(node) ? CaretPosition$1(node, 0) : CaretPosition$1.before(node);\n };\n var afterOrEndOf = function (node) {\n return $_bjermr1rjkmcwkij.isText(node) ? CaretPosition$1(node, node.data.length) : CaretPosition$1.after(node);\n };\n var getPreviousSiblingCaretPosition = function (elm) {\n if (isCaretCandidate(elm.previousSibling)) {\n return Option.some(afterOrEndOf(elm.previousSibling));\n } else {\n return elm.previousSibling ? $_1m3f3j2yjkmcwkqg.lastPositionIn(elm.previousSibling) : Option.none();\n }\n };\n var getNextSiblingCaretPosition = function (elm) {\n if (isCaretCandidate(elm.nextSibling)) {\n return Option.some(beforeOrStartOf(elm.nextSibling));\n } else {\n return elm.nextSibling ? $_1m3f3j2yjkmcwkqg.firstPositionIn(elm.nextSibling) : Option.none();\n }\n };\n var findCaretPositionBackwardsFromElm = function (rootElement, elm) {\n var startPosition = CaretPosition$1.before(elm.previousSibling ? elm.previousSibling : elm.parentNode);\n return $_1m3f3j2yjkmcwkqg.prevPosition(rootElement, startPosition).fold(function () {\n return $_1m3f3j2yjkmcwkqg.nextPosition(rootElement, CaretPosition$1.after(elm));\n }, Option.some);\n };\n var findCaretPositionForwardsFromElm = function (rootElement, elm) {\n return $_1m3f3j2yjkmcwkqg.nextPosition(rootElement, CaretPosition$1.after(elm)).fold(function () {\n return $_1m3f3j2yjkmcwkqg.prevPosition(rootElement, CaretPosition$1.before(elm));\n }, Option.some);\n };\n var findCaretPositionBackwards = function (rootElement, elm) {\n return getPreviousSiblingCaretPosition(elm).orThunk(function () {\n return getNextSiblingCaretPosition(elm);\n }).orThunk(function () {\n return findCaretPositionBackwardsFromElm(rootElement, elm);\n });\n };\n var findCaretPositionForward = function (rootElement, elm) {\n return getNextSiblingCaretPosition(elm).orThunk(function () {\n return getPreviousSiblingCaretPosition(elm);\n }).orThunk(function () {\n return findCaretPositionForwardsFromElm(rootElement, elm);\n });\n };\n var findCaretPosition$1 = function (forward, rootElement, elm) {\n return forward ? findCaretPositionForward(rootElement, elm) : findCaretPositionBackwards(rootElement, elm);\n };\n var findCaretPosOutsideElmAfterDelete = function (forward, rootElement, elm) {\n return findCaretPosition$1(forward, rootElement, elm).map(curry(reposition, elm));\n };\n var setSelection = function (editor, forward, pos) {\n pos.fold(function () {\n editor.focus();\n }, function (pos) {\n editor.selection.setRng(pos.toRange(), forward);\n });\n };\n var eqRawNode = function (rawNode) {\n return function (elm) {\n return elm.dom() === rawNode;\n };\n };\n var isBlock$2 = function (editor, elm) {\n return elm && editor.schema.getBlockElements().hasOwnProperty($_2xwdjv11jkmcwke0.name(elm));\n };\n var paddEmptyBlock = function (elm) {\n if ($_1jnfso3wjkmcwl1v.isEmpty(elm)) {\n var br = Element$$1.fromHtml('
');\n $_eualm21wjkmcwkku.empty(elm);\n $_f4qt4v1yjkmcwkl2.append(elm, br);\n return Option.some(CaretPosition$1.before(br.dom()));\n } else {\n return Option.none();\n }\n };\n var deleteNormalized = function (elm, afterDeletePosOpt) {\n return liftN([\n $_ca6pc118jkmcwkfs.prevSibling(elm),\n $_ca6pc118jkmcwkfs.nextSibling(elm),\n afterDeletePosOpt\n ], function (prev, next, afterDeletePos) {\n var offset;\n var prevNode = prev.dom();\n var nextNode = next.dom();\n if ($_bjermr1rjkmcwkij.isText(prevNode) && $_bjermr1rjkmcwkij.isText(nextNode)) {\n offset = prevNode.data.length;\n prevNode.appendData(nextNode.data);\n $_eualm21wjkmcwkku.remove(next);\n $_eualm21wjkmcwkku.remove(elm);\n if (afterDeletePos.container() === nextNode) {\n return CaretPosition$1(prevNode, offset);\n } else {\n return afterDeletePos;\n }\n } else {\n $_eualm21wjkmcwkku.remove(elm);\n return afterDeletePos;\n }\n }).orThunk(function () {\n $_eualm21wjkmcwkku.remove(elm);\n return afterDeletePosOpt;\n });\n };\n var deleteElement = function (editor, forward, elm) {\n var afterDeletePos = findCaretPosOutsideElmAfterDelete(forward, editor.getBody(), elm.dom());\n var parentBlock = $_253nd92ajkmcwkmp.ancestor(elm, curry(isBlock$2, editor), eqRawNode(editor.getBody()));\n var normalizedAfterDeletePos = deleteNormalized(elm, afterDeletePos);\n if (editor.dom.isEmpty(editor.getBody())) {\n editor.setContent('');\n editor.selection.setCursorLocation();\n } else {\n parentBlock.bind(paddEmptyBlock).fold(function () {\n setSelection(editor, forward, normalizedAfterDeletePos);\n }, function (paddPos) {\n setSelection(editor, forward, Option.some(paddPos));\n });\n }\n };\n var $_4yq1i444jkmcwl3w = { deleteElement: deleteElement };\n\n var deleteElement$1 = function (editor, forward) {\n return function (element) {\n editor._selectionOverrides.hideFakeCaret();\n $_4yq1i444jkmcwl3w.deleteElement(editor, forward, Element$$1.fromDom(element));\n return true;\n };\n };\n var moveToElement = function (editor, forward) {\n return function (element) {\n var pos = forward ? CaretPosition$1.before(element) : CaretPosition$1.after(element);\n editor.selection.setRng(pos.toRange());\n return true;\n };\n };\n var moveToPosition = function (editor) {\n return function (pos) {\n editor.selection.setRng(pos.toRange());\n return true;\n };\n };\n var backspaceDeleteCaret = function (editor, forward) {\n var result = read$2(editor.getBody(), forward, editor.selection.getRng()).map(function (deleteAction) {\n return deleteAction.fold(deleteElement$1(editor, forward), moveToElement(editor, forward), moveToPosition(editor));\n });\n return result.getOr(false);\n };\n var deleteOffscreenSelection = function (rootElement) {\n each($_2gqm0n27jkmcwkmi.descendants(rootElement, '.mce-offscreen-selection'), $_eualm21wjkmcwkku.remove);\n };\n var backspaceDeleteRange = function (editor, forward) {\n var selectedElement = editor.selection.getNode();\n if ($_bjermr1rjkmcwkij.isContentEditableFalse(selectedElement)) {\n deleteOffscreenSelection(Element$$1.fromDom(editor.getBody()));\n $_4yq1i444jkmcwl3w.deleteElement(editor, forward, Element$$1.fromDom(editor.selection.getNode()));\n $_8z75uj3sjkmcwkx3.paddEmptyBody(editor);\n return true;\n } else {\n return false;\n }\n };\n var getContentEditableRoot = function (root, node) {\n while (node && node !== root) {\n if ($_bjermr1rjkmcwkij.isContentEditableTrue(node) || $_bjermr1rjkmcwkij.isContentEditableFalse(node)) {\n return node;\n }\n node = node.parentNode;\n }\n return null;\n };\n var paddEmptyElement = function (editor) {\n var br;\n var ceRoot = getContentEditableRoot(editor.getBody(), editor.selection.getNode());\n if ($_bjermr1rjkmcwkij.isContentEditableTrue(ceRoot) && editor.dom.isBlock(ceRoot) && editor.dom.isEmpty(ceRoot)) {\n br = editor.dom.create('br', { 'data-mce-bogus': '1' });\n editor.dom.setHTML(ceRoot, '');\n ceRoot.appendChild(br);\n editor.selection.setRng(CaretPosition$1.before(br).toRange());\n }\n return true;\n };\n var backspaceDelete$2 = function (editor, forward) {\n if (editor.selection.isCollapsed()) {\n return backspaceDeleteCaret(editor, forward);\n } else {\n return backspaceDeleteRange(editor, forward);\n }\n };\n var $_1hyiiy41jkmcwl2z = {\n backspaceDelete: backspaceDelete$2,\n paddEmptyElement: paddEmptyElement\n };\n\n var isText$8 = $_bjermr1rjkmcwkij.isText;\n var startsWithCaretContainer$1 = function (node) {\n return isText$8(node) && node.data[0] === $_cadvcr2pjkmcwkph.ZWSP;\n };\n var endsWithCaretContainer$1 = function (node) {\n return isText$8(node) && node.data[node.data.length - 1] === $_cadvcr2pjkmcwkph.ZWSP;\n };\n var createZwsp = function (node) {\n return node.ownerDocument.createTextNode($_cadvcr2pjkmcwkph.ZWSP);\n };\n var insertBefore$1 = function (node) {\n if (isText$8(node.previousSibling)) {\n if (endsWithCaretContainer$1(node.previousSibling)) {\n return node.previousSibling;\n } else {\n node.previousSibling.appendData($_cadvcr2pjkmcwkph.ZWSP);\n return node.previousSibling;\n }\n } else if (isText$8(node)) {\n if (startsWithCaretContainer$1(node)) {\n return node;\n } else {\n node.insertData(0, $_cadvcr2pjkmcwkph.ZWSP);\n return node;\n }\n } else {\n var newNode = createZwsp(node);\n node.parentNode.insertBefore(newNode, node);\n return newNode;\n }\n };\n var insertAfter$1 = function (node) {\n if (isText$8(node.nextSibling)) {\n if (startsWithCaretContainer$1(node.nextSibling)) {\n return node.nextSibling;\n } else {\n node.nextSibling.insertData(0, $_cadvcr2pjkmcwkph.ZWSP);\n return node.nextSibling;\n }\n } else if (isText$8(node)) {\n if (endsWithCaretContainer$1(node)) {\n return node;\n } else {\n node.appendData($_cadvcr2pjkmcwkph.ZWSP);\n return node;\n }\n } else {\n var newNode = createZwsp(node);\n if (node.nextSibling) {\n node.parentNode.insertBefore(newNode, node.nextSibling);\n } else {\n node.parentNode.appendChild(newNode);\n }\n return newNode;\n }\n };\n var insertInline$1 = function (before, node) {\n return before ? insertBefore$1(node) : insertAfter$1(node);\n };\n var insertInlineBefore = curry(insertInline$1, true);\n var insertInlineAfter = curry(insertInline$1, false);\n\n var insertInlinePos = function (pos, before) {\n if ($_bjermr1rjkmcwkij.isText(pos.container())) {\n return insertInline$1(before, pos.container());\n } else {\n return insertInline$1(before, pos.getNode());\n }\n };\n var isPosCaretContainer = function (pos, caret) {\n var caretNode = caret.get();\n return caretNode && pos.container() === caretNode && isCaretContainerInline(caretNode);\n };\n var renderCaret = function (caret, location) {\n return location.fold(function (element) {\n $_xl2r331jkmcwkri.remove(caret.get());\n var text = insertInlineBefore(element);\n caret.set(text);\n return Option.some(CaretPosition$1(text, text.length - 1));\n }, function (element) {\n return $_1m3f3j2yjkmcwkqg.firstPositionIn(element).map(function (pos) {\n if (!isPosCaretContainer(pos, caret)) {\n $_xl2r331jkmcwkri.remove(caret.get());\n var text = insertInlinePos(pos, true);\n caret.set(text);\n return CaretPosition$1(text, 1);\n } else {\n return CaretPosition$1(caret.get(), 1);\n }\n });\n }, function (element) {\n return $_1m3f3j2yjkmcwkqg.lastPositionIn(element).map(function (pos) {\n if (!isPosCaretContainer(pos, caret)) {\n $_xl2r331jkmcwkri.remove(caret.get());\n var text = insertInlinePos(pos, false);\n caret.set(text);\n return CaretPosition$1(text, text.length - 1);\n } else {\n return CaretPosition$1(caret.get(), caret.get().length - 1);\n }\n });\n }, function (element) {\n $_xl2r331jkmcwkri.remove(caret.get());\n var text = insertInlineAfter(element);\n caret.set(text);\n return Option.some(CaretPosition$1(text, 1));\n });\n };\n var $_efgx6546jkmcwl4n = { renderCaret: renderCaret };\n\n var evaluateUntil = function (fns, args) {\n for (var i = 0; i < fns.length; i++) {\n var result = fns[i].apply(null, args);\n if (result.isSome()) {\n return result;\n }\n }\n return Option.none();\n };\n var $_8hyv6o49jkmcwl58 = { evaluateUntil: evaluateUntil };\n\n var Location = Adt.generate([\n { before: ['element'] },\n { start: ['element'] },\n { end: ['element'] },\n { after: ['element'] }\n ]);\n var rescope = function (rootNode, node) {\n var parentBlock = getParentBlock(node, rootNode);\n return parentBlock ? parentBlock : rootNode;\n };\n var before$3 = function (isInlineTarget, rootNode, pos) {\n var nPos = $_crqmqb3tjkmcwkxd.normalizeForwards(pos);\n var scope = rescope(rootNode, nPos.container());\n return $_crqmqb3tjkmcwkxd.findRootInline(isInlineTarget, scope, nPos).fold(function () {\n return $_1m3f3j2yjkmcwkqg.nextPosition(scope, nPos).bind(curry($_crqmqb3tjkmcwkxd.findRootInline, isInlineTarget, scope)).map(function (inline) {\n return Location.before(inline);\n });\n }, Option.none);\n };\n var isNotInsideFormatCaretContainer = function (rootNode, elm) {\n return getParentCaretContainer(rootNode, elm) === null;\n };\n var findInsideRootInline = function (isInlineTarget, rootNode, pos) {\n return $_crqmqb3tjkmcwkxd.findRootInline(isInlineTarget, rootNode, pos).filter(curry(isNotInsideFormatCaretContainer, rootNode));\n };\n var start = function (isInlineTarget, rootNode, pos) {\n var nPos = $_crqmqb3tjkmcwkxd.normalizeBackwards(pos);\n return findInsideRootInline(isInlineTarget, rootNode, nPos).bind(function (inline) {\n var prevPos = $_1m3f3j2yjkmcwkqg.prevPosition(inline, nPos);\n return prevPos.isNone() ? Option.some(Location.start(inline)) : Option.none();\n });\n };\n var end = function (isInlineTarget, rootNode, pos) {\n var nPos = $_crqmqb3tjkmcwkxd.normalizeForwards(pos);\n return findInsideRootInline(isInlineTarget, rootNode, nPos).bind(function (inline) {\n var nextPos = $_1m3f3j2yjkmcwkqg.nextPosition(inline, nPos);\n return nextPos.isNone() ? Option.some(Location.end(inline)) : Option.none();\n });\n };\n var after$3 = function (isInlineTarget, rootNode, pos) {\n var nPos = $_crqmqb3tjkmcwkxd.normalizeBackwards(pos);\n var scope = rescope(rootNode, nPos.container());\n return $_crqmqb3tjkmcwkxd.findRootInline(isInlineTarget, scope, nPos).fold(function () {\n return $_1m3f3j2yjkmcwkqg.prevPosition(scope, nPos).bind(curry($_crqmqb3tjkmcwkxd.findRootInline, isInlineTarget, scope)).map(function (inline) {\n return Location.after(inline);\n });\n }, Option.none);\n };\n var isValidLocation = function (location) {\n return $_crqmqb3tjkmcwkxd.isRtl(getElement(location)) === false;\n };\n var readLocation = function (isInlineTarget, rootNode, pos) {\n var location = $_8hyv6o49jkmcwl58.evaluateUntil([\n before$3,\n start,\n end,\n after$3\n ], [\n isInlineTarget,\n rootNode,\n pos\n ]);\n return location.filter(isValidLocation);\n };\n var getElement = function (location) {\n return location.fold(identity, identity, identity, identity);\n };\n var getName = function (location) {\n return location.fold(constant('before'), constant('start'), constant('end'), constant('after'));\n };\n var outside = function (location) {\n return location.fold(Location.before, Location.before, Location.after, Location.after);\n };\n var inside = function (location) {\n return location.fold(Location.start, Location.start, Location.end, Location.end);\n };\n var isEq$1 = function (location1, location2) {\n return getName(location1) === getName(location2) && getElement(location1) === getElement(location2);\n };\n var betweenInlines = function (forward, isInlineTarget, rootNode, from, to, location) {\n return liftN([\n $_crqmqb3tjkmcwkxd.findRootInline(isInlineTarget, rootNode, from),\n $_crqmqb3tjkmcwkxd.findRootInline(isInlineTarget, rootNode, to)\n ], function (fromInline, toInline) {\n if (fromInline !== toInline && $_crqmqb3tjkmcwkxd.hasSameParentBlock(rootNode, fromInline, toInline)) {\n return Location.after(forward ? fromInline : toInline);\n } else {\n return location;\n }\n }).getOr(location);\n };\n var skipNoMovement = function (fromLocation, toLocation) {\n return fromLocation.fold(constant(true), function (fromLocation) {\n return !isEq$1(fromLocation, toLocation);\n });\n };\n var findLocationTraverse = function (forward, isInlineTarget, rootNode, fromLocation, pos) {\n var from = $_crqmqb3tjkmcwkxd.normalizePosition(forward, pos);\n var to = $_1m3f3j2yjkmcwkqg.fromPosition(forward, rootNode, from).map(curry($_crqmqb3tjkmcwkxd.normalizePosition, forward));\n var location = to.fold(function () {\n return fromLocation.map(outside);\n }, function (to) {\n return readLocation(isInlineTarget, rootNode, to).map(curry(betweenInlines, forward, isInlineTarget, rootNode, from, to)).filter(curry(skipNoMovement, fromLocation));\n });\n return location.filter(isValidLocation);\n };\n var findLocationSimple = function (forward, location) {\n if (forward) {\n return location.fold(compose(Option.some, Location.start), Option.none, compose(Option.some, Location.after), Option.none);\n } else {\n return location.fold(Option.none, compose(Option.some, Location.before), Option.none, compose(Option.some, Location.end));\n }\n };\n var findLocation = function (forward, isInlineTarget, rootNode, pos) {\n var from = $_crqmqb3tjkmcwkxd.normalizePosition(forward, pos);\n var fromLocation = readLocation(isInlineTarget, rootNode, from);\n return readLocation(isInlineTarget, rootNode, from).bind(curry(findLocationSimple, forward)).orThunk(function () {\n return findLocationTraverse(forward, isInlineTarget, rootNode, fromLocation, pos);\n });\n };\n var $_gau9ep48jkmcwl4x = {\n readLocation: readLocation,\n findLocation: findLocation,\n prevLocation: curry(findLocation, false),\n nextLocation: curry(findLocation, true),\n getElement: getElement,\n outside: outside,\n inside: inside\n };\n\n var hasSelectionModifyApi = function (editor) {\n return isFunction(editor.selection.getSel().modify);\n };\n var moveRel = function (forward, selection, pos) {\n var delta = forward ? 1 : -1;\n selection.setRng(CaretPosition$1(pos.container(), pos.offset() + delta).toRange());\n selection.getSel().modify('move', forward ? 'forward' : 'backward', 'word');\n return true;\n };\n var moveByWord = function (forward, editor) {\n var rng = editor.selection.getRng();\n var pos = forward ? CaretPosition$1.fromRangeEnd(rng) : CaretPosition$1.fromRangeStart(rng);\n if (!hasSelectionModifyApi(editor)) {\n return false;\n } else if (forward && isBeforeInline(pos)) {\n return moveRel(true, editor.selection, pos);\n } else if (!forward && isAfterInline(pos)) {\n return moveRel(false, editor.selection, pos);\n } else {\n return false;\n }\n };\n var $_dessn94bjkmcwl5p = {\n hasSelectionModifyApi: hasSelectionModifyApi,\n moveByWord: moveByWord\n };\n\n var setCaretPosition = function (editor, pos) {\n var rng = editor.dom.createRng();\n rng.setStart(pos.container(), pos.offset());\n rng.setEnd(pos.container(), pos.offset());\n editor.selection.setRng(rng);\n };\n var isFeatureEnabled = function (editor) {\n return editor.settings.inline_boundaries !== false;\n };\n var setSelected = function (state, elm) {\n if (state) {\n elm.setAttribute('data-mce-selected', 'inline-boundary');\n } else {\n elm.removeAttribute('data-mce-selected');\n }\n };\n var renderCaretLocation = function (editor, caret, location) {\n return $_efgx6546jkmcwl4n.renderCaret(caret, location).map(function (pos) {\n setCaretPosition(editor, pos);\n return location;\n });\n };\n var findLocation$1 = function (editor, caret, forward) {\n var rootNode = editor.getBody();\n var from = CaretPosition$1.fromRangeStart(editor.selection.getRng());\n var isInlineTarget = curry($_crqmqb3tjkmcwkxd.isInlineTarget, editor);\n var location = $_gau9ep48jkmcwl4x.findLocation(forward, isInlineTarget, rootNode, from);\n return location.bind(function (location) {\n return renderCaretLocation(editor, caret, location);\n });\n };\n var toggleInlines = function (isInlineTarget, dom, elms) {\n var selectedInlines = filter(dom.select('*[data-mce-selected=\"inline-boundary\"]'), isInlineTarget);\n var targetInlines = filter(elms, isInlineTarget);\n each(difference(selectedInlines, targetInlines), curry(setSelected, false));\n each(difference(targetInlines, selectedInlines), curry(setSelected, true));\n };\n var safeRemoveCaretContainer = function (editor, caret) {\n if (editor.selection.isCollapsed() && editor.composing !== true && caret.get()) {\n var pos = CaretPosition$1.fromRangeStart(editor.selection.getRng());\n if (CaretPosition$1.isTextPosition(pos) && $_crqmqb3tjkmcwkxd.isAtZwsp(pos) === false) {\n setCaretPosition(editor, $_xl2r331jkmcwkri.removeAndReposition(caret.get(), pos));\n caret.set(null);\n }\n }\n };\n var renderInsideInlineCaret = function (isInlineTarget, editor, caret, elms) {\n if (editor.selection.isCollapsed()) {\n var inlines = filter(elms, isInlineTarget);\n each(inlines, function (inline) {\n var pos = CaretPosition$1.fromRangeStart(editor.selection.getRng());\n $_gau9ep48jkmcwl4x.readLocation(isInlineTarget, editor.getBody(), pos).bind(function (location) {\n return renderCaretLocation(editor, caret, location);\n });\n });\n }\n };\n var move = function (editor, caret, forward) {\n return function () {\n return isFeatureEnabled(editor) ? findLocation$1(editor, caret, forward).isSome() : false;\n };\n };\n var moveWord = function (forward, editor, caret) {\n return function () {\n return isFeatureEnabled(editor) ? $_dessn94bjkmcwl5p.moveByWord(forward, editor) : false;\n };\n };\n var setupSelectedState = function (editor) {\n var caret = Cell(null);\n var isInlineTarget = curry($_crqmqb3tjkmcwkxd.isInlineTarget, editor);\n editor.on('NodeChange', function (e) {\n if (isFeatureEnabled(editor)) {\n toggleInlines(isInlineTarget, editor.dom, e.parents);\n safeRemoveCaretContainer(editor, caret);\n renderInsideInlineCaret(isInlineTarget, editor, caret, e.parents);\n }\n });\n return caret;\n };\n var moveNextWord = curry(moveWord, true);\n var movePrevWord = curry(moveWord, false);\n var $_dl6t9m4ajkmcwl5b = {\n move: move,\n moveNextWord: moveNextWord,\n movePrevWord: movePrevWord,\n setupSelectedState: setupSelectedState,\n setCaretPosition: setCaretPosition\n };\n\n var isFeatureEnabled$1 = function (editor) {\n return editor.settings.inline_boundaries !== false;\n };\n var rangeFromPositions = function (from, to) {\n var range = document.createRange();\n range.setStart(from.container(), from.offset());\n range.setEnd(to.container(), to.offset());\n return range;\n };\n var hasOnlyTwoOrLessPositionsLeft = function (elm) {\n return liftN([\n $_1m3f3j2yjkmcwkqg.firstPositionIn(elm),\n $_1m3f3j2yjkmcwkqg.lastPositionIn(elm)\n ], function (firstPos, lastPos) {\n var normalizedFirstPos = $_crqmqb3tjkmcwkxd.normalizePosition(true, firstPos);\n var normalizedLastPos = $_crqmqb3tjkmcwkxd.normalizePosition(false, lastPos);\n return $_1m3f3j2yjkmcwkqg.nextPosition(elm, normalizedFirstPos).map(function (pos) {\n return pos.isEqual(normalizedLastPos);\n }).getOr(true);\n }).getOr(true);\n };\n var setCaretLocation = function (editor, caret) {\n return function (location$$1) {\n return $_efgx6546jkmcwl4n.renderCaret(caret, location$$1).map(function (pos) {\n $_dl6t9m4ajkmcwl5b.setCaretPosition(editor, pos);\n return true;\n }).getOr(false);\n };\n };\n var deleteFromTo = function (editor, caret, from, to) {\n var rootNode = editor.getBody();\n var isInlineTarget = curry($_crqmqb3tjkmcwkxd.isInlineTarget, editor);\n editor.undoManager.ignore(function () {\n editor.selection.setRng(rangeFromPositions(from, to));\n editor.execCommand('Delete');\n $_gau9ep48jkmcwl4x.readLocation(isInlineTarget, rootNode, CaretPosition$1.fromRangeStart(editor.selection.getRng())).map($_gau9ep48jkmcwl4x.inside).map(setCaretLocation(editor, caret));\n });\n editor.nodeChanged();\n };\n var rescope$1 = function (rootNode, node) {\n var parentBlock = getParentBlock(node, rootNode);\n return parentBlock ? parentBlock : rootNode;\n };\n var backspaceDeleteCollapsed = function (editor, caret, forward, from) {\n var rootNode = rescope$1(editor.getBody(), from.container());\n var isInlineTarget = curry($_crqmqb3tjkmcwkxd.isInlineTarget, editor);\n var fromLocation = $_gau9ep48jkmcwl4x.readLocation(isInlineTarget, rootNode, from);\n return fromLocation.bind(function (location$$1) {\n if (forward) {\n return location$$1.fold(constant(Option.some($_gau9ep48jkmcwl4x.inside(location$$1))), Option.none, constant(Option.some($_gau9ep48jkmcwl4x.outside(location$$1))), Option.none);\n } else {\n return location$$1.fold(Option.none, constant(Option.some($_gau9ep48jkmcwl4x.outside(location$$1))), Option.none, constant(Option.some($_gau9ep48jkmcwl4x.inside(location$$1))));\n }\n }).map(setCaretLocation(editor, caret)).getOrThunk(function () {\n var toPosition = $_1m3f3j2yjkmcwkqg.navigate(forward, rootNode, from);\n var toLocation = toPosition.bind(function (pos) {\n return $_gau9ep48jkmcwl4x.readLocation(isInlineTarget, rootNode, pos);\n });\n if (fromLocation.isSome() && toLocation.isSome()) {\n return $_crqmqb3tjkmcwkxd.findRootInline(isInlineTarget, rootNode, from).map(function (elm) {\n if (hasOnlyTwoOrLessPositionsLeft(elm)) {\n $_4yq1i444jkmcwl3w.deleteElement(editor, forward, Element$$1.fromDom(elm));\n return true;\n } else {\n return false;\n }\n }).getOr(false);\n } else {\n return toLocation.bind(function (_) {\n return toPosition.map(function (to) {\n if (forward) {\n deleteFromTo(editor, caret, from, to);\n } else {\n deleteFromTo(editor, caret, to, from);\n }\n return true;\n });\n }).getOr(false);\n }\n });\n };\n var backspaceDelete$3 = function (editor, caret, forward) {\n if (editor.selection.isCollapsed() && isFeatureEnabled$1(editor)) {\n var from = CaretPosition$1.fromRangeStart(editor.selection.getRng());\n return backspaceDeleteCollapsed(editor, caret, forward, from);\n }\n return false;\n };\n var $_dqvreg45jkmcwl4e = { backspaceDelete: backspaceDelete$3 };\n\n var tableCellRng = Immutable('start', 'end');\n var tableSelection = Immutable('rng', 'table', 'cells');\n var deleteAction = Adt.generate([\n { removeTable: ['element'] },\n { emptyCells: ['cells'] }\n ]);\n var isRootFromElement = function (root) {\n return curry($_e4hu6h1ejkmcwkgj.eq, root);\n };\n var getClosestCell$1 = function (container, isRoot) {\n return $_4ki4d929jkmcwkmn.closest(Element$$1.fromDom(container), 'td,th', isRoot);\n };\n var getClosestTable = function (cell, isRoot) {\n return $_4ki4d929jkmcwkmn.ancestor(cell, 'table', isRoot);\n };\n var isExpandedCellRng = function (cellRng) {\n return $_e4hu6h1ejkmcwkgj.eq(cellRng.start(), cellRng.end()) === false;\n };\n var getTableFromCellRng = function (cellRng, isRoot) {\n return getClosestTable(cellRng.start(), isRoot).bind(function (startParentTable) {\n return getClosestTable(cellRng.end(), isRoot).bind(function (endParentTable) {\n return $_e4hu6h1ejkmcwkgj.eq(startParentTable, endParentTable) ? Option.some(startParentTable) : Option.none();\n });\n });\n };\n var getTableCells = function (table) {\n return $_2gqm0n27jkmcwkmi.descendants(table, 'td,th');\n };\n var getCellRangeFromStartTable = function (cellRng, isRoot) {\n return getClosestTable(cellRng.start(), isRoot).bind(function (table) {\n return last(getTableCells(table)).map(function (endCell) {\n return tableCellRng(cellRng.start(), endCell);\n });\n });\n };\n var partialSelection = function (isRoot, rng) {\n var startCell = getClosestCell$1(rng.startContainer, isRoot);\n var endCell = getClosestCell$1(rng.endContainer, isRoot);\n return rng.collapsed ? Option.none() : liftN([\n startCell,\n endCell\n ], tableCellRng).fold(function () {\n return startCell.fold(function () {\n return endCell.bind(function (endCell) {\n return getClosestTable(endCell, isRoot).bind(function (table) {\n return head(getTableCells(table)).map(function (startCell) {\n return tableCellRng(startCell, endCell);\n });\n });\n });\n }, function (startCell) {\n return getClosestTable(startCell, isRoot).bind(function (table) {\n return last(getTableCells(table)).map(function (endCell) {\n return tableCellRng(startCell, endCell);\n });\n });\n });\n }, function (cellRng) {\n return isWithinSameTable(isRoot, cellRng) ? Option.none() : getCellRangeFromStartTable(cellRng, isRoot);\n });\n };\n var isWithinSameTable = function (isRoot, cellRng) {\n return getTableFromCellRng(cellRng, isRoot).isSome();\n };\n var getCellRng = function (rng, isRoot) {\n var startCell = getClosestCell$1(rng.startContainer, isRoot);\n var endCell = getClosestCell$1(rng.endContainer, isRoot);\n return liftN([\n startCell,\n endCell\n ], tableCellRng).filter(isExpandedCellRng).filter(function (cellRng) {\n return isWithinSameTable(isRoot, cellRng);\n }).orThunk(function () {\n return partialSelection(isRoot, rng);\n });\n };\n var getTableSelectionFromCellRng = function (cellRng, isRoot) {\n return getTableFromCellRng(cellRng, isRoot).map(function (table) {\n return tableSelection(cellRng, table, getTableCells(table));\n });\n };\n var getTableSelectionFromRng = function (root, rng) {\n var isRoot = isRootFromElement(root);\n return getCellRng(rng, isRoot).bind(function (cellRng) {\n return getTableSelectionFromCellRng(cellRng, isRoot);\n });\n };\n var getCellIndex = function (cells, cell) {\n return findIndex(cells, function (x) {\n return $_e4hu6h1ejkmcwkgj.eq(x, cell);\n });\n };\n var getSelectedCells = function (tableSelection) {\n return liftN([\n getCellIndex(tableSelection.cells(), tableSelection.rng().start()),\n getCellIndex(tableSelection.cells(), tableSelection.rng().end())\n ], function (startIndex, endIndex) {\n return tableSelection.cells().slice(startIndex, endIndex + 1);\n });\n };\n var getAction = function (tableSelection) {\n return getSelectedCells(tableSelection).map(function (selected) {\n var cells = tableSelection.cells();\n return selected.length === cells.length ? deleteAction.removeTable(tableSelection.table()) : deleteAction.emptyCells(selected);\n });\n };\n var getActionFromCells = function (cells) {\n return deleteAction.emptyCells(cells);\n };\n var getActionFromRange = function (root, rng) {\n return getTableSelectionFromRng(root, rng).bind(getAction);\n };\n var $_2x2sml4djkmcwl68 = {\n getActionFromRange: getActionFromRange,\n getActionFromCells: getActionFromCells\n };\n\n var getRanges = function (selection) {\n var ranges = [];\n if (selection) {\n for (var i = 0; i < selection.rangeCount; i++) {\n ranges.push(selection.getRangeAt(i));\n }\n }\n return ranges;\n };\n var getSelectedNodes = function (ranges) {\n return bind(ranges, function (range$$1) {\n var node = getSelectedNode(range$$1);\n return node ? [Element$$1.fromDom(node)] : [];\n });\n };\n var hasMultipleRanges = function (selection) {\n return getRanges(selection).length > 1;\n };\n var $_admly54fjkmcwl6u = {\n getRanges: getRanges,\n getSelectedNodes: getSelectedNodes,\n hasMultipleRanges: hasMultipleRanges\n };\n\n var getCellsFromRanges = function (ranges) {\n return filter($_admly54fjkmcwl6u.getSelectedNodes(ranges), isTableCell);\n };\n var getCellsFromElement = function (elm) {\n var selectedCells = $_2gqm0n27jkmcwkmi.descendants(elm, 'td[data-mce-selected],th[data-mce-selected]');\n return selectedCells;\n };\n var getCellsFromElementOrRanges = function (ranges, element) {\n var selectedCells = getCellsFromElement(element);\n var rangeCells = getCellsFromRanges(ranges);\n return selectedCells.length > 0 ? selectedCells : rangeCells;\n };\n var getCellsFromEditor = function (editor) {\n return getCellsFromElementOrRanges($_admly54fjkmcwl6u.getRanges(editor.selection.getSel()), Element$$1.fromDom(editor.getBody()));\n };\n var $_7q5gk44ejkmcwl6p = {\n getCellsFromRanges: getCellsFromRanges,\n getCellsFromElement: getCellsFromElement,\n getCellsFromElementOrRanges: getCellsFromElementOrRanges,\n getCellsFromEditor: getCellsFromEditor\n };\n\n var emptyCells = function (editor, cells) {\n each(cells, $_zygeg3ljkmcwkvo.fillWithPaddingBr);\n editor.selection.setCursorLocation(cells[0].dom(), 0);\n return true;\n };\n var deleteTableElement = function (editor, table) {\n $_4yq1i444jkmcwl3w.deleteElement(editor, false, table);\n return true;\n };\n var deleteCellRange = function (editor, rootElm, rng) {\n return $_2x2sml4djkmcwl68.getActionFromRange(rootElm, rng).map(function (action) {\n return action.fold(curry(deleteTableElement, editor), curry(emptyCells, editor));\n });\n };\n var deleteCaptionRange = function (editor, caption) {\n return emptyElement(editor, caption);\n };\n var deleteTableRange = function (editor, rootElm, rng, startElm) {\n return getParentCaption(rootElm, startElm).fold(function () {\n return deleteCellRange(editor, rootElm, rng);\n }, function (caption) {\n return deleteCaptionRange(editor, caption);\n }).getOr(false);\n };\n var deleteRange$1 = function (editor, startElm) {\n var rootNode = Element$$1.fromDom(editor.getBody());\n var rng = editor.selection.getRng();\n var selectedCells = $_7q5gk44ejkmcwl6p.getCellsFromEditor(editor);\n return selectedCells.length !== 0 ? emptyCells(editor, selectedCells) : deleteTableRange(editor, rootNode, rng, startElm);\n };\n var getParentCell = function (rootElm, elm) {\n return find($_cir6zl3zjkmcwl2j.parentsAndSelf(elm, rootElm), isTableCell);\n };\n var getParentCaption = function (rootElm, elm) {\n return find($_cir6zl3zjkmcwl2j.parentsAndSelf(elm, rootElm), function (elm) {\n return $_2xwdjv11jkmcwke0.name(elm) === 'caption';\n });\n };\n var deleteBetweenCells = function (editor, rootElm, forward, fromCell, from) {\n return $_1m3f3j2yjkmcwkqg.navigate(forward, editor.getBody(), from).bind(function (to) {\n return getParentCell(rootElm, Element$$1.fromDom(to.getNode())).map(function (toCell) {\n return $_e4hu6h1ejkmcwkgj.eq(toCell, fromCell) === false;\n });\n });\n };\n var emptyElement = function (editor, elm) {\n $_zygeg3ljkmcwkvo.fillWithPaddingBr(elm);\n editor.selection.setCursorLocation(elm.dom(), 0);\n return Option.some(true);\n };\n var isDeleteOfLastCharPos = function (fromCaption, forward, from, to) {\n return $_1m3f3j2yjkmcwkqg.firstPositionIn(fromCaption.dom()).bind(function (first) {\n return $_1m3f3j2yjkmcwkqg.lastPositionIn(fromCaption.dom()).map(function (last$$1) {\n return forward ? from.isEqual(first) && to.isEqual(last$$1) : from.isEqual(last$$1) && to.isEqual(first);\n });\n }).getOr(true);\n };\n var emptyCaretCaption = function (editor, elm) {\n return emptyElement(editor, elm);\n };\n var validateCaretCaption = function (rootElm, fromCaption, to) {\n return getParentCaption(rootElm, Element$$1.fromDom(to.getNode())).map(function (toCaption) {\n return $_e4hu6h1ejkmcwkgj.eq(toCaption, fromCaption) === false;\n });\n };\n var deleteCaretInsideCaption = function (editor, rootElm, forward, fromCaption, from) {\n return $_1m3f3j2yjkmcwkqg.navigate(forward, editor.getBody(), from).bind(function (to) {\n return isDeleteOfLastCharPos(fromCaption, forward, from, to) ? emptyCaretCaption(editor, fromCaption) : validateCaretCaption(rootElm, fromCaption, to);\n }).or(Option.some(true));\n };\n var deleteCaretCells = function (editor, forward, rootElm, startElm) {\n var from = CaretPosition$1.fromRangeStart(editor.selection.getRng());\n return getParentCell(rootElm, startElm).bind(function (fromCell) {\n return $_1jnfso3wjkmcwl1v.isEmpty(fromCell) ? emptyElement(editor, fromCell) : deleteBetweenCells(editor, rootElm, forward, fromCell, from);\n });\n };\n var deleteCaretCaption = function (editor, forward, rootElm, fromCaption) {\n var from = CaretPosition$1.fromRangeStart(editor.selection.getRng());\n return $_1jnfso3wjkmcwl1v.isEmpty(fromCaption) ? emptyElement(editor, fromCaption) : deleteCaretInsideCaption(editor, rootElm, forward, fromCaption, from);\n };\n var deleteCaret = function (editor, forward, startElm) {\n var rootElm = Element$$1.fromDom(editor.getBody());\n return getParentCaption(rootElm, startElm).fold(function () {\n return deleteCaretCells(editor, forward, rootElm, startElm);\n }, function (fromCaption) {\n return deleteCaretCaption(editor, forward, rootElm, fromCaption);\n }).getOr(false);\n };\n var backspaceDelete$4 = function (editor, forward) {\n var startElm = Element$$1.fromDom(editor.selection.getStart(true));\n var cells = $_7q5gk44ejkmcwl6p.getCellsFromEditor(editor);\n return editor.selection.isCollapsed() && cells.length === 0 ? deleteCaret(editor, forward, startElm) : deleteRange$1(editor, startElm);\n };\n var $_5lrlvq4cjkmcwl5t = { backspaceDelete: backspaceDelete$4 };\n\n var nativeCommand = function (editor, command) {\n editor.getDoc().execCommand(command, false, null);\n };\n var deleteCommand = function (editor) {\n if ($_1hyiiy41jkmcwl2z.backspaceDelete(editor, false)) {\n return;\n } else if ($_dqvreg45jkmcwl4e.backspaceDelete(editor, false)) {\n return;\n } else if ($_1wrlyf3qjkmcwkwe.backspaceDelete(editor, false)) {\n return;\n } else if ($_5lrlvq4cjkmcwl5t.backspaceDelete(editor)) {\n return;\n } else if ($_egxtcx40jkmcwl2q.backspaceDelete(editor, false)) {\n return;\n } else {\n nativeCommand(editor, 'Delete');\n $_8z75uj3sjkmcwkx3.paddEmptyBody(editor);\n }\n };\n var forwardDeleteCommand = function (editor) {\n if ($_1hyiiy41jkmcwl2z.backspaceDelete(editor, true)) {\n return;\n } else if ($_dqvreg45jkmcwl4e.backspaceDelete(editor, true)) {\n return;\n } else if ($_1wrlyf3qjkmcwkwe.backspaceDelete(editor, true)) {\n return;\n } else if ($_5lrlvq4cjkmcwl5t.backspaceDelete(editor)) {\n return;\n } else if ($_egxtcx40jkmcwl2q.backspaceDelete(editor, true)) {\n return;\n } else {\n nativeCommand(editor, 'ForwardDelete');\n }\n };\n var $_3ahn8y3pjkmcwkwc = {\n deleteCommand: deleteCommand,\n forwardDeleteCommand: forwardDeleteCommand\n };\n\n var getSpecifiedFontProp = function (propName, rootElm, elm) {\n var getProperty = function (elm) {\n return $_4enzit13jkmcwke5.getRaw(elm, propName);\n };\n var isRoot = function (elm) {\n return $_e4hu6h1ejkmcwkgj.eq(Element$$1.fromDom(rootElm), elm);\n };\n return $_253nd92ajkmcwkmp.closest(Element$$1.fromDom(elm), function (elm) {\n return getProperty(elm).isSome();\n }, isRoot).bind(getProperty);\n };\n var round$1 = function (number, precision) {\n var factor = Math.pow(10, precision);\n return Math.round(number * factor) / factor;\n };\n var toPt = function (fontSize, precision) {\n if (/[0-9.]+px$/.test(fontSize)) {\n return round$1(parseInt(fontSize, 10) * 72 / 96, precision || 0) + 'pt';\n }\n return fontSize;\n };\n var normalizeFontFamily = function (fontFamily) {\n return fontFamily.replace(/[\\'\\\"\\\\]/g, '').replace(/,\\s+/g, ',');\n };\n var getComputedFontProp = function (propName, elm) {\n return Option.from(DOMUtils$1.DOM.getStyle(elm, propName, true));\n };\n var getFontProp = function (propName) {\n return function (rootElm, elm) {\n return Option.from(elm).map(Element$$1.fromDom).filter($_2xwdjv11jkmcwke0.isElement).bind(function (element) {\n return getSpecifiedFontProp(propName, rootElm, element.dom()).or(getComputedFontProp(propName, element.dom()));\n }).getOr('');\n };\n };\n var $_3qs0f64hjkmcwl74 = {\n getFontSize: getFontProp('font-size'),\n getFontFamily: compose(normalizeFontFamily, getFontProp('font-family')),\n toPt: toPt\n };\n\n var findFirstCaretElement = function (editor) {\n return $_1m3f3j2yjkmcwkqg.firstPositionIn(editor.getBody()).map(function (caret) {\n var container = caret.container();\n return $_bjermr1rjkmcwkij.isText(container) ? container.parentNode : container;\n });\n };\n var isRangeAtStartOfNode = function (rng, root) {\n return rng.startContainer === root && rng.startOffset === 0;\n };\n var getCaretElement = function (editor) {\n return Option.from(editor.selection.getRng()).bind(function (rng) {\n var root = editor.getBody();\n return isRangeAtStartOfNode(rng, root) ? Option.none() : Option.from(editor.selection.getStart(true));\n });\n };\n var fromFontSizeNumber = function (editor, value) {\n if (/^[0-9\\.]+$/.test(value)) {\n var fontSizeNumber = parseInt(value, 10);\n if (fontSizeNumber >= 1 && fontSizeNumber <= 7) {\n var fontSizes = $_2ycm1438jkmcwkta.getFontStyleValues(editor);\n var fontClasses = $_2ycm1438jkmcwkta.getFontSizeClasses(editor);\n if (fontClasses) {\n return fontClasses[fontSizeNumber - 1] || value;\n } else {\n return fontSizes[fontSizeNumber - 1] || value;\n }\n } else {\n return value;\n }\n } else {\n return value;\n }\n };\n var fontNameAction = function (editor, value) {\n editor.formatter.toggle('fontname', { value: fromFontSizeNumber(editor, value) });\n editor.nodeChanged();\n };\n var fontNameQuery = function (editor) {\n return getCaretElement(editor).fold(function () {\n return findFirstCaretElement(editor).map(function (caretElement) {\n return $_3qs0f64hjkmcwl74.getFontFamily(editor.getBody(), caretElement);\n }).getOr('');\n }, function (caretElement) {\n return $_3qs0f64hjkmcwl74.getFontFamily(editor.getBody(), caretElement);\n });\n };\n var fontSizeAction = function (editor, value) {\n editor.formatter.toggle('fontsize', { value: fromFontSizeNumber(editor, value) });\n editor.nodeChanged();\n };\n var fontSizeQuery = function (editor) {\n return getCaretElement(editor).fold(function () {\n return findFirstCaretElement(editor).map(function (caretElement) {\n return $_3qs0f64hjkmcwl74.getFontSize(editor.getBody(), caretElement);\n }).getOr('');\n }, function (caretElement) {\n return $_3qs0f64hjkmcwl74.getFontSize(editor.getBody(), caretElement);\n });\n };\n\n var isEq$2 = function (rng1, rng2) {\n return rng1 && rng2 && (rng1.startContainer === rng2.startContainer && rng1.startOffset === rng2.startOffset) && (rng1.endContainer === rng2.endContainer && rng1.endOffset === rng2.endOffset);\n };\n var $_axtxv74kjkmcwl84 = { isEq: isEq$2 };\n\n var findParent = function (node, rootNode, predicate) {\n while (node && node !== rootNode) {\n if (predicate(node)) {\n return node;\n }\n node = node.parentNode;\n }\n return null;\n };\n var hasParent = function (node, rootNode, predicate) {\n return findParent(node, rootNode, predicate) !== null;\n };\n var hasParentWithName = function (node, rootNode, name) {\n return hasParent(node, rootNode, function (node) {\n return node.nodeName === name;\n });\n };\n var isTable$2 = function (node) {\n return node && node.nodeName === 'TABLE';\n };\n var isTableCell$3 = function (node) {\n return node && /^(TD|TH|CAPTION)$/.test(node.nodeName);\n };\n var isCeFalseCaretContainer = function (node, rootNode) {\n return isCaretContainer(node) && hasParent(node, rootNode, isCaretNode) === false;\n };\n var hasBrBeforeAfter = function (dom, node, left) {\n var walker = new TreeWalker(node, dom.getParent(node.parentNode, dom.isBlock) || dom.getRoot());\n while (node = walker[left ? 'prev' : 'next']()) {\n if ($_bjermr1rjkmcwkij.isBr(node)) {\n return true;\n }\n }\n };\n var isPrevNode = function (node, name) {\n return node.previousSibling && node.previousSibling.nodeName === name;\n };\n var hasContentEditableFalseParent = function (body, node) {\n while (node && node !== body) {\n if ($_bjermr1rjkmcwkij.isContentEditableFalse(node)) {\n return true;\n }\n node = node.parentNode;\n }\n return false;\n };\n var findTextNodeRelative = function (dom, isAfterNode, collapsed, left, startNode) {\n var walker, lastInlineElement, parentBlockContainer;\n var body = dom.getRoot();\n var node;\n var nonEmptyElementsMap = dom.schema.getNonEmptyElements();\n parentBlockContainer = dom.getParent(startNode.parentNode, dom.isBlock) || body;\n if (left && $_bjermr1rjkmcwkij.isBr(startNode) && isAfterNode && dom.isEmpty(parentBlockContainer)) {\n return Option.some(CaretPosition(startNode.parentNode, dom.nodeIndex(startNode)));\n }\n walker = new TreeWalker(startNode, parentBlockContainer);\n while (node = walker[left ? 'prev' : 'next']()) {\n if (dom.getContentEditableParent(node) === 'false' || isCeFalseCaretContainer(node, body)) {\n return Option.none();\n }\n if ($_bjermr1rjkmcwkij.isText(node) && node.nodeValue.length > 0) {\n if (hasParentWithName(node, body, 'A') === false) {\n return Option.some(CaretPosition(node, left ? node.nodeValue.length : 0));\n }\n return Option.none();\n }\n if (dom.isBlock(node) || nonEmptyElementsMap[node.nodeName.toLowerCase()]) {\n return Option.none();\n }\n lastInlineElement = node;\n }\n if (collapsed && lastInlineElement) {\n return Option.some(CaretPosition(lastInlineElement, 0));\n }\n return Option.none();\n };\n var normalizeEndPoint = function (dom, collapsed, start, rng) {\n var container, offset, walker;\n var body = dom.getRoot();\n var node, nonEmptyElementsMap;\n var directionLeft, isAfterNode, normalized = false;\n container = rng[(start ? 'start' : 'end') + 'Container'];\n offset = rng[(start ? 'start' : 'end') + 'Offset'];\n isAfterNode = $_bjermr1rjkmcwkij.isElement(container) && offset === container.childNodes.length;\n nonEmptyElementsMap = dom.schema.getNonEmptyElements();\n directionLeft = start;\n if (isCaretContainer(container)) {\n return Option.none();\n }\n if ($_bjermr1rjkmcwkij.isElement(container) && offset > container.childNodes.length - 1) {\n directionLeft = false;\n }\n if ($_bjermr1rjkmcwkij.isDocument(container)) {\n container = body;\n offset = 0;\n }\n if (container === body) {\n if (directionLeft) {\n node = container.childNodes[offset > 0 ? offset - 1 : 0];\n if (node) {\n if (isCaretContainer(node)) {\n return Option.none();\n }\n if (nonEmptyElementsMap[node.nodeName] || isTable$2(node)) {\n return Option.none();\n }\n }\n }\n if (container.hasChildNodes()) {\n offset = Math.min(!directionLeft && offset > 0 ? offset - 1 : offset, container.childNodes.length - 1);\n container = container.childNodes[offset];\n offset = $_bjermr1rjkmcwkij.isText(container) && isAfterNode ? container.data.length : 0;\n if (!collapsed && container === body.lastChild && isTable$2(container)) {\n return Option.none();\n }\n if (hasContentEditableFalseParent(body, container) || isCaretContainer(container)) {\n return Option.none();\n }\n if (container.hasChildNodes() && isTable$2(container) === false) {\n node = container;\n walker = new TreeWalker(container, body);\n do {\n if ($_bjermr1rjkmcwkij.isContentEditableFalse(node) || isCaretContainer(node)) {\n normalized = false;\n break;\n }\n if ($_bjermr1rjkmcwkij.isText(node) && node.nodeValue.length > 0) {\n offset = directionLeft ? 0 : node.nodeValue.length;\n container = node;\n normalized = true;\n break;\n }\n if (nonEmptyElementsMap[node.nodeName.toLowerCase()] && !isTableCell$3(node)) {\n offset = dom.nodeIndex(node);\n container = node.parentNode;\n if (!directionLeft) {\n offset++;\n }\n normalized = true;\n break;\n }\n } while (node = directionLeft ? walker.next() : walker.prev());\n }\n }\n }\n if (collapsed) {\n if ($_bjermr1rjkmcwkij.isText(container) && offset === 0) {\n findTextNodeRelative(dom, isAfterNode, collapsed, true, container).each(function (pos) {\n container = pos.container();\n offset = pos.offset();\n normalized = true;\n });\n }\n if ($_bjermr1rjkmcwkij.isElement(container)) {\n node = container.childNodes[offset];\n if (!node) {\n node = container.childNodes[offset - 1];\n }\n if (node && $_bjermr1rjkmcwkij.isBr(node) && !isPrevNode(node, 'A') && !hasBrBeforeAfter(dom, node, false) && !hasBrBeforeAfter(dom, node, true)) {\n findTextNodeRelative(dom, isAfterNode, collapsed, true, node).each(function (pos) {\n container = pos.container();\n offset = pos.offset();\n normalized = true;\n });\n }\n }\n }\n if (directionLeft && !collapsed && $_bjermr1rjkmcwkij.isText(container) && offset === container.nodeValue.length) {\n findTextNodeRelative(dom, isAfterNode, collapsed, false, container).each(function (pos) {\n container = pos.container();\n offset = pos.offset();\n normalized = true;\n });\n }\n return normalized ? Option.some(CaretPosition(container, offset)) : Option.none();\n };\n var normalize$1 = function (dom, rng) {\n var collapsed = rng.collapsed, normRng = rng.cloneRange();\n var startPos = CaretPosition.fromRangeStart(rng);\n normalizeEndPoint(dom, collapsed, true, normRng).each(function (pos) {\n if (!collapsed || !CaretPosition.isAbove(startPos, pos)) {\n normRng.setStart(pos.container(), pos.offset());\n }\n });\n if (!collapsed) {\n normalizeEndPoint(dom, collapsed, false, normRng).each(function (pos) {\n normRng.setEnd(pos.container(), pos.offset());\n });\n }\n if (collapsed) {\n normRng.collapse(true);\n }\n return $_axtxv74kjkmcwl84.isEq(rng, normRng) ? Option.none() : Option.some(normRng);\n };\n var $_21c07i4jjkmcwl7w = { normalize: normalize$1 };\n\n var hasRightSideContent = function (schema, container, parentBlock) {\n var walker = new TreeWalker(container, parentBlock);\n var node;\n var nonEmptyElementsMap = schema.getNonEmptyElements();\n while (node = walker.next()) {\n if (nonEmptyElementsMap[node.nodeName.toLowerCase()] || node.length > 0) {\n return true;\n }\n }\n };\n var scrollToBr = function (dom, selection, brElm) {\n var marker = dom.create('span', {}, ' ');\n brElm.parentNode.insertBefore(marker, brElm);\n selection.scrollIntoView(marker);\n dom.remove(marker);\n };\n var moveSelectionToBr = function (dom, selection, brElm, extraBr) {\n var rng = dom.createRng();\n if (!extraBr) {\n rng.setStartAfter(brElm);\n rng.setEndAfter(brElm);\n } else {\n rng.setStartBefore(brElm);\n rng.setEndBefore(brElm);\n }\n selection.setRng(rng);\n };\n var insertBrAtCaret = function (editor, evt) {\n var selection = editor.selection, dom = editor.dom;\n var brElm, extraBr;\n var rng = selection.getRng();\n $_21c07i4jjkmcwl7w.normalize(dom, rng).each(function (normRng) {\n rng.setStart(normRng.startContainer, normRng.startOffset);\n rng.setEnd(normRng.endContainer, normRng.endOffset);\n });\n var offset = rng.startOffset;\n var container = rng.startContainer;\n if (container.nodeType === 1 && container.hasChildNodes()) {\n var isAfterLastNodeInContainer = offset > container.childNodes.length - 1;\n container = container.childNodes[Math.min(offset, container.childNodes.length - 1)] || container;\n if (isAfterLastNodeInContainer && container.nodeType === 3) {\n offset = container.nodeValue.length;\n } else {\n offset = 0;\n }\n }\n var parentBlock = dom.getParent(container, dom.isBlock);\n var containerBlock = parentBlock ? dom.getParent(parentBlock.parentNode, dom.isBlock) : null;\n var containerBlockName = containerBlock ? containerBlock.nodeName.toUpperCase() : '';\n var isControlKey = evt && evt.ctrlKey;\n if (containerBlockName === 'LI' && !isControlKey) {\n parentBlock = containerBlock;\n }\n if (container && container.nodeType === 3 && offset >= container.nodeValue.length) {\n if (!hasRightSideContent(editor.schema, container, parentBlock)) {\n brElm = dom.create('br');\n rng.insertNode(brElm);\n rng.setStartAfter(brElm);\n rng.setEndAfter(brElm);\n extraBr = true;\n }\n }\n brElm = dom.create('br');\n rng.insertNode(brElm);\n scrollToBr(dom, selection, brElm);\n moveSelectionToBr(dom, selection, brElm, extraBr);\n editor.undoManager.add();\n };\n var insertBrBefore = function (editor, inline) {\n var br = Element$$1.fromTag('br');\n $_f4qt4v1yjkmcwkl2.before(Element$$1.fromDom(inline), br);\n editor.undoManager.add();\n };\n var insertBrAfter = function (editor, inline) {\n if (!hasBrAfter(editor.getBody(), inline)) {\n $_f4qt4v1yjkmcwkl2.after(Element$$1.fromDom(inline), Element$$1.fromTag('br'));\n }\n var br = Element$$1.fromTag('br');\n $_f4qt4v1yjkmcwkl2.after(Element$$1.fromDom(inline), br);\n scrollToBr(editor.dom, editor.selection, br.dom());\n moveSelectionToBr(editor.dom, editor.selection, br.dom(), false);\n editor.undoManager.add();\n };\n var isBeforeBr = function (pos) {\n return $_bjermr1rjkmcwkij.isBr(pos.getNode());\n };\n var hasBrAfter = function (rootNode, startNode) {\n if (isBeforeBr(CaretPosition$1.after(startNode))) {\n return true;\n } else {\n return $_1m3f3j2yjkmcwkqg.nextPosition(rootNode, CaretPosition$1.after(startNode)).map(function (pos) {\n return $_bjermr1rjkmcwkij.isBr(pos.getNode());\n }).getOr(false);\n }\n };\n var isAnchorLink = function (elm) {\n return elm && elm.nodeName === 'A' && 'href' in elm;\n };\n var isInsideAnchor = function (location) {\n return location.fold(constant(false), isAnchorLink, isAnchorLink, constant(false));\n };\n var readInlineAnchorLocation = function (editor) {\n var isInlineTarget = curry($_crqmqb3tjkmcwkxd.isInlineTarget, editor);\n var position = CaretPosition$1.fromRangeStart(editor.selection.getRng());\n return $_gau9ep48jkmcwl4x.readLocation(isInlineTarget, editor.getBody(), position).filter(isInsideAnchor);\n };\n var insertBrOutsideAnchor = function (editor, location) {\n location.fold(noop, curry(insertBrBefore, editor), curry(insertBrAfter, editor), noop);\n };\n var insert = function (editor, evt) {\n var anchorLocation = readInlineAnchorLocation(editor);\n if (anchorLocation.isSome()) {\n anchorLocation.each(curry(insertBrOutsideAnchor, editor));\n } else {\n insertBrAtCaret(editor, evt);\n }\n };\n var $_dc07up4ijkmcwl7n = { insert: insert };\n\n var adt = Adt.generate([\n { 'before': ['element'] },\n {\n 'on': [\n 'element',\n 'offset'\n ]\n },\n { after: ['element'] }\n ]);\n var cata = function (subject, onBefore, onOn, onAfter) {\n return subject.fold(onBefore, onOn, onAfter);\n };\n var getStart = function (situ) {\n return situ.fold(identity, identity, identity);\n };\n var $_1s5vuk4njkmcwl8r = {\n before: adt.before,\n on: adt.on,\n after: adt.after,\n cata: cata,\n getStart: getStart\n };\n\n var type$1 = Adt.generate([\n { domRange: ['rng'] },\n {\n relative: [\n 'startSitu',\n 'finishSitu'\n ]\n },\n {\n exact: [\n 'start',\n 'soffset',\n 'finish',\n 'foffset'\n ]\n }\n ]);\n var range$1 = Immutable('start', 'soffset', 'finish', 'foffset');\n var exactFromRange = function (simRange) {\n return type$1.exact(simRange.start(), simRange.soffset(), simRange.finish(), simRange.foffset());\n };\n var getStart$1 = function (selection) {\n return selection.match({\n domRange: function (rng) {\n return Element$$1.fromDom(rng.startContainer);\n },\n relative: function (startSitu, finishSitu) {\n return $_1s5vuk4njkmcwl8r.getStart(startSitu);\n },\n exact: function (start, soffset, finish, foffset) {\n return start;\n }\n });\n };\n var getWin = function (selection) {\n var start = getStart$1(selection);\n return $_ca6pc118jkmcwkfs.defaultView(start);\n };\n var $_2v8ne64mjkmcwl8l = {\n domRange: type$1.domRange,\n relative: type$1.relative,\n exact: type$1.exact,\n exactFromRange: exactFromRange,\n range: range$1,\n getWin: getWin\n };\n\n var browser$3 = $_b1ykk4ojkmcwkcj.detect().browser;\n var clamp = function (offset, element) {\n var max = $_2xwdjv11jkmcwke0.isText(element) ? $_ckzc193ejkmcwktu.get(element).length : $_ca6pc118jkmcwkfs.children(element).length + 1;\n if (offset > max) {\n return max;\n } else if (offset < 0) {\n return 0;\n }\n return offset;\n };\n var normalizeRng = function (rng) {\n return $_2v8ne64mjkmcwl8l.range(rng.start(), clamp(rng.soffset(), rng.start()), rng.finish(), clamp(rng.foffset(), rng.finish()));\n };\n var isOrContains = function (root, elm) {\n return $_e4hu6h1ejkmcwkgj.contains(root, elm) || $_e4hu6h1ejkmcwkgj.eq(root, elm);\n };\n var isRngInRoot = function (root) {\n return function (rng) {\n return isOrContains(root, rng.start()) && isOrContains(root, rng.finish());\n };\n };\n var shouldStore = function (editor) {\n return editor.inline === true || browser$3.isIE();\n };\n var nativeRangeToSelectionRange = function (r) {\n return $_2v8ne64mjkmcwl8l.range(Element$$1.fromDom(r.startContainer), r.startOffset, Element$$1.fromDom(r.endContainer), r.endOffset);\n };\n var readRange = function (win) {\n var selection = win.getSelection();\n var rng = !selection || selection.rangeCount === 0 ? Option.none() : Option.from(selection.getRangeAt(0));\n return rng.map(nativeRangeToSelectionRange);\n };\n var getBookmark$2 = function (root) {\n var win = $_ca6pc118jkmcwkfs.defaultView(root);\n return readRange(win.dom()).filter(isRngInRoot(root));\n };\n var validate = function (root, bookmark) {\n return Option.from(bookmark).filter(isRngInRoot(root)).map(normalizeRng);\n };\n var bookmarkToNativeRng = function (bookmark) {\n var rng = document.createRange();\n try {\n rng.setStart(bookmark.start().dom(), bookmark.soffset());\n rng.setEnd(bookmark.finish().dom(), bookmark.foffset());\n return Option.some(rng);\n } catch (_) {\n return Option.none();\n }\n };\n var store = function (editor) {\n var newBookmark = shouldStore(editor) ? getBookmark$2(Element$$1.fromDom(editor.getBody())) : Option.none();\n editor.bookmark = newBookmark.isSome() ? newBookmark : editor.bookmark;\n };\n var storeNative = function (editor, rng) {\n var root = Element$$1.fromDom(editor.getBody());\n var range = shouldStore(editor) ? Option.from(rng) : Option.none();\n var newBookmark = range.map(nativeRangeToSelectionRange).filter(isRngInRoot(root));\n editor.bookmark = newBookmark.isSome() ? newBookmark : editor.bookmark;\n };\n var getRng = function (editor) {\n var bookmark = editor.bookmark ? editor.bookmark : Option.none();\n return bookmark.bind(curry(validate, Element$$1.fromDom(editor.getBody()))).bind(bookmarkToNativeRng);\n };\n var restore = function (editor) {\n getRng(editor).each(function (rng) {\n editor.selection.setRng(rng);\n });\n };\n var $_39c3zs4ljkmcwl86 = {\n store: store,\n storeNative: storeNative,\n readRange: readRange,\n restore: restore,\n getRng: getRng,\n getBookmark: getBookmark$2,\n validate: validate\n };\n\n var indentElement = function (dom, command, useMargin, value, unit, element) {\n if (dom.getContentEditable(element) === 'false') {\n return;\n }\n if (element.nodeName !== 'LI') {\n var indentStyleName = useMargin ? 'margin' : 'padding';\n indentStyleName = element.nodeName === 'TABLE' ? 'margin' : indentStyleName;\n indentStyleName += dom.getStyle(element, 'direction', true) === 'rtl' ? 'Right' : 'Left';\n if (command === 'outdent') {\n var styleValue = Math.max(0, parseInt(element.style[indentStyleName] || 0, 10) - value);\n dom.setStyle(element, indentStyleName, styleValue ? styleValue + unit : '');\n } else {\n var styleValue = parseInt(element.style[indentStyleName] || 0, 10) + value + unit;\n dom.setStyle(element, indentStyleName, styleValue);\n }\n }\n };\n var handle = function (editor, command) {\n var settings = editor.settings, dom = editor.dom, selection = editor.selection, formatter = editor.formatter;\n var indentUnit = /[a-z%]+$/i.exec(settings.indentation)[0];\n var indentValue = parseInt(settings.indentation, 10);\n var useMargin = editor.getParam('indent_use_margin', false);\n if (!editor.queryCommandState('InsertUnorderedList') && !editor.queryCommandState('InsertOrderedList')) {\n if (!settings.forced_root_block && !dom.getParent(selection.getNode(), dom.isBlock)) {\n formatter.apply('div');\n }\n each(selection.getSelectedBlocks(), function (element) {\n return indentElement(dom, command, useMargin, indentValue, indentUnit, element);\n });\n }\n };\n\n var each$10 = $_4ujg4tljkmcwkbk.each;\n var extend$2 = $_4ujg4tljkmcwkbk.extend;\n var map$3 = $_4ujg4tljkmcwkbk.map;\n var inArray$2 = $_4ujg4tljkmcwkbk.inArray;\n function EditorCommands (editor) {\n var dom, selection, formatter;\n var commands = {\n state: {},\n exec: {},\n value: {}\n };\n var settings = editor.settings, bookmark;\n editor.on('PreInit', function () {\n dom = editor.dom;\n selection = editor.selection;\n settings = editor.settings;\n formatter = editor.formatter;\n });\n var execCommand = function (command, ui, value, args) {\n var func, customCommand, state = false;\n if (editor.removed) {\n return;\n }\n if (!/^(mceAddUndoLevel|mceEndUndoLevel|mceBeginUndoLevel|mceRepaint)$/.test(command) && (!args || !args.skip_focus)) {\n editor.focus();\n } else {\n $_39c3zs4ljkmcwl86.restore(editor);\n }\n args = editor.fire('BeforeExecCommand', {\n command: command,\n ui: ui,\n value: value\n });\n if (args.isDefaultPrevented()) {\n return false;\n }\n customCommand = command.toLowerCase();\n if (func = commands.exec[customCommand]) {\n func(customCommand, ui, value);\n editor.fire('ExecCommand', {\n command: command,\n ui: ui,\n value: value\n });\n return true;\n }\n each$10(editor.plugins, function (p) {\n if (p.execCommand && p.execCommand(command, ui, value)) {\n editor.fire('ExecCommand', {\n command: command,\n ui: ui,\n value: value\n });\n state = true;\n return false;\n }\n });\n if (state) {\n return state;\n }\n if (editor.theme && editor.theme.execCommand && editor.theme.execCommand(command, ui, value)) {\n editor.fire('ExecCommand', {\n command: command,\n ui: ui,\n value: value\n });\n return true;\n }\n try {\n state = editor.getDoc().execCommand(command, ui, value);\n } catch (ex) {\n }\n if (state) {\n editor.fire('ExecCommand', {\n command: command,\n ui: ui,\n value: value\n });\n return true;\n }\n return false;\n };\n var queryCommandState = function (command) {\n var func;\n if (editor.quirks.isHidden() || editor.removed) {\n return;\n }\n command = command.toLowerCase();\n if (func = commands.state[command]) {\n return func(command);\n }\n try {\n return editor.getDoc().queryCommandState(command);\n } catch (ex) {\n }\n return false;\n };\n var queryCommandValue = function (command) {\n var func;\n if (editor.quirks.isHidden() || editor.removed) {\n return;\n }\n command = command.toLowerCase();\n if (func = commands.value[command]) {\n return func(command);\n }\n try {\n return editor.getDoc().queryCommandValue(command);\n } catch (ex) {\n }\n };\n var addCommands = function (commandList, type) {\n type = type || 'exec';\n each$10(commandList, function (callback, command) {\n each$10(command.toLowerCase().split(','), function (command) {\n commands[type][command] = callback;\n });\n });\n };\n var addCommand = function (command, callback, scope) {\n command = command.toLowerCase();\n commands.exec[command] = function (command, ui, value, args) {\n return callback.call(scope || editor, ui, value, args);\n };\n };\n var queryCommandSupported = function (command) {\n command = command.toLowerCase();\n if (commands.exec[command]) {\n return true;\n }\n try {\n return editor.getDoc().queryCommandSupported(command);\n } catch (ex) {\n }\n return false;\n };\n var addQueryStateHandler = function (command, callback, scope) {\n command = command.toLowerCase();\n commands.state[command] = function () {\n return callback.call(scope || editor);\n };\n };\n var addQueryValueHandler = function (command, callback, scope) {\n command = command.toLowerCase();\n commands.value[command] = function () {\n return callback.call(scope || editor);\n };\n };\n var hasCustomCommand = function (command) {\n command = command.toLowerCase();\n return !!commands.exec[command];\n };\n extend$2(this, {\n execCommand: execCommand,\n queryCommandState: queryCommandState,\n queryCommandValue: queryCommandValue,\n queryCommandSupported: queryCommandSupported,\n addCommands: addCommands,\n addCommand: addCommand,\n addQueryStateHandler: addQueryStateHandler,\n addQueryValueHandler: addQueryValueHandler,\n hasCustomCommand: hasCustomCommand\n });\n var execNativeCommand = function (command, ui, value) {\n if (ui === undefined) {\n ui = false;\n }\n if (value === undefined) {\n value = null;\n }\n return editor.getDoc().execCommand(command, ui, value);\n };\n var isFormatMatch = function (name) {\n return formatter.match(name);\n };\n var toggleFormat = function (name, value) {\n formatter.toggle(name, value ? { value: value } : undefined);\n editor.nodeChanged();\n };\n var storeSelection = function (type) {\n bookmark = selection.getBookmark(type);\n };\n var restoreSelection = function () {\n selection.moveToBookmark(bookmark);\n };\n addCommands({\n 'mceResetDesignMode,mceBeginUndoLevel': function () {\n },\n 'mceEndUndoLevel,mceAddUndoLevel': function () {\n editor.undoManager.add();\n },\n 'Cut,Copy,Paste': function (command) {\n var doc = editor.getDoc();\n var failed;\n try {\n execNativeCommand(command);\n } catch (ex) {\n failed = true;\n }\n if (command === 'paste' && !doc.queryCommandEnabled(command)) {\n failed = true;\n }\n if (failed || !doc.queryCommandSupported(command)) {\n var msg = editor.translate('Your browser doesn\\'t support direct access to the clipboard. ' + 'Please use the Ctrl+X/C/V keyboard shortcuts instead.');\n if ($_cvvl9iajkmcwk25.mac) {\n msg = msg.replace(/Ctrl\\+/g, '\\u2318+');\n }\n editor.notificationManager.open({\n text: msg,\n type: 'error'\n });\n }\n },\n 'unlink': function () {\n if (selection.isCollapsed()) {\n var elm = editor.dom.getParent(editor.selection.getStart(), 'a');\n if (elm) {\n editor.dom.remove(elm, true);\n }\n return;\n }\n formatter.remove('link');\n },\n 'JustifyLeft,JustifyCenter,JustifyRight,JustifyFull,JustifyNone': function (command) {\n var align = command.substring(7);\n if (align === 'full') {\n align = 'justify';\n }\n each$10('left,center,right,justify'.split(','), function (name) {\n if (align !== name) {\n formatter.remove('align' + name);\n }\n });\n if (align !== 'none') {\n toggleFormat('align' + align);\n }\n },\n 'InsertUnorderedList,InsertOrderedList': function (command) {\n var listElm, listParent;\n execNativeCommand(command);\n listElm = dom.getParent(selection.getNode(), 'ol,ul');\n if (listElm) {\n listParent = listElm.parentNode;\n if (/^(H[1-6]|P|ADDRESS|PRE)$/.test(listParent.nodeName)) {\n storeSelection();\n dom.split(listParent, listElm);\n restoreSelection();\n }\n }\n },\n 'Bold,Italic,Underline,Strikethrough,Superscript,Subscript': function (command) {\n toggleFormat(command);\n },\n 'ForeColor,HiliteColor': function (command, ui, value) {\n toggleFormat(command, value);\n },\n 'FontName': function (command, ui, value) {\n fontNameAction(editor, value);\n },\n 'FontSize': function (command, ui, value) {\n fontSizeAction(editor, value);\n },\n 'RemoveFormat': function (command) {\n formatter.remove(command);\n },\n 'mceBlockQuote': function () {\n toggleFormat('blockquote');\n },\n 'FormatBlock': function (command, ui, value) {\n return toggleFormat(value || 'p');\n },\n 'mceCleanup': function () {\n var bookmark = selection.getBookmark();\n editor.setContent(editor.getContent());\n selection.moveToBookmark(bookmark);\n },\n 'mceRemoveNode': function (command, ui, value) {\n var node = value || selection.getNode();\n if (node !== editor.getBody()) {\n storeSelection();\n editor.dom.remove(node, true);\n restoreSelection();\n }\n },\n 'mceSelectNodeDepth': function (command, ui, value) {\n var counter = 0;\n dom.getParent(selection.getNode(), function (node) {\n if (node.nodeType === 1 && counter++ === value) {\n selection.select(node);\n return false;\n }\n }, editor.getBody());\n },\n 'mceSelectNode': function (command, ui, value) {\n selection.select(value);\n },\n 'mceInsertContent': function (command, ui, value) {\n $_g2yj883ijkmcwkv2.insertAtCaret(editor, value);\n },\n 'mceInsertRawHTML': function (command, ui, value) {\n var content = editor.getContent();\n selection.setContent('tiny_mce_marker');\n editor.setContent(content.replace(/tiny_mce_marker/g, function () {\n return value;\n }));\n },\n 'mceToggleFormat': function (command, ui, value) {\n toggleFormat(value);\n },\n 'mceSetContent': function (command, ui, value) {\n editor.setContent(value);\n },\n 'Indent,Outdent': function (command) {\n handle(editor, command);\n },\n 'mceRepaint': function () {\n },\n 'InsertHorizontalRule': function () {\n editor.execCommand('mceInsertContent', false, '
');\n },\n 'mceToggleVisualAid': function () {\n editor.hasVisual = !editor.hasVisual;\n editor.addVisual();\n },\n 'mceReplaceContent': function (command, ui, value) {\n editor.execCommand('mceInsertContent', false, value.replace(/\\{\\$selection\\}/g, selection.getContent({ format: 'text' })));\n },\n 'mceInsertLink': function (command, ui, value) {\n var anchor;\n if (typeof value === 'string') {\n value = { href: value };\n }\n anchor = dom.getParent(selection.getNode(), 'a');\n value.href = value.href.replace(' ', '%20');\n if (!anchor || !value.href) {\n formatter.remove('link');\n }\n if (value.href) {\n formatter.apply('link', value, anchor);\n }\n },\n 'selectAll': function () {\n var editingHost = dom.getParent(selection.getStart(), $_bjermr1rjkmcwkij.isContentEditableTrue);\n if (editingHost) {\n var rng = dom.createRng();\n rng.selectNodeContents(editingHost);\n selection.setRng(rng);\n }\n },\n 'delete': function () {\n $_3ahn8y3pjkmcwkwc.deleteCommand(editor);\n },\n 'forwardDelete': function () {\n $_3ahn8y3pjkmcwkwc.forwardDeleteCommand(editor);\n },\n 'mceNewDocument': function () {\n editor.setContent('');\n },\n 'InsertLineBreak': function (command, ui, value) {\n $_dc07up4ijkmcwl7n.insert(editor, value);\n return true;\n }\n });\n var alignStates = function (name) {\n return function () {\n var nodes = selection.isCollapsed() ? [dom.getParent(selection.getNode(), dom.isBlock)] : selection.getSelectedBlocks();\n var matches = map$3(nodes, function (node) {\n return !!formatter.matchNode(node, name);\n });\n return inArray$2(matches, true) !== -1;\n };\n };\n addCommands({\n 'JustifyLeft': alignStates('alignleft'),\n 'JustifyCenter': alignStates('aligncenter'),\n 'JustifyRight': alignStates('alignright'),\n 'JustifyFull': alignStates('alignjustify'),\n 'Bold,Italic,Underline,Strikethrough,Superscript,Subscript': function (command) {\n return isFormatMatch(command);\n },\n 'mceBlockQuote': function () {\n return isFormatMatch('blockquote');\n },\n 'Outdent': function () {\n var node;\n if (settings.inline_styles) {\n if ((node = dom.getParent(selection.getStart(), dom.isBlock)) && parseInt(node.style.paddingLeft, 10) > 0) {\n return true;\n }\n if ((node = dom.getParent(selection.getEnd(), dom.isBlock)) && parseInt(node.style.paddingLeft, 10) > 0) {\n return true;\n }\n }\n return queryCommandState('InsertUnorderedList') || queryCommandState('InsertOrderedList') || !settings.inline_styles && !!dom.getParent(selection.getNode(), 'BLOCKQUOTE');\n },\n 'InsertUnorderedList,InsertOrderedList': function (command) {\n var list = dom.getParent(selection.getNode(), 'ul,ol');\n return list && (command === 'insertunorderedlist' && list.tagName === 'UL' || command === 'insertorderedlist' && list.tagName === 'OL');\n }\n }, 'state');\n addCommands({\n Undo: function () {\n editor.undoManager.undo();\n },\n Redo: function () {\n editor.undoManager.redo();\n }\n });\n addQueryValueHandler('FontName', function () {\n return fontNameQuery(editor);\n }, this);\n addQueryValueHandler('FontSize', function () {\n return fontSizeQuery(editor);\n }, this);\n }\n\n var nativeEvents = $_4ujg4tljkmcwkbk.makeMap('focus blur focusin focusout click dblclick mousedown mouseup mousemove mouseover beforepaste paste cut copy selectionchange ' + 'mouseout mouseenter mouseleave wheel keydown keypress keyup input contextmenu dragstart dragend dragover ' + 'draggesture dragdrop drop drag submit ' + 'compositionstart compositionend compositionupdate touchstart touchmove touchend', ' ');\n var Dispatcher = function (settings) {\n var self = this;\n var scope, bindings = {}, toggleEvent;\n var returnFalse = function () {\n return false;\n };\n var returnTrue = function () {\n return true;\n };\n settings = settings || {};\n scope = settings.scope || self;\n toggleEvent = settings.toggleEvent || returnFalse;\n var fire = function (name, args) {\n var handlers, i, l, callback;\n name = name.toLowerCase();\n args = args || {};\n args.type = name;\n if (!args.target) {\n args.target = scope;\n }\n if (!args.preventDefault) {\n args.preventDefault = function () {\n args.isDefaultPrevented = returnTrue;\n };\n args.stopPropagation = function () {\n args.isPropagationStopped = returnTrue;\n };\n args.stopImmediatePropagation = function () {\n args.isImmediatePropagationStopped = returnTrue;\n };\n args.isDefaultPrevented = returnFalse;\n args.isPropagationStopped = returnFalse;\n args.isImmediatePropagationStopped = returnFalse;\n }\n if (settings.beforeFire) {\n settings.beforeFire(args);\n }\n handlers = bindings[name];\n if (handlers) {\n for (i = 0, l = handlers.length; i < l; i++) {\n callback = handlers[i];\n if (callback.once) {\n off(name, callback.func);\n }\n if (args.isImmediatePropagationStopped()) {\n args.stopPropagation();\n return args;\n }\n if (callback.func.call(scope, args) === false) {\n args.preventDefault();\n return args;\n }\n }\n }\n return args;\n };\n var on = function (name, callback, prepend, extra) {\n var handlers, names, i;\n if (callback === false) {\n callback = returnFalse;\n }\n if (callback) {\n callback = { func: callback };\n if (extra) {\n $_4ujg4tljkmcwkbk.extend(callback, extra);\n }\n names = name.toLowerCase().split(' ');\n i = names.length;\n while (i--) {\n name = names[i];\n handlers = bindings[name];\n if (!handlers) {\n handlers = bindings[name] = [];\n toggleEvent(name, true);\n }\n if (prepend) {\n handlers.unshift(callback);\n } else {\n handlers.push(callback);\n }\n }\n }\n return self;\n };\n var off = function (name, callback) {\n var i, handlers, bindingName, names, hi;\n if (name) {\n names = name.toLowerCase().split(' ');\n i = names.length;\n while (i--) {\n name = names[i];\n handlers = bindings[name];\n if (!name) {\n for (bindingName in bindings) {\n toggleEvent(bindingName, false);\n delete bindings[bindingName];\n }\n return self;\n }\n if (handlers) {\n if (!callback) {\n handlers.length = 0;\n } else {\n hi = handlers.length;\n while (hi--) {\n if (handlers[hi].func === callback) {\n handlers = handlers.slice(0, hi).concat(handlers.slice(hi + 1));\n bindings[name] = handlers;\n }\n }\n }\n if (!handlers.length) {\n toggleEvent(name, false);\n delete bindings[name];\n }\n }\n }\n } else {\n for (name in bindings) {\n toggleEvent(name, false);\n }\n bindings = {};\n }\n return self;\n };\n var once = function (name, callback, prepend) {\n return on(name, callback, prepend, { once: true });\n };\n var has = function (name) {\n name = name.toLowerCase();\n return !(!bindings[name] || bindings[name].length === 0);\n };\n self.fire = fire;\n self.on = on;\n self.off = off;\n self.once = once;\n self.has = has;\n };\n Dispatcher.isNative = function (name) {\n return !!nativeEvents[name.toLowerCase()];\n };\n\n var getEventDispatcher = function (obj) {\n if (!obj._eventDispatcher) {\n obj._eventDispatcher = new Dispatcher({\n scope: obj,\n toggleEvent: function (name, state) {\n if (Dispatcher.isNative(name) && obj.toggleNativeEvent) {\n obj.toggleNativeEvent(name, state);\n }\n }\n });\n }\n return obj._eventDispatcher;\n };\n var $_ed2ug44qjkmcwl97 = {\n fire: function (name, args, bubble) {\n var self = this;\n if (self.removed && name !== 'remove') {\n return args;\n }\n args = getEventDispatcher(self).fire(name, args, bubble);\n if (bubble !== false && self.parent) {\n var parent = self.parent();\n while (parent && !args.isPropagationStopped()) {\n parent.fire(name, args, false);\n parent = parent.parent();\n }\n }\n return args;\n },\n on: function (name, callback, prepend) {\n return getEventDispatcher(this).on(name, callback, prepend);\n },\n off: function (name, callback) {\n return getEventDispatcher(this).off(name, callback);\n },\n once: function (name, callback) {\n return getEventDispatcher(this).once(name, callback);\n },\n hasEventListeners: function (name) {\n return getEventDispatcher(this).has(name);\n }\n };\n\n var firePreProcess = function (editor, args) {\n return editor.fire('PreProcess', args);\n };\n var firePostProcess = function (editor, args) {\n return editor.fire('PostProcess', args);\n };\n var fireRemove = function (editor) {\n return editor.fire('remove');\n };\n var fireSwitchMode = function (editor, mode) {\n return editor.fire('SwitchMode', { mode: mode });\n };\n var fireObjectResizeStart = function (editor, target, width, height) {\n editor.fire('ObjectResizeStart', {\n target: target,\n width: width,\n height: height\n });\n };\n var fireObjectResized = function (editor, target, width, height) {\n editor.fire('ObjectResized', {\n target: target,\n width: width,\n height: height\n });\n };\n var $_q3ric4tjkmcwl9q = {\n firePreProcess: firePreProcess,\n firePostProcess: firePostProcess,\n fireRemove: fireRemove,\n fireSwitchMode: fireSwitchMode,\n fireObjectResizeStart: fireObjectResizeStart,\n fireObjectResized: fireObjectResized\n };\n\n var setEditorCommandState = function (editor, cmd, state) {\n try {\n editor.getDoc().execCommand(cmd, false, state);\n } catch (ex) {\n }\n };\n var toggleClass = function (elm, cls, state) {\n if ($_ftm4v023jkmcwklz.has(elm, cls) && state === false) {\n $_ftm4v023jkmcwklz.remove(elm, cls);\n } else if (state) {\n $_ftm4v023jkmcwklz.add(elm, cls);\n }\n };\n var toggleReadOnly = function (editor, state) {\n toggleClass(Element$$1.fromDom(editor.getBody()), 'mce-content-readonly', state);\n if (state) {\n editor.selection.controlSelection.hideResizeRect();\n editor.readonly = true;\n editor.getBody().contentEditable = 'false';\n } else {\n editor.readonly = false;\n editor.getBody().contentEditable = 'true';\n setEditorCommandState(editor, 'StyleWithCSS', false);\n setEditorCommandState(editor, 'enableInlineTableEditing', false);\n setEditorCommandState(editor, 'enableObjectResizing', false);\n editor.focus();\n editor.nodeChanged();\n }\n };\n var setMode = function (editor, mode) {\n if (mode === getMode(editor)) {\n return;\n }\n if (editor.initialized) {\n toggleReadOnly(editor, mode === 'readonly');\n } else {\n editor.on('init', function () {\n toggleReadOnly(editor, mode === 'readonly');\n });\n }\n $_q3ric4tjkmcwl9q.fireSwitchMode(editor, mode);\n };\n var getMode = function (editor) {\n return editor.readonly ? 'readonly' : 'design';\n };\n var isReadOnly = function (editor) {\n return editor.readonly === true;\n };\n\n var DOM$1 = DOMUtils$1.DOM;\n var customEventRootDelegates;\n var getEventTarget = function (editor, eventName) {\n if (eventName === 'selectionchange') {\n return editor.getDoc();\n }\n if (!editor.inline && /^mouse|touch|click|contextmenu|drop|dragover|dragend/.test(eventName)) {\n return editor.getDoc().documentElement;\n }\n if (editor.settings.event_root) {\n if (!editor.eventRoot) {\n editor.eventRoot = DOM$1.select(editor.settings.event_root)[0];\n }\n return editor.eventRoot;\n }\n return editor.getBody();\n };\n var isListening = function (editor) {\n return !editor.hidden && !editor.readonly;\n };\n var fireEvent = function (editor, eventName, e) {\n if (isListening(editor)) {\n editor.fire(eventName, e);\n } else if (isReadOnly(editor)) {\n e.preventDefault();\n }\n };\n var bindEventDelegate = function (editor, eventName) {\n var eventRootElm, delegate;\n if (!editor.delegates) {\n editor.delegates = {};\n }\n if (editor.delegates[eventName] || editor.removed) {\n return;\n }\n eventRootElm = getEventTarget(editor, eventName);\n if (editor.settings.event_root) {\n if (!customEventRootDelegates) {\n customEventRootDelegates = {};\n editor.editorManager.on('removeEditor', function () {\n var name;\n if (!editor.editorManager.activeEditor) {\n if (customEventRootDelegates) {\n for (name in customEventRootDelegates) {\n editor.dom.unbind(getEventTarget(editor, name));\n }\n customEventRootDelegates = null;\n }\n }\n });\n }\n if (customEventRootDelegates[eventName]) {\n return;\n }\n delegate = function (e) {\n var target = e.target;\n var editors = editor.editorManager.get();\n var i = editors.length;\n while (i--) {\n var body = editors[i].getBody();\n if (body === target || DOM$1.isChildOf(target, body)) {\n fireEvent(editors[i], eventName, e);\n }\n }\n };\n customEventRootDelegates[eventName] = delegate;\n DOM$1.bind(eventRootElm, eventName, delegate);\n } else {\n delegate = function (e) {\n fireEvent(editor, eventName, e);\n };\n DOM$1.bind(eventRootElm, eventName, delegate);\n editor.delegates[eventName] = delegate;\n }\n };\n var EditorObservable = {\n bindPendingEventDelegates: function () {\n var self = this;\n $_4ujg4tljkmcwkbk.each(self._pendingNativeEvents, function (name) {\n bindEventDelegate(self, name);\n });\n },\n toggleNativeEvent: function (name, state) {\n var self = this;\n if (name === 'focus' || name === 'blur') {\n return;\n }\n if (state) {\n if (self.initialized) {\n bindEventDelegate(self, name);\n } else {\n if (!self._pendingNativeEvents) {\n self._pendingNativeEvents = [name];\n } else {\n self._pendingNativeEvents.push(name);\n }\n }\n } else if (self.initialized) {\n self.dom.unbind(getEventTarget(self, name), name, self.delegates[name]);\n delete self.delegates[name];\n }\n },\n unbindAllNativeEvents: function () {\n var self = this;\n var body = self.getBody();\n var dom = self.dom;\n var name;\n if (self.delegates) {\n for (name in self.delegates) {\n self.dom.unbind(getEventTarget(self, name), name, self.delegates[name]);\n }\n delete self.delegates;\n }\n if (!self.inline && body && dom) {\n body.onload = null;\n dom.unbind(self.getWin());\n dom.unbind(self.getDoc());\n }\n if (dom) {\n dom.unbind(body);\n dom.unbind(self.getContainer());\n }\n }\n };\n EditorObservable = $_4ujg4tljkmcwkbk.extend({}, $_ed2ug44qjkmcwl97, EditorObservable);\n var EditorObservable$1 = EditorObservable;\n\n var each$11 = $_4ujg4tljkmcwkbk.each;\n var explode$2 = $_4ujg4tljkmcwkbk.explode;\n var keyCodeLookup = {\n f9: 120,\n f10: 121,\n f11: 122\n };\n var modifierNames = $_4ujg4tljkmcwkbk.makeMap('alt,ctrl,shift,meta,access');\n function Shortcuts (editor) {\n var self = this;\n var shortcuts = {};\n var pendingPatterns = [];\n var parseShortcut = function (pattern) {\n var id, key;\n var shortcut = {};\n each$11(explode$2(pattern, '+'), function (value) {\n if (value in modifierNames) {\n shortcut[value] = true;\n } else {\n if (/^[0-9]{2,}$/.test(value)) {\n shortcut.keyCode = parseInt(value, 10);\n } else {\n shortcut.charCode = value.charCodeAt(0);\n shortcut.keyCode = keyCodeLookup[value] || value.toUpperCase().charCodeAt(0);\n }\n }\n });\n id = [shortcut.keyCode];\n for (key in modifierNames) {\n if (shortcut[key]) {\n id.push(key);\n } else {\n shortcut[key] = false;\n }\n }\n shortcut.id = id.join(',');\n if (shortcut.access) {\n shortcut.alt = true;\n if ($_cvvl9iajkmcwk25.mac) {\n shortcut.ctrl = true;\n } else {\n shortcut.shift = true;\n }\n }\n if (shortcut.meta) {\n if ($_cvvl9iajkmcwk25.mac) {\n shortcut.meta = true;\n } else {\n shortcut.ctrl = true;\n shortcut.meta = false;\n }\n }\n return shortcut;\n };\n var createShortcut = function (pattern, desc, cmdFunc, scope) {\n var shortcuts;\n shortcuts = $_4ujg4tljkmcwkbk.map(explode$2(pattern, '>'), parseShortcut);\n shortcuts[shortcuts.length - 1] = $_4ujg4tljkmcwkbk.extend(shortcuts[shortcuts.length - 1], {\n func: cmdFunc,\n scope: scope || editor\n });\n return $_4ujg4tljkmcwkbk.extend(shortcuts[0], {\n desc: editor.translate(desc),\n subpatterns: shortcuts.slice(1)\n });\n };\n var hasModifier = function (e) {\n return e.altKey || e.ctrlKey || e.metaKey;\n };\n var isFunctionKey = function (e) {\n return e.type === 'keydown' && e.keyCode >= 112 && e.keyCode <= 123;\n };\n var matchShortcut = function (e, shortcut) {\n if (!shortcut) {\n return false;\n }\n if (shortcut.ctrl !== e.ctrlKey || shortcut.meta !== e.metaKey) {\n return false;\n }\n if (shortcut.alt !== e.altKey || shortcut.shift !== e.shiftKey) {\n return false;\n }\n if (e.keyCode === shortcut.keyCode || e.charCode && e.charCode === shortcut.charCode) {\n e.preventDefault();\n return true;\n }\n return false;\n };\n var executeShortcutAction = function (shortcut) {\n return shortcut.func ? shortcut.func.call(shortcut.scope) : null;\n };\n editor.on('keyup keypress keydown', function (e) {\n if ((hasModifier(e) || isFunctionKey(e)) && !e.isDefaultPrevented()) {\n each$11(shortcuts, function (shortcut) {\n if (matchShortcut(e, shortcut)) {\n pendingPatterns = shortcut.subpatterns.slice(0);\n if (e.type === 'keydown') {\n executeShortcutAction(shortcut);\n }\n return true;\n }\n });\n if (matchShortcut(e, pendingPatterns[0])) {\n if (pendingPatterns.length === 1) {\n if (e.type === 'keydown') {\n executeShortcutAction(pendingPatterns[0]);\n }\n }\n pendingPatterns.shift();\n }\n }\n });\n self.add = function (pattern, desc, cmdFunc, scope) {\n var cmd;\n cmd = cmdFunc;\n if (typeof cmdFunc === 'string') {\n cmdFunc = function () {\n editor.execCommand(cmd, false, null);\n };\n } else if ($_4ujg4tljkmcwkbk.isArray(cmd)) {\n cmdFunc = function () {\n editor.execCommand(cmd[0], cmd[1], cmd[2]);\n };\n }\n each$11(explode$2($_4ujg4tljkmcwkbk.trim(pattern.toLowerCase())), function (pattern) {\n var shortcut = createShortcut(pattern, desc, cmdFunc, scope);\n shortcuts[shortcut.id] = shortcut;\n });\n return true;\n };\n self.remove = function (pattern) {\n var shortcut = createShortcut(pattern);\n if (shortcuts[shortcut.id]) {\n delete shortcuts[shortcut.id];\n return true;\n }\n return false;\n };\n }\n\n var any$1 = function (predicate) {\n return $_253nd92ajkmcwkmp.first(predicate).isSome();\n };\n var ancestor$3 = function (scope, predicate, isRoot) {\n return $_253nd92ajkmcwkmp.ancestor(scope, predicate, isRoot).isSome();\n };\n var closest$3 = function (scope, predicate, isRoot) {\n return $_253nd92ajkmcwkmp.closest(scope, predicate, isRoot).isSome();\n };\n var sibling$4 = function (scope, predicate) {\n return $_253nd92ajkmcwkmp.sibling(scope, predicate).isSome();\n };\n var child$4 = function (scope, predicate) {\n return $_253nd92ajkmcwkmp.child(scope, predicate).isSome();\n };\n var descendant$3 = function (scope, predicate) {\n return $_253nd92ajkmcwkmp.descendant(scope, predicate).isSome();\n };\n var $_szg1f4xjkmcwlad = {\n any: any$1,\n ancestor: ancestor$3,\n closest: closest$3,\n sibling: sibling$4,\n child: child$4,\n descendant: descendant$3\n };\n\n var focus$$1 = function (element) {\n element.dom().focus();\n };\n var blur$$1 = function (element) {\n element.dom().blur();\n };\n var hasFocus = function (element) {\n var doc = $_ca6pc118jkmcwkfs.owner(element).dom();\n return element.dom() === doc.activeElement;\n };\n var active = function (_doc) {\n var doc = _doc !== undefined ? _doc.dom() : document;\n return Option.from(doc.activeElement).map(Element$$1.fromDom);\n };\n var focusInside = function (element) {\n var doc = $_ca6pc118jkmcwkfs.owner(element);\n var inside = active(doc).filter(function (a) {\n return $_szg1f4xjkmcwlad.closest(a, curry($_e4hu6h1ejkmcwkgj.eq, element));\n });\n inside.fold(function () {\n focus$$1(element);\n }, noop);\n };\n var search = function (element) {\n return active($_ca6pc118jkmcwkfs.owner(element)).filter(function (e) {\n return element.dom().contains(e.dom());\n });\n };\n var $_468a0m4wjkmcwla6 = {\n hasFocus: hasFocus,\n focus: focus$$1,\n blur: blur$$1,\n active: active,\n search: search,\n focusInside: focusInside\n };\n\n var getContentEditableHost = function (editor, node) {\n return editor.dom.getParent(node, function (node) {\n return editor.dom.getContentEditable(node) === 'true';\n });\n };\n var getCollapsedNode = function (rng) {\n return rng.collapsed ? Option.from(getNode(rng.startContainer, rng.startOffset)).map(Element$$1.fromDom) : Option.none();\n };\n var getFocusInElement = function (root, rng) {\n return getCollapsedNode(rng).bind(function (node) {\n if (isTableSection(node)) {\n return Option.some(node);\n } else if ($_e4hu6h1ejkmcwkgj.contains(root, node) === false) {\n return Option.some(root);\n } else {\n return Option.none();\n }\n });\n };\n var normalizeSelection = function (editor, rng) {\n getFocusInElement(Element$$1.fromDom(editor.getBody()), rng).bind(function (elm) {\n return $_1m3f3j2yjkmcwkqg.firstPositionIn(elm.dom());\n }).fold(function () {\n editor.selection.normalize();\n return;\n }, function (caretPos) {\n return editor.selection.setRng(caretPos.toRange());\n });\n };\n var focusBody = function (body) {\n if (body.setActive) {\n try {\n body.setActive();\n } catch (ex) {\n body.focus();\n }\n } else {\n body.focus();\n }\n };\n var hasElementFocus = function (elm) {\n return $_468a0m4wjkmcwla6.hasFocus(elm) || $_468a0m4wjkmcwla6.search(elm).isSome();\n };\n var hasIframeFocus = function (editor) {\n return editor.iframeElement && $_468a0m4wjkmcwla6.hasFocus(Element$$1.fromDom(editor.iframeElement));\n };\n var hasInlineFocus = function (editor) {\n var rawBody = editor.getBody();\n return rawBody && hasElementFocus(Element$$1.fromDom(rawBody));\n };\n var hasFocus$1 = function (editor) {\n return editor.inline ? hasInlineFocus(editor) : hasIframeFocus(editor);\n };\n var focusEditor = function (editor) {\n var selection = editor.selection, contentEditable = editor.settings.content_editable;\n var body = editor.getBody();\n var rng = selection.getRng();\n editor.quirks.refreshContentEditable();\n var contentEditableHost = getContentEditableHost(editor, selection.getNode());\n if (editor.$.contains(body, contentEditableHost)) {\n focusBody(contentEditableHost);\n normalizeSelection(editor, rng);\n activateEditor(editor);\n return;\n }\n if (editor.bookmark !== undefined && hasFocus$1(editor) === false) {\n $_39c3zs4ljkmcwl86.getRng(editor).each(function (bookmarkRng) {\n editor.selection.setRng(bookmarkRng);\n rng = bookmarkRng;\n });\n }\n if (!contentEditable) {\n if (!$_cvvl9iajkmcwk25.opera) {\n focusBody(body);\n }\n editor.getWin().focus();\n }\n if ($_cvvl9iajkmcwk25.gecko || contentEditable) {\n focusBody(body);\n normalizeSelection(editor, rng);\n }\n activateEditor(editor);\n };\n var activateEditor = function (editor) {\n return editor.editorManager.setActive(editor);\n };\n var focus$1 = function (editor, skipFocus) {\n if (editor.removed) {\n return;\n }\n skipFocus ? activateEditor(editor) : focusEditor(editor);\n };\n var $_e3v8sn4vjkmcwl9y = {\n focus: focus$1,\n hasFocus: hasFocus$1\n };\n\n var getProp = function (propName, elm) {\n var rawElm = elm.dom();\n return rawElm[propName];\n };\n var getComputedSizeProp = function (propName, elm) {\n return parseInt($_4enzit13jkmcwke5.get(elm, propName), 10);\n };\n var getClientWidth = curry(getProp, 'clientWidth');\n var getClientHeight = curry(getProp, 'clientHeight');\n var getMarginTop = curry(getComputedSizeProp, 'margin-top');\n var getMarginLeft = curry(getComputedSizeProp, 'margin-left');\n var getBoundingClientRect$1 = function (elm) {\n return elm.dom().getBoundingClientRect();\n };\n var isInsideElementContentArea = function (bodyElm, clientX, clientY) {\n var clientWidth = getClientWidth(bodyElm);\n var clientHeight = getClientHeight(bodyElm);\n return clientX >= 0 && clientY >= 0 && clientX <= clientWidth && clientY <= clientHeight;\n };\n var transpose = function (inline, elm, clientX, clientY) {\n var clientRect = getBoundingClientRect$1(elm);\n var deltaX = inline ? clientRect.left + elm.dom().clientLeft + getMarginLeft(elm) : 0;\n var deltaY = inline ? clientRect.top + elm.dom().clientTop + getMarginTop(elm) : 0;\n var x = clientX - deltaX;\n var y = clientY - deltaY;\n return {\n x: x,\n y: y\n };\n };\n var isXYInContentArea = function (editor, clientX, clientY) {\n var bodyElm = Element$$1.fromDom(editor.getBody());\n var targetElm = editor.inline ? bodyElm : $_ca6pc118jkmcwkfs.documentElement(bodyElm);\n var transposedPoint = transpose(editor.inline, targetElm, clientX, clientY);\n return isInsideElementContentArea(targetElm, transposedPoint.x, transposedPoint.y);\n };\n var fromDomSafe = function (node) {\n return Option.from(node).map(Element$$1.fromDom);\n };\n var isEditorAttachedToDom = function (editor) {\n var rawContainer = editor.inline ? editor.getBody() : editor.getContentAreaContainer();\n return fromDomSafe(rawContainer).map(function (container) {\n return $_e4hu6h1ejkmcwkgj.contains($_ca6pc118jkmcwkfs.owner(container), container);\n }).getOr(false);\n };\n var $_8we2e850jkmcwlaw = {\n isXYInContentArea: isXYInContentArea,\n isEditorAttachedToDom: isEditorAttachedToDom\n };\n\n function NotificationManagerImpl () {\n var unimplemented = function () {\n throw new Error('Theme did not provide a NotificationManager implementation.');\n };\n return {\n open: unimplemented,\n close: unimplemented,\n reposition: unimplemented,\n getArgs: unimplemented\n };\n }\n\n function NotificationManager (editor) {\n var notifications = [];\n var getImplementation = function () {\n var theme = editor.theme;\n return theme && theme.getNotificationManagerImpl ? theme.getNotificationManagerImpl() : NotificationManagerImpl();\n };\n var getTopNotification = function () {\n return Option.from(notifications[0]);\n };\n var isEqual = function (a, b) {\n return a.type === b.type && a.text === b.text && !a.progressBar && !a.timeout && !b.progressBar && !b.timeout;\n };\n var reposition = function () {\n if (notifications.length > 0) {\n getImplementation().reposition(notifications);\n }\n };\n var addNotification = function (notification) {\n notifications.push(notification);\n };\n var closeNotification = function (notification) {\n findIndex(notifications, function (otherNotification) {\n return otherNotification === notification;\n }).each(function (index) {\n notifications.splice(index, 1);\n });\n };\n var open = function (args) {\n if (editor.removed || !$_8we2e850jkmcwlaw.isEditorAttachedToDom(editor)) {\n return;\n }\n return find(notifications, function (notification) {\n return isEqual(getImplementation().getArgs(notification), args);\n }).getOrThunk(function () {\n editor.editorManager.setActive(editor);\n var notification = getImplementation().open(args, function () {\n closeNotification(notification);\n reposition();\n });\n addNotification(notification);\n reposition();\n return notification;\n });\n };\n var close = function () {\n getTopNotification().each(function (notification) {\n getImplementation().close(notification);\n closeNotification(notification);\n reposition();\n });\n };\n var getNotifications = function () {\n return notifications;\n };\n var registerEvents = function (editor) {\n editor.on('SkinLoaded', function () {\n var serviceMessage = editor.settings.service_message;\n if (serviceMessage) {\n open({\n text: serviceMessage,\n type: 'warning',\n timeout: 0,\n icon: ''\n });\n }\n });\n editor.on('ResizeEditor ResizeWindow', function () {\n $_3l01gcijkmcwk99.requestAnimationFrame(reposition);\n });\n editor.on('remove', function () {\n each(notifications, function (notification) {\n getImplementation().close(notification);\n });\n });\n };\n registerEvents(editor);\n return {\n open: open,\n close: close,\n getNotifications: getNotifications\n };\n }\n\n function WindowManagerImpl () {\n var unimplemented = function () {\n throw new Error('Theme did not provide a WindowManager implementation.');\n };\n return {\n open: unimplemented,\n alert: unimplemented,\n confirm: unimplemented,\n close: unimplemented,\n getParams: unimplemented,\n setParams: unimplemented\n };\n }\n\n function WindowManager (editor) {\n var windows = [];\n var getImplementation = function () {\n var theme = editor.theme;\n return theme && theme.getWindowManagerImpl ? theme.getWindowManagerImpl() : WindowManagerImpl();\n };\n var funcBind = function (scope, f) {\n return function () {\n return f ? f.apply(scope, arguments) : undefined;\n };\n };\n var fireOpenEvent = function (win) {\n editor.fire('OpenWindow', { win: win });\n };\n var fireCloseEvent = function (win) {\n editor.fire('CloseWindow', { win: win });\n };\n var addWindow = function (win) {\n windows.push(win);\n fireOpenEvent(win);\n };\n var closeWindow = function (win) {\n findIndex(windows, function (otherWindow) {\n return otherWindow === win;\n }).each(function (index) {\n windows.splice(index, 1);\n fireCloseEvent(win);\n if (windows.length === 0) {\n editor.focus();\n }\n });\n };\n var getTopWindow = function () {\n return Option.from(windows[windows.length - 1]);\n };\n var open = function (args, params) {\n editor.editorManager.setActive(editor);\n $_39c3zs4ljkmcwl86.store(editor);\n var win = getImplementation().open(args, params, closeWindow);\n addWindow(win);\n return win;\n };\n var alert = function (message, callback, scope) {\n var win = getImplementation().alert(message, funcBind(scope ? scope : this, callback), closeWindow);\n addWindow(win);\n };\n var confirm = function (message, callback, scope) {\n var win = getImplementation().confirm(message, funcBind(scope ? scope : this, callback), closeWindow);\n addWindow(win);\n };\n var close = function () {\n getTopWindow().each(function (win) {\n getImplementation().close(win);\n closeWindow(win);\n });\n };\n var getParams = function () {\n return getTopWindow().map(getImplementation().getParams).getOr(null);\n };\n var setParams = function (params) {\n getTopWindow().each(function (win) {\n getImplementation().setParams(win, params);\n });\n };\n var getWindows = function () {\n return windows;\n };\n editor.on('remove', function () {\n each(windows.slice(0), function (win) {\n getImplementation().close(win);\n });\n });\n return {\n windows: windows,\n open: open,\n alert: alert,\n confirm: confirm,\n close: close,\n getParams: getParams,\n setParams: setParams,\n getWindows: getWindows\n };\n }\n\n var PluginManager = AddOnManager.PluginManager;\n var resolvePluginName = function (targetUrl, suffix) {\n for (var name$$1 in PluginManager.urls) {\n var matchUrl = PluginManager.urls[name$$1] + '/plugin' + suffix + '.js';\n if (matchUrl === targetUrl) {\n return name$$1;\n }\n }\n return null;\n };\n var pluginUrlToMessage = function (editor, url) {\n var plugin = resolvePluginName(url, editor.suffix);\n return plugin ? 'Failed to load plugin: ' + plugin + ' from url ' + url : 'Failed to load plugin url: ' + url;\n };\n var displayNotification = function (editor, message) {\n editor.notificationManager.open({\n type: 'error',\n text: message\n });\n };\n var displayError = function (editor, message) {\n if (editor._skinLoaded) {\n displayNotification(editor, message);\n } else {\n editor.on('SkinLoaded', function () {\n displayNotification(editor, message);\n });\n }\n };\n var uploadError = function (editor, message) {\n displayError(editor, 'Failed to upload image: ' + message);\n };\n var pluginLoadError = function (editor, url) {\n displayError(editor, pluginUrlToMessage(editor, url));\n };\n var initError = function (message) {\n var x = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n x[_i - 1] = arguments[_i];\n }\n var console$$1 = window.console;\n if (console$$1) {\n if (console$$1.error) {\n console$$1.error.apply(console$$1, arguments);\n } else {\n console$$1.log.apply(console$$1, arguments);\n }\n }\n };\n var $_b9je0i54jkmcwlbe = {\n pluginLoadError: pluginLoadError,\n uploadError: uploadError,\n displayError: displayError,\n initError: initError\n };\n\n var PluginManager$1 = AddOnManager.PluginManager;\n\n var ThemeManager = AddOnManager.ThemeManager;\n\n function XMLHttpRequest () {\n var f = $_89i3w1cjkmcwk2c.getOrDie('XMLHttpRequest');\n return new f();\n }\n\n function Uploader (uploadStatus, settings) {\n var pendingPromises = {};\n var pathJoin = function (path1, path2) {\n if (path1) {\n return path1.replace(/\\/$/, '') + '/' + path2.replace(/^\\//, '');\n }\n return path2;\n };\n var defaultHandler = function (blobInfo, success, failure, progress) {\n var xhr, formData;\n xhr = new XMLHttpRequest();\n xhr.open('POST', settings.url);\n xhr.withCredentials = settings.credentials;\n xhr.upload.onprogress = function (e) {\n progress(e.loaded / e.total * 100);\n };\n xhr.onerror = function () {\n failure('Image upload failed due to a XHR Transport error. Code: ' + xhr.status);\n };\n xhr.onload = function () {\n var json;\n if (xhr.status < 200 || xhr.status >= 300) {\n failure('HTTP Error: ' + xhr.status);\n return;\n }\n json = JSON.parse(xhr.responseText);\n if (!json || typeof json.location !== 'string') {\n failure('Invalid JSON: ' + xhr.responseText);\n return;\n }\n success(pathJoin(settings.basePath, json.location));\n };\n formData = new FormData();\n formData.append('file', blobInfo.blob(), blobInfo.filename());\n xhr.send(formData);\n };\n var noUpload = function () {\n return new promiseObj(function (resolve) {\n resolve([]);\n });\n };\n var handlerSuccess = function (blobInfo, url) {\n return {\n url: url,\n blobInfo: blobInfo,\n status: true\n };\n };\n var handlerFailure = function (blobInfo, error) {\n return {\n url: '',\n blobInfo: blobInfo,\n status: false,\n error: error\n };\n };\n var resolvePending = function (blobUri, result) {\n $_4ujg4tljkmcwkbk.each(pendingPromises[blobUri], function (resolve) {\n resolve(result);\n });\n delete pendingPromises[blobUri];\n };\n var uploadBlobInfo = function (blobInfo, handler, openNotification) {\n uploadStatus.markPending(blobInfo.blobUri());\n return new promiseObj(function (resolve) {\n var notification, progress;\n var noop = function () {\n };\n try {\n var closeNotification_1 = function () {\n if (notification) {\n notification.close();\n progress = noop;\n }\n };\n var success = function (url) {\n closeNotification_1();\n uploadStatus.markUploaded(blobInfo.blobUri(), url);\n resolvePending(blobInfo.blobUri(), handlerSuccess(blobInfo, url));\n resolve(handlerSuccess(blobInfo, url));\n };\n var failure = function (error) {\n closeNotification_1();\n uploadStatus.removeFailed(blobInfo.blobUri());\n resolvePending(blobInfo.blobUri(), handlerFailure(blobInfo, error));\n resolve(handlerFailure(blobInfo, error));\n };\n progress = function (percent) {\n if (percent < 0 || percent > 100) {\n return;\n }\n if (!notification) {\n notification = openNotification();\n }\n notification.progressBar.value(percent);\n };\n handler(blobInfo, success, failure, progress);\n } catch (ex) {\n resolve(handlerFailure(blobInfo, ex.message));\n }\n });\n };\n var isDefaultHandler = function (handler) {\n return handler === defaultHandler;\n };\n var pendingUploadBlobInfo = function (blobInfo) {\n var blobUri = blobInfo.blobUri();\n return new promiseObj(function (resolve) {\n pendingPromises[blobUri] = pendingPromises[blobUri] || [];\n pendingPromises[blobUri].push(resolve);\n });\n };\n var uploadBlobs = function (blobInfos, openNotification) {\n blobInfos = $_4ujg4tljkmcwkbk.grep(blobInfos, function (blobInfo) {\n return !uploadStatus.isUploaded(blobInfo.blobUri());\n });\n return promiseObj.all($_4ujg4tljkmcwkbk.map(blobInfos, function (blobInfo) {\n return uploadStatus.isPending(blobInfo.blobUri()) ? pendingUploadBlobInfo(blobInfo) : uploadBlobInfo(blobInfo, settings.handler, openNotification);\n }));\n };\n var upload = function (blobInfos, openNotification) {\n return !settings.url && isDefaultHandler(settings.handler) ? noUpload() : uploadBlobs(blobInfos, openNotification);\n };\n settings = $_4ujg4tljkmcwkbk.extend({\n credentials: false,\n handler: defaultHandler\n }, settings);\n return { upload: upload };\n }\n\n function Blob (parts, properties) {\n var f = $_89i3w1cjkmcwk2c.getOrDie('Blob');\n return new f(parts, properties);\n }\n\n function FileReader () {\n var f = $_89i3w1cjkmcwk2c.getOrDie('FileReader');\n return new f();\n }\n\n function Uint8Array (arr) {\n var f = $_89i3w1cjkmcwk2c.getOrDie('Uint8Array');\n return new f(arr);\n }\n\n var requestAnimationFrame$1 = function (callback) {\n var f = $_89i3w1cjkmcwk2c.getOrDie('requestAnimationFrame');\n f(callback);\n };\n var atob = function (base64) {\n var f = $_89i3w1cjkmcwk2c.getOrDie('atob');\n return f(base64);\n };\n var $_b0eesx5hjkmcwld6 = {\n atob: atob,\n requestAnimationFrame: requestAnimationFrame$1\n };\n\n var blobUriToBlob = function (url) {\n return new promiseObj(function (resolve, reject) {\n var rejectWithError = function () {\n reject('Cannot convert ' + url + ' to Blob. Resource might not exist or is inaccessible.');\n };\n try {\n var xhr = new XMLHttpRequest();\n xhr.open('GET', url, true);\n xhr.responseType = 'blob';\n xhr.onload = function () {\n if (this.status === 200) {\n resolve(this.response);\n } else {\n rejectWithError();\n }\n };\n xhr.onerror = rejectWithError;\n xhr.send();\n } catch (ex) {\n rejectWithError();\n }\n });\n };\n var parseDataUri = function (uri) {\n var type, matches;\n uri = decodeURIComponent(uri).split(',');\n matches = /data:([^;]+)/.exec(uri[0]);\n if (matches) {\n type = matches[1];\n }\n return {\n type: type,\n data: uri[1]\n };\n };\n var dataUriToBlob = function (uri) {\n return new promiseObj(function (resolve) {\n var str, arr, i;\n uri = parseDataUri(uri);\n try {\n str = $_b0eesx5hjkmcwld6.atob(uri.data);\n } catch (e) {\n resolve(new Blob([]));\n return;\n }\n arr = new Uint8Array(str.length);\n for (i = 0; i < arr.length; i++) {\n arr[i] = str.charCodeAt(i);\n }\n resolve(new Blob([arr], { type: uri.type }));\n });\n };\n var uriToBlob = function (url) {\n if (url.indexOf('blob:') === 0) {\n return blobUriToBlob(url);\n }\n if (url.indexOf('data:') === 0) {\n return dataUriToBlob(url);\n }\n return null;\n };\n var blobToDataUri = function (blob) {\n return new promiseObj(function (resolve) {\n var reader = new FileReader();\n reader.onloadend = function () {\n resolve(reader.result);\n };\n reader.readAsDataURL(blob);\n });\n };\n var $_7eufcj5djkmcwlcv = {\n uriToBlob: uriToBlob,\n blobToDataUri: blobToDataUri,\n parseDataUri: parseDataUri\n };\n\n var count = 0;\n var uniqueId = function (prefix) {\n return (prefix || 'blobid') + count++;\n };\n var imageToBlobInfo = function (blobCache, img, resolve, reject) {\n var base64, blobInfo;\n if (img.src.indexOf('blob:') === 0) {\n blobInfo = blobCache.getByUri(img.src);\n if (blobInfo) {\n resolve({\n image: img,\n blobInfo: blobInfo\n });\n } else {\n $_7eufcj5djkmcwlcv.uriToBlob(img.src).then(function (blob) {\n $_7eufcj5djkmcwlcv.blobToDataUri(blob).then(function (dataUri) {\n base64 = $_7eufcj5djkmcwlcv.parseDataUri(dataUri).data;\n blobInfo = blobCache.create(uniqueId(), blob, base64);\n blobCache.add(blobInfo);\n resolve({\n image: img,\n blobInfo: blobInfo\n });\n });\n }, function (err) {\n reject(err);\n });\n }\n return;\n }\n base64 = $_7eufcj5djkmcwlcv.parseDataUri(img.src).data;\n blobInfo = blobCache.findFirst(function (cachedBlobInfo) {\n return cachedBlobInfo.base64() === base64;\n });\n if (blobInfo) {\n resolve({\n image: img,\n blobInfo: blobInfo\n });\n } else {\n $_7eufcj5djkmcwlcv.uriToBlob(img.src).then(function (blob) {\n blobInfo = blobCache.create(uniqueId(), blob, base64);\n blobCache.add(blobInfo);\n resolve({\n image: img,\n blobInfo: blobInfo\n });\n }, function (err) {\n reject(err);\n });\n }\n };\n var getAllImages = function (elm) {\n return elm ? elm.getElementsByTagName('img') : [];\n };\n function ImageScanner (uploadStatus, blobCache) {\n var cachedPromises = {};\n var findAll = function (elm, predicate) {\n var images;\n if (!predicate) {\n predicate = $_fl2rax2ljkmcwkot.constant(true);\n }\n images = $_9g1fibmjkmcwkbu.filter(getAllImages(elm), function (img) {\n var src = img.src;\n if (!$_cvvl9iajkmcwk25.fileApi) {\n return false;\n }\n if (img.hasAttribute('data-mce-bogus')) {\n return false;\n }\n if (img.hasAttribute('data-mce-placeholder')) {\n return false;\n }\n if (!src || src === $_cvvl9iajkmcwk25.transparentSrc) {\n return false;\n }\n if (src.indexOf('blob:') === 0) {\n return !uploadStatus.isUploaded(src);\n }\n if (src.indexOf('data:') === 0) {\n return predicate(img);\n }\n return false;\n });\n var promises = $_9g1fibmjkmcwkbu.map(images, function (img) {\n if (cachedPromises[img.src]) {\n return new promiseObj(function (resolve) {\n cachedPromises[img.src].then(function (imageInfo) {\n if (typeof imageInfo === 'string') {\n return imageInfo;\n }\n resolve({\n image: img,\n blobInfo: imageInfo.blobInfo\n });\n });\n });\n }\n var newPromise = new promiseObj(function (resolve, reject) {\n imageToBlobInfo(blobCache, img, resolve, reject);\n }).then(function (result) {\n delete cachedPromises[result.image.src];\n return result;\n }).catch(function (error) {\n delete cachedPromises[img.src];\n return error;\n });\n cachedPromises[img.src] = newPromise;\n return newPromise;\n });\n return promiseObj.all(promises);\n };\n return { findAll: findAll };\n }\n\n var count$1 = 0;\n var seed = function () {\n var rnd = function () {\n return Math.round(Math.random() * 4294967295).toString(36);\n };\n var now = new Date().getTime();\n return 's' + now.toString(36) + rnd() + rnd() + rnd();\n };\n var uuid = function (prefix) {\n return prefix + count$1++ + seed();\n };\n var $_8flfjw5jjkmcwldd = { uuid: uuid };\n\n function BlobCache () {\n var cache = [];\n var constant = $_fl2rax2ljkmcwkot.constant;\n var mimeToExt = function (mime) {\n var mimes = {\n 'image/jpeg': 'jpg',\n 'image/jpg': 'jpg',\n 'image/gif': 'gif',\n 'image/png': 'png'\n };\n return mimes[mime.toLowerCase()] || 'dat';\n };\n var create = function (o, blob, base64, filename) {\n return typeof o === 'object' ? toBlobInfo(o) : toBlobInfo({\n id: o,\n name: filename,\n blob: blob,\n base64: base64\n });\n };\n var toBlobInfo = function (o) {\n var id, name;\n if (!o.blob || !o.base64) {\n throw new Error('blob and base64 representations of the image are required for BlobInfo to be created');\n }\n id = o.id || $_8flfjw5jjkmcwldd.uuid('blobid');\n name = o.name || id;\n return {\n id: constant(id),\n name: constant(name),\n filename: constant(name + '.' + mimeToExt(o.blob.type)),\n blob: constant(o.blob),\n base64: constant(o.base64),\n blobUri: constant(o.blobUri || $_ci16mbjkmcwk2b.createObjectURL(o.blob)),\n uri: constant(o.uri)\n };\n };\n var add = function (blobInfo) {\n if (!get(blobInfo.id())) {\n cache.push(blobInfo);\n }\n };\n var get = function (id) {\n return findFirst(function (cachedBlobInfo) {\n return cachedBlobInfo.id() === id;\n });\n };\n var findFirst = function (predicate) {\n return $_9g1fibmjkmcwkbu.filter(cache, predicate)[0];\n };\n var getByUri = function (blobUri) {\n return findFirst(function (blobInfo) {\n return blobInfo.blobUri() === blobUri;\n });\n };\n var removeByUri = function (blobUri) {\n cache = $_9g1fibmjkmcwkbu.filter(cache, function (blobInfo) {\n if (blobInfo.blobUri() === blobUri) {\n $_ci16mbjkmcwk2b.revokeObjectURL(blobInfo.blobUri());\n return false;\n }\n return true;\n });\n };\n var destroy = function () {\n $_9g1fibmjkmcwkbu.each(cache, function (cachedBlobInfo) {\n $_ci16mbjkmcwk2b.revokeObjectURL(cachedBlobInfo.blobUri());\n });\n cache = [];\n };\n return {\n create: create,\n add: add,\n get: get,\n getByUri: getByUri,\n findFirst: findFirst,\n removeByUri: removeByUri,\n destroy: destroy\n };\n }\n\n function UploadStatus () {\n var PENDING = 1, UPLOADED = 2;\n var blobUriStatuses = {};\n var createStatus = function (status, resultUri) {\n return {\n status: status,\n resultUri: resultUri\n };\n };\n var hasBlobUri = function (blobUri) {\n return blobUri in blobUriStatuses;\n };\n var getResultUri = function (blobUri) {\n var result = blobUriStatuses[blobUri];\n return result ? result.resultUri : null;\n };\n var isPending = function (blobUri) {\n return hasBlobUri(blobUri) ? blobUriStatuses[blobUri].status === PENDING : false;\n };\n var isUploaded = function (blobUri) {\n return hasBlobUri(blobUri) ? blobUriStatuses[blobUri].status === UPLOADED : false;\n };\n var markPending = function (blobUri) {\n blobUriStatuses[blobUri] = createStatus(PENDING, null);\n };\n var markUploaded = function (blobUri, resultUri) {\n blobUriStatuses[blobUri] = createStatus(UPLOADED, resultUri);\n };\n var removeFailed = function (blobUri) {\n delete blobUriStatuses[blobUri];\n };\n var destroy = function () {\n blobUriStatuses = {};\n };\n return {\n hasBlobUri: hasBlobUri,\n getResultUri: getResultUri,\n isPending: isPending,\n isUploaded: isUploaded,\n markPending: markPending,\n markUploaded: markUploaded,\n removeFailed: removeFailed,\n destroy: destroy\n };\n }\n\n function EditorUpload (editor) {\n var blobCache = BlobCache();\n var uploader, imageScanner;\n var settings = editor.settings;\n var uploadStatus = UploadStatus();\n var aliveGuard = function (callback) {\n return function (result) {\n if (editor.selection) {\n return callback(result);\n }\n return [];\n };\n };\n var cacheInvalidator = function () {\n return '?' + new Date().getTime();\n };\n var replaceString = function (content, search, replace) {\n var index = 0;\n do {\n index = content.indexOf(search, index);\n if (index !== -1) {\n content = content.substring(0, index) + replace + content.substr(index + search.length);\n index += replace.length - search.length + 1;\n }\n } while (index !== -1);\n return content;\n };\n var replaceImageUrl = function (content, targetUrl, replacementUrl) {\n content = replaceString(content, 'src=\"' + targetUrl + '\"', 'src=\"' + replacementUrl + '\"');\n content = replaceString(content, 'data-mce-src=\"' + targetUrl + '\"', 'data-mce-src=\"' + replacementUrl + '\"');\n return content;\n };\n var replaceUrlInUndoStack = function (targetUrl, replacementUrl) {\n $_9g1fibmjkmcwkbu.each(editor.undoManager.data, function (level) {\n if (level.type === 'fragmented') {\n level.fragments = $_9g1fibmjkmcwkbu.map(level.fragments, function (fragment) {\n return replaceImageUrl(fragment, targetUrl, replacementUrl);\n });\n } else {\n level.content = replaceImageUrl(level.content, targetUrl, replacementUrl);\n }\n });\n };\n var openNotification = function () {\n return editor.notificationManager.open({\n text: editor.translate('Image uploading...'),\n type: 'info',\n timeout: -1,\n progressBar: true\n });\n };\n var replaceImageUri = function (image, resultUri) {\n blobCache.removeByUri(image.src);\n replaceUrlInUndoStack(image.src, resultUri);\n editor.$(image).attr({\n 'src': settings.images_reuse_filename ? resultUri + cacheInvalidator() : resultUri,\n 'data-mce-src': editor.convertURL(resultUri, 'src')\n });\n };\n var uploadImages = function (callback) {\n if (!uploader) {\n uploader = Uploader(uploadStatus, {\n url: settings.images_upload_url,\n basePath: settings.images_upload_base_path,\n credentials: settings.images_upload_credentials,\n handler: settings.images_upload_handler\n });\n }\n return scanForImages().then(aliveGuard(function (imageInfos) {\n var blobInfos;\n blobInfos = $_9g1fibmjkmcwkbu.map(imageInfos, function (imageInfo) {\n return imageInfo.blobInfo;\n });\n return uploader.upload(blobInfos, openNotification).then(aliveGuard(function (result) {\n var filteredResult = $_9g1fibmjkmcwkbu.map(result, function (uploadInfo, index) {\n var image = imageInfos[index].image;\n if (uploadInfo.status && editor.settings.images_replace_blob_uris !== false) {\n replaceImageUri(image, uploadInfo.url);\n } else if (uploadInfo.error) {\n $_b9je0i54jkmcwlbe.uploadError(editor, uploadInfo.error);\n }\n return {\n element: image,\n status: uploadInfo.status\n };\n });\n if (callback) {\n callback(filteredResult);\n }\n return filteredResult;\n }));\n }));\n };\n var uploadImagesAuto = function (callback) {\n if (settings.automatic_uploads !== false) {\n return uploadImages(callback);\n }\n };\n var isValidDataUriImage = function (imgElm) {\n return settings.images_dataimg_filter ? settings.images_dataimg_filter(imgElm) : true;\n };\n var scanForImages = function () {\n if (!imageScanner) {\n imageScanner = ImageScanner(uploadStatus, blobCache);\n }\n return imageScanner.findAll(editor.getBody(), isValidDataUriImage).then(aliveGuard(function (result) {\n result = $_9g1fibmjkmcwkbu.filter(result, function (resultItem) {\n if (typeof resultItem === 'string') {\n $_b9je0i54jkmcwlbe.displayError(editor, resultItem);\n return false;\n }\n return true;\n });\n $_9g1fibmjkmcwkbu.each(result, function (resultItem) {\n replaceUrlInUndoStack(resultItem.image.src, resultItem.blobInfo.blobUri());\n resultItem.image.src = resultItem.blobInfo.blobUri();\n resultItem.image.removeAttribute('data-mce-src');\n });\n return result;\n }));\n };\n var destroy = function () {\n blobCache.destroy();\n uploadStatus.destroy();\n imageScanner = uploader = null;\n };\n var replaceBlobUris = function (content) {\n return content.replace(/src=\"(blob:[^\"]+)\"/g, function (match, blobUri) {\n var resultUri = uploadStatus.getResultUri(blobUri);\n if (resultUri) {\n return 'src=\"' + resultUri + '\"';\n }\n var blobInfo = blobCache.getByUri(blobUri);\n if (!blobInfo) {\n blobInfo = $_9g1fibmjkmcwkbu.reduce(editor.editorManager.get(), function (result, editor) {\n return result || editor.editorUpload && editor.editorUpload.blobCache.getByUri(blobUri);\n }, null);\n }\n if (blobInfo) {\n return 'src=\"data:' + blobInfo.blob().type + ';base64,' + blobInfo.base64() + '\"';\n }\n return match;\n });\n };\n editor.on('setContent', function () {\n if (editor.settings.automatic_uploads !== false) {\n uploadImagesAuto();\n } else {\n scanForImages();\n }\n });\n editor.on('RawSaveContent', function (e) {\n e.content = replaceBlobUris(e.content);\n });\n editor.on('getContent', function (e) {\n if (e.source_view || e.format === 'raw') {\n return;\n }\n e.content = replaceBlobUris(e.content);\n });\n editor.on('PostRender', function () {\n editor.parser.addNodeFilter('img', function (images) {\n $_9g1fibmjkmcwkbu.each(images, function (img) {\n var src = img.attr('src');\n if (blobCache.getByUri(src)) {\n return;\n }\n var resultUri = uploadStatus.getResultUri(src);\n if (resultUri) {\n img.attr('src', resultUri);\n }\n });\n });\n });\n return {\n blobCache: blobCache,\n uploadImages: uploadImages,\n uploadImagesAuto: uploadImagesAuto,\n scanForImages: scanForImages,\n destroy: destroy\n };\n }\n\n var isBlockElement = function (blockElements, node) {\n return blockElements.hasOwnProperty(node.nodeName);\n };\n var isValidTarget = function (blockElements, node) {\n if ($_bjermr1rjkmcwkij.isText(node)) {\n return true;\n } else if ($_bjermr1rjkmcwkij.isElement(node)) {\n return !isBlockElement(blockElements, node) && !$_e4btcc2vjkmcwkq3.isBookmarkNode(node);\n } else {\n return false;\n }\n };\n var hasBlockParent = function (blockElements, root, node) {\n return exists($_cir6zl3zjkmcwl2j.parents(Element$$1.fromDom(node), Element$$1.fromDom(root)), function (elm) {\n return isBlockElement(blockElements, elm.dom());\n });\n };\n var shouldRemoveTextNode = function (blockElements, node) {\n if ($_bjermr1rjkmcwkij.isText(node)) {\n if (node.nodeValue.length === 0) {\n return true;\n } else if (/^\\s+$/.test(node.nodeValue) && (!node.nextSibling || isBlockElement(blockElements, node.nextSibling))) {\n return true;\n }\n }\n return false;\n };\n var addRootBlocks = function (editor) {\n var settings = editor.settings, dom = editor.dom, selection = editor.selection;\n var schema = editor.schema, blockElements = schema.getBlockElements();\n var node = selection.getStart();\n var rootNode = editor.getBody();\n var rng;\n var startContainer, startOffset, endContainer, endOffset, rootBlockNode;\n var tempNode, wrapped, restoreSelection;\n var rootNodeName, forcedRootBlock;\n forcedRootBlock = settings.forced_root_block;\n if (!node || !$_bjermr1rjkmcwkij.isElement(node) || !forcedRootBlock) {\n return;\n }\n rootNodeName = rootNode.nodeName.toLowerCase();\n if (!schema.isValidChild(rootNodeName, forcedRootBlock.toLowerCase()) || hasBlockParent(blockElements, rootNode, node)) {\n return;\n }\n rng = selection.getRng();\n startContainer = rng.startContainer;\n startOffset = rng.startOffset;\n endContainer = rng.endContainer;\n endOffset = rng.endOffset;\n restoreSelection = $_e3v8sn4vjkmcwl9y.hasFocus(editor);\n node = rootNode.firstChild;\n while (node) {\n if (isValidTarget(blockElements, node)) {\n if (shouldRemoveTextNode(blockElements, node)) {\n tempNode = node;\n node = node.nextSibling;\n dom.remove(tempNode);\n continue;\n }\n if (!rootBlockNode) {\n rootBlockNode = dom.create(forcedRootBlock, editor.settings.forced_root_block_attrs);\n node.parentNode.insertBefore(rootBlockNode, node);\n wrapped = true;\n }\n tempNode = node;\n node = node.nextSibling;\n rootBlockNode.appendChild(tempNode);\n } else {\n rootBlockNode = null;\n node = node.nextSibling;\n }\n }\n if (wrapped && restoreSelection) {\n rng.setStart(startContainer, startOffset);\n rng.setEnd(endContainer, endOffset);\n selection.setRng(rng);\n editor.nodeChanged();\n }\n };\n var setup$2 = function (editor) {\n if (editor.settings.forced_root_block) {\n editor.on('NodeChange', curry(addRootBlocks, editor));\n }\n };\n var $_5utnj35ljkmcwldh = { setup: setup$2 };\n\n var getStartNode = function (rng) {\n var sc = rng.startContainer, so = rng.startOffset;\n if ($_bjermr1rjkmcwkij.isText(sc)) {\n return so === 0 ? Option.some(Element$$1.fromDom(sc)) : Option.none();\n } else {\n return Option.from(sc.childNodes[so]).map(Element$$1.fromDom);\n }\n };\n var getEndNode = function (rng) {\n var ec = rng.endContainer, eo = rng.endOffset;\n if ($_bjermr1rjkmcwkij.isText(ec)) {\n return eo === ec.data.length ? Option.some(Element$$1.fromDom(ec)) : Option.none();\n } else {\n return Option.from(ec.childNodes[eo - 1]).map(Element$$1.fromDom);\n }\n };\n var getFirstChildren = function (node) {\n return $_ca6pc118jkmcwkfs.firstChild(node).fold(constant([node]), function (child) {\n return [node].concat(getFirstChildren(child));\n });\n };\n var getLastChildren$1 = function (node) {\n return $_ca6pc118jkmcwkfs.lastChild(node).fold(constant([node]), function (child) {\n if ($_2xwdjv11jkmcwke0.name(child) === 'br') {\n return $_ca6pc118jkmcwkfs.prevSibling(child).map(function (sibling) {\n return [node].concat(getLastChildren$1(sibling));\n }).getOr([]);\n } else {\n return [node].concat(getLastChildren$1(child));\n }\n });\n };\n var hasAllContentsSelected = function (elm, rng) {\n return liftN([\n getStartNode(rng),\n getEndNode(rng)\n ], function (startNode, endNode) {\n var start = find(getFirstChildren(elm), curry($_e4hu6h1ejkmcwkgj.eq, startNode));\n var end = find(getLastChildren$1(elm), curry($_e4hu6h1ejkmcwkgj.eq, endNode));\n return start.isSome() && end.isSome();\n }).getOr(false);\n };\n var moveEndPoint$1 = function (dom, rng, node, start) {\n var root = node, walker = new TreeWalker(node, root);\n var nonEmptyElementsMap = dom.schema.getNonEmptyElements();\n do {\n if (node.nodeType === 3 && $_4ujg4tljkmcwkbk.trim(node.nodeValue).length !== 0) {\n if (start) {\n rng.setStart(node, 0);\n } else {\n rng.setEnd(node, node.nodeValue.length);\n }\n return;\n }\n if (nonEmptyElementsMap[node.nodeName] && !/^(TD|TH)$/.test(node.nodeName)) {\n if (start) {\n rng.setStartBefore(node);\n } else {\n if (node.nodeName === 'BR') {\n rng.setEndBefore(node);\n } else {\n rng.setEndAfter(node);\n }\n }\n return;\n }\n if ($_cvvl9iajkmcwk25.ie && $_cvvl9iajkmcwk25.ie < 11 && dom.isBlock(node) && dom.isEmpty(node)) {\n if (start) {\n rng.setStart(node, 0);\n } else {\n rng.setEnd(node, 0);\n }\n return;\n }\n } while (node = start ? walker.next() : walker.prev());\n if (root.nodeName === 'BODY') {\n if (start) {\n rng.setStart(root, 0);\n } else {\n rng.setEnd(root, root.childNodes.length);\n }\n }\n };\n var hasAnyRanges = function (editor) {\n var sel = editor.selection.getSel();\n return sel && sel.rangeCount > 0;\n };\n\n function NodeChange (editor) {\n var lastRng, lastPath = [];\n var isSameElementPath = function (startElm) {\n var i, currentPath;\n currentPath = editor.$(startElm).parentsUntil(editor.getBody()).add(startElm);\n if (currentPath.length === lastPath.length) {\n for (i = currentPath.length; i >= 0; i--) {\n if (currentPath[i] !== lastPath[i]) {\n break;\n }\n }\n if (i === -1) {\n lastPath = currentPath;\n return true;\n }\n }\n lastPath = currentPath;\n return false;\n };\n if (!('onselectionchange' in editor.getDoc())) {\n editor.on('NodeChange Click MouseUp KeyUp Focus', function (e) {\n var nativeRng, fakeRng;\n nativeRng = editor.selection.getRng();\n fakeRng = {\n startContainer: nativeRng.startContainer,\n startOffset: nativeRng.startOffset,\n endContainer: nativeRng.endContainer,\n endOffset: nativeRng.endOffset\n };\n if (e.type === 'nodechange' || !$_axtxv74kjkmcwl84.isEq(fakeRng, lastRng)) {\n editor.fire('SelectionChange');\n }\n lastRng = fakeRng;\n });\n }\n editor.on('contextmenu', function () {\n editor.fire('SelectionChange');\n });\n editor.on('SelectionChange', function () {\n var startElm = editor.selection.getStart(true);\n if (!startElm || !$_cvvl9iajkmcwk25.range && editor.selection.isCollapsed()) {\n return;\n }\n if (hasAnyRanges(editor) && !isSameElementPath(startElm) && editor.dom.isChildOf(startElm, editor.getBody())) {\n editor.nodeChanged({ selectionChange: true });\n }\n });\n editor.on('MouseUp', function (e) {\n if (!e.isDefaultPrevented() && hasAnyRanges(editor)) {\n if (editor.selection.getNode().nodeName === 'IMG') {\n $_3l01gcijkmcwk99.setEditorTimeout(editor, function () {\n editor.nodeChanged();\n });\n } else {\n editor.nodeChanged();\n }\n }\n });\n this.nodeChanged = function (args) {\n var selection = editor.selection;\n var node, parents, root;\n if (editor.initialized && selection && !editor.settings.disable_nodechange && !editor.readonly) {\n root = editor.getBody();\n node = selection.getStart(true) || root;\n if (node.ownerDocument !== editor.getDoc() || !editor.dom.isChildOf(node, root)) {\n node = root;\n }\n parents = [];\n editor.dom.getParent(node, function (node) {\n if (node === root) {\n return true;\n }\n parents.push(node);\n });\n args = args || {};\n args.element = node;\n args.parents = parents;\n editor.fire('NodeChange', args);\n }\n };\n }\n\n var getAbsolutePosition = function (elm) {\n var doc, docElem, win, clientRect;\n clientRect = elm.getBoundingClientRect();\n doc = elm.ownerDocument;\n docElem = doc.documentElement;\n win = doc.defaultView;\n return {\n top: clientRect.top + win.pageYOffset - docElem.clientTop,\n left: clientRect.left + win.pageXOffset - docElem.clientLeft\n };\n };\n var getBodyPosition = function (editor) {\n return editor.inline ? getAbsolutePosition(editor.getBody()) : {\n left: 0,\n top: 0\n };\n };\n var getScrollPosition = function (editor) {\n var body = editor.getBody();\n return editor.inline ? {\n left: body.scrollLeft,\n top: body.scrollTop\n } : {\n left: 0,\n top: 0\n };\n };\n var getBodyScroll = function (editor) {\n var body = editor.getBody(), docElm = editor.getDoc().documentElement;\n var inlineScroll = {\n left: body.scrollLeft,\n top: body.scrollTop\n };\n var iframeScroll = {\n left: body.scrollLeft || docElm.scrollLeft,\n top: body.scrollTop || docElm.scrollTop\n };\n return editor.inline ? inlineScroll : iframeScroll;\n };\n var getMousePosition = function (editor, event) {\n if (event.target.ownerDocument !== editor.getDoc()) {\n var iframePosition = getAbsolutePosition(editor.getContentAreaContainer());\n var scrollPosition = getBodyScroll(editor);\n return {\n left: event.pageX - iframePosition.left + scrollPosition.left,\n top: event.pageY - iframePosition.top + scrollPosition.top\n };\n }\n return {\n left: event.pageX,\n top: event.pageY\n };\n };\n var calculatePosition = function (bodyPosition, scrollPosition, mousePosition) {\n return {\n pageX: mousePosition.left - bodyPosition.left + scrollPosition.left,\n pageY: mousePosition.top - bodyPosition.top + scrollPosition.top\n };\n };\n var calc = function (editor, event) {\n return calculatePosition(getBodyPosition(editor), getScrollPosition(editor), getMousePosition(editor, event));\n };\n var $_7vqqhl5qjkmcwlfd = { calc: calc };\n\n var isContentEditableFalse$7 = $_bjermr1rjkmcwkij.isContentEditableFalse;\n var isContentEditableTrue$4 = $_bjermr1rjkmcwkij.isContentEditableTrue;\n var isDraggable = function (rootElm, elm) {\n return isContentEditableFalse$7(elm) && elm !== rootElm;\n };\n var isValidDropTarget = function (editor, targetElement, dragElement) {\n if (targetElement === dragElement || editor.dom.isChildOf(targetElement, dragElement)) {\n return false;\n }\n if (isContentEditableFalse$7(targetElement)) {\n return false;\n }\n return true;\n };\n var cloneElement = function (elm) {\n var cloneElm = elm.cloneNode(true);\n cloneElm.removeAttribute('data-mce-selected');\n return cloneElm;\n };\n var createGhost = function (editor, elm, width, height) {\n var clonedElm = elm.cloneNode(true);\n editor.dom.setStyles(clonedElm, {\n width: width,\n height: height\n });\n editor.dom.setAttrib(clonedElm, 'data-mce-selected', null);\n var ghostElm = editor.dom.create('div', {\n 'class': 'mce-drag-container',\n 'data-mce-bogus': 'all',\n 'unselectable': 'on',\n 'contenteditable': 'false'\n });\n editor.dom.setStyles(ghostElm, {\n position: 'absolute',\n opacity: 0.5,\n overflow: 'hidden',\n border: 0,\n padding: 0,\n margin: 0,\n width: width,\n height: height\n });\n editor.dom.setStyles(clonedElm, {\n margin: 0,\n boxSizing: 'border-box'\n });\n ghostElm.appendChild(clonedElm);\n return ghostElm;\n };\n var appendGhostToBody = function (ghostElm, bodyElm) {\n if (ghostElm.parentNode !== bodyElm) {\n bodyElm.appendChild(ghostElm);\n }\n };\n var moveGhost = function (ghostElm, position, width, height, maxX, maxY) {\n var overflowX = 0, overflowY = 0;\n ghostElm.style.left = position.pageX + 'px';\n ghostElm.style.top = position.pageY + 'px';\n if (position.pageX + width > maxX) {\n overflowX = position.pageX + width - maxX;\n }\n if (position.pageY + height > maxY) {\n overflowY = position.pageY + height - maxY;\n }\n ghostElm.style.width = width - overflowX + 'px';\n ghostElm.style.height = height - overflowY + 'px';\n };\n var removeElement = function (elm) {\n if (elm && elm.parentNode) {\n elm.parentNode.removeChild(elm);\n }\n };\n var isLeftMouseButtonPressed = function (e) {\n return e.button === 0;\n };\n var hasDraggableElement = function (state) {\n return state.element;\n };\n var applyRelPos = function (state, position) {\n return {\n pageX: position.pageX - state.relX,\n pageY: position.pageY + 5\n };\n };\n var start$1 = function (state, editor) {\n return function (e) {\n if (isLeftMouseButtonPressed(e)) {\n var ceElm = $_9g1fibmjkmcwkbu.find(editor.dom.getParents(e.target), $_fl2rax2ljkmcwkot.or(isContentEditableFalse$7, isContentEditableTrue$4));\n if (isDraggable(editor.getBody(), ceElm)) {\n var elmPos = editor.dom.getPos(ceElm);\n var bodyElm = editor.getBody();\n var docElm = editor.getDoc().documentElement;\n state.element = ceElm;\n state.screenX = e.screenX;\n state.screenY = e.screenY;\n state.maxX = (editor.inline ? bodyElm.scrollWidth : docElm.offsetWidth) - 2;\n state.maxY = (editor.inline ? bodyElm.scrollHeight : docElm.offsetHeight) - 2;\n state.relX = e.pageX - elmPos.x;\n state.relY = e.pageY - elmPos.y;\n state.width = ceElm.offsetWidth;\n state.height = ceElm.offsetHeight;\n state.ghost = createGhost(editor, ceElm, state.width, state.height);\n }\n }\n };\n };\n var move$1 = function (state, editor) {\n var throttledPlaceCaretAt = $_3l01gcijkmcwk99.throttle(function (clientX, clientY) {\n editor._selectionOverrides.hideFakeCaret();\n editor.selection.placeCaretAt(clientX, clientY);\n }, 0);\n return function (e) {\n var movement = Math.max(Math.abs(e.screenX - state.screenX), Math.abs(e.screenY - state.screenY));\n if (hasDraggableElement(state) && !state.dragging && movement > 10) {\n var args = editor.fire('dragstart', { target: state.element });\n if (args.isDefaultPrevented()) {\n return;\n }\n state.dragging = true;\n editor.focus();\n }\n if (state.dragging) {\n var targetPos = applyRelPos(state, $_7vqqhl5qjkmcwlfd.calc(editor, e));\n appendGhostToBody(state.ghost, editor.getBody());\n moveGhost(state.ghost, targetPos, state.width, state.height, state.maxX, state.maxY);\n throttledPlaceCaretAt(e.clientX, e.clientY);\n }\n };\n };\n var getRawTarget = function (selection) {\n var rng = selection.getSel().getRangeAt(0);\n var startContainer = rng.startContainer;\n return startContainer.nodeType === 3 ? startContainer.parentNode : startContainer;\n };\n var drop = function (state, editor) {\n return function (e) {\n if (state.dragging) {\n if (isValidDropTarget(editor, getRawTarget(editor.selection), state.element)) {\n var targetClone_1 = cloneElement(state.element);\n var args = editor.fire('drop', {\n targetClone: targetClone_1,\n clientX: e.clientX,\n clientY: e.clientY\n });\n if (!args.isDefaultPrevented()) {\n targetClone_1 = args.targetClone;\n editor.undoManager.transact(function () {\n removeElement(state.element);\n editor.insertContent(editor.dom.getOuterHTML(targetClone_1));\n editor._selectionOverrides.hideFakeCaret();\n });\n }\n }\n }\n removeDragState(state);\n };\n };\n var stop$$1 = function (state, editor) {\n return function () {\n if (state.dragging) {\n editor.fire('dragend');\n }\n removeDragState(state);\n };\n };\n var removeDragState = function (state) {\n state.dragging = false;\n state.element = null;\n removeElement(state.ghost);\n };\n var bindFakeDragEvents = function (editor) {\n var state = {};\n var pageDom, dragStartHandler, dragHandler, dropHandler, dragEndHandler, rootDocument;\n pageDom = DOMUtils$1.DOM;\n rootDocument = document;\n dragStartHandler = start$1(state, editor);\n dragHandler = move$1(state, editor);\n dropHandler = drop(state, editor);\n dragEndHandler = stop$$1(state, editor);\n editor.on('mousedown', dragStartHandler);\n editor.on('mousemove', dragHandler);\n editor.on('mouseup', dropHandler);\n pageDom.bind(rootDocument, 'mousemove', dragHandler);\n pageDom.bind(rootDocument, 'mouseup', dragEndHandler);\n editor.on('remove', function () {\n pageDom.unbind(rootDocument, 'mousemove', dragHandler);\n pageDom.unbind(rootDocument, 'mouseup', dragEndHandler);\n });\n };\n var blockIeDrop = function (editor) {\n editor.on('drop', function (e) {\n var realTarget = typeof e.clientX !== 'undefined' ? editor.getDoc().elementFromPoint(e.clientX, e.clientY) : null;\n if (isContentEditableFalse$7(realTarget) || isContentEditableFalse$7(editor.dom.getContentEditableParent(realTarget))) {\n e.preventDefault();\n }\n });\n };\n var init = function (editor) {\n bindFakeDragEvents(editor);\n blockIeDrop(editor);\n };\n var $_amfo0m5pjkmcwlf7 = { init: init };\n\n var getNodeClientRects = function (node) {\n var toArrayWithNode = function (clientRects) {\n return $_9g1fibmjkmcwkbu.map(clientRects, function (clientRect) {\n clientRect = clone$2(clientRect);\n clientRect.node = node;\n return clientRect;\n });\n };\n if ($_bjermr1rjkmcwkij.isElement(node)) {\n return toArrayWithNode(node.getClientRects());\n }\n if ($_bjermr1rjkmcwkij.isText(node)) {\n var rng = node.ownerDocument.createRange();\n rng.setStart(node, 0);\n rng.setEnd(node, node.data.length);\n return toArrayWithNode(rng.getClientRects());\n }\n };\n var getClientRects = function (node) {\n return $_9g1fibmjkmcwkbu.reduce(node, function (result, node) {\n return result.concat(getNodeClientRects(node));\n }, []);\n };\n\n var VDirection;\n (function (VDirection) {\n VDirection[VDirection['Up'] = -1] = 'Up';\n VDirection[VDirection['Down'] = 1] = 'Down';\n }(VDirection || (VDirection = {})));\n var findUntil = function (direction, root, predicateFn, node) {\n while (node = findNode(node, direction, isEditableCaretCandidate, root)) {\n if (predicateFn(node)) {\n return;\n }\n }\n };\n var walkUntil = function (direction, isAboveFn, isBeflowFn, root, predicateFn, caretPosition) {\n var line = 0, node;\n var result = [];\n var targetClientRect;\n var add = function (node) {\n var i, clientRect, clientRects;\n clientRects = getClientRects([node]);\n if (direction === -1) {\n clientRects = clientRects.reverse();\n }\n for (i = 0; i < clientRects.length; i++) {\n clientRect = clientRects[i];\n if (isBeflowFn(clientRect, targetClientRect)) {\n continue;\n }\n if (result.length > 0 && isAboveFn(clientRect, $_9g1fibmjkmcwkbu.last(result))) {\n line++;\n }\n clientRect.line = line;\n if (predicateFn(clientRect)) {\n return true;\n }\n result.push(clientRect);\n }\n };\n targetClientRect = $_9g1fibmjkmcwkbu.last(caretPosition.getClientRects());\n if (!targetClientRect) {\n return result;\n }\n node = caretPosition.getNode();\n add(node);\n findUntil(direction, root, add, node);\n return result;\n };\n var aboveLineNumber = function (lineNumber, clientRect) {\n return clientRect.line > lineNumber;\n };\n var isLineNumber = function (lineNumber, clientRect) {\n return clientRect.line === lineNumber;\n };\n var upUntil = curry(walkUntil, VDirection.Up, isAbove, isBelow);\n var downUntil = curry(walkUntil, VDirection.Down, isBelow, isAbove);\n var positionsUntil = function (direction, root, predicateFn, node) {\n var caretWalker = CaretWalker(root);\n var walkFn, isBelowFn, isAboveFn, caretPosition;\n var result = [];\n var line = 0, clientRect, targetClientRect;\n var getClientRect = function (caretPosition) {\n if (direction === 1) {\n return $_9g1fibmjkmcwkbu.last(caretPosition.getClientRects());\n }\n return $_9g1fibmjkmcwkbu.last(caretPosition.getClientRects());\n };\n if (direction === 1) {\n walkFn = caretWalker.next;\n isBelowFn = isBelow;\n isAboveFn = isAbove;\n caretPosition = CaretPosition$1.after(node);\n } else {\n walkFn = caretWalker.prev;\n isBelowFn = isAbove;\n isAboveFn = isBelow;\n caretPosition = CaretPosition$1.before(node);\n }\n targetClientRect = getClientRect(caretPosition);\n do {\n if (!caretPosition.isVisible()) {\n continue;\n }\n clientRect = getClientRect(caretPosition);\n if (isAboveFn(clientRect, targetClientRect)) {\n continue;\n }\n if (result.length > 0 && isBelowFn(clientRect, $_9g1fibmjkmcwkbu.last(result))) {\n line++;\n }\n clientRect = clone$2(clientRect);\n clientRect.position = caretPosition;\n clientRect.line = line;\n if (predicateFn(clientRect)) {\n return result;\n }\n result.push(clientRect);\n } while (caretPosition = walkFn(caretPosition));\n return result;\n };\n var isAboveLine = function (lineNumber) {\n return function (clientRect) {\n return aboveLineNumber(lineNumber, clientRect);\n };\n };\n var isLine = function (lineNumber) {\n return function (clientRect) {\n return isLineNumber(lineNumber, clientRect);\n };\n };\n\n var isContentEditableFalse$8 = $_bjermr1rjkmcwkij.isContentEditableFalse;\n var findNode$1 = findNode;\n var distanceToRectLeft = function (clientRect, clientX) {\n return Math.abs(clientRect.left - clientX);\n };\n var distanceToRectRight = function (clientRect, clientX) {\n return Math.abs(clientRect.right - clientX);\n };\n var isInside = function (clientX, clientRect) {\n return clientX >= clientRect.left && clientX <= clientRect.right;\n };\n var findClosestClientRect = function (clientRects, clientX) {\n return $_9g1fibmjkmcwkbu.reduce(clientRects, function (oldClientRect, clientRect) {\n var oldDistance, newDistance;\n oldDistance = Math.min(distanceToRectLeft(oldClientRect, clientX), distanceToRectRight(oldClientRect, clientX));\n newDistance = Math.min(distanceToRectLeft(clientRect, clientX), distanceToRectRight(clientRect, clientX));\n if (isInside(clientX, clientRect)) {\n return clientRect;\n }\n if (isInside(clientX, oldClientRect)) {\n return oldClientRect;\n }\n if (newDistance === oldDistance && isContentEditableFalse$8(clientRect.node)) {\n return clientRect;\n }\n if (newDistance < oldDistance) {\n return clientRect;\n }\n return oldClientRect;\n });\n };\n var walkUntil$1 = function (direction, root, predicateFn, node) {\n while (node = findNode$1(node, direction, isEditableCaretCandidate, root)) {\n if (predicateFn(node)) {\n return;\n }\n }\n };\n var findLineNodeRects = function (root, targetNodeRect) {\n var clientRects = [];\n var collect = function (checkPosFn, node) {\n var lineRects;\n lineRects = $_9g1fibmjkmcwkbu.filter(getClientRects([node]), function (clientRect) {\n return !checkPosFn(clientRect, targetNodeRect);\n });\n clientRects = clientRects.concat(lineRects);\n return lineRects.length === 0;\n };\n clientRects.push(targetNodeRect);\n walkUntil$1(VDirection.Up, root, curry(collect, isAbove), targetNodeRect.node);\n walkUntil$1(VDirection.Down, root, curry(collect, isBelow), targetNodeRect.node);\n return clientRects;\n };\n var getFakeCaretTargets = function (root) {\n return $_9g1fibmjkmcwkbu.filter($_9g1fibmjkmcwkbu.toArray(root.getElementsByTagName('*')), isFakeCaretTarget);\n };\n var caretInfo = function (clientRect, clientX) {\n return {\n node: clientRect.node,\n before: distanceToRectLeft(clientRect, clientX) < distanceToRectRight(clientRect, clientX)\n };\n };\n var closestCaret = function (root, clientX, clientY) {\n var closestNodeRect;\n var contentEditableFalseNodeRects = getClientRects(getFakeCaretTargets(root));\n var targetNodeRects = $_9g1fibmjkmcwkbu.filter(contentEditableFalseNodeRects, function (rect) {\n return clientY >= rect.top && clientY <= rect.bottom;\n });\n closestNodeRect = findClosestClientRect(targetNodeRects, clientX);\n if (closestNodeRect) {\n closestNodeRect = findClosestClientRect(findLineNodeRects(root, closestNodeRect), clientX);\n if (closestNodeRect && isFakeCaretTarget(closestNodeRect.node)) {\n return caretInfo(closestNodeRect, clientX);\n }\n }\n return null;\n };\n\n var isXYWithinRange = function (clientX, clientY, range$$1) {\n if (range$$1.collapsed) {\n return false;\n }\n return foldl(range$$1.getClientRects(), function (state, rect) {\n return state || containsXY(rect, clientX, clientY);\n }, false);\n };\n var $_95lcbc5ujkmcwlg1 = { isXYWithinRange: isXYWithinRange };\n\n var setup$3 = function (editor) {\n var renderFocusCaret = first$1(function () {\n if (!editor.removed) {\n var rng = editor.selection.getRng();\n if (rng.collapsed) {\n var caretRange = renderRangeCaret(editor, editor.selection.getRng(), false);\n editor.selection.setRng(caretRange);\n }\n }\n }, 0);\n editor.on('focus', function () {\n renderFocusCaret.throttle();\n });\n editor.on('blur', function () {\n renderFocusCaret.cancel();\n });\n };\n var $_8glegd5vjkmcwlg3 = { setup: setup$3 };\n\n var $_6bj5795wjkmcwlg6 = {\n BACKSPACE: 8,\n DELETE: 46,\n DOWN: 40,\n ENTER: 13,\n LEFT: 37,\n RIGHT: 39,\n SPACEBAR: 32,\n TAB: 9,\n UP: 38,\n modifierPressed: function (e) {\n return e.shiftKey || e.ctrlKey || e.altKey || this.metaKeyPressed(e);\n },\n metaKeyPressed: function (e) {\n return $_cvvl9iajkmcwk25.mac ? e.metaKey : e.ctrlKey && !e.altKey;\n }\n };\n\n var isContentEditableTrue$5 = $_bjermr1rjkmcwkij.isContentEditableTrue;\n var isContentEditableFalse$9 = $_bjermr1rjkmcwkij.isContentEditableFalse;\n var isAfterContentEditableFalse$1 = isAfterContentEditableFalse;\n var isBeforeContentEditableFalse$1 = isBeforeContentEditableFalse;\n var getContentEditableRoot$1 = function (editor, node) {\n var root = editor.getBody();\n while (node && node !== root) {\n if (isContentEditableTrue$5(node) || isContentEditableFalse$9(node)) {\n return node;\n }\n node = node.parentNode;\n }\n return null;\n };\n var SelectionOverrides = function (editor) {\n var isBlock = function (node) {\n return editor.dom.isBlock(node);\n };\n var rootNode = editor.getBody();\n var fakeCaret = FakeCaret(editor.getBody(), isBlock, function () {\n return $_e3v8sn4vjkmcwl9y.hasFocus(editor);\n });\n var realSelectionId = 'sel-' + editor.dom.uniqueId();\n var selectedContentEditableNode;\n var isFakeSelectionElement = function (elm) {\n return editor.dom.hasClass(elm, 'mce-offscreen-selection');\n };\n var getRealSelectionElement = function () {\n var container = editor.dom.get(realSelectionId);\n return container ? container.getElementsByTagName('*')[0] : container;\n };\n var setRange = function (range$$1) {\n if (range$$1) {\n editor.selection.setRng(range$$1);\n }\n };\n var getRange = function () {\n return editor.selection.getRng();\n };\n var showCaret$$1 = function (direction, node, before, scrollIntoView) {\n if (scrollIntoView === void 0) {\n scrollIntoView = true;\n }\n var e;\n e = editor.fire('ShowCaret', {\n target: node,\n direction: direction,\n before: before\n });\n if (e.isDefaultPrevented()) {\n return null;\n }\n if (scrollIntoView) {\n editor.selection.scrollIntoView(node, direction === -1);\n }\n return fakeCaret.show(before, node);\n };\n var getNormalizedRangeEndPoint$$1 = function (direction, range$$1) {\n range$$1 = normalizeRange(direction, rootNode, range$$1);\n if (direction === -1) {\n return CaretPosition$1.fromRangeStart(range$$1);\n }\n return CaretPosition$1.fromRangeEnd(range$$1);\n };\n var showBlockCaretContainer = function (blockCaretContainer) {\n if (blockCaretContainer.hasAttribute('data-mce-caret')) {\n showCaretContainerBlock(blockCaretContainer);\n setRange(getRange());\n editor.selection.scrollIntoView(blockCaretContainer[0]);\n }\n };\n var registerEvents = function () {\n editor.on('mouseup', function (e) {\n var range$$1 = getRange();\n if (range$$1.collapsed && $_8we2e850jkmcwlaw.isXYInContentArea(editor, e.clientX, e.clientY)) {\n setRange(renderCaretAtRange(editor, range$$1, false));\n }\n });\n editor.on('click', function (e) {\n var contentEditableRoot;\n contentEditableRoot = getContentEditableRoot$1(editor, e.target);\n if (contentEditableRoot) {\n if (isContentEditableFalse$9(contentEditableRoot)) {\n e.preventDefault();\n editor.focus();\n }\n if (isContentEditableTrue$5(contentEditableRoot)) {\n if (editor.dom.isChildOf(contentEditableRoot, editor.selection.getNode())) {\n removeContentEditableSelection();\n }\n }\n }\n });\n editor.on('blur NewBlock', function () {\n removeContentEditableSelection();\n });\n editor.on('ResizeWindow FullscreenStateChanged', function () {\n return fakeCaret.reposition();\n });\n var handleTouchSelect = function (editor) {\n var moved = false;\n editor.on('touchstart', function () {\n moved = false;\n });\n editor.on('touchmove', function () {\n moved = true;\n });\n editor.on('touchend', function (e) {\n var contentEditableRoot = getContentEditableRoot$1(editor, e.target);\n if (isContentEditableFalse$9(contentEditableRoot)) {\n if (!moved) {\n e.preventDefault();\n setContentEditableSelection(selectNode(editor, contentEditableRoot));\n }\n }\n });\n };\n var hasNormalCaretPosition = function (elm) {\n var caretWalker = CaretWalker(elm);\n if (!elm.firstChild) {\n return false;\n }\n var startPos = CaretPosition$1.before(elm.firstChild);\n var newPos = caretWalker.next(startPos);\n return newPos && !isBeforeContentEditableFalse$1(newPos) && !isAfterContentEditableFalse$1(newPos);\n };\n var isInSameBlock$$1 = function (node1, node2) {\n var block1 = editor.dom.getParent(node1, editor.dom.isBlock);\n var block2 = editor.dom.getParent(node2, editor.dom.isBlock);\n return block1 === block2;\n };\n var hasBetterMouseTarget = function (targetNode, caretNode) {\n var targetBlock = editor.dom.getParent(targetNode, editor.dom.isBlock);\n var caretBlock = editor.dom.getParent(caretNode, editor.dom.isBlock);\n if (targetBlock && editor.dom.isChildOf(targetBlock, caretBlock) && isContentEditableFalse$9(getContentEditableRoot$1(editor, targetBlock)) === false) {\n return true;\n }\n return targetBlock && !isInSameBlock$$1(targetBlock, caretBlock) && hasNormalCaretPosition(targetBlock);\n };\n handleTouchSelect(editor);\n editor.on('mousedown', function (e) {\n var contentEditableRoot;\n var targetElm = e.target;\n if (targetElm !== rootNode && targetElm.nodeName !== 'HTML' && !editor.dom.isChildOf(targetElm, rootNode)) {\n return;\n }\n if ($_8we2e850jkmcwlaw.isXYInContentArea(editor, e.clientX, e.clientY) === false) {\n return;\n }\n contentEditableRoot = getContentEditableRoot$1(editor, targetElm);\n if (contentEditableRoot) {\n if (isContentEditableFalse$9(contentEditableRoot)) {\n e.preventDefault();\n setContentEditableSelection(selectNode(editor, contentEditableRoot));\n } else {\n removeContentEditableSelection();\n if (!(isContentEditableTrue$5(contentEditableRoot) && e.shiftKey) && !$_95lcbc5ujkmcwlg1.isXYWithinRange(e.clientX, e.clientY, editor.selection.getRng())) {\n hideFakeCaret();\n editor.selection.placeCaretAt(e.clientX, e.clientY);\n }\n }\n } else if (isFakeCaretTarget(targetElm) === false) {\n removeContentEditableSelection();\n hideFakeCaret();\n var caretInfo = closestCaret(rootNode, e.clientX, e.clientY);\n if (caretInfo) {\n if (!hasBetterMouseTarget(e.target, caretInfo.node)) {\n e.preventDefault();\n var range$$1 = showCaret$$1(1, caretInfo.node, caretInfo.before, false);\n editor.getBody().focus();\n setRange(range$$1);\n }\n }\n }\n });\n editor.on('keypress', function (e) {\n if ($_6bj5795wjkmcwlg6.modifierPressed(e)) {\n return;\n }\n switch (e.keyCode) {\n default:\n if (isContentEditableFalse$9(editor.selection.getNode())) {\n e.preventDefault();\n }\n break;\n }\n });\n editor.on('getSelectionRange', function (e) {\n var rng = e.range;\n if (selectedContentEditableNode) {\n if (!selectedContentEditableNode.parentNode) {\n selectedContentEditableNode = null;\n return;\n }\n rng = rng.cloneRange();\n rng.selectNode(selectedContentEditableNode);\n e.range = rng;\n }\n });\n editor.on('setSelectionRange', function (e) {\n var rng;\n rng = setContentEditableSelection(e.range, e.forward);\n if (rng) {\n e.range = rng;\n }\n });\n var isPasteBin = function (node) {\n return node.id === 'mcepastebin';\n };\n editor.on('AfterSetSelectionRange', function (e) {\n var rng = e.range;\n if (!isRangeInCaretContainer(rng) && !isPasteBin(rng.startContainer.parentNode)) {\n hideFakeCaret();\n }\n if (!isFakeSelectionElement(rng.startContainer.parentNode)) {\n removeContentEditableSelection();\n }\n });\n editor.on('copy', function (e) {\n var clipboardData = e.clipboardData;\n if (!e.isDefaultPrevented() && e.clipboardData && !$_cvvl9iajkmcwk25.ie) {\n var realSelectionElement = getRealSelectionElement();\n if (realSelectionElement) {\n e.preventDefault();\n clipboardData.clearData();\n clipboardData.setData('text/html', realSelectionElement.outerHTML);\n clipboardData.setData('text/plain', realSelectionElement.outerText);\n }\n }\n });\n $_amfo0m5pjkmcwlf7.init(editor);\n $_8glegd5vjkmcwlg3.setup(editor);\n };\n var addCss = function () {\n var styles = editor.contentStyles, rootClass = '.mce-content-body';\n styles.push(fakeCaret.getCss());\n styles.push(rootClass + ' .mce-offscreen-selection {' + 'position: absolute;' + 'left: -9999999999px;' + 'max-width: 1000000px;' + '}' + rootClass + ' *[contentEditable=false] {' + 'cursor: default;' + '}' + rootClass + ' *[contentEditable=true] {' + 'cursor: text;' + '}');\n };\n var isWithinCaretContainer = function (node) {\n return isCaretContainer(node) || startsWithCaretContainer(node) || endsWithCaretContainer(node);\n };\n var isRangeInCaretContainer = function (rng) {\n return isWithinCaretContainer(rng.startContainer) || isWithinCaretContainer(rng.endContainer);\n };\n var setContentEditableSelection = function (range$$1, forward) {\n var node;\n var $ = editor.$;\n var dom = editor.dom;\n var $realSelectionContainer, sel, startContainer, startOffset, endOffset, e, caretPosition, targetClone, origTargetClone;\n if (!range$$1) {\n return null;\n }\n if (range$$1.collapsed) {\n if (!isRangeInCaretContainer(range$$1)) {\n if (forward === false) {\n caretPosition = getNormalizedRangeEndPoint$$1(-1, range$$1);\n if (isFakeCaretTarget(caretPosition.getNode(true))) {\n return showCaret$$1(-1, caretPosition.getNode(true), false, false);\n }\n if (isFakeCaretTarget(caretPosition.getNode())) {\n return showCaret$$1(-1, caretPosition.getNode(), !caretPosition.isAtEnd(), false);\n }\n } else {\n caretPosition = getNormalizedRangeEndPoint$$1(1, range$$1);\n if (isFakeCaretTarget(caretPosition.getNode())) {\n return showCaret$$1(1, caretPosition.getNode(), !caretPosition.isAtEnd(), false);\n }\n if (isFakeCaretTarget(caretPosition.getNode(true))) {\n return showCaret$$1(1, caretPosition.getNode(true), false, false);\n }\n }\n }\n return null;\n }\n startContainer = range$$1.startContainer;\n startOffset = range$$1.startOffset;\n endOffset = range$$1.endOffset;\n if (startContainer.nodeType === 3 && startOffset === 0 && isContentEditableFalse$9(startContainer.parentNode)) {\n startContainer = startContainer.parentNode;\n startOffset = dom.nodeIndex(startContainer);\n startContainer = startContainer.parentNode;\n }\n if (startContainer.nodeType !== 1) {\n return null;\n }\n if (endOffset === startOffset + 1) {\n node = startContainer.childNodes[startOffset];\n }\n if (!isContentEditableFalse$9(node)) {\n return null;\n }\n targetClone = origTargetClone = node.cloneNode(true);\n e = editor.fire('ObjectSelected', {\n target: node,\n targetClone: targetClone\n });\n if (e.isDefaultPrevented()) {\n return null;\n }\n $realSelectionContainer = $_4ki4d929jkmcwkmn.descendant(Element$$1.fromDom(editor.getBody()), '#' + realSelectionId).fold(function () {\n return $([]);\n }, function (elm) {\n return $([elm.dom()]);\n });\n targetClone = e.targetClone;\n if ($realSelectionContainer.length === 0) {\n $realSelectionContainer = $('
').attr('id', realSelectionId);\n $realSelectionContainer.appendTo(editor.getBody());\n }\n range$$1 = editor.dom.createRng();\n if (targetClone === origTargetClone && $_cvvl9iajkmcwk25.ie) {\n $realSelectionContainer.empty().append('

\\xA0

').append(targetClone);\n range$$1.setStartAfter($realSelectionContainer[0].firstChild.firstChild);\n range$$1.setEndAfter(targetClone);\n } else {\n $realSelectionContainer.empty().append('\\xA0').append(targetClone).append('\\xA0');\n range$$1.setStart($realSelectionContainer[0].firstChild, 1);\n range$$1.setEnd($realSelectionContainer[0].lastChild, 0);\n }\n $realSelectionContainer.css({ top: dom.getPos(node, editor.getBody()).y });\n $realSelectionContainer[0].focus();\n sel = editor.selection.getSel();\n sel.removeAllRanges();\n sel.addRange(range$$1);\n each($_2gqm0n27jkmcwkmi.descendants(Element$$1.fromDom(editor.getBody()), '*[data-mce-selected]'), function (elm) {\n $_29helg15jkmcwkf0.remove(elm, 'data-mce-selected');\n });\n node.setAttribute('data-mce-selected', '1');\n selectedContentEditableNode = node;\n hideFakeCaret();\n return range$$1;\n };\n var removeContentEditableSelection = function () {\n if (selectedContentEditableNode) {\n selectedContentEditableNode.removeAttribute('data-mce-selected');\n $_4ki4d929jkmcwkmn.descendant(Element$$1.fromDom(editor.getBody()), '#' + realSelectionId).each($_eualm21wjkmcwkku.remove);\n selectedContentEditableNode = null;\n }\n $_4ki4d929jkmcwkmn.descendant(Element$$1.fromDom(editor.getBody()), '#' + realSelectionId).each($_eualm21wjkmcwkku.remove);\n selectedContentEditableNode = null;\n };\n var destroy = function () {\n fakeCaret.destroy();\n selectedContentEditableNode = null;\n };\n var hideFakeCaret = function () {\n fakeCaret.hide();\n };\n if ($_cvvl9iajkmcwk25.ceFalse) {\n registerEvents();\n addCss();\n }\n return {\n showCaret: showCaret$$1,\n showBlockCaretContainer: showBlockCaretContainer,\n hideFakeCaret: hideFakeCaret,\n destroy: destroy\n };\n };\n\n var isValidPrefixAttrName = function (name) {\n return name.indexOf('data-') === 0 || name.indexOf('aria-') === 0;\n };\n var trimComments = function (text) {\n return text.replace(//g, '');\n };\n var isInvalidUri = function (settings, uri) {\n if (settings.allow_html_data_urls) {\n return false;\n } else if (/^data:image\\//i.test(uri)) {\n return settings.allow_svg_data_urls === false && /^data:image\\/svg\\+xml/i.test(uri);\n } else {\n return /^data:/i.test(uri);\n }\n };\n var findEndTagIndex = function (schema, html, startIndex) {\n var count = 1, index, matches, tokenRegExp, shortEndedElements;\n shortEndedElements = schema.getShortEndedElements();\n tokenRegExp = /<([!?\\/])?([A-Za-z0-9\\-_\\:\\.]+)((?:\\s+[^\"\\'>]+(?:(?:\"[^\"]*\")|(?:\\'[^\\']*\\')|[^>]*))*|\\/|\\s+)>/g;\n tokenRegExp.lastIndex = index = startIndex;\n while (matches = tokenRegExp.exec(html)) {\n index = tokenRegExp.lastIndex;\n if (matches[1] === '/') {\n count--;\n } else if (!matches[1]) {\n if (matches[2] in shortEndedElements) {\n continue;\n }\n count++;\n }\n if (count === 0) {\n break;\n }\n }\n return index;\n };\n function SaxParser(settings, schema) {\n if (schema === void 0) {\n schema = Schema();\n }\n var noop = function () {\n };\n settings = settings || {};\n if (settings.fix_self_closing !== false) {\n settings.fix_self_closing = true;\n }\n var comment = settings.comment ? settings.comment : noop;\n var cdata = settings.cdata ? settings.cdata : noop;\n var text = settings.text ? settings.text : noop;\n var start = settings.start ? settings.start : noop;\n var end = settings.end ? settings.end : noop;\n var pi = settings.pi ? settings.pi : noop;\n var doctype = settings.doctype ? settings.doctype : noop;\n var parse = function (html) {\n var matches, index = 0, value, endRegExp;\n var stack = [];\n var attrList, i, textData, name;\n var isInternalElement, removeInternalElements, shortEndedElements, fillAttrsMap, isShortEnded;\n var validate, elementRule, isValidElement, attr, attribsValue, validAttributesMap, validAttributePatterns;\n var attributesRequired, attributesDefault, attributesForced, processHtml;\n var anyAttributesRequired, selfClosing, tokenRegExp, attrRegExp, specialElements, attrValue, idCount = 0;\n var decode = $_33qwr1sjkmcwkip.decode;\n var fixSelfClosing;\n var filteredUrlAttrs = $_4ujg4tljkmcwkbk.makeMap('src,href,data,background,formaction,poster,xlink:href');\n var scriptUriRegExp = /((java|vb)script|mhtml):/i;\n var processEndTag = function (name) {\n var pos, i;\n pos = stack.length;\n while (pos--) {\n if (stack[pos].name === name) {\n break;\n }\n }\n if (pos >= 0) {\n for (i = stack.length - 1; i >= pos; i--) {\n name = stack[i];\n if (name.valid) {\n end(name.name);\n }\n }\n stack.length = pos;\n }\n };\n var parseAttribute = function (match, name, value, val2, val3) {\n var attrRule, i;\n var trimRegExp = /[\\s\\u0000-\\u001F]+/g;\n name = name.toLowerCase();\n value = name in fillAttrsMap ? name : decode(value || val2 || val3 || '');\n if (validate && !isInternalElement && isValidPrefixAttrName(name) === false) {\n attrRule = validAttributesMap[name];\n if (!attrRule && validAttributePatterns) {\n i = validAttributePatterns.length;\n while (i--) {\n attrRule = validAttributePatterns[i];\n if (attrRule.pattern.test(name)) {\n break;\n }\n }\n if (i === -1) {\n attrRule = null;\n }\n }\n if (!attrRule) {\n return;\n }\n if (attrRule.validValues && !(value in attrRule.validValues)) {\n return;\n }\n }\n if (filteredUrlAttrs[name] && !settings.allow_script_urls) {\n var uri = value.replace(trimRegExp, '');\n try {\n uri = decodeURIComponent(uri);\n } catch (ex) {\n uri = unescape(uri);\n }\n if (scriptUriRegExp.test(uri)) {\n return;\n }\n if (isInvalidUri(settings, uri)) {\n return;\n }\n }\n if (isInternalElement && (name in filteredUrlAttrs || name.indexOf('on') === 0)) {\n return;\n }\n attrList.map[name] = value;\n attrList.push({\n name: name,\n value: value\n });\n };\n tokenRegExp = new RegExp('<(?:' + '(?:!--([\\\\w\\\\W]*?)-->)|' + '(?:!\\\\[CDATA\\\\[([\\\\w\\\\W]*?)\\\\]\\\\]>)|' + '(?:!DOCTYPE([\\\\w\\\\W]*?)>)|' + '(?:\\\\?([^\\\\s\\\\/<>]+) ?([\\\\w\\\\W]*?)[?/]>)|' + '(?:\\\\/([A-Za-z][A-Za-z0-9\\\\-_\\\\:\\\\.]*)>)|' + '(?:([A-Za-z][A-Za-z0-9\\\\-_\\\\:\\\\.]*)((?:\\\\s+[^\"\\'>]+(?:(?:\"[^\"]*\")|(?:\\'[^\\']*\\')|[^>]*))*|\\\\/|\\\\s+)>)' + ')', 'g');\n attrRegExp = /([\\w:\\-]+)(?:\\s*=\\s*(?:(?:\\\"((?:[^\\\"])*)\\\")|(?:\\'((?:[^\\'])*)\\')|([^>\\s]+)))?/g;\n shortEndedElements = schema.getShortEndedElements();\n selfClosing = settings.self_closing_elements || schema.getSelfClosingElements();\n fillAttrsMap = schema.getBoolAttrs();\n validate = settings.validate;\n removeInternalElements = settings.remove_internals;\n fixSelfClosing = settings.fix_self_closing;\n specialElements = schema.getSpecialElements();\n processHtml = html + '>';\n while (matches = tokenRegExp.exec(processHtml)) {\n if (index < matches.index) {\n text(decode(html.substr(index, matches.index - index)));\n }\n if (value = matches[6]) {\n value = value.toLowerCase();\n if (value.charAt(0) === ':') {\n value = value.substr(1);\n }\n processEndTag(value);\n } else if (value = matches[7]) {\n if (matches.index + matches[0].length > html.length) {\n text(decode(html.substr(matches.index)));\n index = matches.index + matches[0].length;\n continue;\n }\n value = value.toLowerCase();\n if (value.charAt(0) === ':') {\n value = value.substr(1);\n }\n isShortEnded = value in shortEndedElements;\n if (fixSelfClosing && selfClosing[value] && stack.length > 0 && stack[stack.length - 1].name === value) {\n processEndTag(value);\n }\n if (!validate || (elementRule = schema.getElementRule(value))) {\n isValidElement = true;\n if (validate) {\n validAttributesMap = elementRule.attributes;\n validAttributePatterns = elementRule.attributePatterns;\n }\n if (attribsValue = matches[8]) {\n isInternalElement = attribsValue.indexOf('data-mce-type') !== -1;\n if (isInternalElement && removeInternalElements) {\n isValidElement = false;\n }\n attrList = [];\n attrList.map = {};\n attribsValue.replace(attrRegExp, parseAttribute);\n } else {\n attrList = [];\n attrList.map = {};\n }\n if (validate && !isInternalElement) {\n attributesRequired = elementRule.attributesRequired;\n attributesDefault = elementRule.attributesDefault;\n attributesForced = elementRule.attributesForced;\n anyAttributesRequired = elementRule.removeEmptyAttrs;\n if (anyAttributesRequired && !attrList.length) {\n isValidElement = false;\n }\n if (attributesForced) {\n i = attributesForced.length;\n while (i--) {\n attr = attributesForced[i];\n name = attr.name;\n attrValue = attr.value;\n if (attrValue === '{$uid}') {\n attrValue = 'mce_' + idCount++;\n }\n attrList.map[name] = attrValue;\n attrList.push({\n name: name,\n value: attrValue\n });\n }\n }\n if (attributesDefault) {\n i = attributesDefault.length;\n while (i--) {\n attr = attributesDefault[i];\n name = attr.name;\n if (!(name in attrList.map)) {\n attrValue = attr.value;\n if (attrValue === '{$uid}') {\n attrValue = 'mce_' + idCount++;\n }\n attrList.map[name] = attrValue;\n attrList.push({\n name: name,\n value: attrValue\n });\n }\n }\n }\n if (attributesRequired) {\n i = attributesRequired.length;\n while (i--) {\n if (attributesRequired[i] in attrList.map) {\n break;\n }\n }\n if (i === -1) {\n isValidElement = false;\n }\n }\n if (attr = attrList.map['data-mce-bogus']) {\n if (attr === 'all') {\n index = findEndTagIndex(schema, html, tokenRegExp.lastIndex);\n tokenRegExp.lastIndex = index;\n continue;\n }\n isValidElement = false;\n }\n }\n if (isValidElement) {\n start(value, attrList, isShortEnded);\n }\n } else {\n isValidElement = false;\n }\n if (endRegExp = specialElements[value]) {\n endRegExp.lastIndex = index = matches.index + matches[0].length;\n if (matches = endRegExp.exec(html)) {\n if (isValidElement) {\n textData = html.substr(index, matches.index - index);\n }\n index = matches.index + matches[0].length;\n } else {\n textData = html.substr(index);\n index = html.length;\n }\n if (isValidElement) {\n if (textData.length > 0) {\n text(textData, true);\n }\n end(value);\n }\n tokenRegExp.lastIndex = index;\n continue;\n }\n if (!isShortEnded) {\n if (!attribsValue || attribsValue.indexOf('/') !== attribsValue.length - 1) {\n stack.push({\n name: value,\n valid: isValidElement\n });\n } else if (isValidElement) {\n end(value);\n }\n }\n } else if (value = matches[1]) {\n if (value.charAt(0) === '>') {\n value = ' ' + value;\n }\n if (!settings.allow_conditional_comments && value.substr(0, 3).toLowerCase() === '[if') {\n value = ' ' + value;\n }\n comment(value);\n } else if (value = matches[2]) {\n cdata(trimComments(value));\n } else if (value = matches[3]) {\n doctype(value);\n } else if (value = matches[4]) {\n pi(value, matches[5]);\n }\n index = matches.index + matches[0].length;\n }\n if (index < html.length) {\n text(decode(html.substr(index)));\n }\n for (i = stack.length - 1; i >= 0; i--) {\n value = stack[i];\n if (value.valid) {\n end(value.name);\n }\n }\n };\n return { parse: parse };\n }\n (function (SaxParser) {\n SaxParser.findEndTag = findEndTagIndex;\n }(SaxParser || (SaxParser = {})));\n var SaxParser$1 = SaxParser;\n\n var trimHtml = function (tempAttrs, html) {\n var trimContentRegExp = new RegExp(['\\\\s?(' + tempAttrs.join('|') + ')=\"[^\"]+\"'].join('|'), 'gi');\n return html.replace(trimContentRegExp, '');\n };\n var trimInternal = function (serializer, html) {\n var content = html;\n var bogusAllRegExp = /<(\\w+) [^>]*data-mce-bogus=\"all\"[^>]*>/g;\n var endTagIndex, index, matchLength, matches, shortEndedElements;\n var schema = serializer.schema;\n content = trimHtml(serializer.getTempAttrs(), content);\n shortEndedElements = schema.getShortEndedElements();\n while (matches = bogusAllRegExp.exec(content)) {\n index = bogusAllRegExp.lastIndex;\n matchLength = matches[0].length;\n if (shortEndedElements[matches[1]]) {\n endTagIndex = index;\n } else {\n endTagIndex = SaxParser$1.findEndTag(schema, content, index);\n }\n content = content.substring(0, index - matchLength) + content.substring(endTagIndex);\n bogusAllRegExp.lastIndex = index - matchLength;\n }\n return $_cadvcr2pjkmcwkph.trim(content);\n };\n var trimExternal = trimInternal;\n var $_2varuf5zjkmcwlgq = {\n trimExternal: trimExternal,\n trimInternal: trimInternal\n };\n\n var KEEP = 0;\n var INSERT = 1;\n var DELETE = 2;\n var diff = function (left, right) {\n var size = left.length + right.length + 2;\n var vDown = new Array(size);\n var vUp = new Array(size);\n var snake = function (start, end, diag) {\n return {\n start: start,\n end: end,\n diag: diag\n };\n };\n var buildScript = function (start1, end1, start2, end2, script) {\n var middle = getMiddleSnake(start1, end1, start2, end2);\n if (middle === null || middle.start === end1 && middle.diag === end1 - end2 || middle.end === start1 && middle.diag === start1 - start2) {\n var i = start1;\n var j = start2;\n while (i < end1 || j < end2) {\n if (i < end1 && j < end2 && left[i] === right[j]) {\n script.push([\n KEEP,\n left[i]\n ]);\n ++i;\n ++j;\n } else {\n if (end1 - start1 > end2 - start2) {\n script.push([\n DELETE,\n left[i]\n ]);\n ++i;\n } else {\n script.push([\n INSERT,\n right[j]\n ]);\n ++j;\n }\n }\n }\n } else {\n buildScript(start1, middle.start, start2, middle.start - middle.diag, script);\n for (var i2 = middle.start; i2 < middle.end; ++i2) {\n script.push([\n KEEP,\n left[i2]\n ]);\n }\n buildScript(middle.end, end1, middle.end - middle.diag, end2, script);\n }\n };\n var buildSnake = function (start, diag, end1, end2) {\n var end = start;\n while (end - diag < end2 && end < end1 && left[end] === right[end - diag]) {\n ++end;\n }\n return snake(start, end, diag);\n };\n var getMiddleSnake = function (start1, end1, start2, end2) {\n var m = end1 - start1;\n var n = end2 - start2;\n if (m === 0 || n === 0) {\n return null;\n }\n var delta = m - n;\n var sum = n + m;\n var offset = (sum % 2 === 0 ? sum : sum + 1) / 2;\n vDown[1 + offset] = start1;\n vUp[1 + offset] = end1 + 1;\n var d, k, i, x, y;\n for (d = 0; d <= offset; ++d) {\n for (k = -d; k <= d; k += 2) {\n i = k + offset;\n if (k === -d || k !== d && vDown[i - 1] < vDown[i + 1]) {\n vDown[i] = vDown[i + 1];\n } else {\n vDown[i] = vDown[i - 1] + 1;\n }\n x = vDown[i];\n y = x - start1 + start2 - k;\n while (x < end1 && y < end2 && left[x] === right[y]) {\n vDown[i] = ++x;\n ++y;\n }\n if (delta % 2 !== 0 && delta - d <= k && k <= delta + d) {\n if (vUp[i - delta] <= vDown[i]) {\n return buildSnake(vUp[i - delta], k + start1 - start2, end1, end2);\n }\n }\n }\n for (k = delta - d; k <= delta + d; k += 2) {\n i = k + offset - delta;\n if (k === delta - d || k !== delta + d && vUp[i + 1] <= vUp[i - 1]) {\n vUp[i] = vUp[i + 1] - 1;\n } else {\n vUp[i] = vUp[i - 1];\n }\n x = vUp[i] - 1;\n y = x - start1 + start2 - k;\n while (x >= start1 && y >= start2 && left[x] === right[y]) {\n vUp[i] = x--;\n y--;\n }\n if (delta % 2 === 0 && -d <= k && k <= d) {\n if (vUp[i] <= vDown[i + delta]) {\n return buildSnake(vUp[i], k + start1 - start2, end1, end2);\n }\n }\n }\n }\n };\n var script = [];\n buildScript(0, left.length, 0, right.length, script);\n return script;\n };\n var $_3xze2m62jkmcwlh7 = {\n KEEP: KEEP,\n DELETE: DELETE,\n INSERT: INSERT,\n diff: diff\n };\n\n var getOuterHtml = function (elm) {\n if ($_bjermr1rjkmcwkij.isElement(elm)) {\n return elm.outerHTML;\n } else if ($_bjermr1rjkmcwkij.isText(elm)) {\n return $_33qwr1sjkmcwkip.encodeRaw(elm.data, false);\n } else if ($_bjermr1rjkmcwkij.isComment(elm)) {\n return '';\n }\n return '';\n };\n var createFragment$1 = function (html) {\n var frag, node, container;\n container = document.createElement('div');\n frag = document.createDocumentFragment();\n if (html) {\n container.innerHTML = html;\n }\n while (node = container.firstChild) {\n frag.appendChild(node);\n }\n return frag;\n };\n var insertAt = function (elm, html, index) {\n var fragment = createFragment$1(html);\n if (elm.hasChildNodes() && index < elm.childNodes.length) {\n var target = elm.childNodes[index];\n target.parentNode.insertBefore(fragment, target);\n } else {\n elm.appendChild(fragment);\n }\n };\n var removeAt = function (elm, index) {\n if (elm.hasChildNodes() && index < elm.childNodes.length) {\n var target = elm.childNodes[index];\n target.parentNode.removeChild(target);\n }\n };\n var applyDiff = function (diff, elm) {\n var index = 0;\n $_9g1fibmjkmcwkbu.each(diff, function (action) {\n if (action[0] === $_3xze2m62jkmcwlh7.KEEP) {\n index++;\n } else if (action[0] === $_3xze2m62jkmcwlh7.INSERT) {\n insertAt(elm, action[1], index);\n index++;\n } else if (action[0] === $_3xze2m62jkmcwlh7.DELETE) {\n removeAt(elm, index);\n }\n });\n };\n var read$3 = function (elm) {\n return $_9g1fibmjkmcwkbu.filter($_9g1fibmjkmcwkbu.map(elm.childNodes, getOuterHtml), function (item) {\n return item.length > 0;\n });\n };\n var write = function (fragments, elm) {\n var currentFragments = $_9g1fibmjkmcwkbu.map(elm.childNodes, getOuterHtml);\n applyDiff($_3xze2m62jkmcwlh7.diff(currentFragments, fragments), elm);\n return elm;\n };\n var $_cyedqm61jkmcwlh3 = {\n read: read$3,\n write: write\n };\n\n var fromHtml$1 = function (html, scope) {\n var doc = scope || document;\n var div = doc.createElement('div');\n div.innerHTML = html;\n return $_ca6pc118jkmcwkfs.children(Element$$1.fromDom(div));\n };\n var fromTags = function (tags, scope) {\n return map(tags, function (x) {\n return Element$$1.fromTag(x, scope);\n });\n };\n var fromText$1 = function (texts, scope) {\n return map(texts, function (x) {\n return Element$$1.fromText(x, scope);\n });\n };\n var fromDom$1 = function (nodes) {\n return map(nodes, Element$$1.fromDom);\n };\n var $_bos53z64jkmcwlhd = {\n fromHtml: fromHtml$1,\n fromTags: fromTags,\n fromText: fromText$1,\n fromDom: fromDom$1\n };\n\n var get$6 = function (element) {\n return element.dom().innerHTML;\n };\n var set$3 = function (element, content) {\n var owner = $_ca6pc118jkmcwkfs.owner(element);\n var docDom = owner.dom();\n var fragment = Element$$1.fromDom(docDom.createDocumentFragment());\n var contentElements = $_bos53z64jkmcwlhd.fromHtml(content, docDom);\n $_1ev7t1xjkmcwkky.append(fragment, contentElements);\n $_eualm21wjkmcwkku.empty(element);\n $_f4qt4v1yjkmcwkl2.append(element, fragment);\n };\n var getOuter = function (element) {\n var container = Element$$1.fromTag('div');\n var clone = Element$$1.fromDom(element.dom().cloneNode(true));\n $_f4qt4v1yjkmcwkl2.append(container, clone);\n return get$6(container);\n };\n var $_xg5463jkmcwlhb = {\n get: get$6,\n set: set$3,\n getOuter: getOuter\n };\n\n var undoLevelDocument = Cell(Option.none());\n var lazyTempDocument = function () {\n return undoLevelDocument.get().getOrThunk(function () {\n var doc = document.implementation.createHTMLDocument('undo');\n undoLevelDocument.set(Option.some(doc));\n return doc;\n });\n };\n var hasIframes = function (html) {\n return html.indexOf('') !== -1;\n };\n var createFragmentedLevel = function (fragments) {\n return {\n type: 'fragmented',\n fragments: fragments,\n content: '',\n bookmark: null,\n beforeBookmark: null\n };\n };\n var createCompleteLevel = function (content) {\n return {\n type: 'complete',\n fragments: null,\n content: content,\n bookmark: null,\n beforeBookmark: null\n };\n };\n var createFromEditor = function (editor) {\n var fragments, content, trimmedFragments;\n fragments = $_cyedqm61jkmcwlh3.read(editor.getBody());\n trimmedFragments = bind(fragments, function (html) {\n var trimmed = $_2varuf5zjkmcwlgq.trimInternal(editor.serializer, html);\n return trimmed.length > 0 ? [trimmed] : [];\n });\n content = trimmedFragments.join('');\n return hasIframes(content) ? createFragmentedLevel(trimmedFragments) : createCompleteLevel(content);\n };\n var applyToEditor = function (editor, level, before) {\n if (level.type === 'fragmented') {\n $_cyedqm61jkmcwlh3.write(level.fragments, editor.getBody());\n } else {\n editor.setContent(level.content, { format: 'raw' });\n }\n editor.selection.moveToBookmark(before ? level.beforeBookmark : level.bookmark);\n };\n var getLevelContent = function (level) {\n return level.type === 'fragmented' ? level.fragments.join('') : level.content;\n };\n var getCleanLevelContent = function (level) {\n var elm = Element$$1.fromTag('body', lazyTempDocument());\n $_xg5463jkmcwlhb.set(elm, getLevelContent(level));\n each($_2gqm0n27jkmcwkmi.descendants(elm, '*[data-mce-bogus]'), $_eualm21wjkmcwkku.unwrap);\n return $_xg5463jkmcwlhb.get(elm);\n };\n var hasEqualContent = function (level1, level2) {\n return getLevelContent(level1) === getLevelContent(level2);\n };\n var hasEqualCleanedContent = function (level1, level2) {\n return getCleanLevelContent(level1) === getCleanLevelContent(level2);\n };\n var isEq$3 = function (level1, level2) {\n if (!level1 || !level2) {\n return false;\n } else if (hasEqualContent(level1, level2)) {\n return true;\n } else {\n return hasEqualCleanedContent(level1, level2);\n }\n };\n var $_3cqp0r5yjkmcwlgf = {\n createFragmentedLevel: createFragmentedLevel,\n createCompleteLevel: createCompleteLevel,\n createFromEditor: createFromEditor,\n applyToEditor: applyToEditor,\n isEq: isEq$3\n };\n\n function UndoManager (editor) {\n var self = this, index = 0, data = [], beforeBookmark, isFirstTypedCharacter, locks = 0;\n var isUnlocked = function () {\n return locks === 0;\n };\n var setTyping = function (typing) {\n if (isUnlocked()) {\n self.typing = typing;\n }\n };\n var setDirty = function (state) {\n editor.setDirty(state);\n };\n var addNonTypingUndoLevel = function (e) {\n setTyping(false);\n self.add({}, e);\n };\n var endTyping = function () {\n if (self.typing) {\n setTyping(false);\n self.add();\n }\n };\n editor.on('init', function () {\n self.add();\n });\n editor.on('BeforeExecCommand', function (e) {\n var cmd = e.command;\n if (cmd !== 'Undo' && cmd !== 'Redo' && cmd !== 'mceRepaint') {\n endTyping();\n self.beforeChange();\n }\n });\n editor.on('ExecCommand', function (e) {\n var cmd = e.command;\n if (cmd !== 'Undo' && cmd !== 'Redo' && cmd !== 'mceRepaint') {\n addNonTypingUndoLevel(e);\n }\n });\n editor.on('ObjectResizeStart Cut', function () {\n self.beforeChange();\n });\n editor.on('SaveContent ObjectResized blur', addNonTypingUndoLevel);\n editor.on('DragEnd', addNonTypingUndoLevel);\n editor.on('KeyUp', function (e) {\n var keyCode = e.keyCode;\n if (e.isDefaultPrevented()) {\n return;\n }\n if (keyCode >= 33 && keyCode <= 36 || keyCode >= 37 && keyCode <= 40 || keyCode === 45 || e.ctrlKey) {\n addNonTypingUndoLevel();\n editor.nodeChanged();\n }\n if (keyCode === 46 || keyCode === 8) {\n editor.nodeChanged();\n }\n if (isFirstTypedCharacter && self.typing && $_3cqp0r5yjkmcwlgf.isEq($_3cqp0r5yjkmcwlgf.createFromEditor(editor), data[0]) === false) {\n if (editor.isDirty() === false) {\n setDirty(true);\n editor.fire('change', {\n level: data[0],\n lastLevel: null\n });\n }\n editor.fire('TypingUndo');\n isFirstTypedCharacter = false;\n editor.nodeChanged();\n }\n });\n editor.on('KeyDown', function (e) {\n var keyCode = e.keyCode;\n if (e.isDefaultPrevented()) {\n return;\n }\n if (keyCode >= 33 && keyCode <= 36 || keyCode >= 37 && keyCode <= 40 || keyCode === 45) {\n if (self.typing) {\n addNonTypingUndoLevel(e);\n }\n return;\n }\n var modKey = e.ctrlKey && !e.altKey || e.metaKey;\n if ((keyCode < 16 || keyCode > 20) && keyCode !== 224 && keyCode !== 91 && !self.typing && !modKey) {\n self.beforeChange();\n setTyping(true);\n self.add({}, e);\n isFirstTypedCharacter = true;\n }\n });\n editor.on('MouseDown', function (e) {\n if (self.typing) {\n addNonTypingUndoLevel(e);\n }\n });\n var isInsertReplacementText = function (event) {\n return event.inputType === 'insertReplacementText';\n };\n var isInsertTextDataNull = function (event) {\n return event.inputType === 'insertText' && event.data === null;\n };\n editor.on('input', function (e) {\n if (e.inputType && (isInsertReplacementText(e) || isInsertTextDataNull(e))) {\n addNonTypingUndoLevel(e);\n }\n });\n editor.addShortcut('meta+z', '', 'Undo');\n editor.addShortcut('meta+y,meta+shift+z', '', 'Redo');\n editor.on('AddUndo Undo Redo ClearUndos', function (e) {\n if (!e.isDefaultPrevented()) {\n editor.nodeChanged();\n }\n });\n self = {\n data: data,\n typing: false,\n beforeChange: function () {\n if (isUnlocked()) {\n beforeBookmark = $_aw3zi52jjkmcwkoa.getUndoBookmark(editor.selection);\n }\n },\n add: function (level, event) {\n var i;\n var settings = editor.settings;\n var lastLevel, currentLevel;\n currentLevel = $_3cqp0r5yjkmcwlgf.createFromEditor(editor);\n level = level || {};\n level = $_4ujg4tljkmcwkbk.extend(level, currentLevel);\n if (isUnlocked() === false || editor.removed) {\n return null;\n }\n lastLevel = data[index];\n if (editor.fire('BeforeAddUndo', {\n level: level,\n lastLevel: lastLevel,\n originalEvent: event\n }).isDefaultPrevented()) {\n return null;\n }\n if (lastLevel && $_3cqp0r5yjkmcwlgf.isEq(lastLevel, level)) {\n return null;\n }\n if (data[index]) {\n data[index].beforeBookmark = beforeBookmark;\n }\n if (settings.custom_undo_redo_levels) {\n if (data.length > settings.custom_undo_redo_levels) {\n for (i = 0; i < data.length - 1; i++) {\n data[i] = data[i + 1];\n }\n data.length--;\n index = data.length;\n }\n }\n level.bookmark = $_aw3zi52jjkmcwkoa.getUndoBookmark(editor.selection);\n if (index < data.length - 1) {\n data.length = index + 1;\n }\n data.push(level);\n index = data.length - 1;\n var args = {\n level: level,\n lastLevel: lastLevel,\n originalEvent: event\n };\n editor.fire('AddUndo', args);\n if (index > 0) {\n setDirty(true);\n editor.fire('change', args);\n }\n return level;\n },\n undo: function () {\n var level;\n if (self.typing) {\n self.add();\n self.typing = false;\n setTyping(false);\n }\n if (index > 0) {\n level = data[--index];\n $_3cqp0r5yjkmcwlgf.applyToEditor(editor, level, true);\n setDirty(true);\n editor.fire('undo', { level: level });\n }\n return level;\n },\n redo: function () {\n var level;\n if (index < data.length - 1) {\n level = data[++index];\n $_3cqp0r5yjkmcwlgf.applyToEditor(editor, level, false);\n setDirty(true);\n editor.fire('redo', { level: level });\n }\n return level;\n },\n clear: function () {\n data = [];\n index = 0;\n self.typing = false;\n self.data = data;\n editor.fire('ClearUndos');\n },\n hasUndo: function () {\n return index > 0 || self.typing && data[0] && !$_3cqp0r5yjkmcwlgf.isEq($_3cqp0r5yjkmcwlgf.createFromEditor(editor), data[0]);\n },\n hasRedo: function () {\n return index < data.length - 1 && !self.typing;\n },\n transact: function (callback) {\n endTyping();\n self.beforeChange();\n self.ignore(callback);\n return self.add();\n },\n ignore: function (callback) {\n try {\n locks++;\n callback();\n } finally {\n locks--;\n }\n },\n extra: function (callback1, callback2) {\n var lastLevel, bookmark;\n if (self.transact(callback1)) {\n bookmark = data[index].bookmark;\n lastLevel = data[index - 1];\n $_3cqp0r5yjkmcwlgf.applyToEditor(editor, lastLevel, true);\n if (self.transact(callback2)) {\n data[index - 1].beforeBookmark = bookmark;\n }\n }\n }\n };\n return self;\n }\n\n var isEq$4 = $_dli08w3ajkmcwktg.isEq;\n var matchesUnInheritedFormatSelector = function (ed, node, name) {\n var formatList = ed.formatter.get(name);\n if (formatList) {\n for (var i = 0; i < formatList.length; i++) {\n if (formatList[i].inherit === false && ed.dom.is(node, formatList[i].selector)) {\n return true;\n }\n }\n }\n return false;\n };\n var matchParents = function (editor, node, name, vars) {\n var root = editor.dom.getRoot();\n if (node === root) {\n return false;\n }\n node = editor.dom.getParent(node, function (node) {\n if (matchesUnInheritedFormatSelector(editor, node, name)) {\n return true;\n }\n return node.parentNode === root || !!matchNode(editor, node, name, vars, true);\n });\n return matchNode(editor, node, name, vars);\n };\n var matchName = function (dom, node, format) {\n if (isEq$4(node, format.inline)) {\n return true;\n }\n if (isEq$4(node, format.block)) {\n return true;\n }\n if (format.selector) {\n return node.nodeType === 1 && dom.is(node, format.selector);\n }\n };\n var matchItems = function (dom, node, format, itemName, similar, vars) {\n var key, value;\n var items = format[itemName];\n var i;\n if (format.onmatch) {\n return format.onmatch(node, format, itemName);\n }\n if (items) {\n if (typeof items.length === 'undefined') {\n for (key in items) {\n if (items.hasOwnProperty(key)) {\n if (itemName === 'attributes') {\n value = dom.getAttrib(node, key);\n } else {\n value = $_dli08w3ajkmcwktg.getStyle(dom, node, key);\n }\n if (similar && !value && !format.exact) {\n return;\n }\n if ((!similar || format.exact) && !isEq$4(value, $_dli08w3ajkmcwktg.normalizeStyleValue(dom, $_dli08w3ajkmcwktg.replaceVars(items[key], vars), key))) {\n return;\n }\n }\n }\n } else {\n for (i = 0; i < items.length; i++) {\n if (itemName === 'attributes' ? dom.getAttrib(node, items[i]) : $_dli08w3ajkmcwktg.getStyle(dom, node, items[i])) {\n return format;\n }\n }\n }\n }\n return format;\n };\n var matchNode = function (ed, node, name, vars, similar) {\n var formatList = ed.formatter.get(name);\n var format, i, x, classes;\n var dom = ed.dom;\n if (formatList && node) {\n for (i = 0; i < formatList.length; i++) {\n format = formatList[i];\n if (matchName(ed.dom, node, format) && matchItems(dom, node, format, 'attributes', similar, vars) && matchItems(dom, node, format, 'styles', similar, vars)) {\n if (classes = format.classes) {\n for (x = 0; x < classes.length; x++) {\n if (!ed.dom.hasClass(node, classes[x])) {\n return;\n }\n }\n }\n return format;\n }\n }\n }\n };\n var match = function (editor, name, vars, node) {\n var startNode;\n if (node) {\n return matchParents(editor, node, name, vars);\n }\n node = editor.selection.getNode();\n if (matchParents(editor, node, name, vars)) {\n return true;\n }\n startNode = editor.selection.getStart();\n if (startNode !== node) {\n if (matchParents(editor, startNode, name, vars)) {\n return true;\n }\n }\n return false;\n };\n var matchAll = function (editor, names, vars) {\n var startElement;\n var matchedFormatNames = [];\n var checkedMap = {};\n startElement = editor.selection.getStart();\n editor.dom.getParent(startElement, function (node) {\n var i, name;\n for (i = 0; i < names.length; i++) {\n name = names[i];\n if (!checkedMap[name] && matchNode(editor, node, name, vars)) {\n checkedMap[name] = true;\n matchedFormatNames.push(name);\n }\n }\n }, editor.dom.getRoot());\n return matchedFormatNames;\n };\n var canApply = function (editor, name) {\n var formatList = editor.formatter.get(name);\n var startNode, parents, i, x, selector;\n var dom = editor.dom;\n if (formatList) {\n startNode = editor.selection.getStart();\n parents = $_dli08w3ajkmcwktg.getParents(dom, startNode);\n for (x = formatList.length - 1; x >= 0; x--) {\n selector = formatList[x].selector;\n if (!selector || formatList[x].defaultBlock) {\n return true;\n }\n for (i = parents.length - 1; i >= 0; i--) {\n if (dom.is(parents[i], selector)) {\n return true;\n }\n }\n }\n }\n return false;\n };\n var $_axwnk168jkmcwlim = {\n matchNode: matchNode,\n matchName: matchName,\n match: match,\n matchAll: matchAll,\n canApply: canApply,\n matchesUnInheritedFormatSelector: matchesUnInheritedFormatSelector\n };\n\n var splitText = function (node, offset) {\n return node.splitText(offset);\n };\n var split$1 = function (rng) {\n var startContainer = rng.startContainer, startOffset = rng.startOffset, endContainer = rng.endContainer, endOffset = rng.endOffset;\n if (startContainer === endContainer && $_bjermr1rjkmcwkij.isText(startContainer)) {\n if (startOffset > 0 && startOffset < startContainer.nodeValue.length) {\n endContainer = splitText(startContainer, startOffset);\n startContainer = endContainer.previousSibling;\n if (endOffset > startOffset) {\n endOffset = endOffset - startOffset;\n startContainer = endContainer = splitText(endContainer, endOffset).previousSibling;\n endOffset = endContainer.nodeValue.length;\n startOffset = 0;\n } else {\n endOffset = 0;\n }\n }\n } else {\n if ($_bjermr1rjkmcwkij.isText(startContainer) && startOffset > 0 && startOffset < startContainer.nodeValue.length) {\n startContainer = splitText(startContainer, startOffset);\n startOffset = 0;\n }\n if ($_bjermr1rjkmcwkij.isText(endContainer) && endOffset > 0 && endOffset < endContainer.nodeValue.length) {\n endContainer = splitText(endContainer, endOffset).previousSibling;\n endOffset = endContainer.nodeValue.length;\n }\n }\n return {\n startContainer: startContainer,\n startOffset: startOffset,\n endContainer: endContainer,\n endOffset: endOffset\n };\n };\n var $_bnmynr69jkmcwlir = { split: split$1 };\n\n var ZWSP$1 = $_cadvcr2pjkmcwkph.ZWSP;\n var CARET_ID$1 = '_mce_caret';\n var importNode = function (ownerDocument, node) {\n return ownerDocument.importNode(node, true);\n };\n var getEmptyCaretContainers = function (node) {\n var nodes = [];\n while (node) {\n if (node.nodeType === 3 && node.nodeValue !== ZWSP$1 || node.childNodes.length > 1) {\n return [];\n }\n if (node.nodeType === 1) {\n nodes.push(node);\n }\n node = node.firstChild;\n }\n return nodes;\n };\n var isCaretContainerEmpty = function (node) {\n return getEmptyCaretContainers(node).length > 0;\n };\n var findFirstTextNode = function (node) {\n var walker;\n if (node) {\n walker = new TreeWalker(node, node);\n for (node = walker.current(); node; node = walker.next()) {\n if (node.nodeType === 3) {\n return node;\n }\n }\n }\n return null;\n };\n var createCaretContainer = function (fill) {\n var caretContainer = Element$$1.fromTag('span');\n $_29helg15jkmcwkf0.setAll(caretContainer, {\n 'id': CARET_ID$1,\n 'data-mce-bogus': '1',\n 'data-mce-type': 'format-caret'\n });\n if (fill) {\n $_f4qt4v1yjkmcwkl2.append(caretContainer, Element$$1.fromText(ZWSP$1));\n }\n return caretContainer;\n };\n var trimZwspFromCaretContainer = function (caretContainerNode) {\n var textNode = findFirstTextNode(caretContainerNode);\n if (textNode && textNode.nodeValue.charAt(0) === ZWSP$1) {\n textNode.deleteData(0, 1);\n }\n return textNode;\n };\n var removeCaretContainerNode = function (dom, selection, node, moveCaret) {\n var rng, block, textNode;\n rng = selection.getRng(true);\n block = dom.getParent(node, dom.isBlock);\n if (isCaretContainerEmpty(node)) {\n if (moveCaret !== false) {\n rng.setStartBefore(node);\n rng.setEndBefore(node);\n }\n dom.remove(node);\n } else {\n textNode = trimZwspFromCaretContainer(node);\n if (rng.startContainer === textNode && rng.startOffset > 0) {\n rng.setStart(textNode, rng.startOffset - 1);\n }\n if (rng.endContainer === textNode && rng.endOffset > 0) {\n rng.setEnd(textNode, rng.endOffset - 1);\n }\n dom.remove(node, true);\n }\n if (block && dom.isEmpty(block)) {\n $_zygeg3ljkmcwkvo.fillWithPaddingBr(Element$$1.fromDom(block));\n }\n selection.setRng(rng);\n };\n var removeCaretContainer = function (body, dom, selection, node, moveCaret) {\n if (!node) {\n node = getParentCaretContainer(body, selection.getStart());\n if (!node) {\n while (node = dom.get(CARET_ID$1)) {\n removeCaretContainerNode(dom, selection, node, false);\n }\n }\n } else {\n removeCaretContainerNode(dom, selection, node, moveCaret);\n }\n };\n var insertCaretContainerNode = function (editor, caretContainer, formatNode) {\n var dom = editor.dom, block = dom.getParent(formatNode, $_fl2rax2ljkmcwkot.curry($_dli08w3ajkmcwktg.isTextBlock, editor));\n if (block && dom.isEmpty(block)) {\n formatNode.parentNode.replaceChild(caretContainer, formatNode);\n } else {\n $_zygeg3ljkmcwkvo.removeTrailingBr(Element$$1.fromDom(formatNode));\n if (dom.isEmpty(formatNode)) {\n formatNode.parentNode.replaceChild(caretContainer, formatNode);\n } else {\n dom.insertAfter(caretContainer, formatNode);\n }\n }\n };\n var appendNode = function (parentNode, node) {\n parentNode.appendChild(node);\n return node;\n };\n var insertFormatNodesIntoCaretContainer = function (formatNodes, caretContainer) {\n var innerMostFormatNode = foldr(formatNodes, function (parentNode, formatNode) {\n return appendNode(parentNode, formatNode.cloneNode(false));\n }, caretContainer);\n return appendNode(innerMostFormatNode, innerMostFormatNode.ownerDocument.createTextNode(ZWSP$1));\n };\n var applyCaretFormat = function (editor, name, vars) {\n var rng, caretContainer, textNode, offset, bookmark, container, text;\n var selection = editor.selection;\n rng = selection.getRng(true);\n offset = rng.startOffset;\n container = rng.startContainer;\n text = container.nodeValue;\n caretContainer = getParentCaretContainer(editor.getBody(), selection.getStart());\n if (caretContainer) {\n textNode = findFirstTextNode(caretContainer);\n }\n var wordcharRegex = /[^\\s\\u00a0\\u00ad\\u200b\\ufeff]/;\n if (text && offset > 0 && offset < text.length && wordcharRegex.test(text.charAt(offset)) && wordcharRegex.test(text.charAt(offset - 1))) {\n bookmark = selection.getBookmark();\n rng.collapse(true);\n rng = $_97afwh2ujkmcwkpw.expandRng(editor, rng, editor.formatter.get(name));\n rng = $_bnmynr69jkmcwlir.split(rng);\n editor.formatter.apply(name, vars, rng);\n selection.moveToBookmark(bookmark);\n } else {\n if (!caretContainer || textNode.nodeValue !== ZWSP$1) {\n caretContainer = importNode(editor.getDoc(), createCaretContainer(true).dom());\n textNode = caretContainer.firstChild;\n rng.insertNode(caretContainer);\n offset = 1;\n editor.formatter.apply(name, vars, caretContainer);\n } else {\n editor.formatter.apply(name, vars, caretContainer);\n }\n selection.setCursorLocation(textNode, offset);\n }\n };\n var removeCaretFormat = function (editor, name, vars, similar) {\n var dom = editor.dom, selection = editor.selection;\n var container, offset, bookmark;\n var hasContentAfter, node, formatNode;\n var parents = [], rng = selection.getRng();\n var caretContainer;\n container = rng.startContainer;\n offset = rng.startOffset;\n node = container;\n if (container.nodeType === 3) {\n if (offset !== container.nodeValue.length) {\n hasContentAfter = true;\n }\n node = node.parentNode;\n }\n while (node) {\n if ($_axwnk168jkmcwlim.matchNode(editor, node, name, vars, similar)) {\n formatNode = node;\n break;\n }\n if (node.nextSibling) {\n hasContentAfter = true;\n }\n parents.push(node);\n node = node.parentNode;\n }\n if (!formatNode) {\n return;\n }\n if (hasContentAfter) {\n bookmark = selection.getBookmark();\n rng.collapse(true);\n var expandedRng = $_97afwh2ujkmcwkpw.expandRng(editor, rng, editor.formatter.get(name), true);\n expandedRng = $_bnmynr69jkmcwlir.split(expandedRng);\n editor.formatter.remove(name, vars, expandedRng);\n selection.moveToBookmark(bookmark);\n } else {\n caretContainer = getParentCaretContainer(editor.getBody(), formatNode);\n var newCaretContainer = createCaretContainer(false).dom();\n var caretNode = insertFormatNodesIntoCaretContainer(parents, newCaretContainer);\n if (caretContainer) {\n insertCaretContainerNode(editor, newCaretContainer, caretContainer);\n } else {\n insertCaretContainerNode(editor, newCaretContainer, formatNode);\n }\n removeCaretContainerNode(dom, selection, caretContainer, false);\n selection.setCursorLocation(caretNode, 1);\n if (dom.isEmpty(formatNode)) {\n dom.remove(formatNode);\n }\n }\n };\n var disableCaretContainer = function (body, dom, selection, keyCode) {\n removeCaretContainer(body, dom, selection, null, false);\n if (keyCode === 8 && selection.isCollapsed() && selection.getStart().innerHTML === ZWSP$1) {\n removeCaretContainer(body, dom, selection, getParentCaretContainer(body, selection.getStart()));\n }\n if (keyCode === 37 || keyCode === 39) {\n removeCaretContainer(body, dom, selection, getParentCaretContainer(body, selection.getStart()));\n }\n };\n var setup$4 = function (editor) {\n var dom = editor.dom, selection = editor.selection;\n var body = editor.getBody();\n editor.on('mouseup keydown', function (e) {\n disableCaretContainer(body, dom, selection, e.keyCode);\n });\n };\n var replaceWithCaretFormat = function (targetNode, formatNodes) {\n var caretContainer = createCaretContainer(false);\n var innerMost = insertFormatNodesIntoCaretContainer(formatNodes, caretContainer.dom());\n $_f4qt4v1yjkmcwkl2.before(Element$$1.fromDom(targetNode), caretContainer);\n $_eualm21wjkmcwkku.remove(Element$$1.fromDom(targetNode));\n return CaretPosition$1(innerMost, 0);\n };\n var isFormatElement = function (editor, element) {\n var inlineElements = editor.schema.getTextInlineElements();\n return inlineElements.hasOwnProperty($_2xwdjv11jkmcwke0.name(element)) && !isCaretNode(element.dom()) && !$_bjermr1rjkmcwkij.isBogus(element.dom());\n };\n\n var postProcessHooks = {};\n var filter$2 = $_9g1fibmjkmcwkbu.filter;\n var each$12 = $_9g1fibmjkmcwkbu.each;\n var addPostProcessHook = function (name, hook) {\n var hooks = postProcessHooks[name];\n if (!hooks) {\n postProcessHooks[name] = hooks = [];\n }\n postProcessHooks[name].push(hook);\n };\n var postProcess = function (name, editor) {\n each$12(postProcessHooks[name], function (hook) {\n hook(editor);\n });\n };\n addPostProcessHook('pre', function (editor) {\n var rng = editor.selection.getRng();\n var isPre, blocks;\n var hasPreSibling = function (pre) {\n return isPre(pre.previousSibling) && $_9g1fibmjkmcwkbu.indexOf(blocks, pre.previousSibling) !== -1;\n };\n var joinPre = function (pre1, pre2) {\n DomQuery(pre2).remove();\n DomQuery(pre1).append('

').append(pre2.childNodes);\n };\n isPre = $_bjermr1rjkmcwkij.matchNodeNames('pre');\n if (!rng.collapsed) {\n blocks = editor.selection.getSelectedBlocks();\n each$12(filter$2(filter$2(blocks, isPre), hasPreSibling), function (pre) {\n joinPre(pre.previousSibling, pre);\n });\n }\n });\n var $_dp9y746ajkmcwlit = { postProcess: postProcess };\n\n var MCE_ATTR_RE = /^(src|href|style)$/;\n var each$13 = $_4ujg4tljkmcwkbk.each;\n var isEq$5 = $_dli08w3ajkmcwktg.isEq;\n var isTableCell$4 = function (node) {\n return /^(TH|TD)$/.test(node.nodeName);\n };\n var getContainer = function (ed, rng, start) {\n var container, offset, lastIdx;\n container = rng[start ? 'startContainer' : 'endContainer'];\n offset = rng[start ? 'startOffset' : 'endOffset'];\n if ($_bjermr1rjkmcwkij.isElement(container)) {\n lastIdx = container.childNodes.length - 1;\n if (!start && offset) {\n offset--;\n }\n container = container.childNodes[offset > lastIdx ? lastIdx : offset];\n }\n if ($_bjermr1rjkmcwkij.isText(container) && start && offset >= container.nodeValue.length) {\n container = new TreeWalker(container, ed.getBody()).next() || container;\n }\n if ($_bjermr1rjkmcwkij.isText(container) && !start && offset === 0) {\n container = new TreeWalker(container, ed.getBody()).prev() || container;\n }\n return container;\n };\n var wrap$2 = function (dom, node, name, attrs) {\n var wrapper = dom.create(name, attrs);\n node.parentNode.insertBefore(wrapper, node);\n wrapper.appendChild(node);\n return wrapper;\n };\n var matchName$1 = function (dom, node, format) {\n if (isEq$5(node, format.inline)) {\n return true;\n }\n if (isEq$5(node, format.block)) {\n return true;\n }\n if (format.selector) {\n return $_bjermr1rjkmcwkij.isElement(node) && dom.is(node, format.selector);\n }\n };\n var isColorFormatAndAnchor = function (node, format) {\n return format.links && node.tagName === 'A';\n };\n var find$4 = function (dom, node, next, inc) {\n node = $_dli08w3ajkmcwktg.getNonWhiteSpaceSibling(node, next, inc);\n return !node || (node.nodeName === 'BR' || dom.isBlock(node));\n };\n var removeNode$1 = function (ed, node, format) {\n var parentNode = node.parentNode;\n var rootBlockElm;\n var dom = ed.dom, forcedRootBlock = ed.settings.forced_root_block;\n if (format.block) {\n if (!forcedRootBlock) {\n if (dom.isBlock(node) && !dom.isBlock(parentNode)) {\n if (!find$4(dom, node, false) && !find$4(dom, node.firstChild, true, 1)) {\n node.insertBefore(dom.create('br'), node.firstChild);\n }\n if (!find$4(dom, node, true) && !find$4(dom, node.lastChild, false, 1)) {\n node.appendChild(dom.create('br'));\n }\n }\n } else {\n if (parentNode === dom.getRoot()) {\n if (!format.list_block || !isEq$5(node, format.list_block)) {\n each$13($_4ujg4tljkmcwkbk.grep(node.childNodes), function (node) {\n if ($_dli08w3ajkmcwktg.isValid(ed, forcedRootBlock, node.nodeName.toLowerCase())) {\n if (!rootBlockElm) {\n rootBlockElm = wrap$2(dom, node, forcedRootBlock);\n dom.setAttribs(rootBlockElm, ed.settings.forced_root_block_attrs);\n } else {\n rootBlockElm.appendChild(node);\n }\n } else {\n rootBlockElm = 0;\n }\n });\n }\n }\n }\n }\n if (format.selector && format.inline && !isEq$5(format.inline, node)) {\n return;\n }\n dom.remove(node, 1);\n };\n var removeFormat = function (ed, format, vars, node, compareNode) {\n var i, attrs, stylesModified;\n var dom = ed.dom;\n if (!matchName$1(dom, node, format) && !isColorFormatAndAnchor(node, format)) {\n return false;\n }\n if (format.remove !== 'all') {\n each$13(format.styles, function (value, name) {\n value = $_dli08w3ajkmcwktg.normalizeStyleValue(dom, $_dli08w3ajkmcwktg.replaceVars(value, vars), name);\n if (typeof name === 'number') {\n name = value;\n compareNode = 0;\n }\n if (format.remove_similar || (!compareNode || isEq$5($_dli08w3ajkmcwktg.getStyle(dom, compareNode, name), value))) {\n dom.setStyle(node, name, '');\n }\n stylesModified = 1;\n });\n if (stylesModified && dom.getAttrib(node, 'style') === '') {\n node.removeAttribute('style');\n node.removeAttribute('data-mce-style');\n }\n each$13(format.attributes, function (value, name) {\n var valueOut;\n value = $_dli08w3ajkmcwktg.replaceVars(value, vars);\n if (typeof name === 'number') {\n name = value;\n compareNode = 0;\n }\n if (!compareNode || isEq$5(dom.getAttrib(compareNode, name), value)) {\n if (name === 'class') {\n value = dom.getAttrib(node, name);\n if (value) {\n valueOut = '';\n each$13(value.split(/\\s+/), function (cls) {\n if (/mce\\-\\w+/.test(cls)) {\n valueOut += (valueOut ? ' ' : '') + cls;\n }\n });\n if (valueOut) {\n dom.setAttrib(node, name, valueOut);\n return;\n }\n }\n }\n if (name === 'class') {\n node.removeAttribute('className');\n }\n if (MCE_ATTR_RE.test(name)) {\n node.removeAttribute('data-mce-' + name);\n }\n node.removeAttribute(name);\n }\n });\n each$13(format.classes, function (value) {\n value = $_dli08w3ajkmcwktg.replaceVars(value, vars);\n if (!compareNode || dom.hasClass(compareNode, value)) {\n dom.removeClass(node, value);\n }\n });\n attrs = dom.getAttribs(node);\n for (i = 0; i < attrs.length; i++) {\n var attrName = attrs[i].nodeName;\n if (attrName.indexOf('_') !== 0 && attrName.indexOf('data-') !== 0) {\n return false;\n }\n }\n }\n if (format.remove !== 'none') {\n removeNode$1(ed, node, format);\n return true;\n }\n };\n var findFormatRoot = function (editor, container, name, vars, similar) {\n var formatRoot;\n each$13($_dli08w3ajkmcwktg.getParents(editor.dom, container.parentNode).reverse(), function (parent) {\n var format;\n if (!formatRoot && parent.id !== '_start' && parent.id !== '_end') {\n format = $_axwnk168jkmcwlim.matchNode(editor, parent, name, vars, similar);\n if (format && format.split !== false) {\n formatRoot = parent;\n }\n }\n });\n return formatRoot;\n };\n var wrapAndSplit = function (editor, formatList, formatRoot, container, target, split, format, vars) {\n var parent, clone, lastClone, firstClone, i, formatRootParent;\n var dom = editor.dom;\n if (formatRoot) {\n formatRootParent = formatRoot.parentNode;\n for (parent = container.parentNode; parent && parent !== formatRootParent; parent = parent.parentNode) {\n clone = dom.clone(parent, false);\n for (i = 0; i < formatList.length; i++) {\n if (removeFormat(editor, formatList[i], vars, clone, clone)) {\n clone = 0;\n break;\n }\n }\n if (clone) {\n if (lastClone) {\n clone.appendChild(lastClone);\n }\n if (!firstClone) {\n firstClone = clone;\n }\n lastClone = clone;\n }\n }\n if (split && (!format.mixed || !dom.isBlock(formatRoot))) {\n container = dom.split(formatRoot, container);\n }\n if (lastClone) {\n target.parentNode.insertBefore(lastClone, target);\n firstClone.appendChild(target);\n }\n }\n return container;\n };\n var remove$8 = function (ed, name, vars, node, similar) {\n var formatList = ed.formatter.get(name), format = formatList[0];\n var bookmark, rng, contentEditable = true;\n var dom = ed.dom;\n var selection = ed.selection;\n var splitToFormatRoot = function (container) {\n var formatRoot = findFormatRoot(ed, container, name, vars, similar);\n return wrapAndSplit(ed, formatList, formatRoot, container, container, true, format, vars);\n };\n var process = function (node) {\n var children, i, l, lastContentEditable, hasContentEditableState;\n if ($_bjermr1rjkmcwkij.isElement(node) && dom.getContentEditable(node)) {\n lastContentEditable = contentEditable;\n contentEditable = dom.getContentEditable(node) === 'true';\n hasContentEditableState = true;\n }\n children = $_4ujg4tljkmcwkbk.grep(node.childNodes);\n if (contentEditable && !hasContentEditableState) {\n for (i = 0, l = formatList.length; i < l; i++) {\n if (removeFormat(ed, formatList[i], vars, node, node)) {\n break;\n }\n }\n }\n if (format.deep) {\n if (children.length) {\n for (i = 0, l = children.length; i < l; i++) {\n process(children[i]);\n }\n if (hasContentEditableState) {\n contentEditable = lastContentEditable;\n }\n }\n }\n };\n var unwrap = function (start) {\n var node = dom.get(start ? '_start' : '_end');\n var out = node[start ? 'firstChild' : 'lastChild'];\n if ($_e4btcc2vjkmcwkq3.isBookmarkNode(out)) {\n out = out[start ? 'firstChild' : 'lastChild'];\n }\n if ($_bjermr1rjkmcwkij.isText(out) && out.data.length === 0) {\n out = start ? node.previousSibling || node.nextSibling : node.nextSibling || node.previousSibling;\n }\n dom.remove(node, true);\n return out;\n };\n var removeRngStyle = function (rng) {\n var startContainer, endContainer;\n var commonAncestorContainer = rng.commonAncestorContainer;\n rng = $_97afwh2ujkmcwkpw.expandRng(ed, rng, formatList, true);\n if (format.split) {\n startContainer = getContainer(ed, rng, true);\n endContainer = getContainer(ed, rng);\n if (startContainer !== endContainer) {\n if (/^(TR|TH|TD)$/.test(startContainer.nodeName) && startContainer.firstChild) {\n if (startContainer.nodeName === 'TR') {\n startContainer = startContainer.firstChild.firstChild || startContainer;\n } else {\n startContainer = startContainer.firstChild || startContainer;\n }\n }\n if (commonAncestorContainer && /^T(HEAD|BODY|FOOT|R)$/.test(commonAncestorContainer.nodeName) && isTableCell$4(endContainer) && endContainer.firstChild) {\n endContainer = endContainer.firstChild || endContainer;\n }\n if (dom.isChildOf(startContainer, endContainer) && startContainer !== endContainer && !dom.isBlock(endContainer) && !isTableCell$4(startContainer) && !isTableCell$4(endContainer)) {\n startContainer = wrap$2(dom, startContainer, 'span', {\n 'id': '_start',\n 'data-mce-type': 'bookmark'\n });\n splitToFormatRoot(startContainer);\n startContainer = unwrap(true);\n return;\n }\n startContainer = wrap$2(dom, startContainer, 'span', {\n 'id': '_start',\n 'data-mce-type': 'bookmark'\n });\n endContainer = wrap$2(dom, endContainer, 'span', {\n 'id': '_end',\n 'data-mce-type': 'bookmark'\n });\n splitToFormatRoot(startContainer);\n splitToFormatRoot(endContainer);\n startContainer = unwrap(true);\n endContainer = unwrap();\n } else {\n startContainer = endContainer = splitToFormatRoot(startContainer);\n }\n rng.startContainer = startContainer.parentNode ? startContainer.parentNode : startContainer;\n rng.startOffset = dom.nodeIndex(startContainer);\n rng.endContainer = endContainer.parentNode ? endContainer.parentNode : endContainer;\n rng.endOffset = dom.nodeIndex(endContainer) + 1;\n }\n $_cuckrv3bjkmcwktk.walk(dom, rng, function (nodes) {\n each$13(nodes, function (node) {\n process(node);\n if ($_bjermr1rjkmcwkij.isElement(node) && ed.dom.getStyle(node, 'text-decoration') === 'underline' && node.parentNode && $_dli08w3ajkmcwktg.getTextDecoration(dom, node.parentNode) === 'underline') {\n removeFormat(ed, {\n deep: false,\n exact: true,\n inline: 'span',\n styles: { textDecoration: 'underline' }\n }, null, node);\n }\n });\n });\n };\n if (node) {\n if (node.nodeType) {\n rng = dom.createRng();\n rng.setStartBefore(node);\n rng.setEndAfter(node);\n removeRngStyle(rng);\n } else {\n removeRngStyle(node);\n }\n return;\n }\n if (dom.getContentEditable(selection.getNode()) === 'false') {\n node = selection.getNode();\n for (var i = 0, l = formatList.length; i < l; i++) {\n if (formatList[i].ceFalseOverride) {\n if (removeFormat(ed, formatList[i], vars, node, node)) {\n break;\n }\n }\n }\n return;\n }\n if (!selection.isCollapsed() || !format.inline || dom.select('td[data-mce-selected],th[data-mce-selected]').length) {\n bookmark = $_aw3zi52jjkmcwkoa.getPersistentBookmark(ed.selection, true);\n removeRngStyle(selection.getRng());\n selection.moveToBookmark(bookmark);\n if (format.inline && $_axwnk168jkmcwlim.match(ed, name, vars, selection.getStart())) {\n $_dli08w3ajkmcwktg.moveStart(dom, selection, selection.getRng());\n }\n ed.nodeChanged();\n } else {\n removeCaretFormat(ed, name, vars, similar);\n }\n };\n var $_2vklhc6cjkmcwlj5 = {\n removeFormat: removeFormat,\n remove: remove$8\n };\n\n var each$14 = $_4ujg4tljkmcwkbk.each;\n var isElementNode = function (node) {\n return node && node.nodeType === 1 && !$_e4btcc2vjkmcwkq3.isBookmarkNode(node) && !isCaretNode(node) && !$_bjermr1rjkmcwkij.isBogus(node);\n };\n var findElementSibling = function (node, siblingName) {\n var sibling;\n for (sibling = node; sibling; sibling = sibling[siblingName]) {\n if (sibling.nodeType === 3 && sibling.nodeValue.length !== 0) {\n return node;\n }\n if (sibling.nodeType === 1 && !$_e4btcc2vjkmcwkq3.isBookmarkNode(sibling)) {\n return sibling;\n }\n }\n return node;\n };\n var mergeSiblingsNodes = function (dom, prev, next) {\n var sibling, tmpSibling;\n var elementUtils = new ElementUtils(dom);\n if (prev && next) {\n prev = findElementSibling(prev, 'previousSibling');\n next = findElementSibling(next, 'nextSibling');\n if (elementUtils.compare(prev, next)) {\n for (sibling = prev.nextSibling; sibling && sibling !== next;) {\n tmpSibling = sibling;\n sibling = sibling.nextSibling;\n prev.appendChild(tmpSibling);\n }\n dom.remove(next);\n $_4ujg4tljkmcwkbk.each($_4ujg4tljkmcwkbk.grep(next.childNodes), function (node) {\n prev.appendChild(node);\n });\n return prev;\n }\n }\n return next;\n };\n var processChildElements = function (node, filter, process) {\n each$14(node.childNodes, function (node) {\n if (isElementNode(node)) {\n if (filter(node)) {\n process(node);\n }\n if (node.hasChildNodes()) {\n processChildElements(node, filter, process);\n }\n }\n });\n };\n var hasStyle = function (dom, name) {\n return curry(function (name, node) {\n return !!(node && $_dli08w3ajkmcwktg.getStyle(dom, node, name));\n }, name);\n };\n var applyStyle = function (dom, name, value) {\n return curry(function (name, value, node) {\n dom.setStyle(node, name, value);\n if (node.getAttribute('style') === '') {\n node.removeAttribute('style');\n }\n unwrapEmptySpan(dom, node);\n }, name, value);\n };\n var unwrapEmptySpan = function (dom, node) {\n if (node.nodeName === 'SPAN' && dom.getAttribs(node).length === 0) {\n dom.remove(node, true);\n }\n };\n var processUnderlineAndColor = function (dom, node) {\n var textDecoration;\n if (node.nodeType === 1 && node.parentNode && node.parentNode.nodeType === 1) {\n textDecoration = $_dli08w3ajkmcwktg.getTextDecoration(dom, node.parentNode);\n if (dom.getStyle(node, 'color') && textDecoration) {\n dom.setStyle(node, 'text-decoration', textDecoration);\n } else if (dom.getStyle(node, 'text-decoration') === textDecoration) {\n dom.setStyle(node, 'text-decoration', null);\n }\n }\n };\n var mergeUnderlineAndColor = function (dom, format, vars, node) {\n if (format.styles.color || format.styles.textDecoration) {\n $_4ujg4tljkmcwkbk.walk(node, curry(processUnderlineAndColor, dom), 'childNodes');\n processUnderlineAndColor(dom, node);\n }\n };\n var mergeBackgroundColorAndFontSize = function (dom, format, vars, node) {\n if (format.styles && format.styles.backgroundColor) {\n processChildElements(node, hasStyle(dom, 'fontSize'), applyStyle(dom, 'backgroundColor', $_dli08w3ajkmcwktg.replaceVars(format.styles.backgroundColor, vars)));\n }\n };\n var mergeSubSup = function (dom, format, vars, node) {\n if (format.inline === 'sub' || format.inline === 'sup') {\n processChildElements(node, hasStyle(dom, 'fontSize'), applyStyle(dom, 'fontSize', ''));\n dom.remove(dom.select(format.inline === 'sup' ? 'sub' : 'sup', node), true);\n }\n };\n var mergeSiblings = function (dom, format, vars, node) {\n if (node && format.merge_siblings !== false) {\n node = mergeSiblingsNodes(dom, $_dli08w3ajkmcwktg.getNonWhiteSpaceSibling(node), node);\n node = mergeSiblingsNodes(dom, node, $_dli08w3ajkmcwktg.getNonWhiteSpaceSibling(node, true));\n }\n };\n var clearChildStyles = function (dom, format, node) {\n if (format.clear_child_styles) {\n var selector = format.links ? '*:not(a)' : '*';\n each$14(dom.select(selector, node), function (node) {\n if (isElementNode(node)) {\n each$14(format.styles, function (value, name) {\n dom.setStyle(node, name, '');\n });\n }\n });\n }\n };\n var mergeWithChildren = function (editor, formatList, vars, node) {\n each$14(formatList, function (format) {\n each$14(editor.dom.select(format.inline, node), function (child) {\n if (!isElementNode(child)) {\n return;\n }\n $_2vklhc6cjkmcwlj5.removeFormat(editor, format, vars, child, format.exact ? child : null);\n });\n clearChildStyles(editor.dom, format, node);\n });\n };\n var mergeWithParents = function (editor, format, name, vars, node) {\n if ($_axwnk168jkmcwlim.matchNode(editor, node.parentNode, name, vars)) {\n if ($_2vklhc6cjkmcwlj5.removeFormat(editor, format, vars, node)) {\n return;\n }\n }\n if (format.merge_with_parents) {\n editor.dom.getParent(node.parentNode, function (parent) {\n if ($_axwnk168jkmcwlim.matchNode(editor, parent, name, vars)) {\n $_2vklhc6cjkmcwlj5.removeFormat(editor, format, vars, node);\n return true;\n }\n });\n }\n };\n var $_ehzows6bjkmcwliw = {\n mergeWithChildren: mergeWithChildren,\n mergeUnderlineAndColor: mergeUnderlineAndColor,\n mergeBackgroundColorAndFontSize: mergeBackgroundColorAndFontSize,\n mergeSubSup: mergeSubSup,\n mergeSiblings: mergeSiblings,\n mergeWithParents: mergeWithParents\n };\n\n var each$15 = $_4ujg4tljkmcwkbk.each;\n var isElementNode$1 = function (node) {\n return node && node.nodeType === 1 && !$_e4btcc2vjkmcwkq3.isBookmarkNode(node) && !isCaretNode(node) && !$_bjermr1rjkmcwkij.isBogus(node);\n };\n var applyFormat = function (ed, name, vars, node) {\n var formatList = ed.formatter.get(name);\n var format = formatList[0];\n var bookmark, rng;\n var isCollapsed = !node && ed.selection.isCollapsed();\n var dom = ed.dom, selection = ed.selection;\n var setElementFormat = function (elm, fmt) {\n fmt = fmt || format;\n if (elm) {\n if (fmt.onformat) {\n fmt.onformat(elm, fmt, vars, node);\n }\n each$15(fmt.styles, function (value, name) {\n dom.setStyle(elm, name, $_dli08w3ajkmcwktg.replaceVars(value, vars));\n });\n if (fmt.styles) {\n var styleVal = dom.getAttrib(elm, 'style');\n if (styleVal) {\n elm.setAttribute('data-mce-style', styleVal);\n }\n }\n each$15(fmt.attributes, function (value, name) {\n dom.setAttrib(elm, name, $_dli08w3ajkmcwktg.replaceVars(value, vars));\n });\n each$15(fmt.classes, function (value) {\n value = $_dli08w3ajkmcwktg.replaceVars(value, vars);\n if (!dom.hasClass(elm, value)) {\n dom.addClass(elm, value);\n }\n });\n }\n };\n var applyNodeStyle = function (formatList, node) {\n var found = false;\n if (!format.selector) {\n return false;\n }\n each$15(formatList, function (format) {\n if ('collapsed' in format && format.collapsed !== isCollapsed) {\n return;\n }\n if (dom.is(node, format.selector) && !isCaretNode(node)) {\n setElementFormat(node, format);\n found = true;\n return false;\n }\n });\n return found;\n };\n var applyRngStyle = function (dom, rng, bookmark, nodeSpecific) {\n var newWrappers = [];\n var wrapName, wrapElm, contentEditable = true;\n wrapName = format.inline || format.block;\n wrapElm = dom.create(wrapName);\n setElementFormat(wrapElm);\n $_cuckrv3bjkmcwktk.walk(dom, rng, function (nodes) {\n var currentWrapElm;\n var process = function (node) {\n var nodeName, parentName, hasContentEditableState, lastContentEditable;\n lastContentEditable = contentEditable;\n nodeName = node.nodeName.toLowerCase();\n parentName = node.parentNode.nodeName.toLowerCase();\n if (node.nodeType === 1 && dom.getContentEditable(node)) {\n lastContentEditable = contentEditable;\n contentEditable = dom.getContentEditable(node) === 'true';\n hasContentEditableState = true;\n }\n if ($_dli08w3ajkmcwktg.isEq(nodeName, 'br')) {\n currentWrapElm = 0;\n if (format.block) {\n dom.remove(node);\n }\n return;\n }\n if (format.wrapper && $_axwnk168jkmcwlim.matchNode(ed, node, name, vars)) {\n currentWrapElm = 0;\n return;\n }\n if (contentEditable && !hasContentEditableState && format.block && !format.wrapper && $_dli08w3ajkmcwktg.isTextBlock(ed, nodeName) && $_dli08w3ajkmcwktg.isValid(ed, parentName, wrapName)) {\n node = dom.rename(node, wrapName);\n setElementFormat(node);\n newWrappers.push(node);\n currentWrapElm = 0;\n return;\n }\n if (format.selector) {\n var found = applyNodeStyle(formatList, node);\n if (!format.inline || found) {\n currentWrapElm = 0;\n return;\n }\n }\n if (contentEditable && !hasContentEditableState && $_dli08w3ajkmcwktg.isValid(ed, wrapName, nodeName) && $_dli08w3ajkmcwktg.isValid(ed, parentName, wrapName) && !(!nodeSpecific && node.nodeType === 3 && node.nodeValue.length === 1 && node.nodeValue.charCodeAt(0) === 65279) && !isCaretNode(node) && (!format.inline || !dom.isBlock(node))) {\n if (!currentWrapElm) {\n currentWrapElm = dom.clone(wrapElm, false);\n node.parentNode.insertBefore(currentWrapElm, node);\n newWrappers.push(currentWrapElm);\n }\n currentWrapElm.appendChild(node);\n } else {\n currentWrapElm = 0;\n each$15($_4ujg4tljkmcwkbk.grep(node.childNodes), process);\n if (hasContentEditableState) {\n contentEditable = lastContentEditable;\n }\n currentWrapElm = 0;\n }\n };\n each$15(nodes, process);\n });\n if (format.links === true) {\n each$15(newWrappers, function (node) {\n var process = function (node) {\n if (node.nodeName === 'A') {\n setElementFormat(node, format);\n }\n each$15($_4ujg4tljkmcwkbk.grep(node.childNodes), process);\n };\n process(node);\n });\n }\n each$15(newWrappers, function (node) {\n var childCount;\n var getChildCount = function (node) {\n var count = 0;\n each$15(node.childNodes, function (node) {\n if (!$_dli08w3ajkmcwktg.isWhiteSpaceNode(node) && !$_e4btcc2vjkmcwkq3.isBookmarkNode(node)) {\n count++;\n }\n });\n return count;\n };\n var getChildElementNode = function (root) {\n var child = false;\n each$15(root.childNodes, function (node) {\n if (isElementNode$1(node)) {\n child = node;\n return false;\n }\n });\n return child;\n };\n var mergeStyles = function (node) {\n var child, clone;\n child = getChildElementNode(node);\n if (child && !$_e4btcc2vjkmcwkq3.isBookmarkNode(child) && $_axwnk168jkmcwlim.matchName(dom, child, format)) {\n clone = dom.clone(child, false);\n setElementFormat(clone);\n dom.replace(clone, node, true);\n dom.remove(child, 1);\n }\n return clone || node;\n };\n childCount = getChildCount(node);\n if ((newWrappers.length > 1 || !dom.isBlock(node)) && childCount === 0) {\n dom.remove(node, 1);\n return;\n }\n if (format.inline || format.wrapper) {\n if (!format.exact && childCount === 1) {\n node = mergeStyles(node);\n }\n $_ehzows6bjkmcwliw.mergeWithChildren(ed, formatList, vars, node);\n $_ehzows6bjkmcwliw.mergeWithParents(ed, format, name, vars, node);\n $_ehzows6bjkmcwliw.mergeBackgroundColorAndFontSize(dom, format, vars, node);\n $_ehzows6bjkmcwliw.mergeSubSup(dom, format, vars, node);\n $_ehzows6bjkmcwliw.mergeSiblings(dom, format, vars, node);\n }\n });\n };\n if (dom.getContentEditable(selection.getNode()) === 'false') {\n node = selection.getNode();\n for (var i = 0, l = formatList.length; i < l; i++) {\n if (formatList[i].ceFalseOverride && dom.is(node, formatList[i].selector)) {\n setElementFormat(node, formatList[i]);\n return;\n }\n }\n return;\n }\n if (format) {\n if (node) {\n if (node.nodeType) {\n if (!applyNodeStyle(formatList, node)) {\n rng = dom.createRng();\n rng.setStartBefore(node);\n rng.setEndAfter(node);\n applyRngStyle(dom, $_97afwh2ujkmcwkpw.expandRng(ed, rng, formatList), null, true);\n }\n } else {\n applyRngStyle(dom, node, null, true);\n }\n } else {\n if (!isCollapsed || !format.inline || dom.select('td[data-mce-selected],th[data-mce-selected]').length) {\n var curSelNode = ed.selection.getNode();\n if (!ed.settings.forced_root_block && formatList[0].defaultBlock && !dom.getParent(curSelNode, dom.isBlock)) {\n applyFormat(ed, formatList[0].defaultBlock);\n }\n ed.selection.setRng($_bx30le3ojkmcwkw9.normalize(ed.selection.getRng()));\n bookmark = $_aw3zi52jjkmcwkoa.getPersistentBookmark(ed.selection, true);\n applyRngStyle(dom, $_97afwh2ujkmcwkpw.expandRng(ed, selection.getRng(), formatList), bookmark);\n if (format.styles) {\n $_ehzows6bjkmcwliw.mergeUnderlineAndColor(dom, format, vars, curSelNode);\n }\n selection.moveToBookmark(bookmark);\n $_dli08w3ajkmcwktg.moveStart(dom, selection, selection.getRng());\n ed.nodeChanged();\n } else {\n applyCaretFormat(ed, name, vars);\n }\n }\n $_dp9y746ajkmcwlit.postProcess(name, ed);\n }\n };\n var $_bcenmc66jkmcwlhp = { applyFormat: applyFormat };\n\n var each$16 = $_4ujg4tljkmcwkbk.each;\n var setup$5 = function (formatChangeData, editor) {\n var currentFormats = {};\n formatChangeData.set({});\n editor.on('NodeChange', function (e) {\n var parents = $_dli08w3ajkmcwktg.getParents(editor.dom, e.element);\n var matchedFormats = {};\n parents = $_4ujg4tljkmcwkbk.grep(parents, function (node) {\n return node.nodeType === 1 && !node.getAttribute('data-mce-bogus');\n });\n each$16(formatChangeData.get(), function (callbacks, format) {\n each$16(parents, function (node) {\n if (editor.formatter.matchNode(node, format, {}, callbacks.similar)) {\n if (!currentFormats[format]) {\n each$16(callbacks, function (callback) {\n callback(true, {\n node: node,\n format: format,\n parents: parents\n });\n });\n currentFormats[format] = callbacks;\n }\n matchedFormats[format] = callbacks;\n return false;\n }\n if ($_axwnk168jkmcwlim.matchesUnInheritedFormatSelector(editor, node, format)) {\n return false;\n }\n });\n });\n each$16(currentFormats, function (callbacks, format) {\n if (!matchedFormats[format]) {\n delete currentFormats[format];\n each$16(callbacks, function (callback) {\n callback(false, {\n node: e.element,\n format: format,\n parents: parents\n });\n });\n }\n });\n });\n };\n var addListeners = function (formatChangeData, formats, callback, similar) {\n var formatChangeItems = formatChangeData.get();\n each$16(formats.split(','), function (format) {\n if (!formatChangeItems[format]) {\n formatChangeItems[format] = [];\n formatChangeItems[format].similar = similar;\n }\n formatChangeItems[format].push(callback);\n });\n formatChangeData.set(formatChangeItems);\n };\n var formatChanged = function (editor, formatChangeState, formats, callback, similar) {\n if (formatChangeState.get() === null) {\n setup$5(formatChangeState, editor);\n }\n addListeners(formatChangeState, formats, callback, similar);\n };\n var $_5j3j9s6djkmcwljg = { formatChanged: formatChanged };\n\n var get$7 = function (dom) {\n var formats = {\n valigntop: [{\n selector: 'td,th',\n styles: { verticalAlign: 'top' }\n }],\n valignmiddle: [{\n selector: 'td,th',\n styles: { verticalAlign: 'middle' }\n }],\n valignbottom: [{\n selector: 'td,th',\n styles: { verticalAlign: 'bottom' }\n }],\n alignleft: [\n {\n selector: 'figure.image',\n collapsed: false,\n classes: 'align-left',\n ceFalseOverride: true,\n preview: 'font-family font-size'\n },\n {\n selector: 'figure,p,h1,h2,h3,h4,h5,h6,td,th,tr,div,ul,ol,li',\n styles: { textAlign: 'left' },\n inherit: false,\n preview: false,\n defaultBlock: 'div'\n },\n {\n selector: 'img,table',\n collapsed: false,\n styles: { float: 'left' },\n preview: 'font-family font-size'\n }\n ],\n aligncenter: [\n {\n selector: 'figure,p,h1,h2,h3,h4,h5,h6,td,th,tr,div,ul,ol,li',\n styles: { textAlign: 'center' },\n inherit: false,\n preview: 'font-family font-size',\n defaultBlock: 'div'\n },\n {\n selector: 'figure.image',\n collapsed: false,\n classes: 'align-center',\n ceFalseOverride: true,\n preview: 'font-family font-size'\n },\n {\n selector: 'img',\n collapsed: false,\n styles: {\n display: 'block',\n marginLeft: 'auto',\n marginRight: 'auto'\n },\n preview: false\n },\n {\n selector: 'table',\n collapsed: false,\n styles: {\n marginLeft: 'auto',\n marginRight: 'auto'\n },\n preview: 'font-family font-size'\n }\n ],\n alignright: [\n {\n selector: 'figure.image',\n collapsed: false,\n classes: 'align-right',\n ceFalseOverride: true,\n preview: 'font-family font-size'\n },\n {\n selector: 'figure,p,h1,h2,h3,h4,h5,h6,td,th,tr,div,ul,ol,li',\n styles: { textAlign: 'right' },\n inherit: false,\n preview: 'font-family font-size',\n defaultBlock: 'div'\n },\n {\n selector: 'img,table',\n collapsed: false,\n styles: { float: 'right' },\n preview: 'font-family font-size'\n }\n ],\n alignjustify: [{\n selector: 'figure,p,h1,h2,h3,h4,h5,h6,td,th,tr,div,ul,ol,li',\n styles: { textAlign: 'justify' },\n inherit: false,\n defaultBlock: 'div',\n preview: 'font-family font-size'\n }],\n bold: [\n {\n inline: 'strong',\n remove: 'all'\n },\n {\n inline: 'span',\n styles: { fontWeight: 'bold' }\n },\n {\n inline: 'b',\n remove: 'all'\n }\n ],\n italic: [\n {\n inline: 'em',\n remove: 'all'\n },\n {\n inline: 'span',\n styles: { fontStyle: 'italic' }\n },\n {\n inline: 'i',\n remove: 'all'\n }\n ],\n underline: [\n {\n inline: 'span',\n styles: { textDecoration: 'underline' },\n exact: true\n },\n {\n inline: 'u',\n remove: 'all'\n }\n ],\n strikethrough: [\n {\n inline: 'span',\n styles: { textDecoration: 'line-through' },\n exact: true\n },\n {\n inline: 'strike',\n remove: 'all'\n }\n ],\n forecolor: {\n inline: 'span',\n styles: { color: '%value' },\n links: true,\n remove_similar: true,\n clear_child_styles: true\n },\n hilitecolor: {\n inline: 'span',\n styles: { backgroundColor: '%value' },\n links: true,\n remove_similar: true,\n clear_child_styles: true\n },\n fontname: {\n inline: 'span',\n toggle: false,\n styles: { fontFamily: '%value' },\n clear_child_styles: true\n },\n fontsize: {\n inline: 'span',\n toggle: false,\n styles: { fontSize: '%value' },\n clear_child_styles: true\n },\n fontsize_class: {\n inline: 'span',\n attributes: { class: '%value' }\n },\n blockquote: {\n block: 'blockquote',\n wrapper: 1,\n remove: 'all'\n },\n subscript: { inline: 'sub' },\n superscript: { inline: 'sup' },\n code: { inline: 'code' },\n link: {\n inline: 'a',\n selector: 'a',\n remove: 'all',\n split: true,\n deep: true,\n onmatch: function () {\n return true;\n },\n onformat: function (elm, fmt, vars) {\n $_4ujg4tljkmcwkbk.each(vars, function (value, key) {\n dom.setAttrib(elm, key, value);\n });\n }\n },\n removeformat: [\n {\n selector: 'b,strong,em,i,font,u,strike,sub,sup,dfn,code,samp,kbd,var,cite,mark,q,del,ins',\n remove: 'all',\n split: true,\n expand: false,\n block_expand: true,\n deep: true\n },\n {\n selector: 'span',\n attributes: [\n 'style',\n 'class'\n ],\n remove: 'empty',\n split: true,\n expand: false,\n deep: true\n },\n {\n selector: '*',\n attributes: [\n 'style',\n 'class'\n ],\n split: false,\n expand: false,\n deep: true\n }\n ]\n };\n $_4ujg4tljkmcwkbk.each('p h1 h2 h3 h4 h5 h6 div address pre div dt dd samp'.split(/\\s/), function (name) {\n formats[name] = {\n block: name,\n remove: 'all'\n };\n });\n return formats;\n };\n var $_8oc5be6fjkmcwljl = { get: get$7 };\n\n function FormatRegistry (editor) {\n var formats = {};\n var get = function (name) {\n return name ? formats[name] : formats;\n };\n var register = function (name, format) {\n if (name) {\n if (typeof name !== 'string') {\n $_4ujg4tljkmcwkbk.each(name, function (format, name) {\n register(name, format);\n });\n } else {\n format = format.length ? format : [format];\n $_4ujg4tljkmcwkbk.each(format, function (format) {\n if (typeof format.deep === 'undefined') {\n format.deep = !format.selector;\n }\n if (typeof format.split === 'undefined') {\n format.split = !format.selector || format.inline;\n }\n if (typeof format.remove === 'undefined' && format.selector && !format.inline) {\n format.remove = 'none';\n }\n if (format.selector && format.inline) {\n format.mixed = true;\n format.block_expand = true;\n }\n if (typeof format.classes === 'string') {\n format.classes = format.classes.split(/\\s+/);\n }\n });\n formats[name] = format;\n }\n }\n };\n var unregister = function (name) {\n if (name && formats[name]) {\n delete formats[name];\n }\n return formats;\n };\n register($_8oc5be6fjkmcwljl.get(editor.dom));\n register(editor.settings.formats);\n return {\n get: get,\n register: register,\n unregister: unregister\n };\n }\n\n var each$17 = $_4ujg4tljkmcwkbk.each;\n var dom = DOMUtils$1.DOM;\n var parsedSelectorToHtml = function (ancestry, editor) {\n var elm, item, fragment;\n var schema = editor && editor.schema || Schema({});\n var decorate = function (elm, item) {\n if (item.classes.length) {\n dom.addClass(elm, item.classes.join(' '));\n }\n dom.setAttribs(elm, item.attrs);\n };\n var createElement = function (sItem) {\n var elm;\n item = typeof sItem === 'string' ? {\n name: sItem,\n classes: [],\n attrs: {}\n } : sItem;\n elm = dom.create(item.name);\n decorate(elm, item);\n return elm;\n };\n var getRequiredParent = function (elm, candidate) {\n var name = typeof elm !== 'string' ? elm.nodeName.toLowerCase() : elm;\n var elmRule = schema.getElementRule(name);\n var parentsRequired = elmRule && elmRule.parentsRequired;\n if (parentsRequired && parentsRequired.length) {\n return candidate && $_4ujg4tljkmcwkbk.inArray(parentsRequired, candidate) !== -1 ? candidate : parentsRequired[0];\n } else {\n return false;\n }\n };\n var wrapInHtml = function (elm, ancestry, siblings) {\n var parent, parentCandidate, parentRequired;\n var ancestor = ancestry.length > 0 && ancestry[0];\n var ancestorName = ancestor && ancestor.name;\n parentRequired = getRequiredParent(elm, ancestorName);\n if (parentRequired) {\n if (ancestorName === parentRequired) {\n parentCandidate = ancestry[0];\n ancestry = ancestry.slice(1);\n } else {\n parentCandidate = parentRequired;\n }\n } else if (ancestor) {\n parentCandidate = ancestry[0];\n ancestry = ancestry.slice(1);\n } else if (!siblings) {\n return elm;\n }\n if (parentCandidate) {\n parent = createElement(parentCandidate);\n parent.appendChild(elm);\n }\n if (siblings) {\n if (!parent) {\n parent = dom.create('div');\n parent.appendChild(elm);\n }\n $_4ujg4tljkmcwkbk.each(siblings, function (sibling) {\n var siblingElm = createElement(sibling);\n parent.insertBefore(siblingElm, elm);\n });\n }\n return wrapInHtml(parent, ancestry, parentCandidate && parentCandidate.siblings);\n };\n if (ancestry && ancestry.length) {\n item = ancestry[0];\n elm = createElement(item);\n fragment = dom.create('div');\n fragment.appendChild(wrapInHtml(elm, ancestry.slice(1), item.siblings));\n return fragment;\n } else {\n return '';\n }\n };\n var selectorToHtml = function (selector, editor) {\n return parsedSelectorToHtml(parseSelector(selector), editor);\n };\n var parseSelectorItem = function (item) {\n var tagName;\n var obj = {\n classes: [],\n attrs: {}\n };\n item = obj.selector = $_4ujg4tljkmcwkbk.trim(item);\n if (item !== '*') {\n tagName = item.replace(/(?:([#\\.]|::?)([\\w\\-]+)|(\\[)([^\\]]+)\\]?)/g, function ($0, $1, $2, $3, $4) {\n switch ($1) {\n case '#':\n obj.attrs.id = $2;\n break;\n case '.':\n obj.classes.push($2);\n break;\n case ':':\n if ($_4ujg4tljkmcwkbk.inArray('checked disabled enabled read-only required'.split(' '), $2) !== -1) {\n obj.attrs[$2] = $2;\n }\n break;\n }\n if ($3 === '[') {\n var m = $4.match(/([\\w\\-]+)(?:\\=\\\"([^\\\"]+))?/);\n if (m) {\n obj.attrs[m[1]] = m[2];\n }\n }\n return '';\n });\n }\n obj.name = tagName || 'div';\n return obj;\n };\n var parseSelector = function (selector) {\n if (!selector || typeof selector !== 'string') {\n return [];\n }\n selector = selector.split(/\\s*,\\s*/)[0];\n selector = selector.replace(/\\s*(~\\+|~|\\+|>)\\s*/g, '$1');\n return $_4ujg4tljkmcwkbk.map(selector.split(/(?:>|\\s+(?![^\\[\\]]+\\]))/), function (item) {\n var siblings = $_4ujg4tljkmcwkbk.map(item.split(/(?:~\\+|~|\\+)/), parseSelectorItem);\n var obj = siblings.pop();\n if (siblings.length) {\n obj.siblings = siblings;\n }\n return obj;\n }).reverse();\n };\n var getCssText = function (editor, format) {\n var name, previewFrag, previewElm, items;\n var previewCss = '', parentFontSize, previewStyles;\n previewStyles = editor.settings.preview_styles;\n if (previewStyles === false) {\n return '';\n }\n if (typeof previewStyles !== 'string') {\n previewStyles = 'font-family font-size font-weight font-style text-decoration ' + 'text-transform color background-color border border-radius outline text-shadow';\n }\n var removeVars = function (val) {\n return val.replace(/%(\\w+)/g, '');\n };\n if (typeof format === 'string') {\n format = editor.formatter.get(format);\n if (!format) {\n return;\n }\n format = format[0];\n }\n if ('preview' in format) {\n previewStyles = format.preview;\n if (previewStyles === false) {\n return '';\n }\n }\n name = format.block || format.inline || 'span';\n items = parseSelector(format.selector);\n if (items.length) {\n if (!items[0].name) {\n items[0].name = name;\n }\n name = format.selector;\n previewFrag = parsedSelectorToHtml(items, editor);\n } else {\n previewFrag = parsedSelectorToHtml([name], editor);\n }\n previewElm = dom.select(name, previewFrag)[0] || previewFrag.firstChild;\n each$17(format.styles, function (value, name) {\n value = removeVars(value);\n if (value) {\n dom.setStyle(previewElm, name, value);\n }\n });\n each$17(format.attributes, function (value, name) {\n value = removeVars(value);\n if (value) {\n dom.setAttrib(previewElm, name, value);\n }\n });\n each$17(format.classes, function (value) {\n value = removeVars(value);\n if (!dom.hasClass(previewElm, value)) {\n dom.addClass(previewElm, value);\n }\n });\n editor.fire('PreviewFormats');\n dom.setStyles(previewFrag, {\n position: 'absolute',\n left: -65535\n });\n editor.getBody().appendChild(previewFrag);\n parentFontSize = dom.getStyle(editor.getBody(), 'fontSize', true);\n parentFontSize = /px$/.test(parentFontSize) ? parseInt(parentFontSize, 10) : 0;\n each$17(previewStyles.split(' '), function (name) {\n var value = dom.getStyle(previewElm, name, true);\n if (name === 'background-color' && /transparent|rgba\\s*\\([^)]+,\\s*0\\)/.test(value)) {\n value = dom.getStyle(editor.getBody(), name, true);\n if (dom.toHex(value).toLowerCase() === '#ffffff') {\n return;\n }\n }\n if (name === 'color') {\n if (dom.toHex(value).toLowerCase() === '#000000') {\n return;\n }\n }\n if (name === 'font-size') {\n if (/em|%$/.test(value)) {\n if (parentFontSize === 0) {\n return;\n }\n var numValue = parseFloat(value) / (/%$/.test(value) ? 100 : 1);\n value = numValue * parentFontSize + 'px';\n }\n }\n if (name === 'border' && value) {\n previewCss += 'padding:0 2px;';\n }\n previewCss += name + ':' + value + ';';\n });\n editor.fire('AfterPreviewFormats');\n dom.remove(previewFrag);\n return previewCss;\n };\n var $_ga7lpr6gjkmcwlk1 = {\n getCssText: getCssText,\n parseSelector: parseSelector,\n selectorToHtml: selectorToHtml\n };\n\n var toggle$3 = function (editor, formats, name, vars, node) {\n var fmt = formats.get(name);\n if ($_axwnk168jkmcwlim.match(editor, name, vars, node) && (!('toggle' in fmt[0]) || fmt[0].toggle)) {\n $_2vklhc6cjkmcwlj5.remove(editor, name, vars, node);\n } else {\n $_bcenmc66jkmcwlhp.applyFormat(editor, name, vars, node);\n }\n };\n var $_1zpcor6hjkmcwlk7 = { toggle: toggle$3 };\n\n var setup$6 = function (editor) {\n editor.addShortcut('meta+b', '', 'Bold');\n editor.addShortcut('meta+i', '', 'Italic');\n editor.addShortcut('meta+u', '', 'Underline');\n for (var i = 1; i <= 6; i++) {\n editor.addShortcut('access+' + i, '', [\n 'FormatBlock',\n false,\n 'h' + i\n ]);\n }\n editor.addShortcut('access+7', '', [\n 'FormatBlock',\n false,\n 'p'\n ]);\n editor.addShortcut('access+8', '', [\n 'FormatBlock',\n false,\n 'div'\n ]);\n editor.addShortcut('access+9', '', [\n 'FormatBlock',\n false,\n 'address'\n ]);\n };\n var $_2ind0x6ijkmcwlk8 = { setup: setup$6 };\n\n function Formatter (editor) {\n var formats = FormatRegistry(editor);\n var formatChangeState = Cell(null);\n $_2ind0x6ijkmcwlk8.setup(editor);\n setup$4(editor);\n return {\n get: formats.get,\n register: formats.register,\n unregister: formats.unregister,\n apply: curry($_bcenmc66jkmcwlhp.applyFormat, editor),\n remove: curry($_2vklhc6cjkmcwlj5.remove, editor),\n toggle: curry($_1zpcor6hjkmcwlk7.toggle, editor, formats),\n match: curry($_axwnk168jkmcwlim.match, editor),\n matchAll: curry($_axwnk168jkmcwlim.matchAll, editor),\n matchNode: curry($_axwnk168jkmcwlim.matchNode, editor),\n canApply: curry($_axwnk168jkmcwlim.canApply, editor),\n formatChanged: curry($_5j3j9s6djkmcwljg.formatChanged, editor, formatChangeState),\n getCssText: curry($_ga7lpr6gjkmcwlk1.getCssText, editor)\n };\n }\n\n var hasOwnProperty$1 = Object.prototype.hasOwnProperty;\n var shallow$1 = function (old, nu) {\n return nu;\n };\n var baseMerge = function (merger) {\n return function () {\n var objects = new Array(arguments.length);\n for (var i = 0; i < objects.length; i++)\n objects[i] = arguments[i];\n if (objects.length === 0)\n throw new Error('Can\\'t merge zero objects');\n var ret = {};\n for (var j = 0; j < objects.length; j++) {\n var curObject = objects[j];\n for (var key in curObject)\n if (hasOwnProperty$1.call(curObject, key)) {\n ret[key] = merger(ret[key], curObject[key]);\n }\n }\n return ret;\n };\n };\n\n var merge = baseMerge(shallow$1);\n\n var register = function (htmlParser, settings, dom) {\n htmlParser.addAttributeFilter('data-mce-tabindex', function (nodes, name) {\n var i = nodes.length, node;\n while (i--) {\n node = nodes[i];\n node.attr('tabindex', node.attributes.map['data-mce-tabindex']);\n node.attr(name, null);\n }\n });\n htmlParser.addAttributeFilter('src,href,style', function (nodes, name) {\n var i = nodes.length, node, value;\n var internalName = 'data-mce-' + name;\n var urlConverter = settings.url_converter;\n var urlConverterScope = settings.url_converter_scope;\n while (i--) {\n node = nodes[i];\n value = node.attributes.map[internalName];\n if (value !== undefined) {\n node.attr(name, value.length > 0 ? value : null);\n node.attr(internalName, null);\n } else {\n value = node.attributes.map[name];\n if (name === 'style') {\n value = dom.serializeStyle(dom.parseStyle(value), node.name);\n } else if (urlConverter) {\n value = urlConverter.call(urlConverterScope, value, name, node.name);\n }\n node.attr(name, value.length > 0 ? value : null);\n }\n }\n });\n htmlParser.addAttributeFilter('class', function (nodes) {\n var i = nodes.length, node, value;\n while (i--) {\n node = nodes[i];\n value = node.attr('class');\n if (value) {\n value = node.attr('class').replace(/(?:^|\\s)mce-item-\\w+(?!\\S)/g, '');\n node.attr('class', value.length > 0 ? value : null);\n }\n }\n });\n htmlParser.addAttributeFilter('data-mce-type', function (nodes, name, args) {\n var i = nodes.length, node;\n while (i--) {\n node = nodes[i];\n if (node.attributes.map['data-mce-type'] === 'bookmark' && !args.cleanup) {\n node.remove();\n }\n }\n });\n htmlParser.addNodeFilter('noscript', function (nodes) {\n var i = nodes.length, node;\n while (i--) {\n node = nodes[i].firstChild;\n if (node) {\n node.value = $_33qwr1sjkmcwkip.decode(node.value);\n }\n }\n });\n htmlParser.addNodeFilter('script,style', function (nodes, name) {\n var i = nodes.length, node, value, type;\n var trim = function (value) {\n return value.replace(/()/g, '\\n').replace(/^[\\r\\n]*|[\\r\\n]*$/g, '').replace(/^\\s*(()?|\\s*\\/\\/\\s*\\]\\]>(-->)?|\\/\\/\\s*(-->)?|\\]\\]>|\\/\\*\\s*-->\\s*\\*\\/|\\s*-->\\s*)\\s*$/g, '');\n };\n while (i--) {\n node = nodes[i];\n value = node.firstChild ? node.firstChild.value : '';\n if (name === 'script') {\n type = node.attr('type');\n if (type) {\n node.attr('type', type === 'mce-no/type' ? null : type.replace(/^mce\\-/, ''));\n }\n if (settings.element_format === 'xhtml' && value.length > 0) {\n node.firstChild.value = '// ';\n }\n } else {\n if (settings.element_format === 'xhtml' && value.length > 0) {\n node.firstChild.value = '';\n }\n }\n }\n });\n htmlParser.addNodeFilter('#comment', function (nodes) {\n var i = nodes.length, node;\n while (i--) {\n node = nodes[i];\n if (node.value.indexOf('[CDATA[') === 0) {\n node.name = '#cdata';\n node.type = 4;\n node.value = node.value.replace(/^\\[CDATA\\[|\\]\\]$/g, '');\n } else if (node.value.indexOf('mce:protected ') === 0) {\n node.name = '#text';\n node.type = 3;\n node.raw = true;\n node.value = unescape(node.value).substr(14);\n }\n }\n });\n htmlParser.addNodeFilter('xml:namespace,input', function (nodes, name) {\n var i = nodes.length, node;\n while (i--) {\n node = nodes[i];\n if (node.type === 7) {\n node.remove();\n } else if (node.type === 1) {\n if (name === 'input' && !('type' in node.attributes.map)) {\n node.attr('type', 'text');\n }\n }\n }\n });\n htmlParser.addAttributeFilter('data-mce-type', function (nodes) {\n each(nodes, function (node) {\n if (node.attr('data-mce-type') === 'format-caret') {\n if (node.isEmpty(htmlParser.schema.getNonEmptyElements())) {\n node.remove();\n } else {\n node.unwrap();\n }\n }\n });\n });\n htmlParser.addAttributeFilter('data-mce-src,data-mce-href,data-mce-style,' + 'data-mce-selected,data-mce-expando,' + 'data-mce-type,data-mce-resize', function (nodes, name) {\n var i = nodes.length;\n while (i--) {\n nodes[i].attr(name, null);\n }\n });\n };\n var trimTrailingBr = function (rootNode) {\n var brNode1, brNode2;\n var isBr = function (node) {\n return node && node.name === 'br';\n };\n brNode1 = rootNode.lastChild;\n if (isBr(brNode1)) {\n brNode2 = brNode1.prev;\n if (isBr(brNode2)) {\n brNode1.remove();\n brNode2.remove();\n }\n }\n };\n var $_ft0zjh6mjkmcwlkr = {\n register: register,\n trimTrailingBr: trimTrailingBr\n };\n\n var preProcess = function (editor, node, args) {\n var impl, doc, oldDoc;\n var dom = editor.dom;\n node = node.cloneNode(true);\n impl = document.implementation;\n if (impl.createHTMLDocument) {\n doc = impl.createHTMLDocument('');\n $_4ujg4tljkmcwkbk.each(node.nodeName === 'BODY' ? node.childNodes : [node], function (node) {\n doc.body.appendChild(doc.importNode(node, true));\n });\n if (node.nodeName !== 'BODY') {\n node = doc.body.firstChild;\n } else {\n node = doc.body;\n }\n oldDoc = dom.doc;\n dom.doc = doc;\n }\n $_q3ric4tjkmcwl9q.firePreProcess(editor, merge(args, { node: node }));\n if (oldDoc) {\n dom.doc = oldDoc;\n }\n return node;\n };\n var shouldFireEvent = function (editor, args) {\n return editor && editor.hasEventListeners('PreProcess') && !args.no_events;\n };\n var process = function (editor, node, args) {\n return shouldFireEvent(editor, args) ? preProcess(editor, node, args) : node;\n };\n var $_27apc6njkmcwll3 = { process: process };\n\n var removeAttrs = function (node, names) {\n each(names, function (name) {\n node.attr(name, null);\n });\n };\n var addFontToSpansFilter = function (domParser, styles, fontSizes) {\n domParser.addNodeFilter('font', function (nodes) {\n each(nodes, function (node) {\n var props = styles.parse(node.attr('style'));\n var color = node.attr('color');\n var face = node.attr('face');\n var size = node.attr('size');\n if (color) {\n props.color = color;\n }\n if (face) {\n props['font-family'] = face;\n }\n if (size) {\n props['font-size'] = fontSizes[parseInt(node.attr('size'), 10) - 1];\n }\n node.name = 'span';\n node.attr('style', styles.serialize(props));\n removeAttrs(node, [\n 'color',\n 'face',\n 'size'\n ]);\n });\n });\n };\n var addStrikeToSpanFilter = function (domParser, styles) {\n domParser.addNodeFilter('strike', function (nodes) {\n each(nodes, function (node) {\n var props = styles.parse(node.attr('style'));\n props['text-decoration'] = 'line-through';\n node.name = 'span';\n node.attr('style', styles.serialize(props));\n });\n });\n };\n var addFilters = function (domParser, settings) {\n var styles = Styles();\n if (settings.convert_fonts_to_spans) {\n addFontToSpansFilter(domParser, styles, $_4ujg4tljkmcwkbk.explode(settings.font_size_legacy_values));\n }\n addStrikeToSpanFilter(domParser, styles);\n };\n var register$1 = function (domParser, settings) {\n if (settings.inline_styles) {\n addFilters(domParser, settings);\n }\n };\n var $_2klegh6pjkmcwllk = { register: register$1 };\n\n var whiteSpaceRegExp$3 = /^[ \\t\\r\\n]*$/;\n var typeLookup = {\n '#text': 3,\n '#comment': 8,\n '#cdata': 4,\n '#pi': 7,\n '#doctype': 10,\n '#document-fragment': 11\n };\n var walk$3 = function (node, root, prev) {\n var sibling;\n var parent;\n var startName = prev ? 'lastChild' : 'firstChild';\n var siblingName = prev ? 'prev' : 'next';\n if (node[startName]) {\n return node[startName];\n }\n if (node !== root) {\n sibling = node[siblingName];\n if (sibling) {\n return sibling;\n }\n for (parent = node.parent; parent && parent !== root; parent = parent.parent) {\n sibling = parent[siblingName];\n if (sibling) {\n return sibling;\n }\n }\n }\n };\n var Node$2 = function () {\n function Node(name, type) {\n this.name = name;\n this.type = type;\n if (type === 1) {\n this.attributes = [];\n this.attributes.map = {};\n }\n }\n Node.create = function (name, attrs) {\n var node, attrName;\n node = new Node(name, typeLookup[name] || 1);\n if (attrs) {\n for (attrName in attrs) {\n node.attr(attrName, attrs[attrName]);\n }\n }\n return node;\n };\n Node.prototype.replace = function (node) {\n var self = this;\n if (node.parent) {\n node.remove();\n }\n self.insert(node, self);\n self.remove();\n return self;\n };\n Node.prototype.attr = function (name, value) {\n var self = this;\n var attrs, i;\n if (typeof name !== 'string') {\n for (i in name) {\n self.attr(i, name[i]);\n }\n return self;\n }\n if (attrs = self.attributes) {\n if (value !== undefined) {\n if (value === null) {\n if (name in attrs.map) {\n delete attrs.map[name];\n i = attrs.length;\n while (i--) {\n if (attrs[i].name === name) {\n attrs = attrs.splice(i, 1);\n return self;\n }\n }\n }\n return self;\n }\n if (name in attrs.map) {\n i = attrs.length;\n while (i--) {\n if (attrs[i].name === name) {\n attrs[i].value = value;\n break;\n }\n }\n } else {\n attrs.push({\n name: name,\n value: value\n });\n }\n attrs.map[name] = value;\n return self;\n }\n return attrs.map[name];\n }\n };\n Node.prototype.clone = function () {\n var self = this;\n var clone = new Node(self.name, self.type);\n var i, l, selfAttrs, selfAttr, cloneAttrs;\n if (selfAttrs = self.attributes) {\n cloneAttrs = [];\n cloneAttrs.map = {};\n for (i = 0, l = selfAttrs.length; i < l; i++) {\n selfAttr = selfAttrs[i];\n if (selfAttr.name !== 'id') {\n cloneAttrs[cloneAttrs.length] = {\n name: selfAttr.name,\n value: selfAttr.value\n };\n cloneAttrs.map[selfAttr.name] = selfAttr.value;\n }\n }\n clone.attributes = cloneAttrs;\n }\n clone.value = self.value;\n clone.shortEnded = self.shortEnded;\n return clone;\n };\n Node.prototype.wrap = function (wrapper) {\n var self = this;\n self.parent.insert(wrapper, self);\n wrapper.append(self);\n return self;\n };\n Node.prototype.unwrap = function () {\n var self = this;\n var node, next;\n for (node = self.firstChild; node;) {\n next = node.next;\n self.insert(node, self, true);\n node = next;\n }\n self.remove();\n };\n Node.prototype.remove = function () {\n var self = this, parent = self.parent, next = self.next, prev = self.prev;\n if (parent) {\n if (parent.firstChild === self) {\n parent.firstChild = next;\n if (next) {\n next.prev = null;\n }\n } else {\n prev.next = next;\n }\n if (parent.lastChild === self) {\n parent.lastChild = prev;\n if (prev) {\n prev.next = null;\n }\n } else {\n next.prev = prev;\n }\n self.parent = self.next = self.prev = null;\n }\n return self;\n };\n Node.prototype.append = function (node) {\n var self = this;\n var last;\n if (node.parent) {\n node.remove();\n }\n last = self.lastChild;\n if (last) {\n last.next = node;\n node.prev = last;\n self.lastChild = node;\n } else {\n self.lastChild = self.firstChild = node;\n }\n node.parent = self;\n return node;\n };\n Node.prototype.insert = function (node, refNode, before) {\n var parent;\n if (node.parent) {\n node.remove();\n }\n parent = refNode.parent || this;\n if (before) {\n if (refNode === parent.firstChild) {\n parent.firstChild = node;\n } else {\n refNode.prev.next = node;\n }\n node.prev = refNode.prev;\n node.next = refNode;\n refNode.prev = node;\n } else {\n if (refNode === parent.lastChild) {\n parent.lastChild = node;\n } else {\n refNode.next.prev = node;\n }\n node.next = refNode.next;\n node.prev = refNode;\n refNode.next = node;\n }\n node.parent = parent;\n return node;\n };\n Node.prototype.getAll = function (name) {\n var self = this;\n var node;\n var collection = [];\n for (node = self.firstChild; node; node = walk$3(node, self)) {\n if (node.name === name) {\n collection.push(node);\n }\n }\n return collection;\n };\n Node.prototype.empty = function () {\n var self = this;\n var nodes, i, node;\n if (self.firstChild) {\n nodes = [];\n for (node = self.firstChild; node; node = walk$3(node, self)) {\n nodes.push(node);\n }\n i = nodes.length;\n while (i--) {\n node = nodes[i];\n node.parent = node.firstChild = node.lastChild = node.next = node.prev = null;\n }\n }\n self.firstChild = self.lastChild = null;\n return self;\n };\n Node.prototype.isEmpty = function (elements, whitespace, predicate) {\n var self = this;\n var node = self.firstChild, i, name;\n whitespace = whitespace || {};\n if (node) {\n do {\n if (node.type === 1) {\n if (node.attributes.map['data-mce-bogus']) {\n continue;\n }\n if (elements[node.name]) {\n return false;\n }\n i = node.attributes.length;\n while (i--) {\n name = node.attributes[i].name;\n if (name === 'name' || name.indexOf('data-mce-bookmark') === 0) {\n return false;\n }\n }\n }\n if (node.type === 8) {\n return false;\n }\n if (node.type === 3 && !whiteSpaceRegExp$3.test(node.value)) {\n return false;\n }\n if (node.type === 3 && node.parent && whitespace[node.parent.name] && whiteSpaceRegExp$3.test(node.value)) {\n return false;\n }\n if (predicate && predicate(node)) {\n return false;\n }\n } while (node = walk$3(node, self));\n }\n return true;\n };\n Node.prototype.walk = function (prev) {\n return walk$3(this, null, prev);\n };\n return Node;\n }();\n\n var paddEmptyNode = function (settings, args, blockElements, node) {\n var brPreferred = settings.padd_empty_with_br || args.insert;\n if (brPreferred && blockElements[node.name]) {\n node.empty().append(new Node$2('br', 1)).shortEnded = true;\n } else {\n node.empty().append(new Node$2('#text', 3)).value = '\\xA0';\n }\n };\n var isPaddedWithNbsp = function (node) {\n return hasOnlyChild(node, '#text') && node.firstChild.value === '\\xA0';\n };\n var hasOnlyChild = function (node, name) {\n return node && node.firstChild && node.firstChild === node.lastChild && node.firstChild.name === name;\n };\n var isPadded = function (schema, node) {\n var rule = schema.getElementRule(node.name);\n return rule && rule.paddEmpty;\n };\n var isEmpty$2 = function (schema, nonEmptyElements, whitespaceElements, node) {\n return node.isEmpty(nonEmptyElements, whitespaceElements, function (node) {\n return isPadded(schema, node);\n });\n };\n var isLineBreakNode = function (node, blockElements) {\n return node && (blockElements[node.name] || node.name === 'br');\n };\n\n var register$2 = function (parser, settings) {\n var schema = parser.schema;\n if (settings.remove_trailing_brs) {\n parser.addNodeFilter('br', function (nodes, _, args) {\n var i;\n var l = nodes.length;\n var node;\n var blockElements = $_4ujg4tljkmcwkbk.extend({}, schema.getBlockElements());\n var nonEmptyElements = schema.getNonEmptyElements();\n var parent, lastParent, prev, prevName;\n var whiteSpaceElements = schema.getNonEmptyElements();\n var elementRule, textNode;\n blockElements.body = 1;\n for (i = 0; i < l; i++) {\n node = nodes[i];\n parent = node.parent;\n if (blockElements[node.parent.name] && node === parent.lastChild) {\n prev = node.prev;\n while (prev) {\n prevName = prev.name;\n if (prevName !== 'span' || prev.attr('data-mce-type') !== 'bookmark') {\n if (prevName !== 'br') {\n break;\n }\n if (prevName === 'br') {\n node = null;\n break;\n }\n }\n prev = prev.prev;\n }\n if (node) {\n node.remove();\n if (isEmpty$2(schema, nonEmptyElements, whiteSpaceElements, parent)) {\n elementRule = schema.getElementRule(parent.name);\n if (elementRule) {\n if (elementRule.removeEmpty) {\n parent.remove();\n } else if (elementRule.paddEmpty) {\n paddEmptyNode(settings, args, blockElements, parent);\n }\n }\n }\n }\n } else {\n lastParent = node;\n while (parent && parent.firstChild === lastParent && parent.lastChild === lastParent) {\n lastParent = parent;\n if (blockElements[parent.name]) {\n break;\n }\n parent = parent.parent;\n }\n if (lastParent === parent && settings.padd_empty_with_br !== true) {\n textNode = new Node$2('#text', 3);\n textNode.value = '\\xA0';\n node.replace(textNode);\n }\n }\n }\n });\n }\n parser.addAttributeFilter('href', function (nodes) {\n var i = nodes.length, node;\n var appendRel = function (rel) {\n var parts = rel.split(' ').filter(function (p) {\n return p.length > 0;\n });\n return parts.concat(['noopener']).sort().join(' ');\n };\n var addNoOpener = function (rel) {\n var newRel = rel ? $_4ujg4tljkmcwkbk.trim(rel) : '';\n if (!/\\b(noopener)\\b/g.test(newRel)) {\n return appendRel(newRel);\n } else {\n return newRel;\n }\n };\n if (!settings.allow_unsafe_link_target) {\n while (i--) {\n node = nodes[i];\n if (node.name === 'a' && node.attr('target') === '_blank') {\n node.attr('rel', addNoOpener(node.attr('rel')));\n }\n }\n }\n });\n if (!settings.allow_html_in_named_anchor) {\n parser.addAttributeFilter('id,name', function (nodes) {\n var i = nodes.length, sibling, prevSibling, parent, node;\n while (i--) {\n node = nodes[i];\n if (node.name === 'a' && node.firstChild && !node.attr('href')) {\n parent = node.parent;\n sibling = node.lastChild;\n do {\n prevSibling = sibling.prev;\n parent.insert(sibling, node);\n sibling = prevSibling;\n } while (sibling);\n }\n }\n });\n }\n if (settings.fix_list_elements) {\n parser.addNodeFilter('ul,ol', function (nodes) {\n var i = nodes.length, node, parentNode;\n while (i--) {\n node = nodes[i];\n parentNode = node.parent;\n if (parentNode.name === 'ul' || parentNode.name === 'ol') {\n if (node.prev && node.prev.name === 'li') {\n node.prev.append(node);\n } else {\n var li = new Node$2('li', 1);\n li.attr('style', 'list-style-type: none');\n node.wrap(li);\n }\n }\n }\n });\n }\n if (settings.validate && schema.getValidClasses()) {\n parser.addAttributeFilter('class', function (nodes) {\n var i = nodes.length, node, classList, ci, className, classValue;\n var validClasses = schema.getValidClasses();\n var validClassesMap, valid;\n while (i--) {\n node = nodes[i];\n classList = node.attr('class').split(' ');\n classValue = '';\n for (ci = 0; ci < classList.length; ci++) {\n className = classList[ci];\n valid = false;\n validClassesMap = validClasses['*'];\n if (validClassesMap && validClassesMap[className]) {\n valid = true;\n }\n validClassesMap = validClasses[node.name];\n if (!valid && validClassesMap && validClassesMap[className]) {\n valid = true;\n }\n if (valid) {\n if (classValue) {\n classValue += ' ';\n }\n classValue += className;\n }\n }\n if (!classValue.length) {\n classValue = null;\n }\n node.attr('class', classValue);\n }\n });\n }\n };\n\n var makeMap$4 = $_4ujg4tljkmcwkbk.makeMap;\n var each$18 = $_4ujg4tljkmcwkbk.each;\n var explode$3 = $_4ujg4tljkmcwkbk.explode;\n var extend$3 = $_4ujg4tljkmcwkbk.extend;\n function DomParser (settings, schema) {\n if (schema === void 0) {\n schema = Schema();\n }\n var nodeFilters = {};\n var attributeFilters = [];\n var matchedNodes = {};\n var matchedAttributes = {};\n settings = settings || {};\n settings.validate = 'validate' in settings ? settings.validate : true;\n settings.root_name = settings.root_name || 'body';\n var fixInvalidChildren = function (nodes) {\n var ni, node, parent, parents, newParent, currentNode, tempNode, childNode, i;\n var nonEmptyElements, whitespaceElements, nonSplitableElements, textBlockElements, specialElements, sibling, nextNode;\n nonSplitableElements = makeMap$4('tr,td,th,tbody,thead,tfoot,table');\n nonEmptyElements = schema.getNonEmptyElements();\n whitespaceElements = schema.getWhiteSpaceElements();\n textBlockElements = schema.getTextBlockElements();\n specialElements = schema.getSpecialElements();\n for (ni = 0; ni < nodes.length; ni++) {\n node = nodes[ni];\n if (!node.parent || node.fixed) {\n continue;\n }\n if (textBlockElements[node.name] && node.parent.name === 'li') {\n sibling = node.next;\n while (sibling) {\n if (textBlockElements[sibling.name]) {\n sibling.name = 'li';\n sibling.fixed = true;\n node.parent.insert(sibling, node.parent);\n } else {\n break;\n }\n sibling = sibling.next;\n }\n node.unwrap(node);\n continue;\n }\n parents = [node];\n for (parent = node.parent; parent && !schema.isValidChild(parent.name, node.name) && !nonSplitableElements[parent.name]; parent = parent.parent) {\n parents.push(parent);\n }\n if (parent && parents.length > 1) {\n parents.reverse();\n newParent = currentNode = filterNode(parents[0].clone());\n for (i = 0; i < parents.length - 1; i++) {\n if (schema.isValidChild(currentNode.name, parents[i].name)) {\n tempNode = filterNode(parents[i].clone());\n currentNode.append(tempNode);\n } else {\n tempNode = currentNode;\n }\n for (childNode = parents[i].firstChild; childNode && childNode !== parents[i + 1];) {\n nextNode = childNode.next;\n tempNode.append(childNode);\n childNode = nextNode;\n }\n currentNode = tempNode;\n }\n if (!isEmpty$2(schema, nonEmptyElements, whitespaceElements, newParent)) {\n parent.insert(newParent, parents[0], true);\n parent.insert(node, newParent);\n } else {\n parent.insert(node, parents[0], true);\n }\n parent = parents[0];\n if (isEmpty$2(schema, nonEmptyElements, whitespaceElements, parent) || hasOnlyChild(parent, 'br')) {\n parent.empty().remove();\n }\n } else if (node.parent) {\n if (node.name === 'li') {\n sibling = node.prev;\n if (sibling && (sibling.name === 'ul' || sibling.name === 'ul')) {\n sibling.append(node);\n continue;\n }\n sibling = node.next;\n if (sibling && (sibling.name === 'ul' || sibling.name === 'ul')) {\n sibling.insert(node, sibling.firstChild, true);\n continue;\n }\n node.wrap(filterNode(new Node$2('ul', 1)));\n continue;\n }\n if (schema.isValidChild(node.parent.name, 'div') && schema.isValidChild('div', node.name)) {\n node.wrap(filterNode(new Node$2('div', 1)));\n } else {\n if (specialElements[node.name]) {\n node.empty().remove();\n } else {\n node.unwrap();\n }\n }\n }\n }\n };\n var filterNode = function (node) {\n var i, name, list;\n if (name in nodeFilters) {\n list = matchedNodes[name];\n if (list) {\n list.push(node);\n } else {\n matchedNodes[name] = [node];\n }\n }\n i = attributeFilters.length;\n while (i--) {\n name = attributeFilters[i].name;\n if (name in node.attributes.map) {\n list = matchedAttributes[name];\n if (list) {\n list.push(node);\n } else {\n matchedAttributes[name] = [node];\n }\n }\n }\n return node;\n };\n var addNodeFilter = function (name, callback) {\n each$18(explode$3(name), function (name) {\n var list = nodeFilters[name];\n if (!list) {\n nodeFilters[name] = list = [];\n }\n list.push(callback);\n });\n };\n var getNodeFilters = function () {\n var out = [];\n for (var name in nodeFilters) {\n if (nodeFilters.hasOwnProperty(name)) {\n out.push({\n name: name,\n callbacks: nodeFilters[name]\n });\n }\n }\n return out;\n };\n var addAttributeFilter = function (name, callback) {\n each$18(explode$3(name), function (name) {\n var i;\n for (i = 0; i < attributeFilters.length; i++) {\n if (attributeFilters[i].name === name) {\n attributeFilters[i].callbacks.push(callback);\n return;\n }\n }\n attributeFilters.push({\n name: name,\n callbacks: [callback]\n });\n });\n };\n var getAttributeFilters = function () {\n return [].concat(attributeFilters);\n };\n var parse = function (html, args) {\n var parser, nodes, i, l, fi, fl, list, name;\n var blockElements;\n var invalidChildren = [];\n var isInWhiteSpacePreservedElement;\n var node;\n args = args || {};\n matchedNodes = {};\n matchedAttributes = {};\n blockElements = extend$3(makeMap$4('script,style,head,html,body,title,meta,param'), schema.getBlockElements());\n var nonEmptyElements = schema.getNonEmptyElements();\n var children = schema.children;\n var validate = settings.validate;\n var rootBlockName = 'forced_root_block' in args ? args.forced_root_block : settings.forced_root_block;\n var whiteSpaceElements = schema.getWhiteSpaceElements();\n var startWhiteSpaceRegExp = /^[ \\t\\r\\n]+/;\n var endWhiteSpaceRegExp = /[ \\t\\r\\n]+$/;\n var allWhiteSpaceRegExp = /[ \\t\\r\\n]+/g;\n var isAllWhiteSpaceRegExp = /^[ \\t\\r\\n]+$/;\n isInWhiteSpacePreservedElement = whiteSpaceElements.hasOwnProperty(args.context) || whiteSpaceElements.hasOwnProperty(settings.root_name);\n var addRootBlocks = function () {\n var node = rootNode.firstChild, next, rootBlockNode;\n var trim = function (rootBlockNode) {\n if (rootBlockNode) {\n node = rootBlockNode.firstChild;\n if (node && node.type === 3) {\n node.value = node.value.replace(startWhiteSpaceRegExp, '');\n }\n node = rootBlockNode.lastChild;\n if (node && node.type === 3) {\n node.value = node.value.replace(endWhiteSpaceRegExp, '');\n }\n }\n };\n if (!schema.isValidChild(rootNode.name, rootBlockName.toLowerCase())) {\n return;\n }\n while (node) {\n next = node.next;\n if (node.type === 3 || node.type === 1 && node.name !== 'p' && !blockElements[node.name] && !node.attr('data-mce-type')) {\n if (!rootBlockNode) {\n rootBlockNode = createNode(rootBlockName, 1);\n rootBlockNode.attr(settings.forced_root_block_attrs);\n rootNode.insert(rootBlockNode, node);\n rootBlockNode.append(node);\n } else {\n rootBlockNode.append(node);\n }\n } else {\n trim(rootBlockNode);\n rootBlockNode = null;\n }\n node = next;\n }\n trim(rootBlockNode);\n };\n var createNode = function (name, type) {\n var node = new Node$2(name, type);\n var list;\n if (name in nodeFilters) {\n list = matchedNodes[name];\n if (list) {\n list.push(node);\n } else {\n matchedNodes[name] = [node];\n }\n }\n return node;\n };\n var removeWhitespaceBefore = function (node) {\n var textNode, textNodeNext, textVal, sibling;\n var blockElements = schema.getBlockElements();\n for (textNode = node.prev; textNode && textNode.type === 3;) {\n textVal = textNode.value.replace(endWhiteSpaceRegExp, '');\n if (textVal.length > 0) {\n textNode.value = textVal;\n return;\n }\n textNodeNext = textNode.next;\n if (textNodeNext) {\n if (textNodeNext.type === 3 && textNodeNext.value.length) {\n textNode = textNode.prev;\n continue;\n }\n if (!blockElements[textNodeNext.name] && textNodeNext.name !== 'script' && textNodeNext.name !== 'style') {\n textNode = textNode.prev;\n continue;\n }\n }\n sibling = textNode.prev;\n textNode.remove();\n textNode = sibling;\n }\n };\n var cloneAndExcludeBlocks = function (input) {\n var name;\n var output = {};\n for (name in input) {\n if (name !== 'li' && name !== 'p') {\n output[name] = input[name];\n }\n }\n return output;\n };\n parser = SaxParser$1({\n validate: validate,\n allow_script_urls: settings.allow_script_urls,\n allow_conditional_comments: settings.allow_conditional_comments,\n self_closing_elements: cloneAndExcludeBlocks(schema.getSelfClosingElements()),\n cdata: function (text) {\n node.append(createNode('#cdata', 4)).value = text;\n },\n text: function (text, raw) {\n var textNode;\n if (!isInWhiteSpacePreservedElement) {\n text = text.replace(allWhiteSpaceRegExp, ' ');\n if (isLineBreakNode(node.lastChild, blockElements)) {\n text = text.replace(startWhiteSpaceRegExp, '');\n }\n }\n if (text.length !== 0) {\n textNode = createNode('#text', 3);\n textNode.raw = !!raw;\n node.append(textNode).value = text;\n }\n },\n comment: function (text) {\n node.append(createNode('#comment', 8)).value = text;\n },\n pi: function (name, text) {\n node.append(createNode(name, 7)).value = text;\n removeWhitespaceBefore(node);\n },\n doctype: function (text) {\n var newNode;\n newNode = node.append(createNode('#doctype', 10));\n newNode.value = text;\n removeWhitespaceBefore(node);\n },\n start: function (name, attrs, empty) {\n var newNode, attrFiltersLen, elementRule, attrName, parent;\n elementRule = validate ? schema.getElementRule(name) : {};\n if (elementRule) {\n newNode = createNode(elementRule.outputName || name, 1);\n newNode.attributes = attrs;\n newNode.shortEnded = empty;\n node.append(newNode);\n parent = children[node.name];\n if (parent && children[newNode.name] && !parent[newNode.name]) {\n invalidChildren.push(newNode);\n }\n attrFiltersLen = attributeFilters.length;\n while (attrFiltersLen--) {\n attrName = attributeFilters[attrFiltersLen].name;\n if (attrName in attrs.map) {\n list = matchedAttributes[attrName];\n if (list) {\n list.push(newNode);\n } else {\n matchedAttributes[attrName] = [newNode];\n }\n }\n }\n if (blockElements[name]) {\n removeWhitespaceBefore(newNode);\n }\n if (!empty) {\n node = newNode;\n }\n if (!isInWhiteSpacePreservedElement && whiteSpaceElements[name]) {\n isInWhiteSpacePreservedElement = true;\n }\n }\n },\n end: function (name) {\n var textNode, elementRule, text, sibling, tempNode;\n elementRule = validate ? schema.getElementRule(name) : {};\n if (elementRule) {\n if (blockElements[name]) {\n if (!isInWhiteSpacePreservedElement) {\n textNode = node.firstChild;\n if (textNode && textNode.type === 3) {\n text = textNode.value.replace(startWhiteSpaceRegExp, '');\n if (text.length > 0) {\n textNode.value = text;\n textNode = textNode.next;\n } else {\n sibling = textNode.next;\n textNode.remove();\n textNode = sibling;\n while (textNode && textNode.type === 3) {\n text = textNode.value;\n sibling = textNode.next;\n if (text.length === 0 || isAllWhiteSpaceRegExp.test(text)) {\n textNode.remove();\n textNode = sibling;\n }\n textNode = sibling;\n }\n }\n }\n textNode = node.lastChild;\n if (textNode && textNode.type === 3) {\n text = textNode.value.replace(endWhiteSpaceRegExp, '');\n if (text.length > 0) {\n textNode.value = text;\n textNode = textNode.prev;\n } else {\n sibling = textNode.prev;\n textNode.remove();\n textNode = sibling;\n while (textNode && textNode.type === 3) {\n text = textNode.value;\n sibling = textNode.prev;\n if (text.length === 0 || isAllWhiteSpaceRegExp.test(text)) {\n textNode.remove();\n textNode = sibling;\n }\n textNode = sibling;\n }\n }\n }\n }\n }\n if (isInWhiteSpacePreservedElement && whiteSpaceElements[name]) {\n isInWhiteSpacePreservedElement = false;\n }\n if (elementRule.removeEmpty && isEmpty$2(schema, nonEmptyElements, whiteSpaceElements, node)) {\n if (!node.attributes.map.name && !node.attr('id')) {\n tempNode = node.parent;\n if (blockElements[node.name]) {\n node.empty().remove();\n } else {\n node.unwrap();\n }\n node = tempNode;\n return;\n }\n }\n if (elementRule.paddEmpty && (isPaddedWithNbsp(node) || isEmpty$2(schema, nonEmptyElements, whiteSpaceElements, node))) {\n paddEmptyNode(settings, args, blockElements, node);\n }\n node = node.parent;\n }\n }\n }, schema);\n var rootNode = node = new Node$2(args.context || settings.root_name, 11);\n parser.parse(html);\n if (validate && invalidChildren.length) {\n if (!args.context) {\n fixInvalidChildren(invalidChildren);\n } else {\n args.invalid = true;\n }\n }\n if (rootBlockName && (rootNode.name === 'body' || args.isRootContent)) {\n addRootBlocks();\n }\n if (!args.invalid) {\n for (name in matchedNodes) {\n list = nodeFilters[name];\n nodes = matchedNodes[name];\n fi = nodes.length;\n while (fi--) {\n if (!nodes[fi].parent) {\n nodes.splice(fi, 1);\n }\n }\n for (i = 0, l = list.length; i < l; i++) {\n list[i](nodes, name, args);\n }\n }\n for (i = 0, l = attributeFilters.length; i < l; i++) {\n list = attributeFilters[i];\n if (list.name in matchedAttributes) {\n nodes = matchedAttributes[list.name];\n fi = nodes.length;\n while (fi--) {\n if (!nodes[fi].parent) {\n nodes.splice(fi, 1);\n }\n }\n for (fi = 0, fl = list.callbacks.length; fi < fl; fi++) {\n list.callbacks[fi](nodes, list.name, args);\n }\n }\n }\n }\n return rootNode;\n };\n var exports = {\n schema: schema,\n addAttributeFilter: addAttributeFilter,\n getAttributeFilters: getAttributeFilters,\n addNodeFilter: addNodeFilter,\n getNodeFilters: getNodeFilters,\n filterNode: filterNode,\n parse: parse\n };\n register$2(exports, settings);\n $_2klegh6pjkmcwllk.register(exports, settings);\n return exports;\n }\n\n var addTempAttr = function (htmlParser, tempAttrs, name) {\n if ($_4ujg4tljkmcwkbk.inArray(tempAttrs, name) === -1) {\n htmlParser.addAttributeFilter(name, function (nodes, name) {\n var i = nodes.length;\n while (i--) {\n nodes[i].attr(name, null);\n }\n });\n tempAttrs.push(name);\n }\n };\n var postProcess$1 = function (editor, args, content) {\n if (!args.no_events && editor) {\n var outArgs = $_q3ric4tjkmcwl9q.firePostProcess(editor, merge(args, { content: content }));\n return outArgs.content;\n } else {\n return content;\n }\n };\n var getHtmlFromNode = function (dom, node, args) {\n var html = $_cadvcr2pjkmcwkph.trim(args.getInner ? node.innerHTML : dom.getOuterHTML(node));\n return args.selection || isWsPreserveElement(Element$$1.fromDom(node)) ? html : $_4ujg4tljkmcwkbk.trim(html);\n };\n var parseHtml = function (htmlParser, html, args) {\n var parserArgs = args.selection ? merge({ forced_root_block: false }, args) : args;\n var rootNode = htmlParser.parse(html, parserArgs);\n $_ft0zjh6mjkmcwlkr.trimTrailingBr(rootNode);\n return rootNode;\n };\n var serializeNode = function (settings, schema, node) {\n var htmlSerializer = HtmlSerializer(settings, schema);\n return htmlSerializer.serialize(node);\n };\n var toHtml = function (editor, settings, schema, rootNode, args) {\n var content = serializeNode(settings, schema, rootNode);\n return postProcess$1(editor, args, content);\n };\n function DomSerializer (settings, editor) {\n var dom, schema, htmlParser;\n var tempAttrs = ['data-mce-selected'];\n dom = editor && editor.dom ? editor.dom : DOMUtils$1.DOM;\n schema = editor && editor.schema ? editor.schema : Schema(settings);\n settings.entity_encoding = settings.entity_encoding || 'named';\n settings.remove_trailing_brs = 'remove_trailing_brs' in settings ? settings.remove_trailing_brs : true;\n htmlParser = DomParser(settings, schema);\n $_ft0zjh6mjkmcwlkr.register(htmlParser, settings, dom);\n var serialize = function (node, parserArgs) {\n var args = merge({ format: 'html' }, parserArgs ? parserArgs : {});\n var targetNode = $_27apc6njkmcwll3.process(editor, node, args);\n var html = getHtmlFromNode(dom, targetNode, args);\n var rootNode = parseHtml(htmlParser, html, args);\n return args.format === 'tree' ? rootNode : toHtml(editor, settings, schema, rootNode, args);\n };\n return {\n schema: schema,\n addNodeFilter: htmlParser.addNodeFilter,\n addAttributeFilter: htmlParser.addAttributeFilter,\n serialize: serialize,\n addRules: function (rules) {\n schema.addValidElements(rules);\n },\n setRules: function (rules) {\n schema.setValidElements(rules);\n },\n addTempAttr: curry(addTempAttr, htmlParser, tempAttrs),\n getTempAttrs: function () {\n return tempAttrs;\n }\n };\n }\n\n function DomSerializer$1 (settings, editor) {\n var domSerializer = DomSerializer(settings, editor);\n return {\n schema: domSerializer.schema,\n addNodeFilter: domSerializer.addNodeFilter,\n addAttributeFilter: domSerializer.addAttributeFilter,\n serialize: domSerializer.serialize,\n addRules: domSerializer.addRules,\n setRules: domSerializer.setRules,\n addTempAttr: domSerializer.addTempAttr,\n getTempAttrs: domSerializer.getTempAttrs\n };\n }\n\n function BookmarkManager(selection) {\n return {\n getBookmark: curry($_e4btcc2vjkmcwkq3.getBookmark, selection),\n moveToBookmark: curry($_e4btcc2vjkmcwkq3.moveToBookmark, selection)\n };\n }\n (function (BookmarkManager) {\n BookmarkManager.isBookmarkNode = $_e4btcc2vjkmcwkq3.isBookmarkNode;\n }(BookmarkManager || (BookmarkManager = {})));\n var BookmarkManager$1 = BookmarkManager;\n\n var isContentEditableFalse$10 = $_bjermr1rjkmcwkij.isContentEditableFalse;\n var isContentEditableTrue$6 = $_bjermr1rjkmcwkij.isContentEditableTrue;\n var getContentEditableRoot$2 = function (root, node) {\n while (node && node !== root) {\n if (isContentEditableTrue$6(node) || isContentEditableFalse$10(node)) {\n return node;\n }\n node = node.parentNode;\n }\n return null;\n };\n var ControlSelection = function (selection, editor) {\n var dom = editor.dom, each = $_4ujg4tljkmcwkbk.each;\n var selectedElm, selectedElmGhost, resizeHelper, resizeHandles, selectedHandle;\n var startX, startY, selectedElmX, selectedElmY, startW, startH, ratio, resizeStarted;\n var width, height;\n var editableDoc = editor.getDoc(), rootDocument = document;\n var abs = Math.abs, round = Math.round, rootElement = editor.getBody();\n var startScrollWidth, startScrollHeight;\n resizeHandles = {\n nw: [\n 0,\n 0,\n -1,\n -1\n ],\n ne: [\n 1,\n 0,\n 1,\n -1\n ],\n se: [\n 1,\n 1,\n 1,\n 1\n ],\n sw: [\n 0,\n 1,\n -1,\n 1\n ]\n };\n var rootClass = '.mce-content-body';\n editor.contentStyles.push(rootClass + ' div.mce-resizehandle {' + 'position: absolute;' + 'border: 1px solid black;' + 'box-sizing: content-box;' + 'background: #FFF;' + 'width: 7px;' + 'height: 7px;' + 'z-index: 10000' + '}' + rootClass + ' .mce-resizehandle:hover {' + 'background: #000' + '}' + rootClass + ' img[data-mce-selected],' + rootClass + ' hr[data-mce-selected] {' + 'outline: 1px solid black;' + 'resize: none' + '}' + rootClass + ' .mce-clonedresizable {' + 'position: absolute;' + ($_cvvl9iajkmcwk25.gecko ? '' : 'outline: 1px dashed black;') + 'opacity: .5;' + 'filter: alpha(opacity=50);' + 'z-index: 10000' + '}' + rootClass + ' .mce-resize-helper {' + 'background: #555;' + 'background: rgba(0,0,0,0.75);' + 'border-radius: 3px;' + 'border: 1px;' + 'color: white;' + 'display: none;' + 'font-family: sans-serif;' + 'font-size: 12px;' + 'white-space: nowrap;' + 'line-height: 14px;' + 'margin: 5px 10px;' + 'padding: 5px;' + 'position: absolute;' + 'z-index: 10001' + '}');\n var isImage = function (elm) {\n return elm && (elm.nodeName === 'IMG' || editor.dom.is(elm, 'figure.image'));\n };\n var isEventOnImageOutsideRange = function (evt, range) {\n return isImage(evt.target) && !$_95lcbc5ujkmcwlg1.isXYWithinRange(evt.clientX, evt.clientY, range);\n };\n var contextMenuSelectImage = function (evt) {\n var target = evt.target;\n if (isEventOnImageOutsideRange(evt, editor.selection.getRng()) && !evt.isDefaultPrevented()) {\n evt.preventDefault();\n editor.selection.select(target);\n }\n };\n var getResizeTarget = function (elm) {\n return editor.dom.is(elm, 'figure.image') ? elm.querySelector('img') : elm;\n };\n var isResizable = function (elm) {\n var selector = editor.settings.object_resizing;\n if (selector === false || $_cvvl9iajkmcwk25.iOS) {\n return false;\n }\n if (typeof selector !== 'string') {\n selector = 'table,img,figure.image,div';\n }\n if (elm.getAttribute('data-mce-resize') === 'false') {\n return false;\n }\n if (elm === editor.getBody()) {\n return false;\n }\n return $_4jv6d81gjkmcwkgv.is(Element$$1.fromDom(elm), selector);\n };\n var resizeGhostElement = function (e) {\n var deltaX, deltaY, proportional;\n var resizeHelperX, resizeHelperY;\n deltaX = e.screenX - startX;\n deltaY = e.screenY - startY;\n width = deltaX * selectedHandle[2] + startW;\n height = deltaY * selectedHandle[3] + startH;\n width = width < 5 ? 5 : width;\n height = height < 5 ? 5 : height;\n if (isImage(selectedElm) && editor.settings.resize_img_proportional !== false) {\n proportional = !$_6bj5795wjkmcwlg6.modifierPressed(e);\n } else {\n proportional = $_6bj5795wjkmcwlg6.modifierPressed(e) || isImage(selectedElm) && selectedHandle[2] * selectedHandle[3] !== 0;\n }\n if (proportional) {\n if (abs(deltaX) > abs(deltaY)) {\n height = round(width * ratio);\n width = round(height / ratio);\n } else {\n width = round(height / ratio);\n height = round(width * ratio);\n }\n }\n dom.setStyles(getResizeTarget(selectedElmGhost), {\n width: width,\n height: height\n });\n resizeHelperX = selectedHandle.startPos.x + deltaX;\n resizeHelperY = selectedHandle.startPos.y + deltaY;\n resizeHelperX = resizeHelperX > 0 ? resizeHelperX : 0;\n resizeHelperY = resizeHelperY > 0 ? resizeHelperY : 0;\n dom.setStyles(resizeHelper, {\n left: resizeHelperX,\n top: resizeHelperY,\n display: 'block'\n });\n resizeHelper.innerHTML = width + ' × ' + height;\n if (selectedHandle[2] < 0 && selectedElmGhost.clientWidth <= width) {\n dom.setStyle(selectedElmGhost, 'left', selectedElmX + (startW - width));\n }\n if (selectedHandle[3] < 0 && selectedElmGhost.clientHeight <= height) {\n dom.setStyle(selectedElmGhost, 'top', selectedElmY + (startH - height));\n }\n deltaX = rootElement.scrollWidth - startScrollWidth;\n deltaY = rootElement.scrollHeight - startScrollHeight;\n if (deltaX + deltaY !== 0) {\n dom.setStyles(resizeHelper, {\n left: resizeHelperX - deltaX,\n top: resizeHelperY - deltaY\n });\n }\n if (!resizeStarted) {\n $_q3ric4tjkmcwl9q.fireObjectResizeStart(editor, selectedElm, startW, startH);\n resizeStarted = true;\n }\n };\n var endGhostResize = function () {\n resizeStarted = false;\n var setSizeProp = function (name$$1, value) {\n if (value) {\n if (selectedElm.style[name$$1] || !editor.schema.isValid(selectedElm.nodeName.toLowerCase(), name$$1)) {\n dom.setStyle(getResizeTarget(selectedElm), name$$1, value);\n } else {\n dom.setAttrib(getResizeTarget(selectedElm), name$$1, value);\n }\n }\n };\n setSizeProp('width', width);\n setSizeProp('height', height);\n dom.unbind(editableDoc, 'mousemove', resizeGhostElement);\n dom.unbind(editableDoc, 'mouseup', endGhostResize);\n if (rootDocument !== editableDoc) {\n dom.unbind(rootDocument, 'mousemove', resizeGhostElement);\n dom.unbind(rootDocument, 'mouseup', endGhostResize);\n }\n dom.remove(selectedElmGhost);\n dom.remove(resizeHelper);\n showResizeRect(selectedElm);\n $_q3ric4tjkmcwl9q.fireObjectResized(editor, selectedElm, width, height);\n dom.setAttrib(selectedElm, 'style', dom.getAttrib(selectedElm, 'style'));\n editor.nodeChanged();\n };\n var showResizeRect = function (targetElm) {\n var position, targetWidth, targetHeight, e, rect;\n hideResizeRect();\n unbindResizeHandleEvents();\n position = dom.getPos(targetElm, rootElement);\n selectedElmX = position.x;\n selectedElmY = position.y;\n rect = targetElm.getBoundingClientRect();\n targetWidth = rect.width || rect.right - rect.left;\n targetHeight = rect.height || rect.bottom - rect.top;\n if (selectedElm !== targetElm) {\n selectedElm = targetElm;\n width = height = 0;\n }\n e = editor.fire('ObjectSelected', { target: targetElm });\n if (isResizable(targetElm) && !e.isDefaultPrevented()) {\n each(resizeHandles, function (handle, name$$1) {\n var handleElm;\n var startDrag = function (e) {\n startX = e.screenX;\n startY = e.screenY;\n startW = getResizeTarget(selectedElm).clientWidth;\n startH = getResizeTarget(selectedElm).clientHeight;\n ratio = startH / startW;\n selectedHandle = handle;\n handle.startPos = {\n x: targetWidth * handle[0] + selectedElmX,\n y: targetHeight * handle[1] + selectedElmY\n };\n startScrollWidth = rootElement.scrollWidth;\n startScrollHeight = rootElement.scrollHeight;\n selectedElmGhost = selectedElm.cloneNode(true);\n dom.addClass(selectedElmGhost, 'mce-clonedresizable');\n dom.setAttrib(selectedElmGhost, 'data-mce-bogus', 'all');\n selectedElmGhost.contentEditable = false;\n selectedElmGhost.unSelectabe = true;\n dom.setStyles(selectedElmGhost, {\n left: selectedElmX,\n top: selectedElmY,\n margin: 0\n });\n selectedElmGhost.removeAttribute('data-mce-selected');\n rootElement.appendChild(selectedElmGhost);\n dom.bind(editableDoc, 'mousemove', resizeGhostElement);\n dom.bind(editableDoc, 'mouseup', endGhostResize);\n if (rootDocument !== editableDoc) {\n dom.bind(rootDocument, 'mousemove', resizeGhostElement);\n dom.bind(rootDocument, 'mouseup', endGhostResize);\n }\n resizeHelper = dom.add(rootElement, 'div', {\n 'class': 'mce-resize-helper',\n 'data-mce-bogus': 'all'\n }, startW + ' × ' + startH);\n };\n handleElm = dom.get('mceResizeHandle' + name$$1);\n if (handleElm) {\n dom.remove(handleElm);\n }\n handleElm = dom.add(rootElement, 'div', {\n 'id': 'mceResizeHandle' + name$$1,\n 'data-mce-bogus': 'all',\n 'class': 'mce-resizehandle',\n 'unselectable': true,\n 'style': 'cursor:' + name$$1 + '-resize; margin:0; padding:0'\n });\n if ($_cvvl9iajkmcwk25.ie === 11) {\n handleElm.contentEditable = false;\n }\n dom.bind(handleElm, 'mousedown', function (e) {\n e.stopImmediatePropagation();\n e.preventDefault();\n startDrag(e);\n });\n handle.elm = handleElm;\n dom.setStyles(handleElm, {\n left: targetWidth * handle[0] + selectedElmX - handleElm.offsetWidth / 2,\n top: targetHeight * handle[1] + selectedElmY - handleElm.offsetHeight / 2\n });\n });\n } else {\n hideResizeRect();\n }\n selectedElm.setAttribute('data-mce-selected', '1');\n };\n var hideResizeRect = function () {\n var name$$1, handleElm;\n unbindResizeHandleEvents();\n if (selectedElm) {\n selectedElm.removeAttribute('data-mce-selected');\n }\n for (name$$1 in resizeHandles) {\n handleElm = dom.get('mceResizeHandle' + name$$1);\n if (handleElm) {\n dom.unbind(handleElm);\n dom.remove(handleElm);\n }\n }\n };\n var updateResizeRect = function (e) {\n var startElm, controlElm;\n var isChildOrEqual = function (node, parent$$1) {\n if (node) {\n do {\n if (node === parent$$1) {\n return true;\n }\n } while (node = node.parentNode);\n }\n };\n if (resizeStarted || editor.removed) {\n return;\n }\n each(dom.select('img[data-mce-selected],hr[data-mce-selected]'), function (img) {\n img.removeAttribute('data-mce-selected');\n });\n controlElm = e.type === 'mousedown' ? e.target : selection.getNode();\n controlElm = dom.$(controlElm).closest('table,img,figure.image,hr')[0];\n if (isChildOrEqual(controlElm, rootElement)) {\n disableGeckoResize();\n startElm = selection.getStart(true);\n if (isChildOrEqual(startElm, controlElm) && isChildOrEqual(selection.getEnd(true), controlElm)) {\n showResizeRect(controlElm);\n return;\n }\n }\n hideResizeRect();\n };\n var isWithinContentEditableFalse = function (elm) {\n return isContentEditableFalse$10(getContentEditableRoot$2(editor.getBody(), elm));\n };\n var unbindResizeHandleEvents = function () {\n for (var name$$1 in resizeHandles) {\n var handle = resizeHandles[name$$1];\n if (handle.elm) {\n dom.unbind(handle.elm);\n delete handle.elm;\n }\n }\n };\n var disableGeckoResize = function () {\n try {\n editor.getDoc().execCommand('enableObjectResizing', false, false);\n } catch (ex) {\n }\n };\n editor.on('init', function () {\n disableGeckoResize();\n if ($_cvvl9iajkmcwk25.ie && $_cvvl9iajkmcwk25.ie >= 11) {\n editor.on('mousedown click', function (e) {\n var target = e.target, nodeName = target.nodeName;\n if (!resizeStarted && /^(TABLE|IMG|HR)$/.test(nodeName) && !isWithinContentEditableFalse(target)) {\n if (e.button !== 2) {\n editor.selection.select(target, nodeName === 'TABLE');\n }\n if (e.type === 'mousedown') {\n editor.nodeChanged();\n }\n }\n });\n editor.dom.bind(rootElement, 'mscontrolselect', function (e) {\n var delayedSelect = function (node) {\n $_3l01gcijkmcwk99.setEditorTimeout(editor, function () {\n editor.selection.select(node);\n });\n };\n if (isWithinContentEditableFalse(e.target)) {\n e.preventDefault();\n delayedSelect(e.target);\n return;\n }\n if (/^(TABLE|IMG|HR)$/.test(e.target.nodeName)) {\n e.preventDefault();\n if (e.target.tagName === 'IMG') {\n delayedSelect(e.target);\n }\n }\n });\n }\n var throttledUpdateResizeRect = $_3l01gcijkmcwk99.throttle(function (e) {\n if (!editor.composing) {\n updateResizeRect(e);\n }\n });\n editor.on('nodechange ResizeEditor ResizeWindow drop FullscreenStateChanged', throttledUpdateResizeRect);\n editor.on('keyup compositionend', function (e) {\n if (selectedElm && selectedElm.nodeName === 'TABLE') {\n throttledUpdateResizeRect(e);\n }\n });\n editor.on('hide blur', hideResizeRect);\n editor.on('contextmenu', contextMenuSelectImage);\n });\n editor.on('remove', unbindResizeHandleEvents);\n var destroy = function () {\n selectedElm = selectedElmGhost = null;\n };\n return {\n isResizable: isResizable,\n showResizeRect: showResizeRect,\n hideResizeRect: hideResizeRect,\n updateResizeRect: updateResizeRect,\n destroy: destroy\n };\n };\n\n var hasCeProperty = function (node) {\n return $_bjermr1rjkmcwkij.isContentEditableTrue(node) || $_bjermr1rjkmcwkij.isContentEditableFalse(node);\n };\n var findParent$1 = function (node, rootNode, predicate) {\n while (node && node !== rootNode) {\n if (predicate(node)) {\n return node;\n }\n node = node.parentNode;\n }\n return null;\n };\n var findClosestIeRange = function (clientX, clientY, doc) {\n var element, rng, rects;\n element = doc.elementFromPoint(clientX, clientY);\n rng = doc.body.createTextRange();\n if (!element || element.tagName === 'HTML') {\n element = doc.body;\n }\n rng.moveToElementText(element);\n rects = $_4ujg4tljkmcwkbk.toArray(rng.getClientRects());\n rects = rects.sort(function (a, b) {\n a = Math.abs(Math.max(a.top - clientY, a.bottom - clientY));\n b = Math.abs(Math.max(b.top - clientY, b.bottom - clientY));\n return a - b;\n });\n if (rects.length > 0) {\n clientY = (rects[0].bottom + rects[0].top) / 2;\n try {\n rng.moveToPoint(clientX, clientY);\n rng.collapse(true);\n return rng;\n } catch (ex) {\n }\n }\n return null;\n };\n var moveOutOfContentEditableFalse = function (rng, rootNode) {\n var parentElement = rng && rng.parentElement ? rng.parentElement() : null;\n return $_bjermr1rjkmcwkij.isContentEditableFalse(findParent$1(parentElement, rootNode, hasCeProperty)) ? null : rng;\n };\n var fromPoint$1 = function (clientX, clientY, doc) {\n var rng, point;\n var pointDoc = doc;\n if (pointDoc.caretPositionFromPoint) {\n point = pointDoc.caretPositionFromPoint(clientX, clientY);\n if (point) {\n rng = doc.createRange();\n rng.setStart(point.offsetNode, point.offset);\n rng.collapse(true);\n }\n } else if (doc.caretRangeFromPoint) {\n rng = doc.caretRangeFromPoint(clientX, clientY);\n } else if (pointDoc.body.createTextRange) {\n rng = pointDoc.body.createTextRange();\n try {\n rng.moveToPoint(clientX, clientY);\n rng.collapse(true);\n } catch (ex) {\n rng = findClosestIeRange(clientX, clientY, doc);\n }\n return moveOutOfContentEditableFalse(rng, doc.body);\n }\n return rng;\n };\n var $_52q21w6wjkmcwlna = { fromPoint: fromPoint$1 };\n\n var processRanges = function (editor, ranges) {\n return map(ranges, function (range$$1) {\n var evt = editor.fire('GetSelectionRange', { range: range$$1 });\n return evt.range !== range$$1 ? evt.range : range$$1;\n });\n };\n var $_8161126xjkmcwlnd = { processRanges: processRanges };\n\n var fromElements = function (elements, scope) {\n var doc = scope || document;\n var fragment = doc.createDocumentFragment();\n each(elements, function (element) {\n fragment.appendChild(element.dom());\n });\n return Element$$1.fromDom(fragment);\n };\n var $_a3l7fy70jkmcwloa = { fromElements: fromElements };\n\n var tableModel = Immutable('element', 'width', 'rows');\n var tableRow = Immutable('element', 'cells');\n var cellPosition = Immutable('x', 'y');\n var getSpan = function (td, key) {\n var value = parseInt($_29helg15jkmcwkf0.get(td, key), 10);\n return isNaN(value) ? 1 : value;\n };\n var fillout = function (table, x, y, tr, td) {\n var rowspan = getSpan(td, 'rowspan');\n var colspan = getSpan(td, 'colspan');\n var rows = table.rows();\n for (var y2 = y; y2 < y + rowspan; y2++) {\n if (!rows[y2]) {\n rows[y2] = tableRow($_44uvy22ijkmcwko5.deep(tr), []);\n }\n for (var x2 = x; x2 < x + colspan; x2++) {\n var cells = rows[y2].cells();\n cells[x2] = y2 === y && x2 === x ? td : $_44uvy22ijkmcwko5.shallow(td);\n }\n }\n };\n var cellExists = function (table, x, y) {\n var rows = table.rows();\n var cells = rows[y] ? rows[y].cells() : [];\n return !!cells[x];\n };\n var skipCellsX = function (table, x, y) {\n while (cellExists(table, x, y)) {\n x++;\n }\n return x;\n };\n var getWidth = function (rows) {\n return foldl(rows, function (acc, row) {\n return row.cells().length > acc ? row.cells().length : acc;\n }, 0);\n };\n var findElementPos = function (table, element) {\n var rows = table.rows();\n for (var y = 0; y < rows.length; y++) {\n var cells = rows[y].cells();\n for (var x = 0; x < cells.length; x++) {\n if ($_e4hu6h1ejkmcwkgj.eq(cells[x], element)) {\n return Option.some(cellPosition(x, y));\n }\n }\n }\n return Option.none();\n };\n var extractRows = function (table, sx, sy, ex, ey) {\n var newRows = [];\n var rows = table.rows();\n for (var y = sy; y <= ey; y++) {\n var cells = rows[y].cells();\n var slice = sx < ex ? cells.slice(sx, ex + 1) : cells.slice(ex, sx + 1);\n newRows.push(tableRow(rows[y].element(), slice));\n }\n return newRows;\n };\n var subTable = function (table, startPos, endPos) {\n var sx = startPos.x(), sy = startPos.y();\n var ex = endPos.x(), ey = endPos.y();\n var newRows = sy < ey ? extractRows(table, sx, sy, ex, ey) : extractRows(table, sx, ey, ex, sy);\n return tableModel(table.element(), getWidth(newRows), newRows);\n };\n var createDomTable = function (table, rows) {\n var tableElement = $_44uvy22ijkmcwko5.shallow(table.element());\n var tableBody = Element$$1.fromTag('tbody');\n $_1ev7t1xjkmcwkky.append(tableBody, rows);\n $_f4qt4v1yjkmcwkl2.append(tableElement, tableBody);\n return tableElement;\n };\n var modelRowsToDomRows = function (table) {\n return map(table.rows(), function (row) {\n var cells = map(row.cells(), function (cell) {\n var td = $_44uvy22ijkmcwko5.deep(cell);\n $_29helg15jkmcwkf0.remove(td, 'colspan');\n $_29helg15jkmcwkf0.remove(td, 'rowspan');\n return td;\n });\n var tr = $_44uvy22ijkmcwko5.shallow(row.element());\n $_1ev7t1xjkmcwkky.append(tr, cells);\n return tr;\n });\n };\n var fromDom$2 = function (tableElm) {\n var table = tableModel($_44uvy22ijkmcwko5.shallow(tableElm), 0, []);\n each($_2gqm0n27jkmcwkmi.descendants(tableElm, 'tr'), function (tr, y) {\n each($_2gqm0n27jkmcwkmi.descendants(tr, 'td,th'), function (td, x) {\n fillout(table, skipCellsX(table, x, y), y, tr, td);\n });\n });\n return tableModel(table.element(), getWidth(table.rows()), table.rows());\n };\n var toDom = function (table) {\n return createDomTable(table, modelRowsToDomRows(table));\n };\n var subsection = function (table, startElement, endElement) {\n return findElementPos(table, startElement).bind(function (startPos) {\n return findElementPos(table, endElement).map(function (endPos) {\n return subTable(table, startPos, endPos);\n });\n });\n };\n var $_6wuzo771jkmcwlof = {\n fromDom: fromDom$2,\n toDom: toDom,\n subsection: subsection\n };\n\n var findParentListContainer = function (parents) {\n return find(parents, function (elm) {\n return $_2xwdjv11jkmcwke0.name(elm) === 'ul' || $_2xwdjv11jkmcwke0.name(elm) === 'ol';\n });\n };\n var getFullySelectedListWrappers = function (parents, rng) {\n return find(parents, function (elm) {\n return $_2xwdjv11jkmcwke0.name(elm) === 'li' && hasAllContentsSelected(elm, rng);\n }).fold(constant([]), function (li) {\n return findParentListContainer(parents).map(function (listCont) {\n return [\n Element$$1.fromTag('li'),\n Element$$1.fromTag($_2xwdjv11jkmcwke0.name(listCont))\n ];\n }).getOr([]);\n });\n };\n var wrap$3 = function (innerElm, elms) {\n var wrapped = foldl(elms, function (acc, elm) {\n $_f4qt4v1yjkmcwkl2.append(elm, acc);\n return elm;\n }, innerElm);\n return elms.length > 0 ? $_a3l7fy70jkmcwloa.fromElements([wrapped]) : wrapped;\n };\n var directListWrappers = function (commonAnchorContainer) {\n if (isListItem(commonAnchorContainer)) {\n return $_ca6pc118jkmcwkfs.parent(commonAnchorContainer).filter(isList).fold(constant([]), function (listElm) {\n return [\n commonAnchorContainer,\n listElm\n ];\n });\n } else {\n return isList(commonAnchorContainer) ? [commonAnchorContainer] : [];\n }\n };\n var getWrapElements = function (rootNode, rng) {\n var commonAnchorContainer = Element$$1.fromDom(rng.commonAncestorContainer);\n var parents = $_cir6zl3zjkmcwl2j.parentsAndSelf(commonAnchorContainer, rootNode);\n var wrapElements = filter(parents, function (elm) {\n return isInline(elm) || isHeading(elm);\n });\n var listWrappers = getFullySelectedListWrappers(parents, rng);\n var allWrappers = wrapElements.concat(listWrappers.length ? listWrappers : directListWrappers(commonAnchorContainer));\n return map(allWrappers, $_44uvy22ijkmcwko5.shallow);\n };\n var emptyFragment = function () {\n return $_a3l7fy70jkmcwloa.fromElements([]);\n };\n var getFragmentFromRange = function (rootNode, rng) {\n return wrap$3(Element$$1.fromDom(rng.cloneContents()), getWrapElements(rootNode, rng));\n };\n var getParentTable = function (rootElm, cell) {\n return $_4ki4d929jkmcwkmn.ancestor(cell, 'table', curry($_e4hu6h1ejkmcwkgj.eq, rootElm));\n };\n var getTableFragment = function (rootNode, selectedTableCells) {\n return getParentTable(rootNode, selectedTableCells[0]).bind(function (tableElm) {\n var firstCell = selectedTableCells[0];\n var lastCell = selectedTableCells[selectedTableCells.length - 1];\n var fullTableModel = $_6wuzo771jkmcwlof.fromDom(tableElm);\n return $_6wuzo771jkmcwlof.subsection(fullTableModel, firstCell, lastCell).map(function (sectionedTableModel) {\n return $_a3l7fy70jkmcwloa.fromElements([$_6wuzo771jkmcwlof.toDom(sectionedTableModel)]);\n });\n }).getOrThunk(emptyFragment);\n };\n var getSelectionFragment = function (rootNode, ranges) {\n return ranges.length > 0 && ranges[0].collapsed ? emptyFragment() : getFragmentFromRange(rootNode, ranges[0]);\n };\n var read$4 = function (rootNode, ranges) {\n var selectedCells = $_7q5gk44ejkmcwl6p.getCellsFromElementOrRanges(ranges, rootNode);\n return selectedCells.length > 0 ? getTableFragment(rootNode, selectedCells) : getSelectionFragment(rootNode, ranges);\n };\n var $_2bm266zjkmcwlnj = { read: read$4 };\n\n var getContent = function (editor, args) {\n var rng = editor.selection.getRng(), tmpElm = editor.dom.create('body');\n var sel = editor.selection.getSel();\n var fragment;\n var ranges = $_8161126xjkmcwlnd.processRanges(editor, $_admly54fjkmcwl6u.getRanges(sel));\n args = args || {};\n args.get = true;\n args.format = args.format || 'html';\n args.selection = true;\n args = editor.fire('BeforeGetContent', args);\n if (args.isDefaultPrevented()) {\n editor.fire('GetContent', args);\n return args.content;\n }\n if (args.format === 'text') {\n return editor.selection.isCollapsed() ? '' : $_cadvcr2pjkmcwkph.trim(rng.text || (sel.toString ? sel.toString() : ''));\n }\n if (rng.cloneContents) {\n fragment = args.contextual ? $_2bm266zjkmcwlnj.read(Element$$1.fromDom(editor.getBody()), ranges).dom() : rng.cloneContents();\n if (fragment) {\n tmpElm.appendChild(fragment);\n }\n } else if (rng.item !== undefined || rng.htmlText !== undefined) {\n tmpElm.innerHTML = '
' + (rng.item ? rng.item(0).outerHTML : rng.htmlText);\n tmpElm.removeChild(tmpElm.firstChild);\n } else {\n tmpElm.innerHTML = rng.toString();\n }\n args.getInner = true;\n var content = editor.selection.serializer.serialize(tmpElm, args);\n if (args.format === 'tree') {\n return content;\n }\n args.content = editor.selection.isCollapsed() ? '' : content;\n editor.fire('GetContent', args);\n return args.content;\n };\n var $_eu7sms6yjkmcwlnf = { getContent: getContent };\n\n var setContent = function (editor, content, args) {\n var rng = editor.selection.getRng(), caretNode;\n var doc = editor.getDoc();\n var frag, temp;\n args = args || { format: 'html' };\n args.set = true;\n args.selection = true;\n args.content = content;\n if (!args.no_events) {\n args = editor.fire('BeforeSetContent', args);\n if (args.isDefaultPrevented()) {\n editor.fire('SetContent', args);\n return;\n }\n }\n content = args.content;\n if (rng.insertNode) {\n content += '_';\n if (rng.startContainer === doc && rng.endContainer === doc) {\n doc.body.innerHTML = content;\n } else {\n rng.deleteContents();\n if (doc.body.childNodes.length === 0) {\n doc.body.innerHTML = content;\n } else {\n if (rng.createContextualFragment) {\n rng.insertNode(rng.createContextualFragment(content));\n } else {\n frag = doc.createDocumentFragment();\n temp = doc.createElement('div');\n frag.appendChild(temp);\n temp.outerHTML = content;\n rng.insertNode(frag);\n }\n }\n }\n caretNode = editor.dom.get('__caret');\n rng = doc.createRange();\n rng.setStartBefore(caretNode);\n rng.setEndBefore(caretNode);\n editor.selection.setRng(rng);\n editor.dom.remove('__caret');\n try {\n editor.selection.setRng(rng);\n } catch (ex) {\n }\n } else {\n if (rng.item) {\n doc.execCommand('Delete', false, null);\n rng = editor.getRng();\n }\n if (/^\\s+/.test(content)) {\n rng.pasteHTML('_' + content);\n editor.dom.remove('__mce_tmp');\n } else {\n rng.pasteHTML(content);\n }\n }\n if (!args.no_events) {\n editor.fire('SetContent', args);\n }\n };\n var $_b7rwud72jkmcwlow = { setContent: setContent };\n\n var getEndpointElement = function (root, rng, start, real, resolve) {\n var container = start ? rng.startContainer : rng.endContainer;\n var offset = start ? rng.startOffset : rng.endOffset;\n return Option.from(container).map(Element$$1.fromDom).map(function (elm) {\n return !real || !rng.collapsed ? $_ca6pc118jkmcwkfs.child(elm, resolve(elm, offset)).getOr(elm) : elm;\n }).bind(function (elm) {\n return $_2xwdjv11jkmcwke0.isElement(elm) ? Option.some(elm) : $_ca6pc118jkmcwkfs.parent(elm);\n }).map(function (elm) {\n return elm.dom();\n }).getOr(root);\n };\n var getStart$2 = function (root, rng, real) {\n return getEndpointElement(root, rng, true, real, function (elm, offset) {\n return Math.min($_ca6pc118jkmcwkfs.childNodesCount(elm), offset);\n });\n };\n var getEnd = function (root, rng, real) {\n return getEndpointElement(root, rng, false, real, function (elm, offset) {\n return offset > 0 ? offset - 1 : offset;\n });\n };\n var skipEmptyTextNodes = function (node, forwards) {\n var orig = node;\n while (node && $_bjermr1rjkmcwkij.isText(node) && node.length === 0) {\n node = forwards ? node.nextSibling : node.previousSibling;\n }\n return node || orig;\n };\n var getNode$1 = function (root, rng) {\n var elm, startContainer, endContainer, startOffset, endOffset;\n if (!rng) {\n return root;\n }\n startContainer = rng.startContainer;\n endContainer = rng.endContainer;\n startOffset = rng.startOffset;\n endOffset = rng.endOffset;\n elm = rng.commonAncestorContainer;\n if (!rng.collapsed) {\n if (startContainer === endContainer) {\n if (endOffset - startOffset < 2) {\n if (startContainer.hasChildNodes()) {\n elm = startContainer.childNodes[startOffset];\n }\n }\n }\n if (startContainer.nodeType === 3 && endContainer.nodeType === 3) {\n if (startContainer.length === startOffset) {\n startContainer = skipEmptyTextNodes(startContainer.nextSibling, true);\n } else {\n startContainer = startContainer.parentNode;\n }\n if (endOffset === 0) {\n endContainer = skipEmptyTextNodes(endContainer.previousSibling, false);\n } else {\n endContainer = endContainer.parentNode;\n }\n if (startContainer && startContainer === endContainer) {\n return startContainer;\n }\n }\n }\n if (elm && elm.nodeType === 3) {\n return elm.parentNode;\n }\n return elm;\n };\n var getSelectedBlocks = function (dom, rng, startElm, endElm) {\n var node, root;\n var selectedBlocks = [];\n root = dom.getRoot();\n startElm = dom.getParent(startElm || getStart$2(root, rng, rng.collapsed), dom.isBlock);\n endElm = dom.getParent(endElm || getEnd(root, rng, rng.collapsed), dom.isBlock);\n if (startElm && startElm !== root) {\n selectedBlocks.push(startElm);\n }\n if (startElm && endElm && startElm !== endElm) {\n node = startElm;\n var walker = new TreeWalker(startElm, root);\n while ((node = walker.next()) && node !== endElm) {\n if (dom.isBlock(node)) {\n selectedBlocks.push(node);\n }\n }\n }\n if (endElm && startElm !== endElm && endElm !== root) {\n selectedBlocks.push(endElm);\n }\n return selectedBlocks;\n };\n var select$1 = function (dom, node, content) {\n return Option.from(node).map(function (node) {\n var idx = dom.nodeIndex(node);\n var rng = dom.createRng();\n rng.setStart(node.parentNode, idx);\n rng.setEnd(node.parentNode, idx + 1);\n if (content) {\n moveEndPoint$1(dom, rng, node, true);\n moveEndPoint$1(dom, rng, node, false);\n }\n return rng;\n });\n };\n\n var each$19 = $_4ujg4tljkmcwkbk.each;\n var isNativeIeSelection = function (rng) {\n return !!rng.select;\n };\n var isAttachedToDom = function (node) {\n return !!(node && node.ownerDocument) && $_e4hu6h1ejkmcwkgj.contains(Element$$1.fromDom(node.ownerDocument), Element$$1.fromDom(node));\n };\n var isValidRange = function (rng) {\n if (!rng) {\n return false;\n } else if (isNativeIeSelection(rng)) {\n return true;\n } else {\n return isAttachedToDom(rng.startContainer) && isAttachedToDom(rng.endContainer);\n }\n };\n var Selection$1 = function (dom, win, serializer, editor) {\n var bookmarkManager, controlSelection;\n var selectedRange, explicitRange, selectorChangedData;\n var setCursorLocation = function (node, offset) {\n var rng = dom.createRng();\n if (!node) {\n moveEndPoint$1(dom, rng, editor.getBody(), true);\n setRng(rng);\n } else {\n rng.setStart(node, offset);\n rng.setEnd(node, offset);\n setRng(rng);\n collapse(false);\n }\n };\n var getContent = function (args) {\n return $_eu7sms6yjkmcwlnf.getContent(editor, args);\n };\n var setContent = function (content, args) {\n return $_b7rwud72jkmcwlow.setContent(editor, content, args);\n };\n var getStart = function (real) {\n return getStart$2(editor.getBody(), getRng(), real);\n };\n var getEnd$$1 = function (real) {\n return getEnd(editor.getBody(), getRng(), real);\n };\n var getBookmark = function (type, normalized) {\n return bookmarkManager.getBookmark(type, normalized);\n };\n var moveToBookmark = function (bookmark) {\n return bookmarkManager.moveToBookmark(bookmark);\n };\n var select = function (node, content) {\n select$1(dom, node, content).each(setRng);\n return node;\n };\n var isCollapsed = function () {\n var rng = getRng(), sel = getSel();\n if (!rng || rng.item) {\n return false;\n }\n if (rng.compareEndPoints) {\n return rng.compareEndPoints('StartToEnd', rng) === 0;\n }\n return !sel || rng.collapsed;\n };\n var collapse = function (toStart) {\n var rng = getRng();\n rng.collapse(!!toStart);\n setRng(rng);\n };\n var getSel = function () {\n return win.getSelection ? win.getSelection() : win.document.selection;\n };\n var getRng = function () {\n var selection, rng, elm, doc;\n var tryCompareBoundaryPoints = function (how, sourceRange, destinationRange) {\n try {\n return sourceRange.compareBoundaryPoints(how, destinationRange);\n } catch (ex) {\n return -1;\n }\n };\n if (!win) {\n return null;\n }\n doc = win.document;\n if (typeof doc === 'undefined' || doc === null) {\n return null;\n }\n if (editor.bookmark !== undefined && $_e3v8sn4vjkmcwl9y.hasFocus(editor) === false) {\n var bookmark = $_39c3zs4ljkmcwl86.getRng(editor);\n if (bookmark.isSome()) {\n return bookmark.map(function (r) {\n return $_8161126xjkmcwlnd.processRanges(editor, [r])[0];\n }).getOr(doc.createRange());\n }\n }\n try {\n if (selection = getSel()) {\n if (selection.rangeCount > 0) {\n rng = selection.getRangeAt(0);\n } else {\n rng = selection.createRange ? selection.createRange() : doc.createRange();\n }\n }\n } catch (ex) {\n }\n rng = $_8161126xjkmcwlnd.processRanges(editor, [rng])[0];\n if (!rng) {\n rng = doc.createRange ? doc.createRange() : doc.body.createTextRange();\n }\n if (rng.setStart && rng.startContainer.nodeType === 9 && rng.collapsed) {\n elm = dom.getRoot();\n rng.setStart(elm, 0);\n rng.setEnd(elm, 0);\n }\n if (selectedRange && explicitRange) {\n if (tryCompareBoundaryPoints(rng.START_TO_START, rng, selectedRange) === 0 && tryCompareBoundaryPoints(rng.END_TO_END, rng, selectedRange) === 0) {\n rng = explicitRange;\n } else {\n selectedRange = null;\n explicitRange = null;\n }\n }\n return rng;\n };\n var setRng = function (rng, forward) {\n var sel, node, evt;\n if (!isValidRange(rng)) {\n return;\n }\n var ieRange = isNativeIeSelection(rng) ? rng : null;\n if (ieRange) {\n explicitRange = null;\n try {\n ieRange.select();\n } catch (ex) {\n }\n return;\n }\n sel = getSel();\n evt = editor.fire('SetSelectionRange', {\n range: rng,\n forward: forward\n });\n rng = evt.range;\n if (sel) {\n explicitRange = rng;\n try {\n sel.removeAllRanges();\n sel.addRange(rng);\n } catch (ex) {\n }\n if (forward === false && sel.extend) {\n sel.collapse(rng.endContainer, rng.endOffset);\n sel.extend(rng.startContainer, rng.startOffset);\n }\n selectedRange = sel.rangeCount > 0 ? sel.getRangeAt(0) : null;\n }\n if (!rng.collapsed && rng.startContainer === rng.endContainer && sel.setBaseAndExtent && !$_cvvl9iajkmcwk25.ie) {\n if (rng.endOffset - rng.startOffset < 2) {\n if (rng.startContainer.hasChildNodes()) {\n node = rng.startContainer.childNodes[rng.startOffset];\n if (node && node.tagName === 'IMG') {\n sel.setBaseAndExtent(rng.startContainer, rng.startOffset, rng.endContainer, rng.endOffset);\n if (sel.anchorNode !== rng.startContainer || sel.focusNode !== rng.endContainer) {\n sel.setBaseAndExtent(node, 0, node, 1);\n }\n }\n }\n }\n }\n editor.fire('AfterSetSelectionRange', {\n range: rng,\n forward: forward\n });\n };\n var setNode = function (elm) {\n setContent(dom.getOuterHTML(elm));\n return elm;\n };\n var getNode = function () {\n return getNode$1(editor.getBody(), getRng());\n };\n var getSelectedBlocks$$1 = function (startElm, endElm) {\n return getSelectedBlocks(dom, getRng(), startElm, endElm);\n };\n var isForward = function () {\n var sel = getSel();\n var anchorRange, focusRange;\n if (!sel || !sel.anchorNode || !sel.focusNode) {\n return true;\n }\n anchorRange = dom.createRng();\n anchorRange.setStart(sel.anchorNode, sel.anchorOffset);\n anchorRange.collapse(true);\n focusRange = dom.createRng();\n focusRange.setStart(sel.focusNode, sel.focusOffset);\n focusRange.collapse(true);\n return anchorRange.compareBoundaryPoints(anchorRange.START_TO_START, focusRange) <= 0;\n };\n var normalize = function () {\n var rng = getRng();\n var sel = getSel();\n if (!$_admly54fjkmcwl6u.hasMultipleRanges(sel) && hasAnyRanges(editor)) {\n var normRng = $_21c07i4jjkmcwl7w.normalize(dom, rng);\n normRng.each(function (normRng) {\n setRng(normRng, isForward());\n });\n return normRng.getOr(rng);\n }\n return rng;\n };\n var selectorChanged = function (selector, callback) {\n var currentSelectors;\n if (!selectorChangedData) {\n selectorChangedData = {};\n currentSelectors = {};\n editor.on('NodeChange', function (e) {\n var node = e.element, parents = dom.getParents(node, null, dom.getRoot()), matchedSelectors = {};\n each$19(selectorChangedData, function (callbacks, selector) {\n each$19(parents, function (node) {\n if (dom.is(node, selector)) {\n if (!currentSelectors[selector]) {\n each$19(callbacks, function (callback) {\n callback(true, {\n node: node,\n selector: selector,\n parents: parents\n });\n });\n currentSelectors[selector] = callbacks;\n }\n matchedSelectors[selector] = callbacks;\n return false;\n }\n });\n });\n each$19(currentSelectors, function (callbacks, selector) {\n if (!matchedSelectors[selector]) {\n delete currentSelectors[selector];\n each$19(callbacks, function (callback) {\n callback(false, {\n node: node,\n selector: selector,\n parents: parents\n });\n });\n }\n });\n });\n }\n if (!selectorChangedData[selector]) {\n selectorChangedData[selector] = [];\n }\n selectorChangedData[selector].push(callback);\n return exports;\n };\n var getScrollContainer = function () {\n var scrollContainer;\n var node = dom.getRoot();\n while (node && node.nodeName !== 'BODY') {\n if (node.scrollHeight > node.clientHeight) {\n scrollContainer = node;\n break;\n }\n node = node.parentNode;\n }\n return scrollContainer;\n };\n var scrollIntoView = function (elm, alignToTop) {\n return $_a6610x37jkmcwkt5.scrollElementIntoView(editor, elm, alignToTop);\n };\n var placeCaretAt = function (clientX, clientY) {\n return setRng($_52q21w6wjkmcwlna.fromPoint(clientX, clientY, editor.getDoc()));\n };\n var getBoundingClientRect = function () {\n var rng = getRng();\n return rng.collapsed ? CaretPosition$1.fromRangeStart(rng).getClientRects()[0] : rng.getBoundingClientRect();\n };\n var destroy = function () {\n win = selectedRange = explicitRange = null;\n controlSelection.destroy();\n };\n var exports = {\n bookmarkManager: null,\n controlSelection: null,\n dom: dom,\n win: win,\n serializer: serializer,\n editor: editor,\n collapse: collapse,\n setCursorLocation: setCursorLocation,\n getContent: getContent,\n setContent: setContent,\n getBookmark: getBookmark,\n moveToBookmark: moveToBookmark,\n select: select,\n isCollapsed: isCollapsed,\n isForward: isForward,\n setNode: setNode,\n getNode: getNode,\n getSel: getSel,\n setRng: setRng,\n getRng: getRng,\n getStart: getStart,\n getEnd: getEnd$$1,\n getSelectedBlocks: getSelectedBlocks$$1,\n normalize: normalize,\n selectorChanged: selectorChanged,\n getScrollContainer: getScrollContainer,\n scrollIntoView: scrollIntoView,\n placeCaretAt: placeCaretAt,\n getBoundingClientRect: getBoundingClientRect,\n destroy: destroy\n };\n bookmarkManager = BookmarkManager$1(exports);\n controlSelection = ControlSelection(exports, editor);\n exports.bookmarkManager = bookmarkManager;\n exports.controlSelection = controlSelection;\n return exports;\n };\n\n var isContentEditableFalse$11 = $_bjermr1rjkmcwkij.isContentEditableFalse;\n var getSelectedNode$1 = getSelectedNode;\n var isAfterContentEditableFalse$2 = isAfterContentEditableFalse;\n var isBeforeContentEditableFalse$2 = isBeforeContentEditableFalse;\n var getVisualCaretPosition = function (walkFn, caretPosition) {\n while (caretPosition = walkFn(caretPosition)) {\n if (caretPosition.isVisible()) {\n return caretPosition;\n }\n }\n return caretPosition;\n };\n var isMoveInsideSameBlock = function (from, to) {\n var inSameBlock = isInSameBlock(from, to);\n if (!inSameBlock && $_bjermr1rjkmcwkij.isBr(from.getNode())) {\n return true;\n }\n return inSameBlock;\n };\n var moveToCeFalseHorizontally = function (direction, editor, getNextPosFn, range) {\n var node, caretPosition, peekCaretPosition, rangeIsInContainerBlock;\n var forwards = direction === HDirection.Forwards;\n var isBeforeContentEditableFalseFn = forwards ? isBeforeContentEditableFalse$2 : isAfterContentEditableFalse$2;\n if (!range.collapsed) {\n node = getSelectedNode$1(range);\n if (isContentEditableFalse$11(node)) {\n return showCaret(direction, editor, node, direction === HDirection.Backwards, true);\n }\n }\n rangeIsInContainerBlock = isRangeInCaretContainerBlock(range);\n caretPosition = getNormalizedRangeEndPoint(direction, editor.getBody(), range);\n if (isBeforeContentEditableFalseFn(caretPosition)) {\n return selectNode(editor, caretPosition.getNode(!forwards));\n }\n caretPosition = getNextPosFn(caretPosition);\n if (!caretPosition) {\n if (rangeIsInContainerBlock) {\n return range;\n }\n return null;\n }\n if (isBeforeContentEditableFalseFn(caretPosition)) {\n return showCaret(direction, editor, caretPosition.getNode(!forwards), forwards, true);\n }\n peekCaretPosition = getNextPosFn(caretPosition);\n if (isBeforeContentEditableFalseFn(peekCaretPosition)) {\n if (isMoveInsideSameBlock(caretPosition, peekCaretPosition)) {\n return showCaret(direction, editor, peekCaretPosition.getNode(!forwards), forwards, true);\n }\n }\n if (rangeIsInContainerBlock) {\n return renderRangeCaret(editor, caretPosition.toRange(), true);\n }\n return null;\n };\n var moveToCeFalseVertically = function (direction, editor, walkerFn, range) {\n var caretPosition, linePositions, nextLinePositions;\n var closestNextLineRect, caretClientRect, clientX;\n var dist1, dist2, contentEditableFalseNode;\n contentEditableFalseNode = getSelectedNode$1(range);\n caretPosition = getNormalizedRangeEndPoint(direction, editor.getBody(), range);\n linePositions = walkerFn(editor.getBody(), isAboveLine(1), caretPosition);\n nextLinePositions = $_9g1fibmjkmcwkbu.filter(linePositions, isLine(1));\n caretClientRect = $_9g1fibmjkmcwkbu.last(caretPosition.getClientRects());\n if (isBeforeContentEditableFalse$2(caretPosition) || isBeforeTable(caretPosition)) {\n contentEditableFalseNode = caretPosition.getNode();\n }\n if (isAfterContentEditableFalse$2(caretPosition) || isAfterTable(caretPosition)) {\n contentEditableFalseNode = caretPosition.getNode(true);\n }\n if (!caretClientRect) {\n return null;\n }\n clientX = caretClientRect.left;\n closestNextLineRect = findClosestClientRect(nextLinePositions, clientX);\n if (closestNextLineRect) {\n if (isContentEditableFalse$11(closestNextLineRect.node)) {\n dist1 = Math.abs(clientX - closestNextLineRect.left);\n dist2 = Math.abs(clientX - closestNextLineRect.right);\n return showCaret(direction, editor, closestNextLineRect.node, dist1 < dist2, true);\n }\n }\n if (contentEditableFalseNode) {\n var caretPositions = positionsUntil(direction, editor.getBody(), isAboveLine(1), contentEditableFalseNode);\n closestNextLineRect = findClosestClientRect($_9g1fibmjkmcwkbu.filter(caretPositions, isLine(1)), clientX);\n if (closestNextLineRect) {\n return renderRangeCaret(editor, closestNextLineRect.position.toRange(), true);\n }\n closestNextLineRect = $_9g1fibmjkmcwkbu.last($_9g1fibmjkmcwkbu.filter(caretPositions, isLine(0)));\n if (closestNextLineRect) {\n return renderRangeCaret(editor, closestNextLineRect.position.toRange(), true);\n }\n }\n };\n var createTextBlock = function (editor) {\n var textBlock = editor.dom.create(editor.settings.forced_root_block);\n if (!$_cvvl9iajkmcwk25.ie || $_cvvl9iajkmcwk25.ie >= 11) {\n textBlock.innerHTML = '
';\n }\n return textBlock;\n };\n var exitPreBlock = function (editor, direction, range) {\n var pre, caretPos, newBlock;\n var caretWalker = CaretWalker(editor.getBody());\n var getNextVisualCaretPosition = $_fl2rax2ljkmcwkot.curry(getVisualCaretPosition, caretWalker.next);\n var getPrevVisualCaretPosition = $_fl2rax2ljkmcwkot.curry(getVisualCaretPosition, caretWalker.prev);\n if (range.collapsed && editor.settings.forced_root_block) {\n pre = editor.dom.getParent(range.startContainer, 'PRE');\n if (!pre) {\n return;\n }\n if (direction === 1) {\n caretPos = getNextVisualCaretPosition(CaretPosition$1.fromRangeStart(range));\n } else {\n caretPos = getPrevVisualCaretPosition(CaretPosition$1.fromRangeStart(range));\n }\n if (!caretPos) {\n newBlock = createTextBlock(editor);\n if (direction === 1) {\n editor.$(pre).after(newBlock);\n } else {\n editor.$(pre).before(newBlock);\n }\n editor.selection.select(newBlock, true);\n editor.selection.collapse();\n }\n }\n };\n var getHorizontalRange = function (editor, forward) {\n var caretWalker = CaretWalker(editor.getBody());\n var getNextVisualCaretPosition = $_fl2rax2ljkmcwkot.curry(getVisualCaretPosition, caretWalker.next);\n var getPrevVisualCaretPosition = $_fl2rax2ljkmcwkot.curry(getVisualCaretPosition, caretWalker.prev);\n var newRange;\n var direction = forward ? HDirection.Forwards : HDirection.Backwards;\n var getNextPosFn = forward ? getNextVisualCaretPosition : getPrevVisualCaretPosition;\n var range = editor.selection.getRng();\n newRange = moveToCeFalseHorizontally(direction, editor, getNextPosFn, range);\n if (newRange) {\n return newRange;\n }\n newRange = exitPreBlock(editor, direction, range);\n if (newRange) {\n return newRange;\n }\n return null;\n };\n var getVerticalRange = function (editor, down) {\n var newRange;\n var direction = down ? 1 : -1;\n var walkerFn = down ? downUntil : upUntil;\n var range = editor.selection.getRng();\n newRange = moveToCeFalseVertically(direction, editor, walkerFn, range);\n if (newRange) {\n return newRange;\n }\n newRange = exitPreBlock(editor, direction, range);\n if (newRange) {\n return newRange;\n }\n return null;\n };\n var moveH$1 = function (editor, forward) {\n return function () {\n var newRng = getHorizontalRange(editor, forward);\n if (newRng) {\n editor.selection.setRng(newRng);\n return true;\n } else {\n return false;\n }\n };\n };\n var moveV$1 = function (editor, down) {\n return function () {\n var newRng = getVerticalRange(editor, down);\n if (newRng) {\n editor.selection.setRng(newRng);\n return true;\n } else {\n return false;\n }\n };\n };\n\n var defaultPatterns = function (patterns) {\n return map(patterns, function (pattern) {\n return merge({\n shiftKey: false,\n altKey: false,\n ctrlKey: false,\n metaKey: false,\n keyCode: 0,\n action: noop\n }, pattern);\n });\n };\n var matchesEvent = function (pattern, evt) {\n return evt.keyCode === pattern.keyCode && evt.shiftKey === pattern.shiftKey && evt.altKey === pattern.altKey && evt.ctrlKey === pattern.ctrlKey && evt.metaKey === pattern.metaKey;\n };\n var match$1 = function (patterns, evt) {\n return bind(defaultPatterns(patterns), function (pattern) {\n return matchesEvent(pattern, evt) ? [pattern] : [];\n });\n };\n var action = function (f) {\n var x = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n x[_i - 1] = arguments[_i];\n }\n var args = Array.prototype.slice.call(arguments, 1);\n return function () {\n return f.apply(null, args);\n };\n };\n var execute = function (patterns, evt) {\n return find(match$1(patterns, evt), function (pattern) {\n return pattern.action();\n });\n };\n var $_3olmgr77jkmcwlpj = {\n match: match$1,\n action: action,\n execute: execute\n };\n\n var executeKeydownOverride = function (editor, caret, evt) {\n var os = $_b1ykk4ojkmcwkcj.detect().os;\n $_3olmgr77jkmcwlpj.execute([\n {\n keyCode: $_6bj5795wjkmcwlg6.RIGHT,\n action: moveH$1(editor, true)\n },\n {\n keyCode: $_6bj5795wjkmcwlg6.LEFT,\n action: moveH$1(editor, false)\n },\n {\n keyCode: $_6bj5795wjkmcwlg6.UP,\n action: moveV$1(editor, false)\n },\n {\n keyCode: $_6bj5795wjkmcwlg6.DOWN,\n action: moveV$1(editor, true)\n },\n {\n keyCode: $_6bj5795wjkmcwlg6.RIGHT,\n action: moveH(editor, true)\n },\n {\n keyCode: $_6bj5795wjkmcwlg6.LEFT,\n action: moveH(editor, false)\n },\n {\n keyCode: $_6bj5795wjkmcwlg6.UP,\n action: moveV(editor, false)\n },\n {\n keyCode: $_6bj5795wjkmcwlg6.DOWN,\n action: moveV(editor, true)\n },\n {\n keyCode: $_6bj5795wjkmcwlg6.RIGHT,\n action: $_dl6t9m4ajkmcwl5b.move(editor, caret, true)\n },\n {\n keyCode: $_6bj5795wjkmcwlg6.LEFT,\n action: $_dl6t9m4ajkmcwl5b.move(editor, caret, false)\n },\n {\n keyCode: $_6bj5795wjkmcwlg6.RIGHT,\n ctrlKey: !os.isOSX(),\n altKey: os.isOSX(),\n action: $_dl6t9m4ajkmcwl5b.moveNextWord(editor, caret)\n },\n {\n keyCode: $_6bj5795wjkmcwlg6.LEFT,\n ctrlKey: !os.isOSX(),\n altKey: os.isOSX(),\n action: $_dl6t9m4ajkmcwl5b.movePrevWord(editor, caret)\n }\n ], evt).each(function (_) {\n evt.preventDefault();\n });\n };\n var setup$7 = function (editor, caret) {\n editor.on('keydown', function (evt) {\n if (evt.isDefaultPrevented() === false) {\n executeKeydownOverride(editor, caret, evt);\n }\n });\n };\n var $_emza9w75jkmcwlp9 = { setup: setup$7 };\n\n var getParentInlines = function (rootElm, startElm) {\n var parents = $_cir6zl3zjkmcwl2j.parentsAndSelf(startElm, rootElm);\n return findIndex(parents, isBlock).fold(constant(parents), function (index) {\n return parents.slice(0, index);\n });\n };\n var hasOnlyOneChild$1 = function (elm) {\n return $_ca6pc118jkmcwkfs.children(elm).length === 1;\n };\n var deleteLastPosition = function (forward, editor, target, parentInlines) {\n var isFormatElement$$1 = curry(isFormatElement, editor);\n var formatNodes = map(filter(parentInlines, isFormatElement$$1), function (elm) {\n return elm.dom();\n });\n if (formatNodes.length === 0) {\n $_4yq1i444jkmcwl3w.deleteElement(editor, forward, target);\n } else {\n var pos = replaceWithCaretFormat(target.dom(), formatNodes);\n editor.selection.setRng(pos.toRange());\n }\n };\n var deleteCaret$1 = function (editor, forward) {\n var rootElm = Element$$1.fromDom(editor.getBody());\n var startElm = Element$$1.fromDom(editor.selection.getStart());\n var parentInlines = filter(getParentInlines(rootElm, startElm), hasOnlyOneChild$1);\n return last(parentInlines).map(function (target) {\n var fromPos = CaretPosition$1.fromRangeStart(editor.selection.getRng());\n if ($_8z75uj3sjkmcwkx3.willDeleteLastPositionInElement(forward, fromPos, target.dom())) {\n deleteLastPosition(forward, editor, target, parentInlines);\n return true;\n } else {\n return false;\n }\n }).getOr(false);\n };\n var backspaceDelete$5 = function (editor, forward) {\n return editor.selection.isCollapsed() ? deleteCaret$1(editor, forward) : false;\n };\n var $_7tr96779jkmcwlpz = { backspaceDelete: backspaceDelete$5 };\n\n var executeKeydownOverride$1 = function (editor, caret, evt) {\n $_3olmgr77jkmcwlpj.execute([\n {\n keyCode: $_6bj5795wjkmcwlg6.BACKSPACE,\n action: $_3olmgr77jkmcwlpj.action($_1hyiiy41jkmcwl2z.backspaceDelete, editor, false)\n },\n {\n keyCode: $_6bj5795wjkmcwlg6.DELETE,\n action: $_3olmgr77jkmcwlpj.action($_1hyiiy41jkmcwl2z.backspaceDelete, editor, true)\n },\n {\n keyCode: $_6bj5795wjkmcwlg6.BACKSPACE,\n action: $_3olmgr77jkmcwlpj.action($_dqvreg45jkmcwl4e.backspaceDelete, editor, caret, false)\n },\n {\n keyCode: $_6bj5795wjkmcwlg6.DELETE,\n action: $_3olmgr77jkmcwlpj.action($_dqvreg45jkmcwl4e.backspaceDelete, editor, caret, true)\n },\n {\n keyCode: $_6bj5795wjkmcwlg6.BACKSPACE,\n action: $_3olmgr77jkmcwlpj.action($_5lrlvq4cjkmcwl5t.backspaceDelete, editor, false)\n },\n {\n keyCode: $_6bj5795wjkmcwlg6.DELETE,\n action: $_3olmgr77jkmcwlpj.action($_5lrlvq4cjkmcwl5t.backspaceDelete, editor, true)\n },\n {\n keyCode: $_6bj5795wjkmcwlg6.BACKSPACE,\n action: $_3olmgr77jkmcwlpj.action($_egxtcx40jkmcwl2q.backspaceDelete, editor, false)\n },\n {\n keyCode: $_6bj5795wjkmcwlg6.DELETE,\n action: $_3olmgr77jkmcwlpj.action($_egxtcx40jkmcwl2q.backspaceDelete, editor, true)\n },\n {\n keyCode: $_6bj5795wjkmcwlg6.BACKSPACE,\n action: $_3olmgr77jkmcwlpj.action($_1wrlyf3qjkmcwkwe.backspaceDelete, editor, false)\n },\n {\n keyCode: $_6bj5795wjkmcwlg6.DELETE,\n action: $_3olmgr77jkmcwlpj.action($_1wrlyf3qjkmcwkwe.backspaceDelete, editor, true)\n },\n {\n keyCode: $_6bj5795wjkmcwlg6.BACKSPACE,\n action: $_3olmgr77jkmcwlpj.action($_7tr96779jkmcwlpz.backspaceDelete, editor, false)\n },\n {\n keyCode: $_6bj5795wjkmcwlg6.DELETE,\n action: $_3olmgr77jkmcwlpj.action($_7tr96779jkmcwlpz.backspaceDelete, editor, true)\n }\n ], evt).each(function (_) {\n evt.preventDefault();\n });\n };\n var executeKeyupOverride = function (editor, evt) {\n $_3olmgr77jkmcwlpj.execute([\n {\n keyCode: $_6bj5795wjkmcwlg6.BACKSPACE,\n action: $_3olmgr77jkmcwlpj.action($_1hyiiy41jkmcwl2z.paddEmptyElement, editor)\n },\n {\n keyCode: $_6bj5795wjkmcwlg6.DELETE,\n action: $_3olmgr77jkmcwlpj.action($_1hyiiy41jkmcwl2z.paddEmptyElement, editor)\n }\n ], evt);\n };\n var setup$8 = function (editor, caret) {\n editor.on('keydown', function (evt) {\n if (evt.isDefaultPrevented() === false) {\n executeKeydownOverride$1(editor, caret, evt);\n }\n });\n editor.on('keyup', function (evt) {\n if (evt.isDefaultPrevented() === false) {\n executeKeyupOverride(editor, evt);\n }\n });\n };\n var $_4dsl7478jkmcwlpw = { setup: setup$8 };\n\n var firstNonWhiteSpaceNodeSibling = function (node) {\n while (node) {\n if (node.nodeType === 1 || node.nodeType === 3 && node.data && /[\\r\\n\\s]/.test(node.data)) {\n return node;\n }\n node = node.nextSibling;\n }\n };\n var moveToCaretPosition = function (editor, root) {\n var walker, node, rng, lastNode = root, tempElm;\n var dom = editor.dom;\n var moveCaretBeforeOnEnterElementsMap = editor.schema.getMoveCaretBeforeOnEnterElements();\n if (!root) {\n return;\n }\n if (/^(LI|DT|DD)$/.test(root.nodeName)) {\n var firstChild = firstNonWhiteSpaceNodeSibling(root.firstChild);\n if (firstChild && /^(UL|OL|DL)$/.test(firstChild.nodeName)) {\n root.insertBefore(dom.doc.createTextNode('\\xA0'), root.firstChild);\n }\n }\n rng = dom.createRng();\n root.normalize();\n if (root.hasChildNodes()) {\n walker = new TreeWalker(root, root);\n while (node = walker.current()) {\n if ($_bjermr1rjkmcwkij.isText(node)) {\n rng.setStart(node, 0);\n rng.setEnd(node, 0);\n break;\n }\n if (moveCaretBeforeOnEnterElementsMap[node.nodeName.toLowerCase()]) {\n rng.setStartBefore(node);\n rng.setEndBefore(node);\n break;\n }\n lastNode = node;\n node = walker.next();\n }\n if (!node) {\n rng.setStart(lastNode, 0);\n rng.setEnd(lastNode, 0);\n }\n } else {\n if ($_bjermr1rjkmcwkij.isBr(root)) {\n if (root.nextSibling && dom.isBlock(root.nextSibling)) {\n rng.setStartBefore(root);\n rng.setEndBefore(root);\n } else {\n rng.setStartAfter(root);\n rng.setEndAfter(root);\n }\n } else {\n rng.setStart(root, 0);\n rng.setEnd(root, 0);\n }\n }\n editor.selection.setRng(rng);\n dom.remove(tempElm);\n editor.selection.scrollIntoView(root);\n };\n var getEditableRoot = function (dom, node) {\n var root = dom.getRoot();\n var parent, editableRoot;\n parent = node;\n while (parent !== root && dom.getContentEditable(parent) !== 'false') {\n if (dom.getContentEditable(parent) === 'true') {\n editableRoot = parent;\n }\n parent = parent.parentNode;\n }\n return parent !== root ? editableRoot : root;\n };\n var getParentBlock$2 = function (editor) {\n return Option.from(editor.dom.getParent(editor.selection.getStart(true), editor.dom.isBlock));\n };\n var getParentBlockName = function (editor) {\n return getParentBlock$2(editor).fold(constant(''), function (parentBlock) {\n return parentBlock.nodeName.toUpperCase();\n });\n };\n var isListItemParentBlock = function (editor) {\n return getParentBlock$2(editor).filter(function (elm) {\n return isListItem(Element$$1.fromDom(elm));\n }).isSome();\n };\n var $_79nvm87ejkmcwlqu = {\n moveToCaretPosition: moveToCaretPosition,\n getEditableRoot: getEditableRoot,\n getParentBlock: getParentBlock$2,\n getParentBlockName: getParentBlockName,\n isListItemParentBlock: isListItemParentBlock\n };\n\n var hasFirstChild = function (elm, name) {\n return elm.firstChild && elm.firstChild.nodeName === name;\n };\n var hasParent$1 = function (elm, parentName) {\n return elm && elm.parentNode && elm.parentNode.nodeName === parentName;\n };\n var isListBlock = function (elm) {\n return elm && /^(OL|UL|LI)$/.test(elm.nodeName);\n };\n var isNestedList = function (elm) {\n return isListBlock(elm) && isListBlock(elm.parentNode);\n };\n var getContainerBlock = function (containerBlock) {\n var containerBlockParent = containerBlock.parentNode;\n if (/^(LI|DT|DD)$/.test(containerBlockParent.nodeName)) {\n return containerBlockParent;\n }\n return containerBlock;\n };\n var isFirstOrLastLi = function (containerBlock, parentBlock, first) {\n var node = containerBlock[first ? 'firstChild' : 'lastChild'];\n while (node) {\n if ($_bjermr1rjkmcwkij.isElement(node)) {\n break;\n }\n node = node[first ? 'nextSibling' : 'previousSibling'];\n }\n return node === parentBlock;\n };\n var insert$1 = function (editor, createNewBlock, containerBlock, parentBlock, newBlockName) {\n var dom = editor.dom;\n var rng = editor.selection.getRng();\n if (containerBlock === editor.getBody()) {\n return;\n }\n if (isNestedList(containerBlock)) {\n newBlockName = 'LI';\n }\n var newBlock = newBlockName ? createNewBlock(newBlockName) : dom.create('BR');\n if (isFirstOrLastLi(containerBlock, parentBlock, true) && isFirstOrLastLi(containerBlock, parentBlock, false)) {\n if (hasParent$1(containerBlock, 'LI')) {\n dom.insertAfter(newBlock, getContainerBlock(containerBlock));\n } else {\n dom.replace(newBlock, containerBlock);\n }\n } else if (isFirstOrLastLi(containerBlock, parentBlock, true)) {\n if (hasParent$1(containerBlock, 'LI')) {\n dom.insertAfter(newBlock, getContainerBlock(containerBlock));\n newBlock.appendChild(dom.doc.createTextNode(' '));\n newBlock.appendChild(containerBlock);\n } else {\n containerBlock.parentNode.insertBefore(newBlock, containerBlock);\n }\n } else if (isFirstOrLastLi(containerBlock, parentBlock, false)) {\n dom.insertAfter(newBlock, getContainerBlock(containerBlock));\n } else {\n containerBlock = getContainerBlock(containerBlock);\n var tmpRng = rng.cloneRange();\n tmpRng.setStartAfter(parentBlock);\n tmpRng.setEndAfter(containerBlock);\n var fragment = tmpRng.extractContents();\n if (newBlockName === 'LI' && hasFirstChild(fragment, 'LI')) {\n newBlock = fragment.firstChild;\n dom.insertAfter(fragment, containerBlock);\n } else {\n dom.insertAfter(fragment, containerBlock);\n dom.insertAfter(newBlock, containerBlock);\n }\n }\n dom.remove(parentBlock);\n $_79nvm87ejkmcwlqu.moveToCaretPosition(editor, newBlock);\n };\n var $_5ckamj7djkmcwlqo = { insert: insert$1 };\n\n var isEmptyAnchor = function (elm) {\n return elm && elm.nodeName === 'A' && $_4ujg4tljkmcwkbk.trim($_cadvcr2pjkmcwkph.trim(elm.innerText || elm.textContent)).length === 0;\n };\n var isTableCell$5 = function (node) {\n return node && /^(TD|TH|CAPTION)$/.test(node.nodeName);\n };\n var emptyBlock = function (elm) {\n elm.innerHTML = '
';\n };\n var containerAndSiblingName = function (container, nodeName) {\n return container.nodeName === nodeName || container.previousSibling && container.previousSibling.nodeName === nodeName;\n };\n var canSplitBlock = function (dom, node) {\n return node && dom.isBlock(node) && !/^(TD|TH|CAPTION|FORM)$/.test(node.nodeName) && !/^(fixed|absolute)/i.test(node.style.position) && dom.getContentEditable(node) !== 'true';\n };\n var trimInlineElementsOnLeftSideOfBlock = function (dom, nonEmptyElementsMap, block) {\n var node = block;\n var firstChilds = [];\n var i;\n if (!node) {\n return;\n }\n while (node = node.firstChild) {\n if (dom.isBlock(node)) {\n return;\n }\n if ($_bjermr1rjkmcwkij.isElement(node) && !nonEmptyElementsMap[node.nodeName.toLowerCase()]) {\n firstChilds.push(node);\n }\n }\n i = firstChilds.length;\n while (i--) {\n node = firstChilds[i];\n if (!node.hasChildNodes() || node.firstChild === node.lastChild && node.firstChild.nodeValue === '') {\n dom.remove(node);\n } else {\n if (isEmptyAnchor(node)) {\n dom.remove(node);\n }\n }\n }\n };\n var normalizeZwspOffset = function (start, container, offset) {\n if ($_bjermr1rjkmcwkij.isText(container) === false) {\n return offset;\n } else if (start) {\n return offset === 1 && container.data.charAt(offset - 1) === $_cadvcr2pjkmcwkph.ZWSP ? 0 : offset;\n } else {\n return offset === container.data.length - 1 && container.data.charAt(offset) === $_cadvcr2pjkmcwkph.ZWSP ? container.data.length : offset;\n }\n };\n var includeZwspInRange = function (rng) {\n var newRng = rng.cloneRange();\n newRng.setStart(rng.startContainer, normalizeZwspOffset(true, rng.startContainer, rng.startOffset));\n newRng.setEnd(rng.endContainer, normalizeZwspOffset(false, rng.endContainer, rng.endOffset));\n return newRng;\n };\n var trimLeadingLineBreaks = function (node) {\n do {\n if ($_bjermr1rjkmcwkij.isText(node)) {\n node.nodeValue = node.nodeValue.replace(/^[\\r\\n]+/, '');\n }\n node = node.firstChild;\n } while (node);\n };\n var getEditableRoot$1 = function (dom, node) {\n var root = dom.getRoot();\n var parent, editableRoot;\n parent = node;\n while (parent !== root && dom.getContentEditable(parent) !== 'false') {\n if (dom.getContentEditable(parent) === 'true') {\n editableRoot = parent;\n }\n parent = parent.parentNode;\n }\n return parent !== root ? editableRoot : root;\n };\n var setForcedBlockAttrs = function (editor, node) {\n var forcedRootBlockName = $_2ycm1438jkmcwkta.getForcedRootBlock(editor);\n if (forcedRootBlockName && forcedRootBlockName.toLowerCase() === node.tagName.toLowerCase()) {\n editor.dom.setAttribs(node, $_2ycm1438jkmcwkta.getForcedRootBlockAttrs(editor));\n }\n };\n var wrapSelfAndSiblingsInDefaultBlock = function (editor, newBlockName, rng, container, offset) {\n var newBlock, parentBlock, startNode, node, next, rootBlockName;\n var blockName = newBlockName || 'P';\n var dom = editor.dom, editableRoot = getEditableRoot$1(dom, container);\n parentBlock = dom.getParent(container, dom.isBlock);\n if (!parentBlock || !canSplitBlock(dom, parentBlock)) {\n parentBlock = parentBlock || editableRoot;\n if (parentBlock === editor.getBody() || isTableCell$5(parentBlock)) {\n rootBlockName = parentBlock.nodeName.toLowerCase();\n } else {\n rootBlockName = parentBlock.parentNode.nodeName.toLowerCase();\n }\n if (!parentBlock.hasChildNodes()) {\n newBlock = dom.create(blockName);\n setForcedBlockAttrs(editor, newBlock);\n parentBlock.appendChild(newBlock);\n rng.setStart(newBlock, 0);\n rng.setEnd(newBlock, 0);\n return newBlock;\n }\n node = container;\n while (node.parentNode !== parentBlock) {\n node = node.parentNode;\n }\n while (node && !dom.isBlock(node)) {\n startNode = node;\n node = node.previousSibling;\n }\n if (startNode && editor.schema.isValidChild(rootBlockName, blockName.toLowerCase())) {\n newBlock = dom.create(blockName);\n setForcedBlockAttrs(editor, newBlock);\n startNode.parentNode.insertBefore(newBlock, startNode);\n node = startNode;\n while (node && !dom.isBlock(node)) {\n next = node.nextSibling;\n newBlock.appendChild(node);\n node = next;\n }\n rng.setStart(container, offset);\n rng.setEnd(container, offset);\n }\n }\n return container;\n };\n var addBrToBlockIfNeeded = function (dom, block) {\n var lastChild;\n block.normalize();\n lastChild = block.lastChild;\n if (!lastChild || /^(left|right)$/gi.test(dom.getStyle(lastChild, 'float', true))) {\n dom.add(block, 'br');\n }\n };\n var insert$2 = function (editor, evt) {\n var tmpRng, editableRoot, container, offset, parentBlock, shiftKey;\n var newBlock, fragment, containerBlock, parentBlockName, containerBlockName, newBlockName, isAfterLastNodeInContainer;\n var dom = editor.dom;\n var schema = editor.schema, nonEmptyElementsMap = schema.getNonEmptyElements();\n var rng = editor.selection.getRng();\n var createNewBlock = function (name) {\n var node = container, block, clonedNode, caretNode;\n var textInlineElements = schema.getTextInlineElements();\n if (name || parentBlockName === 'TABLE' || parentBlockName === 'HR') {\n block = dom.create(name || newBlockName);\n setForcedBlockAttrs(editor, block);\n } else {\n block = parentBlock.cloneNode(false);\n }\n caretNode = block;\n if ($_2ycm1438jkmcwkta.shouldKeepStyles(editor) === false) {\n dom.setAttrib(block, 'style', null);\n dom.setAttrib(block, 'class', null);\n } else {\n do {\n if (textInlineElements[node.nodeName]) {\n if (isCaretNode(node)) {\n continue;\n }\n clonedNode = node.cloneNode(false);\n dom.setAttrib(clonedNode, 'id', '');\n if (block.hasChildNodes()) {\n clonedNode.appendChild(block.firstChild);\n block.appendChild(clonedNode);\n } else {\n caretNode = clonedNode;\n block.appendChild(clonedNode);\n }\n }\n } while ((node = node.parentNode) && node !== editableRoot);\n }\n emptyBlock(caretNode);\n return block;\n };\n var isCaretAtStartOrEndOfBlock = function (start) {\n var walker, node, name, normalizedOffset;\n normalizedOffset = normalizeZwspOffset(start, container, offset);\n if ($_bjermr1rjkmcwkij.isText(container) && (start ? normalizedOffset > 0 : normalizedOffset < container.nodeValue.length)) {\n return false;\n }\n if (container.parentNode === parentBlock && isAfterLastNodeInContainer && !start) {\n return true;\n }\n if (start && $_bjermr1rjkmcwkij.isElement(container) && container === parentBlock.firstChild) {\n return true;\n }\n if (containerAndSiblingName(container, 'TABLE') || containerAndSiblingName(container, 'HR')) {\n return isAfterLastNodeInContainer && !start || !isAfterLastNodeInContainer && start;\n }\n walker = new TreeWalker(container, parentBlock);\n if ($_bjermr1rjkmcwkij.isText(container)) {\n if (start && normalizedOffset === 0) {\n walker.prev();\n } else if (!start && normalizedOffset === container.nodeValue.length) {\n walker.next();\n }\n }\n while (node = walker.current()) {\n if ($_bjermr1rjkmcwkij.isElement(node)) {\n if (!node.getAttribute('data-mce-bogus')) {\n name = node.nodeName.toLowerCase();\n if (nonEmptyElementsMap[name] && name !== 'br') {\n return false;\n }\n }\n } else if ($_bjermr1rjkmcwkij.isText(node) && !/^[ \\t\\r\\n]*$/.test(node.nodeValue)) {\n return false;\n }\n if (start) {\n walker.prev();\n } else {\n walker.next();\n }\n }\n return true;\n };\n var insertNewBlockAfter = function () {\n if (/^(H[1-6]|PRE|FIGURE)$/.test(parentBlockName) && containerBlockName !== 'HGROUP') {\n newBlock = createNewBlock(newBlockName);\n } else {\n newBlock = createNewBlock();\n }\n if ($_2ycm1438jkmcwkta.shouldEndContainerOnEmptyBlock(editor) && canSplitBlock(dom, containerBlock) && dom.isEmpty(parentBlock)) {\n newBlock = dom.split(containerBlock, parentBlock);\n } else {\n dom.insertAfter(newBlock, parentBlock);\n }\n $_79nvm87ejkmcwlqu.moveToCaretPosition(editor, newBlock);\n };\n $_21c07i4jjkmcwl7w.normalize(dom, rng).each(function (normRng) {\n rng.setStart(normRng.startContainer, normRng.startOffset);\n rng.setEnd(normRng.endContainer, normRng.endOffset);\n });\n container = rng.startContainer;\n offset = rng.startOffset;\n newBlockName = $_2ycm1438jkmcwkta.getForcedRootBlock(editor);\n shiftKey = evt.shiftKey;\n if ($_bjermr1rjkmcwkij.isElement(container) && container.hasChildNodes()) {\n isAfterLastNodeInContainer = offset > container.childNodes.length - 1;\n container = container.childNodes[Math.min(offset, container.childNodes.length - 1)] || container;\n if (isAfterLastNodeInContainer && $_bjermr1rjkmcwkij.isText(container)) {\n offset = container.nodeValue.length;\n } else {\n offset = 0;\n }\n }\n editableRoot = getEditableRoot$1(dom, container);\n if (!editableRoot) {\n return;\n }\n if (newBlockName && !shiftKey || !newBlockName && shiftKey) {\n container = wrapSelfAndSiblingsInDefaultBlock(editor, newBlockName, rng, container, offset);\n }\n parentBlock = dom.getParent(container, dom.isBlock);\n containerBlock = parentBlock ? dom.getParent(parentBlock.parentNode, dom.isBlock) : null;\n parentBlockName = parentBlock ? parentBlock.nodeName.toUpperCase() : '';\n containerBlockName = containerBlock ? containerBlock.nodeName.toUpperCase() : '';\n if (containerBlockName === 'LI' && !evt.ctrlKey) {\n parentBlock = containerBlock;\n containerBlock = containerBlock.parentNode;\n parentBlockName = containerBlockName;\n }\n if (/^(LI|DT|DD)$/.test(parentBlockName)) {\n if (dom.isEmpty(parentBlock)) {\n $_5ckamj7djkmcwlqo.insert(editor, createNewBlock, containerBlock, parentBlock, newBlockName);\n return;\n }\n }\n if (newBlockName && parentBlock === editor.getBody()) {\n return;\n }\n newBlockName = newBlockName || 'P';\n if (isCaretContainerBlock(parentBlock)) {\n newBlock = showCaretContainerBlock(parentBlock);\n if (dom.isEmpty(parentBlock)) {\n emptyBlock(parentBlock);\n }\n $_79nvm87ejkmcwlqu.moveToCaretPosition(editor, newBlock);\n } else if (isCaretAtStartOrEndOfBlock()) {\n insertNewBlockAfter();\n } else if (isCaretAtStartOrEndOfBlock(true)) {\n newBlock = parentBlock.parentNode.insertBefore(createNewBlock(), parentBlock);\n $_79nvm87ejkmcwlqu.moveToCaretPosition(editor, containerAndSiblingName(parentBlock, 'HR') ? newBlock : parentBlock);\n } else {\n tmpRng = includeZwspInRange(rng).cloneRange();\n tmpRng.setEndAfter(parentBlock);\n fragment = tmpRng.extractContents();\n trimLeadingLineBreaks(fragment);\n newBlock = fragment.firstChild;\n dom.insertAfter(fragment, parentBlock);\n trimInlineElementsOnLeftSideOfBlock(dom, nonEmptyElementsMap, newBlock);\n addBrToBlockIfNeeded(dom, parentBlock);\n if (dom.isEmpty(parentBlock)) {\n emptyBlock(parentBlock);\n }\n newBlock.normalize();\n if (dom.isEmpty(newBlock)) {\n dom.remove(newBlock);\n insertNewBlockAfter();\n } else {\n $_79nvm87ejkmcwlqu.moveToCaretPosition(editor, newBlock);\n }\n }\n dom.setAttrib(newBlock, 'id', '');\n editor.fire('NewBlock', { newBlock: newBlock });\n };\n var $_dr0y3j7cjkmcwlqe = { insert: insert$2 };\n\n var matchesSelector = function (editor, selector) {\n return $_79nvm87ejkmcwlqu.getParentBlock(editor).filter(function (parentBlock) {\n return selector.length > 0 && $_4jv6d81gjkmcwkgv.is(Element$$1.fromDom(parentBlock), selector);\n }).isSome();\n };\n var shouldInsertBr = function (editor) {\n return matchesSelector(editor, $_2ycm1438jkmcwkta.getBrNewLineSelector(editor));\n };\n var shouldBlockNewLine = function (editor) {\n return matchesSelector(editor, $_2ycm1438jkmcwkta.getNoNewLineSelector(editor));\n };\n var $_g7oj6o7gjkmcwlr8 = {\n shouldInsertBr: shouldInsertBr,\n shouldBlockNewLine: shouldBlockNewLine\n };\n\n var newLineAction = Adt.generate([\n { br: [] },\n { block: [] },\n { none: [] }\n ]);\n var shouldBlockNewLine$1 = function (editor, shiftKey) {\n return $_g7oj6o7gjkmcwlr8.shouldBlockNewLine(editor);\n };\n var isBrMode = function (requiredState) {\n return function (editor, shiftKey) {\n var brMode = $_2ycm1438jkmcwkta.getForcedRootBlock(editor) === '';\n return brMode === requiredState;\n };\n };\n var inListBlock = function (requiredState) {\n return function (editor, shiftKey) {\n return $_79nvm87ejkmcwlqu.isListItemParentBlock(editor) === requiredState;\n };\n };\n var inBlock = function (blockName, requiredState) {\n return function (editor, shiftKey) {\n var state = $_79nvm87ejkmcwlqu.getParentBlockName(editor) === blockName.toUpperCase();\n return state === requiredState;\n };\n };\n var inPreBlock = function (requiredState) {\n return inBlock('pre', requiredState);\n };\n var inSummaryBlock = function () {\n return inBlock('summary', true);\n };\n var shouldPutBrInPre$1 = function (requiredState) {\n return function (editor, shiftKey) {\n return $_2ycm1438jkmcwkta.shouldPutBrInPre(editor) === requiredState;\n };\n };\n var inBrContext = function (editor, shiftKey) {\n return $_g7oj6o7gjkmcwlr8.shouldInsertBr(editor);\n };\n var hasShiftKey = function (editor, shiftKey) {\n return shiftKey;\n };\n var canInsertIntoEditableRoot = function (editor) {\n var forcedRootBlock = $_2ycm1438jkmcwkta.getForcedRootBlock(editor);\n var rootEditable = $_79nvm87ejkmcwlqu.getEditableRoot(editor.dom, editor.selection.getStart());\n return rootEditable && editor.schema.isValidChild(rootEditable.nodeName, forcedRootBlock ? forcedRootBlock : 'P');\n };\n var match$2 = function (predicates, action) {\n return function (editor, shiftKey) {\n var isMatch = foldl(predicates, function (res, p) {\n return res && p(editor, shiftKey);\n }, true);\n return isMatch ? Option.some(action) : Option.none();\n };\n };\n var getAction$1 = function (editor, evt) {\n return $_8hyv6o49jkmcwl58.evaluateUntil([\n match$2([shouldBlockNewLine$1], newLineAction.none()),\n match$2([inSummaryBlock()], newLineAction.br()),\n match$2([\n inPreBlock(true),\n shouldPutBrInPre$1(false),\n hasShiftKey\n ], newLineAction.br()),\n match$2([\n inPreBlock(true),\n shouldPutBrInPre$1(false)\n ], newLineAction.block()),\n match$2([\n inPreBlock(true),\n shouldPutBrInPre$1(true),\n hasShiftKey\n ], newLineAction.block()),\n match$2([\n inPreBlock(true),\n shouldPutBrInPre$1(true)\n ], newLineAction.br()),\n match$2([\n inListBlock(true),\n hasShiftKey\n ], newLineAction.br()),\n match$2([inListBlock(true)], newLineAction.block()),\n match$2([\n isBrMode(true),\n hasShiftKey,\n canInsertIntoEditableRoot\n ], newLineAction.block()),\n match$2([isBrMode(true)], newLineAction.br()),\n match$2([inBrContext], newLineAction.br()),\n match$2([\n isBrMode(false),\n hasShiftKey\n ], newLineAction.br()),\n match$2([canInsertIntoEditableRoot], newLineAction.block())\n ], [\n editor,\n evt.shiftKey\n ]).getOr(newLineAction.none());\n };\n var $_47r1sh7fjkmcwlr1 = { getAction: getAction$1 };\n\n var insert$3 = function (editor, evt) {\n $_47r1sh7fjkmcwlr1.getAction(editor, evt).fold(function () {\n $_dc07up4ijkmcwl7n.insert(editor, evt);\n }, function () {\n $_dr0y3j7cjkmcwlqe.insert(editor, evt);\n }, noop);\n };\n var $_fs2ah67bjkmcwlq8 = { insert: insert$3 };\n\n var endTypingLevel = function (undoManager) {\n if (undoManager.typing) {\n undoManager.typing = false;\n undoManager.add();\n }\n };\n var handleEnterKeyEvent = function (editor, event) {\n if (event.isDefaultPrevented()) {\n return;\n }\n event.preventDefault();\n endTypingLevel(editor.undoManager);\n editor.undoManager.transact(function () {\n if (editor.selection.isCollapsed() === false) {\n editor.execCommand('Delete');\n }\n $_fs2ah67bjkmcwlq8.insert(editor, event);\n });\n };\n var setup$9 = function (editor) {\n editor.on('keydown', function (event) {\n if (event.keyCode === $_6bj5795wjkmcwlg6.ENTER) {\n handleEnterKeyEvent(editor, event);\n }\n });\n };\n var $_ni5l67ajkmcwlq7 = { setup: setup$9 };\n\n var isValidInsertPoint = function (location, caretPosition) {\n return isAtStartOrEnd(location) && $_bjermr1rjkmcwkij.isText(caretPosition.container());\n };\n var insertNbspAtPosition = function (editor, caretPosition) {\n var container = caretPosition.container();\n var offset = caretPosition.offset();\n container.insertData(offset, '\\xA0');\n editor.selection.setCursorLocation(container, offset + 1);\n };\n var insertAtLocation = function (editor, caretPosition, location) {\n if (isValidInsertPoint(location, caretPosition)) {\n insertNbspAtPosition(editor, caretPosition);\n return true;\n } else {\n return false;\n }\n };\n var insertAtCaret$2 = function (editor) {\n var isInlineTarget = curry($_crqmqb3tjkmcwkxd.isInlineTarget, editor);\n var caretPosition = CaretPosition$1.fromRangeStart(editor.selection.getRng());\n var boundaryLocation = $_gau9ep48jkmcwl4x.readLocation(isInlineTarget, editor.getBody(), caretPosition);\n return boundaryLocation.map(curry(insertAtLocation, editor, caretPosition)).getOr(false);\n };\n var isAtStartOrEnd = function (location) {\n return location.fold(constant(false), constant(true), constant(true), constant(false));\n };\n var insertAtSelection = function (editor) {\n return editor.selection.isCollapsed() ? insertAtCaret$2(editor) : false;\n };\n var $_2cwo047ijkmcwlrj = { insertAtSelection: insertAtSelection };\n\n var executeKeydownOverride$2 = function (editor, evt) {\n $_3olmgr77jkmcwlpj.execute([{\n keyCode: $_6bj5795wjkmcwlg6.SPACEBAR,\n action: $_3olmgr77jkmcwlpj.action($_2cwo047ijkmcwlrj.insertAtSelection, editor)\n }], evt).each(function (_) {\n evt.preventDefault();\n });\n };\n var setup$10 = function (editor) {\n editor.on('keydown', function (evt) {\n if (evt.isDefaultPrevented() === false) {\n executeKeydownOverride$2(editor, evt);\n }\n });\n };\n var $_agfz917hjkmcwlrh = { setup: setup$10 };\n\n var findBlockCaretContainer = function (editor) {\n return $_4ki4d929jkmcwkmn.descendant(Element$$1.fromDom(editor.getBody()), '*[data-mce-caret]').fold(constant(null), function (elm) {\n return elm.dom();\n });\n };\n var removeIeControlRect = function (editor) {\n editor.selection.setRng(editor.selection.getRng());\n };\n var showBlockCaretContainer = function (editor, blockCaretContainer) {\n if (blockCaretContainer.hasAttribute('data-mce-caret')) {\n showCaretContainerBlock(blockCaretContainer);\n removeIeControlRect(editor);\n editor.selection.scrollIntoView(blockCaretContainer);\n }\n };\n var handleBlockContainer = function (editor, e) {\n var blockCaretContainer = findBlockCaretContainer(editor);\n if (!blockCaretContainer) {\n return;\n }\n if (e.type === 'compositionstart') {\n e.preventDefault();\n e.stopPropagation();\n showBlockCaretContainer(editor, blockCaretContainer);\n return;\n }\n if (hasContent(blockCaretContainer)) {\n showBlockCaretContainer(editor, blockCaretContainer);\n editor.undoManager.add();\n }\n };\n var setup$11 = function (editor) {\n editor.on('keyup compositionstart', curry(handleBlockContainer, editor));\n };\n var $_gfp1h7jjkmcwlrn = { setup: setup$11 };\n\n var setup$12 = function (editor) {\n var caret = $_dl6t9m4ajkmcwl5b.setupSelectedState(editor);\n $_gfp1h7jjkmcwlrn.setup(editor);\n $_emza9w75jkmcwlp9.setup(editor, caret);\n $_4dsl7478jkmcwlpw.setup(editor, caret);\n $_ni5l67ajkmcwlq7.setup(editor);\n $_agfz917hjkmcwlrh.setup(editor);\n };\n var $_ejk8vk74jkmcwlp8 = { setup: setup$12 };\n\n function Quirks (editor) {\n var each = $_4ujg4tljkmcwkbk.each;\n var BACKSPACE = $_6bj5795wjkmcwlg6.BACKSPACE, DELETE = $_6bj5795wjkmcwlg6.DELETE, dom = editor.dom, selection = editor.selection, settings = editor.settings, parser = editor.parser;\n var isGecko = $_cvvl9iajkmcwk25.gecko, isIE = $_cvvl9iajkmcwk25.ie, isWebKit = $_cvvl9iajkmcwk25.webkit;\n var mceInternalUrlPrefix = 'data:text/mce-internal,';\n var mceInternalDataType = isIE ? 'Text' : 'URL';\n var setEditorCommandState = function (cmd, state) {\n try {\n editor.getDoc().execCommand(cmd, false, state);\n } catch (ex) {\n }\n };\n var isDefaultPrevented = function (e) {\n return e.isDefaultPrevented();\n };\n var setMceInternalContent = function (e) {\n var selectionHtml, internalContent;\n if (e.dataTransfer) {\n if (editor.selection.isCollapsed() && e.target.tagName === 'IMG') {\n selection.select(e.target);\n }\n selectionHtml = editor.selection.getContent();\n if (selectionHtml.length > 0) {\n internalContent = mceInternalUrlPrefix + escape(editor.id) + ',' + escape(selectionHtml);\n e.dataTransfer.setData(mceInternalDataType, internalContent);\n }\n }\n };\n var getMceInternalContent = function (e) {\n var internalContent;\n if (e.dataTransfer) {\n internalContent = e.dataTransfer.getData(mceInternalDataType);\n if (internalContent && internalContent.indexOf(mceInternalUrlPrefix) >= 0) {\n internalContent = internalContent.substr(mceInternalUrlPrefix.length).split(',');\n return {\n id: unescape(internalContent[0]),\n html: unescape(internalContent[1])\n };\n }\n }\n return null;\n };\n var insertClipboardContents = function (content, internal) {\n if (editor.queryCommandSupported('mceInsertClipboardContent')) {\n editor.execCommand('mceInsertClipboardContent', false, {\n content: content,\n internal: internal\n });\n } else {\n editor.execCommand('mceInsertContent', false, content);\n }\n };\n var emptyEditorWhenDeleting = function () {\n var serializeRng = function (rng) {\n var body = dom.create('body');\n var contents = rng.cloneContents();\n body.appendChild(contents);\n return selection.serializer.serialize(body, { format: 'html' });\n };\n var allContentsSelected = function (rng) {\n var selection = serializeRng(rng);\n var allRng = dom.createRng();\n allRng.selectNode(editor.getBody());\n var allSelection = serializeRng(allRng);\n return selection === allSelection;\n };\n editor.on('keydown', function (e) {\n var keyCode = e.keyCode;\n var isCollapsed, body;\n if (!isDefaultPrevented(e) && (keyCode === DELETE || keyCode === BACKSPACE)) {\n isCollapsed = editor.selection.isCollapsed();\n body = editor.getBody();\n if (isCollapsed && !dom.isEmpty(body)) {\n return;\n }\n if (!isCollapsed && !allContentsSelected(editor.selection.getRng())) {\n return;\n }\n e.preventDefault();\n editor.setContent('');\n if (body.firstChild && dom.isBlock(body.firstChild)) {\n editor.selection.setCursorLocation(body.firstChild, 0);\n } else {\n editor.selection.setCursorLocation(body, 0);\n }\n editor.nodeChanged();\n }\n });\n };\n var selectAll = function () {\n editor.shortcuts.add('meta+a', null, 'SelectAll');\n };\n var inputMethodFocus = function () {\n if (!editor.settings.content_editable) {\n dom.bind(editor.getDoc(), 'mousedown mouseup', function (e) {\n var rng;\n if (e.target === editor.getDoc().documentElement) {\n rng = selection.getRng();\n editor.getBody().focus();\n if (e.type === 'mousedown') {\n if (isCaretContainer(rng.startContainer)) {\n return;\n }\n selection.placeCaretAt(e.clientX, e.clientY);\n } else {\n selection.setRng(rng);\n }\n }\n });\n }\n };\n var removeHrOnBackspace = function () {\n editor.on('keydown', function (e) {\n if (!isDefaultPrevented(e) && e.keyCode === BACKSPACE) {\n if (!editor.getBody().getElementsByTagName('hr').length) {\n return;\n }\n if (selection.isCollapsed() && selection.getRng().startOffset === 0) {\n var node = selection.getNode();\n var previousSibling = node.previousSibling;\n if (node.nodeName === 'HR') {\n dom.remove(node);\n e.preventDefault();\n return;\n }\n if (previousSibling && previousSibling.nodeName && previousSibling.nodeName.toLowerCase() === 'hr') {\n dom.remove(previousSibling);\n e.preventDefault();\n }\n }\n }\n });\n };\n var focusBody = function () {\n if (!Range.prototype.getClientRects) {\n editor.on('mousedown', function (e) {\n if (!isDefaultPrevented(e) && e.target.nodeName === 'HTML') {\n var body_1 = editor.getBody();\n body_1.blur();\n $_3l01gcijkmcwk99.setEditorTimeout(editor, function () {\n body_1.focus();\n });\n }\n });\n }\n };\n var selectControlElements = function () {\n editor.on('click', function (e) {\n var target = e.target;\n if (/^(IMG|HR)$/.test(target.nodeName) && dom.getContentEditableParent(target) !== 'false') {\n e.preventDefault();\n editor.selection.select(target);\n editor.nodeChanged();\n }\n if (target.nodeName === 'A' && dom.hasClass(target, 'mce-item-anchor')) {\n e.preventDefault();\n selection.select(target);\n }\n });\n };\n var removeStylesWhenDeletingAcrossBlockElements = function () {\n var getAttributeApplyFunction = function () {\n var template = dom.getAttribs(selection.getStart().cloneNode(false));\n return function () {\n var target = selection.getStart();\n if (target !== editor.getBody()) {\n dom.setAttrib(target, 'style', null);\n each(template, function (attr) {\n target.setAttributeNode(attr.cloneNode(true));\n });\n }\n };\n };\n var isSelectionAcrossElements = function () {\n return !selection.isCollapsed() && dom.getParent(selection.getStart(), dom.isBlock) !== dom.getParent(selection.getEnd(), dom.isBlock);\n };\n editor.on('keypress', function (e) {\n var applyAttributes;\n if (!isDefaultPrevented(e) && (e.keyCode === 8 || e.keyCode === 46) && isSelectionAcrossElements()) {\n applyAttributes = getAttributeApplyFunction();\n editor.getDoc().execCommand('delete', false, null);\n applyAttributes();\n e.preventDefault();\n return false;\n }\n });\n dom.bind(editor.getDoc(), 'cut', function (e) {\n var applyAttributes;\n if (!isDefaultPrevented(e) && isSelectionAcrossElements()) {\n applyAttributes = getAttributeApplyFunction();\n $_3l01gcijkmcwk99.setEditorTimeout(editor, function () {\n applyAttributes();\n });\n }\n });\n };\n var disableBackspaceIntoATable = function () {\n editor.on('keydown', function (e) {\n if (!isDefaultPrevented(e) && e.keyCode === BACKSPACE) {\n if (selection.isCollapsed() && selection.getRng().startOffset === 0) {\n var previousSibling = selection.getNode().previousSibling;\n if (previousSibling && previousSibling.nodeName && previousSibling.nodeName.toLowerCase() === 'table') {\n e.preventDefault();\n return false;\n }\n }\n }\n });\n };\n var removeBlockQuoteOnBackSpace = function () {\n editor.on('keydown', function (e) {\n var rng, container, offset, root, parent$$1;\n if (isDefaultPrevented(e) || e.keyCode !== $_6bj5795wjkmcwlg6.BACKSPACE) {\n return;\n }\n rng = selection.getRng();\n container = rng.startContainer;\n offset = rng.startOffset;\n root = dom.getRoot();\n parent$$1 = container;\n if (!rng.collapsed || offset !== 0) {\n return;\n }\n while (parent$$1 && parent$$1.parentNode && parent$$1.parentNode.firstChild === parent$$1 && parent$$1.parentNode !== root) {\n parent$$1 = parent$$1.parentNode;\n }\n if (parent$$1.tagName === 'BLOCKQUOTE') {\n editor.formatter.toggle('blockquote', null, parent$$1);\n rng = dom.createRng();\n rng.setStart(container, 0);\n rng.setEnd(container, 0);\n selection.setRng(rng);\n }\n });\n };\n var setGeckoEditingOptions = function () {\n var setOpts = function () {\n setEditorCommandState('StyleWithCSS', false);\n setEditorCommandState('enableInlineTableEditing', false);\n if (!settings.object_resizing) {\n setEditorCommandState('enableObjectResizing', false);\n }\n };\n if (!settings.readonly) {\n editor.on('BeforeExecCommand MouseDown', setOpts);\n }\n };\n var addBrAfterLastLinks = function () {\n var fixLinks = function () {\n each(dom.select('a'), function (node) {\n var parentNode = node.parentNode;\n var root = dom.getRoot();\n if (parentNode.lastChild === node) {\n while (parentNode && !dom.isBlock(parentNode)) {\n if (parentNode.parentNode.lastChild !== parentNode || parentNode === root) {\n return;\n }\n parentNode = parentNode.parentNode;\n }\n dom.add(parentNode, 'br', { 'data-mce-bogus': 1 });\n }\n });\n };\n editor.on('SetContent ExecCommand', function (e) {\n if (e.type === 'setcontent' || e.command === 'mceInsertLink') {\n fixLinks();\n }\n });\n };\n var setDefaultBlockType = function () {\n if (settings.forced_root_block) {\n editor.on('init', function () {\n setEditorCommandState('DefaultParagraphSeparator', settings.forced_root_block);\n });\n }\n };\n var normalizeSelection = function () {\n editor.on('keyup focusin mouseup', function (e) {\n if (!$_6bj5795wjkmcwlg6.modifierPressed(e)) {\n selection.normalize();\n }\n }, true);\n };\n var showBrokenImageIcon = function () {\n editor.contentStyles.push('img:-moz-broken {' + '-moz-force-broken-image-icon:1;' + 'min-width:24px;' + 'min-height:24px' + '}');\n };\n var restoreFocusOnKeyDown = function () {\n if (!editor.inline) {\n editor.on('keydown', function () {\n if (document.activeElement === document.body) {\n editor.getWin().focus();\n }\n });\n }\n };\n var bodyHeight = function () {\n if (!editor.inline) {\n editor.contentStyles.push('body {min-height: 150px}');\n editor.on('click', function (e) {\n var rng;\n if (e.target.nodeName === 'HTML') {\n if ($_cvvl9iajkmcwk25.ie > 11) {\n editor.getBody().focus();\n return;\n }\n rng = editor.selection.getRng();\n editor.getBody().focus();\n editor.selection.setRng(rng);\n editor.selection.normalize();\n editor.nodeChanged();\n }\n });\n }\n };\n var blockCmdArrowNavigation = function () {\n if ($_cvvl9iajkmcwk25.mac) {\n editor.on('keydown', function (e) {\n if ($_6bj5795wjkmcwlg6.metaKeyPressed(e) && !e.shiftKey && (e.keyCode === 37 || e.keyCode === 39)) {\n e.preventDefault();\n editor.selection.getSel().modify('move', e.keyCode === 37 ? 'backward' : 'forward', 'lineboundary');\n }\n });\n }\n };\n var disableAutoUrlDetect = function () {\n setEditorCommandState('AutoUrlDetect', false);\n };\n var tapLinksAndImages = function () {\n editor.on('click', function (e) {\n var elm = e.target;\n do {\n if (elm.tagName === 'A') {\n e.preventDefault();\n return;\n }\n } while (elm = elm.parentNode);\n });\n editor.contentStyles.push('.mce-content-body {-webkit-touch-callout: none}');\n };\n var blockFormSubmitInsideEditor = function () {\n editor.on('init', function () {\n editor.dom.bind(editor.getBody(), 'submit', function (e) {\n e.preventDefault();\n });\n });\n };\n var removeAppleInterchangeBrs = function () {\n parser.addNodeFilter('br', function (nodes) {\n var i = nodes.length;\n while (i--) {\n if (nodes[i].attr('class') === 'Apple-interchange-newline') {\n nodes[i].remove();\n }\n }\n });\n };\n var ieInternalDragAndDrop = function () {\n editor.on('dragstart', function (e) {\n setMceInternalContent(e);\n });\n editor.on('drop', function (e) {\n if (!isDefaultPrevented(e)) {\n var internalContent = getMceInternalContent(e);\n if (internalContent && internalContent.id !== editor.id) {\n e.preventDefault();\n var rng = $_52q21w6wjkmcwlna.fromPoint(e.x, e.y, editor.getDoc());\n selection.setRng(rng);\n insertClipboardContents(internalContent.html, true);\n }\n }\n });\n };\n var refreshContentEditable = function () {\n };\n var isHidden = function () {\n var sel;\n if (!isGecko || editor.removed) {\n return 0;\n }\n sel = editor.selection.getSel();\n return !sel || !sel.rangeCount || sel.rangeCount === 0;\n };\n removeBlockQuoteOnBackSpace();\n emptyEditorWhenDeleting();\n if (!$_cvvl9iajkmcwk25.windowsPhone) {\n normalizeSelection();\n }\n if (isWebKit) {\n inputMethodFocus();\n selectControlElements();\n setDefaultBlockType();\n blockFormSubmitInsideEditor();\n disableBackspaceIntoATable();\n removeAppleInterchangeBrs();\n if ($_cvvl9iajkmcwk25.iOS) {\n restoreFocusOnKeyDown();\n bodyHeight();\n tapLinksAndImages();\n } else {\n selectAll();\n }\n }\n if ($_cvvl9iajkmcwk25.ie >= 11) {\n bodyHeight();\n disableBackspaceIntoATable();\n }\n if ($_cvvl9iajkmcwk25.ie) {\n selectAll();\n disableAutoUrlDetect();\n ieInternalDragAndDrop();\n }\n if (isGecko) {\n removeHrOnBackspace();\n focusBody();\n removeStylesWhenDeletingAcrossBlockElements();\n setGeckoEditingOptions();\n addBrAfterLastLinks();\n showBrokenImageIcon();\n blockCmdArrowNavigation();\n disableBackspaceIntoATable();\n }\n return {\n refreshContentEditable: refreshContentEditable,\n isHidden: isHidden\n };\n }\n\n var isTextBlockNode = function (node) {\n return $_bjermr1rjkmcwkij.isElement(node) && isTextBlock(Element$$1.fromDom(node));\n };\n var normalizeSelection$1 = function (editor) {\n var rng = editor.selection.getRng();\n var startPos = CaretPosition.fromRangeStart(rng);\n var endPos = CaretPosition.fromRangeEnd(rng);\n if (CaretPosition.isElementPosition(startPos)) {\n var container = startPos.container();\n if (isTextBlockNode(container)) {\n $_1m3f3j2yjkmcwkqg.firstPositionIn(container).each(function (pos) {\n return rng.setStart(pos.container(), pos.offset());\n });\n }\n }\n if (CaretPosition.isElementPosition(endPos)) {\n var container = startPos.container();\n if (isTextBlockNode(container)) {\n $_1m3f3j2yjkmcwkqg.lastPositionIn(container).each(function (pos) {\n return rng.setEnd(pos.container(), pos.offset());\n });\n }\n }\n editor.selection.setRng($_bx30le3ojkmcwkw9.normalize(rng));\n };\n var setup$13 = function (editor) {\n editor.on('click', function (e) {\n if (e.detail >= 3) {\n normalizeSelection$1(editor);\n }\n });\n };\n\n var preventSummaryToggle = function (editor) {\n editor.on('click', function (e) {\n if (editor.dom.getParent(e.target, 'details')) {\n e.preventDefault();\n }\n });\n };\n var filterDetails = function (editor) {\n editor.parser.addNodeFilter('details', function (elms) {\n each(elms, function (details) {\n details.attr('data-mce-open', details.attr('open'));\n details.attr('open', 'open');\n });\n });\n editor.serializer.addNodeFilter('details', function (elms) {\n each(elms, function (details) {\n var open = details.attr('data-mce-open');\n details.attr('open', isString(open) ? open : null);\n details.attr('data-mce-open', null);\n });\n });\n };\n var setup$14 = function (editor) {\n preventSummaryToggle(editor);\n filterDetails(editor);\n };\n\n var DOM$2 = DOMUtils$1.DOM;\n var appendStyle = function (editor, text) {\n var head = Element$$1.fromDom(editor.getDoc().head);\n var tag = Element$$1.fromTag('style');\n $_29helg15jkmcwkf0.set(tag, 'type', 'text/css');\n $_f4qt4v1yjkmcwkl2.append(tag, Element$$1.fromText(text));\n $_f4qt4v1yjkmcwkl2.append(head, tag);\n };\n var createParser = function (editor) {\n var parser = DomParser(editor.settings, editor.schema);\n parser.addAttributeFilter('src,href,style,tabindex', function (nodes, name$$1) {\n var i = nodes.length, node;\n var dom = editor.dom;\n var value, internalName;\n while (i--) {\n node = nodes[i];\n value = node.attr(name$$1);\n internalName = 'data-mce-' + name$$1;\n if (!node.attributes.map[internalName]) {\n if (value.indexOf('data:') === 0 || value.indexOf('blob:') === 0) {\n continue;\n }\n if (name$$1 === 'style') {\n value = dom.serializeStyle(dom.parseStyle(value), node.name);\n if (!value.length) {\n value = null;\n }\n node.attr(internalName, value);\n node.attr(name$$1, value);\n } else if (name$$1 === 'tabindex') {\n node.attr(internalName, value);\n node.attr(name$$1, null);\n } else {\n node.attr(internalName, editor.convertURL(value, name$$1, node.name));\n }\n }\n }\n });\n parser.addNodeFilter('script', function (nodes) {\n var i = nodes.length, node, type;\n while (i--) {\n node = nodes[i];\n type = node.attr('type') || 'no/type';\n if (type.indexOf('mce-') !== 0) {\n node.attr('type', 'mce-' + type);\n }\n }\n });\n parser.addNodeFilter('#cdata', function (nodes) {\n var i = nodes.length, node;\n while (i--) {\n node = nodes[i];\n node.type = 8;\n node.name = '#comment';\n node.value = '[CDATA[' + node.value + ']]';\n }\n });\n parser.addNodeFilter('p,h1,h2,h3,h4,h5,h6,div', function (nodes) {\n var i = nodes.length, node;\n var nonEmptyElements = editor.schema.getNonEmptyElements();\n while (i--) {\n node = nodes[i];\n if (node.isEmpty(nonEmptyElements) && node.getAll('br').length === 0) {\n node.append(new Node$2('br', 1)).shortEnded = true;\n }\n }\n });\n return parser;\n };\n var autoFocus = function (editor) {\n if (editor.settings.auto_focus) {\n $_3l01gcijkmcwk99.setEditorTimeout(editor, function () {\n var focusEditor;\n if (editor.settings.auto_focus === true) {\n focusEditor = editor;\n } else {\n focusEditor = editor.editorManager.get(editor.settings.auto_focus);\n }\n if (!focusEditor.destroyed) {\n focusEditor.focus();\n }\n }, 100);\n }\n };\n var initEditor = function (editor) {\n editor.bindPendingEventDelegates();\n editor.initialized = true;\n editor.fire('init');\n editor.focus(true);\n editor.nodeChanged({ initial: true });\n editor.execCallback('init_instance_callback', editor);\n autoFocus(editor);\n };\n var getStyleSheetLoader = function (editor) {\n return editor.inline ? DOM$2.styleSheetLoader : editor.dom.styleSheetLoader;\n };\n var initContentBody = function (editor, skipWrite) {\n var settings = editor.settings;\n var targetElm = editor.getElement();\n var doc = editor.getDoc(), body, contentCssText;\n if (!settings.inline) {\n editor.getElement().style.visibility = editor.orgVisibility;\n }\n if (!skipWrite && !settings.content_editable) {\n doc.open();\n doc.write(editor.iframeHTML);\n doc.close();\n }\n if (settings.content_editable) {\n editor.on('remove', function () {\n var bodyEl = this.getBody();\n DOM$2.removeClass(bodyEl, 'mce-content-body');\n DOM$2.removeClass(bodyEl, 'mce-edit-focus');\n DOM$2.setAttrib(bodyEl, 'contentEditable', null);\n });\n DOM$2.addClass(targetElm, 'mce-content-body');\n editor.contentDocument = doc = settings.content_document || document;\n editor.contentWindow = settings.content_window || window;\n editor.bodyElement = targetElm;\n settings.content_document = settings.content_window = null;\n settings.root_name = targetElm.nodeName.toLowerCase();\n }\n body = editor.getBody();\n body.disabled = true;\n editor.readonly = settings.readonly;\n if (!editor.readonly) {\n if (editor.inline && DOM$2.getStyle(body, 'position', true) === 'static') {\n body.style.position = 'relative';\n }\n body.contentEditable = editor.getParam('content_editable_state', true);\n }\n body.disabled = false;\n editor.editorUpload = EditorUpload(editor);\n editor.schema = Schema(settings);\n editor.dom = DOMUtils$1(doc, {\n keep_values: true,\n url_converter: editor.convertURL,\n url_converter_scope: editor,\n hex_colors: settings.force_hex_style_colors,\n class_filter: settings.class_filter,\n update_styles: true,\n root_element: editor.inline ? editor.getBody() : null,\n collect: settings.content_editable,\n schema: editor.schema,\n onSetAttrib: function (e) {\n editor.fire('SetAttrib', e);\n }\n });\n editor.parser = createParser(editor);\n editor.serializer = DomSerializer$1(settings, editor);\n editor.selection = Selection$1(editor.dom, editor.getWin(), editor.serializer, editor);\n editor.annotator = Annotator(editor);\n editor.formatter = Formatter(editor);\n editor.undoManager = UndoManager(editor);\n editor._nodeChangeDispatcher = new NodeChange(editor);\n editor._selectionOverrides = SelectionOverrides(editor);\n setup$14(editor);\n setup$13(editor);\n $_ejk8vk74jkmcwlp8.setup(editor);\n $_5utnj35ljkmcwldh.setup(editor);\n editor.fire('PreInit');\n if (!settings.browser_spellcheck && !settings.gecko_spellcheck) {\n doc.body.spellcheck = false;\n DOM$2.setAttrib(body, 'spellcheck', 'false');\n }\n editor.quirks = Quirks(editor);\n editor.fire('PostRender');\n if (settings.directionality) {\n body.dir = settings.directionality;\n }\n if (settings.nowrap) {\n body.style.whiteSpace = 'nowrap';\n }\n if (settings.protect) {\n editor.on('BeforeSetContent', function (e) {\n $_4ujg4tljkmcwkbk.each(settings.protect, function (pattern) {\n e.content = e.content.replace(pattern, function (str) {\n return '';\n });\n });\n });\n }\n editor.on('SetContent', function () {\n editor.addVisual(editor.getBody());\n });\n editor.load({\n initial: true,\n format: 'html'\n });\n editor.startContent = editor.getContent({ format: 'raw' });\n editor.on('compositionstart compositionend', function (e) {\n editor.composing = e.type === 'compositionstart';\n });\n if (editor.contentStyles.length > 0) {\n contentCssText = '';\n $_4ujg4tljkmcwkbk.each(editor.contentStyles, function (style) {\n contentCssText += style + '\\r\\n';\n });\n editor.dom.addStyle(contentCssText);\n }\n getStyleSheetLoader(editor).loadAll(editor.contentCSS, function (_) {\n initEditor(editor);\n }, function (urls) {\n initEditor(editor);\n });\n if (settings.content_style) {\n appendStyle(editor, settings.content_style);\n }\n };\n var $_fssayf58jkmcwlbz = { initContentBody: initContentBody };\n\n var DOM$3 = DOMUtils$1.DOM;\n var relaxDomain = function (editor, ifr) {\n if (document.domain !== window.location.hostname && $_cvvl9iajkmcwk25.ie && $_cvvl9iajkmcwk25.ie < 12) {\n var bodyUuid = $_8flfjw5jjkmcwldd.uuid('mce');\n editor[bodyUuid] = function () {\n $_fssayf58jkmcwlbz.initContentBody(editor);\n };\n var domainRelaxUrl = 'javascript:(function(){' + 'document.open();document.domain=\"' + document.domain + '\";' + 'var ed = window.parent.tinymce.get(\"' + editor.id + '\");document.write(ed.iframeHTML);' + 'document.close();ed.' + bodyUuid + '(true);})()';\n DOM$3.setAttrib(ifr, 'src', domainRelaxUrl);\n return true;\n }\n return false;\n };\n var normalizeHeight = function (height) {\n var normalizedHeight = typeof height === 'number' ? height + 'px' : height;\n return normalizedHeight ? normalizedHeight : '';\n };\n var createIframeElement = function (id, title, height, customAttrs) {\n var iframe = Element$$1.fromTag('iframe');\n $_29helg15jkmcwkf0.setAll(iframe, customAttrs);\n $_29helg15jkmcwkf0.setAll(iframe, {\n id: id + '_ifr',\n frameBorder: '0',\n allowTransparency: 'true',\n title: title\n });\n $_4enzit13jkmcwke5.setAll(iframe, {\n width: '100%',\n height: normalizeHeight(height),\n display: 'block'\n });\n return iframe;\n };\n var getIframeHtml = function (editor) {\n var bodyId, bodyClass, iframeHTML;\n iframeHTML = $_2ycm1438jkmcwkta.getDocType(editor) + '';\n if ($_2ycm1438jkmcwkta.getDocumentBaseUrl(editor) !== editor.documentBaseUrl) {\n iframeHTML += '';\n }\n iframeHTML += '';\n bodyId = $_2ycm1438jkmcwkta.getBodyId(editor);\n bodyClass = $_2ycm1438jkmcwkta.getBodyClass(editor);\n if ($_2ycm1438jkmcwkta.getContentSecurityPolicy(editor)) {\n iframeHTML += '';\n }\n iframeHTML += '
';\n return iframeHTML;\n };\n var createIframe = function (editor, o) {\n var title = editor.editorManager.translate('Rich Text Area. Press ALT-F9 for menu. ' + 'Press ALT-F10 for toolbar. Press ALT-0 for help');\n var ifr = createIframeElement(editor.id, title, o.height, $_2ycm1438jkmcwkta.getIframeAttrs(editor)).dom();\n ifr.onload = function () {\n ifr.onload = null;\n editor.fire('load');\n };\n var isDomainRelaxed = relaxDomain(editor, ifr);\n editor.contentAreaContainer = o.iframeContainer;\n editor.iframeElement = ifr;\n editor.iframeHTML = getIframeHtml(editor);\n DOM$3.add(o.iframeContainer, ifr);\n return isDomainRelaxed;\n };\n var init$1 = function (editor, boxInfo) {\n var isDomainRelaxed = createIframe(editor, boxInfo);\n if (boxInfo.editorContainer) {\n DOM$3.get(boxInfo.editorContainer).style.display = editor.orgDisplay;\n editor.hidden = DOM$3.isHidden(boxInfo.editorContainer);\n }\n editor.getElement().style.display = 'none';\n DOM$3.setAttrib(editor.id, 'aria-hidden', 'true');\n if (!isDomainRelaxed) {\n $_fssayf58jkmcwlbz.initContentBody(editor);\n }\n };\n var $_9jv4e17njkmcwlsj = { init: init$1 };\n\n var DOM$4 = DOMUtils$1.DOM;\n var initPlugin = function (editor, initializedPlugins, plugin) {\n var Plugin = PluginManager$1.get(plugin);\n var pluginUrl, pluginInstance;\n pluginUrl = PluginManager$1.urls[plugin] || editor.documentBaseUrl.replace(/\\/$/, '');\n plugin = $_4ujg4tljkmcwkbk.trim(plugin);\n if (Plugin && $_4ujg4tljkmcwkbk.inArray(initializedPlugins, plugin) === -1) {\n $_4ujg4tljkmcwkbk.each(PluginManager$1.dependencies(plugin), function (dep) {\n initPlugin(editor, initializedPlugins, dep);\n });\n if (editor.plugins[plugin]) {\n return;\n }\n pluginInstance = new Plugin(editor, pluginUrl, editor.$);\n editor.plugins[plugin] = pluginInstance;\n if (pluginInstance.init) {\n pluginInstance.init(editor, pluginUrl);\n initializedPlugins.push(plugin);\n }\n }\n };\n var trimLegacyPrefix = function (name) {\n return name.replace(/^\\-/, '');\n };\n var initPlugins = function (editor) {\n var initializedPlugins = [];\n $_4ujg4tljkmcwkbk.each(editor.settings.plugins.split(/[ ,]/), function (name) {\n initPlugin(editor, initializedPlugins, trimLegacyPrefix(name));\n });\n };\n var initTheme = function (editor) {\n var Theme;\n var theme = editor.settings.theme;\n if (isString(theme)) {\n editor.settings.theme = trimLegacyPrefix(theme);\n Theme = ThemeManager.get(theme);\n editor.theme = new Theme(editor, ThemeManager.urls[theme]);\n if (editor.theme.init) {\n editor.theme.init(editor, ThemeManager.urls[theme] || editor.documentBaseUrl.replace(/\\/$/, ''), editor.$);\n }\n } else {\n editor.theme = {};\n }\n };\n var renderFromLoadedTheme = function (editor) {\n var w, h, minHeight, re, info;\n var settings = editor.settings;\n var elm = editor.getElement();\n w = settings.width || DOM$4.getStyle(elm, 'width') || '100%';\n h = settings.height || DOM$4.getStyle(elm, 'height') || elm.offsetHeight;\n minHeight = settings.min_height || 100;\n re = /^[0-9\\.]+(|px)$/i;\n if (re.test('' + w)) {\n w = Math.max(parseInt(w, 10), 100);\n }\n if (re.test('' + h)) {\n h = Math.max(parseInt(h, 10), minHeight);\n }\n info = editor.theme.renderUI({\n targetNode: elm,\n width: w,\n height: h,\n deltaWidth: settings.delta_width,\n deltaHeight: settings.delta_height\n });\n if (!settings.content_editable) {\n h = (info.iframeHeight || h) + (typeof h === 'number' ? info.deltaHeight || 0 : '');\n if (h < minHeight) {\n h = minHeight;\n }\n }\n info.height = h;\n return info;\n };\n var renderFromThemeFunc = function (editor) {\n var info;\n var elm = editor.getElement();\n info = editor.settings.theme(editor, elm);\n if (info.editorContainer.nodeType) {\n info.editorContainer.id = info.editorContainer.id || editor.id + '_parent';\n }\n if (info.iframeContainer && info.iframeContainer.nodeType) {\n info.iframeContainer.id = info.iframeContainer.id || editor.id + '_iframecontainer';\n }\n info.height = info.iframeHeight ? info.iframeHeight : elm.offsetHeight;\n return info;\n };\n var createThemeFalseResult = function (element) {\n return {\n editorContainer: element,\n iframeContainer: element\n };\n };\n var renderThemeFalseIframe = function (targetElement) {\n var iframeContainer = DOM$4.create('div');\n DOM$4.insertAfter(iframeContainer, targetElement);\n return createThemeFalseResult(iframeContainer);\n };\n var renderThemeFalse = function (editor) {\n var targetElement = editor.getElement();\n return editor.inline ? createThemeFalseResult(null) : renderThemeFalseIframe(targetElement);\n };\n var renderThemeUi = function (editor) {\n var settings = editor.settings, elm = editor.getElement();\n editor.orgDisplay = elm.style.display;\n if (isString(settings.theme)) {\n return renderFromLoadedTheme(editor);\n } else if (isFunction(settings.theme)) {\n return renderFromThemeFunc(editor);\n } else {\n return renderThemeFalse(editor);\n }\n };\n var init$2 = function (editor) {\n var settings = editor.settings;\n var elm = editor.getElement();\n var boxInfo;\n editor.rtl = settings.rtl_ui || editor.editorManager.i18n.rtl;\n editor.editorManager.i18n.setCode(settings.language);\n settings.aria_label = settings.aria_label || DOM$4.getAttrib(elm, 'aria-label', editor.getLang('aria.rich_text_area'));\n editor.fire('ScriptsLoaded');\n initTheme(editor);\n initPlugins(editor);\n boxInfo = renderThemeUi(editor);\n editor.editorContainer = boxInfo.editorContainer ? boxInfo.editorContainer : null;\n if (settings.content_css) {\n $_4ujg4tljkmcwkbk.each($_4ujg4tljkmcwkbk.explode(settings.content_css), function (u) {\n editor.contentCSS.push(editor.documentBaseURI.toAbsolute(u));\n });\n }\n if (settings.content_editable) {\n return $_fssayf58jkmcwlbz.initContentBody(editor);\n } else {\n return $_9jv4e17njkmcwlsj.init(editor, boxInfo);\n }\n };\n var $_4z079955jkmcwlbj = { init: init$2 };\n\n var DOM$5 = DOMUtils$1.DOM;\n var hasSkipLoadPrefix = function (name$$1) {\n return name$$1.charAt(0) === '-';\n };\n var loadLanguage = function (scriptLoader, editor) {\n var settings = editor.settings;\n if (settings.language && settings.language !== 'en' && !settings.language_url) {\n settings.language_url = editor.editorManager.baseURL + '/langs/' + settings.language + '.js';\n }\n if (settings.language_url && !editor.editorManager.i18n.data[settings.language]) {\n scriptLoader.add(settings.language_url);\n }\n };\n var loadTheme = function (scriptLoader, editor, suffix, callback) {\n var settings = editor.settings, theme = settings.theme;\n if (isString(theme)) {\n if (!hasSkipLoadPrefix(theme) && !ThemeManager.urls.hasOwnProperty(theme)) {\n var themeUrl = settings.theme_url;\n if (themeUrl) {\n ThemeManager.load(theme, editor.documentBaseURI.toAbsolute(themeUrl));\n } else {\n ThemeManager.load(theme, 'themes/' + theme + '/theme' + suffix + '.js');\n }\n }\n scriptLoader.loadQueue(function () {\n ThemeManager.waitFor(theme, callback);\n });\n } else {\n callback();\n }\n };\n var loadPlugins = function (settings, suffix) {\n if ($_4ujg4tljkmcwkbk.isArray(settings.plugins)) {\n settings.plugins = settings.plugins.join(' ');\n }\n $_4ujg4tljkmcwkbk.each(settings.external_plugins, function (url, name$$1) {\n PluginManager$1.load(name$$1, url);\n settings.plugins += ' ' + name$$1;\n });\n $_4ujg4tljkmcwkbk.each(settings.plugins.split(/[ ,]/), function (plugin) {\n plugin = $_4ujg4tljkmcwkbk.trim(plugin);\n if (plugin && !PluginManager$1.urls[plugin]) {\n if (hasSkipLoadPrefix(plugin)) {\n plugin = plugin.substr(1, plugin.length);\n var dependencies = PluginManager$1.dependencies(plugin);\n $_4ujg4tljkmcwkbk.each(dependencies, function (dep) {\n var defaultSettings = {\n prefix: 'plugins/',\n resource: dep,\n suffix: '/plugin' + suffix + '.js'\n };\n dep = PluginManager$1.createUrl(defaultSettings, dep);\n PluginManager$1.load(dep.resource, dep);\n });\n } else {\n PluginManager$1.load(plugin, {\n prefix: 'plugins/',\n resource: plugin,\n suffix: '/plugin' + suffix + '.js'\n });\n }\n }\n });\n };\n var loadScripts = function (editor, suffix) {\n var scriptLoader = ScriptLoader.ScriptLoader;\n loadTheme(scriptLoader, editor, suffix, function () {\n loadLanguage(scriptLoader, editor);\n loadPlugins(editor.settings, suffix);\n scriptLoader.loadQueue(function () {\n if (!editor.removed) {\n $_4z079955jkmcwlbj.init(editor);\n }\n }, editor, function (urls) {\n $_b9je0i54jkmcwlbe.pluginLoadError(editor, urls[0]);\n if (!editor.removed) {\n $_4z079955jkmcwlbj.init(editor);\n }\n });\n });\n };\n var render = function (editor) {\n var settings = editor.settings, id = editor.id;\n var readyHandler = function () {\n DOM$5.unbind(window, 'ready', readyHandler);\n editor.render();\n };\n if (!EventUtils.Event.domLoaded) {\n DOM$5.bind(window, 'ready', readyHandler);\n return;\n }\n if (!editor.getElement()) {\n return;\n }\n if (!$_cvvl9iajkmcwk25.contentEditable) {\n return;\n }\n if (!settings.inline) {\n editor.orgVisibility = editor.getElement().style.visibility;\n editor.getElement().style.visibility = 'hidden';\n } else {\n editor.inline = true;\n }\n var form = editor.getElement().form || DOM$5.getParent(id, 'form');\n if (form) {\n editor.formElement = form;\n if (settings.hidden_input && !/TEXTAREA|INPUT/i.test(editor.getElement().nodeName)) {\n DOM$5.insertAfter(DOM$5.create('input', {\n type: 'hidden',\n name: id\n }), id);\n editor.hasHiddenInput = true;\n }\n editor.formEventDelegate = function (e) {\n editor.fire(e.type, e);\n };\n DOM$5.bind(form, 'submit reset', editor.formEventDelegate);\n editor.on('reset', function () {\n editor.setContent(editor.startContent, { format: 'raw' });\n });\n if (settings.submit_patch && !form.submit.nodeType && !form.submit.length && !form._mceOldSubmit) {\n form._mceOldSubmit = form.submit;\n form.submit = function () {\n editor.editorManager.triggerSave();\n editor.setDirty(false);\n return form._mceOldSubmit(form);\n };\n }\n }\n editor.windowManager = WindowManager(editor);\n editor.notificationManager = NotificationManager(editor);\n if (settings.encoding === 'xml') {\n editor.on('GetContent', function (e) {\n if (e.save) {\n e.content = DOM$5.encode(e.content);\n }\n });\n }\n if (settings.add_form_submit_trigger) {\n editor.on('submit', function () {\n if (editor.initialized) {\n editor.save();\n }\n });\n }\n if (settings.add_unload_trigger) {\n editor._beforeUnload = function () {\n if (editor.initialized && !editor.destroyed && !editor.isHidden()) {\n editor.save({\n format: 'raw',\n no_events: true,\n set_dirty: false\n });\n }\n };\n editor.editorManager.on('BeforeUnload', editor._beforeUnload);\n }\n editor.editorManager.add(editor);\n loadScripts(editor, editor.suffix);\n };\n var $_9u29xe4yjkmcwlai = { render: render };\n\n var add$4 = function (editor, name, settings) {\n var sidebars = editor.sidebars ? editor.sidebars : [];\n sidebars.push({\n name: name,\n settings: settings\n });\n editor.sidebars = sidebars;\n };\n var $_gcw4n27ojkmcwlsr = { add: add$4 };\n\n var each$20 = $_4ujg4tljkmcwkbk.each;\n var trim$4 = $_4ujg4tljkmcwkbk.trim;\n var queryParts = 'source protocol authority userInfo user password host port relative path directory file query anchor'.split(' ');\n var DEFAULT_PORTS = {\n ftp: 21,\n http: 80,\n https: 443,\n mailto: 25\n };\n var URI = function (url, settings) {\n var self$$1 = this;\n var baseUri, baseUrl;\n url = trim$4(url);\n settings = self$$1.settings = settings || {};\n baseUri = settings.base_uri;\n if (/^([\\w\\-]+):([^\\/]{2})/i.test(url) || /^\\s*#/.test(url)) {\n self$$1.source = url;\n return;\n }\n var isProtocolRelative = url.indexOf('//') === 0;\n if (url.indexOf('/') === 0 && !isProtocolRelative) {\n url = (baseUri ? baseUri.protocol || 'http' : 'http') + '://mce_host' + url;\n }\n if (!/^[\\w\\-]*:?\\/\\//.test(url)) {\n baseUrl = settings.base_uri ? settings.base_uri.path : new URI(document.location.href).directory;\n if (settings.base_uri.protocol == '') {\n url = '//mce_host' + self$$1.toAbsPath(baseUrl, url);\n } else {\n url = /([^#?]*)([#?]?.*)/.exec(url);\n url = (baseUri && baseUri.protocol || 'http') + '://mce_host' + self$$1.toAbsPath(baseUrl, url[1]) + url[2];\n }\n }\n url = url.replace(/@@/g, '(mce_at)');\n url = /^(?:(?![^:@]+:[^:@\\/]*@)([^:\\/?#.]+):)?(?:\\/\\/)?((?:(([^:@\\/]*):?([^:@\\/]*))?@)?([^:\\/?#]*)(?::(\\d*))?)(((\\/(?:[^?#](?![^?#\\/]*\\.[^?#\\/.]+(?:[?#]|$)))*\\/?)?([^?#\\/]*))(?:\\?([^#]*))?(?:#(.*))?)/.exec(url);\n each$20(queryParts, function (v, i) {\n var part = url[i];\n if (part) {\n part = part.replace(/\\(mce_at\\)/g, '@@');\n }\n self$$1[v] = part;\n });\n if (baseUri) {\n if (!self$$1.protocol) {\n self$$1.protocol = baseUri.protocol;\n }\n if (!self$$1.userInfo) {\n self$$1.userInfo = baseUri.userInfo;\n }\n if (!self$$1.port && self$$1.host === 'mce_host') {\n self$$1.port = baseUri.port;\n }\n if (!self$$1.host || self$$1.host === 'mce_host') {\n self$$1.host = baseUri.host;\n }\n self$$1.source = '';\n }\n if (isProtocolRelative) {\n self$$1.protocol = '';\n }\n };\n URI.prototype = {\n setPath: function (path) {\n var self$$1 = this;\n path = /^(.*?)\\/?(\\w+)?$/.exec(path);\n self$$1.path = path[0];\n self$$1.directory = path[1];\n self$$1.file = path[2];\n self$$1.source = '';\n self$$1.getURI();\n },\n toRelative: function (uri) {\n var self$$1 = this;\n var output;\n if (uri === './') {\n return uri;\n }\n uri = new URI(uri, { base_uri: self$$1 });\n if (uri.host !== 'mce_host' && self$$1.host !== uri.host && uri.host || self$$1.port !== uri.port || self$$1.protocol !== uri.protocol && uri.protocol !== '') {\n return uri.getURI();\n }\n var tu = self$$1.getURI(), uu = uri.getURI();\n if (tu === uu || tu.charAt(tu.length - 1) === '/' && tu.substr(0, tu.length - 1) === uu) {\n return tu;\n }\n output = self$$1.toRelPath(self$$1.path, uri.path);\n if (uri.query) {\n output += '?' + uri.query;\n }\n if (uri.anchor) {\n output += '#' + uri.anchor;\n }\n return output;\n },\n toAbsolute: function (uri, noHost) {\n uri = new URI(uri, { base_uri: this });\n return uri.getURI(noHost && this.isSameOrigin(uri));\n },\n isSameOrigin: function (uri) {\n if (this.host == uri.host && this.protocol == uri.protocol) {\n if (this.port == uri.port) {\n return true;\n }\n var defaultPort = DEFAULT_PORTS[this.protocol];\n if (defaultPort && (this.port || defaultPort) == (uri.port || defaultPort)) {\n return true;\n }\n }\n return false;\n },\n toRelPath: function (base, path) {\n var items, breakPoint = 0, out = '', i, l;\n base = base.substring(0, base.lastIndexOf('/'));\n base = base.split('/');\n items = path.split('/');\n if (base.length >= items.length) {\n for (i = 0, l = base.length; i < l; i++) {\n if (i >= items.length || base[i] !== items[i]) {\n breakPoint = i + 1;\n break;\n }\n }\n }\n if (base.length < items.length) {\n for (i = 0, l = items.length; i < l; i++) {\n if (i >= base.length || base[i] !== items[i]) {\n breakPoint = i + 1;\n break;\n }\n }\n }\n if (breakPoint === 1) {\n return path;\n }\n for (i = 0, l = base.length - (breakPoint - 1); i < l; i++) {\n out += '../';\n }\n for (i = breakPoint - 1, l = items.length; i < l; i++) {\n if (i !== breakPoint - 1) {\n out += '/' + items[i];\n } else {\n out += items[i];\n }\n }\n return out;\n },\n toAbsPath: function (base, path) {\n var i, nb = 0, o = [], tr, outPath;\n tr = /\\/$/.test(path) ? '/' : '';\n base = base.split('/');\n path = path.split('/');\n each$20(base, function (k) {\n if (k) {\n o.push(k);\n }\n });\n base = o;\n for (i = path.length - 1, o = []; i >= 0; i--) {\n if (path[i].length === 0 || path[i] === '.') {\n continue;\n }\n if (path[i] === '..') {\n nb++;\n continue;\n }\n if (nb > 0) {\n nb--;\n continue;\n }\n o.push(path[i]);\n }\n i = base.length - nb;\n if (i <= 0) {\n outPath = o.reverse().join('/');\n } else {\n outPath = base.slice(0, i).join('/') + '/' + o.reverse().join('/');\n }\n if (outPath.indexOf('/') !== 0) {\n outPath = '/' + outPath;\n }\n if (tr && outPath.lastIndexOf('/') !== outPath.length - 1) {\n outPath += tr;\n }\n return outPath;\n },\n getURI: function (noProtoHost) {\n var s;\n var self$$1 = this;\n if (!self$$1.source || noProtoHost) {\n s = '';\n if (!noProtoHost) {\n if (self$$1.protocol) {\n s += self$$1.protocol + '://';\n } else {\n s += '//';\n }\n if (self$$1.userInfo) {\n s += self$$1.userInfo + '@';\n }\n if (self$$1.host) {\n s += self$$1.host;\n }\n if (self$$1.port) {\n s += ':' + self$$1.port;\n }\n }\n if (self$$1.path) {\n s += self$$1.path;\n }\n if (self$$1.query) {\n s += '?' + self$$1.query;\n }\n if (self$$1.anchor) {\n s += '#' + self$$1.anchor;\n }\n self$$1.source = s;\n }\n return self$$1.source;\n }\n };\n URI.parseDataUri = function (uri) {\n var type, matches;\n uri = decodeURIComponent(uri).split(',');\n matches = /data:([^;]+)/.exec(uri[0]);\n if (matches) {\n type = matches[1];\n }\n return {\n type: type,\n data: uri[1]\n };\n };\n URI.getDocumentBaseUrl = function (loc) {\n var baseUrl;\n if (loc.protocol.indexOf('http') !== 0 && loc.protocol !== 'file:') {\n baseUrl = loc.href;\n } else {\n baseUrl = loc.protocol + '//' + loc.host + loc.pathname;\n }\n if (/^[^:]+:\\/\\/\\/?[^\\/]+\\//.test(baseUrl)) {\n baseUrl = baseUrl.replace(/[\\?#].*$/, '').replace(/[\\/\\\\][^\\/]+$/, '');\n if (!/[\\/\\\\]$/.test(baseUrl)) {\n baseUrl += '/';\n }\n }\n return baseUrl;\n };\n\n var defaultFormat = 'html';\n var trimEmptyContents = function (editor, html) {\n var blockName = $_2ycm1438jkmcwkta.getForcedRootBlock(editor);\n var emptyRegExp = new RegExp('^(<' + blockName + '[^>]*>( | |\\\\s|\\xA0|
|)<\\\\/' + blockName + '>[\\r\\n]*|
[\\r\\n]*)$');\n return html.replace(emptyRegExp, '');\n };\n var getContentFromBody = function (editor, args, body) {\n var content;\n args.format = args.format ? args.format : defaultFormat;\n args.get = true;\n args.getInner = true;\n if (!args.no_events) {\n editor.fire('BeforeGetContent', args);\n }\n if (args.format === 'raw') {\n content = $_4ujg4tljkmcwkbk.trim($_2varuf5zjkmcwlgq.trimExternal(editor.serializer, body.innerHTML));\n } else if (args.format === 'text') {\n content = $_cadvcr2pjkmcwkph.trim(body.innerText || body.textContent);\n } else if (args.format === 'tree') {\n return editor.serializer.serialize(body, args);\n } else {\n content = trimEmptyContents(editor, editor.serializer.serialize(body, args));\n }\n if (args.format !== 'text' && !isWsPreserveElement(Element$$1.fromDom(body))) {\n args.content = $_4ujg4tljkmcwkbk.trim(content);\n } else {\n args.content = content;\n }\n if (!args.no_events) {\n editor.fire('GetContent', args);\n }\n return args.content;\n };\n var getContent$1 = function (editor, args) {\n if (args === void 0) {\n args = {};\n }\n return Option.from(editor.getBody()).fold(constant(args.format === 'tree' ? new Node$2('body', 11) : ''), function (body) {\n return getContentFromBody(editor, args, body);\n });\n };\n\n var traverse = function (node, fn) {\n fn(node);\n if (node.firstChild) {\n traverse(node.firstChild, fn);\n }\n if (node.next) {\n traverse(node.next, fn);\n }\n };\n var findMatchingNodes = function (nodeFilters, attributeFilters, node) {\n var nodeMatches = {};\n var attrMatches = {};\n var matches = [];\n if (node.firstChild) {\n traverse(node.firstChild, function (node) {\n each(nodeFilters, function (filter$$1) {\n if (filter$$1.name === node.name) {\n if (nodeMatches[filter$$1.name]) {\n nodeMatches[filter$$1.name].nodes.push(node);\n } else {\n nodeMatches[filter$$1.name] = {\n filter: filter$$1,\n nodes: [node]\n };\n }\n }\n });\n each(attributeFilters, function (filter$$1) {\n if (typeof node.attr(filter$$1.name) === 'string') {\n if (attrMatches[filter$$1.name]) {\n attrMatches[filter$$1.name].nodes.push(node);\n } else {\n attrMatches[filter$$1.name] = {\n filter: filter$$1,\n nodes: [node]\n };\n }\n }\n });\n });\n }\n for (var name in nodeMatches) {\n if (nodeMatches.hasOwnProperty(name)) {\n matches.push(nodeMatches[name]);\n }\n }\n for (var name in attrMatches) {\n if (attrMatches.hasOwnProperty(name)) {\n matches.push(attrMatches[name]);\n }\n }\n return matches;\n };\n var filter$3 = function (nodeFilters, attributeFilters, node) {\n var matches = findMatchingNodes(nodeFilters, attributeFilters, node);\n each(matches, function (match) {\n each(match.filter.callbacks, function (callback) {\n callback(match.nodes, match.filter.name, {});\n });\n });\n };\n\n var defaultFormat$1 = 'html';\n var isTreeNode = function (content) {\n return content instanceof Node$2;\n };\n var moveSelection = function (editor) {\n if ($_e3v8sn4vjkmcwl9y.hasFocus(editor)) {\n $_1m3f3j2yjkmcwkqg.firstPositionIn(editor.getBody()).each(function (pos) {\n var node = pos.getNode();\n var caretPos = $_bjermr1rjkmcwkij.isTable(node) ? $_1m3f3j2yjkmcwkqg.firstPositionIn(node).getOr(pos) : pos;\n editor.selection.setRng(caretPos.toRange());\n });\n }\n };\n var setEditorHtml = function (editor, html) {\n editor.dom.setHTML(editor.getBody(), html);\n moveSelection(editor);\n };\n var setContentString = function (editor, body, content, args) {\n var forcedRootBlockName, padd;\n if (content.length === 0 || /^\\s+$/.test(content)) {\n padd = '
';\n if (body.nodeName === 'TABLE') {\n content = '' + padd + '';\n } else if (/^(UL|OL)$/.test(body.nodeName)) {\n content = '
  • ' + padd + '
  • ';\n }\n forcedRootBlockName = $_2ycm1438jkmcwkta.getForcedRootBlock(editor);\n if (forcedRootBlockName && editor.schema.isValidChild(body.nodeName.toLowerCase(), forcedRootBlockName.toLowerCase())) {\n content = padd;\n content = editor.dom.createHTML(forcedRootBlockName, editor.settings.forced_root_block_attrs, content);\n } else if (!content) {\n content = '
    ';\n }\n setEditorHtml(editor, content);\n editor.fire('SetContent', args);\n } else {\n if (args.format !== 'raw') {\n content = HtmlSerializer({ validate: editor.validate }, editor.schema).serialize(editor.parser.parse(content, {\n isRootContent: true,\n insert: true\n }));\n }\n args.content = isWsPreserveElement(Element$$1.fromDom(body)) ? content : $_4ujg4tljkmcwkbk.trim(content);\n setEditorHtml(editor, args.content);\n if (!args.no_events) {\n editor.fire('SetContent', args);\n }\n }\n return args.content;\n };\n var setContentTree = function (editor, body, content, args) {\n filter$3(editor.parser.getNodeFilters(), editor.parser.getAttributeFilters(), content);\n var html = HtmlSerializer({ validate: editor.validate }, editor.schema).serialize(content);\n args.content = isWsPreserveElement(Element$$1.fromDom(body)) ? html : $_4ujg4tljkmcwkbk.trim(html);\n setEditorHtml(editor, args.content);\n if (!args.no_events) {\n editor.fire('SetContent', args);\n }\n return content;\n };\n var setContent$1 = function (editor, content, args) {\n if (args === void 0) {\n args = {};\n }\n args.format = args.format ? args.format : defaultFormat$1;\n args.set = true;\n args.content = isTreeNode(content) ? '' : content;\n if (!isTreeNode(content) && !args.no_events) {\n editor.fire('BeforeSetContent', args);\n content = args.content;\n }\n return Option.from(editor.getBody()).fold(constant(content), function (body) {\n return isTreeNode(content) ? setContentTree(editor, body, content, args) : setContentString(editor, body, content, args);\n });\n };\n\n var DOM$6 = DOMUtils$1.DOM;\n var restoreOriginalStyles = function (editor) {\n DOM$6.setStyle(editor.id, 'display', editor.orgDisplay);\n };\n var safeDestroy = function (x) {\n return Option.from(x).each(function (x) {\n return x.destroy();\n });\n };\n var clearDomReferences = function (editor) {\n editor.contentAreaContainer = editor.formElement = editor.container = editor.editorContainer = null;\n editor.bodyElement = editor.contentDocument = editor.contentWindow = null;\n editor.iframeElement = editor.targetElm = null;\n if (editor.selection) {\n editor.selection = editor.selection.win = editor.selection.dom = editor.selection.dom.doc = null;\n }\n };\n var restoreForm = function (editor) {\n var form = editor.formElement;\n if (form) {\n if (form._mceOldSubmit) {\n form.submit = form._mceOldSubmit;\n form._mceOldSubmit = null;\n }\n DOM$6.unbind(form, 'submit reset', editor.formEventDelegate);\n }\n };\n var remove$9 = function (editor) {\n if (!editor.removed) {\n var _selectionOverrides = editor._selectionOverrides, editorUpload = editor.editorUpload;\n var body = editor.getBody();\n var element = editor.getElement();\n if (body) {\n editor.save({ is_removing: true });\n }\n editor.removed = true;\n editor.unbindAllNativeEvents();\n if (editor.hasHiddenInput && element) {\n DOM$6.remove(element.nextSibling);\n }\n if (!editor.inline && body) {\n restoreOriginalStyles(editor);\n }\n $_q3ric4tjkmcwl9q.fireRemove(editor);\n editor.editorManager.remove(editor);\n DOM$6.remove(editor.getContainer());\n safeDestroy(_selectionOverrides);\n safeDestroy(editorUpload);\n editor.destroy();\n }\n };\n var destroy = function (editor, automatic) {\n var selection = editor.selection, dom = editor.dom;\n if (editor.destroyed) {\n return;\n }\n if (!automatic && !editor.removed) {\n editor.remove();\n return;\n }\n if (!automatic) {\n editor.editorManager.off('beforeunload', editor._beforeUnload);\n if (editor.theme && editor.theme.destroy) {\n editor.theme.destroy();\n }\n safeDestroy(selection);\n safeDestroy(dom);\n }\n restoreForm(editor);\n clearDomReferences(editor);\n editor.destroyed = true;\n };\n\n var DOM$7 = DOMUtils$1.DOM;\n var extend$4 = $_4ujg4tljkmcwkbk.extend;\n var each$21 = $_4ujg4tljkmcwkbk.each;\n var resolve$4 = $_4ujg4tljkmcwkbk.resolve;\n var ie$2 = $_cvvl9iajkmcwk25.ie;\n var Editor = function (id, settings, editorManager) {\n var self = this;\n var documentBaseUrl = self.documentBaseUrl = editorManager.documentBaseURL;\n var baseUri = editorManager.baseURI;\n settings = getEditorSettings(self, id, documentBaseUrl, editorManager.defaultSettings, settings);\n self.settings = settings;\n AddOnManager.language = settings.language || 'en';\n AddOnManager.languageLoad = settings.language_load;\n AddOnManager.baseURL = editorManager.baseURL;\n self.id = id;\n self.setDirty(false);\n self.plugins = {};\n self.documentBaseURI = new URI(settings.document_base_url, { base_uri: baseUri });\n self.baseURI = baseUri;\n self.contentCSS = [];\n self.contentStyles = [];\n self.shortcuts = new Shortcuts(self);\n self.loadedCSS = {};\n self.editorCommands = new EditorCommands(self);\n self.suffix = editorManager.suffix;\n self.editorManager = editorManager;\n self.inline = settings.inline;\n self.buttons = {};\n self.menuItems = {};\n if (settings.cache_suffix) {\n $_cvvl9iajkmcwk25.cacheSuffix = settings.cache_suffix.replace(/^[\\?\\&]+/, '');\n }\n if (settings.override_viewport === false) {\n $_cvvl9iajkmcwk25.overrideViewPort = false;\n }\n editorManager.fire('SetupEditor', { editor: self });\n self.execCallback('setup', self);\n self.$ = DomQuery.overrideDefaults(function () {\n return {\n context: self.inline ? self.getBody() : self.getDoc(),\n element: self.getBody()\n };\n });\n };\n Editor.prototype = {\n render: function () {\n $_9u29xe4yjkmcwlai.render(this);\n },\n focus: function (skipFocus) {\n $_e3v8sn4vjkmcwl9y.focus(this, skipFocus);\n },\n hasFocus: function () {\n return $_e3v8sn4vjkmcwl9y.hasFocus(this);\n },\n execCallback: function (name) {\n var x = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n x[_i - 1] = arguments[_i];\n }\n var self = this;\n var callback = self.settings[name], scope;\n if (!callback) {\n return;\n }\n if (self.callbackLookup && (scope = self.callbackLookup[name])) {\n callback = scope.func;\n scope = scope.scope;\n }\n if (typeof callback === 'string') {\n scope = callback.replace(/\\.\\w+$/, '');\n scope = scope ? resolve$4(scope) : 0;\n callback = resolve$4(callback);\n self.callbackLookup = self.callbackLookup || {};\n self.callbackLookup[name] = {\n func: callback,\n scope: scope\n };\n }\n return callback.apply(scope || self, Array.prototype.slice.call(arguments, 1));\n },\n translate: function (text) {\n if (text && $_4ujg4tljkmcwkbk.is(text, 'string')) {\n var lang_1 = this.settings.language || 'en', i18n_1 = this.editorManager.i18n;\n text = i18n_1.data[lang_1 + '.' + text] || text.replace(/\\{\\#([^\\}]+)\\}/g, function (a, b) {\n return i18n_1.data[lang_1 + '.' + b] || '{#' + b + '}';\n });\n }\n return this.editorManager.translate(text);\n },\n getLang: function (name, defaultVal) {\n return this.editorManager.i18n.data[(this.settings.language || 'en') + '.' + name] || (defaultVal !== undefined ? defaultVal : '{#' + name + '}');\n },\n getParam: function (name, defaultVal, type) {\n return getParam(this, name, defaultVal, type);\n },\n nodeChanged: function (args) {\n this._nodeChangeDispatcher.nodeChanged(args);\n },\n addButton: function (name, settings) {\n var self = this;\n if (settings.cmd) {\n settings.onclick = function () {\n self.execCommand(settings.cmd);\n };\n }\n if (settings.stateSelector && typeof settings.active === 'undefined') {\n settings.active = false;\n }\n if (!settings.text && !settings.icon) {\n settings.icon = name;\n }\n self.buttons = self.buttons;\n settings.tooltip = settings.tooltip || settings.title;\n self.buttons[name] = settings;\n },\n addSidebar: function (name, settings) {\n return $_gcw4n27ojkmcwlsr.add(this, name, settings);\n },\n addMenuItem: function (name, settings) {\n var self = this;\n if (settings.cmd) {\n settings.onclick = function () {\n self.execCommand(settings.cmd);\n };\n }\n self.menuItems = self.menuItems;\n self.menuItems[name] = settings;\n },\n addContextToolbar: function (predicate, items) {\n var self = this;\n var selector;\n self.contextToolbars = self.contextToolbars || [];\n if (typeof predicate === 'string') {\n selector = predicate;\n predicate = function (elm) {\n return self.dom.is(elm, selector);\n };\n }\n self.contextToolbars.push({\n id: $_8flfjw5jjkmcwldd.uuid('mcet'),\n predicate: predicate,\n items: items\n });\n },\n addCommand: function (name, callback, scope) {\n this.editorCommands.addCommand(name, callback, scope);\n },\n addQueryStateHandler: function (name, callback, scope) {\n this.editorCommands.addQueryStateHandler(name, callback, scope);\n },\n addQueryValueHandler: function (name, callback, scope) {\n this.editorCommands.addQueryValueHandler(name, callback, scope);\n },\n addShortcut: function (pattern, desc, cmdFunc, scope) {\n this.shortcuts.add(pattern, desc, cmdFunc, scope);\n },\n execCommand: function (cmd, ui, value, args) {\n return this.editorCommands.execCommand(cmd, ui, value, args);\n },\n queryCommandState: function (cmd) {\n return this.editorCommands.queryCommandState(cmd);\n },\n queryCommandValue: function (cmd) {\n return this.editorCommands.queryCommandValue(cmd);\n },\n queryCommandSupported: function (cmd) {\n return this.editorCommands.queryCommandSupported(cmd);\n },\n show: function () {\n var self = this;\n if (self.hidden) {\n self.hidden = false;\n if (self.inline) {\n self.getBody().contentEditable = true;\n } else {\n DOM$7.show(self.getContainer());\n DOM$7.hide(self.id);\n }\n self.load();\n self.fire('show');\n }\n },\n hide: function () {\n var self = this, doc = self.getDoc();\n if (!self.hidden) {\n if (ie$2 && doc && !self.inline) {\n doc.execCommand('SelectAll');\n }\n self.save();\n if (self.inline) {\n self.getBody().contentEditable = false;\n if (self === self.editorManager.focusedEditor) {\n self.editorManager.focusedEditor = null;\n }\n } else {\n DOM$7.hide(self.getContainer());\n DOM$7.setStyle(self.id, 'display', self.orgDisplay);\n }\n self.hidden = true;\n self.fire('hide');\n }\n },\n isHidden: function () {\n return !!this.hidden;\n },\n setProgressState: function (state, time) {\n this.fire('ProgressState', {\n state: state,\n time: time\n });\n },\n load: function (args) {\n var self = this;\n var elm = self.getElement(), html;\n if (self.removed) {\n return '';\n }\n if (elm) {\n args = args || {};\n args.load = true;\n html = self.setContent(elm.value !== undefined ? elm.value : elm.innerHTML, args);\n args.element = elm;\n if (!args.no_events) {\n self.fire('LoadContent', args);\n }\n args.element = elm = null;\n return html;\n }\n },\n save: function (args) {\n var self = this;\n var elm = self.getElement(), html, form;\n if (!elm || !self.initialized || self.removed) {\n return;\n }\n args = args || {};\n args.save = true;\n args.element = elm;\n html = args.content = self.getContent(args);\n if (!args.no_events) {\n self.fire('SaveContent', args);\n }\n if (args.format === 'raw') {\n self.fire('RawSaveContent', args);\n }\n html = args.content;\n if (!/TEXTAREA|INPUT/i.test(elm.nodeName)) {\n if (args.is_removing || !self.inline) {\n elm.innerHTML = html;\n }\n if (form = DOM$7.getParent(self.id, 'form')) {\n each$21(form.elements, function (elm) {\n if (elm.name === self.id) {\n elm.value = html;\n return false;\n }\n });\n }\n } else {\n elm.value = html;\n }\n args.element = elm = null;\n if (args.set_dirty !== false) {\n self.setDirty(false);\n }\n return html;\n },\n setContent: function (content, args) {\n return setContent$1(this, content, args);\n },\n getContent: function (args) {\n return getContent$1(this, args);\n },\n insertContent: function (content, args) {\n if (args) {\n content = extend$4({ content: content }, args);\n }\n this.execCommand('mceInsertContent', false, content);\n },\n isDirty: function () {\n return !this.isNotDirty;\n },\n setDirty: function (state) {\n var oldState = !this.isNotDirty;\n this.isNotDirty = !state;\n if (state && state !== oldState) {\n this.fire('dirty');\n }\n },\n setMode: function (mode) {\n setMode(this, mode);\n },\n getContainer: function () {\n var self = this;\n if (!self.container) {\n self.container = DOM$7.get(self.editorContainer || self.id + '_parent');\n }\n return self.container;\n },\n getContentAreaContainer: function () {\n return this.contentAreaContainer;\n },\n getElement: function () {\n if (!this.targetElm) {\n this.targetElm = DOM$7.get(this.id);\n }\n return this.targetElm;\n },\n getWin: function () {\n var self = this;\n var elm;\n if (!self.contentWindow) {\n elm = self.iframeElement;\n if (elm) {\n self.contentWindow = elm.contentWindow;\n }\n }\n return self.contentWindow;\n },\n getDoc: function () {\n var self = this;\n var win;\n if (!self.contentDocument) {\n win = self.getWin();\n if (win) {\n self.contentDocument = win.document;\n }\n }\n return self.contentDocument;\n },\n getBody: function () {\n var doc = this.getDoc();\n return this.bodyElement || (doc ? doc.body : null);\n },\n convertURL: function (url, name, elm) {\n var self = this, settings = self.settings;\n if (settings.urlconverter_callback) {\n return self.execCallback('urlconverter_callback', url, elm, true, name);\n }\n if (!settings.convert_urls || elm && elm.nodeName === 'LINK' || url.indexOf('file:') === 0 || url.length === 0) {\n return url;\n }\n if (settings.relative_urls) {\n return self.documentBaseURI.toRelative(url);\n }\n url = self.documentBaseURI.toAbsolute(url, settings.remove_script_host);\n return url;\n },\n addVisual: function (elm) {\n var self = this;\n var settings = self.settings;\n var dom = self.dom;\n var cls;\n elm = elm || self.getBody();\n if (self.hasVisual === undefined) {\n self.hasVisual = settings.visual;\n }\n each$21(dom.select('table,a', elm), function (elm) {\n var value;\n switch (elm.nodeName) {\n case 'TABLE':\n cls = settings.visual_table_class || 'mce-item-table';\n value = dom.getAttrib(elm, 'border');\n if ((!value || value === '0') && self.hasVisual) {\n dom.addClass(elm, cls);\n } else {\n dom.removeClass(elm, cls);\n }\n return;\n case 'A':\n if (!dom.getAttrib(elm, 'href')) {\n value = dom.getAttrib(elm, 'name') || elm.id;\n cls = settings.visual_anchor_class || 'mce-item-anchor';\n if (value && self.hasVisual) {\n dom.addClass(elm, cls);\n } else {\n dom.removeClass(elm, cls);\n }\n }\n return;\n }\n });\n self.fire('VisualAid', {\n element: elm,\n hasVisual: self.hasVisual\n });\n },\n remove: function () {\n remove$9(this);\n },\n destroy: function (automatic) {\n destroy(this, automatic);\n },\n uploadImages: function (callback) {\n return this.editorUpload.uploadImages(callback);\n },\n _scanForImages: function () {\n return this.editorUpload.scanForImages();\n }\n };\n extend$4(Editor.prototype, EditorObservable$1);\n\n var isEditorUIElement = function (elm) {\n return elm.className.toString().indexOf('mce-') !== -1;\n };\n var $_48zpgt7xjkmcwlum = { isEditorUIElement: isEditorUIElement };\n\n var isManualNodeChange = function (e) {\n return e.type === 'nodechange' && e.selectionChange;\n };\n var registerPageMouseUp = function (editor, throttledStore) {\n var mouseUpPage = function () {\n throttledStore.throttle();\n };\n DOMUtils$1.DOM.bind(document, 'mouseup', mouseUpPage);\n editor.on('remove', function () {\n DOMUtils$1.DOM.unbind(document, 'mouseup', mouseUpPage);\n });\n };\n var registerFocusOut = function (editor) {\n editor.on('focusout', function () {\n $_39c3zs4ljkmcwl86.store(editor);\n });\n };\n var registerMouseUp = function (editor, throttledStore) {\n editor.on('mouseup touchend', function (e) {\n throttledStore.throttle();\n });\n };\n var registerEditorEvents = function (editor, throttledStore) {\n var browser = $_b1ykk4ojkmcwkcj.detect().browser;\n if (browser.isIE()) {\n registerFocusOut(editor);\n } else {\n registerMouseUp(editor, throttledStore);\n }\n editor.on('keyup nodechange', function (e) {\n if (!isManualNodeChange(e)) {\n $_39c3zs4ljkmcwl86.store(editor);\n }\n });\n };\n var register$3 = function (editor) {\n var throttledStore = first$1(function () {\n $_39c3zs4ljkmcwl86.store(editor);\n }, 0);\n if (editor.inline) {\n registerPageMouseUp(editor, throttledStore);\n }\n editor.on('init', function () {\n registerEditorEvents(editor, throttledStore);\n });\n editor.on('remove', function () {\n throttledStore.cancel();\n });\n };\n var $_d657g07yjkmcwlun = { register: register$3 };\n\n var documentFocusInHandler;\n var DOM$8 = DOMUtils$1.DOM;\n var isEditorUIElement$1 = function (elm) {\n return $_48zpgt7xjkmcwlum.isEditorUIElement(elm);\n };\n var isUIElement = function (editor, elm) {\n var customSelector = editor ? editor.settings.custom_ui_selector : '';\n var parent$$1 = DOM$8.getParent(elm, function (elm) {\n return isEditorUIElement$1(elm) || (customSelector ? editor.dom.is(elm, customSelector) : false);\n });\n return parent$$1 !== null;\n };\n var getActiveElement = function () {\n try {\n return document.activeElement;\n } catch (ex) {\n return document.body;\n }\n };\n var registerEvents = function (editorManager, e) {\n var editor = e.editor;\n $_d657g07yjkmcwlun.register(editor);\n editor.on('focusin', function () {\n var self$$1 = this;\n var focusedEditor = editorManager.focusedEditor;\n if (focusedEditor !== self$$1) {\n if (focusedEditor) {\n focusedEditor.fire('blur', { focusedEditor: self$$1 });\n }\n editorManager.setActive(self$$1);\n editorManager.focusedEditor = self$$1;\n self$$1.fire('focus', { blurredEditor: focusedEditor });\n self$$1.focus(true);\n }\n });\n editor.on('focusout', function () {\n var self$$1 = this;\n $_3l01gcijkmcwk99.setEditorTimeout(self$$1, function () {\n var focusedEditor = editorManager.focusedEditor;\n if (!isUIElement(self$$1, getActiveElement()) && focusedEditor === self$$1) {\n self$$1.fire('blur', { focusedEditor: null });\n editorManager.focusedEditor = null;\n }\n });\n });\n if (!documentFocusInHandler) {\n documentFocusInHandler = function (e) {\n var activeEditor = editorManager.activeEditor;\n var target;\n target = e.target;\n if (activeEditor && target.ownerDocument === document) {\n if (target !== document.body && !isUIElement(activeEditor, target) && editorManager.focusedEditor === activeEditor) {\n activeEditor.fire('blur', { focusedEditor: null });\n editorManager.focusedEditor = null;\n }\n }\n };\n DOM$8.bind(document, 'focusin', documentFocusInHandler);\n }\n };\n var unregisterDocumentEvents = function (editorManager, e) {\n if (editorManager.focusedEditor === e.editor) {\n editorManager.focusedEditor = null;\n }\n if (!editorManager.activeEditor) {\n DOM$8.unbind(document, 'focusin', documentFocusInHandler);\n documentFocusInHandler = null;\n }\n };\n var setup$15 = function (editorManager) {\n editorManager.on('AddEditor', curry(registerEvents, editorManager));\n editorManager.on('RemoveEditor', curry(unregisterDocumentEvents, editorManager));\n };\n var $_6zk6867wjkmcwluj = {\n setup: setup$15,\n isEditorUIElement: isEditorUIElement$1,\n isUIElement: isUIElement\n };\n\n var data = {};\n var code = 'en';\n var $_9pp0ut7zjkmcwlut = {\n setCode: function (newCode) {\n if (newCode) {\n code = newCode;\n this.rtl = this.data[newCode] ? this.data[newCode]._dir === 'rtl' : false;\n }\n },\n getCode: function () {\n return code;\n },\n rtl: false,\n add: function (code, items) {\n var langData = data[code];\n if (!langData) {\n data[code] = langData = {};\n }\n for (var name in items) {\n langData[name] = items[name];\n }\n this.setCode(code);\n },\n translate: function (text) {\n var langData = data[code] || {};\n var toString = function (obj) {\n if ($_4ujg4tljkmcwkbk.is(obj, 'function')) {\n return Object.prototype.toString.call(obj);\n }\n return !isEmpty(obj) ? '' + obj : '';\n };\n var isEmpty = function (text) {\n return text === '' || text === null || $_4ujg4tljkmcwkbk.is(text, 'undefined');\n };\n var getLangData = function (text) {\n text = toString(text);\n return $_4ujg4tljkmcwkbk.hasOwn(langData, text) ? toString(langData[text]) : text;\n };\n if (isEmpty(text)) {\n return '';\n }\n if ($_4ujg4tljkmcwkbk.is(text, 'object') && $_4ujg4tljkmcwkbk.hasOwn(text, 'raw')) {\n return toString(text.raw);\n }\n if ($_4ujg4tljkmcwkbk.is(text, 'array')) {\n var values_1 = text.slice(1);\n text = getLangData(text[0]).replace(/\\{([0-9]+)\\}/g, function ($1, $2) {\n return $_4ujg4tljkmcwkbk.hasOwn(values_1, $2) ? toString(values_1[$2]) : $1;\n });\n }\n return getLangData(text).replace(/{context:\\w+}$/, '');\n },\n data: data\n };\n\n var DOM$9 = DOMUtils$1.DOM;\n var explode$4 = $_4ujg4tljkmcwkbk.explode;\n var each$22 = $_4ujg4tljkmcwkbk.each;\n var extend$5 = $_4ujg4tljkmcwkbk.extend;\n var instanceCounter = 0;\n var beforeUnloadDelegate;\n var EditorManager;\n var boundGlobalEvents = false;\n var legacyEditors = [];\n var editors = [];\n var isValidLegacyKey = function (id) {\n return id !== 'length';\n };\n var globalEventDelegate = function (e) {\n each$22(EditorManager.get(), function (editor) {\n if (e.type === 'scroll') {\n editor.fire('ScrollWindow', e);\n } else {\n editor.fire('ResizeWindow', e);\n }\n });\n };\n var toggleGlobalEvents = function (state) {\n if (state !== boundGlobalEvents) {\n if (state) {\n DomQuery(window).on('resize scroll', globalEventDelegate);\n } else {\n DomQuery(window).off('resize scroll', globalEventDelegate);\n }\n boundGlobalEvents = state;\n }\n };\n var removeEditorFromList = function (targetEditor) {\n var oldEditors = editors;\n delete legacyEditors[targetEditor.id];\n for (var i = 0; i < legacyEditors.length; i++) {\n if (legacyEditors[i] === targetEditor) {\n legacyEditors.splice(i, 1);\n break;\n }\n }\n editors = filter(editors, function (editor) {\n return targetEditor !== editor;\n });\n if (EditorManager.activeEditor === targetEditor) {\n EditorManager.activeEditor = editors.length > 0 ? editors[0] : null;\n }\n if (EditorManager.focusedEditor === targetEditor) {\n EditorManager.focusedEditor = null;\n }\n return oldEditors.length !== editors.length;\n };\n var purgeDestroyedEditor = function (editor) {\n if (editor && editor.initialized && !(editor.getContainer() || editor.getBody()).parentNode) {\n removeEditorFromList(editor);\n editor.unbindAllNativeEvents();\n editor.destroy(true);\n editor.removed = true;\n editor = null;\n }\n return editor;\n };\n EditorManager = {\n defaultSettings: {},\n $: DomQuery,\n majorVersion: '4',\n minorVersion: '8.2',\n releaseDate: '2018-08-09',\n editors: legacyEditors,\n i18n: $_9pp0ut7zjkmcwlut,\n activeEditor: null,\n settings: {},\n setup: function () {\n var self$$1 = this;\n var baseURL, documentBaseURL, suffix = '', preInit, src;\n documentBaseURL = URI.getDocumentBaseUrl(document.location);\n if (/^[^:]+:\\/\\/\\/?[^\\/]+\\//.test(documentBaseURL)) {\n documentBaseURL = documentBaseURL.replace(/[\\?#].*$/, '').replace(/[\\/\\\\][^\\/]+$/, '');\n if (!/[\\/\\\\]$/.test(documentBaseURL)) {\n documentBaseURL += '/';\n }\n }\n preInit = window.tinymce || window.tinyMCEPreInit;\n if (preInit) {\n baseURL = preInit.base || preInit.baseURL;\n suffix = preInit.suffix;\n } else {\n var scripts = document.getElementsByTagName('script');\n for (var i = 0; i < scripts.length; i++) {\n src = scripts[i].src;\n var srcScript = src.substring(src.lastIndexOf('/'));\n if (/tinymce(\\.full|\\.jquery|)(\\.min|\\.dev|)\\.js/.test(src)) {\n if (srcScript.indexOf('.min') !== -1) {\n suffix = '.min';\n }\n baseURL = src.substring(0, src.lastIndexOf('/'));\n break;\n }\n }\n if (!baseURL && document.currentScript) {\n src = document.currentScript.src;\n if (src.indexOf('.min') !== -1) {\n suffix = '.min';\n }\n baseURL = src.substring(0, src.lastIndexOf('/'));\n }\n }\n self$$1.baseURL = new URI(documentBaseURL).toAbsolute(baseURL);\n self$$1.documentBaseURL = documentBaseURL;\n self$$1.baseURI = new URI(self$$1.baseURL);\n self$$1.suffix = suffix;\n $_6zk6867wjkmcwluj.setup(self$$1);\n },\n overrideDefaults: function (defaultSettings) {\n var baseUrl, suffix;\n baseUrl = defaultSettings.base_url;\n if (baseUrl) {\n this.baseURL = new URI(this.documentBaseURL).toAbsolute(baseUrl.replace(/\\/+$/, ''));\n this.baseURI = new URI(this.baseURL);\n }\n suffix = defaultSettings.suffix;\n if (defaultSettings.suffix) {\n this.suffix = suffix;\n }\n this.defaultSettings = defaultSettings;\n var pluginBaseUrls = defaultSettings.plugin_base_urls;\n for (var name$$1 in pluginBaseUrls) {\n AddOnManager.PluginManager.urls[name$$1] = pluginBaseUrls[name$$1];\n }\n },\n init: function (settings) {\n var self$$1 = this;\n var result, invalidInlineTargets;\n invalidInlineTargets = $_4ujg4tljkmcwkbk.makeMap('area base basefont br col frame hr img input isindex link meta param embed source wbr track ' + 'colgroup option tbody tfoot thead tr script noscript style textarea video audio iframe object menu', ' ');\n var isInvalidInlineTarget = function (settings, elm) {\n return settings.inline && elm.tagName.toLowerCase() in invalidInlineTargets;\n };\n var createId = function (elm) {\n var id = elm.id;\n if (!id) {\n id = elm.name;\n if (id && !DOM$9.get(id)) {\n id = elm.name;\n } else {\n id = DOM$9.uniqueId();\n }\n elm.setAttribute('id', id);\n }\n return id;\n };\n var execCallback = function (name$$1) {\n var callback = settings[name$$1];\n if (!callback) {\n return;\n }\n return callback.apply(self$$1, Array.prototype.slice.call(arguments, 2));\n };\n var hasClass = function (elm, className) {\n return className.constructor === RegExp ? className.test(elm.className) : DOM$9.hasClass(elm, className);\n };\n var findTargets = function (settings) {\n var l, targets = [];\n if ($_cvvl9iajkmcwk25.ie && $_cvvl9iajkmcwk25.ie < 11) {\n $_b9je0i54jkmcwlbe.initError('TinyMCE does not support the browser you are using. For a list of supported' + ' browsers please see: https://www.tinymce.com/docs/get-started/system-requirements/');\n return [];\n }\n if (settings.types) {\n each$22(settings.types, function (type) {\n targets = targets.concat(DOM$9.select(type.selector));\n });\n return targets;\n } else if (settings.selector) {\n return DOM$9.select(settings.selector);\n } else if (settings.target) {\n return [settings.target];\n }\n switch (settings.mode) {\n case 'exact':\n l = settings.elements || '';\n if (l.length > 0) {\n each$22(explode$4(l), function (id) {\n var elm;\n if (elm = DOM$9.get(id)) {\n targets.push(elm);\n } else {\n each$22(document.forms, function (f) {\n each$22(f.elements, function (e) {\n if (e.name === id) {\n id = 'mce_editor_' + instanceCounter++;\n DOM$9.setAttrib(e, 'id', id);\n targets.push(e);\n }\n });\n });\n }\n });\n }\n break;\n case 'textareas':\n case 'specific_textareas':\n each$22(DOM$9.select('textarea'), function (elm) {\n if (settings.editor_deselector && hasClass(elm, settings.editor_deselector)) {\n return;\n }\n if (!settings.editor_selector || hasClass(elm, settings.editor_selector)) {\n targets.push(elm);\n }\n });\n break;\n }\n return targets;\n };\n var provideResults = function (editors) {\n result = editors;\n };\n var initEditors = function () {\n var initCount = 0;\n var editors = [];\n var targets;\n var createEditor = function (id, settings, targetElm) {\n var editor = new Editor(id, settings, self$$1);\n editors.push(editor);\n editor.on('init', function () {\n if (++initCount === targets.length) {\n provideResults(editors);\n }\n });\n editor.targetElm = editor.targetElm || targetElm;\n editor.render();\n };\n DOM$9.unbind(window, 'ready', initEditors);\n execCallback('onpageload');\n targets = DomQuery.unique(findTargets(settings));\n if (settings.types) {\n each$22(settings.types, function (type) {\n $_4ujg4tljkmcwkbk.each(targets, function (elm) {\n if (DOM$9.is(elm, type.selector)) {\n createEditor(createId(elm), extend$5({}, settings, type), elm);\n return false;\n }\n return true;\n });\n });\n return;\n }\n $_4ujg4tljkmcwkbk.each(targets, function (elm) {\n purgeDestroyedEditor(self$$1.get(elm.id));\n });\n targets = $_4ujg4tljkmcwkbk.grep(targets, function (elm) {\n return !self$$1.get(elm.id);\n });\n if (targets.length === 0) {\n provideResults([]);\n } else {\n each$22(targets, function (elm) {\n if (isInvalidInlineTarget(settings, elm)) {\n $_b9je0i54jkmcwlbe.initError('Could not initialize inline editor on invalid inline target element', elm);\n } else {\n createEditor(createId(elm), settings, elm);\n }\n });\n }\n };\n self$$1.settings = settings;\n DOM$9.bind(window, 'ready', initEditors);\n return new promiseObj(function (resolve) {\n if (result) {\n resolve(result);\n } else {\n provideResults = function (editors) {\n resolve(editors);\n };\n }\n });\n },\n get: function (id) {\n if (arguments.length === 0) {\n return editors.slice(0);\n } else if (isString(id)) {\n return find(editors, function (editor) {\n return editor.id === id;\n }).getOr(null);\n } else if (isNumber(id)) {\n return editors[id] ? editors[id] : null;\n } else {\n return null;\n }\n },\n add: function (editor) {\n var self$$1 = this;\n var existingEditor;\n existingEditor = legacyEditors[editor.id];\n if (existingEditor === editor) {\n return editor;\n }\n if (self$$1.get(editor.id) === null) {\n if (isValidLegacyKey(editor.id)) {\n legacyEditors[editor.id] = editor;\n }\n legacyEditors.push(editor);\n editors.push(editor);\n }\n toggleGlobalEvents(true);\n self$$1.activeEditor = editor;\n self$$1.fire('AddEditor', { editor: editor });\n if (!beforeUnloadDelegate) {\n beforeUnloadDelegate = function () {\n self$$1.fire('BeforeUnload');\n };\n DOM$9.bind(window, 'beforeunload', beforeUnloadDelegate);\n }\n return editor;\n },\n createEditor: function (id, settings) {\n return this.add(new Editor(id, settings, this));\n },\n remove: function (selector) {\n var self$$1 = this;\n var i, editor;\n if (!selector) {\n for (i = editors.length - 1; i >= 0; i--) {\n self$$1.remove(editors[i]);\n }\n return;\n }\n if (isString(selector)) {\n each$22(DOM$9.select(selector), function (elm) {\n editor = self$$1.get(elm.id);\n if (editor) {\n self$$1.remove(editor);\n }\n });\n return;\n }\n editor = selector;\n if (isNull(self$$1.get(editor.id))) {\n return null;\n }\n if (removeEditorFromList(editor)) {\n self$$1.fire('RemoveEditor', { editor: editor });\n }\n if (editors.length === 0) {\n DOM$9.unbind(window, 'beforeunload', beforeUnloadDelegate);\n }\n editor.remove();\n toggleGlobalEvents(editors.length > 0);\n return editor;\n },\n execCommand: function (cmd, ui, value) {\n var self$$1 = this, editor = self$$1.get(value);\n switch (cmd) {\n case 'mceAddEditor':\n if (!self$$1.get(value)) {\n new Editor(value, self$$1.settings, self$$1).render();\n }\n return true;\n case 'mceRemoveEditor':\n if (editor) {\n editor.remove();\n }\n return true;\n case 'mceToggleEditor':\n if (!editor) {\n self$$1.execCommand('mceAddEditor', 0, value);\n return true;\n }\n if (editor.isHidden()) {\n editor.show();\n } else {\n editor.hide();\n }\n return true;\n }\n if (self$$1.activeEditor) {\n return self$$1.activeEditor.execCommand(cmd, ui, value);\n }\n return false;\n },\n triggerSave: function () {\n each$22(editors, function (editor) {\n editor.save();\n });\n },\n addI18n: function (code, items) {\n $_9pp0ut7zjkmcwlut.add(code, items);\n },\n translate: function (text) {\n return $_9pp0ut7zjkmcwlut.translate(text);\n },\n setActive: function (editor) {\n var activeEditor = this.activeEditor;\n if (this.activeEditor !== editor) {\n if (activeEditor) {\n activeEditor.fire('deactivate', { relatedTarget: editor });\n }\n editor.fire('activate', { relatedTarget: activeEditor });\n }\n this.activeEditor = editor;\n }\n };\n extend$5(EditorManager, $_ed2ug44qjkmcwl97);\n EditorManager.setup();\n var EditorManager$1 = EditorManager;\n\n function RangeUtils(dom) {\n var walk = function (rng, callback) {\n return $_cuckrv3bjkmcwktk.walk(dom, rng, callback);\n };\n var split = $_bnmynr69jkmcwlir.split;\n var normalize = function (rng) {\n return $_21c07i4jjkmcwl7w.normalize(dom, rng).fold(constant(false), function (normalizedRng) {\n rng.setStart(normalizedRng.startContainer, normalizedRng.startOffset);\n rng.setEnd(normalizedRng.endContainer, normalizedRng.endOffset);\n return true;\n });\n };\n return {\n walk: walk,\n split: split,\n normalize: normalize\n };\n }\n (function (RangeUtils) {\n RangeUtils.compareRanges = $_axtxv74kjkmcwl84.isEq;\n RangeUtils.getCaretRangeFromPoint = $_52q21w6wjkmcwlna.fromPoint;\n RangeUtils.getSelectedNode = getSelectedNode;\n RangeUtils.getNode = getNode;\n }(RangeUtils || (RangeUtils = {})));\n var RangeUtils$1 = RangeUtils;\n\n var min = Math.min;\n var max = Math.max;\n var round$2 = Math.round;\n var relativePosition = function (rect, targetRect, rel) {\n var x, y, w, h, targetW, targetH;\n x = targetRect.x;\n y = targetRect.y;\n w = rect.w;\n h = rect.h;\n targetW = targetRect.w;\n targetH = targetRect.h;\n rel = (rel || '').split('');\n if (rel[0] === 'b') {\n y += targetH;\n }\n if (rel[1] === 'r') {\n x += targetW;\n }\n if (rel[0] === 'c') {\n y += round$2(targetH / 2);\n }\n if (rel[1] === 'c') {\n x += round$2(targetW / 2);\n }\n if (rel[3] === 'b') {\n y -= h;\n }\n if (rel[4] === 'r') {\n x -= w;\n }\n if (rel[3] === 'c') {\n y -= round$2(h / 2);\n }\n if (rel[4] === 'c') {\n x -= round$2(w / 2);\n }\n return create$3(x, y, w, h);\n };\n var findBestRelativePosition = function (rect, targetRect, constrainRect, rels) {\n var pos, i;\n for (i = 0; i < rels.length; i++) {\n pos = relativePosition(rect, targetRect, rels[i]);\n if (pos.x >= constrainRect.x && pos.x + pos.w <= constrainRect.w + constrainRect.x && pos.y >= constrainRect.y && pos.y + pos.h <= constrainRect.h + constrainRect.y) {\n return rels[i];\n }\n }\n return null;\n };\n var inflate = function (rect, w, h) {\n return create$3(rect.x - w, rect.y - h, rect.w + w * 2, rect.h + h * 2);\n };\n var intersect = function (rect, cropRect) {\n var x1, y1, x2, y2;\n x1 = max(rect.x, cropRect.x);\n y1 = max(rect.y, cropRect.y);\n x2 = min(rect.x + rect.w, cropRect.x + cropRect.w);\n y2 = min(rect.y + rect.h, cropRect.y + cropRect.h);\n if (x2 - x1 < 0 || y2 - y1 < 0) {\n return null;\n }\n return create$3(x1, y1, x2 - x1, y2 - y1);\n };\n var clamp$1 = function (rect, clampRect, fixedSize) {\n var underflowX1, underflowY1, overflowX2, overflowY2, x1, y1, x2, y2, cx2, cy2;\n x1 = rect.x;\n y1 = rect.y;\n x2 = rect.x + rect.w;\n y2 = rect.y + rect.h;\n cx2 = clampRect.x + clampRect.w;\n cy2 = clampRect.y + clampRect.h;\n underflowX1 = max(0, clampRect.x - x1);\n underflowY1 = max(0, clampRect.y - y1);\n overflowX2 = max(0, x2 - cx2);\n overflowY2 = max(0, y2 - cy2);\n x1 += underflowX1;\n y1 += underflowY1;\n if (fixedSize) {\n x2 += underflowX1;\n y2 += underflowY1;\n x1 -= overflowX2;\n y1 -= overflowY2;\n }\n x2 -= overflowX2;\n y2 -= overflowY2;\n return create$3(x1, y1, x2 - x1, y2 - y1);\n };\n var create$3 = function (x, y, w, h) {\n return {\n x: x,\n y: y,\n w: w,\n h: h\n };\n };\n var fromClientRect = function (clientRect) {\n return create$3(clientRect.left, clientRect.top, clientRect.width, clientRect.height);\n };\n var $_es7eh281jkmcwlv1 = {\n inflate: inflate,\n relativePosition: relativePosition,\n findBestRelativePosition: findBestRelativePosition,\n intersect: intersect,\n clamp: clamp$1,\n create: create$3,\n fromClientRect: fromClientRect\n };\n\n var types = {};\n var $_e5pe6n82jkmcwlv8 = {\n add: function (type, typeClass) {\n types[type.toLowerCase()] = typeClass;\n },\n has: function (type) {\n return !!types[type.toLowerCase()];\n },\n get: function (type) {\n var lctype = type.toLowerCase();\n var controlType = types.hasOwnProperty(lctype) ? types[lctype] : null;\n if (controlType === null) {\n throw new Error('Could not find module for type: ' + type);\n }\n return controlType;\n },\n create: function (type, settings) {\n var ControlType;\n if (typeof type === 'string') {\n settings = settings || {};\n settings.type = type;\n } else {\n settings = type;\n type = settings.type;\n }\n type = type.toLowerCase();\n ControlType = types[type];\n if (!ControlType) {\n throw new Error('Could not find control by type: ' + type);\n }\n ControlType = new ControlType(settings);\n ControlType.type = type;\n return ControlType;\n }\n };\n\n var each$23 = $_4ujg4tljkmcwkbk.each;\n var extend$6 = $_4ujg4tljkmcwkbk.extend;\n var extendClass;\n var initializing;\n var Class$1 = function () {\n };\n Class$1.extend = extendClass = function (prop) {\n var self = this;\n var _super = self.prototype;\n var prototype, name, member;\n var Class = function () {\n var i, mixins, mixin;\n var self = this;\n if (!initializing) {\n if (self.init) {\n self.init.apply(self, arguments);\n }\n mixins = self.Mixins;\n if (mixins) {\n i = mixins.length;\n while (i--) {\n mixin = mixins[i];\n if (mixin.init) {\n mixin.init.apply(self, arguments);\n }\n }\n }\n }\n };\n var dummy = function () {\n return this;\n };\n var createMethod = function (name, fn) {\n return function () {\n var self = this;\n var tmp = self._super;\n var ret;\n self._super = _super[name];\n ret = fn.apply(self, arguments);\n self._super = tmp;\n return ret;\n };\n };\n initializing = true;\n prototype = new self();\n initializing = false;\n if (prop.Mixins) {\n each$23(prop.Mixins, function (mixin) {\n for (var name_1 in mixin) {\n if (name_1 !== 'init') {\n prop[name_1] = mixin[name_1];\n }\n }\n });\n if (_super.Mixins) {\n prop.Mixins = _super.Mixins.concat(prop.Mixins);\n }\n }\n if (prop.Methods) {\n each$23(prop.Methods.split(','), function (name) {\n prop[name] = dummy;\n });\n }\n if (prop.Properties) {\n each$23(prop.Properties.split(','), function (name) {\n var fieldName = '_' + name;\n prop[name] = function (value) {\n var self = this;\n if (value !== undefined) {\n self[fieldName] = value;\n return self;\n }\n return self[fieldName];\n };\n });\n }\n if (prop.Statics) {\n each$23(prop.Statics, function (func, name) {\n Class[name] = func;\n });\n }\n if (prop.Defaults && _super.Defaults) {\n prop.Defaults = extend$6({}, _super.Defaults, prop.Defaults);\n }\n for (name in prop) {\n member = prop[name];\n if (typeof member === 'function' && _super[name]) {\n prototype[name] = createMethod(name, member);\n } else {\n prototype[name] = member;\n }\n }\n Class.prototype = prototype;\n Class.constructor = Class;\n Class.extend = extendClass;\n return Class;\n };\n\n var min$1 = Math.min;\n var max$1 = Math.max;\n var round$3 = Math.round;\n var Color = function (value) {\n var self = {};\n var r = 0, g = 0, b = 0;\n var rgb2hsv = function (r, g, b) {\n var h, s, v, d, minRGB, maxRGB;\n h = 0;\n s = 0;\n v = 0;\n r = r / 255;\n g = g / 255;\n b = b / 255;\n minRGB = min$1(r, min$1(g, b));\n maxRGB = max$1(r, max$1(g, b));\n if (minRGB === maxRGB) {\n v = minRGB;\n return {\n h: 0,\n s: 0,\n v: v * 100\n };\n }\n d = r === minRGB ? g - b : b === minRGB ? r - g : b - r;\n h = r === minRGB ? 3 : b === minRGB ? 1 : 5;\n h = 60 * (h - d / (maxRGB - minRGB));\n s = (maxRGB - minRGB) / maxRGB;\n v = maxRGB;\n return {\n h: round$3(h),\n s: round$3(s * 100),\n v: round$3(v * 100)\n };\n };\n var hsvToRgb = function (hue, saturation, brightness) {\n var side, chroma, x, match;\n hue = (parseInt(hue, 10) || 0) % 360;\n saturation = parseInt(saturation, 10) / 100;\n brightness = parseInt(brightness, 10) / 100;\n saturation = max$1(0, min$1(saturation, 1));\n brightness = max$1(0, min$1(brightness, 1));\n if (saturation === 0) {\n r = g = b = round$3(255 * brightness);\n return;\n }\n side = hue / 60;\n chroma = brightness * saturation;\n x = chroma * (1 - Math.abs(side % 2 - 1));\n match = brightness - chroma;\n switch (Math.floor(side)) {\n case 0:\n r = chroma;\n g = x;\n b = 0;\n break;\n case 1:\n r = x;\n g = chroma;\n b = 0;\n break;\n case 2:\n r = 0;\n g = chroma;\n b = x;\n break;\n case 3:\n r = 0;\n g = x;\n b = chroma;\n break;\n case 4:\n r = x;\n g = 0;\n b = chroma;\n break;\n case 5:\n r = chroma;\n g = 0;\n b = x;\n break;\n default:\n r = g = b = 0;\n }\n r = round$3(255 * (r + match));\n g = round$3(255 * (g + match));\n b = round$3(255 * (b + match));\n };\n var toHex = function () {\n var hex = function (val) {\n val = parseInt(val, 10).toString(16);\n return val.length > 1 ? val : '0' + val;\n };\n return '#' + hex(r) + hex(g) + hex(b);\n };\n var toRgb = function () {\n return {\n r: r,\n g: g,\n b: b\n };\n };\n var toHsv = function () {\n return rgb2hsv(r, g, b);\n };\n var parse = function (value) {\n var matches;\n if (typeof value === 'object') {\n if ('r' in value) {\n r = value.r;\n g = value.g;\n b = value.b;\n } else if ('v' in value) {\n hsvToRgb(value.h, value.s, value.v);\n }\n } else {\n if (matches = /rgb\\s*\\(\\s*([0-9]+)\\s*,\\s*([0-9]+)\\s*,\\s*([0-9]+)[^\\)]*\\)/gi.exec(value)) {\n r = parseInt(matches[1], 10);\n g = parseInt(matches[2], 10);\n b = parseInt(matches[3], 10);\n } else if (matches = /#([0-F]{2})([0-F]{2})([0-F]{2})/gi.exec(value)) {\n r = parseInt(matches[1], 16);\n g = parseInt(matches[2], 16);\n b = parseInt(matches[3], 16);\n } else if (matches = /#([0-F])([0-F])([0-F])/gi.exec(value)) {\n r = parseInt(matches[1] + matches[1], 16);\n g = parseInt(matches[2] + matches[2], 16);\n b = parseInt(matches[3] + matches[3], 16);\n }\n }\n r = r < 0 ? 0 : r > 255 ? 255 : r;\n g = g < 0 ? 0 : g > 255 ? 255 : g;\n b = b < 0 ? 0 : b > 255 ? 255 : b;\n return self;\n };\n if (value) {\n parse(value);\n }\n self.toRgb = toRgb;\n self.toHsv = toHsv;\n self.toHex = toHex;\n self.parse = parse;\n return self;\n };\n\n var serialize = function (o, quote) {\n var i, v, t, name;\n quote = quote || '\"';\n if (o === null) {\n return 'null';\n }\n t = typeof o;\n if (t === 'string') {\n v = '\\bb\\tt\\nn\\ff\\rr\"\"\\'\\'\\\\\\\\';\n return quote + o.replace(/([\\u0080-\\uFFFF\\x00-\\x1f\\\"\\'\\\\])/g, function (a, b) {\n if (quote === '\"' && a === '\\'') {\n return a;\n }\n i = v.indexOf(b);\n if (i + 1) {\n return '\\\\' + v.charAt(i + 1);\n }\n a = b.charCodeAt().toString(16);\n return '\\\\u' + '0000'.substring(a.length) + a;\n }) + quote;\n }\n if (t === 'object') {\n if (o.hasOwnProperty && Object.prototype.toString.call(o) === '[object Array]') {\n for (i = 0, v = '['; i < o.length; i++) {\n v += (i > 0 ? ',' : '') + serialize(o[i], quote);\n }\n return v + ']';\n }\n v = '{';\n for (name in o) {\n if (o.hasOwnProperty(name)) {\n v += typeof o[name] !== 'function' ? (v.length > 1 ? ',' + quote : quote) + name + quote + ':' + serialize(o[name], quote) : '';\n }\n }\n return v + '}';\n }\n return '' + o;\n };\n var $_6nxmdo85jkmcwlvi = {\n serialize: serialize,\n parse: function (text) {\n try {\n return JSON.parse(text);\n } catch (ex) {\n }\n }\n };\n\n var $_cygb5686jkmcwlvk = {\n callbacks: {},\n count: 0,\n send: function (settings) {\n var self = this, dom = DOMUtils$1.DOM, count = settings.count !== undefined ? settings.count : self.count;\n var id = 'tinymce_jsonp_' + count;\n self.callbacks[count] = function (json) {\n dom.remove(id);\n delete self.callbacks[count];\n settings.callback(json);\n };\n dom.add(dom.doc.body, 'script', {\n id: id,\n src: settings.url,\n type: 'text/javascript'\n });\n self.count++;\n }\n };\n\n var XHR = {\n send: function (settings) {\n var xhr, count = 0;\n var ready = function () {\n if (!settings.async || xhr.readyState === 4 || count++ > 10000) {\n if (settings.success && count < 10000 && xhr.status === 200) {\n settings.success.call(settings.success_scope, '' + xhr.responseText, xhr, settings);\n } else if (settings.error) {\n settings.error.call(settings.error_scope, count > 10000 ? 'TIMED_OUT' : 'GENERAL', xhr, settings);\n }\n xhr = null;\n } else {\n setTimeout(ready, 10);\n }\n };\n settings.scope = settings.scope || this;\n settings.success_scope = settings.success_scope || settings.scope;\n settings.error_scope = settings.error_scope || settings.scope;\n settings.async = settings.async === false ? false : true;\n settings.data = settings.data || '';\n XHR.fire('beforeInitialize', { settings: settings });\n xhr = new XMLHttpRequest();\n if (xhr) {\n if (xhr.overrideMimeType) {\n xhr.overrideMimeType(settings.content_type);\n }\n xhr.open(settings.type || (settings.data ? 'POST' : 'GET'), settings.url, settings.async);\n if (settings.crossDomain) {\n xhr.withCredentials = true;\n }\n if (settings.content_type) {\n xhr.setRequestHeader('Content-Type', settings.content_type);\n }\n if (settings.requestheaders) {\n $_4ujg4tljkmcwkbk.each(settings.requestheaders, function (header) {\n xhr.setRequestHeader(header.key, header.value);\n });\n }\n xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');\n xhr = XHR.fire('beforeSend', {\n xhr: xhr,\n settings: settings\n }).xhr;\n xhr.send(settings.data);\n if (!settings.async) {\n return ready();\n }\n setTimeout(ready, 10);\n }\n }\n };\n $_4ujg4tljkmcwkbk.extend(XHR, $_ed2ug44qjkmcwl97);\n\n var extend$7 = $_4ujg4tljkmcwkbk.extend;\n var JSONRequest = function (settings) {\n this.settings = extend$7({}, settings);\n this.count = 0;\n };\n JSONRequest.sendRPC = function (o) {\n return new JSONRequest().send(o);\n };\n JSONRequest.prototype = {\n send: function (args) {\n var ecb = args.error, scb = args.success;\n args = extend$7(this.settings, args);\n args.success = function (c, x) {\n c = $_6nxmdo85jkmcwlvi.parse(c);\n if (typeof c === 'undefined') {\n c = { error: 'JSON Parse error.' };\n }\n if (c.error) {\n ecb.call(args.error_scope || args.scope, c.error, x);\n } else {\n scb.call(args.success_scope || args.scope, c.result);\n }\n };\n args.error = function (ty, x) {\n if (ecb) {\n ecb.call(args.error_scope || args.scope, ty, x);\n }\n };\n args.data = $_6nxmdo85jkmcwlvi.serialize({\n id: args.id || 'c' + this.count++,\n method: args.method,\n params: args.params\n });\n args.content_type = 'application/json';\n XHR.send(args);\n }\n };\n\n var create$4 = function () {\n return function () {\n var data = {};\n var keys = [];\n var storage = {\n getItem: function (key) {\n var item = data[key];\n return item ? item : null;\n },\n setItem: function (key, value) {\n keys.push(key);\n data[key] = String(value);\n },\n key: function (index) {\n return keys[index];\n },\n removeItem: function (key) {\n keys = keys.filter(function (k) {\n return k === key;\n });\n delete data[key];\n },\n clear: function () {\n keys = [];\n data = {};\n },\n length: 0\n };\n Object.defineProperty(storage, 'length', {\n get: function () {\n return keys.length;\n },\n configurable: false,\n enumerable: false\n });\n return storage;\n }();\n };\n\n var localStorage$$1;\n try {\n localStorage$$1 = window.localStorage;\n } catch (e) {\n localStorage$$1 = create$4();\n }\n var LocalStorage = localStorage$$1;\n\n var tinymce = EditorManager$1;\n var publicApi = {\n geom: { Rect: $_es7eh281jkmcwlv1 },\n util: {\n Promise: promiseObj,\n Delay: $_3l01gcijkmcwk99,\n Tools: $_4ujg4tljkmcwkbk,\n VK: $_6bj5795wjkmcwlg6,\n URI: URI,\n Class: Class$1,\n EventDispatcher: Dispatcher,\n Observable: $_ed2ug44qjkmcwl97,\n I18n: $_9pp0ut7zjkmcwlut,\n XHR: XHR,\n JSON: $_6nxmdo85jkmcwlvi,\n JSONRequest: JSONRequest,\n JSONP: $_cygb5686jkmcwlvk,\n LocalStorage: LocalStorage,\n Color: Color\n },\n dom: {\n EventUtils: EventUtils,\n Sizzle: Sizzle,\n DomQuery: DomQuery,\n TreeWalker: TreeWalker,\n DOMUtils: DOMUtils$1,\n ScriptLoader: ScriptLoader,\n RangeUtils: RangeUtils$1,\n Serializer: DomSerializer$1,\n ControlSelection: ControlSelection,\n BookmarkManager: BookmarkManager$1,\n Selection: Selection$1,\n Event: EventUtils.Event\n },\n html: {\n Styles: Styles,\n Entities: $_33qwr1sjkmcwkip,\n Node: Node$2,\n Schema: Schema,\n SaxParser: SaxParser$1,\n DomParser: DomParser,\n Writer: Writer,\n Serializer: HtmlSerializer\n },\n ui: { Factory: $_e5pe6n82jkmcwlv8 },\n Env: $_cvvl9iajkmcwk25,\n AddOnManager: AddOnManager,\n Annotator: Annotator,\n Formatter: Formatter,\n UndoManager: UndoManager,\n EditorCommands: EditorCommands,\n WindowManager: WindowManager,\n NotificationManager: NotificationManager,\n EditorObservable: EditorObservable$1,\n Shortcuts: Shortcuts,\n Editor: Editor,\n FocusManager: $_48zpgt7xjkmcwlum,\n EditorManager: EditorManager$1,\n DOM: DOMUtils$1.DOM,\n ScriptLoader: ScriptLoader.ScriptLoader,\n PluginManager: AddOnManager.PluginManager,\n ThemeManager: AddOnManager.ThemeManager,\n trim: $_4ujg4tljkmcwkbk.trim,\n isArray: $_4ujg4tljkmcwkbk.isArray,\n is: $_4ujg4tljkmcwkbk.is,\n toArray: $_4ujg4tljkmcwkbk.toArray,\n makeMap: $_4ujg4tljkmcwkbk.makeMap,\n each: $_4ujg4tljkmcwkbk.each,\n map: $_4ujg4tljkmcwkbk.map,\n grep: $_4ujg4tljkmcwkbk.grep,\n inArray: $_4ujg4tljkmcwkbk.inArray,\n extend: $_4ujg4tljkmcwkbk.extend,\n create: $_4ujg4tljkmcwkbk.create,\n walk: $_4ujg4tljkmcwkbk.walk,\n createNS: $_4ujg4tljkmcwkbk.createNS,\n resolve: $_4ujg4tljkmcwkbk.resolve,\n explode: $_4ujg4tljkmcwkbk.explode,\n _addCacheSuffix: $_4ujg4tljkmcwkbk._addCacheSuffix,\n isOpera: $_cvvl9iajkmcwk25.opera,\n isWebKit: $_cvvl9iajkmcwk25.webkit,\n isIE: $_cvvl9iajkmcwk25.ie,\n isGecko: $_cvvl9iajkmcwk25.gecko,\n isMac: $_cvvl9iajkmcwk25.mac\n };\n tinymce = $_4ujg4tljkmcwkbk.extend(tinymce, publicApi);\n var Tinymce = tinymce;\n\n var exportToModuleLoaders = function (tinymce) {\n if (typeof module === 'object') {\n try {\n module.exports = tinymce;\n } catch (_) {\n }\n }\n };\n var exportToWindowGlobal = function (tinymce) {\n window.tinymce = tinymce;\n window.tinyMCE = tinymce;\n };\n exportToWindowGlobal(Tinymce);\n exportToModuleLoaders(Tinymce);\n\n}());\n})();\n","(function () {\nvar code = (function () {\n 'use strict';\n\n var global = tinymce.util.Tools.resolve('tinymce.PluginManager');\n\n var global$1 = tinymce.util.Tools.resolve('tinymce.dom.DOMUtils');\n\n var getMinWidth = function (editor) {\n return editor.getParam('code_dialog_width', 600);\n };\n var getMinHeight = function (editor) {\n return editor.getParam('code_dialog_height', Math.min(global$1.DOM.getViewPort().h - 200, 500));\n };\n var $_2agnwba2jkmcwo8k = {\n getMinWidth: getMinWidth,\n getMinHeight: getMinHeight\n };\n\n var setContent = function (editor, html) {\n editor.focus();\n editor.undoManager.transact(function () {\n editor.setContent(html);\n });\n editor.selection.setCursorLocation();\n editor.nodeChanged();\n };\n var getContent = function (editor) {\n return editor.getContent({ source_view: true });\n };\n var $_gf01w3a4jkmcwo8n = {\n setContent: setContent,\n getContent: getContent\n };\n\n var open = function (editor) {\n var minWidth = $_2agnwba2jkmcwo8k.getMinWidth(editor);\n var minHeight = $_2agnwba2jkmcwo8k.getMinHeight(editor);\n var win = editor.windowManager.open({\n title: 'Source code',\n body: {\n type: 'textbox',\n name: 'code',\n multiline: true,\n minWidth: minWidth,\n minHeight: minHeight,\n spellcheck: false,\n style: 'direction: ltr; text-align: left'\n },\n onSubmit: function (e) {\n $_gf01w3a4jkmcwo8n.setContent(editor, e.data.code);\n }\n });\n win.find('#code').value($_gf01w3a4jkmcwo8n.getContent(editor));\n };\n var $_4xs1xna1jkmcwo8j = { open: open };\n\n var register = function (editor) {\n editor.addCommand('mceCodeEditor', function () {\n $_4xs1xna1jkmcwo8j.open(editor);\n });\n };\n var $_atmzsea0jkmcwo8i = { register: register };\n\n var register$1 = function (editor) {\n editor.addButton('code', {\n icon: 'code',\n tooltip: 'Source code',\n onclick: function () {\n $_4xs1xna1jkmcwo8j.open(editor);\n }\n });\n editor.addMenuItem('code', {\n icon: 'code',\n text: 'Source code',\n onclick: function () {\n $_4xs1xna1jkmcwo8j.open(editor);\n }\n });\n };\n var $_f9f308a5jkmcwo8o = { register: register$1 };\n\n global.add('code', function (editor) {\n $_atmzsea0jkmcwo8i.register(editor);\n $_f9f308a5jkmcwo8o.register(editor);\n return {};\n });\n function Plugin () {\n }\n\n return Plugin;\n\n}());\n})();\n","function _get(key) {\n return window.sessionStorage.getItem(key);\n}\n\nfunction _add(key, data) {\n window.sessionStorage.setItem(key, data);\n}\n\nfunction _update(key, data) {\n window.sessionStorage.setItem(key, data);\n}\n\nfunction _remove(key) {\n window.sessionStorage.removeItem(key);\n}\n\nfunction _reset() {\n window.sessionStorage.clear();\n}\n\nexport default {\n get: _get,\n add: _add,\n update: _update,\n remove: _remove,\n reset: _reset,\n}\n","import Vue from 'vue'\nimport Pikaday from 'pikaday'\nimport 'pikaday/scss/pikaday.scss'\n\nVue.directive('datepicker', {\n twoWay: true,\n bind: (el, binding, vnode) => {\n var picker = new Pikaday({\n field: el,\n format: 'DD/MM/YYYY',\n onSelect: () => {\n setVModelValue(picker.toString(), vnode)\n },\n i18n: {\n previousMonth: 'Mês Anterior',\n nextMonth: 'Mês Seguinte',\n months: ['Janeiro', 'Fevereiro', 'Março', 'Abril', 'Maio', 'Junho', 'Julho', 'Agosto', 'Setembro', 'Outubro', 'Novembro', 'Dezembro'],\n weekdays: ['Domingo', 'Segunda', 'Terça', 'Quarta', 'Quinta', 'Sexta', 'Sábado'],\n weekdaysShort: ['Dom', 'Seg', 'Ter', 'Qua', 'Qui', 'Sex', 'Sab']\n }\n });\n \n function findVModelName(vnode) {\n return vnode.data.directives.find(function (o) {\n return o.name === 'model';\n }).expression;\n }\n\n function setVModelValue(value, vnode) {\n var prop = findVModelName(vnode)\n eval('vnode.context.' + prop + ' = ' + '\"' + value + '\"')\n }\n },\n\n})","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./loading.vue?vue&type=style&index=0&id=6e980aa2&prod&lang=css\"","(function () {\nvar link = (function () {\n 'use strict';\n\n var global = tinymce.util.Tools.resolve('tinymce.PluginManager');\n\n var global$1 = tinymce.util.Tools.resolve('tinymce.util.VK');\n\n var assumeExternalTargets = function (editorSettings) {\n return typeof editorSettings.link_assume_external_targets === 'boolean' ? editorSettings.link_assume_external_targets : false;\n };\n var hasContextToolbar = function (editorSettings) {\n return typeof editorSettings.link_context_toolbar === 'boolean' ? editorSettings.link_context_toolbar : false;\n };\n var getLinkList = function (editorSettings) {\n return editorSettings.link_list;\n };\n var hasDefaultLinkTarget = function (editorSettings) {\n return typeof editorSettings.default_link_target === 'string';\n };\n var getDefaultLinkTarget = function (editorSettings) {\n return editorSettings.default_link_target;\n };\n var getTargetList = function (editorSettings) {\n return editorSettings.target_list;\n };\n var setTargetList = function (editor, list) {\n editor.settings.target_list = list;\n };\n var shouldShowTargetList = function (editorSettings) {\n return getTargetList(editorSettings) !== false;\n };\n var getRelList = function (editorSettings) {\n return editorSettings.rel_list;\n };\n var hasRelList = function (editorSettings) {\n return getRelList(editorSettings) !== undefined;\n };\n var getLinkClassList = function (editorSettings) {\n return editorSettings.link_class_list;\n };\n var hasLinkClassList = function (editorSettings) {\n return getLinkClassList(editorSettings) !== undefined;\n };\n var shouldShowLinkTitle = function (editorSettings) {\n return editorSettings.link_title !== false;\n };\n var allowUnsafeLinkTarget = function (editorSettings) {\n return typeof editorSettings.allow_unsafe_link_target === 'boolean' ? editorSettings.allow_unsafe_link_target : false;\n };\n var $_7h5h1kfvjkmcwp8j = {\n assumeExternalTargets: assumeExternalTargets,\n hasContextToolbar: hasContextToolbar,\n getLinkList: getLinkList,\n hasDefaultLinkTarget: hasDefaultLinkTarget,\n getDefaultLinkTarget: getDefaultLinkTarget,\n getTargetList: getTargetList,\n setTargetList: setTargetList,\n shouldShowTargetList: shouldShowTargetList,\n getRelList: getRelList,\n hasRelList: hasRelList,\n getLinkClassList: getLinkClassList,\n hasLinkClassList: hasLinkClassList,\n shouldShowLinkTitle: shouldShowLinkTitle,\n allowUnsafeLinkTarget: allowUnsafeLinkTarget\n };\n\n var global$2 = tinymce.util.Tools.resolve('tinymce.dom.DOMUtils');\n\n var global$3 = tinymce.util.Tools.resolve('tinymce.Env');\n\n var appendClickRemove = function (link, evt) {\n document.body.appendChild(link);\n link.dispatchEvent(evt);\n document.body.removeChild(link);\n };\n var open$$1 = function (url) {\n if (!global$3.ie || global$3.ie > 10) {\n var link = document.createElement('a');\n link.target = '_blank';\n link.href = url;\n link.rel = 'noreferrer noopener';\n var evt = document.createEvent('MouseEvents');\n evt.initMouseEvent('click', true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);\n appendClickRemove(link, evt);\n } else {\n var win = window.open('', '_blank');\n if (win) {\n win.opener = null;\n var doc = win.document;\n doc.open();\n doc.write('');\n doc.close();\n }\n }\n };\n var $_50rjczfwjkmcwp8l = { open: open$$1 };\n\n var global$4 = tinymce.util.Tools.resolve('tinymce.util.Tools');\n\n var toggleTargetRules = function (rel, isUnsafe) {\n var rules = ['noopener'];\n var newRel = rel ? rel.split(/\\s+/) : [];\n var toString = function (rel) {\n return global$4.trim(rel.sort().join(' '));\n };\n var addTargetRules = function (rel) {\n rel = removeTargetRules(rel);\n return rel.length ? rel.concat(rules) : rules;\n };\n var removeTargetRules = function (rel) {\n return rel.filter(function (val) {\n return global$4.inArray(rules, val) === -1;\n });\n };\n newRel = isUnsafe ? addTargetRules(newRel) : removeTargetRules(newRel);\n return newRel.length ? toString(newRel) : null;\n };\n var trimCaretContainers = function (text) {\n return text.replace(/\\uFEFF/g, '');\n };\n var getAnchorElement = function (editor, selectedElm) {\n selectedElm = selectedElm || editor.selection.getNode();\n if (isImageFigure(selectedElm)) {\n return editor.dom.select('a[href]', selectedElm)[0];\n } else {\n return editor.dom.getParent(selectedElm, 'a[href]');\n }\n };\n var getAnchorText = function (selection, anchorElm) {\n var text = anchorElm ? anchorElm.innerText || anchorElm.textContent : selection.getContent({ format: 'text' });\n return trimCaretContainers(text);\n };\n var isLink = function (elm) {\n return elm && elm.nodeName === 'A' && elm.href;\n };\n var hasLinks = function (elements) {\n return global$4.grep(elements, isLink).length > 0;\n };\n var isOnlyTextSelected = function (html) {\n if (/]+>[^<]+<\\/a>$/.test(html) || html.indexOf('href=') === -1)) {\n return false;\n }\n return true;\n };\n var isImageFigure = function (node) {\n return node && node.nodeName === 'FIGURE' && /\\bimage\\b/i.test(node.className);\n };\n var link = function (editor, attachState) {\n return function (data) {\n editor.undoManager.transact(function () {\n var selectedElm = editor.selection.getNode();\n var anchorElm = getAnchorElement(editor, selectedElm);\n var linkAttrs = {\n href: data.href,\n target: data.target ? data.target : null,\n rel: data.rel ? data.rel : null,\n class: data.class ? data.class : null,\n title: data.title ? data.title : null\n };\n if (!$_7h5h1kfvjkmcwp8j.hasRelList(editor.settings) && $_7h5h1kfvjkmcwp8j.allowUnsafeLinkTarget(editor.settings) === false) {\n linkAttrs.rel = toggleTargetRules(linkAttrs.rel, linkAttrs.target === '_blank');\n }\n if (data.href === attachState.href) {\n attachState.attach();\n attachState = {};\n }\n if (anchorElm) {\n editor.focus();\n if (data.hasOwnProperty('text')) {\n if ('innerText' in anchorElm) {\n anchorElm.innerText = data.text;\n } else {\n anchorElm.textContent = data.text;\n }\n }\n editor.dom.setAttribs(anchorElm, linkAttrs);\n editor.selection.select(anchorElm);\n editor.undoManager.add();\n } else {\n if (isImageFigure(selectedElm)) {\n linkImageFigure(editor, selectedElm, linkAttrs);\n } else if (data.hasOwnProperty('text')) {\n editor.insertContent(editor.dom.createHTML('a', linkAttrs, editor.dom.encode(data.text)));\n } else {\n editor.execCommand('mceInsertLink', false, linkAttrs);\n }\n }\n });\n };\n };\n var unlink = function (editor) {\n return function () {\n editor.undoManager.transact(function () {\n var node = editor.selection.getNode();\n if (isImageFigure(node)) {\n unlinkImageFigure(editor, node);\n } else {\n editor.execCommand('unlink');\n }\n });\n };\n };\n var unlinkImageFigure = function (editor, fig) {\n var a, img;\n img = editor.dom.select('img', fig)[0];\n if (img) {\n a = editor.dom.getParents(img, 'a[href]', fig)[0];\n if (a) {\n a.parentNode.insertBefore(img, a);\n editor.dom.remove(a);\n }\n }\n };\n var linkImageFigure = function (editor, fig, attrs) {\n var a, img;\n img = editor.dom.select('img', fig)[0];\n if (img) {\n a = editor.dom.create('a', attrs);\n img.parentNode.insertBefore(a, img);\n a.appendChild(img);\n }\n };\n var $_f96xu2g0jkmcwp91 = {\n link: link,\n unlink: unlink,\n isLink: isLink,\n hasLinks: hasLinks,\n isOnlyTextSelected: isOnlyTextSelected,\n getAnchorElement: getAnchorElement,\n getAnchorText: getAnchorText,\n toggleTargetRules: toggleTargetRules\n };\n\n var global$5 = tinymce.util.Tools.resolve('tinymce.util.Delay');\n\n var global$6 = tinymce.util.Tools.resolve('tinymce.util.XHR');\n\n var attachState = {};\n var createLinkList = function (editor, callback) {\n var linkList = $_7h5h1kfvjkmcwp8j.getLinkList(editor.settings);\n if (typeof linkList === 'string') {\n global$6.send({\n url: linkList,\n success: function (text) {\n callback(editor, JSON.parse(text));\n }\n });\n } else if (typeof linkList === 'function') {\n linkList(function (list) {\n callback(editor, list);\n });\n } else {\n callback(editor, linkList);\n }\n };\n var buildListItems = function (inputList, itemCallback, startItems) {\n var appendItems = function (values, output) {\n output = output || [];\n global$4.each(values, function (item) {\n var menuItem = { text: item.text || item.title };\n if (item.menu) {\n menuItem.menu = appendItems(item.menu);\n } else {\n menuItem.value = item.value;\n if (itemCallback) {\n itemCallback(menuItem);\n }\n }\n output.push(menuItem);\n });\n return output;\n };\n return appendItems(inputList, startItems || []);\n };\n var delayedConfirm = function (editor, message, callback) {\n var rng = editor.selection.getRng();\n global$5.setEditorTimeout(editor, function () {\n editor.windowManager.confirm(message, function (state) {\n editor.selection.setRng(rng);\n callback(state);\n });\n });\n };\n var showDialog = function (editor, linkList) {\n var data = {};\n var selection = editor.selection;\n var dom = editor.dom;\n var anchorElm, initialText;\n var win, onlyText, textListCtrl, linkListCtrl, relListCtrl, targetListCtrl, classListCtrl, linkTitleCtrl, value;\n var linkListChangeHandler = function (e) {\n var textCtrl = win.find('#text');\n if (!textCtrl.value() || e.lastControl && textCtrl.value() === e.lastControl.text()) {\n textCtrl.value(e.control.text());\n }\n win.find('#href').value(e.control.value());\n };\n var buildAnchorListControl = function (url) {\n var anchorList = [];\n global$4.each(editor.dom.select('a:not([href])'), function (anchor) {\n var id = anchor.name || anchor.id;\n if (id) {\n anchorList.push({\n text: id,\n value: '#' + id,\n selected: url.indexOf('#' + id) !== -1\n });\n }\n });\n if (anchorList.length) {\n anchorList.unshift({\n text: 'None',\n value: ''\n });\n return {\n name: 'anchor',\n type: 'listbox',\n label: 'Anchors',\n values: anchorList,\n onselect: linkListChangeHandler\n };\n }\n };\n var updateText = function () {\n if (!initialText && onlyText && !data.text) {\n this.parent().parent().find('#text')[0].value(this.value());\n }\n };\n var urlChange = function (e) {\n var meta = e.meta || {};\n if (linkListCtrl) {\n linkListCtrl.value(editor.convertURL(this.value(), 'href'));\n }\n global$4.each(e.meta, function (value, key) {\n var inp = win.find('#' + key);\n if (key === 'text') {\n if (initialText.length === 0) {\n inp.value(value);\n data.text = value;\n }\n } else {\n inp.value(value);\n }\n });\n if (meta.attach) {\n attachState = {\n href: this.value(),\n attach: meta.attach\n };\n }\n if (!meta.text) {\n updateText.call(this);\n }\n };\n var onBeforeCall = function (e) {\n e.meta = win.toJSON();\n };\n onlyText = $_f96xu2g0jkmcwp91.isOnlyTextSelected(selection.getContent());\n anchorElm = $_f96xu2g0jkmcwp91.getAnchorElement(editor);\n data.text = initialText = $_f96xu2g0jkmcwp91.getAnchorText(editor.selection, anchorElm);\n data.href = anchorElm ? dom.getAttrib(anchorElm, 'href') : '';\n if (anchorElm) {\n data.target = dom.getAttrib(anchorElm, 'target');\n } else if ($_7h5h1kfvjkmcwp8j.hasDefaultLinkTarget(editor.settings)) {\n data.target = $_7h5h1kfvjkmcwp8j.getDefaultLinkTarget(editor.settings);\n }\n if (value = dom.getAttrib(anchorElm, 'rel')) {\n data.rel = value;\n }\n if (value = dom.getAttrib(anchorElm, 'class')) {\n data.class = value;\n }\n if (value = dom.getAttrib(anchorElm, 'title')) {\n data.title = value;\n }\n if (onlyText) {\n textListCtrl = {\n name: 'text',\n type: 'textbox',\n size: 40,\n label: 'Text to display',\n onchange: function () {\n data.text = this.value();\n }\n };\n }\n if (linkList) {\n linkListCtrl = {\n type: 'listbox',\n label: 'Link list',\n values: buildListItems(linkList, function (item) {\n item.value = editor.convertURL(item.value || item.url, 'href');\n }, [{\n text: 'None',\n value: ''\n }]),\n onselect: linkListChangeHandler,\n value: editor.convertURL(data.href, 'href'),\n onPostRender: function () {\n linkListCtrl = this;\n }\n };\n }\n if ($_7h5h1kfvjkmcwp8j.shouldShowTargetList(editor.settings)) {\n if ($_7h5h1kfvjkmcwp8j.getTargetList(editor.settings) === undefined) {\n $_7h5h1kfvjkmcwp8j.setTargetList(editor, [\n {\n text: 'None',\n value: ''\n },\n {\n text: 'New window',\n value: '_blank'\n }\n ]);\n }\n targetListCtrl = {\n name: 'target',\n type: 'listbox',\n label: 'Target',\n values: buildListItems($_7h5h1kfvjkmcwp8j.getTargetList(editor.settings))\n };\n }\n if ($_7h5h1kfvjkmcwp8j.hasRelList(editor.settings)) {\n relListCtrl = {\n name: 'rel',\n type: 'listbox',\n label: 'Rel',\n values: buildListItems($_7h5h1kfvjkmcwp8j.getRelList(editor.settings), function (item) {\n if ($_7h5h1kfvjkmcwp8j.allowUnsafeLinkTarget(editor.settings) === false) {\n item.value = $_f96xu2g0jkmcwp91.toggleTargetRules(item.value, data.target === '_blank');\n }\n })\n };\n }\n if ($_7h5h1kfvjkmcwp8j.hasLinkClassList(editor.settings)) {\n classListCtrl = {\n name: 'class',\n type: 'listbox',\n label: 'Class',\n values: buildListItems($_7h5h1kfvjkmcwp8j.getLinkClassList(editor.settings), function (item) {\n if (item.value) {\n item.textStyle = function () {\n return editor.formatter.getCssText({\n inline: 'a',\n classes: [item.value]\n });\n };\n }\n })\n };\n }\n if ($_7h5h1kfvjkmcwp8j.shouldShowLinkTitle(editor.settings)) {\n linkTitleCtrl = {\n name: 'title',\n type: 'textbox',\n label: 'Title',\n value: data.title\n };\n }\n win = editor.windowManager.open({\n title: 'Insert link',\n data: data,\n body: [\n {\n name: 'href',\n type: 'filepicker',\n filetype: 'file',\n size: 40,\n autofocus: true,\n label: 'Url',\n onchange: urlChange,\n onkeyup: updateText,\n onpaste: updateText,\n onbeforecall: onBeforeCall\n },\n textListCtrl,\n linkTitleCtrl,\n buildAnchorListControl(data.href),\n linkListCtrl,\n relListCtrl,\n targetListCtrl,\n classListCtrl\n ],\n onSubmit: function (e) {\n var assumeExternalTargets = $_7h5h1kfvjkmcwp8j.assumeExternalTargets(editor.settings);\n var insertLink = $_f96xu2g0jkmcwp91.link(editor, attachState);\n var removeLink = $_f96xu2g0jkmcwp91.unlink(editor);\n var resultData = global$4.extend({}, data, e.data);\n var href = resultData.href;\n if (!href) {\n removeLink();\n return;\n }\n if (!onlyText || resultData.text === initialText) {\n delete resultData.text;\n }\n if (href.indexOf('@') > 0 && href.indexOf('//') === -1 && href.indexOf('mailto:') === -1) {\n delayedConfirm(editor, 'The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?', function (state) {\n if (state) {\n resultData.href = 'mailto:' + href;\n }\n insertLink(resultData);\n });\n return;\n }\n if (assumeExternalTargets === true && !/^\\w+:/i.test(href) || assumeExternalTargets === false && /^\\s*www[\\.|\\d\\.]/i.test(href)) {\n delayedConfirm(editor, 'The URL you entered seems to be an external link. Do you want to add the required http:// prefix?', function (state) {\n if (state) {\n resultData.href = 'http://' + href;\n }\n insertLink(resultData);\n });\n return;\n }\n insertLink(resultData);\n }\n });\n };\n var open$1 = function (editor) {\n createLinkList(editor, showDialog);\n };\n var $_1hdbnpg2jkmcwp96 = { open: open$1 };\n\n var getLink = function (editor, elm) {\n return editor.dom.getParent(elm, 'a[href]');\n };\n var getSelectedLink = function (editor) {\n return getLink(editor, editor.selection.getStart());\n };\n var getHref = function (elm) {\n var href = elm.getAttribute('data-mce-href');\n return href ? href : elm.getAttribute('href');\n };\n var isContextMenuVisible = function (editor) {\n var contextmenu = editor.plugins.contextmenu;\n return contextmenu ? contextmenu.isContextMenuVisible() : false;\n };\n var hasOnlyAltModifier = function (e) {\n return e.altKey === true && e.shiftKey === false && e.ctrlKey === false && e.metaKey === false;\n };\n var gotoLink = function (editor, a) {\n if (a) {\n var href = getHref(a);\n if (/^#/.test(href)) {\n var targetEl = editor.$(href);\n if (targetEl.length) {\n editor.selection.scrollIntoView(targetEl[0], true);\n }\n } else {\n $_50rjczfwjkmcwp8l.open(a.href);\n }\n }\n };\n var openDialog = function (editor) {\n return function () {\n $_1hdbnpg2jkmcwp96.open(editor);\n };\n };\n var gotoSelectedLink = function (editor) {\n return function () {\n gotoLink(editor, getSelectedLink(editor));\n };\n };\n var leftClickedOnAHref = function (editor) {\n return function (elm) {\n var sel, rng, node;\n if ($_7h5h1kfvjkmcwp8j.hasContextToolbar(editor.settings) && !isContextMenuVisible(editor) && $_f96xu2g0jkmcwp91.isLink(elm)) {\n sel = editor.selection;\n rng = sel.getRng();\n node = rng.startContainer;\n if (node.nodeType === 3 && sel.isCollapsed() && rng.startOffset > 0 && rng.startOffset < node.data.length) {\n return true;\n }\n }\n return false;\n };\n };\n var setupGotoLinks = function (editor) {\n editor.on('click', function (e) {\n var link = getLink(editor, e.target);\n if (link && global$1.metaKeyPressed(e)) {\n e.preventDefault();\n gotoLink(editor, link);\n }\n });\n editor.on('keydown', function (e) {\n var link = getSelectedLink(editor);\n if (link && e.keyCode === 13 && hasOnlyAltModifier(e)) {\n e.preventDefault();\n gotoLink(editor, link);\n }\n });\n };\n var toggleActiveState = function (editor) {\n return function () {\n var self = this;\n editor.on('nodechange', function (e) {\n self.active(!editor.readonly && !!$_f96xu2g0jkmcwp91.getAnchorElement(editor, e.element));\n });\n };\n };\n var toggleViewLinkState = function (editor) {\n return function () {\n var self = this;\n var toggleVisibility = function (e) {\n if ($_f96xu2g0jkmcwp91.hasLinks(e.parents)) {\n self.show();\n } else {\n self.hide();\n }\n };\n if (!$_f96xu2g0jkmcwp91.hasLinks(editor.dom.getParents(editor.selection.getStart()))) {\n self.hide();\n }\n editor.on('nodechange', toggleVisibility);\n self.on('remove', function () {\n editor.off('nodechange', toggleVisibility);\n });\n };\n };\n var $_dlew49ftjkmcwp8f = {\n openDialog: openDialog,\n gotoSelectedLink: gotoSelectedLink,\n leftClickedOnAHref: leftClickedOnAHref,\n setupGotoLinks: setupGotoLinks,\n toggleActiveState: toggleActiveState,\n toggleViewLinkState: toggleViewLinkState\n };\n\n var register = function (editor) {\n editor.addCommand('mceLink', $_dlew49ftjkmcwp8f.openDialog(editor));\n };\n var $_3nvo42fsjkmcwp8b = { register: register };\n\n var setup = function (editor) {\n editor.addShortcut('Meta+K', '', $_dlew49ftjkmcwp8f.openDialog(editor));\n };\n var $_aoohpyg5jkmcwp9f = { setup: setup };\n\n var setupButtons = function (editor) {\n editor.addButton('link', {\n active: false,\n icon: 'link',\n tooltip: 'Insert/edit link',\n onclick: $_dlew49ftjkmcwp8f.openDialog(editor),\n onpostrender: $_dlew49ftjkmcwp8f.toggleActiveState(editor)\n });\n editor.addButton('unlink', {\n active: false,\n icon: 'unlink',\n tooltip: 'Remove link',\n onclick: $_f96xu2g0jkmcwp91.unlink(editor),\n onpostrender: $_dlew49ftjkmcwp8f.toggleActiveState(editor)\n });\n if (editor.addContextToolbar) {\n editor.addButton('openlink', {\n icon: 'newtab',\n tooltip: 'Open link',\n onclick: $_dlew49ftjkmcwp8f.gotoSelectedLink(editor)\n });\n }\n };\n var setupMenuItems = function (editor) {\n editor.addMenuItem('openlink', {\n text: 'Open link',\n icon: 'newtab',\n onclick: $_dlew49ftjkmcwp8f.gotoSelectedLink(editor),\n onPostRender: $_dlew49ftjkmcwp8f.toggleViewLinkState(editor),\n prependToContext: true\n });\n editor.addMenuItem('link', {\n icon: 'link',\n text: 'Link',\n shortcut: 'Meta+K',\n onclick: $_dlew49ftjkmcwp8f.openDialog(editor),\n stateSelector: 'a[href]',\n context: 'insert',\n prependToContext: true\n });\n editor.addMenuItem('unlink', {\n icon: 'unlink',\n text: 'Remove link',\n onclick: $_f96xu2g0jkmcwp91.unlink(editor),\n stateSelector: 'a[href]'\n });\n };\n var setupContextToolbars = function (editor) {\n if (editor.addContextToolbar) {\n editor.addContextToolbar($_dlew49ftjkmcwp8f.leftClickedOnAHref(editor), 'openlink | link unlink');\n }\n };\n var $_3wxsofg6jkmcwp9g = {\n setupButtons: setupButtons,\n setupMenuItems: setupMenuItems,\n setupContextToolbars: setupContextToolbars\n };\n\n global.add('link', function (editor) {\n $_3wxsofg6jkmcwp9g.setupButtons(editor);\n $_3wxsofg6jkmcwp9g.setupMenuItems(editor);\n $_3wxsofg6jkmcwp9g.setupContextToolbars(editor);\n $_dlew49ftjkmcwp8f.setupGotoLinks(editor);\n $_3nvo42fsjkmcwp8b.register(editor);\n $_aoohpyg5jkmcwp9f.setup(editor);\n });\n function Plugin () {\n }\n\n return Plugin;\n\n}());\n})();\n","(function () {\nvar paste = (function () {\n 'use strict';\n\n var Cell = function (initial) {\n var value = initial;\n var get = function () {\n return value;\n };\n var set = function (v) {\n value = v;\n };\n var clone = function () {\n return Cell(get());\n };\n return {\n get: get,\n set: set,\n clone: clone\n };\n };\n\n var global = tinymce.util.Tools.resolve('tinymce.PluginManager');\n\n var hasProPlugin = function (editor) {\n if (/(^|[ ,])powerpaste([, ]|$)/.test(editor.settings.plugins) && global.get('powerpaste')) {\n if (typeof window.console !== 'undefined' && window.console.log) {\n window.console.log('PowerPaste is incompatible with Paste plugin! Remove \\'paste\\' from the \\'plugins\\' option.');\n }\n return true;\n } else {\n return false;\n }\n };\n var $_ee0gktiejkmcwpkb = { hasProPlugin: hasProPlugin };\n\n var get = function (clipboard, quirks) {\n return {\n clipboard: clipboard,\n quirks: quirks\n };\n };\n var $_6khw6eigjkmcwpkp = { get: get };\n\n var firePastePreProcess = function (editor, html, internal, isWordHtml) {\n return editor.fire('PastePreProcess', {\n content: html,\n internal: internal,\n wordContent: isWordHtml\n });\n };\n var firePastePostProcess = function (editor, node, internal, isWordHtml) {\n return editor.fire('PastePostProcess', {\n node: node,\n internal: internal,\n wordContent: isWordHtml\n });\n };\n var firePastePlainTextToggle = function (editor, state) {\n return editor.fire('PastePlainTextToggle', { state: state });\n };\n var firePaste = function (editor, ieFake) {\n return editor.fire('paste', { ieFake: ieFake });\n };\n var $_d8ovv8ijjkmcwpku = {\n firePastePreProcess: firePastePreProcess,\n firePastePostProcess: firePastePostProcess,\n firePastePlainTextToggle: firePastePlainTextToggle,\n firePaste: firePaste\n };\n\n var shouldPlainTextInform = function (editor) {\n return editor.getParam('paste_plaintext_inform', true);\n };\n var shouldBlockDrop = function (editor) {\n return editor.getParam('paste_block_drop', false);\n };\n var shouldPasteDataImages = function (editor) {\n return editor.getParam('paste_data_images', false);\n };\n var shouldFilterDrop = function (editor) {\n return editor.getParam('paste_filter_drop', true);\n };\n var getPreProcess = function (editor) {\n return editor.getParam('paste_preprocess');\n };\n var getPostProcess = function (editor) {\n return editor.getParam('paste_postprocess');\n };\n var getWebkitStyles = function (editor) {\n return editor.getParam('paste_webkit_styles');\n };\n var shouldRemoveWebKitStyles = function (editor) {\n return editor.getParam('paste_remove_styles_if_webkit', true);\n };\n var shouldMergeFormats = function (editor) {\n return editor.getParam('paste_merge_formats', true);\n };\n var isSmartPasteEnabled = function (editor) {\n return editor.getParam('smart_paste', true);\n };\n var isPasteAsTextEnabled = function (editor) {\n return editor.getParam('paste_as_text', false);\n };\n var getRetainStyleProps = function (editor) {\n return editor.getParam('paste_retain_style_properties');\n };\n var getWordValidElements = function (editor) {\n var defaultValidElements = '-strong/b,-em/i,-u,-span,-p,-ol,-ul,-li,-h1,-h2,-h3,-h4,-h5,-h6,' + '-p/div,-a[href|name],sub,sup,strike,br,del,table[width],tr,' + 'td[colspan|rowspan|width],th[colspan|rowspan|width],thead,tfoot,tbody';\n return editor.getParam('paste_word_valid_elements', defaultValidElements);\n };\n var shouldConvertWordFakeLists = function (editor) {\n return editor.getParam('paste_convert_word_fake_lists', true);\n };\n var shouldUseDefaultFilters = function (editor) {\n return editor.getParam('paste_enable_default_filters', true);\n };\n var $_5peev0ikjkmcwpkv = {\n shouldPlainTextInform: shouldPlainTextInform,\n shouldBlockDrop: shouldBlockDrop,\n shouldPasteDataImages: shouldPasteDataImages,\n shouldFilterDrop: shouldFilterDrop,\n getPreProcess: getPreProcess,\n getPostProcess: getPostProcess,\n getWebkitStyles: getWebkitStyles,\n shouldRemoveWebKitStyles: shouldRemoveWebKitStyles,\n shouldMergeFormats: shouldMergeFormats,\n isSmartPasteEnabled: isSmartPasteEnabled,\n isPasteAsTextEnabled: isPasteAsTextEnabled,\n getRetainStyleProps: getRetainStyleProps,\n getWordValidElements: getWordValidElements,\n shouldConvertWordFakeLists: shouldConvertWordFakeLists,\n shouldUseDefaultFilters: shouldUseDefaultFilters\n };\n\n var shouldInformUserAboutPlainText = function (editor, userIsInformedState) {\n return userIsInformedState.get() === false && $_5peev0ikjkmcwpkv.shouldPlainTextInform(editor);\n };\n var displayNotification = function (editor, message) {\n editor.notificationManager.open({\n text: editor.translate(message),\n type: 'info'\n });\n };\n var togglePlainTextPaste = function (editor, clipboard, userIsInformedState) {\n if (clipboard.pasteFormat.get() === 'text') {\n clipboard.pasteFormat.set('html');\n $_d8ovv8ijjkmcwpku.firePastePlainTextToggle(editor, false);\n } else {\n clipboard.pasteFormat.set('text');\n $_d8ovv8ijjkmcwpku.firePastePlainTextToggle(editor, true);\n if (shouldInformUserAboutPlainText(editor, userIsInformedState)) {\n displayNotification(editor, 'Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.');\n userIsInformedState.set(true);\n }\n }\n editor.focus();\n };\n var $_7rw4pkiijkmcwpks = { togglePlainTextPaste: togglePlainTextPaste };\n\n var register = function (editor, clipboard, userIsInformedState) {\n editor.addCommand('mceTogglePlainTextPaste', function () {\n $_7rw4pkiijkmcwpks.togglePlainTextPaste(editor, clipboard, userIsInformedState);\n });\n editor.addCommand('mceInsertClipboardContent', function (ui, value) {\n if (value.content) {\n clipboard.pasteHtml(value.content, value.internal);\n }\n if (value.text) {\n clipboard.pasteText(value.text);\n }\n });\n };\n var $_gh26txihjkmcwpkr = { register: register };\n\n var global$1 = tinymce.util.Tools.resolve('tinymce.Env');\n\n var global$2 = tinymce.util.Tools.resolve('tinymce.util.Delay');\n\n var global$3 = tinymce.util.Tools.resolve('tinymce.util.Tools');\n\n var global$4 = tinymce.util.Tools.resolve('tinymce.util.VK');\n\n var internalMimeType = 'x-tinymce/html';\n var internalMark = '';\n var mark = function (html) {\n return internalMark + html;\n };\n var unmark = function (html) {\n return html.replace(internalMark, '');\n };\n var isMarked = function (html) {\n return html.indexOf(internalMark) !== -1;\n };\n var $_93gcj3irjkmcwpld = {\n mark: mark,\n unmark: unmark,\n isMarked: isMarked,\n internalHtmlMime: function () {\n return internalMimeType;\n }\n };\n\n var global$5 = tinymce.util.Tools.resolve('tinymce.html.Entities');\n\n var isPlainText = function (text) {\n return !/<(?:\\/?(?!(?:div|p|br|span)>)\\w+|(?:(?!(?:span style=\"white-space:\\s?pre;?\">)|br\\s?\\/>))\\w+\\s[^>]+)>/i.test(text);\n };\n var toBRs = function (text) {\n return text.replace(/\\r?\\n/g, '
    ');\n };\n var openContainer = function (rootTag, rootAttrs) {\n var key;\n var attrs = [];\n var tag = '<' + rootTag;\n if (typeof rootAttrs === 'object') {\n for (key in rootAttrs) {\n if (rootAttrs.hasOwnProperty(key)) {\n attrs.push(key + '=\"' + global$5.encodeAllRaw(rootAttrs[key]) + '\"');\n }\n }\n if (attrs.length) {\n tag += ' ' + attrs.join(' ');\n }\n }\n return tag + '>';\n };\n var toBlockElements = function (text, rootTag, rootAttrs) {\n var blocks = text.split(/\\n\\n/);\n var tagOpen = openContainer(rootTag, rootAttrs);\n var tagClose = '';\n var paragraphs = global$3.map(blocks, function (p) {\n return p.split(/\\n/).join('
    ');\n });\n var stitch = function (p) {\n return tagOpen + p + tagClose;\n };\n return paragraphs.length === 1 ? paragraphs[0] : global$3.map(paragraphs, stitch).join('');\n };\n var convert = function (text, rootTag, rootAttrs) {\n return rootTag ? toBlockElements(text, rootTag, rootAttrs) : toBRs(text);\n };\n var $_3nag2qisjkmcwple = {\n isPlainText: isPlainText,\n convert: convert,\n toBRs: toBRs,\n toBlockElements: toBlockElements\n };\n\n var global$6 = tinymce.util.Tools.resolve('tinymce.html.DomParser');\n\n var global$7 = tinymce.util.Tools.resolve('tinymce.html.Node');\n\n var global$8 = tinymce.util.Tools.resolve('tinymce.html.Schema');\n\n var global$9 = tinymce.util.Tools.resolve('tinymce.html.Serializer');\n\n function filter(content, items) {\n global$3.each(items, function (v) {\n if (v.constructor === RegExp) {\n content = content.replace(v, '');\n } else {\n content = content.replace(v[0], v[1]);\n }\n });\n return content;\n }\n function innerText(html) {\n var schema = global$8();\n var domParser = global$6({}, schema);\n var text = '';\n var shortEndedElements = schema.getShortEndedElements();\n var ignoreElements = global$3.makeMap('script noscript style textarea video audio iframe object', ' ');\n var blockElements = schema.getBlockElements();\n function walk(node) {\n var name$$1 = node.name, currentNode = node;\n if (name$$1 === 'br') {\n text += '\\n';\n return;\n }\n if (shortEndedElements[name$$1]) {\n text += ' ';\n }\n if (ignoreElements[name$$1]) {\n text += ' ';\n return;\n }\n if (node.type === 3) {\n text += node.value;\n }\n if (!node.shortEnded) {\n if (node = node.firstChild) {\n do {\n walk(node);\n } while (node = node.next);\n }\n }\n if (blockElements[name$$1] && currentNode.next) {\n text += '\\n';\n if (name$$1 === 'p') {\n text += '\\n';\n }\n }\n }\n html = filter(html, [//g]);\n walk(domParser.parse(html));\n return text;\n }\n function trimHtml(html) {\n function trimSpaces(all, s1, s2) {\n if (!s1 && !s2) {\n return ' ';\n }\n return '\\xA0';\n }\n html = filter(html, [\n /^[\\s\\S]*]*>\\s*|\\s*<\\/body[^>]*>[\\s\\S]*$/ig,\n /|/g,\n [\n /( ?)\\u00a0<\\/span>( ?)/g,\n trimSpaces\n ],\n /
    /g,\n /
    $/i\n ]);\n return html;\n }\n function createIdGenerator(prefix) {\n var count = 0;\n return function () {\n return prefix + count++;\n };\n }\n var isMsEdge = function () {\n return navigator.userAgent.indexOf(' Edge/') !== -1;\n };\n var $_2u5gcyj0jkmcwplv = {\n filter: filter,\n innerText: innerText,\n trimHtml: trimHtml,\n createIdGenerator: createIdGenerator,\n isMsEdge: isMsEdge\n };\n\n function isWordContent(content) {\n return / 1) {\n currentListNode.attr('start', '' + start);\n }\n paragraphNode.wrap(currentListNode);\n } else {\n currentListNode.append(paragraphNode);\n }\n paragraphNode.name = 'li';\n if (level > lastLevel && prevListNode) {\n prevListNode.lastChild.append(currentListNode);\n }\n lastLevel = level;\n removeIgnoredNodes(paragraphNode);\n trimListStart(paragraphNode, /^\\u00a0+/);\n trimListStart(paragraphNode, /^\\s*([\\u2022\\u00b7\\u00a7\\u25CF]|\\w+\\.)/);\n trimListStart(paragraphNode, /^\\u00a0+/);\n }\n var elements = [];\n var child = node.firstChild;\n while (typeof child !== 'undefined' && child !== null) {\n elements.push(child);\n child = child.walk();\n if (child !== null) {\n while (typeof child !== 'undefined' && child.parent !== node) {\n child = child.walk();\n }\n }\n }\n for (var i = 0; i < elements.length; i++) {\n node = elements[i];\n if (node.name === 'p' && node.firstChild) {\n var nodeText = getText(node);\n if (isBulletList(nodeText)) {\n convertParagraphToLi(node, 'ul');\n continue;\n }\n if (isNumericList(nodeText)) {\n var matches = /([0-9]+)\\./.exec(nodeText);\n var start = 1;\n if (matches) {\n start = parseInt(matches[1], 10);\n }\n convertParagraphToLi(node, 'ol', start);\n continue;\n }\n if (node._listLevel) {\n convertParagraphToLi(node, 'ul', 1);\n continue;\n }\n currentListNode = null;\n } else {\n prevListNode = currentListNode;\n currentListNode = null;\n }\n }\n }\n function filterStyles(editor, validStyles, node, styleValue) {\n var outputStyles = {}, matches;\n var styles = editor.dom.parseStyle(styleValue);\n global$3.each(styles, function (value, name) {\n switch (name) {\n case 'mso-list':\n matches = /\\w+ \\w+([0-9]+)/i.exec(styleValue);\n if (matches) {\n node._listLevel = parseInt(matches[1], 10);\n }\n if (/Ignore/i.test(value) && node.firstChild) {\n node._listIgnore = true;\n node.firstChild._listIgnore = true;\n }\n break;\n case 'horiz-align':\n name = 'text-align';\n break;\n case 'vert-align':\n name = 'vertical-align';\n break;\n case 'font-color':\n case 'mso-foreground':\n name = 'color';\n break;\n case 'mso-background':\n case 'mso-highlight':\n name = 'background';\n break;\n case 'font-weight':\n case 'font-style':\n if (value !== 'normal') {\n outputStyles[name] = value;\n }\n return;\n case 'mso-element':\n if (/^(comment|comment-list)$/i.test(value)) {\n node.remove();\n return;\n }\n break;\n }\n if (name.indexOf('mso-comment') === 0) {\n node.remove();\n return;\n }\n if (name.indexOf('mso-') === 0) {\n return;\n }\n if ($_5peev0ikjkmcwpkv.getRetainStyleProps(editor) === 'all' || validStyles && validStyles[name]) {\n outputStyles[name] = value;\n }\n });\n if (/(bold)/i.test(outputStyles['font-weight'])) {\n delete outputStyles['font-weight'];\n node.wrap(new global$7('b', 1));\n }\n if (/(italic)/i.test(outputStyles['font-style'])) {\n delete outputStyles['font-style'];\n node.wrap(new global$7('i', 1));\n }\n outputStyles = editor.dom.serializeStyle(outputStyles, node.name);\n if (outputStyles) {\n return outputStyles;\n }\n return null;\n }\n var filterWordContent = function (editor, content) {\n var retainStyleProperties, validStyles;\n retainStyleProperties = $_5peev0ikjkmcwpkv.getRetainStyleProps(editor);\n if (retainStyleProperties) {\n validStyles = global$3.makeMap(retainStyleProperties.split(/[, ]/));\n }\n content = $_2u5gcyj0jkmcwplv.filter(content, [\n /
    /gi,\n /]+id=\"?docs-internal-[^>]*>/gi,\n //gi,\n /<(!|script[^>]*>.*?<\\/script(?=[>\\s])|\\/?(\\?xml(:\\w+)?|img|meta|link|style|\\w:\\w+)(?=[\\s\\/>]))[^>]*>/gi,\n [\n /<(\\/?)s>/gi,\n '<$1strike>'\n ],\n [\n / /gi,\n '\\xA0'\n ],\n [\n /([\\s\\u00a0]*)<\\/span>/gi,\n function (str, spaces) {\n return spaces.length > 0 ? spaces.replace(/./, ' ').slice(Math.floor(spaces.length / 2)).split('').join('\\xA0') : '';\n }\n ]\n ]);\n var validElements = $_5peev0ikjkmcwpkv.getWordValidElements(editor);\n var schema = global$8({\n valid_elements: validElements,\n valid_children: '-li[p]'\n });\n global$3.each(schema.elements, function (rule) {\n if (!rule.attributes.class) {\n rule.attributes.class = {};\n rule.attributesOrder.push('class');\n }\n if (!rule.attributes.style) {\n rule.attributes.style = {};\n rule.attributesOrder.push('style');\n }\n });\n var domParser = global$6({}, schema);\n domParser.addAttributeFilter('style', function (nodes) {\n var i = nodes.length, node;\n while (i--) {\n node = nodes[i];\n node.attr('style', filterStyles(editor, validStyles, node, node.attr('style')));\n if (node.name === 'span' && node.parent && !node.attributes.length) {\n node.unwrap();\n }\n }\n });\n domParser.addAttributeFilter('class', function (nodes) {\n var i = nodes.length, node, className;\n while (i--) {\n node = nodes[i];\n className = node.attr('class');\n if (/^(MsoCommentReference|MsoCommentText|msoDel)$/i.test(className)) {\n node.remove();\n }\n node.attr('class', null);\n }\n });\n domParser.addNodeFilter('del', function (nodes) {\n var i = nodes.length;\n while (i--) {\n nodes[i].remove();\n }\n });\n domParser.addNodeFilter('a', function (nodes) {\n var i = nodes.length, node, href, name;\n while (i--) {\n node = nodes[i];\n href = node.attr('href');\n name = node.attr('name');\n if (href && href.indexOf('#_msocom_') !== -1) {\n node.remove();\n continue;\n }\n if (href && href.indexOf('file://') === 0) {\n href = href.split('#')[1];\n if (href) {\n href = '#' + href;\n }\n }\n if (!href && !name) {\n node.unwrap();\n } else {\n if (name && !/^_?(?:toc|edn|ftn)/i.test(name)) {\n node.unwrap();\n continue;\n }\n node.attr({\n href: href,\n name: name\n });\n }\n }\n });\n var rootNode = domParser.parse(content);\n if ($_5peev0ikjkmcwpkv.shouldConvertWordFakeLists(editor)) {\n convertFakeListsToProperLists(rootNode);\n }\n content = global$9({ validate: editor.settings.validate }, schema).serialize(rootNode);\n return content;\n };\n var preProcess = function (editor, content) {\n return $_5peev0ikjkmcwpkv.shouldUseDefaultFilters(editor) ? filterWordContent(editor, content) : content;\n };\n var $_759xt5ivjkmcwplk = {\n preProcess: preProcess,\n isWordContent: isWordContent\n };\n\n var processResult = function (content, cancelled) {\n return {\n content: content,\n cancelled: cancelled\n };\n };\n var postProcessFilter = function (editor, html, internal, isWordHtml) {\n var tempBody = editor.dom.create('div', { style: 'display:none' }, html);\n var postProcessArgs = $_d8ovv8ijjkmcwpku.firePastePostProcess(editor, tempBody, internal, isWordHtml);\n return processResult(postProcessArgs.node.innerHTML, postProcessArgs.isDefaultPrevented());\n };\n var filterContent = function (editor, content, internal, isWordHtml) {\n var preProcessArgs = $_d8ovv8ijjkmcwpku.firePastePreProcess(editor, content, internal, isWordHtml);\n if (editor.hasEventListeners('PastePostProcess') && !preProcessArgs.isDefaultPrevented()) {\n return postProcessFilter(editor, preProcessArgs.content, internal, isWordHtml);\n } else {\n return processResult(preProcessArgs.content, preProcessArgs.isDefaultPrevented());\n }\n };\n var process = function (editor, html, internal) {\n var isWordHtml = $_759xt5ivjkmcwplk.isWordContent(html);\n var content = isWordHtml ? $_759xt5ivjkmcwplk.preProcess(editor, html) : html;\n return filterContent(editor, content, internal, isWordHtml);\n };\n var $_7a37nniujkmcwplh = { process: process };\n\n var pasteHtml = function (editor, html) {\n editor.insertContent(html, {\n merge: $_5peev0ikjkmcwpkv.shouldMergeFormats(editor),\n paste: true\n });\n return true;\n };\n var isAbsoluteUrl = function (url) {\n return /^https?:\\/\\/[\\w\\?\\-\\/+=.&%@~#]+$/i.test(url);\n };\n var isImageUrl = function (url) {\n return isAbsoluteUrl(url) && /.(gif|jpe?g|png)$/.test(url);\n };\n var createImage = function (editor, url, pasteHtmlFn) {\n editor.undoManager.extra(function () {\n pasteHtmlFn(editor, url);\n }, function () {\n editor.insertContent('');\n });\n return true;\n };\n var createLink = function (editor, url, pasteHtmlFn) {\n editor.undoManager.extra(function () {\n pasteHtmlFn(editor, url);\n }, function () {\n editor.execCommand('mceInsertLink', false, url);\n });\n return true;\n };\n var linkSelection = function (editor, html, pasteHtmlFn) {\n return editor.selection.isCollapsed() === false && isAbsoluteUrl(html) ? createLink(editor, html, pasteHtmlFn) : false;\n };\n var insertImage = function (editor, html, pasteHtmlFn) {\n return isImageUrl(html) ? createImage(editor, html, pasteHtmlFn) : false;\n };\n var smartInsertContent = function (editor, html) {\n global$3.each([\n linkSelection,\n insertImage,\n pasteHtml\n ], function (action) {\n return action(editor, html, pasteHtml) !== true;\n });\n };\n var insertContent = function (editor, html) {\n if ($_5peev0ikjkmcwpkv.isSmartPasteEnabled(editor) === false) {\n pasteHtml(editor, html);\n } else {\n smartInsertContent(editor, html);\n }\n };\n var $_3wqigwj1jkmcwplz = {\n isImageUrl: isImageUrl,\n isAbsoluteUrl: isAbsoluteUrl,\n insertContent: insertContent\n };\n\n var pasteHtml$1 = function (editor, html, internalFlag) {\n var internal = internalFlag ? internalFlag : $_93gcj3irjkmcwpld.isMarked(html);\n var args = $_7a37nniujkmcwplh.process(editor, $_93gcj3irjkmcwpld.unmark(html), internal);\n if (args.cancelled === false) {\n $_3wqigwj1jkmcwplz.insertContent(editor, args.content);\n }\n };\n var pasteText = function (editor, text) {\n text = editor.dom.encode(text).replace(/\\r\\n/g, '\\n');\n text = $_3nag2qisjkmcwple.convert(text, editor.settings.forced_root_block, editor.settings.forced_root_block_attrs);\n pasteHtml$1(editor, text, false);\n };\n var getDataTransferItems = function (dataTransfer) {\n var items = {};\n var mceInternalUrlPrefix = 'data:text/mce-internal,';\n if (dataTransfer) {\n if (dataTransfer.getData) {\n var legacyText = dataTransfer.getData('Text');\n if (legacyText && legacyText.length > 0) {\n if (legacyText.indexOf(mceInternalUrlPrefix) === -1) {\n items['text/plain'] = legacyText;\n }\n }\n }\n if (dataTransfer.types) {\n for (var i = 0; i < dataTransfer.types.length; i++) {\n var contentType = dataTransfer.types[i];\n try {\n items[contentType] = dataTransfer.getData(contentType);\n } catch (ex) {\n items[contentType] = '';\n }\n }\n }\n }\n return items;\n };\n var getClipboardContent = function (editor, clipboardEvent) {\n var content = getDataTransferItems(clipboardEvent.clipboardData || editor.getDoc().dataTransfer);\n return $_2u5gcyj0jkmcwplv.isMsEdge() ? global$3.extend(content, { 'text/html': '' }) : content;\n };\n var hasContentType = function (clipboardContent, mimeType) {\n return mimeType in clipboardContent && clipboardContent[mimeType].length > 0;\n };\n var hasHtmlOrText = function (content) {\n return hasContentType(content, 'text/html') || hasContentType(content, 'text/plain');\n };\n var getBase64FromUri = function (uri) {\n var idx;\n idx = uri.indexOf(',');\n if (idx !== -1) {\n return uri.substr(idx + 1);\n }\n return null;\n };\n var isValidDataUriImage = function (settings, imgElm) {\n return settings.images_dataimg_filter ? settings.images_dataimg_filter(imgElm) : true;\n };\n var extractFilename = function (editor, str) {\n var m = str.match(/([\\s\\S]+?)\\.(?:jpeg|jpg|png|gif)$/i);\n return m ? editor.dom.encode(m[1]) : null;\n };\n var uniqueId = $_2u5gcyj0jkmcwplv.createIdGenerator('mceclip');\n var pasteImage = function (editor, rng, reader, blob) {\n if (rng) {\n editor.selection.setRng(rng);\n rng = null;\n }\n var dataUri = reader.result;\n var base64 = getBase64FromUri(dataUri);\n var id = uniqueId();\n var name$$1 = editor.settings.images_reuse_filename && blob.name ? extractFilename(editor, blob.name) : id;\n var img = new Image();\n img.src = dataUri;\n if (isValidDataUriImage(editor.settings, img)) {\n var blobCache = editor.editorUpload.blobCache;\n var blobInfo = void 0, existingBlobInfo = void 0;\n existingBlobInfo = blobCache.findFirst(function (cachedBlobInfo) {\n return cachedBlobInfo.base64() === base64;\n });\n if (!existingBlobInfo) {\n blobInfo = blobCache.create(id, blob, base64, name$$1);\n blobCache.add(blobInfo);\n } else {\n blobInfo = existingBlobInfo;\n }\n pasteHtml$1(editor, '', false);\n } else {\n pasteHtml$1(editor, '', false);\n }\n };\n var isClipboardEvent = function (event$$1) {\n return event$$1.type === 'paste';\n };\n var pasteImageData = function (editor, e, rng) {\n var dataTransfer = isClipboardEvent(e) ? e.clipboardData : e.dataTransfer;\n function processItems(items) {\n var i, item, reader, hadImage = false;\n if (items) {\n for (i = 0; i < items.length; i++) {\n item = items[i];\n if (/^image\\/(jpeg|png|gif|bmp)$/.test(item.type)) {\n var blob = item.getAsFile ? item.getAsFile() : item;\n reader = new window.FileReader();\n reader.onload = pasteImage.bind(null, editor, rng, reader, blob);\n reader.readAsDataURL(blob);\n e.preventDefault();\n hadImage = true;\n }\n }\n }\n return hadImage;\n }\n if (editor.settings.paste_data_images && dataTransfer) {\n return processItems(dataTransfer.items) || processItems(dataTransfer.files);\n }\n };\n var isBrokenAndroidClipboardEvent = function (e) {\n var clipboardData = e.clipboardData;\n return navigator.userAgent.indexOf('Android') !== -1 && clipboardData && clipboardData.items && clipboardData.items.length === 0;\n };\n var isKeyboardPasteEvent = function (e) {\n return global$4.metaKeyPressed(e) && e.keyCode === 86 || e.shiftKey && e.keyCode === 45;\n };\n var registerEventHandlers = function (editor, pasteBin, pasteFormat) {\n var keyboardPasteTimeStamp = 0;\n var keyboardPastePlainTextState;\n editor.on('keydown', function (e) {\n function removePasteBinOnKeyUp(e) {\n if (isKeyboardPasteEvent(e) && !e.isDefaultPrevented()) {\n pasteBin.remove();\n }\n }\n if (isKeyboardPasteEvent(e) && !e.isDefaultPrevented()) {\n keyboardPastePlainTextState = e.shiftKey && e.keyCode === 86;\n if (keyboardPastePlainTextState && global$1.webkit && navigator.userAgent.indexOf('Version/') !== -1) {\n return;\n }\n e.stopImmediatePropagation();\n keyboardPasteTimeStamp = new Date().getTime();\n if (global$1.ie && keyboardPastePlainTextState) {\n e.preventDefault();\n $_d8ovv8ijjkmcwpku.firePaste(editor, true);\n return;\n }\n pasteBin.remove();\n pasteBin.create();\n editor.once('keyup', removePasteBinOnKeyUp);\n editor.once('paste', function () {\n editor.off('keyup', removePasteBinOnKeyUp);\n });\n }\n });\n function insertClipboardContent(clipboardContent, isKeyBoardPaste, plainTextMode, internal) {\n var content, isPlainTextHtml;\n if (hasContentType(clipboardContent, 'text/html')) {\n content = clipboardContent['text/html'];\n } else {\n content = pasteBin.getHtml();\n internal = internal ? internal : $_93gcj3irjkmcwpld.isMarked(content);\n if (pasteBin.isDefaultContent(content)) {\n plainTextMode = true;\n }\n }\n content = $_2u5gcyj0jkmcwplv.trimHtml(content);\n pasteBin.remove();\n isPlainTextHtml = internal === false && $_3nag2qisjkmcwple.isPlainText(content);\n if (!content.length || isPlainTextHtml) {\n plainTextMode = true;\n }\n if (plainTextMode) {\n if (hasContentType(clipboardContent, 'text/plain') && isPlainTextHtml) {\n content = clipboardContent['text/plain'];\n } else {\n content = $_2u5gcyj0jkmcwplv.innerText(content);\n }\n }\n if (pasteBin.isDefaultContent(content)) {\n if (!isKeyBoardPaste) {\n editor.windowManager.alert('Please use Ctrl+V/Cmd+V keyboard shortcuts to paste contents.');\n }\n return;\n }\n if (plainTextMode) {\n pasteText(editor, content);\n } else {\n pasteHtml$1(editor, content, internal);\n }\n }\n var getLastRng = function () {\n return pasteBin.getLastRng() || editor.selection.getRng();\n };\n editor.on('paste', function (e) {\n var clipboardTimer = new Date().getTime();\n var clipboardContent = getClipboardContent(editor, e);\n var clipboardDelay = new Date().getTime() - clipboardTimer;\n var isKeyBoardPaste = new Date().getTime() - keyboardPasteTimeStamp - clipboardDelay < 1000;\n var plainTextMode = pasteFormat.get() === 'text' || keyboardPastePlainTextState;\n var internal = hasContentType(clipboardContent, $_93gcj3irjkmcwpld.internalHtmlMime());\n keyboardPastePlainTextState = false;\n if (e.isDefaultPrevented() || isBrokenAndroidClipboardEvent(e)) {\n pasteBin.remove();\n return;\n }\n if (!hasHtmlOrText(clipboardContent) && pasteImageData(editor, e, getLastRng())) {\n pasteBin.remove();\n return;\n }\n if (!isKeyBoardPaste) {\n e.preventDefault();\n }\n if (global$1.ie && (!isKeyBoardPaste || e.ieFake) && !hasContentType(clipboardContent, 'text/html')) {\n pasteBin.create();\n editor.dom.bind(pasteBin.getEl(), 'paste', function (e) {\n e.stopPropagation();\n });\n editor.getDoc().execCommand('Paste', false, null);\n clipboardContent['text/html'] = pasteBin.getHtml();\n }\n if (hasContentType(clipboardContent, 'text/html')) {\n e.preventDefault();\n if (!internal) {\n internal = $_93gcj3irjkmcwpld.isMarked(clipboardContent['text/html']);\n }\n insertClipboardContent(clipboardContent, isKeyBoardPaste, plainTextMode, internal);\n } else {\n global$2.setEditorTimeout(editor, function () {\n insertClipboardContent(clipboardContent, isKeyBoardPaste, plainTextMode, internal);\n }, 0);\n }\n });\n };\n var registerEventsAndFilters = function (editor, pasteBin, pasteFormat) {\n registerEventHandlers(editor, pasteBin, pasteFormat);\n var src;\n editor.parser.addNodeFilter('img', function (nodes, name$$1, args) {\n var isPasteInsert = function (args) {\n return args.data && args.data.paste === true;\n };\n var remove = function (node) {\n if (!node.attr('data-mce-object') && src !== global$1.transparentSrc) {\n node.remove();\n }\n };\n var isWebKitFakeUrl = function (src) {\n return src.indexOf('webkit-fake-url') === 0;\n };\n var isDataUri = function (src) {\n return src.indexOf('data:') === 0;\n };\n if (!editor.settings.paste_data_images && isPasteInsert(args)) {\n var i = nodes.length;\n while (i--) {\n src = nodes[i].attributes.map.src;\n if (!src) {\n continue;\n }\n if (isWebKitFakeUrl(src)) {\n remove(nodes[i]);\n } else if (!editor.settings.allow_html_data_urls && isDataUri(src)) {\n remove(nodes[i]);\n }\n }\n }\n });\n };\n\n var getPasteBinParent = function (editor) {\n return global$1.ie && editor.inline ? document.body : editor.getBody();\n };\n var isExternalPasteBin = function (editor) {\n return getPasteBinParent(editor) !== editor.getBody();\n };\n var delegatePasteEvents = function (editor, pasteBinElm, pasteBinDefaultContent) {\n if (isExternalPasteBin(editor)) {\n editor.dom.bind(pasteBinElm, 'paste keyup', function (e) {\n if (!isDefault(editor, pasteBinDefaultContent)) {\n editor.fire('paste');\n }\n });\n }\n };\n var create = function (editor, lastRngCell, pasteBinDefaultContent) {\n var dom = editor.dom, body = editor.getBody();\n var pasteBinElm;\n lastRngCell.set(editor.selection.getRng());\n pasteBinElm = editor.dom.add(getPasteBinParent(editor), 'div', {\n 'id': 'mcepastebin',\n 'class': 'mce-pastebin',\n 'contentEditable': true,\n 'data-mce-bogus': 'all',\n 'style': 'position: fixed; top: 50%; width: 10px; height: 10px; overflow: hidden; opacity: 0'\n }, pasteBinDefaultContent);\n if (global$1.ie || global$1.gecko) {\n dom.setStyle(pasteBinElm, 'left', dom.getStyle(body, 'direction', true) === 'rtl' ? 65535 : -65535);\n }\n dom.bind(pasteBinElm, 'beforedeactivate focusin focusout', function (e) {\n e.stopPropagation();\n });\n delegatePasteEvents(editor, pasteBinElm, pasteBinDefaultContent);\n pasteBinElm.focus();\n editor.selection.select(pasteBinElm, true);\n };\n var remove = function (editor, lastRngCell) {\n if (getEl(editor)) {\n var pasteBinClone = void 0;\n var lastRng = lastRngCell.get();\n while (pasteBinClone = editor.dom.get('mcepastebin')) {\n editor.dom.remove(pasteBinClone);\n editor.dom.unbind(pasteBinClone);\n }\n if (lastRng) {\n editor.selection.setRng(lastRng);\n }\n }\n lastRngCell.set(null);\n };\n var getEl = function (editor) {\n return editor.dom.get('mcepastebin');\n };\n var getHtml = function (editor) {\n var pasteBinElm, pasteBinClones, i, dirtyWrappers, cleanWrapper;\n var copyAndRemove = function (toElm, fromElm) {\n toElm.appendChild(fromElm);\n editor.dom.remove(fromElm, true);\n };\n pasteBinClones = global$3.grep(getPasteBinParent(editor).childNodes, function (elm) {\n return elm.id === 'mcepastebin';\n });\n pasteBinElm = pasteBinClones.shift();\n global$3.each(pasteBinClones, function (pasteBinClone) {\n copyAndRemove(pasteBinElm, pasteBinClone);\n });\n dirtyWrappers = editor.dom.select('div[id=mcepastebin]', pasteBinElm);\n for (i = dirtyWrappers.length - 1; i >= 0; i--) {\n cleanWrapper = editor.dom.create('div');\n pasteBinElm.insertBefore(cleanWrapper, dirtyWrappers[i]);\n copyAndRemove(cleanWrapper, dirtyWrappers[i]);\n }\n return pasteBinElm ? pasteBinElm.innerHTML : '';\n };\n var getLastRng = function (lastRng) {\n return lastRng.get();\n };\n var isDefaultContent = function (pasteBinDefaultContent, content) {\n return content === pasteBinDefaultContent;\n };\n var isPasteBin = function (elm) {\n return elm && elm.id === 'mcepastebin';\n };\n var isDefault = function (editor, pasteBinDefaultContent) {\n var pasteBinElm = getEl(editor);\n return isPasteBin(pasteBinElm) && isDefaultContent(pasteBinDefaultContent, pasteBinElm.innerHTML);\n };\n var PasteBin = function (editor) {\n var lastRng = Cell(null);\n var pasteBinDefaultContent = '%MCEPASTEBIN%';\n return {\n create: function () {\n return create(editor, lastRng, pasteBinDefaultContent);\n },\n remove: function () {\n return remove(editor, lastRng);\n },\n getEl: function () {\n return getEl(editor);\n },\n getHtml: function () {\n return getHtml(editor);\n },\n getLastRng: function () {\n return getLastRng(lastRng);\n },\n isDefault: function () {\n return isDefault(editor, pasteBinDefaultContent);\n },\n isDefaultContent: function (content) {\n return isDefaultContent(pasteBinDefaultContent, content);\n }\n };\n };\n\n var Clipboard = function (editor, pasteFormat) {\n var pasteBin = PasteBin(editor);\n editor.on('preInit', function () {\n return registerEventsAndFilters(editor, pasteBin, pasteFormat);\n });\n return {\n pasteFormat: pasteFormat,\n pasteHtml: function (html, internalFlag) {\n return pasteHtml$1(editor, html, internalFlag);\n },\n pasteText: function (text) {\n return pasteText(editor, text);\n },\n pasteImageData: function (e, rng) {\n return pasteImageData(editor, e, rng);\n },\n getDataTransferItems: getDataTransferItems,\n hasHtmlOrText: hasHtmlOrText,\n hasContentType: hasContentType\n };\n };\n\n var noop = function () {\n };\n var hasWorkingClipboardApi = function (clipboardData) {\n return global$1.iOS === false && clipboardData !== undefined && typeof clipboardData.setData === 'function' && $_2u5gcyj0jkmcwplv.isMsEdge() !== true;\n };\n var setHtml5Clipboard = function (clipboardData, html, text) {\n if (hasWorkingClipboardApi(clipboardData)) {\n try {\n clipboardData.clearData();\n clipboardData.setData('text/html', html);\n clipboardData.setData('text/plain', text);\n clipboardData.setData($_93gcj3irjkmcwpld.internalHtmlMime(), html);\n return true;\n } catch (e) {\n return false;\n }\n } else {\n return false;\n }\n };\n var setClipboardData = function (evt, data, fallback, done) {\n if (setHtml5Clipboard(evt.clipboardData, data.html, data.text)) {\n evt.preventDefault();\n done();\n } else {\n fallback(data.html, done);\n }\n };\n var fallback = function (editor) {\n return function (html, done) {\n var markedHtml = $_93gcj3irjkmcwpld.mark(html);\n var outer = editor.dom.create('div', {\n 'contenteditable': 'false',\n 'data-mce-bogus': 'all'\n });\n var inner = editor.dom.create('div', { contenteditable: 'true' }, markedHtml);\n editor.dom.setStyles(outer, {\n position: 'fixed',\n top: '0',\n left: '-3000px',\n width: '1000px',\n overflow: 'hidden'\n });\n outer.appendChild(inner);\n editor.dom.add(editor.getBody(), outer);\n var range = editor.selection.getRng();\n inner.focus();\n var offscreenRange = editor.dom.createRng();\n offscreenRange.selectNodeContents(inner);\n editor.selection.setRng(offscreenRange);\n setTimeout(function () {\n editor.selection.setRng(range);\n outer.parentNode.removeChild(outer);\n done();\n }, 0);\n };\n };\n var getData = function (editor) {\n return {\n html: editor.selection.getContent({ contextual: true }),\n text: editor.selection.getContent({ format: 'text' })\n };\n };\n var cut = function (editor) {\n return function (evt) {\n if (editor.selection.isCollapsed() === false) {\n setClipboardData(evt, getData(editor), fallback(editor), function () {\n setTimeout(function () {\n editor.execCommand('Delete');\n }, 0);\n });\n }\n };\n };\n var copy = function (editor) {\n return function (evt) {\n if (editor.selection.isCollapsed() === false) {\n setClipboardData(evt, getData(editor), fallback(editor), noop);\n }\n };\n };\n var register$1 = function (editor) {\n editor.on('cut', cut(editor));\n editor.on('copy', copy(editor));\n };\n var $_5k6lg4j3jkmcwpmg = { register: register$1 };\n\n var global$10 = tinymce.util.Tools.resolve('tinymce.dom.RangeUtils');\n\n var getCaretRangeFromEvent = function (editor, e) {\n return global$10.getCaretRangeFromPoint(e.clientX, e.clientY, editor.getDoc());\n };\n var isPlainTextFileUrl = function (content) {\n var plainTextContent = content['text/plain'];\n return plainTextContent ? plainTextContent.indexOf('file://') === 0 : false;\n };\n var setFocusedRange = function (editor, rng) {\n editor.focus();\n editor.selection.setRng(rng);\n };\n var setup = function (editor, clipboard, draggingInternallyState) {\n if ($_5peev0ikjkmcwpkv.shouldBlockDrop(editor)) {\n editor.on('dragend dragover draggesture dragdrop drop drag', function (e) {\n e.preventDefault();\n e.stopPropagation();\n });\n }\n if (!$_5peev0ikjkmcwpkv.shouldPasteDataImages(editor)) {\n editor.on('drop', function (e) {\n var dataTransfer = e.dataTransfer;\n if (dataTransfer && dataTransfer.files && dataTransfer.files.length > 0) {\n e.preventDefault();\n }\n });\n }\n editor.on('drop', function (e) {\n var dropContent, rng;\n rng = getCaretRangeFromEvent(editor, e);\n if (e.isDefaultPrevented() || draggingInternallyState.get()) {\n return;\n }\n dropContent = clipboard.getDataTransferItems(e.dataTransfer);\n var internal = clipboard.hasContentType(dropContent, $_93gcj3irjkmcwpld.internalHtmlMime());\n if ((!clipboard.hasHtmlOrText(dropContent) || isPlainTextFileUrl(dropContent)) && clipboard.pasteImageData(e, rng)) {\n return;\n }\n if (rng && $_5peev0ikjkmcwpkv.shouldFilterDrop(editor)) {\n var content_1 = dropContent['mce-internal'] || dropContent['text/html'] || dropContent['text/plain'];\n if (content_1) {\n e.preventDefault();\n global$2.setEditorTimeout(editor, function () {\n editor.undoManager.transact(function () {\n if (dropContent['mce-internal']) {\n editor.execCommand('Delete');\n }\n setFocusedRange(editor, rng);\n content_1 = $_2u5gcyj0jkmcwplv.trimHtml(content_1);\n if (!dropContent['text/html']) {\n clipboard.pasteText(content_1);\n } else {\n clipboard.pasteHtml(content_1, internal);\n }\n });\n });\n }\n }\n });\n editor.on('dragstart', function (e) {\n draggingInternallyState.set(true);\n });\n editor.on('dragover dragend', function (e) {\n if ($_5peev0ikjkmcwpkv.shouldPasteDataImages(editor) && draggingInternallyState.get() === false) {\n e.preventDefault();\n setFocusedRange(editor, getCaretRangeFromEvent(editor, e));\n }\n if (e.type === 'dragend') {\n draggingInternallyState.set(false);\n }\n });\n };\n var $_eiqz0aj4jkmcwpmj = { setup: setup };\n\n var setup$1 = function (editor) {\n var plugin = editor.plugins.paste;\n var preProcess = $_5peev0ikjkmcwpkv.getPreProcess(editor);\n if (preProcess) {\n editor.on('PastePreProcess', function (e) {\n preProcess.call(plugin, plugin, e);\n });\n }\n var postProcess = $_5peev0ikjkmcwpkv.getPostProcess(editor);\n if (postProcess) {\n editor.on('PastePostProcess', function (e) {\n postProcess.call(plugin, plugin, e);\n });\n }\n };\n var $_9alamfj6jkmcwpmm = { setup: setup$1 };\n\n function addPreProcessFilter(editor, filterFunc) {\n editor.on('PastePreProcess', function (e) {\n e.content = filterFunc(editor, e.content, e.internal, e.wordContent);\n });\n }\n function addPostProcessFilter(editor, filterFunc) {\n editor.on('PastePostProcess', function (e) {\n filterFunc(editor, e.node);\n });\n }\n function removeExplorerBrElementsAfterBlocks(editor, html) {\n if (!$_759xt5ivjkmcwplk.isWordContent(html)) {\n return html;\n }\n var blockElements = [];\n global$3.each(editor.schema.getBlockElements(), function (block, blockName) {\n blockElements.push(blockName);\n });\n var explorerBlocksRegExp = new RegExp('(?:
     [\\\\s\\\\r\\\\n]+|
    )*(<\\\\/?(' + blockElements.join('|') + ')[^>]*>)(?:
     [\\\\s\\\\r\\\\n]+|
    )*', 'g');\n html = $_2u5gcyj0jkmcwplv.filter(html, [[\n explorerBlocksRegExp,\n '$1'\n ]]);\n html = $_2u5gcyj0jkmcwplv.filter(html, [\n [\n /

    /g,\n '

    '\n ],\n [\n /
    /g,\n ' '\n ],\n [\n /

    /g,\n '
    '\n ]\n ]);\n return html;\n }\n function removeWebKitStyles(editor, content, internal, isWordHtml) {\n if (isWordHtml || internal) {\n return content;\n }\n var webKitStylesSetting = $_5peev0ikjkmcwpkv.getWebkitStyles(editor);\n var webKitStyles;\n if ($_5peev0ikjkmcwpkv.shouldRemoveWebKitStyles(editor) === false || webKitStylesSetting === 'all') {\n return content;\n }\n if (webKitStylesSetting) {\n webKitStyles = webKitStylesSetting.split(/[, ]/);\n }\n if (webKitStyles) {\n var dom_1 = editor.dom, node_1 = editor.selection.getNode();\n content = content.replace(/(<[^>]+) style=\"([^\"]*)\"([^>]*>)/gi, function (all, before, value, after) {\n var inputStyles = dom_1.parseStyle(dom_1.decode(value));\n var outputStyles = {};\n if (webKitStyles === 'none') {\n return before + after;\n }\n for (var i = 0; i < webKitStyles.length; i++) {\n var inputValue = inputStyles[webKitStyles[i]], currentValue = dom_1.getStyle(node_1, webKitStyles[i], true);\n if (/color/.test(webKitStyles[i])) {\n inputValue = dom_1.toHex(inputValue);\n currentValue = dom_1.toHex(currentValue);\n }\n if (currentValue !== inputValue) {\n outputStyles[webKitStyles[i]] = inputValue;\n }\n }\n outputStyles = dom_1.serializeStyle(outputStyles, 'span');\n if (outputStyles) {\n return before + ' style=\"' + outputStyles + '\"' + after;\n }\n return before + after;\n });\n } else {\n content = content.replace(/(<[^>]+) style=\"([^\"]*)\"([^>]*>)/gi, '$1$3');\n }\n content = content.replace(/(<[^>]+) data-mce-style=\"([^\"]+)\"([^>]*>)/gi, function (all, before, value, after) {\n return before + ' style=\"' + value + '\"' + after;\n });\n return content;\n }\n function removeUnderlineAndFontInAnchor(editor, root) {\n editor.$('a', root).find('font,u').each(function (i, node) {\n editor.dom.remove(node, true);\n });\n }\n var setup$2 = function (editor) {\n if (global$1.webkit) {\n addPreProcessFilter(editor, removeWebKitStyles);\n }\n if (global$1.ie) {\n addPreProcessFilter(editor, removeExplorerBrElementsAfterBlocks);\n addPostProcessFilter(editor, removeUnderlineAndFontInAnchor);\n }\n };\n var $_ca6muwj7jkmcwpmo = { setup: setup$2 };\n\n var curry = function (f) {\n var x = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n x[_i - 1] = arguments[_i];\n }\n var args = new Array(arguments.length - 1);\n for (var i = 1; i < arguments.length; i++)\n args[i - 1] = arguments[i];\n return function () {\n var x = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n x[_i] = arguments[_i];\n }\n var newArgs = new Array(arguments.length);\n for (var j = 0; j < newArgs.length; j++)\n newArgs[j] = arguments[j];\n var all = args.concat(newArgs);\n return f.apply(null, all);\n };\n };\n\n var stateChange = function (editor, clipboard, e) {\n var ctrl = e.control;\n ctrl.active(clipboard.pasteFormat.get() === 'text');\n editor.on('PastePlainTextToggle', function (e) {\n ctrl.active(e.state);\n });\n };\n var register$2 = function (editor, clipboard) {\n var postRender = curry(stateChange, editor, clipboard);\n editor.addButton('pastetext', {\n active: false,\n icon: 'pastetext',\n tooltip: 'Paste as text',\n cmd: 'mceTogglePlainTextPaste',\n onPostRender: postRender\n });\n editor.addMenuItem('pastetext', {\n text: 'Paste as text',\n selectable: true,\n active: clipboard.pasteFormat,\n cmd: 'mceTogglePlainTextPaste',\n onPostRender: postRender\n });\n };\n var $_98erksj8jkmcwpmr = { register: register$2 };\n\n global.add('paste', function (editor) {\n if ($_ee0gktiejkmcwpkb.hasProPlugin(editor) === false) {\n var userIsInformedState = Cell(false);\n var draggingInternallyState = Cell(false);\n var pasteFormat = Cell($_5peev0ikjkmcwpkv.isPasteAsTextEnabled(editor) ? 'text' : 'html');\n var clipboard = Clipboard(editor, pasteFormat);\n var quirks = $_ca6muwj7jkmcwpmo.setup(editor);\n $_98erksj8jkmcwpmr.register(editor, clipboard);\n $_gh26txihjkmcwpkr.register(editor, clipboard, userIsInformedState);\n $_9alamfj6jkmcwpmm.setup(editor);\n $_5k6lg4j3jkmcwpmg.register(editor);\n $_eiqz0aj4jkmcwpmj.setup(editor, clipboard, draggingInternallyState);\n return $_6khw6eigjkmcwpkp.get(clipboard, quirks);\n }\n });\n function Plugin () {\n }\n\n return Plugin;\n\n}());\n})();\n","import Vue from 'vue'\nimport axios from 'axios'\nimport qs from 'qs'\nimport VueAxios from 'vue-axios'\nimport Cache from './cache.js'\nimport Global from './global.js'\nimport Auth from './auth.js'\n\nVue.use(VueAxios, axios)\n\nexport function Api(resource, endpoint) {\n\n this.Resourse = resource;\n this.EndPoint = endpoint;\n\n this.defaultFilter = {\n pageSize: 10,\n pageIndex: 0,\n isPaginate: true,\n };\n\n this.byCache = false;\n this.hasDefaultFilters = true;\n this.lastAction = \"none\";\n this.url = \"\";\n\n this.get = _get;\n this.post = _post;\n this.put = _put;\n this.delete = _delete;\n this.dataItem = _dataItem;\n this.export = _export;\n this.upload = _upload;\n\n var self = this;\n\n function _upload(file, folder) {\n\n self.lastAction = \"upload\";\n self.url = makeUri();\n\n let formData = new FormData();\n formData.append('files', file, file.name);\n formData.append('folder', folder);\n\n return axios\n .post(self.url, formData)\n .then(res => { handleSuccess(res.data); return res.data; })\n .catch(err => { handleError(err.response); throw err.response; })\n }\n\n function _post(model) {\n\n self.lastAction = \"post\";\n self.url = makeUri();\n\n return axios\n .post(self.url, model)\n .then(res => { handleSuccess(res.data); return res.data; })\n .catch(err => { handleError(err.response); throw err.response; })\n }\n\n function _put(model) {\n\n self.lastAction = \"put\";\n self.url = makeUri();\n\n return axios\n .put(self.url, model)\n .then(res => { handleSuccess(res.data); return res.data; })\n .catch(err => { handleError(err.response); throw err.response; })\n }\n\n function _delete(model) {\n\n self.lastAction = \"delete\";\n self.url = makeUri()\n\n return axios\n .delete(self.url, { params: model })\n .then(res => { handleSuccess(res.data); return res.data; })\n .catch(err => { handleError(err.response); throw err.response; })\n }\n\n function _get(filters) {\n\n self.lastAction = \"get\";\n self.url = makeUri()\n\n var _filters = Object.assign(this.defaultFilter, filters);\n if (_filters.id)\n self.url = String.format(\"{0}/{1}\", self.url, _filters.id);\n\n //console.log(self.url)\n\n return axios\n .get(self.url, {\n params: _filters,\n paramsSerializer: () => {\n return qs.stringify(filters)\n }\n })\n .then(res => { handleSuccess(res.data); return res.data; })\n .catch(err => { handleError(err.response); throw err.response; })\n }\n\n function _export(filters) {\n\n self.lastAction = \"export\";\n self.url = makeUri()\n\n var _filters = Object.assign(this.defaultFilter, filters);\n if (_filters.id)\n self.url = String.format(\"{0}/{1}\", self.url, _filters.id);\n\n return axios\n .get(self.url, {\n params: _filters,\n paramsSerializer: () => {\n return qs.stringify(filters)\n },\n responseType: \"blob\"\n })\n .then(res => { handleSuccess(res.data); return res.data; })\n .catch(err => { handleError(err.response); throw err.response; })\n }\n\n function _dataItem(filters) {\n self.lastAction = \"get\";\n self.url = makeUri()\n\n var _filters = Object.assign(this.defaultFilter, filters);\n if (_filters.id)\n self.url = String.format(\"{0}/{1}\", self.url, _filters.id);\n\n return axios\n .get(self.url, {\n params: _filters,\n paramsSerializer: () => {\n return qs.stringify(filters, { encode: false })\n }\n })\n .then(res => { handleSuccess(res.data); return res.data; })\n .catch(err => { handleError(err.response); throw err.response; })\n }\n\n function makeUri() {\n\n var endpoint = self.EndPoint;\n\n if (!self.EndPoint)\n endpoint = Global.END_POINT_DEFAULT;\n\n configHeaders();\n\n return String.format(\"{0}/{1}\", endpoint, self.Resourse)\n }\n\n function configHeaders() {\n var accesstoken = Cache.get(Global.ACCESS_TOKEN);\n if (accesstoken)\n axios.defaults.headers.common['Authorization'] = \"Bearer \" + Cache.get(Global.ACCESS_TOKEN);\n\n axios.defaults.headers.common['Accept-Language'] = \"pt-BR\";\n }\n\n function handleSuccess(response) {\n addCache(response.data);\n }\n\n function handleError(err) {\n if (err && err.status == 401)\n Auth.login(true);\n }\n\n function addCache(data) {\n\n if (!self.byCache)\n return;\n\n if (self.url == \"\")\n return;\n\n if (self.lastAction == \"get\") {\n if (data.Data != null || (data.DataList != null && data.DataList.length > 0)) {\n data = JSON.stringify(data);\n Cache.Add(self.url, data)\n }\n }\n }\n\n //function loadFromCache() {\n\n // if (!self.byCache)\n // return;\n\n // var data = Cache.Get(self.url);\n // data = JSON.parse(data);\n\n // return new Promise(function (resolve, reject) {\n // if (data != null)\n // resolve(data);\n // else\n // reject(\"Nada encontrado\")\n // })\n //}\n\n //function isOffline() {\n // if (navigator.network != null) {\n // var isOffline = !navigator.onLine;\n // return isOffline;\n // }\n // return false;\n //}\n\n String.format = function () {\n var theString = arguments[0];\n for (var i = 1; i < arguments.length; i++) {\n var regEx = new RegExp(\"\\\\{\" + (i - 1) + \"\\\\}\", \"gm\");\n theString = theString.replace(regEx, arguments[i]);\n }\n return theString;\n }\n\n Object.$httpParamSerializer = function () {\n var obj = arguments[0];\n return Object.entries(obj).map(([key, val]) => `${key}=${val}`).join('&')\n }\n\n}\n","(function () {\nvar textcolor = (function () {\n 'use strict';\n\n var global = tinymce.util.Tools.resolve('tinymce.PluginManager');\n\n var getCurrentColor = function (editor, format) {\n var color;\n editor.dom.getParents(editor.selection.getStart(), function (elm) {\n var value;\n if (value = elm.style[format === 'forecolor' ? 'color' : 'background-color']) {\n color = value;\n }\n });\n return color;\n };\n var mapColors = function (colorMap) {\n var i;\n var colors = [];\n for (i = 0; i < colorMap.length; i += 2) {\n colors.push({\n text: colorMap[i + 1],\n color: '#' + colorMap[i]\n });\n }\n return colors;\n };\n var applyFormat = function (editor, format, value) {\n editor.undoManager.transact(function () {\n editor.focus();\n editor.formatter.apply(format, { value: value });\n editor.nodeChanged();\n });\n };\n var removeFormat = function (editor, format) {\n editor.undoManager.transact(function () {\n editor.focus();\n editor.formatter.remove(format, { value: null }, null, true);\n editor.nodeChanged();\n });\n };\n var $_fyfrxgrijkmcws5a = {\n getCurrentColor: getCurrentColor,\n mapColors: mapColors,\n applyFormat: applyFormat,\n removeFormat: removeFormat\n };\n\n var register = function (editor) {\n editor.addCommand('mceApplyTextcolor', function (format, value) {\n $_fyfrxgrijkmcws5a.applyFormat(editor, format, value);\n });\n editor.addCommand('mceRemoveTextcolor', function (format) {\n $_fyfrxgrijkmcws5a.removeFormat(editor, format);\n });\n };\n var $_fr9cbdrhjkmcws58 = { register: register };\n\n var global$1 = tinymce.util.Tools.resolve('tinymce.dom.DOMUtils');\n\n var global$2 = tinymce.util.Tools.resolve('tinymce.util.Tools');\n\n var defaultColorMap = [\n '000000',\n 'Black',\n '993300',\n 'Burnt orange',\n '333300',\n 'Dark olive',\n '003300',\n 'Dark green',\n '003366',\n 'Dark azure',\n '000080',\n 'Navy Blue',\n '333399',\n 'Indigo',\n '333333',\n 'Very dark gray',\n '800000',\n 'Maroon',\n 'FF6600',\n 'Orange',\n '808000',\n 'Olive',\n '008000',\n 'Green',\n '008080',\n 'Teal',\n '0000FF',\n 'Blue',\n '666699',\n 'Grayish blue',\n '808080',\n 'Gray',\n 'FF0000',\n 'Red',\n 'FF9900',\n 'Amber',\n '99CC00',\n 'Yellow green',\n '339966',\n 'Sea green',\n '33CCCC',\n 'Turquoise',\n '3366FF',\n 'Royal blue',\n '800080',\n 'Purple',\n '999999',\n 'Medium gray',\n 'FF00FF',\n 'Magenta',\n 'FFCC00',\n 'Gold',\n 'FFFF00',\n 'Yellow',\n '00FF00',\n 'Lime',\n '00FFFF',\n 'Aqua',\n '00CCFF',\n 'Sky blue',\n '993366',\n 'Red violet',\n 'FFFFFF',\n 'White',\n 'FF99CC',\n 'Pink',\n 'FFCC99',\n 'Peach',\n 'FFFF99',\n 'Light yellow',\n 'CCFFCC',\n 'Pale green',\n 'CCFFFF',\n 'Pale cyan',\n '99CCFF',\n 'Light sky blue',\n 'CC99FF',\n 'Plum'\n ];\n var getTextColorMap = function (editor) {\n return editor.getParam('textcolor_map', defaultColorMap);\n };\n var getForeColorMap = function (editor) {\n return editor.getParam('forecolor_map', getTextColorMap(editor));\n };\n var getBackColorMap = function (editor) {\n return editor.getParam('backcolor_map', getTextColorMap(editor));\n };\n var getTextColorRows = function (editor) {\n return editor.getParam('textcolor_rows', 5);\n };\n var getTextColorCols = function (editor) {\n return editor.getParam('textcolor_cols', 8);\n };\n var getForeColorRows = function (editor) {\n return editor.getParam('forecolor_rows', getTextColorRows(editor));\n };\n var getBackColorRows = function (editor) {\n return editor.getParam('backcolor_rows', getTextColorRows(editor));\n };\n var getForeColorCols = function (editor) {\n return editor.getParam('forecolor_cols', getTextColorCols(editor));\n };\n var getBackColorCols = function (editor) {\n return editor.getParam('backcolor_cols', getTextColorCols(editor));\n };\n var getColorPickerCallback = function (editor) {\n return editor.getParam('color_picker_callback', null);\n };\n var hasColorPicker = function (editor) {\n return typeof getColorPickerCallback(editor) === 'function';\n };\n var $_9xkreprmjkmcws5h = {\n getForeColorMap: getForeColorMap,\n getBackColorMap: getBackColorMap,\n getForeColorRows: getForeColorRows,\n getBackColorRows: getBackColorRows,\n getForeColorCols: getForeColorCols,\n getBackColorCols: getBackColorCols,\n getColorPickerCallback: getColorPickerCallback,\n hasColorPicker: hasColorPicker\n };\n\n var global$3 = tinymce.util.Tools.resolve('tinymce.util.I18n');\n\n var getHtml = function (cols, rows, colorMap, hasColorPicker) {\n var colors, color, html, last, x, y, i, count = 0;\n var id = global$1.DOM.uniqueId('mcearia');\n var getColorCellHtml = function (color, title) {\n var isNoColor = color === 'transparent';\n return '' + '
    ' + (isNoColor ? '×' : '') + '
    ' + '';\n };\n colors = $_fyfrxgrijkmcws5a.mapColors(colorMap);\n colors.push({\n text: global$3.translate('No color'),\n color: 'transparent'\n });\n html = '';\n last = colors.length - 1;\n for (y = 0; y < rows; y++) {\n html += '';\n for (x = 0; x < cols; x++) {\n i = y * cols + x;\n if (i > last) {\n html += '';\n } else {\n color = colors[i];\n html += getColorCellHtml(color.color, color.text);\n }\n }\n html += '';\n }\n if (hasColorPicker) {\n html += '' + '' + '';\n html += '';\n for (x = 0; x < cols; x++) {\n html += getColorCellHtml('', 'Custom color');\n }\n html += '';\n }\n html += '
    ' + '
    ' + '' + '
    ' + '
    ';\n return html;\n };\n var $_4vmnmvrnjkmcws5o = { getHtml: getHtml };\n\n var setDivColor = function setDivColor(div, value) {\n div.style.background = value;\n div.setAttribute('data-mce-color', value);\n };\n var onButtonClick = function (editor) {\n return function (e) {\n var ctrl = e.control;\n if (ctrl._color) {\n editor.execCommand('mceApplyTextcolor', ctrl.settings.format, ctrl._color);\n } else {\n editor.execCommand('mceRemoveTextcolor', ctrl.settings.format);\n }\n };\n };\n var onPanelClick = function (editor, cols) {\n return function (e) {\n var buttonCtrl = this.parent();\n var value;\n var currentColor = $_fyfrxgrijkmcws5a.getCurrentColor(editor, buttonCtrl.settings.format);\n var selectColor = function (value) {\n editor.execCommand('mceApplyTextcolor', buttonCtrl.settings.format, value);\n buttonCtrl.hidePanel();\n buttonCtrl.color(value);\n };\n var resetColor = function () {\n editor.execCommand('mceRemoveTextcolor', buttonCtrl.settings.format);\n buttonCtrl.hidePanel();\n buttonCtrl.resetColor();\n };\n if (global$1.DOM.getParent(e.target, '.mce-custom-color-btn')) {\n buttonCtrl.hidePanel();\n var colorPickerCallback = $_9xkreprmjkmcws5h.getColorPickerCallback(editor);\n colorPickerCallback.call(editor, function (value) {\n var tableElm = buttonCtrl.panel.getEl().getElementsByTagName('table')[0];\n var customColorCells, div, i;\n customColorCells = global$2.map(tableElm.rows[tableElm.rows.length - 1].childNodes, function (elm) {\n return elm.firstChild;\n });\n for (i = 0; i < customColorCells.length; i++) {\n div = customColorCells[i];\n if (!div.getAttribute('data-mce-color')) {\n break;\n }\n }\n if (i === cols) {\n for (i = 0; i < cols - 1; i++) {\n setDivColor(customColorCells[i], customColorCells[i + 1].getAttribute('data-mce-color'));\n }\n }\n setDivColor(div, value);\n selectColor(value);\n }, currentColor);\n }\n value = e.target.getAttribute('data-mce-color');\n if (value) {\n if (this.lastId) {\n global$1.DOM.get(this.lastId).setAttribute('aria-selected', 'false');\n }\n e.target.setAttribute('aria-selected', true);\n this.lastId = e.target.id;\n if (value === 'transparent') {\n resetColor();\n } else {\n selectColor(value);\n }\n } else if (value !== null) {\n buttonCtrl.hidePanel();\n }\n };\n };\n var renderColorPicker = function (editor, foreColor) {\n return function () {\n var cols = foreColor ? $_9xkreprmjkmcws5h.getForeColorCols(editor) : $_9xkreprmjkmcws5h.getBackColorCols(editor);\n var rows = foreColor ? $_9xkreprmjkmcws5h.getForeColorRows(editor) : $_9xkreprmjkmcws5h.getBackColorRows(editor);\n var colorMap = foreColor ? $_9xkreprmjkmcws5h.getForeColorMap(editor) : $_9xkreprmjkmcws5h.getBackColorMap(editor);\n var hasColorPicker = $_9xkreprmjkmcws5h.hasColorPicker(editor);\n return $_4vmnmvrnjkmcws5o.getHtml(cols, rows, colorMap, hasColorPicker);\n };\n };\n var register$1 = function (editor) {\n editor.addButton('forecolor', {\n type: 'colorbutton',\n tooltip: 'Text color',\n format: 'forecolor',\n panel: {\n role: 'application',\n ariaRemember: true,\n html: renderColorPicker(editor, true),\n onclick: onPanelClick(editor, $_9xkreprmjkmcws5h.getForeColorCols(editor))\n },\n onclick: onButtonClick(editor)\n });\n editor.addButton('backcolor', {\n type: 'colorbutton',\n tooltip: 'Background color',\n format: 'hilitecolor',\n panel: {\n role: 'application',\n ariaRemember: true,\n html: renderColorPicker(editor, false),\n onclick: onPanelClick(editor, $_9xkreprmjkmcws5h.getBackColorCols(editor))\n },\n onclick: onButtonClick(editor)\n });\n };\n var $_38ipxvrjjkmcws5c = { register: register$1 };\n\n global.add('textcolor', function (editor) {\n $_fr9cbdrhjkmcws58.register(editor);\n $_38ipxvrjjkmcws5c.register(editor);\n });\n function Plugin () {\n }\n\n return Plugin;\n\n}());\n})();\n","(function () {\nvar media = (function () {\n 'use strict';\n\n var global = tinymce.util.Tools.resolve('tinymce.PluginManager');\n\n var global$1 = tinymce.util.Tools.resolve('tinymce.Env');\n\n var global$2 = tinymce.util.Tools.resolve('tinymce.util.Tools');\n\n var getScripts = function (editor) {\n return editor.getParam('media_scripts');\n };\n var getAudioTemplateCallback = function (editor) {\n return editor.getParam('audio_template_callback');\n };\n var getVideoTemplateCallback = function (editor) {\n return editor.getParam('video_template_callback');\n };\n var hasLiveEmbeds = function (editor) {\n return editor.getParam('media_live_embeds', true);\n };\n var shouldFilterHtml = function (editor) {\n return editor.getParam('media_filter_html', true);\n };\n var getUrlResolver = function (editor) {\n return editor.getParam('media_url_resolver');\n };\n var hasAltSource = function (editor) {\n return editor.getParam('media_alt_source', true);\n };\n var hasPoster = function (editor) {\n return editor.getParam('media_poster', true);\n };\n var hasDimensions = function (editor) {\n return editor.getParam('media_dimensions', true);\n };\n var $_6qt1nth3jkmcwpf2 = {\n getScripts: getScripts,\n getAudioTemplateCallback: getAudioTemplateCallback,\n getVideoTemplateCallback: getVideoTemplateCallback,\n hasLiveEmbeds: hasLiveEmbeds,\n shouldFilterHtml: shouldFilterHtml,\n getUrlResolver: getUrlResolver,\n hasAltSource: hasAltSource,\n hasPoster: hasPoster,\n hasDimensions: hasDimensions\n };\n\n var global$3 = tinymce.util.Tools.resolve('tinymce.html.SaxParser');\n\n var global$4 = tinymce.util.Tools.resolve('tinymce.dom.DOMUtils');\n\n var getVideoScriptMatch = function (prefixes, src) {\n if (prefixes) {\n for (var i = 0; i < prefixes.length; i++) {\n if (src.indexOf(prefixes[i].filter) !== -1) {\n return prefixes[i];\n }\n }\n }\n };\n var $_5qpz66h7jkmcwpf7 = { getVideoScriptMatch: getVideoScriptMatch };\n\n var trimPx = function (value) {\n return value.replace(/px$/, '');\n };\n var addPx = function (value) {\n return /^[0-9.]+$/.test(value) ? value + 'px' : value;\n };\n var getSize = function (name) {\n return function (elm) {\n return elm ? trimPx(elm.style[name]) : '';\n };\n };\n var setSize = function (name) {\n return function (elm, value) {\n if (elm) {\n elm.style[name] = addPx(value);\n }\n };\n };\n var $_1gasfuh8jkmcwpf8 = {\n getMaxWidth: getSize('maxWidth'),\n getMaxHeight: getSize('maxHeight'),\n setMaxWidth: setSize('maxWidth'),\n setMaxHeight: setSize('maxHeight')\n };\n\n var DOM = global$4.DOM;\n var getEphoxEmbedIri = function (elm) {\n return DOM.getAttrib(elm, 'data-ephox-embed-iri');\n };\n var isEphoxEmbed = function (html) {\n var fragment = DOM.createFragment(html);\n return getEphoxEmbedIri(fragment.firstChild) !== '';\n };\n var htmlToDataSax = function (prefixes, html) {\n var data = {};\n global$3({\n validate: false,\n allow_conditional_comments: true,\n special: 'script,noscript',\n start: function (name, attrs) {\n if (!data.source1 && name === 'param') {\n data.source1 = attrs.map.movie;\n }\n if (name === 'iframe' || name === 'object' || name === 'embed' || name === 'video' || name === 'audio') {\n if (!data.type) {\n data.type = name;\n }\n data = global$2.extend(attrs.map, data);\n }\n if (name === 'script') {\n var videoScript = $_5qpz66h7jkmcwpf7.getVideoScriptMatch(prefixes, attrs.map.src);\n if (!videoScript) {\n return;\n }\n data = {\n type: 'script',\n source1: attrs.map.src,\n width: videoScript.width,\n height: videoScript.height\n };\n }\n if (name === 'source') {\n if (!data.source1) {\n data.source1 = attrs.map.src;\n } else if (!data.source2) {\n data.source2 = attrs.map.src;\n }\n }\n if (name === 'img' && !data.poster) {\n data.poster = attrs.map.src;\n }\n }\n }).parse(html);\n data.source1 = data.source1 || data.src || data.data;\n data.source2 = data.source2 || '';\n data.poster = data.poster || '';\n return data;\n };\n var ephoxEmbedHtmlToData = function (html) {\n var fragment = DOM.createFragment(html);\n var div = fragment.firstChild;\n return {\n type: 'ephox-embed-iri',\n source1: getEphoxEmbedIri(div),\n source2: '',\n poster: '',\n width: $_1gasfuh8jkmcwpf8.getMaxWidth(div),\n height: $_1gasfuh8jkmcwpf8.getMaxHeight(div)\n };\n };\n var htmlToData = function (prefixes, html) {\n return isEphoxEmbed(html) ? ephoxEmbedHtmlToData(html) : htmlToDataSax(prefixes, html);\n };\n var $_1f89fyh4jkmcwpf3 = { htmlToData: htmlToData };\n\n var global$5 = tinymce.util.Tools.resolve('tinymce.util.Promise');\n\n var guess = function (url) {\n var mimes = {\n mp3: 'audio/mpeg',\n wav: 'audio/wav',\n mp4: 'video/mp4',\n webm: 'video/webm',\n ogg: 'video/ogg',\n swf: 'application/x-shockwave-flash'\n };\n var fileEnd = url.toLowerCase().split('.').pop();\n var mime = mimes[fileEnd];\n return mime ? mime : '';\n };\n var $_e86s3ihcjkmcwpfk = { guess: guess };\n\n var global$6 = tinymce.util.Tools.resolve('tinymce.html.Writer');\n\n var global$7 = tinymce.util.Tools.resolve('tinymce.html.Schema');\n\n var DOM$1 = global$4.DOM;\n var setAttributes = function (attrs, updatedAttrs) {\n var name;\n var i;\n var value;\n var attr;\n for (name in updatedAttrs) {\n value = '' + updatedAttrs[name];\n if (attrs.map[name]) {\n i = attrs.length;\n while (i--) {\n attr = attrs[i];\n if (attr.name === name) {\n if (value) {\n attrs.map[name] = value;\n attr.value = value;\n } else {\n delete attrs.map[name];\n attrs.splice(i, 1);\n }\n }\n }\n } else if (value) {\n attrs.push({\n name: name,\n value: value\n });\n attrs.map[name] = value;\n }\n }\n };\n var normalizeHtml = function (html) {\n var writer = global$6();\n var parser = global$3(writer);\n parser.parse(html);\n return writer.getContent();\n };\n var updateHtmlSax = function (html, data, updateAll) {\n var writer = global$6();\n var sourceCount = 0;\n var hasImage;\n global$3({\n validate: false,\n allow_conditional_comments: true,\n special: 'script,noscript',\n comment: function (text) {\n writer.comment(text);\n },\n cdata: function (text) {\n writer.cdata(text);\n },\n text: function (text, raw) {\n writer.text(text, raw);\n },\n start: function (name, attrs, empty) {\n switch (name) {\n case 'video':\n case 'object':\n case 'embed':\n case 'img':\n case 'iframe':\n if (data.height !== undefined && data.width !== undefined) {\n setAttributes(attrs, {\n width: data.width,\n height: data.height\n });\n }\n break;\n }\n if (updateAll) {\n switch (name) {\n case 'video':\n setAttributes(attrs, {\n poster: data.poster,\n src: ''\n });\n if (data.source2) {\n setAttributes(attrs, { src: '' });\n }\n break;\n case 'iframe':\n setAttributes(attrs, { src: data.source1 });\n break;\n case 'source':\n sourceCount++;\n if (sourceCount <= 2) {\n setAttributes(attrs, {\n src: data['source' + sourceCount],\n type: data['source' + sourceCount + 'mime']\n });\n if (!data['source' + sourceCount]) {\n return;\n }\n }\n break;\n case 'img':\n if (!data.poster) {\n return;\n }\n hasImage = true;\n break;\n }\n }\n writer.start(name, attrs, empty);\n },\n end: function (name) {\n if (name === 'video' && updateAll) {\n for (var index = 1; index <= 2; index++) {\n if (data['source' + index]) {\n var attrs = [];\n attrs.map = {};\n if (sourceCount < index) {\n setAttributes(attrs, {\n src: data['source' + index],\n type: data['source' + index + 'mime']\n });\n writer.start('source', attrs, true);\n }\n }\n }\n }\n if (data.poster && name === 'object' && updateAll && !hasImage) {\n var imgAttrs = [];\n imgAttrs.map = {};\n setAttributes(imgAttrs, {\n src: data.poster,\n width: data.width,\n height: data.height\n });\n writer.start('img', imgAttrs, true);\n }\n writer.end(name);\n }\n }, global$7({})).parse(html);\n return writer.getContent();\n };\n var isEphoxEmbed$1 = function (html) {\n var fragment = DOM$1.createFragment(html);\n return DOM$1.getAttrib(fragment.firstChild, 'data-ephox-embed-iri') !== '';\n };\n var updateEphoxEmbed = function (html, data) {\n var fragment = DOM$1.createFragment(html);\n var div = fragment.firstChild;\n $_1gasfuh8jkmcwpf8.setMaxWidth(div, data.width);\n $_1gasfuh8jkmcwpf8.setMaxHeight(div, data.height);\n return normalizeHtml(div.outerHTML);\n };\n var updateHtml = function (html, data, updateAll) {\n return isEphoxEmbed$1(html) ? updateEphoxEmbed(html, data) : updateHtmlSax(html, data, updateAll);\n };\n var $_6s992lhdjkmcwpfn = { updateHtml: updateHtml };\n\n var urlPatterns = [\n {\n regex: /youtu\\.be\\/([\\w\\-_\\?&=.]+)/i,\n type: 'iframe',\n w: 560,\n h: 314,\n url: '//www.youtube.com/embed/$1',\n allowFullscreen: true\n },\n {\n regex: /youtube\\.com(.+)v=([^&]+)(&([a-z0-9&=\\-_]+))?/i,\n type: 'iframe',\n w: 560,\n h: 314,\n url: '//www.youtube.com/embed/$2?$4',\n allowFullscreen: true\n },\n {\n regex: /youtube.com\\/embed\\/([a-z0-9\\?&=\\-_]+)/i,\n type: 'iframe',\n w: 560,\n h: 314,\n url: '//www.youtube.com/embed/$1',\n allowFullscreen: true\n },\n {\n regex: /vimeo\\.com\\/([0-9]+)/,\n type: 'iframe',\n w: 425,\n h: 350,\n url: '//player.vimeo.com/video/$1?title=0&byline=0&portrait=0&color=8dc7dc',\n allowFullscreen: true\n },\n {\n regex: /vimeo\\.com\\/(.*)\\/([0-9]+)/,\n type: 'iframe',\n w: 425,\n h: 350,\n url: '//player.vimeo.com/video/$2?title=0&byline=0',\n allowFullscreen: true\n },\n {\n regex: /maps\\.google\\.([a-z]{2,3})\\/maps\\/(.+)msid=(.+)/,\n type: 'iframe',\n w: 425,\n h: 350,\n url: '//maps.google.com/maps/ms?msid=$2&output=embed\"',\n allowFullscreen: false\n },\n {\n regex: /dailymotion\\.com\\/video\\/([^_]+)/,\n type: 'iframe',\n w: 480,\n h: 270,\n url: '//www.dailymotion.com/embed/video/$1',\n allowFullscreen: true\n },\n {\n regex: /dai\\.ly\\/([^_]+)/,\n type: 'iframe',\n w: 480,\n h: 270,\n url: '//www.dailymotion.com/embed/video/$1',\n allowFullscreen: true\n }\n ];\n var getUrl = function (pattern, url) {\n var match = pattern.regex.exec(url);\n var newUrl = pattern.url;\n var _loop_1 = function (i) {\n newUrl = newUrl.replace('$' + i, function () {\n return match[i] ? match[i] : '';\n });\n };\n for (var i = 0; i < match.length; i++) {\n _loop_1(i);\n }\n return newUrl.replace(/\\?$/, '');\n };\n var matchPattern = function (url) {\n var pattern = urlPatterns.filter(function (pattern) {\n return pattern.regex.test(url);\n });\n if (pattern.length > 0) {\n return global$2.extend({}, pattern[0], { url: getUrl(pattern[0], url) });\n } else {\n return null;\n }\n };\n\n var getIframeHtml = function (data) {\n var allowFullscreen = data.allowFullscreen ? ' allowFullscreen=\"1\"' : '';\n return '';\n };\n var getFlashHtml = function (data) {\n var html = '';\n if (data.poster) {\n html += '';\n }\n html += '';\n return html;\n };\n var getAudioHtml = function (data, audioTemplateCallback) {\n if (audioTemplateCallback) {\n return audioTemplateCallback(data);\n } else {\n return '';\n }\n };\n var getVideoHtml = function (data, videoTemplateCallback) {\n if (videoTemplateCallback) {\n return videoTemplateCallback(data);\n } else {\n return '';\n }\n };\n var getScriptHtml = function (data) {\n return '';\n };\n var dataToHtml = function (editor, dataIn) {\n var data = global$2.extend({}, dataIn);\n if (!data.source1) {\n global$2.extend(data, $_1f89fyh4jkmcwpf3.htmlToData($_6qt1nth3jkmcwpf2.getScripts(editor), data.embed));\n if (!data.source1) {\n return '';\n }\n }\n if (!data.source2) {\n data.source2 = '';\n }\n if (!data.poster) {\n data.poster = '';\n }\n data.source1 = editor.convertURL(data.source1, 'source');\n data.source2 = editor.convertURL(data.source2, 'source');\n data.source1mime = $_e86s3ihcjkmcwpfk.guess(data.source1);\n data.source2mime = $_e86s3ihcjkmcwpfk.guess(data.source2);\n data.poster = editor.convertURL(data.poster, 'poster');\n var pattern = matchPattern(data.source1);\n if (pattern) {\n data.source1 = pattern.url;\n data.type = pattern.type;\n data.allowFullscreen = pattern.allowFullscreen;\n data.width = data.width || pattern.w;\n data.height = data.height || pattern.h;\n }\n if (data.embed) {\n return $_6s992lhdjkmcwpfn.updateHtml(data.embed, data, true);\n } else {\n var videoScript = $_5qpz66h7jkmcwpf7.getVideoScriptMatch($_6qt1nth3jkmcwpf2.getScripts(editor), data.source1);\n if (videoScript) {\n data.type = 'script';\n data.width = videoScript.width;\n data.height = videoScript.height;\n }\n var audioTemplateCallback = $_6qt1nth3jkmcwpf2.getAudioTemplateCallback(editor);\n var videoTemplateCallback = $_6qt1nth3jkmcwpf2.getVideoTemplateCallback(editor);\n data.width = data.width || 300;\n data.height = data.height || 150;\n global$2.each(data, function (value, key) {\n data[key] = editor.dom.encode(value);\n });\n if (data.type === 'iframe') {\n return getIframeHtml(data);\n } else if (data.source1mime === 'application/x-shockwave-flash') {\n return getFlashHtml(data);\n } else if (data.source1mime.indexOf('audio') !== -1) {\n return getAudioHtml(data, audioTemplateCallback);\n } else if (data.type === 'script') {\n return getScriptHtml(data);\n } else {\n return getVideoHtml(data, videoTemplateCallback);\n }\n }\n };\n var $_65qpjdhbjkmcwpfc = { dataToHtml: dataToHtml };\n\n var cache = {};\n var embedPromise = function (data, dataToHtml, handler) {\n return new global$5(function (res, rej) {\n var wrappedResolve = function (response) {\n if (response.html) {\n cache[data.source1] = response;\n }\n return res({\n url: data.source1,\n html: response.html ? response.html : dataToHtml(data)\n });\n };\n if (cache[data.source1]) {\n wrappedResolve(cache[data.source1]);\n } else {\n handler({ url: data.source1 }, wrappedResolve, rej);\n }\n });\n };\n var defaultPromise = function (data, dataToHtml) {\n return new global$5(function (res) {\n res({\n html: dataToHtml(data),\n url: data.source1\n });\n });\n };\n var loadedData = function (editor) {\n return function (data) {\n return $_65qpjdhbjkmcwpfc.dataToHtml(editor, data);\n };\n };\n var getEmbedHtml = function (editor, data) {\n var embedHandler = $_6qt1nth3jkmcwpf2.getUrlResolver(editor);\n return embedHandler ? embedPromise(data, loadedData(editor), embedHandler) : defaultPromise(data, loadedData(editor));\n };\n var isCached = function (url) {\n return cache.hasOwnProperty(url);\n };\n var $_74pv8fh9jkmcwpf9 = {\n getEmbedHtml: getEmbedHtml,\n isCached: isCached\n };\n\n var doSyncSize = function (widthCtrl, heightCtrl) {\n widthCtrl.state.set('oldVal', widthCtrl.value());\n heightCtrl.state.set('oldVal', heightCtrl.value());\n };\n var doSizeControls = function (win, f) {\n var widthCtrl = win.find('#width')[0];\n var heightCtrl = win.find('#height')[0];\n var constrained = win.find('#constrain')[0];\n if (widthCtrl && heightCtrl && constrained) {\n f(widthCtrl, heightCtrl, constrained.checked());\n }\n };\n var doUpdateSize = function (widthCtrl, heightCtrl, isContrained) {\n var oldWidth = widthCtrl.state.get('oldVal');\n var oldHeight = heightCtrl.state.get('oldVal');\n var newWidth = widthCtrl.value();\n var newHeight = heightCtrl.value();\n if (isContrained && oldWidth && oldHeight && newWidth && newHeight) {\n if (newWidth !== oldWidth) {\n newHeight = Math.round(newWidth / oldWidth * newHeight);\n if (!isNaN(newHeight)) {\n heightCtrl.value(newHeight);\n }\n } else {\n newWidth = Math.round(newHeight / oldHeight * newWidth);\n if (!isNaN(newWidth)) {\n widthCtrl.value(newWidth);\n }\n }\n }\n doSyncSize(widthCtrl, heightCtrl);\n };\n var syncSize = function (win) {\n doSizeControls(win, doSyncSize);\n };\n var updateSize = function (win) {\n doSizeControls(win, doUpdateSize);\n };\n var createUi = function (onChange) {\n var recalcSize = function () {\n onChange(function (win) {\n updateSize(win);\n });\n };\n return {\n type: 'container',\n label: 'Dimensions',\n layout: 'flex',\n align: 'center',\n spacing: 5,\n items: [\n {\n name: 'width',\n type: 'textbox',\n maxLength: 5,\n size: 5,\n onchange: recalcSize,\n ariaLabel: 'Width'\n },\n {\n type: 'label',\n text: 'x'\n },\n {\n name: 'height',\n type: 'textbox',\n maxLength: 5,\n size: 5,\n onchange: recalcSize,\n ariaLabel: 'Height'\n },\n {\n name: 'constrain',\n type: 'checkbox',\n checked: true,\n text: 'Constrain proportions'\n }\n ]\n };\n };\n var $_gd8vqohhjkmcwpg2 = {\n createUi: createUi,\n syncSize: syncSize,\n updateSize: updateSize\n };\n\n var embedChange = global$1.ie && global$1.ie <= 8 ? 'onChange' : 'onInput';\n var handleError = function (editor) {\n return function (error) {\n var errorMessage = error && error.msg ? 'Media embed handler error: ' + error.msg : 'Media embed handler threw unknown error.';\n editor.notificationManager.open({\n type: 'error',\n text: errorMessage\n });\n };\n };\n var getData = function (editor) {\n var element = editor.selection.getNode();\n var dataEmbed = element.getAttribute('data-ephox-embed-iri');\n if (dataEmbed) {\n return {\n 'source1': dataEmbed,\n 'data-ephox-embed-iri': dataEmbed,\n 'width': $_1gasfuh8jkmcwpf8.getMaxWidth(element),\n 'height': $_1gasfuh8jkmcwpf8.getMaxHeight(element)\n };\n }\n return element.getAttribute('data-mce-object') ? $_1f89fyh4jkmcwpf3.htmlToData($_6qt1nth3jkmcwpf2.getScripts(editor), editor.serializer.serialize(element, { selection: true })) : {};\n };\n var getSource = function (editor) {\n var elm = editor.selection.getNode();\n if (elm.getAttribute('data-mce-object') || elm.getAttribute('data-ephox-embed-iri')) {\n return editor.selection.getContent();\n }\n };\n var addEmbedHtml = function (win, editor) {\n return function (response) {\n var html = response.html;\n var embed = win.find('#embed')[0];\n var data = global$2.extend($_1f89fyh4jkmcwpf3.htmlToData($_6qt1nth3jkmcwpf2.getScripts(editor), html), { source1: response.url });\n win.fromJSON(data);\n if (embed) {\n embed.value(html);\n $_gd8vqohhjkmcwpg2.updateSize(win);\n }\n };\n };\n var selectPlaceholder = function (editor, beforeObjects) {\n var i;\n var y;\n var afterObjects = editor.dom.select('img[data-mce-object]');\n for (i = 0; i < beforeObjects.length; i++) {\n for (y = afterObjects.length - 1; y >= 0; y--) {\n if (beforeObjects[i] === afterObjects[y]) {\n afterObjects.splice(y, 1);\n }\n }\n }\n editor.selection.select(afterObjects[0]);\n };\n var handleInsert = function (editor, html) {\n var beforeObjects = editor.dom.select('img[data-mce-object]');\n editor.insertContent(html);\n selectPlaceholder(editor, beforeObjects);\n editor.nodeChanged();\n };\n var submitForm = function (win, editor) {\n var data = win.toJSON();\n data.embed = $_6s992lhdjkmcwpfn.updateHtml(data.embed, data);\n if (data.embed && $_74pv8fh9jkmcwpf9.isCached(data.source1)) {\n handleInsert(editor, data.embed);\n } else {\n $_74pv8fh9jkmcwpf9.getEmbedHtml(editor, data).then(function (response) {\n handleInsert(editor, response.html);\n }).catch(handleError(editor));\n }\n };\n var populateMeta = function (win, meta) {\n global$2.each(meta, function (value, key) {\n win.find('#' + key).value(value);\n });\n };\n var showDialog = function (editor) {\n var win;\n var data;\n var generalFormItems = [{\n name: 'source1',\n type: 'filepicker',\n filetype: 'media',\n size: 40,\n autofocus: true,\n label: 'Source',\n onpaste: function () {\n setTimeout(function () {\n $_74pv8fh9jkmcwpf9.getEmbedHtml(editor, win.toJSON()).then(addEmbedHtml(win, editor)).catch(handleError(editor));\n }, 1);\n },\n onchange: function (e) {\n $_74pv8fh9jkmcwpf9.getEmbedHtml(editor, win.toJSON()).then(addEmbedHtml(win, editor)).catch(handleError(editor));\n populateMeta(win, e.meta);\n },\n onbeforecall: function (e) {\n e.meta = win.toJSON();\n }\n }];\n var advancedFormItems = [];\n var reserialise = function (update) {\n update(win);\n data = win.toJSON();\n win.find('#embed').value($_6s992lhdjkmcwpfn.updateHtml(data.embed, data));\n };\n if ($_6qt1nth3jkmcwpf2.hasAltSource(editor)) {\n advancedFormItems.push({\n name: 'source2',\n type: 'filepicker',\n filetype: 'media',\n size: 40,\n label: 'Alternative source'\n });\n }\n if ($_6qt1nth3jkmcwpf2.hasPoster(editor)) {\n advancedFormItems.push({\n name: 'poster',\n type: 'filepicker',\n filetype: 'image',\n size: 40,\n label: 'Poster'\n });\n }\n if ($_6qt1nth3jkmcwpf2.hasDimensions(editor)) {\n var control = $_gd8vqohhjkmcwpg2.createUi(reserialise);\n generalFormItems.push(control);\n }\n data = getData(editor);\n var embedTextBox = {\n id: 'mcemediasource',\n type: 'textbox',\n flex: 1,\n name: 'embed',\n value: getSource(editor),\n multiline: true,\n rows: 5,\n label: 'Source'\n };\n var updateValueOnChange = function () {\n data = global$2.extend({}, $_1f89fyh4jkmcwpf3.htmlToData($_6qt1nth3jkmcwpf2.getScripts(editor), this.value()));\n this.parent().parent().fromJSON(data);\n };\n embedTextBox[embedChange] = updateValueOnChange;\n var body = [\n {\n title: 'General',\n type: 'form',\n items: generalFormItems\n },\n {\n title: 'Embed',\n type: 'container',\n layout: 'flex',\n direction: 'column',\n align: 'stretch',\n padding: 10,\n spacing: 10,\n items: [\n {\n type: 'label',\n text: 'Paste your embed code below:',\n forId: 'mcemediasource'\n },\n embedTextBox\n ]\n }\n ];\n if (advancedFormItems.length > 0) {\n body.push({\n title: 'Advanced',\n type: 'form',\n items: advancedFormItems\n });\n }\n win = editor.windowManager.open({\n title: 'Insert/edit media',\n data: data,\n bodyType: 'tabpanel',\n body: body,\n onSubmit: function () {\n $_gd8vqohhjkmcwpg2.updateSize(win);\n submitForm(win, editor);\n }\n });\n $_gd8vqohhjkmcwpg2.syncSize(win);\n };\n var $_3njyjoh0jkmcwpew = { showDialog: showDialog };\n\n var get = function (editor) {\n var showDialog = function () {\n $_3njyjoh0jkmcwpew.showDialog(editor);\n };\n return { showDialog: showDialog };\n };\n var $_eg0prjgzjkmcwpeu = { get: get };\n\n var register = function (editor) {\n var showDialog = function () {\n $_3njyjoh0jkmcwpew.showDialog(editor);\n };\n editor.addCommand('mceMedia', showDialog);\n };\n var $_8o48izhijkmcwpg5 = { register: register };\n\n var global$8 = tinymce.util.Tools.resolve('tinymce.html.Node');\n\n var sanitize = function (editor, html) {\n if ($_6qt1nth3jkmcwpf2.shouldFilterHtml(editor) === false) {\n return html;\n }\n var writer = global$6();\n var blocked;\n global$3({\n validate: false,\n allow_conditional_comments: false,\n special: 'script,noscript',\n comment: function (text) {\n writer.comment(text);\n },\n cdata: function (text) {\n writer.cdata(text);\n },\n text: function (text, raw) {\n writer.text(text, raw);\n },\n start: function (name, attrs, empty) {\n blocked = true;\n if (name === 'script' || name === 'noscript') {\n return;\n }\n for (var i = 0; i < attrs.length; i++) {\n if (attrs[i].name.indexOf('on') === 0) {\n return;\n }\n if (attrs[i].name === 'style') {\n attrs[i].value = editor.dom.serializeStyle(editor.dom.parseStyle(attrs[i].value), name);\n }\n }\n writer.start(name, attrs, empty);\n blocked = false;\n },\n end: function (name) {\n if (blocked) {\n return;\n }\n writer.end(name);\n }\n }, global$7({})).parse(html);\n return writer.getContent();\n };\n var $_f1oicehmjkmcwpge = { sanitize: sanitize };\n\n var createPlaceholderNode = function (editor, node) {\n var placeHolder;\n var name = node.name;\n placeHolder = new global$8('img', 1);\n placeHolder.shortEnded = true;\n retainAttributesAndInnerHtml(editor, node, placeHolder);\n placeHolder.attr({\n 'width': node.attr('width') || '300',\n 'height': node.attr('height') || (name === 'audio' ? '30' : '150'),\n 'style': node.attr('style'),\n 'src': global$1.transparentSrc,\n 'data-mce-object': name,\n 'class': 'mce-object mce-object-' + name\n });\n return placeHolder;\n };\n var createPreviewIframeNode = function (editor, node) {\n var previewWrapper;\n var previewNode;\n var shimNode;\n var name = node.name;\n previewWrapper = new global$8('span', 1);\n previewWrapper.attr({\n 'contentEditable': 'false',\n 'style': node.attr('style'),\n 'data-mce-object': name,\n 'class': 'mce-preview-object mce-object-' + name\n });\n retainAttributesAndInnerHtml(editor, node, previewWrapper);\n previewNode = new global$8(name, 1);\n previewNode.attr({\n src: node.attr('src'),\n allowfullscreen: node.attr('allowfullscreen'),\n style: node.attr('style'),\n class: node.attr('class'),\n width: node.attr('width'),\n height: node.attr('height'),\n frameborder: '0'\n });\n shimNode = new global$8('span', 1);\n shimNode.attr('class', 'mce-shim');\n previewWrapper.append(previewNode);\n previewWrapper.append(shimNode);\n return previewWrapper;\n };\n var retainAttributesAndInnerHtml = function (editor, sourceNode, targetNode) {\n var attrName;\n var attrValue;\n var attribs;\n var ai;\n var innerHtml;\n attribs = sourceNode.attributes;\n ai = attribs.length;\n while (ai--) {\n attrName = attribs[ai].name;\n attrValue = attribs[ai].value;\n if (attrName !== 'width' && attrName !== 'height' && attrName !== 'style') {\n if (attrName === 'data' || attrName === 'src') {\n attrValue = editor.convertURL(attrValue, attrName);\n }\n targetNode.attr('data-mce-p-' + attrName, attrValue);\n }\n }\n innerHtml = sourceNode.firstChild && sourceNode.firstChild.value;\n if (innerHtml) {\n targetNode.attr('data-mce-html', escape($_f1oicehmjkmcwpge.sanitize(editor, innerHtml)));\n targetNode.firstChild = null;\n }\n };\n var isWithinEphoxEmbed = function (node) {\n while (node = node.parent) {\n if (node.attr('data-ephox-embed-iri')) {\n return true;\n }\n }\n return false;\n };\n var placeHolderConverter = function (editor) {\n return function (nodes) {\n var i = nodes.length;\n var node;\n var videoScript;\n while (i--) {\n node = nodes[i];\n if (!node.parent) {\n continue;\n }\n if (node.parent.attr('data-mce-object')) {\n continue;\n }\n if (node.name === 'script') {\n videoScript = $_5qpz66h7jkmcwpf7.getVideoScriptMatch($_6qt1nth3jkmcwpf2.getScripts(editor), node.attr('src'));\n if (!videoScript) {\n continue;\n }\n }\n if (videoScript) {\n if (videoScript.width) {\n node.attr('width', videoScript.width.toString());\n }\n if (videoScript.height) {\n node.attr('height', videoScript.height.toString());\n }\n }\n if (node.name === 'iframe' && $_6qt1nth3jkmcwpf2.hasLiveEmbeds(editor) && global$1.ceFalse) {\n if (!isWithinEphoxEmbed(node)) {\n node.replace(createPreviewIframeNode(editor, node));\n }\n } else {\n if (!isWithinEphoxEmbed(node)) {\n node.replace(createPlaceholderNode(editor, node));\n }\n }\n }\n };\n };\n var $_f6hjinhljkmcwpga = {\n createPreviewIframeNode: createPreviewIframeNode,\n createPlaceholderNode: createPlaceholderNode,\n placeHolderConverter: placeHolderConverter\n };\n\n var setup = function (editor) {\n editor.on('preInit', function () {\n var specialElements = editor.schema.getSpecialElements();\n global$2.each('video audio iframe object'.split(' '), function (name) {\n specialElements[name] = new RegExp(']*>', 'gi');\n });\n var boolAttrs = editor.schema.getBoolAttrs();\n global$2.each('webkitallowfullscreen mozallowfullscreen allowfullscreen'.split(' '), function (name) {\n boolAttrs[name] = {};\n });\n editor.parser.addNodeFilter('iframe,video,audio,object,embed,script', $_f6hjinhljkmcwpga.placeHolderConverter(editor));\n editor.serializer.addAttributeFilter('data-mce-object', function (nodes, name) {\n var i = nodes.length;\n var node;\n var realElm;\n var ai;\n var attribs;\n var innerHtml;\n var innerNode;\n var realElmName;\n var className;\n while (i--) {\n node = nodes[i];\n if (!node.parent) {\n continue;\n }\n realElmName = node.attr(name);\n realElm = new global$8(realElmName, 1);\n if (realElmName !== 'audio' && realElmName !== 'script') {\n className = node.attr('class');\n if (className && className.indexOf('mce-preview-object') !== -1) {\n realElm.attr({\n width: node.firstChild.attr('width'),\n height: node.firstChild.attr('height')\n });\n } else {\n realElm.attr({\n width: node.attr('width'),\n height: node.attr('height')\n });\n }\n }\n realElm.attr({ style: node.attr('style') });\n attribs = node.attributes;\n ai = attribs.length;\n while (ai--) {\n var attrName = attribs[ai].name;\n if (attrName.indexOf('data-mce-p-') === 0) {\n realElm.attr(attrName.substr(11), attribs[ai].value);\n }\n }\n if (realElmName === 'script') {\n realElm.attr('type', 'text/javascript');\n }\n innerHtml = node.attr('data-mce-html');\n if (innerHtml) {\n innerNode = new global$8('#text', 3);\n innerNode.raw = true;\n innerNode.value = $_f1oicehmjkmcwpge.sanitize(editor, unescape(innerHtml));\n realElm.append(innerNode);\n }\n node.replace(realElm);\n }\n });\n });\n editor.on('setContent', function () {\n editor.$('span.mce-preview-object').each(function (index, elm) {\n var $elm = editor.$(elm);\n if ($elm.find('span.mce-shim', elm).length === 0) {\n $elm.append('');\n }\n });\n });\n };\n var $_b6ycdhhjjkmcwpg6 = { setup: setup };\n\n var setup$1 = function (editor) {\n editor.on('ResolveName', function (e) {\n var name;\n if (e.target.nodeType === 1 && (name = e.target.getAttribute('data-mce-object'))) {\n e.name = name;\n }\n });\n };\n var $_c1o1r8hnjkmcwpgg = { setup: setup$1 };\n\n var setup$2 = function (editor) {\n editor.on('click keyup', function () {\n var selectedNode = editor.selection.getNode();\n if (selectedNode && editor.dom.hasClass(selectedNode, 'mce-preview-object')) {\n if (editor.dom.getAttrib(selectedNode, 'data-mce-selected')) {\n selectedNode.setAttribute('data-mce-selected', '2');\n }\n }\n });\n editor.on('ObjectSelected', function (e) {\n var objectType = e.target.getAttribute('data-mce-object');\n if (objectType === 'audio' || objectType === 'script') {\n e.preventDefault();\n }\n });\n editor.on('objectResized', function (e) {\n var target = e.target;\n var html;\n if (target.getAttribute('data-mce-object')) {\n html = target.getAttribute('data-mce-html');\n if (html) {\n html = unescape(html);\n target.setAttribute('data-mce-html', escape($_6s992lhdjkmcwpfn.updateHtml(html, {\n width: e.width,\n height: e.height\n })));\n }\n }\n });\n };\n var $_8yods0hojkmcwpgh = { setup: setup$2 };\n\n var register$1 = function (editor) {\n editor.addButton('media', {\n tooltip: 'Insert/edit media',\n cmd: 'mceMedia',\n stateSelector: [\n 'img[data-mce-object]',\n 'span[data-mce-object]',\n 'div[data-ephox-embed-iri]'\n ]\n });\n editor.addMenuItem('media', {\n icon: 'media',\n text: 'Media',\n cmd: 'mceMedia',\n context: 'insert',\n prependToContext: true\n });\n };\n var $_ew8gthhpjkmcwpgk = { register: register$1 };\n\n global.add('media', function (editor) {\n $_8o48izhijkmcwpg5.register(editor);\n $_ew8gthhpjkmcwpgk.register(editor);\n $_c1o1r8hnjkmcwpgg.setup(editor);\n $_b6ycdhhjjkmcwpg6.setup(editor);\n $_8yods0hojkmcwpgh.setup(editor);\n return $_eg0prjgzjkmcwpeu.get(editor);\n });\n function Plugin () {\n }\n\n return Plugin;\n\n}());\n})();\n","var map = {\n\t\"./af\": \"2bfb\",\n\t\"./af.js\": \"2bfb\",\n\t\"./ar\": \"8e73\",\n\t\"./ar-dz\": \"a356\",\n\t\"./ar-dz.js\": \"a356\",\n\t\"./ar-kw\": \"423e\",\n\t\"./ar-kw.js\": \"423e\",\n\t\"./ar-ly\": \"1cfd\",\n\t\"./ar-ly.js\": \"1cfd\",\n\t\"./ar-ma\": \"0a84\",\n\t\"./ar-ma.js\": \"0a84\",\n\t\"./ar-ps\": \"4c98\",\n\t\"./ar-ps.js\": \"4c98\",\n\t\"./ar-sa\": \"8230\",\n\t\"./ar-sa.js\": \"8230\",\n\t\"./ar-tn\": \"6d83\",\n\t\"./ar-tn.js\": \"6d83\",\n\t\"./ar.js\": \"8e73\",\n\t\"./az\": \"485c\",\n\t\"./az.js\": \"485c\",\n\t\"./be\": \"1fc1\",\n\t\"./be.js\": \"1fc1\",\n\t\"./bg\": \"84aa\",\n\t\"./bg.js\": \"84aa\",\n\t\"./bm\": \"a7fa\",\n\t\"./bm.js\": \"a7fa\",\n\t\"./bn\": \"9043\",\n\t\"./bn-bd\": \"9686\",\n\t\"./bn-bd.js\": \"9686\",\n\t\"./bn.js\": \"9043\",\n\t\"./bo\": \"d26a\",\n\t\"./bo.js\": \"d26a\",\n\t\"./br\": \"6887\",\n\t\"./br.js\": \"6887\",\n\t\"./bs\": \"2554\",\n\t\"./bs.js\": \"2554\",\n\t\"./ca\": \"d716\",\n\t\"./ca.js\": \"d716\",\n\t\"./cs\": \"3c0d\",\n\t\"./cs.js\": \"3c0d\",\n\t\"./cv\": \"03ec\",\n\t\"./cv.js\": \"03ec\",\n\t\"./cy\": \"9797\",\n\t\"./cy.js\": \"9797\",\n\t\"./da\": \"0f14\",\n\t\"./da.js\": \"0f14\",\n\t\"./de\": \"b469\",\n\t\"./de-at\": \"b3eb\",\n\t\"./de-at.js\": \"b3eb\",\n\t\"./de-ch\": \"bb71\",\n\t\"./de-ch.js\": \"bb71\",\n\t\"./de.js\": \"b469\",\n\t\"./dv\": \"598a\",\n\t\"./dv.js\": \"598a\",\n\t\"./el\": \"8d47\",\n\t\"./el.js\": \"8d47\",\n\t\"./en-au\": \"0e6b\",\n\t\"./en-au.js\": \"0e6b\",\n\t\"./en-ca\": \"3886\",\n\t\"./en-ca.js\": \"3886\",\n\t\"./en-gb\": \"39a6\",\n\t\"./en-gb.js\": \"39a6\",\n\t\"./en-ie\": \"e1d3\",\n\t\"./en-ie.js\": \"e1d3\",\n\t\"./en-il\": \"7333\",\n\t\"./en-il.js\": \"7333\",\n\t\"./en-in\": \"ec2e\",\n\t\"./en-in.js\": \"ec2e\",\n\t\"./en-nz\": \"6f50\",\n\t\"./en-nz.js\": \"6f50\",\n\t\"./en-sg\": \"b7e9\",\n\t\"./en-sg.js\": \"b7e9\",\n\t\"./eo\": \"65db\",\n\t\"./eo.js\": \"65db\",\n\t\"./es\": \"898b\",\n\t\"./es-do\": \"0a3c\",\n\t\"./es-do.js\": \"0a3c\",\n\t\"./es-mx\": \"b5b7\",\n\t\"./es-mx.js\": \"b5b7\",\n\t\"./es-us\": \"55c9\",\n\t\"./es-us.js\": \"55c9\",\n\t\"./es.js\": \"898b\",\n\t\"./et\": \"ec18\",\n\t\"./et.js\": \"ec18\",\n\t\"./eu\": \"0ff2\",\n\t\"./eu.js\": \"0ff2\",\n\t\"./fa\": \"8df4\",\n\t\"./fa.js\": \"8df4\",\n\t\"./fi\": \"81e9\",\n\t\"./fi.js\": \"81e9\",\n\t\"./fil\": \"d69a\",\n\t\"./fil.js\": \"d69a\",\n\t\"./fo\": \"0721\",\n\t\"./fo.js\": \"0721\",\n\t\"./fr\": \"9f26\",\n\t\"./fr-ca\": \"d9f8\",\n\t\"./fr-ca.js\": \"d9f8\",\n\t\"./fr-ch\": \"0e49\",\n\t\"./fr-ch.js\": \"0e49\",\n\t\"./fr.js\": \"9f26\",\n\t\"./fy\": \"7118\",\n\t\"./fy.js\": \"7118\",\n\t\"./ga\": \"5120\",\n\t\"./ga.js\": \"5120\",\n\t\"./gd\": \"f6b4\",\n\t\"./gd.js\": \"f6b4\",\n\t\"./gl\": \"8840\",\n\t\"./gl.js\": \"8840\",\n\t\"./gom-deva\": \"aaf2\",\n\t\"./gom-deva.js\": \"aaf2\",\n\t\"./gom-latn\": \"0caa\",\n\t\"./gom-latn.js\": \"0caa\",\n\t\"./gu\": \"e0c5\",\n\t\"./gu.js\": \"e0c5\",\n\t\"./he\": \"c7aa\",\n\t\"./he.js\": \"c7aa\",\n\t\"./hi\": \"dc4d\",\n\t\"./hi.js\": \"dc4d\",\n\t\"./hr\": \"4ba9\",\n\t\"./hr.js\": \"4ba9\",\n\t\"./hu\": \"5b14\",\n\t\"./hu.js\": \"5b14\",\n\t\"./hy-am\": \"d6b6\",\n\t\"./hy-am.js\": \"d6b6\",\n\t\"./id\": \"5038\",\n\t\"./id.js\": \"5038\",\n\t\"./is\": \"0558\",\n\t\"./is.js\": \"0558\",\n\t\"./it\": \"6e98\",\n\t\"./it-ch\": \"6f12\",\n\t\"./it-ch.js\": \"6f12\",\n\t\"./it.js\": \"6e98\",\n\t\"./ja\": \"079e\",\n\t\"./ja.js\": \"079e\",\n\t\"./jv\": \"b540\",\n\t\"./jv.js\": \"b540\",\n\t\"./ka\": \"201b\",\n\t\"./ka.js\": \"201b\",\n\t\"./kk\": \"6d79\",\n\t\"./kk.js\": \"6d79\",\n\t\"./km\": \"e81d\",\n\t\"./km.js\": \"e81d\",\n\t\"./kn\": \"3e92\",\n\t\"./kn.js\": \"3e92\",\n\t\"./ko\": \"22f8\",\n\t\"./ko.js\": \"22f8\",\n\t\"./ku\": \"2421\",\n\t\"./ku-kmr\": \"7558\",\n\t\"./ku-kmr.js\": \"7558\",\n\t\"./ku.js\": \"2421\",\n\t\"./ky\": \"9609\",\n\t\"./ky.js\": \"9609\",\n\t\"./lb\": \"440c\",\n\t\"./lb.js\": \"440c\",\n\t\"./lo\": \"b29d\",\n\t\"./lo.js\": \"b29d\",\n\t\"./lt\": \"26f9\",\n\t\"./lt.js\": \"26f9\",\n\t\"./lv\": \"b97c\",\n\t\"./lv.js\": \"b97c\",\n\t\"./me\": \"293c\",\n\t\"./me.js\": \"293c\",\n\t\"./mi\": \"688b\",\n\t\"./mi.js\": \"688b\",\n\t\"./mk\": \"6909\",\n\t\"./mk.js\": \"6909\",\n\t\"./ml\": \"02fb\",\n\t\"./ml.js\": \"02fb\",\n\t\"./mn\": \"958b\",\n\t\"./mn.js\": \"958b\",\n\t\"./mr\": \"39bd\",\n\t\"./mr.js\": \"39bd\",\n\t\"./ms\": \"ebe4\",\n\t\"./ms-my\": \"6403\",\n\t\"./ms-my.js\": \"6403\",\n\t\"./ms.js\": \"ebe4\",\n\t\"./mt\": \"1b45\",\n\t\"./mt.js\": \"1b45\",\n\t\"./my\": \"8689\",\n\t\"./my.js\": \"8689\",\n\t\"./nb\": \"6ce3\",\n\t\"./nb.js\": \"6ce3\",\n\t\"./ne\": \"3a39\",\n\t\"./ne.js\": \"3a39\",\n\t\"./nl\": \"facd\",\n\t\"./nl-be\": \"db29\",\n\t\"./nl-be.js\": \"db29\",\n\t\"./nl.js\": \"facd\",\n\t\"./nn\": \"b84c\",\n\t\"./nn.js\": \"b84c\",\n\t\"./oc-lnc\": \"167b\",\n\t\"./oc-lnc.js\": \"167b\",\n\t\"./pa-in\": \"f3ff\",\n\t\"./pa-in.js\": \"f3ff\",\n\t\"./pl\": \"8d57\",\n\t\"./pl.js\": \"8d57\",\n\t\"./pt\": \"f260\",\n\t\"./pt-br\": \"d2d4\",\n\t\"./pt-br.js\": \"d2d4\",\n\t\"./pt.js\": \"f260\",\n\t\"./ro\": \"972c\",\n\t\"./ro.js\": \"972c\",\n\t\"./ru\": \"957c\",\n\t\"./ru.js\": \"957c\",\n\t\"./sd\": \"6784\",\n\t\"./sd.js\": \"6784\",\n\t\"./se\": \"ffff\",\n\t\"./se.js\": \"ffff\",\n\t\"./si\": \"eda5\",\n\t\"./si.js\": \"eda5\",\n\t\"./sk\": \"7be6\",\n\t\"./sk.js\": \"7be6\",\n\t\"./sl\": \"8155\",\n\t\"./sl.js\": \"8155\",\n\t\"./sq\": \"c8f3\",\n\t\"./sq.js\": \"c8f3\",\n\t\"./sr\": \"cf1e\",\n\t\"./sr-cyrl\": \"13e9\",\n\t\"./sr-cyrl.js\": \"13e9\",\n\t\"./sr.js\": \"cf1e\",\n\t\"./ss\": \"52bd\",\n\t\"./ss.js\": \"52bd\",\n\t\"./sv\": \"5fbd\",\n\t\"./sv.js\": \"5fbd\",\n\t\"./sw\": \"74dc\",\n\t\"./sw.js\": \"74dc\",\n\t\"./ta\": \"3de5\",\n\t\"./ta.js\": \"3de5\",\n\t\"./te\": \"5cbb\",\n\t\"./te.js\": \"5cbb\",\n\t\"./tet\": \"576c\",\n\t\"./tet.js\": \"576c\",\n\t\"./tg\": \"3b1b\",\n\t\"./tg.js\": \"3b1b\",\n\t\"./th\": \"10e8\",\n\t\"./th.js\": \"10e8\",\n\t\"./tk\": \"5aff\",\n\t\"./tk.js\": \"5aff\",\n\t\"./tl-ph\": \"0f38\",\n\t\"./tl-ph.js\": \"0f38\",\n\t\"./tlh\": \"cf755\",\n\t\"./tlh.js\": \"cf755\",\n\t\"./tr\": \"0e81\",\n\t\"./tr.js\": \"0e81\",\n\t\"./tzl\": \"cf51\",\n\t\"./tzl.js\": \"cf51\",\n\t\"./tzm\": \"c109\",\n\t\"./tzm-latn\": \"b53d\",\n\t\"./tzm-latn.js\": \"b53d\",\n\t\"./tzm.js\": \"c109\",\n\t\"./ug-cn\": \"6117\",\n\t\"./ug-cn.js\": \"6117\",\n\t\"./uk\": \"ada2\",\n\t\"./uk.js\": \"ada2\",\n\t\"./ur\": \"5294\",\n\t\"./ur.js\": \"5294\",\n\t\"./uz\": \"2e8c\",\n\t\"./uz-latn\": \"010e\",\n\t\"./uz-latn.js\": \"010e\",\n\t\"./uz.js\": \"2e8c\",\n\t\"./vi\": \"2921\",\n\t\"./vi.js\": \"2921\",\n\t\"./x-pseudo\": \"fd7e\",\n\t\"./x-pseudo.js\": \"fd7e\",\n\t\"./yo\": \"7f33\",\n\t\"./yo.js\": \"7f33\",\n\t\"./zh-cn\": \"5c3a\",\n\t\"./zh-cn.js\": \"5c3a\",\n\t\"./zh-hk\": \"49ab\",\n\t\"./zh-hk.js\": \"49ab\",\n\t\"./zh-mo\": \"3a6c\",\n\t\"./zh-mo.js\": \"3a6c\",\n\t\"./zh-tw\": \"90ea\",\n\t\"./zh-tw.js\": \"90ea\"\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = \"4678\";","(function () {\nvar advlist = (function () {\n 'use strict';\n\n var global = tinymce.util.Tools.resolve('tinymce.PluginManager');\n\n var global$1 = tinymce.util.Tools.resolve('tinymce.util.Tools');\n\n var applyListFormat = function (editor, listName, styleValue) {\n var cmd = listName === 'UL' ? 'InsertUnorderedList' : 'InsertOrderedList';\n editor.execCommand(cmd, false, styleValue === false ? null : { 'list-style-type': styleValue });\n };\n var $_55fky08fjkmcwo2a = { applyListFormat: applyListFormat };\n\n var register = function (editor) {\n editor.addCommand('ApplyUnorderedListStyle', function (ui, value) {\n $_55fky08fjkmcwo2a.applyListFormat(editor, 'UL', value['list-style-type']);\n });\n editor.addCommand('ApplyOrderedListStyle', function (ui, value) {\n $_55fky08fjkmcwo2a.applyListFormat(editor, 'OL', value['list-style-type']);\n });\n };\n var $_cjqqqe8ejkmcwo28 = { register: register };\n\n var getNumberStyles = function (editor) {\n var styles = editor.getParam('advlist_number_styles', 'default,lower-alpha,lower-greek,lower-roman,upper-alpha,upper-roman');\n return styles ? styles.split(/[ ,]/) : [];\n };\n var getBulletStyles = function (editor) {\n var styles = editor.getParam('advlist_bullet_styles', 'default,circle,disc,square');\n return styles ? styles.split(/[ ,]/) : [];\n };\n var $_2zo4iv8hjkmcwo2f = {\n getNumberStyles: getNumberStyles,\n getBulletStyles: getBulletStyles\n };\n\n var isChildOfBody = function (editor, elm) {\n return editor.$.contains(editor.getBody(), elm);\n };\n var isTableCellNode = function (node) {\n return node && /^(TH|TD)$/.test(node.nodeName);\n };\n var isListNode = function (editor) {\n return function (node) {\n return node && /^(OL|UL|DL)$/.test(node.nodeName) && isChildOfBody(editor, node);\n };\n };\n var getSelectedStyleType = function (editor) {\n var listElm = editor.dom.getParent(editor.selection.getNode(), 'ol,ul');\n return editor.dom.getStyle(listElm, 'listStyleType') || '';\n };\n var $_djj0lo8ijkmcwo2g = {\n isTableCellNode: isTableCellNode,\n isListNode: isListNode,\n getSelectedStyleType: getSelectedStyleType\n };\n\n var styleValueToText = function (styleValue) {\n return styleValue.replace(/\\-/g, ' ').replace(/\\b\\w/g, function (chr) {\n return chr.toUpperCase();\n });\n };\n var toMenuItems = function (styles) {\n return global$1.map(styles, function (styleValue) {\n var text = styleValueToText(styleValue);\n var data = styleValue === 'default' ? '' : styleValue;\n return {\n text: text,\n data: data\n };\n });\n };\n var $_cbyrf58jjkmcwo2h = { toMenuItems: toMenuItems };\n\n var findIndex = function (list, predicate) {\n for (var index = 0; index < list.length; index++) {\n var element = list[index];\n if (predicate(element)) {\n return index;\n }\n }\n return -1;\n };\n var listState = function (editor, listName) {\n return function (e) {\n var ctrl = e.control;\n editor.on('NodeChange', function (e) {\n var tableCellIndex = findIndex(e.parents, $_djj0lo8ijkmcwo2g.isTableCellNode);\n var parents = tableCellIndex !== -1 ? e.parents.slice(0, tableCellIndex) : e.parents;\n var lists = global$1.grep(parents, $_djj0lo8ijkmcwo2g.isListNode(editor));\n ctrl.active(lists.length > 0 && lists[0].nodeName === listName);\n });\n };\n };\n var updateSelection = function (editor) {\n return function (e) {\n var listStyleType = $_djj0lo8ijkmcwo2g.getSelectedStyleType(editor);\n e.control.items().each(function (ctrl) {\n ctrl.active(ctrl.settings.data === listStyleType);\n });\n };\n };\n var addSplitButton = function (editor, id, tooltip, cmd, nodeName, styles) {\n editor.addButton(id, {\n active: false,\n type: 'splitbutton',\n tooltip: tooltip,\n menu: $_cbyrf58jjkmcwo2h.toMenuItems(styles),\n onPostRender: listState(editor, nodeName),\n onshow: updateSelection(editor),\n onselect: function (e) {\n $_55fky08fjkmcwo2a.applyListFormat(editor, nodeName, e.control.settings.data);\n },\n onclick: function () {\n editor.execCommand(cmd);\n }\n });\n };\n var addButton = function (editor, id, tooltip, cmd, nodeName, styles) {\n editor.addButton(id, {\n active: false,\n type: 'button',\n tooltip: tooltip,\n onPostRender: listState(editor, nodeName),\n onclick: function () {\n editor.execCommand(cmd);\n }\n });\n };\n var addControl = function (editor, id, tooltip, cmd, nodeName, styles) {\n if (styles.length > 0) {\n addSplitButton(editor, id, tooltip, cmd, nodeName, styles);\n } else {\n addButton(editor, id, tooltip, cmd, nodeName, styles);\n }\n };\n var register$1 = function (editor) {\n addControl(editor, 'numlist', 'Numbered list', 'InsertOrderedList', 'OL', $_2zo4iv8hjkmcwo2f.getNumberStyles(editor));\n addControl(editor, 'bullist', 'Bullet list', 'InsertUnorderedList', 'UL', $_2zo4iv8hjkmcwo2f.getBulletStyles(editor));\n };\n var $_d74fz58gjkmcwo2b = { register: register$1 };\n\n global.add('advlist', function (editor) {\n var hasPlugin = function (editor, plugin) {\n var plugins = editor.settings.plugins ? editor.settings.plugins : '';\n return global$1.inArray(plugins.split(/[ ,]/), plugin) !== -1;\n };\n if (hasPlugin(editor, 'lists')) {\n $_d74fz58gjkmcwo2b.register(editor);\n $_cjqqqe8ejkmcwo28.register(editor);\n }\n });\n function Plugin () {\n }\n\n return Plugin;\n\n}());\n})();\n","(function () {\nvar preview = (function () {\n 'use strict';\n\n var global = tinymce.util.Tools.resolve('tinymce.PluginManager');\n\n var global$1 = tinymce.util.Tools.resolve('tinymce.Env');\n\n var getPreviewDialogWidth = function (editor) {\n return parseInt(editor.getParam('plugin_preview_width', '650'), 10);\n };\n var getPreviewDialogHeight = function (editor) {\n return parseInt(editor.getParam('plugin_preview_height', '500'), 10);\n };\n var getContentStyle = function (editor) {\n return editor.getParam('content_style', '');\n };\n var $_6hy26xjfjkmcwppy = {\n getPreviewDialogWidth: getPreviewDialogWidth,\n getPreviewDialogHeight: getPreviewDialogHeight,\n getContentStyle: getContentStyle\n };\n\n var global$2 = tinymce.util.Tools.resolve('tinymce.util.Tools');\n\n var getPreviewHtml = function (editor) {\n var previewHtml;\n var headHtml = '';\n var encode = editor.dom.encode;\n var contentStyle = $_6hy26xjfjkmcwppy.getContentStyle(editor);\n headHtml += '';\n if (contentStyle) {\n headHtml += '';\n }\n global$2.each(editor.contentCSS, function (url) {\n headHtml += '';\n });\n var bodyId = editor.settings.body_id || 'tinymce';\n if (bodyId.indexOf('=') !== -1) {\n bodyId = editor.getParam('body_id', '', 'hash');\n bodyId = bodyId[editor.id] || bodyId;\n }\n var bodyClass = editor.settings.body_class || '';\n if (bodyClass.indexOf('=') !== -1) {\n bodyClass = editor.getParam('body_class', '', 'hash');\n bodyClass = bodyClass[editor.id] || '';\n }\n var preventClicksOnLinksScript = ' ';\n var dirAttr = editor.settings.directionality ? ' dir=\"' + editor.settings.directionality + '\"' : '';\n previewHtml = '' + '' + '' + headHtml + '' + '' + editor.getContent() + preventClicksOnLinksScript + '' + '';\n return previewHtml;\n };\n var injectIframeContent = function (editor, iframe, sandbox) {\n var previewHtml = getPreviewHtml(editor);\n if (!sandbox) {\n var doc = iframe.contentWindow.document;\n doc.open();\n doc.write(previewHtml);\n doc.close();\n } else {\n iframe.src = 'data:text/html;charset=utf-8,' + encodeURIComponent(previewHtml);\n }\n };\n var $_5s7etcjgjkmcwppz = {\n getPreviewHtml: getPreviewHtml,\n injectIframeContent: injectIframeContent\n };\n\n var open = function (editor) {\n var sandbox = !global$1.ie;\n var dialogHtml = '';\n var dialogWidth = $_6hy26xjfjkmcwppy.getPreviewDialogWidth(editor);\n var dialogHeight = $_6hy26xjfjkmcwppy.getPreviewDialogHeight(editor);\n editor.windowManager.open({\n title: 'Preview',\n width: dialogWidth,\n height: dialogHeight,\n html: dialogHtml,\n buttons: {\n text: 'Close',\n onclick: function (e) {\n e.control.parent().parent().close();\n }\n },\n onPostRender: function (e) {\n var iframeElm = e.control.getEl('body').firstChild;\n $_5s7etcjgjkmcwppz.injectIframeContent(editor, iframeElm, sandbox);\n }\n });\n };\n var $_4mmnpbjdjkmcwppw = { open: open };\n\n var register = function (editor) {\n editor.addCommand('mcePreview', function () {\n $_4mmnpbjdjkmcwppw.open(editor);\n });\n };\n var $_c197icjcjkmcwppv = { register: register };\n\n var register$1 = function (editor) {\n editor.addButton('preview', {\n title: 'Preview',\n cmd: 'mcePreview'\n });\n editor.addMenuItem('preview', {\n text: 'Preview',\n cmd: 'mcePreview',\n context: 'view'\n });\n };\n var $_eluyd4jijkmcwpq6 = { register: register$1 };\n\n global.add('preview', function (editor) {\n $_c197icjcjkmcwppv.register(editor);\n $_eluyd4jijkmcwpq6.register(editor);\n });\n function Plugin () {\n }\n\n return Plugin;\n\n}());\n})();\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{attrs:{\"id\":\"app\"}},[_c('router-view')],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./App.vue?vue&type=template&id=45772c13\"\nvar script = {}\n\n\n/* normalize component */\nimport normalizer from \"!../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('loading'),_c('header-cna'),_c('router-view'),_c('footer-cna')],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('footer',[_vm._m(0),_c('div',{staticClass:\"copyright\"},[_vm._m(1),(_vm.changelog)?_c('div',{staticClass:\"content-960 clearfix\"},[_c('button',{staticClass:\"btn btn-link\",staticStyle:{\"padding\":\"0\",\"color\":\"#272727\",\"font-size\":\"11px\"},on:{\"click\":function($event){_vm.dialogChangeLog = true}}},[_vm._v(\"\\n Versão \"+_vm._s(_vm.changelog.versao)+\"\\n \")])]):_vm._e()]),(_vm.changelog)?_c('b-modal',{attrs:{\"no-close-on-backdrop\":true,\"size\":\"lg\",\"no-close-on-esc\":true,\"centered\":\"\",\"hide-footer\":true,\"title\":'Versão de ' + _vm.changelog.data},model:{value:(_vm.dialogChangeLog),callback:function ($$v) {_vm.dialogChangeLog=$$v},expression:\"dialogChangeLog\"}},[_c('div',{domProps:{\"innerHTML\":_vm._s(_vm.changelog.detalhes)}})]):_vm._e()],1)\n}\nvar staticRenderFns = [function (){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"row-black\"},[_c('div',{staticClass:\"content-960 clearfix\"},[_c('ul',{staticClass:\"list-icons\"},[_c('li',[_c('a',{attrs:{\"target\":\"_blank\",\"href\":\"https://pt-br.facebook.com/CNAoficial/\",\"title\":\"Facebook\"}},[_c('div',{staticClass:\"fa fa-facebook\"})])]),_c('li',[_c('a',{attrs:{\"target\":\"_blank\",\"href\":\"https://twitter.com/cnaoficial\",\"title\":\"Twitter\"}},[_c('div',{staticClass:\"fa fa-twitter\"})])]),_c('li',[_c('a',{attrs:{\"target\":\"_blank\",\"href\":\"https://www.instagram.com/cnaoficial\",\"title\":\"Instagram\"}},[_c('div',{staticClass:\"fa fa-instagram\"})])]),_c('li',[_c('a',{attrs:{\"target\":\"_blank\",\"href\":\"https://br.linkedin.com/company/cna-ensino-de-linguas\",\"title\":\"Linkedin\"}},[_c('div',{staticClass:\"fa fa-linkedin\"})])]),_c('li',[_c('a',{attrs:{\"target\":\"_blank\",\"href\":\"https://www.youtube.com/user/cnaoficial\",\"title\":\"Youtube\"}},[_c('div',{staticClass:\"fa fa-youtube\"})])])])])])\n},function (){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"content-960 clearfix\"},[_c('a',{attrs:{\"href\":\"#\",\"title\":\"Copyright © CNA.com.br - Todos os direitos reservados.\"}},[_vm._v(\"Copyright © CNA.com.br - Todos os direitos reservados.\")]),_c('a',{attrs:{\"href\":\"#\",\"title\":\"Política de Privacidade\"}},[_vm._v(\"Política de uso\")])])\n}]\n\nexport { render, staticRenderFns }","\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./footer.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./footer.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./footer.vue?vue&type=template&id=3636c30c\"\nimport script from \"./footer.vue?vue&type=script&lang=js\"\nexport * from \"./footer.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('header',{class:{ Scroll: _vm.scrollPosition > 80 }},[_c('div',{staticClass:\"row-black clearfix\"},[_c('div',{staticClass:\"content-960\"},[_c('button',{staticClass:\"btn btn-dark rounded ml-2 float-left mr-3 mt-1\",attrs:{\"type\":\"button\",\"id\":\"sidebarCollapse\"},on:{\"click\":function($event){return _vm.toggle()}}},[_c('i',{staticClass:\"fa fa-bars\",attrs:{\"aria-hidden\":\"true\"}})]),_vm._m(0),_c('div',{staticClass:\"user\"},[_c('div',{staticClass:\"click-menu click-animate\"},[_c('h2',[_vm._v(\"\\n Olá,\\n \"),_c('span',{attrs:{\"title\":_vm.user.name}},[_vm._v(_vm._s(_vm.user.name))])]),_c('div',{staticClass:\"cna-local\"},[_c('span',{attrs:{\"title\":_vm.escolaNome}},[_vm._v(_vm._s(_vm.escolaNome))])])]),_c('div',{staticClass:\"wrap-conteudo\"},[_c('div',{staticClass:\"dados-user-mobile\"},[_c('h2',[_vm._v(\"\\n Olá,\\n \"),_c('span',[_vm._v(_vm._s(_vm.user.name))])]),_c('div',{staticClass:\"cna-local\"},[_vm._v(_vm._s(_vm.escolaNome))])])]),_c('b-dropdown',{staticClass:\"menu-user\",attrs:{\"id\":\"dropdown-1\",\"text\":\"\",\"toggle-class\":\"text-decoration-none text-white\",\"variant\":\"link\",\"right\":\"\"}},[_c('b-dropdown-item',[_c('a',{staticClass:\"icons-arrows\",attrs:{\"href\":\"javascript:void(0);\"},on:{\"click\":function($event){return _vm.irParaPortalCorporativo()}}},[_c('span',[_vm._v(\"Ir para Portal Corporativo\")])])]),_c('b-dropdown-item',[_c('router-link',{staticClass:\"icons-arrows\",attrs:{\"to\":\"/trocarescola\"}},[_c('span',[_vm._v(\"Trocar escola\")])])],1),_c('b-dropdown-divider'),_c('b-dropdown-item',{staticClass:\"text-right bg-dark\"},[_c('a',{staticClass:\"text-light\",staticStyle:{\"cursor\":\"pointer\"},on:{\"click\":function($event){return _vm.logout()}}},[_c('i',{staticClass:\"fa fa-sign-out\"}),_vm._v(\" Sair\\n \")])])],1)],1)])]),_c('nav',{class:{ active: _vm.isActive },attrs:{\"id\":\"sidebar\"}},[_c('div',{attrs:{\"id\":\"dismiss\"},on:{\"click\":function($event){return _vm.toggle()}}},[_c('i',{staticClass:\"fa fa-close\"})]),_c('div',{staticClass:\"user\"},[_c('div',{staticClass:\"media\"},[_c('div',{staticClass:\"media-body\"},[_c('div',{staticClass:\"click-menu click-animate\"},[_c('h2',[_vm._v(\"\\n Olá,\\n \"),_c('span',{attrs:{\"title\":_vm.user.name}},[_vm._v(_vm._s(_vm.user.name))])]),_c('div',{staticClass:\"cna-local\"},[_c('span',{attrs:{\"title\":_vm.escolaNome}},[_vm._v(_vm._s(_vm.escolaNome))])])])])])]),_c('ul',{staticClass:\"list-unstyled components\",on:{\"click\":function($event){return _vm.toggle()}}},[_c('li',{directives:[{name:\"canaccess\",rawName:\"v-canaccess\",value:('/admin'),expression:\"'/admin'\"}]},[_c('router-link',{attrs:{\"to\":\"/admin\"}},[_vm._v(\"Home\")])],1)])]),_c('div',{staticClass:\"overlay\",class:{ active: _vm.isActive },on:{\"click\":function($event){return _vm.toggle()}}})])\n}\nvar staticRenderFns = [function (){var _vm=this,_c=_vm._self._c;return _c('a',{staticClass:\"logo-header\",attrs:{\"href\":\"/admin\",\"title\":\"Logo CNA\"}},[_c('img',{staticClass:\"logo-desktop\",attrs:{\"src\":require(\"../assets/imagens/logos/logo-CNA-big.png\"),\"alt\":\"Imagem Logo CNA\",\"title\":\"Ação Comercial\"}})])\n}]\n\nexport { render, staticRenderFns }","\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./header.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./header.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./header.vue?vue&type=template&id=35f9035c\"\nimport script from \"./header.vue?vue&type=script&lang=js\"\nexport * from \"./header.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.isloading),expression:\"isloading\"}],staticClass:\"loader\"},[_c('img',{attrs:{\"src\":require(\"../../assets/loader.png\"),\"alt\":\"Carregando...\"}})])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./loading.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./loading.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./loading.vue?vue&type=template&id=6e980aa2\"\nimport script from \"./loading.vue?vue&type=script&lang=js\"\nexport * from \"./loading.vue?vue&type=script&lang=js\"\nimport style0 from \"./loading.vue?vue&type=style&index=0&id=6e980aa2&prod&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=5c9233a1\"\nimport script from \"./index.vue?vue&type=script&lang=js\"\nexport * from \"./index.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _vm._m(0)\n}\nvar staticRenderFns = [function (){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"content-960 mobile-row\",staticStyle:{\"margin-top\":\"40px\",\"max-width\":\"470px\",\"text-align\":\"center\"}},[_c('div',{staticClass:\"wrapper-960 clearfix\"},[_c('div',{staticClass:\"titles\"},[_c('h2',{staticClass:\"uppercase\"},[_c('b',[_vm._v(\"Aguarde, estamos concluindo seu acesso.\")]),_c('br')])]),_c('br'),_c('div',{staticClass:\"titles icon-animated\"},[_c('i',{staticClass:\"fa fa-6x fa-check-circle\",staticStyle:{\"font-size\":\"90px\",\"color\":\"green\"}})])])])\n}]\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=b047148e\"\nimport script from \"./index.vue?vue&type=script&lang=js\"\nexport * from \"./index.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"content-960 mobile-row\",staticStyle:{\"margin-top\":\"40px\",\"max-width\":\"470px\",\"text-align\":\"center\"}},[_c('div',{staticClass:\"wrapper-960 clearfix\"},[_vm._m(0),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 col-sm-12 col-lg-12 col-sm-12\"},[_c('label',{staticClass:\"title title--news mb-2 cna-login__title\"},[_vm._v(\"Selecione sua escola\")]),_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.escola_escolhida),expression:\"escola_escolhida\"}],staticClass:\"form-control\",on:{\"change\":function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.escola_escolhida=$event.target.multiple ? $$selectedVal : $$selectedVal[0]}}},[_c('option',{attrs:{\"value\":\"0\"}},[_vm._v(\"Selecione\")]),_vm._l((_vm.escolas),function(escola){return _c('option',{key:escola.escolaId,domProps:{\"value\":escola.escolaId}},[_vm._v(_vm._s(escola.nomeEscola))])})],2)])]),_c('br'),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 col-sm-12 col-lg-12 col-sm-12\"},[_c('div',{staticClass:\"form-group cna-login__group\"},[_c('button',{staticClass:\"btn btn-sm btn-success p-2\",attrs:{\"type\":\"button\",\"disabled\":_vm.escola_escolhida == 0},on:{\"click\":function($event){return _vm.trocarEscola()}}},[_vm._v(\"Escolher Escola\")])])])])])])\n}\nvar staticRenderFns = [function (){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"titles\"},[_c('h2',{staticClass:\"uppercase\"},[_c('b',[_vm._v(\"Trocar escola\")]),_c('br')])])\n}]\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=a81f30e4\"\nimport script from \"./index.vue?vue&type=script&lang=js\"\nexport * from \"./index.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _vm._m(0)\n}\nvar staticRenderFns = [function (){var _vm=this,_c=_vm._self._c;return _c('main',{attrs:{\"role\":\"main\"}},[_c('div',{staticClass:\"content-960 mobile-row\",staticStyle:{\"margin-top\":\"40px\",\"max-width\":\"470px\",\"text-align\":\"center\"}},[_c('div',{staticClass:\"wrapper-960 clearfix\"},[_c('div',{staticClass:\"titles\"},[_c('h2',{staticClass:\"uppercase\"},[_c('b',[_vm._v(\"Acesso negado\")])])]),_c('br'),_c('div',{staticClass:\"titles\"},[_c('i',{staticClass:\"fa fa-6x fa-exclamation-triangle\",staticStyle:{\"font-size\":\"90px\",\"color\":\"#cc2213\"}}),_c('br'),_c('em',[_vm._v(\"Você não tem permissão para acessar esta tela! Favor entrar em contato com o Administrador do Sistema.\")])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 col-sm-12 col-lg-12 col-sm-12\",staticStyle:{\"text-align\":\"center\"}},[_c('div',{staticClass:\"form-group cna-login__group\"},[_c('a',{staticClass:\"btn btn-sm btn-default btn-default-app p-2\",attrs:{\"href\":\"/home\"}},[_vm._v(\"Ir para home\")])])])])])])])\n}]\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=056e350e\"\nimport script from \"./index.vue?vue&type=script&lang=js\"\nexport * from \"./index.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('main',{attrs:{\"id\":\"main\"}},[_c('div',{staticClass:\"container\"},[_vm._m(0),(!_vm.sucesso && !_vm.carregando)?_c('section',{staticClass:\"row\",attrs:{\"id\":\"cadastro\"}},[_c('div',{staticClass:\"col-12\"},[_c('span',{staticClass:\"subtitle text-center\"},[_vm._v(_vm._s(_vm.result.statusAcaoComercialId == 1 ? _vm.result.nomeEscola.toUpperCase() : 'Ops!'))]),_c('span',{staticClass:\"title text-center\"},[_vm._v(_vm._s(_vm.result.statusAcaoComercialId == 1 ? _vm.result.descricao : 'Esta promoção já se encerrou,'))]),_c('span',{staticClass:\"title-2 text-center\"},[_vm._v(_vm._s(_vm.result.statusAcaoComercialId == 1 ? '' : 'mas não se preocupe. Se deseja que o CNA entre em contato com você, preencha o formulário abaixo:'))]),_c('form',{ref:\"frmCadastro\",staticClass:\"form lazy-recaptcha\",attrs:{\"data-recaptcha\":\"form\",\"method\":\"post\",\"action\":\"\",\"novalidate\":\"\"}},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('label',{staticClass:\"form_label\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.model.nome),expression:\"model.nome\"}],staticClass:\"form_input\",attrs:{\"type\":\"text\",\"name\":\"Name\",\"placeholder\":\"Nome e Sobrenome\",\"required\":\"\",\"maxlength\":\"40\"},domProps:{\"value\":(_vm.model.nome)},on:{\"input\":function($event){if($event.target.composing)return;_vm.$set(_vm.model, \"nome\", $event.target.value)}}}),_c('div',{staticClass:\"invalid-feedback\"},[_vm._v(\"Por favor preencher Nome e Sobrenome\")])])]),_c('div',{staticClass:\"col-12\"},[_c('div',{staticClass:\"form_contact\"},[_c('span',{staticClass:\"lbl-title\"},[_vm._v(\"Eu concordo em receber contato do CNA por meio de:\")]),_c('label',{staticClass:\"custom-control custom-checkbox lbl-check\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.model.aceitaEmail),expression:\"model.aceitaEmail\"}],staticClass:\"custom-control-input\",attrs:{\"type\":\"checkbox\",\"role\":\"button\"},domProps:{\"checked\":Array.isArray(_vm.model.aceitaEmail)?_vm._i(_vm.model.aceitaEmail,null)>-1:(_vm.model.aceitaEmail)},on:{\"change\":function($event){var $$a=_vm.model.aceitaEmail,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.$set(_vm.model, \"aceitaEmail\", $$a.concat([$$v])))}else{$$i>-1&&(_vm.$set(_vm.model, \"aceitaEmail\", $$a.slice(0,$$i).concat($$a.slice($$i+1))))}}else{_vm.$set(_vm.model, \"aceitaEmail\", $$c)}}}}),_c('span',{staticClass:\"custom-control-indicator\"}),_c('span',{staticClass:\"custom-control-description\"},[_vm._v(\"E-mail\")])]),_c('label',{staticClass:\"custom-control custom-checkbox lbl-check\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.model.aceitaWhatsApp),expression:\"model.aceitaWhatsApp\"}],staticClass:\"custom-control-input\",attrs:{\"type\":\"checkbox\",\"role\":\"button\"},domProps:{\"checked\":Array.isArray(_vm.model.aceitaWhatsApp)?_vm._i(_vm.model.aceitaWhatsApp,null)>-1:(_vm.model.aceitaWhatsApp)},on:{\"change\":function($event){var $$a=_vm.model.aceitaWhatsApp,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.$set(_vm.model, \"aceitaWhatsApp\", $$a.concat([$$v])))}else{$$i>-1&&(_vm.$set(_vm.model, \"aceitaWhatsApp\", $$a.slice(0,$$i).concat($$a.slice($$i+1))))}}else{_vm.$set(_vm.model, \"aceitaWhatsApp\", $$c)}}}}),_c('span',{staticClass:\"custom-control-indicator\"}),_c('span',{staticClass:\"custom-control-description\"},[_vm._v(\"WhatsApp\")])]),_c('label',{staticClass:\"custom-control custom-checkbox lbl-check\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.model.aceitaTelefone),expression:\"model.aceitaTelefone\"}],staticClass:\"custom-control-input\",attrs:{\"type\":\"checkbox\",\"role\":\"button\"},domProps:{\"checked\":Array.isArray(_vm.model.aceitaTelefone)?_vm._i(_vm.model.aceitaTelefone,null)>-1:(_vm.model.aceitaTelefone)},on:{\"change\":function($event){var $$a=_vm.model.aceitaTelefone,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.$set(_vm.model, \"aceitaTelefone\", $$a.concat([$$v])))}else{$$i>-1&&(_vm.$set(_vm.model, \"aceitaTelefone\", $$a.slice(0,$$i).concat($$a.slice($$i+1))))}}else{_vm.$set(_vm.model, \"aceitaTelefone\", $$c)}}}}),_c('span',{staticClass:\"custom-control-indicator\"}),_c('span',{staticClass:\"custom-control-description\"},[_vm._v(\"Telefone\")])]),_c('label',{staticClass:\"custom-control custom-checkbox lbl-check\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.model.aceitaSMS),expression:\"model.aceitaSMS\"}],staticClass:\"custom-control-input\",attrs:{\"type\":\"checkbox\",\"role\":\"button\"},domProps:{\"checked\":Array.isArray(_vm.model.aceitaSMS)?_vm._i(_vm.model.aceitaSMS,null)>-1:(_vm.model.aceitaSMS)},on:{\"change\":function($event){var $$a=_vm.model.aceitaSMS,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.$set(_vm.model, \"aceitaSMS\", $$a.concat([$$v])))}else{$$i>-1&&(_vm.$set(_vm.model, \"aceitaSMS\", $$a.slice(0,$$i).concat($$a.slice($$i+1))))}}else{_vm.$set(_vm.model, \"aceitaSMS\", $$c)}}}}),_c('span',{staticClass:\"custom-control-indicator\"}),_c('span',{staticClass:\"custom-control-description\"},[_vm._v(\"SMS\")])])])]),(_vm.model.aceitaEmail)?_c('div',{staticClass:\"col-12\"},[_c('label',{staticClass:\"form_label\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.model.email),expression:\"model.email\"}],staticClass:\"form_input email\",attrs:{\"type\":\"email\",\"name\":\"Email\",\"id\":\"schoolEmail\",\"placeholder\":\"E-mail\",\"data-email\":\"\",\"required\":_vm.model.aceitaEmail},domProps:{\"value\":(_vm.model.email)},on:{\"input\":function($event){if($event.target.composing)return;_vm.$set(_vm.model, \"email\", $event.target.value)}}}),_c('div',{staticClass:\"invalid-feedback\"},[_vm._v(\"Por favor preencher o Email\")])])]):_vm._e(),(_vm.model.aceitaWhatsApp || _vm.model.aceitaTelefone || _vm.model.aceitaSMS)?_c('div',{staticClass:\"col-12\"},[_c('label',{staticClass:\"form_label\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.model.telefone),expression:\"model.telefone\"},{name:\"mask\",rawName:\"v-mask\",value:(['(##) ####-####', '(##) #####-####']),expression:\"['(##) ####-####', '(##) #####-####']\"}],staticClass:\"form_input phone\",attrs:{\"type\":\"text\",\"name\":\"Whatsapp\",\"placeholder\":\"Telefone\",\"required\":_vm.model.aceitaWhatsApp || _vm.model.aceitaTelefone || _vm.model.aceitaSMS},domProps:{\"value\":(_vm.model.telefone)},on:{\"input\":function($event){if($event.target.composing)return;_vm.$set(_vm.model, \"telefone\", $event.target.value)}}}),_c('div',{staticClass:\"invalid-feedback\"},[_vm._v(\"Por favor preencher o Telefone\")])])]):_vm._e(),_c('div',{staticClass:\"col-12\"},[_c('label',{staticClass:\"custom-control custom-checkbox lbl-privacy\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.checkedMaiorIdade),expression:\"checkedMaiorIdade\"}],staticClass:\"custom-control-input\",attrs:{\"type\":\"checkbox\",\"role\":\"button\"},domProps:{\"checked\":Array.isArray(_vm.checkedMaiorIdade)?_vm._i(_vm.checkedMaiorIdade,null)>-1:(_vm.checkedMaiorIdade)},on:{\"change\":function($event){var $$a=_vm.checkedMaiorIdade,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.checkedMaiorIdade=$$a.concat([$$v]))}else{$$i>-1&&(_vm.checkedMaiorIdade=$$a.slice(0,$$i).concat($$a.slice($$i+1)))}}else{_vm.checkedMaiorIdade=$$c}}}}),_c('span',{staticClass:\"custom-control-indicator\"}),_c('span',{staticClass:\"custom-control-description\"},[_vm._v(\"Declaro ser maior de 18 anos.\")])])]),_c('div',{staticClass:\"col-12\"},[_c('label',{staticClass:\"custom-control custom-checkbox lbl-privacy\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.checkedConsentimento),expression:\"checkedConsentimento\"}],staticClass:\"custom-control-input\",attrs:{\"type\":\"checkbox\",\"role\":\"button\"},domProps:{\"checked\":Array.isArray(_vm.checkedConsentimento)?_vm._i(_vm.checkedConsentimento,null)>-1:(_vm.checkedConsentimento)},on:{\"change\":function($event){var $$a=_vm.checkedConsentimento,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.checkedConsentimento=$$a.concat([$$v]))}else{$$i>-1&&(_vm.checkedConsentimento=$$a.slice(0,$$i).concat($$a.slice($$i+1)))}}else{_vm.checkedConsentimento=$$c}}}}),_c('span',{staticClass:\"custom-control-indicator\"}),_vm._m(1)])]),_c('div',{staticClass:\"col-12 d-flex flex-column align-items-center\"},[_c('button',{staticClass:\"button\",attrs:{\"type\":\"button\",\"disabled\":!_vm.checkedMaiorIdade || !_vm.checkedConsentimento || !(this.model.aceitaEmail || this.model.aceitaSMS || this.model.aceitaTelefone || this.model.aceitaWhatsApp)},on:{\"click\":function($event){return _vm.cadastrar()}}},[_vm._v(\"CADASTRAR\")])]),_vm._m(2)])])])]):_vm._e(),(_vm.sucesso && !_vm.carregando)?_c('section',{staticClass:\"row\",attrs:{\"id\":\"msg-envio-sucesso\"}},[_c('div',{staticClass:\"col-12\"},[_c('span',{staticClass:\"subtitle text-center\",staticStyle:{\"font-size\":\"27px\"}},[_vm._v(_vm._s(_vm.result.statusAcaoComercialId == 1 ? 'Boa sorte!' : 'Seu Cadastro foi realizado com sucesso.'))]),_c('span',{staticClass:\"title text-center\"},[_vm._v(_vm._s(_vm.result.statusAcaoComercialId == 1 ? 'Seu cadastro foi realizado com sucesso.' : 'Em breve, um dos nossos consultores entrará em contato.'))]),_vm._m(3)]),_c('div',{staticClass:\"col-lg-12 text-center\"},[_c('div',{staticClass:\"post\"},[_c('h2',{staticClass:\"post_title\"},[_c('a',{staticStyle:{\"text-decoration\":\"none\",\"color\":\"#484848\"},attrs:{\"href\":_vm.itemInfo.Url}},[_vm._v(_vm._s(_vm.itemInfo.Titulo))])]),_c('a',{attrs:{\"href\":_vm.itemInfo.Url}},[_c('figure',{staticClass:\"post_figure mx-auto\"},[_c('img',{staticClass:\"img-fluid mx-auto\",attrs:{\"src\":_vm.itemInfo.LinkImagem}})])]),_c('p',{staticClass:\"post_preview\",staticStyle:{\"color\":\"#484848\"}},[_vm._v(\"Existe um consenso sobre a idade ideal para aprender inglês? Não exatamente porque a idade é apenas um dos fatores que podem influenciar o aprendizado\")]),_c('div',{staticClass:\"d-flex flex-row flex-wrap justify-content-between\"},[_c('a',{staticClass:\"btn button button-white\",attrs:{\"href\":_vm.itemInfo.Url,\"type\":\"submit\"}},[_vm._v(\"CONTINUE LENDO\")]),_c('a',{staticClass:\"btn button\",attrs:{\"href\":\"https://www.cna.com.br/blog\"}},[_vm._v(\"LEIA OUTROS ARTIGOS NO BLOG CNA\")])])])])]):_vm._e(),(_vm.carregando)?_c('section',{staticClass:\"row\",attrs:{\"id\":\"msg-envio-sucesso\"}},[_c('div',{staticClass:\"col-12 text-center\"},[_vm._v(\"\\n Carregando... Aguarde...\\n \")])]):_vm._e()])])\n}\nvar staticRenderFns = [function (){var _vm=this,_c=_vm._self._c;return _c('header',{staticClass:\"header\"},[_c('a',{attrs:{\"href\":\"https://www.cna.com.br\"}},[_c('div',{staticClass:\"logo\"},[_c('img',{attrs:{\"src\":\"https://www.cna.com.br/Content/site/assets/images/logo-cna.svg\",\"alt\":\"Logo CNA\"}})])])])\n},function (){var _vm=this,_c=_vm._self._c;return _c('span',{staticClass:\"custom-control-description\"},[_vm._v(\"\\n Consinto no tratamento dos meus dados pessoais conforme\\n \"),_c('a',{attrs:{\"href\":\"https://www.cna.com.br/politica-de-privacidade\"}},[_vm._v(\"Política de Privacidade\")]),_vm._v(\" do CNA.\\n \")])\n},function (){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"col-12 col-md-12\"},[_c('span',{staticClass:\"form-privacy right\"},[_vm._v(\"\\n O CNA respeita a sua privacidade e protege seus dados pessoais conforme nossa\\n \"),_c('a',{attrs:{\"href\":\"https://www.cna.com.br/politica-de-privacidade\"}},[_vm._v(\"Política de Privacidade\")])])])\n},function (){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"row\",staticStyle:{\"margin-bottom\":\"40px\"}},[_c('div',{staticClass:\"col-12\",staticStyle:{\"margin-top\":\"10px\",\"text-align\":\"center\",\"font-size\":\"18px\"}},[_c('label',{staticClass:\"lbl-privacy\",staticStyle:{\"color\":\"#484848\"}},[_c('span',{},[_vm._v(\"Aproveite para ler, no Blog CNA, algumas dicas de como aprender um novo idioma e saia na frente.\")])])])])\n}]\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=033fa2f0&scoped=true\"\nimport script from \"./index.vue?vue&type=script&lang=js\"\nexport * from \"./index.vue?vue&type=script&lang=js\"\nimport style0 from \"./index.vue?vue&type=style&index=0&id=033fa2f0&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"033fa2f0\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _vm._m(0)\n}\nvar staticRenderFns = [function (){var _vm=this,_c=_vm._self._c;return _c('main',{attrs:{\"id\":\"main\"}},[_c('div',{staticClass:\"container\"},[_c('header',{staticClass:\"header\"},[_c('a',{attrs:{\"href\":\"https://www.cna.com.br\"}},[_c('div',{staticClass:\"logo\"},[_c('img',{attrs:{\"src\":\"https://www.cna.com.br/Content/site/assets/images/logo-cna.svg\",\"alt\":\"Logo CNA\"}})])])]),_c('section',{staticClass:\"row\",attrs:{\"id\":\"cadastro\"}},[_c('div',{staticClass:\"col-12\"},[_c('span',{staticClass:\"title text-center\"},[_vm._v(\"Ops! Não foi possível encontrar a página solicitada.\")]),_c('span',{staticClass:\"subtitle text-center\"},[_vm._v(\"Verifique o endereço informado ou leia o QR Code novamente.\")])])])])])\n}]\n\nexport { render, staticRenderFns }","\n\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./404.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./404.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./404.vue?vue&type=template&id=ae003f28&scoped=true\"\nimport script from \"./404.vue?vue&type=script&lang=js\"\nexport * from \"./404.vue?vue&type=script&lang=js\"\nimport style0 from \"./404.vue?vue&type=style&index=0&id=ae003f28&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"ae003f28\",\n null\n \n)\n\nexport default component.exports","\nconst routers = [\n { path: 'acaocomercial', name: 'Ação Comercial', component: function (resolve) { require(['@/views/acaocomercial'], resolve) } },\n { path: 'acaocomercial/create', name: 'Novo Ação Comercial', component: function (resolve) { require(['@/views/acaocomercial/create'], resolve) } },\n { path: 'acaocomercial/edit/:id', name: 'Editar Ação Comercial', component: function (resolve) { require(['@/views/acaocomercial/edit'], resolve) } },\n\n];\n\nexport default routers","import Vue from 'vue'\nimport Router from 'vue-router'\n\nimport Auth from '@/common/auth'\n\nimport Template from '@/template/index'\n// import Home from '@/views/home'\nimport Authorized from '@/views/authorized'\nimport TrocarEscola from '@/views/trocarescola'\nimport AcessoNegado from '@/views/acessonegado'\nimport Cadastro from '@/views/cadastro'\nimport NotFound from '@/views/404'\n\nimport routersgenerated from './generated'\n\nVue.use(Router)\n\nlet childrens = routersgenerated.concat([])\n\nconst router = new Router({\n mode: 'history',\n routes: [\n {\n path: '/admin',\n redirect: '/admin/acaocomercial',\n component: Template,\n meta: { requiresAuth: true },\n children: childrens\n },\n {\n path: '/cadastro',\n component: Cadastro,\n meta: { requiresAuth: false }\n },\n {\n path: '/',\n component: Cadastro,\n redirect: '/cadastro',\n meta: { requiresAuth: false }\n },\n {\n path: '/cadastro/:id',\n component: Cadastro,\n meta: { requiresAuth: false }\n },\n {\n path: '/authorized',\n name: 'authorized',\n component: Authorized\n },\n {\n path: '/trocarescola',\n name: 'trocarescola',\n component: TrocarEscola\n },\n {\n path: '/acessonegado',\n name: 'acessonegado',\n component: AcessoNegado\n },\n {\n path: '*',\n beforeEnter: (to, from, next) => {\n next('/404')\n }\n },\n {\n path: '/404',\n name: '404',\n component: NotFound\n }\n ]\n})\n\nrouter.beforeEach(async (to, from, next) => {\n if (to.matched.some((record) => record.meta.requiresAuth)) {\n if (!Auth.logged()) {\n Auth.login(true)\n return\n }\n\n if (!Auth.canAccess(to.path)) {\n next('/acessonegado')\n return\n }\n }\n next()\n})\n\nexport default router\n","import Vue from 'vue'\nimport Auth from '../auth'\n\nVue.directive('canaccess', {\n twoWay: true,\n bind: function (el, binding, vnode, old) {\n var can = Auth.canAccess(binding.value);\n if (!can)\n el.style.display = 'none'\n }\n})","import Vue from \"vue\";\nimport App from \"./App.vue\";\nimport router from \"./router/index.js\";\nimport Global from './common/global'\n\nimport \"./common/directives/select\";\nimport \"./common/directives/datepicker\";\nimport \"./common/directives/canaccess\";\nimport \"./common/directives/htmleditor\";\n\nimport { BootstrapVue, BootstrapVueIcons } from 'bootstrap-vue'\n\n Vue.use(BootstrapVue);\n Vue.use(BootstrapVueIcons)\n\nimport VueSweetalert2 from \"vue-sweetalert2\";\nVue.use(VueSweetalert2);\n\nimport 'bootstrap/dist/css/bootstrap.css';\nimport \"bootstrap-vue/dist/bootstrap-vue.css\";\nimport \"./assets/css/custom.scss\";\n\nimport { VueReCaptcha } from 'vue-recaptcha-v3'\nVue.use(VueReCaptcha, {\n siteKey: Global.KEY_RECAPTCHA,\n loaderOptions: {\n useEnterprise: true\n }\n})\n\nVue.config.productionTip = false;\n\nVue.prototype.$eventHub = new Vue();\n\nnew Vue({\n router,\n render: (h) => h(App),\n mounted() {\n this.$eventHub.$on(\"show-notification\", (data) => {\n let _config = {\n position: \"top\",\n toast: true,\n type: data.type,\n title: data.title,\n html: data.text,\n timer: 5000,\n showConfirmButton: false,\n };\n\n if (data.type == \"error\") {\n _config.timer = null;\n _config.showCancelButton = true;\n _config.cancelButtonText = \"Fechar\";\n }\n\n if (data.modal) {\n _config.position = \"center\";\n _config.toast = false;\n _config.showConfirmButton = true;\n _config.showCancelButton = false;\n _config.timer = null;\n _config.allowOutsideClick = false;\n _config.allowEscapeKey = false;\n _config.allowEnterKey = false;\n }\n\n this.$swal(_config);\n });\n },\n beforeDestroy() {\n this.$eventHub.$off(\"show-notification\");\n },\n}).$mount(\"#app\");\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('nav',{class:[_vm.navClass]},[_c('ul',{staticClass:\"pagination justify-content-center\",class:[_vm.ulClass]},[(_vm.showPrevious())?_c('li',{staticClass:\"page-item\",class:[_vm.liClass, { disabled: _vm.internalCurrentPage <= 1 }]},[(_vm.internalCurrentPage <= 1)?_c('a',{staticClass:\"page-link\",attrs:{\"href\":\"#\"}},[_c('span',{attrs:{\"aria-hidden\":\"true\"}},[_vm._v(_vm._s(_vm.config.previousText))])]):_vm._e(),(_vm.internalCurrentPage > 1)?_c('a',{staticClass:\"page-link\",attrs:{\"href\":\"#\",\"aria-label\":_vm.config.ariaPrevious},on:{\"click\":function($event){$event.preventDefault();return _vm.changePage(_vm.internalCurrentPage - 1)}}},[_c('span',{attrs:{\"aria-hidden\":\"true\"}},[_vm._v(_vm._s(_vm.config.previousText))])]):_vm._e()]):_vm._e(),_vm._l((_vm.array),function(num){return _c('li',{key:num,staticClass:\"page-item\",class:[_vm.liClass, { active: num === _vm.internalCurrentPage }]},[_c('a',{staticClass:\"page-link\",attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();return _vm.changePage(num)}}},[_vm._v(_vm._s(num))])])}),(_vm.showNext())?_c('li',{staticClass:\"page-item\",class:[\n _vm.liClass,\n { disabled: _vm.internalCurrentPage === _vm.lastPage || _vm.lastPage === 0 }\n ]},[(_vm.internalCurrentPage === _vm.lastPage || _vm.lastPage === 0)?_c('a',{staticClass:\"page-link\",attrs:{\"href\":\"#\"}},[_c('span',{attrs:{\"aria-hidden\":\"true\"}},[_vm._v(_vm._s(_vm.config.nextText))])]):_vm._e(),(_vm.internalCurrentPage < _vm.lastPage)?_c('a',{staticClass:\"page-link\",attrs:{\"href\":\"#\",\"aria-label\":_vm.config.ariaNext},on:{\"click\":function($event){$event.preventDefault();return _vm.changePage(_vm.internalCurrentPage + 1)}}},[_c('span',{attrs:{\"aria-hidden\":\"true\"}},[_vm._v(_vm._s(_vm.config.nextText))])]):_vm._e()]):_vm._e()],2)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./pagination.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./pagination.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./pagination.vue?vue&type=template&id=295b38e6\"\nimport script from \"./pagination.vue?vue&type=script&lang=js\"\nexport * from \"./pagination.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import pagination from '@/common/components/pagination'\nimport Auth from '@/common/auth'\nimport Cache from '@/common/cache'\n\nexport default {\n components: { pagination },\n data: () => ({\n mask_data: '##/##/####',\n mask_cpf: '###.###.###-##',\n mask_rg: '##.###.###-#',\n mask_tel: '####-####',\n mask_cel: '#####-####',\n mask_cep: '#####-###',\n mask_ddd: '##',\n money: {\n decimal: ',',\n thousands: '.',\n precision: 2,\n masked: false,\n },\n optionsJsonEditor: {\n mode: 'code'\n }\n }),\n methods: {\n formatPrice(value) {\n let val = (value / 1).toFixed(2).replace('.', ',')\n return 'R$' + val.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, \".\")\n },\n\n defaultPageChanged: function (filter, index) {\n filter.pageIndex = index;\n return filter;\n },\n defaultOrderBy: function (filter, field) {\n let type = 0;\n if (filter.orderByType == 0) type = 1;\n filter.orderFields = field;\n filter.orderByType = type;\n filter.isOrderByDynamic = true;\n return filter;\n },\n defaultPageSizeChanged: function (filter, size) {\n filter.pageIndex = 1;\n filter.pageSize = size;\n return filter;\n },\n defaultInfoMessage: function (msg) {\n this.hideLoading();\n this.$eventHub.$emit('show-notification', {\n type: 'info',\n title: 'Info',\n text: msg\n })\n },\n defaultWarningMessage: function (msg) {\n this.hideLoading();\n this.$eventHub.$emit('show-notification', {\n type: 'warning',\n title: 'Warning',\n text: msg\n })\n },\n defaultSuccessResult: function (msg) {\n this.hideLoading();\n this.$eventHub.$emit('show-notification', {\n type: 'success',\n title: 'Sucesso',\n text: msg\n })\n },\n defaultErrorResult: function (err) {\n this.hideLoading();\n if (!err) {\n this.$eventHub.$emit('show-notification', {\n type: 'error',\n title: 'Atenção',\n text: \"Erro\"\n })\n return;\n }\n\n if (err.data && err.data.errors) {\n for (var i = 0; i < err.data.errors.length; i++) {\n this.$eventHub.$emit('show-notification', {\n type: 'error',\n title: 'Atenção',\n text: err.data.errors[i]\n })\n }\n }\n\n else\n this.$eventHub.$emit('show-notification', {\n type: 'error',\n title: 'Atenção',\n text: err\n });\n },\n configNotification() {\n this.$eventHub.$on('show-notification', (data) => {\n this.$notify({\n type: data.type,\n title: data.title,\n text: data.text,\n duration: 10000,\n speed: 1000\n })\n })\n },\n showLoading: function () {\n this.$eventHub.$emit('show-loading', true)\n },\n hideLoading: function () {\n this.$eventHub.$emit('show-loading', false)\n },\n failLoading: function () {\n this.$eventHub.$emit('show-loading', false)\n },\n\n },\n mounted() {\n var user = Auth.currentUser();\n var escolaBox = Cache.get(\"escola_box\");\n\n if (escolaBox) {\n if (user.tenant != escolaBox) {\n window.location = \"/acessonegado\";\n }\n }\n\n window.scrollTo(0, 0);\n },\n}\n","(function () {\nvar lists = (function () {\n 'use strict';\n\n var global = tinymce.util.Tools.resolve('tinymce.PluginManager');\n\n var global$1 = tinymce.util.Tools.resolve('tinymce.dom.RangeUtils');\n\n var global$2 = tinymce.util.Tools.resolve('tinymce.dom.TreeWalker');\n\n var global$3 = tinymce.util.Tools.resolve('tinymce.util.VK');\n\n var global$4 = tinymce.util.Tools.resolve('tinymce.dom.BookmarkManager');\n\n var global$5 = tinymce.util.Tools.resolve('tinymce.util.Tools');\n\n var global$6 = tinymce.util.Tools.resolve('tinymce.dom.DOMUtils');\n\n var isTextNode = function (node) {\n return node && node.nodeType === 3;\n };\n var isListNode = function (node) {\n return node && /^(OL|UL|DL)$/.test(node.nodeName);\n };\n var isListItemNode = function (node) {\n return node && /^(LI|DT|DD)$/.test(node.nodeName);\n };\n var isTableCellNode = function (node) {\n return node && /^(TH|TD)$/.test(node.nodeName);\n };\n var isBr = function (node) {\n return node && node.nodeName === 'BR';\n };\n var isFirstChild = function (node) {\n return node.parentNode.firstChild === node;\n };\n var isLastChild = function (node) {\n return node.parentNode.lastChild === node;\n };\n var isTextBlock = function (editor, node) {\n return node && !!editor.schema.getTextBlockElements()[node.nodeName];\n };\n var isBlock = function (node, blockElements) {\n return node && node.nodeName in blockElements;\n };\n var isBogusBr = function (dom, node) {\n if (!isBr(node)) {\n return false;\n }\n if (dom.isBlock(node.nextSibling) && !isBr(node.previousSibling)) {\n return true;\n }\n return false;\n };\n var isEmpty = function (dom, elm, keepBookmarks) {\n var empty = dom.isEmpty(elm);\n if (keepBookmarks && dom.select('span[data-mce-type=bookmark]', elm).length > 0) {\n return false;\n }\n return empty;\n };\n var isChildOfBody = function (dom, elm) {\n return dom.isChildOf(elm, dom.getRoot());\n };\n var $_eyfb4cgljkmcwpc0 = {\n isTextNode: isTextNode,\n isListNode: isListNode,\n isListItemNode: isListItemNode,\n isTableCellNode: isTableCellNode,\n isBr: isBr,\n isFirstChild: isFirstChild,\n isLastChild: isLastChild,\n isTextBlock: isTextBlock,\n isBlock: isBlock,\n isBogusBr: isBogusBr,\n isEmpty: isEmpty,\n isChildOfBody: isChildOfBody\n };\n\n var getNormalizedEndPoint = function (container, offset) {\n var node = global$1.getNode(container, offset);\n if ($_eyfb4cgljkmcwpc0.isListItemNode(container) && $_eyfb4cgljkmcwpc0.isTextNode(node)) {\n var textNodeOffset = offset >= container.childNodes.length ? node.data.length : 0;\n return {\n container: node,\n offset: textNodeOffset\n };\n }\n return {\n container: container,\n offset: offset\n };\n };\n var normalizeRange = function (rng) {\n var outRng = rng.cloneRange();\n var rangeStart = getNormalizedEndPoint(rng.startContainer, rng.startOffset);\n outRng.setStart(rangeStart.container, rangeStart.offset);\n var rangeEnd = getNormalizedEndPoint(rng.endContainer, rng.endOffset);\n outRng.setEnd(rangeEnd.container, rangeEnd.offset);\n return outRng;\n };\n var $_8n62cfgkjkmcwpbw = {\n getNormalizedEndPoint: getNormalizedEndPoint,\n normalizeRange: normalizeRange\n };\n\n var DOM = global$6.DOM;\n var createBookmark = function (rng) {\n var bookmark = {};\n var setupEndPoint = function (start) {\n var offsetNode, container, offset;\n container = rng[start ? 'startContainer' : 'endContainer'];\n offset = rng[start ? 'startOffset' : 'endOffset'];\n if (container.nodeType === 1) {\n offsetNode = DOM.create('span', { 'data-mce-type': 'bookmark' });\n if (container.hasChildNodes()) {\n offset = Math.min(offset, container.childNodes.length - 1);\n if (start) {\n container.insertBefore(offsetNode, container.childNodes[offset]);\n } else {\n DOM.insertAfter(offsetNode, container.childNodes[offset]);\n }\n } else {\n container.appendChild(offsetNode);\n }\n container = offsetNode;\n offset = 0;\n }\n bookmark[start ? 'startContainer' : 'endContainer'] = container;\n bookmark[start ? 'startOffset' : 'endOffset'] = offset;\n };\n setupEndPoint(true);\n if (!rng.collapsed) {\n setupEndPoint();\n }\n return bookmark;\n };\n var resolveBookmark = function (bookmark) {\n function restoreEndPoint(start) {\n var container, offset, node;\n var nodeIndex = function (container) {\n var node = container.parentNode.firstChild, idx = 0;\n while (node) {\n if (node === container) {\n return idx;\n }\n if (node.nodeType !== 1 || node.getAttribute('data-mce-type') !== 'bookmark') {\n idx++;\n }\n node = node.nextSibling;\n }\n return -1;\n };\n container = node = bookmark[start ? 'startContainer' : 'endContainer'];\n offset = bookmark[start ? 'startOffset' : 'endOffset'];\n if (!container) {\n return;\n }\n if (container.nodeType === 1) {\n offset = nodeIndex(container);\n container = container.parentNode;\n DOM.remove(node);\n if (!container.hasChildNodes() && DOM.isBlock(container)) {\n container.appendChild(DOM.create('br'));\n }\n }\n bookmark[start ? 'startContainer' : 'endContainer'] = container;\n bookmark[start ? 'startOffset' : 'endOffset'] = offset;\n }\n restoreEndPoint(true);\n restoreEndPoint();\n var rng = DOM.createRng();\n rng.setStart(bookmark.startContainer, bookmark.startOffset);\n if (bookmark.endContainer) {\n rng.setEnd(bookmark.endContainer, bookmark.endOffset);\n }\n return $_8n62cfgkjkmcwpbw.normalizeRange(rng);\n };\n var $_aredwjgjjkmcwpbt = {\n createBookmark: createBookmark,\n resolveBookmark: resolveBookmark\n };\n\n var DOM$1 = global$6.DOM;\n var normalizeList = function (dom, ul) {\n var sibling;\n var parentNode = ul.parentNode;\n if (parentNode.nodeName === 'LI' && parentNode.firstChild === ul) {\n sibling = parentNode.previousSibling;\n if (sibling && sibling.nodeName === 'LI') {\n sibling.appendChild(ul);\n if ($_eyfb4cgljkmcwpc0.isEmpty(dom, parentNode)) {\n DOM$1.remove(parentNode);\n }\n } else {\n DOM$1.setStyle(parentNode, 'listStyleType', 'none');\n }\n }\n if ($_eyfb4cgljkmcwpc0.isListNode(parentNode)) {\n sibling = parentNode.previousSibling;\n if (sibling && sibling.nodeName === 'LI') {\n sibling.appendChild(ul);\n }\n }\n };\n var normalizeLists = function (dom, element) {\n global$5.each(global$5.grep(dom.select('ol,ul', element)), function (ul) {\n normalizeList(dom, ul);\n });\n };\n var $_f0sxyjgmjkmcwpc3 = {\n normalizeList: normalizeList,\n normalizeLists: normalizeLists\n };\n\n var global$7 = tinymce.util.Tools.resolve('tinymce.dom.DomQuery');\n\n var getParentList = function (editor) {\n var selectionStart = editor.selection.getStart(true);\n return editor.dom.getParent(selectionStart, 'OL,UL,DL', getClosestListRootElm(editor, selectionStart));\n };\n var isParentListSelected = function (parentList, selectedBlocks) {\n return parentList && selectedBlocks.length === 1 && selectedBlocks[0] === parentList;\n };\n var findSubLists = function (parentList) {\n return global$5.grep(parentList.querySelectorAll('ol,ul,dl'), function (elm) {\n return $_eyfb4cgljkmcwpc0.isListNode(elm);\n });\n };\n var getSelectedSubLists = function (editor) {\n var parentList = getParentList(editor);\n var selectedBlocks = editor.selection.getSelectedBlocks();\n if (isParentListSelected(parentList, selectedBlocks)) {\n return findSubLists(parentList);\n } else {\n return global$5.grep(selectedBlocks, function (elm) {\n return $_eyfb4cgljkmcwpc0.isListNode(elm) && parentList !== elm;\n });\n }\n };\n var findParentListItemsNodes = function (editor, elms) {\n var listItemsElms = global$5.map(elms, function (elm) {\n var parentLi = editor.dom.getParent(elm, 'li,dd,dt', getClosestListRootElm(editor, elm));\n return parentLi ? parentLi : elm;\n });\n return global$7.unique(listItemsElms);\n };\n var getSelectedListItems = function (editor) {\n var selectedBlocks = editor.selection.getSelectedBlocks();\n return global$5.grep(findParentListItemsNodes(editor, selectedBlocks), function (block) {\n return $_eyfb4cgljkmcwpc0.isListItemNode(block);\n });\n };\n var getClosestListRootElm = function (editor, elm) {\n var parentTableCell = editor.dom.getParents(elm, 'TD,TH');\n var root = parentTableCell.length > 0 ? parentTableCell[0] : editor.getBody();\n return root;\n };\n var $_g5359xgnjkmcwpc5 = {\n getParentList: getParentList,\n getSelectedSubLists: getSelectedSubLists,\n getSelectedListItems: getSelectedListItems,\n getClosestListRootElm: getClosestListRootElm\n };\n\n var global$8 = tinymce.util.Tools.resolve('tinymce.Env');\n\n var DOM$2 = global$6.DOM;\n var createNewTextBlock = function (editor, contentNode, blockName) {\n var node, textBlock;\n var fragment = DOM$2.createFragment();\n var hasContentNode;\n var blockElements = editor.schema.getBlockElements();\n if (editor.settings.forced_root_block) {\n blockName = blockName || editor.settings.forced_root_block;\n }\n if (blockName) {\n textBlock = DOM$2.create(blockName);\n if (textBlock.tagName === editor.settings.forced_root_block) {\n DOM$2.setAttribs(textBlock, editor.settings.forced_root_block_attrs);\n }\n if (!$_eyfb4cgljkmcwpc0.isBlock(contentNode.firstChild, blockElements)) {\n fragment.appendChild(textBlock);\n }\n }\n if (contentNode) {\n while (node = contentNode.firstChild) {\n var nodeName = node.nodeName;\n if (!hasContentNode && (nodeName !== 'SPAN' || node.getAttribute('data-mce-type') !== 'bookmark')) {\n hasContentNode = true;\n }\n if ($_eyfb4cgljkmcwpc0.isBlock(node, blockElements)) {\n fragment.appendChild(node);\n textBlock = null;\n } else {\n if (blockName) {\n if (!textBlock) {\n textBlock = DOM$2.create(blockName);\n fragment.appendChild(textBlock);\n }\n textBlock.appendChild(node);\n } else {\n fragment.appendChild(node);\n }\n }\n }\n }\n if (!editor.settings.forced_root_block) {\n fragment.appendChild(DOM$2.create('br'));\n } else {\n if (!hasContentNode && (!global$8.ie || global$8.ie > 10)) {\n textBlock.appendChild(DOM$2.create('br', { 'data-mce-bogus': '1' }));\n }\n }\n return fragment;\n };\n var $_givla1gqjkmcwpcb = { createNewTextBlock: createNewTextBlock };\n\n var DOM$3 = global$6.DOM;\n var splitList = function (editor, ul, li, newBlock) {\n var tmpRng, fragment, bookmarks, node;\n var removeAndKeepBookmarks = function (targetNode) {\n global$5.each(bookmarks, function (node) {\n targetNode.parentNode.insertBefore(node, li.parentNode);\n });\n DOM$3.remove(targetNode);\n };\n bookmarks = DOM$3.select('span[data-mce-type=\"bookmark\"]', ul);\n newBlock = newBlock || $_givla1gqjkmcwpcb.createNewTextBlock(editor, li);\n tmpRng = DOM$3.createRng();\n tmpRng.setStartAfter(li);\n tmpRng.setEndAfter(ul);\n fragment = tmpRng.extractContents();\n for (node = fragment.firstChild; node; node = node.firstChild) {\n if (node.nodeName === 'LI' && editor.dom.isEmpty(node)) {\n DOM$3.remove(node);\n break;\n }\n }\n if (!editor.dom.isEmpty(fragment)) {\n DOM$3.insertAfter(fragment, ul);\n }\n DOM$3.insertAfter(newBlock, ul);\n if ($_eyfb4cgljkmcwpc0.isEmpty(editor.dom, li.parentNode)) {\n removeAndKeepBookmarks(li.parentNode);\n }\n DOM$3.remove(li);\n if ($_eyfb4cgljkmcwpc0.isEmpty(editor.dom, ul)) {\n DOM$3.remove(ul);\n }\n };\n var $_3aykwpgpjkmcwpc8 = { splitList: splitList };\n\n var DOM$4 = global$6.DOM;\n var removeEmptyLi = function (dom, li) {\n if ($_eyfb4cgljkmcwpc0.isEmpty(dom, li)) {\n DOM$4.remove(li);\n }\n };\n var outdent = function (editor, li) {\n var ul = li.parentNode;\n var ulParent, newBlock;\n if (ul) {\n ulParent = ul.parentNode;\n } else {\n removeEmptyLi(editor.dom, li);\n return true;\n }\n if (ul === editor.getBody()) {\n return true;\n }\n if (li.nodeName === 'DD') {\n DOM$4.rename(li, 'DT');\n return true;\n }\n if ($_eyfb4cgljkmcwpc0.isFirstChild(li) && $_eyfb4cgljkmcwpc0.isLastChild(li)) {\n if (ulParent.nodeName === 'LI') {\n DOM$4.insertAfter(li, ulParent);\n removeEmptyLi(editor.dom, ulParent);\n DOM$4.remove(ul);\n } else if ($_eyfb4cgljkmcwpc0.isListNode(ulParent)) {\n DOM$4.remove(ul, true);\n } else {\n ulParent.insertBefore($_givla1gqjkmcwpcb.createNewTextBlock(editor, li), ul);\n DOM$4.remove(ul);\n }\n return true;\n } else if ($_eyfb4cgljkmcwpc0.isFirstChild(li)) {\n if (ulParent.nodeName === 'LI') {\n DOM$4.insertAfter(li, ulParent);\n li.appendChild(ul);\n removeEmptyLi(editor.dom, ulParent);\n } else if ($_eyfb4cgljkmcwpc0.isListNode(ulParent)) {\n ulParent.insertBefore(li, ul);\n } else {\n ulParent.insertBefore($_givla1gqjkmcwpcb.createNewTextBlock(editor, li), ul);\n DOM$4.remove(li);\n }\n return true;\n } else if ($_eyfb4cgljkmcwpc0.isLastChild(li)) {\n if (ulParent.nodeName === 'LI') {\n DOM$4.insertAfter(li, ulParent);\n } else if ($_eyfb4cgljkmcwpc0.isListNode(ulParent)) {\n DOM$4.insertAfter(li, ul);\n } else {\n DOM$4.insertAfter($_givla1gqjkmcwpcb.createNewTextBlock(editor, li), ul);\n DOM$4.remove(li);\n }\n return true;\n }\n if (ulParent.nodeName === 'LI') {\n ul = ulParent;\n newBlock = $_givla1gqjkmcwpcb.createNewTextBlock(editor, li, 'LI');\n } else if ($_eyfb4cgljkmcwpc0.isListNode(ulParent)) {\n newBlock = $_givla1gqjkmcwpcb.createNewTextBlock(editor, li, 'LI');\n } else {\n newBlock = $_givla1gqjkmcwpcb.createNewTextBlock(editor, li);\n }\n $_3aykwpgpjkmcwpc8.splitList(editor, ul, li, newBlock);\n $_f0sxyjgmjkmcwpc3.normalizeLists(editor.dom, ul.parentNode);\n return true;\n };\n var outdentSelection = function (editor) {\n var listElements = $_g5359xgnjkmcwpc5.getSelectedListItems(editor);\n if (listElements.length) {\n var bookmark = $_aredwjgjjkmcwpbt.createBookmark(editor.selection.getRng());\n var i = void 0, y = void 0;\n var root = $_g5359xgnjkmcwpc5.getClosestListRootElm(editor, editor.selection.getStart(true));\n i = listElements.length;\n while (i--) {\n var node = listElements[i].parentNode;\n while (node && node !== root) {\n y = listElements.length;\n while (y--) {\n if (listElements[y] === node) {\n listElements.splice(i, 1);\n break;\n }\n }\n node = node.parentNode;\n }\n }\n for (i = 0; i < listElements.length; i++) {\n if (!outdent(editor, listElements[i]) && i === 0) {\n break;\n }\n }\n editor.selection.setRng($_aredwjgjjkmcwpbt.resolveBookmark(bookmark));\n editor.nodeChanged();\n return true;\n }\n };\n var $_80fi2gghjkmcwpbq = {\n outdent: outdent,\n outdentSelection: outdentSelection\n };\n\n var updateListStyle = function (dom, el, detail) {\n var type = detail['list-style-type'] ? detail['list-style-type'] : null;\n dom.setStyle(el, 'list-style-type', type);\n };\n var setAttribs = function (elm, attrs) {\n global$5.each(attrs, function (value, key) {\n elm.setAttribute(key, value);\n });\n };\n var updateListAttrs = function (dom, el, detail) {\n setAttribs(el, detail['list-attributes']);\n global$5.each(dom.select('li', el), function (li) {\n setAttribs(li, detail['list-item-attributes']);\n });\n };\n var updateListWithDetails = function (dom, el, detail) {\n updateListStyle(dom, el, detail);\n updateListAttrs(dom, el, detail);\n };\n var removeStyles = function (dom, element, styles) {\n global$5.each(styles, function (style) {\n var _a;\n return dom.setStyle(element, (_a = {}, _a[style] = '', _a));\n });\n };\n var getEndPointNode = function (editor, rng, start, root) {\n var container, offset;\n container = rng[start ? 'startContainer' : 'endContainer'];\n offset = rng[start ? 'startOffset' : 'endOffset'];\n if (container.nodeType === 1) {\n container = container.childNodes[Math.min(offset, container.childNodes.length - 1)] || container;\n }\n if (!start && $_eyfb4cgljkmcwpc0.isBr(container.nextSibling)) {\n container = container.nextSibling;\n }\n while (container.parentNode !== root) {\n if ($_eyfb4cgljkmcwpc0.isTextBlock(editor, container)) {\n return container;\n }\n if (/^(TD|TH)$/.test(container.parentNode.nodeName)) {\n return container;\n }\n container = container.parentNode;\n }\n return container;\n };\n var getSelectedTextBlocks = function (editor, rng, root) {\n var textBlocks = [], dom = editor.dom;\n var startNode = getEndPointNode(editor, rng, true, root);\n var endNode = getEndPointNode(editor, rng, false, root);\n var block;\n var siblings = [];\n for (var node = startNode; node; node = node.nextSibling) {\n siblings.push(node);\n if (node === endNode) {\n break;\n }\n }\n global$5.each(siblings, function (node) {\n if ($_eyfb4cgljkmcwpc0.isTextBlock(editor, node)) {\n textBlocks.push(node);\n block = null;\n return;\n }\n if (dom.isBlock(node) || $_eyfb4cgljkmcwpc0.isBr(node)) {\n if ($_eyfb4cgljkmcwpc0.isBr(node)) {\n dom.remove(node);\n }\n block = null;\n return;\n }\n var nextSibling = node.nextSibling;\n if (global$4.isBookmarkNode(node)) {\n if ($_eyfb4cgljkmcwpc0.isTextBlock(editor, nextSibling) || !nextSibling && node.parentNode === root) {\n block = null;\n return;\n }\n }\n if (!block) {\n block = dom.create('p');\n node.parentNode.insertBefore(block, node);\n textBlocks.push(block);\n }\n block.appendChild(node);\n });\n return textBlocks;\n };\n var hasCompatibleStyle = function (dom, sib, detail) {\n var sibStyle = dom.getStyle(sib, 'list-style-type');\n var detailStyle = detail ? detail['list-style-type'] : '';\n detailStyle = detailStyle === null ? '' : detailStyle;\n return sibStyle === detailStyle;\n };\n var applyList = function (editor, listName, detail) {\n if (detail === void 0) {\n detail = {};\n }\n var rng = editor.selection.getRng(true);\n var bookmark;\n var listItemName = 'LI';\n var root = $_g5359xgnjkmcwpc5.getClosestListRootElm(editor, editor.selection.getStart(true));\n var dom = editor.dom;\n if (dom.getContentEditable(editor.selection.getNode()) === 'false') {\n return;\n }\n listName = listName.toUpperCase();\n if (listName === 'DL') {\n listItemName = 'DT';\n }\n bookmark = $_aredwjgjjkmcwpbt.createBookmark(rng);\n global$5.each(getSelectedTextBlocks(editor, rng, root), function (block) {\n var listBlock, sibling;\n sibling = block.previousSibling;\n if (sibling && $_eyfb4cgljkmcwpc0.isListNode(sibling) && sibling.nodeName === listName && hasCompatibleStyle(dom, sibling, detail)) {\n listBlock = sibling;\n block = dom.rename(block, listItemName);\n sibling.appendChild(block);\n } else {\n listBlock = dom.create(listName);\n block.parentNode.insertBefore(listBlock, block);\n listBlock.appendChild(block);\n block = dom.rename(block, listItemName);\n }\n removeStyles(dom, block, [\n 'margin',\n 'margin-right',\n 'margin-bottom',\n 'margin-left',\n 'margin-top',\n 'padding',\n 'padding-right',\n 'padding-bottom',\n 'padding-left',\n 'padding-top'\n ]);\n updateListWithDetails(dom, listBlock, detail);\n mergeWithAdjacentLists(editor.dom, listBlock);\n });\n editor.selection.setRng($_aredwjgjjkmcwpbt.resolveBookmark(bookmark));\n };\n var removeList = function (editor) {\n var bookmark = $_aredwjgjjkmcwpbt.createBookmark(editor.selection.getRng(true));\n var root = $_g5359xgnjkmcwpc5.getClosestListRootElm(editor, editor.selection.getStart(true));\n var listItems = $_g5359xgnjkmcwpc5.getSelectedListItems(editor);\n var emptyListItems = global$5.grep(listItems, function (li) {\n return editor.dom.isEmpty(li);\n });\n listItems = global$5.grep(listItems, function (li) {\n return !editor.dom.isEmpty(li);\n });\n global$5.each(emptyListItems, function (li) {\n if ($_eyfb4cgljkmcwpc0.isEmpty(editor.dom, li)) {\n $_80fi2gghjkmcwpbq.outdent(editor, li);\n return;\n }\n });\n global$5.each(listItems, function (li) {\n var node, rootList;\n if (li.parentNode === editor.getBody()) {\n return;\n }\n for (node = li; node && node !== root; node = node.parentNode) {\n if ($_eyfb4cgljkmcwpc0.isListNode(node)) {\n rootList = node;\n }\n }\n $_3aykwpgpjkmcwpc8.splitList(editor, rootList, li);\n $_f0sxyjgmjkmcwpc3.normalizeLists(editor.dom, rootList.parentNode);\n });\n editor.selection.setRng($_aredwjgjjkmcwpbt.resolveBookmark(bookmark));\n };\n var isValidLists = function (list1, list2) {\n return list1 && list2 && $_eyfb4cgljkmcwpc0.isListNode(list1) && list1.nodeName === list2.nodeName;\n };\n var hasSameListStyle = function (dom, list1, list2) {\n var targetStyle = dom.getStyle(list1, 'list-style-type', true);\n var style = dom.getStyle(list2, 'list-style-type', true);\n return targetStyle === style;\n };\n var hasSameClasses = function (elm1, elm2) {\n return elm1.className === elm2.className;\n };\n var shouldMerge = function (dom, list1, list2) {\n return isValidLists(list1, list2) && hasSameListStyle(dom, list1, list2) && hasSameClasses(list1, list2);\n };\n var mergeWithAdjacentLists = function (dom, listBlock) {\n var sibling, node;\n sibling = listBlock.nextSibling;\n if (shouldMerge(dom, listBlock, sibling)) {\n while (node = sibling.firstChild) {\n listBlock.appendChild(node);\n }\n dom.remove(sibling);\n }\n sibling = listBlock.previousSibling;\n if (shouldMerge(dom, listBlock, sibling)) {\n while (node = sibling.lastChild) {\n listBlock.insertBefore(node, listBlock.firstChild);\n }\n dom.remove(sibling);\n }\n };\n var updateList = function (dom, list, listName, detail) {\n if (list.nodeName !== listName) {\n var newList = dom.rename(list, listName);\n updateListWithDetails(dom, newList, detail);\n } else {\n updateListWithDetails(dom, list, detail);\n }\n };\n var toggleMultipleLists = function (editor, parentList, lists, listName, detail) {\n if (parentList.nodeName === listName && !hasListStyleDetail(detail)) {\n removeList(editor);\n } else {\n var bookmark = $_aredwjgjjkmcwpbt.createBookmark(editor.selection.getRng(true));\n global$5.each([parentList].concat(lists), function (elm) {\n updateList(editor.dom, elm, listName, detail);\n });\n editor.selection.setRng($_aredwjgjjkmcwpbt.resolveBookmark(bookmark));\n }\n };\n var hasListStyleDetail = function (detail) {\n return 'list-style-type' in detail;\n };\n var toggleSingleList = function (editor, parentList, listName, detail) {\n if (parentList === editor.getBody()) {\n return;\n }\n if (parentList) {\n if (parentList.nodeName === listName && !hasListStyleDetail(detail)) {\n removeList(editor);\n } else {\n var bookmark = $_aredwjgjjkmcwpbt.createBookmark(editor.selection.getRng(true));\n updateListWithDetails(editor.dom, parentList, detail);\n mergeWithAdjacentLists(editor.dom, editor.dom.rename(parentList, listName));\n editor.selection.setRng($_aredwjgjjkmcwpbt.resolveBookmark(bookmark));\n }\n } else {\n applyList(editor, listName, detail);\n }\n };\n var toggleList = function (editor, listName, detail) {\n var parentList = $_g5359xgnjkmcwpc5.getParentList(editor);\n var selectedSubLists = $_g5359xgnjkmcwpc5.getSelectedSubLists(editor);\n detail = detail ? detail : {};\n if (parentList && selectedSubLists.length > 0) {\n toggleMultipleLists(editor, parentList, selectedSubLists, listName, detail);\n } else {\n toggleSingleList(editor, parentList, listName, detail);\n }\n };\n var $_8bvl87gejkmcwpbi = {\n toggleList: toggleList,\n removeList: removeList,\n mergeWithAdjacentLists: mergeWithAdjacentLists\n };\n\n var findNextCaretContainer = function (editor, rng, isForward, root) {\n var node = rng.startContainer;\n var offset = rng.startOffset;\n var nonEmptyBlocks, walker;\n if (node.nodeType === 3 && (isForward ? offset < node.data.length : offset > 0)) {\n return node;\n }\n nonEmptyBlocks = editor.schema.getNonEmptyElements();\n if (node.nodeType === 1) {\n node = global$1.getNode(node, offset);\n }\n walker = new global$2(node, root);\n if (isForward) {\n if ($_eyfb4cgljkmcwpc0.isBogusBr(editor.dom, node)) {\n walker.next();\n }\n }\n while (node = walker[isForward ? 'next' : 'prev2']()) {\n if (node.nodeName === 'LI' && !node.hasChildNodes()) {\n return node;\n }\n if (nonEmptyBlocks[node.nodeName]) {\n return node;\n }\n if (node.nodeType === 3 && node.data.length > 0) {\n return node;\n }\n }\n };\n var hasOnlyOneBlockChild = function (dom, elm) {\n var childNodes = elm.childNodes;\n return childNodes.length === 1 && !$_eyfb4cgljkmcwpc0.isListNode(childNodes[0]) && dom.isBlock(childNodes[0]);\n };\n var unwrapSingleBlockChild = function (dom, elm) {\n if (hasOnlyOneBlockChild(dom, elm)) {\n dom.remove(elm.firstChild, true);\n }\n };\n var moveChildren = function (dom, fromElm, toElm) {\n var node, targetElm;\n targetElm = hasOnlyOneBlockChild(dom, toElm) ? toElm.firstChild : toElm;\n unwrapSingleBlockChild(dom, fromElm);\n if (!$_eyfb4cgljkmcwpc0.isEmpty(dom, fromElm, true)) {\n while (node = fromElm.firstChild) {\n targetElm.appendChild(node);\n }\n }\n };\n var mergeLiElements = function (dom, fromElm, toElm) {\n var node, listNode;\n var ul = fromElm.parentNode;\n if (!$_eyfb4cgljkmcwpc0.isChildOfBody(dom, fromElm) || !$_eyfb4cgljkmcwpc0.isChildOfBody(dom, toElm)) {\n return;\n }\n if ($_eyfb4cgljkmcwpc0.isListNode(toElm.lastChild)) {\n listNode = toElm.lastChild;\n }\n if (ul === toElm.lastChild) {\n if ($_eyfb4cgljkmcwpc0.isBr(ul.previousSibling)) {\n dom.remove(ul.previousSibling);\n }\n }\n node = toElm.lastChild;\n if (node && $_eyfb4cgljkmcwpc0.isBr(node) && fromElm.hasChildNodes()) {\n dom.remove(node);\n }\n if ($_eyfb4cgljkmcwpc0.isEmpty(dom, toElm, true)) {\n dom.$(toElm).empty();\n }\n moveChildren(dom, fromElm, toElm);\n if (listNode) {\n toElm.appendChild(listNode);\n }\n dom.remove(fromElm);\n if ($_eyfb4cgljkmcwpc0.isEmpty(dom, ul) && ul !== dom.getRoot()) {\n dom.remove(ul);\n }\n };\n var mergeIntoEmptyLi = function (editor, fromLi, toLi) {\n editor.dom.$(toLi).empty();\n mergeLiElements(editor.dom, fromLi, toLi);\n editor.selection.setCursorLocation(toLi);\n };\n var mergeForward = function (editor, rng, fromLi, toLi) {\n var dom = editor.dom;\n if (dom.isEmpty(toLi)) {\n mergeIntoEmptyLi(editor, fromLi, toLi);\n } else {\n var bookmark = $_aredwjgjjkmcwpbt.createBookmark(rng);\n mergeLiElements(dom, fromLi, toLi);\n editor.selection.setRng($_aredwjgjjkmcwpbt.resolveBookmark(bookmark));\n }\n };\n var mergeBackward = function (editor, rng, fromLi, toLi) {\n var bookmark = $_aredwjgjjkmcwpbt.createBookmark(rng);\n mergeLiElements(editor.dom, fromLi, toLi);\n var resolvedBookmark = $_aredwjgjjkmcwpbt.resolveBookmark(bookmark);\n editor.selection.setRng(resolvedBookmark);\n };\n var backspaceDeleteFromListToListCaret = function (editor, isForward) {\n var dom = editor.dom, selection = editor.selection;\n var selectionStartElm = selection.getStart();\n var root = $_g5359xgnjkmcwpc5.getClosestListRootElm(editor, selectionStartElm);\n var li = dom.getParent(selection.getStart(), 'LI', root);\n var ul, rng, otherLi;\n if (li) {\n ul = li.parentNode;\n if (ul === editor.getBody() && $_eyfb4cgljkmcwpc0.isEmpty(dom, ul)) {\n return true;\n }\n rng = $_8n62cfgkjkmcwpbw.normalizeRange(selection.getRng(true));\n otherLi = dom.getParent(findNextCaretContainer(editor, rng, isForward, root), 'LI', root);\n if (otherLi && otherLi !== li) {\n if (isForward) {\n mergeForward(editor, rng, otherLi, li);\n } else {\n mergeBackward(editor, rng, li, otherLi);\n }\n return true;\n } else if (!otherLi) {\n if (!isForward && $_8bvl87gejkmcwpbi.removeList(editor)) {\n return true;\n }\n }\n }\n return false;\n };\n var removeBlock = function (dom, block, root) {\n var parentBlock = dom.getParent(block.parentNode, dom.isBlock, root);\n dom.remove(block);\n if (parentBlock && dom.isEmpty(parentBlock)) {\n dom.remove(parentBlock);\n }\n };\n var backspaceDeleteIntoListCaret = function (editor, isForward) {\n var dom = editor.dom;\n var selectionStartElm = editor.selection.getStart();\n var root = $_g5359xgnjkmcwpc5.getClosestListRootElm(editor, selectionStartElm);\n var block = dom.getParent(selectionStartElm, dom.isBlock, root);\n if (block && dom.isEmpty(block)) {\n var rng = $_8n62cfgkjkmcwpbw.normalizeRange(editor.selection.getRng(true));\n var otherLi_1 = dom.getParent(findNextCaretContainer(editor, rng, isForward, root), 'LI', root);\n if (otherLi_1) {\n editor.undoManager.transact(function () {\n removeBlock(dom, block, root);\n $_8bvl87gejkmcwpbi.mergeWithAdjacentLists(dom, otherLi_1.parentNode);\n editor.selection.select(otherLi_1, true);\n editor.selection.collapse(isForward);\n });\n return true;\n }\n }\n return false;\n };\n var backspaceDeleteCaret = function (editor, isForward) {\n return backspaceDeleteFromListToListCaret(editor, isForward) || backspaceDeleteIntoListCaret(editor, isForward);\n };\n var backspaceDeleteRange = function (editor) {\n var selectionStartElm = editor.selection.getStart();\n var root = $_g5359xgnjkmcwpc5.getClosestListRootElm(editor, selectionStartElm);\n var startListParent = editor.dom.getParent(selectionStartElm, 'LI,DT,DD', root);\n if (startListParent || $_g5359xgnjkmcwpc5.getSelectedListItems(editor).length > 0) {\n editor.undoManager.transact(function () {\n editor.execCommand('Delete');\n $_f0sxyjgmjkmcwpc3.normalizeLists(editor.dom, editor.getBody());\n });\n return true;\n }\n return false;\n };\n var backspaceDelete = function (editor, isForward) {\n return editor.selection.isCollapsed() ? backspaceDeleteCaret(editor, isForward) : backspaceDeleteRange(editor);\n };\n var setup = function (editor) {\n editor.on('keydown', function (e) {\n if (e.keyCode === global$3.BACKSPACE) {\n if (backspaceDelete(editor, false)) {\n e.preventDefault();\n }\n } else if (e.keyCode === global$3.DELETE) {\n if (backspaceDelete(editor, true)) {\n e.preventDefault();\n }\n }\n });\n };\n var $_17li1sgajkmcwpb9 = {\n setup: setup,\n backspaceDelete: backspaceDelete\n };\n\n var get = function (editor) {\n return {\n backspaceDelete: function (isForward) {\n $_17li1sgajkmcwpb9.backspaceDelete(editor, isForward);\n }\n };\n };\n var $_4wrbe2g9jkmcwpb7 = { get: get };\n\n var DOM$5 = global$6.DOM;\n var mergeLists = function (from, to) {\n var node;\n if ($_eyfb4cgljkmcwpc0.isListNode(from)) {\n while (node = from.firstChild) {\n to.appendChild(node);\n }\n DOM$5.remove(from);\n }\n };\n var indent = function (li) {\n var sibling, newList, listStyle;\n if (li.nodeName === 'DT') {\n DOM$5.rename(li, 'DD');\n return true;\n }\n sibling = li.previousSibling;\n if (sibling && $_eyfb4cgljkmcwpc0.isListNode(sibling)) {\n sibling.appendChild(li);\n return true;\n }\n if (sibling && sibling.nodeName === 'LI' && $_eyfb4cgljkmcwpc0.isListNode(sibling.lastChild)) {\n sibling.lastChild.appendChild(li);\n mergeLists(li.lastChild, sibling.lastChild);\n return true;\n }\n sibling = li.nextSibling;\n if (sibling && $_eyfb4cgljkmcwpc0.isListNode(sibling)) {\n sibling.insertBefore(li, sibling.firstChild);\n return true;\n }\n sibling = li.previousSibling;\n if (sibling && sibling.nodeName === 'LI') {\n newList = DOM$5.create(li.parentNode.nodeName);\n listStyle = DOM$5.getStyle(li.parentNode, 'listStyleType');\n if (listStyle) {\n DOM$5.setStyle(newList, 'listStyleType', listStyle);\n }\n sibling.appendChild(newList);\n newList.appendChild(li);\n mergeLists(li.lastChild, newList);\n return true;\n }\n return false;\n };\n var indentSelection = function (editor) {\n var listElements = $_g5359xgnjkmcwpc5.getSelectedListItems(editor);\n if (listElements.length) {\n var bookmark = $_aredwjgjjkmcwpbt.createBookmark(editor.selection.getRng(true));\n for (var i = 0; i < listElements.length; i++) {\n if (!indent(listElements[i]) && i === 0) {\n break;\n }\n }\n editor.selection.setRng($_aredwjgjjkmcwpbt.resolveBookmark(bookmark));\n editor.nodeChanged();\n return true;\n }\n };\n var $_fhzwh2gtjkmcwpco = { indentSelection: indentSelection };\n\n var queryListCommandState = function (editor, listName) {\n return function () {\n var parentList = editor.dom.getParent(editor.selection.getStart(), 'UL,OL,DL');\n return parentList && parentList.nodeName === listName;\n };\n };\n var register = function (editor) {\n editor.on('BeforeExecCommand', function (e) {\n var cmd = e.command.toLowerCase();\n var isHandled;\n if (cmd === 'indent') {\n if ($_fhzwh2gtjkmcwpco.indentSelection(editor)) {\n isHandled = true;\n }\n } else if (cmd === 'outdent') {\n if ($_80fi2gghjkmcwpbq.outdentSelection(editor)) {\n isHandled = true;\n }\n }\n if (isHandled) {\n editor.fire('ExecCommand', { command: e.command });\n e.preventDefault();\n return true;\n }\n });\n editor.addCommand('InsertUnorderedList', function (ui, detail) {\n $_8bvl87gejkmcwpbi.toggleList(editor, 'UL', detail);\n });\n editor.addCommand('InsertOrderedList', function (ui, detail) {\n $_8bvl87gejkmcwpbi.toggleList(editor, 'OL', detail);\n });\n editor.addCommand('InsertDefinitionList', function (ui, detail) {\n $_8bvl87gejkmcwpbi.toggleList(editor, 'DL', detail);\n });\n editor.addQueryStateHandler('InsertUnorderedList', queryListCommandState(editor, 'UL'));\n editor.addQueryStateHandler('InsertOrderedList', queryListCommandState(editor, 'OL'));\n editor.addQueryStateHandler('InsertDefinitionList', queryListCommandState(editor, 'DL'));\n };\n var $_7snno4gsjkmcwpcf = { register: register };\n\n var shouldIndentOnTab = function (editor) {\n return editor.getParam('lists_indent_on_tab', true);\n };\n var $_7hi6itgvjkmcwpcr = { shouldIndentOnTab: shouldIndentOnTab };\n\n var setupTabKey = function (editor) {\n editor.on('keydown', function (e) {\n if (e.keyCode !== global$3.TAB || global$3.metaKeyPressed(e)) {\n return;\n }\n if (editor.dom.getParent(editor.selection.getStart(), 'LI,DT,DD')) {\n e.preventDefault();\n if (e.shiftKey) {\n $_80fi2gghjkmcwpbq.outdentSelection(editor);\n } else {\n $_fhzwh2gtjkmcwpco.indentSelection(editor);\n }\n }\n });\n };\n var setup$1 = function (editor) {\n if ($_7hi6itgvjkmcwpcr.shouldIndentOnTab(editor)) {\n setupTabKey(editor);\n }\n $_17li1sgajkmcwpb9.setup(editor);\n };\n var $_fv3b7wgujkmcwpcq = { setup: setup$1 };\n\n var findIndex = function (list, predicate) {\n for (var index = 0; index < list.length; index++) {\n var element = list[index];\n if (predicate(element)) {\n return index;\n }\n }\n return -1;\n };\n var listState = function (editor, listName) {\n return function (e) {\n var ctrl = e.control;\n editor.on('NodeChange', function (e) {\n var tableCellIndex = findIndex(e.parents, $_eyfb4cgljkmcwpc0.isTableCellNode);\n var parents = tableCellIndex !== -1 ? e.parents.slice(0, tableCellIndex) : e.parents;\n var lists = global$5.grep(parents, $_eyfb4cgljkmcwpc0.isListNode);\n ctrl.active(lists.length > 0 && lists[0].nodeName === listName);\n });\n };\n };\n var indentPostRender = function (editor) {\n return function (e) {\n var ctrl = e.control;\n editor.on('nodechange', function () {\n var listItemBlocks = $_g5359xgnjkmcwpc5.getSelectedListItems(editor);\n var disable = listItemBlocks.length > 0 && $_eyfb4cgljkmcwpc0.isFirstChild(listItemBlocks[0]);\n ctrl.disabled(disable);\n });\n };\n };\n var register$1 = function (editor) {\n var hasPlugin = function (editor, plugin) {\n var plugins = editor.settings.plugins ? editor.settings.plugins : '';\n return global$5.inArray(plugins.split(/[ ,]/), plugin) !== -1;\n };\n if (!hasPlugin(editor, 'advlist')) {\n editor.addButton('numlist', {\n active: false,\n title: 'Numbered list',\n cmd: 'InsertOrderedList',\n onPostRender: listState(editor, 'OL')\n });\n editor.addButton('bullist', {\n active: false,\n title: 'Bullet list',\n cmd: 'InsertUnorderedList',\n onPostRender: listState(editor, 'UL')\n });\n }\n editor.addButton('indent', {\n icon: 'indent',\n title: 'Increase indent',\n cmd: 'Indent',\n onPostRender: indentPostRender(editor)\n });\n };\n var $_e09q6ogwjkmcwpct = { register: register$1 };\n\n global.add('lists', function (editor) {\n $_fv3b7wgujkmcwpcq.setup(editor);\n $_e09q6ogwjkmcwpct.register(editor);\n $_7snno4gsjkmcwpcf.register(editor);\n return $_4wrbe2g9jkmcwpb7.get(editor);\n });\n function Plugin () {\n }\n\n return Plugin;\n\n}());\n})();\n","import Cache from './cache'\nimport Global from './global'\nimport { Api } from './api'\nimport { setTimeout } from 'timers';\n\nexport default {\n\n authorize_url: Global.SSO_END_POINT + 'connect/authorize',\n addclaims_authorize_url: Global.SSO_END_POINT + '/accountafterauth/claimsadd',\n endsession_url: Global.SSO_END_POINT + 'connect/endsession',\n redirect_uri: Global.SSO_REDIRECT_LOGIN_URL,\n post_logout_redirect_uri: Global.SSO_REDIRECT_LOGOUT_URL,\n\n client_id: Global.SSO_CLIENT_ID,\n response_type: Global.SSO_RESPONSE_TYPE,\n scope: Global.SSO_SCOPE,\n\n menu_key: 'PFB___FXX_JB_01',\n permissoes_key: 'PFB___FXX_JB_02',\n foto_key: 'PFB___FXX_JB_03',\n loadfinished_key: 'PFB___FXX_JB_04',\n lastlocation_key: 'PFB___AEF_03_5O',\n\n getToken: function () {\n return Cache.get(Global.ID_TOKEN);\n },\n\n getAccessToken: function () {\n return Cache.get(Global.ACCESS_TOKEN);\n },\n\n getState: function () {\n return Cache.get(Global.ID_STATE);\n },\n\n logged: function () {\n return Cache.get(Global.ID_TOKEN) && Cache.get(this.loadfinished_key) == \"finished\";\n },\n\n login: function (saveActualPage) {\n\n if (saveActualPage)\n Cache.add(this.lastlocation_key, window.location.pathname);\n\n Cache.add(Global.ID_STATE, Date.now());\n\n var url = this.authorize_url + \"?\" +\n \"client_id=\" + encodeURIComponent(this.client_id) + \"&\" +\n \"redirect_uri=\" + encodeURIComponent(this.redirect_uri) + \"&\" +\n \"response_type=\" + encodeURIComponent(this.response_type) + \"&\" +\n \"scope=\" + encodeURIComponent(this.scope) + \"&\" +\n \"state=\" + encodeURIComponent(this.getState()) + \"&\" +\n \"nonce=xyz\";\n\n window.location = url;\n },\n\n getCurrentUser: function (callback) {\n var api = new Api(\"currentuser\");\n api.hasDefaultFilters = false;\n api.get().then(response => {\n var _user = response.data;\n _user.escolas = JSON.parse(_user.escolas)\n Cache.add(Global.USER_INFO, JSON.stringify(_user));\n setTimeout(() => { callback(_user) }, 500);\n });\n },\n\n currentUser: function () {\n var _user = JSON.parse(Cache.get(Global.USER_INFO));\n return _user;\n },\n\n logout: function () {\n\n var url = this.endsession_url + \"?\" +\n \"id_token_hint=\" + this.getToken() + \"&\" +\n \"post_logout_redirect_uri=\" + encodeURIComponent(this.post_logout_redirect_uri) + \"&\" +\n \"state=\" + encodeURIComponent(this.getState());\n\n this.reset();\n\n window.location = url;\n },\n\n processTokenCallback: function (callback) {\n\n if (window.location.href.indexOf(\"access_token\") < 0) {\n callback();\n return;\n }\n\n this.reset();\n\n var itens = window.location.hash.split('#');\n var result = itens[1].split('&').reduce(function (result, item) {\n var parts = item.split('=');\n result[parts[0]] = parts[1];\n return result;\n }, {});\n \n if (result.iframe) Cache.add(\"iframe\", result.iframe.toLowerCase());\n if (result.escola_box) Cache.add(\"escola_box\", result.escola_box.toLowerCase());\n\n\n Cache.add(Global.ACCESS_TOKEN, result.access_token, result.expires_in);\n Cache.add(Global.ID_TOKEN, result.id_token, result.expires_in);\n\n setTimeout(() => {\n callback();\n }, 500);\n\n },\n\n claimsAddLoginSso: function (claim_type, claim_value) {\n\n Cache.add(Global.ID_STATE, Date.now());\n\n let url = this.addclaims_authorize_url + \"?\" +\n \"claims_type=\" + encodeURIComponent(claim_type) + \"&\" +\n \"claims_value=\" + encodeURIComponent(claim_value) + \"&\" +\n \"client_id=\" + encodeURIComponent(this.client_id) + \"&\" +\n \"redirect_uri=\" + encodeURIComponent(this.redirect_uri) + \"&\" +\n \"response_type=\" + encodeURIComponent(this.response_type) + \"&\" +\n \"scope=\" + encodeURIComponent(this.scope) + \"&\" +\n \"state=\" + encodeURIComponent(this.getState()) + \"&\" +\n \"nonce=xyz\";\n\n Cache.remove(Global.USER_INFO);\n\n window.location = url;\n },\n\n reset: function () {\n Cache.remove(Global.ACCESS_TOKEN);\n Cache.remove(Global.ID_TOKEN);\n Cache.remove(Global.USER_INFO);\n },\n\n getPermissoes: function () {\n var _fromcache = Cache.get(this.permissoes_key);\n return JSON.parse(_fromcache);\n },\n\n getMenu: function () {\n var _fromcache = Cache.get(this.menu_key);\n return JSON.parse(_fromcache);\n },\n\n getFotoUser: function () {\n var _fromcache = Cache.get(this.foto_key);\n return _fromcache;\n },\n\n canAccess: function (url) {\n\n return true;\n\n if (process.env.NODE_ENV != \"production\")\n return true;\n\n if (url == '' ||\n url == '/' ||\n url == '/home')\n return true;\n\n var permissions = this.getPermissoes();\n var can = false;\n\n if (url.endsWith(\"/\"))\n url = url.slice(0, -1)\n\n var rotaSplited = url.split('/');\n\n for (var key in permissions) {\n var splited = permissions[key].split('/');\n var todosparametrosbatem = false;\n for (var itemrota in rotaSplited) {\n if (splited[itemrota] == \"[parametro]\" || rotaSplited[itemrota] == splited[itemrota]) {\n todosparametrosbatem = true;\n }\n else {\n todosparametrosbatem = false;\n break;\n }\n }\n\n if (todosparametrosbatem) {\n can = true;\n break;\n }\n }\n\n if (!can)\n return false;\n\n return true;\n }\n}\n","export default {\n\n END_POINT_DEFAULT: process.env.VUE_APP_ENDPOINT_DEFAULT,\n END_POINT_PORTAL_CORPORATIVO: process.env.VUE_APP_END_POINT_PORTAL_CORPORATIVO,\n\n SSO_END_POINT: process.env.VUE_APP_ENDPOINT_SSO,\n\n SSO_REDIRECT_LOGIN_URL: process.env.VUE_APP_LOCATION_URL + \"authorized/?\",\n SSO_REDIRECT_LOGOUT_URL: process.env.VUE_APP_LOCATION_URL,\n\n SSO_CLIENT_ID: \"corporativo-spa\",\n SSO_RESPONSE_TYPE: \"id_token token\",\n SSO_SCOPE: \"openid profile email ssocna\",\n\n ACCESS_TOKEN: \"PFB_AC_T_X857D\",\n ID_TOKEN: \"PFB_ID_T_D98SW\",\n USER_INFO: \"PFB_U_I_D8D5D\",\n ID_STATE: \"PFB_ID_S_852PL\",\n\n CHAVE_IDENTIFICACAO_SISTEMA: \"ACAOCOMERCIAL\",\n\n URL_PORTAL_CORPORATIVO: process.env.VUE_APP_PORTAL_CORPORATIVO,\n URL_DOWNLOAD: process.env.VUE_APP_ENDPOINT_DOWNLOAD + '/document/download/',\n KEY_RECAPTCHA: process.env.VUE_APP_KEY_RECAPTCHA\n}\n","module.exports = \"data:image/png;base64,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\"","import Vue from 'vue'\nimport { Api } from '@/common/api'\n\nimport 'choices.js/public/assets/styles/choices.min.css'\nimport Choices from 'choices.js'\n\nfunction _addOption(el, text, value, selected, placeholder) {\n var option = document.createElement(\"option\");\n option.text = text;\n option.value = value;\n if (placeholder) option.setAttribute(\"placeholder\", true)\n if (selected) option.selected = true\n el.add(option);\n}\n\nfunction _addItems(el, items, value) {\n for (var i = 0; i < items.length; i++) {\n _addOption(el, items[i].name, items[i].id, items[i].id == value);\n }\n}\n\nVue.directive('select', {\n twoWay: true,\n inserted: (el, binding, vnode) => {\n\n let isMultiple = el.multiple;\n if (isMultiple == false && binding.value.default)\n _addOption(el, \" \" + binding.value.default, \"\", false, true);\n\n if (!binding.value.dataitem && !binding.value.customdataitem)\n return\n\n var resource = binding.value.dataitem + \"/dataitems\";\n\n if (binding.value.customdataitem) {\n resource = binding.value.customdataitem\n }\n\n var filters = {};\n if (binding.value.filters)\n filters = binding.value.filters;\n\n var api = new Api(resource);\n api.dataItem(filters).then(data => {\n\n var value = getVModelValue(vnode);\n\n if (data.dataList)\n _addItems(el, data.dataList, value);\n\n setTimeout(() => {\n\n new Choices(el, {\n placeholder: true,\n placeholderValue: \"Selecione...\",\n searchPlaceholderValue: \"Digite para buscar\",\n removeItems: true,\n removeItemButton: true,\n shouldSort: false,\n shouldSortItems: false,\n loadingText: 'Carregando...',\n noResultsText: 'Nenhum resultado encontrado',\n noChoicesText: 'Nenhum item para selecionar',\n itemSelectText: ' ',\n searchResultLimit: 9999,\n });\n\n //if (value) choices.setValue(value);\n\n el.oninvalid = () => {\n let elParent = el.parentElement;\n if (elParent) {\n elParent.style.cssText = `\n color: #b7291c !important;\n border-color: #dc3545 !important;\n padding-right: calc(1.5em + 0.75rem) !important;`\n }\n };\n\n el.onchange = () => {\n\n document.body.click()\n\n let wasValidated = el.closest(\".was-validated\");\n if (wasValidated) {\n let isValid = el.checkValidity();\n if (isValid) {\n let elParent = el.parentElement;\n if (elParent) elParent.style.cssText = '';\n }\n }\n\n };\n\n }, 500)\n\n });\n\n function findVModelName(vnode) {\n return vnode.data.directives.find(function (o) {\n return o.name === 'model';\n }).expression;\n }\n\n function getVModelValue(vnode) {\n var prop = findVModelName(vnode)\n return eval('vnode.context.' + prop)\n }\n }\n})\n\nexport { Choices }","(function () {\nvar colorpicker = (function () {\n 'use strict';\n\n var global = tinymce.util.Tools.resolve('tinymce.PluginManager');\n\n var global$1 = tinymce.util.Tools.resolve('tinymce.util.Color');\n\n var showPreview = function (win, hexColor) {\n win.find('#preview')[0].getEl().style.background = hexColor;\n };\n var setColor = function (win, value) {\n var color = global$1(value), rgb = color.toRgb();\n win.fromJSON({\n r: rgb.r,\n g: rgb.g,\n b: rgb.b,\n hex: color.toHex().substr(1)\n });\n showPreview(win, color.toHex());\n };\n var open = function (editor, callback, value) {\n var win = editor.windowManager.open({\n title: 'Color',\n items: {\n type: 'container',\n layout: 'flex',\n direction: 'row',\n align: 'stretch',\n padding: 5,\n spacing: 10,\n items: [\n {\n type: 'colorpicker',\n value: value,\n onchange: function () {\n var rgb = this.rgb();\n if (win) {\n win.find('#r').value(rgb.r);\n win.find('#g').value(rgb.g);\n win.find('#b').value(rgb.b);\n win.find('#hex').value(this.value().substr(1));\n showPreview(win, this.value());\n }\n }\n },\n {\n type: 'form',\n padding: 0,\n labelGap: 5,\n defaults: {\n type: 'textbox',\n size: 7,\n value: '0',\n flex: 1,\n spellcheck: false,\n onchange: function () {\n var colorPickerCtrl = win.find('colorpicker')[0];\n var name, value;\n name = this.name();\n value = this.value();\n if (name === 'hex') {\n value = '#' + value;\n setColor(win, value);\n colorPickerCtrl.value(value);\n return;\n }\n value = {\n r: win.find('#r').value(),\n g: win.find('#g').value(),\n b: win.find('#b').value()\n };\n colorPickerCtrl.value(value);\n setColor(win, value);\n }\n },\n items: [\n {\n name: 'r',\n label: 'R',\n autofocus: 1\n },\n {\n name: 'g',\n label: 'G'\n },\n {\n name: 'b',\n label: 'B'\n },\n {\n name: 'hex',\n label: '#',\n value: '000000'\n },\n {\n name: 'preview',\n type: 'container',\n border: 1\n }\n ]\n }\n ]\n },\n onSubmit: function () {\n callback('#' + win.toJSON().hex);\n }\n });\n setColor(win, value);\n };\n var $_f3o2huanjkmcwocp = { open: open };\n\n global.add('colorpicker', function (editor) {\n if (!editor.settings.color_picker_callback) {\n editor.settings.color_picker_callback = function (callback, value) {\n $_f3o2huanjkmcwocp.open(editor, callback, value);\n };\n }\n });\n function Plugin () {\n }\n\n return Plugin;\n\n}());\n})();\n","(function () {\nvar image = (function () {\n 'use strict';\n\n var global = tinymce.util.Tools.resolve('tinymce.PluginManager');\n\n var hasDimensions = function (editor) {\n return editor.settings.image_dimensions === false ? false : true;\n };\n var hasAdvTab = function (editor) {\n return editor.settings.image_advtab === true ? true : false;\n };\n var getPrependUrl = function (editor) {\n return editor.getParam('image_prepend_url', '');\n };\n var getClassList = function (editor) {\n return editor.getParam('image_class_list');\n };\n var hasDescription = function (editor) {\n return editor.settings.image_description === false ? false : true;\n };\n var hasImageTitle = function (editor) {\n return editor.settings.image_title === true ? true : false;\n };\n var hasImageCaption = function (editor) {\n return editor.settings.image_caption === true ? true : false;\n };\n var getImageList = function (editor) {\n return editor.getParam('image_list', false);\n };\n var hasUploadUrl = function (editor) {\n return editor.getParam('images_upload_url', false);\n };\n var hasUploadHandler = function (editor) {\n return editor.getParam('images_upload_handler', false);\n };\n var getUploadUrl = function (editor) {\n return editor.getParam('images_upload_url');\n };\n var getUploadHandler = function (editor) {\n return editor.getParam('images_upload_handler');\n };\n var getUploadBasePath = function (editor) {\n return editor.getParam('images_upload_base_path');\n };\n var getUploadCredentials = function (editor) {\n return editor.getParam('images_upload_credentials');\n };\n var $_gc1jdictjkmcwomd = {\n hasDimensions: hasDimensions,\n hasAdvTab: hasAdvTab,\n getPrependUrl: getPrependUrl,\n getClassList: getClassList,\n hasDescription: hasDescription,\n hasImageTitle: hasImageTitle,\n hasImageCaption: hasImageCaption,\n getImageList: getImageList,\n hasUploadUrl: hasUploadUrl,\n hasUploadHandler: hasUploadHandler,\n getUploadUrl: getUploadUrl,\n getUploadHandler: getUploadHandler,\n getUploadBasePath: getUploadBasePath,\n getUploadCredentials: getUploadCredentials\n };\n\n var Global = typeof window !== 'undefined' ? window : Function('return this;')();\n\n var path = function (parts, scope) {\n var o = scope !== undefined && scope !== null ? scope : Global;\n for (var i = 0; i < parts.length && o !== undefined && o !== null; ++i)\n o = o[parts[i]];\n return o;\n };\n var resolve = function (p, scope) {\n var parts = p.split('.');\n return path(parts, scope);\n };\n\n var unsafe = function (name, scope) {\n return resolve(name, scope);\n };\n var getOrDie = function (name, scope) {\n var actual = unsafe(name, scope);\n if (actual === undefined || actual === null)\n throw name + ' not available on this browser';\n return actual;\n };\n var $_db9o2scwjkmcwomp = { getOrDie: getOrDie };\n\n function FileReader () {\n var f = $_db9o2scwjkmcwomp.getOrDie('FileReader');\n return new f();\n }\n\n var global$1 = tinymce.util.Tools.resolve('tinymce.util.Promise');\n\n var global$2 = tinymce.util.Tools.resolve('tinymce.util.Tools');\n\n var global$3 = tinymce.util.Tools.resolve('tinymce.util.XHR');\n\n var parseIntAndGetMax = function (val1, val2) {\n return Math.max(parseInt(val1, 10), parseInt(val2, 10));\n };\n var getImageSize = function (url, callback) {\n var img = document.createElement('img');\n function done(width, height) {\n if (img.parentNode) {\n img.parentNode.removeChild(img);\n }\n callback({\n width: width,\n height: height\n });\n }\n img.onload = function () {\n var width = parseIntAndGetMax(img.width, img.clientWidth);\n var height = parseIntAndGetMax(img.height, img.clientHeight);\n done(width, height);\n };\n img.onerror = function () {\n done(0, 0);\n };\n var style = img.style;\n style.visibility = 'hidden';\n style.position = 'fixed';\n style.bottom = style.left = '0px';\n style.width = style.height = 'auto';\n document.body.appendChild(img);\n img.src = url;\n };\n var buildListItems = function (inputList, itemCallback, startItems) {\n function appendItems(values, output) {\n output = output || [];\n global$2.each(values, function (item) {\n var menuItem = { text: item.text || item.title };\n if (item.menu) {\n menuItem.menu = appendItems(item.menu);\n } else {\n menuItem.value = item.value;\n itemCallback(menuItem);\n }\n output.push(menuItem);\n });\n return output;\n }\n return appendItems(inputList, startItems || []);\n };\n var removePixelSuffix = function (value) {\n if (value) {\n value = value.replace(/px$/, '');\n }\n return value;\n };\n var addPixelSuffix = function (value) {\n if (value.length > 0 && /^[0-9]+$/.test(value)) {\n value += 'px';\n }\n return value;\n };\n var mergeMargins = function (css) {\n if (css.margin) {\n var splitMargin = css.margin.split(' ');\n switch (splitMargin.length) {\n case 1:\n css['margin-top'] = css['margin-top'] || splitMargin[0];\n css['margin-right'] = css['margin-right'] || splitMargin[0];\n css['margin-bottom'] = css['margin-bottom'] || splitMargin[0];\n css['margin-left'] = css['margin-left'] || splitMargin[0];\n break;\n case 2:\n css['margin-top'] = css['margin-top'] || splitMargin[0];\n css['margin-right'] = css['margin-right'] || splitMargin[1];\n css['margin-bottom'] = css['margin-bottom'] || splitMargin[0];\n css['margin-left'] = css['margin-left'] || splitMargin[1];\n break;\n case 3:\n css['margin-top'] = css['margin-top'] || splitMargin[0];\n css['margin-right'] = css['margin-right'] || splitMargin[1];\n css['margin-bottom'] = css['margin-bottom'] || splitMargin[2];\n css['margin-left'] = css['margin-left'] || splitMargin[1];\n break;\n case 4:\n css['margin-top'] = css['margin-top'] || splitMargin[0];\n css['margin-right'] = css['margin-right'] || splitMargin[1];\n css['margin-bottom'] = css['margin-bottom'] || splitMargin[2];\n css['margin-left'] = css['margin-left'] || splitMargin[3];\n }\n delete css.margin;\n }\n return css;\n };\n var createImageList = function (editor, callback) {\n var imageList = $_gc1jdictjkmcwomd.getImageList(editor);\n if (typeof imageList === 'string') {\n global$3.send({\n url: imageList,\n success: function (text) {\n callback(JSON.parse(text));\n }\n });\n } else if (typeof imageList === 'function') {\n imageList(callback);\n } else {\n callback(imageList);\n }\n };\n var waitLoadImage = function (editor, data, imgElm) {\n function selectImage() {\n imgElm.onload = imgElm.onerror = null;\n if (editor.selection) {\n editor.selection.select(imgElm);\n editor.nodeChanged();\n }\n }\n imgElm.onload = function () {\n if (!data.width && !data.height && $_gc1jdictjkmcwomd.hasDimensions(editor)) {\n editor.dom.setAttribs(imgElm, {\n width: imgElm.clientWidth,\n height: imgElm.clientHeight\n });\n }\n selectImage();\n };\n imgElm.onerror = selectImage;\n };\n var blobToDataUri = function (blob) {\n return new global$1(function (resolve, reject) {\n var reader = new FileReader();\n reader.onload = function () {\n resolve(reader.result);\n };\n reader.onerror = function () {\n reject(FileReader.error.message);\n };\n reader.readAsDataURL(blob);\n });\n };\n var $_9v7cmwcujkmcwomi = {\n getImageSize: getImageSize,\n buildListItems: buildListItems,\n removePixelSuffix: removePixelSuffix,\n addPixelSuffix: addPixelSuffix,\n mergeMargins: mergeMargins,\n createImageList: createImageList,\n waitLoadImage: waitLoadImage,\n blobToDataUri: blobToDataUri\n };\n\n var global$4 = tinymce.util.Tools.resolve('tinymce.dom.DOMUtils');\n\n var hasOwnProperty = Object.prototype.hasOwnProperty;\n var shallow = function (old, nu) {\n return nu;\n };\n var baseMerge = function (merger) {\n return function () {\n var objects = new Array(arguments.length);\n for (var i = 0; i < objects.length; i++)\n objects[i] = arguments[i];\n if (objects.length === 0)\n throw new Error('Can\\'t merge zero objects');\n var ret = {};\n for (var j = 0; j < objects.length; j++) {\n var curObject = objects[j];\n for (var key in curObject)\n if (hasOwnProperty.call(curObject, key)) {\n ret[key] = merger(ret[key], curObject[key]);\n }\n }\n return ret;\n };\n };\n\n var merge = baseMerge(shallow);\n\n var DOM = global$4.DOM;\n var getHspace = function (image) {\n if (image.style.marginLeft && image.style.marginRight && image.style.marginLeft === image.style.marginRight) {\n return $_9v7cmwcujkmcwomi.removePixelSuffix(image.style.marginLeft);\n } else {\n return '';\n }\n };\n var getVspace = function (image) {\n if (image.style.marginTop && image.style.marginBottom && image.style.marginTop === image.style.marginBottom) {\n return $_9v7cmwcujkmcwomi.removePixelSuffix(image.style.marginTop);\n } else {\n return '';\n }\n };\n var getBorder = function (image) {\n if (image.style.borderWidth) {\n return $_9v7cmwcujkmcwomi.removePixelSuffix(image.style.borderWidth);\n } else {\n return '';\n }\n };\n var getAttrib = function (image, name$$1) {\n if (image.hasAttribute(name$$1)) {\n return image.getAttribute(name$$1);\n } else {\n return '';\n }\n };\n var getStyle = function (image, name$$1) {\n return image.style[name$$1] ? image.style[name$$1] : '';\n };\n var hasCaption = function (image) {\n return image.parentNode !== null && image.parentNode.nodeName === 'FIGURE';\n };\n var setAttrib = function (image, name$$1, value) {\n image.setAttribute(name$$1, value);\n };\n var wrapInFigure = function (image) {\n var figureElm = DOM.create('figure', { class: 'image' });\n DOM.insertAfter(figureElm, image);\n figureElm.appendChild(image);\n figureElm.appendChild(DOM.create('figcaption', { contentEditable: true }, 'Caption'));\n figureElm.contentEditable = 'false';\n };\n var removeFigure = function (image) {\n var figureElm = image.parentNode;\n DOM.insertAfter(image, figureElm);\n DOM.remove(figureElm);\n };\n var toggleCaption = function (image) {\n if (hasCaption(image)) {\n removeFigure(image);\n } else {\n wrapInFigure(image);\n }\n };\n var normalizeStyle = function (image, normalizeCss) {\n var attrValue = image.getAttribute('style');\n var value = normalizeCss(attrValue !== null ? attrValue : '');\n if (value.length > 0) {\n image.setAttribute('style', value);\n image.setAttribute('data-mce-style', value);\n } else {\n image.removeAttribute('style');\n }\n };\n var setSize = function (name$$1, normalizeCss) {\n return function (image, name$$1, value) {\n if (image.style[name$$1]) {\n image.style[name$$1] = $_9v7cmwcujkmcwomi.addPixelSuffix(value);\n normalizeStyle(image, normalizeCss);\n } else {\n setAttrib(image, name$$1, value);\n }\n };\n };\n var getSize = function (image, name$$1) {\n if (image.style[name$$1]) {\n return $_9v7cmwcujkmcwomi.removePixelSuffix(image.style[name$$1]);\n } else {\n return getAttrib(image, name$$1);\n }\n };\n var setHspace = function (image, value) {\n var pxValue = $_9v7cmwcujkmcwomi.addPixelSuffix(value);\n image.style.marginLeft = pxValue;\n image.style.marginRight = pxValue;\n };\n var setVspace = function (image, value) {\n var pxValue = $_9v7cmwcujkmcwomi.addPixelSuffix(value);\n image.style.marginTop = pxValue;\n image.style.marginBottom = pxValue;\n };\n var setBorder = function (image, value) {\n var pxValue = $_9v7cmwcujkmcwomi.addPixelSuffix(value);\n image.style.borderWidth = pxValue;\n };\n var setBorderStyle = function (image, value) {\n image.style.borderStyle = value;\n };\n var getBorderStyle = function (image) {\n return getStyle(image, 'borderStyle');\n };\n var isFigure = function (elm) {\n return elm.nodeName === 'FIGURE';\n };\n var defaultData = function () {\n return {\n src: '',\n alt: '',\n title: '',\n width: '',\n height: '',\n class: '',\n style: '',\n caption: false,\n hspace: '',\n vspace: '',\n border: '',\n borderStyle: ''\n };\n };\n var getStyleValue = function (normalizeCss, data) {\n var image = document.createElement('img');\n setAttrib(image, 'style', data.style);\n if (getHspace(image) || data.hspace !== '') {\n setHspace(image, data.hspace);\n }\n if (getVspace(image) || data.vspace !== '') {\n setVspace(image, data.vspace);\n }\n if (getBorder(image) || data.border !== '') {\n setBorder(image, data.border);\n }\n if (getBorderStyle(image) || data.borderStyle !== '') {\n setBorderStyle(image, data.borderStyle);\n }\n return normalizeCss(image.getAttribute('style'));\n };\n var create = function (normalizeCss, data) {\n var image = document.createElement('img');\n write(normalizeCss, merge(data, { caption: false }), image);\n setAttrib(image, 'alt', data.alt);\n if (data.caption) {\n var figure = DOM.create('figure', { class: 'image' });\n figure.appendChild(image);\n figure.appendChild(DOM.create('figcaption', { contentEditable: true }, 'Caption'));\n figure.contentEditable = 'false';\n return figure;\n } else {\n return image;\n }\n };\n var read = function (normalizeCss, image) {\n return {\n src: getAttrib(image, 'src'),\n alt: getAttrib(image, 'alt'),\n title: getAttrib(image, 'title'),\n width: getSize(image, 'width'),\n height: getSize(image, 'height'),\n class: getAttrib(image, 'class'),\n style: normalizeCss(getAttrib(image, 'style')),\n caption: hasCaption(image),\n hspace: getHspace(image),\n vspace: getVspace(image),\n border: getBorder(image),\n borderStyle: getStyle(image, 'borderStyle')\n };\n };\n var updateProp = function (image, oldData, newData, name$$1, set) {\n if (newData[name$$1] !== oldData[name$$1]) {\n set(image, name$$1, newData[name$$1]);\n }\n };\n var normalized = function (set, normalizeCss) {\n return function (image, name$$1, value) {\n set(image, value);\n normalizeStyle(image, normalizeCss);\n };\n };\n var write = function (normalizeCss, newData, image) {\n var oldData = read(normalizeCss, image);\n updateProp(image, oldData, newData, 'caption', function (image, _name, _value) {\n return toggleCaption(image);\n });\n updateProp(image, oldData, newData, 'src', setAttrib);\n updateProp(image, oldData, newData, 'alt', setAttrib);\n updateProp(image, oldData, newData, 'title', setAttrib);\n updateProp(image, oldData, newData, 'width', setSize('width', normalizeCss));\n updateProp(image, oldData, newData, 'height', setSize('height', normalizeCss));\n updateProp(image, oldData, newData, 'class', setAttrib);\n updateProp(image, oldData, newData, 'style', normalized(function (image, value) {\n return setAttrib(image, 'style', value);\n }, normalizeCss));\n updateProp(image, oldData, newData, 'hspace', normalized(setHspace, normalizeCss));\n updateProp(image, oldData, newData, 'vspace', normalized(setVspace, normalizeCss));\n updateProp(image, oldData, newData, 'border', normalized(setBorder, normalizeCss));\n updateProp(image, oldData, newData, 'borderStyle', normalized(setBorderStyle, normalizeCss));\n };\n\n var normalizeCss = function (editor, cssText) {\n var css = editor.dom.styles.parse(cssText);\n var mergedCss = $_9v7cmwcujkmcwomi.mergeMargins(css);\n var compressed = editor.dom.styles.parse(editor.dom.styles.serialize(mergedCss));\n return editor.dom.styles.serialize(compressed);\n };\n var getSelectedImage = function (editor) {\n var imgElm = editor.selection.getNode();\n var figureElm = editor.dom.getParent(imgElm, 'figure.image');\n if (figureElm) {\n return editor.dom.select('img', figureElm)[0];\n }\n if (imgElm && (imgElm.nodeName !== 'IMG' || imgElm.getAttribute('data-mce-object') || imgElm.getAttribute('data-mce-placeholder'))) {\n return null;\n }\n return imgElm;\n };\n var splitTextBlock = function (editor, figure) {\n var dom = editor.dom;\n var textBlock = dom.getParent(figure.parentNode, function (node) {\n return editor.schema.getTextBlockElements()[node.nodeName];\n });\n if (textBlock) {\n return dom.split(textBlock, figure);\n } else {\n return figure;\n }\n };\n var readImageDataFromSelection = function (editor) {\n var image = getSelectedImage(editor);\n return image ? read(function (css) {\n return normalizeCss(editor, css);\n }, image) : defaultData();\n };\n var insertImageAtCaret = function (editor, data) {\n var elm = create(function (css) {\n return normalizeCss(editor, css);\n }, data);\n editor.dom.setAttrib(elm, 'data-mce-id', '__mcenew');\n editor.focus();\n editor.selection.setContent(elm.outerHTML);\n var insertedElm = editor.dom.select('*[data-mce-id=\"__mcenew\"]')[0];\n editor.dom.setAttrib(insertedElm, 'data-mce-id', null);\n if (isFigure(insertedElm)) {\n var figure = splitTextBlock(editor, insertedElm);\n editor.selection.select(figure);\n } else {\n editor.selection.select(insertedElm);\n }\n };\n var syncSrcAttr = function (editor, image) {\n editor.dom.setAttrib(image, 'src', image.getAttribute('src'));\n };\n var deleteImage = function (editor, image) {\n if (image) {\n var elm = editor.dom.is(image.parentNode, 'figure.image') ? image.parentNode : image;\n editor.dom.remove(elm);\n editor.focus();\n editor.nodeChanged();\n if (editor.dom.isEmpty(editor.getBody())) {\n editor.setContent('');\n editor.selection.setCursorLocation();\n }\n }\n };\n var writeImageDataToSelection = function (editor, data) {\n var image = getSelectedImage(editor);\n write(function (css) {\n return normalizeCss(editor, css);\n }, data, image);\n syncSrcAttr(editor, image);\n if (isFigure(image.parentNode)) {\n var figure = image.parentNode;\n splitTextBlock(editor, figure);\n editor.selection.select(image.parentNode);\n } else {\n editor.selection.select(image);\n $_9v7cmwcujkmcwomi.waitLoadImage(editor, data, image);\n }\n };\n var insertOrUpdateImage = function (editor, data) {\n var image = getSelectedImage(editor);\n if (image) {\n if (data.src) {\n writeImageDataToSelection(editor, data);\n } else {\n deleteImage(editor, image);\n }\n } else if (data.src) {\n insertImageAtCaret(editor, data);\n }\n };\n\n var updateVSpaceHSpaceBorder = function (editor) {\n return function (evt) {\n var dom = editor.dom;\n var rootControl = evt.control.rootControl;\n if (!$_gc1jdictjkmcwomd.hasAdvTab(editor)) {\n return;\n }\n var data = rootControl.toJSON();\n var css = dom.parseStyle(data.style);\n rootControl.find('#vspace').value('');\n rootControl.find('#hspace').value('');\n css = $_9v7cmwcujkmcwomi.mergeMargins(css);\n if (css['margin-top'] && css['margin-bottom'] || css['margin-right'] && css['margin-left']) {\n if (css['margin-top'] === css['margin-bottom']) {\n rootControl.find('#vspace').value($_9v7cmwcujkmcwomi.removePixelSuffix(css['margin-top']));\n } else {\n rootControl.find('#vspace').value('');\n }\n if (css['margin-right'] === css['margin-left']) {\n rootControl.find('#hspace').value($_9v7cmwcujkmcwomi.removePixelSuffix(css['margin-right']));\n } else {\n rootControl.find('#hspace').value('');\n }\n }\n if (css['border-width']) {\n rootControl.find('#border').value($_9v7cmwcujkmcwomi.removePixelSuffix(css['border-width']));\n } else {\n rootControl.find('#border').value('');\n }\n if (css['border-style']) {\n rootControl.find('#borderStyle').value(css['border-style']);\n } else {\n rootControl.find('#borderStyle').value('');\n }\n rootControl.find('#style').value(dom.serializeStyle(dom.parseStyle(dom.serializeStyle(css))));\n };\n };\n var updateStyle = function (editor, win) {\n win.find('#style').each(function (ctrl) {\n var value = getStyleValue(function (css) {\n return normalizeCss(editor, css);\n }, merge(defaultData(), win.toJSON()));\n ctrl.value(value);\n });\n };\n var makeTab = function (editor) {\n return {\n title: 'Advanced',\n type: 'form',\n pack: 'start',\n items: [\n {\n label: 'Style',\n name: 'style',\n type: 'textbox',\n onchange: updateVSpaceHSpaceBorder(editor)\n },\n {\n type: 'form',\n layout: 'grid',\n packV: 'start',\n columns: 2,\n padding: 0,\n defaults: {\n type: 'textbox',\n maxWidth: 50,\n onchange: function (evt) {\n updateStyle(editor, evt.control.rootControl);\n }\n },\n items: [\n {\n label: 'Vertical space',\n name: 'vspace'\n },\n {\n label: 'Border width',\n name: 'border'\n },\n {\n label: 'Horizontal space',\n name: 'hspace'\n },\n {\n label: 'Border style',\n type: 'listbox',\n name: 'borderStyle',\n width: 90,\n maxWidth: 90,\n onselect: function (evt) {\n updateStyle(editor, evt.control.rootControl);\n },\n values: [\n {\n text: 'Select...',\n value: ''\n },\n {\n text: 'Solid',\n value: 'solid'\n },\n {\n text: 'Dotted',\n value: 'dotted'\n },\n {\n text: 'Dashed',\n value: 'dashed'\n },\n {\n text: 'Double',\n value: 'double'\n },\n {\n text: 'Groove',\n value: 'groove'\n },\n {\n text: 'Ridge',\n value: 'ridge'\n },\n {\n text: 'Inset',\n value: 'inset'\n },\n {\n text: 'Outset',\n value: 'outset'\n },\n {\n text: 'None',\n value: 'none'\n },\n {\n text: 'Hidden',\n value: 'hidden'\n }\n ]\n }\n ]\n }\n ]\n };\n };\n var $_4qd61kd3jkmcwonl = { makeTab: makeTab };\n\n var doSyncSize = function (widthCtrl, heightCtrl) {\n widthCtrl.state.set('oldVal', widthCtrl.value());\n heightCtrl.state.set('oldVal', heightCtrl.value());\n };\n var doSizeControls = function (win, f) {\n var widthCtrl = win.find('#width')[0];\n var heightCtrl = win.find('#height')[0];\n var constrained = win.find('#constrain')[0];\n if (widthCtrl && heightCtrl && constrained) {\n f(widthCtrl, heightCtrl, constrained.checked());\n }\n };\n var doUpdateSize = function (widthCtrl, heightCtrl, isContrained) {\n var oldWidth = widthCtrl.state.get('oldVal');\n var oldHeight = heightCtrl.state.get('oldVal');\n var newWidth = widthCtrl.value();\n var newHeight = heightCtrl.value();\n if (isContrained && oldWidth && oldHeight && newWidth && newHeight) {\n if (newWidth !== oldWidth) {\n newHeight = Math.round(newWidth / oldWidth * newHeight);\n if (!isNaN(newHeight)) {\n heightCtrl.value(newHeight);\n }\n } else {\n newWidth = Math.round(newHeight / oldHeight * newWidth);\n if (!isNaN(newWidth)) {\n widthCtrl.value(newWidth);\n }\n }\n }\n doSyncSize(widthCtrl, heightCtrl);\n };\n var syncSize = function (win) {\n doSizeControls(win, doSyncSize);\n };\n var updateSize = function (win) {\n doSizeControls(win, doUpdateSize);\n };\n var createUi = function () {\n var recalcSize = function (evt) {\n updateSize(evt.control.rootControl);\n };\n return {\n type: 'container',\n label: 'Dimensions',\n layout: 'flex',\n align: 'center',\n spacing: 5,\n items: [\n {\n name: 'width',\n type: 'textbox',\n maxLength: 5,\n size: 5,\n onchange: recalcSize,\n ariaLabel: 'Width'\n },\n {\n type: 'label',\n text: 'x'\n },\n {\n name: 'height',\n type: 'textbox',\n maxLength: 5,\n size: 5,\n onchange: recalcSize,\n ariaLabel: 'Height'\n },\n {\n name: 'constrain',\n type: 'checkbox',\n checked: true,\n text: 'Constrain proportions'\n }\n ]\n };\n };\n var $_14kdtjdajkmcwoo8 = {\n createUi: createUi,\n syncSize: syncSize,\n updateSize: updateSize\n };\n\n var onSrcChange = function (evt, editor) {\n var srcURL, prependURL, absoluteURLPattern;\n var meta = evt.meta || {};\n var control = evt.control;\n var rootControl = control.rootControl;\n var imageListCtrl = rootControl.find('#image-list')[0];\n if (imageListCtrl) {\n imageListCtrl.value(editor.convertURL(control.value(), 'src'));\n }\n global$2.each(meta, function (value, key) {\n rootControl.find('#' + key).value(value);\n });\n if (!meta.width && !meta.height) {\n srcURL = editor.convertURL(control.value(), 'src');\n prependURL = $_gc1jdictjkmcwomd.getPrependUrl(editor);\n absoluteURLPattern = new RegExp('^(?:[a-z]+:)?//', 'i');\n if (prependURL && !absoluteURLPattern.test(srcURL) && srcURL.substring(0, prependURL.length) !== prependURL) {\n srcURL = prependURL + srcURL;\n }\n control.value(srcURL);\n $_9v7cmwcujkmcwomi.getImageSize(editor.documentBaseURI.toAbsolute(control.value()), function (data) {\n if (data.width && data.height && $_gc1jdictjkmcwomd.hasDimensions(editor)) {\n rootControl.find('#width').value(data.width);\n rootControl.find('#height').value(data.height);\n $_14kdtjdajkmcwoo8.syncSize(rootControl);\n }\n });\n }\n };\n var onBeforeCall = function (evt) {\n evt.meta = evt.control.rootControl.toJSON();\n };\n var getGeneralItems = function (editor, imageListCtrl) {\n var generalFormItems = [\n {\n name: 'src',\n type: 'filepicker',\n filetype: 'image',\n label: 'Source',\n autofocus: true,\n onchange: function (evt) {\n onSrcChange(evt, editor);\n },\n onbeforecall: onBeforeCall\n },\n imageListCtrl\n ];\n if ($_gc1jdictjkmcwomd.hasDescription(editor)) {\n generalFormItems.push({\n name: 'alt',\n type: 'textbox',\n label: 'Image description'\n });\n }\n if ($_gc1jdictjkmcwomd.hasImageTitle(editor)) {\n generalFormItems.push({\n name: 'title',\n type: 'textbox',\n label: 'Image Title'\n });\n }\n if ($_gc1jdictjkmcwomd.hasDimensions(editor)) {\n generalFormItems.push($_14kdtjdajkmcwoo8.createUi());\n }\n if ($_gc1jdictjkmcwomd.getClassList(editor)) {\n generalFormItems.push({\n name: 'class',\n type: 'listbox',\n label: 'Class',\n values: $_9v7cmwcujkmcwomi.buildListItems($_gc1jdictjkmcwomd.getClassList(editor), function (item) {\n if (item.value) {\n item.textStyle = function () {\n return editor.formatter.getCssText({\n inline: 'img',\n classes: [item.value]\n });\n };\n }\n })\n });\n }\n if ($_gc1jdictjkmcwomd.hasImageCaption(editor)) {\n generalFormItems.push({\n name: 'caption',\n type: 'checkbox',\n label: 'Caption'\n });\n }\n return generalFormItems;\n };\n var makeTab$1 = function (editor, imageListCtrl) {\n return {\n title: 'General',\n type: 'form',\n items: getGeneralItems(editor, imageListCtrl)\n };\n };\n var $_bpqbuud9jkmcwoo5 = {\n makeTab: makeTab$1,\n getGeneralItems: getGeneralItems\n };\n\n var url = function () {\n return $_db9o2scwjkmcwomp.getOrDie('URL');\n };\n var createObjectURL = function (blob) {\n return url().createObjectURL(blob);\n };\n var revokeObjectURL = function (u) {\n url().revokeObjectURL(u);\n };\n var $_e8tsx4dcjkmcwooe = {\n createObjectURL: createObjectURL,\n revokeObjectURL: revokeObjectURL\n };\n\n var global$5 = tinymce.util.Tools.resolve('tinymce.ui.Factory');\n\n function XMLHttpRequest () {\n var f = $_db9o2scwjkmcwomp.getOrDie('XMLHttpRequest');\n return new f();\n }\n\n var noop = function () {\n };\n var pathJoin = function (path1, path2) {\n if (path1) {\n return path1.replace(/\\/$/, '') + '/' + path2.replace(/^\\//, '');\n }\n return path2;\n };\n function Uploader (settings) {\n var defaultHandler = function (blobInfo, success, failure, progress) {\n var xhr, formData;\n xhr = new XMLHttpRequest();\n xhr.open('POST', settings.url);\n xhr.withCredentials = settings.credentials;\n xhr.upload.onprogress = function (e) {\n progress(e.loaded / e.total * 100);\n };\n xhr.onerror = function () {\n failure('Image upload failed due to a XHR Transport error. Code: ' + xhr.status);\n };\n xhr.onload = function () {\n var json;\n if (xhr.status < 200 || xhr.status >= 300) {\n failure('HTTP Error: ' + xhr.status);\n return;\n }\n json = JSON.parse(xhr.responseText);\n if (!json || typeof json.location !== 'string') {\n failure('Invalid JSON: ' + xhr.responseText);\n return;\n }\n success(pathJoin(settings.basePath, json.location));\n };\n formData = new FormData();\n formData.append('file', blobInfo.blob(), blobInfo.filename());\n xhr.send(formData);\n };\n var uploadBlob = function (blobInfo, handler) {\n return new global$1(function (resolve, reject) {\n try {\n handler(blobInfo, resolve, reject, noop);\n } catch (ex) {\n reject(ex.message);\n }\n });\n };\n var isDefaultHandler = function (handler) {\n return handler === defaultHandler;\n };\n var upload = function (blobInfo) {\n return !settings.url && isDefaultHandler(settings.handler) ? global$1.reject('Upload url missing from the settings.') : uploadBlob(blobInfo, settings.handler);\n };\n settings = global$2.extend({\n credentials: false,\n handler: defaultHandler\n }, settings);\n return { upload: upload };\n }\n\n var onFileInput = function (editor) {\n return function (evt) {\n var Throbber = global$5.get('Throbber');\n var rootControl = evt.control.rootControl;\n var throbber = new Throbber(rootControl.getEl());\n var file = evt.control.value();\n var blobUri = $_e8tsx4dcjkmcwooe.createObjectURL(file);\n var uploader = Uploader({\n url: $_gc1jdictjkmcwomd.getUploadUrl(editor),\n basePath: $_gc1jdictjkmcwomd.getUploadBasePath(editor),\n credentials: $_gc1jdictjkmcwomd.getUploadCredentials(editor),\n handler: $_gc1jdictjkmcwomd.getUploadHandler(editor)\n });\n var finalize = function () {\n throbber.hide();\n $_e8tsx4dcjkmcwooe.revokeObjectURL(blobUri);\n };\n throbber.show();\n return $_9v7cmwcujkmcwomi.blobToDataUri(file).then(function (dataUrl) {\n var blobInfo = editor.editorUpload.blobCache.create({\n blob: file,\n blobUri: blobUri,\n name: file.name ? file.name.replace(/\\.[^\\.]+$/, '') : null,\n base64: dataUrl.split(',')[1]\n });\n return uploader.upload(blobInfo).then(function (url) {\n var src = rootControl.find('#src');\n src.value(url);\n rootControl.find('tabpanel')[0].activateTab(0);\n src.fire('change');\n finalize();\n return url;\n });\n }).catch(function (err) {\n editor.windowManager.alert(err);\n finalize();\n });\n };\n };\n var acceptExts = '.jpg,.jpeg,.png,.gif';\n var makeTab$2 = function (editor) {\n return {\n title: 'Upload',\n type: 'form',\n layout: 'flex',\n direction: 'column',\n align: 'stretch',\n padding: '20 20 20 20',\n items: [\n {\n type: 'container',\n layout: 'flex',\n direction: 'column',\n align: 'center',\n spacing: 10,\n items: [\n {\n text: 'Browse for an image',\n type: 'browsebutton',\n accept: acceptExts,\n onchange: onFileInput(editor)\n },\n {\n text: 'OR',\n type: 'label'\n }\n ]\n },\n {\n text: 'Drop an image here',\n type: 'dropzone',\n accept: acceptExts,\n height: 100,\n onchange: onFileInput(editor)\n }\n ]\n };\n };\n var $_26ghgddbjkmcwooa = { makeTab: makeTab$2 };\n\n var curry = function (f) {\n var x = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n x[_i - 1] = arguments[_i];\n }\n var args = new Array(arguments.length - 1);\n for (var i = 1; i < arguments.length; i++)\n args[i - 1] = arguments[i];\n return function () {\n var x = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n x[_i] = arguments[_i];\n }\n var newArgs = new Array(arguments.length);\n for (var j = 0; j < newArgs.length; j++)\n newArgs[j] = arguments[j];\n var all = args.concat(newArgs);\n return f.apply(null, all);\n };\n };\n\n var submitForm = function (editor, evt) {\n var win = evt.control.getRoot();\n $_14kdtjdajkmcwoo8.updateSize(win);\n editor.undoManager.transact(function () {\n var data = merge(readImageDataFromSelection(editor), win.toJSON());\n insertOrUpdateImage(editor, data);\n });\n editor.editorUpload.uploadImagesAuto();\n };\n function Dialog (editor) {\n function showDialog(imageList) {\n var data = readImageDataFromSelection(editor);\n var win, imageListCtrl;\n if (imageList) {\n imageListCtrl = {\n type: 'listbox',\n label: 'Image list',\n name: 'image-list',\n values: $_9v7cmwcujkmcwomi.buildListItems(imageList, function (item) {\n item.value = editor.convertURL(item.value || item.url, 'src');\n }, [{\n text: 'None',\n value: ''\n }]),\n value: data.src && editor.convertURL(data.src, 'src'),\n onselect: function (e) {\n var altCtrl = win.find('#alt');\n if (!altCtrl.value() || e.lastControl && altCtrl.value() === e.lastControl.text()) {\n altCtrl.value(e.control.text());\n }\n win.find('#src').value(e.control.value()).fire('change');\n },\n onPostRender: function () {\n imageListCtrl = this;\n }\n };\n }\n if ($_gc1jdictjkmcwomd.hasAdvTab(editor) || $_gc1jdictjkmcwomd.hasUploadUrl(editor) || $_gc1jdictjkmcwomd.hasUploadHandler(editor)) {\n var body = [$_bpqbuud9jkmcwoo5.makeTab(editor, imageListCtrl)];\n if ($_gc1jdictjkmcwomd.hasAdvTab(editor)) {\n body.push($_4qd61kd3jkmcwonl.makeTab(editor));\n }\n if ($_gc1jdictjkmcwomd.hasUploadUrl(editor) || $_gc1jdictjkmcwomd.hasUploadHandler(editor)) {\n body.push($_26ghgddbjkmcwooa.makeTab(editor));\n }\n win = editor.windowManager.open({\n title: 'Insert/edit image',\n data: data,\n bodyType: 'tabpanel',\n body: body,\n onSubmit: curry(submitForm, editor)\n });\n } else {\n win = editor.windowManager.open({\n title: 'Insert/edit image',\n data: data,\n body: $_bpqbuud9jkmcwoo5.getGeneralItems(editor, imageListCtrl),\n onSubmit: curry(submitForm, editor)\n });\n }\n $_14kdtjdajkmcwoo8.syncSize(win);\n }\n function open() {\n $_9v7cmwcujkmcwomi.createImageList(editor, showDialog);\n }\n return { open: open };\n }\n\n var register = function (editor) {\n editor.addCommand('mceImage', Dialog(editor).open);\n };\n var $_cwg86qcrjkmcwom6 = { register: register };\n\n var hasImageClass = function (node) {\n var className = node.attr('class');\n return className && /\\bimage\\b/.test(className);\n };\n var toggleContentEditableState = function (state) {\n return function (nodes) {\n var i = nodes.length, node;\n var toggleContentEditable = function (node) {\n node.attr('contenteditable', state ? 'true' : null);\n };\n while (i--) {\n node = nodes[i];\n if (hasImageClass(node)) {\n node.attr('contenteditable', state ? 'false' : null);\n global$2.each(node.getAll('figcaption'), toggleContentEditable);\n }\n }\n };\n };\n var setup = function (editor) {\n editor.on('preInit', function () {\n editor.parser.addNodeFilter('figure', toggleContentEditableState(true));\n editor.serializer.addNodeFilter('figure', toggleContentEditableState(false));\n });\n };\n var $_8m7aavdhjkmcwooq = { setup: setup };\n\n var register$1 = function (editor) {\n editor.addButton('image', {\n icon: 'image',\n tooltip: 'Insert/edit image',\n onclick: Dialog(editor).open,\n stateSelector: 'img:not([data-mce-object],[data-mce-placeholder]),figure.image'\n });\n editor.addMenuItem('image', {\n icon: 'image',\n text: 'Image',\n onclick: Dialog(editor).open,\n context: 'insert',\n prependToContext: true\n });\n };\n var $_2zobs0dijkmcwoos = { register: register$1 };\n\n global.add('image', function (editor) {\n $_8m7aavdhjkmcwooq.setup(editor);\n $_2zobs0dijkmcwoos.register(editor);\n $_cwg86qcrjkmcwom6.register(editor);\n });\n function Plugin () {\n }\n\n return Plugin;\n\n}());\n})();\n","(function () {\nvar modern = (function () {\n 'use strict';\n\n var global = tinymce.util.Tools.resolve('tinymce.ThemeManager');\n\n var global$1 = tinymce.util.Tools.resolve('tinymce.EditorManager');\n\n var global$2 = tinymce.util.Tools.resolve('tinymce.util.Tools');\n\n var isBrandingEnabled = function (editor) {\n return editor.getParam('branding', true, 'boolean');\n };\n var hasMenubar = function (editor) {\n return getMenubar(editor) !== false;\n };\n var getMenubar = function (editor) {\n return editor.getParam('menubar');\n };\n var hasStatusbar = function (editor) {\n return editor.getParam('statusbar', true, 'boolean');\n };\n var getToolbarSize = function (editor) {\n return editor.getParam('toolbar_items_size');\n };\n var isReadOnly = function (editor) {\n return editor.getParam('readonly', false, 'boolean');\n };\n var getFixedToolbarContainer = function (editor) {\n return editor.getParam('fixed_toolbar_container');\n };\n var getInlineToolbarPositionHandler = function (editor) {\n return editor.getParam('inline_toolbar_position_handler');\n };\n var getMenu = function (editor) {\n return editor.getParam('menu');\n };\n var getRemovedMenuItems = function (editor) {\n return editor.getParam('removed_menuitems', '');\n };\n var getMinWidth = function (editor) {\n return editor.getParam('min_width', 100, 'number');\n };\n var getMinHeight = function (editor) {\n return editor.getParam('min_height', 100, 'number');\n };\n var getMaxWidth = function (editor) {\n return editor.getParam('max_width', 65535, 'number');\n };\n var getMaxHeight = function (editor) {\n return editor.getParam('max_height', 65535, 'number');\n };\n var isSkinDisabled = function (editor) {\n return editor.settings.skin === false;\n };\n var isInline = function (editor) {\n return editor.getParam('inline', false, 'boolean');\n };\n var getResize = function (editor) {\n var resize = editor.getParam('resize', 'vertical');\n if (resize === false) {\n return 'none';\n } else if (resize === 'both') {\n return 'both';\n } else {\n return 'vertical';\n }\n };\n var getSkinUrl = function (editor) {\n var settings = editor.settings;\n var skin = settings.skin;\n var skinUrl = settings.skin_url;\n if (skin !== false) {\n var skinName = skin ? skin : 'lightgray';\n if (skinUrl) {\n skinUrl = editor.documentBaseURI.toAbsolute(skinUrl);\n } else {\n skinUrl = global$1.baseURL + '/skins/' + skinName;\n }\n }\n return skinUrl;\n };\n var getIndexedToolbars = function (settings, defaultToolbar) {\n var toolbars = [];\n for (var i = 1; i < 10; i++) {\n var toolbar = settings['toolbar' + i];\n if (!toolbar) {\n break;\n }\n toolbars.push(toolbar);\n }\n var mainToolbar = settings.toolbar ? [settings.toolbar] : [defaultToolbar];\n return toolbars.length > 0 ? toolbars : mainToolbar;\n };\n var getToolbars = function (editor) {\n var toolbar = editor.getParam('toolbar');\n var defaultToolbar = 'undo redo | styleselect | bold italic | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | link image';\n if (toolbar === false) {\n return [];\n } else if (global$2.isArray(toolbar)) {\n return global$2.grep(toolbar, function (toolbar) {\n return toolbar.length > 0;\n });\n } else {\n return getIndexedToolbars(editor.settings, defaultToolbar);\n }\n };\n\n var global$3 = tinymce.util.Tools.resolve('tinymce.dom.DOMUtils');\n\n var global$4 = tinymce.util.Tools.resolve('tinymce.ui.Factory');\n\n var global$5 = tinymce.util.Tools.resolve('tinymce.util.I18n');\n\n var fireSkinLoaded = function (editor) {\n return editor.fire('SkinLoaded');\n };\n var fireResizeEditor = function (editor) {\n return editor.fire('ResizeEditor');\n };\n var fireBeforeRenderUI = function (editor) {\n return editor.fire('BeforeRenderUI');\n };\n var $_1jkxpltzjkmcwsg4 = {\n fireSkinLoaded: fireSkinLoaded,\n fireResizeEditor: fireResizeEditor,\n fireBeforeRenderUI: fireBeforeRenderUI\n };\n\n var focus = function (panel, type) {\n return function () {\n var item = panel.find(type)[0];\n if (item) {\n item.focus(true);\n }\n };\n };\n var addKeys = function (editor, panel) {\n editor.shortcuts.add('Alt+F9', '', focus(panel, 'menubar'));\n editor.shortcuts.add('Alt+F10,F10', '', focus(panel, 'toolbar'));\n editor.shortcuts.add('Alt+F11', '', focus(panel, 'elementpath'));\n panel.on('cancel', function () {\n editor.focus();\n });\n };\n var $_1mdekmu0jkmcwsg5 = { addKeys: addKeys };\n\n var global$6 = tinymce.util.Tools.resolve('tinymce.geom.Rect');\n\n var global$7 = tinymce.util.Tools.resolve('tinymce.util.Delay');\n\n var noop = function () {\n var x = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n x[_i] = arguments[_i];\n }\n };\n\n var compose = function (fa, fb) {\n return function () {\n var x = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n x[_i] = arguments[_i];\n }\n return fa(fb.apply(null, arguments));\n };\n };\n var constant = function (value) {\n return function () {\n return value;\n };\n };\n\n\n var curry = function (f) {\n var x = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n x[_i - 1] = arguments[_i];\n }\n var args = new Array(arguments.length - 1);\n for (var i = 1; i < arguments.length; i++)\n args[i - 1] = arguments[i];\n return function () {\n var x = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n x[_i] = arguments[_i];\n }\n var newArgs = new Array(arguments.length);\n for (var j = 0; j < newArgs.length; j++)\n newArgs[j] = arguments[j];\n var all = args.concat(newArgs);\n return f.apply(null, all);\n };\n };\n\n\n\n\n var never = constant(false);\n var always = constant(true);\n\n var never$1 = never;\n var always$1 = always;\n var none = function () {\n return NONE;\n };\n var NONE = function () {\n var eq = function (o) {\n return o.isNone();\n };\n var call$$1 = function (thunk) {\n return thunk();\n };\n var id = function (n) {\n return n;\n };\n var noop$$1 = function () {\n };\n var nul = function () {\n return null;\n };\n var undef = function () {\n return undefined;\n };\n var me = {\n fold: function (n, s) {\n return n();\n },\n is: never$1,\n isSome: never$1,\n isNone: always$1,\n getOr: id,\n getOrThunk: call$$1,\n getOrDie: function (msg) {\n throw new Error(msg || 'error: getOrDie called on none.');\n },\n getOrNull: nul,\n getOrUndefined: undef,\n or: id,\n orThunk: call$$1,\n map: none,\n ap: none,\n each: noop$$1,\n bind: none,\n flatten: none,\n exists: never$1,\n forall: always$1,\n filter: none,\n equals: eq,\n equals_: eq,\n toArray: function () {\n return [];\n },\n toString: constant('none()')\n };\n if (Object.freeze)\n Object.freeze(me);\n return me;\n }();\n var some = function (a) {\n var constant_a = function () {\n return a;\n };\n var self = function () {\n return me;\n };\n var map = function (f) {\n return some(f(a));\n };\n var bind = function (f) {\n return f(a);\n };\n var me = {\n fold: function (n, s) {\n return s(a);\n },\n is: function (v) {\n return a === v;\n },\n isSome: always$1,\n isNone: never$1,\n getOr: constant_a,\n getOrThunk: constant_a,\n getOrDie: constant_a,\n getOrNull: constant_a,\n getOrUndefined: constant_a,\n or: self,\n orThunk: self,\n map: map,\n ap: function (optfab) {\n return optfab.fold(none, function (fab) {\n return some(fab(a));\n });\n },\n each: function (f) {\n f(a);\n },\n bind: bind,\n flatten: constant_a,\n exists: bind,\n forall: bind,\n filter: function (f) {\n return f(a) ? me : NONE;\n },\n equals: function (o) {\n return o.is(a);\n },\n equals_: function (o, elementEq) {\n return o.fold(never$1, function (b) {\n return elementEq(a, b);\n });\n },\n toArray: function () {\n return [a];\n },\n toString: function () {\n return 'some(' + a + ')';\n }\n };\n return me;\n };\n var from = function (value) {\n return value === null || value === undefined ? NONE : some(value);\n };\n var Option = {\n some: some,\n none: none,\n from: from\n };\n\n var getUiContainerDelta = function (ctrl) {\n var uiContainer = getUiContainer(ctrl);\n if (uiContainer && global$3.DOM.getStyle(uiContainer, 'position', true) !== 'static') {\n var containerPos = global$3.DOM.getPos(uiContainer);\n var dx = uiContainer.scrollLeft - containerPos.x;\n var dy = uiContainer.scrollTop - containerPos.y;\n return Option.some({\n x: dx,\n y: dy\n });\n } else {\n return Option.none();\n }\n };\n var setUiContainer = function (editor, ctrl) {\n var uiContainer = global$3.DOM.select(editor.settings.ui_container)[0];\n ctrl.getRoot().uiContainer = uiContainer;\n };\n var getUiContainer = function (ctrl) {\n return ctrl ? ctrl.getRoot().uiContainer : null;\n };\n var inheritUiContainer = function (fromCtrl, toCtrl) {\n return toCtrl.uiContainer = getUiContainer(fromCtrl);\n };\n var $_5kmlp5u4jkmcwsge = {\n getUiContainerDelta: getUiContainerDelta,\n setUiContainer: setUiContainer,\n getUiContainer: getUiContainer,\n inheritUiContainer: inheritUiContainer\n };\n\n var createToolbar = function (editor, items, size) {\n var toolbarItems = [];\n var buttonGroup;\n if (!items) {\n return;\n }\n global$2.each(items.split(/[ ,]/), function (item) {\n var itemName;\n var bindSelectorChanged = function () {\n var selection = editor.selection;\n if (item.settings.stateSelector) {\n selection.selectorChanged(item.settings.stateSelector, function (state) {\n item.active(state);\n }, true);\n }\n if (item.settings.disabledStateSelector) {\n selection.selectorChanged(item.settings.disabledStateSelector, function (state) {\n item.disabled(state);\n });\n }\n };\n if (item === '|') {\n buttonGroup = null;\n } else {\n if (!buttonGroup) {\n buttonGroup = {\n type: 'buttongroup',\n items: []\n };\n toolbarItems.push(buttonGroup);\n }\n if (editor.buttons[item]) {\n itemName = item;\n item = editor.buttons[itemName];\n if (typeof item === 'function') {\n item = item();\n }\n item.type = item.type || 'button';\n item.size = size;\n item = global$4.create(item);\n buttonGroup.items.push(item);\n if (editor.initialized) {\n bindSelectorChanged();\n } else {\n editor.on('init', bindSelectorChanged);\n }\n }\n }\n });\n return {\n type: 'toolbar',\n layout: 'flow',\n items: toolbarItems\n };\n };\n var createToolbars = function (editor, size) {\n var toolbars = [];\n var addToolbar = function (items) {\n if (items) {\n toolbars.push(createToolbar(editor, items, size));\n }\n };\n global$2.each(getToolbars(editor), function (toolbar) {\n addToolbar(toolbar);\n });\n if (toolbars.length) {\n return {\n type: 'panel',\n layout: 'stack',\n classes: 'toolbar-grp',\n ariaRoot: true,\n ariaRemember: true,\n items: toolbars\n };\n }\n };\n var $_5g1hacu7jkmcwsgn = {\n createToolbar: createToolbar,\n createToolbars: createToolbars\n };\n\n var DOM = global$3.DOM;\n var toClientRect = function (geomRect) {\n return {\n left: geomRect.x,\n top: geomRect.y,\n width: geomRect.w,\n height: geomRect.h,\n right: geomRect.x + geomRect.w,\n bottom: geomRect.y + geomRect.h\n };\n };\n var hideAllFloatingPanels = function (editor) {\n global$2.each(editor.contextToolbars, function (toolbar) {\n if (toolbar.panel) {\n toolbar.panel.hide();\n }\n });\n };\n var movePanelTo = function (panel, pos) {\n panel.moveTo(pos.left, pos.top);\n };\n var togglePositionClass = function (panel, relPos, predicate) {\n relPos = relPos ? relPos.substr(0, 2) : '';\n global$2.each({\n t: 'down',\n b: 'up'\n }, function (cls, pos) {\n panel.classes.toggle('arrow-' + cls, predicate(pos, relPos.substr(0, 1)));\n });\n global$2.each({\n l: 'left',\n r: 'right'\n }, function (cls, pos) {\n panel.classes.toggle('arrow-' + cls, predicate(pos, relPos.substr(1, 1)));\n });\n };\n var userConstrain = function (handler, x, y, elementRect, contentAreaRect, panelRect) {\n panelRect = toClientRect({\n x: x,\n y: y,\n w: panelRect.w,\n h: panelRect.h\n });\n if (handler) {\n panelRect = handler({\n elementRect: toClientRect(elementRect),\n contentAreaRect: toClientRect(contentAreaRect),\n panelRect: panelRect\n });\n }\n return panelRect;\n };\n var addContextualToolbars = function (editor) {\n var scrollContainer;\n var getContextToolbars = function () {\n return editor.contextToolbars || [];\n };\n var getElementRect = function (elm) {\n var pos, targetRect, root;\n pos = DOM.getPos(editor.getContentAreaContainer());\n targetRect = editor.dom.getRect(elm);\n root = editor.dom.getRoot();\n if (root.nodeName === 'BODY') {\n targetRect.x -= root.ownerDocument.documentElement.scrollLeft || root.scrollLeft;\n targetRect.y -= root.ownerDocument.documentElement.scrollTop || root.scrollTop;\n }\n targetRect.x += pos.x;\n targetRect.y += pos.y;\n return targetRect;\n };\n var reposition = function (match, shouldShow) {\n var relPos, panelRect, elementRect, contentAreaRect, panel, relRect, testPositions, smallElementWidthThreshold;\n var handler = getInlineToolbarPositionHandler(editor);\n if (editor.removed) {\n return;\n }\n if (!match || !match.toolbar.panel) {\n hideAllFloatingPanels(editor);\n return;\n }\n testPositions = [\n 'bc-tc',\n 'tc-bc',\n 'tl-bl',\n 'bl-tl',\n 'tr-br',\n 'br-tr'\n ];\n panel = match.toolbar.panel;\n if (shouldShow) {\n panel.show();\n }\n elementRect = getElementRect(match.element);\n panelRect = DOM.getRect(panel.getEl());\n contentAreaRect = DOM.getRect(editor.getContentAreaContainer() || editor.getBody());\n var delta = $_5kmlp5u4jkmcwsge.getUiContainerDelta(panel).getOr({\n x: 0,\n y: 0\n });\n elementRect.x += delta.x;\n elementRect.y += delta.y;\n panelRect.x += delta.x;\n panelRect.y += delta.y;\n contentAreaRect.x += delta.x;\n contentAreaRect.y += delta.y;\n smallElementWidthThreshold = 25;\n if (DOM.getStyle(match.element, 'display', true) !== 'inline') {\n var clientRect = match.element.getBoundingClientRect();\n elementRect.w = clientRect.width;\n elementRect.h = clientRect.height;\n }\n if (!editor.inline) {\n contentAreaRect.w = editor.getDoc().documentElement.offsetWidth;\n }\n if (editor.selection.controlSelection.isResizable(match.element) && elementRect.w < smallElementWidthThreshold) {\n elementRect = global$6.inflate(elementRect, 0, 8);\n }\n relPos = global$6.findBestRelativePosition(panelRect, elementRect, contentAreaRect, testPositions);\n elementRect = global$6.clamp(elementRect, contentAreaRect);\n if (relPos) {\n relRect = global$6.relativePosition(panelRect, elementRect, relPos);\n movePanelTo(panel, userConstrain(handler, relRect.x, relRect.y, elementRect, contentAreaRect, panelRect));\n } else {\n contentAreaRect.h += panelRect.h;\n elementRect = global$6.intersect(contentAreaRect, elementRect);\n if (elementRect) {\n relPos = global$6.findBestRelativePosition(panelRect, elementRect, contentAreaRect, [\n 'bc-tc',\n 'bl-tl',\n 'br-tr'\n ]);\n if (relPos) {\n relRect = global$6.relativePosition(panelRect, elementRect, relPos);\n movePanelTo(panel, userConstrain(handler, relRect.x, relRect.y, elementRect, contentAreaRect, panelRect));\n } else {\n movePanelTo(panel, userConstrain(handler, elementRect.x, elementRect.y, elementRect, contentAreaRect, panelRect));\n }\n } else {\n panel.hide();\n }\n }\n togglePositionClass(panel, relPos, function (pos1, pos2) {\n return pos1 === pos2;\n });\n };\n var repositionHandler = function (show) {\n return function () {\n var execute = function () {\n if (editor.selection) {\n reposition(findFrontMostMatch(editor.selection.getNode()), show);\n }\n };\n global$7.requestAnimationFrame(execute);\n };\n };\n var bindScrollEvent = function (panel) {\n if (!scrollContainer) {\n var reposition_1 = repositionHandler(true);\n var uiContainer_1 = $_5kmlp5u4jkmcwsge.getUiContainer(panel);\n scrollContainer = editor.selection.getScrollContainer() || editor.getWin();\n DOM.bind(scrollContainer, 'scroll', reposition_1);\n DOM.bind(uiContainer_1, 'scroll', reposition_1);\n editor.on('remove', function () {\n DOM.unbind(scrollContainer, 'scroll', reposition_1);\n DOM.unbind(uiContainer_1, 'scroll', reposition_1);\n });\n }\n };\n var showContextToolbar = function (match) {\n var panel;\n if (match.toolbar.panel) {\n match.toolbar.panel.show();\n reposition(match);\n return;\n }\n panel = global$4.create({\n type: 'floatpanel',\n role: 'dialog',\n classes: 'tinymce tinymce-inline arrow',\n ariaLabel: 'Inline toolbar',\n layout: 'flex',\n direction: 'column',\n align: 'stretch',\n autohide: false,\n autofix: true,\n fixed: true,\n border: 1,\n items: $_5g1hacu7jkmcwsgn.createToolbar(editor, match.toolbar.items),\n oncancel: function () {\n editor.focus();\n }\n });\n $_5kmlp5u4jkmcwsge.setUiContainer(editor, panel);\n bindScrollEvent(panel);\n match.toolbar.panel = panel;\n panel.renderTo().reflow();\n reposition(match);\n };\n var hideAllContextToolbars = function () {\n global$2.each(getContextToolbars(), function (toolbar) {\n if (toolbar.panel) {\n toolbar.panel.hide();\n }\n });\n };\n var findFrontMostMatch = function (targetElm) {\n var i, y, parentsAndSelf;\n var toolbars = getContextToolbars();\n parentsAndSelf = editor.$(targetElm).parents().add(targetElm);\n for (i = parentsAndSelf.length - 1; i >= 0; i--) {\n for (y = toolbars.length - 1; y >= 0; y--) {\n if (toolbars[y].predicate(parentsAndSelf[i])) {\n return {\n toolbar: toolbars[y],\n element: parentsAndSelf[i]\n };\n }\n }\n }\n return null;\n };\n editor.on('click keyup setContent ObjectResized', function (e) {\n if (e.type === 'setcontent' && !e.selection) {\n return;\n }\n global$7.setEditorTimeout(editor, function () {\n var match;\n match = findFrontMostMatch(editor.selection.getNode());\n if (match) {\n hideAllContextToolbars();\n showContextToolbar(match);\n } else {\n hideAllContextToolbars();\n }\n });\n });\n editor.on('blur hide contextmenu', hideAllContextToolbars);\n editor.on('ObjectResizeStart', function () {\n var match = findFrontMostMatch(editor.selection.getNode());\n if (match && match.toolbar.panel) {\n match.toolbar.panel.hide();\n }\n });\n editor.on('ResizeEditor ResizeWindow', repositionHandler(true));\n editor.on('nodeChange', repositionHandler(false));\n editor.on('remove', function () {\n global$2.each(getContextToolbars(), function (toolbar) {\n if (toolbar.panel) {\n toolbar.panel.remove();\n }\n });\n editor.contextToolbars = {};\n });\n editor.shortcuts.add('ctrl+shift+e > ctrl+shift+p', '', function () {\n var match = findFrontMostMatch(editor.selection.getNode());\n if (match && match.toolbar.panel) {\n match.toolbar.panel.items()[0].focus();\n }\n });\n };\n var $_44ggy0u1jkmcwsg7 = { addContextualToolbars: addContextualToolbars };\n\n var typeOf = function (x) {\n if (x === null)\n return 'null';\n var t = typeof x;\n if (t === 'object' && Array.prototype.isPrototypeOf(x))\n return 'array';\n if (t === 'object' && String.prototype.isPrototypeOf(x))\n return 'string';\n return t;\n };\n var isType = function (type) {\n return function (value) {\n return typeOf(value) === type;\n };\n };\n\n\n\n\n\n\n var isFunction = isType('function');\n var isNumber = isType('number');\n\n var rawIndexOf = function () {\n var pIndexOf = Array.prototype.indexOf;\n var fastIndex = function (xs, x) {\n return pIndexOf.call(xs, x);\n };\n var slowIndex = function (xs, x) {\n return slowIndexOf(xs, x);\n };\n return pIndexOf === undefined ? slowIndex : fastIndex;\n }();\n var indexOf = function (xs, x) {\n var r = rawIndexOf(xs, x);\n return r === -1 ? Option.none() : Option.some(r);\n };\n\n var exists = function (xs, pred) {\n return findIndex(xs, pred).isSome();\n };\n\n\n var map = function (xs, f) {\n var len = xs.length;\n var r = new Array(len);\n for (var i = 0; i < len; i++) {\n var x = xs[i];\n r[i] = f(x, i, xs);\n }\n return r;\n };\n var each = function (xs, f) {\n for (var i = 0, len = xs.length; i < len; i++) {\n var x = xs[i];\n f(x, i, xs);\n }\n };\n\n\n var filter = function (xs, pred) {\n var r = [];\n for (var i = 0, len = xs.length; i < len; i++) {\n var x = xs[i];\n if (pred(x, i, xs)) {\n r.push(x);\n }\n }\n return r;\n };\n\n\n var foldl = function (xs, f, acc) {\n each(xs, function (x) {\n acc = f(acc, x);\n });\n return acc;\n };\n var find = function (xs, pred) {\n for (var i = 0, len = xs.length; i < len; i++) {\n var x = xs[i];\n if (pred(x, i, xs)) {\n return Option.some(x);\n }\n }\n return Option.none();\n };\n var findIndex = function (xs, pred) {\n for (var i = 0, len = xs.length; i < len; i++) {\n var x = xs[i];\n if (pred(x, i, xs)) {\n return Option.some(i);\n }\n }\n return Option.none();\n };\n var slowIndexOf = function (xs, x) {\n for (var i = 0, len = xs.length; i < len; ++i) {\n if (xs[i] === x) {\n return i;\n }\n }\n return -1;\n };\n var push = Array.prototype.push;\n var flatten = function (xs) {\n var r = [];\n for (var i = 0, len = xs.length; i < len; ++i) {\n if (!Array.prototype.isPrototypeOf(xs[i]))\n throw new Error('Arr.flatten item ' + i + ' was not an array, input: ' + xs);\n push.apply(r, xs[i]);\n }\n return r;\n };\n\n\n\n var slice = Array.prototype.slice;\n var reverse = function (xs) {\n var r = slice.call(xs, 0);\n r.reverse();\n return r;\n };\n\n\n\n\n\n\n var from$1 = isFunction(Array.from) ? Array.from : function (x) {\n return slice.call(x);\n };\n\n var defaultMenus = {\n file: {\n title: 'File',\n items: 'newdocument restoredraft | preview | print'\n },\n edit: {\n title: 'Edit',\n items: 'undo redo | cut copy paste pastetext | selectall'\n },\n view: {\n title: 'View',\n items: 'code | visualaid visualchars visualblocks | spellchecker | preview fullscreen'\n },\n insert: {\n title: 'Insert',\n items: 'image link media template codesample inserttable | charmap hr | pagebreak nonbreaking anchor toc | insertdatetime'\n },\n format: {\n title: 'Format',\n items: 'bold italic underline strikethrough superscript subscript codeformat | blockformats align | removeformat'\n },\n tools: {\n title: 'Tools',\n items: 'spellchecker spellcheckerlanguage | a11ycheck code'\n },\n table: { title: 'Table' },\n help: { title: 'Help' }\n };\n var delimiterMenuNamePair = function () {\n return {\n name: '|',\n item: { text: '|' }\n };\n };\n var createMenuNameItemPair = function (name, item) {\n var menuItem = item ? {\n name: name,\n item: item\n } : null;\n return name === '|' ? delimiterMenuNamePair() : menuItem;\n };\n var hasItemName = function (namedMenuItems, name) {\n return findIndex(namedMenuItems, function (namedMenuItem) {\n return namedMenuItem.name === name;\n }).isSome();\n };\n var isSeparator = function (namedMenuItem) {\n return namedMenuItem && namedMenuItem.item.text === '|';\n };\n var cleanupMenu = function (namedMenuItems, removedMenuItems) {\n var menuItemsPass1 = filter(namedMenuItems, function (namedMenuItem) {\n return removedMenuItems.hasOwnProperty(namedMenuItem.name) === false;\n });\n var menuItemsPass2 = filter(menuItemsPass1, function (namedMenuItem, i, namedMenuItems) {\n return !isSeparator(namedMenuItem) || !isSeparator(namedMenuItems[i - 1]);\n });\n return filter(menuItemsPass2, function (namedMenuItem, i, namedMenuItems) {\n return !isSeparator(namedMenuItem) || i > 0 && i < namedMenuItems.length - 1;\n });\n };\n var createMenu = function (editorMenuItems, menus, removedMenuItems, context) {\n var menuButton, menu, namedMenuItems, isUserDefined;\n if (menus) {\n menu = menus[context];\n isUserDefined = true;\n } else {\n menu = defaultMenus[context];\n }\n if (menu) {\n menuButton = { text: menu.title };\n namedMenuItems = [];\n global$2.each((menu.items || '').split(/[ ,]/), function (name) {\n var namedMenuItem = createMenuNameItemPair(name, editorMenuItems[name]);\n if (namedMenuItem) {\n namedMenuItems.push(namedMenuItem);\n }\n });\n if (!isUserDefined) {\n global$2.each(editorMenuItems, function (item, name) {\n if (item.context === context && !hasItemName(namedMenuItems, name)) {\n if (item.separator === 'before') {\n namedMenuItems.push(delimiterMenuNamePair());\n }\n if (item.prependToContext) {\n namedMenuItems.unshift(createMenuNameItemPair(name, item));\n } else {\n namedMenuItems.push(createMenuNameItemPair(name, item));\n }\n if (item.separator === 'after') {\n namedMenuItems.push(delimiterMenuNamePair());\n }\n }\n });\n }\n menuButton.menu = map(cleanupMenu(namedMenuItems, removedMenuItems), function (menuItem) {\n return menuItem.item;\n });\n if (!menuButton.menu.length) {\n return null;\n }\n }\n return menuButton;\n };\n var getDefaultMenubar = function (editor) {\n var name;\n var defaultMenuBar = [];\n var menu = getMenu(editor);\n if (menu) {\n for (name in menu) {\n defaultMenuBar.push(name);\n }\n } else {\n for (name in defaultMenus) {\n defaultMenuBar.push(name);\n }\n }\n return defaultMenuBar;\n };\n var createMenuButtons = function (editor) {\n var menuButtons = [];\n var defaultMenuBar = getDefaultMenubar(editor);\n var removedMenuItems = global$2.makeMap(getRemovedMenuItems(editor).split(/[ ,]/));\n var menubar = getMenubar(editor);\n var enabledMenuNames = typeof menubar === 'string' ? menubar.split(/[ ,]/) : defaultMenuBar;\n for (var i = 0; i < enabledMenuNames.length; i++) {\n var menuItems = enabledMenuNames[i];\n var menu = createMenu(editor.menuItems, getMenu(editor), removedMenuItems, menuItems);\n if (menu) {\n menuButtons.push(menu);\n }\n }\n return menuButtons;\n };\n var $_3ke8tlu8jkmcwsgq = { createMenuButtons: createMenuButtons };\n\n var DOM$1 = global$3.DOM;\n var getSize = function (elm) {\n return {\n width: elm.clientWidth,\n height: elm.clientHeight\n };\n };\n var resizeTo = function (editor, width, height) {\n var containerElm, iframeElm, containerSize, iframeSize;\n containerElm = editor.getContainer();\n iframeElm = editor.getContentAreaContainer().firstChild;\n containerSize = getSize(containerElm);\n iframeSize = getSize(iframeElm);\n if (width !== null) {\n width = Math.max(getMinWidth(editor), width);\n width = Math.min(getMaxWidth(editor), width);\n DOM$1.setStyle(containerElm, 'width', width + (containerSize.width - iframeSize.width));\n DOM$1.setStyle(iframeElm, 'width', width);\n }\n height = Math.max(getMinHeight(editor), height);\n height = Math.min(getMaxHeight(editor), height);\n DOM$1.setStyle(iframeElm, 'height', height);\n $_1jkxpltzjkmcwsg4.fireResizeEditor(editor);\n };\n var resizeBy = function (editor, dw, dh) {\n var elm = editor.getContentAreaContainer();\n resizeTo(editor, elm.clientWidth + dw, elm.clientHeight + dh);\n };\n var $_focm2tubjkmcwsh5 = {\n resizeTo: resizeTo,\n resizeBy: resizeBy\n };\n\n var global$8 = tinymce.util.Tools.resolve('tinymce.Env');\n\n var api = function (elm) {\n return {\n element: function () {\n return elm;\n }\n };\n };\n var trigger = function (sidebar, panel, callbackName) {\n var callback = sidebar.settings[callbackName];\n if (callback) {\n callback(api(panel.getEl('body')));\n }\n };\n var hidePanels = function (name, container, sidebars) {\n global$2.each(sidebars, function (sidebar) {\n var panel = container.items().filter('#' + sidebar.name)[0];\n if (panel && panel.visible() && sidebar.name !== name) {\n trigger(sidebar, panel, 'onhide');\n panel.visible(false);\n }\n });\n };\n var deactivateButtons = function (toolbar) {\n toolbar.items().each(function (ctrl) {\n ctrl.active(false);\n });\n };\n var findSidebar = function (sidebars, name) {\n return global$2.grep(sidebars, function (sidebar) {\n return sidebar.name === name;\n })[0];\n };\n var showPanel = function (editor, name, sidebars) {\n return function (e) {\n var btnCtrl = e.control;\n var container = btnCtrl.parents().filter('panel')[0];\n var panel = container.find('#' + name)[0];\n var sidebar = findSidebar(sidebars, name);\n hidePanels(name, container, sidebars);\n deactivateButtons(btnCtrl.parent());\n if (panel && panel.visible()) {\n trigger(sidebar, panel, 'onhide');\n panel.hide();\n btnCtrl.active(false);\n } else {\n if (panel) {\n panel.show();\n trigger(sidebar, panel, 'onshow');\n } else {\n panel = global$4.create({\n type: 'container',\n name: name,\n layout: 'stack',\n classes: 'sidebar-panel',\n html: ''\n });\n container.prepend(panel);\n trigger(sidebar, panel, 'onrender');\n trigger(sidebar, panel, 'onshow');\n }\n btnCtrl.active(true);\n }\n $_1jkxpltzjkmcwsg4.fireResizeEditor(editor);\n };\n };\n var isModernBrowser = function () {\n return !global$8.ie || global$8.ie >= 11;\n };\n var hasSidebar = function (editor) {\n return isModernBrowser() && editor.sidebars ? editor.sidebars.length > 0 : false;\n };\n var createSidebar = function (editor) {\n var buttons = global$2.map(editor.sidebars, function (sidebar) {\n var settings = sidebar.settings;\n return {\n type: 'button',\n icon: settings.icon,\n image: settings.image,\n tooltip: settings.tooltip,\n onclick: showPanel(editor, sidebar.name, editor.sidebars)\n };\n });\n return {\n type: 'panel',\n name: 'sidebar',\n layout: 'stack',\n classes: 'sidebar',\n items: [{\n type: 'toolbar',\n layout: 'stack',\n classes: 'sidebar-toolbar',\n items: buttons\n }]\n };\n };\n var $_93h32bucjkmcwsh7 = {\n hasSidebar: hasSidebar,\n createSidebar: createSidebar\n };\n\n var fireSkinLoaded$1 = function (editor) {\n var done = function () {\n editor._skinLoaded = true;\n $_1jkxpltzjkmcwsg4.fireSkinLoaded(editor);\n };\n return function () {\n if (editor.initialized) {\n done();\n } else {\n editor.on('init', done);\n }\n };\n };\n var $_2tsyb2uejkmcwsha = { fireSkinLoaded: fireSkinLoaded$1 };\n\n var DOM$2 = global$3.DOM;\n var switchMode = function (panel) {\n return function (e) {\n panel.find('*').disabled(e.mode === 'readonly');\n };\n };\n var editArea = function (border) {\n return {\n type: 'panel',\n name: 'iframe',\n layout: 'stack',\n classes: 'edit-area',\n border: border,\n html: ''\n };\n };\n var editAreaContainer = function (editor) {\n return {\n type: 'panel',\n layout: 'stack',\n classes: 'edit-aria-container',\n border: '1 0 0 0',\n items: [\n editArea('0'),\n $_93h32bucjkmcwsh7.createSidebar(editor)\n ]\n };\n };\n var render = function (editor, theme, args) {\n var panel, resizeHandleCtrl, startSize;\n if (isSkinDisabled(editor) === false && args.skinUiCss) {\n DOM$2.styleSheetLoader.load(args.skinUiCss, $_2tsyb2uejkmcwsha.fireSkinLoaded(editor));\n } else {\n $_2tsyb2uejkmcwsha.fireSkinLoaded(editor)();\n }\n panel = theme.panel = global$4.create({\n type: 'panel',\n role: 'application',\n classes: 'tinymce',\n style: 'visibility: hidden',\n layout: 'stack',\n border: 1,\n items: [\n {\n type: 'container',\n classes: 'top-part',\n items: [\n hasMenubar(editor) === false ? null : {\n type: 'menubar',\n border: '0 0 1 0',\n items: $_3ke8tlu8jkmcwsgq.createMenuButtons(editor)\n },\n $_5g1hacu7jkmcwsgn.createToolbars(editor, getToolbarSize(editor))\n ]\n },\n $_93h32bucjkmcwsh7.hasSidebar(editor) ? editAreaContainer(editor) : editArea('1 0 0 0')\n ]\n });\n $_5kmlp5u4jkmcwsge.setUiContainer(editor, panel);\n if (getResize(editor) !== 'none') {\n resizeHandleCtrl = {\n type: 'resizehandle',\n direction: getResize(editor),\n onResizeStart: function () {\n var elm = editor.getContentAreaContainer().firstChild;\n startSize = {\n width: elm.clientWidth,\n height: elm.clientHeight\n };\n },\n onResize: function (e) {\n if (getResize(editor) === 'both') {\n $_focm2tubjkmcwsh5.resizeTo(editor, startSize.width + e.deltaX, startSize.height + e.deltaY);\n } else {\n $_focm2tubjkmcwsh5.resizeTo(editor, null, startSize.height + e.deltaY);\n }\n }\n };\n }\n if (hasStatusbar(editor)) {\n var linkHtml = 'tinymce';\n var html = global$5.translate([\n 'Powered by {0}',\n linkHtml\n ]);\n var brandingLabel = isBrandingEnabled(editor) ? {\n type: 'label',\n classes: 'branding',\n html: ' ' + html\n } : null;\n panel.add({\n type: 'panel',\n name: 'statusbar',\n classes: 'statusbar',\n layout: 'flow',\n border: '1 0 0 0',\n ariaRoot: true,\n items: [\n {\n type: 'elementpath',\n editor: editor\n },\n resizeHandleCtrl,\n brandingLabel\n ]\n });\n }\n $_1jkxpltzjkmcwsg4.fireBeforeRenderUI(editor);\n editor.on('SwitchMode', switchMode(panel));\n panel.renderBefore(args.targetNode).reflow();\n if (isReadOnly(editor)) {\n editor.setMode('readonly');\n }\n if (args.width) {\n DOM$2.setStyle(panel.getEl(), 'width', args.width);\n }\n editor.on('remove', function () {\n panel.remove();\n panel = null;\n });\n $_1mdekmu0jkmcwsg5.addKeys(editor, panel);\n $_44ggy0u1jkmcwsg7.addContextualToolbars(editor);\n return {\n iframeContainer: panel.find('#iframe')[0].getEl(),\n editorContainer: panel.getEl()\n };\n };\n var $_9mz4sntvjkmcwsft = { render: render };\n\n var global$9 = tinymce.util.Tools.resolve('tinymce.dom.DomQuery');\n\n var count = 0;\n var funcs = {\n id: function () {\n return 'mceu_' + count++;\n },\n create: function (name$$1, attrs, children) {\n var elm = document.createElement(name$$1);\n global$3.DOM.setAttribs(elm, attrs);\n if (typeof children === 'string') {\n elm.innerHTML = children;\n } else {\n global$2.each(children, function (child) {\n if (child.nodeType) {\n elm.appendChild(child);\n }\n });\n }\n return elm;\n },\n createFragment: function (html) {\n return global$3.DOM.createFragment(html);\n },\n getWindowSize: function () {\n return global$3.DOM.getViewPort();\n },\n getSize: function (elm) {\n var width, height;\n if (elm.getBoundingClientRect) {\n var rect = elm.getBoundingClientRect();\n width = Math.max(rect.width || rect.right - rect.left, elm.offsetWidth);\n height = Math.max(rect.height || rect.bottom - rect.bottom, elm.offsetHeight);\n } else {\n width = elm.offsetWidth;\n height = elm.offsetHeight;\n }\n return {\n width: width,\n height: height\n };\n },\n getPos: function (elm, root) {\n return global$3.DOM.getPos(elm, root || funcs.getContainer());\n },\n getContainer: function () {\n return global$8.container ? global$8.container : document.body;\n },\n getViewPort: function (win) {\n return global$3.DOM.getViewPort(win);\n },\n get: function (id) {\n return document.getElementById(id);\n },\n addClass: function (elm, cls) {\n return global$3.DOM.addClass(elm, cls);\n },\n removeClass: function (elm, cls) {\n return global$3.DOM.removeClass(elm, cls);\n },\n hasClass: function (elm, cls) {\n return global$3.DOM.hasClass(elm, cls);\n },\n toggleClass: function (elm, cls, state) {\n return global$3.DOM.toggleClass(elm, cls, state);\n },\n css: function (elm, name$$1, value) {\n return global$3.DOM.setStyle(elm, name$$1, value);\n },\n getRuntimeStyle: function (elm, name$$1) {\n return global$3.DOM.getStyle(elm, name$$1, true);\n },\n on: function (target, name$$1, callback, scope) {\n return global$3.DOM.bind(target, name$$1, callback, scope);\n },\n off: function (target, name$$1, callback) {\n return global$3.DOM.unbind(target, name$$1, callback);\n },\n fire: function (target, name$$1, args) {\n return global$3.DOM.fire(target, name$$1, args);\n },\n innerHtml: function (elm, html) {\n global$3.DOM.setHTML(elm, html);\n }\n };\n\n var isStatic = function (elm) {\n return funcs.getRuntimeStyle(elm, 'position') === 'static';\n };\n var isFixed = function (ctrl) {\n return ctrl.state.get('fixed');\n };\n function calculateRelativePosition(ctrl, targetElm, rel) {\n var ctrlElm, pos, x, y, selfW, selfH, targetW, targetH, viewport, size;\n viewport = getWindowViewPort();\n pos = funcs.getPos(targetElm, $_5kmlp5u4jkmcwsge.getUiContainer(ctrl));\n x = pos.x;\n y = pos.y;\n if (isFixed(ctrl) && isStatic(document.body)) {\n x -= viewport.x;\n y -= viewport.y;\n }\n ctrlElm = ctrl.getEl();\n size = funcs.getSize(ctrlElm);\n selfW = size.width;\n selfH = size.height;\n size = funcs.getSize(targetElm);\n targetW = size.width;\n targetH = size.height;\n rel = (rel || '').split('');\n if (rel[0] === 'b') {\n y += targetH;\n }\n if (rel[1] === 'r') {\n x += targetW;\n }\n if (rel[0] === 'c') {\n y += Math.round(targetH / 2);\n }\n if (rel[1] === 'c') {\n x += Math.round(targetW / 2);\n }\n if (rel[3] === 'b') {\n y -= selfH;\n }\n if (rel[4] === 'r') {\n x -= selfW;\n }\n if (rel[3] === 'c') {\n y -= Math.round(selfH / 2);\n }\n if (rel[4] === 'c') {\n x -= Math.round(selfW / 2);\n }\n return {\n x: x,\n y: y,\n w: selfW,\n h: selfH\n };\n }\n var getUiContainerViewPort = function (customUiContainer) {\n return {\n x: 0,\n y: 0,\n w: customUiContainer.scrollWidth - 1,\n h: customUiContainer.scrollHeight - 1\n };\n };\n var getWindowViewPort = function () {\n var win = window;\n var x = Math.max(win.pageXOffset, document.body.scrollLeft, document.documentElement.scrollLeft);\n var y = Math.max(win.pageYOffset, document.body.scrollTop, document.documentElement.scrollTop);\n var w = win.innerWidth || document.documentElement.clientWidth;\n var h = win.innerHeight || document.documentElement.clientHeight;\n return {\n x: x,\n y: y,\n w: x + w,\n h: y + h\n };\n };\n var getViewPortRect = function (ctrl) {\n var customUiContainer = $_5kmlp5u4jkmcwsge.getUiContainer(ctrl);\n return customUiContainer && !isFixed(ctrl) ? getUiContainerViewPort(customUiContainer) : getWindowViewPort();\n };\n var $_77p0ikukjkmcwsie = {\n testMoveRel: function (elm, rels) {\n var viewPortRect = getViewPortRect(this);\n for (var i = 0; i < rels.length; i++) {\n var pos = calculateRelativePosition(this, elm, rels[i]);\n if (isFixed(this)) {\n if (pos.x > 0 && pos.x + pos.w < viewPortRect.w && pos.y > 0 && pos.y + pos.h < viewPortRect.h) {\n return rels[i];\n }\n } else {\n if (pos.x > viewPortRect.x && pos.x + pos.w < viewPortRect.w && pos.y > viewPortRect.y && pos.y + pos.h < viewPortRect.h) {\n return rels[i];\n }\n }\n }\n return rels[0];\n },\n moveRel: function (elm, rel) {\n if (typeof rel !== 'string') {\n rel = this.testMoveRel(elm, rel);\n }\n var pos = calculateRelativePosition(this, elm, rel);\n return this.moveTo(pos.x, pos.y);\n },\n moveBy: function (dx, dy) {\n var self$$1 = this, rect = self$$1.layoutRect();\n self$$1.moveTo(rect.x + dx, rect.y + dy);\n return self$$1;\n },\n moveTo: function (x, y) {\n var self$$1 = this;\n function constrain(value, max, size) {\n if (value < 0) {\n return 0;\n }\n if (value + size > max) {\n value = max - size;\n return value < 0 ? 0 : value;\n }\n return value;\n }\n if (self$$1.settings.constrainToViewport) {\n var viewPortRect = getViewPortRect(this);\n var layoutRect = self$$1.layoutRect();\n x = constrain(x, viewPortRect.w, layoutRect.w);\n y = constrain(y, viewPortRect.h, layoutRect.h);\n }\n var uiContainer = $_5kmlp5u4jkmcwsge.getUiContainer(self$$1);\n if (uiContainer && isStatic(uiContainer) && !isFixed(self$$1)) {\n x -= uiContainer.scrollLeft;\n y -= uiContainer.scrollTop;\n }\n if (uiContainer) {\n x += 1;\n y += 1;\n }\n if (self$$1.state.get('rendered')) {\n self$$1.layoutRect({\n x: x,\n y: y\n }).repaint();\n } else {\n self$$1.settings.x = x;\n self$$1.settings.y = y;\n }\n self$$1.fire('move', {\n x: x,\n y: y\n });\n return self$$1;\n }\n };\n\n var global$10 = tinymce.util.Tools.resolve('tinymce.util.Class');\n\n var global$11 = tinymce.util.Tools.resolve('tinymce.util.EventDispatcher');\n\n var $_79d0aauqjkmcwsj9 = {\n parseBox: function (value) {\n var len;\n var radix = 10;\n if (!value) {\n return;\n }\n if (typeof value === 'number') {\n value = value || 0;\n return {\n top: value,\n left: value,\n bottom: value,\n right: value\n };\n }\n value = value.split(' ');\n len = value.length;\n if (len === 1) {\n value[1] = value[2] = value[3] = value[0];\n } else if (len === 2) {\n value[2] = value[0];\n value[3] = value[1];\n } else if (len === 3) {\n value[3] = value[1];\n }\n return {\n top: parseInt(value[0], radix) || 0,\n right: parseInt(value[1], radix) || 0,\n bottom: parseInt(value[2], radix) || 0,\n left: parseInt(value[3], radix) || 0\n };\n },\n measureBox: function (elm, prefix) {\n function getStyle(name) {\n var defaultView = elm.ownerDocument.defaultView;\n if (defaultView) {\n var computedStyle = defaultView.getComputedStyle(elm, null);\n if (computedStyle) {\n name = name.replace(/[A-Z]/g, function (a) {\n return '-' + a;\n });\n return computedStyle.getPropertyValue(name);\n } else {\n return null;\n }\n }\n return elm.currentStyle[name];\n }\n function getSide(name) {\n var val = parseFloat(getStyle(name));\n return isNaN(val) ? 0 : val;\n }\n return {\n top: getSide(prefix + 'TopWidth'),\n right: getSide(prefix + 'RightWidth'),\n bottom: getSide(prefix + 'BottomWidth'),\n left: getSide(prefix + 'LeftWidth')\n };\n }\n };\n\n function noop$1() {\n }\n function ClassList(onchange) {\n this.cls = [];\n this.cls._map = {};\n this.onchange = onchange || noop$1;\n this.prefix = '';\n }\n global$2.extend(ClassList.prototype, {\n add: function (cls) {\n if (cls && !this.contains(cls)) {\n this.cls._map[cls] = true;\n this.cls.push(cls);\n this._change();\n }\n return this;\n },\n remove: function (cls) {\n if (this.contains(cls)) {\n var i = void 0;\n for (i = 0; i < this.cls.length; i++) {\n if (this.cls[i] === cls) {\n break;\n }\n }\n this.cls.splice(i, 1);\n delete this.cls._map[cls];\n this._change();\n }\n return this;\n },\n toggle: function (cls, state) {\n var curState = this.contains(cls);\n if (curState !== state) {\n if (curState) {\n this.remove(cls);\n } else {\n this.add(cls);\n }\n this._change();\n }\n return this;\n },\n contains: function (cls) {\n return !!this.cls._map[cls];\n },\n _change: function () {\n delete this.clsValue;\n this.onchange.call(this);\n }\n });\n ClassList.prototype.toString = function () {\n var value;\n if (this.clsValue) {\n return this.clsValue;\n }\n value = '';\n for (var i = 0; i < this.cls.length; i++) {\n if (i > 0) {\n value += ' ';\n }\n value += this.prefix + this.cls[i];\n }\n return value;\n };\n\n function unique(array) {\n var uniqueItems = [];\n var i = array.length, item;\n while (i--) {\n item = array[i];\n if (!item.__checked) {\n uniqueItems.push(item);\n item.__checked = 1;\n }\n }\n i = uniqueItems.length;\n while (i--) {\n delete uniqueItems[i].__checked;\n }\n return uniqueItems;\n }\n var expression = /^([\\w\\\\*]+)?(?:#([\\w\\-\\\\]+))?(?:\\.([\\w\\\\\\.]+))?(?:\\[\\@?([\\w\\\\]+)([\\^\\$\\*!~]?=)([\\w\\\\]+)\\])?(?:\\:(.+))?/i;\n var chunker = /((?:\\((?:\\([^()]+\\)|[^()]+)+\\)|\\[(?:\\[[^\\[\\]]*\\]|['\"][^'\"]*['\"]|[^\\[\\]'\"]+)+\\]|\\\\.|[^ >+~,(\\[\\\\]+)+|[>+~])(\\s*,\\s*)?((?:.|\\r|\\n)*)/g;\n var whiteSpace = /^\\s*|\\s*$/g;\n var Collection;\n var Selector = global$10.extend({\n init: function (selector) {\n var match = this.match;\n function compileNameFilter(name) {\n if (name) {\n name = name.toLowerCase();\n return function (item) {\n return name === '*' || item.type === name;\n };\n }\n }\n function compileIdFilter(id) {\n if (id) {\n return function (item) {\n return item._name === id;\n };\n }\n }\n function compileClassesFilter(classes) {\n if (classes) {\n classes = classes.split('.');\n return function (item) {\n var i = classes.length;\n while (i--) {\n if (!item.classes.contains(classes[i])) {\n return false;\n }\n }\n return true;\n };\n }\n }\n function compileAttrFilter(name, cmp, check) {\n if (name) {\n return function (item) {\n var value = item[name] ? item[name]() : '';\n return !cmp ? !!check : cmp === '=' ? value === check : cmp === '*=' ? value.indexOf(check) >= 0 : cmp === '~=' ? (' ' + value + ' ').indexOf(' ' + check + ' ') >= 0 : cmp === '!=' ? value !== check : cmp === '^=' ? value.indexOf(check) === 0 : cmp === '$=' ? value.substr(value.length - check.length) === check : false;\n };\n }\n }\n function compilePsuedoFilter(name) {\n var notSelectors;\n if (name) {\n name = /(?:not\\((.+)\\))|(.+)/i.exec(name);\n if (!name[1]) {\n name = name[2];\n return function (item, index, length) {\n return name === 'first' ? index === 0 : name === 'last' ? index === length - 1 : name === 'even' ? index % 2 === 0 : name === 'odd' ? index % 2 === 1 : item[name] ? item[name]() : false;\n };\n }\n notSelectors = parseChunks(name[1], []);\n return function (item) {\n return !match(item, notSelectors);\n };\n }\n }\n function compile(selector, filters, direct) {\n var parts;\n function add(filter) {\n if (filter) {\n filters.push(filter);\n }\n }\n parts = expression.exec(selector.replace(whiteSpace, ''));\n add(compileNameFilter(parts[1]));\n add(compileIdFilter(parts[2]));\n add(compileClassesFilter(parts[3]));\n add(compileAttrFilter(parts[4], parts[5], parts[6]));\n add(compilePsuedoFilter(parts[7]));\n filters.pseudo = !!parts[7];\n filters.direct = direct;\n return filters;\n }\n function parseChunks(selector, selectors) {\n var parts = [];\n var extra, matches, i;\n do {\n chunker.exec('');\n matches = chunker.exec(selector);\n if (matches) {\n selector = matches[3];\n parts.push(matches[1]);\n if (matches[2]) {\n extra = matches[3];\n break;\n }\n }\n } while (matches);\n if (extra) {\n parseChunks(extra, selectors);\n }\n selector = [];\n for (i = 0; i < parts.length; i++) {\n if (parts[i] !== '>') {\n selector.push(compile(parts[i], [], parts[i - 1] === '>'));\n }\n }\n selectors.push(selector);\n return selectors;\n }\n this._selectors = parseChunks(selector, []);\n },\n match: function (control, selectors) {\n var i, l, si, sl, selector, fi, fl, filters, index, length, siblings, count, item;\n selectors = selectors || this._selectors;\n for (i = 0, l = selectors.length; i < l; i++) {\n selector = selectors[i];\n sl = selector.length;\n item = control;\n count = 0;\n for (si = sl - 1; si >= 0; si--) {\n filters = selector[si];\n while (item) {\n if (filters.pseudo) {\n siblings = item.parent().items();\n index = length = siblings.length;\n while (index--) {\n if (siblings[index] === item) {\n break;\n }\n }\n }\n for (fi = 0, fl = filters.length; fi < fl; fi++) {\n if (!filters[fi](item, index, length)) {\n fi = fl + 1;\n break;\n }\n }\n if (fi === fl) {\n count++;\n break;\n } else {\n if (si === sl - 1) {\n break;\n }\n }\n item = item.parent();\n }\n }\n if (count === sl) {\n return true;\n }\n }\n return false;\n },\n find: function (container) {\n var matches = [], i, l;\n var selectors = this._selectors;\n function collect(items, selector, index) {\n var i, l, fi, fl, item;\n var filters = selector[index];\n for (i = 0, l = items.length; i < l; i++) {\n item = items[i];\n for (fi = 0, fl = filters.length; fi < fl; fi++) {\n if (!filters[fi](item, i, l)) {\n fi = fl + 1;\n break;\n }\n }\n if (fi === fl) {\n if (index === selector.length - 1) {\n matches.push(item);\n } else {\n if (item.items) {\n collect(item.items(), selector, index + 1);\n }\n }\n } else if (filters.direct) {\n return;\n }\n if (item.items) {\n collect(item.items(), selector, index);\n }\n }\n }\n if (container.items) {\n for (i = 0, l = selectors.length; i < l; i++) {\n collect(container.items(), selectors[i], 0);\n }\n if (l > 1) {\n matches = unique(matches);\n }\n }\n if (!Collection) {\n Collection = Selector.Collection;\n }\n return new Collection(matches);\n }\n });\n\n var Collection$1;\n var proto;\n var push$1 = Array.prototype.push;\n var slice$1 = Array.prototype.slice;\n proto = {\n length: 0,\n init: function (items) {\n if (items) {\n this.add(items);\n }\n },\n add: function (items) {\n var self = this;\n if (!global$2.isArray(items)) {\n if (items instanceof Collection$1) {\n self.add(items.toArray());\n } else {\n push$1.call(self, items);\n }\n } else {\n push$1.apply(self, items);\n }\n return self;\n },\n set: function (items) {\n var self = this;\n var len = self.length;\n var i;\n self.length = 0;\n self.add(items);\n for (i = self.length; i < len; i++) {\n delete self[i];\n }\n return self;\n },\n filter: function (selector) {\n var self = this;\n var i, l;\n var matches = [];\n var item, match;\n if (typeof selector === 'string') {\n selector = new Selector(selector);\n match = function (item) {\n return selector.match(item);\n };\n } else {\n match = selector;\n }\n for (i = 0, l = self.length; i < l; i++) {\n item = self[i];\n if (match(item)) {\n matches.push(item);\n }\n }\n return new Collection$1(matches);\n },\n slice: function () {\n return new Collection$1(slice$1.apply(this, arguments));\n },\n eq: function (index) {\n return index === -1 ? this.slice(index) : this.slice(index, +index + 1);\n },\n each: function (callback) {\n global$2.each(this, callback);\n return this;\n },\n toArray: function () {\n return global$2.toArray(this);\n },\n indexOf: function (ctrl) {\n var self = this;\n var i = self.length;\n while (i--) {\n if (self[i] === ctrl) {\n break;\n }\n }\n return i;\n },\n reverse: function () {\n return new Collection$1(global$2.toArray(this).reverse());\n },\n hasClass: function (cls) {\n return this[0] ? this[0].classes.contains(cls) : false;\n },\n prop: function (name, value) {\n var self = this;\n var item;\n if (value !== undefined) {\n self.each(function (item) {\n if (item[name]) {\n item[name](value);\n }\n });\n return self;\n }\n item = self[0];\n if (item && item[name]) {\n return item[name]();\n }\n },\n exec: function (name) {\n var self = this, args = global$2.toArray(arguments).slice(1);\n self.each(function (item) {\n if (item[name]) {\n item[name].apply(item, args);\n }\n });\n return self;\n },\n remove: function () {\n var i = this.length;\n while (i--) {\n this[i].remove();\n }\n return this;\n },\n addClass: function (cls) {\n return this.each(function (item) {\n item.classes.add(cls);\n });\n },\n removeClass: function (cls) {\n return this.each(function (item) {\n item.classes.remove(cls);\n });\n }\n };\n global$2.each('fire on off show hide append prepend before after reflow'.split(' '), function (name) {\n proto[name] = function () {\n var args = global$2.toArray(arguments);\n this.each(function (ctrl) {\n if (name in ctrl) {\n ctrl[name].apply(ctrl, args);\n }\n });\n return this;\n };\n });\n global$2.each('text name disabled active selected checked visible parent value data'.split(' '), function (name) {\n proto[name] = function (value) {\n return this.prop(name, value);\n };\n });\n Collection$1 = global$10.extend(proto);\n Selector.Collection = Collection$1;\n var Collection$2 = Collection$1;\n\n var Binding = function (settings) {\n this.create = settings.create;\n };\n Binding.create = function (model, name) {\n return new Binding({\n create: function (otherModel, otherName) {\n var bindings;\n var fromSelfToOther = function (e) {\n otherModel.set(otherName, e.value);\n };\n var fromOtherToSelf = function (e) {\n model.set(name, e.value);\n };\n otherModel.on('change:' + otherName, fromOtherToSelf);\n model.on('change:' + name, fromSelfToOther);\n bindings = otherModel._bindings;\n if (!bindings) {\n bindings = otherModel._bindings = [];\n otherModel.on('destroy', function () {\n var i = bindings.length;\n while (i--) {\n bindings[i]();\n }\n });\n }\n bindings.push(function () {\n model.off('change:' + name, fromSelfToOther);\n });\n return model.get(name);\n }\n });\n };\n\n var global$12 = tinymce.util.Tools.resolve('tinymce.util.Observable');\n\n function isNode(node) {\n return node.nodeType > 0;\n }\n function isEqual(a, b) {\n var k, checked;\n if (a === b) {\n return true;\n }\n if (a === null || b === null) {\n return a === b;\n }\n if (typeof a !== 'object' || typeof b !== 'object') {\n return a === b;\n }\n if (global$2.isArray(b)) {\n if (a.length !== b.length) {\n return false;\n }\n k = a.length;\n while (k--) {\n if (!isEqual(a[k], b[k])) {\n return false;\n }\n }\n }\n if (isNode(a) || isNode(b)) {\n return a === b;\n }\n checked = {};\n for (k in b) {\n if (!isEqual(a[k], b[k])) {\n return false;\n }\n checked[k] = true;\n }\n for (k in a) {\n if (!checked[k] && !isEqual(a[k], b[k])) {\n return false;\n }\n }\n return true;\n }\n var ObservableObject = global$10.extend({\n Mixins: [global$12],\n init: function (data) {\n var name, value;\n data = data || {};\n for (name in data) {\n value = data[name];\n if (value instanceof Binding) {\n data[name] = value.create(this, name);\n }\n }\n this.data = data;\n },\n set: function (name, value) {\n var key, args;\n var oldValue = this.data[name];\n if (value instanceof Binding) {\n value = value.create(this, name);\n }\n if (typeof name === 'object') {\n for (key in name) {\n this.set(key, name[key]);\n }\n return this;\n }\n if (!isEqual(oldValue, value)) {\n this.data[name] = value;\n args = {\n target: this,\n name: name,\n value: value,\n oldValue: oldValue\n };\n this.fire('change:' + name, args);\n this.fire('change', args);\n }\n return this;\n },\n get: function (name) {\n return this.data[name];\n },\n has: function (name) {\n return name in this.data;\n },\n bind: function (name) {\n return Binding.create(this, name);\n },\n destroy: function () {\n this.fire('destroy');\n }\n });\n\n var dirtyCtrls = {};\n var animationFrameRequested;\n var $_921m08uxjkmcwsk2 = {\n add: function (ctrl) {\n var parent$$1 = ctrl.parent();\n if (parent$$1) {\n if (!parent$$1._layout || parent$$1._layout.isNative()) {\n return;\n }\n if (!dirtyCtrls[parent$$1._id]) {\n dirtyCtrls[parent$$1._id] = parent$$1;\n }\n if (!animationFrameRequested) {\n animationFrameRequested = true;\n global$7.requestAnimationFrame(function () {\n var id, ctrl;\n animationFrameRequested = false;\n for (id in dirtyCtrls) {\n ctrl = dirtyCtrls[id];\n if (ctrl.state.get('rendered')) {\n ctrl.reflow();\n }\n }\n dirtyCtrls = {};\n }, document.body);\n }\n }\n },\n remove: function (ctrl) {\n if (dirtyCtrls[ctrl._id]) {\n delete dirtyCtrls[ctrl._id];\n }\n }\n };\n\n var hasMouseWheelEventSupport = 'onmousewheel' in document;\n var hasWheelEventSupport = false;\n var classPrefix = 'mce-';\n var Control;\n var idCounter = 0;\n var proto$1 = {\n Statics: { classPrefix: classPrefix },\n isRtl: function () {\n return Control.rtl;\n },\n classPrefix: classPrefix,\n init: function (settings) {\n var self$$1 = this;\n var classes, defaultClasses;\n function applyClasses(classes) {\n var i;\n classes = classes.split(' ');\n for (i = 0; i < classes.length; i++) {\n self$$1.classes.add(classes[i]);\n }\n }\n self$$1.settings = settings = global$2.extend({}, self$$1.Defaults, settings);\n self$$1._id = settings.id || 'mceu_' + idCounter++;\n self$$1._aria = { role: settings.role };\n self$$1._elmCache = {};\n self$$1.$ = global$9;\n self$$1.state = new ObservableObject({\n visible: true,\n active: false,\n disabled: false,\n value: ''\n });\n self$$1.data = new ObservableObject(settings.data);\n self$$1.classes = new ClassList(function () {\n if (self$$1.state.get('rendered')) {\n self$$1.getEl().className = this.toString();\n }\n });\n self$$1.classes.prefix = self$$1.classPrefix;\n classes = settings.classes;\n if (classes) {\n if (self$$1.Defaults) {\n defaultClasses = self$$1.Defaults.classes;\n if (defaultClasses && classes !== defaultClasses) {\n applyClasses(defaultClasses);\n }\n }\n applyClasses(classes);\n }\n global$2.each('title text name visible disabled active value'.split(' '), function (name$$1) {\n if (name$$1 in settings) {\n self$$1[name$$1](settings[name$$1]);\n }\n });\n self$$1.on('click', function () {\n if (self$$1.disabled()) {\n return false;\n }\n });\n self$$1.settings = settings;\n self$$1.borderBox = $_79d0aauqjkmcwsj9.parseBox(settings.border);\n self$$1.paddingBox = $_79d0aauqjkmcwsj9.parseBox(settings.padding);\n self$$1.marginBox = $_79d0aauqjkmcwsj9.parseBox(settings.margin);\n if (settings.hidden) {\n self$$1.hide();\n }\n },\n Properties: 'parent,name',\n getContainerElm: function () {\n var uiContainer = $_5kmlp5u4jkmcwsge.getUiContainer(this);\n return uiContainer ? uiContainer : funcs.getContainer();\n },\n getParentCtrl: function (elm) {\n var ctrl;\n var lookup = this.getRoot().controlIdLookup;\n while (elm && lookup) {\n ctrl = lookup[elm.id];\n if (ctrl) {\n break;\n }\n elm = elm.parentNode;\n }\n return ctrl;\n },\n initLayoutRect: function () {\n var self$$1 = this;\n var settings = self$$1.settings;\n var borderBox, layoutRect;\n var elm = self$$1.getEl();\n var width, height, minWidth, minHeight, autoResize;\n var startMinWidth, startMinHeight, initialSize;\n borderBox = self$$1.borderBox = self$$1.borderBox || $_79d0aauqjkmcwsj9.measureBox(elm, 'border');\n self$$1.paddingBox = self$$1.paddingBox || $_79d0aauqjkmcwsj9.measureBox(elm, 'padding');\n self$$1.marginBox = self$$1.marginBox || $_79d0aauqjkmcwsj9.measureBox(elm, 'margin');\n initialSize = funcs.getSize(elm);\n startMinWidth = settings.minWidth;\n startMinHeight = settings.minHeight;\n minWidth = startMinWidth || initialSize.width;\n minHeight = startMinHeight || initialSize.height;\n width = settings.width;\n height = settings.height;\n autoResize = settings.autoResize;\n autoResize = typeof autoResize !== 'undefined' ? autoResize : !width && !height;\n width = width || minWidth;\n height = height || minHeight;\n var deltaW = borderBox.left + borderBox.right;\n var deltaH = borderBox.top + borderBox.bottom;\n var maxW = settings.maxWidth || 65535;\n var maxH = settings.maxHeight || 65535;\n self$$1._layoutRect = layoutRect = {\n x: settings.x || 0,\n y: settings.y || 0,\n w: width,\n h: height,\n deltaW: deltaW,\n deltaH: deltaH,\n contentW: width - deltaW,\n contentH: height - deltaH,\n innerW: width - deltaW,\n innerH: height - deltaH,\n startMinWidth: startMinWidth || 0,\n startMinHeight: startMinHeight || 0,\n minW: Math.min(minWidth, maxW),\n minH: Math.min(minHeight, maxH),\n maxW: maxW,\n maxH: maxH,\n autoResize: autoResize,\n scrollW: 0\n };\n self$$1._lastLayoutRect = {};\n return layoutRect;\n },\n layoutRect: function (newRect) {\n var self$$1 = this;\n var curRect = self$$1._layoutRect, lastLayoutRect, size, deltaWidth, deltaHeight, repaintControls;\n if (!curRect) {\n curRect = self$$1.initLayoutRect();\n }\n if (newRect) {\n deltaWidth = curRect.deltaW;\n deltaHeight = curRect.deltaH;\n if (newRect.x !== undefined) {\n curRect.x = newRect.x;\n }\n if (newRect.y !== undefined) {\n curRect.y = newRect.y;\n }\n if (newRect.minW !== undefined) {\n curRect.minW = newRect.minW;\n }\n if (newRect.minH !== undefined) {\n curRect.minH = newRect.minH;\n }\n size = newRect.w;\n if (size !== undefined) {\n size = size < curRect.minW ? curRect.minW : size;\n size = size > curRect.maxW ? curRect.maxW : size;\n curRect.w = size;\n curRect.innerW = size - deltaWidth;\n }\n size = newRect.h;\n if (size !== undefined) {\n size = size < curRect.minH ? curRect.minH : size;\n size = size > curRect.maxH ? curRect.maxH : size;\n curRect.h = size;\n curRect.innerH = size - deltaHeight;\n }\n size = newRect.innerW;\n if (size !== undefined) {\n size = size < curRect.minW - deltaWidth ? curRect.minW - deltaWidth : size;\n size = size > curRect.maxW - deltaWidth ? curRect.maxW - deltaWidth : size;\n curRect.innerW = size;\n curRect.w = size + deltaWidth;\n }\n size = newRect.innerH;\n if (size !== undefined) {\n size = size < curRect.minH - deltaHeight ? curRect.minH - deltaHeight : size;\n size = size > curRect.maxH - deltaHeight ? curRect.maxH - deltaHeight : size;\n curRect.innerH = size;\n curRect.h = size + deltaHeight;\n }\n if (newRect.contentW !== undefined) {\n curRect.contentW = newRect.contentW;\n }\n if (newRect.contentH !== undefined) {\n curRect.contentH = newRect.contentH;\n }\n lastLayoutRect = self$$1._lastLayoutRect;\n if (lastLayoutRect.x !== curRect.x || lastLayoutRect.y !== curRect.y || lastLayoutRect.w !== curRect.w || lastLayoutRect.h !== curRect.h) {\n repaintControls = Control.repaintControls;\n if (repaintControls) {\n if (repaintControls.map && !repaintControls.map[self$$1._id]) {\n repaintControls.push(self$$1);\n repaintControls.map[self$$1._id] = true;\n }\n }\n lastLayoutRect.x = curRect.x;\n lastLayoutRect.y = curRect.y;\n lastLayoutRect.w = curRect.w;\n lastLayoutRect.h = curRect.h;\n }\n return self$$1;\n }\n return curRect;\n },\n repaint: function () {\n var self$$1 = this;\n var style, bodyStyle, bodyElm, rect, borderBox;\n var borderW, borderH, lastRepaintRect, round, value;\n round = !document.createRange ? Math.round : function (value) {\n return value;\n };\n style = self$$1.getEl().style;\n rect = self$$1._layoutRect;\n lastRepaintRect = self$$1._lastRepaintRect || {};\n borderBox = self$$1.borderBox;\n borderW = borderBox.left + borderBox.right;\n borderH = borderBox.top + borderBox.bottom;\n if (rect.x !== lastRepaintRect.x) {\n style.left = round(rect.x) + 'px';\n lastRepaintRect.x = rect.x;\n }\n if (rect.y !== lastRepaintRect.y) {\n style.top = round(rect.y) + 'px';\n lastRepaintRect.y = rect.y;\n }\n if (rect.w !== lastRepaintRect.w) {\n value = round(rect.w - borderW);\n style.width = (value >= 0 ? value : 0) + 'px';\n lastRepaintRect.w = rect.w;\n }\n if (rect.h !== lastRepaintRect.h) {\n value = round(rect.h - borderH);\n style.height = (value >= 0 ? value : 0) + 'px';\n lastRepaintRect.h = rect.h;\n }\n if (self$$1._hasBody && rect.innerW !== lastRepaintRect.innerW) {\n value = round(rect.innerW);\n bodyElm = self$$1.getEl('body');\n if (bodyElm) {\n bodyStyle = bodyElm.style;\n bodyStyle.width = (value >= 0 ? value : 0) + 'px';\n }\n lastRepaintRect.innerW = rect.innerW;\n }\n if (self$$1._hasBody && rect.innerH !== lastRepaintRect.innerH) {\n value = round(rect.innerH);\n bodyElm = bodyElm || self$$1.getEl('body');\n if (bodyElm) {\n bodyStyle = bodyStyle || bodyElm.style;\n bodyStyle.height = (value >= 0 ? value : 0) + 'px';\n }\n lastRepaintRect.innerH = rect.innerH;\n }\n self$$1._lastRepaintRect = lastRepaintRect;\n self$$1.fire('repaint', {}, false);\n },\n updateLayoutRect: function () {\n var self$$1 = this;\n self$$1.parent()._lastRect = null;\n funcs.css(self$$1.getEl(), {\n width: '',\n height: ''\n });\n self$$1._layoutRect = self$$1._lastRepaintRect = self$$1._lastLayoutRect = null;\n self$$1.initLayoutRect();\n },\n on: function (name$$1, callback) {\n var self$$1 = this;\n function resolveCallbackName(name$$1) {\n var callback, scope;\n if (typeof name$$1 !== 'string') {\n return name$$1;\n }\n return function (e) {\n if (!callback) {\n self$$1.parentsAndSelf().each(function (ctrl) {\n var callbacks = ctrl.settings.callbacks;\n if (callbacks && (callback = callbacks[name$$1])) {\n scope = ctrl;\n return false;\n }\n });\n }\n if (!callback) {\n e.action = name$$1;\n this.fire('execute', e);\n return;\n }\n return callback.call(scope, e);\n };\n }\n getEventDispatcher(self$$1).on(name$$1, resolveCallbackName(callback));\n return self$$1;\n },\n off: function (name$$1, callback) {\n getEventDispatcher(this).off(name$$1, callback);\n return this;\n },\n fire: function (name$$1, args, bubble) {\n var self$$1 = this;\n args = args || {};\n if (!args.control) {\n args.control = self$$1;\n }\n args = getEventDispatcher(self$$1).fire(name$$1, args);\n if (bubble !== false && self$$1.parent) {\n var parent$$1 = self$$1.parent();\n while (parent$$1 && !args.isPropagationStopped()) {\n parent$$1.fire(name$$1, args, false);\n parent$$1 = parent$$1.parent();\n }\n }\n return args;\n },\n hasEventListeners: function (name$$1) {\n return getEventDispatcher(this).has(name$$1);\n },\n parents: function (selector) {\n var self$$1 = this;\n var ctrl, parents = new Collection$2();\n for (ctrl = self$$1.parent(); ctrl; ctrl = ctrl.parent()) {\n parents.add(ctrl);\n }\n if (selector) {\n parents = parents.filter(selector);\n }\n return parents;\n },\n parentsAndSelf: function (selector) {\n return new Collection$2(this).add(this.parents(selector));\n },\n next: function () {\n var parentControls = this.parent().items();\n return parentControls[parentControls.indexOf(this) + 1];\n },\n prev: function () {\n var parentControls = this.parent().items();\n return parentControls[parentControls.indexOf(this) - 1];\n },\n innerHtml: function (html) {\n this.$el.html(html);\n return this;\n },\n getEl: function (suffix) {\n var id = suffix ? this._id + '-' + suffix : this._id;\n if (!this._elmCache[id]) {\n this._elmCache[id] = global$9('#' + id)[0];\n }\n return this._elmCache[id];\n },\n show: function () {\n return this.visible(true);\n },\n hide: function () {\n return this.visible(false);\n },\n focus: function () {\n try {\n this.getEl().focus();\n } catch (ex) {\n }\n return this;\n },\n blur: function () {\n this.getEl().blur();\n return this;\n },\n aria: function (name$$1, value) {\n var self$$1 = this, elm = self$$1.getEl(self$$1.ariaTarget);\n if (typeof value === 'undefined') {\n return self$$1._aria[name$$1];\n }\n self$$1._aria[name$$1] = value;\n if (self$$1.state.get('rendered')) {\n elm.setAttribute(name$$1 === 'role' ? name$$1 : 'aria-' + name$$1, value);\n }\n return self$$1;\n },\n encode: function (text, translate) {\n if (translate !== false) {\n text = this.translate(text);\n }\n return (text || '').replace(/[&<>\"]/g, function (match) {\n return '&#' + match.charCodeAt(0) + ';';\n });\n },\n translate: function (text) {\n return Control.translate ? Control.translate(text) : text;\n },\n before: function (items) {\n var self$$1 = this, parent$$1 = self$$1.parent();\n if (parent$$1) {\n parent$$1.insert(items, parent$$1.items().indexOf(self$$1), true);\n }\n return self$$1;\n },\n after: function (items) {\n var self$$1 = this, parent$$1 = self$$1.parent();\n if (parent$$1) {\n parent$$1.insert(items, parent$$1.items().indexOf(self$$1));\n }\n return self$$1;\n },\n remove: function () {\n var self$$1 = this;\n var elm = self$$1.getEl();\n var parent$$1 = self$$1.parent();\n var newItems, i;\n if (self$$1.items) {\n var controls = self$$1.items().toArray();\n i = controls.length;\n while (i--) {\n controls[i].remove();\n }\n }\n if (parent$$1 && parent$$1.items) {\n newItems = [];\n parent$$1.items().each(function (item) {\n if (item !== self$$1) {\n newItems.push(item);\n }\n });\n parent$$1.items().set(newItems);\n parent$$1._lastRect = null;\n }\n if (self$$1._eventsRoot && self$$1._eventsRoot === self$$1) {\n global$9(elm).off();\n }\n var lookup = self$$1.getRoot().controlIdLookup;\n if (lookup) {\n delete lookup[self$$1._id];\n }\n if (elm && elm.parentNode) {\n elm.parentNode.removeChild(elm);\n }\n self$$1.state.set('rendered', false);\n self$$1.state.destroy();\n self$$1.fire('remove');\n return self$$1;\n },\n renderBefore: function (elm) {\n global$9(elm).before(this.renderHtml());\n this.postRender();\n return this;\n },\n renderTo: function (elm) {\n global$9(elm || this.getContainerElm()).append(this.renderHtml());\n this.postRender();\n return this;\n },\n preRender: function () {\n },\n render: function () {\n },\n renderHtml: function () {\n return '
    ';\n },\n postRender: function () {\n var self$$1 = this;\n var settings = self$$1.settings;\n var elm, box, parent$$1, name$$1, parentEventsRoot;\n self$$1.$el = global$9(self$$1.getEl());\n self$$1.state.set('rendered', true);\n for (name$$1 in settings) {\n if (name$$1.indexOf('on') === 0) {\n self$$1.on(name$$1.substr(2), settings[name$$1]);\n }\n }\n if (self$$1._eventsRoot) {\n for (parent$$1 = self$$1.parent(); !parentEventsRoot && parent$$1; parent$$1 = parent$$1.parent()) {\n parentEventsRoot = parent$$1._eventsRoot;\n }\n if (parentEventsRoot) {\n for (name$$1 in parentEventsRoot._nativeEvents) {\n self$$1._nativeEvents[name$$1] = true;\n }\n }\n }\n bindPendingEvents(self$$1);\n if (settings.style) {\n elm = self$$1.getEl();\n if (elm) {\n elm.setAttribute('style', settings.style);\n elm.style.cssText = settings.style;\n }\n }\n if (self$$1.settings.border) {\n box = self$$1.borderBox;\n self$$1.$el.css({\n 'border-top-width': box.top,\n 'border-right-width': box.right,\n 'border-bottom-width': box.bottom,\n 'border-left-width': box.left\n });\n }\n var root = self$$1.getRoot();\n if (!root.controlIdLookup) {\n root.controlIdLookup = {};\n }\n root.controlIdLookup[self$$1._id] = self$$1;\n for (var key in self$$1._aria) {\n self$$1.aria(key, self$$1._aria[key]);\n }\n if (self$$1.state.get('visible') === false) {\n self$$1.getEl().style.display = 'none';\n }\n self$$1.bindStates();\n self$$1.state.on('change:visible', function (e) {\n var state = e.value;\n var parentCtrl;\n if (self$$1.state.get('rendered')) {\n self$$1.getEl().style.display = state === false ? 'none' : '';\n self$$1.getEl().getBoundingClientRect();\n }\n parentCtrl = self$$1.parent();\n if (parentCtrl) {\n parentCtrl._lastRect = null;\n }\n self$$1.fire(state ? 'show' : 'hide');\n $_921m08uxjkmcwsk2.add(self$$1);\n });\n self$$1.fire('postrender', {}, false);\n },\n bindStates: function () {\n },\n scrollIntoView: function (align) {\n function getOffset(elm, rootElm) {\n var x, y, parent$$1 = elm;\n x = y = 0;\n while (parent$$1 && parent$$1 !== rootElm && parent$$1.nodeType) {\n x += parent$$1.offsetLeft || 0;\n y += parent$$1.offsetTop || 0;\n parent$$1 = parent$$1.offsetParent;\n }\n return {\n x: x,\n y: y\n };\n }\n var elm = this.getEl(), parentElm = elm.parentNode;\n var x, y, width, height, parentWidth, parentHeight;\n var pos = getOffset(elm, parentElm);\n x = pos.x;\n y = pos.y;\n width = elm.offsetWidth;\n height = elm.offsetHeight;\n parentWidth = parentElm.clientWidth;\n parentHeight = parentElm.clientHeight;\n if (align === 'end') {\n x -= parentWidth - width;\n y -= parentHeight - height;\n } else if (align === 'center') {\n x -= parentWidth / 2 - width / 2;\n y -= parentHeight / 2 - height / 2;\n }\n parentElm.scrollLeft = x;\n parentElm.scrollTop = y;\n return this;\n },\n getRoot: function () {\n var ctrl = this, rootControl;\n var parents = [];\n while (ctrl) {\n if (ctrl.rootControl) {\n rootControl = ctrl.rootControl;\n break;\n }\n parents.push(ctrl);\n rootControl = ctrl;\n ctrl = ctrl.parent();\n }\n if (!rootControl) {\n rootControl = this;\n }\n var i = parents.length;\n while (i--) {\n parents[i].rootControl = rootControl;\n }\n return rootControl;\n },\n reflow: function () {\n $_921m08uxjkmcwsk2.remove(this);\n var parent$$1 = this.parent();\n if (parent$$1 && parent$$1._layout && !parent$$1._layout.isNative()) {\n parent$$1.reflow();\n }\n return this;\n }\n };\n global$2.each('text title visible disabled active value'.split(' '), function (name$$1) {\n proto$1[name$$1] = function (value) {\n if (arguments.length === 0) {\n return this.state.get(name$$1);\n }\n if (typeof value !== 'undefined') {\n this.state.set(name$$1, value);\n }\n return this;\n };\n });\n Control = global$10.extend(proto$1);\n function getEventDispatcher(obj) {\n if (!obj._eventDispatcher) {\n obj._eventDispatcher = new global$11({\n scope: obj,\n toggleEvent: function (name$$1, state) {\n if (state && global$11.isNative(name$$1)) {\n if (!obj._nativeEvents) {\n obj._nativeEvents = {};\n }\n obj._nativeEvents[name$$1] = true;\n if (obj.state.get('rendered')) {\n bindPendingEvents(obj);\n }\n }\n }\n });\n }\n return obj._eventDispatcher;\n }\n function bindPendingEvents(eventCtrl) {\n var i, l, parents, eventRootCtrl, nativeEvents, name$$1;\n function delegate(e) {\n var control = eventCtrl.getParentCtrl(e.target);\n if (control) {\n control.fire(e.type, e);\n }\n }\n function mouseLeaveHandler() {\n var ctrl = eventRootCtrl._lastHoverCtrl;\n if (ctrl) {\n ctrl.fire('mouseleave', { target: ctrl.getEl() });\n ctrl.parents().each(function (ctrl) {\n ctrl.fire('mouseleave', { target: ctrl.getEl() });\n });\n eventRootCtrl._lastHoverCtrl = null;\n }\n }\n function mouseEnterHandler(e) {\n var ctrl = eventCtrl.getParentCtrl(e.target), lastCtrl = eventRootCtrl._lastHoverCtrl, idx = 0, i, parents, lastParents;\n if (ctrl !== lastCtrl) {\n eventRootCtrl._lastHoverCtrl = ctrl;\n parents = ctrl.parents().toArray().reverse();\n parents.push(ctrl);\n if (lastCtrl) {\n lastParents = lastCtrl.parents().toArray().reverse();\n lastParents.push(lastCtrl);\n for (idx = 0; idx < lastParents.length; idx++) {\n if (parents[idx] !== lastParents[idx]) {\n break;\n }\n }\n for (i = lastParents.length - 1; i >= idx; i--) {\n lastCtrl = lastParents[i];\n lastCtrl.fire('mouseleave', { target: lastCtrl.getEl() });\n }\n }\n for (i = idx; i < parents.length; i++) {\n ctrl = parents[i];\n ctrl.fire('mouseenter', { target: ctrl.getEl() });\n }\n }\n }\n function fixWheelEvent(e) {\n e.preventDefault();\n if (e.type === 'mousewheel') {\n e.deltaY = -1 / 40 * e.wheelDelta;\n if (e.wheelDeltaX) {\n e.deltaX = -1 / 40 * e.wheelDeltaX;\n }\n } else {\n e.deltaX = 0;\n e.deltaY = e.detail;\n }\n e = eventCtrl.fire('wheel', e);\n }\n nativeEvents = eventCtrl._nativeEvents;\n if (nativeEvents) {\n parents = eventCtrl.parents().toArray();\n parents.unshift(eventCtrl);\n for (i = 0, l = parents.length; !eventRootCtrl && i < l; i++) {\n eventRootCtrl = parents[i]._eventsRoot;\n }\n if (!eventRootCtrl) {\n eventRootCtrl = parents[parents.length - 1] || eventCtrl;\n }\n eventCtrl._eventsRoot = eventRootCtrl;\n for (l = i, i = 0; i < l; i++) {\n parents[i]._eventsRoot = eventRootCtrl;\n }\n var eventRootDelegates = eventRootCtrl._delegates;\n if (!eventRootDelegates) {\n eventRootDelegates = eventRootCtrl._delegates = {};\n }\n for (name$$1 in nativeEvents) {\n if (!nativeEvents) {\n return false;\n }\n if (name$$1 === 'wheel' && !hasWheelEventSupport) {\n if (hasMouseWheelEventSupport) {\n global$9(eventCtrl.getEl()).on('mousewheel', fixWheelEvent);\n } else {\n global$9(eventCtrl.getEl()).on('DOMMouseScroll', fixWheelEvent);\n }\n continue;\n }\n if (name$$1 === 'mouseenter' || name$$1 === 'mouseleave') {\n if (!eventRootCtrl._hasMouseEnter) {\n global$9(eventRootCtrl.getEl()).on('mouseleave', mouseLeaveHandler).on('mouseover', mouseEnterHandler);\n eventRootCtrl._hasMouseEnter = 1;\n }\n } else if (!eventRootDelegates[name$$1]) {\n global$9(eventRootCtrl.getEl()).on(name$$1, delegate);\n eventRootDelegates[name$$1] = true;\n }\n nativeEvents[name$$1] = false;\n }\n }\n }\n var Control$1 = Control;\n\n var hasTabstopData = function (elm) {\n return elm.getAttribute('data-mce-tabstop') ? true : false;\n };\n function KeyboardNavigation (settings) {\n var root = settings.root;\n var focusedElement, focusedControl;\n function isElement(node) {\n return node && node.nodeType === 1;\n }\n try {\n focusedElement = document.activeElement;\n } catch (ex) {\n focusedElement = document.body;\n }\n focusedControl = root.getParentCtrl(focusedElement);\n function getRole(elm) {\n elm = elm || focusedElement;\n if (isElement(elm)) {\n return elm.getAttribute('role');\n }\n return null;\n }\n function getParentRole(elm) {\n var role, parent$$1 = elm || focusedElement;\n while (parent$$1 = parent$$1.parentNode) {\n if (role = getRole(parent$$1)) {\n return role;\n }\n }\n }\n function getAriaProp(name$$1) {\n var elm = focusedElement;\n if (isElement(elm)) {\n return elm.getAttribute('aria-' + name$$1);\n }\n }\n function isTextInputElement(elm) {\n var tagName = elm.tagName.toUpperCase();\n return tagName === 'INPUT' || tagName === 'TEXTAREA' || tagName === 'SELECT';\n }\n function canFocus(elm) {\n if (isTextInputElement(elm) && !elm.hidden) {\n return true;\n }\n if (hasTabstopData(elm)) {\n return true;\n }\n if (/^(button|menuitem|checkbox|tab|menuitemcheckbox|option|gridcell|slider)$/.test(getRole(elm))) {\n return true;\n }\n return false;\n }\n function getFocusElements(elm) {\n var elements = [];\n function collect(elm) {\n if (elm.nodeType !== 1 || elm.style.display === 'none' || elm.disabled) {\n return;\n }\n if (canFocus(elm)) {\n elements.push(elm);\n }\n for (var i = 0; i < elm.childNodes.length; i++) {\n collect(elm.childNodes[i]);\n }\n }\n collect(elm || root.getEl());\n return elements;\n }\n function getNavigationRoot(targetControl) {\n var navigationRoot, controls;\n targetControl = targetControl || focusedControl;\n controls = targetControl.parents().toArray();\n controls.unshift(targetControl);\n for (var i = 0; i < controls.length; i++) {\n navigationRoot = controls[i];\n if (navigationRoot.settings.ariaRoot) {\n break;\n }\n }\n return navigationRoot;\n }\n function focusFirst(targetControl) {\n var navigationRoot = getNavigationRoot(targetControl);\n var focusElements = getFocusElements(navigationRoot.getEl());\n if (navigationRoot.settings.ariaRemember && 'lastAriaIndex' in navigationRoot) {\n moveFocusToIndex(navigationRoot.lastAriaIndex, focusElements);\n } else {\n moveFocusToIndex(0, focusElements);\n }\n }\n function moveFocusToIndex(idx, elements) {\n if (idx < 0) {\n idx = elements.length - 1;\n } else if (idx >= elements.length) {\n idx = 0;\n }\n if (elements[idx]) {\n elements[idx].focus();\n }\n return idx;\n }\n function moveFocus(dir, elements) {\n var idx = -1;\n var navigationRoot = getNavigationRoot();\n elements = elements || getFocusElements(navigationRoot.getEl());\n for (var i = 0; i < elements.length; i++) {\n if (elements[i] === focusedElement) {\n idx = i;\n }\n }\n idx += dir;\n navigationRoot.lastAriaIndex = moveFocusToIndex(idx, elements);\n }\n function left() {\n var parentRole = getParentRole();\n if (parentRole === 'tablist') {\n moveFocus(-1, getFocusElements(focusedElement.parentNode));\n } else if (focusedControl.parent().submenu) {\n cancel();\n } else {\n moveFocus(-1);\n }\n }\n function right() {\n var role = getRole(), parentRole = getParentRole();\n if (parentRole === 'tablist') {\n moveFocus(1, getFocusElements(focusedElement.parentNode));\n } else if (role === 'menuitem' && parentRole === 'menu' && getAriaProp('haspopup')) {\n enter();\n } else {\n moveFocus(1);\n }\n }\n function up() {\n moveFocus(-1);\n }\n function down() {\n var role = getRole(), parentRole = getParentRole();\n if (role === 'menuitem' && parentRole === 'menubar') {\n enter();\n } else if (role === 'button' && getAriaProp('haspopup')) {\n enter({ key: 'down' });\n } else {\n moveFocus(1);\n }\n }\n function tab(e) {\n var parentRole = getParentRole();\n if (parentRole === 'tablist') {\n var elm = getFocusElements(focusedControl.getEl('body'))[0];\n if (elm) {\n elm.focus();\n }\n } else {\n moveFocus(e.shiftKey ? -1 : 1);\n }\n }\n function cancel() {\n focusedControl.fire('cancel');\n }\n function enter(aria) {\n aria = aria || {};\n focusedControl.fire('click', {\n target: focusedElement,\n aria: aria\n });\n }\n root.on('keydown', function (e) {\n function handleNonTabOrEscEvent(e, handler) {\n if (isTextInputElement(focusedElement) || hasTabstopData(focusedElement)) {\n return;\n }\n if (getRole(focusedElement) === 'slider') {\n return;\n }\n if (handler(e) !== false) {\n e.preventDefault();\n }\n }\n if (e.isDefaultPrevented()) {\n return;\n }\n switch (e.keyCode) {\n case 37:\n handleNonTabOrEscEvent(e, left);\n break;\n case 39:\n handleNonTabOrEscEvent(e, right);\n break;\n case 38:\n handleNonTabOrEscEvent(e, up);\n break;\n case 40:\n handleNonTabOrEscEvent(e, down);\n break;\n case 27:\n cancel();\n break;\n case 14:\n case 13:\n case 32:\n handleNonTabOrEscEvent(e, enter);\n break;\n case 9:\n tab(e);\n e.preventDefault();\n break;\n }\n });\n root.on('focusin', function (e) {\n focusedElement = e.target;\n focusedControl = e.control;\n });\n return { focusFirst: focusFirst };\n }\n\n var selectorCache = {};\n var Container = Control$1.extend({\n init: function (settings) {\n var self = this;\n self._super(settings);\n settings = self.settings;\n if (settings.fixed) {\n self.state.set('fixed', true);\n }\n self._items = new Collection$2();\n if (self.isRtl()) {\n self.classes.add('rtl');\n }\n self.bodyClasses = new ClassList(function () {\n if (self.state.get('rendered')) {\n self.getEl('body').className = this.toString();\n }\n });\n self.bodyClasses.prefix = self.classPrefix;\n self.classes.add('container');\n self.bodyClasses.add('container-body');\n if (settings.containerCls) {\n self.classes.add(settings.containerCls);\n }\n self._layout = global$4.create((settings.layout || '') + 'layout');\n if (self.settings.items) {\n self.add(self.settings.items);\n } else {\n self.add(self.render());\n }\n self._hasBody = true;\n },\n items: function () {\n return this._items;\n },\n find: function (selector) {\n selector = selectorCache[selector] = selectorCache[selector] || new Selector(selector);\n return selector.find(this);\n },\n add: function (items) {\n var self = this;\n self.items().add(self.create(items)).parent(self);\n return self;\n },\n focus: function (keyboard) {\n var self = this;\n var focusCtrl, keyboardNav, items;\n if (keyboard) {\n keyboardNav = self.keyboardNav || self.parents().eq(-1)[0].keyboardNav;\n if (keyboardNav) {\n keyboardNav.focusFirst(self);\n return;\n }\n }\n items = self.find('*');\n if (self.statusbar) {\n items.add(self.statusbar.items());\n }\n items.each(function (ctrl) {\n if (ctrl.settings.autofocus) {\n focusCtrl = null;\n return false;\n }\n if (ctrl.canFocus) {\n focusCtrl = focusCtrl || ctrl;\n }\n });\n if (focusCtrl) {\n focusCtrl.focus();\n }\n return self;\n },\n replace: function (oldItem, newItem) {\n var ctrlElm;\n var items = this.items();\n var i = items.length;\n while (i--) {\n if (items[i] === oldItem) {\n items[i] = newItem;\n break;\n }\n }\n if (i >= 0) {\n ctrlElm = newItem.getEl();\n if (ctrlElm) {\n ctrlElm.parentNode.removeChild(ctrlElm);\n }\n ctrlElm = oldItem.getEl();\n if (ctrlElm) {\n ctrlElm.parentNode.removeChild(ctrlElm);\n }\n }\n newItem.parent(this);\n },\n create: function (items) {\n var self = this;\n var settings;\n var ctrlItems = [];\n if (!global$2.isArray(items)) {\n items = [items];\n }\n global$2.each(items, function (item) {\n if (item) {\n if (!(item instanceof Control$1)) {\n if (typeof item === 'string') {\n item = { type: item };\n }\n settings = global$2.extend({}, self.settings.defaults, item);\n item.type = settings.type = settings.type || item.type || self.settings.defaultType || (settings.defaults ? settings.defaults.type : null);\n item = global$4.create(settings);\n }\n ctrlItems.push(item);\n }\n });\n return ctrlItems;\n },\n renderNew: function () {\n var self = this;\n self.items().each(function (ctrl, index) {\n var containerElm;\n ctrl.parent(self);\n if (!ctrl.state.get('rendered')) {\n containerElm = self.getEl('body');\n if (containerElm.hasChildNodes() && index <= containerElm.childNodes.length - 1) {\n global$9(containerElm.childNodes[index]).before(ctrl.renderHtml());\n } else {\n global$9(containerElm).append(ctrl.renderHtml());\n }\n ctrl.postRender();\n $_921m08uxjkmcwsk2.add(ctrl);\n }\n });\n self._layout.applyClasses(self.items().filter(':visible'));\n self._lastRect = null;\n return self;\n },\n append: function (items) {\n return this.add(items).renderNew();\n },\n prepend: function (items) {\n var self = this;\n self.items().set(self.create(items).concat(self.items().toArray()));\n return self.renderNew();\n },\n insert: function (items, index, before) {\n var self = this;\n var curItems, beforeItems, afterItems;\n items = self.create(items);\n curItems = self.items();\n if (!before && index < curItems.length - 1) {\n index += 1;\n }\n if (index >= 0 && index < curItems.length) {\n beforeItems = curItems.slice(0, index).toArray();\n afterItems = curItems.slice(index).toArray();\n curItems.set(beforeItems.concat(items, afterItems));\n }\n return self.renderNew();\n },\n fromJSON: function (data) {\n var self = this;\n for (var name in data) {\n self.find('#' + name).value(data[name]);\n }\n return self;\n },\n toJSON: function () {\n var self = this, data = {};\n self.find('*').each(function (ctrl) {\n var name = ctrl.name(), value = ctrl.value();\n if (name && typeof value !== 'undefined') {\n data[name] = value;\n }\n });\n return data;\n },\n renderHtml: function () {\n var self = this, layout = self._layout, role = this.settings.role;\n self.preRender();\n layout.preRender(self);\n return '
    ' + '
    ' + (self.settings.html || '') + layout.renderHtml(self) + '
    ' + '
    ';\n },\n postRender: function () {\n var self = this;\n var box;\n self.items().exec('postRender');\n self._super();\n self._layout.postRender(self);\n self.state.set('rendered', true);\n if (self.settings.style) {\n self.$el.css(self.settings.style);\n }\n if (self.settings.border) {\n box = self.borderBox;\n self.$el.css({\n 'border-top-width': box.top,\n 'border-right-width': box.right,\n 'border-bottom-width': box.bottom,\n 'border-left-width': box.left\n });\n }\n if (!self.parent()) {\n self.keyboardNav = KeyboardNavigation({ root: self });\n }\n return self;\n },\n initLayoutRect: function () {\n var self = this, layoutRect = self._super();\n self._layout.recalc(self);\n return layoutRect;\n },\n recalc: function () {\n var self = this;\n var rect = self._layoutRect;\n var lastRect = self._lastRect;\n if (!lastRect || lastRect.w !== rect.w || lastRect.h !== rect.h) {\n self._layout.recalc(self);\n rect = self.layoutRect();\n self._lastRect = {\n x: rect.x,\n y: rect.y,\n w: rect.w,\n h: rect.h\n };\n return true;\n }\n },\n reflow: function () {\n var i;\n $_921m08uxjkmcwsk2.remove(this);\n if (this.visible()) {\n Control$1.repaintControls = [];\n Control$1.repaintControls.map = {};\n this.recalc();\n i = Control$1.repaintControls.length;\n while (i--) {\n Control$1.repaintControls[i].repaint();\n }\n if (this.settings.layout !== 'flow' && this.settings.layout !== 'stack') {\n this.repaint();\n }\n Control$1.repaintControls = [];\n }\n return this;\n }\n });\n\n function getDocumentSize(doc) {\n var documentElement, body, scrollWidth, clientWidth;\n var offsetWidth, scrollHeight, clientHeight, offsetHeight;\n var max = Math.max;\n documentElement = doc.documentElement;\n body = doc.body;\n scrollWidth = max(documentElement.scrollWidth, body.scrollWidth);\n clientWidth = max(documentElement.clientWidth, body.clientWidth);\n offsetWidth = max(documentElement.offsetWidth, body.offsetWidth);\n scrollHeight = max(documentElement.scrollHeight, body.scrollHeight);\n clientHeight = max(documentElement.clientHeight, body.clientHeight);\n offsetHeight = max(documentElement.offsetHeight, body.offsetHeight);\n return {\n width: scrollWidth < offsetWidth ? clientWidth : scrollWidth,\n height: scrollHeight < offsetHeight ? clientHeight : scrollHeight\n };\n }\n function updateWithTouchData(e) {\n var keys, i;\n if (e.changedTouches) {\n keys = 'screenX screenY pageX pageY clientX clientY'.split(' ');\n for (i = 0; i < keys.length; i++) {\n e[keys[i]] = e.changedTouches[0][keys[i]];\n }\n }\n }\n function DragHelper (id, settings) {\n var $eventOverlay;\n var doc = settings.document || document;\n var downButton;\n var start, stop$$1, drag, startX, startY;\n settings = settings || {};\n var handleElement = doc.getElementById(settings.handle || id);\n start = function (e) {\n var docSize = getDocumentSize(doc);\n var handleElm, cursor;\n updateWithTouchData(e);\n e.preventDefault();\n downButton = e.button;\n handleElm = handleElement;\n startX = e.screenX;\n startY = e.screenY;\n if (window.getComputedStyle) {\n cursor = window.getComputedStyle(handleElm, null).getPropertyValue('cursor');\n } else {\n cursor = handleElm.runtimeStyle.cursor;\n }\n $eventOverlay = global$9('
    ').css({\n position: 'absolute',\n top: 0,\n left: 0,\n width: docSize.width,\n height: docSize.height,\n zIndex: 2147483647,\n opacity: 0.0001,\n cursor: cursor\n }).appendTo(doc.body);\n global$9(doc).on('mousemove touchmove', drag).on('mouseup touchend', stop$$1);\n settings.start(e);\n };\n drag = function (e) {\n updateWithTouchData(e);\n if (e.button !== downButton) {\n return stop$$1(e);\n }\n e.deltaX = e.screenX - startX;\n e.deltaY = e.screenY - startY;\n e.preventDefault();\n settings.drag(e);\n };\n stop$$1 = function (e) {\n updateWithTouchData(e);\n global$9(doc).off('mousemove touchmove', drag).off('mouseup touchend', stop$$1);\n $eventOverlay.remove();\n if (settings.stop) {\n settings.stop(e);\n }\n };\n this.destroy = function () {\n global$9(handleElement).off();\n };\n global$9(handleElement).on('mousedown touchstart', start);\n }\n\n var $_c9juz9uzjkmcwskb = {\n init: function () {\n var self = this;\n self.on('repaint', self.renderScroll);\n },\n renderScroll: function () {\n var self = this, margin = 2;\n function repaintScroll() {\n var hasScrollH, hasScrollV, bodyElm;\n function repaintAxis(axisName, posName, sizeName, contentSizeName, hasScroll, ax) {\n var containerElm, scrollBarElm, scrollThumbElm;\n var containerSize, scrollSize, ratio, rect;\n var posNameLower, sizeNameLower;\n scrollBarElm = self.getEl('scroll' + axisName);\n if (scrollBarElm) {\n posNameLower = posName.toLowerCase();\n sizeNameLower = sizeName.toLowerCase();\n global$9(self.getEl('absend')).css(posNameLower, self.layoutRect()[contentSizeName] - 1);\n if (!hasScroll) {\n global$9(scrollBarElm).css('display', 'none');\n return;\n }\n global$9(scrollBarElm).css('display', 'block');\n containerElm = self.getEl('body');\n scrollThumbElm = self.getEl('scroll' + axisName + 't');\n containerSize = containerElm['client' + sizeName] - margin * 2;\n containerSize -= hasScrollH && hasScrollV ? scrollBarElm['client' + ax] : 0;\n scrollSize = containerElm['scroll' + sizeName];\n ratio = containerSize / scrollSize;\n rect = {};\n rect[posNameLower] = containerElm['offset' + posName] + margin;\n rect[sizeNameLower] = containerSize;\n global$9(scrollBarElm).css(rect);\n rect = {};\n rect[posNameLower] = containerElm['scroll' + posName] * ratio;\n rect[sizeNameLower] = containerSize * ratio;\n global$9(scrollThumbElm).css(rect);\n }\n }\n bodyElm = self.getEl('body');\n hasScrollH = bodyElm.scrollWidth > bodyElm.clientWidth;\n hasScrollV = bodyElm.scrollHeight > bodyElm.clientHeight;\n repaintAxis('h', 'Left', 'Width', 'contentW', hasScrollH, 'Height');\n repaintAxis('v', 'Top', 'Height', 'contentH', hasScrollV, 'Width');\n }\n function addScroll() {\n function addScrollAxis(axisName, posName, sizeName, deltaPosName, ax) {\n var scrollStart;\n var axisId = self._id + '-scroll' + axisName, prefix = self.classPrefix;\n global$9(self.getEl()).append('
    ' + '
    ' + '
    ');\n self.draghelper = new DragHelper(axisId + 't', {\n start: function () {\n scrollStart = self.getEl('body')['scroll' + posName];\n global$9('#' + axisId).addClass(prefix + 'active');\n },\n drag: function (e) {\n var ratio, hasScrollH, hasScrollV, containerSize;\n var layoutRect = self.layoutRect();\n hasScrollH = layoutRect.contentW > layoutRect.innerW;\n hasScrollV = layoutRect.contentH > layoutRect.innerH;\n containerSize = self.getEl('body')['client' + sizeName] - margin * 2;\n containerSize -= hasScrollH && hasScrollV ? self.getEl('scroll' + axisName)['client' + ax] : 0;\n ratio = containerSize / self.getEl('body')['scroll' + sizeName];\n self.getEl('body')['scroll' + posName] = scrollStart + e['delta' + deltaPosName] / ratio;\n },\n stop: function () {\n global$9('#' + axisId).removeClass(prefix + 'active');\n }\n });\n }\n self.classes.add('scroll');\n addScrollAxis('v', 'Top', 'Height', 'Y', 'Width');\n addScrollAxis('h', 'Left', 'Width', 'X', 'Height');\n }\n if (self.settings.autoScroll) {\n if (!self._hasScroll) {\n self._hasScroll = true;\n addScroll();\n self.on('wheel', function (e) {\n var bodyEl = self.getEl('body');\n bodyEl.scrollLeft += (e.deltaX || 0) * 10;\n bodyEl.scrollTop += e.deltaY * 10;\n repaintScroll();\n });\n global$9(self.getEl('body')).on('scroll', repaintScroll);\n }\n repaintScroll();\n }\n }\n };\n\n var Panel = Container.extend({\n Defaults: {\n layout: 'fit',\n containerCls: 'panel'\n },\n Mixins: [$_c9juz9uzjkmcwskb],\n renderHtml: function () {\n var self = this;\n var layout = self._layout;\n var innerHtml = self.settings.html;\n self.preRender();\n layout.preRender(self);\n if (typeof innerHtml === 'undefined') {\n innerHtml = '
    ' + layout.renderHtml(self) + '
    ';\n } else {\n if (typeof innerHtml === 'function') {\n innerHtml = innerHtml.call(self);\n }\n self._hasBody = false;\n }\n return '
    ' + (self._preBodyHtml || '') + innerHtml + '
    ';\n }\n });\n\n var $_4ci2x6v1jkmcwski = {\n resizeToContent: function () {\n this._layoutRect.autoResize = true;\n this._lastRect = null;\n this.reflow();\n },\n resizeTo: function (w, h) {\n if (w <= 1 || h <= 1) {\n var rect = funcs.getWindowSize();\n w = w <= 1 ? w * rect.w : w;\n h = h <= 1 ? h * rect.h : h;\n }\n this._layoutRect.autoResize = false;\n return this.layoutRect({\n minW: w,\n minH: h,\n w: w,\n h: h\n }).reflow();\n },\n resizeBy: function (dw, dh) {\n var self = this, rect = self.layoutRect();\n return self.resizeTo(rect.w + dw, rect.h + dh);\n }\n };\n\n var documentClickHandler;\n var documentScrollHandler;\n var windowResizeHandler;\n var visiblePanels = [];\n var zOrder = [];\n var hasModal;\n function isChildOf(ctrl, parent$$1) {\n while (ctrl) {\n if (ctrl === parent$$1) {\n return true;\n }\n ctrl = ctrl.parent();\n }\n }\n function skipOrHidePanels(e) {\n var i = visiblePanels.length;\n while (i--) {\n var panel = visiblePanels[i], clickCtrl = panel.getParentCtrl(e.target);\n if (panel.settings.autohide) {\n if (clickCtrl) {\n if (isChildOf(clickCtrl, panel) || panel.parent() === clickCtrl) {\n continue;\n }\n }\n e = panel.fire('autohide', { target: e.target });\n if (!e.isDefaultPrevented()) {\n panel.hide();\n }\n }\n }\n }\n function bindDocumentClickHandler() {\n if (!documentClickHandler) {\n documentClickHandler = function (e) {\n if (e.button === 2) {\n return;\n }\n skipOrHidePanels(e);\n };\n global$9(document).on('click touchstart', documentClickHandler);\n }\n }\n function bindDocumentScrollHandler() {\n if (!documentScrollHandler) {\n documentScrollHandler = function () {\n var i;\n i = visiblePanels.length;\n while (i--) {\n repositionPanel(visiblePanels[i]);\n }\n };\n global$9(window).on('scroll', documentScrollHandler);\n }\n }\n function bindWindowResizeHandler() {\n if (!windowResizeHandler) {\n var docElm_1 = document.documentElement;\n var clientWidth_1 = docElm_1.clientWidth, clientHeight_1 = docElm_1.clientHeight;\n windowResizeHandler = function () {\n if (!document.all || clientWidth_1 !== docElm_1.clientWidth || clientHeight_1 !== docElm_1.clientHeight) {\n clientWidth_1 = docElm_1.clientWidth;\n clientHeight_1 = docElm_1.clientHeight;\n FloatPanel.hideAll();\n }\n };\n global$9(window).on('resize', windowResizeHandler);\n }\n }\n function repositionPanel(panel) {\n var scrollY$$1 = funcs.getViewPort().y;\n function toggleFixedChildPanels(fixed, deltaY) {\n var parent$$1;\n for (var i = 0; i < visiblePanels.length; i++) {\n if (visiblePanels[i] !== panel) {\n parent$$1 = visiblePanels[i].parent();\n while (parent$$1 && (parent$$1 = parent$$1.parent())) {\n if (parent$$1 === panel) {\n visiblePanels[i].fixed(fixed).moveBy(0, deltaY).repaint();\n }\n }\n }\n }\n }\n if (panel.settings.autofix) {\n if (!panel.state.get('fixed')) {\n panel._autoFixY = panel.layoutRect().y;\n if (panel._autoFixY < scrollY$$1) {\n panel.fixed(true).layoutRect({ y: 0 }).repaint();\n toggleFixedChildPanels(true, scrollY$$1 - panel._autoFixY);\n }\n } else {\n if (panel._autoFixY > scrollY$$1) {\n panel.fixed(false).layoutRect({ y: panel._autoFixY }).repaint();\n toggleFixedChildPanels(false, panel._autoFixY - scrollY$$1);\n }\n }\n }\n }\n function addRemove(add, ctrl) {\n var i, zIndex = FloatPanel.zIndex || 65535, topModal;\n if (add) {\n zOrder.push(ctrl);\n } else {\n i = zOrder.length;\n while (i--) {\n if (zOrder[i] === ctrl) {\n zOrder.splice(i, 1);\n }\n }\n }\n if (zOrder.length) {\n for (i = 0; i < zOrder.length; i++) {\n if (zOrder[i].modal) {\n zIndex++;\n topModal = zOrder[i];\n }\n zOrder[i].getEl().style.zIndex = zIndex;\n zOrder[i].zIndex = zIndex;\n zIndex++;\n }\n }\n var modalBlockEl = global$9('#' + ctrl.classPrefix + 'modal-block', ctrl.getContainerElm())[0];\n if (topModal) {\n global$9(modalBlockEl).css('z-index', topModal.zIndex - 1);\n } else if (modalBlockEl) {\n modalBlockEl.parentNode.removeChild(modalBlockEl);\n hasModal = false;\n }\n FloatPanel.currentZIndex = zIndex;\n }\n var FloatPanel = Panel.extend({\n Mixins: [\n $_77p0ikukjkmcwsie,\n $_4ci2x6v1jkmcwski\n ],\n init: function (settings) {\n var self$$1 = this;\n self$$1._super(settings);\n self$$1._eventsRoot = self$$1;\n self$$1.classes.add('floatpanel');\n if (settings.autohide) {\n bindDocumentClickHandler();\n bindWindowResizeHandler();\n visiblePanels.push(self$$1);\n }\n if (settings.autofix) {\n bindDocumentScrollHandler();\n self$$1.on('move', function () {\n repositionPanel(this);\n });\n }\n self$$1.on('postrender show', function (e) {\n if (e.control === self$$1) {\n var $modalBlockEl_1;\n var prefix_1 = self$$1.classPrefix;\n if (self$$1.modal && !hasModal) {\n $modalBlockEl_1 = global$9('#' + prefix_1 + 'modal-block', self$$1.getContainerElm());\n if (!$modalBlockEl_1[0]) {\n $modalBlockEl_1 = global$9('
    ').appendTo(self$$1.getContainerElm());\n }\n global$7.setTimeout(function () {\n $modalBlockEl_1.addClass(prefix_1 + 'in');\n global$9(self$$1.getEl()).addClass(prefix_1 + 'in');\n });\n hasModal = true;\n }\n addRemove(true, self$$1);\n }\n });\n self$$1.on('show', function () {\n self$$1.parents().each(function (ctrl) {\n if (ctrl.state.get('fixed')) {\n self$$1.fixed(true);\n return false;\n }\n });\n });\n if (settings.popover) {\n self$$1._preBodyHtml = '
    ';\n self$$1.classes.add('popover').add('bottom').add(self$$1.isRtl() ? 'end' : 'start');\n }\n self$$1.aria('label', settings.ariaLabel);\n self$$1.aria('labelledby', self$$1._id);\n self$$1.aria('describedby', self$$1.describedBy || self$$1._id + '-none');\n },\n fixed: function (state) {\n var self$$1 = this;\n if (self$$1.state.get('fixed') !== state) {\n if (self$$1.state.get('rendered')) {\n var viewport = funcs.getViewPort();\n if (state) {\n self$$1.layoutRect().y -= viewport.y;\n } else {\n self$$1.layoutRect().y += viewport.y;\n }\n }\n self$$1.classes.toggle('fixed', state);\n self$$1.state.set('fixed', state);\n }\n return self$$1;\n },\n show: function () {\n var self$$1 = this;\n var i;\n var state = self$$1._super();\n i = visiblePanels.length;\n while (i--) {\n if (visiblePanels[i] === self$$1) {\n break;\n }\n }\n if (i === -1) {\n visiblePanels.push(self$$1);\n }\n return state;\n },\n hide: function () {\n removeVisiblePanel(this);\n addRemove(false, this);\n return this._super();\n },\n hideAll: function () {\n FloatPanel.hideAll();\n },\n close: function () {\n var self$$1 = this;\n if (!self$$1.fire('close').isDefaultPrevented()) {\n self$$1.remove();\n addRemove(false, self$$1);\n }\n return self$$1;\n },\n remove: function () {\n removeVisiblePanel(this);\n this._super();\n },\n postRender: function () {\n var self$$1 = this;\n if (self$$1.settings.bodyRole) {\n this.getEl('body').setAttribute('role', self$$1.settings.bodyRole);\n }\n return self$$1._super();\n }\n });\n FloatPanel.hideAll = function () {\n var i = visiblePanels.length;\n while (i--) {\n var panel = visiblePanels[i];\n if (panel && panel.settings.autohide) {\n panel.hide();\n visiblePanels.splice(i, 1);\n }\n }\n };\n function removeVisiblePanel(panel) {\n var i;\n i = visiblePanels.length;\n while (i--) {\n if (visiblePanels[i] === panel) {\n visiblePanels.splice(i, 1);\n }\n }\n i = zOrder.length;\n while (i--) {\n if (zOrder[i] === panel) {\n zOrder.splice(i, 1);\n }\n }\n }\n\n var isFixed$1 = function (inlineToolbarContainer, editor) {\n return !!(inlineToolbarContainer && !editor.settings.ui_container);\n };\n var render$1 = function (editor, theme, args) {\n var panel, inlineToolbarContainer;\n var DOM = global$3.DOM;\n var fixedToolbarContainer = getFixedToolbarContainer(editor);\n if (fixedToolbarContainer) {\n inlineToolbarContainer = DOM.select(fixedToolbarContainer)[0];\n }\n var reposition = function () {\n if (panel && panel.moveRel && panel.visible() && !panel._fixed) {\n var scrollContainer = editor.selection.getScrollContainer(), body = editor.getBody();\n var deltaX = 0, deltaY = 0;\n if (scrollContainer) {\n var bodyPos = DOM.getPos(body), scrollContainerPos = DOM.getPos(scrollContainer);\n deltaX = Math.max(0, scrollContainerPos.x - bodyPos.x);\n deltaY = Math.max(0, scrollContainerPos.y - bodyPos.y);\n }\n panel.fixed(false).moveRel(body, editor.rtl ? [\n 'tr-br',\n 'br-tr'\n ] : [\n 'tl-bl',\n 'bl-tl',\n 'tr-br'\n ]).moveBy(deltaX, deltaY);\n }\n };\n var show = function () {\n if (panel) {\n panel.show();\n reposition();\n DOM.addClass(editor.getBody(), 'mce-edit-focus');\n }\n };\n var hide = function () {\n if (panel) {\n panel.hide();\n FloatPanel.hideAll();\n DOM.removeClass(editor.getBody(), 'mce-edit-focus');\n }\n };\n var render = function () {\n if (panel) {\n if (!panel.visible()) {\n show();\n }\n return;\n }\n panel = theme.panel = global$4.create({\n type: inlineToolbarContainer ? 'panel' : 'floatpanel',\n role: 'application',\n classes: 'tinymce tinymce-inline',\n layout: 'flex',\n direction: 'column',\n align: 'stretch',\n autohide: false,\n autofix: isFixed$1(inlineToolbarContainer, editor),\n fixed: isFixed$1(inlineToolbarContainer, editor),\n border: 1,\n items: [\n hasMenubar(editor) === false ? null : {\n type: 'menubar',\n border: '0 0 1 0',\n items: $_3ke8tlu8jkmcwsgq.createMenuButtons(editor)\n },\n $_5g1hacu7jkmcwsgn.createToolbars(editor, getToolbarSize(editor))\n ]\n });\n $_5kmlp5u4jkmcwsge.setUiContainer(editor, panel);\n $_1jkxpltzjkmcwsg4.fireBeforeRenderUI(editor);\n if (inlineToolbarContainer) {\n panel.renderTo(inlineToolbarContainer).reflow();\n } else {\n panel.renderTo().reflow();\n }\n $_1mdekmu0jkmcwsg5.addKeys(editor, panel);\n show();\n $_44ggy0u1jkmcwsg7.addContextualToolbars(editor);\n editor.on('nodeChange', reposition);\n editor.on('ResizeWindow', reposition);\n editor.on('activate', show);\n editor.on('deactivate', hide);\n editor.nodeChanged();\n };\n editor.settings.content_editable = true;\n editor.on('focus', function () {\n if (isSkinDisabled(editor) === false && args.skinUiCss) {\n DOM.styleSheetLoader.load(args.skinUiCss, render, render);\n } else {\n render();\n }\n });\n editor.on('blur hide', hide);\n editor.on('remove', function () {\n if (panel) {\n panel.remove();\n panel = null;\n }\n });\n if (isSkinDisabled(editor) === false && args.skinUiCss) {\n DOM.styleSheetLoader.load(args.skinUiCss, $_2tsyb2uejkmcwsha.fireSkinLoaded(editor));\n } else {\n $_2tsyb2uejkmcwsha.fireSkinLoaded(editor)();\n }\n return {};\n };\n var $_aqv3nuufjkmcwshc = { render: render$1 };\n\n function Throbber (elm, inline) {\n var self = this;\n var state;\n var classPrefix = Control$1.classPrefix;\n var timer;\n self.show = function (time, callback) {\n function render() {\n if (state) {\n global$9(elm).append('
    ');\n if (callback) {\n callback();\n }\n }\n }\n self.hide();\n state = true;\n if (time) {\n timer = global$7.setTimeout(render, time);\n } else {\n render();\n }\n return self;\n };\n self.hide = function () {\n var child = elm.lastChild;\n global$7.clearTimeout(timer);\n if (child && child.className.indexOf('throbber') !== -1) {\n child.parentNode.removeChild(child);\n }\n state = false;\n return self;\n };\n }\n\n var setup = function (editor, theme) {\n var throbber;\n editor.on('ProgressState', function (e) {\n throbber = throbber || new Throbber(theme.panel.getEl('body'));\n if (e.state) {\n throbber.show(e.time);\n } else {\n throbber.hide();\n }\n });\n };\n var $_575jhev2jkmcwskj = { setup: setup };\n\n var renderUI = function (editor, theme, args) {\n var skinUrl = getSkinUrl(editor);\n if (skinUrl) {\n args.skinUiCss = skinUrl + '/skin.min.css';\n editor.contentCSS.push(skinUrl + '/content' + (editor.inline ? '.inline' : '') + '.min.css');\n }\n $_575jhev2jkmcwskj.setup(editor, theme);\n return isInline(editor) ? $_aqv3nuufjkmcwshc.render(editor, theme, args) : $_9mz4sntvjkmcwsft.render(editor, theme, args);\n };\n var $_7k92xgtrjkmcwsfn = { renderUI: renderUI };\n\n var Tooltip = Control$1.extend({\n Mixins: [$_77p0ikukjkmcwsie],\n Defaults: { classes: 'widget tooltip tooltip-n' },\n renderHtml: function () {\n var self = this, prefix = self.classPrefix;\n return '
    ' + '
    ' + '
    ' + self.encode(self.state.get('text')) + '
    ' + '
    ';\n },\n bindStates: function () {\n var self = this;\n self.state.on('change:text', function (e) {\n self.getEl().lastChild.innerHTML = self.encode(e.value);\n });\n return self._super();\n },\n repaint: function () {\n var self = this;\n var style, rect;\n style = self.getEl().style;\n rect = self._layoutRect;\n style.left = rect.x + 'px';\n style.top = rect.y + 'px';\n style.zIndex = 65535 + 65535;\n }\n });\n\n var Widget = Control$1.extend({\n init: function (settings) {\n var self = this;\n self._super(settings);\n settings = self.settings;\n self.canFocus = true;\n if (settings.tooltip && Widget.tooltips !== false) {\n self.on('mouseenter', function (e) {\n var tooltip = self.tooltip().moveTo(-65535);\n if (e.control === self) {\n var rel = tooltip.text(settings.tooltip).show().testMoveRel(self.getEl(), [\n 'bc-tc',\n 'bc-tl',\n 'bc-tr'\n ]);\n tooltip.classes.toggle('tooltip-n', rel === 'bc-tc');\n tooltip.classes.toggle('tooltip-nw', rel === 'bc-tl');\n tooltip.classes.toggle('tooltip-ne', rel === 'bc-tr');\n tooltip.moveRel(self.getEl(), rel);\n } else {\n tooltip.hide();\n }\n });\n self.on('mouseleave mousedown click', function () {\n self.tooltip().remove();\n self._tooltip = null;\n });\n }\n self.aria('label', settings.ariaLabel || settings.tooltip);\n },\n tooltip: function () {\n if (!this._tooltip) {\n this._tooltip = new Tooltip({ type: 'tooltip' });\n $_5kmlp5u4jkmcwsge.inheritUiContainer(this, this._tooltip);\n this._tooltip.renderTo();\n }\n return this._tooltip;\n },\n postRender: function () {\n var self = this, settings = self.settings;\n self._super();\n if (!self.parent() && (settings.width || settings.height)) {\n self.initLayoutRect();\n self.repaint();\n }\n if (settings.autofocus) {\n self.focus();\n }\n },\n bindStates: function () {\n var self = this;\n function disable(state) {\n self.aria('disabled', state);\n self.classes.toggle('disabled', state);\n }\n function active(state) {\n self.aria('pressed', state);\n self.classes.toggle('active', state);\n }\n self.state.on('change:disabled', function (e) {\n disable(e.value);\n });\n self.state.on('change:active', function (e) {\n active(e.value);\n });\n if (self.state.get('disabled')) {\n disable(true);\n }\n if (self.state.get('active')) {\n active(true);\n }\n return self._super();\n },\n remove: function () {\n this._super();\n if (this._tooltip) {\n this._tooltip.remove();\n this._tooltip = null;\n }\n }\n });\n\n var Progress = Widget.extend({\n Defaults: { value: 0 },\n init: function (settings) {\n var self = this;\n self._super(settings);\n self.classes.add('progress');\n if (!self.settings.filter) {\n self.settings.filter = function (value) {\n return Math.round(value);\n };\n }\n },\n renderHtml: function () {\n var self = this, id = self._id, prefix = this.classPrefix;\n return '
    ' + '
    ' + '
    ' + '
    ' + '
    0%
    ' + '
    ';\n },\n postRender: function () {\n var self = this;\n self._super();\n self.value(self.settings.value);\n return self;\n },\n bindStates: function () {\n var self = this;\n function setValue(value) {\n value = self.settings.filter(value);\n self.getEl().lastChild.innerHTML = value + '%';\n self.getEl().firstChild.firstChild.style.width = value + '%';\n }\n self.state.on('change:value', function (e) {\n setValue(e.value);\n });\n setValue(self.state.get('value'));\n return self._super();\n }\n });\n\n var updateLiveRegion = function (ctx, text) {\n ctx.getEl().lastChild.textContent = text + (ctx.progressBar ? ' ' + ctx.progressBar.value() + '%' : '');\n };\n var Notification = Control$1.extend({\n Mixins: [$_77p0ikukjkmcwsie],\n Defaults: { classes: 'widget notification' },\n init: function (settings) {\n var self = this;\n self._super(settings);\n self.maxWidth = settings.maxWidth;\n if (settings.text) {\n self.text(settings.text);\n }\n if (settings.icon) {\n self.icon = settings.icon;\n }\n if (settings.color) {\n self.color = settings.color;\n }\n if (settings.type) {\n self.classes.add('notification-' + settings.type);\n }\n if (settings.timeout && (settings.timeout < 0 || settings.timeout > 0) && !settings.closeButton) {\n self.closeButton = false;\n } else {\n self.classes.add('has-close');\n self.closeButton = true;\n }\n if (settings.progressBar) {\n self.progressBar = new Progress();\n }\n self.on('click', function (e) {\n if (e.target.className.indexOf(self.classPrefix + 'close') !== -1) {\n self.close();\n }\n });\n },\n renderHtml: function () {\n var self = this;\n var prefix = self.classPrefix;\n var icon = '', closeButton = '', progressBar = '', notificationStyle = '';\n if (self.icon) {\n icon = '';\n }\n notificationStyle = ' style=\"max-width: ' + self.maxWidth + 'px;' + (self.color ? 'background-color: ' + self.color + ';\"' : '\"');\n if (self.closeButton) {\n closeButton = '';\n }\n if (self.progressBar) {\n progressBar = self.progressBar.renderHtml();\n }\n return '
    ' + icon + '
    ' + self.state.get('text') + '
    ' + progressBar + closeButton + '
    ' + '
    ';\n },\n postRender: function () {\n var self = this;\n global$7.setTimeout(function () {\n self.$el.addClass(self.classPrefix + 'in');\n updateLiveRegion(self, self.state.get('text'));\n }, 100);\n return self._super();\n },\n bindStates: function () {\n var self = this;\n self.state.on('change:text', function (e) {\n self.getEl().firstChild.innerHTML = e.value;\n updateLiveRegion(self, e.value);\n });\n if (self.progressBar) {\n self.progressBar.bindStates();\n self.progressBar.state.on('change:value', function (e) {\n updateLiveRegion(self, self.state.get('text'));\n });\n }\n return self._super();\n },\n close: function () {\n var self = this;\n if (!self.fire('close').isDefaultPrevented()) {\n self.remove();\n }\n return self;\n },\n repaint: function () {\n var self = this;\n var style, rect;\n style = self.getEl().style;\n rect = self._layoutRect;\n style.left = rect.x + 'px';\n style.top = rect.y + 'px';\n style.zIndex = 65535 - 1;\n }\n });\n\n function NotificationManagerImpl (editor) {\n var getEditorContainer = function (editor) {\n return editor.inline ? editor.getElement() : editor.getContentAreaContainer();\n };\n var getContainerWidth = function () {\n var container = getEditorContainer(editor);\n return funcs.getSize(container).width;\n };\n var prePositionNotifications = function (notifications) {\n each(notifications, function (notification) {\n notification.moveTo(0, 0);\n });\n };\n var positionNotifications = function (notifications) {\n if (notifications.length > 0) {\n var firstItem = notifications.slice(0, 1)[0];\n var container = getEditorContainer(editor);\n firstItem.moveRel(container, 'tc-tc');\n each(notifications, function (notification, index) {\n if (index > 0) {\n notification.moveRel(notifications[index - 1].getEl(), 'bc-tc');\n }\n });\n }\n };\n var reposition = function (notifications) {\n prePositionNotifications(notifications);\n positionNotifications(notifications);\n };\n var open = function (args, closeCallback) {\n var extendedArgs = global$2.extend(args, { maxWidth: getContainerWidth() });\n var notif = new Notification(extendedArgs);\n notif.args = extendedArgs;\n if (extendedArgs.timeout > 0) {\n notif.timer = setTimeout(function () {\n notif.close();\n closeCallback();\n }, extendedArgs.timeout);\n }\n notif.on('close', function () {\n closeCallback();\n });\n notif.renderTo();\n return notif;\n };\n var close = function (notification) {\n notification.close();\n };\n var getArgs = function (notification) {\n return notification.args;\n };\n return {\n open: open,\n close: close,\n reposition: reposition,\n getArgs: getArgs\n };\n }\n\n var windows = [];\n var oldMetaValue = '';\n function toggleFullScreenState(state) {\n var noScaleMetaValue = 'width=device-width,initial-scale=1.0,user-scalable=0,minimum-scale=1.0,maximum-scale=1.0';\n var viewport = global$9('meta[name=viewport]')[0], contentValue;\n if (global$8.overrideViewPort === false) {\n return;\n }\n if (!viewport) {\n viewport = document.createElement('meta');\n viewport.setAttribute('name', 'viewport');\n document.getElementsByTagName('head')[0].appendChild(viewport);\n }\n contentValue = viewport.getAttribute('content');\n if (contentValue && typeof oldMetaValue !== 'undefined') {\n oldMetaValue = contentValue;\n }\n viewport.setAttribute('content', state ? noScaleMetaValue : oldMetaValue);\n }\n function toggleBodyFullScreenClasses(classPrefix, state) {\n if (checkFullscreenWindows() && state === false) {\n global$9([\n document.documentElement,\n document.body\n ]).removeClass(classPrefix + 'fullscreen');\n }\n }\n function checkFullscreenWindows() {\n for (var i = 0; i < windows.length; i++) {\n if (windows[i]._fullscreen) {\n return true;\n }\n }\n return false;\n }\n function handleWindowResize() {\n if (!global$8.desktop) {\n var lastSize_1 = {\n w: window.innerWidth,\n h: window.innerHeight\n };\n global$7.setInterval(function () {\n var w = window.innerWidth, h = window.innerHeight;\n if (lastSize_1.w !== w || lastSize_1.h !== h) {\n lastSize_1 = {\n w: w,\n h: h\n };\n global$9(window).trigger('resize');\n }\n }, 100);\n }\n function reposition() {\n var i;\n var rect = funcs.getWindowSize();\n var layoutRect;\n for (i = 0; i < windows.length; i++) {\n layoutRect = windows[i].layoutRect();\n windows[i].moveTo(windows[i].settings.x || Math.max(0, rect.w / 2 - layoutRect.w / 2), windows[i].settings.y || Math.max(0, rect.h / 2 - layoutRect.h / 2));\n }\n }\n global$9(window).on('resize', reposition);\n }\n var Window$$1 = FloatPanel.extend({\n modal: true,\n Defaults: {\n border: 1,\n layout: 'flex',\n containerCls: 'panel',\n role: 'dialog',\n callbacks: {\n submit: function () {\n this.fire('submit', { data: this.toJSON() });\n },\n close: function () {\n this.close();\n }\n }\n },\n init: function (settings) {\n var self$$1 = this;\n self$$1._super(settings);\n if (self$$1.isRtl()) {\n self$$1.classes.add('rtl');\n }\n self$$1.classes.add('window');\n self$$1.bodyClasses.add('window-body');\n self$$1.state.set('fixed', true);\n if (settings.buttons) {\n self$$1.statusbar = new Panel({\n layout: 'flex',\n border: '1 0 0 0',\n spacing: 3,\n padding: 10,\n align: 'center',\n pack: self$$1.isRtl() ? 'start' : 'end',\n defaults: { type: 'button' },\n items: settings.buttons\n });\n self$$1.statusbar.classes.add('foot');\n self$$1.statusbar.parent(self$$1);\n }\n self$$1.on('click', function (e) {\n var closeClass = self$$1.classPrefix + 'close';\n if (funcs.hasClass(e.target, closeClass) || funcs.hasClass(e.target.parentNode, closeClass)) {\n self$$1.close();\n }\n });\n self$$1.on('cancel', function () {\n self$$1.close();\n });\n self$$1.on('move', function (e) {\n if (e.control === self$$1) {\n FloatPanel.hideAll();\n }\n });\n self$$1.aria('describedby', self$$1.describedBy || self$$1._id + '-none');\n self$$1.aria('label', settings.title);\n self$$1._fullscreen = false;\n },\n recalc: function () {\n var self$$1 = this;\n var statusbar$$1 = self$$1.statusbar;\n var layoutRect, width, x, needsRecalc;\n if (self$$1._fullscreen) {\n self$$1.layoutRect(funcs.getWindowSize());\n self$$1.layoutRect().contentH = self$$1.layoutRect().innerH;\n }\n self$$1._super();\n layoutRect = self$$1.layoutRect();\n if (self$$1.settings.title && !self$$1._fullscreen) {\n width = layoutRect.headerW;\n if (width > layoutRect.w) {\n x = layoutRect.x - Math.max(0, width / 2);\n self$$1.layoutRect({\n w: width,\n x: x\n });\n needsRecalc = true;\n }\n }\n if (statusbar$$1) {\n statusbar$$1.layoutRect({ w: self$$1.layoutRect().innerW }).recalc();\n width = statusbar$$1.layoutRect().minW + layoutRect.deltaW;\n if (width > layoutRect.w) {\n x = layoutRect.x - Math.max(0, width - layoutRect.w);\n self$$1.layoutRect({\n w: width,\n x: x\n });\n needsRecalc = true;\n }\n }\n if (needsRecalc) {\n self$$1.recalc();\n }\n },\n initLayoutRect: function () {\n var self$$1 = this;\n var layoutRect = self$$1._super();\n var deltaH = 0, headEl;\n if (self$$1.settings.title && !self$$1._fullscreen) {\n headEl = self$$1.getEl('head');\n var size = funcs.getSize(headEl);\n layoutRect.headerW = size.width;\n layoutRect.headerH = size.height;\n deltaH += layoutRect.headerH;\n }\n if (self$$1.statusbar) {\n deltaH += self$$1.statusbar.layoutRect().h;\n }\n layoutRect.deltaH += deltaH;\n layoutRect.minH += deltaH;\n layoutRect.h += deltaH;\n var rect = funcs.getWindowSize();\n layoutRect.x = self$$1.settings.x || Math.max(0, rect.w / 2 - layoutRect.w / 2);\n layoutRect.y = self$$1.settings.y || Math.max(0, rect.h / 2 - layoutRect.h / 2);\n return layoutRect;\n },\n renderHtml: function () {\n var self$$1 = this, layout = self$$1._layout, id = self$$1._id, prefix = self$$1.classPrefix;\n var settings = self$$1.settings;\n var headerHtml = '', footerHtml = '', html = settings.html;\n self$$1.preRender();\n layout.preRender(self$$1);\n if (settings.title) {\n headerHtml = '
    ' + '
    ' + self$$1.encode(settings.title) + '
    ' + '
    ' + '' + '
    ';\n }\n if (settings.url) {\n html = '';\n }\n if (typeof html === 'undefined') {\n html = layout.renderHtml(self$$1);\n }\n if (self$$1.statusbar) {\n footerHtml = self$$1.statusbar.renderHtml();\n }\n return '
    ' + '
    ' + headerHtml + '
    ' + html + '
    ' + footerHtml + '
    ' + '
    ';\n },\n fullscreen: function (state) {\n var self$$1 = this;\n var documentElement = document.documentElement;\n var slowRendering;\n var prefix = self$$1.classPrefix;\n var layoutRect;\n if (state !== self$$1._fullscreen) {\n global$9(window).on('resize', function () {\n var time;\n if (self$$1._fullscreen) {\n if (!slowRendering) {\n time = new Date().getTime();\n var rect = funcs.getWindowSize();\n self$$1.moveTo(0, 0).resizeTo(rect.w, rect.h);\n if (new Date().getTime() - time > 50) {\n slowRendering = true;\n }\n } else {\n if (!self$$1._timer) {\n self$$1._timer = global$7.setTimeout(function () {\n var rect = funcs.getWindowSize();\n self$$1.moveTo(0, 0).resizeTo(rect.w, rect.h);\n self$$1._timer = 0;\n }, 50);\n }\n }\n }\n });\n layoutRect = self$$1.layoutRect();\n self$$1._fullscreen = state;\n if (!state) {\n self$$1.borderBox = $_79d0aauqjkmcwsj9.parseBox(self$$1.settings.border);\n self$$1.getEl('head').style.display = '';\n layoutRect.deltaH += layoutRect.headerH;\n global$9([\n documentElement,\n document.body\n ]).removeClass(prefix + 'fullscreen');\n self$$1.classes.remove('fullscreen');\n self$$1.moveTo(self$$1._initial.x, self$$1._initial.y).resizeTo(self$$1._initial.w, self$$1._initial.h);\n } else {\n self$$1._initial = {\n x: layoutRect.x,\n y: layoutRect.y,\n w: layoutRect.w,\n h: layoutRect.h\n };\n self$$1.borderBox = $_79d0aauqjkmcwsj9.parseBox('0');\n self$$1.getEl('head').style.display = 'none';\n layoutRect.deltaH -= layoutRect.headerH + 2;\n global$9([\n documentElement,\n document.body\n ]).addClass(prefix + 'fullscreen');\n self$$1.classes.add('fullscreen');\n var rect = funcs.getWindowSize();\n self$$1.moveTo(0, 0).resizeTo(rect.w, rect.h);\n }\n }\n return self$$1.reflow();\n },\n postRender: function () {\n var self$$1 = this;\n var startPos;\n setTimeout(function () {\n self$$1.classes.add('in');\n self$$1.fire('open');\n }, 0);\n self$$1._super();\n if (self$$1.statusbar) {\n self$$1.statusbar.postRender();\n }\n self$$1.focus();\n this.dragHelper = new DragHelper(self$$1._id + '-dragh', {\n start: function () {\n startPos = {\n x: self$$1.layoutRect().x,\n y: self$$1.layoutRect().y\n };\n },\n drag: function (e) {\n self$$1.moveTo(startPos.x + e.deltaX, startPos.y + e.deltaY);\n }\n });\n self$$1.on('submit', function (e) {\n if (!e.isDefaultPrevented()) {\n self$$1.close();\n }\n });\n windows.push(self$$1);\n toggleFullScreenState(true);\n },\n submit: function () {\n return this.fire('submit', { data: this.toJSON() });\n },\n remove: function () {\n var self$$1 = this;\n var i;\n self$$1.dragHelper.destroy();\n self$$1._super();\n if (self$$1.statusbar) {\n this.statusbar.remove();\n }\n toggleBodyFullScreenClasses(self$$1.classPrefix, false);\n i = windows.length;\n while (i--) {\n if (windows[i] === self$$1) {\n windows.splice(i, 1);\n }\n }\n toggleFullScreenState(windows.length > 0);\n },\n getContentWindow: function () {\n var ifr = this.getEl().getElementsByTagName('iframe')[0];\n return ifr ? ifr.contentWindow : null;\n }\n });\n handleWindowResize();\n\n var MessageBox = Window$$1.extend({\n init: function (settings) {\n settings = {\n border: 1,\n padding: 20,\n layout: 'flex',\n pack: 'center',\n align: 'center',\n containerCls: 'panel',\n autoScroll: true,\n buttons: {\n type: 'button',\n text: 'Ok',\n action: 'ok'\n },\n items: {\n type: 'label',\n multiline: true,\n maxWidth: 500,\n maxHeight: 200\n }\n };\n this._super(settings);\n },\n Statics: {\n OK: 1,\n OK_CANCEL: 2,\n YES_NO: 3,\n YES_NO_CANCEL: 4,\n msgBox: function (settings) {\n var buttons;\n var callback = settings.callback || function () {\n };\n function createButton(text, status$$1, primary) {\n return {\n type: 'button',\n text: text,\n subtype: primary ? 'primary' : '',\n onClick: function (e) {\n e.control.parents()[1].close();\n callback(status$$1);\n }\n };\n }\n switch (settings.buttons) {\n case MessageBox.OK_CANCEL:\n buttons = [\n createButton('Ok', true, true),\n createButton('Cancel', false)\n ];\n break;\n case MessageBox.YES_NO:\n case MessageBox.YES_NO_CANCEL:\n buttons = [\n createButton('Yes', 1, true),\n createButton('No', 0)\n ];\n if (settings.buttons === MessageBox.YES_NO_CANCEL) {\n buttons.push(createButton('Cancel', -1));\n }\n break;\n default:\n buttons = [createButton('Ok', true, true)];\n break;\n }\n return new Window$$1({\n padding: 20,\n x: settings.x,\n y: settings.y,\n minWidth: 300,\n minHeight: 100,\n layout: 'flex',\n pack: 'center',\n align: 'center',\n buttons: buttons,\n title: settings.title,\n role: 'alertdialog',\n items: {\n type: 'label',\n multiline: true,\n maxWidth: 500,\n maxHeight: 200,\n text: settings.text\n },\n onPostRender: function () {\n this.aria('describedby', this.items()[0]._id);\n },\n onClose: settings.onClose,\n onCancel: function () {\n callback(false);\n }\n }).renderTo(document.body).reflow();\n },\n alert: function (settings, callback) {\n if (typeof settings === 'string') {\n settings = { text: settings };\n }\n settings.callback = callback;\n return MessageBox.msgBox(settings);\n },\n confirm: function (settings, callback) {\n if (typeof settings === 'string') {\n settings = { text: settings };\n }\n settings.callback = callback;\n settings.buttons = MessageBox.OK_CANCEL;\n return MessageBox.msgBox(settings);\n }\n }\n });\n\n function WindowManagerImpl (editor) {\n var open$$1 = function (args, params, closeCallback) {\n var win;\n args.title = args.title || ' ';\n args.url = args.url || args.file;\n if (args.url) {\n args.width = parseInt(args.width || 320, 10);\n args.height = parseInt(args.height || 240, 10);\n }\n if (args.body) {\n args.items = {\n defaults: args.defaults,\n type: args.bodyType || 'form',\n items: args.body,\n data: args.data,\n callbacks: args.commands\n };\n }\n if (!args.url && !args.buttons) {\n args.buttons = [\n {\n text: 'Ok',\n subtype: 'primary',\n onclick: function () {\n win.find('form')[0].submit();\n }\n },\n {\n text: 'Cancel',\n onclick: function () {\n win.close();\n }\n }\n ];\n }\n win = new Window$$1(args);\n win.on('close', function () {\n closeCallback(win);\n });\n if (args.data) {\n win.on('postRender', function () {\n this.find('*').each(function (ctrl) {\n var name$$1 = ctrl.name();\n if (name$$1 in args.data) {\n ctrl.value(args.data[name$$1]);\n }\n });\n });\n }\n win.features = args || {};\n win.params = params || {};\n win = win.renderTo(document.body).reflow();\n return win;\n };\n var alert$$1 = function (message, choiceCallback, closeCallback) {\n var win;\n win = MessageBox.alert(message, function () {\n choiceCallback();\n });\n win.on('close', function () {\n closeCallback(win);\n });\n return win;\n };\n var confirm$$1 = function (message, choiceCallback, closeCallback) {\n var win;\n win = MessageBox.confirm(message, function (state) {\n choiceCallback(state);\n });\n win.on('close', function () {\n closeCallback(win);\n });\n return win;\n };\n var close$$1 = function (window$$1) {\n window$$1.close();\n };\n var getParams = function (window$$1) {\n return window$$1.params;\n };\n var setParams = function (window$$1, params) {\n window$$1.params = params;\n };\n return {\n open: open$$1,\n alert: alert$$1,\n confirm: confirm$$1,\n close: close$$1,\n getParams: getParams,\n setParams: setParams\n };\n }\n\n var get = function (editor) {\n var renderUI = function (args) {\n return $_7k92xgtrjkmcwsfn.renderUI(editor, this, args);\n };\n var resizeTo = function (w, h) {\n return $_focm2tubjkmcwsh5.resizeTo(editor, w, h);\n };\n var resizeBy = function (dw, dh) {\n return $_focm2tubjkmcwsh5.resizeBy(editor, dw, dh);\n };\n var getNotificationManagerImpl = function () {\n return NotificationManagerImpl(editor);\n };\n var getWindowManagerImpl = function () {\n return WindowManagerImpl(editor);\n };\n return {\n renderUI: renderUI,\n resizeTo: resizeTo,\n resizeBy: resizeBy,\n getNotificationManagerImpl: getNotificationManagerImpl,\n getWindowManagerImpl: getWindowManagerImpl\n };\n };\n var $_f0tepxtqjkmcwsfm = { get: get };\n\n var Layout = global$10.extend({\n Defaults: {\n firstControlClass: 'first',\n lastControlClass: 'last'\n },\n init: function (settings) {\n this.settings = global$2.extend({}, this.Defaults, settings);\n },\n preRender: function (container) {\n container.bodyClasses.add(this.settings.containerClass);\n },\n applyClasses: function (items) {\n var self = this;\n var settings = self.settings;\n var firstClass, lastClass, firstItem, lastItem;\n firstClass = settings.firstControlClass;\n lastClass = settings.lastControlClass;\n items.each(function (item) {\n item.classes.remove(firstClass).remove(lastClass).add(settings.controlClass);\n if (item.visible()) {\n if (!firstItem) {\n firstItem = item;\n }\n lastItem = item;\n }\n });\n if (firstItem) {\n firstItem.classes.add(firstClass);\n }\n if (lastItem) {\n lastItem.classes.add(lastClass);\n }\n },\n renderHtml: function (container) {\n var self = this;\n var html = '';\n self.applyClasses(container.items());\n container.items().each(function (item) {\n html += item.renderHtml();\n });\n return html;\n },\n recalc: function () {\n },\n postRender: function () {\n },\n isNative: function () {\n return false;\n }\n });\n\n var AbsoluteLayout = Layout.extend({\n Defaults: {\n containerClass: 'abs-layout',\n controlClass: 'abs-layout-item'\n },\n recalc: function (container) {\n container.items().filter(':visible').each(function (ctrl) {\n var settings = ctrl.settings;\n ctrl.layoutRect({\n x: settings.x,\n y: settings.y,\n w: settings.w,\n h: settings.h\n });\n if (ctrl.recalc) {\n ctrl.recalc();\n }\n });\n },\n renderHtml: function (container) {\n return '
    ' + this._super(container);\n }\n });\n\n var Button = Widget.extend({\n Defaults: {\n classes: 'widget btn',\n role: 'button'\n },\n init: function (settings) {\n var self$$1 = this;\n var size;\n self$$1._super(settings);\n settings = self$$1.settings;\n size = self$$1.settings.size;\n self$$1.on('click mousedown', function (e) {\n e.preventDefault();\n });\n self$$1.on('touchstart', function (e) {\n self$$1.fire('click', e);\n e.preventDefault();\n });\n if (settings.subtype) {\n self$$1.classes.add(settings.subtype);\n }\n if (size) {\n self$$1.classes.add('btn-' + size);\n }\n if (settings.icon) {\n self$$1.icon(settings.icon);\n }\n },\n icon: function (icon) {\n if (!arguments.length) {\n return this.state.get('icon');\n }\n this.state.set('icon', icon);\n return this;\n },\n repaint: function () {\n var btnElm = this.getEl().firstChild;\n var btnStyle;\n if (btnElm) {\n btnStyle = btnElm.style;\n btnStyle.width = btnStyle.height = '100%';\n }\n this._super();\n },\n renderHtml: function () {\n var self$$1 = this, id = self$$1._id, prefix = self$$1.classPrefix;\n var icon = self$$1.state.get('icon'), image;\n var text = self$$1.state.get('text');\n var textHtml = '';\n var ariaPressed;\n var settings = self$$1.settings;\n image = settings.image;\n if (image) {\n icon = 'none';\n if (typeof image !== 'string') {\n image = window.getSelection ? image[0] : image[1];\n }\n image = ' style=\"background-image: url(\\'' + image + '\\')\"';\n } else {\n image = '';\n }\n if (text) {\n self$$1.classes.add('btn-has-text');\n textHtml = '' + self$$1.encode(text) + '';\n }\n icon = icon ? prefix + 'ico ' + prefix + 'i-' + icon : '';\n ariaPressed = typeof settings.active === 'boolean' ? ' aria-pressed=\"' + settings.active + '\"' : '';\n return '
    ' + '' + '
    ';\n },\n bindStates: function () {\n var self$$1 = this, $ = self$$1.$, textCls = self$$1.classPrefix + 'txt';\n function setButtonText(text) {\n var $span = $('span.' + textCls, self$$1.getEl());\n if (text) {\n if (!$span[0]) {\n $('button:first', self$$1.getEl()).append('');\n $span = $('span.' + textCls, self$$1.getEl());\n }\n $span.html(self$$1.encode(text));\n } else {\n $span.remove();\n }\n self$$1.classes.toggle('btn-has-text', !!text);\n }\n self$$1.state.on('change:text', function (e) {\n setButtonText(e.value);\n });\n self$$1.state.on('change:icon', function (e) {\n var icon = e.value;\n var prefix = self$$1.classPrefix;\n self$$1.settings.icon = icon;\n icon = icon ? prefix + 'ico ' + prefix + 'i-' + self$$1.settings.icon : '';\n var btnElm = self$$1.getEl().firstChild;\n var iconElm = btnElm.getElementsByTagName('i')[0];\n if (icon) {\n if (!iconElm || iconElm !== btnElm.firstChild) {\n iconElm = document.createElement('i');\n btnElm.insertBefore(iconElm, btnElm.firstChild);\n }\n iconElm.className = icon;\n } else if (iconElm) {\n btnElm.removeChild(iconElm);\n }\n setButtonText(self$$1.state.get('text'));\n });\n return self$$1._super();\n }\n });\n\n var BrowseButton = Button.extend({\n init: function (settings) {\n var self = this;\n settings = global$2.extend({\n text: 'Browse...',\n multiple: false,\n accept: null\n }, settings);\n self._super(settings);\n self.classes.add('browsebutton');\n if (settings.multiple) {\n self.classes.add('multiple');\n }\n },\n postRender: function () {\n var self = this;\n var input = funcs.create('input', {\n type: 'file',\n id: self._id + '-browse',\n accept: self.settings.accept\n });\n self._super();\n global$9(input).on('change', function (e) {\n var files = e.target.files;\n self.value = function () {\n if (!files.length) {\n return null;\n } else if (self.settings.multiple) {\n return files;\n } else {\n return files[0];\n }\n };\n e.preventDefault();\n if (files.length) {\n self.fire('change', e);\n }\n });\n global$9(input).on('click', function (e) {\n e.stopPropagation();\n });\n global$9(self.getEl('button')).on('click', function (e) {\n e.stopPropagation();\n input.click();\n });\n self.getEl().appendChild(input);\n },\n remove: function () {\n global$9(this.getEl('button')).off();\n global$9(this.getEl('input')).off();\n this._super();\n }\n });\n\n var ButtonGroup = Container.extend({\n Defaults: {\n defaultType: 'button',\n role: 'group'\n },\n renderHtml: function () {\n var self = this, layout = self._layout;\n self.classes.add('btn-group');\n self.preRender();\n layout.preRender(self);\n return '
    ' + '
    ' + (self.settings.html || '') + layout.renderHtml(self) + '
    ' + '
    ';\n }\n });\n\n var Checkbox = Widget.extend({\n Defaults: {\n classes: 'checkbox',\n role: 'checkbox',\n checked: false\n },\n init: function (settings) {\n var self$$1 = this;\n self$$1._super(settings);\n self$$1.on('click mousedown', function (e) {\n e.preventDefault();\n });\n self$$1.on('click', function (e) {\n e.preventDefault();\n if (!self$$1.disabled()) {\n self$$1.checked(!self$$1.checked());\n }\n });\n self$$1.checked(self$$1.settings.checked);\n },\n checked: function (state) {\n if (!arguments.length) {\n return this.state.get('checked');\n }\n this.state.set('checked', state);\n return this;\n },\n value: function (state) {\n if (!arguments.length) {\n return this.checked();\n }\n return this.checked(state);\n },\n renderHtml: function () {\n var self$$1 = this, id = self$$1._id, prefix = self$$1.classPrefix;\n return '
    ' + '' + '' + self$$1.encode(self$$1.state.get('text')) + '' + '
    ';\n },\n bindStates: function () {\n var self$$1 = this;\n function checked(state) {\n self$$1.classes.toggle('checked', state);\n self$$1.aria('checked', state);\n }\n self$$1.state.on('change:text', function (e) {\n self$$1.getEl('al').firstChild.data = self$$1.translate(e.value);\n });\n self$$1.state.on('change:checked change:value', function (e) {\n self$$1.fire('change');\n checked(e.value);\n });\n self$$1.state.on('change:icon', function (e) {\n var icon = e.value;\n var prefix = self$$1.classPrefix;\n if (typeof icon === 'undefined') {\n return self$$1.settings.icon;\n }\n self$$1.settings.icon = icon;\n icon = icon ? prefix + 'ico ' + prefix + 'i-' + self$$1.settings.icon : '';\n var btnElm = self$$1.getEl().firstChild;\n var iconElm = btnElm.getElementsByTagName('i')[0];\n if (icon) {\n if (!iconElm || iconElm !== btnElm.firstChild) {\n iconElm = document.createElement('i');\n btnElm.insertBefore(iconElm, btnElm.firstChild);\n }\n iconElm.className = icon;\n } else if (iconElm) {\n btnElm.removeChild(iconElm);\n }\n });\n if (self$$1.state.get('checked')) {\n checked(true);\n }\n return self$$1._super();\n }\n });\n\n var global$13 = tinymce.util.Tools.resolve('tinymce.util.VK');\n\n var ComboBox = Widget.extend({\n init: function (settings) {\n var self$$1 = this;\n self$$1._super(settings);\n settings = self$$1.settings;\n self$$1.classes.add('combobox');\n self$$1.subinput = true;\n self$$1.ariaTarget = 'inp';\n settings.menu = settings.menu || settings.values;\n if (settings.menu) {\n settings.icon = 'caret';\n }\n self$$1.on('click', function (e) {\n var elm = e.target;\n var root = self$$1.getEl();\n if (!global$9.contains(root, elm) && elm !== root) {\n return;\n }\n while (elm && elm !== root) {\n if (elm.id && elm.id.indexOf('-open') !== -1) {\n self$$1.fire('action');\n if (settings.menu) {\n self$$1.showMenu();\n if (e.aria) {\n self$$1.menu.items()[0].focus();\n }\n }\n }\n elm = elm.parentNode;\n }\n });\n self$$1.on('keydown', function (e) {\n var rootControl;\n if (e.keyCode === 13 && e.target.nodeName === 'INPUT') {\n e.preventDefault();\n self$$1.parents().reverse().each(function (ctrl) {\n if (ctrl.toJSON) {\n rootControl = ctrl;\n return false;\n }\n });\n self$$1.fire('submit', { data: rootControl.toJSON() });\n }\n });\n self$$1.on('keyup', function (e) {\n if (e.target.nodeName === 'INPUT') {\n var oldValue = self$$1.state.get('value');\n var newValue = e.target.value;\n if (newValue !== oldValue) {\n self$$1.state.set('value', newValue);\n self$$1.fire('autocomplete', e);\n }\n }\n });\n self$$1.on('mouseover', function (e) {\n var tooltip = self$$1.tooltip().moveTo(-65535);\n if (self$$1.statusLevel() && e.target.className.indexOf(self$$1.classPrefix + 'status') !== -1) {\n var statusMessage = self$$1.statusMessage() || 'Ok';\n var rel = tooltip.text(statusMessage).show().testMoveRel(e.target, [\n 'bc-tc',\n 'bc-tl',\n 'bc-tr'\n ]);\n tooltip.classes.toggle('tooltip-n', rel === 'bc-tc');\n tooltip.classes.toggle('tooltip-nw', rel === 'bc-tl');\n tooltip.classes.toggle('tooltip-ne', rel === 'bc-tr');\n tooltip.moveRel(e.target, rel);\n }\n });\n },\n statusLevel: function (value) {\n if (arguments.length > 0) {\n this.state.set('statusLevel', value);\n }\n return this.state.get('statusLevel');\n },\n statusMessage: function (value) {\n if (arguments.length > 0) {\n this.state.set('statusMessage', value);\n }\n return this.state.get('statusMessage');\n },\n showMenu: function () {\n var self$$1 = this;\n var settings = self$$1.settings;\n var menu;\n if (!self$$1.menu) {\n menu = settings.menu || [];\n if (menu.length) {\n menu = {\n type: 'menu',\n items: menu\n };\n } else {\n menu.type = menu.type || 'menu';\n }\n self$$1.menu = global$4.create(menu).parent(self$$1).renderTo(self$$1.getContainerElm());\n self$$1.fire('createmenu');\n self$$1.menu.reflow();\n self$$1.menu.on('cancel', function (e) {\n if (e.control === self$$1.menu) {\n self$$1.focus();\n }\n });\n self$$1.menu.on('show hide', function (e) {\n e.control.items().each(function (ctrl) {\n ctrl.active(ctrl.value() === self$$1.value());\n });\n }).fire('show');\n self$$1.menu.on('select', function (e) {\n self$$1.value(e.control.value());\n });\n self$$1.on('focusin', function (e) {\n if (e.target.tagName.toUpperCase() === 'INPUT') {\n self$$1.menu.hide();\n }\n });\n self$$1.aria('expanded', true);\n }\n self$$1.menu.show();\n self$$1.menu.layoutRect({ w: self$$1.layoutRect().w });\n self$$1.menu.moveRel(self$$1.getEl(), self$$1.isRtl() ? [\n 'br-tr',\n 'tr-br'\n ] : [\n 'bl-tl',\n 'tl-bl'\n ]);\n },\n focus: function () {\n this.getEl('inp').focus();\n },\n repaint: function () {\n var self$$1 = this, elm = self$$1.getEl(), openElm = self$$1.getEl('open'), rect = self$$1.layoutRect();\n var width, lineHeight, innerPadding = 0;\n var inputElm = elm.firstChild;\n if (self$$1.statusLevel() && self$$1.statusLevel() !== 'none') {\n innerPadding = parseInt(funcs.getRuntimeStyle(inputElm, 'padding-right'), 10) - parseInt(funcs.getRuntimeStyle(inputElm, 'padding-left'), 10);\n }\n if (openElm) {\n width = rect.w - funcs.getSize(openElm).width - 10;\n } else {\n width = rect.w - 10;\n }\n var doc = document;\n if (doc.all && (!doc.documentMode || doc.documentMode <= 8)) {\n lineHeight = self$$1.layoutRect().h - 2 + 'px';\n }\n global$9(inputElm).css({\n width: width - innerPadding,\n lineHeight: lineHeight\n });\n self$$1._super();\n return self$$1;\n },\n postRender: function () {\n var self$$1 = this;\n global$9(this.getEl('inp')).on('change', function (e) {\n self$$1.state.set('value', e.target.value);\n self$$1.fire('change', e);\n });\n return self$$1._super();\n },\n renderHtml: function () {\n var self$$1 = this, id = self$$1._id, settings = self$$1.settings, prefix = self$$1.classPrefix;\n var value = self$$1.state.get('value') || '';\n var icon, text, openBtnHtml = '', extraAttrs = '', statusHtml = '';\n if ('spellcheck' in settings) {\n extraAttrs += ' spellcheck=\"' + settings.spellcheck + '\"';\n }\n if (settings.maxLength) {\n extraAttrs += ' maxlength=\"' + settings.maxLength + '\"';\n }\n if (settings.size) {\n extraAttrs += ' size=\"' + settings.size + '\"';\n }\n if (settings.subtype) {\n extraAttrs += ' type=\"' + settings.subtype + '\"';\n }\n statusHtml = '';\n if (self$$1.disabled()) {\n extraAttrs += ' disabled=\"disabled\"';\n }\n icon = settings.icon;\n if (icon && icon !== 'caret') {\n icon = prefix + 'ico ' + prefix + 'i-' + settings.icon;\n }\n text = self$$1.state.get('text');\n if (icon || text) {\n openBtnHtml = '
    ' + '' + '
    ';\n self$$1.classes.add('has-open');\n }\n return '
    ' + '' + statusHtml + openBtnHtml + '
    ';\n },\n value: function (value) {\n if (arguments.length) {\n this.state.set('value', value);\n return this;\n }\n if (this.state.get('rendered')) {\n this.state.set('value', this.getEl('inp').value);\n }\n return this.state.get('value');\n },\n showAutoComplete: function (items, term) {\n var self$$1 = this;\n if (items.length === 0) {\n self$$1.hideMenu();\n return;\n }\n var insert = function (value, title) {\n return function () {\n self$$1.fire('selectitem', {\n title: title,\n value: value\n });\n };\n };\n if (self$$1.menu) {\n self$$1.menu.items().remove();\n } else {\n self$$1.menu = global$4.create({\n type: 'menu',\n classes: 'combobox-menu',\n layout: 'flow'\n }).parent(self$$1).renderTo();\n }\n global$2.each(items, function (item) {\n self$$1.menu.add({\n text: item.title,\n url: item.previewUrl,\n match: term,\n classes: 'menu-item-ellipsis',\n onclick: insert(item.value, item.title)\n });\n });\n self$$1.menu.renderNew();\n self$$1.hideMenu();\n self$$1.menu.on('cancel', function (e) {\n if (e.control.parent() === self$$1.menu) {\n e.stopPropagation();\n self$$1.focus();\n self$$1.hideMenu();\n }\n });\n self$$1.menu.on('select', function () {\n self$$1.focus();\n });\n var maxW = self$$1.layoutRect().w;\n self$$1.menu.layoutRect({\n w: maxW,\n minW: 0,\n maxW: maxW\n });\n self$$1.menu.repaint();\n self$$1.menu.reflow();\n self$$1.menu.show();\n self$$1.menu.moveRel(self$$1.getEl(), self$$1.isRtl() ? [\n 'br-tr',\n 'tr-br'\n ] : [\n 'bl-tl',\n 'tl-bl'\n ]);\n },\n hideMenu: function () {\n if (this.menu) {\n this.menu.hide();\n }\n },\n bindStates: function () {\n var self$$1 = this;\n self$$1.state.on('change:value', function (e) {\n if (self$$1.getEl('inp').value !== e.value) {\n self$$1.getEl('inp').value = e.value;\n }\n });\n self$$1.state.on('change:disabled', function (e) {\n self$$1.getEl('inp').disabled = e.value;\n });\n self$$1.state.on('change:statusLevel', function (e) {\n var statusIconElm = self$$1.getEl('status');\n var prefix = self$$1.classPrefix, value = e.value;\n funcs.css(statusIconElm, 'display', value === 'none' ? 'none' : '');\n funcs.toggleClass(statusIconElm, prefix + 'i-checkmark', value === 'ok');\n funcs.toggleClass(statusIconElm, prefix + 'i-warning', value === 'warn');\n funcs.toggleClass(statusIconElm, prefix + 'i-error', value === 'error');\n self$$1.classes.toggle('has-status', value !== 'none');\n self$$1.repaint();\n });\n funcs.on(self$$1.getEl('status'), 'mouseleave', function () {\n self$$1.tooltip().hide();\n });\n self$$1.on('cancel', function (e) {\n if (self$$1.menu && self$$1.menu.visible()) {\n e.stopPropagation();\n self$$1.hideMenu();\n }\n });\n var focusIdx = function (idx, menu) {\n if (menu && menu.items().length > 0) {\n menu.items().eq(idx)[0].focus();\n }\n };\n self$$1.on('keydown', function (e) {\n var keyCode = e.keyCode;\n if (e.target.nodeName === 'INPUT') {\n if (keyCode === global$13.DOWN) {\n e.preventDefault();\n self$$1.fire('autocomplete');\n focusIdx(0, self$$1.menu);\n } else if (keyCode === global$13.UP) {\n e.preventDefault();\n focusIdx(-1, self$$1.menu);\n }\n }\n });\n return self$$1._super();\n },\n remove: function () {\n global$9(this.getEl('inp')).off();\n if (this.menu) {\n this.menu.remove();\n }\n this._super();\n }\n });\n\n var ColorBox = ComboBox.extend({\n init: function (settings) {\n var self = this;\n settings.spellcheck = false;\n if (settings.onaction) {\n settings.icon = 'none';\n }\n self._super(settings);\n self.classes.add('colorbox');\n self.on('change keyup postrender', function () {\n self.repaintColor(self.value());\n });\n },\n repaintColor: function (value) {\n var openElm = this.getEl('open');\n var elm = openElm ? openElm.getElementsByTagName('i')[0] : null;\n if (elm) {\n try {\n elm.style.background = value;\n } catch (ex) {\n }\n }\n },\n bindStates: function () {\n var self = this;\n self.state.on('change:value', function (e) {\n if (self.state.get('rendered')) {\n self.repaintColor(e.value);\n }\n });\n return self._super();\n }\n });\n\n var PanelButton = Button.extend({\n showPanel: function () {\n var self = this, settings = self.settings;\n self.classes.add('opened');\n if (!self.panel) {\n var panelSettings = settings.panel;\n if (panelSettings.type) {\n panelSettings = {\n layout: 'grid',\n items: panelSettings\n };\n }\n panelSettings.role = panelSettings.role || 'dialog';\n panelSettings.popover = true;\n panelSettings.autohide = true;\n panelSettings.ariaRoot = true;\n self.panel = new FloatPanel(panelSettings).on('hide', function () {\n self.classes.remove('opened');\n }).on('cancel', function (e) {\n e.stopPropagation();\n self.focus();\n self.hidePanel();\n }).parent(self).renderTo(self.getContainerElm());\n self.panel.fire('show');\n self.panel.reflow();\n } else {\n self.panel.show();\n }\n var rtlRels = [\n 'bc-tc',\n 'bc-tl',\n 'bc-tr'\n ];\n var ltrRels = [\n 'bc-tc',\n 'bc-tr',\n 'bc-tl',\n 'tc-bc',\n 'tc-br',\n 'tc-bl'\n ];\n var rel = self.panel.testMoveRel(self.getEl(), settings.popoverAlign || (self.isRtl() ? rtlRels : ltrRels));\n self.panel.classes.toggle('start', rel.substr(-1) === 'l');\n self.panel.classes.toggle('end', rel.substr(-1) === 'r');\n var isTop = rel.substr(0, 1) === 't';\n self.panel.classes.toggle('bottom', !isTop);\n self.panel.classes.toggle('top', isTop);\n self.panel.moveRel(self.getEl(), rel);\n },\n hidePanel: function () {\n var self = this;\n if (self.panel) {\n self.panel.hide();\n }\n },\n postRender: function () {\n var self = this;\n self.aria('haspopup', true);\n self.on('click', function (e) {\n if (e.control === self) {\n if (self.panel && self.panel.visible()) {\n self.hidePanel();\n } else {\n self.showPanel();\n self.panel.focus(!!e.aria);\n }\n }\n });\n return self._super();\n },\n remove: function () {\n if (this.panel) {\n this.panel.remove();\n this.panel = null;\n }\n return this._super();\n }\n });\n\n var DOM$3 = global$3.DOM;\n var ColorButton = PanelButton.extend({\n init: function (settings) {\n this._super(settings);\n this.classes.add('splitbtn');\n this.classes.add('colorbutton');\n },\n color: function (color) {\n if (color) {\n this._color = color;\n this.getEl('preview').style.backgroundColor = color;\n return this;\n }\n return this._color;\n },\n resetColor: function () {\n this._color = null;\n this.getEl('preview').style.backgroundColor = null;\n return this;\n },\n renderHtml: function () {\n var self = this, id = self._id, prefix = self.classPrefix, text = self.state.get('text');\n var icon = self.settings.icon ? prefix + 'ico ' + prefix + 'i-' + self.settings.icon : '';\n var image = self.settings.image ? ' style=\"background-image: url(\\'' + self.settings.image + '\\')\"' : '';\n var textHtml = '';\n if (text) {\n self.classes.add('btn-has-text');\n textHtml = '' + self.encode(text) + '';\n }\n return '
    ' + '' + '' + '
    ';\n },\n postRender: function () {\n var self = this, onClickHandler = self.settings.onclick;\n self.on('click', function (e) {\n if (e.aria && e.aria.key === 'down') {\n return;\n }\n if (e.control === self && !DOM$3.getParent(e.target, '.' + self.classPrefix + 'open')) {\n e.stopImmediatePropagation();\n onClickHandler.call(self, e);\n }\n });\n delete self.settings.onclick;\n return self._super();\n }\n });\n\n var global$14 = tinymce.util.Tools.resolve('tinymce.util.Color');\n\n var ColorPicker = Widget.extend({\n Defaults: { classes: 'widget colorpicker' },\n init: function (settings) {\n this._super(settings);\n },\n postRender: function () {\n var self = this;\n var color = self.color();\n var hsv, hueRootElm, huePointElm, svRootElm, svPointElm;\n hueRootElm = self.getEl('h');\n huePointElm = self.getEl('hp');\n svRootElm = self.getEl('sv');\n svPointElm = self.getEl('svp');\n function getPos(elm, event) {\n var pos = funcs.getPos(elm);\n var x, y;\n x = event.pageX - pos.x;\n y = event.pageY - pos.y;\n x = Math.max(0, Math.min(x / elm.clientWidth, 1));\n y = Math.max(0, Math.min(y / elm.clientHeight, 1));\n return {\n x: x,\n y: y\n };\n }\n function updateColor(hsv, hueUpdate) {\n var hue = (360 - hsv.h) / 360;\n funcs.css(huePointElm, { top: hue * 100 + '%' });\n if (!hueUpdate) {\n funcs.css(svPointElm, {\n left: hsv.s + '%',\n top: 100 - hsv.v + '%'\n });\n }\n svRootElm.style.background = global$14({\n s: 100,\n v: 100,\n h: hsv.h\n }).toHex();\n self.color().parse({\n s: hsv.s,\n v: hsv.v,\n h: hsv.h\n });\n }\n function updateSaturationAndValue(e) {\n var pos;\n pos = getPos(svRootElm, e);\n hsv.s = pos.x * 100;\n hsv.v = (1 - pos.y) * 100;\n updateColor(hsv);\n self.fire('change');\n }\n function updateHue(e) {\n var pos;\n pos = getPos(hueRootElm, e);\n hsv = color.toHsv();\n hsv.h = (1 - pos.y) * 360;\n updateColor(hsv, true);\n self.fire('change');\n }\n self._repaint = function () {\n hsv = color.toHsv();\n updateColor(hsv);\n };\n self._super();\n self._svdraghelper = new DragHelper(self._id + '-sv', {\n start: updateSaturationAndValue,\n drag: updateSaturationAndValue\n });\n self._hdraghelper = new DragHelper(self._id + '-h', {\n start: updateHue,\n drag: updateHue\n });\n self._repaint();\n },\n rgb: function () {\n return this.color().toRgb();\n },\n value: function (value) {\n var self = this;\n if (arguments.length) {\n self.color().parse(value);\n if (self._rendered) {\n self._repaint();\n }\n } else {\n return self.color().toHex();\n }\n },\n color: function () {\n if (!this._color) {\n this._color = global$14();\n }\n return this._color;\n },\n renderHtml: function () {\n var self = this;\n var id = self._id;\n var prefix = self.classPrefix;\n var hueHtml;\n var stops = '#ff0000,#ff0080,#ff00ff,#8000ff,#0000ff,#0080ff,#00ffff,#00ff80,#00ff00,#80ff00,#ffff00,#ff8000,#ff0000';\n function getOldIeFallbackHtml() {\n var i, l, html = '', gradientPrefix, stopsList;\n gradientPrefix = 'filter:progid:DXImageTransform.Microsoft.gradient(GradientType=0,startColorstr=';\n stopsList = stops.split(',');\n for (i = 0, l = stopsList.length - 1; i < l; i++) {\n html += '
    ';\n }\n return html;\n }\n var gradientCssText = 'background: -ms-linear-gradient(top,' + stops + ');' + 'background: linear-gradient(to bottom,' + stops + ');';\n hueHtml = '
    ' + getOldIeFallbackHtml() + '
    ' + '
    ';\n return '
    ' + '
    ' + '
    ' + '
    ' + '
    ' + '
    ' + '
    ' + '
    ' + '
    ' + '
    ' + hueHtml + '
    ';\n }\n });\n\n var DropZone = Widget.extend({\n init: function (settings) {\n var self = this;\n settings = global$2.extend({\n height: 100,\n text: 'Drop an image here',\n multiple: false,\n accept: null\n }, settings);\n self._super(settings);\n self.classes.add('dropzone');\n if (settings.multiple) {\n self.classes.add('multiple');\n }\n },\n renderHtml: function () {\n var self = this;\n var attrs, elm;\n var cfg = self.settings;\n attrs = {\n id: self._id,\n hidefocus: '1'\n };\n elm = funcs.create('div', attrs, '' + this.translate(cfg.text) + '');\n if (cfg.height) {\n funcs.css(elm, 'height', cfg.height + 'px');\n }\n if (cfg.width) {\n funcs.css(elm, 'width', cfg.width + 'px');\n }\n elm.className = self.classes;\n return elm.outerHTML;\n },\n postRender: function () {\n var self = this;\n var toggleDragClass = function (e) {\n e.preventDefault();\n self.classes.toggle('dragenter');\n self.getEl().className = self.classes;\n };\n var filter = function (files) {\n var accept = self.settings.accept;\n if (typeof accept !== 'string') {\n return files;\n }\n var re = new RegExp('(' + accept.split(/\\s*,\\s*/).join('|') + ')$', 'i');\n return global$2.grep(files, function (file) {\n return re.test(file.name);\n });\n };\n self._super();\n self.$el.on('dragover', function (e) {\n e.preventDefault();\n });\n self.$el.on('dragenter', toggleDragClass);\n self.$el.on('dragleave', toggleDragClass);\n self.$el.on('drop', function (e) {\n e.preventDefault();\n if (self.state.get('disabled')) {\n return;\n }\n var files = filter(e.dataTransfer.files);\n self.value = function () {\n if (!files.length) {\n return null;\n } else if (self.settings.multiple) {\n return files;\n } else {\n return files[0];\n }\n };\n if (files.length) {\n self.fire('change', e);\n }\n });\n },\n remove: function () {\n this.$el.off();\n this._super();\n }\n });\n\n var Path = Widget.extend({\n init: function (settings) {\n var self = this;\n if (!settings.delimiter) {\n settings.delimiter = '\\xBB';\n }\n self._super(settings);\n self.classes.add('path');\n self.canFocus = true;\n self.on('click', function (e) {\n var index;\n var target = e.target;\n if (index = target.getAttribute('data-index')) {\n self.fire('select', {\n value: self.row()[index],\n index: index\n });\n }\n });\n self.row(self.settings.row);\n },\n focus: function () {\n var self = this;\n self.getEl().firstChild.focus();\n return self;\n },\n row: function (row) {\n if (!arguments.length) {\n return this.state.get('row');\n }\n this.state.set('row', row);\n return this;\n },\n renderHtml: function () {\n var self = this;\n return '
    ' + self._getDataPathHtml(self.state.get('row')) + '
    ';\n },\n bindStates: function () {\n var self = this;\n self.state.on('change:row', function (e) {\n self.innerHtml(self._getDataPathHtml(e.value));\n });\n return self._super();\n },\n _getDataPathHtml: function (data) {\n var self = this;\n var parts = data || [];\n var i, l, html = '';\n var prefix = self.classPrefix;\n for (i = 0, l = parts.length; i < l; i++) {\n html += (i > 0 ? '
    ' + self.settings.delimiter + '
    ' : '') + '
    ' + parts[i].name + '
    ';\n }\n if (!html) {\n html = '
    \\xA0
    ';\n }\n return html;\n }\n });\n\n var ElementPath = Path.extend({\n postRender: function () {\n var self = this, editor = self.settings.editor;\n function isHidden(elm) {\n if (elm.nodeType === 1) {\n if (elm.nodeName === 'BR' || !!elm.getAttribute('data-mce-bogus')) {\n return true;\n }\n if (elm.getAttribute('data-mce-type') === 'bookmark') {\n return true;\n }\n }\n return false;\n }\n if (editor.settings.elementpath !== false) {\n self.on('select', function (e) {\n editor.focus();\n editor.selection.select(this.row()[e.index].element);\n editor.nodeChanged();\n });\n editor.on('nodeChange', function (e) {\n var outParents = [];\n var parents = e.parents;\n var i = parents.length;\n while (i--) {\n if (parents[i].nodeType === 1 && !isHidden(parents[i])) {\n var args = editor.fire('ResolveName', {\n name: parents[i].nodeName.toLowerCase(),\n target: parents[i]\n });\n if (!args.isDefaultPrevented()) {\n outParents.push({\n name: args.name,\n element: parents[i]\n });\n }\n if (args.isPropagationStopped()) {\n break;\n }\n }\n }\n self.row(outParents);\n });\n }\n return self._super();\n }\n });\n\n var FormItem = Container.extend({\n Defaults: {\n layout: 'flex',\n align: 'center',\n defaults: { flex: 1 }\n },\n renderHtml: function () {\n var self = this, layout = self._layout, prefix = self.classPrefix;\n self.classes.add('formitem');\n layout.preRender(self);\n return '
    ' + (self.settings.title ? '
    ' + self.settings.title + '
    ' : '') + '
    ' + (self.settings.html || '') + layout.renderHtml(self) + '
    ' + '
    ';\n }\n });\n\n var Form = Container.extend({\n Defaults: {\n containerCls: 'form',\n layout: 'flex',\n direction: 'column',\n align: 'stretch',\n flex: 1,\n padding: 15,\n labelGap: 30,\n spacing: 10,\n callbacks: {\n submit: function () {\n this.submit();\n }\n }\n },\n preRender: function () {\n var self = this, items = self.items();\n if (!self.settings.formItemDefaults) {\n self.settings.formItemDefaults = {\n layout: 'flex',\n autoResize: 'overflow',\n defaults: { flex: 1 }\n };\n }\n items.each(function (ctrl) {\n var formItem;\n var label = ctrl.settings.label;\n if (label) {\n formItem = new FormItem(global$2.extend({\n items: {\n type: 'label',\n id: ctrl._id + '-l',\n text: label,\n flex: 0,\n forId: ctrl._id,\n disabled: ctrl.disabled()\n }\n }, self.settings.formItemDefaults));\n formItem.type = 'formitem';\n ctrl.aria('labelledby', ctrl._id + '-l');\n if (typeof ctrl.settings.flex === 'undefined') {\n ctrl.settings.flex = 1;\n }\n self.replace(ctrl, formItem);\n formItem.add(ctrl);\n }\n });\n },\n submit: function () {\n return this.fire('submit', { data: this.toJSON() });\n },\n postRender: function () {\n var self = this;\n self._super();\n self.fromJSON(self.settings.data);\n },\n bindStates: function () {\n var self = this;\n self._super();\n function recalcLabels() {\n var maxLabelWidth = 0;\n var labels = [];\n var i, labelGap, items;\n if (self.settings.labelGapCalc === false) {\n return;\n }\n if (self.settings.labelGapCalc === 'children') {\n items = self.find('formitem');\n } else {\n items = self.items();\n }\n items.filter('formitem').each(function (item) {\n var labelCtrl = item.items()[0], labelWidth = labelCtrl.getEl().clientWidth;\n maxLabelWidth = labelWidth > maxLabelWidth ? labelWidth : maxLabelWidth;\n labels.push(labelCtrl);\n });\n labelGap = self.settings.labelGap || 0;\n i = labels.length;\n while (i--) {\n labels[i].settings.minWidth = maxLabelWidth + labelGap;\n }\n }\n self.on('show', recalcLabels);\n recalcLabels();\n }\n });\n\n var FieldSet = Form.extend({\n Defaults: {\n containerCls: 'fieldset',\n layout: 'flex',\n direction: 'column',\n align: 'stretch',\n flex: 1,\n padding: '25 15 5 15',\n labelGap: 30,\n spacing: 10,\n border: 1\n },\n renderHtml: function () {\n var self = this, layout = self._layout, prefix = self.classPrefix;\n self.preRender();\n layout.preRender(self);\n return '
    ' + (self.settings.title ? '' + self.settings.title + '' : '') + '
    ' + (self.settings.html || '') + layout.renderHtml(self) + '
    ' + '
    ';\n }\n });\n\n var unique$1 = 0;\n var generate = function (prefix) {\n var date = new Date();\n var time = date.getTime();\n var random = Math.floor(Math.random() * 1000000000);\n unique$1++;\n return prefix + '_' + random + unique$1 + String(time);\n };\n\n var fromHtml = function (html, scope) {\n var doc = scope || document;\n var div = doc.createElement('div');\n div.innerHTML = html;\n if (!div.hasChildNodes() || div.childNodes.length > 1) {\n console.error('HTML does not have a single root node', html);\n throw 'HTML must have a single root node';\n }\n return fromDom(div.childNodes[0]);\n };\n var fromTag = function (tag, scope) {\n var doc = scope || document;\n var node = doc.createElement(tag);\n return fromDom(node);\n };\n var fromText = function (text, scope) {\n var doc = scope || document;\n var node = doc.createTextNode(text);\n return fromDom(node);\n };\n var fromDom = function (node) {\n if (node === null || node === undefined)\n throw new Error('Node cannot be null or undefined');\n return { dom: constant(node) };\n };\n var fromPoint = function (docElm, x, y) {\n var doc = docElm.dom();\n return Option.from(doc.elementFromPoint(x, y)).map(fromDom);\n };\n var Element$$1 = {\n fromHtml: fromHtml,\n fromTag: fromTag,\n fromText: fromText,\n fromDom: fromDom,\n fromPoint: fromPoint\n };\n\n var cached = function (f) {\n var called = false;\n var r;\n return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n if (!called) {\n called = true;\n r = f.apply(null, args);\n }\n return r;\n };\n };\n\n var $_g9js5fw5jkmcwsoh = {\n ATTRIBUTE: Node.ATTRIBUTE_NODE,\n CDATA_SECTION: Node.CDATA_SECTION_NODE,\n COMMENT: Node.COMMENT_NODE,\n DOCUMENT: Node.DOCUMENT_NODE,\n DOCUMENT_TYPE: Node.DOCUMENT_TYPE_NODE,\n DOCUMENT_FRAGMENT: Node.DOCUMENT_FRAGMENT_NODE,\n ELEMENT: Node.ELEMENT_NODE,\n TEXT: Node.TEXT_NODE,\n PROCESSING_INSTRUCTION: Node.PROCESSING_INSTRUCTION_NODE,\n ENTITY_REFERENCE: Node.ENTITY_REFERENCE_NODE,\n ENTITY: Node.ENTITY_NODE,\n NOTATION: Node.NOTATION_NODE\n };\n\n var name = function (element) {\n var r = element.dom().nodeName;\n return r.toLowerCase();\n };\n var type = function (element) {\n return element.dom().nodeType;\n };\n var value = function (element) {\n return element.dom().nodeValue;\n };\n var isType$1 = function (t) {\n return function (element) {\n return type(element) === t;\n };\n };\n var isComment = function (element) {\n return type(element) === $_g9js5fw5jkmcwsoh.COMMENT || name(element) === '#comment';\n };\n var isElement = isType$1($_g9js5fw5jkmcwsoh.ELEMENT);\n var isText = isType$1($_g9js5fw5jkmcwsoh.TEXT);\n var isDocument = isType$1($_g9js5fw5jkmcwsoh.DOCUMENT);\n var $_dg0wqww4jkmcwsog = {\n name: name,\n type: type,\n value: value,\n isElement: isElement,\n isText: isText,\n isDocument: isDocument,\n isComment: isComment\n };\n\n var inBody = function (element) {\n var dom = $_dg0wqww4jkmcwsog.isText(element) ? element.dom().parentNode : element.dom();\n return dom !== undefined && dom !== null && dom.ownerDocument.body.contains(dom);\n };\n var body = cached(function () {\n return getBody(Element$$1.fromDom(document));\n });\n var getBody = function (doc) {\n var body = doc.dom().body;\n if (body === null || body === undefined)\n throw 'Body is not available yet';\n return Element$$1.fromDom(body);\n };\n var $_9gi0tmw2jkmcwsob = {\n body: body,\n getBody: getBody,\n inBody: inBody\n };\n\n var Immutable = function () {\n var fields = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n fields[_i] = arguments[_i];\n }\n return function () {\n var values = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n values[_i] = arguments[_i];\n }\n if (fields.length !== values.length) {\n throw new Error('Wrong number of arguments to struct. Expected \"[' + fields.length + ']\", got ' + values.length + ' arguments');\n }\n var struct = {};\n each(fields, function (name, i) {\n struct[name] = constant(values[i]);\n });\n return struct;\n };\n };\n\n var toArray = function (target, f) {\n var r = [];\n var recurse = function (e) {\n r.push(e);\n return f(e);\n };\n var cur = f(target);\n do {\n cur = cur.bind(recurse);\n } while (cur.isSome());\n return r;\n };\n var $_9vmnzpwcjkmcwsph = { toArray: toArray };\n\n var Global = typeof window !== 'undefined' ? window : Function('return this;')();\n\n var path = function (parts, scope) {\n var o = scope !== undefined && scope !== null ? scope : Global;\n for (var i = 0; i < parts.length && o !== undefined && o !== null; ++i)\n o = o[parts[i]];\n return o;\n };\n var resolve = function (p, scope) {\n var parts = p.split('.');\n return path(parts, scope);\n };\n\n var unsafe = function (name, scope) {\n return resolve(name, scope);\n };\n var getOrDie = function (name, scope) {\n var actual = unsafe(name, scope);\n if (actual === undefined || actual === null)\n throw name + ' not available on this browser';\n return actual;\n };\n var $_22q3m2wfjkmcwsps = { getOrDie: getOrDie };\n\n var node = function () {\n var f = $_22q3m2wfjkmcwsps.getOrDie('Node');\n return f;\n };\n var compareDocumentPosition = function (a, b, match) {\n return (a.compareDocumentPosition(b) & match) !== 0;\n };\n var documentPositionPreceding = function (a, b) {\n return compareDocumentPosition(a, b, node().DOCUMENT_POSITION_PRECEDING);\n };\n var documentPositionContainedBy = function (a, b) {\n return compareDocumentPosition(a, b, node().DOCUMENT_POSITION_CONTAINED_BY);\n };\n var $_60zxbqwejkmcwspr = {\n documentPositionPreceding: documentPositionPreceding,\n documentPositionContainedBy: documentPositionContainedBy\n };\n\n var firstMatch = function (regexes, s) {\n for (var i = 0; i < regexes.length; i++) {\n var x = regexes[i];\n if (x.test(s))\n return x;\n }\n return undefined;\n };\n var find$2 = function (regexes, agent) {\n var r = firstMatch(regexes, agent);\n if (!r)\n return {\n major: 0,\n minor: 0\n };\n var group = function (i) {\n return Number(agent.replace(r, '$' + i));\n };\n return nu(group(1), group(2));\n };\n var detect = function (versionRegexes, agent) {\n var cleanedAgent = String(agent).toLowerCase();\n if (versionRegexes.length === 0)\n return unknown();\n return find$2(versionRegexes, cleanedAgent);\n };\n var unknown = function () {\n return nu(0, 0);\n };\n var nu = function (major, minor) {\n return {\n major: major,\n minor: minor\n };\n };\n var $_7ota5pwljkmcwsq4 = {\n nu: nu,\n detect: detect,\n unknown: unknown\n };\n\n var edge = 'Edge';\n var chrome = 'Chrome';\n var ie = 'IE';\n var opera = 'Opera';\n var firefox = 'Firefox';\n var safari = 'Safari';\n var isBrowser = function (name, current) {\n return function () {\n return current === name;\n };\n };\n var unknown$1 = function () {\n return nu$1({\n current: undefined,\n version: $_7ota5pwljkmcwsq4.unknown()\n });\n };\n var nu$1 = function (info) {\n var current = info.current;\n var version = info.version;\n return {\n current: current,\n version: version,\n isEdge: isBrowser(edge, current),\n isChrome: isBrowser(chrome, current),\n isIE: isBrowser(ie, current),\n isOpera: isBrowser(opera, current),\n isFirefox: isBrowser(firefox, current),\n isSafari: isBrowser(safari, current)\n };\n };\n var $_fknyifwkjkmcwsq1 = {\n unknown: unknown$1,\n nu: nu$1,\n edge: constant(edge),\n chrome: constant(chrome),\n ie: constant(ie),\n opera: constant(opera),\n firefox: constant(firefox),\n safari: constant(safari)\n };\n\n var windows$1 = 'Windows';\n var ios = 'iOS';\n var android = 'Android';\n var linux = 'Linux';\n var osx = 'OSX';\n var solaris = 'Solaris';\n var freebsd = 'FreeBSD';\n var isOS = function (name, current) {\n return function () {\n return current === name;\n };\n };\n var unknown$2 = function () {\n return nu$2({\n current: undefined,\n version: $_7ota5pwljkmcwsq4.unknown()\n });\n };\n var nu$2 = function (info) {\n var current = info.current;\n var version = info.version;\n return {\n current: current,\n version: version,\n isWindows: isOS(windows$1, current),\n isiOS: isOS(ios, current),\n isAndroid: isOS(android, current),\n isOSX: isOS(osx, current),\n isLinux: isOS(linux, current),\n isSolaris: isOS(solaris, current),\n isFreeBSD: isOS(freebsd, current)\n };\n };\n var $_4dmnqawmjkmcwsq6 = {\n unknown: unknown$2,\n nu: nu$2,\n windows: constant(windows$1),\n ios: constant(ios),\n android: constant(android),\n linux: constant(linux),\n osx: constant(osx),\n solaris: constant(solaris),\n freebsd: constant(freebsd)\n };\n\n function DeviceType (os, browser, userAgent) {\n var isiPad = os.isiOS() && /ipad/i.test(userAgent) === true;\n var isiPhone = os.isiOS() && !isiPad;\n var isAndroid3 = os.isAndroid() && os.version.major === 3;\n var isAndroid4 = os.isAndroid() && os.version.major === 4;\n var isTablet = isiPad || isAndroid3 || isAndroid4 && /mobile/i.test(userAgent) === true;\n var isTouch = os.isiOS() || os.isAndroid();\n var isPhone = isTouch && !isTablet;\n var iOSwebview = browser.isSafari() && os.isiOS() && /safari/i.test(userAgent) === false;\n return {\n isiPad: constant(isiPad),\n isiPhone: constant(isiPhone),\n isTablet: constant(isTablet),\n isPhone: constant(isPhone),\n isTouch: constant(isTouch),\n isAndroid: os.isAndroid,\n isiOS: os.isiOS,\n isWebView: constant(iOSwebview)\n };\n }\n\n var detect$1 = function (candidates, userAgent) {\n var agent = String(userAgent).toLowerCase();\n return find(candidates, function (candidate) {\n return candidate.search(agent);\n });\n };\n var detectBrowser = function (browsers, userAgent) {\n return detect$1(browsers, userAgent).map(function (browser) {\n var version = $_7ota5pwljkmcwsq4.detect(browser.versionRegexes, userAgent);\n return {\n current: browser.name,\n version: version\n };\n });\n };\n var detectOs = function (oses, userAgent) {\n return detect$1(oses, userAgent).map(function (os) {\n var version = $_7ota5pwljkmcwsq4.detect(os.versionRegexes, userAgent);\n return {\n current: os.name,\n version: version\n };\n });\n };\n var $_21yllowojkmcwsqc = {\n detectBrowser: detectBrowser,\n detectOs: detectOs\n };\n\n var contains$1 = function (str, substr) {\n return str.indexOf(substr) !== -1;\n };\n\n var normalVersionRegex = /.*?version\\/\\ ?([0-9]+)\\.([0-9]+).*/;\n var checkContains = function (target) {\n return function (uastring) {\n return contains$1(uastring, target);\n };\n };\n var browsers = [\n {\n name: 'Edge',\n versionRegexes: [/.*?edge\\/ ?([0-9]+)\\.([0-9]+)$/],\n search: function (uastring) {\n var monstrosity = contains$1(uastring, 'edge/') && contains$1(uastring, 'chrome') && contains$1(uastring, 'safari') && contains$1(uastring, 'applewebkit');\n return monstrosity;\n }\n },\n {\n name: 'Chrome',\n versionRegexes: [\n /.*?chrome\\/([0-9]+)\\.([0-9]+).*/,\n normalVersionRegex\n ],\n search: function (uastring) {\n return contains$1(uastring, 'chrome') && !contains$1(uastring, 'chromeframe');\n }\n },\n {\n name: 'IE',\n versionRegexes: [\n /.*?msie\\ ?([0-9]+)\\.([0-9]+).*/,\n /.*?rv:([0-9]+)\\.([0-9]+).*/\n ],\n search: function (uastring) {\n return contains$1(uastring, 'msie') || contains$1(uastring, 'trident');\n }\n },\n {\n name: 'Opera',\n versionRegexes: [\n normalVersionRegex,\n /.*?opera\\/([0-9]+)\\.([0-9]+).*/\n ],\n search: checkContains('opera')\n },\n {\n name: 'Firefox',\n versionRegexes: [/.*?firefox\\/\\ ?([0-9]+)\\.([0-9]+).*/],\n search: checkContains('firefox')\n },\n {\n name: 'Safari',\n versionRegexes: [\n normalVersionRegex,\n /.*?cpu os ([0-9]+)_([0-9]+).*/\n ],\n search: function (uastring) {\n return (contains$1(uastring, 'safari') || contains$1(uastring, 'mobile/')) && contains$1(uastring, 'applewebkit');\n }\n }\n ];\n var oses = [\n {\n name: 'Windows',\n search: checkContains('win'),\n versionRegexes: [/.*?windows\\ nt\\ ?([0-9]+)\\.([0-9]+).*/]\n },\n {\n name: 'iOS',\n search: function (uastring) {\n return contains$1(uastring, 'iphone') || contains$1(uastring, 'ipad');\n },\n versionRegexes: [\n /.*?version\\/\\ ?([0-9]+)\\.([0-9]+).*/,\n /.*cpu os ([0-9]+)_([0-9]+).*/,\n /.*cpu iphone os ([0-9]+)_([0-9]+).*/\n ]\n },\n {\n name: 'Android',\n search: checkContains('android'),\n versionRegexes: [/.*?android\\ ?([0-9]+)\\.([0-9]+).*/]\n },\n {\n name: 'OSX',\n search: checkContains('os x'),\n versionRegexes: [/.*?os\\ x\\ ?([0-9]+)_([0-9]+).*/]\n },\n {\n name: 'Linux',\n search: checkContains('linux'),\n versionRegexes: []\n },\n {\n name: 'Solaris',\n search: checkContains('sunos'),\n versionRegexes: []\n },\n {\n name: 'FreeBSD',\n search: checkContains('freebsd'),\n versionRegexes: []\n }\n ];\n var $_993j3rwpjkmcwsqg = {\n browsers: constant(browsers),\n oses: constant(oses)\n };\n\n var detect$2 = function (userAgent) {\n var browsers = $_993j3rwpjkmcwsqg.browsers();\n var oses = $_993j3rwpjkmcwsqg.oses();\n var browser = $_21yllowojkmcwsqc.detectBrowser(browsers, userAgent).fold($_fknyifwkjkmcwsq1.unknown, $_fknyifwkjkmcwsq1.nu);\n var os = $_21yllowojkmcwsqc.detectOs(oses, userAgent).fold($_4dmnqawmjkmcwsq6.unknown, $_4dmnqawmjkmcwsq6.nu);\n var deviceType = DeviceType(os, browser, userAgent);\n return {\n browser: browser,\n os: os,\n deviceType: deviceType\n };\n };\n var $_4sbeluwjjkmcwsq0 = { detect: detect$2 };\n\n var detect$3 = cached(function () {\n var userAgent = navigator.userAgent;\n return $_4sbeluwjjkmcwsq0.detect(userAgent);\n });\n var $_g4vzapwijkmcwspx = { detect: detect$3 };\n\n var ELEMENT = $_g9js5fw5jkmcwsoh.ELEMENT;\n var DOCUMENT = $_g9js5fw5jkmcwsoh.DOCUMENT;\n var is = function (element, selector) {\n var elem = element.dom();\n if (elem.nodeType !== ELEMENT)\n return false;\n else if (elem.matches !== undefined)\n return elem.matches(selector);\n else if (elem.msMatchesSelector !== undefined)\n return elem.msMatchesSelector(selector);\n else if (elem.webkitMatchesSelector !== undefined)\n return elem.webkitMatchesSelector(selector);\n else if (elem.mozMatchesSelector !== undefined)\n return elem.mozMatchesSelector(selector);\n else\n throw new Error('Browser lacks native selectors');\n };\n var bypassSelector = function (dom) {\n return dom.nodeType !== ELEMENT && dom.nodeType !== DOCUMENT || dom.childElementCount === 0;\n };\n var all = function (selector, scope) {\n var base = scope === undefined ? document : scope.dom();\n return bypassSelector(base) ? [] : map(base.querySelectorAll(selector), Element$$1.fromDom);\n };\n var one = function (selector, scope) {\n var base = scope === undefined ? document : scope.dom();\n return bypassSelector(base) ? Option.none() : Option.from(base.querySelector(selector)).map(Element$$1.fromDom);\n };\n var $_3tbwnywtjkmcwsqr = {\n all: all,\n is: is,\n one: one\n };\n\n var eq = function (e1, e2) {\n return e1.dom() === e2.dom();\n };\n var isEqualNode = function (e1, e2) {\n return e1.dom().isEqualNode(e2.dom());\n };\n var member = function (element, elements) {\n return exists(elements, curry(eq, element));\n };\n var regularContains = function (e1, e2) {\n var d1 = e1.dom(), d2 = e2.dom();\n return d1 === d2 ? false : d1.contains(d2);\n };\n var ieContains = function (e1, e2) {\n return $_60zxbqwejkmcwspr.documentPositionContainedBy(e1.dom(), e2.dom());\n };\n var browser = $_g4vzapwijkmcwspx.detect().browser;\n var contains$2 = browser.isIE() ? ieContains : regularContains;\n var $_622morwdjkmcwspi = {\n eq: eq,\n isEqualNode: isEqualNode,\n member: member,\n contains: contains$2,\n is: $_3tbwnywtjkmcwsqr.is\n };\n\n var owner = function (element) {\n return Element$$1.fromDom(element.dom().ownerDocument);\n };\n var documentElement = function (element) {\n return Element$$1.fromDom(element.dom().ownerDocument.documentElement);\n };\n var defaultView = function (element) {\n var el = element.dom();\n var defaultView = el.ownerDocument.defaultView;\n return Element$$1.fromDom(defaultView);\n };\n var parent = function (element) {\n var dom = element.dom();\n return Option.from(dom.parentNode).map(Element$$1.fromDom);\n };\n var findIndex$1 = function (element) {\n return parent(element).bind(function (p) {\n var kin = children(p);\n return findIndex(kin, function (elem) {\n return $_622morwdjkmcwspi.eq(element, elem);\n });\n });\n };\n var parents = function (element, isRoot) {\n var stop = isFunction(isRoot) ? isRoot : constant(false);\n var dom = element.dom();\n var ret = [];\n while (dom.parentNode !== null && dom.parentNode !== undefined) {\n var rawParent = dom.parentNode;\n var parent = Element$$1.fromDom(rawParent);\n ret.push(parent);\n if (stop(parent) === true)\n break;\n else\n dom = rawParent;\n }\n return ret;\n };\n var siblings = function (element) {\n var filterSelf = function (elements) {\n return filter(elements, function (x) {\n return !$_622morwdjkmcwspi.eq(element, x);\n });\n };\n return parent(element).map(children).map(filterSelf).getOr([]);\n };\n var offsetParent = function (element) {\n var dom = element.dom();\n return Option.from(dom.offsetParent).map(Element$$1.fromDom);\n };\n var prevSibling = function (element) {\n var dom = element.dom();\n return Option.from(dom.previousSibling).map(Element$$1.fromDom);\n };\n var nextSibling = function (element) {\n var dom = element.dom();\n return Option.from(dom.nextSibling).map(Element$$1.fromDom);\n };\n var prevSiblings = function (element) {\n return reverse($_9vmnzpwcjkmcwsph.toArray(element, prevSibling));\n };\n var nextSiblings = function (element) {\n return $_9vmnzpwcjkmcwsph.toArray(element, nextSibling);\n };\n var children = function (element) {\n var dom = element.dom();\n return map(dom.childNodes, Element$$1.fromDom);\n };\n var child = function (element, index) {\n var children = element.dom().childNodes;\n return Option.from(children[index]).map(Element$$1.fromDom);\n };\n var firstChild = function (element) {\n return child(element, 0);\n };\n var lastChild = function (element) {\n return child(element, element.dom().childNodes.length - 1);\n };\n var childNodesCount = function (element) {\n return element.dom().childNodes.length;\n };\n var hasChildNodes = function (element) {\n return element.dom().hasChildNodes();\n };\n var spot = Immutable('element', 'offset');\n var leaf = function (element, offset) {\n var cs = children(element);\n return cs.length > 0 && offset < cs.length ? spot(cs[offset], 0) : spot(element, offset);\n };\n var $_adk4mbw6jkmcwsok = {\n owner: owner,\n defaultView: defaultView,\n documentElement: documentElement,\n parent: parent,\n findIndex: findIndex$1,\n parents: parents,\n siblings: siblings,\n prevSibling: prevSibling,\n offsetParent: offsetParent,\n prevSiblings: prevSiblings,\n nextSibling: nextSibling,\n nextSiblings: nextSiblings,\n children: children,\n child: child,\n firstChild: firstChild,\n lastChild: lastChild,\n childNodesCount: childNodesCount,\n hasChildNodes: hasChildNodes,\n leaf: leaf\n };\n\n var all$1 = function (predicate) {\n return descendants($_9gi0tmw2jkmcwsob.body(), predicate);\n };\n var ancestors = function (scope, predicate, isRoot) {\n return filter($_adk4mbw6jkmcwsok.parents(scope, isRoot), predicate);\n };\n var siblings$1 = function (scope, predicate) {\n return filter($_adk4mbw6jkmcwsok.siblings(scope), predicate);\n };\n var children$1 = function (scope, predicate) {\n return filter($_adk4mbw6jkmcwsok.children(scope), predicate);\n };\n var descendants = function (scope, predicate) {\n var result = [];\n each($_adk4mbw6jkmcwsok.children(scope), function (x) {\n if (predicate(x)) {\n result = result.concat([x]);\n }\n result = result.concat(descendants(x, predicate));\n });\n return result;\n };\n var $_bf8vd5w1jkmcwso8 = {\n all: all$1,\n ancestors: ancestors,\n siblings: siblings$1,\n children: children$1,\n descendants: descendants\n };\n\n var all$2 = function (selector) {\n return $_3tbwnywtjkmcwsqr.all(selector);\n };\n var ancestors$1 = function (scope, selector, isRoot) {\n return $_bf8vd5w1jkmcwso8.ancestors(scope, function (e) {\n return $_3tbwnywtjkmcwsqr.is(e, selector);\n }, isRoot);\n };\n var siblings$2 = function (scope, selector) {\n return $_bf8vd5w1jkmcwso8.siblings(scope, function (e) {\n return $_3tbwnywtjkmcwsqr.is(e, selector);\n });\n };\n var children$2 = function (scope, selector) {\n return $_bf8vd5w1jkmcwso8.children(scope, function (e) {\n return $_3tbwnywtjkmcwsqr.is(e, selector);\n });\n };\n var descendants$1 = function (scope, selector) {\n return $_3tbwnywtjkmcwsqr.all(selector, scope);\n };\n var $_4ig9ruw0jkmcwso7 = {\n all: all$2,\n ancestors: ancestors$1,\n siblings: siblings$2,\n children: children$2,\n descendants: descendants$1\n };\n\n var trim$1 = global$2.trim;\n var hasContentEditableState = function (value) {\n return function (node) {\n if (node && node.nodeType === 1) {\n if (node.contentEditable === value) {\n return true;\n }\n if (node.getAttribute('data-mce-contenteditable') === value) {\n return true;\n }\n }\n return false;\n };\n };\n var isContentEditableTrue = hasContentEditableState('true');\n var isContentEditableFalse = hasContentEditableState('false');\n var create = function (type, title, url, level, attach) {\n return {\n type: type,\n title: title,\n url: url,\n level: level,\n attach: attach\n };\n };\n var isChildOfContentEditableTrue = function (node) {\n while (node = node.parentNode) {\n var value = node.contentEditable;\n if (value && value !== 'inherit') {\n return isContentEditableTrue(node);\n }\n }\n return false;\n };\n var select = function (selector, root) {\n return map($_4ig9ruw0jkmcwso7.descendants(Element$$1.fromDom(root), selector), function (element) {\n return element.dom();\n });\n };\n var getElementText = function (elm) {\n return elm.innerText || elm.textContent;\n };\n var getOrGenerateId = function (elm) {\n return elm.id ? elm.id : generate('h');\n };\n var isAnchor = function (elm) {\n return elm && elm.nodeName === 'A' && (elm.id || elm.name);\n };\n var isValidAnchor = function (elm) {\n return isAnchor(elm) && isEditable(elm);\n };\n var isHeader = function (elm) {\n return elm && /^(H[1-6])$/.test(elm.nodeName);\n };\n var isEditable = function (elm) {\n return isChildOfContentEditableTrue(elm) && !isContentEditableFalse(elm);\n };\n var isValidHeader = function (elm) {\n return isHeader(elm) && isEditable(elm);\n };\n var getLevel = function (elm) {\n return isHeader(elm) ? parseInt(elm.nodeName.substr(1), 10) : 0;\n };\n var headerTarget = function (elm) {\n var headerId = getOrGenerateId(elm);\n var attach = function () {\n elm.id = headerId;\n };\n return create('header', getElementText(elm), '#' + headerId, getLevel(elm), attach);\n };\n var anchorTarget = function (elm) {\n var anchorId = elm.id || elm.name;\n var anchorText = getElementText(elm);\n return create('anchor', anchorText ? anchorText : '#' + anchorId, '#' + anchorId, 0, noop);\n };\n var getHeaderTargets = function (elms) {\n return map(filter(elms, isValidHeader), headerTarget);\n };\n var getAnchorTargets = function (elms) {\n return map(filter(elms, isValidAnchor), anchorTarget);\n };\n var getTargetElements = function (elm) {\n var elms = select('h1,h2,h3,h4,h5,h6,a:not([href])', elm);\n return elms;\n };\n var hasTitle = function (target) {\n return trim$1(target.title).length > 0;\n };\n var find$3 = function (elm) {\n var elms = getTargetElements(elm);\n return filter(getHeaderTargets(elms).concat(getAnchorTargets(elms)), hasTitle);\n };\n var $_cb7rvvvxjkmcwsnn = { find: find$3 };\n\n var getActiveEditor = function () {\n return window.tinymce ? window.tinymce.activeEditor : global$1.activeEditor;\n };\n var history = {};\n var HISTORY_LENGTH = 5;\n var clearHistory = function () {\n history = {};\n };\n var toMenuItem = function (target) {\n return {\n title: target.title,\n value: {\n title: { raw: target.title },\n url: target.url,\n attach: target.attach\n }\n };\n };\n var toMenuItems = function (targets) {\n return global$2.map(targets, toMenuItem);\n };\n var staticMenuItem = function (title, url) {\n return {\n title: title,\n value: {\n title: title,\n url: url,\n attach: noop\n }\n };\n };\n var isUniqueUrl = function (url, targets) {\n var foundTarget = exists(targets, function (target) {\n return target.url === url;\n });\n return !foundTarget;\n };\n var getSetting = function (editorSettings, name, defaultValue) {\n var value = name in editorSettings ? editorSettings[name] : defaultValue;\n return value === false ? null : value;\n };\n var createMenuItems = function (term, targets, fileType, editorSettings) {\n var separator = { title: '-' };\n var fromHistoryMenuItems = function (history) {\n var historyItems = history.hasOwnProperty(fileType) ? history[fileType] : [];\n var uniqueHistory = filter(historyItems, function (url) {\n return isUniqueUrl(url, targets);\n });\n return global$2.map(uniqueHistory, function (url) {\n return {\n title: url,\n value: {\n title: url,\n url: url,\n attach: noop\n }\n };\n });\n };\n var fromMenuItems = function (type) {\n var filteredTargets = filter(targets, function (target) {\n return target.type === type;\n });\n return toMenuItems(filteredTargets);\n };\n var anchorMenuItems = function () {\n var anchorMenuItems = fromMenuItems('anchor');\n var topAnchor = getSetting(editorSettings, 'anchor_top', '#top');\n var bottomAchor = getSetting(editorSettings, 'anchor_bottom', '#bottom');\n if (topAnchor !== null) {\n anchorMenuItems.unshift(staticMenuItem('', topAnchor));\n }\n if (bottomAchor !== null) {\n anchorMenuItems.push(staticMenuItem('', bottomAchor));\n }\n return anchorMenuItems;\n };\n var join = function (items) {\n return foldl(items, function (a, b) {\n var bothEmpty = a.length === 0 || b.length === 0;\n return bothEmpty ? a.concat(b) : a.concat(separator, b);\n }, []);\n };\n if (editorSettings.typeahead_urls === false) {\n return [];\n }\n return fileType === 'file' ? join([\n filterByQuery(term, fromHistoryMenuItems(history)),\n filterByQuery(term, fromMenuItems('header')),\n filterByQuery(term, anchorMenuItems())\n ]) : filterByQuery(term, fromHistoryMenuItems(history));\n };\n var addToHistory = function (url, fileType) {\n var items = history[fileType];\n if (!/^https?/.test(url)) {\n return;\n }\n if (items) {\n if (indexOf(items, url).isNone()) {\n history[fileType] = items.slice(0, HISTORY_LENGTH).concat(url);\n }\n } else {\n history[fileType] = [url];\n }\n };\n var filterByQuery = function (term, menuItems) {\n var lowerCaseTerm = term.toLowerCase();\n var result = global$2.grep(menuItems, function (item) {\n return item.title.toLowerCase().indexOf(lowerCaseTerm) !== -1;\n });\n return result.length === 1 && result[0].title === term ? [] : result;\n };\n var getTitle = function (linkDetails) {\n var title = linkDetails.title;\n return title.raw ? title.raw : title;\n };\n var setupAutoCompleteHandler = function (ctrl, editorSettings, bodyElm, fileType) {\n var autocomplete = function (term) {\n var linkTargets = $_cb7rvvvxjkmcwsnn.find(bodyElm);\n var menuItems = createMenuItems(term, linkTargets, fileType, editorSettings);\n ctrl.showAutoComplete(menuItems, term);\n };\n ctrl.on('autocomplete', function () {\n autocomplete(ctrl.value());\n });\n ctrl.on('selectitem', function (e) {\n var linkDetails = e.value;\n ctrl.value(linkDetails.url);\n var title = getTitle(linkDetails);\n if (fileType === 'image') {\n ctrl.fire('change', {\n meta: {\n alt: title,\n attach: linkDetails.attach\n }\n });\n } else {\n ctrl.fire('change', {\n meta: {\n text: title,\n attach: linkDetails.attach\n }\n });\n }\n ctrl.focus();\n });\n ctrl.on('click', function (e) {\n if (ctrl.value().length === 0 && e.target.nodeName === 'INPUT') {\n autocomplete('');\n }\n });\n ctrl.on('PostRender', function () {\n ctrl.getRoot().on('submit', function (e) {\n if (!e.isDefaultPrevented()) {\n addToHistory(ctrl.value(), fileType);\n }\n });\n });\n };\n var statusToUiState = function (result) {\n var status = result.status, message = result.message;\n if (status === 'valid') {\n return {\n status: 'ok',\n message: message\n };\n } else if (status === 'unknown') {\n return {\n status: 'warn',\n message: message\n };\n } else if (status === 'invalid') {\n return {\n status: 'warn',\n message: message\n };\n } else {\n return {\n status: 'none',\n message: ''\n };\n }\n };\n var setupLinkValidatorHandler = function (ctrl, editorSettings, fileType) {\n var validatorHandler = editorSettings.filepicker_validator_handler;\n if (validatorHandler) {\n var validateUrl_1 = function (url) {\n if (url.length === 0) {\n ctrl.statusLevel('none');\n return;\n }\n validatorHandler({\n url: url,\n type: fileType\n }, function (result) {\n var uiState = statusToUiState(result);\n ctrl.statusMessage(uiState.message);\n ctrl.statusLevel(uiState.status);\n });\n };\n ctrl.state.on('change:value', function (e) {\n validateUrl_1(e.value);\n });\n }\n };\n var FilePicker = ComboBox.extend({\n Statics: { clearHistory: clearHistory },\n init: function (settings) {\n var self = this, editor = getActiveEditor(), editorSettings = editor.settings;\n var actionCallback, fileBrowserCallback, fileBrowserCallbackTypes;\n var fileType = settings.filetype;\n settings.spellcheck = false;\n fileBrowserCallbackTypes = editorSettings.file_picker_types || editorSettings.file_browser_callback_types;\n if (fileBrowserCallbackTypes) {\n fileBrowserCallbackTypes = global$2.makeMap(fileBrowserCallbackTypes, /[, ]/);\n }\n if (!fileBrowserCallbackTypes || fileBrowserCallbackTypes[fileType]) {\n fileBrowserCallback = editorSettings.file_picker_callback;\n if (fileBrowserCallback && (!fileBrowserCallbackTypes || fileBrowserCallbackTypes[fileType])) {\n actionCallback = function () {\n var meta = self.fire('beforecall').meta;\n meta = global$2.extend({ filetype: fileType }, meta);\n fileBrowserCallback.call(editor, function (value, meta) {\n self.value(value).fire('change', { meta: meta });\n }, self.value(), meta);\n };\n } else {\n fileBrowserCallback = editorSettings.file_browser_callback;\n if (fileBrowserCallback && (!fileBrowserCallbackTypes || fileBrowserCallbackTypes[fileType])) {\n actionCallback = function () {\n fileBrowserCallback(self.getEl('inp').id, self.value(), fileType, window);\n };\n }\n }\n }\n if (actionCallback) {\n settings.icon = 'browse';\n settings.onaction = actionCallback;\n }\n self._super(settings);\n self.classes.add('filepicker');\n setupAutoCompleteHandler(self, editorSettings, editor.getBody(), fileType);\n setupLinkValidatorHandler(self, editorSettings, fileType);\n }\n });\n\n var FitLayout = AbsoluteLayout.extend({\n recalc: function (container) {\n var contLayoutRect = container.layoutRect(), paddingBox = container.paddingBox;\n container.items().filter(':visible').each(function (ctrl) {\n ctrl.layoutRect({\n x: paddingBox.left,\n y: paddingBox.top,\n w: contLayoutRect.innerW - paddingBox.right - paddingBox.left,\n h: contLayoutRect.innerH - paddingBox.top - paddingBox.bottom\n });\n if (ctrl.recalc) {\n ctrl.recalc();\n }\n });\n }\n });\n\n var FlexLayout = AbsoluteLayout.extend({\n recalc: function (container) {\n var i, l, items, contLayoutRect, contPaddingBox, contSettings, align, pack, spacing, totalFlex, availableSpace, direction;\n var ctrl, ctrlLayoutRect, ctrlSettings, flex;\n var maxSizeItems = [];\n var size, maxSize, ratio, rect, pos, maxAlignEndPos;\n var sizeName, minSizeName, posName, maxSizeName, beforeName, innerSizeName, deltaSizeName, contentSizeName;\n var alignAxisName, alignInnerSizeName, alignSizeName, alignMinSizeName, alignBeforeName, alignAfterName;\n var alignDeltaSizeName, alignContentSizeName;\n var max = Math.max, min = Math.min;\n items = container.items().filter(':visible');\n contLayoutRect = container.layoutRect();\n contPaddingBox = container.paddingBox;\n contSettings = container.settings;\n direction = container.isRtl() ? contSettings.direction || 'row-reversed' : contSettings.direction;\n align = contSettings.align;\n pack = container.isRtl() ? contSettings.pack || 'end' : contSettings.pack;\n spacing = contSettings.spacing || 0;\n if (direction === 'row-reversed' || direction === 'column-reverse') {\n items = items.set(items.toArray().reverse());\n direction = direction.split('-')[0];\n }\n if (direction === 'column') {\n posName = 'y';\n sizeName = 'h';\n minSizeName = 'minH';\n maxSizeName = 'maxH';\n innerSizeName = 'innerH';\n beforeName = 'top';\n deltaSizeName = 'deltaH';\n contentSizeName = 'contentH';\n alignBeforeName = 'left';\n alignSizeName = 'w';\n alignAxisName = 'x';\n alignInnerSizeName = 'innerW';\n alignMinSizeName = 'minW';\n alignAfterName = 'right';\n alignDeltaSizeName = 'deltaW';\n alignContentSizeName = 'contentW';\n } else {\n posName = 'x';\n sizeName = 'w';\n minSizeName = 'minW';\n maxSizeName = 'maxW';\n innerSizeName = 'innerW';\n beforeName = 'left';\n deltaSizeName = 'deltaW';\n contentSizeName = 'contentW';\n alignBeforeName = 'top';\n alignSizeName = 'h';\n alignAxisName = 'y';\n alignInnerSizeName = 'innerH';\n alignMinSizeName = 'minH';\n alignAfterName = 'bottom';\n alignDeltaSizeName = 'deltaH';\n alignContentSizeName = 'contentH';\n }\n availableSpace = contLayoutRect[innerSizeName] - contPaddingBox[beforeName] - contPaddingBox[beforeName];\n maxAlignEndPos = totalFlex = 0;\n for (i = 0, l = items.length; i < l; i++) {\n ctrl = items[i];\n ctrlLayoutRect = ctrl.layoutRect();\n ctrlSettings = ctrl.settings;\n flex = ctrlSettings.flex;\n availableSpace -= i < l - 1 ? spacing : 0;\n if (flex > 0) {\n totalFlex += flex;\n if (ctrlLayoutRect[maxSizeName]) {\n maxSizeItems.push(ctrl);\n }\n ctrlLayoutRect.flex = flex;\n }\n availableSpace -= ctrlLayoutRect[minSizeName];\n size = contPaddingBox[alignBeforeName] + ctrlLayoutRect[alignMinSizeName] + contPaddingBox[alignAfterName];\n if (size > maxAlignEndPos) {\n maxAlignEndPos = size;\n }\n }\n rect = {};\n if (availableSpace < 0) {\n rect[minSizeName] = contLayoutRect[minSizeName] - availableSpace + contLayoutRect[deltaSizeName];\n } else {\n rect[minSizeName] = contLayoutRect[innerSizeName] - availableSpace + contLayoutRect[deltaSizeName];\n }\n rect[alignMinSizeName] = maxAlignEndPos + contLayoutRect[alignDeltaSizeName];\n rect[contentSizeName] = contLayoutRect[innerSizeName] - availableSpace;\n rect[alignContentSizeName] = maxAlignEndPos;\n rect.minW = min(rect.minW, contLayoutRect.maxW);\n rect.minH = min(rect.minH, contLayoutRect.maxH);\n rect.minW = max(rect.minW, contLayoutRect.startMinWidth);\n rect.minH = max(rect.minH, contLayoutRect.startMinHeight);\n if (contLayoutRect.autoResize && (rect.minW !== contLayoutRect.minW || rect.minH !== contLayoutRect.minH)) {\n rect.w = rect.minW;\n rect.h = rect.minH;\n container.layoutRect(rect);\n this.recalc(container);\n if (container._lastRect === null) {\n var parentCtrl = container.parent();\n if (parentCtrl) {\n parentCtrl._lastRect = null;\n parentCtrl.recalc();\n }\n }\n return;\n }\n ratio = availableSpace / totalFlex;\n for (i = 0, l = maxSizeItems.length; i < l; i++) {\n ctrl = maxSizeItems[i];\n ctrlLayoutRect = ctrl.layoutRect();\n maxSize = ctrlLayoutRect[maxSizeName];\n size = ctrlLayoutRect[minSizeName] + ctrlLayoutRect.flex * ratio;\n if (size > maxSize) {\n availableSpace -= ctrlLayoutRect[maxSizeName] - ctrlLayoutRect[minSizeName];\n totalFlex -= ctrlLayoutRect.flex;\n ctrlLayoutRect.flex = 0;\n ctrlLayoutRect.maxFlexSize = maxSize;\n } else {\n ctrlLayoutRect.maxFlexSize = 0;\n }\n }\n ratio = availableSpace / totalFlex;\n pos = contPaddingBox[beforeName];\n rect = {};\n if (totalFlex === 0) {\n if (pack === 'end') {\n pos = availableSpace + contPaddingBox[beforeName];\n } else if (pack === 'center') {\n pos = Math.round(contLayoutRect[innerSizeName] / 2 - (contLayoutRect[innerSizeName] - availableSpace) / 2) + contPaddingBox[beforeName];\n if (pos < 0) {\n pos = contPaddingBox[beforeName];\n }\n } else if (pack === 'justify') {\n pos = contPaddingBox[beforeName];\n spacing = Math.floor(availableSpace / (items.length - 1));\n }\n }\n rect[alignAxisName] = contPaddingBox[alignBeforeName];\n for (i = 0, l = items.length; i < l; i++) {\n ctrl = items[i];\n ctrlLayoutRect = ctrl.layoutRect();\n size = ctrlLayoutRect.maxFlexSize || ctrlLayoutRect[minSizeName];\n if (align === 'center') {\n rect[alignAxisName] = Math.round(contLayoutRect[alignInnerSizeName] / 2 - ctrlLayoutRect[alignSizeName] / 2);\n } else if (align === 'stretch') {\n rect[alignSizeName] = max(ctrlLayoutRect[alignMinSizeName] || 0, contLayoutRect[alignInnerSizeName] - contPaddingBox[alignBeforeName] - contPaddingBox[alignAfterName]);\n rect[alignAxisName] = contPaddingBox[alignBeforeName];\n } else if (align === 'end') {\n rect[alignAxisName] = contLayoutRect[alignInnerSizeName] - ctrlLayoutRect[alignSizeName] - contPaddingBox.top;\n }\n if (ctrlLayoutRect.flex > 0) {\n size += ctrlLayoutRect.flex * ratio;\n }\n rect[sizeName] = size;\n rect[posName] = pos;\n ctrl.layoutRect(rect);\n if (ctrl.recalc) {\n ctrl.recalc();\n }\n pos += size + spacing;\n }\n }\n });\n\n var FlowLayout = Layout.extend({\n Defaults: {\n containerClass: 'flow-layout',\n controlClass: 'flow-layout-item',\n endClass: 'break'\n },\n recalc: function (container) {\n container.items().filter(':visible').each(function (ctrl) {\n if (ctrl.recalc) {\n ctrl.recalc();\n }\n });\n },\n isNative: function () {\n return true;\n }\n });\n\n function ClosestOrAncestor (is, ancestor, scope, a, isRoot) {\n return is(scope, a) ? Option.some(scope) : isFunction(isRoot) && isRoot(scope) ? Option.none() : ancestor(scope, a, isRoot);\n }\n\n var first$1 = function (predicate) {\n return descendant($_9gi0tmw2jkmcwsob.body(), predicate);\n };\n var ancestor = function (scope, predicate, isRoot) {\n var element = scope.dom();\n var stop = isFunction(isRoot) ? isRoot : constant(false);\n while (element.parentNode) {\n element = element.parentNode;\n var el = Element$$1.fromDom(element);\n if (predicate(el))\n return Option.some(el);\n else if (stop(el))\n break;\n }\n return Option.none();\n };\n var closest = function (scope, predicate, isRoot) {\n var is = function (scope) {\n return predicate(scope);\n };\n return ClosestOrAncestor(is, ancestor, scope, predicate, isRoot);\n };\n var sibling = function (scope, predicate) {\n var element = scope.dom();\n if (!element.parentNode)\n return Option.none();\n return child$1(Element$$1.fromDom(element.parentNode), function (x) {\n return !$_622morwdjkmcwspi.eq(scope, x) && predicate(x);\n });\n };\n var child$1 = function (scope, predicate) {\n var result = find(scope.dom().childNodes, compose(predicate, Element$$1.fromDom));\n return result.map(Element$$1.fromDom);\n };\n var descendant = function (scope, predicate) {\n var descend = function (node) {\n for (var i = 0; i < node.childNodes.length; i++) {\n if (predicate(Element$$1.fromDom(node.childNodes[i])))\n return Option.some(Element$$1.fromDom(node.childNodes[i]));\n var res = descend(node.childNodes[i]);\n if (res.isSome())\n return res;\n }\n return Option.none();\n };\n return descend(scope.dom());\n };\n var $_13w0c1wzjkmcwsri = {\n first: first$1,\n ancestor: ancestor,\n closest: closest,\n sibling: sibling,\n child: child$1,\n descendant: descendant\n };\n\n var first$2 = function (selector) {\n return $_3tbwnywtjkmcwsqr.one(selector);\n };\n var ancestor$1 = function (scope, selector, isRoot) {\n return $_13w0c1wzjkmcwsri.ancestor(scope, function (e) {\n return $_3tbwnywtjkmcwsqr.is(e, selector);\n }, isRoot);\n };\n var sibling$1 = function (scope, selector) {\n return $_13w0c1wzjkmcwsri.sibling(scope, function (e) {\n return $_3tbwnywtjkmcwsqr.is(e, selector);\n });\n };\n var child$2 = function (scope, selector) {\n return $_13w0c1wzjkmcwsri.child(scope, function (e) {\n return $_3tbwnywtjkmcwsqr.is(e, selector);\n });\n };\n var descendant$1 = function (scope, selector) {\n return $_3tbwnywtjkmcwsqr.one(selector, scope);\n };\n var closest$1 = function (scope, selector, isRoot) {\n return ClosestOrAncestor($_3tbwnywtjkmcwsqr.is, ancestor$1, scope, selector, isRoot);\n };\n var $_epq3p6wyjkmcwsrh = {\n first: first$2,\n ancestor: ancestor$1,\n sibling: sibling$1,\n child: child$2,\n descendant: descendant$1,\n closest: closest$1\n };\n\n var toggleFormat = function (editor, fmt) {\n return function () {\n editor.execCommand('mceToggleFormat', false, fmt);\n };\n };\n var addFormatChangedListener = function (editor, name, changed) {\n var handler = function (state) {\n changed(state, name);\n };\n if (editor.formatter) {\n editor.formatter.formatChanged(name, handler);\n } else {\n editor.on('init', function () {\n editor.formatter.formatChanged(name, handler);\n });\n }\n };\n var postRenderFormatToggle = function (editor, name) {\n return function (e) {\n addFormatChangedListener(editor, name, function (state) {\n e.control.active(state);\n });\n };\n };\n\n var register = function (editor) {\n var alignFormats = [\n 'alignleft',\n 'aligncenter',\n 'alignright',\n 'alignjustify'\n ];\n var defaultAlign = 'alignleft';\n var alignMenuItems = [\n {\n text: 'Left',\n icon: 'alignleft',\n onclick: toggleFormat(editor, 'alignleft')\n },\n {\n text: 'Center',\n icon: 'aligncenter',\n onclick: toggleFormat(editor, 'aligncenter')\n },\n {\n text: 'Right',\n icon: 'alignright',\n onclick: toggleFormat(editor, 'alignright')\n },\n {\n text: 'Justify',\n icon: 'alignjustify',\n onclick: toggleFormat(editor, 'alignjustify')\n }\n ];\n editor.addMenuItem('align', {\n text: 'Align',\n menu: alignMenuItems\n });\n editor.addButton('align', {\n type: 'menubutton',\n icon: defaultAlign,\n menu: alignMenuItems,\n onShowMenu: function (e) {\n var menu = e.control.menu;\n global$2.each(alignFormats, function (formatName, idx) {\n menu.items().eq(idx).each(function (item) {\n return item.active(editor.formatter.match(formatName));\n });\n });\n },\n onPostRender: function (e) {\n var ctrl = e.control;\n global$2.each(alignFormats, function (formatName, idx) {\n addFormatChangedListener(editor, formatName, function (state) {\n ctrl.icon(defaultAlign);\n if (state) {\n ctrl.icon(formatName);\n }\n });\n });\n }\n });\n global$2.each({\n alignleft: [\n 'Align left',\n 'JustifyLeft'\n ],\n aligncenter: [\n 'Align center',\n 'JustifyCenter'\n ],\n alignright: [\n 'Align right',\n 'JustifyRight'\n ],\n alignjustify: [\n 'Justify',\n 'JustifyFull'\n ],\n alignnone: [\n 'No alignment',\n 'JustifyNone'\n ]\n }, function (item, name) {\n editor.addButton(name, {\n active: false,\n tooltip: item[0],\n cmd: item[1],\n onPostRender: postRenderFormatToggle(editor, name)\n });\n });\n };\n var $_ffg0cgx1jkmcwsrx = { register: register };\n\n var getFirstFont = function (fontFamily) {\n return fontFamily ? fontFamily.split(',')[0] : '';\n };\n var findMatchingValue = function (items, fontFamily) {\n var font = fontFamily ? fontFamily.toLowerCase() : '';\n var value;\n global$2.each(items, function (item) {\n if (item.value.toLowerCase() === font) {\n value = item.value;\n }\n });\n global$2.each(items, function (item) {\n if (!value && getFirstFont(item.value).toLowerCase() === getFirstFont(font).toLowerCase()) {\n value = item.value;\n }\n });\n return value;\n };\n var createFontNameListBoxChangeHandler = function (editor, items) {\n return function () {\n var self = this;\n self.state.set('value', null);\n editor.on('init nodeChange', function (e) {\n var fontFamily = editor.queryCommandValue('FontName');\n var match = findMatchingValue(items, fontFamily);\n self.value(match ? match : null);\n if (!match && fontFamily) {\n self.text(getFirstFont(fontFamily));\n }\n });\n };\n };\n var createFormats = function (formats) {\n formats = formats.replace(/;$/, '').split(';');\n var i = formats.length;\n while (i--) {\n formats[i] = formats[i].split('=');\n }\n return formats;\n };\n var getFontItems = function (editor) {\n var defaultFontsFormats = 'Andale Mono=andale mono,monospace;' + 'Arial=arial,helvetica,sans-serif;' + 'Arial Black=arial black,sans-serif;' + 'Book Antiqua=book antiqua,palatino,serif;' + 'Comic Sans MS=comic sans ms,sans-serif;' + 'Courier New=courier new,courier,monospace;' + 'Georgia=georgia,palatino,serif;' + 'Helvetica=helvetica,arial,sans-serif;' + 'Impact=impact,sans-serif;' + 'Symbol=symbol;' + 'Tahoma=tahoma,arial,helvetica,sans-serif;' + 'Terminal=terminal,monaco,monospace;' + 'Times New Roman=times new roman,times,serif;' + 'Trebuchet MS=trebuchet ms,geneva,sans-serif;' + 'Verdana=verdana,geneva,sans-serif;' + 'Webdings=webdings;' + 'Wingdings=wingdings,zapf dingbats';\n var fonts = createFormats(editor.settings.font_formats || defaultFontsFormats);\n return global$2.map(fonts, function (font) {\n return {\n text: { raw: font[0] },\n value: font[1],\n textStyle: font[1].indexOf('dings') === -1 ? 'font-family:' + font[1] : ''\n };\n });\n };\n var registerButtons = function (editor) {\n editor.addButton('fontselect', function () {\n var items = getFontItems(editor);\n return {\n type: 'listbox',\n text: 'Font Family',\n tooltip: 'Font Family',\n values: items,\n fixedWidth: true,\n onPostRender: createFontNameListBoxChangeHandler(editor, items),\n onselect: function (e) {\n if (e.control.settings.value) {\n editor.execCommand('FontName', false, e.control.settings.value);\n }\n }\n };\n });\n };\n var register$1 = function (editor) {\n registerButtons(editor);\n };\n var $_1be6fjx3jkmcwss1 = { register: register$1 };\n\n var round = function (number, precision) {\n var factor = Math.pow(10, precision);\n return Math.round(number * factor) / factor;\n };\n var toPt = function (fontSize, precision) {\n if (/[0-9.]+px$/.test(fontSize)) {\n return round(parseInt(fontSize, 10) * 72 / 96, precision || 0) + 'pt';\n }\n return fontSize;\n };\n var findMatchingValue$1 = function (items, pt, px) {\n var value;\n global$2.each(items, function (item) {\n if (item.value === px) {\n value = px;\n } else if (item.value === pt) {\n value = pt;\n }\n });\n return value;\n };\n var createFontSizeListBoxChangeHandler = function (editor, items) {\n return function () {\n var self = this;\n editor.on('init nodeChange', function (e) {\n var px, pt, precision, match;\n px = editor.queryCommandValue('FontSize');\n if (px) {\n for (precision = 3; !match && precision >= 0; precision--) {\n pt = toPt(px, precision);\n match = findMatchingValue$1(items, pt, px);\n }\n }\n self.value(match ? match : null);\n if (!match) {\n self.text(pt);\n }\n });\n };\n };\n var getFontSizeItems = function (editor) {\n var defaultFontsizeFormats = '8pt 10pt 12pt 14pt 18pt 24pt 36pt';\n var fontsizeFormats = editor.settings.fontsize_formats || defaultFontsizeFormats;\n return global$2.map(fontsizeFormats.split(' '), function (item) {\n var text = item, value = item;\n var values = item.split('=');\n if (values.length > 1) {\n text = values[0];\n value = values[1];\n }\n return {\n text: text,\n value: value\n };\n });\n };\n var registerButtons$1 = function (editor) {\n editor.addButton('fontsizeselect', function () {\n var items = getFontSizeItems(editor);\n return {\n type: 'listbox',\n text: 'Font Sizes',\n tooltip: 'Font Sizes',\n values: items,\n fixedWidth: true,\n onPostRender: createFontSizeListBoxChangeHandler(editor, items),\n onclick: function (e) {\n if (e.control.settings.value) {\n editor.execCommand('FontSize', false, e.control.settings.value);\n }\n }\n };\n });\n };\n var register$2 = function (editor) {\n registerButtons$1(editor);\n };\n var $_fnu5cxx4jkmcwss4 = { register: register$2 };\n\n var hideMenuObjects = function (editor, menu) {\n var count = menu.length;\n global$2.each(menu, function (item) {\n if (item.menu) {\n item.hidden = hideMenuObjects(editor, item.menu) === 0;\n }\n var formatName = item.format;\n if (formatName) {\n item.hidden = !editor.formatter.canApply(formatName);\n }\n if (item.hidden) {\n count--;\n }\n });\n return count;\n };\n var hideFormatMenuItems = function (editor, menu) {\n var count = menu.items().length;\n menu.items().each(function (item) {\n if (item.menu) {\n item.visible(hideFormatMenuItems(editor, item.menu) > 0);\n }\n if (!item.menu && item.settings.menu) {\n item.visible(hideMenuObjects(editor, item.settings.menu) > 0);\n }\n var formatName = item.settings.format;\n if (formatName) {\n item.visible(editor.formatter.canApply(formatName));\n }\n if (!item.visible()) {\n count--;\n }\n });\n return count;\n };\n var createFormatMenu = function (editor) {\n var count = 0;\n var newFormats = [];\n var defaultStyleFormats = [\n {\n title: 'Headings',\n items: [\n {\n title: 'Heading 1',\n format: 'h1'\n },\n {\n title: 'Heading 2',\n format: 'h2'\n },\n {\n title: 'Heading 3',\n format: 'h3'\n },\n {\n title: 'Heading 4',\n format: 'h4'\n },\n {\n title: 'Heading 5',\n format: 'h5'\n },\n {\n title: 'Heading 6',\n format: 'h6'\n }\n ]\n },\n {\n title: 'Inline',\n items: [\n {\n title: 'Bold',\n icon: 'bold',\n format: 'bold'\n },\n {\n title: 'Italic',\n icon: 'italic',\n format: 'italic'\n },\n {\n title: 'Underline',\n icon: 'underline',\n format: 'underline'\n },\n {\n title: 'Strikethrough',\n icon: 'strikethrough',\n format: 'strikethrough'\n },\n {\n title: 'Superscript',\n icon: 'superscript',\n format: 'superscript'\n },\n {\n title: 'Subscript',\n icon: 'subscript',\n format: 'subscript'\n },\n {\n title: 'Code',\n icon: 'code',\n format: 'code'\n }\n ]\n },\n {\n title: 'Blocks',\n items: [\n {\n title: 'Paragraph',\n format: 'p'\n },\n {\n title: 'Blockquote',\n format: 'blockquote'\n },\n {\n title: 'Div',\n format: 'div'\n },\n {\n title: 'Pre',\n format: 'pre'\n }\n ]\n },\n {\n title: 'Alignment',\n items: [\n {\n title: 'Left',\n icon: 'alignleft',\n format: 'alignleft'\n },\n {\n title: 'Center',\n icon: 'aligncenter',\n format: 'aligncenter'\n },\n {\n title: 'Right',\n icon: 'alignright',\n format: 'alignright'\n },\n {\n title: 'Justify',\n icon: 'alignjustify',\n format: 'alignjustify'\n }\n ]\n }\n ];\n var createMenu = function (formats) {\n var menu = [];\n if (!formats) {\n return;\n }\n global$2.each(formats, function (format) {\n var menuItem = {\n text: format.title,\n icon: format.icon\n };\n if (format.items) {\n menuItem.menu = createMenu(format.items);\n } else {\n var formatName = format.format || 'custom' + count++;\n if (!format.format) {\n format.name = formatName;\n newFormats.push(format);\n }\n menuItem.format = formatName;\n menuItem.cmd = format.cmd;\n }\n menu.push(menuItem);\n });\n return menu;\n };\n var createStylesMenu = function () {\n var menu;\n if (editor.settings.style_formats_merge) {\n if (editor.settings.style_formats) {\n menu = createMenu(defaultStyleFormats.concat(editor.settings.style_formats));\n } else {\n menu = createMenu(defaultStyleFormats);\n }\n } else {\n menu = createMenu(editor.settings.style_formats || defaultStyleFormats);\n }\n return menu;\n };\n editor.on('init', function () {\n global$2.each(newFormats, function (format) {\n editor.formatter.register(format.name, format);\n });\n });\n return {\n type: 'menu',\n items: createStylesMenu(),\n onPostRender: function (e) {\n editor.fire('renderFormatsMenu', { control: e.control });\n },\n itemDefaults: {\n preview: true,\n textStyle: function () {\n if (this.settings.format) {\n return editor.formatter.getCssText(this.settings.format);\n }\n },\n onPostRender: function () {\n var self = this;\n self.parent().on('show', function () {\n var formatName, command;\n formatName = self.settings.format;\n if (formatName) {\n self.disabled(!editor.formatter.canApply(formatName));\n self.active(editor.formatter.match(formatName));\n }\n command = self.settings.cmd;\n if (command) {\n self.active(editor.queryCommandState(command));\n }\n });\n },\n onclick: function () {\n if (this.settings.format) {\n toggleFormat(editor, this.settings.format)();\n }\n if (this.settings.cmd) {\n editor.execCommand(this.settings.cmd);\n }\n }\n }\n };\n };\n var registerMenuItems = function (editor, formatMenu) {\n editor.addMenuItem('formats', {\n text: 'Formats',\n menu: formatMenu\n });\n };\n var registerButtons$2 = function (editor, formatMenu) {\n editor.addButton('styleselect', {\n type: 'menubutton',\n text: 'Formats',\n menu: formatMenu,\n onShowMenu: function () {\n if (editor.settings.style_formats_autohide) {\n hideFormatMenuItems(editor, this.menu);\n }\n }\n });\n };\n var register$3 = function (editor) {\n var formatMenu = createFormatMenu(editor);\n registerMenuItems(editor, formatMenu);\n registerButtons$2(editor, formatMenu);\n };\n var $_cmdomhx5jkmcwss6 = { register: register$3 };\n\n var defaultBlocks = 'Paragraph=p;' + 'Heading 1=h1;' + 'Heading 2=h2;' + 'Heading 3=h3;' + 'Heading 4=h4;' + 'Heading 5=h5;' + 'Heading 6=h6;' + 'Preformatted=pre';\n var createFormats$1 = function (formats) {\n formats = formats.replace(/;$/, '').split(';');\n var i = formats.length;\n while (i--) {\n formats[i] = formats[i].split('=');\n }\n return formats;\n };\n var createListBoxChangeHandler = function (editor, items, formatName) {\n return function () {\n var self = this;\n editor.on('nodeChange', function (e) {\n var formatter = editor.formatter;\n var value = null;\n global$2.each(e.parents, function (node) {\n global$2.each(items, function (item) {\n if (formatName) {\n if (formatter.matchNode(node, formatName, { value: item.value })) {\n value = item.value;\n }\n } else {\n if (formatter.matchNode(node, item.value)) {\n value = item.value;\n }\n }\n if (value) {\n return false;\n }\n });\n if (value) {\n return false;\n }\n });\n self.value(value);\n });\n };\n };\n var lazyFormatSelectBoxItems = function (editor, blocks) {\n return function () {\n var items = [];\n global$2.each(blocks, function (block) {\n items.push({\n text: block[0],\n value: block[1],\n textStyle: function () {\n return editor.formatter.getCssText(block[1]);\n }\n });\n });\n return {\n type: 'listbox',\n text: blocks[0][0],\n values: items,\n fixedWidth: true,\n onselect: function (e) {\n if (e.control) {\n var fmt = e.control.value();\n toggleFormat(editor, fmt)();\n }\n },\n onPostRender: createListBoxChangeHandler(editor, items)\n };\n };\n };\n var buildMenuItems = function (editor, blocks) {\n return global$2.map(blocks, function (block) {\n return {\n text: block[0],\n onclick: toggleFormat(editor, block[1]),\n textStyle: function () {\n return editor.formatter.getCssText(block[1]);\n }\n };\n });\n };\n var register$4 = function (editor) {\n var blocks = createFormats$1(editor.settings.block_formats || defaultBlocks);\n editor.addMenuItem('blockformats', {\n text: 'Blocks',\n menu: buildMenuItems(editor, blocks)\n });\n editor.addButton('formatselect', lazyFormatSelectBoxItems(editor, blocks));\n };\n var $_cl4rffx6jkmcwssb = { register: register$4 };\n\n var createCustomMenuItems = function (editor, names) {\n var items, nameList;\n if (typeof names === 'string') {\n nameList = names.split(' ');\n } else if (global$2.isArray(names)) {\n return flatten(global$2.map(names, function (names) {\n return createCustomMenuItems(editor, names);\n }));\n }\n items = global$2.grep(nameList, function (name) {\n return name === '|' || name in editor.menuItems;\n });\n return global$2.map(items, function (name) {\n return name === '|' ? { text: '-' } : editor.menuItems[name];\n });\n };\n var isSeparator$1 = function (menuItem) {\n return menuItem && menuItem.text === '-';\n };\n var trimMenuItems = function (menuItems) {\n var menuItems2 = filter(menuItems, function (menuItem, i, menuItems) {\n return !isSeparator$1(menuItem) || !isSeparator$1(menuItems[i - 1]);\n });\n return filter(menuItems2, function (menuItem, i, menuItems) {\n return !isSeparator$1(menuItem) || i > 0 && i < menuItems.length - 1;\n });\n };\n var createContextMenuItems = function (editor, context) {\n var outputMenuItems = [{ text: '-' }];\n var menuItems = global$2.grep(editor.menuItems, function (menuItem) {\n return menuItem.context === context;\n });\n global$2.each(menuItems, function (menuItem) {\n if (menuItem.separator === 'before') {\n outputMenuItems.push({ text: '|' });\n }\n if (menuItem.prependToContext) {\n outputMenuItems.unshift(menuItem);\n } else {\n outputMenuItems.push(menuItem);\n }\n if (menuItem.separator === 'after') {\n outputMenuItems.push({ text: '|' });\n }\n });\n return outputMenuItems;\n };\n var createInsertMenu = function (editor) {\n var insertButtonItems = editor.settings.insert_button_items;\n if (insertButtonItems) {\n return trimMenuItems(createCustomMenuItems(editor, insertButtonItems));\n } else {\n return trimMenuItems(createContextMenuItems(editor, 'insert'));\n }\n };\n var registerButtons$3 = function (editor) {\n editor.addButton('insert', {\n type: 'menubutton',\n icon: 'insert',\n menu: [],\n oncreatemenu: function () {\n this.menu.add(createInsertMenu(editor));\n this.menu.renderNew();\n }\n });\n };\n var register$5 = function (editor) {\n registerButtons$3(editor);\n };\n var $_7ix8zax7jkmcwssd = { register: register$5 };\n\n var registerFormatButtons = function (editor) {\n global$2.each({\n bold: 'Bold',\n italic: 'Italic',\n underline: 'Underline',\n strikethrough: 'Strikethrough',\n subscript: 'Subscript',\n superscript: 'Superscript'\n }, function (text, name) {\n editor.addButton(name, {\n active: false,\n tooltip: text,\n onPostRender: postRenderFormatToggle(editor, name),\n onclick: toggleFormat(editor, name)\n });\n });\n };\n var registerCommandButtons = function (editor) {\n global$2.each({\n outdent: [\n 'Decrease indent',\n 'Outdent'\n ],\n indent: [\n 'Increase indent',\n 'Indent'\n ],\n cut: [\n 'Cut',\n 'Cut'\n ],\n copy: [\n 'Copy',\n 'Copy'\n ],\n paste: [\n 'Paste',\n 'Paste'\n ],\n help: [\n 'Help',\n 'mceHelp'\n ],\n selectall: [\n 'Select all',\n 'SelectAll'\n ],\n visualaid: [\n 'Visual aids',\n 'mceToggleVisualAid'\n ],\n newdocument: [\n 'New document',\n 'mceNewDocument'\n ],\n removeformat: [\n 'Clear formatting',\n 'RemoveFormat'\n ],\n remove: [\n 'Remove',\n 'Delete'\n ]\n }, function (item, name) {\n editor.addButton(name, {\n tooltip: item[0],\n cmd: item[1]\n });\n });\n };\n var registerCommandToggleButtons = function (editor) {\n global$2.each({\n blockquote: [\n 'Blockquote',\n 'mceBlockQuote'\n ],\n subscript: [\n 'Subscript',\n 'Subscript'\n ],\n superscript: [\n 'Superscript',\n 'Superscript'\n ]\n }, function (item, name) {\n editor.addButton(name, {\n active: false,\n tooltip: item[0],\n cmd: item[1],\n onPostRender: postRenderFormatToggle(editor, name)\n });\n });\n };\n var registerButtons$4 = function (editor) {\n registerFormatButtons(editor);\n registerCommandButtons(editor);\n registerCommandToggleButtons(editor);\n };\n var registerMenuItems$1 = function (editor) {\n global$2.each({\n bold: [\n 'Bold',\n 'Bold',\n 'Meta+B'\n ],\n italic: [\n 'Italic',\n 'Italic',\n 'Meta+I'\n ],\n underline: [\n 'Underline',\n 'Underline',\n 'Meta+U'\n ],\n strikethrough: [\n 'Strikethrough',\n 'Strikethrough'\n ],\n subscript: [\n 'Subscript',\n 'Subscript'\n ],\n superscript: [\n 'Superscript',\n 'Superscript'\n ],\n removeformat: [\n 'Clear formatting',\n 'RemoveFormat'\n ],\n newdocument: [\n 'New document',\n 'mceNewDocument'\n ],\n cut: [\n 'Cut',\n 'Cut',\n 'Meta+X'\n ],\n copy: [\n 'Copy',\n 'Copy',\n 'Meta+C'\n ],\n paste: [\n 'Paste',\n 'Paste',\n 'Meta+V'\n ],\n selectall: [\n 'Select all',\n 'SelectAll',\n 'Meta+A'\n ]\n }, function (item, name) {\n editor.addMenuItem(name, {\n text: item[0],\n icon: name,\n shortcut: item[2],\n cmd: item[1]\n });\n });\n editor.addMenuItem('codeformat', {\n text: 'Code',\n icon: 'code',\n onclick: toggleFormat(editor, 'code')\n });\n };\n var register$6 = function (editor) {\n registerButtons$4(editor);\n registerMenuItems$1(editor);\n };\n var $_gbsmm2x8jkmcwssh = { register: register$6 };\n\n var toggleUndoRedoState = function (editor, type) {\n return function () {\n var self = this;\n var checkState = function () {\n var typeFn = type === 'redo' ? 'hasRedo' : 'hasUndo';\n return editor.undoManager ? editor.undoManager[typeFn]() : false;\n };\n self.disabled(!checkState());\n editor.on('Undo Redo AddUndo TypingUndo ClearUndos SwitchMode', function () {\n self.disabled(editor.readonly || !checkState());\n });\n };\n };\n var registerMenuItems$2 = function (editor) {\n editor.addMenuItem('undo', {\n text: 'Undo',\n icon: 'undo',\n shortcut: 'Meta+Z',\n onPostRender: toggleUndoRedoState(editor, 'undo'),\n cmd: 'undo'\n });\n editor.addMenuItem('redo', {\n text: 'Redo',\n icon: 'redo',\n shortcut: 'Meta+Y',\n onPostRender: toggleUndoRedoState(editor, 'redo'),\n cmd: 'redo'\n });\n };\n var registerButtons$5 = function (editor) {\n editor.addButton('undo', {\n tooltip: 'Undo',\n onPostRender: toggleUndoRedoState(editor, 'undo'),\n cmd: 'undo'\n });\n editor.addButton('redo', {\n tooltip: 'Redo',\n onPostRender: toggleUndoRedoState(editor, 'redo'),\n cmd: 'redo'\n });\n };\n var register$7 = function (editor) {\n registerMenuItems$2(editor);\n registerButtons$5(editor);\n };\n var $_1bdkmax9jkmcwssr = { register: register$7 };\n\n var toggleVisualAidState = function (editor) {\n return function () {\n var self = this;\n editor.on('VisualAid', function (e) {\n self.active(e.hasVisual);\n });\n self.active(editor.hasVisual);\n };\n };\n var registerMenuItems$3 = function (editor) {\n editor.addMenuItem('visualaid', {\n text: 'Visual aids',\n selectable: true,\n onPostRender: toggleVisualAidState(editor),\n cmd: 'mceToggleVisualAid'\n });\n };\n var register$8 = function (editor) {\n registerMenuItems$3(editor);\n };\n var $_21pl3hxajkmcwsst = { register: register$8 };\n\n var setupEnvironment = function () {\n Widget.tooltips = !global$8.iOS;\n Control$1.translate = function (text) {\n return global$1.translate(text);\n };\n };\n var setupUiContainer = function (editor) {\n if (editor.settings.ui_container) {\n global$8.container = $_epq3p6wyjkmcwsrh.descendant(Element$$1.fromDom(document.body), editor.settings.ui_container).fold(constant(null), function (elm) {\n return elm.dom();\n });\n }\n };\n var setupRtlMode = function (editor) {\n if (editor.rtl) {\n Control$1.rtl = true;\n }\n };\n var setupHideFloatPanels = function (editor) {\n editor.on('mousedown', function () {\n FloatPanel.hideAll();\n });\n };\n var setup$1 = function (editor) {\n setupRtlMode(editor);\n setupHideFloatPanels(editor);\n setupUiContainer(editor);\n setupEnvironment();\n $_cl4rffx6jkmcwssb.register(editor);\n $_ffg0cgx1jkmcwsrx.register(editor);\n $_gbsmm2x8jkmcwssh.register(editor);\n $_1bdkmax9jkmcwssr.register(editor);\n $_fnu5cxx4jkmcwss4.register(editor);\n $_1be6fjx3jkmcwss1.register(editor);\n $_cmdomhx5jkmcwss6.register(editor);\n $_21pl3hxajkmcwsst.register(editor);\n $_7ix8zax7jkmcwssd.register(editor);\n };\n var $_drujjnwxjkmcwsrc = { setup: setup$1 };\n\n var GridLayout = AbsoluteLayout.extend({\n recalc: function (container) {\n var settings, rows, cols, items, contLayoutRect, width, height, rect, ctrlLayoutRect, ctrl, x, y, posX, posY, ctrlSettings, contPaddingBox, align, spacingH, spacingV, alignH, alignV, maxX, maxY;\n var colWidths = [];\n var rowHeights = [];\n var ctrlMinWidth, ctrlMinHeight, availableWidth, availableHeight, reverseRows, idx;\n settings = container.settings;\n items = container.items().filter(':visible');\n contLayoutRect = container.layoutRect();\n cols = settings.columns || Math.ceil(Math.sqrt(items.length));\n rows = Math.ceil(items.length / cols);\n spacingH = settings.spacingH || settings.spacing || 0;\n spacingV = settings.spacingV || settings.spacing || 0;\n alignH = settings.alignH || settings.align;\n alignV = settings.alignV || settings.align;\n contPaddingBox = container.paddingBox;\n reverseRows = 'reverseRows' in settings ? settings.reverseRows : container.isRtl();\n if (alignH && typeof alignH === 'string') {\n alignH = [alignH];\n }\n if (alignV && typeof alignV === 'string') {\n alignV = [alignV];\n }\n for (x = 0; x < cols; x++) {\n colWidths.push(0);\n }\n for (y = 0; y < rows; y++) {\n rowHeights.push(0);\n }\n for (y = 0; y < rows; y++) {\n for (x = 0; x < cols; x++) {\n ctrl = items[y * cols + x];\n if (!ctrl) {\n break;\n }\n ctrlLayoutRect = ctrl.layoutRect();\n ctrlMinWidth = ctrlLayoutRect.minW;\n ctrlMinHeight = ctrlLayoutRect.minH;\n colWidths[x] = ctrlMinWidth > colWidths[x] ? ctrlMinWidth : colWidths[x];\n rowHeights[y] = ctrlMinHeight > rowHeights[y] ? ctrlMinHeight : rowHeights[y];\n }\n }\n availableWidth = contLayoutRect.innerW - contPaddingBox.left - contPaddingBox.right;\n for (maxX = 0, x = 0; x < cols; x++) {\n maxX += colWidths[x] + (x > 0 ? spacingH : 0);\n availableWidth -= (x > 0 ? spacingH : 0) + colWidths[x];\n }\n availableHeight = contLayoutRect.innerH - contPaddingBox.top - contPaddingBox.bottom;\n for (maxY = 0, y = 0; y < rows; y++) {\n maxY += rowHeights[y] + (y > 0 ? spacingV : 0);\n availableHeight -= (y > 0 ? spacingV : 0) + rowHeights[y];\n }\n maxX += contPaddingBox.left + contPaddingBox.right;\n maxY += contPaddingBox.top + contPaddingBox.bottom;\n rect = {};\n rect.minW = maxX + (contLayoutRect.w - contLayoutRect.innerW);\n rect.minH = maxY + (contLayoutRect.h - contLayoutRect.innerH);\n rect.contentW = rect.minW - contLayoutRect.deltaW;\n rect.contentH = rect.minH - contLayoutRect.deltaH;\n rect.minW = Math.min(rect.minW, contLayoutRect.maxW);\n rect.minH = Math.min(rect.minH, contLayoutRect.maxH);\n rect.minW = Math.max(rect.minW, contLayoutRect.startMinWidth);\n rect.minH = Math.max(rect.minH, contLayoutRect.startMinHeight);\n if (contLayoutRect.autoResize && (rect.minW !== contLayoutRect.minW || rect.minH !== contLayoutRect.minH)) {\n rect.w = rect.minW;\n rect.h = rect.minH;\n container.layoutRect(rect);\n this.recalc(container);\n if (container._lastRect === null) {\n var parentCtrl = container.parent();\n if (parentCtrl) {\n parentCtrl._lastRect = null;\n parentCtrl.recalc();\n }\n }\n return;\n }\n if (contLayoutRect.autoResize) {\n rect = container.layoutRect(rect);\n rect.contentW = rect.minW - contLayoutRect.deltaW;\n rect.contentH = rect.minH - contLayoutRect.deltaH;\n }\n var flexV;\n if (settings.packV === 'start') {\n flexV = 0;\n } else {\n flexV = availableHeight > 0 ? Math.floor(availableHeight / rows) : 0;\n }\n var totalFlex = 0;\n var flexWidths = settings.flexWidths;\n if (flexWidths) {\n for (x = 0; x < flexWidths.length; x++) {\n totalFlex += flexWidths[x];\n }\n } else {\n totalFlex = cols;\n }\n var ratio = availableWidth / totalFlex;\n for (x = 0; x < cols; x++) {\n colWidths[x] += flexWidths ? flexWidths[x] * ratio : ratio;\n }\n posY = contPaddingBox.top;\n for (y = 0; y < rows; y++) {\n posX = contPaddingBox.left;\n height = rowHeights[y] + flexV;\n for (x = 0; x < cols; x++) {\n if (reverseRows) {\n idx = y * cols + cols - 1 - x;\n } else {\n idx = y * cols + x;\n }\n ctrl = items[idx];\n if (!ctrl) {\n break;\n }\n ctrlSettings = ctrl.settings;\n ctrlLayoutRect = ctrl.layoutRect();\n width = Math.max(colWidths[x], ctrlLayoutRect.startMinWidth);\n ctrlLayoutRect.x = posX;\n ctrlLayoutRect.y = posY;\n align = ctrlSettings.alignH || (alignH ? alignH[x] || alignH[0] : null);\n if (align === 'center') {\n ctrlLayoutRect.x = posX + width / 2 - ctrlLayoutRect.w / 2;\n } else if (align === 'right') {\n ctrlLayoutRect.x = posX + width - ctrlLayoutRect.w;\n } else if (align === 'stretch') {\n ctrlLayoutRect.w = width;\n }\n align = ctrlSettings.alignV || (alignV ? alignV[x] || alignV[0] : null);\n if (align === 'center') {\n ctrlLayoutRect.y = posY + height / 2 - ctrlLayoutRect.h / 2;\n } else if (align === 'bottom') {\n ctrlLayoutRect.y = posY + height - ctrlLayoutRect.h;\n } else if (align === 'stretch') {\n ctrlLayoutRect.h = height;\n }\n ctrl.layoutRect(ctrlLayoutRect);\n posX += width + spacingH;\n if (ctrl.recalc) {\n ctrl.recalc();\n }\n }\n posY += height + spacingV;\n }\n }\n });\n\n var Iframe$1 = Widget.extend({\n renderHtml: function () {\n var self = this;\n self.classes.add('iframe');\n self.canFocus = false;\n return '';\n },\n src: function (src) {\n this.getEl().src = src;\n },\n html: function (html, callback) {\n var self = this, body = this.getEl().contentWindow.document.body;\n if (!body) {\n global$7.setTimeout(function () {\n self.html(html);\n });\n } else {\n body.innerHTML = html;\n if (callback) {\n callback();\n }\n }\n return this;\n }\n });\n\n var InfoBox = Widget.extend({\n init: function (settings) {\n var self = this;\n self._super(settings);\n self.classes.add('widget').add('infobox');\n self.canFocus = false;\n },\n severity: function (level) {\n this.classes.remove('error');\n this.classes.remove('warning');\n this.classes.remove('success');\n this.classes.add(level);\n },\n help: function (state) {\n this.state.set('help', state);\n },\n renderHtml: function () {\n var self = this, prefix = self.classPrefix;\n return '
    ' + '
    ' + self.encode(self.state.get('text')) + '' + '
    ' + '
    ';\n },\n bindStates: function () {\n var self = this;\n self.state.on('change:text', function (e) {\n self.getEl('body').firstChild.data = self.encode(e.value);\n if (self.state.get('rendered')) {\n self.updateLayoutRect();\n }\n });\n self.state.on('change:help', function (e) {\n self.classes.toggle('has-help', e.value);\n if (self.state.get('rendered')) {\n self.updateLayoutRect();\n }\n });\n return self._super();\n }\n });\n\n var Label = Widget.extend({\n init: function (settings) {\n var self = this;\n self._super(settings);\n self.classes.add('widget').add('label');\n self.canFocus = false;\n if (settings.multiline) {\n self.classes.add('autoscroll');\n }\n if (settings.strong) {\n self.classes.add('strong');\n }\n },\n initLayoutRect: function () {\n var self = this, layoutRect = self._super();\n if (self.settings.multiline) {\n var size = funcs.getSize(self.getEl());\n if (size.width > layoutRect.maxW) {\n layoutRect.minW = layoutRect.maxW;\n self.classes.add('multiline');\n }\n self.getEl().style.width = layoutRect.minW + 'px';\n layoutRect.startMinH = layoutRect.h = layoutRect.minH = Math.min(layoutRect.maxH, funcs.getSize(self.getEl()).height);\n }\n return layoutRect;\n },\n repaint: function () {\n var self = this;\n if (!self.settings.multiline) {\n self.getEl().style.lineHeight = self.layoutRect().h + 'px';\n }\n return self._super();\n },\n severity: function (level) {\n this.classes.remove('error');\n this.classes.remove('warning');\n this.classes.remove('success');\n this.classes.add(level);\n },\n renderHtml: function () {\n var self = this;\n var targetCtrl, forName, forId = self.settings.forId;\n var text = self.settings.html ? self.settings.html : self.encode(self.state.get('text'));\n if (!forId && (forName = self.settings.forName)) {\n targetCtrl = self.getRoot().find('#' + forName)[0];\n if (targetCtrl) {\n forId = targetCtrl._id;\n }\n }\n if (forId) {\n return '';\n }\n return '' + text + '';\n },\n bindStates: function () {\n var self = this;\n self.state.on('change:text', function (e) {\n self.innerHtml(self.encode(e.value));\n if (self.state.get('rendered')) {\n self.updateLayoutRect();\n }\n });\n return self._super();\n }\n });\n\n var Toolbar$1 = Container.extend({\n Defaults: {\n role: 'toolbar',\n layout: 'flow'\n },\n init: function (settings) {\n var self = this;\n self._super(settings);\n self.classes.add('toolbar');\n },\n postRender: function () {\n var self = this;\n self.items().each(function (ctrl) {\n ctrl.classes.add('toolbar-item');\n });\n return self._super();\n }\n });\n\n var MenuBar = Toolbar$1.extend({\n Defaults: {\n role: 'menubar',\n containerCls: 'menubar',\n ariaRoot: true,\n defaults: { type: 'menubutton' }\n }\n });\n\n function isChildOf$1(node, parent$$1) {\n while (node) {\n if (parent$$1 === node) {\n return true;\n }\n node = node.parentNode;\n }\n return false;\n }\n var MenuButton = Button.extend({\n init: function (settings) {\n var self$$1 = this;\n self$$1._renderOpen = true;\n self$$1._super(settings);\n settings = self$$1.settings;\n self$$1.classes.add('menubtn');\n if (settings.fixedWidth) {\n self$$1.classes.add('fixed-width');\n }\n self$$1.aria('haspopup', true);\n self$$1.state.set('menu', settings.menu || self$$1.render());\n },\n showMenu: function (toggle) {\n var self$$1 = this;\n var menu;\n if (self$$1.menu && self$$1.menu.visible() && toggle !== false) {\n return self$$1.hideMenu();\n }\n if (!self$$1.menu) {\n menu = self$$1.state.get('menu') || [];\n self$$1.classes.add('opened');\n if (menu.length) {\n menu = {\n type: 'menu',\n animate: true,\n items: menu\n };\n } else {\n menu.type = menu.type || 'menu';\n menu.animate = true;\n }\n if (!menu.renderTo) {\n self$$1.menu = global$4.create(menu).parent(self$$1).renderTo();\n } else {\n self$$1.menu = menu.parent(self$$1).show().renderTo();\n }\n self$$1.fire('createmenu');\n self$$1.menu.reflow();\n self$$1.menu.on('cancel', function (e) {\n if (e.control.parent() === self$$1.menu) {\n e.stopPropagation();\n self$$1.focus();\n self$$1.hideMenu();\n }\n });\n self$$1.menu.on('select', function () {\n self$$1.focus();\n });\n self$$1.menu.on('show hide', function (e) {\n if (e.control === self$$1.menu) {\n self$$1.activeMenu(e.type === 'show');\n self$$1.classes.toggle('opened', e.type === 'show');\n }\n self$$1.aria('expanded', e.type === 'show');\n }).fire('show');\n }\n self$$1.menu.show();\n self$$1.menu.layoutRect({ w: self$$1.layoutRect().w });\n self$$1.menu.repaint();\n self$$1.menu.moveRel(self$$1.getEl(), self$$1.isRtl() ? [\n 'br-tr',\n 'tr-br'\n ] : [\n 'bl-tl',\n 'tl-bl'\n ]);\n self$$1.fire('showmenu');\n },\n hideMenu: function () {\n var self$$1 = this;\n if (self$$1.menu) {\n self$$1.menu.items().each(function (item) {\n if (item.hideMenu) {\n item.hideMenu();\n }\n });\n self$$1.menu.hide();\n }\n },\n activeMenu: function (state) {\n this.classes.toggle('active', state);\n },\n renderHtml: function () {\n var self$$1 = this, id = self$$1._id, prefix = self$$1.classPrefix;\n var icon = self$$1.settings.icon, image;\n var text = self$$1.state.get('text');\n var textHtml = '';\n image = self$$1.settings.image;\n if (image) {\n icon = 'none';\n if (typeof image !== 'string') {\n image = window.getSelection ? image[0] : image[1];\n }\n image = ' style=\"background-image: url(\\'' + image + '\\')\"';\n } else {\n image = '';\n }\n if (text) {\n self$$1.classes.add('btn-has-text');\n textHtml = '' + self$$1.encode(text) + '';\n }\n icon = self$$1.settings.icon ? prefix + 'ico ' + prefix + 'i-' + icon : '';\n self$$1.aria('role', self$$1.parent() instanceof MenuBar ? 'menuitem' : 'button');\n return '
    ' + '' + '
    ';\n },\n postRender: function () {\n var self$$1 = this;\n self$$1.on('click', function (e) {\n if (e.control === self$$1 && isChildOf$1(e.target, self$$1.getEl())) {\n self$$1.focus();\n self$$1.showMenu(!e.aria);\n if (e.aria) {\n self$$1.menu.items().filter(':visible')[0].focus();\n }\n }\n });\n self$$1.on('mouseenter', function (e) {\n var overCtrl = e.control;\n var parent$$1 = self$$1.parent();\n var hasVisibleSiblingMenu;\n if (overCtrl && parent$$1 && overCtrl instanceof MenuButton && overCtrl.parent() === parent$$1) {\n parent$$1.items().filter('MenuButton').each(function (ctrl) {\n if (ctrl.hideMenu && ctrl !== overCtrl) {\n if (ctrl.menu && ctrl.menu.visible()) {\n hasVisibleSiblingMenu = true;\n }\n ctrl.hideMenu();\n }\n });\n if (hasVisibleSiblingMenu) {\n overCtrl.focus();\n overCtrl.showMenu();\n }\n }\n });\n return self$$1._super();\n },\n bindStates: function () {\n var self$$1 = this;\n self$$1.state.on('change:menu', function () {\n if (self$$1.menu) {\n self$$1.menu.remove();\n }\n self$$1.menu = null;\n });\n return self$$1._super();\n },\n remove: function () {\n this._super();\n if (this.menu) {\n this.menu.remove();\n }\n }\n });\n\n var Menu = FloatPanel.extend({\n Defaults: {\n defaultType: 'menuitem',\n border: 1,\n layout: 'stack',\n role: 'application',\n bodyRole: 'menu',\n ariaRoot: true\n },\n init: function (settings) {\n var self = this;\n settings.autohide = true;\n settings.constrainToViewport = true;\n if (typeof settings.items === 'function') {\n settings.itemsFactory = settings.items;\n settings.items = [];\n }\n if (settings.itemDefaults) {\n var items = settings.items;\n var i = items.length;\n while (i--) {\n items[i] = global$2.extend({}, settings.itemDefaults, items[i]);\n }\n }\n self._super(settings);\n self.classes.add('menu');\n if (settings.animate && global$8.ie !== 11) {\n self.classes.add('animate');\n }\n },\n repaint: function () {\n this.classes.toggle('menu-align', true);\n this._super();\n this.getEl().style.height = '';\n this.getEl('body').style.height = '';\n return this;\n },\n cancel: function () {\n var self = this;\n self.hideAll();\n self.fire('select');\n },\n load: function () {\n var self = this;\n var time, factory;\n function hideThrobber() {\n if (self.throbber) {\n self.throbber.hide();\n self.throbber = null;\n }\n }\n factory = self.settings.itemsFactory;\n if (!factory) {\n return;\n }\n if (!self.throbber) {\n self.throbber = new Throbber(self.getEl('body'), true);\n if (self.items().length === 0) {\n self.throbber.show();\n self.fire('loading');\n } else {\n self.throbber.show(100, function () {\n self.items().remove();\n self.fire('loading');\n });\n }\n self.on('hide close', hideThrobber);\n }\n self.requestTime = time = new Date().getTime();\n self.settings.itemsFactory(function (items) {\n if (items.length === 0) {\n self.hide();\n return;\n }\n if (self.requestTime !== time) {\n return;\n }\n self.getEl().style.width = '';\n self.getEl('body').style.width = '';\n hideThrobber();\n self.items().remove();\n self.getEl('body').innerHTML = '';\n self.add(items);\n self.renderNew();\n self.fire('loaded');\n });\n },\n hideAll: function () {\n var self = this;\n this.find('menuitem').exec('hideMenu');\n return self._super();\n },\n preRender: function () {\n var self = this;\n self.items().each(function (ctrl) {\n var settings = ctrl.settings;\n if (settings.icon || settings.image || settings.selectable) {\n self._hasIcons = true;\n return false;\n }\n });\n if (self.settings.itemsFactory) {\n self.on('postrender', function () {\n if (self.settings.itemsFactory) {\n self.load();\n }\n });\n }\n self.on('show hide', function (e) {\n if (e.control === self) {\n if (e.type === 'show') {\n global$7.setTimeout(function () {\n self.classes.add('in');\n }, 0);\n } else {\n self.classes.remove('in');\n }\n }\n });\n return self._super();\n }\n });\n\n var ListBox = MenuButton.extend({\n init: function (settings) {\n var self = this;\n var values, selected, selectedText, lastItemCtrl;\n function setSelected(menuValues) {\n for (var i = 0; i < menuValues.length; i++) {\n selected = menuValues[i].selected || settings.value === menuValues[i].value;\n if (selected) {\n selectedText = selectedText || menuValues[i].text;\n self.state.set('value', menuValues[i].value);\n return true;\n }\n if (menuValues[i].menu) {\n if (setSelected(menuValues[i].menu)) {\n return true;\n }\n }\n }\n }\n self._super(settings);\n settings = self.settings;\n self._values = values = settings.values;\n if (values) {\n if (typeof settings.value !== 'undefined') {\n setSelected(values);\n }\n if (!selected && values.length > 0) {\n selectedText = values[0].text;\n self.state.set('value', values[0].value);\n }\n self.state.set('menu', values);\n }\n self.state.set('text', settings.text || selectedText);\n self.classes.add('listbox');\n self.on('select', function (e) {\n var ctrl = e.control;\n if (lastItemCtrl) {\n e.lastControl = lastItemCtrl;\n }\n if (settings.multiple) {\n ctrl.active(!ctrl.active());\n } else {\n self.value(e.control.value());\n }\n lastItemCtrl = ctrl;\n });\n },\n value: function (value) {\n if (arguments.length === 0) {\n return this.state.get('value');\n }\n if (typeof value === 'undefined') {\n return this;\n }\n if (this.settings.values) {\n var matchingValues = global$2.grep(this.settings.values, function (a) {\n return a.value === value;\n });\n if (matchingValues.length > 0) {\n this.state.set('value', value);\n } else if (value === null) {\n this.state.set('value', null);\n }\n } else {\n this.state.set('value', value);\n }\n return this;\n },\n bindStates: function () {\n var self = this;\n function activateMenuItemsByValue(menu, value) {\n if (menu instanceof Menu) {\n menu.items().each(function (ctrl) {\n if (!ctrl.hasMenus()) {\n ctrl.active(ctrl.value() === value);\n }\n });\n }\n }\n function getSelectedItem(menuValues, value) {\n var selectedItem;\n if (!menuValues) {\n return;\n }\n for (var i = 0; i < menuValues.length; i++) {\n if (menuValues[i].value === value) {\n return menuValues[i];\n }\n if (menuValues[i].menu) {\n selectedItem = getSelectedItem(menuValues[i].menu, value);\n if (selectedItem) {\n return selectedItem;\n }\n }\n }\n }\n self.on('show', function (e) {\n activateMenuItemsByValue(e.control, self.value());\n });\n self.state.on('change:value', function (e) {\n var selectedItem = getSelectedItem(self.state.get('menu'), e.value);\n if (selectedItem) {\n self.text(selectedItem.text);\n } else {\n self.text(self.settings.text);\n }\n });\n return self._super();\n }\n });\n\n var toggleTextStyle = function (ctrl, state) {\n var textStyle = ctrl._textStyle;\n if (textStyle) {\n var textElm = ctrl.getEl('text');\n textElm.setAttribute('style', textStyle);\n if (state) {\n textElm.style.color = '';\n textElm.style.backgroundColor = '';\n }\n }\n };\n var MenuItem = Widget.extend({\n Defaults: {\n border: 0,\n role: 'menuitem'\n },\n init: function (settings) {\n var self = this;\n var text;\n self._super(settings);\n settings = self.settings;\n self.classes.add('menu-item');\n if (settings.menu) {\n self.classes.add('menu-item-expand');\n }\n if (settings.preview) {\n self.classes.add('menu-item-preview');\n }\n text = self.state.get('text');\n if (text === '-' || text === '|') {\n self.classes.add('menu-item-sep');\n self.aria('role', 'separator');\n self.state.set('text', '-');\n }\n if (settings.selectable) {\n self.aria('role', 'menuitemcheckbox');\n self.classes.add('menu-item-checkbox');\n settings.icon = 'selected';\n }\n if (!settings.preview && !settings.selectable) {\n self.classes.add('menu-item-normal');\n }\n self.on('mousedown', function (e) {\n e.preventDefault();\n });\n if (settings.menu && !settings.ariaHideMenu) {\n self.aria('haspopup', true);\n }\n },\n hasMenus: function () {\n return !!this.settings.menu;\n },\n showMenu: function () {\n var self = this;\n var settings = self.settings;\n var menu;\n var parent = self.parent();\n parent.items().each(function (ctrl) {\n if (ctrl !== self) {\n ctrl.hideMenu();\n }\n });\n if (settings.menu) {\n menu = self.menu;\n if (!menu) {\n menu = settings.menu;\n if (menu.length) {\n menu = {\n type: 'menu',\n items: menu\n };\n } else {\n menu.type = menu.type || 'menu';\n }\n if (parent.settings.itemDefaults) {\n menu.itemDefaults = parent.settings.itemDefaults;\n }\n menu = self.menu = global$4.create(menu).parent(self).renderTo();\n menu.reflow();\n menu.on('cancel', function (e) {\n e.stopPropagation();\n self.focus();\n menu.hide();\n });\n menu.on('show hide', function (e) {\n if (e.control.items) {\n e.control.items().each(function (ctrl) {\n ctrl.active(ctrl.settings.selected);\n });\n }\n }).fire('show');\n menu.on('hide', function (e) {\n if (e.control === menu) {\n self.classes.remove('selected');\n }\n });\n menu.submenu = true;\n } else {\n menu.show();\n }\n menu._parentMenu = parent;\n menu.classes.add('menu-sub');\n var rel = menu.testMoveRel(self.getEl(), self.isRtl() ? [\n 'tl-tr',\n 'bl-br',\n 'tr-tl',\n 'br-bl'\n ] : [\n 'tr-tl',\n 'br-bl',\n 'tl-tr',\n 'bl-br'\n ]);\n menu.moveRel(self.getEl(), rel);\n menu.rel = rel;\n rel = 'menu-sub-' + rel;\n menu.classes.remove(menu._lastRel).add(rel);\n menu._lastRel = rel;\n self.classes.add('selected');\n self.aria('expanded', true);\n }\n },\n hideMenu: function () {\n var self = this;\n if (self.menu) {\n self.menu.items().each(function (item) {\n if (item.hideMenu) {\n item.hideMenu();\n }\n });\n self.menu.hide();\n self.aria('expanded', false);\n }\n return self;\n },\n renderHtml: function () {\n var self = this;\n var id = self._id;\n var settings = self.settings;\n var prefix = self.classPrefix;\n var text = self.state.get('text');\n var icon = self.settings.icon, image = '', shortcut = settings.shortcut;\n var url = self.encode(settings.url), iconHtml = '';\n function convertShortcut(shortcut) {\n var i, value, replace = {};\n if (global$8.mac) {\n replace = {\n alt: '⌥',\n ctrl: '⌘',\n shift: '⇧',\n meta: '⌘'\n };\n } else {\n replace = { meta: 'Ctrl' };\n }\n shortcut = shortcut.split('+');\n for (i = 0; i < shortcut.length; i++) {\n value = replace[shortcut[i].toLowerCase()];\n if (value) {\n shortcut[i] = value;\n }\n }\n return shortcut.join('+');\n }\n function escapeRegExp(str) {\n return str.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n }\n function markMatches(text) {\n var match = settings.match || '';\n return match ? text.replace(new RegExp(escapeRegExp(match), 'gi'), function (match) {\n return '!mce~match[' + match + ']mce~match!';\n }) : text;\n }\n function boldMatches(text) {\n return text.replace(new RegExp(escapeRegExp('!mce~match['), 'g'), '').replace(new RegExp(escapeRegExp(']mce~match!'), 'g'), '');\n }\n if (icon) {\n self.parent().classes.add('menu-has-icons');\n }\n if (settings.image) {\n image = ' style=\"background-image: url(\\'' + settings.image + '\\')\"';\n }\n if (shortcut) {\n shortcut = convertShortcut(shortcut);\n }\n icon = prefix + 'ico ' + prefix + 'i-' + (self.settings.icon || 'none');\n iconHtml = text !== '-' ? '\\xA0' : '';\n text = boldMatches(self.encode(markMatches(text)));\n url = boldMatches(self.encode(markMatches(url)));\n return '
    ' + iconHtml + (text !== '-' ? '' + text + '' : '') + (shortcut ? '
    ' + shortcut + '
    ' : '') + (settings.menu ? '
    ' : '') + (url ? '
    ' + url + '
    ' : '') + '
    ';\n },\n postRender: function () {\n var self = this, settings = self.settings;\n var textStyle = settings.textStyle;\n if (typeof textStyle === 'function') {\n textStyle = textStyle.call(this);\n }\n if (textStyle) {\n var textElm = self.getEl('text');\n if (textElm) {\n textElm.setAttribute('style', textStyle);\n self._textStyle = textStyle;\n }\n }\n self.on('mouseenter click', function (e) {\n if (e.control === self) {\n if (!settings.menu && e.type === 'click') {\n self.fire('select');\n global$7.requestAnimationFrame(function () {\n self.parent().hideAll();\n });\n } else {\n self.showMenu();\n if (e.aria) {\n self.menu.focus(true);\n }\n }\n }\n });\n self._super();\n return self;\n },\n hover: function () {\n var self = this;\n self.parent().items().each(function (ctrl) {\n ctrl.classes.remove('selected');\n });\n self.classes.toggle('selected', true);\n return self;\n },\n active: function (state) {\n toggleTextStyle(this, state);\n if (typeof state !== 'undefined') {\n this.aria('checked', state);\n }\n return this._super(state);\n },\n remove: function () {\n this._super();\n if (this.menu) {\n this.menu.remove();\n }\n }\n });\n\n var Radio = Checkbox.extend({\n Defaults: {\n classes: 'radio',\n role: 'radio'\n }\n });\n\n var ResizeHandle = Widget.extend({\n renderHtml: function () {\n var self = this, prefix = self.classPrefix;\n self.classes.add('resizehandle');\n if (self.settings.direction === 'both') {\n self.classes.add('resizehandle-both');\n }\n self.canFocus = false;\n return '
    ' + '' + '
    ';\n },\n postRender: function () {\n var self = this;\n self._super();\n self.resizeDragHelper = new DragHelper(this._id, {\n start: function () {\n self.fire('ResizeStart');\n },\n drag: function (e) {\n if (self.settings.direction !== 'both') {\n e.deltaX = 0;\n }\n self.fire('Resize', e);\n },\n stop: function () {\n self.fire('ResizeEnd');\n }\n });\n },\n remove: function () {\n if (this.resizeDragHelper) {\n this.resizeDragHelper.destroy();\n }\n return this._super();\n }\n });\n\n function createOptions(options) {\n var strOptions = '';\n if (options) {\n for (var i = 0; i < options.length; i++) {\n strOptions += '';\n }\n }\n return strOptions;\n }\n var SelectBox = Widget.extend({\n Defaults: {\n classes: 'selectbox',\n role: 'selectbox',\n options: []\n },\n init: function (settings) {\n var self = this;\n self._super(settings);\n if (self.settings.size) {\n self.size = self.settings.size;\n }\n if (self.settings.options) {\n self._options = self.settings.options;\n }\n self.on('keydown', function (e) {\n var rootControl;\n if (e.keyCode === 13) {\n e.preventDefault();\n self.parents().reverse().each(function (ctrl) {\n if (ctrl.toJSON) {\n rootControl = ctrl;\n return false;\n }\n });\n self.fire('submit', { data: rootControl.toJSON() });\n }\n });\n },\n options: function (state) {\n if (!arguments.length) {\n return this.state.get('options');\n }\n this.state.set('options', state);\n return this;\n },\n renderHtml: function () {\n var self = this;\n var options, size = '';\n options = createOptions(self._options);\n if (self.size) {\n size = ' size = \"' + self.size + '\"';\n }\n return '';\n },\n bindStates: function () {\n var self = this;\n self.state.on('change:options', function (e) {\n self.getEl().innerHTML = createOptions(e.value);\n });\n return self._super();\n }\n });\n\n function constrain(value, minVal, maxVal) {\n if (value < minVal) {\n value = minVal;\n }\n if (value > maxVal) {\n value = maxVal;\n }\n return value;\n }\n function setAriaProp(el, name, value) {\n el.setAttribute('aria-' + name, value);\n }\n function updateSliderHandle(ctrl, value) {\n var maxHandlePos, shortSizeName, sizeName, stylePosName, styleValue, handleEl;\n if (ctrl.settings.orientation === 'v') {\n stylePosName = 'top';\n sizeName = 'height';\n shortSizeName = 'h';\n } else {\n stylePosName = 'left';\n sizeName = 'width';\n shortSizeName = 'w';\n }\n handleEl = ctrl.getEl('handle');\n maxHandlePos = (ctrl.layoutRect()[shortSizeName] || 100) - funcs.getSize(handleEl)[sizeName];\n styleValue = maxHandlePos * ((value - ctrl._minValue) / (ctrl._maxValue - ctrl._minValue)) + 'px';\n handleEl.style[stylePosName] = styleValue;\n handleEl.style.height = ctrl.layoutRect().h + 'px';\n setAriaProp(handleEl, 'valuenow', value);\n setAriaProp(handleEl, 'valuetext', '' + ctrl.settings.previewFilter(value));\n setAriaProp(handleEl, 'valuemin', ctrl._minValue);\n setAriaProp(handleEl, 'valuemax', ctrl._maxValue);\n }\n var Slider = Widget.extend({\n init: function (settings) {\n var self = this;\n if (!settings.previewFilter) {\n settings.previewFilter = function (value) {\n return Math.round(value * 100) / 100;\n };\n }\n self._super(settings);\n self.classes.add('slider');\n if (settings.orientation === 'v') {\n self.classes.add('vertical');\n }\n self._minValue = isNumber(settings.minValue) ? settings.minValue : 0;\n self._maxValue = isNumber(settings.maxValue) ? settings.maxValue : 100;\n self._initValue = self.state.get('value');\n },\n renderHtml: function () {\n var self = this, id = self._id, prefix = self.classPrefix;\n return '
    ' + '
    ' + '
    ';\n },\n reset: function () {\n this.value(this._initValue).repaint();\n },\n postRender: function () {\n var self = this;\n var minValue, maxValue, screenCordName, stylePosName, sizeName, shortSizeName;\n function toFraction(min, max, val) {\n return (val + min) / (max - min);\n }\n function fromFraction(min, max, val) {\n return val * (max - min) - min;\n }\n function handleKeyboard(minValue, maxValue) {\n function alter(delta) {\n var value;\n value = self.value();\n value = fromFraction(minValue, maxValue, toFraction(minValue, maxValue, value) + delta * 0.05);\n value = constrain(value, minValue, maxValue);\n self.value(value);\n self.fire('dragstart', { value: value });\n self.fire('drag', { value: value });\n self.fire('dragend', { value: value });\n }\n self.on('keydown', function (e) {\n switch (e.keyCode) {\n case 37:\n case 38:\n alter(-1);\n break;\n case 39:\n case 40:\n alter(1);\n break;\n }\n });\n }\n function handleDrag(minValue, maxValue, handleEl) {\n var startPos, startHandlePos, maxHandlePos, handlePos, value;\n self._dragHelper = new DragHelper(self._id, {\n handle: self._id + '-handle',\n start: function (e) {\n startPos = e[screenCordName];\n startHandlePos = parseInt(self.getEl('handle').style[stylePosName], 10);\n maxHandlePos = (self.layoutRect()[shortSizeName] || 100) - funcs.getSize(handleEl)[sizeName];\n self.fire('dragstart', { value: value });\n },\n drag: function (e) {\n var delta = e[screenCordName] - startPos;\n handlePos = constrain(startHandlePos + delta, 0, maxHandlePos);\n handleEl.style[stylePosName] = handlePos + 'px';\n value = minValue + handlePos / maxHandlePos * (maxValue - minValue);\n self.value(value);\n self.tooltip().text('' + self.settings.previewFilter(value)).show().moveRel(handleEl, 'bc tc');\n self.fire('drag', { value: value });\n },\n stop: function () {\n self.tooltip().hide();\n self.fire('dragend', { value: value });\n }\n });\n }\n minValue = self._minValue;\n maxValue = self._maxValue;\n if (self.settings.orientation === 'v') {\n screenCordName = 'screenY';\n stylePosName = 'top';\n sizeName = 'height';\n shortSizeName = 'h';\n } else {\n screenCordName = 'screenX';\n stylePosName = 'left';\n sizeName = 'width';\n shortSizeName = 'w';\n }\n self._super();\n handleKeyboard(minValue, maxValue);\n handleDrag(minValue, maxValue, self.getEl('handle'));\n },\n repaint: function () {\n this._super();\n updateSliderHandle(this, this.value());\n },\n bindStates: function () {\n var self = this;\n self.state.on('change:value', function (e) {\n updateSliderHandle(self, e.value);\n });\n return self._super();\n }\n });\n\n var Spacer = Widget.extend({\n renderHtml: function () {\n var self = this;\n self.classes.add('spacer');\n self.canFocus = false;\n return '
    ';\n }\n });\n\n var SplitButton = MenuButton.extend({\n Defaults: {\n classes: 'widget btn splitbtn',\n role: 'button'\n },\n repaint: function () {\n var self$$1 = this;\n var elm = self$$1.getEl();\n var rect = self$$1.layoutRect();\n var mainButtonElm, menuButtonElm;\n self$$1._super();\n mainButtonElm = elm.firstChild;\n menuButtonElm = elm.lastChild;\n global$9(mainButtonElm).css({\n width: rect.w - funcs.getSize(menuButtonElm).width,\n height: rect.h - 2\n });\n global$9(menuButtonElm).css({ height: rect.h - 2 });\n return self$$1;\n },\n activeMenu: function (state) {\n var self$$1 = this;\n global$9(self$$1.getEl().lastChild).toggleClass(self$$1.classPrefix + 'active', state);\n },\n renderHtml: function () {\n var self$$1 = this;\n var id = self$$1._id;\n var prefix = self$$1.classPrefix;\n var image;\n var icon = self$$1.state.get('icon');\n var text = self$$1.state.get('text');\n var settings = self$$1.settings;\n var textHtml = '', ariaPressed;\n image = settings.image;\n if (image) {\n icon = 'none';\n if (typeof image !== 'string') {\n image = window.getSelection ? image[0] : image[1];\n }\n image = ' style=\"background-image: url(\\'' + image + '\\')\"';\n } else {\n image = '';\n }\n icon = settings.icon ? prefix + 'ico ' + prefix + 'i-' + icon : '';\n if (text) {\n self$$1.classes.add('btn-has-text');\n textHtml = '' + self$$1.encode(text) + '';\n }\n ariaPressed = typeof settings.active === 'boolean' ? ' aria-pressed=\"' + settings.active + '\"' : '';\n return '
    ' + '' + '' + '
    ';\n },\n postRender: function () {\n var self$$1 = this, onClickHandler = self$$1.settings.onclick;\n self$$1.on('click', function (e) {\n var node = e.target;\n if (e.control === this) {\n while (node) {\n if (e.aria && e.aria.key !== 'down' || node.nodeName === 'BUTTON' && node.className.indexOf('open') === -1) {\n e.stopImmediatePropagation();\n if (onClickHandler) {\n onClickHandler.call(this, e);\n }\n return;\n }\n node = node.parentNode;\n }\n }\n });\n delete self$$1.settings.onclick;\n return self$$1._super();\n }\n });\n\n var StackLayout = FlowLayout.extend({\n Defaults: {\n containerClass: 'stack-layout',\n controlClass: 'stack-layout-item',\n endClass: 'break'\n },\n isNative: function () {\n return true;\n }\n });\n\n var TabPanel = Panel.extend({\n Defaults: {\n layout: 'absolute',\n defaults: { type: 'panel' }\n },\n activateTab: function (idx) {\n var activeTabElm;\n if (this.activeTabId) {\n activeTabElm = this.getEl(this.activeTabId);\n global$9(activeTabElm).removeClass(this.classPrefix + 'active');\n activeTabElm.setAttribute('aria-selected', 'false');\n }\n this.activeTabId = 't' + idx;\n activeTabElm = this.getEl('t' + idx);\n activeTabElm.setAttribute('aria-selected', 'true');\n global$9(activeTabElm).addClass(this.classPrefix + 'active');\n this.items()[idx].show().fire('showtab');\n this.reflow();\n this.items().each(function (item, i) {\n if (idx !== i) {\n item.hide();\n }\n });\n },\n renderHtml: function () {\n var self = this;\n var layout = self._layout;\n var tabsHtml = '';\n var prefix = self.classPrefix;\n self.preRender();\n layout.preRender(self);\n self.items().each(function (ctrl, i) {\n var id = self._id + '-t' + i;\n ctrl.aria('role', 'tabpanel');\n ctrl.aria('labelledby', id);\n tabsHtml += '
    ' + self.encode(ctrl.settings.title) + '
    ';\n });\n return '
    ' + '
    ' + tabsHtml + '
    ' + '
    ' + layout.renderHtml(self) + '
    ' + '
    ';\n },\n postRender: function () {\n var self = this;\n self._super();\n self.settings.activeTab = self.settings.activeTab || 0;\n self.activateTab(self.settings.activeTab);\n this.on('click', function (e) {\n var targetParent = e.target.parentNode;\n if (targetParent && targetParent.id === self._id + '-head') {\n var i = targetParent.childNodes.length;\n while (i--) {\n if (targetParent.childNodes[i] === e.target) {\n self.activateTab(i);\n }\n }\n }\n });\n },\n initLayoutRect: function () {\n var self = this;\n var rect, minW, minH;\n minW = funcs.getSize(self.getEl('head')).width;\n minW = minW < 0 ? 0 : minW;\n minH = 0;\n self.items().each(function (item) {\n minW = Math.max(minW, item.layoutRect().minW);\n minH = Math.max(minH, item.layoutRect().minH);\n });\n self.items().each(function (ctrl) {\n ctrl.settings.x = 0;\n ctrl.settings.y = 0;\n ctrl.settings.w = minW;\n ctrl.settings.h = minH;\n ctrl.layoutRect({\n x: 0,\n y: 0,\n w: minW,\n h: minH\n });\n });\n var headH = funcs.getSize(self.getEl('head')).height;\n self.settings.minWidth = minW;\n self.settings.minHeight = minH + headH;\n rect = self._super();\n rect.deltaH += headH;\n rect.innerH = rect.h - rect.deltaH;\n return rect;\n }\n });\n\n var TextBox = Widget.extend({\n init: function (settings) {\n var self$$1 = this;\n self$$1._super(settings);\n self$$1.classes.add('textbox');\n if (settings.multiline) {\n self$$1.classes.add('multiline');\n } else {\n self$$1.on('keydown', function (e) {\n var rootControl;\n if (e.keyCode === 13) {\n e.preventDefault();\n self$$1.parents().reverse().each(function (ctrl) {\n if (ctrl.toJSON) {\n rootControl = ctrl;\n return false;\n }\n });\n self$$1.fire('submit', { data: rootControl.toJSON() });\n }\n });\n self$$1.on('keyup', function (e) {\n self$$1.state.set('value', e.target.value);\n });\n }\n },\n repaint: function () {\n var self$$1 = this;\n var style, rect, borderBox, borderW, borderH = 0, lastRepaintRect;\n style = self$$1.getEl().style;\n rect = self$$1._layoutRect;\n lastRepaintRect = self$$1._lastRepaintRect || {};\n var doc = document;\n if (!self$$1.settings.multiline && doc.all && (!doc.documentMode || doc.documentMode <= 8)) {\n style.lineHeight = rect.h - borderH + 'px';\n }\n borderBox = self$$1.borderBox;\n borderW = borderBox.left + borderBox.right + 8;\n borderH = borderBox.top + borderBox.bottom + (self$$1.settings.multiline ? 8 : 0);\n if (rect.x !== lastRepaintRect.x) {\n style.left = rect.x + 'px';\n lastRepaintRect.x = rect.x;\n }\n if (rect.y !== lastRepaintRect.y) {\n style.top = rect.y + 'px';\n lastRepaintRect.y = rect.y;\n }\n if (rect.w !== lastRepaintRect.w) {\n style.width = rect.w - borderW + 'px';\n lastRepaintRect.w = rect.w;\n }\n if (rect.h !== lastRepaintRect.h) {\n style.height = rect.h - borderH + 'px';\n lastRepaintRect.h = rect.h;\n }\n self$$1._lastRepaintRect = lastRepaintRect;\n self$$1.fire('repaint', {}, false);\n return self$$1;\n },\n renderHtml: function () {\n var self$$1 = this;\n var settings = self$$1.settings;\n var attrs, elm;\n attrs = {\n id: self$$1._id,\n hidefocus: '1'\n };\n global$2.each([\n 'rows',\n 'spellcheck',\n 'maxLength',\n 'size',\n 'readonly',\n 'min',\n 'max',\n 'step',\n 'list',\n 'pattern',\n 'placeholder',\n 'required',\n 'multiple'\n ], function (name$$1) {\n attrs[name$$1] = settings[name$$1];\n });\n if (self$$1.disabled()) {\n attrs.disabled = 'disabled';\n }\n if (settings.subtype) {\n attrs.type = settings.subtype;\n }\n elm = funcs.create(settings.multiline ? 'textarea' : 'input', attrs);\n elm.value = self$$1.state.get('value');\n elm.className = self$$1.classes.toString();\n return elm.outerHTML;\n },\n value: function (value) {\n if (arguments.length) {\n this.state.set('value', value);\n return this;\n }\n if (this.state.get('rendered')) {\n this.state.set('value', this.getEl().value);\n }\n return this.state.get('value');\n },\n postRender: function () {\n var self$$1 = this;\n self$$1.getEl().value = self$$1.state.get('value');\n self$$1._super();\n self$$1.$el.on('change', function (e) {\n self$$1.state.set('value', e.target.value);\n self$$1.fire('change', e);\n });\n },\n bindStates: function () {\n var self$$1 = this;\n self$$1.state.on('change:value', function (e) {\n if (self$$1.getEl().value !== e.value) {\n self$$1.getEl().value = e.value;\n }\n });\n self$$1.state.on('change:disabled', function (e) {\n self$$1.getEl().disabled = e.value;\n });\n return self$$1._super();\n },\n remove: function () {\n this.$el.off();\n this._super();\n }\n });\n\n var getApi = function () {\n return {\n Selector: Selector,\n Collection: Collection$2,\n ReflowQueue: $_921m08uxjkmcwsk2,\n Control: Control$1,\n Factory: global$4,\n KeyboardNavigation: KeyboardNavigation,\n Container: Container,\n DragHelper: DragHelper,\n Scrollable: $_c9juz9uzjkmcwskb,\n Panel: Panel,\n Movable: $_77p0ikukjkmcwsie,\n Resizable: $_4ci2x6v1jkmcwski,\n FloatPanel: FloatPanel,\n Window: Window$$1,\n MessageBox: MessageBox,\n Tooltip: Tooltip,\n Widget: Widget,\n Progress: Progress,\n Notification: Notification,\n Layout: Layout,\n AbsoluteLayout: AbsoluteLayout,\n Button: Button,\n ButtonGroup: ButtonGroup,\n Checkbox: Checkbox,\n ComboBox: ComboBox,\n ColorBox: ColorBox,\n PanelButton: PanelButton,\n ColorButton: ColorButton,\n ColorPicker: ColorPicker,\n Path: Path,\n ElementPath: ElementPath,\n FormItem: FormItem,\n Form: Form,\n FieldSet: FieldSet,\n FilePicker: FilePicker,\n FitLayout: FitLayout,\n FlexLayout: FlexLayout,\n FlowLayout: FlowLayout,\n FormatControls: $_drujjnwxjkmcwsrc,\n GridLayout: GridLayout,\n Iframe: Iframe$1,\n InfoBox: InfoBox,\n Label: Label,\n Toolbar: Toolbar$1,\n MenuBar: MenuBar,\n MenuButton: MenuButton,\n MenuItem: MenuItem,\n Throbber: Throbber,\n Menu: Menu,\n ListBox: ListBox,\n Radio: Radio,\n ResizeHandle: ResizeHandle,\n SelectBox: SelectBox,\n Slider: Slider,\n Spacer: Spacer,\n SplitButton: SplitButton,\n StackLayout: StackLayout,\n TabPanel: TabPanel,\n TextBox: TextBox,\n DropZone: DropZone,\n BrowseButton: BrowseButton\n };\n };\n var appendTo = function (target) {\n if (target.ui) {\n global$2.each(getApi(), function (ref, key) {\n target.ui[key] = ref;\n });\n } else {\n target.ui = getApi();\n }\n };\n var registerToFactory = function () {\n global$2.each(getApi(), function (ref, key) {\n global$4.add(key, ref);\n });\n };\n var Api = {\n appendTo: appendTo,\n registerToFactory: registerToFactory\n };\n\n Api.registerToFactory();\n Api.appendTo(window.tinymce ? window.tinymce : {});\n global.add('modern', function (editor) {\n $_drujjnwxjkmcwsrc.setup(editor);\n return $_f0tepxtqjkmcwsfm.get(editor);\n });\n function Theme () {\n }\n\n return Theme;\n\n}());\n})();\n","module.exports = __webpack_public_path__ + \"img/logo-CNA-big.64593c3c.png\";","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./404.vue?vue&type=style&index=0&id=ae003f28&prod&scoped=true&lang=scss\"","\nimport Vue from 'vue';\n\nimport { Api } from '../api';\nimport Global from '../global';\nimport Base from '../base';\n\nimport '../../assets/js/tinymce/tinymce'\nimport '../../assets/js/tinymce/themes/modern/theme';\nimport '../../assets/js/tinymce/plugins/link/plugin';\nimport '../../assets/js/tinymce/plugins/paste/plugin';\nimport '../../assets/js/tinymce/plugins/lists/plugin';\nimport '../../assets/js/tinymce/plugins/code/plugin';\nimport '../../assets/js/tinymce/plugins/preview/plugin';\nimport '../../assets/js/tinymce/plugins/advlist/plugin';\nimport '../../assets/js/tinymce/plugins/image/plugin';\nimport '../../assets/js/tinymce/plugins/media/plugin';\nimport '../../assets/js/tinymce/plugins/colorpicker/plugin';\nimport '../../assets/js/tinymce/plugins/textcolor/plugin';\n\nVue.directive('htmleditor', {\n twoWay: true,\n inserted: (el, binding, vnode) => {\n\n let _lastfileuploaded;\n let _interval;\n let _hascustomtag;\n\n if (binding && binding.value) {\n _hascustomtag = binding.value.hascustomtag == true;\n }\n\n tinymce.PluginManager.add('customtag', (editor) => {\n\n editor.addButton('customTagButton', {\n text: 'Tag de Resposta',\n icon: false,\n onclick: () => {\n _pluginWindowsCustomTag(editor)\n }\n });\n\n editor.addMenuItem('customTagMenuItem', {\n text: 'Tag de Resposta',\n context: 'tools',\n onclick: () => {\n _pluginWindowsCustomTag(editor)\n }\n });\n });\n\n function _pluginWindowsCustomTag(editor) {\n editor.windowManager.open({\n title: 'Insira a Resposta',\n body: [\n { type: 'textbox', name: 'description', label: 'Resposta' }\n ],\n onsubmit: (e) => {\n editor.insertContent('##' + e.data.description + '##');\n }\n });\n }\n\n tinymce.init({\n target: el,\n mode: \"inline\",\n language_url: '/js/tinymce-pt_br.js',\n plugins: ['link', 'colorpicker', 'textcolor', 'paste', 'lists', 'code', 'preview', 'advlist', 'image', 'media', _hascustomtag ? 'customtag' : ''],\n\n toolbar: \"formatselect | bold italic strikethrough forecolor backcolor | link | alignleft aligncenter alignright alignjustify | numlist bullist outdent indent | removeformat | image media\" + (_hascustomtag ? \" | customTagButton\" : \"\"),\n\n extended_valid_elements: \"customtag\",\n custom_elements: \"customtag\",\n\n media_live_embeds: true,\n image_advtab: true,\n file_picker_types: 'file image media',\n setup: (editor) => {\n \n _interval = setInterval(() => {\n if (el.value && el.value.length > 0) {\n tinymce.get(el.id).getBody().innerHTML = el.value;\n clearInterval(_interval)\n }\n }, 1000)\n\n editor.on('change', () => {\n clearInterval(_interval)\n var value = editor.getContent();\n value = value.replace(/'/g, '\\\"');\n value = value.replace(/\\r?\\n|\\r/g, '');\n\n el.value = value;\n\n setVModelValue(value, vnode)\n });\n },\n file_picker_types: 'image media',\n\n relative_urls: false,\n remove_script_host: false,\n media_poster: false,\n media_filter_html: false,\n\n images_upload_url: Global.URL_DOWNLOAD,\n\n images_upload_handler: (blobInfo, success, failure) => {\n new Api('document/upload', Global.END_POINT_PORTAL_CORPORATIVO)\n .upload(blobInfo.blob(), \"editorhtml\", true)\n .then(result => {\n success(Global.URL_DOWNLOAD + \"editorhtml/\" + result.data[0]);\n }, (err) => {\n failure('Erro ao fazer upload');\n });\n },\n audio_template_callback: function (data) {\n return '';\n },\n video_template_callback: function (data) {\n if (_lastfileuploaded && _lastfileuploaded.indexOf(\"audio\") > -1)\n return '';\n else\n return '';\n },\n file_picker_callback: (cb, value, meta) => {\n\n if (meta.filetype == 'image') {\n var input = document.createElement('input');\n input.setAttribute('type', 'file');\n input.setAttribute('accept', 'image/*');\n input.onchange = () => {\n var file = input.files[0];\n _lastfileuploaded = file.type;\n var reader = new FileReader();\n reader.onload = () => {\n var id = 'blobid' + (new Date()).getTime();\n var blobCache = tinymce.activeEditor.editorUpload.blobCache;\n var base64 = reader.result.split(',')[1];\n var blobInfo = blobCache.create(id, file, base64);\n blobCache.add(blobInfo);\n cb(blobInfo.blobUri(), { title: file.name });\n };\n reader.readAsDataURL(file);\n };\n input.click();\n }\n\n if (meta.filetype == 'media') {\n var input = document.createElement('input');\n input.setAttribute('type', 'file');\n input.setAttribute('accept', 'audio/*');\n input.setAttribute('accept', 'video/*');\n input.onchange = () => {\n\n var file = input.files[0];\n if (file.size > 1 * 1024 * 1000) {\n event.target.files = [];\n return false;\n }\n \n _lastfileuploaded = file.type;\n var reader = new FileReader();\n reader.onload = () => {\n var id = 'blobid' + (new Date()).getTime();\n var blobCache = tinymce.activeEditor.editorUpload.blobCache;\n var base64 = reader.result.split(',')[1];\n var blobInfo = blobCache.create(id, file, base64);\n blobCache.add(blobInfo);\n cb(blobInfo.blobUri());\n };\n reader.readAsDataURL(file);\n };\n input.click();\n }\n\n }\n });\n\n function findVModelName(vnode) {\n return vnode.data.directives.find(function (o) {\n return o.name === 'model';\n }).expression;\n }\n\n function setVModelValue(value, vnode) {\n var prop = findVModelName(vnode)\n eval('vnode.context.' + prop + ' = ' + '\\'' + value + '\\'')\n }\n }\n})","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&id=033fa2f0&prod&scoped=true&lang=scss\""],"sourceRoot":""}