{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./node_modules/codemirror/lib/codemirror.js","webpack:///(webpack)/buildin/module.js","webpack:///./node_modules/@stimulus/core/dist/src/event_listener.js","webpack:///./node_modules/@stimulus/core/dist/src/dispatcher.js","webpack:///./node_modules/@stimulus/core/dist/src/action_descriptor.js","webpack:///./node_modules/@stimulus/core/dist/src/action.js","webpack:///./node_modules/@stimulus/core/dist/src/binding.js","webpack:///./node_modules/@stimulus/mutation-observers/dist/src/element_observer.js","webpack:///./node_modules/@stimulus/mutation-observers/dist/src/attribute_observer.js","webpack:///./node_modules/@stimulus/multimap/dist/src/set_operations.js","webpack:///./node_modules/@stimulus/multimap/dist/src/multimap.js","webpack:///./node_modules/@stimulus/multimap/dist/src/indexed_multimap.js","webpack:///./node_modules/@stimulus/mutation-observers/dist/src/token_list_observer.js","webpack:///./node_modules/@stimulus/mutation-observers/dist/src/value_list_observer.js","webpack:///./node_modules/@stimulus/core/dist/src/binding_observer.js","webpack:///./node_modules/@stimulus/core/dist/src/context.js","webpack:///./node_modules/@stimulus/core/dist/src/definition.js","webpack:///./node_modules/@stimulus/core/dist/src/module.js","webpack:///./node_modules/@stimulus/core/dist/src/data_map.js","webpack:///./node_modules/@stimulus/core/dist/src/selectors.js","webpack:///./node_modules/@stimulus/core/dist/src/target_set.js","webpack:///./node_modules/@stimulus/core/dist/src/scope.js","webpack:///./node_modules/@stimulus/core/dist/src/scope_observer.js","webpack:///./node_modules/@stimulus/core/dist/src/router.js","webpack:///./node_modules/@stimulus/core/dist/src/schema.js","webpack:///./node_modules/@stimulus/core/dist/src/application.js","webpack:///./node_modules/@stimulus/core/dist/src/target_properties.js","webpack:///./node_modules/@stimulus/core/dist/src/controller.js","webpack:///./node_modules/marked/src/defaults.js","webpack:///./node_modules/marked/src/helpers.js","webpack:///./node_modules/@fortawesome/fontawesome-svg-core/index.es.js","webpack:///./node_modules/codemirror/mode/markdown/markdown.js","webpack:///./node_modules/codemirror/mode/xml/xml.js","webpack:///./node_modules/codemirror/addon/mode/overlay.js","webpack:///(webpack)/buildin/global.js","webpack:///./node_modules/codemirror/mode/meta.js","webpack:///./node_modules/marked/src/Tokenizer.js","webpack:///./node_modules/marked/src/Renderer.js","webpack:///./node_modules/marked/src/TextRenderer.js","webpack:///./node_modules/marked/src/Slugger.js","webpack:///./node_modules/simplemde/src/js/simplemde.js","webpack:///./node_modules/@stimulus/webpack-helpers/dist/index.js","webpack:///./node_modules/@rails/ujs/lib/assets/compiled/rails-ujs.js","webpack:///./node_modules/turbolinks/dist/turbolinks.js","webpack:///./app/javascript/controllers/admin/simplemde_controller.js","webpack:///./node_modules/codemirror/addon/edit/continuelist.js","webpack:///./node_modules/simplemde/src/js/codemirror/tablist.js","webpack:///./node_modules/codemirror/addon/display/fullscreen.js","webpack:///./node_modules/codemirror/addon/display/placeholder.js","webpack:///./node_modules/codemirror/addon/selection/mark-selection.js","webpack:///./node_modules/codemirror/mode/gfm/gfm.js","webpack:///./node_modules/codemirror-spell-checker/src/js/spell-checker.js","webpack:///./node_modules/typo-js/typo.js","webpack:///./node_modules/marked/src/marked.js","webpack:///./node_modules/marked/src/Lexer.js","webpack:///./node_modules/marked/src/rules.js","webpack:///./node_modules/marked/src/Parser.js","webpack:///./node_modules/timers-browserify/main.js","webpack:///./node_modules/setimmediate/setImmediate.js","webpack:///./node_modules/process/browser.js","webpack:///./node_modules/@fortawesome/free-solid-svg-icons/index.es.js","webpack:///./node_modules/@fortawesome/free-brands-svg-icons/index.es.js","webpack:///./app/javascript/packs/fontawesome.js","webpack:///./node_modules/aos/dist/aos.js","webpack:///./node_modules/velocity-animate/velocity.js","webpack:///./app/javascript/controllers sync _controller\\.js$","webpack:///./app/javascript/controllers/accordion_controller.js","webpack:///./app/javascript/controllers/application_controller.js","webpack:///./node_modules/webfontloader/webfontloader.js","webpack:///./app/javascript/controllers/card_controller.js","webpack:///./app/javascript/controllers/form_controller.js","webpack:///./node_modules/ssr-window/dist/ssr-window.esm.js","webpack:///./node_modules/dom7/dist/dom7.modular.js","webpack:///./node_modules/swiper/js/swiper.esm.bundle.js","webpack:///./app/javascript/controllers/blog_carousel_controller.js","webpack:///./app/javascript/controllers/index.js","webpack:///./app/javascript/packs/application.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","factory","_typeof","iterator","obj","constructor","userAgent","navigator","platform","gecko","test","ie_upto10","ie_11up","exec","edge","ie","ie_version","document","documentMode","webkit","qtwebkit","chrome","presto","safari","vendor","mac_geMountainLion","phantom","ios","android","mobile","mac","chromeOS","windows","presto_version","match","Number","flipCtrlCmd","captureRightClick","classTest","cls","RegExp","range","rmClass","node","current","className","after","slice","index","length","removeChildren","e","count","childNodes","removeChild","firstChild","removeChildrenAndAdd","parent","appendChild","elt","tag","content","style","createElement","cssText","createTextNode","eltP","setAttribute","contains","child","nodeType","parentNode","host","activeElt","activeElement","body","shadowRoot","addClass","joinClasses","a","b","as","split","createRange","start","end","endNode","setEnd","setStart","createTextRange","moveToElementText","collapse","moveEnd","moveStart","selectInput","select","f","args","Array","arguments","apply","copyObj","target","overwrite","prop","countColumn","string","tabSize","startIndex","startValue","search","nextTab","indexOf","selectionStart","selectionEnd","_e","Delayed","this","id","time","handler","onTimeout","array","self","Date","setTimeout","set","ms","clearTimeout","Pass","toString","sel_dontScroll","scroll","sel_mouse","origin","sel_move","findColumn","goal","pos","col","skipped","Math","min","spaceStrs","spaceStr","push","lst","arr","map","out","nothing","createObj","base","props","inst","nonASCIISingleCaseWordChar","isWordCharBasic","ch","toUpperCase","toLowerCase","isWordChar","helper","source","isEmpty","extendingChars","isExtendingChar","charCodeAt","skipExtendingChars","str","dir","charAt","findFirst","pred","from","to","midF","mid","ceil","floor","bidiOther","getBidiPartAt","order","sticky","found","cur","bidiOrdering","bidiRE","isNeutral","isStrong","countsAsLeft","countsAsNum","BidiSpan","level","direction","outerType","code","len","types","i$1","prev","type","i$2","type$1","i$3","prev$1","type$2","i$4","type$3","replace","j","i$5","cur$1","type$4","i$6","end$1","before","replace$1","j$1","i$7","at","isRTL","j$2","splice","nstart","unshift","reverse","getOrder","line","text","noHandlers","on","emitter","addEventListener","attachEvent","_handlers","concat","getHandlers","off","removeEventListener","detachEvent","signal","handlers","signalDOMEvent","cm","override","preventDefault","defaultPrevented","e_defaultPrevented","codemirrorIgnore","signalCursorActivity","cursorActivity","curOp","cursorActivityHandlers","hasHandler","eventMixin","ctor","e_preventDefault","returnValue","e_stopPropagation","stopPropagation","cancelBubble","e_stop","e_target","srcElement","e_button","which","button","ctrlKey","zwspSupported","badBidiRects","dragAndDrop","div","zeroWidthElement","measure","offsetHeight","offsetWidth","hasBadBidiRects","txt","r0","getBoundingClientRect","r1","left","right","splitLinesAuto","result","nl","rt","hasSelection","window","getSelection","te","ownerDocument","selection","parentElement","compareEndPoints","hasCopyEvent","oncopy","badZoomedRects","modes","mimeModes","defineMode","dependencies","resolveMode","spec","getMode","options","mfactory","modeObj","modeExtensions","exts","helperType","modeProps","prop$1","extendMode","properties","copyState","state","nstate","val","innerMode","info","startState","a1","a2","StringStream","lineOracle","lastColumnPos","lastColumnValue","lineStart","getLine","doc","first","size","Error","chunk","lines","children","sz","chunkSize","getBetween","iter","getLines","updateLineHeight","height","diff","lineNo","no","_lineAtHeight","h","outer","lh","isLine","lineNumberFor","String","lineNumberFormatter","firstLineNumber","Pos","cmp","equalCursorPos","copyPos","x","maxPos","minPos","clipLine","max","_clipPos","last","linelen","clipToLen","clipPosArray","eol","sol","peek","undefined","next","eat","eatWhile","eatSpace","skipToEnd","skipTo","backUp","column","indentation","pattern","consume","caseInsensitive","cased","substr","hideFirstChars","inner","lookAhead","oracle","baseToken","SavedContext","Context","maxLookAhead","baseTokens","baseTokenPos","highlightLine","context","forceToEnd","st","modeGen","lineClasses","runMode","loop","overlay","overlays","i_end","opaque","styles","classes","bgClass","textClass","getLineStyles","updateFrontier","getContextBefore","resetState","maxHighlightLength","stateAfter","save","styleClasses","highlightFrontier","modeFrontier","precise","display","minindent","minline","lim","indented","findStartLine","saved","fromSaved","processLine","viewFrom","viewTo","nextLine","startAt","stream","callBlankLine","readToken","blankLine","token","copy","Token","takeToken","asArray","tokens","extractLineClasses","output","lineClass","flattenSpans","curStart","curStyle","addModeClass","mName","sawReadOnlySpans","sawCollapsedSpans","MarkedSpan","marker","getMarkedSpanFor","spans","span","removeMarkedSpan","stretchSpansOverChange","change","full","oldFirst","markedSpans","oldLast","startCh","endCh","isInsert","old","nw","inclusiveLeft","insertLeft","endsAfter","inclusiveRight","markedSpansBefore","startsBefore","markedSpansAfter","sameLine","offset","span$1","clearEmptySpans","newMarkers","gapMarkers","gap","clearWhenEmpty","detachMarkedSpans","detachLine","attachMarkedSpans","attachLine","extraLeft","extraRight","compareCollapsedMarkers","lenDiff","aPos","find","bPos","fromCmp","toCmp","collapsedSpanAtSide","sps","sp","collapsed","collapsedSpanAtStart","collapsedSpanAtEnd","collapsedSpanAround","conflictingCollapsedRange","visualLine","merged","visualLineNo","lineN","vis","visualLineEndNo","lastLine","lineIsHidden","widgetNode","lineIsHiddenInner","_heightAtLine","lineObj","lineLength","found$1","findMaxLine","maxLine","maxLineLength","maxLineChanged","Line","estimateHeight","cleanUpLine","styleToClassCache","styleToClassCacheWithMode","interpretTokenStyle","cache","buildLineContent","lineView","builder","pre","trailingSpace","splitSpaces","getOption","rest","addToken","buildToken","buildTokenBadBidi","insertLineContent","externalMeasured","maps","caches","lastChild","querySelector","defaultSpecialCharPlaceholder","title","startStyle","endStyle","css","attributes","displayText","trailingBefore","spaceBefore","special","specialChars","mustWrap","createDocumentFragment","lastIndex","txt$1","tabWidth","specialCharPlaceholder","fullStyle","attr","part","buildCollapsedSpan","ignoreWidget","widget","input","needsContentAttribute","setUneditable","allText","spanStyle","spanEndStyle","spanStartStyle","nextChange","Infinity","foundBookmarks","endStyles","upto","tokenText","LineView","visualLineContinued","hidden","buildViewArray","nextPos","view","operationGroup","orphanDelayedCallbacks","signalLater","list","delayedCallbacks","fireOrphanDelayed","delayed","updateLineForChanges","dims","changes","updateLineText","updateLineGutter","updateLineClasses","updateLineWidgets","ensureLineWrapped","replaceChild","zIndex","getLineContent","ext","built","background","wrap","insertBefore","updateLineBackground","wrapClass","gutter","gutterBackground","gutterClass","fixedGutter","fixedPos","gutterTotalWidth","markers","gutterMarkers","lineNumbers","wrap$1","gutterWrap","lineNumber","gutterLeft","lineNumInnerWidth","k","gutterSpecs","gutterWidth","alignable","isWidget","nextSibling","insertLineWidgets","buildLineElement","insertLineWidgetsFor","allowAbove","widgets","ws","handleMouseEvents","positionLineWidget","above","noHScroll","width","wrapperWidth","coverGutter","paddingLeft","position","marginLeft","widgetHeight","parentStyle","gutters","wrapper","clientWidth","eventInWidget","getAttribute","sizer","mover","paddingTop","lineSpace","offsetTop","paddingVert","paddingH","cachedPaddingH","getComputedStyle","currentStyle","data","parseInt","paddingRight","isNaN","scrollGap","nativeBarWidth","displayWidth","scroller","barWidth","displayHeight","clientHeight","barHeight","mapFromLineView","measureChar","bias","measureCharPrepared","prepareMeasureForLine","findViewForLine","findViewIndex","getDimensions","forceUpdate","lineMeasure","updateExternalMeasurement","rect","hasHeights","prepared","varHeight","wrapping","lineWrapping","curWidth","heights","rects","getClientRects","abs","bottom","top","ensureLineHeights","place","nodeAndOffsetInLineMap","coverStart","coverEnd","getUsefulRect","screen","logicalXDPI","deviceXDPI","normal","fromRange","hasBadZoomedRects","scaleX","scaleY","logicalYDPI","deviceYDPI","maybeUpdateRectForZooming","rSpan","charWidth","nullRect","rtop","rbot","bot","bogus","singleCursorHeightPerLine","rbottom","measureCharInner","measureText","mStart","mEnd","clearLineMeasurementCacheFor","clearLineMeasurementCache","externalMeasure","clearCaches","cachedCharWidth","cachedTextHeight","lineNumChars","pageScrollX","pageXOffset","documentElement","scrollLeft","pageScrollY","marginTop","pageYOffset","scrollTop","widgetTopHeight","intoCoordSystem","includeWidgets","yOff","viewOffset","lOff","xOff","fromCoordSystem","coords","localBox","lineSpaceBox","_charCoords","_cursorCoords","preparedMeasure","getBidi","partPos","invert","other","estimateCoords","PosWithInfo","outside","xRel","_coordsChar","y","coordsCharInner","rangeEnd","wrappedLineExtent","begin","wrappedLineExtentChar","boxIsAfter","box","ltr","coordsBidiPartWrapped","coordsBidiPart","baseX","chAround","boxAround","atLeft","atStart","_lineNo","ref","closestDist","endX","dist","textHeight","anchor","clientLeft","offsetLeft","compensateForHScroll","th","perLine","widgetsHeight","estimateLineHeights","est","estHeight","posFromMouse","liberal","forRect","space","clientX","clientY","colDiff","round","regChange","lendiff","updateLineNumbers","viewChanged","resetView","cut","viewCuttingPoint","cut$1","cutTop","cutBot","regLineChange","oldN","newN","countDirtyView","dirty","updateSelection","showSelection","prepareSelection","primary","curFragment","cursors","selFragment","sel","ranges","primIndex","empty","showCursorWhenSelecting","drawSelectionCursor","head","drawSelectionRange","cursor","cursorHeight","otherCursor","cmpCoords","fragment","padding","leftSide","rightSide","sizerWidth","docLTR","add","drawForLine","fromArg","toArg","lineLen","wrapX","side","extent","iterateBidiSections","fromPos","toPos","openStart","openEnd","openRight","topLeft","topRight","botLeft","botRight","sFrom","sTo","fromLine","toLine","singleVLine","leftEnd","rightStart","restartBlink","focused","clearInterval","blinker","cursorDiv","visibility","cursorBlinkRate","setInterval","ensureFocus","focus","onFocus","delayBlurEvent","delayingBlurEvent","onBlur","readOnly","selForContextMenu","reset","receivedFocus","shift","updateHeightsInViewport","prevBottom","lineDiv","updateWidgetHeight","chWidth","w","visibleLines","viewport","ensure","ensureFrom","ensureTo","calculateScrollPos","snapMargin","screentop","docBottom","atTop","atBottom","newTop","screenleft","screenw","tooWide","addToScrollTop","resolveScrollToPos","ensureCursorVisible","getCursor","scrollToPos","margin","cursorScrollMargin","scrollToCoords","scrollToCoordsRange","sPos","updateScrollTop","updateDisplaySimple","setScrollTop","startWorker","forceScroll","scrollHeight","scrollbars","setScrollLeft","isScroller","scrollWidth","alignHorizontally","measureForScrollbars","gutterW","docH","viewHeight","viewWidth","barLeft","docHeight","NativeScrollbars","vert","horiz","tabIndex","checkedZeroWidth","minHeight","minWidth","update","needsH","needsV","sWidth","totalHeight","totalWidth","zeroWidthHack","disableHoriz","enableZeroWidthBar","disableVert","pointerEvents","bar","delay","maybeDisable","elementFromPoint","clear","NullScrollbars","updateScrollbars","startWidth","startHeight","updateScrollbarsInner","sizes","paddingBottom","heightForcer","borderBottom","scrollbarFiller","coverGutterNextToScrollbar","gutterFiller","scrollbarModel","initScrollbars","scrollbarStyle","axis","nextOpId","_startOperation","op","updateInput","typing","changeObjs","cursorActivityCalled","selectionChanged","updateMaxLine","ops","ownsGroup","_endOperation","endCb","group","callbacks","fireCallbacksForOps","finishOperation","endOperation_R1","endOperation_W1","endOperation_R2","endOperation_W2","endOperation_finish","endOperations","scrollbarsClipped","marginBottom","borderRightWidth","maybeClipScrollbars","mustUpdate","DisplayUpdate","updatedDisplay","updateDisplayIfNeeded","barMeasure","adjustWidthTo","maxScrollLeft","preparedSelection","takeFocus","setDocumentHeight","postUpdateDisplay","wheelStartX","wheelStartY","limit","changed","endCoords","scrollPos","startTop","startLeft","scrollPosIntoView","doScroll","innerHeight","scrollNode","scrollIntoView","maybeScrollWindow","maybeHiddenMarkers","unhidden","maybeUnhiddenMarkers","finish","runInOp","operation","methodOp","docMethodOp","highlight","highlightWorker","workTime","changedLines","oldStyles","highlighted","oldCls","newCls","ischange","workDelay","force","visible","editorIsHidden","wrapperHeight","oldDisplayWidth","events","renderedView","maybeUpdateLineNumberWidth","viewportMargin","different","lastWrapHeight","lastWrapWidth","adjustView","toUpdate","selSnapshot","hasFocus","active","anchorNode","extend","anchorOffset","focusNode","focusOffset","selectionSnapshot","updateNumbersFrom","container","rm","currentWheelTarget","updateNumber","patchDisplay","snapshot","removeAllRanges","addRange","restoreSelection","selectionDiv","reportedViewFrom","reportedViewTo","updateGutterSpace","alignWidgets","comp","align","innerW","lineGutter","lineNumWidth","getGutters","sawLineNumbers","renderGutters","specs","gElt","updateGutters","Display","draggable","wheelDX","wheelDY","activeTouch","init","wheelSamples","wheelPixelsPerUnit","wheelEventDelta","dx","wheelDeltaX","dy","wheelDeltaY","detail","HORIZONTAL_AXIS","VERTICAL_AXIS","wheelDelta","wheelEventPixels","delta","onScrollWheel","canScrollX","canScrollY","pixels","movedX","movedY","sample","Selection","equals","here","there","deepCopy","Range","somethingSelected","normalizeSelection","mayTouch","selectionsMayTouch","prim","sort","inv","simpleSelection","changeEnd","adjustForChange","computeSelAfterChange","offsetPos","loadMode","modeOption","resetModeState","isWholeLineUpdate","wholeLineUpdateBefore","updateDoc","spansFor","updateLine","linesFor","firstLine","lastText","lastSpans","nlines","insert","remove","added","added$1","added$2","linkedDocs","sharedHistOnly","propagate","skip","sharedHist","linked","rel","shared","attachDoc","setDirectionClass","History","startGen","done","undone","undoDepth","lastModTime","lastSelTime","lastOp","lastSelOp","lastOrigin","lastSelOrigin","generation","maxGeneration","historyChangeFromChange","histChange","attachLocalSpans","clearSelectionEvents","pop","addChangeToHistory","selAfter","opId","hist","history","historyEventDelay","lastChangeEvent","pushSelectionToHistory","addSelectionToHistory","selectionEventCanBeMerged","clearRedo","dest","existing","removeClearedSpans","explicitlyCleared","mergeOldSpans","getOldSpans","stretched","oldCur","stretchCur","copyHistoryArray","newGroup","instantiateSel","event","newChanges","extendRange","posBefore","extendSelection","setSelection","extendSelections","heads","replaceOneSelection","setSimpleSelection","setSelectionReplaceHistory","setSelectionNoUndo","NaN","filterSelectionChange","setSelectionInner","skipAtomicInSelection","reCheckSelection","mayClear","newAnchor","skipAtomic","newHead","skipAtomicInner","oldPos","preventCursorLeft","selectLeft","preventCursorRight","selectRight","atomic","near","movePos","far","cantEdit","selectAll","filterChange","canceled","cancel","makeChange","ignoreReadOnly","suppressEdits","mark","parts","mk","newParts","dfrom","dto","removeReadOnlyRanges","makeChangeInner","makeChangeSingleDoc","rebased","rebaseHist","makeChangeFromHistory","allowSelectionOnly","suppress","antiChanges","filter","returned","v","shiftDoc","distance","removed","recomputeMaxLength","checkWidthStart","retreatFrontier","changesHandler","changeHandler","makeChangeSingleDocInEditor","_replaceRange","assign","splitLines","rebaseHistSelSingle","rebaseHistArray","sub","ok","copied","changeLine","handle","changeType","LeafChunk","BranchChunk","removeInner","insertInner","iterN","oldHeight","remaining","leaf","maybeSpill","me","sibling","myIndex","used","LineWidget","opt","adjustScrollWhenAboveVisible","this$1","oldH","nextMarkerId","TextMarker","_markText","cloneNode","isParent","SharedTextMarker","markTextShared","replacedWith","addToHistory","curLine","addMarkedSpan","clearOnEnter","clearHistory","withOp","visual","dHeight","findSharedMarkers","findMarks","clipPos","detachSharedMarkers","subMarker","nextDocId","Doc","lineSep","cleanGeneration","getValue","join","lineSeparator","setValue","replaceRange","getRange","getLineHandle","getLineNumber","getLineHandleVisualStart","lineCount","listSelections","setCursor","extendSelectionsBy","setSelections","addSelection","getSelections","replaceSelection","dup","replaceSelections","newSel","hint","oldPrev","newPrev","computeReplacedSel","undo","redo","undoSelection","redoSelection","setExtending","getExtending","historySize","markClean","changeGeneration","forceSplit","isClean","gen","getHistory","setHistory","histData","setGutterMarker","gutterID","clearGutter","lineInfo","addLineClass","where","removeLineClass","addLineWidget","insertAt","aboveVisible","removeLineWidget","markText","setBookmark","realOpts","findMarksAt","getAllMarks","posFromIndex","sepSize","indexFromPos","copyHistory","linkedDoc","mFrom","mTo","subMark","copySharedMarkers","unlinkDoc","CodeMirror","splitIds","iterLinkedDocs","getEditor","setDirection","eachLine","lastDrop","onDrop","clearDragCursor","files","dataTransfer","isReadOnly","FileReader","File","read","markAsReadAndPasteIfAllFilesAreRead","readTextFromFile","file","allowDropFileTypes","reader","onerror","onload","readAsText","draggingText","text$1","getData","selected","dragCursor","forEachCodeMirror","getElementsByClassName","byClass","editors","globalsRegistered","ensureGlobalHandlers","resizeTimer","onResize","setSize","keyNames","fromCharCode","keyMap","normalizeKeyName","alt","ctrl","cmd","mod","normalizeKeyMap","keymap","keyname","keys","lookupKey","getKeyMap","fallthrough","isModifierKey","keyCode","addModifierNames","noShift","altKey","metaKey","shiftKey","keyName","altGraphKey","deleteNearSelection","compute","kill","toKill","replaced","moveCharLogically","moveLogically","endOfLine","visually","prep","targetTop","basic","pcDefault","emacsy","macDefault","commands","singleSelection","killLine","deleteLine","delLineLeft","delWrappedLineLeft","charCoords","coordsChar","delWrappedLineRight","rightPos","goDocStart","goDocEnd","goLineStart","goLineStartSmart","lineStartSmart","goLineEnd","visualLineEnd","lineEnd","goLineRight","cursorCoords","goLineLeft","goLineLeftSmart","goLineUp","moveV","goLineDown","goPageUp","goPageDown","goCharLeft","moveH","goCharRight","goColumnLeft","goColumnRight","goWordLeft","goGroupRight","goGroupLeft","goWordRight","delCharBefore","deleteH","delCharAfter","delWordBefore","delWordAfter","delGroupBefore","delGroupAfter","indentAuto","indentSelection","indentMore","indentLess","insertTab","insertSoftTab","spaces","defaultTab","execCommand","transposeChars","newlineAndIndent","sels","indentLine","openLine","toggleOverwrite","firstNonWS","inWS","doHandleBinding","bound","dropShift","ensurePolled","prevShift","stopSeq","dispatchKey","seq","keySeq","dispatchKeyInner","keyMaps","extraKeys","lookupKeyForEditor","handleKeyBinding","motion","lastStoppedKey","onKeyDown","handled","up","showCrossHair","onKeyUp","onKeyPress","charCode","handleCharBinding","lastClick","lastDoubleClick","PastClick","onMouseDown","supportsTouch","clickInGutter","repeat","now","compare","clickRepeat","selectingText","handleMappedButton","contained","behavior","option","unit","addNew","moveOnDrag","configureMouse","dragDrop","moved","dragEnd","mouseMove","dragStart","e2","leftButtonStartDrag","ourRange","ourIndex","startSel","rangeForUnit","lastPos","extendTo","startCol","posCol","leftPos","oldRange","ranges$1","anchorLine","boundary","headIndex","usePart","bidiSimplify","editorSize","counter","curCount","move","buttons","leftButtonSelect","leftButtonDown","onContextMenu","findWordAt","gutterEvent","prevent","mX","mY","touches","lineBox","g","contextMenuInGutter","themeChanged","theme","Init","defaults","optionHandlers","dragDropChanged","funcs","dragFunctions","toggle","enter","over","leave","drop","wrappingChanged","inputStyles","inputStyle","pasteIncoming","cutIncoming","autofocus","word","getField","touchFinished","prevTouch","finishTouch","isMouseLikeTouchEvent","touch","radiusX","radiusY","farAway","pageX","pageY","frag","onDragOver","setData","effectAllowed","setDragImage","img","src","_top","onDragStart","inp","registerEventHandlers","finishInit","initHooks","textRendering","how","aggressive","indent","curSpace","curSpaceString","indentUnit","indentString","indentWithTabs","pos$1","defineInitHook","lastCopied","setLastCopied","newLastCopied","applyTextInput","inserted","deleted","recent","paste","textLines","multiPaste","pasteLinesPerSelection","lineWise","changeEvent","triggerElectric","handlePaste","pasted","clipboardData","disableInput","electricChars","smartIndent","getModeAt","electricInput","copyableRanges","lineRange","disableBrowserMagic","field","spellcheck","autocorrect","autocapitalize","hiddenTextarea","border","_findPosH","origDir","lineDir","moveOnce","boundToLine","bidi","mv","getWrappedLineExtent","moveInStorageOrder","searchInVisualLine","getRes","res","nextCh","moveVisually","sawType","getHelper","hitSide","_findPosV","pageSize","moveAmount","ContentEditableInput","lastAnchorNode","lastAnchorOffset","lastFocusNode","lastFocusOffset","polling","composing","gracePeriod","readDOMTimeout","posToDOM","badPos","bad","domToPos","lineNode","locateNodeInLineView","textNode","topNode","nodeValue","curNode","textContent","previousSibling","dist$1","onCopyCut","lineWiseCopyCut","clearData","kludge","hadFocus","showPrimarySelection","updateFromDOM","readFromDOMSoon","forceCompositionEnd","screenReaderLabelChanged","label","removeAttribute","showMultipleSelections","curAnchor","curFocus","rng","rangeCount","getRangeAt","startGracePeriod","rememberSelection","selectionInEditor","commonAncestorContainer","blur","pollSelection","pollInterval","poll","scan","isInGutter","triggerOnKeyDown","pollContent","fromIndex","fromNode","toNode","toIndex","newText","closing","extraLinebreak","recognizeMarker","close","addText","walk","cmText","markerID","isBlock","nodeName","domTextBetween","oldText","cutFront","cutEnd","oldTop","maxCutFront","newBot","oldBot","maxCutEnd","chFrom","chTo","contentEditable","readOnlyChanged","resetPosition","TextareaInput","prevInput","pollingFast","createField","textarea","prepareCopyCut","fastPoll","dispatchEvent","Event","_display","moveInputWithCursor","headPos","wrapOff","lineOff","teTop","teLeft","drawn","contextMenuPending","slowPoll","missed","same","resetSelectionOnContextMenu","oldScrollY","oldCSS","oldWrapperCSS","wrapperBox","offsetParent","scrollY","scrollTo","rehide","detectingSelectAll","prepareSelectAllHack","mouseup","extval","disabled","deflt","notOnInit","defineOption","newBreaks","refresh","getInputField","detach","attach","integer","defineOptions","helpers","setOption","getDoc","addKeyMap","removeKeyMap","addOverlay","score","priority","insertSorted","modeSpec","removeOverlay","newRanges","getTokenAt","getLineTokens","getTokenTypeAt","getHelpers","help","_global","getStateAfter","lineAtHeight","heightAtLine","defaultTextHeight","defaultCharWidth","getViewport","addWidget","vspace","hspace","triggerOnKeyPress","triggerOnKeyUp","triggerOnMouseDown","findPosH","amount","rtlMoveVisually","findPosV","goalColumn","goals","startChar","check","getScrollInfo","scrollToRange","interpret","startOperation","endOperation","swapDoc","phrase","phraseText","phrases","getWrapperElement","getScrollerElement","getGutterElement","registerHelper","registerGlobalHelper","predicate","addEditorMethods","dontDelegate","method","defineMIME","mime","defineExtension","func","defineDocExtension","fromTextArea","tabindex","placeholder","realSubmit","form","leaveSubmitMethodAlone","submit","wrappedSubmit","getTextArea","toTextArea","cmpPos","addLegacyProps","version","webpackPolyfill","deprecate","paths","EventListener","eventTarget","eventName","unorderedBindings","Set","connect","disconnect","bindingConnected","binding","bindingDisconnected","delete","handleEvent","extendedEvent","stopImmediatePropagation_1","stopImmediatePropagation","immediatePropagationStopped","extendEvent","_i","_a","bindings","leftIndex","rightIndex","configurable","Dispatcher","application","eventListenerMaps","Map","started","eventListeners","forEach","eventListener","stop","values","reduce","listeners","fetchEventListenerForBinding","handleError","error","message","fetchEventListener","eventListenerMap","fetchEventListenerMapForEventTarget","createEventListener","descriptorPattern","parseEventTarget","eventTargetName","Action","element","descriptor","tagName","defaultEventNames","getDefaultEventNameForElement","identifier","methodName","forToken","descriptorString","matches","trim","eventNameSuffix","Binding","action","willBeInvokedByEvent","invokeWithEvent","controller","Element","scope","containsElement","ElementObserver","delegate","_this","elements","mutationObserver","MutationObserver","mutations","processMutations","observe","childList","subtree","takeRecords","matchElementsInTree","has","removeElement","_b","_c","addElement","mutations_1","mutation","processMutation","processAttributeChange","attributeName","processRemovedNodes","removedNodes","processAddedNodes","addedNodes","elementAttributeChanged","matchElement","nodes","elementFromNode","processTree","elementIsActive","tree","processor","Node","ELEMENT_NODE","isConnected","elementMatched","elementUnmatched","AttributeObserver","elementObserver","hasAttribute","querySelectorAll","selector","elementMatchedAttribute","elementUnmatchedAttribute","elementAttributeValueChanged","fetch","del","prune","extendStatics","Multimap","valuesByKey","hasKey","hasValue","some","getValuesForKey","getKeysForValue","__extends","setPrototypeOf","__proto__","__","_super","IndexedMultimap","keysByValue","TokenListObserver","attributeObserver","tokensByElement","tokensMatched","readTokensForElement","refreshTokensForElement","unmatchedTokens","matchedTokens","tokensUnmatched","tokenMatched","tokenUnmatched","previousTokens","currentTokens","firstDifferingIndex","_","findIndex","tokensAreEqual","tokenString","parseTokenString","ValueListObserver","tokenListObserver","parseResultsByToken","WeakMap","valuesByTokenByElement","fetchParseResultForToken","fetchValuesByTokenForElement","elementMatchedValue","elementUnmatchedValue","parseResult","parseToken","valuesByToken","parseValueForToken","BindingObserver","bindingsByAction","valueListObserver","actionAttribute","disconnectAllActions","schema","connectAction","disconnectAction","controllerConstructor","bindingObserver","dispatcher","initialize","blessControllerConstructor","bless","extendWithReflect","Controller","_newTarget","Reflect","construct","Module","definition","blessDefinition","contextsByScope","connectedContexts","connectContextForScope","fetchContextForScope","disconnectContextForScope","DataMap","getFormattedKey","char","attributeValueContainsToken","TargetSet","targetName","targetNames","getSelectorForTargetNames","findElement","findAll","findAllElements","getSelectorForTargetName","targetDescriptor","targetAttribute","Scope","targets","tail","filterElements","closest","controllerSelector","controllerAttribute","ScopeObserver","scopesByIdentifierByElement","scopeReferenceCounts","scopesByIdentifier","fetchScopesByIdentifierForElement","referenceCount","scopeConnected","scopeDisconnected","Router","scopeObserver","modulesByIdentifier","contexts","loadDefinition","unloadIdentifier","connectModule","disconnectModule","getContextForElementAndIdentifier","defaultSchema","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","step","rejected","then","__generator","sent","trys","verb","TypeError","Application","router","readyState","register","load","definitions","isArray","unload","identifiers","getControllerForElementAndIdentifier","console","defineTargetProperties","ancestors","getPrototypeOf","getAncestorsForConstructor","getOwnTargetNamesForConstructor","getTargetNamesForConstructor","capitalize","getDefaults","baseUrl","breaks","gfm","headerIds","headerPrefix","langPrefix","mangle","pedantic","renderer","sanitize","sanitizer","silent","smartLists","smartypants","tokenizer","xhtml","changeDefaults","newDefaults","escapeTest","escapeReplace","escapeTestNoEncode","escapeReplaceNoEncode","escapeReplacements","getEscapeReplacement","unescapeTest","unescape","html","substring","caret","nonWordAndColonTest","originIndependentUrl","baseUrls","justDomain","protocol","domain","resolveUrl","href","rtrim","relativeBase","suffLen","currChar","escape","encode","edit","regex","getRegex","cleanUrl","prot","decodeURIComponent","encodeURI","noopTest","merge","splitCells","tableRow","cells","escaped","curr","findClosingBracket","checkSanitizeDeprecation","warn","_typeof2","_defineProperties","writable","_defineProperty","_objectSpread","ownKeys","getOwnPropertySymbols","sym","getOwnPropertyDescriptor","_slicedToArray","_arrayWithHoles","_arr","_n","_d","_s","err","_iterableToArrayLimit","_nonIterableRest","_toConsumableArray","arr2","_arrayWithoutHoles","_iterableToArray","_nonIterableSpread","noop","_WINDOW","_DOCUMENT","_MUTATION_OBSERVER","_PERFORMANCE","performance","_ref$userAgent","WINDOW","DOCUMENT","MUTATION_OBSERVER","PERFORMANCE","IS_DOM","IS_IE","DEFAULT_REPLACEMENT_CLASS","DATA_FA_I2SVG","DATA_FA_PSEUDO_ELEMENT","HTML_CLASS_I2SVG_BASE_CLASS","TAGNAMES_TO_SKIP_FOR_PSEUDOELEMENTS","PRODUCTION","PREFIX_TO_STYLE","STYLE_TO_PREFIX","LAYERS_TEXT_CLASSNAME","FONT_FAMILY_PATTERN","FONT_WEIGHT_TO_PREFIX","oneToTen","oneToTwenty","ATTRIBUTES_WATCHED_FOR_MUTATION","DUOTONE_CLASSES","GROUP","SWAP_OPACITY","PRIMARY","SECONDARY","RESERVED_CLASSES","initial","FontAwesomeConfig","_ref","_ref2","coerce","getAttrConfig","_config","familyPrefix","replacementClass","autoReplaceSvg","autoAddCss","autoA11y","searchPseudoElements","observeMutations","mutateApproach","keepOriginalSource","measurePerformance","showMissingIcons","config","hooks","shims","namespace","functions","loaded","domready","fn","listener","asyncTimer","PENDING","SETTLED","FULFILLED","REJECTED","NOOP","isNode","global","process","emit","asyncSetTimer","setImmediate","asyncQueue","asyncFlush","asyncCall","callback","arg","invokeCallback","subscriber","owner","settled","_state","_data","promise","handleThenable","resolved","fulfill","reason","publishFulfillment","publishRejection","publish","_then","_handled","notifyRejectionHandled","resolver","rejectPromise","invokeResolver","onFulfillment","onRejection","catch","all","promises","results","race","picked","meaninglessTransform","rotate","flipX","flipY","insertCss","innerHTML","headChildren","beforeChild","nextUniqueId","random","toArray","classArray","classList","getIconName","prefix","iconName","htmlEscape","joinStyles","acc","styleName","transformIsMeaningful","transform","transformForSvg","containerWidth","iconWidth","innerTranslate","innerScale","innerRotate","path","ALL_SPACE","fillBlack","abstract","fill","makeInlineSvgAbstract","params","_params$icons","icons","main","mask","symbol","maskId","titleId","extra","_params$watchable","watchable","widthClass","attrClass","role","explicitMaskId","mainWidth","mainPath","icon","maskWidth","maskPath","trans","maskRect","maskInnerGroupChildrenMixin","maskInnerGroup","maskOuterGroup","clipId","maskTag","maskUnits","maskContentUnits","defs","makeIconMasking","styleString","makeIconStandard","asSymbol","asIcon","makeLayersTextAbstract","_params$watchable2","_ref2$width","_ref2$height","_ref2$startCentered","startCentered","transformForCss","class","makeLayersCounterAbstract","noop$1","preamble","perf","subject","initialValue","thisContext","bindInternal4","toHex","unicode","defineIcons","_params$skipHooks","skipHooks","normalized","addPack","_byUnicode","_byLigature","_byOldName","build","lookup","reducer","ligatures","ligature","hasRegular","shim","oldName","byUnicode","styles$1","getCanonicalIcon","autoFetchSvg","iconFromMapping","mapping","toHtml","abstractNodes","_abstractNodes$attrib","_abstractNodes$childr","joinAttributes","noop$2","isWatched","mutators","newOuterHTML","outerHTML","newNode","nest","forSvg","splitClasses","toSvg","newInnerHTML","performOperationSync","perform","callbackFunction","frame","requestAnimationFrame","mutator","enableObservation","mo","treeCallback","nodeCallback","pseudoElementsCallback","_options$observeMutat","observeMutationsRoot","objects","mutationRecord","_getCanonicalIcon","characterData","classParser","existingPrefix","existingIconName","innerText","parseTransformString","transformString","parseFloat","parseMeta","_classParser","extraClasses","extraStyles","styleParser","transformParser","symbolParser","extraAttributes","attributesParser","maskParser","MissingIcon","stack","FILL","ANIMATION_BASE","attributeType","repeatCount","dur","RING","OPACITY_ANIMATE","missing","cx","cy","opacity","styles$2","asFoundIcon","vectorData","findIcon","FontAwesomeKitConfig","styles$3","generateMutation","nodeMeta","computedFontSize","fontSize","boundingClientRect","generateLayersText","generateSvgReplacementMutation","onTree","root","htmlClassList","hclAdd","suffix","hclRemove","prefixes","prefixesDomQuery","candidates","resolvedMutations","onNode","replaceForPosition","pendingAttribute","alreadyProcessedPseudoElement","fontFamily","getPropertyValue","fontWeight","hexValue","iconIdentifier","meta","processable","operations","dfp","drc","fp","rc","dPatt","customPropPatt","rPatt","Library","instance","Constructor","_classCallCheck","protoProps","staticProps","_len","_key","additions","_pullDefinitions","_normalized$key","ensureCss","_cssInserted","apiObject","abstractCreator","findIconDefinition","iconLookup","_iconLookup$prefix","library","dom","i2svg","_params$node","_params$callback","watch","autoReplaceSvgRoot","autoReplace","iconDefinition","_params$transform","_params$symbol","_params$mask","_params$maskId","_params$title","_params$titleId","_params$classes","_params$attributes","_params$styles","maybeIconDefinition","api","noAuto","parse","_params$transform2","_params$title2","_params$classes2","_params$attributes2","_params$styles2","_params$title3","_params$classes3","_params$attributes3","_params$styles3","layer","assembler","_params$classes4","_params$autoReplaceSv","cmCfg","modeCfg","htmlMode","htmlModeMissing","highlightFormatting","maxBlockquoteDepth","taskLists","strikethrough","emoji","fencedCodeBlockHighlighting","xml","tokenTypeOverrides","tokenTypes","header","quote","list1","list2","list3","hr","image","imageAltText","imageMarker","formatting","linkInline","linkEmail","linkText","linkHref","em","strong","tokenType","hrRE","listRE","taskListRE","atxHeaderRE","allowAtxHeaderWithoutSpace","setextHeaderRE","textRE","fencedCodeRE","linkDefRE","punctuation","switchInline","inline","switchBlock","block","linkTitle","indentedCode","htmlBlock","exit","htmlState","tagStart","tokenize","isInText","inlineNormal","blockNormal","trailingSpaceNewLine","prevLine","thisLine","firstTokenOnLine","prevLineLineIsEmpty","prevLineIsIndentedCode","prevLineIsHr","prevLineIsList","maxNonCodeIndentation","listStack","lineIndentation","indentationDiff","allowsInlineContinuation","fencedCodeEnd","isHr","getType","setext","listType","taskList","fencedEndRE","localMode","findModeByName","mimes","localState","local","footnoteLink","md_inside","returnType","currListInd","hasExitedList","maxFencedEndInd","taskOpen","taskClosed","listMod","handleText","matchCh","previousFormatting","formattingEscape","atts","leftFlanking","rightFlanking","setEm","setStrong","retType","endChar","returnState","linkRE","footnoteLinkInside","footnoteUrl","textAfter","blockCommentStart","blockCommentEnd","closeBrackets","fold","htmlConfig","autoSelfClosers","implicitlyClosed","contextGrabbers","doNotIndent","allowUnquoted","allowMissing","caseFold","xmlConfig","allowMissingTagName","editorConf","config_","setStyle","inText","chain","parser","inBlock","doctype","inTag","closure","baseState","isInAttribute","stringStartCol","terminator","depth","startOfLine","noIndent","popContext","maybePopContext","nextTagName","parentTagName","tagNameState","closeTagNameState","attrState","matchClosing","closeState","closeStateErr","_stream","attrEqState","attrValueState","attrContinuedState","baseIndent","fullLine","multilineTagIndentPastTag","multilineTagIndentFactor","alignCDATA","tagAfter","grabbers","configuration","skipAttribute","xmlCurrentTag","xmlCurrentContext","overlayMode","combine","basePos","baseCur","overlayPos","overlayCur","streamSeen","combineTokens","overlayToken","Function","modeInfo","alias","findModeByMIME","findModeByExtension","findModeByFileName","filename","dot","lastIndexOf","_require2","_escape","outputLink","cap","link","raw","Tokenizer","rules","newline","lastToken","trimRight","codeBlockStyle","fences","lang","heading","nptable","item","blockquote","addBack","loose","istask","ischecked","bull","isordered","ordered","items","itemMatch","bullet","task","checked","def","table","lheading","paragraph","inLink","inRawBlock","lastParenIndex","linkLen","_escapes","links","reflink","nolink","br","autolink","url","prevCapZero","_backpedal","Renderer","_code","infostring","_html","slugger","slug","flags","_text","TextRenderer","Slugger","seen","originalSlug","CodeMirrorSpellChecker","marked","isMac","toggleBold","toggleItalic","drawLink","toggleHeadingSmaller","toggleHeadingBigger","drawImage","toggleBlockquote","toggleOrderedList","toggleUnorderedList","toggleCodeBlock","togglePreview","toggleStrikethrough","toggleHeading1","toggleHeading2","toggleHeading3","cleanBlock","drawTable","drawHorizontalRule","toggleSideBySide","toggleFullScreen","shortcuts","fixShortcut","createIcon","enableTooltips","el","actionName","tooltip","getBindingName","createTootlip","createSep","getState","stat","ret","bold","italic","saved_overflow","editor","codemirror","overflow","toolbarButton","toolbarElements","fullscreen","sidebyside","_toggleBlock","blockStyles","fenceCharsToInsert","fencing_line","token_state","code_type","line_num","firstTok","lastTok","fencedChars","block_start","block_end","cur_start","cur_end","tok","is_code","start_text","start_line","end_text","end_line","fence_chars","search_from","next_line","next_line_last_tok","no_sel_and_starting_of_line","sel_multi","start_line_sel","end_line_sel","repl_start","repl_end","_replaceSelection","insertFencingAtSelection","_toggleLine","_toggleHeading","startPoint","endPoint","_cleanBlock","promptURLs","prompt","promptTexts","insertTexts","horizontalRule","preview","useSideBySideListener","previewNormal","toolbar","toolbar_div","sideBySideRenderingFunction","previewRender","startEnd","currHeadingLevel","repl","start_chars","end_chars","_mergeProperties","wordCount","toolbarBuiltInButtons","default","SimpleMDE","autoDownloadFA","autoDownloadFontAwesome","styleSheets","getElementsByTagName","log","showIcons","status","plainText","markdown","parsingConfig","autosave","unique_id","uniqueId","render","foundSavedValue","isLocalStorageAvailable","localStorage","setItem","removeItem","markedOptions","renderingConfig","singleLineBreaks","codeSyntaxHighlighting","hljs","highlightAuto","setOptions","_rendered","backdrop","spellChecker","gitHubSpice","codeMirrorInstance","styleSelectedText","forceSync","gui","createToolbar","statusbar","createStatusbar","enabled","sideBySide","createSideBySide","temp_cm","simplemde","getItem","getElementById","hh","getHours","getMinutes","dd","autosaveTimeoutId","clearAutosavedValue","cScroll","pScroll","ratio","onscroll","toolbarData","toolbarGuideIcon","hideIcons","opera","nonSeparatorIconsFollow","toolbarTips","onclick","cmWrapper","onUpdate","defaultValue","isPreviewActive","isSideBySideActive","isFullscreenActive","definitionsFromContext","logicalName","identifierForContextKey","definitionForModuleAndIdentifier","definitionForModuleWithContextAndKey","Rails","linkClickSelector","buttonClickSelector","exclude","inputChangeSelector","formSubmitSelector","formInputClickSelector","formDisableSelector","formEnableSelector","fileInputSelector","linkDisableSelector","buttonDisableSelector","nonce","loadCSPNonce","cspNonce","matchesSelector","mozMatchesSelector","msMatchesSelector","oMatchesSelector","webkitMatchesSelector","$","csrfParam","csrfToken","CSRFProtection","xhr","setRequestHeader","refreshCSRFTokens","param","CustomEvent","fire","evt","createEvent","initCustomEvent","bubbles","cancelable","stopEverything","eventType","AcceptHeaders","createXHR","prepareOptions","processResponse","json","script","ajax","response","responseText","getResponseHeader","success","statusText","complete","beforeSend","XMLHttpRequest","OPENED","send","location","dataType","accept","open","crossDomain","withCredentials","onreadystatechange","DONE","JSON","DOMParser","parseFromString","isCrossDomain","originAnchor","urlAnchor","serializeElement","additionalParam","inputs","encodeURIComponent","formElements","allowAction","handleConfirm","confirm","answer","disableFormElement","disableFormElements","disableLinkElement","enableFormElement","enableFormElements","enableLinkElement","isXhrRedirect","handleDisabledElement","enableElement","disableElement","replacement","originalText","handleMethod","formContent","click","isRemote","handleRemote","enctype","FormData","append","formSubmitButtonClick","formNoValidate","preventInsignificantClick","insignificantMetaClick","jQuery","rails","ajaxPrefilter","originalOptions","_rails_loaded","Turbolinks","supported","pushState","visit","clearCache","setProgressBarDelay","copyObject","defer","throttle","dispatch","u","initEvent","uuid","Location","absoluteURL","hash","requestURL","getOrigin","getPath","getPathComponents","getLastPathComponent","getExtension","isHTML","isPrefixedBy","isEqualTo","toCacheKey","toJSON","valueOf","_t","HttpRequest","requestCanceled","requestTimedOut","requestFailed","requestLoaded","requestProgressed","referrer","NETWORK_FAILURE","TIMEOUT_FAILURE","timeout","notifyApplicationBeforeRequestStart","setProgress","requestStarted","abort","lengthComputable","total","endRequest","requestCompletedWithResponse","failed","requestFailedWithStatusCode","notifyApplicationAfterRequestEnd","onprogress","ontimeout","onabort","destroy","progress","requestFinished","ProgressBar","trickle","_t2","stylesheetElement","createStylesheetElement","progressElement","createProgressElement","defaultCSS","show","installStylesheetElement","installProgressElement","startTrickling","hide","hiding","fadeProgressElement","uninstallProgressElement","stopTrickling","trickleInterval","BrowserAdapter","showProgressBar","_t3","progressBar","visitProposedToLocationWithAction","startVisitToLocationWithAction","visitStarted","issueRequest","changeHistory","loadCachedSnapshot","visitRequestStarted","hasCachedSnapshot","showProgressBarAfterDelay","visitRequestProgressed","visitRequestCompleted","loadResponse","visitRequestFailedWithStatusCode","reload","visitRequestFinished","hideProgressBar","visitCompleted","followRedirect","pageInvalidated","progressBarTimeout","progressBarDelay","_t4","onPageLoad","onPopState","shouldHandlePopState","turbolinks","restorationIdentifier","historyPoppedToLocationWithRestorationIdentifier","pageLoaded","pageIsLoaded","HeadDetails","tracked","fromHeadElement","hasElementWithKey","getTrackedElementSignature","getScriptElementsNotInDetails","getElementsMatchingTypeNotInDetails","getStylesheetElementsNotInDetails","getProvisionalElements","getMetaValue","findMetaElementByName","Snapshot","headDetails","bodyElement","fromHTMLString","fromHTMLElement","clone","getRootLocation","getSetting","getCacheControlValue","getElementForAnchor","getPermanentElements","getPermanentElementById","getPermanentElementsPresentInSnapshot","findFirstAutofocusableElement","hasAnchor","isPreviewable","isCacheable","isVisitable","renderView","viewWillRender","newBody","viewRendered","invalidateView","viewInvalidated","createScriptElement","async","__super__","SnapshotRenderer","currentSnapshot","newSnapshot","isPreview","currentHeadDetails","newHeadDetails","currentBody","shouldRender","mergeHead","replaceBody","focusFirstAutofocusableElement","copyNewHeadStylesheetElements","copyNewHeadScriptElements","removeCurrentHeadProvisionalElements","copyNewHeadProvisionalElements","relocateCurrentBodyPermanentElements","activateNewBodyScriptElements","assignNewBody","replacePlaceholderElementsWithClonedPermanentElements","trackedElementsAreIdentical","getNewHeadStylesheetElements","getNewHeadScriptElements","getCurrentHeadProvisionalElements","getNewHeadProvisionalElements","getCurrentBodyPermanentElements","permanentElement","getNewBodyScriptElements","_t5","_t6","ErrorRenderer","replaceHeadAndBody","activateBodyScriptElements","getScriptElements","View","htmlElement","getSnapshot","markAsPreview","renderSnapshot","renderError","ScrollManager","onScroll","_t7","scrollToElement","scrollToPosition","updatePosition","scrollPositionChanged","SnapshotCache","snapshots","put","write","Visit","performScroll","_t8","adapter","timingMetrics","recordTimingMetric","request","cancelRender","fail","visitFailed","historyChanged","shouldIssueRequest","getCachedSnapshot","getCachedSnapshotForLocation","cacheSnapshot","visitRendered","redirectedToLocation","followedRedirect","replaceHistoryWithLocationAndRestorationIdentifier","scrolled","scrollToRestoredPosition","scrollToTop","scrollToAnchor","restorationData","scrollPosition","getTime","getTimingMetrics","snapshotCached","cancelAnimationFrame","_t9","clickBubbled","clickCaptured","scrollManager","startHistory","disable","stopHistory","applicationAllowsVisitingLocation","locationIsVisitable","getRestorationDataForIdentifier","startVisit","pushHistoryWithLocationAndRestorationIdentifier","shouldCacheSnapshot","notifyApplicationBeforeCachingSnapshot","lastRenderedLocation","getCurrentRestorationData","notifyApplicationBeforeRender","currentVisit","notifyApplicationAfterRender","notifyApplicationAfterPageLoad","clickEventIsSignificant","getVisitableLinkForNode","getVisitableLocationForLink","applicationAllowsFollowingLinkToLocation","getActionForLink","notifyApplicationAfterClickingLinkToLocation","notifyApplicationBeforeVisitingLocation","notifyApplicationAfterVisitingLocation","timing","createVisit","isContentEditable","nodeIsVisitable","currentScript","fieldTarget","inlineAttachment","codemirror4","uploadUrl","extraHeaders","emptyListRE","unorderedListRE","incrementRemainingMarkdownListNumbers","startLine","skipCount","startItem","startIndent","nextLineNumber","nextItem","nextIndent","newNumber","nextNumber","itemNumber","newlineAndIndentContinueMarkdownList","replacements","eolState","inList","inQuote","cursorBeforeBullet","endOfQuote","endOfList","numbered","tabAndIndentMarkdownList","shiftTabAndUnindentMarkdownList","fullScreenRestore","setFullscreen","setNormal","clearPlaceholder","setPlaceholder","placeHolder","onChange","onCursorActivity","markedSelection","coverRange","markedSelectionStyle","addAt","endLine","atEnd","urlRE","modeConfig","codeDepth","gfmOverlay","codeBlock","ateSpace","difference","markdownConfig","Typo","includes","aff_loading","xhr_aff","aff_data","num_loaded","typo","dic_data","dic_loading","xhr_dic","rx_word","dictionary","affData","wordsData","settings","dictionaryTable","compoundRules","compoundRuleCodes","replacementTable","memoized","_jlen","readDataFile","setFunc","_readFile","asyncLoad","setAffData","setup","setWordsData","_parseAFF","rule","ONLYINCOMPOUND","_parseDIC","ruleText","expressionText","character","loadedCallback","extension","dictionaryPath","getURL","__dirname","charset","req","overrideMimeType","fs","existsSync","readFileSync","numEntries","lineParts","_removeAffixComments","definitionParts","ruleType","ruleCode","combineable","entries","charactersToRemove","additionParts","charactersToAdd","continuationClasses","parseRuleCodes","regexToMatch","entry","_removeDicComments","addWord","ruleCodesArray","NEEDAFFIX","newWords","_applyRule","ii","_iilen","newWord","combineCode","combineRule","otherNewWords","iii","_iiilen","textCodes","FLAG","continuationRule","aWord","trimmedWord","checkExact","capitalizedWord","hasFlag","lowercaseWord","ruleCodes","COMPOUNDMIN","flag","wordFlags","alphabet","suggest","memoizedLimit","replacementEntry","correctedWord","edits1","words","known_only","_edit","rv","ed1","weighted_corrections","ed1word","sorted_corrections","a_val","b_val","localeCompare","capitalization_scheme","working_limit","correct","Lexer","Parser","_require","_ret","pending","lex","use","opts","_loop","prevRenderer","_loop2","prevTokenizer","_len2","_key2","lexer","blockTokens","errMsg","l2","row","inlineTokens","codespan","inlineText","_paragraph","_label","_title","_tag","_comment","_punctuation","_scheme","_email","_attribute","_href","_extended_email","textRenderer","l3","cell","itemBody","checkbox","parseInline","tablecell","tablerow","listitem","Timeout","clearFn","_id","_clearFn","unref","enroll","msecs","_idleTimeoutId","_idleTimeout","unenroll","_unrefActive","_onTimeout","clearImmediate","registerImmediate","channel","messagePrefix","onGlobalMessage","nextHandle","tasksByHandle","currentlyRunningATask","attachTo","nextTick","runIfPresent","postMessage","importScripts","postMessageIsAsynchronous","oldOnMessage","onmessage","canUsePostMessage","MessageChannel","port1","port2","run","cachedSetTimeout","cachedClearTimeout","defaultSetTimout","defaultClearTimeout","runTimeout","fun","currentQueue","queue","draining","queueIndex","cleanUpNextTick","drainQueue","runClearTimeout","Item","browser","env","argv","versions","addListener","once","removeListener","removeAllListeners","prependListener","prependOnceListener","cwd","chdir","umask","faArrowUp","faBars","faChevronDown","faChevronLeft","faFacebookF","faInstagram","faLinkedinIn","faTwitter","faYoutube","easing","duration","startEvent","throttleDelay","debounceDelay","disableMutationObserver","O","atob","phone","tablet","S","isSupported","ready","refreshHard","M","leading","maxWait","trailing","flush","dataset","aos","WebKitMutationObserver","MozMutationObserver","anchorPlacement","isWindow","class2type","isPlainObject","hasOwn","each","isArraylike","getId","expando","store","setId","removeData","copyIsArray","deep","elem","q","second","dequeue","elems","clientTop","offsetParentFn","parentOffset","borderTopWidth","borderLeftWidth","Velocity","Utilities","timeLast","IE","rAFShim","webkitRequestAnimationFrame","mozRequestAnimationFrame","timeDelta","timeCurrent","nowOffset","navigationStart","_slice","cloned","_inArray","sanitizeElements","Type","isWrapped","isNumber","variable","isString","isFunction","isSVG","SVGElement","isEmptyObject","isJQuery","jquery","DURATION_DEFAULT","EASING_DEFAULT","State","isMobile","isAndroid","isGingerbread","isChrome","isFirefox","prefixElement","prefixMatches","scrollAnchor","scrollPropertyLeft","scrollPropertyTop","isTicking","calls","delayedElements","CSS","Redirects","Easings","mobileHA","_cacheValues","promiseRejectEmpty","isAnimating","computedStyle","tweensContainer","rootPropertyValueCache","transformCache","hook","mock","major","minor","patch","debug","timestamp","pauseAll","queueName","currentTime","activeCall","resume","pauseDelayOnElement","resumeAll","resumeDelayOnElement","generateSpringRK4","springAccelerationForState","tension","friction","springEvaluateStateWithDerivative","initialState","dt","derivative","dv","springIntegrateState","dxdt","dvdt","springRK4Factory","have_duration","last_state","initState","time_lapsed","tolerance","percentComplete","linear","swing","cos","PI","spring","exp","easingArray","generateBezier","RegEx","isHex","valueUnwrap","wrappedValueAlreadyExtracted","valueSplit","Lists","colors","transformsBase","transforms3D","units","colorNames","Hooks","templates","registered","rgbComponents","rootProperty","hookTemplate","hookNames","defaultValues","fullHookName","hookPosition","getRoot","hookData","getUnit","fixColors","$0","$1","$2","cleanRootPropertyValue","rootPropertyValue","Values","isCSSNullValue","extractValue","hookRoot","injectValue","hookValue","rootPropertyValueParts","Normalizations","clip","propertyValue","extracted","blurComponent","zoom","transformName","Data","invalid","colorName","converted","black","blue","gray","green","red","white","hexToRgb","augmentDimension","wantInner","augment","sides","fields","getDimension","innerWidth","outerWidth","outerHeight","Names","camelCase","subMatch","SVGAttribute","SVGAttributes","prefixCheck","vendors","vendorsLength","propertyPrefixed","hex","rgbParts","getUnitType","getDisplayType","currentClass","removeClass","forceStyleLookup","computePropertyValue","computedValue","toggleDisplay","setPropertyValue","revertDisplay","contentBoxHeight","contentBoxWidth","normalizedPropertyName","normalizedPropertyValue","getBBox","scrollData","propertyName","alternateValue","hookName","flushTransformCache","getTransformFloat","transformProperty","SVGTransforms","translate","skewX","skewY","scale","transformValue","perspective","arg2","arg3","adjustedSet","animate","getChain","isUtility","promiseData","elementsWrapped","argumentIndex","propertiesMap","syntacticSugar","names","rejecter","elementsLength","elementsIndex","startingArgumentPosition","delayTimer","callsToStop","activeTween","endValue","currentValue","completeCall","durationOriginal","delayOriginal","backwards","elementIndex","stagger","drag","abortError","callUnitConversionData","lastParent","lastPosition","lastFontSize","lastPercentToPxWidth","lastPercentToPxHeight","lastEmToPx","remToPx","vwToPx","vhToPx","processElement","reverseCallsCount","reverseOptions","elementArrayIndex","elementUnitConversionData","clearQueue","velocityQueueEntryFlag","callIndex","delayComplete","delayBegin","buildQueue","lastTweensContainer","scrollPositionCurrent","scrollPositionCurrentAlternate","scrollPositionEnd","scrollDirection","scrollOffset","unitType","lastTween","lastStartValue","stringify","parsePropertyValue","valueData","skipResolvingEasing","getEasing","fixPropertyValue","separatedValue","endValueUnitType","startValueUnitType","operator","separateValue","numericValue","iStart","iEnd","aStart","aEnd","inCalc","inRGB","inRGBA","cStart","cEnd","tStart","tEnd","dotStart","dotEnd","uStart","uEnd","nStart","nEnd","sameRatioIndicators","myParent","samePercentRatio","sameEmRatio","measurement","unitRatios","emToPx","percentToPxWidth","percentToPxHeight","dummy","createElementNS","calculateUnitRatios","colorComponents","endValueRGB","startValueRGB","dataArray","tick","ticker","updateTicker","velocity","elementsSize","inlineValues","computedValues","delayPaused","delayRemaining","generateStep","steps","mX1","mY1","mX2","mY2","NEWTON_ITERATIONS","NEWTON_MIN_SLOPE","SUBDIVISION_PRECISION","SUBDIVISION_MAX_ITERATIONS","kSplineTableSize","kSampleStepSize","float32ArraySupported","isFinite","mSampleValues","Float32Array","A","aA1","aA2","B","C","calcBezier","aT","getSlope","newtonRaphsonIterate","aX","aGuessT","currentSlope","calcSampleValues","binarySubdivide","aA","aB","currentX","currentT","getTForX","intervalStart","currentSample","lastSample","guessForT","initialSlope","_precomputed","precompute","getControlPoints","callsLength","compactSparseArray","callContainer","timeStart","firstTick","tweenDummyValue","pauseObject","millisecondsEllapsed","callLength","transformPropertyExists","flexValue","tween","patternReplace","tweenDelta","adjustedSetData","translate3d","isStopped","remainingCallsExist","transformHAPropertyExists","tweenContainer","oldStartValue","Zepto","webpackContext","webpackContextResolve","faqBody","currentTarget","faqHeader","slideDir","fonts","mobileNav","scrollToTopButton","require","typekit","openButton","closeButton","AOS","topButton","topButtonTarget","aa","ba","ca","da","FontFace","z","media","D","E","F","G","I","J","H","ga","ha","L","K","ja","N","Q","fa","R","T","la","U","serif","V","ma","W","X","na","oa","qa","xa","ra","sa","ta","ua","ia","ka","pa","fontfamily","fontStyle","projectId","urls","families","testStrings","ya","za","latin","cyrillic","greek","khmer","Hanuman","Aa","thin","extralight","ultralight","light","regular","book","medium","semibold","demibold","extrabold","ultrabold","heavy","Ba","Ca","Ea","Fa","Arimo","Cousine","Tinos","Ga","Ha","va","Da","wa","Typekit","__webfontfontdeckmodule__","weight","hostname","ea","Y","custom","fontdeck","monotype","google","Z","cardBody","cardHeader","email","emailTarget","submitTarget","win","Image","_createClass","Dom7","els","tempParent","toCreate","unique","uniqueArray","Class","_setPrototypeOf","_createSuper","Derived","hasNativeReflectConstruct","sham","Proxy","Boolean","_isNativeReflectConstruct","Super","_getPrototypeOf","NewTarget","_possibleConstructorReturn","_assertThisInitialized","ReferenceError","Methods","hasClass","toggleClass","attrs","attrName","removeAttr","dom7ElementDataStorage","dataKey","elStyle","webkitTransform","transition","webkitTransitionDuration","transitionDuration","targetSelector","capture","handleLiveEvent","eventData","dom7EventData","is","_parents","parents","_event","dom7LiveListeners","proxyListener","dom7Listeners","dom7proxy","trigger","_len5","_key5","dataIndex","transitionEnd","fireCallBack","includeMargins","_styles","_styles2","_scrollTop","_scrollLeft","scrollX","_prop","compareWith","eq","returnIndex","newChild","tempDiv","prepend","nextElementSibling","nextAll","nextEls","_next","previousElementSibling","prevAll","prevEls","_prev","_parent","foundElements","matchedItems","_len6","_key6","toAdd","Utils","deleteProps","getTranslate","matrix","curTransform","transformMatrix","WebKitCSSMatrix","MozTransform","OTransform","MsTransform","msTransform","m41","m42","parseUrlQuery","query","urlToParse","paramsPart","isObject","nextSource","keysArray","nextIndex","nextKey","desc","Modernizr","maxTouchPoints","DocumentTouch","PointerEvent","observer","passiveListener","supportsPassive","gestures","SwiperClass","eventsListeners","onceHandler","f7proxy","eventHandler","eventsArray","instanceParams","moduleName","modulesParams","moduleParams","modulePropName","moduleProp","moduleEventName","components","proto","static","install","_len3","_key3","installModule","_len4","_key4","updateSize","swiper","$el","isHorizontal","isVertical","updateSlides","$wrapperEl","swiperSize","rtl","rtlTranslate","wrongRTL","isVirtual","virtual","previousSlidesLength","slides","slideClass","slidesLength","snapGrid","slidesGrid","slidesSizesGrid","slidesForMargin","slideIndex","cssMode","offsetBefore","slidesOffsetBefore","offsetAfter","slidesOffsetAfter","previousSnapGridLength","previousSlidesGridLength","spaceBetween","slidePosition","prevSlideSize","slidesNumberEvenToRows","slideSize","virtualSize","marginRight","slidesPerColumn","slidesPerView","slidesPerColumnFill","newSlidesGrid","slidesPerRow","numFullColumns","_slide","newSlideOrderIndex","slidesPerGroup","groupIndex","slideIndexInGroup","columnsInGroup","slideStyles","currentTransform","currentWebKitTransform","roundLengths","boxSizing","_boxSizing","swiperSlideSize","centeredSlides","slidesPerGroupSkip","effect","setWrapperSize","slidesGridItem","_i2","_slidesGridItem","centeredSlidesBounds","allSlidesSize","slideSizeValue","maxSnap","snap","centerInsufficientSlides","_allSlidesSize","allSlidesOffset","snapIndex","watchOverflow","checkOverflow","watchSlidesProgress","watchSlidesVisibility","updateSlidesOffset","updateAutoHeight","speed","activeSlides","newHeight","setTransition","visibleSlides","slide","_index","activeIndex","swiperSlideOffset","updateSlidesProgress","offsetCenter","slideVisibleClass","visibleSlidesIndexes","_slide2","slideProgress","minTranslate","autoHeight","slideBefore","slideAfter","isVisible","updateProgress","multiplier","translatesDiff","maxTranslate","isBeginning","isEnd","wasBeginning","wasEnd","updateSlidesClasses","activeSlide","realIndex","slideActiveClass","slideNextClass","slidePrevClass","slideDuplicateActiveClass","slideDuplicateNextClass","slideDuplicatePrevClass","slideDuplicateClass","nextSlide","prevSlide","updateActiveIndex","newActiveIndex","previousIndex","previousRealIndex","previousSnapIndex","normalizeSlideIndex","initialized","runCallbacksOnInit","updateClickedSlide","slideFound","clickedSlide","clickedIndex","slideToClickedSlide","virtualTranslate","currentTranslate","setTranslate","byController","wrapperEl","previousTranslate","translateTo","runCallbacks","translateBounds","internal","animating","preventInteractionOnTransition","newTranslate","_wrapperEl$scrollTo","isH","onTranslateToWrapperTransitionEnd","destroyed","transitionStart","slideTo","initialSlide","allowSlideNext","allowSlidePrev","_wrapperEl$scrollTo2","onSlideToWrapperTransitionEnd","slideToLoop","newIndex","loopedSlides","slideNext","increment","loopFix","_clientLeft","slidePrev","normalize","prevIndex","normalizedTranslate","normalizedSnapGrid","prevSnap","slideReset","slideToClosest","threshold","currentSnap","nextSnap","_currentSnap","slidesPerViewDynamic","slideToIndex","loopCreate","loopFillGroupWithBlank","blankSlidesNum","blankNode","slideBlankClass","loopAdditionalSlides","prependSlides","appendSlides","_i3","_i4","loopDestroy","grabCursor","setGrabCursor","moving","simulateTouch","isLocked","unsetGrabCursor","device","screenWidth","screenHeight","ipad","ipod","iphone","firefox","electron","macos","manipulation","appendSlide","prependSlide","addSlide","activeIndexBuffer","baseLength","slidesBuffer","currentSlide","_i5","_i6","removeSlide","slidesIndexes","indexToRemove","removeAllSlides","androidChrome","desktop","cordova","phonegap","os","osVersion","webView","standalone","matchMedia","webview","pixelRatio","devicePixelRatio","onTouchStart","touchEventsData","originalEvent","$targetEl","touchEventsTarget","isTouchEvent","isTouched","isMoved","noSwiping","noSwipingSelector","noSwipingClass","allowClick","swipeHandler","targetTouches","currentY","startX","startY","edgeSwipeDetection","iOSEdgeSwipeDetection","edgeSwipeThreshold","iOSEdgeSwipeThreshold","allowTouchCallbacks","isScrolling","startMoving","touchStartTime","swipeDirection","allowThresholdMove","shouldPreventDefault","allowTouchMove","touchStartPreventDefault","touchStartForcePreventDefault","onTouchMove","targetTouch","changedTouches","preventedByNestedSwiper","touchReleaseOnEdges","diffX","diffY","sqrt","pow","touchAngle","atan2","touchMoveStopPropagation","nested","startTranslate","allowMomentumBounce","touchRatio","disableParentSwiper","resistanceRatio","resistance","followFinger","freeMode","velocities","onTouchEnd","currentPos","touchEndTime","timeDiff","lastClickTime","freeModeMomentum","lastMoveEvent","velocityEvent","freeModeMinimumVelocity","freeModeMomentumVelocityRatio","momentumDuration","freeModeMomentumRatio","momentumDistance","newPosition","afterBouncePosition","needsLoopFix","doBounce","bounceAmount","freeModeMomentumBounceRatio","freeModeMomentumBounce","freeModeSticky","moveDistance","currentSlideSize","longSwipesMs","stopIndex","groupSize","_increment","longSwipes","longSwipesRatio","shortSwipes","navigation","nextEl","prevEl","breakpoints","setBreakpoint","autoplay","running","paused","preventClicks","preventClicksPropagation","dummyEventAttached","dummyEventListener","updateOnWindowResize","uniqueNavElements","preloadImages","updateOnImagesReady","passiveListeners","containerModifierClass","wrapperClass","prototypes","attachEvents","touchEvents","onClick","passive","detachEvents","_swiper$loopedSlides","breakpoint","getBreakpoint","currentBreakpoint","breakpointOnlyParams","paramValue","breakpointParams","originalParams","wasMultiRow","isMultiRow","directionChanged","needsReLoop","changeDirection","points","point","minRatio","_points$i","wasLocked","lastSlidePosition","addClasses","classNames","suffixes","removeClasses","images","loadImage","imageEl","srcset","checkForComplete","onReady","imagesLoaded","imagesToLoad","currentSrc","extendedDefaults","_SwiperClass","subClass","superClass","_inherits","Swiper","prototypeGroup","protoMethod","moduleParamName","swiperParams","useModulesParams","passedParams","swipers","containerEl","newParams","touchEventsTouch","touchEventsDesktop","clickTimeout","useModules","spv","breakLoop","_i7","_i8","translateValue","newDirection","needUpdate","currentDirection","slideEl","deleteInstance","cleanStyles","Device$1","Support$1","support","isEdge","isSafari","isUiWebView","Browser$1","Resize","resize","resizeHandler","orientationChangeHandler","Observer","WebkitMutationObserver","ObserverFunc","observerUpdate","observers","observeParents","containerParents","observeSlideChildren","Observer$1","Virtual","_swiper$params","_swiper$params$virtua","addSlidesBefore","addSlidesAfter","_swiper$virtual","previousFrom","previousTo","previousSlidesGrid","renderSlide","previousOffset","offsetProp","slidesAfter","slidesBefore","onRendered","lazy","renderExternal","slidesToRender","prependIndexes","appendIndexes","_i9","$slideEl","numberOfNewSlides","newCache","cachedIndex","$cachedEl","cachedElIndex","Virtual$1","beforeInit","overwriteParams","Keyboard","kc","keyboard","onlyInViewport","inView","windowWidth","windowHeight","swiperOffset","swiperCoord","enable","Keyboard$1","Mousewheel","lastScrollTime","lastEventBeforeSnap","recentWheelEvents","implementation","hasFeature","isEventSupported","sX","sY","pX","pY","deltaY","deltaX","deltaMode","spinX","spinY","pixelX","pixelY","handleMouseEnter","mouseEntered","handleMouseLeave","mousewheel","eventsTarged","releaseOnEdges","rtlFactor","forceToAxis","_newEvent","sign","ignoreWheelEvents","sensitivity","_recentWheelEvents","_prevEvent","firstEvent","snapToThreshold","autoplayDisableOnInteraction","newEvent","prevEvent","animateSlider","releaseScroll","Navigation","_swiper$navigation","$nextEl","$prevEl","disabledClass","lockClass","onPrevClick","onNextClick","_swiper$navigation2","Pagination","pagination","paginationType","bullets","firstIndex","midIndex","dynamicBullets","bulletSize","dynamicMainBullets","dynamicBulletIndex","bulletActiveClass","$bullet","bulletIndex","$firstDisplayedBullet","$lastDisplayedBullet","_i10","dynamicBulletsLength","bulletsOffset","formatFractionCurrent","totalClass","formatFractionTotal","progressbarDirection","progressbarOpposite","progressbarFillClass","renderCustom","paginationHTML","numberOfBullets","renderBullet","bulletClass","bulletElement","renderFraction","renderProgressbar","clickable","clickableClass","modifierClass","progressbarOppositeClass","hiddenClass","Scrollbar","scrollbar","dragSize","trackSize","$dragEl","newSize","newPos","divider","moveDivider","getPointerPosition","setDragPosition","positionRatio","dragStartPos","dragTimeout","onDragMove","onDragEnd","snapOnRelease","enableDraggable","activeListener","disableDraggable","$swiperEl","dragClass","dragEl","Parallax","setTransform","currentOpacity","currentScale","parallax","parallaxEl","$parallaxEl","parallaxDuration","Zoom","getDistanceBetweenTouches","x1","y1","x2","y2","onGestureStart","gesture","fakeGestureTouched","fakeGestureMoved","scaleStart","$imageEl","$imageWrapEl","containerClass","maxRatio","isScaling","onGestureChange","scaleMove","onGestureEnd","touchesStart","slideWidth","slideHeight","scaledWidth","scaledHeight","minX","maxX","minY","maxY","touchesCurrent","prevPositionX","prevPositionY","prevTime","momentumDurationX","momentumDurationY","momentumDistanceX","newPositionX","momentumDistanceY","newPositionY","onTransitionEnd","in","touchX","touchY","translateX","translateY","imageWidth","imageHeight","translateMinX","translateMinY","translateMaxX","translateMaxY","zoomedSlideClass","activeListenerWithCapture","slideSelector","Lazy","loadInSlide","loadInDuplicate","$images","elementClass","loadedClass","loadingClass","imageIndex","preloaderClass","slideOriginalIndex","originalSlide","duplicatedSlide","slideExist","initialImageLoaded","elIndex","loadPrevNext","loadPrevNextAmount","maxIndex","minIndex","_i11","_i12","LinearSpline","guess","i1","i3","binarySearch","interpolate","getInterpolateFunction","spline","_setTranslate","controlledTranslate","controlled","control","setControlledTranslate","by","inverse","setControlledTransition","a11y","makeElFocusable","addElRole","addElLabel","disableEl","enableEl","onEnterKey","notify","lastSlideMessage","nextSlideMessage","firstSlideMessage","prevSlideMessage","notification","liveRegion","updateNavigation","_swiper$navigation4","updatePagination","bulletEl","$bulletEl","paginationBulletMessage","hashNavigation","getPathValues","scrollToSlide","replaceState","setHistoryPopState","pathArray","pathname","slugify","currentState","_slide3","_index2","HashNavigation","onHashCange","newHash","setHash","_slide4","_slide5","_index3","watchState","Autoplay","$activeSlideEl","reverseDirection","stopOnLastSlide","pause","waitForTransition","Fade","tx","ty","slideOpacity","fadeEffect","crossFade","eventTriggered","triggerEvents","Cube","$cubeShadowEl","swiperWidth","swiperHeight","cubeEffect","wrapperRotate","shadow","slideAngle","tz","_transform","slideShadows","shadowBefore","shadowAfter","shadowOffset","shadowScale","shadowAngle","sin","scale1","scale2","_offset2","zFactor","Flip","flipEffect","limitRotation","rotateY","rotateX","Coverflow","coverflowEffect","center","offsetMultiplier","modifier","translateZ","stretch","slideTransform","$shadowBeforeEl","$shadowAfterEl","prefixedPointerEvents","perspectiveOrigin","Thumbs","thumbsParams","thumbs","swiperCreated","thumbsContainerClass","onThumbClick","thumbsSwiper","slideThumbActiveClass","currentIndex","autoScrollOffset","useOffset","newThumbsIndex","currentThumbsIndex","prevThumbsIndex","nextThumbsIndex","thumbsToActivate","thumbActiveClass","multipleActiveThumbs","_i13","hideOnClick","toEdge","fromEdge","isHidden","_swiper$navigation3","number","activeIndexChange","snapIndexChange","slidesLengthChange","snapGridLengthChange","touchStart","touchEnd","doubleTap","slideChange","loadOnTransitionStart","scrollbarDragMove","notificationClass","paginationUpdate","disableOnInteraction","onVisibilityChange","visibilityState","beforeTransitionStart","sliderFirstMove","beforeDestroy"],"mappings":"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","file":"js/application-282fcd62a3e1e6d69519.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\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\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 = \"/packs/\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 57);\n","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/LICENSE\n// This is CodeMirror (https://codemirror.net), a code editor\n// implemented in JavaScript on top of the browser's DOM.\n//\n// You can find some technical background for some of the code below\n// at http://marijnhaverbeke.nl/blog/#cm-internals .\n(function (global, factory) {\n (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object' && typeof module !== 'undefined' ? module.exports = factory() : typeof define === 'function' && define.amd ? define(factory) : (global = global || self, global.CodeMirror = factory());\n})(this, function () {\n 'use strict'; // Kludges for bugs and behavior differences that can't be feature\n // detected are enabled based on userAgent etc sniffing.\n\n var userAgent = navigator.userAgent;\n var platform = navigator.platform;\n var gecko = /gecko\\/\\d/i.test(userAgent);\n var ie_upto10 = /MSIE \\d/.test(userAgent);\n var ie_11up = /Trident\\/(?:[7-9]|\\d{2,})\\..*rv:(\\d+)/.exec(userAgent);\n var edge = /Edge\\/(\\d+)/.exec(userAgent);\n var ie = ie_upto10 || ie_11up || edge;\n var ie_version = ie && (ie_upto10 ? document.documentMode || 6 : +(edge || ie_11up)[1]);\n var webkit = !edge && /WebKit\\//.test(userAgent);\n var qtwebkit = webkit && /Qt\\/\\d+\\.\\d+/.test(userAgent);\n var chrome = !edge && /Chrome\\//.test(userAgent);\n var presto = /Opera\\//.test(userAgent);\n var safari = /Apple Computer/.test(navigator.vendor);\n var mac_geMountainLion = /Mac OS X 1\\d\\D([8-9]|\\d\\d)\\D/.test(userAgent);\n var phantom = /PhantomJS/.test(userAgent);\n var ios = !edge && /AppleWebKit/.test(userAgent) && /Mobile\\/\\w+/.test(userAgent);\n var android = /Android/.test(userAgent); // This is woefully incomplete. Suggestions for alternative methods welcome.\n\n var mobile = ios || android || /webOS|BlackBerry|Opera Mini|Opera Mobi|IEMobile/i.test(userAgent);\n var mac = ios || /Mac/.test(platform);\n var chromeOS = /\\bCrOS\\b/.test(userAgent);\n var windows = /win/i.test(platform);\n var presto_version = presto && userAgent.match(/Version\\/(\\d*\\.\\d*)/);\n\n if (presto_version) {\n presto_version = Number(presto_version[1]);\n }\n\n if (presto_version && presto_version >= 15) {\n presto = false;\n webkit = true;\n } // Some browsers use the wrong event properties to signal cmd/ctrl on OS X\n\n\n var flipCtrlCmd = mac && (qtwebkit || presto && (presto_version == null || presto_version < 12.11));\n var captureRightClick = gecko || ie && ie_version >= 9;\n\n function classTest(cls) {\n return new RegExp(\"(^|\\\\s)\" + cls + \"(?:$|\\\\s)\\\\s*\");\n }\n\n var rmClass = function rmClass(node, cls) {\n var current = node.className;\n var match = classTest(cls).exec(current);\n\n if (match) {\n var after = current.slice(match.index + match[0].length);\n node.className = current.slice(0, match.index) + (after ? match[1] + after : \"\");\n }\n };\n\n function removeChildren(e) {\n for (var count = e.childNodes.length; count > 0; --count) {\n e.removeChild(e.firstChild);\n }\n\n return e;\n }\n\n function removeChildrenAndAdd(parent, e) {\n return removeChildren(parent).appendChild(e);\n }\n\n function elt(tag, content, className, style) {\n var e = document.createElement(tag);\n\n if (className) {\n e.className = className;\n }\n\n if (style) {\n e.style.cssText = style;\n }\n\n if (typeof content == \"string\") {\n e.appendChild(document.createTextNode(content));\n } else if (content) {\n for (var i = 0; i < content.length; ++i) {\n e.appendChild(content[i]);\n }\n }\n\n return e;\n } // wrapper for elt, which removes the elt from the accessibility tree\n\n\n function eltP(tag, content, className, style) {\n var e = elt(tag, content, className, style);\n e.setAttribute(\"role\", \"presentation\");\n return e;\n }\n\n var range;\n\n if (document.createRange) {\n range = function range(node, start, end, endNode) {\n var r = document.createRange();\n r.setEnd(endNode || node, end);\n r.setStart(node, start);\n return r;\n };\n } else {\n range = function range(node, start, end) {\n var r = document.body.createTextRange();\n\n try {\n r.moveToElementText(node.parentNode);\n } catch (e) {\n return r;\n }\n\n r.collapse(true);\n r.moveEnd(\"character\", end);\n r.moveStart(\"character\", start);\n return r;\n };\n }\n\n function contains(parent, child) {\n if (child.nodeType == 3) // Android browser always returns false when child is a textnode\n {\n child = child.parentNode;\n }\n\n if (parent.contains) {\n return parent.contains(child);\n }\n\n do {\n if (child.nodeType == 11) {\n child = child.host;\n }\n\n if (child == parent) {\n return true;\n }\n } while (child = child.parentNode);\n }\n\n function activeElt() {\n // IE and Edge may throw an \"Unspecified Error\" when accessing document.activeElement.\n // IE < 10 will throw when accessed while the page is loading or in an iframe.\n // IE > 9 and Edge will throw when accessed in an iframe if document.body is unavailable.\n var activeElement;\n\n try {\n activeElement = document.activeElement;\n } catch (e) {\n activeElement = document.body || null;\n }\n\n while (activeElement && activeElement.shadowRoot && activeElement.shadowRoot.activeElement) {\n activeElement = activeElement.shadowRoot.activeElement;\n }\n\n return activeElement;\n }\n\n function addClass(node, cls) {\n var current = node.className;\n\n if (!classTest(cls).test(current)) {\n node.className += (current ? \" \" : \"\") + cls;\n }\n }\n\n function joinClasses(a, b) {\n var as = a.split(\" \");\n\n for (var i = 0; i < as.length; i++) {\n if (as[i] && !classTest(as[i]).test(b)) {\n b += \" \" + as[i];\n }\n }\n\n return b;\n }\n\n var selectInput = function selectInput(node) {\n node.select();\n };\n\n if (ios) // Mobile Safari apparently has a bug where select() is broken.\n {\n selectInput = function selectInput(node) {\n node.selectionStart = 0;\n node.selectionEnd = node.value.length;\n };\n } else if (ie) // Suppress mysterious IE10 errors\n {\n selectInput = function selectInput(node) {\n try {\n node.select();\n } catch (_e) {}\n };\n }\n\n function bind(f) {\n var args = Array.prototype.slice.call(arguments, 1);\n return function () {\n return f.apply(null, args);\n };\n }\n\n function copyObj(obj, target, overwrite) {\n if (!target) {\n target = {};\n }\n\n for (var prop in obj) {\n if (obj.hasOwnProperty(prop) && (overwrite !== false || !target.hasOwnProperty(prop))) {\n target[prop] = obj[prop];\n }\n }\n\n return target;\n } // Counts the column offset in a string, taking tabs into account.\n // Used mostly to find indentation.\n\n\n function countColumn(string, end, tabSize, startIndex, startValue) {\n if (end == null) {\n end = string.search(/[^\\s\\u00a0]/);\n\n if (end == -1) {\n end = string.length;\n }\n }\n\n for (var i = startIndex || 0, n = startValue || 0;;) {\n var nextTab = string.indexOf(\"\\t\", i);\n\n if (nextTab < 0 || nextTab >= end) {\n return n + (end - i);\n }\n\n n += nextTab - i;\n n += tabSize - n % tabSize;\n i = nextTab + 1;\n }\n }\n\n var Delayed = function Delayed() {\n this.id = null;\n this.f = null;\n this.time = 0;\n this.handler = bind(this.onTimeout, this);\n };\n\n Delayed.prototype.onTimeout = function (self) {\n self.id = 0;\n\n if (self.time <= +new Date()) {\n self.f();\n } else {\n setTimeout(self.handler, self.time - +new Date());\n }\n };\n\n Delayed.prototype.set = function (ms, f) {\n this.f = f;\n var time = +new Date() + ms;\n\n if (!this.id || time < this.time) {\n clearTimeout(this.id);\n this.id = setTimeout(this.handler, ms);\n this.time = time;\n }\n };\n\n function indexOf(array, elt) {\n for (var i = 0; i < array.length; ++i) {\n if (array[i] == elt) {\n return i;\n }\n }\n\n return -1;\n } // Number of pixels added to scroller and sizer to hide scrollbar\n\n\n var scrollerGap = 30; // Returned or thrown by various protocols to signal 'I'm not\n // handling this'.\n\n var Pass = {\n toString: function toString() {\n return \"CodeMirror.Pass\";\n }\n }; // Reused option objects for setSelection & friends\n\n var sel_dontScroll = {\n scroll: false\n },\n sel_mouse = {\n origin: \"*mouse\"\n },\n sel_move = {\n origin: \"+move\"\n }; // The inverse of countColumn -- find the offset that corresponds to\n // a particular column.\n\n function findColumn(string, goal, tabSize) {\n for (var pos = 0, col = 0;;) {\n var nextTab = string.indexOf(\"\\t\", pos);\n\n if (nextTab == -1) {\n nextTab = string.length;\n }\n\n var skipped = nextTab - pos;\n\n if (nextTab == string.length || col + skipped >= goal) {\n return pos + Math.min(skipped, goal - col);\n }\n\n col += nextTab - pos;\n col += tabSize - col % tabSize;\n pos = nextTab + 1;\n\n if (col >= goal) {\n return pos;\n }\n }\n }\n\n var spaceStrs = [\"\"];\n\n function spaceStr(n) {\n while (spaceStrs.length <= n) {\n spaceStrs.push(lst(spaceStrs) + \" \");\n }\n\n return spaceStrs[n];\n }\n\n function lst(arr) {\n return arr[arr.length - 1];\n }\n\n function map(array, f) {\n var out = [];\n\n for (var i = 0; i < array.length; i++) {\n out[i] = f(array[i], i);\n }\n\n return out;\n }\n\n function insertSorted(array, value, score) {\n var pos = 0,\n priority = score(value);\n\n while (pos < array.length && score(array[pos]) <= priority) {\n pos++;\n }\n\n array.splice(pos, 0, value);\n }\n\n function nothing() {}\n\n function createObj(base, props) {\n var inst;\n\n if (Object.create) {\n inst = Object.create(base);\n } else {\n nothing.prototype = base;\n inst = new nothing();\n }\n\n if (props) {\n copyObj(props, inst);\n }\n\n return inst;\n }\n\n var nonASCIISingleCaseWordChar = /[\\u00df\\u0587\\u0590-\\u05f4\\u0600-\\u06ff\\u3040-\\u309f\\u30a0-\\u30ff\\u3400-\\u4db5\\u4e00-\\u9fcc\\uac00-\\ud7af]/;\n\n function isWordCharBasic(ch) {\n return /\\w/.test(ch) || ch > \"\\x80\" && (ch.toUpperCase() != ch.toLowerCase() || nonASCIISingleCaseWordChar.test(ch));\n }\n\n function isWordChar(ch, helper) {\n if (!helper) {\n return isWordCharBasic(ch);\n }\n\n if (helper.source.indexOf(\"\\\\w\") > -1 && isWordCharBasic(ch)) {\n return true;\n }\n\n return helper.test(ch);\n }\n\n function isEmpty(obj) {\n for (var n in obj) {\n if (obj.hasOwnProperty(n) && obj[n]) {\n return false;\n }\n }\n\n return true;\n } // Extending unicode characters. A series of a non-extending char +\n // any number of extending chars is treated as a single unit as far\n // as editing and measuring is concerned. This is not fully correct,\n // since some scripts/fonts/browsers also treat other configurations\n // of code points as a group.\n\n\n var extendingChars = /[\\u0300-\\u036f\\u0483-\\u0489\\u0591-\\u05bd\\u05bf\\u05c1\\u05c2\\u05c4\\u05c5\\u05c7\\u0610-\\u061a\\u064b-\\u065e\\u0670\\u06d6-\\u06dc\\u06de-\\u06e4\\u06e7\\u06e8\\u06ea-\\u06ed\\u0711\\u0730-\\u074a\\u07a6-\\u07b0\\u07eb-\\u07f3\\u0816-\\u0819\\u081b-\\u0823\\u0825-\\u0827\\u0829-\\u082d\\u0900-\\u0902\\u093c\\u0941-\\u0948\\u094d\\u0951-\\u0955\\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\\u0c3e-\\u0c40\\u0c46-\\u0c48\\u0c4a-\\u0c4d\\u0c55\\u0c56\\u0c62\\u0c63\\u0cbc\\u0cbf\\u0cc2\\u0cc6\\u0ccc\\u0ccd\\u0cd5\\u0cd6\\u0ce2\\u0ce3\\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\\u0f90-\\u0f97\\u0f99-\\u0fbc\\u0fc6\\u102d-\\u1030\\u1032-\\u1037\\u1039\\u103a\\u103d\\u103e\\u1058\\u1059\\u105e-\\u1060\\u1071-\\u1074\\u1082\\u1085\\u1086\\u108d\\u109d\\u135f\\u1712-\\u1714\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17b7-\\u17bd\\u17c6\\u17c9-\\u17d3\\u17dd\\u180b-\\u180d\\u18a9\\u1920-\\u1922\\u1927\\u1928\\u1932\\u1939-\\u193b\\u1a17\\u1a18\\u1a56\\u1a58-\\u1a5e\\u1a60\\u1a62\\u1a65-\\u1a6c\\u1a73-\\u1a7c\\u1a7f\\u1b00-\\u1b03\\u1b34\\u1b36-\\u1b3a\\u1b3c\\u1b42\\u1b6b-\\u1b73\\u1b80\\u1b81\\u1ba2-\\u1ba5\\u1ba8\\u1ba9\\u1c2c-\\u1c33\\u1c36\\u1c37\\u1cd0-\\u1cd2\\u1cd4-\\u1ce0\\u1ce2-\\u1ce8\\u1ced\\u1dc0-\\u1de6\\u1dfd-\\u1dff\\u200c\\u200d\\u20d0-\\u20f0\\u2cef-\\u2cf1\\u2de0-\\u2dff\\u302a-\\u302f\\u3099\\u309a\\ua66f-\\ua672\\ua67c\\ua67d\\ua6f0\\ua6f1\\ua802\\ua806\\ua80b\\ua825\\ua826\\ua8c4\\ua8e0-\\ua8f1\\ua926-\\ua92d\\ua947-\\ua951\\ua980-\\ua982\\ua9b3\\ua9b6-\\ua9b9\\ua9bc\\uaa29-\\uaa2e\\uaa31\\uaa32\\uaa35\\uaa36\\uaa43\\uaa4c\\uaab0\\uaab2-\\uaab4\\uaab7\\uaab8\\uaabe\\uaabf\\uaac1\\uabe5\\uabe8\\uabed\\udc00-\\udfff\\ufb1e\\ufe00-\\ufe0f\\ufe20-\\ufe26\\uff9e\\uff9f]/;\n\n function isExtendingChar(ch) {\n return ch.charCodeAt(0) >= 768 && extendingChars.test(ch);\n } // Returns a number from the range [`0`; `str.length`] unless `pos` is outside that range.\n\n\n function skipExtendingChars(str, pos, dir) {\n while ((dir < 0 ? pos > 0 : pos < str.length) && isExtendingChar(str.charAt(pos))) {\n pos += dir;\n }\n\n return pos;\n } // Returns the value from the range [`from`; `to`] that satisfies\n // `pred` and is closest to `from`. Assumes that at least `to`\n // satisfies `pred`. Supports `from` being greater than `to`.\n\n\n function findFirst(pred, from, to) {\n // At any point we are certain `to` satisfies `pred`, don't know\n // whether `from` does.\n var dir = from > to ? -1 : 1;\n\n for (;;) {\n if (from == to) {\n return from;\n }\n\n var midF = (from + to) / 2,\n mid = dir < 0 ? Math.ceil(midF) : Math.floor(midF);\n\n if (mid == from) {\n return pred(mid) ? from : to;\n }\n\n if (pred(mid)) {\n to = mid;\n } else {\n from = mid + dir;\n }\n }\n } // BIDI HELPERS\n\n\n function iterateBidiSections(order, from, to, f) {\n if (!order) {\n return f(from, to, \"ltr\", 0);\n }\n\n var found = false;\n\n for (var i = 0; i < order.length; ++i) {\n var part = order[i];\n\n if (part.from < to && part.to > from || from == to && part.to == from) {\n f(Math.max(part.from, from), Math.min(part.to, to), part.level == 1 ? \"rtl\" : \"ltr\", i);\n found = true;\n }\n }\n\n if (!found) {\n f(from, to, \"ltr\");\n }\n }\n\n var bidiOther = null;\n\n function getBidiPartAt(order, ch, sticky) {\n var found;\n bidiOther = null;\n\n for (var i = 0; i < order.length; ++i) {\n var cur = order[i];\n\n if (cur.from < ch && cur.to > ch) {\n return i;\n }\n\n if (cur.to == ch) {\n if (cur.from != cur.to && sticky == \"before\") {\n found = i;\n } else {\n bidiOther = i;\n }\n }\n\n if (cur.from == ch) {\n if (cur.from != cur.to && sticky != \"before\") {\n found = i;\n } else {\n bidiOther = i;\n }\n }\n }\n\n return found != null ? found : bidiOther;\n } // Bidirectional ordering algorithm\n // See http://unicode.org/reports/tr9/tr9-13.html for the algorithm\n // that this (partially) implements.\n // One-char codes used for character types:\n // L (L): Left-to-Right\n // R (R): Right-to-Left\n // r (AL): Right-to-Left Arabic\n // 1 (EN): European Number\n // + (ES): European Number Separator\n // % (ET): European Number Terminator\n // n (AN): Arabic Number\n // , (CS): Common Number Separator\n // m (NSM): Non-Spacing Mark\n // b (BN): Boundary Neutral\n // s (B): Paragraph Separator\n // t (S): Segment Separator\n // w (WS): Whitespace\n // N (ON): Other Neutrals\n // Returns null if characters are ordered as they appear\n // (left-to-right), or an array of sections ({from, to, level}\n // objects) in the order in which they occur visually.\n\n\n var bidiOrdering = function () {\n // Character types for codepoints 0 to 0xff\n var lowTypes = \"bbbbbbbbbtstwsbbbbbbbbbbbbbbssstwNN%%%NNNNNN,N,N1111111111NNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNbbbbbbsbbbbbbbbbbbbbbbbbbbbbbbbbb,N%%%%NNNNLNNNNN%%11NLNNN1LNNNNNLLLLLLLLLLLLLLLLLLLLLLLNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLN\"; // Character types for codepoints 0x600 to 0x6f9\n\n var arabicTypes = \"nnnnnnNNr%%r,rNNmmmmmmmmmmmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnn%nnrrrmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmnNmmmmmmrrmmNmmmmrr1111111111\";\n\n function charType(code) {\n if (code <= 0xf7) {\n return lowTypes.charAt(code);\n } else if (0x590 <= code && code <= 0x5f4) {\n return \"R\";\n } else if (0x600 <= code && code <= 0x6f9) {\n return arabicTypes.charAt(code - 0x600);\n } else if (0x6ee <= code && code <= 0x8ac) {\n return \"r\";\n } else if (0x2000 <= code && code <= 0x200b) {\n return \"w\";\n } else if (code == 0x200c) {\n return \"b\";\n } else {\n return \"L\";\n }\n }\n\n var bidiRE = /[\\u0590-\\u05f4\\u0600-\\u06ff\\u0700-\\u08ac]/;\n var isNeutral = /[stwN]/,\n isStrong = /[LRr]/,\n countsAsLeft = /[Lb1n]/,\n countsAsNum = /[1n]/;\n\n function BidiSpan(level, from, to) {\n this.level = level;\n this.from = from;\n this.to = to;\n }\n\n return function (str, direction) {\n var outerType = direction == \"ltr\" ? \"L\" : \"R\";\n\n if (str.length == 0 || direction == \"ltr\" && !bidiRE.test(str)) {\n return false;\n }\n\n var len = str.length,\n types = [];\n\n for (var i = 0; i < len; ++i) {\n types.push(charType(str.charCodeAt(i)));\n } // W1. Examine each non-spacing mark (NSM) in the level run, and\n // change the type of the NSM to the type of the previous\n // character. If the NSM is at the start of the level run, it will\n // get the type of sor.\n\n\n for (var i$1 = 0, prev = outerType; i$1 < len; ++i$1) {\n var type = types[i$1];\n\n if (type == \"m\") {\n types[i$1] = prev;\n } else {\n prev = type;\n }\n } // W2. Search backwards from each instance of a European number\n // until the first strong type (R, L, AL, or sor) is found. If an\n // AL is found, change the type of the European number to Arabic\n // number.\n // W3. Change all ALs to R.\n\n\n for (var i$2 = 0, cur = outerType; i$2 < len; ++i$2) {\n var type$1 = types[i$2];\n\n if (type$1 == \"1\" && cur == \"r\") {\n types[i$2] = \"n\";\n } else if (isStrong.test(type$1)) {\n cur = type$1;\n\n if (type$1 == \"r\") {\n types[i$2] = \"R\";\n }\n }\n } // W4. A single European separator between two European numbers\n // changes to a European number. A single common separator between\n // two numbers of the same type changes to that type.\n\n\n for (var i$3 = 1, prev$1 = types[0]; i$3 < len - 1; ++i$3) {\n var type$2 = types[i$3];\n\n if (type$2 == \"+\" && prev$1 == \"1\" && types[i$3 + 1] == \"1\") {\n types[i$3] = \"1\";\n } else if (type$2 == \",\" && prev$1 == types[i$3 + 1] && (prev$1 == \"1\" || prev$1 == \"n\")) {\n types[i$3] = prev$1;\n }\n\n prev$1 = type$2;\n } // W5. A sequence of European terminators adjacent to European\n // numbers changes to all European numbers.\n // W6. Otherwise, separators and terminators change to Other\n // Neutral.\n\n\n for (var i$4 = 0; i$4 < len; ++i$4) {\n var type$3 = types[i$4];\n\n if (type$3 == \",\") {\n types[i$4] = \"N\";\n } else if (type$3 == \"%\") {\n var end = void 0;\n\n for (end = i$4 + 1; end < len && types[end] == \"%\"; ++end) {}\n\n var replace = i$4 && types[i$4 - 1] == \"!\" || end < len && types[end] == \"1\" ? \"1\" : \"N\";\n\n for (var j = i$4; j < end; ++j) {\n types[j] = replace;\n }\n\n i$4 = end - 1;\n }\n } // W7. Search backwards from each instance of a European number\n // until the first strong type (R, L, or sor) is found. If an L is\n // found, then change the type of the European number to L.\n\n\n for (var i$5 = 0, cur$1 = outerType; i$5 < len; ++i$5) {\n var type$4 = types[i$5];\n\n if (cur$1 == \"L\" && type$4 == \"1\") {\n types[i$5] = \"L\";\n } else if (isStrong.test(type$4)) {\n cur$1 = type$4;\n }\n } // N1. A sequence of neutrals takes the direction of the\n // surrounding strong text if the text on both sides has the same\n // direction. European and Arabic numbers act as if they were R in\n // terms of their influence on neutrals. Start-of-level-run (sor)\n // and end-of-level-run (eor) are used at level run boundaries.\n // N2. Any remaining neutrals take the embedding direction.\n\n\n for (var i$6 = 0; i$6 < len; ++i$6) {\n if (isNeutral.test(types[i$6])) {\n var end$1 = void 0;\n\n for (end$1 = i$6 + 1; end$1 < len && isNeutral.test(types[end$1]); ++end$1) {}\n\n var before = (i$6 ? types[i$6 - 1] : outerType) == \"L\";\n var after = (end$1 < len ? types[end$1] : outerType) == \"L\";\n var replace$1 = before == after ? before ? \"L\" : \"R\" : outerType;\n\n for (var j$1 = i$6; j$1 < end$1; ++j$1) {\n types[j$1] = replace$1;\n }\n\n i$6 = end$1 - 1;\n }\n } // Here we depart from the documented algorithm, in order to avoid\n // building up an actual levels array. Since there are only three\n // levels (0, 1, 2) in an implementation that doesn't take\n // explicit embedding into account, we can build up the order on\n // the fly, without following the level-based algorithm.\n\n\n var order = [],\n m;\n\n for (var i$7 = 0; i$7 < len;) {\n if (countsAsLeft.test(types[i$7])) {\n var start = i$7;\n\n for (++i$7; i$7 < len && countsAsLeft.test(types[i$7]); ++i$7) {}\n\n order.push(new BidiSpan(0, start, i$7));\n } else {\n var pos = i$7,\n at = order.length,\n isRTL = direction == \"rtl\" ? 1 : 0;\n\n for (++i$7; i$7 < len && types[i$7] != \"L\"; ++i$7) {}\n\n for (var j$2 = pos; j$2 < i$7;) {\n if (countsAsNum.test(types[j$2])) {\n if (pos < j$2) {\n order.splice(at, 0, new BidiSpan(1, pos, j$2));\n at += isRTL;\n }\n\n var nstart = j$2;\n\n for (++j$2; j$2 < i$7 && countsAsNum.test(types[j$2]); ++j$2) {}\n\n order.splice(at, 0, new BidiSpan(2, nstart, j$2));\n at += isRTL;\n pos = j$2;\n } else {\n ++j$2;\n }\n }\n\n if (pos < i$7) {\n order.splice(at, 0, new BidiSpan(1, pos, i$7));\n }\n }\n }\n\n if (direction == \"ltr\") {\n if (order[0].level == 1 && (m = str.match(/^\\s+/))) {\n order[0].from = m[0].length;\n order.unshift(new BidiSpan(0, 0, m[0].length));\n }\n\n if (lst(order).level == 1 && (m = str.match(/\\s+$/))) {\n lst(order).to -= m[0].length;\n order.push(new BidiSpan(0, len - m[0].length, len));\n }\n }\n\n return direction == \"rtl\" ? order.reverse() : order;\n };\n }(); // Get the bidi ordering for the given line (and cache it). Returns\n // false for lines that are fully left-to-right, and an array of\n // BidiSpan objects otherwise.\n\n\n function getOrder(line, direction) {\n var order = line.order;\n\n if (order == null) {\n order = line.order = bidiOrdering(line.text, direction);\n }\n\n return order;\n } // EVENT HANDLING\n // Lightweight event framework. on/off also work on DOM nodes,\n // registering native DOM handlers.\n\n\n var noHandlers = [];\n\n var on = function on(emitter, type, f) {\n if (emitter.addEventListener) {\n emitter.addEventListener(type, f, false);\n } else if (emitter.attachEvent) {\n emitter.attachEvent(\"on\" + type, f);\n } else {\n var map = emitter._handlers || (emitter._handlers = {});\n map[type] = (map[type] || noHandlers).concat(f);\n }\n };\n\n function getHandlers(emitter, type) {\n return emitter._handlers && emitter._handlers[type] || noHandlers;\n }\n\n function off(emitter, type, f) {\n if (emitter.removeEventListener) {\n emitter.removeEventListener(type, f, false);\n } else if (emitter.detachEvent) {\n emitter.detachEvent(\"on\" + type, f);\n } else {\n var map = emitter._handlers,\n arr = map && map[type];\n\n if (arr) {\n var index = indexOf(arr, f);\n\n if (index > -1) {\n map[type] = arr.slice(0, index).concat(arr.slice(index + 1));\n }\n }\n }\n }\n\n function signal(emitter, type\n /*, values...*/\n ) {\n var handlers = getHandlers(emitter, type);\n\n if (!handlers.length) {\n return;\n }\n\n var args = Array.prototype.slice.call(arguments, 2);\n\n for (var i = 0; i < handlers.length; ++i) {\n handlers[i].apply(null, args);\n }\n } // The DOM events that CodeMirror handles can be overridden by\n // registering a (non-DOM) handler on the editor for the event name,\n // and preventDefault-ing the event in that handler.\n\n\n function signalDOMEvent(cm, e, override) {\n if (typeof e == \"string\") {\n e = {\n type: e,\n preventDefault: function preventDefault() {\n this.defaultPrevented = true;\n }\n };\n }\n\n signal(cm, override || e.type, cm, e);\n return e_defaultPrevented(e) || e.codemirrorIgnore;\n }\n\n function signalCursorActivity(cm) {\n var arr = cm._handlers && cm._handlers.cursorActivity;\n\n if (!arr) {\n return;\n }\n\n var set = cm.curOp.cursorActivityHandlers || (cm.curOp.cursorActivityHandlers = []);\n\n for (var i = 0; i < arr.length; ++i) {\n if (indexOf(set, arr[i]) == -1) {\n set.push(arr[i]);\n }\n }\n }\n\n function hasHandler(emitter, type) {\n return getHandlers(emitter, type).length > 0;\n } // Add on and off methods to a constructor's prototype, to make\n // registering events on such objects more convenient.\n\n\n function eventMixin(ctor) {\n ctor.prototype.on = function (type, f) {\n on(this, type, f);\n };\n\n ctor.prototype.off = function (type, f) {\n off(this, type, f);\n };\n } // Due to the fact that we still support jurassic IE versions, some\n // compatibility wrappers are needed.\n\n\n function e_preventDefault(e) {\n if (e.preventDefault) {\n e.preventDefault();\n } else {\n e.returnValue = false;\n }\n }\n\n function e_stopPropagation(e) {\n if (e.stopPropagation) {\n e.stopPropagation();\n } else {\n e.cancelBubble = true;\n }\n }\n\n function e_defaultPrevented(e) {\n return e.defaultPrevented != null ? e.defaultPrevented : e.returnValue == false;\n }\n\n function e_stop(e) {\n e_preventDefault(e);\n e_stopPropagation(e);\n }\n\n function e_target(e) {\n return e.target || e.srcElement;\n }\n\n function e_button(e) {\n var b = e.which;\n\n if (b == null) {\n if (e.button & 1) {\n b = 1;\n } else if (e.button & 2) {\n b = 3;\n } else if (e.button & 4) {\n b = 2;\n }\n }\n\n if (mac && e.ctrlKey && b == 1) {\n b = 3;\n }\n\n return b;\n } // Detect drag-and-drop\n\n\n var dragAndDrop = function () {\n // There is *some* kind of drag-and-drop support in IE6-8, but I\n // couldn't get it to work yet.\n if (ie && ie_version < 9) {\n return false;\n }\n\n var div = elt('div');\n return \"draggable\" in div || \"dragDrop\" in div;\n }();\n\n var zwspSupported;\n\n function zeroWidthElement(measure) {\n if (zwspSupported == null) {\n var test = elt(\"span\", \"\\u200B\");\n removeChildrenAndAdd(measure, elt(\"span\", [test, document.createTextNode(\"x\")]));\n\n if (measure.firstChild.offsetHeight != 0) {\n zwspSupported = test.offsetWidth <= 1 && test.offsetHeight > 2 && !(ie && ie_version < 8);\n }\n }\n\n var node = zwspSupported ? elt(\"span\", \"\\u200B\") : elt(\"span\", \"\\xA0\", null, \"display: inline-block; width: 1px; margin-right: -1px\");\n node.setAttribute(\"cm-text\", \"\");\n return node;\n } // Feature-detect IE's crummy client rect reporting for bidi text\n\n\n var badBidiRects;\n\n function hasBadBidiRects(measure) {\n if (badBidiRects != null) {\n return badBidiRects;\n }\n\n var txt = removeChildrenAndAdd(measure, document.createTextNode(\"A\\u062EA\"));\n var r0 = range(txt, 0, 1).getBoundingClientRect();\n var r1 = range(txt, 1, 2).getBoundingClientRect();\n removeChildren(measure);\n\n if (!r0 || r0.left == r0.right) {\n return false;\n } // Safari returns null in some cases (#2780)\n\n\n return badBidiRects = r1.right - r0.right < 3;\n } // See if \"\".split is the broken IE version, if so, provide an\n // alternative way to split lines.\n\n\n var splitLinesAuto = \"\\n\\nb\".split(/\\n/).length != 3 ? function (string) {\n var pos = 0,\n result = [],\n l = string.length;\n\n while (pos <= l) {\n var nl = string.indexOf(\"\\n\", pos);\n\n if (nl == -1) {\n nl = string.length;\n }\n\n var line = string.slice(pos, string.charAt(nl - 1) == \"\\r\" ? nl - 1 : nl);\n var rt = line.indexOf(\"\\r\");\n\n if (rt != -1) {\n result.push(line.slice(0, rt));\n pos += rt + 1;\n } else {\n result.push(line);\n pos = nl + 1;\n }\n }\n\n return result;\n } : function (string) {\n return string.split(/\\r\\n?|\\n/);\n };\n var hasSelection = window.getSelection ? function (te) {\n try {\n return te.selectionStart != te.selectionEnd;\n } catch (e) {\n return false;\n }\n } : function (te) {\n var range;\n\n try {\n range = te.ownerDocument.selection.createRange();\n } catch (e) {}\n\n if (!range || range.parentElement() != te) {\n return false;\n }\n\n return range.compareEndPoints(\"StartToEnd\", range) != 0;\n };\n\n var hasCopyEvent = function () {\n var e = elt(\"div\");\n\n if (\"oncopy\" in e) {\n return true;\n }\n\n e.setAttribute(\"oncopy\", \"return;\");\n return typeof e.oncopy == \"function\";\n }();\n\n var badZoomedRects = null;\n\n function hasBadZoomedRects(measure) {\n if (badZoomedRects != null) {\n return badZoomedRects;\n }\n\n var node = removeChildrenAndAdd(measure, elt(\"span\", \"x\"));\n var normal = node.getBoundingClientRect();\n var fromRange = range(node, 0, 1).getBoundingClientRect();\n return badZoomedRects = Math.abs(normal.left - fromRange.left) > 1;\n } // Known modes, by name and by MIME\n\n\n var modes = {},\n mimeModes = {}; // Extra arguments are stored as the mode's dependencies, which is\n // used by (legacy) mechanisms like loadmode.js to automatically\n // load a mode. (Preferred mechanism is the require/define calls.)\n\n function defineMode(name, mode) {\n if (arguments.length > 2) {\n mode.dependencies = Array.prototype.slice.call(arguments, 2);\n }\n\n modes[name] = mode;\n }\n\n function defineMIME(mime, spec) {\n mimeModes[mime] = spec;\n } // Given a MIME type, a {name, ...options} config object, or a name\n // string, return a mode config object.\n\n\n function resolveMode(spec) {\n if (typeof spec == \"string\" && mimeModes.hasOwnProperty(spec)) {\n spec = mimeModes[spec];\n } else if (spec && typeof spec.name == \"string\" && mimeModes.hasOwnProperty(spec.name)) {\n var found = mimeModes[spec.name];\n\n if (typeof found == \"string\") {\n found = {\n name: found\n };\n }\n\n spec = createObj(found, spec);\n spec.name = found.name;\n } else if (typeof spec == \"string\" && /^[\\w\\-]+\\/[\\w\\-]+\\+xml$/.test(spec)) {\n return resolveMode(\"application/xml\");\n } else if (typeof spec == \"string\" && /^[\\w\\-]+\\/[\\w\\-]+\\+json$/.test(spec)) {\n return resolveMode(\"application/json\");\n }\n\n if (typeof spec == \"string\") {\n return {\n name: spec\n };\n } else {\n return spec || {\n name: \"null\"\n };\n }\n } // Given a mode spec (anything that resolveMode accepts), find and\n // initialize an actual mode object.\n\n\n function getMode(options, spec) {\n spec = resolveMode(spec);\n var mfactory = modes[spec.name];\n\n if (!mfactory) {\n return getMode(options, \"text/plain\");\n }\n\n var modeObj = mfactory(options, spec);\n\n if (modeExtensions.hasOwnProperty(spec.name)) {\n var exts = modeExtensions[spec.name];\n\n for (var prop in exts) {\n if (!exts.hasOwnProperty(prop)) {\n continue;\n }\n\n if (modeObj.hasOwnProperty(prop)) {\n modeObj[\"_\" + prop] = modeObj[prop];\n }\n\n modeObj[prop] = exts[prop];\n }\n }\n\n modeObj.name = spec.name;\n\n if (spec.helperType) {\n modeObj.helperType = spec.helperType;\n }\n\n if (spec.modeProps) {\n for (var prop$1 in spec.modeProps) {\n modeObj[prop$1] = spec.modeProps[prop$1];\n }\n }\n\n return modeObj;\n } // This can be used to attach properties to mode objects from\n // outside the actual mode definition.\n\n\n var modeExtensions = {};\n\n function extendMode(mode, properties) {\n var exts = modeExtensions.hasOwnProperty(mode) ? modeExtensions[mode] : modeExtensions[mode] = {};\n copyObj(properties, exts);\n }\n\n function copyState(mode, state) {\n if (state === true) {\n return state;\n }\n\n if (mode.copyState) {\n return mode.copyState(state);\n }\n\n var nstate = {};\n\n for (var n in state) {\n var val = state[n];\n\n if (val instanceof Array) {\n val = val.concat([]);\n }\n\n nstate[n] = val;\n }\n\n return nstate;\n } // Given a mode and a state (for that mode), find the inner mode and\n // state at the position that the state refers to.\n\n\n function innerMode(mode, state) {\n var info;\n\n while (mode.innerMode) {\n info = mode.innerMode(state);\n\n if (!info || info.mode == mode) {\n break;\n }\n\n state = info.state;\n mode = info.mode;\n }\n\n return info || {\n mode: mode,\n state: state\n };\n }\n\n function startState(mode, a1, a2) {\n return mode.startState ? mode.startState(a1, a2) : true;\n } // STRING STREAM\n // Fed to the mode parsers, provides helper functions to make\n // parsers more succinct.\n\n\n var StringStream = function StringStream(string, tabSize, lineOracle) {\n this.pos = this.start = 0;\n this.string = string;\n this.tabSize = tabSize || 8;\n this.lastColumnPos = this.lastColumnValue = 0;\n this.lineStart = 0;\n this.lineOracle = lineOracle;\n };\n\n StringStream.prototype.eol = function () {\n return this.pos >= this.string.length;\n };\n\n StringStream.prototype.sol = function () {\n return this.pos == this.lineStart;\n };\n\n StringStream.prototype.peek = function () {\n return this.string.charAt(this.pos) || undefined;\n };\n\n StringStream.prototype.next = function () {\n if (this.pos < this.string.length) {\n return this.string.charAt(this.pos++);\n }\n };\n\n StringStream.prototype.eat = function (match) {\n var ch = this.string.charAt(this.pos);\n var ok;\n\n if (typeof match == \"string\") {\n ok = ch == match;\n } else {\n ok = ch && (match.test ? match.test(ch) : match(ch));\n }\n\n if (ok) {\n ++this.pos;\n return ch;\n }\n };\n\n StringStream.prototype.eatWhile = function (match) {\n var start = this.pos;\n\n while (this.eat(match)) {}\n\n return this.pos > start;\n };\n\n StringStream.prototype.eatSpace = function () {\n var start = this.pos;\n\n while (/[\\s\\u00a0]/.test(this.string.charAt(this.pos))) {\n ++this.pos;\n }\n\n return this.pos > start;\n };\n\n StringStream.prototype.skipToEnd = function () {\n this.pos = this.string.length;\n };\n\n StringStream.prototype.skipTo = function (ch) {\n var found = this.string.indexOf(ch, this.pos);\n\n if (found > -1) {\n this.pos = found;\n return true;\n }\n };\n\n StringStream.prototype.backUp = function (n) {\n this.pos -= n;\n };\n\n StringStream.prototype.column = function () {\n if (this.lastColumnPos < this.start) {\n this.lastColumnValue = countColumn(this.string, this.start, this.tabSize, this.lastColumnPos, this.lastColumnValue);\n this.lastColumnPos = this.start;\n }\n\n return this.lastColumnValue - (this.lineStart ? countColumn(this.string, this.lineStart, this.tabSize) : 0);\n };\n\n StringStream.prototype.indentation = function () {\n return countColumn(this.string, null, this.tabSize) - (this.lineStart ? countColumn(this.string, this.lineStart, this.tabSize) : 0);\n };\n\n StringStream.prototype.match = function (pattern, consume, caseInsensitive) {\n if (typeof pattern == \"string\") {\n var cased = function cased(str) {\n return caseInsensitive ? str.toLowerCase() : str;\n };\n\n var substr = this.string.substr(this.pos, pattern.length);\n\n if (cased(substr) == cased(pattern)) {\n if (consume !== false) {\n this.pos += pattern.length;\n }\n\n return true;\n }\n } else {\n var match = this.string.slice(this.pos).match(pattern);\n\n if (match && match.index > 0) {\n return null;\n }\n\n if (match && consume !== false) {\n this.pos += match[0].length;\n }\n\n return match;\n }\n };\n\n StringStream.prototype.current = function () {\n return this.string.slice(this.start, this.pos);\n };\n\n StringStream.prototype.hideFirstChars = function (n, inner) {\n this.lineStart += n;\n\n try {\n return inner();\n } finally {\n this.lineStart -= n;\n }\n };\n\n StringStream.prototype.lookAhead = function (n) {\n var oracle = this.lineOracle;\n return oracle && oracle.lookAhead(n);\n };\n\n StringStream.prototype.baseToken = function () {\n var oracle = this.lineOracle;\n return oracle && oracle.baseToken(this.pos);\n }; // Find the line object corresponding to the given line number.\n\n\n function getLine(doc, n) {\n n -= doc.first;\n\n if (n < 0 || n >= doc.size) {\n throw new Error(\"There is no line \" + (n + doc.first) + \" in the document.\");\n }\n\n var chunk = doc;\n\n while (!chunk.lines) {\n for (var i = 0;; ++i) {\n var child = chunk.children[i],\n sz = child.chunkSize();\n\n if (n < sz) {\n chunk = child;\n break;\n }\n\n n -= sz;\n }\n }\n\n return chunk.lines[n];\n } // Get the part of a document between two positions, as an array of\n // strings.\n\n\n function getBetween(doc, start, end) {\n var out = [],\n n = start.line;\n doc.iter(start.line, end.line + 1, function (line) {\n var text = line.text;\n\n if (n == end.line) {\n text = text.slice(0, end.ch);\n }\n\n if (n == start.line) {\n text = text.slice(start.ch);\n }\n\n out.push(text);\n ++n;\n });\n return out;\n } // Get the lines between from and to, as array of strings.\n\n\n function getLines(doc, from, to) {\n var out = [];\n doc.iter(from, to, function (line) {\n out.push(line.text);\n }); // iter aborts when callback returns truthy value\n\n return out;\n } // Update the height of a line, propagating the height change\n // upwards to parent nodes.\n\n\n function updateLineHeight(line, height) {\n var diff = height - line.height;\n\n if (diff) {\n for (var n = line; n; n = n.parent) {\n n.height += diff;\n }\n }\n } // Given a line object, find its line number by walking up through\n // its parent links.\n\n\n function lineNo(line) {\n if (line.parent == null) {\n return null;\n }\n\n var cur = line.parent,\n no = indexOf(cur.lines, line);\n\n for (var chunk = cur.parent; chunk; cur = chunk, chunk = chunk.parent) {\n for (var i = 0;; ++i) {\n if (chunk.children[i] == cur) {\n break;\n }\n\n no += chunk.children[i].chunkSize();\n }\n }\n\n return no + cur.first;\n } // Find the line at the given vertical position, using the height\n // information in the document tree.\n\n\n function _lineAtHeight(chunk, h) {\n var n = chunk.first;\n\n outer: do {\n for (var i$1 = 0; i$1 < chunk.children.length; ++i$1) {\n var child = chunk.children[i$1],\n ch = child.height;\n\n if (h < ch) {\n chunk = child;\n continue outer;\n }\n\n h -= ch;\n n += child.chunkSize();\n }\n\n return n;\n } while (!chunk.lines);\n\n var i = 0;\n\n for (; i < chunk.lines.length; ++i) {\n var line = chunk.lines[i],\n lh = line.height;\n\n if (h < lh) {\n break;\n }\n\n h -= lh;\n }\n\n return n + i;\n }\n\n function isLine(doc, l) {\n return l >= doc.first && l < doc.first + doc.size;\n }\n\n function lineNumberFor(options, i) {\n return String(options.lineNumberFormatter(i + options.firstLineNumber));\n } // A Pos instance represents a position within the text.\n\n\n function Pos(line, ch, sticky) {\n if (sticky === void 0) sticky = null;\n\n if (!(this instanceof Pos)) {\n return new Pos(line, ch, sticky);\n }\n\n this.line = line;\n this.ch = ch;\n this.sticky = sticky;\n } // Compare two positions, return 0 if they are the same, a negative\n // number when a is less, and a positive number otherwise.\n\n\n function cmp(a, b) {\n return a.line - b.line || a.ch - b.ch;\n }\n\n function equalCursorPos(a, b) {\n return a.sticky == b.sticky && cmp(a, b) == 0;\n }\n\n function copyPos(x) {\n return Pos(x.line, x.ch);\n }\n\n function maxPos(a, b) {\n return cmp(a, b) < 0 ? b : a;\n }\n\n function minPos(a, b) {\n return cmp(a, b) < 0 ? a : b;\n } // Most of the external API clips given positions to make sure they\n // actually exist within the document.\n\n\n function clipLine(doc, n) {\n return Math.max(doc.first, Math.min(n, doc.first + doc.size - 1));\n }\n\n function _clipPos(doc, pos) {\n if (pos.line < doc.first) {\n return Pos(doc.first, 0);\n }\n\n var last = doc.first + doc.size - 1;\n\n if (pos.line > last) {\n return Pos(last, getLine(doc, last).text.length);\n }\n\n return clipToLen(pos, getLine(doc, pos.line).text.length);\n }\n\n function clipToLen(pos, linelen) {\n var ch = pos.ch;\n\n if (ch == null || ch > linelen) {\n return Pos(pos.line, linelen);\n } else if (ch < 0) {\n return Pos(pos.line, 0);\n } else {\n return pos;\n }\n }\n\n function clipPosArray(doc, array) {\n var out = [];\n\n for (var i = 0; i < array.length; i++) {\n out[i] = _clipPos(doc, array[i]);\n }\n\n return out;\n }\n\n var SavedContext = function SavedContext(state, lookAhead) {\n this.state = state;\n this.lookAhead = lookAhead;\n };\n\n var Context = function Context(doc, state, line, lookAhead) {\n this.state = state;\n this.doc = doc;\n this.line = line;\n this.maxLookAhead = lookAhead || 0;\n this.baseTokens = null;\n this.baseTokenPos = 1;\n };\n\n Context.prototype.lookAhead = function (n) {\n var line = this.doc.getLine(this.line + n);\n\n if (line != null && n > this.maxLookAhead) {\n this.maxLookAhead = n;\n }\n\n return line;\n };\n\n Context.prototype.baseToken = function (n) {\n if (!this.baseTokens) {\n return null;\n }\n\n while (this.baseTokens[this.baseTokenPos] <= n) {\n this.baseTokenPos += 2;\n }\n\n var type = this.baseTokens[this.baseTokenPos + 1];\n return {\n type: type && type.replace(/( |^)overlay .*/, \"\"),\n size: this.baseTokens[this.baseTokenPos] - n\n };\n };\n\n Context.prototype.nextLine = function () {\n this.line++;\n\n if (this.maxLookAhead > 0) {\n this.maxLookAhead--;\n }\n };\n\n Context.fromSaved = function (doc, saved, line) {\n if (saved instanceof SavedContext) {\n return new Context(doc, copyState(doc.mode, saved.state), line, saved.lookAhead);\n } else {\n return new Context(doc, copyState(doc.mode, saved), line);\n }\n };\n\n Context.prototype.save = function (copy) {\n var state = copy !== false ? copyState(this.doc.mode, this.state) : this.state;\n return this.maxLookAhead > 0 ? new SavedContext(state, this.maxLookAhead) : state;\n }; // Compute a style array (an array starting with a mode generation\n // -- for invalidation -- followed by pairs of end positions and\n // style strings), which is used to highlight the tokens on the\n // line.\n\n\n function highlightLine(cm, line, context, forceToEnd) {\n // A styles array always starts with a number identifying the\n // mode/overlays that it is based on (for easy invalidation).\n var st = [cm.state.modeGen],\n lineClasses = {}; // Compute the base array of styles\n\n runMode(cm, line.text, cm.doc.mode, context, function (end, style) {\n return st.push(end, style);\n }, lineClasses, forceToEnd);\n var state = context.state; // Run overlays, adjust style array.\n\n var loop = function loop(o) {\n context.baseTokens = st;\n var overlay = cm.state.overlays[o],\n i = 1,\n at = 0;\n context.state = true;\n runMode(cm, line.text, overlay.mode, context, function (end, style) {\n var start = i; // Ensure there's a token end at the current position, and that i points at it\n\n while (at < end) {\n var i_end = st[i];\n\n if (i_end > end) {\n st.splice(i, 1, end, st[i + 1], i_end);\n }\n\n i += 2;\n at = Math.min(end, i_end);\n }\n\n if (!style) {\n return;\n }\n\n if (overlay.opaque) {\n st.splice(start, i - start, end, \"overlay \" + style);\n i = start + 2;\n } else {\n for (; start < i; start += 2) {\n var cur = st[start + 1];\n st[start + 1] = (cur ? cur + \" \" : \"\") + \"overlay \" + style;\n }\n }\n }, lineClasses);\n context.state = state;\n context.baseTokens = null;\n context.baseTokenPos = 1;\n };\n\n for (var o = 0; o < cm.state.overlays.length; ++o) {\n loop(o);\n }\n\n return {\n styles: st,\n classes: lineClasses.bgClass || lineClasses.textClass ? lineClasses : null\n };\n }\n\n function getLineStyles(cm, line, updateFrontier) {\n if (!line.styles || line.styles[0] != cm.state.modeGen) {\n var context = getContextBefore(cm, lineNo(line));\n var resetState = line.text.length > cm.options.maxHighlightLength && copyState(cm.doc.mode, context.state);\n var result = highlightLine(cm, line, context);\n\n if (resetState) {\n context.state = resetState;\n }\n\n line.stateAfter = context.save(!resetState);\n line.styles = result.styles;\n\n if (result.classes) {\n line.styleClasses = result.classes;\n } else if (line.styleClasses) {\n line.styleClasses = null;\n }\n\n if (updateFrontier === cm.doc.highlightFrontier) {\n cm.doc.modeFrontier = Math.max(cm.doc.modeFrontier, ++cm.doc.highlightFrontier);\n }\n }\n\n return line.styles;\n }\n\n function getContextBefore(cm, n, precise) {\n var doc = cm.doc,\n display = cm.display;\n\n if (!doc.mode.startState) {\n return new Context(doc, true, n);\n }\n\n var start = findStartLine(cm, n, precise);\n var saved = start > doc.first && getLine(doc, start - 1).stateAfter;\n var context = saved ? Context.fromSaved(doc, saved, start) : new Context(doc, startState(doc.mode), start);\n doc.iter(start, n, function (line) {\n processLine(cm, line.text, context);\n var pos = context.line;\n line.stateAfter = pos == n - 1 || pos % 5 == 0 || pos >= display.viewFrom && pos < display.viewTo ? context.save() : null;\n context.nextLine();\n });\n\n if (precise) {\n doc.modeFrontier = context.line;\n }\n\n return context;\n } // Lightweight form of highlight -- proceed over this line and\n // update state, but don't save a style array. Used for lines that\n // aren't currently visible.\n\n\n function processLine(cm, text, context, startAt) {\n var mode = cm.doc.mode;\n var stream = new StringStream(text, cm.options.tabSize, context);\n stream.start = stream.pos = startAt || 0;\n\n if (text == \"\") {\n callBlankLine(mode, context.state);\n }\n\n while (!stream.eol()) {\n readToken(mode, stream, context.state);\n stream.start = stream.pos;\n }\n }\n\n function callBlankLine(mode, state) {\n if (mode.blankLine) {\n return mode.blankLine(state);\n }\n\n if (!mode.innerMode) {\n return;\n }\n\n var inner = innerMode(mode, state);\n\n if (inner.mode.blankLine) {\n return inner.mode.blankLine(inner.state);\n }\n }\n\n function readToken(mode, stream, state, inner) {\n for (var i = 0; i < 10; i++) {\n if (inner) {\n inner[0] = innerMode(mode, state).mode;\n }\n\n var style = mode.token(stream, state);\n\n if (stream.pos > stream.start) {\n return style;\n }\n }\n\n throw new Error(\"Mode \" + mode.name + \" failed to advance stream.\");\n }\n\n var Token = function Token(stream, type, state) {\n this.start = stream.start;\n this.end = stream.pos;\n this.string = stream.current();\n this.type = type || null;\n this.state = state;\n }; // Utility for getTokenAt and getLineTokens\n\n\n function takeToken(cm, pos, precise, asArray) {\n var doc = cm.doc,\n mode = doc.mode,\n style;\n pos = _clipPos(doc, pos);\n var line = getLine(doc, pos.line),\n context = getContextBefore(cm, pos.line, precise);\n var stream = new StringStream(line.text, cm.options.tabSize, context),\n tokens;\n\n if (asArray) {\n tokens = [];\n }\n\n while ((asArray || stream.pos < pos.ch) && !stream.eol()) {\n stream.start = stream.pos;\n style = readToken(mode, stream, context.state);\n\n if (asArray) {\n tokens.push(new Token(stream, style, copyState(doc.mode, context.state)));\n }\n }\n\n return asArray ? tokens : new Token(stream, style, context.state);\n }\n\n function extractLineClasses(type, output) {\n if (type) {\n for (;;) {\n var lineClass = type.match(/(?:^|\\s+)line-(background-)?(\\S+)/);\n\n if (!lineClass) {\n break;\n }\n\n type = type.slice(0, lineClass.index) + type.slice(lineClass.index + lineClass[0].length);\n var prop = lineClass[1] ? \"bgClass\" : \"textClass\";\n\n if (output[prop] == null) {\n output[prop] = lineClass[2];\n } else if (!new RegExp(\"(?:^|\\s)\" + lineClass[2] + \"(?:$|\\s)\").test(output[prop])) {\n output[prop] += \" \" + lineClass[2];\n }\n }\n }\n\n return type;\n } // Run the given mode's parser over a line, calling f for each token.\n\n\n function runMode(cm, text, mode, context, f, lineClasses, forceToEnd) {\n var flattenSpans = mode.flattenSpans;\n\n if (flattenSpans == null) {\n flattenSpans = cm.options.flattenSpans;\n }\n\n var curStart = 0,\n curStyle = null;\n var stream = new StringStream(text, cm.options.tabSize, context),\n style;\n var inner = cm.options.addModeClass && [null];\n\n if (text == \"\") {\n extractLineClasses(callBlankLine(mode, context.state), lineClasses);\n }\n\n while (!stream.eol()) {\n if (stream.pos > cm.options.maxHighlightLength) {\n flattenSpans = false;\n\n if (forceToEnd) {\n processLine(cm, text, context, stream.pos);\n }\n\n stream.pos = text.length;\n style = null;\n } else {\n style = extractLineClasses(readToken(mode, stream, context.state, inner), lineClasses);\n }\n\n if (inner) {\n var mName = inner[0].name;\n\n if (mName) {\n style = \"m-\" + (style ? mName + \" \" + style : mName);\n }\n }\n\n if (!flattenSpans || curStyle != style) {\n while (curStart < stream.start) {\n curStart = Math.min(stream.start, curStart + 5000);\n f(curStart, curStyle);\n }\n\n curStyle = style;\n }\n\n stream.start = stream.pos;\n }\n\n while (curStart < stream.pos) {\n // Webkit seems to refuse to render text nodes longer than 57444\n // characters, and returns inaccurate measurements in nodes\n // starting around 5000 chars.\n var pos = Math.min(stream.pos, curStart + 5000);\n f(pos, curStyle);\n curStart = pos;\n }\n } // Finds the line to start with when starting a parse. Tries to\n // find a line with a stateAfter, so that it can start with a\n // valid state. If that fails, it returns the line with the\n // smallest indentation, which tends to need the least context to\n // parse correctly.\n\n\n function findStartLine(cm, n, precise) {\n var minindent,\n minline,\n doc = cm.doc;\n var lim = precise ? -1 : n - (cm.doc.mode.innerMode ? 1000 : 100);\n\n for (var search = n; search > lim; --search) {\n if (search <= doc.first) {\n return doc.first;\n }\n\n var line = getLine(doc, search - 1),\n after = line.stateAfter;\n\n if (after && (!precise || search + (after instanceof SavedContext ? after.lookAhead : 0) <= doc.modeFrontier)) {\n return search;\n }\n\n var indented = countColumn(line.text, null, cm.options.tabSize);\n\n if (minline == null || minindent > indented) {\n minline = search - 1;\n minindent = indented;\n }\n }\n\n return minline;\n }\n\n function retreatFrontier(doc, n) {\n doc.modeFrontier = Math.min(doc.modeFrontier, n);\n\n if (doc.highlightFrontier < n - 10) {\n return;\n }\n\n var start = doc.first;\n\n for (var line = n - 1; line > start; line--) {\n var saved = getLine(doc, line).stateAfter; // change is on 3\n // state on line 1 looked ahead 2 -- so saw 3\n // test 1 + 2 < 3 should cover this\n\n if (saved && (!(saved instanceof SavedContext) || line + saved.lookAhead < n)) {\n start = line + 1;\n break;\n }\n }\n\n doc.highlightFrontier = Math.min(doc.highlightFrontier, start);\n } // Optimize some code when these features are not used.\n\n\n var sawReadOnlySpans = false,\n sawCollapsedSpans = false;\n\n function seeReadOnlySpans() {\n sawReadOnlySpans = true;\n }\n\n function seeCollapsedSpans() {\n sawCollapsedSpans = true;\n } // TEXTMARKER SPANS\n\n\n function MarkedSpan(marker, from, to) {\n this.marker = marker;\n this.from = from;\n this.to = to;\n } // Search an array of spans for a span matching the given marker.\n\n\n function getMarkedSpanFor(spans, marker) {\n if (spans) {\n for (var i = 0; i < spans.length; ++i) {\n var span = spans[i];\n\n if (span.marker == marker) {\n return span;\n }\n }\n }\n } // Remove a span from an array, returning undefined if no spans are\n // left (we don't store arrays for lines without spans).\n\n\n function removeMarkedSpan(spans, span) {\n var r;\n\n for (var i = 0; i < spans.length; ++i) {\n if (spans[i] != span) {\n (r || (r = [])).push(spans[i]);\n }\n }\n\n return r;\n } // Add a span to a line.\n\n\n function addMarkedSpan(line, span) {\n line.markedSpans = line.markedSpans ? line.markedSpans.concat([span]) : [span];\n span.marker.attachLine(line);\n } // Used for the algorithm that adjusts markers for a change in the\n // document. These functions cut an array of spans at a given\n // character position, returning an array of remaining chunks (or\n // undefined if nothing remains).\n\n\n function markedSpansBefore(old, startCh, isInsert) {\n var nw;\n\n if (old) {\n for (var i = 0; i < old.length; ++i) {\n var span = old[i],\n marker = span.marker;\n var startsBefore = span.from == null || (marker.inclusiveLeft ? span.from <= startCh : span.from < startCh);\n\n if (startsBefore || span.from == startCh && marker.type == \"bookmark\" && (!isInsert || !span.marker.insertLeft)) {\n var endsAfter = span.to == null || (marker.inclusiveRight ? span.to >= startCh : span.to > startCh);\n (nw || (nw = [])).push(new MarkedSpan(marker, span.from, endsAfter ? null : span.to));\n }\n }\n }\n\n return nw;\n }\n\n function markedSpansAfter(old, endCh, isInsert) {\n var nw;\n\n if (old) {\n for (var i = 0; i < old.length; ++i) {\n var span = old[i],\n marker = span.marker;\n var endsAfter = span.to == null || (marker.inclusiveRight ? span.to >= endCh : span.to > endCh);\n\n if (endsAfter || span.from == endCh && marker.type == \"bookmark\" && (!isInsert || span.marker.insertLeft)) {\n var startsBefore = span.from == null || (marker.inclusiveLeft ? span.from <= endCh : span.from < endCh);\n (nw || (nw = [])).push(new MarkedSpan(marker, startsBefore ? null : span.from - endCh, span.to == null ? null : span.to - endCh));\n }\n }\n }\n\n return nw;\n } // Given a change object, compute the new set of marker spans that\n // cover the line in which the change took place. Removes spans\n // entirely within the change, reconnects spans belonging to the\n // same marker that appear on both sides of the change, and cuts off\n // spans partially within the change. Returns an array of span\n // arrays with one element for each line in (after) the change.\n\n\n function stretchSpansOverChange(doc, change) {\n if (change.full) {\n return null;\n }\n\n var oldFirst = isLine(doc, change.from.line) && getLine(doc, change.from.line).markedSpans;\n var oldLast = isLine(doc, change.to.line) && getLine(doc, change.to.line).markedSpans;\n\n if (!oldFirst && !oldLast) {\n return null;\n }\n\n var startCh = change.from.ch,\n endCh = change.to.ch,\n isInsert = cmp(change.from, change.to) == 0; // Get the spans that 'stick out' on both sides\n\n var first = markedSpansBefore(oldFirst, startCh, isInsert);\n var last = markedSpansAfter(oldLast, endCh, isInsert); // Next, merge those two ends\n\n var sameLine = change.text.length == 1,\n offset = lst(change.text).length + (sameLine ? startCh : 0);\n\n if (first) {\n // Fix up .to properties of first\n for (var i = 0; i < first.length; ++i) {\n var span = first[i];\n\n if (span.to == null) {\n var found = getMarkedSpanFor(last, span.marker);\n\n if (!found) {\n span.to = startCh;\n } else if (sameLine) {\n span.to = found.to == null ? null : found.to + offset;\n }\n }\n }\n }\n\n if (last) {\n // Fix up .from in last (or move them into first in case of sameLine)\n for (var i$1 = 0; i$1 < last.length; ++i$1) {\n var span$1 = last[i$1];\n\n if (span$1.to != null) {\n span$1.to += offset;\n }\n\n if (span$1.from == null) {\n var found$1 = getMarkedSpanFor(first, span$1.marker);\n\n if (!found$1) {\n span$1.from = offset;\n\n if (sameLine) {\n (first || (first = [])).push(span$1);\n }\n }\n } else {\n span$1.from += offset;\n\n if (sameLine) {\n (first || (first = [])).push(span$1);\n }\n }\n }\n } // Make sure we didn't create any zero-length spans\n\n\n if (first) {\n first = clearEmptySpans(first);\n }\n\n if (last && last != first) {\n last = clearEmptySpans(last);\n }\n\n var newMarkers = [first];\n\n if (!sameLine) {\n // Fill gap with whole-line-spans\n var gap = change.text.length - 2,\n gapMarkers;\n\n if (gap > 0 && first) {\n for (var i$2 = 0; i$2 < first.length; ++i$2) {\n if (first[i$2].to == null) {\n (gapMarkers || (gapMarkers = [])).push(new MarkedSpan(first[i$2].marker, null, null));\n }\n }\n }\n\n for (var i$3 = 0; i$3 < gap; ++i$3) {\n newMarkers.push(gapMarkers);\n }\n\n newMarkers.push(last);\n }\n\n return newMarkers;\n } // Remove spans that are empty and don't have a clearWhenEmpty\n // option of false.\n\n\n function clearEmptySpans(spans) {\n for (var i = 0; i < spans.length; ++i) {\n var span = spans[i];\n\n if (span.from != null && span.from == span.to && span.marker.clearWhenEmpty !== false) {\n spans.splice(i--, 1);\n }\n }\n\n if (!spans.length) {\n return null;\n }\n\n return spans;\n } // Used to 'clip' out readOnly ranges when making a change.\n\n\n function removeReadOnlyRanges(doc, from, to) {\n var markers = null;\n doc.iter(from.line, to.line + 1, function (line) {\n if (line.markedSpans) {\n for (var i = 0; i < line.markedSpans.length; ++i) {\n var mark = line.markedSpans[i].marker;\n\n if (mark.readOnly && (!markers || indexOf(markers, mark) == -1)) {\n (markers || (markers = [])).push(mark);\n }\n }\n }\n });\n\n if (!markers) {\n return null;\n }\n\n var parts = [{\n from: from,\n to: to\n }];\n\n for (var i = 0; i < markers.length; ++i) {\n var mk = markers[i],\n m = mk.find(0);\n\n for (var j = 0; j < parts.length; ++j) {\n var p = parts[j];\n\n if (cmp(p.to, m.from) < 0 || cmp(p.from, m.to) > 0) {\n continue;\n }\n\n var newParts = [j, 1],\n dfrom = cmp(p.from, m.from),\n dto = cmp(p.to, m.to);\n\n if (dfrom < 0 || !mk.inclusiveLeft && !dfrom) {\n newParts.push({\n from: p.from,\n to: m.from\n });\n }\n\n if (dto > 0 || !mk.inclusiveRight && !dto) {\n newParts.push({\n from: m.to,\n to: p.to\n });\n }\n\n parts.splice.apply(parts, newParts);\n j += newParts.length - 3;\n }\n }\n\n return parts;\n } // Connect or disconnect spans from a line.\n\n\n function detachMarkedSpans(line) {\n var spans = line.markedSpans;\n\n if (!spans) {\n return;\n }\n\n for (var i = 0; i < spans.length; ++i) {\n spans[i].marker.detachLine(line);\n }\n\n line.markedSpans = null;\n }\n\n function attachMarkedSpans(line, spans) {\n if (!spans) {\n return;\n }\n\n for (var i = 0; i < spans.length; ++i) {\n spans[i].marker.attachLine(line);\n }\n\n line.markedSpans = spans;\n } // Helpers used when computing which overlapping collapsed span\n // counts as the larger one.\n\n\n function extraLeft(marker) {\n return marker.inclusiveLeft ? -1 : 0;\n }\n\n function extraRight(marker) {\n return marker.inclusiveRight ? 1 : 0;\n } // Returns a number indicating which of two overlapping collapsed\n // spans is larger (and thus includes the other). Falls back to\n // comparing ids when the spans cover exactly the same range.\n\n\n function compareCollapsedMarkers(a, b) {\n var lenDiff = a.lines.length - b.lines.length;\n\n if (lenDiff != 0) {\n return lenDiff;\n }\n\n var aPos = a.find(),\n bPos = b.find();\n var fromCmp = cmp(aPos.from, bPos.from) || extraLeft(a) - extraLeft(b);\n\n if (fromCmp) {\n return -fromCmp;\n }\n\n var toCmp = cmp(aPos.to, bPos.to) || extraRight(a) - extraRight(b);\n\n if (toCmp) {\n return toCmp;\n }\n\n return b.id - a.id;\n } // Find out whether a line ends or starts in a collapsed span. If\n // so, return the marker for that span.\n\n\n function collapsedSpanAtSide(line, start) {\n var sps = sawCollapsedSpans && line.markedSpans,\n found;\n\n if (sps) {\n for (var sp = void 0, i = 0; i < sps.length; ++i) {\n sp = sps[i];\n\n if (sp.marker.collapsed && (start ? sp.from : sp.to) == null && (!found || compareCollapsedMarkers(found, sp.marker) < 0)) {\n found = sp.marker;\n }\n }\n }\n\n return found;\n }\n\n function collapsedSpanAtStart(line) {\n return collapsedSpanAtSide(line, true);\n }\n\n function collapsedSpanAtEnd(line) {\n return collapsedSpanAtSide(line, false);\n }\n\n function collapsedSpanAround(line, ch) {\n var sps = sawCollapsedSpans && line.markedSpans,\n found;\n\n if (sps) {\n for (var i = 0; i < sps.length; ++i) {\n var sp = sps[i];\n\n if (sp.marker.collapsed && (sp.from == null || sp.from < ch) && (sp.to == null || sp.to > ch) && (!found || compareCollapsedMarkers(found, sp.marker) < 0)) {\n found = sp.marker;\n }\n }\n }\n\n return found;\n } // Test whether there exists a collapsed span that partially\n // overlaps (covers the start or end, but not both) of a new span.\n // Such overlap is not allowed.\n\n\n function conflictingCollapsedRange(doc, lineNo, from, to, marker) {\n var line = getLine(doc, lineNo);\n var sps = sawCollapsedSpans && line.markedSpans;\n\n if (sps) {\n for (var i = 0; i < sps.length; ++i) {\n var sp = sps[i];\n\n if (!sp.marker.collapsed) {\n continue;\n }\n\n var found = sp.marker.find(0);\n var fromCmp = cmp(found.from, from) || extraLeft(sp.marker) - extraLeft(marker);\n var toCmp = cmp(found.to, to) || extraRight(sp.marker) - extraRight(marker);\n\n if (fromCmp >= 0 && toCmp <= 0 || fromCmp <= 0 && toCmp >= 0) {\n continue;\n }\n\n if (fromCmp <= 0 && (sp.marker.inclusiveRight && marker.inclusiveLeft ? cmp(found.to, from) >= 0 : cmp(found.to, from) > 0) || fromCmp >= 0 && (sp.marker.inclusiveRight && marker.inclusiveLeft ? cmp(found.from, to) <= 0 : cmp(found.from, to) < 0)) {\n return true;\n }\n }\n }\n } // A visual line is a line as drawn on the screen. Folding, for\n // example, can cause multiple logical lines to appear on the same\n // visual line. This finds the start of the visual line that the\n // given line is part of (usually that is the line itself).\n\n\n function visualLine(line) {\n var merged;\n\n while (merged = collapsedSpanAtStart(line)) {\n line = merged.find(-1, true).line;\n }\n\n return line;\n }\n\n function visualLineEnd(line) {\n var merged;\n\n while (merged = collapsedSpanAtEnd(line)) {\n line = merged.find(1, true).line;\n }\n\n return line;\n } // Returns an array of logical lines that continue the visual line\n // started by the argument, or undefined if there are no such lines.\n\n\n function visualLineContinued(line) {\n var merged, lines;\n\n while (merged = collapsedSpanAtEnd(line)) {\n line = merged.find(1, true).line;\n (lines || (lines = [])).push(line);\n }\n\n return lines;\n } // Get the line number of the start of the visual line that the\n // given line number is part of.\n\n\n function visualLineNo(doc, lineN) {\n var line = getLine(doc, lineN),\n vis = visualLine(line);\n\n if (line == vis) {\n return lineN;\n }\n\n return lineNo(vis);\n } // Get the line number of the start of the next visual line after\n // the given line.\n\n\n function visualLineEndNo(doc, lineN) {\n if (lineN > doc.lastLine()) {\n return lineN;\n }\n\n var line = getLine(doc, lineN),\n merged;\n\n if (!lineIsHidden(doc, line)) {\n return lineN;\n }\n\n while (merged = collapsedSpanAtEnd(line)) {\n line = merged.find(1, true).line;\n }\n\n return lineNo(line) + 1;\n } // Compute whether a line is hidden. Lines count as hidden when they\n // are part of a visual line that starts with another line, or when\n // they are entirely covered by collapsed, non-widget span.\n\n\n function lineIsHidden(doc, line) {\n var sps = sawCollapsedSpans && line.markedSpans;\n\n if (sps) {\n for (var sp = void 0, i = 0; i < sps.length; ++i) {\n sp = sps[i];\n\n if (!sp.marker.collapsed) {\n continue;\n }\n\n if (sp.from == null) {\n return true;\n }\n\n if (sp.marker.widgetNode) {\n continue;\n }\n\n if (sp.from == 0 && sp.marker.inclusiveLeft && lineIsHiddenInner(doc, line, sp)) {\n return true;\n }\n }\n }\n }\n\n function lineIsHiddenInner(doc, line, span) {\n if (span.to == null) {\n var end = span.marker.find(1, true);\n return lineIsHiddenInner(doc, end.line, getMarkedSpanFor(end.line.markedSpans, span.marker));\n }\n\n if (span.marker.inclusiveRight && span.to == line.text.length) {\n return true;\n }\n\n for (var sp = void 0, i = 0; i < line.markedSpans.length; ++i) {\n sp = line.markedSpans[i];\n\n if (sp.marker.collapsed && !sp.marker.widgetNode && sp.from == span.to && (sp.to == null || sp.to != span.from) && (sp.marker.inclusiveLeft || span.marker.inclusiveRight) && lineIsHiddenInner(doc, line, sp)) {\n return true;\n }\n }\n } // Find the height above the given line.\n\n\n function _heightAtLine(lineObj) {\n lineObj = visualLine(lineObj);\n var h = 0,\n chunk = lineObj.parent;\n\n for (var i = 0; i < chunk.lines.length; ++i) {\n var line = chunk.lines[i];\n\n if (line == lineObj) {\n break;\n } else {\n h += line.height;\n }\n }\n\n for (var p = chunk.parent; p; chunk = p, p = chunk.parent) {\n for (var i$1 = 0; i$1 < p.children.length; ++i$1) {\n var cur = p.children[i$1];\n\n if (cur == chunk) {\n break;\n } else {\n h += cur.height;\n }\n }\n }\n\n return h;\n } // Compute the character length of a line, taking into account\n // collapsed ranges (see markText) that might hide parts, and join\n // other lines onto it.\n\n\n function lineLength(line) {\n if (line.height == 0) {\n return 0;\n }\n\n var len = line.text.length,\n merged,\n cur = line;\n\n while (merged = collapsedSpanAtStart(cur)) {\n var found = merged.find(0, true);\n cur = found.from.line;\n len += found.from.ch - found.to.ch;\n }\n\n cur = line;\n\n while (merged = collapsedSpanAtEnd(cur)) {\n var found$1 = merged.find(0, true);\n len -= cur.text.length - found$1.from.ch;\n cur = found$1.to.line;\n len += cur.text.length - found$1.to.ch;\n }\n\n return len;\n } // Find the longest line in the document.\n\n\n function findMaxLine(cm) {\n var d = cm.display,\n doc = cm.doc;\n d.maxLine = getLine(doc, doc.first);\n d.maxLineLength = lineLength(d.maxLine);\n d.maxLineChanged = true;\n doc.iter(function (line) {\n var len = lineLength(line);\n\n if (len > d.maxLineLength) {\n d.maxLineLength = len;\n d.maxLine = line;\n }\n });\n } // LINE DATA STRUCTURE\n // Line objects. These hold state related to a line, including\n // highlighting info (the styles array).\n\n\n var Line = function Line(text, markedSpans, estimateHeight) {\n this.text = text;\n attachMarkedSpans(this, markedSpans);\n this.height = estimateHeight ? estimateHeight(this) : 1;\n };\n\n Line.prototype.lineNo = function () {\n return lineNo(this);\n };\n\n eventMixin(Line); // Change the content (text, markers) of a line. Automatically\n // invalidates cached information and tries to re-estimate the\n // line's height.\n\n function updateLine(line, text, markedSpans, estimateHeight) {\n line.text = text;\n\n if (line.stateAfter) {\n line.stateAfter = null;\n }\n\n if (line.styles) {\n line.styles = null;\n }\n\n if (line.order != null) {\n line.order = null;\n }\n\n detachMarkedSpans(line);\n attachMarkedSpans(line, markedSpans);\n var estHeight = estimateHeight ? estimateHeight(line) : 1;\n\n if (estHeight != line.height) {\n updateLineHeight(line, estHeight);\n }\n } // Detach a line from the document tree and its markers.\n\n\n function cleanUpLine(line) {\n line.parent = null;\n detachMarkedSpans(line);\n } // Convert a style as returned by a mode (either null, or a string\n // containing one or more styles) to a CSS style. This is cached,\n // and also looks for line-wide styles.\n\n\n var styleToClassCache = {},\n styleToClassCacheWithMode = {};\n\n function interpretTokenStyle(style, options) {\n if (!style || /^\\s*$/.test(style)) {\n return null;\n }\n\n var cache = options.addModeClass ? styleToClassCacheWithMode : styleToClassCache;\n return cache[style] || (cache[style] = style.replace(/\\S+/g, \"cm-$&\"));\n } // Render the DOM representation of the text of a line. Also builds\n // up a 'line map', which points at the DOM nodes that represent\n // specific stretches of text, and is used by the measuring code.\n // The returned object contains the DOM node, this map, and\n // information about line-wide styles that were set by the mode.\n\n\n function buildLineContent(cm, lineView) {\n // The padding-right forces the element to have a 'border', which\n // is needed on Webkit to be able to get line-level bounding\n // rectangles for it (in measureChar).\n var content = eltP(\"span\", null, null, webkit ? \"padding-right: .1px\" : null);\n var builder = {\n pre: eltP(\"pre\", [content], \"CodeMirror-line\"),\n content: content,\n col: 0,\n pos: 0,\n cm: cm,\n trailingSpace: false,\n splitSpaces: cm.getOption(\"lineWrapping\")\n };\n lineView.measure = {}; // Iterate over the logical lines that make up this visual line.\n\n for (var i = 0; i <= (lineView.rest ? lineView.rest.length : 0); i++) {\n var line = i ? lineView.rest[i - 1] : lineView.line,\n order = void 0;\n builder.pos = 0;\n builder.addToken = buildToken; // Optionally wire in some hacks into the token-rendering\n // algorithm, to deal with browser quirks.\n\n if (hasBadBidiRects(cm.display.measure) && (order = getOrder(line, cm.doc.direction))) {\n builder.addToken = buildTokenBadBidi(builder.addToken, order);\n }\n\n builder.map = [];\n var allowFrontierUpdate = lineView != cm.display.externalMeasured && lineNo(line);\n insertLineContent(line, builder, getLineStyles(cm, line, allowFrontierUpdate));\n\n if (line.styleClasses) {\n if (line.styleClasses.bgClass) {\n builder.bgClass = joinClasses(line.styleClasses.bgClass, builder.bgClass || \"\");\n }\n\n if (line.styleClasses.textClass) {\n builder.textClass = joinClasses(line.styleClasses.textClass, builder.textClass || \"\");\n }\n } // Ensure at least a single node is present, for measuring.\n\n\n if (builder.map.length == 0) {\n builder.map.push(0, 0, builder.content.appendChild(zeroWidthElement(cm.display.measure)));\n } // Store the map and a cache object for the current logical line\n\n\n if (i == 0) {\n lineView.measure.map = builder.map;\n lineView.measure.cache = {};\n } else {\n (lineView.measure.maps || (lineView.measure.maps = [])).push(builder.map);\n (lineView.measure.caches || (lineView.measure.caches = [])).push({});\n }\n } // See issue #2901\n\n\n if (webkit) {\n var last = builder.content.lastChild;\n\n if (/\\bcm-tab\\b/.test(last.className) || last.querySelector && last.querySelector(\".cm-tab\")) {\n builder.content.className = \"cm-tab-wrap-hack\";\n }\n }\n\n signal(cm, \"renderLine\", cm, lineView.line, builder.pre);\n\n if (builder.pre.className) {\n builder.textClass = joinClasses(builder.pre.className, builder.textClass || \"\");\n }\n\n return builder;\n }\n\n function defaultSpecialCharPlaceholder(ch) {\n var token = elt(\"span\", \"\\u2022\", \"cm-invalidchar\");\n token.title = \"\\\\u\" + ch.charCodeAt(0).toString(16);\n token.setAttribute(\"aria-label\", token.title);\n return token;\n } // Build up the DOM representation for a single token, and add it to\n // the line map. Takes care to render special characters separately.\n\n\n function buildToken(builder, text, style, startStyle, endStyle, css, attributes) {\n if (!text) {\n return;\n }\n\n var displayText = builder.splitSpaces ? splitSpaces(text, builder.trailingSpace) : text;\n var special = builder.cm.state.specialChars,\n mustWrap = false;\n var content;\n\n if (!special.test(text)) {\n builder.col += text.length;\n content = document.createTextNode(displayText);\n builder.map.push(builder.pos, builder.pos + text.length, content);\n\n if (ie && ie_version < 9) {\n mustWrap = true;\n }\n\n builder.pos += text.length;\n } else {\n content = document.createDocumentFragment();\n var pos = 0;\n\n while (true) {\n special.lastIndex = pos;\n var m = special.exec(text);\n var skipped = m ? m.index - pos : text.length - pos;\n\n if (skipped) {\n var txt = document.createTextNode(displayText.slice(pos, pos + skipped));\n\n if (ie && ie_version < 9) {\n content.appendChild(elt(\"span\", [txt]));\n } else {\n content.appendChild(txt);\n }\n\n builder.map.push(builder.pos, builder.pos + skipped, txt);\n builder.col += skipped;\n builder.pos += skipped;\n }\n\n if (!m) {\n break;\n }\n\n pos += skipped + 1;\n var txt$1 = void 0;\n\n if (m[0] == \"\\t\") {\n var tabSize = builder.cm.options.tabSize,\n tabWidth = tabSize - builder.col % tabSize;\n txt$1 = content.appendChild(elt(\"span\", spaceStr(tabWidth), \"cm-tab\"));\n txt$1.setAttribute(\"role\", \"presentation\");\n txt$1.setAttribute(\"cm-text\", \"\\t\");\n builder.col += tabWidth;\n } else if (m[0] == \"\\r\" || m[0] == \"\\n\") {\n txt$1 = content.appendChild(elt(\"span\", m[0] == \"\\r\" ? \"\\u240D\" : \"\\u2424\", \"cm-invalidchar\"));\n txt$1.setAttribute(\"cm-text\", m[0]);\n builder.col += 1;\n } else {\n txt$1 = builder.cm.options.specialCharPlaceholder(m[0]);\n txt$1.setAttribute(\"cm-text\", m[0]);\n\n if (ie && ie_version < 9) {\n content.appendChild(elt(\"span\", [txt$1]));\n } else {\n content.appendChild(txt$1);\n }\n\n builder.col += 1;\n }\n\n builder.map.push(builder.pos, builder.pos + 1, txt$1);\n builder.pos++;\n }\n }\n\n builder.trailingSpace = displayText.charCodeAt(text.length - 1) == 32;\n\n if (style || startStyle || endStyle || mustWrap || css) {\n var fullStyle = style || \"\";\n\n if (startStyle) {\n fullStyle += startStyle;\n }\n\n if (endStyle) {\n fullStyle += endStyle;\n }\n\n var token = elt(\"span\", [content], fullStyle, css);\n\n if (attributes) {\n for (var attr in attributes) {\n if (attributes.hasOwnProperty(attr) && attr != \"style\" && attr != \"class\") {\n token.setAttribute(attr, attributes[attr]);\n }\n }\n }\n\n return builder.content.appendChild(token);\n }\n\n builder.content.appendChild(content);\n } // Change some spaces to NBSP to prevent the browser from collapsing\n // trailing spaces at the end of a line when rendering text (issue #1362).\n\n\n function splitSpaces(text, trailingBefore) {\n if (text.length > 1 && !/ /.test(text)) {\n return text;\n }\n\n var spaceBefore = trailingBefore,\n result = \"\";\n\n for (var i = 0; i < text.length; i++) {\n var ch = text.charAt(i);\n\n if (ch == \" \" && spaceBefore && (i == text.length - 1 || text.charCodeAt(i + 1) == 32)) {\n ch = \"\\xA0\";\n }\n\n result += ch;\n spaceBefore = ch == \" \";\n }\n\n return result;\n } // Work around nonsense dimensions being reported for stretches of\n // right-to-left text.\n\n\n function buildTokenBadBidi(inner, order) {\n return function (builder, text, style, startStyle, endStyle, css, attributes) {\n style = style ? style + \" cm-force-border\" : \"cm-force-border\";\n var start = builder.pos,\n end = start + text.length;\n\n for (;;) {\n // Find the part that overlaps with the start of this text\n var part = void 0;\n\n for (var i = 0; i < order.length; i++) {\n part = order[i];\n\n if (part.to > start && part.from <= start) {\n break;\n }\n }\n\n if (part.to >= end) {\n return inner(builder, text, style, startStyle, endStyle, css, attributes);\n }\n\n inner(builder, text.slice(0, part.to - start), style, startStyle, null, css, attributes);\n startStyle = null;\n text = text.slice(part.to - start);\n start = part.to;\n }\n };\n }\n\n function buildCollapsedSpan(builder, size, marker, ignoreWidget) {\n var widget = !ignoreWidget && marker.widgetNode;\n\n if (widget) {\n builder.map.push(builder.pos, builder.pos + size, widget);\n }\n\n if (!ignoreWidget && builder.cm.display.input.needsContentAttribute) {\n if (!widget) {\n widget = builder.content.appendChild(document.createElement(\"span\"));\n }\n\n widget.setAttribute(\"cm-marker\", marker.id);\n }\n\n if (widget) {\n builder.cm.display.input.setUneditable(widget);\n builder.content.appendChild(widget);\n }\n\n builder.pos += size;\n builder.trailingSpace = false;\n } // Outputs a number of spans to make up a line, taking highlighting\n // and marked text into account.\n\n\n function insertLineContent(line, builder, styles) {\n var spans = line.markedSpans,\n allText = line.text,\n at = 0;\n\n if (!spans) {\n for (var i$1 = 1; i$1 < styles.length; i$1 += 2) {\n builder.addToken(builder, allText.slice(at, at = styles[i$1]), interpretTokenStyle(styles[i$1 + 1], builder.cm.options));\n }\n\n return;\n }\n\n var len = allText.length,\n pos = 0,\n i = 1,\n text = \"\",\n style,\n css;\n var nextChange = 0,\n spanStyle,\n spanEndStyle,\n spanStartStyle,\n collapsed,\n attributes;\n\n for (;;) {\n if (nextChange == pos) {\n // Update current marker set\n spanStyle = spanEndStyle = spanStartStyle = css = \"\";\n attributes = null;\n collapsed = null;\n nextChange = Infinity;\n var foundBookmarks = [],\n endStyles = void 0;\n\n for (var j = 0; j < spans.length; ++j) {\n var sp = spans[j],\n m = sp.marker;\n\n if (m.type == \"bookmark\" && sp.from == pos && m.widgetNode) {\n foundBookmarks.push(m);\n } else if (sp.from <= pos && (sp.to == null || sp.to > pos || m.collapsed && sp.to == pos && sp.from == pos)) {\n if (sp.to != null && sp.to != pos && nextChange > sp.to) {\n nextChange = sp.to;\n spanEndStyle = \"\";\n }\n\n if (m.className) {\n spanStyle += \" \" + m.className;\n }\n\n if (m.css) {\n css = (css ? css + \";\" : \"\") + m.css;\n }\n\n if (m.startStyle && sp.from == pos) {\n spanStartStyle += \" \" + m.startStyle;\n }\n\n if (m.endStyle && sp.to == nextChange) {\n (endStyles || (endStyles = [])).push(m.endStyle, sp.to);\n } // support for the old title property\n // https://github.com/codemirror/CodeMirror/pull/5673\n\n\n if (m.title) {\n (attributes || (attributes = {})).title = m.title;\n }\n\n if (m.attributes) {\n for (var attr in m.attributes) {\n (attributes || (attributes = {}))[attr] = m.attributes[attr];\n }\n }\n\n if (m.collapsed && (!collapsed || compareCollapsedMarkers(collapsed.marker, m) < 0)) {\n collapsed = sp;\n }\n } else if (sp.from > pos && nextChange > sp.from) {\n nextChange = sp.from;\n }\n }\n\n if (endStyles) {\n for (var j$1 = 0; j$1 < endStyles.length; j$1 += 2) {\n if (endStyles[j$1 + 1] == nextChange) {\n spanEndStyle += \" \" + endStyles[j$1];\n }\n }\n }\n\n if (!collapsed || collapsed.from == pos) {\n for (var j$2 = 0; j$2 < foundBookmarks.length; ++j$2) {\n buildCollapsedSpan(builder, 0, foundBookmarks[j$2]);\n }\n }\n\n if (collapsed && (collapsed.from || 0) == pos) {\n buildCollapsedSpan(builder, (collapsed.to == null ? len + 1 : collapsed.to) - pos, collapsed.marker, collapsed.from == null);\n\n if (collapsed.to == null) {\n return;\n }\n\n if (collapsed.to == pos) {\n collapsed = false;\n }\n }\n }\n\n if (pos >= len) {\n break;\n }\n\n var upto = Math.min(len, nextChange);\n\n while (true) {\n if (text) {\n var end = pos + text.length;\n\n if (!collapsed) {\n var tokenText = end > upto ? text.slice(0, upto - pos) : text;\n builder.addToken(builder, tokenText, style ? style + spanStyle : spanStyle, spanStartStyle, pos + tokenText.length == nextChange ? spanEndStyle : \"\", css, attributes);\n }\n\n if (end >= upto) {\n text = text.slice(upto - pos);\n pos = upto;\n break;\n }\n\n pos = end;\n spanStartStyle = \"\";\n }\n\n text = allText.slice(at, at = styles[i++]);\n style = interpretTokenStyle(styles[i++], builder.cm.options);\n }\n }\n } // These objects are used to represent the visible (currently drawn)\n // part of the document. A LineView may correspond to multiple\n // logical lines, if those are connected by collapsed ranges.\n\n\n function LineView(doc, line, lineN) {\n // The starting line\n this.line = line; // Continuing lines, if any\n\n this.rest = visualLineContinued(line); // Number of logical lines in this visual line\n\n this.size = this.rest ? lineNo(lst(this.rest)) - lineN + 1 : 1;\n this.node = this.text = null;\n this.hidden = lineIsHidden(doc, line);\n } // Create a range of LineView objects for the given lines.\n\n\n function buildViewArray(cm, from, to) {\n var array = [],\n nextPos;\n\n for (var pos = from; pos < to; pos = nextPos) {\n var view = new LineView(cm.doc, getLine(cm.doc, pos), pos);\n nextPos = pos + view.size;\n array.push(view);\n }\n\n return array;\n }\n\n var operationGroup = null;\n\n function pushOperation(op) {\n if (operationGroup) {\n operationGroup.ops.push(op);\n } else {\n op.ownsGroup = operationGroup = {\n ops: [op],\n delayedCallbacks: []\n };\n }\n }\n\n function fireCallbacksForOps(group) {\n // Calls delayed callbacks and cursorActivity handlers until no\n // new ones appear\n var callbacks = group.delayedCallbacks,\n i = 0;\n\n do {\n for (; i < callbacks.length; i++) {\n callbacks[i].call(null);\n }\n\n for (var j = 0; j < group.ops.length; j++) {\n var op = group.ops[j];\n\n if (op.cursorActivityHandlers) {\n while (op.cursorActivityCalled < op.cursorActivityHandlers.length) {\n op.cursorActivityHandlers[op.cursorActivityCalled++].call(null, op.cm);\n }\n }\n }\n } while (i < callbacks.length);\n }\n\n function finishOperation(op, endCb) {\n var group = op.ownsGroup;\n\n if (!group) {\n return;\n }\n\n try {\n fireCallbacksForOps(group);\n } finally {\n operationGroup = null;\n endCb(group);\n }\n }\n\n var orphanDelayedCallbacks = null; // Often, we want to signal events at a point where we are in the\n // middle of some work, but don't want the handler to start calling\n // other methods on the editor, which might be in an inconsistent\n // state or simply not expect any other events to happen.\n // signalLater looks whether there are any handlers, and schedules\n // them to be executed when the last operation ends, or, if no\n // operation is active, when a timeout fires.\n\n function signalLater(emitter, type\n /*, values...*/\n ) {\n var arr = getHandlers(emitter, type);\n\n if (!arr.length) {\n return;\n }\n\n var args = Array.prototype.slice.call(arguments, 2),\n list;\n\n if (operationGroup) {\n list = operationGroup.delayedCallbacks;\n } else if (orphanDelayedCallbacks) {\n list = orphanDelayedCallbacks;\n } else {\n list = orphanDelayedCallbacks = [];\n setTimeout(fireOrphanDelayed, 0);\n }\n\n var loop = function loop(i) {\n list.push(function () {\n return arr[i].apply(null, args);\n });\n };\n\n for (var i = 0; i < arr.length; ++i) {\n loop(i);\n }\n }\n\n function fireOrphanDelayed() {\n var delayed = orphanDelayedCallbacks;\n orphanDelayedCallbacks = null;\n\n for (var i = 0; i < delayed.length; ++i) {\n delayed[i]();\n }\n } // When an aspect of a line changes, a string is added to\n // lineView.changes. This updates the relevant part of the line's\n // DOM structure.\n\n\n function updateLineForChanges(cm, lineView, lineN, dims) {\n for (var j = 0; j < lineView.changes.length; j++) {\n var type = lineView.changes[j];\n\n if (type == \"text\") {\n updateLineText(cm, lineView);\n } else if (type == \"gutter\") {\n updateLineGutter(cm, lineView, lineN, dims);\n } else if (type == \"class\") {\n updateLineClasses(cm, lineView);\n } else if (type == \"widget\") {\n updateLineWidgets(cm, lineView, dims);\n }\n }\n\n lineView.changes = null;\n } // Lines with gutter elements, widgets or a background class need to\n // be wrapped, and have the extra elements added to the wrapper div\n\n\n function ensureLineWrapped(lineView) {\n if (lineView.node == lineView.text) {\n lineView.node = elt(\"div\", null, null, \"position: relative\");\n\n if (lineView.text.parentNode) {\n lineView.text.parentNode.replaceChild(lineView.node, lineView.text);\n }\n\n lineView.node.appendChild(lineView.text);\n\n if (ie && ie_version < 8) {\n lineView.node.style.zIndex = 2;\n }\n }\n\n return lineView.node;\n }\n\n function updateLineBackground(cm, lineView) {\n var cls = lineView.bgClass ? lineView.bgClass + \" \" + (lineView.line.bgClass || \"\") : lineView.line.bgClass;\n\n if (cls) {\n cls += \" CodeMirror-linebackground\";\n }\n\n if (lineView.background) {\n if (cls) {\n lineView.background.className = cls;\n } else {\n lineView.background.parentNode.removeChild(lineView.background);\n lineView.background = null;\n }\n } else if (cls) {\n var wrap = ensureLineWrapped(lineView);\n lineView.background = wrap.insertBefore(elt(\"div\", null, cls), wrap.firstChild);\n cm.display.input.setUneditable(lineView.background);\n }\n } // Wrapper around buildLineContent which will reuse the structure\n // in display.externalMeasured when possible.\n\n\n function getLineContent(cm, lineView) {\n var ext = cm.display.externalMeasured;\n\n if (ext && ext.line == lineView.line) {\n cm.display.externalMeasured = null;\n lineView.measure = ext.measure;\n return ext.built;\n }\n\n return buildLineContent(cm, lineView);\n } // Redraw the line's text. Interacts with the background and text\n // classes because the mode may output tokens that influence these\n // classes.\n\n\n function updateLineText(cm, lineView) {\n var cls = lineView.text.className;\n var built = getLineContent(cm, lineView);\n\n if (lineView.text == lineView.node) {\n lineView.node = built.pre;\n }\n\n lineView.text.parentNode.replaceChild(built.pre, lineView.text);\n lineView.text = built.pre;\n\n if (built.bgClass != lineView.bgClass || built.textClass != lineView.textClass) {\n lineView.bgClass = built.bgClass;\n lineView.textClass = built.textClass;\n updateLineClasses(cm, lineView);\n } else if (cls) {\n lineView.text.className = cls;\n }\n }\n\n function updateLineClasses(cm, lineView) {\n updateLineBackground(cm, lineView);\n\n if (lineView.line.wrapClass) {\n ensureLineWrapped(lineView).className = lineView.line.wrapClass;\n } else if (lineView.node != lineView.text) {\n lineView.node.className = \"\";\n }\n\n var textClass = lineView.textClass ? lineView.textClass + \" \" + (lineView.line.textClass || \"\") : lineView.line.textClass;\n lineView.text.className = textClass || \"\";\n }\n\n function updateLineGutter(cm, lineView, lineN, dims) {\n if (lineView.gutter) {\n lineView.node.removeChild(lineView.gutter);\n lineView.gutter = null;\n }\n\n if (lineView.gutterBackground) {\n lineView.node.removeChild(lineView.gutterBackground);\n lineView.gutterBackground = null;\n }\n\n if (lineView.line.gutterClass) {\n var wrap = ensureLineWrapped(lineView);\n lineView.gutterBackground = elt(\"div\", null, \"CodeMirror-gutter-background \" + lineView.line.gutterClass, \"left: \" + (cm.options.fixedGutter ? dims.fixedPos : -dims.gutterTotalWidth) + \"px; width: \" + dims.gutterTotalWidth + \"px\");\n cm.display.input.setUneditable(lineView.gutterBackground);\n wrap.insertBefore(lineView.gutterBackground, lineView.text);\n }\n\n var markers = lineView.line.gutterMarkers;\n\n if (cm.options.lineNumbers || markers) {\n var wrap$1 = ensureLineWrapped(lineView);\n var gutterWrap = lineView.gutter = elt(\"div\", null, \"CodeMirror-gutter-wrapper\", \"left: \" + (cm.options.fixedGutter ? dims.fixedPos : -dims.gutterTotalWidth) + \"px\");\n cm.display.input.setUneditable(gutterWrap);\n wrap$1.insertBefore(gutterWrap, lineView.text);\n\n if (lineView.line.gutterClass) {\n gutterWrap.className += \" \" + lineView.line.gutterClass;\n }\n\n if (cm.options.lineNumbers && (!markers || !markers[\"CodeMirror-linenumbers\"])) {\n lineView.lineNumber = gutterWrap.appendChild(elt(\"div\", lineNumberFor(cm.options, lineN), \"CodeMirror-linenumber CodeMirror-gutter-elt\", \"left: \" + dims.gutterLeft[\"CodeMirror-linenumbers\"] + \"px; width: \" + cm.display.lineNumInnerWidth + \"px\"));\n }\n\n if (markers) {\n for (var k = 0; k < cm.display.gutterSpecs.length; ++k) {\n var id = cm.display.gutterSpecs[k].className,\n found = markers.hasOwnProperty(id) && markers[id];\n\n if (found) {\n gutterWrap.appendChild(elt(\"div\", [found], \"CodeMirror-gutter-elt\", \"left: \" + dims.gutterLeft[id] + \"px; width: \" + dims.gutterWidth[id] + \"px\"));\n }\n }\n }\n }\n }\n\n function updateLineWidgets(cm, lineView, dims) {\n if (lineView.alignable) {\n lineView.alignable = null;\n }\n\n var isWidget = classTest(\"CodeMirror-linewidget\");\n\n for (var node = lineView.node.firstChild, next = void 0; node; node = next) {\n next = node.nextSibling;\n\n if (isWidget.test(node.className)) {\n lineView.node.removeChild(node);\n }\n }\n\n insertLineWidgets(cm, lineView, dims);\n } // Build a line's DOM representation from scratch\n\n\n function buildLineElement(cm, lineView, lineN, dims) {\n var built = getLineContent(cm, lineView);\n lineView.text = lineView.node = built.pre;\n\n if (built.bgClass) {\n lineView.bgClass = built.bgClass;\n }\n\n if (built.textClass) {\n lineView.textClass = built.textClass;\n }\n\n updateLineClasses(cm, lineView);\n updateLineGutter(cm, lineView, lineN, dims);\n insertLineWidgets(cm, lineView, dims);\n return lineView.node;\n } // A lineView may contain multiple logical lines (when merged by\n // collapsed spans). The widgets for all of them need to be drawn.\n\n\n function insertLineWidgets(cm, lineView, dims) {\n insertLineWidgetsFor(cm, lineView.line, lineView, dims, true);\n\n if (lineView.rest) {\n for (var i = 0; i < lineView.rest.length; i++) {\n insertLineWidgetsFor(cm, lineView.rest[i], lineView, dims, false);\n }\n }\n }\n\n function insertLineWidgetsFor(cm, line, lineView, dims, allowAbove) {\n if (!line.widgets) {\n return;\n }\n\n var wrap = ensureLineWrapped(lineView);\n\n for (var i = 0, ws = line.widgets; i < ws.length; ++i) {\n var widget = ws[i],\n node = elt(\"div\", [widget.node], \"CodeMirror-linewidget\" + (widget.className ? \" \" + widget.className : \"\"));\n\n if (!widget.handleMouseEvents) {\n node.setAttribute(\"cm-ignore-events\", \"true\");\n }\n\n positionLineWidget(widget, node, lineView, dims);\n cm.display.input.setUneditable(node);\n\n if (allowAbove && widget.above) {\n wrap.insertBefore(node, lineView.gutter || lineView.text);\n } else {\n wrap.appendChild(node);\n }\n\n signalLater(widget, \"redraw\");\n }\n }\n\n function positionLineWidget(widget, node, lineView, dims) {\n if (widget.noHScroll) {\n (lineView.alignable || (lineView.alignable = [])).push(node);\n var width = dims.wrapperWidth;\n node.style.left = dims.fixedPos + \"px\";\n\n if (!widget.coverGutter) {\n width -= dims.gutterTotalWidth;\n node.style.paddingLeft = dims.gutterTotalWidth + \"px\";\n }\n\n node.style.width = width + \"px\";\n }\n\n if (widget.coverGutter) {\n node.style.zIndex = 5;\n node.style.position = \"relative\";\n\n if (!widget.noHScroll) {\n node.style.marginLeft = -dims.gutterTotalWidth + \"px\";\n }\n }\n }\n\n function widgetHeight(widget) {\n if (widget.height != null) {\n return widget.height;\n }\n\n var cm = widget.doc.cm;\n\n if (!cm) {\n return 0;\n }\n\n if (!contains(document.body, widget.node)) {\n var parentStyle = \"position: relative;\";\n\n if (widget.coverGutter) {\n parentStyle += \"margin-left: -\" + cm.display.gutters.offsetWidth + \"px;\";\n }\n\n if (widget.noHScroll) {\n parentStyle += \"width: \" + cm.display.wrapper.clientWidth + \"px;\";\n }\n\n removeChildrenAndAdd(cm.display.measure, elt(\"div\", [widget.node], null, parentStyle));\n }\n\n return widget.height = widget.node.parentNode.offsetHeight;\n } // Return true when the given mouse event happened in a widget\n\n\n function eventInWidget(display, e) {\n for (var n = e_target(e); n != display.wrapper; n = n.parentNode) {\n if (!n || n.nodeType == 1 && n.getAttribute(\"cm-ignore-events\") == \"true\" || n.parentNode == display.sizer && n != display.mover) {\n return true;\n }\n }\n } // POSITION MEASUREMENT\n\n\n function paddingTop(display) {\n return display.lineSpace.offsetTop;\n }\n\n function paddingVert(display) {\n return display.mover.offsetHeight - display.lineSpace.offsetHeight;\n }\n\n function paddingH(display) {\n if (display.cachedPaddingH) {\n return display.cachedPaddingH;\n }\n\n var e = removeChildrenAndAdd(display.measure, elt(\"pre\", \"x\", \"CodeMirror-line-like\"));\n var style = window.getComputedStyle ? window.getComputedStyle(e) : e.currentStyle;\n var data = {\n left: parseInt(style.paddingLeft),\n right: parseInt(style.paddingRight)\n };\n\n if (!isNaN(data.left) && !isNaN(data.right)) {\n display.cachedPaddingH = data;\n }\n\n return data;\n }\n\n function scrollGap(cm) {\n return scrollerGap - cm.display.nativeBarWidth;\n }\n\n function displayWidth(cm) {\n return cm.display.scroller.clientWidth - scrollGap(cm) - cm.display.barWidth;\n }\n\n function displayHeight(cm) {\n return cm.display.scroller.clientHeight - scrollGap(cm) - cm.display.barHeight;\n } // Ensure the lineView.wrapping.heights array is populated. This is\n // an array of bottom offsets for the lines that make up a drawn\n // line. When lineWrapping is on, there might be more than one\n // height.\n\n\n function ensureLineHeights(cm, lineView, rect) {\n var wrapping = cm.options.lineWrapping;\n var curWidth = wrapping && displayWidth(cm);\n\n if (!lineView.measure.heights || wrapping && lineView.measure.width != curWidth) {\n var heights = lineView.measure.heights = [];\n\n if (wrapping) {\n lineView.measure.width = curWidth;\n var rects = lineView.text.firstChild.getClientRects();\n\n for (var i = 0; i < rects.length - 1; i++) {\n var cur = rects[i],\n next = rects[i + 1];\n\n if (Math.abs(cur.bottom - next.bottom) > 2) {\n heights.push((cur.bottom + next.top) / 2 - rect.top);\n }\n }\n }\n\n heights.push(rect.bottom - rect.top);\n }\n } // Find a line map (mapping character offsets to text nodes) and a\n // measurement cache for the given line number. (A line view might\n // contain multiple lines when collapsed ranges are present.)\n\n\n function mapFromLineView(lineView, line, lineN) {\n if (lineView.line == line) {\n return {\n map: lineView.measure.map,\n cache: lineView.measure.cache\n };\n }\n\n for (var i = 0; i < lineView.rest.length; i++) {\n if (lineView.rest[i] == line) {\n return {\n map: lineView.measure.maps[i],\n cache: lineView.measure.caches[i]\n };\n }\n }\n\n for (var i$1 = 0; i$1 < lineView.rest.length; i$1++) {\n if (lineNo(lineView.rest[i$1]) > lineN) {\n return {\n map: lineView.measure.maps[i$1],\n cache: lineView.measure.caches[i$1],\n before: true\n };\n }\n }\n } // Render a line into the hidden node display.externalMeasured. Used\n // when measurement is needed for a line that's not in the viewport.\n\n\n function updateExternalMeasurement(cm, line) {\n line = visualLine(line);\n var lineN = lineNo(line);\n var view = cm.display.externalMeasured = new LineView(cm.doc, line, lineN);\n view.lineN = lineN;\n var built = view.built = buildLineContent(cm, view);\n view.text = built.pre;\n removeChildrenAndAdd(cm.display.lineMeasure, built.pre);\n return view;\n } // Get a {top, bottom, left, right} box (in line-local coordinates)\n // for a given character.\n\n\n function measureChar(cm, line, ch, bias) {\n return measureCharPrepared(cm, prepareMeasureForLine(cm, line), ch, bias);\n } // Find a line view that corresponds to the given line number.\n\n\n function findViewForLine(cm, lineN) {\n if (lineN >= cm.display.viewFrom && lineN < cm.display.viewTo) {\n return cm.display.view[findViewIndex(cm, lineN)];\n }\n\n var ext = cm.display.externalMeasured;\n\n if (ext && lineN >= ext.lineN && lineN < ext.lineN + ext.size) {\n return ext;\n }\n } // Measurement can be split in two steps, the set-up work that\n // applies to the whole line, and the measurement of the actual\n // character. Functions like coordsChar, that need to do a lot of\n // measurements in a row, can thus ensure that the set-up work is\n // only done once.\n\n\n function prepareMeasureForLine(cm, line) {\n var lineN = lineNo(line);\n var view = findViewForLine(cm, lineN);\n\n if (view && !view.text) {\n view = null;\n } else if (view && view.changes) {\n updateLineForChanges(cm, view, lineN, getDimensions(cm));\n cm.curOp.forceUpdate = true;\n }\n\n if (!view) {\n view = updateExternalMeasurement(cm, line);\n }\n\n var info = mapFromLineView(view, line, lineN);\n return {\n line: line,\n view: view,\n rect: null,\n map: info.map,\n cache: info.cache,\n before: info.before,\n hasHeights: false\n };\n } // Given a prepared measurement object, measures the position of an\n // actual character (or fetches it from the cache).\n\n\n function measureCharPrepared(cm, prepared, ch, bias, varHeight) {\n if (prepared.before) {\n ch = -1;\n }\n\n var key = ch + (bias || \"\"),\n found;\n\n if (prepared.cache.hasOwnProperty(key)) {\n found = prepared.cache[key];\n } else {\n if (!prepared.rect) {\n prepared.rect = prepared.view.text.getBoundingClientRect();\n }\n\n if (!prepared.hasHeights) {\n ensureLineHeights(cm, prepared.view, prepared.rect);\n prepared.hasHeights = true;\n }\n\n found = measureCharInner(cm, prepared, ch, bias);\n\n if (!found.bogus) {\n prepared.cache[key] = found;\n }\n }\n\n return {\n left: found.left,\n right: found.right,\n top: varHeight ? found.rtop : found.top,\n bottom: varHeight ? found.rbottom : found.bottom\n };\n }\n\n var nullRect = {\n left: 0,\n right: 0,\n top: 0,\n bottom: 0\n };\n\n function nodeAndOffsetInLineMap(map, ch, bias) {\n var node, start, end, collapse, mStart, mEnd; // First, search the line map for the text node corresponding to,\n // or closest to, the target character.\n\n for (var i = 0; i < map.length; i += 3) {\n mStart = map[i];\n mEnd = map[i + 1];\n\n if (ch < mStart) {\n start = 0;\n end = 1;\n collapse = \"left\";\n } else if (ch < mEnd) {\n start = ch - mStart;\n end = start + 1;\n } else if (i == map.length - 3 || ch == mEnd && map[i + 3] > ch) {\n end = mEnd - mStart;\n start = end - 1;\n\n if (ch >= mEnd) {\n collapse = \"right\";\n }\n }\n\n if (start != null) {\n node = map[i + 2];\n\n if (mStart == mEnd && bias == (node.insertLeft ? \"left\" : \"right\")) {\n collapse = bias;\n }\n\n if (bias == \"left\" && start == 0) {\n while (i && map[i - 2] == map[i - 3] && map[i - 1].insertLeft) {\n node = map[(i -= 3) + 2];\n collapse = \"left\";\n }\n }\n\n if (bias == \"right\" && start == mEnd - mStart) {\n while (i < map.length - 3 && map[i + 3] == map[i + 4] && !map[i + 5].insertLeft) {\n node = map[(i += 3) + 2];\n collapse = \"right\";\n }\n }\n\n break;\n }\n }\n\n return {\n node: node,\n start: start,\n end: end,\n collapse: collapse,\n coverStart: mStart,\n coverEnd: mEnd\n };\n }\n\n function getUsefulRect(rects, bias) {\n var rect = nullRect;\n\n if (bias == \"left\") {\n for (var i = 0; i < rects.length; i++) {\n if ((rect = rects[i]).left != rect.right) {\n break;\n }\n }\n } else {\n for (var i$1 = rects.length - 1; i$1 >= 0; i$1--) {\n if ((rect = rects[i$1]).left != rect.right) {\n break;\n }\n }\n }\n\n return rect;\n }\n\n function measureCharInner(cm, prepared, ch, bias) {\n var place = nodeAndOffsetInLineMap(prepared.map, ch, bias);\n var node = place.node,\n start = place.start,\n end = place.end,\n collapse = place.collapse;\n var rect;\n\n if (node.nodeType == 3) {\n // If it is a text node, use a range to retrieve the coordinates.\n for (var i$1 = 0; i$1 < 4; i$1++) {\n // Retry a maximum of 4 times when nonsense rectangles are returned\n while (start && isExtendingChar(prepared.line.text.charAt(place.coverStart + start))) {\n --start;\n }\n\n while (place.coverStart + end < place.coverEnd && isExtendingChar(prepared.line.text.charAt(place.coverStart + end))) {\n ++end;\n }\n\n if (ie && ie_version < 9 && start == 0 && end == place.coverEnd - place.coverStart) {\n rect = node.parentNode.getBoundingClientRect();\n } else {\n rect = getUsefulRect(range(node, start, end).getClientRects(), bias);\n }\n\n if (rect.left || rect.right || start == 0) {\n break;\n }\n\n end = start;\n start = start - 1;\n collapse = \"right\";\n }\n\n if (ie && ie_version < 11) {\n rect = maybeUpdateRectForZooming(cm.display.measure, rect);\n }\n } else {\n // If it is a widget, simply get the box for the whole widget.\n if (start > 0) {\n collapse = bias = \"right\";\n }\n\n var rects;\n\n if (cm.options.lineWrapping && (rects = node.getClientRects()).length > 1) {\n rect = rects[bias == \"right\" ? rects.length - 1 : 0];\n } else {\n rect = node.getBoundingClientRect();\n }\n }\n\n if (ie && ie_version < 9 && !start && (!rect || !rect.left && !rect.right)) {\n var rSpan = node.parentNode.getClientRects()[0];\n\n if (rSpan) {\n rect = {\n left: rSpan.left,\n right: rSpan.left + charWidth(cm.display),\n top: rSpan.top,\n bottom: rSpan.bottom\n };\n } else {\n rect = nullRect;\n }\n }\n\n var rtop = rect.top - prepared.rect.top,\n rbot = rect.bottom - prepared.rect.top;\n var mid = (rtop + rbot) / 2;\n var heights = prepared.view.measure.heights;\n var i = 0;\n\n for (; i < heights.length - 1; i++) {\n if (mid < heights[i]) {\n break;\n }\n }\n\n var top = i ? heights[i - 1] : 0,\n bot = heights[i];\n var result = {\n left: (collapse == \"right\" ? rect.right : rect.left) - prepared.rect.left,\n right: (collapse == \"left\" ? rect.left : rect.right) - prepared.rect.left,\n top: top,\n bottom: bot\n };\n\n if (!rect.left && !rect.right) {\n result.bogus = true;\n }\n\n if (!cm.options.singleCursorHeightPerLine) {\n result.rtop = rtop;\n result.rbottom = rbot;\n }\n\n return result;\n } // Work around problem with bounding client rects on ranges being\n // returned incorrectly when zoomed on IE10 and below.\n\n\n function maybeUpdateRectForZooming(measure, rect) {\n if (!window.screen || screen.logicalXDPI == null || screen.logicalXDPI == screen.deviceXDPI || !hasBadZoomedRects(measure)) {\n return rect;\n }\n\n var scaleX = screen.logicalXDPI / screen.deviceXDPI;\n var scaleY = screen.logicalYDPI / screen.deviceYDPI;\n return {\n left: rect.left * scaleX,\n right: rect.right * scaleX,\n top: rect.top * scaleY,\n bottom: rect.bottom * scaleY\n };\n }\n\n function clearLineMeasurementCacheFor(lineView) {\n if (lineView.measure) {\n lineView.measure.cache = {};\n lineView.measure.heights = null;\n\n if (lineView.rest) {\n for (var i = 0; i < lineView.rest.length; i++) {\n lineView.measure.caches[i] = {};\n }\n }\n }\n }\n\n function clearLineMeasurementCache(cm) {\n cm.display.externalMeasure = null;\n removeChildren(cm.display.lineMeasure);\n\n for (var i = 0; i < cm.display.view.length; i++) {\n clearLineMeasurementCacheFor(cm.display.view[i]);\n }\n }\n\n function clearCaches(cm) {\n clearLineMeasurementCache(cm);\n cm.display.cachedCharWidth = cm.display.cachedTextHeight = cm.display.cachedPaddingH = null;\n\n if (!cm.options.lineWrapping) {\n cm.display.maxLineChanged = true;\n }\n\n cm.display.lineNumChars = null;\n }\n\n function pageScrollX() {\n // Work around https://bugs.chromium.org/p/chromium/issues/detail?id=489206\n // which causes page_Offset and bounding client rects to use\n // different reference viewports and invalidate our calculations.\n if (chrome && android) {\n return -(document.body.getBoundingClientRect().left - parseInt(getComputedStyle(document.body).marginLeft));\n }\n\n return window.pageXOffset || (document.documentElement || document.body).scrollLeft;\n }\n\n function pageScrollY() {\n if (chrome && android) {\n return -(document.body.getBoundingClientRect().top - parseInt(getComputedStyle(document.body).marginTop));\n }\n\n return window.pageYOffset || (document.documentElement || document.body).scrollTop;\n }\n\n function widgetTopHeight(lineObj) {\n var height = 0;\n\n if (lineObj.widgets) {\n for (var i = 0; i < lineObj.widgets.length; ++i) {\n if (lineObj.widgets[i].above) {\n height += widgetHeight(lineObj.widgets[i]);\n }\n }\n }\n\n return height;\n } // Converts a {top, bottom, left, right} box from line-local\n // coordinates into another coordinate system. Context may be one of\n // \"line\", \"div\" (display.lineDiv), \"local\"./null (editor), \"window\",\n // or \"page\".\n\n\n function intoCoordSystem(cm, lineObj, rect, context, includeWidgets) {\n if (!includeWidgets) {\n var height = widgetTopHeight(lineObj);\n rect.top += height;\n rect.bottom += height;\n }\n\n if (context == \"line\") {\n return rect;\n }\n\n if (!context) {\n context = \"local\";\n }\n\n var yOff = _heightAtLine(lineObj);\n\n if (context == \"local\") {\n yOff += paddingTop(cm.display);\n } else {\n yOff -= cm.display.viewOffset;\n }\n\n if (context == \"page\" || context == \"window\") {\n var lOff = cm.display.lineSpace.getBoundingClientRect();\n yOff += lOff.top + (context == \"window\" ? 0 : pageScrollY());\n var xOff = lOff.left + (context == \"window\" ? 0 : pageScrollX());\n rect.left += xOff;\n rect.right += xOff;\n }\n\n rect.top += yOff;\n rect.bottom += yOff;\n return rect;\n } // Coverts a box from \"div\" coords to another coordinate system.\n // Context may be \"window\", \"page\", \"div\", or \"local\"./null.\n\n\n function fromCoordSystem(cm, coords, context) {\n if (context == \"div\") {\n return coords;\n }\n\n var left = coords.left,\n top = coords.top; // First move into \"page\" coordinate system\n\n if (context == \"page\") {\n left -= pageScrollX();\n top -= pageScrollY();\n } else if (context == \"local\" || !context) {\n var localBox = cm.display.sizer.getBoundingClientRect();\n left += localBox.left;\n top += localBox.top;\n }\n\n var lineSpaceBox = cm.display.lineSpace.getBoundingClientRect();\n return {\n left: left - lineSpaceBox.left,\n top: top - lineSpaceBox.top\n };\n }\n\n function _charCoords(cm, pos, context, lineObj, bias) {\n if (!lineObj) {\n lineObj = getLine(cm.doc, pos.line);\n }\n\n return intoCoordSystem(cm, lineObj, measureChar(cm, lineObj, pos.ch, bias), context);\n } // Returns a box for a given cursor position, which may have an\n // 'other' property containing the position of the secondary cursor\n // on a bidi boundary.\n // A cursor Pos(line, char, \"before\") is on the same visual line as `char - 1`\n // and after `char - 1` in writing order of `char - 1`\n // A cursor Pos(line, char, \"after\") is on the same visual line as `char`\n // and before `char` in writing order of `char`\n // Examples (upper-case letters are RTL, lower-case are LTR):\n // Pos(0, 1, ...)\n // before after\n // ab a|b a|b\n // aB a|B aB|\n // Ab |Ab A|b\n // AB B|A B|A\n // Every position after the last character on a line is considered to stick\n // to the last character on the line.\n\n\n function _cursorCoords(cm, pos, context, lineObj, preparedMeasure, varHeight) {\n lineObj = lineObj || getLine(cm.doc, pos.line);\n\n if (!preparedMeasure) {\n preparedMeasure = prepareMeasureForLine(cm, lineObj);\n }\n\n function get(ch, right) {\n var m = measureCharPrepared(cm, preparedMeasure, ch, right ? \"right\" : \"left\", varHeight);\n\n if (right) {\n m.left = m.right;\n } else {\n m.right = m.left;\n }\n\n return intoCoordSystem(cm, lineObj, m, context);\n }\n\n var order = getOrder(lineObj, cm.doc.direction),\n ch = pos.ch,\n sticky = pos.sticky;\n\n if (ch >= lineObj.text.length) {\n ch = lineObj.text.length;\n sticky = \"before\";\n } else if (ch <= 0) {\n ch = 0;\n sticky = \"after\";\n }\n\n if (!order) {\n return get(sticky == \"before\" ? ch - 1 : ch, sticky == \"before\");\n }\n\n function getBidi(ch, partPos, invert) {\n var part = order[partPos],\n right = part.level == 1;\n return get(invert ? ch - 1 : ch, right != invert);\n }\n\n var partPos = getBidiPartAt(order, ch, sticky);\n var other = bidiOther;\n var val = getBidi(ch, partPos, sticky == \"before\");\n\n if (other != null) {\n val.other = getBidi(ch, other, sticky != \"before\");\n }\n\n return val;\n } // Used to cheaply estimate the coordinates for a position. Used for\n // intermediate scroll updates.\n\n\n function estimateCoords(cm, pos) {\n var left = 0;\n pos = _clipPos(cm.doc, pos);\n\n if (!cm.options.lineWrapping) {\n left = charWidth(cm.display) * pos.ch;\n }\n\n var lineObj = getLine(cm.doc, pos.line);\n var top = _heightAtLine(lineObj) + paddingTop(cm.display);\n return {\n left: left,\n right: left,\n top: top,\n bottom: top + lineObj.height\n };\n } // Positions returned by coordsChar contain some extra information.\n // xRel is the relative x position of the input coordinates compared\n // to the found position (so xRel > 0 means the coordinates are to\n // the right of the character position, for example). When outside\n // is true, that means the coordinates lie outside the line's\n // vertical range.\n\n\n function PosWithInfo(line, ch, sticky, outside, xRel) {\n var pos = Pos(line, ch, sticky);\n pos.xRel = xRel;\n\n if (outside) {\n pos.outside = outside;\n }\n\n return pos;\n } // Compute the character position closest to the given coordinates.\n // Input must be lineSpace-local (\"div\" coordinate system).\n\n\n function _coordsChar(cm, x, y) {\n var doc = cm.doc;\n y += cm.display.viewOffset;\n\n if (y < 0) {\n return PosWithInfo(doc.first, 0, null, -1, -1);\n }\n\n var lineN = _lineAtHeight(doc, y),\n last = doc.first + doc.size - 1;\n\n if (lineN > last) {\n return PosWithInfo(doc.first + doc.size - 1, getLine(doc, last).text.length, null, 1, 1);\n }\n\n if (x < 0) {\n x = 0;\n }\n\n var lineObj = getLine(doc, lineN);\n\n for (;;) {\n var found = coordsCharInner(cm, lineObj, lineN, x, y);\n var collapsed = collapsedSpanAround(lineObj, found.ch + (found.xRel > 0 || found.outside > 0 ? 1 : 0));\n\n if (!collapsed) {\n return found;\n }\n\n var rangeEnd = collapsed.find(1);\n\n if (rangeEnd.line == lineN) {\n return rangeEnd;\n }\n\n lineObj = getLine(doc, lineN = rangeEnd.line);\n }\n }\n\n function wrappedLineExtent(cm, lineObj, preparedMeasure, y) {\n y -= widgetTopHeight(lineObj);\n var end = lineObj.text.length;\n var begin = findFirst(function (ch) {\n return measureCharPrepared(cm, preparedMeasure, ch - 1).bottom <= y;\n }, end, 0);\n end = findFirst(function (ch) {\n return measureCharPrepared(cm, preparedMeasure, ch).top > y;\n }, begin, end);\n return {\n begin: begin,\n end: end\n };\n }\n\n function wrappedLineExtentChar(cm, lineObj, preparedMeasure, target) {\n if (!preparedMeasure) {\n preparedMeasure = prepareMeasureForLine(cm, lineObj);\n }\n\n var targetTop = intoCoordSystem(cm, lineObj, measureCharPrepared(cm, preparedMeasure, target), \"line\").top;\n return wrappedLineExtent(cm, lineObj, preparedMeasure, targetTop);\n } // Returns true if the given side of a box is after the given\n // coordinates, in top-to-bottom, left-to-right order.\n\n\n function boxIsAfter(box, x, y, left) {\n return box.bottom <= y ? false : box.top > y ? true : (left ? box.left : box.right) > x;\n }\n\n function coordsCharInner(cm, lineObj, lineNo, x, y) {\n // Move y into line-local coordinate space\n y -= _heightAtLine(lineObj);\n var preparedMeasure = prepareMeasureForLine(cm, lineObj); // When directly calling `measureCharPrepared`, we have to adjust\n // for the widgets at this line.\n\n var widgetHeight = widgetTopHeight(lineObj);\n var begin = 0,\n end = lineObj.text.length,\n ltr = true;\n var order = getOrder(lineObj, cm.doc.direction); // If the line isn't plain left-to-right text, first figure out\n // which bidi section the coordinates fall into.\n\n if (order) {\n var part = (cm.options.lineWrapping ? coordsBidiPartWrapped : coordsBidiPart)(cm, lineObj, lineNo, preparedMeasure, order, x, y);\n ltr = part.level != 1; // The awkward -1 offsets are needed because findFirst (called\n // on these below) will treat its first bound as inclusive,\n // second as exclusive, but we want to actually address the\n // characters in the part's range\n\n begin = ltr ? part.from : part.to - 1;\n end = ltr ? part.to : part.from - 1;\n } // A binary search to find the first character whose bounding box\n // starts after the coordinates. If we run across any whose box wrap\n // the coordinates, store that.\n\n\n var chAround = null,\n boxAround = null;\n var ch = findFirst(function (ch) {\n var box = measureCharPrepared(cm, preparedMeasure, ch);\n box.top += widgetHeight;\n box.bottom += widgetHeight;\n\n if (!boxIsAfter(box, x, y, false)) {\n return false;\n }\n\n if (box.top <= y && box.left <= x) {\n chAround = ch;\n boxAround = box;\n }\n\n return true;\n }, begin, end);\n var baseX,\n sticky,\n outside = false; // If a box around the coordinates was found, use that\n\n if (boxAround) {\n // Distinguish coordinates nearer to the left or right side of the box\n var atLeft = x - boxAround.left < boxAround.right - x,\n atStart = atLeft == ltr;\n ch = chAround + (atStart ? 0 : 1);\n sticky = atStart ? \"after\" : \"before\";\n baseX = atLeft ? boxAround.left : boxAround.right;\n } else {\n // (Adjust for extended bound, if necessary.)\n if (!ltr && (ch == end || ch == begin)) {\n ch++;\n } // To determine which side to associate with, get the box to the\n // left of the character and compare it's vertical position to the\n // coordinates\n\n\n sticky = ch == 0 ? \"after\" : ch == lineObj.text.length ? \"before\" : measureCharPrepared(cm, preparedMeasure, ch - (ltr ? 1 : 0)).bottom + widgetHeight <= y == ltr ? \"after\" : \"before\"; // Now get accurate coordinates for this place, in order to get a\n // base X position\n\n var coords = _cursorCoords(cm, Pos(lineNo, ch, sticky), \"line\", lineObj, preparedMeasure);\n\n baseX = coords.left;\n outside = y < coords.top ? -1 : y >= coords.bottom ? 1 : 0;\n }\n\n ch = skipExtendingChars(lineObj.text, ch, 1);\n return PosWithInfo(lineNo, ch, sticky, outside, x - baseX);\n }\n\n function coordsBidiPart(cm, lineObj, lineNo, preparedMeasure, order, x, y) {\n // Bidi parts are sorted left-to-right, and in a non-line-wrapping\n // situation, we can take this ordering to correspond to the visual\n // ordering. This finds the first part whose end is after the given\n // coordinates.\n var index = findFirst(function (i) {\n var part = order[i],\n ltr = part.level != 1;\n return boxIsAfter(_cursorCoords(cm, Pos(lineNo, ltr ? part.to : part.from, ltr ? \"before\" : \"after\"), \"line\", lineObj, preparedMeasure), x, y, true);\n }, 0, order.length - 1);\n var part = order[index]; // If this isn't the first part, the part's start is also after\n // the coordinates, and the coordinates aren't on the same line as\n // that start, move one part back.\n\n if (index > 0) {\n var ltr = part.level != 1;\n\n var start = _cursorCoords(cm, Pos(lineNo, ltr ? part.from : part.to, ltr ? \"after\" : \"before\"), \"line\", lineObj, preparedMeasure);\n\n if (boxIsAfter(start, x, y, true) && start.top > y) {\n part = order[index - 1];\n }\n }\n\n return part;\n }\n\n function coordsBidiPartWrapped(cm, lineObj, _lineNo, preparedMeasure, order, x, y) {\n // In a wrapped line, rtl text on wrapping boundaries can do things\n // that don't correspond to the ordering in our `order` array at\n // all, so a binary search doesn't work, and we want to return a\n // part that only spans one line so that the binary search in\n // coordsCharInner is safe. As such, we first find the extent of the\n // wrapped line, and then do a flat search in which we discard any\n // spans that aren't on the line.\n var ref = wrappedLineExtent(cm, lineObj, preparedMeasure, y);\n var begin = ref.begin;\n var end = ref.end;\n\n if (/\\s/.test(lineObj.text.charAt(end - 1))) {\n end--;\n }\n\n var part = null,\n closestDist = null;\n\n for (var i = 0; i < order.length; i++) {\n var p = order[i];\n\n if (p.from >= end || p.to <= begin) {\n continue;\n }\n\n var ltr = p.level != 1;\n var endX = measureCharPrepared(cm, preparedMeasure, ltr ? Math.min(end, p.to) - 1 : Math.max(begin, p.from)).right; // Weigh against spans ending before this, so that they are only\n // picked if nothing ends after\n\n var dist = endX < x ? x - endX + 1e9 : endX - x;\n\n if (!part || closestDist > dist) {\n part = p;\n closestDist = dist;\n }\n }\n\n if (!part) {\n part = order[order.length - 1];\n } // Clip the part to the wrapped line.\n\n\n if (part.from < begin) {\n part = {\n from: begin,\n to: part.to,\n level: part.level\n };\n }\n\n if (part.to > end) {\n part = {\n from: part.from,\n to: end,\n level: part.level\n };\n }\n\n return part;\n }\n\n var measureText; // Compute the default text height.\n\n function textHeight(display) {\n if (display.cachedTextHeight != null) {\n return display.cachedTextHeight;\n }\n\n if (measureText == null) {\n measureText = elt(\"pre\", null, \"CodeMirror-line-like\"); // Measure a bunch of lines, for browsers that compute\n // fractional heights.\n\n for (var i = 0; i < 49; ++i) {\n measureText.appendChild(document.createTextNode(\"x\"));\n measureText.appendChild(elt(\"br\"));\n }\n\n measureText.appendChild(document.createTextNode(\"x\"));\n }\n\n removeChildrenAndAdd(display.measure, measureText);\n var height = measureText.offsetHeight / 50;\n\n if (height > 3) {\n display.cachedTextHeight = height;\n }\n\n removeChildren(display.measure);\n return height || 1;\n } // Compute the default character width.\n\n\n function charWidth(display) {\n if (display.cachedCharWidth != null) {\n return display.cachedCharWidth;\n }\n\n var anchor = elt(\"span\", \"xxxxxxxxxx\");\n var pre = elt(\"pre\", [anchor], \"CodeMirror-line-like\");\n removeChildrenAndAdd(display.measure, pre);\n var rect = anchor.getBoundingClientRect(),\n width = (rect.right - rect.left) / 10;\n\n if (width > 2) {\n display.cachedCharWidth = width;\n }\n\n return width || 10;\n } // Do a bulk-read of the DOM positions and sizes needed to draw the\n // view, so that we don't interleave reading and writing to the DOM.\n\n\n function getDimensions(cm) {\n var d = cm.display,\n left = {},\n width = {};\n var gutterLeft = d.gutters.clientLeft;\n\n for (var n = d.gutters.firstChild, i = 0; n; n = n.nextSibling, ++i) {\n var id = cm.display.gutterSpecs[i].className;\n left[id] = n.offsetLeft + n.clientLeft + gutterLeft;\n width[id] = n.clientWidth;\n }\n\n return {\n fixedPos: compensateForHScroll(d),\n gutterTotalWidth: d.gutters.offsetWidth,\n gutterLeft: left,\n gutterWidth: width,\n wrapperWidth: d.wrapper.clientWidth\n };\n } // Computes display.scroller.scrollLeft + display.gutters.offsetWidth,\n // but using getBoundingClientRect to get a sub-pixel-accurate\n // result.\n\n\n function compensateForHScroll(display) {\n return display.scroller.getBoundingClientRect().left - display.sizer.getBoundingClientRect().left;\n } // Returns a function that estimates the height of a line, to use as\n // first approximation until the line becomes visible (and is thus\n // properly measurable).\n\n\n function estimateHeight(cm) {\n var th = textHeight(cm.display),\n wrapping = cm.options.lineWrapping;\n var perLine = wrapping && Math.max(5, cm.display.scroller.clientWidth / charWidth(cm.display) - 3);\n return function (line) {\n if (lineIsHidden(cm.doc, line)) {\n return 0;\n }\n\n var widgetsHeight = 0;\n\n if (line.widgets) {\n for (var i = 0; i < line.widgets.length; i++) {\n if (line.widgets[i].height) {\n widgetsHeight += line.widgets[i].height;\n }\n }\n }\n\n if (wrapping) {\n return widgetsHeight + (Math.ceil(line.text.length / perLine) || 1) * th;\n } else {\n return widgetsHeight + th;\n }\n };\n }\n\n function estimateLineHeights(cm) {\n var doc = cm.doc,\n est = estimateHeight(cm);\n doc.iter(function (line) {\n var estHeight = est(line);\n\n if (estHeight != line.height) {\n updateLineHeight(line, estHeight);\n }\n });\n } // Given a mouse event, find the corresponding position. If liberal\n // is false, it checks whether a gutter or scrollbar was clicked,\n // and returns null if it was. forRect is used by rectangular\n // selections, and tries to estimate a character position even for\n // coordinates beyond the right of the text.\n\n\n function posFromMouse(cm, e, liberal, forRect) {\n var display = cm.display;\n\n if (!liberal && e_target(e).getAttribute(\"cm-not-content\") == \"true\") {\n return null;\n }\n\n var x,\n y,\n space = display.lineSpace.getBoundingClientRect(); // Fails unpredictably on IE[67] when mouse is dragged around quickly.\n\n try {\n x = e.clientX - space.left;\n y = e.clientY - space.top;\n } catch (e) {\n return null;\n }\n\n var coords = _coordsChar(cm, x, y),\n line;\n\n if (forRect && coords.xRel > 0 && (line = getLine(cm.doc, coords.line).text).length == coords.ch) {\n var colDiff = countColumn(line, line.length, cm.options.tabSize) - line.length;\n coords = Pos(coords.line, Math.max(0, Math.round((x - paddingH(cm.display).left) / charWidth(cm.display)) - colDiff));\n }\n\n return coords;\n } // Find the view element corresponding to a given line. Return null\n // when the line isn't visible.\n\n\n function findViewIndex(cm, n) {\n if (n >= cm.display.viewTo) {\n return null;\n }\n\n n -= cm.display.viewFrom;\n\n if (n < 0) {\n return null;\n }\n\n var view = cm.display.view;\n\n for (var i = 0; i < view.length; i++) {\n n -= view[i].size;\n\n if (n < 0) {\n return i;\n }\n }\n } // Updates the display.view data structure for a given change to the\n // document. From and to are in pre-change coordinates. Lendiff is\n // the amount of lines added or subtracted by the change. This is\n // used for changes that span multiple lines, or change the way\n // lines are divided into visual lines. regLineChange (below)\n // registers single-line changes.\n\n\n function regChange(cm, from, to, lendiff) {\n if (from == null) {\n from = cm.doc.first;\n }\n\n if (to == null) {\n to = cm.doc.first + cm.doc.size;\n }\n\n if (!lendiff) {\n lendiff = 0;\n }\n\n var display = cm.display;\n\n if (lendiff && to < display.viewTo && (display.updateLineNumbers == null || display.updateLineNumbers > from)) {\n display.updateLineNumbers = from;\n }\n\n cm.curOp.viewChanged = true;\n\n if (from >= display.viewTo) {\n // Change after\n if (sawCollapsedSpans && visualLineNo(cm.doc, from) < display.viewTo) {\n resetView(cm);\n }\n } else if (to <= display.viewFrom) {\n // Change before\n if (sawCollapsedSpans && visualLineEndNo(cm.doc, to + lendiff) > display.viewFrom) {\n resetView(cm);\n } else {\n display.viewFrom += lendiff;\n display.viewTo += lendiff;\n }\n } else if (from <= display.viewFrom && to >= display.viewTo) {\n // Full overlap\n resetView(cm);\n } else if (from <= display.viewFrom) {\n // Top overlap\n var cut = viewCuttingPoint(cm, to, to + lendiff, 1);\n\n if (cut) {\n display.view = display.view.slice(cut.index);\n display.viewFrom = cut.lineN;\n display.viewTo += lendiff;\n } else {\n resetView(cm);\n }\n } else if (to >= display.viewTo) {\n // Bottom overlap\n var cut$1 = viewCuttingPoint(cm, from, from, -1);\n\n if (cut$1) {\n display.view = display.view.slice(0, cut$1.index);\n display.viewTo = cut$1.lineN;\n } else {\n resetView(cm);\n }\n } else {\n // Gap in the middle\n var cutTop = viewCuttingPoint(cm, from, from, -1);\n var cutBot = viewCuttingPoint(cm, to, to + lendiff, 1);\n\n if (cutTop && cutBot) {\n display.view = display.view.slice(0, cutTop.index).concat(buildViewArray(cm, cutTop.lineN, cutBot.lineN)).concat(display.view.slice(cutBot.index));\n display.viewTo += lendiff;\n } else {\n resetView(cm);\n }\n }\n\n var ext = display.externalMeasured;\n\n if (ext) {\n if (to < ext.lineN) {\n ext.lineN += lendiff;\n } else if (from < ext.lineN + ext.size) {\n display.externalMeasured = null;\n }\n }\n } // Register a change to a single line. Type must be one of \"text\",\n // \"gutter\", \"class\", \"widget\"\n\n\n function regLineChange(cm, line, type) {\n cm.curOp.viewChanged = true;\n var display = cm.display,\n ext = cm.display.externalMeasured;\n\n if (ext && line >= ext.lineN && line < ext.lineN + ext.size) {\n display.externalMeasured = null;\n }\n\n if (line < display.viewFrom || line >= display.viewTo) {\n return;\n }\n\n var lineView = display.view[findViewIndex(cm, line)];\n\n if (lineView.node == null) {\n return;\n }\n\n var arr = lineView.changes || (lineView.changes = []);\n\n if (indexOf(arr, type) == -1) {\n arr.push(type);\n }\n } // Clear the view.\n\n\n function resetView(cm) {\n cm.display.viewFrom = cm.display.viewTo = cm.doc.first;\n cm.display.view = [];\n cm.display.viewOffset = 0;\n }\n\n function viewCuttingPoint(cm, oldN, newN, dir) {\n var index = findViewIndex(cm, oldN),\n diff,\n view = cm.display.view;\n\n if (!sawCollapsedSpans || newN == cm.doc.first + cm.doc.size) {\n return {\n index: index,\n lineN: newN\n };\n }\n\n var n = cm.display.viewFrom;\n\n for (var i = 0; i < index; i++) {\n n += view[i].size;\n }\n\n if (n != oldN) {\n if (dir > 0) {\n if (index == view.length - 1) {\n return null;\n }\n\n diff = n + view[index].size - oldN;\n index++;\n } else {\n diff = n - oldN;\n }\n\n oldN += diff;\n newN += diff;\n }\n\n while (visualLineNo(cm.doc, newN) != newN) {\n if (index == (dir < 0 ? 0 : view.length - 1)) {\n return null;\n }\n\n newN += dir * view[index - (dir < 0 ? 1 : 0)].size;\n index += dir;\n }\n\n return {\n index: index,\n lineN: newN\n };\n } // Force the view to cover a given range, adding empty view element\n // or clipping off existing ones as needed.\n\n\n function adjustView(cm, from, to) {\n var display = cm.display,\n view = display.view;\n\n if (view.length == 0 || from >= display.viewTo || to <= display.viewFrom) {\n display.view = buildViewArray(cm, from, to);\n display.viewFrom = from;\n } else {\n if (display.viewFrom > from) {\n display.view = buildViewArray(cm, from, display.viewFrom).concat(display.view);\n } else if (display.viewFrom < from) {\n display.view = display.view.slice(findViewIndex(cm, from));\n }\n\n display.viewFrom = from;\n\n if (display.viewTo < to) {\n display.view = display.view.concat(buildViewArray(cm, display.viewTo, to));\n } else if (display.viewTo > to) {\n display.view = display.view.slice(0, findViewIndex(cm, to));\n }\n }\n\n display.viewTo = to;\n } // Count the number of lines in the view whose DOM representation is\n // out of date (or nonexistent).\n\n\n function countDirtyView(cm) {\n var view = cm.display.view,\n dirty = 0;\n\n for (var i = 0; i < view.length; i++) {\n var lineView = view[i];\n\n if (!lineView.hidden && (!lineView.node || lineView.changes)) {\n ++dirty;\n }\n }\n\n return dirty;\n }\n\n function updateSelection(cm) {\n cm.display.input.showSelection(cm.display.input.prepareSelection());\n }\n\n function prepareSelection(cm, primary) {\n if (primary === void 0) primary = true;\n var doc = cm.doc,\n result = {};\n var curFragment = result.cursors = document.createDocumentFragment();\n var selFragment = result.selection = document.createDocumentFragment();\n\n for (var i = 0; i < doc.sel.ranges.length; i++) {\n if (!primary && i == doc.sel.primIndex) {\n continue;\n }\n\n var range = doc.sel.ranges[i];\n\n if (range.from().line >= cm.display.viewTo || range.to().line < cm.display.viewFrom) {\n continue;\n }\n\n var collapsed = range.empty();\n\n if (collapsed || cm.options.showCursorWhenSelecting) {\n drawSelectionCursor(cm, range.head, curFragment);\n }\n\n if (!collapsed) {\n drawSelectionRange(cm, range, selFragment);\n }\n }\n\n return result;\n } // Draws a cursor for the given range\n\n\n function drawSelectionCursor(cm, head, output) {\n var pos = _cursorCoords(cm, head, \"div\", null, null, !cm.options.singleCursorHeightPerLine);\n\n var cursor = output.appendChild(elt(\"div\", \"\\xA0\", \"CodeMirror-cursor\"));\n cursor.style.left = pos.left + \"px\";\n cursor.style.top = pos.top + \"px\";\n cursor.style.height = Math.max(0, pos.bottom - pos.top) * cm.options.cursorHeight + \"px\";\n\n if (pos.other) {\n // Secondary cursor, shown when on a 'jump' in bi-directional text\n var otherCursor = output.appendChild(elt(\"div\", \"\\xA0\", \"CodeMirror-cursor CodeMirror-secondarycursor\"));\n otherCursor.style.display = \"\";\n otherCursor.style.left = pos.other.left + \"px\";\n otherCursor.style.top = pos.other.top + \"px\";\n otherCursor.style.height = (pos.other.bottom - pos.other.top) * .85 + \"px\";\n }\n }\n\n function cmpCoords(a, b) {\n return a.top - b.top || a.left - b.left;\n } // Draws the given range as a highlighted selection\n\n\n function drawSelectionRange(cm, range, output) {\n var display = cm.display,\n doc = cm.doc;\n var fragment = document.createDocumentFragment();\n var padding = paddingH(cm.display),\n leftSide = padding.left;\n var rightSide = Math.max(display.sizerWidth, displayWidth(cm) - display.sizer.offsetLeft) - padding.right;\n var docLTR = doc.direction == \"ltr\";\n\n function add(left, top, width, bottom) {\n if (top < 0) {\n top = 0;\n }\n\n top = Math.round(top);\n bottom = Math.round(bottom);\n fragment.appendChild(elt(\"div\", null, \"CodeMirror-selected\", \"position: absolute; left: \" + left + \"px;\\n top: \" + top + \"px; width: \" + (width == null ? rightSide - left : width) + \"px;\\n height: \" + (bottom - top) + \"px\"));\n }\n\n function drawForLine(line, fromArg, toArg) {\n var lineObj = getLine(doc, line);\n var lineLen = lineObj.text.length;\n var start, end;\n\n function coords(ch, bias) {\n return _charCoords(cm, Pos(line, ch), \"div\", lineObj, bias);\n }\n\n function wrapX(pos, dir, side) {\n var extent = wrappedLineExtentChar(cm, lineObj, null, pos);\n var prop = dir == \"ltr\" == (side == \"after\") ? \"left\" : \"right\";\n var ch = side == \"after\" ? extent.begin : extent.end - (/\\s/.test(lineObj.text.charAt(extent.end - 1)) ? 2 : 1);\n return coords(ch, prop)[prop];\n }\n\n var order = getOrder(lineObj, doc.direction);\n iterateBidiSections(order, fromArg || 0, toArg == null ? lineLen : toArg, function (from, to, dir, i) {\n var ltr = dir == \"ltr\";\n var fromPos = coords(from, ltr ? \"left\" : \"right\");\n var toPos = coords(to - 1, ltr ? \"right\" : \"left\");\n var openStart = fromArg == null && from == 0,\n openEnd = toArg == null && to == lineLen;\n var first = i == 0,\n last = !order || i == order.length - 1;\n\n if (toPos.top - fromPos.top <= 3) {\n // Single line\n var openLeft = (docLTR ? openStart : openEnd) && first;\n var openRight = (docLTR ? openEnd : openStart) && last;\n var left = openLeft ? leftSide : (ltr ? fromPos : toPos).left;\n var right = openRight ? rightSide : (ltr ? toPos : fromPos).right;\n add(left, fromPos.top, right - left, fromPos.bottom);\n } else {\n // Multiple lines\n var topLeft, topRight, botLeft, botRight;\n\n if (ltr) {\n topLeft = docLTR && openStart && first ? leftSide : fromPos.left;\n topRight = docLTR ? rightSide : wrapX(from, dir, \"before\");\n botLeft = docLTR ? leftSide : wrapX(to, dir, \"after\");\n botRight = docLTR && openEnd && last ? rightSide : toPos.right;\n } else {\n topLeft = !docLTR ? leftSide : wrapX(from, dir, \"before\");\n topRight = !docLTR && openStart && first ? rightSide : fromPos.right;\n botLeft = !docLTR && openEnd && last ? leftSide : toPos.left;\n botRight = !docLTR ? rightSide : wrapX(to, dir, \"after\");\n }\n\n add(topLeft, fromPos.top, topRight - topLeft, fromPos.bottom);\n\n if (fromPos.bottom < toPos.top) {\n add(leftSide, fromPos.bottom, null, toPos.top);\n }\n\n add(botLeft, toPos.top, botRight - botLeft, toPos.bottom);\n }\n\n if (!start || cmpCoords(fromPos, start) < 0) {\n start = fromPos;\n }\n\n if (cmpCoords(toPos, start) < 0) {\n start = toPos;\n }\n\n if (!end || cmpCoords(fromPos, end) < 0) {\n end = fromPos;\n }\n\n if (cmpCoords(toPos, end) < 0) {\n end = toPos;\n }\n });\n return {\n start: start,\n end: end\n };\n }\n\n var sFrom = range.from(),\n sTo = range.to();\n\n if (sFrom.line == sTo.line) {\n drawForLine(sFrom.line, sFrom.ch, sTo.ch);\n } else {\n var fromLine = getLine(doc, sFrom.line),\n toLine = getLine(doc, sTo.line);\n var singleVLine = visualLine(fromLine) == visualLine(toLine);\n var leftEnd = drawForLine(sFrom.line, sFrom.ch, singleVLine ? fromLine.text.length + 1 : null).end;\n var rightStart = drawForLine(sTo.line, singleVLine ? 0 : null, sTo.ch).start;\n\n if (singleVLine) {\n if (leftEnd.top < rightStart.top - 2) {\n add(leftEnd.right, leftEnd.top, null, leftEnd.bottom);\n add(leftSide, rightStart.top, rightStart.left, rightStart.bottom);\n } else {\n add(leftEnd.right, leftEnd.top, rightStart.left - leftEnd.right, leftEnd.bottom);\n }\n }\n\n if (leftEnd.bottom < rightStart.top) {\n add(leftSide, leftEnd.bottom, null, rightStart.top);\n }\n }\n\n output.appendChild(fragment);\n } // Cursor-blinking\n\n\n function restartBlink(cm) {\n if (!cm.state.focused) {\n return;\n }\n\n var display = cm.display;\n clearInterval(display.blinker);\n var on = true;\n display.cursorDiv.style.visibility = \"\";\n\n if (cm.options.cursorBlinkRate > 0) {\n display.blinker = setInterval(function () {\n return display.cursorDiv.style.visibility = (on = !on) ? \"\" : \"hidden\";\n }, cm.options.cursorBlinkRate);\n } else if (cm.options.cursorBlinkRate < 0) {\n display.cursorDiv.style.visibility = \"hidden\";\n }\n }\n\n function ensureFocus(cm) {\n if (!cm.state.focused) {\n cm.display.input.focus();\n onFocus(cm);\n }\n }\n\n function delayBlurEvent(cm) {\n cm.state.delayingBlurEvent = true;\n setTimeout(function () {\n if (cm.state.delayingBlurEvent) {\n cm.state.delayingBlurEvent = false;\n onBlur(cm);\n }\n }, 100);\n }\n\n function onFocus(cm, e) {\n if (cm.state.delayingBlurEvent) {\n cm.state.delayingBlurEvent = false;\n }\n\n if (cm.options.readOnly == \"nocursor\") {\n return;\n }\n\n if (!cm.state.focused) {\n signal(cm, \"focus\", cm, e);\n cm.state.focused = true;\n addClass(cm.display.wrapper, \"CodeMirror-focused\"); // This test prevents this from firing when a context\n // menu is closed (since the input reset would kill the\n // select-all detection hack)\n\n if (!cm.curOp && cm.display.selForContextMenu != cm.doc.sel) {\n cm.display.input.reset();\n\n if (webkit) {\n setTimeout(function () {\n return cm.display.input.reset(true);\n }, 20);\n } // Issue #1730\n\n }\n\n cm.display.input.receivedFocus();\n }\n\n restartBlink(cm);\n }\n\n function onBlur(cm, e) {\n if (cm.state.delayingBlurEvent) {\n return;\n }\n\n if (cm.state.focused) {\n signal(cm, \"blur\", cm, e);\n cm.state.focused = false;\n rmClass(cm.display.wrapper, \"CodeMirror-focused\");\n }\n\n clearInterval(cm.display.blinker);\n setTimeout(function () {\n if (!cm.state.focused) {\n cm.display.shift = false;\n }\n }, 150);\n } // Read the actual heights of the rendered lines, and update their\n // stored heights to match.\n\n\n function updateHeightsInViewport(cm) {\n var display = cm.display;\n var prevBottom = display.lineDiv.offsetTop;\n\n for (var i = 0; i < display.view.length; i++) {\n var cur = display.view[i],\n wrapping = cm.options.lineWrapping;\n var height = void 0,\n width = 0;\n\n if (cur.hidden) {\n continue;\n }\n\n if (ie && ie_version < 8) {\n var bot = cur.node.offsetTop + cur.node.offsetHeight;\n height = bot - prevBottom;\n prevBottom = bot;\n } else {\n var box = cur.node.getBoundingClientRect();\n height = box.bottom - box.top; // Check that lines don't extend past the right of the current\n // editor width\n\n if (!wrapping && cur.text.firstChild) {\n width = cur.text.firstChild.getBoundingClientRect().right - box.left - 1;\n }\n }\n\n var diff = cur.line.height - height;\n\n if (diff > .005 || diff < -.005) {\n updateLineHeight(cur.line, height);\n updateWidgetHeight(cur.line);\n\n if (cur.rest) {\n for (var j = 0; j < cur.rest.length; j++) {\n updateWidgetHeight(cur.rest[j]);\n }\n }\n }\n\n if (width > cm.display.sizerWidth) {\n var chWidth = Math.ceil(width / charWidth(cm.display));\n\n if (chWidth > cm.display.maxLineLength) {\n cm.display.maxLineLength = chWidth;\n cm.display.maxLine = cur.line;\n cm.display.maxLineChanged = true;\n }\n }\n }\n } // Read and store the height of line widgets associated with the\n // given line.\n\n\n function updateWidgetHeight(line) {\n if (line.widgets) {\n for (var i = 0; i < line.widgets.length; ++i) {\n var w = line.widgets[i],\n parent = w.node.parentNode;\n\n if (parent) {\n w.height = parent.offsetHeight;\n }\n }\n }\n } // Compute the lines that are visible in a given viewport (defaults\n // the the current scroll position). viewport may contain top,\n // height, and ensure (see op.scrollToPos) properties.\n\n\n function visibleLines(display, doc, viewport) {\n var top = viewport && viewport.top != null ? Math.max(0, viewport.top) : display.scroller.scrollTop;\n top = Math.floor(top - paddingTop(display));\n var bottom = viewport && viewport.bottom != null ? viewport.bottom : top + display.wrapper.clientHeight;\n\n var from = _lineAtHeight(doc, top),\n to = _lineAtHeight(doc, bottom); // Ensure is a {from: {line, ch}, to: {line, ch}} object, and\n // forces those lines into the viewport (if possible).\n\n\n if (viewport && viewport.ensure) {\n var ensureFrom = viewport.ensure.from.line,\n ensureTo = viewport.ensure.to.line;\n\n if (ensureFrom < from) {\n from = ensureFrom;\n to = _lineAtHeight(doc, _heightAtLine(getLine(doc, ensureFrom)) + display.wrapper.clientHeight);\n } else if (Math.min(ensureTo, doc.lastLine()) >= to) {\n from = _lineAtHeight(doc, _heightAtLine(getLine(doc, ensureTo)) - display.wrapper.clientHeight);\n to = ensureTo;\n }\n }\n\n return {\n from: from,\n to: Math.max(to, from + 1)\n };\n } // SCROLLING THINGS INTO VIEW\n // If an editor sits on the top or bottom of the window, partially\n // scrolled out of view, this ensures that the cursor is visible.\n\n\n function maybeScrollWindow(cm, rect) {\n if (signalDOMEvent(cm, \"scrollCursorIntoView\")) {\n return;\n }\n\n var display = cm.display,\n box = display.sizer.getBoundingClientRect(),\n doScroll = null;\n\n if (rect.top + box.top < 0) {\n doScroll = true;\n } else if (rect.bottom + box.top > (window.innerHeight || document.documentElement.clientHeight)) {\n doScroll = false;\n }\n\n if (doScroll != null && !phantom) {\n var scrollNode = elt(\"div\", \"\\u200B\", null, \"position: absolute;\\n top: \" + (rect.top - display.viewOffset - paddingTop(cm.display)) + \"px;\\n height: \" + (rect.bottom - rect.top + scrollGap(cm) + display.barHeight) + \"px;\\n left: \" + rect.left + \"px; width: \" + Math.max(2, rect.right - rect.left) + \"px;\");\n cm.display.lineSpace.appendChild(scrollNode);\n scrollNode.scrollIntoView(doScroll);\n cm.display.lineSpace.removeChild(scrollNode);\n }\n } // Scroll a given position into view (immediately), verifying that\n // it actually became visible (as line heights are accurately\n // measured, the position of something may 'drift' during drawing).\n\n\n function scrollPosIntoView(cm, pos, end, margin) {\n if (margin == null) {\n margin = 0;\n }\n\n var rect;\n\n if (!cm.options.lineWrapping && pos == end) {\n // Set pos and end to the cursor positions around the character pos sticks to\n // If pos.sticky == \"before\", that is around pos.ch - 1, otherwise around pos.ch\n // If pos == Pos(_, 0, \"before\"), pos and end are unchanged\n pos = pos.ch ? Pos(pos.line, pos.sticky == \"before\" ? pos.ch - 1 : pos.ch, \"after\") : pos;\n end = pos.sticky == \"before\" ? Pos(pos.line, pos.ch + 1, \"before\") : pos;\n }\n\n for (var limit = 0; limit < 5; limit++) {\n var changed = false;\n\n var coords = _cursorCoords(cm, pos);\n\n var endCoords = !end || end == pos ? coords : _cursorCoords(cm, end);\n rect = {\n left: Math.min(coords.left, endCoords.left),\n top: Math.min(coords.top, endCoords.top) - margin,\n right: Math.max(coords.left, endCoords.left),\n bottom: Math.max(coords.bottom, endCoords.bottom) + margin\n };\n var scrollPos = calculateScrollPos(cm, rect);\n var startTop = cm.doc.scrollTop,\n startLeft = cm.doc.scrollLeft;\n\n if (scrollPos.scrollTop != null) {\n updateScrollTop(cm, scrollPos.scrollTop);\n\n if (Math.abs(cm.doc.scrollTop - startTop) > 1) {\n changed = true;\n }\n }\n\n if (scrollPos.scrollLeft != null) {\n setScrollLeft(cm, scrollPos.scrollLeft);\n\n if (Math.abs(cm.doc.scrollLeft - startLeft) > 1) {\n changed = true;\n }\n }\n\n if (!changed) {\n break;\n }\n }\n\n return rect;\n } // Scroll a given set of coordinates into view (immediately).\n\n\n function scrollIntoView(cm, rect) {\n var scrollPos = calculateScrollPos(cm, rect);\n\n if (scrollPos.scrollTop != null) {\n updateScrollTop(cm, scrollPos.scrollTop);\n }\n\n if (scrollPos.scrollLeft != null) {\n setScrollLeft(cm, scrollPos.scrollLeft);\n }\n } // Calculate a new scroll position needed to scroll the given\n // rectangle into view. Returns an object with scrollTop and\n // scrollLeft properties. When these are undefined, the\n // vertical/horizontal position does not need to be adjusted.\n\n\n function calculateScrollPos(cm, rect) {\n var display = cm.display,\n snapMargin = textHeight(cm.display);\n\n if (rect.top < 0) {\n rect.top = 0;\n }\n\n var screentop = cm.curOp && cm.curOp.scrollTop != null ? cm.curOp.scrollTop : display.scroller.scrollTop;\n var screen = displayHeight(cm),\n result = {};\n\n if (rect.bottom - rect.top > screen) {\n rect.bottom = rect.top + screen;\n }\n\n var docBottom = cm.doc.height + paddingVert(display);\n var atTop = rect.top < snapMargin,\n atBottom = rect.bottom > docBottom - snapMargin;\n\n if (rect.top < screentop) {\n result.scrollTop = atTop ? 0 : rect.top;\n } else if (rect.bottom > screentop + screen) {\n var newTop = Math.min(rect.top, (atBottom ? docBottom : rect.bottom) - screen);\n\n if (newTop != screentop) {\n result.scrollTop = newTop;\n }\n }\n\n var screenleft = cm.curOp && cm.curOp.scrollLeft != null ? cm.curOp.scrollLeft : display.scroller.scrollLeft;\n var screenw = displayWidth(cm) - (cm.options.fixedGutter ? display.gutters.offsetWidth : 0);\n var tooWide = rect.right - rect.left > screenw;\n\n if (tooWide) {\n rect.right = rect.left + screenw;\n }\n\n if (rect.left < 10) {\n result.scrollLeft = 0;\n } else if (rect.left < screenleft) {\n result.scrollLeft = Math.max(0, rect.left - (tooWide ? 0 : 10));\n } else if (rect.right > screenw + screenleft - 3) {\n result.scrollLeft = rect.right + (tooWide ? 0 : 10) - screenw;\n }\n\n return result;\n } // Store a relative adjustment to the scroll position in the current\n // operation (to be applied when the operation finishes).\n\n\n function addToScrollTop(cm, top) {\n if (top == null) {\n return;\n }\n\n resolveScrollToPos(cm);\n cm.curOp.scrollTop = (cm.curOp.scrollTop == null ? cm.doc.scrollTop : cm.curOp.scrollTop) + top;\n } // Make sure that at the end of the operation the current cursor is\n // shown.\n\n\n function ensureCursorVisible(cm) {\n resolveScrollToPos(cm);\n var cur = cm.getCursor();\n cm.curOp.scrollToPos = {\n from: cur,\n to: cur,\n margin: cm.options.cursorScrollMargin\n };\n }\n\n function scrollToCoords(cm, x, y) {\n if (x != null || y != null) {\n resolveScrollToPos(cm);\n }\n\n if (x != null) {\n cm.curOp.scrollLeft = x;\n }\n\n if (y != null) {\n cm.curOp.scrollTop = y;\n }\n }\n\n function scrollToRange(cm, range) {\n resolveScrollToPos(cm);\n cm.curOp.scrollToPos = range;\n } // When an operation has its scrollToPos property set, and another\n // scroll action is applied before the end of the operation, this\n // 'simulates' scrolling that position into view in a cheap way, so\n // that the effect of intermediate scroll commands is not ignored.\n\n\n function resolveScrollToPos(cm) {\n var range = cm.curOp.scrollToPos;\n\n if (range) {\n cm.curOp.scrollToPos = null;\n var from = estimateCoords(cm, range.from),\n to = estimateCoords(cm, range.to);\n scrollToCoordsRange(cm, from, to, range.margin);\n }\n }\n\n function scrollToCoordsRange(cm, from, to, margin) {\n var sPos = calculateScrollPos(cm, {\n left: Math.min(from.left, to.left),\n top: Math.min(from.top, to.top) - margin,\n right: Math.max(from.right, to.right),\n bottom: Math.max(from.bottom, to.bottom) + margin\n });\n scrollToCoords(cm, sPos.scrollLeft, sPos.scrollTop);\n } // Sync the scrollable area and scrollbars, ensure the viewport\n // covers the visible area.\n\n\n function updateScrollTop(cm, val) {\n if (Math.abs(cm.doc.scrollTop - val) < 2) {\n return;\n }\n\n if (!gecko) {\n updateDisplaySimple(cm, {\n top: val\n });\n }\n\n setScrollTop(cm, val, true);\n\n if (gecko) {\n updateDisplaySimple(cm);\n }\n\n startWorker(cm, 100);\n }\n\n function setScrollTop(cm, val, forceScroll) {\n val = Math.max(0, Math.min(cm.display.scroller.scrollHeight - cm.display.scroller.clientHeight, val));\n\n if (cm.display.scroller.scrollTop == val && !forceScroll) {\n return;\n }\n\n cm.doc.scrollTop = val;\n cm.display.scrollbars.setScrollTop(val);\n\n if (cm.display.scroller.scrollTop != val) {\n cm.display.scroller.scrollTop = val;\n }\n } // Sync scroller and scrollbar, ensure the gutter elements are\n // aligned.\n\n\n function setScrollLeft(cm, val, isScroller, forceScroll) {\n val = Math.max(0, Math.min(val, cm.display.scroller.scrollWidth - cm.display.scroller.clientWidth));\n\n if ((isScroller ? val == cm.doc.scrollLeft : Math.abs(cm.doc.scrollLeft - val) < 2) && !forceScroll) {\n return;\n }\n\n cm.doc.scrollLeft = val;\n alignHorizontally(cm);\n\n if (cm.display.scroller.scrollLeft != val) {\n cm.display.scroller.scrollLeft = val;\n }\n\n cm.display.scrollbars.setScrollLeft(val);\n } // SCROLLBARS\n // Prepare DOM reads needed to update the scrollbars. Done in one\n // shot to minimize update/measure roundtrips.\n\n\n function measureForScrollbars(cm) {\n var d = cm.display,\n gutterW = d.gutters.offsetWidth;\n var docH = Math.round(cm.doc.height + paddingVert(cm.display));\n return {\n clientHeight: d.scroller.clientHeight,\n viewHeight: d.wrapper.clientHeight,\n scrollWidth: d.scroller.scrollWidth,\n clientWidth: d.scroller.clientWidth,\n viewWidth: d.wrapper.clientWidth,\n barLeft: cm.options.fixedGutter ? gutterW : 0,\n docHeight: docH,\n scrollHeight: docH + scrollGap(cm) + d.barHeight,\n nativeBarWidth: d.nativeBarWidth,\n gutterWidth: gutterW\n };\n }\n\n var NativeScrollbars = function NativeScrollbars(place, scroll, cm) {\n this.cm = cm;\n var vert = this.vert = elt(\"div\", [elt(\"div\", null, null, \"min-width: 1px\")], \"CodeMirror-vscrollbar\");\n var horiz = this.horiz = elt(\"div\", [elt(\"div\", null, null, \"height: 100%; min-height: 1px\")], \"CodeMirror-hscrollbar\");\n vert.tabIndex = horiz.tabIndex = -1;\n place(vert);\n place(horiz);\n on(vert, \"scroll\", function () {\n if (vert.clientHeight) {\n scroll(vert.scrollTop, \"vertical\");\n }\n });\n on(horiz, \"scroll\", function () {\n if (horiz.clientWidth) {\n scroll(horiz.scrollLeft, \"horizontal\");\n }\n });\n this.checkedZeroWidth = false; // Need to set a minimum width to see the scrollbar on IE7 (but must not set it on IE8).\n\n if (ie && ie_version < 8) {\n this.horiz.style.minHeight = this.vert.style.minWidth = \"18px\";\n }\n };\n\n NativeScrollbars.prototype.update = function (measure) {\n var needsH = measure.scrollWidth > measure.clientWidth + 1;\n var needsV = measure.scrollHeight > measure.clientHeight + 1;\n var sWidth = measure.nativeBarWidth;\n\n if (needsV) {\n this.vert.style.display = \"block\";\n this.vert.style.bottom = needsH ? sWidth + \"px\" : \"0\";\n var totalHeight = measure.viewHeight - (needsH ? sWidth : 0); // A bug in IE8 can cause this value to be negative, so guard it.\n\n this.vert.firstChild.style.height = Math.max(0, measure.scrollHeight - measure.clientHeight + totalHeight) + \"px\";\n } else {\n this.vert.style.display = \"\";\n this.vert.firstChild.style.height = \"0\";\n }\n\n if (needsH) {\n this.horiz.style.display = \"block\";\n this.horiz.style.right = needsV ? sWidth + \"px\" : \"0\";\n this.horiz.style.left = measure.barLeft + \"px\";\n var totalWidth = measure.viewWidth - measure.barLeft - (needsV ? sWidth : 0);\n this.horiz.firstChild.style.width = Math.max(0, measure.scrollWidth - measure.clientWidth + totalWidth) + \"px\";\n } else {\n this.horiz.style.display = \"\";\n this.horiz.firstChild.style.width = \"0\";\n }\n\n if (!this.checkedZeroWidth && measure.clientHeight > 0) {\n if (sWidth == 0) {\n this.zeroWidthHack();\n }\n\n this.checkedZeroWidth = true;\n }\n\n return {\n right: needsV ? sWidth : 0,\n bottom: needsH ? sWidth : 0\n };\n };\n\n NativeScrollbars.prototype.setScrollLeft = function (pos) {\n if (this.horiz.scrollLeft != pos) {\n this.horiz.scrollLeft = pos;\n }\n\n if (this.disableHoriz) {\n this.enableZeroWidthBar(this.horiz, this.disableHoriz, \"horiz\");\n }\n };\n\n NativeScrollbars.prototype.setScrollTop = function (pos) {\n if (this.vert.scrollTop != pos) {\n this.vert.scrollTop = pos;\n }\n\n if (this.disableVert) {\n this.enableZeroWidthBar(this.vert, this.disableVert, \"vert\");\n }\n };\n\n NativeScrollbars.prototype.zeroWidthHack = function () {\n var w = mac && !mac_geMountainLion ? \"12px\" : \"18px\";\n this.horiz.style.height = this.vert.style.width = w;\n this.horiz.style.pointerEvents = this.vert.style.pointerEvents = \"none\";\n this.disableHoriz = new Delayed();\n this.disableVert = new Delayed();\n };\n\n NativeScrollbars.prototype.enableZeroWidthBar = function (bar, delay, type) {\n bar.style.pointerEvents = \"auto\";\n\n function maybeDisable() {\n // To find out whether the scrollbar is still visible, we\n // check whether the element under the pixel in the bottom\n // right corner of the scrollbar box is the scrollbar box\n // itself (when the bar is still visible) or its filler child\n // (when the bar is hidden). If it is still visible, we keep\n // it enabled, if it's hidden, we disable pointer events.\n var box = bar.getBoundingClientRect();\n var elt = type == \"vert\" ? document.elementFromPoint(box.right - 1, (box.top + box.bottom) / 2) : document.elementFromPoint((box.right + box.left) / 2, box.bottom - 1);\n\n if (elt != bar) {\n bar.style.pointerEvents = \"none\";\n } else {\n delay.set(1000, maybeDisable);\n }\n }\n\n delay.set(1000, maybeDisable);\n };\n\n NativeScrollbars.prototype.clear = function () {\n var parent = this.horiz.parentNode;\n parent.removeChild(this.horiz);\n parent.removeChild(this.vert);\n };\n\n var NullScrollbars = function NullScrollbars() {};\n\n NullScrollbars.prototype.update = function () {\n return {\n bottom: 0,\n right: 0\n };\n };\n\n NullScrollbars.prototype.setScrollLeft = function () {};\n\n NullScrollbars.prototype.setScrollTop = function () {};\n\n NullScrollbars.prototype.clear = function () {};\n\n function updateScrollbars(cm, measure) {\n if (!measure) {\n measure = measureForScrollbars(cm);\n }\n\n var startWidth = cm.display.barWidth,\n startHeight = cm.display.barHeight;\n updateScrollbarsInner(cm, measure);\n\n for (var i = 0; i < 4 && startWidth != cm.display.barWidth || startHeight != cm.display.barHeight; i++) {\n if (startWidth != cm.display.barWidth && cm.options.lineWrapping) {\n updateHeightsInViewport(cm);\n }\n\n updateScrollbarsInner(cm, measureForScrollbars(cm));\n startWidth = cm.display.barWidth;\n startHeight = cm.display.barHeight;\n }\n } // Re-synchronize the fake scrollbars with the actual size of the\n // content.\n\n\n function updateScrollbarsInner(cm, measure) {\n var d = cm.display;\n var sizes = d.scrollbars.update(measure);\n d.sizer.style.paddingRight = (d.barWidth = sizes.right) + \"px\";\n d.sizer.style.paddingBottom = (d.barHeight = sizes.bottom) + \"px\";\n d.heightForcer.style.borderBottom = sizes.bottom + \"px solid transparent\";\n\n if (sizes.right && sizes.bottom) {\n d.scrollbarFiller.style.display = \"block\";\n d.scrollbarFiller.style.height = sizes.bottom + \"px\";\n d.scrollbarFiller.style.width = sizes.right + \"px\";\n } else {\n d.scrollbarFiller.style.display = \"\";\n }\n\n if (sizes.bottom && cm.options.coverGutterNextToScrollbar && cm.options.fixedGutter) {\n d.gutterFiller.style.display = \"block\";\n d.gutterFiller.style.height = sizes.bottom + \"px\";\n d.gutterFiller.style.width = measure.gutterWidth + \"px\";\n } else {\n d.gutterFiller.style.display = \"\";\n }\n }\n\n var scrollbarModel = {\n \"native\": NativeScrollbars,\n \"null\": NullScrollbars\n };\n\n function initScrollbars(cm) {\n if (cm.display.scrollbars) {\n cm.display.scrollbars.clear();\n\n if (cm.display.scrollbars.addClass) {\n rmClass(cm.display.wrapper, cm.display.scrollbars.addClass);\n }\n }\n\n cm.display.scrollbars = new scrollbarModel[cm.options.scrollbarStyle](function (node) {\n cm.display.wrapper.insertBefore(node, cm.display.scrollbarFiller); // Prevent clicks in the scrollbars from killing focus\n\n on(node, \"mousedown\", function () {\n if (cm.state.focused) {\n setTimeout(function () {\n return cm.display.input.focus();\n }, 0);\n }\n });\n node.setAttribute(\"cm-not-content\", \"true\");\n }, function (pos, axis) {\n if (axis == \"horizontal\") {\n setScrollLeft(cm, pos);\n } else {\n updateScrollTop(cm, pos);\n }\n }, cm);\n\n if (cm.display.scrollbars.addClass) {\n addClass(cm.display.wrapper, cm.display.scrollbars.addClass);\n }\n } // Operations are used to wrap a series of changes to the editor\n // state in such a way that each change won't have to update the\n // cursor and display (which would be awkward, slow, and\n // error-prone). Instead, display updates are batched and then all\n // combined and executed at once.\n\n\n var nextOpId = 0; // Start a new operation.\n\n function _startOperation(cm) {\n cm.curOp = {\n cm: cm,\n viewChanged: false,\n // Flag that indicates that lines might need to be redrawn\n startHeight: cm.doc.height,\n // Used to detect need to update scrollbar\n forceUpdate: false,\n // Used to force a redraw\n updateInput: 0,\n // Whether to reset the input textarea\n typing: false,\n // Whether this reset should be careful to leave existing text (for compositing)\n changeObjs: null,\n // Accumulated changes, for firing change events\n cursorActivityHandlers: null,\n // Set of handlers to fire cursorActivity on\n cursorActivityCalled: 0,\n // Tracks which cursorActivity handlers have been called already\n selectionChanged: false,\n // Whether the selection needs to be redrawn\n updateMaxLine: false,\n // Set when the widest line needs to be determined anew\n scrollLeft: null,\n scrollTop: null,\n // Intermediate scroll position, not pushed to DOM yet\n scrollToPos: null,\n // Used to scroll to a specific position\n focus: false,\n id: ++nextOpId // Unique ID\n\n };\n pushOperation(cm.curOp);\n } // Finish an operation, updating the display and signalling delayed events\n\n\n function _endOperation(cm) {\n var op = cm.curOp;\n\n if (op) {\n finishOperation(op, function (group) {\n for (var i = 0; i < group.ops.length; i++) {\n group.ops[i].cm.curOp = null;\n }\n\n endOperations(group);\n });\n }\n } // The DOM updates done when an operation finishes are batched so\n // that the minimum number of relayouts are required.\n\n\n function endOperations(group) {\n var ops = group.ops;\n\n for (var i = 0; i < ops.length; i++) // Read DOM\n {\n endOperation_R1(ops[i]);\n }\n\n for (var i$1 = 0; i$1 < ops.length; i$1++) // Write DOM (maybe)\n {\n endOperation_W1(ops[i$1]);\n }\n\n for (var i$2 = 0; i$2 < ops.length; i$2++) // Read DOM\n {\n endOperation_R2(ops[i$2]);\n }\n\n for (var i$3 = 0; i$3 < ops.length; i$3++) // Write DOM (maybe)\n {\n endOperation_W2(ops[i$3]);\n }\n\n for (var i$4 = 0; i$4 < ops.length; i$4++) // Read DOM\n {\n endOperation_finish(ops[i$4]);\n }\n }\n\n function endOperation_R1(op) {\n var cm = op.cm,\n display = cm.display;\n maybeClipScrollbars(cm);\n\n if (op.updateMaxLine) {\n findMaxLine(cm);\n }\n\n op.mustUpdate = op.viewChanged || op.forceUpdate || op.scrollTop != null || op.scrollToPos && (op.scrollToPos.from.line < display.viewFrom || op.scrollToPos.to.line >= display.viewTo) || display.maxLineChanged && cm.options.lineWrapping;\n op.update = op.mustUpdate && new DisplayUpdate(cm, op.mustUpdate && {\n top: op.scrollTop,\n ensure: op.scrollToPos\n }, op.forceUpdate);\n }\n\n function endOperation_W1(op) {\n op.updatedDisplay = op.mustUpdate && updateDisplayIfNeeded(op.cm, op.update);\n }\n\n function endOperation_R2(op) {\n var cm = op.cm,\n display = cm.display;\n\n if (op.updatedDisplay) {\n updateHeightsInViewport(cm);\n }\n\n op.barMeasure = measureForScrollbars(cm); // If the max line changed since it was last measured, measure it,\n // and ensure the document's width matches it.\n // updateDisplay_W2 will use these properties to do the actual resizing\n\n if (display.maxLineChanged && !cm.options.lineWrapping) {\n op.adjustWidthTo = measureChar(cm, display.maxLine, display.maxLine.text.length).left + 3;\n cm.display.sizerWidth = op.adjustWidthTo;\n op.barMeasure.scrollWidth = Math.max(display.scroller.clientWidth, display.sizer.offsetLeft + op.adjustWidthTo + scrollGap(cm) + cm.display.barWidth);\n op.maxScrollLeft = Math.max(0, display.sizer.offsetLeft + op.adjustWidthTo - displayWidth(cm));\n }\n\n if (op.updatedDisplay || op.selectionChanged) {\n op.preparedSelection = display.input.prepareSelection();\n }\n }\n\n function endOperation_W2(op) {\n var cm = op.cm;\n\n if (op.adjustWidthTo != null) {\n cm.display.sizer.style.minWidth = op.adjustWidthTo + \"px\";\n\n if (op.maxScrollLeft < cm.doc.scrollLeft) {\n setScrollLeft(cm, Math.min(cm.display.scroller.scrollLeft, op.maxScrollLeft), true);\n }\n\n cm.display.maxLineChanged = false;\n }\n\n var takeFocus = op.focus && op.focus == activeElt();\n\n if (op.preparedSelection) {\n cm.display.input.showSelection(op.preparedSelection, takeFocus);\n }\n\n if (op.updatedDisplay || op.startHeight != cm.doc.height) {\n updateScrollbars(cm, op.barMeasure);\n }\n\n if (op.updatedDisplay) {\n setDocumentHeight(cm, op.barMeasure);\n }\n\n if (op.selectionChanged) {\n restartBlink(cm);\n }\n\n if (cm.state.focused && op.updateInput) {\n cm.display.input.reset(op.typing);\n }\n\n if (takeFocus) {\n ensureFocus(op.cm);\n }\n }\n\n function endOperation_finish(op) {\n var cm = op.cm,\n display = cm.display,\n doc = cm.doc;\n\n if (op.updatedDisplay) {\n postUpdateDisplay(cm, op.update);\n } // Abort mouse wheel delta measurement, when scrolling explicitly\n\n\n if (display.wheelStartX != null && (op.scrollTop != null || op.scrollLeft != null || op.scrollToPos)) {\n display.wheelStartX = display.wheelStartY = null;\n } // Propagate the scroll position to the actual DOM scroller\n\n\n if (op.scrollTop != null) {\n setScrollTop(cm, op.scrollTop, op.forceScroll);\n }\n\n if (op.scrollLeft != null) {\n setScrollLeft(cm, op.scrollLeft, true, true);\n } // If we need to scroll a specific position into view, do so.\n\n\n if (op.scrollToPos) {\n var rect = scrollPosIntoView(cm, _clipPos(doc, op.scrollToPos.from), _clipPos(doc, op.scrollToPos.to), op.scrollToPos.margin);\n maybeScrollWindow(cm, rect);\n } // Fire events for markers that are hidden/unidden by editing or\n // undoing\n\n\n var hidden = op.maybeHiddenMarkers,\n unhidden = op.maybeUnhiddenMarkers;\n\n if (hidden) {\n for (var i = 0; i < hidden.length; ++i) {\n if (!hidden[i].lines.length) {\n signal(hidden[i], \"hide\");\n }\n }\n }\n\n if (unhidden) {\n for (var i$1 = 0; i$1 < unhidden.length; ++i$1) {\n if (unhidden[i$1].lines.length) {\n signal(unhidden[i$1], \"unhide\");\n }\n }\n }\n\n if (display.wrapper.offsetHeight) {\n doc.scrollTop = cm.display.scroller.scrollTop;\n } // Fire change events, and delayed event handlers\n\n\n if (op.changeObjs) {\n signal(cm, \"changes\", cm, op.changeObjs);\n }\n\n if (op.update) {\n op.update.finish();\n }\n } // Run the given function in an operation\n\n\n function runInOp(cm, f) {\n if (cm.curOp) {\n return f();\n }\n\n _startOperation(cm);\n\n try {\n return f();\n } finally {\n _endOperation(cm);\n }\n } // Wraps a function in an operation. Returns the wrapped function.\n\n\n function operation(cm, f) {\n return function () {\n if (cm.curOp) {\n return f.apply(cm, arguments);\n }\n\n _startOperation(cm);\n\n try {\n return f.apply(cm, arguments);\n } finally {\n _endOperation(cm);\n }\n };\n } // Used to add methods to editor and doc instances, wrapping them in\n // operations.\n\n\n function methodOp(f) {\n return function () {\n if (this.curOp) {\n return f.apply(this, arguments);\n }\n\n _startOperation(this);\n\n try {\n return f.apply(this, arguments);\n } finally {\n _endOperation(this);\n }\n };\n }\n\n function docMethodOp(f) {\n return function () {\n var cm = this.cm;\n\n if (!cm || cm.curOp) {\n return f.apply(this, arguments);\n }\n\n _startOperation(cm);\n\n try {\n return f.apply(this, arguments);\n } finally {\n _endOperation(cm);\n }\n };\n } // HIGHLIGHT WORKER\n\n\n function startWorker(cm, time) {\n if (cm.doc.highlightFrontier < cm.display.viewTo) {\n cm.state.highlight.set(time, bind(highlightWorker, cm));\n }\n }\n\n function highlightWorker(cm) {\n var doc = cm.doc;\n\n if (doc.highlightFrontier >= cm.display.viewTo) {\n return;\n }\n\n var end = +new Date() + cm.options.workTime;\n var context = getContextBefore(cm, doc.highlightFrontier);\n var changedLines = [];\n doc.iter(context.line, Math.min(doc.first + doc.size, cm.display.viewTo + 500), function (line) {\n if (context.line >= cm.display.viewFrom) {\n // Visible\n var oldStyles = line.styles;\n var resetState = line.text.length > cm.options.maxHighlightLength ? copyState(doc.mode, context.state) : null;\n var highlighted = highlightLine(cm, line, context, true);\n\n if (resetState) {\n context.state = resetState;\n }\n\n line.styles = highlighted.styles;\n var oldCls = line.styleClasses,\n newCls = highlighted.classes;\n\n if (newCls) {\n line.styleClasses = newCls;\n } else if (oldCls) {\n line.styleClasses = null;\n }\n\n var ischange = !oldStyles || oldStyles.length != line.styles.length || oldCls != newCls && (!oldCls || !newCls || oldCls.bgClass != newCls.bgClass || oldCls.textClass != newCls.textClass);\n\n for (var i = 0; !ischange && i < oldStyles.length; ++i) {\n ischange = oldStyles[i] != line.styles[i];\n }\n\n if (ischange) {\n changedLines.push(context.line);\n }\n\n line.stateAfter = context.save();\n context.nextLine();\n } else {\n if (line.text.length <= cm.options.maxHighlightLength) {\n processLine(cm, line.text, context);\n }\n\n line.stateAfter = context.line % 5 == 0 ? context.save() : null;\n context.nextLine();\n }\n\n if (+new Date() > end) {\n startWorker(cm, cm.options.workDelay);\n return true;\n }\n });\n doc.highlightFrontier = context.line;\n doc.modeFrontier = Math.max(doc.modeFrontier, context.line);\n\n if (changedLines.length) {\n runInOp(cm, function () {\n for (var i = 0; i < changedLines.length; i++) {\n regLineChange(cm, changedLines[i], \"text\");\n }\n });\n }\n } // DISPLAY DRAWING\n\n\n var DisplayUpdate = function DisplayUpdate(cm, viewport, force) {\n var display = cm.display;\n this.viewport = viewport; // Store some values that we'll need later (but don't want to force a relayout for)\n\n this.visible = visibleLines(display, cm.doc, viewport);\n this.editorIsHidden = !display.wrapper.offsetWidth;\n this.wrapperHeight = display.wrapper.clientHeight;\n this.wrapperWidth = display.wrapper.clientWidth;\n this.oldDisplayWidth = displayWidth(cm);\n this.force = force;\n this.dims = getDimensions(cm);\n this.events = [];\n };\n\n DisplayUpdate.prototype.signal = function (emitter, type) {\n if (hasHandler(emitter, type)) {\n this.events.push(arguments);\n }\n };\n\n DisplayUpdate.prototype.finish = function () {\n for (var i = 0; i < this.events.length; i++) {\n signal.apply(null, this.events[i]);\n }\n };\n\n function maybeClipScrollbars(cm) {\n var display = cm.display;\n\n if (!display.scrollbarsClipped && display.scroller.offsetWidth) {\n display.nativeBarWidth = display.scroller.offsetWidth - display.scroller.clientWidth;\n display.heightForcer.style.height = scrollGap(cm) + \"px\";\n display.sizer.style.marginBottom = -display.nativeBarWidth + \"px\";\n display.sizer.style.borderRightWidth = scrollGap(cm) + \"px\";\n display.scrollbarsClipped = true;\n }\n }\n\n function selectionSnapshot(cm) {\n if (cm.hasFocus()) {\n return null;\n }\n\n var active = activeElt();\n\n if (!active || !contains(cm.display.lineDiv, active)) {\n return null;\n }\n\n var result = {\n activeElt: active\n };\n\n if (window.getSelection) {\n var sel = window.getSelection();\n\n if (sel.anchorNode && sel.extend && contains(cm.display.lineDiv, sel.anchorNode)) {\n result.anchorNode = sel.anchorNode;\n result.anchorOffset = sel.anchorOffset;\n result.focusNode = sel.focusNode;\n result.focusOffset = sel.focusOffset;\n }\n }\n\n return result;\n }\n\n function restoreSelection(snapshot) {\n if (!snapshot || !snapshot.activeElt || snapshot.activeElt == activeElt()) {\n return;\n }\n\n snapshot.activeElt.focus();\n\n if (snapshot.anchorNode && contains(document.body, snapshot.anchorNode) && contains(document.body, snapshot.focusNode)) {\n var sel = window.getSelection(),\n range = document.createRange();\n range.setEnd(snapshot.anchorNode, snapshot.anchorOffset);\n range.collapse(false);\n sel.removeAllRanges();\n sel.addRange(range);\n sel.extend(snapshot.focusNode, snapshot.focusOffset);\n }\n } // Does the actual updating of the line display. Bails out\n // (returning false) when there is nothing to be done and forced is\n // false.\n\n\n function updateDisplayIfNeeded(cm, update) {\n var display = cm.display,\n doc = cm.doc;\n\n if (update.editorIsHidden) {\n resetView(cm);\n return false;\n } // Bail out if the visible area is already rendered and nothing changed.\n\n\n if (!update.force && update.visible.from >= display.viewFrom && update.visible.to <= display.viewTo && (display.updateLineNumbers == null || display.updateLineNumbers >= display.viewTo) && display.renderedView == display.view && countDirtyView(cm) == 0) {\n return false;\n }\n\n if (maybeUpdateLineNumberWidth(cm)) {\n resetView(cm);\n update.dims = getDimensions(cm);\n } // Compute a suitable new viewport (from & to)\n\n\n var end = doc.first + doc.size;\n var from = Math.max(update.visible.from - cm.options.viewportMargin, doc.first);\n var to = Math.min(end, update.visible.to + cm.options.viewportMargin);\n\n if (display.viewFrom < from && from - display.viewFrom < 20) {\n from = Math.max(doc.first, display.viewFrom);\n }\n\n if (display.viewTo > to && display.viewTo - to < 20) {\n to = Math.min(end, display.viewTo);\n }\n\n if (sawCollapsedSpans) {\n from = visualLineNo(cm.doc, from);\n to = visualLineEndNo(cm.doc, to);\n }\n\n var different = from != display.viewFrom || to != display.viewTo || display.lastWrapHeight != update.wrapperHeight || display.lastWrapWidth != update.wrapperWidth;\n adjustView(cm, from, to);\n display.viewOffset = _heightAtLine(getLine(cm.doc, display.viewFrom)); // Position the mover div to align with the current scroll position\n\n cm.display.mover.style.top = display.viewOffset + \"px\";\n var toUpdate = countDirtyView(cm);\n\n if (!different && toUpdate == 0 && !update.force && display.renderedView == display.view && (display.updateLineNumbers == null || display.updateLineNumbers >= display.viewTo)) {\n return false;\n } // For big changes, we hide the enclosing element during the\n // update, since that speeds up the operations on most browsers.\n\n\n var selSnapshot = selectionSnapshot(cm);\n\n if (toUpdate > 4) {\n display.lineDiv.style.display = \"none\";\n }\n\n patchDisplay(cm, display.updateLineNumbers, update.dims);\n\n if (toUpdate > 4) {\n display.lineDiv.style.display = \"\";\n }\n\n display.renderedView = display.view; // There might have been a widget with a focused element that got\n // hidden or updated, if so re-focus it.\n\n restoreSelection(selSnapshot); // Prevent selection and cursors from interfering with the scroll\n // width and height.\n\n removeChildren(display.cursorDiv);\n removeChildren(display.selectionDiv);\n display.gutters.style.height = display.sizer.style.minHeight = 0;\n\n if (different) {\n display.lastWrapHeight = update.wrapperHeight;\n display.lastWrapWidth = update.wrapperWidth;\n startWorker(cm, 400);\n }\n\n display.updateLineNumbers = null;\n return true;\n }\n\n function postUpdateDisplay(cm, update) {\n var viewport = update.viewport;\n\n for (var first = true;; first = false) {\n if (!first || !cm.options.lineWrapping || update.oldDisplayWidth == displayWidth(cm)) {\n // Clip forced viewport to actual scrollable area.\n if (viewport && viewport.top != null) {\n viewport = {\n top: Math.min(cm.doc.height + paddingVert(cm.display) - displayHeight(cm), viewport.top)\n };\n } // Updated line heights might result in the drawn area not\n // actually covering the viewport. Keep looping until it does.\n\n\n update.visible = visibleLines(cm.display, cm.doc, viewport);\n\n if (update.visible.from >= cm.display.viewFrom && update.visible.to <= cm.display.viewTo) {\n break;\n }\n } else if (first) {\n update.visible = visibleLines(cm.display, cm.doc, viewport);\n }\n\n if (!updateDisplayIfNeeded(cm, update)) {\n break;\n }\n\n updateHeightsInViewport(cm);\n var barMeasure = measureForScrollbars(cm);\n updateSelection(cm);\n updateScrollbars(cm, barMeasure);\n setDocumentHeight(cm, barMeasure);\n update.force = false;\n }\n\n update.signal(cm, \"update\", cm);\n\n if (cm.display.viewFrom != cm.display.reportedViewFrom || cm.display.viewTo != cm.display.reportedViewTo) {\n update.signal(cm, \"viewportChange\", cm, cm.display.viewFrom, cm.display.viewTo);\n cm.display.reportedViewFrom = cm.display.viewFrom;\n cm.display.reportedViewTo = cm.display.viewTo;\n }\n }\n\n function updateDisplaySimple(cm, viewport) {\n var update = new DisplayUpdate(cm, viewport);\n\n if (updateDisplayIfNeeded(cm, update)) {\n updateHeightsInViewport(cm);\n postUpdateDisplay(cm, update);\n var barMeasure = measureForScrollbars(cm);\n updateSelection(cm);\n updateScrollbars(cm, barMeasure);\n setDocumentHeight(cm, barMeasure);\n update.finish();\n }\n } // Sync the actual display DOM structure with display.view, removing\n // nodes for lines that are no longer in view, and creating the ones\n // that are not there yet, and updating the ones that are out of\n // date.\n\n\n function patchDisplay(cm, updateNumbersFrom, dims) {\n var display = cm.display,\n lineNumbers = cm.options.lineNumbers;\n var container = display.lineDiv,\n cur = container.firstChild;\n\n function rm(node) {\n var next = node.nextSibling; // Works around a throw-scroll bug in OS X Webkit\n\n if (webkit && mac && cm.display.currentWheelTarget == node) {\n node.style.display = \"none\";\n } else {\n node.parentNode.removeChild(node);\n }\n\n return next;\n }\n\n var view = display.view,\n lineN = display.viewFrom; // Loop over the elements in the view, syncing cur (the DOM nodes\n // in display.lineDiv) with the view as we go.\n\n for (var i = 0; i < view.length; i++) {\n var lineView = view[i];\n if (lineView.hidden) ;else if (!lineView.node || lineView.node.parentNode != container) {\n // Not drawn yet\n var node = buildLineElement(cm, lineView, lineN, dims);\n container.insertBefore(node, cur);\n } else {\n // Already drawn\n while (cur != lineView.node) {\n cur = rm(cur);\n }\n\n var updateNumber = lineNumbers && updateNumbersFrom != null && updateNumbersFrom <= lineN && lineView.lineNumber;\n\n if (lineView.changes) {\n if (indexOf(lineView.changes, \"gutter\") > -1) {\n updateNumber = false;\n }\n\n updateLineForChanges(cm, lineView, lineN, dims);\n }\n\n if (updateNumber) {\n removeChildren(lineView.lineNumber);\n lineView.lineNumber.appendChild(document.createTextNode(lineNumberFor(cm.options, lineN)));\n }\n\n cur = lineView.node.nextSibling;\n }\n lineN += lineView.size;\n }\n\n while (cur) {\n cur = rm(cur);\n }\n }\n\n function updateGutterSpace(display) {\n var width = display.gutters.offsetWidth;\n display.sizer.style.marginLeft = width + \"px\";\n }\n\n function setDocumentHeight(cm, measure) {\n cm.display.sizer.style.minHeight = measure.docHeight + \"px\";\n cm.display.heightForcer.style.top = measure.docHeight + \"px\";\n cm.display.gutters.style.height = measure.docHeight + cm.display.barHeight + scrollGap(cm) + \"px\";\n } // Re-align line numbers and gutter marks to compensate for\n // horizontal scrolling.\n\n\n function alignHorizontally(cm) {\n var display = cm.display,\n view = display.view;\n\n if (!display.alignWidgets && (!display.gutters.firstChild || !cm.options.fixedGutter)) {\n return;\n }\n\n var comp = compensateForHScroll(display) - display.scroller.scrollLeft + cm.doc.scrollLeft;\n var gutterW = display.gutters.offsetWidth,\n left = comp + \"px\";\n\n for (var i = 0; i < view.length; i++) {\n if (!view[i].hidden) {\n if (cm.options.fixedGutter) {\n if (view[i].gutter) {\n view[i].gutter.style.left = left;\n }\n\n if (view[i].gutterBackground) {\n view[i].gutterBackground.style.left = left;\n }\n }\n\n var align = view[i].alignable;\n\n if (align) {\n for (var j = 0; j < align.length; j++) {\n align[j].style.left = left;\n }\n }\n }\n }\n\n if (cm.options.fixedGutter) {\n display.gutters.style.left = comp + gutterW + \"px\";\n }\n } // Used to ensure that the line number gutter is still the right\n // size for the current document size. Returns true when an update\n // is needed.\n\n\n function maybeUpdateLineNumberWidth(cm) {\n if (!cm.options.lineNumbers) {\n return false;\n }\n\n var doc = cm.doc,\n last = lineNumberFor(cm.options, doc.first + doc.size - 1),\n display = cm.display;\n\n if (last.length != display.lineNumChars) {\n var test = display.measure.appendChild(elt(\"div\", [elt(\"div\", last)], \"CodeMirror-linenumber CodeMirror-gutter-elt\"));\n var innerW = test.firstChild.offsetWidth,\n padding = test.offsetWidth - innerW;\n display.lineGutter.style.width = \"\";\n display.lineNumInnerWidth = Math.max(innerW, display.lineGutter.offsetWidth - padding) + 1;\n display.lineNumWidth = display.lineNumInnerWidth + padding;\n display.lineNumChars = display.lineNumInnerWidth ? last.length : -1;\n display.lineGutter.style.width = display.lineNumWidth + \"px\";\n updateGutterSpace(cm.display);\n return true;\n }\n\n return false;\n }\n\n function getGutters(gutters, lineNumbers) {\n var result = [],\n sawLineNumbers = false;\n\n for (var i = 0; i < gutters.length; i++) {\n var name = gutters[i],\n style = null;\n\n if (typeof name != \"string\") {\n style = name.style;\n name = name.className;\n }\n\n if (name == \"CodeMirror-linenumbers\") {\n if (!lineNumbers) {\n continue;\n } else {\n sawLineNumbers = true;\n }\n }\n\n result.push({\n className: name,\n style: style\n });\n }\n\n if (lineNumbers && !sawLineNumbers) {\n result.push({\n className: \"CodeMirror-linenumbers\",\n style: null\n });\n }\n\n return result;\n } // Rebuild the gutter elements, ensure the margin to the left of the\n // code matches their width.\n\n\n function renderGutters(display) {\n var gutters = display.gutters,\n specs = display.gutterSpecs;\n removeChildren(gutters);\n display.lineGutter = null;\n\n for (var i = 0; i < specs.length; ++i) {\n var ref = specs[i];\n var className = ref.className;\n var style = ref.style;\n var gElt = gutters.appendChild(elt(\"div\", null, \"CodeMirror-gutter \" + className));\n\n if (style) {\n gElt.style.cssText = style;\n }\n\n if (className == \"CodeMirror-linenumbers\") {\n display.lineGutter = gElt;\n gElt.style.width = (display.lineNumWidth || 1) + \"px\";\n }\n }\n\n gutters.style.display = specs.length ? \"\" : \"none\";\n updateGutterSpace(display);\n }\n\n function updateGutters(cm) {\n renderGutters(cm.display);\n regChange(cm);\n alignHorizontally(cm);\n } // The display handles the DOM integration, both for input reading\n // and content drawing. It holds references to DOM nodes and\n // display-related state.\n\n\n function Display(place, doc, input, options) {\n var d = this;\n this.input = input; // Covers bottom-right square when both scrollbars are present.\n\n d.scrollbarFiller = elt(\"div\", null, \"CodeMirror-scrollbar-filler\");\n d.scrollbarFiller.setAttribute(\"cm-not-content\", \"true\"); // Covers bottom of gutter when coverGutterNextToScrollbar is on\n // and h scrollbar is present.\n\n d.gutterFiller = elt(\"div\", null, \"CodeMirror-gutter-filler\");\n d.gutterFiller.setAttribute(\"cm-not-content\", \"true\"); // Will contain the actual code, positioned to cover the viewport.\n\n d.lineDiv = eltP(\"div\", null, \"CodeMirror-code\"); // Elements are added to these to represent selection and cursors.\n\n d.selectionDiv = elt(\"div\", null, null, \"position: relative; z-index: 1\");\n d.cursorDiv = elt(\"div\", null, \"CodeMirror-cursors\"); // A visibility: hidden element used to find the size of things.\n\n d.measure = elt(\"div\", null, \"CodeMirror-measure\"); // When lines outside of the viewport are measured, they are drawn in this.\n\n d.lineMeasure = elt(\"div\", null, \"CodeMirror-measure\"); // Wraps everything that needs to exist inside the vertically-padded coordinate system\n\n d.lineSpace = eltP(\"div\", [d.measure, d.lineMeasure, d.selectionDiv, d.cursorDiv, d.lineDiv], null, \"position: relative; outline: none\");\n var lines = eltP(\"div\", [d.lineSpace], \"CodeMirror-lines\"); // Moved around its parent to cover visible view.\n\n d.mover = elt(\"div\", [lines], null, \"position: relative\"); // Set to the height of the document, allowing scrolling.\n\n d.sizer = elt(\"div\", [d.mover], \"CodeMirror-sizer\");\n d.sizerWidth = null; // Behavior of elts with overflow: auto and padding is\n // inconsistent across browsers. This is used to ensure the\n // scrollable area is big enough.\n\n d.heightForcer = elt(\"div\", null, null, \"position: absolute; height: \" + scrollerGap + \"px; width: 1px;\"); // Will contain the gutters, if any.\n\n d.gutters = elt(\"div\", null, \"CodeMirror-gutters\");\n d.lineGutter = null; // Actual scrollable element.\n\n d.scroller = elt(\"div\", [d.sizer, d.heightForcer, d.gutters], \"CodeMirror-scroll\");\n d.scroller.setAttribute(\"tabIndex\", \"-1\"); // The element in which the editor lives.\n\n d.wrapper = elt(\"div\", [d.scrollbarFiller, d.gutterFiller, d.scroller], \"CodeMirror\"); // Work around IE7 z-index bug (not perfect, hence IE7 not really being supported)\n\n if (ie && ie_version < 8) {\n d.gutters.style.zIndex = -1;\n d.scroller.style.paddingRight = 0;\n }\n\n if (!webkit && !(gecko && mobile)) {\n d.scroller.draggable = true;\n }\n\n if (place) {\n if (place.appendChild) {\n place.appendChild(d.wrapper);\n } else {\n place(d.wrapper);\n }\n } // Current rendered range (may be bigger than the view window).\n\n\n d.viewFrom = d.viewTo = doc.first;\n d.reportedViewFrom = d.reportedViewTo = doc.first; // Information about the rendered lines.\n\n d.view = [];\n d.renderedView = null; // Holds info about a single rendered line when it was rendered\n // for measurement, while not in view.\n\n d.externalMeasured = null; // Empty space (in pixels) above the view\n\n d.viewOffset = 0;\n d.lastWrapHeight = d.lastWrapWidth = 0;\n d.updateLineNumbers = null;\n d.nativeBarWidth = d.barHeight = d.barWidth = 0;\n d.scrollbarsClipped = false; // Used to only resize the line number gutter when necessary (when\n // the amount of lines crosses a boundary that makes its width change)\n\n d.lineNumWidth = d.lineNumInnerWidth = d.lineNumChars = null; // Set to true when a non-horizontal-scrolling line widget is\n // added. As an optimization, line widget aligning is skipped when\n // this is false.\n\n d.alignWidgets = false;\n d.cachedCharWidth = d.cachedTextHeight = d.cachedPaddingH = null; // Tracks the maximum line length so that the horizontal scrollbar\n // can be kept static when scrolling.\n\n d.maxLine = null;\n d.maxLineLength = 0;\n d.maxLineChanged = false; // Used for measuring wheel scrolling granularity\n\n d.wheelDX = d.wheelDY = d.wheelStartX = d.wheelStartY = null; // True when shift is held down.\n\n d.shift = false; // Used to track whether anything happened since the context menu\n // was opened.\n\n d.selForContextMenu = null;\n d.activeTouch = null;\n d.gutterSpecs = getGutters(options.gutters, options.lineNumbers);\n renderGutters(d);\n input.init(d);\n } // Since the delta values reported on mouse wheel events are\n // unstandardized between browsers and even browser versions, and\n // generally horribly unpredictable, this code starts by measuring\n // the scroll effect that the first few mouse wheel events have,\n // and, from that, detects the way it can convert deltas to pixel\n // offsets afterwards.\n //\n // The reason we want to know the amount a wheel event will scroll\n // is that it gives us a chance to update the display before the\n // actual scrolling happens, reducing flickering.\n\n\n var wheelSamples = 0,\n wheelPixelsPerUnit = null; // Fill in a browser-detected starting value on browsers where we\n // know one. These don't have to be accurate -- the result of them\n // being wrong would just be a slight flicker on the first wheel\n // scroll (if it is large enough).\n\n if (ie) {\n wheelPixelsPerUnit = -.53;\n } else if (gecko) {\n wheelPixelsPerUnit = 15;\n } else if (chrome) {\n wheelPixelsPerUnit = -.7;\n } else if (safari) {\n wheelPixelsPerUnit = -1 / 3;\n }\n\n function wheelEventDelta(e) {\n var dx = e.wheelDeltaX,\n dy = e.wheelDeltaY;\n\n if (dx == null && e.detail && e.axis == e.HORIZONTAL_AXIS) {\n dx = e.detail;\n }\n\n if (dy == null && e.detail && e.axis == e.VERTICAL_AXIS) {\n dy = e.detail;\n } else if (dy == null) {\n dy = e.wheelDelta;\n }\n\n return {\n x: dx,\n y: dy\n };\n }\n\n function wheelEventPixels(e) {\n var delta = wheelEventDelta(e);\n delta.x *= wheelPixelsPerUnit;\n delta.y *= wheelPixelsPerUnit;\n return delta;\n }\n\n function onScrollWheel(cm, e) {\n var delta = wheelEventDelta(e),\n dx = delta.x,\n dy = delta.y;\n var display = cm.display,\n scroll = display.scroller; // Quit if there's nothing to scroll here\n\n var canScrollX = scroll.scrollWidth > scroll.clientWidth;\n var canScrollY = scroll.scrollHeight > scroll.clientHeight;\n\n if (!(dx && canScrollX || dy && canScrollY)) {\n return;\n } // Webkit browsers on OS X abort momentum scrolls when the target\n // of the scroll event is removed from the scrollable element.\n // This hack (see related code in patchDisplay) makes sure the\n // element is kept around.\n\n\n if (dy && mac && webkit) {\n outer: for (var cur = e.target, view = display.view; cur != scroll; cur = cur.parentNode) {\n for (var i = 0; i < view.length; i++) {\n if (view[i].node == cur) {\n cm.display.currentWheelTarget = cur;\n break outer;\n }\n }\n }\n } // On some browsers, horizontal scrolling will cause redraws to\n // happen before the gutter has been realigned, causing it to\n // wriggle around in a most unseemly way. When we have an\n // estimated pixels/delta value, we just handle horizontal\n // scrolling entirely here. It'll be slightly off from native, but\n // better than glitching out.\n\n\n if (dx && !gecko && !presto && wheelPixelsPerUnit != null) {\n if (dy && canScrollY) {\n updateScrollTop(cm, Math.max(0, scroll.scrollTop + dy * wheelPixelsPerUnit));\n }\n\n setScrollLeft(cm, Math.max(0, scroll.scrollLeft + dx * wheelPixelsPerUnit)); // Only prevent default scrolling if vertical scrolling is\n // actually possible. Otherwise, it causes vertical scroll\n // jitter on OSX trackpads when deltaX is small and deltaY\n // is large (issue #3579)\n\n if (!dy || dy && canScrollY) {\n e_preventDefault(e);\n }\n\n display.wheelStartX = null; // Abort measurement, if in progress\n\n return;\n } // 'Project' the visible viewport to cover the area that is being\n // scrolled into view (if we know enough to estimate it).\n\n\n if (dy && wheelPixelsPerUnit != null) {\n var pixels = dy * wheelPixelsPerUnit;\n var top = cm.doc.scrollTop,\n bot = top + display.wrapper.clientHeight;\n\n if (pixels < 0) {\n top = Math.max(0, top + pixels - 50);\n } else {\n bot = Math.min(cm.doc.height, bot + pixels + 50);\n }\n\n updateDisplaySimple(cm, {\n top: top,\n bottom: bot\n });\n }\n\n if (wheelSamples < 20) {\n if (display.wheelStartX == null) {\n display.wheelStartX = scroll.scrollLeft;\n display.wheelStartY = scroll.scrollTop;\n display.wheelDX = dx;\n display.wheelDY = dy;\n setTimeout(function () {\n if (display.wheelStartX == null) {\n return;\n }\n\n var movedX = scroll.scrollLeft - display.wheelStartX;\n var movedY = scroll.scrollTop - display.wheelStartY;\n var sample = movedY && display.wheelDY && movedY / display.wheelDY || movedX && display.wheelDX && movedX / display.wheelDX;\n display.wheelStartX = display.wheelStartY = null;\n\n if (!sample) {\n return;\n }\n\n wheelPixelsPerUnit = (wheelPixelsPerUnit * wheelSamples + sample) / (wheelSamples + 1);\n ++wheelSamples;\n }, 200);\n } else {\n display.wheelDX += dx;\n display.wheelDY += dy;\n }\n }\n } // Selection objects are immutable. A new one is created every time\n // the selection changes. A selection is one or more non-overlapping\n // (and non-touching) ranges, sorted, and an integer that indicates\n // which one is the primary selection (the one that's scrolled into\n // view, that getCursor returns, etc).\n\n\n var Selection = function Selection(ranges, primIndex) {\n this.ranges = ranges;\n this.primIndex = primIndex;\n };\n\n Selection.prototype.primary = function () {\n return this.ranges[this.primIndex];\n };\n\n Selection.prototype.equals = function (other) {\n if (other == this) {\n return true;\n }\n\n if (other.primIndex != this.primIndex || other.ranges.length != this.ranges.length) {\n return false;\n }\n\n for (var i = 0; i < this.ranges.length; i++) {\n var here = this.ranges[i],\n there = other.ranges[i];\n\n if (!equalCursorPos(here.anchor, there.anchor) || !equalCursorPos(here.head, there.head)) {\n return false;\n }\n }\n\n return true;\n };\n\n Selection.prototype.deepCopy = function () {\n var out = [];\n\n for (var i = 0; i < this.ranges.length; i++) {\n out[i] = new Range(copyPos(this.ranges[i].anchor), copyPos(this.ranges[i].head));\n }\n\n return new Selection(out, this.primIndex);\n };\n\n Selection.prototype.somethingSelected = function () {\n for (var i = 0; i < this.ranges.length; i++) {\n if (!this.ranges[i].empty()) {\n return true;\n }\n }\n\n return false;\n };\n\n Selection.prototype.contains = function (pos, end) {\n if (!end) {\n end = pos;\n }\n\n for (var i = 0; i < this.ranges.length; i++) {\n var range = this.ranges[i];\n\n if (cmp(end, range.from()) >= 0 && cmp(pos, range.to()) <= 0) {\n return i;\n }\n }\n\n return -1;\n };\n\n var Range = function Range(anchor, head) {\n this.anchor = anchor;\n this.head = head;\n };\n\n Range.prototype.from = function () {\n return minPos(this.anchor, this.head);\n };\n\n Range.prototype.to = function () {\n return maxPos(this.anchor, this.head);\n };\n\n Range.prototype.empty = function () {\n return this.head.line == this.anchor.line && this.head.ch == this.anchor.ch;\n }; // Take an unsorted, potentially overlapping set of ranges, and\n // build a selection out of it. 'Consumes' ranges array (modifying\n // it).\n\n\n function normalizeSelection(cm, ranges, primIndex) {\n var mayTouch = cm && cm.options.selectionsMayTouch;\n var prim = ranges[primIndex];\n ranges.sort(function (a, b) {\n return cmp(a.from(), b.from());\n });\n primIndex = indexOf(ranges, prim);\n\n for (var i = 1; i < ranges.length; i++) {\n var cur = ranges[i],\n prev = ranges[i - 1];\n var diff = cmp(prev.to(), cur.from());\n\n if (mayTouch && !cur.empty() ? diff > 0 : diff >= 0) {\n var from = minPos(prev.from(), cur.from()),\n to = maxPos(prev.to(), cur.to());\n var inv = prev.empty() ? cur.from() == cur.head : prev.from() == prev.head;\n\n if (i <= primIndex) {\n --primIndex;\n }\n\n ranges.splice(--i, 2, new Range(inv ? to : from, inv ? from : to));\n }\n }\n\n return new Selection(ranges, primIndex);\n }\n\n function simpleSelection(anchor, head) {\n return new Selection([new Range(anchor, head || anchor)], 0);\n } // Compute the position of the end of a change (its 'to' property\n // refers to the pre-change end).\n\n\n function changeEnd(change) {\n if (!change.text) {\n return change.to;\n }\n\n return Pos(change.from.line + change.text.length - 1, lst(change.text).length + (change.text.length == 1 ? change.from.ch : 0));\n } // Adjust a position to refer to the post-change position of the\n // same text, or the end of the change if the change covers it.\n\n\n function adjustForChange(pos, change) {\n if (cmp(pos, change.from) < 0) {\n return pos;\n }\n\n if (cmp(pos, change.to) <= 0) {\n return changeEnd(change);\n }\n\n var line = pos.line + change.text.length - (change.to.line - change.from.line) - 1,\n ch = pos.ch;\n\n if (pos.line == change.to.line) {\n ch += changeEnd(change).ch - change.to.ch;\n }\n\n return Pos(line, ch);\n }\n\n function computeSelAfterChange(doc, change) {\n var out = [];\n\n for (var i = 0; i < doc.sel.ranges.length; i++) {\n var range = doc.sel.ranges[i];\n out.push(new Range(adjustForChange(range.anchor, change), adjustForChange(range.head, change)));\n }\n\n return normalizeSelection(doc.cm, out, doc.sel.primIndex);\n }\n\n function offsetPos(pos, old, nw) {\n if (pos.line == old.line) {\n return Pos(nw.line, pos.ch - old.ch + nw.ch);\n } else {\n return Pos(nw.line + (pos.line - old.line), pos.ch);\n }\n } // Used by replaceSelections to allow moving the selection to the\n // start or around the replaced test. Hint may be \"start\" or \"around\".\n\n\n function computeReplacedSel(doc, changes, hint) {\n var out = [];\n var oldPrev = Pos(doc.first, 0),\n newPrev = oldPrev;\n\n for (var i = 0; i < changes.length; i++) {\n var change = changes[i];\n var from = offsetPos(change.from, oldPrev, newPrev);\n var to = offsetPos(changeEnd(change), oldPrev, newPrev);\n oldPrev = change.to;\n newPrev = to;\n\n if (hint == \"around\") {\n var range = doc.sel.ranges[i],\n inv = cmp(range.head, range.anchor) < 0;\n out[i] = new Range(inv ? to : from, inv ? from : to);\n } else {\n out[i] = new Range(from, from);\n }\n }\n\n return new Selection(out, doc.sel.primIndex);\n } // Used to get the editor into a consistent state again when options change.\n\n\n function loadMode(cm) {\n cm.doc.mode = getMode(cm.options, cm.doc.modeOption);\n resetModeState(cm);\n }\n\n function resetModeState(cm) {\n cm.doc.iter(function (line) {\n if (line.stateAfter) {\n line.stateAfter = null;\n }\n\n if (line.styles) {\n line.styles = null;\n }\n });\n cm.doc.modeFrontier = cm.doc.highlightFrontier = cm.doc.first;\n startWorker(cm, 100);\n cm.state.modeGen++;\n\n if (cm.curOp) {\n regChange(cm);\n }\n } // DOCUMENT DATA STRUCTURE\n // By default, updates that start and end at the beginning of a line\n // are treated specially, in order to make the association of line\n // widgets and marker elements with the text behave more intuitive.\n\n\n function isWholeLineUpdate(doc, change) {\n return change.from.ch == 0 && change.to.ch == 0 && lst(change.text) == \"\" && (!doc.cm || doc.cm.options.wholeLineUpdateBefore);\n } // Perform a change on the document data structure.\n\n\n function updateDoc(doc, change, markedSpans, estimateHeight) {\n function spansFor(n) {\n return markedSpans ? markedSpans[n] : null;\n }\n\n function update(line, text, spans) {\n updateLine(line, text, spans, estimateHeight);\n signalLater(line, \"change\", line, change);\n }\n\n function linesFor(start, end) {\n var result = [];\n\n for (var i = start; i < end; ++i) {\n result.push(new Line(text[i], spansFor(i), estimateHeight));\n }\n\n return result;\n }\n\n var from = change.from,\n to = change.to,\n text = change.text;\n var firstLine = getLine(doc, from.line),\n lastLine = getLine(doc, to.line);\n var lastText = lst(text),\n lastSpans = spansFor(text.length - 1),\n nlines = to.line - from.line; // Adjust the line structure\n\n if (change.full) {\n doc.insert(0, linesFor(0, text.length));\n doc.remove(text.length, doc.size - text.length);\n } else if (isWholeLineUpdate(doc, change)) {\n // This is a whole-line replace. Treated specially to make\n // sure line objects move the way they are supposed to.\n var added = linesFor(0, text.length - 1);\n update(lastLine, lastLine.text, lastSpans);\n\n if (nlines) {\n doc.remove(from.line, nlines);\n }\n\n if (added.length) {\n doc.insert(from.line, added);\n }\n } else if (firstLine == lastLine) {\n if (text.length == 1) {\n update(firstLine, firstLine.text.slice(0, from.ch) + lastText + firstLine.text.slice(to.ch), lastSpans);\n } else {\n var added$1 = linesFor(1, text.length - 1);\n added$1.push(new Line(lastText + firstLine.text.slice(to.ch), lastSpans, estimateHeight));\n update(firstLine, firstLine.text.slice(0, from.ch) + text[0], spansFor(0));\n doc.insert(from.line + 1, added$1);\n }\n } else if (text.length == 1) {\n update(firstLine, firstLine.text.slice(0, from.ch) + text[0] + lastLine.text.slice(to.ch), spansFor(0));\n doc.remove(from.line + 1, nlines);\n } else {\n update(firstLine, firstLine.text.slice(0, from.ch) + text[0], spansFor(0));\n update(lastLine, lastText + lastLine.text.slice(to.ch), lastSpans);\n var added$2 = linesFor(1, text.length - 1);\n\n if (nlines > 1) {\n doc.remove(from.line + 1, nlines - 1);\n }\n\n doc.insert(from.line + 1, added$2);\n }\n\n signalLater(doc, \"change\", doc, change);\n } // Call f for all linked documents.\n\n\n function linkedDocs(doc, f, sharedHistOnly) {\n function propagate(doc, skip, sharedHist) {\n if (doc.linked) {\n for (var i = 0; i < doc.linked.length; ++i) {\n var rel = doc.linked[i];\n\n if (rel.doc == skip) {\n continue;\n }\n\n var shared = sharedHist && rel.sharedHist;\n\n if (sharedHistOnly && !shared) {\n continue;\n }\n\n f(rel.doc, shared);\n propagate(rel.doc, doc, shared);\n }\n }\n }\n\n propagate(doc, null, true);\n } // Attach a document to an editor.\n\n\n function attachDoc(cm, doc) {\n if (doc.cm) {\n throw new Error(\"This document is already in use.\");\n }\n\n cm.doc = doc;\n doc.cm = cm;\n estimateLineHeights(cm);\n loadMode(cm);\n setDirectionClass(cm);\n\n if (!cm.options.lineWrapping) {\n findMaxLine(cm);\n }\n\n cm.options.mode = doc.modeOption;\n regChange(cm);\n }\n\n function setDirectionClass(cm) {\n (cm.doc.direction == \"rtl\" ? addClass : rmClass)(cm.display.lineDiv, \"CodeMirror-rtl\");\n }\n\n function directionChanged(cm) {\n runInOp(cm, function () {\n setDirectionClass(cm);\n regChange(cm);\n });\n }\n\n function History(startGen) {\n // Arrays of change events and selections. Doing something adds an\n // event to done and clears undo. Undoing moves events from done\n // to undone, redoing moves them in the other direction.\n this.done = [];\n this.undone = [];\n this.undoDepth = Infinity; // Used to track when changes can be merged into a single undo\n // event\n\n this.lastModTime = this.lastSelTime = 0;\n this.lastOp = this.lastSelOp = null;\n this.lastOrigin = this.lastSelOrigin = null; // Used by the isClean() method\n\n this.generation = this.maxGeneration = startGen || 1;\n } // Create a history change event from an updateDoc-style change\n // object.\n\n\n function historyChangeFromChange(doc, change) {\n var histChange = {\n from: copyPos(change.from),\n to: changeEnd(change),\n text: getBetween(doc, change.from, change.to)\n };\n attachLocalSpans(doc, histChange, change.from.line, change.to.line + 1);\n linkedDocs(doc, function (doc) {\n return attachLocalSpans(doc, histChange, change.from.line, change.to.line + 1);\n }, true);\n return histChange;\n } // Pop all selection events off the end of a history array. Stop at\n // a change event.\n\n\n function clearSelectionEvents(array) {\n while (array.length) {\n var last = lst(array);\n\n if (last.ranges) {\n array.pop();\n } else {\n break;\n }\n }\n } // Find the top change event in the history. Pop off selection\n // events that are in the way.\n\n\n function lastChangeEvent(hist, force) {\n if (force) {\n clearSelectionEvents(hist.done);\n return lst(hist.done);\n } else if (hist.done.length && !lst(hist.done).ranges) {\n return lst(hist.done);\n } else if (hist.done.length > 1 && !hist.done[hist.done.length - 2].ranges) {\n hist.done.pop();\n return lst(hist.done);\n }\n } // Register a change in the history. Merges changes that are within\n // a single operation, or are close together with an origin that\n // allows merging (starting with \"+\") into a single event.\n\n\n function addChangeToHistory(doc, change, selAfter, opId) {\n var hist = doc.history;\n hist.undone.length = 0;\n var time = +new Date(),\n cur;\n var last;\n\n if ((hist.lastOp == opId || hist.lastOrigin == change.origin && change.origin && (change.origin.charAt(0) == \"+\" && hist.lastModTime > time - (doc.cm ? doc.cm.options.historyEventDelay : 500) || change.origin.charAt(0) == \"*\")) && (cur = lastChangeEvent(hist, hist.lastOp == opId))) {\n // Merge this change into the last event\n last = lst(cur.changes);\n\n if (cmp(change.from, change.to) == 0 && cmp(change.from, last.to) == 0) {\n // Optimized case for simple insertion -- don't want to add\n // new changesets for every character typed\n last.to = changeEnd(change);\n } else {\n // Add new sub-event\n cur.changes.push(historyChangeFromChange(doc, change));\n }\n } else {\n // Can not be merged, start a new event.\n var before = lst(hist.done);\n\n if (!before || !before.ranges) {\n pushSelectionToHistory(doc.sel, hist.done);\n }\n\n cur = {\n changes: [historyChangeFromChange(doc, change)],\n generation: hist.generation\n };\n hist.done.push(cur);\n\n while (hist.done.length > hist.undoDepth) {\n hist.done.shift();\n\n if (!hist.done[0].ranges) {\n hist.done.shift();\n }\n }\n }\n\n hist.done.push(selAfter);\n hist.generation = ++hist.maxGeneration;\n hist.lastModTime = hist.lastSelTime = time;\n hist.lastOp = hist.lastSelOp = opId;\n hist.lastOrigin = hist.lastSelOrigin = change.origin;\n\n if (!last) {\n signal(doc, \"historyAdded\");\n }\n }\n\n function selectionEventCanBeMerged(doc, origin, prev, sel) {\n var ch = origin.charAt(0);\n return ch == \"*\" || ch == \"+\" && prev.ranges.length == sel.ranges.length && prev.somethingSelected() == sel.somethingSelected() && new Date() - doc.history.lastSelTime <= (doc.cm ? doc.cm.options.historyEventDelay : 500);\n } // Called whenever the selection changes, sets the new selection as\n // the pending selection in the history, and pushes the old pending\n // selection into the 'done' array when it was significantly\n // different (in number of selected ranges, emptiness, or time).\n\n\n function addSelectionToHistory(doc, sel, opId, options) {\n var hist = doc.history,\n origin = options && options.origin; // A new event is started when the previous origin does not match\n // the current, or the origins don't allow matching. Origins\n // starting with * are always merged, those starting with + are\n // merged when similar and close together in time.\n\n if (opId == hist.lastSelOp || origin && hist.lastSelOrigin == origin && (hist.lastModTime == hist.lastSelTime && hist.lastOrigin == origin || selectionEventCanBeMerged(doc, origin, lst(hist.done), sel))) {\n hist.done[hist.done.length - 1] = sel;\n } else {\n pushSelectionToHistory(sel, hist.done);\n }\n\n hist.lastSelTime = +new Date();\n hist.lastSelOrigin = origin;\n hist.lastSelOp = opId;\n\n if (options && options.clearRedo !== false) {\n clearSelectionEvents(hist.undone);\n }\n }\n\n function pushSelectionToHistory(sel, dest) {\n var top = lst(dest);\n\n if (!(top && top.ranges && top.equals(sel))) {\n dest.push(sel);\n }\n } // Used to store marked span information in the history.\n\n\n function attachLocalSpans(doc, change, from, to) {\n var existing = change[\"spans_\" + doc.id],\n n = 0;\n doc.iter(Math.max(doc.first, from), Math.min(doc.first + doc.size, to), function (line) {\n if (line.markedSpans) {\n (existing || (existing = change[\"spans_\" + doc.id] = {}))[n] = line.markedSpans;\n }\n\n ++n;\n });\n } // When un/re-doing restores text containing marked spans, those\n // that have been explicitly cleared should not be restored.\n\n\n function removeClearedSpans(spans) {\n if (!spans) {\n return null;\n }\n\n var out;\n\n for (var i = 0; i < spans.length; ++i) {\n if (spans[i].marker.explicitlyCleared) {\n if (!out) {\n out = spans.slice(0, i);\n }\n } else if (out) {\n out.push(spans[i]);\n }\n }\n\n return !out ? spans : out.length ? out : null;\n } // Retrieve and filter the old marked spans stored in a change event.\n\n\n function getOldSpans(doc, change) {\n var found = change[\"spans_\" + doc.id];\n\n if (!found) {\n return null;\n }\n\n var nw = [];\n\n for (var i = 0; i < change.text.length; ++i) {\n nw.push(removeClearedSpans(found[i]));\n }\n\n return nw;\n } // Used for un/re-doing changes from the history. Combines the\n // result of computing the existing spans with the set of spans that\n // existed in the history (so that deleting around a span and then\n // undoing brings back the span).\n\n\n function mergeOldSpans(doc, change) {\n var old = getOldSpans(doc, change);\n var stretched = stretchSpansOverChange(doc, change);\n\n if (!old) {\n return stretched;\n }\n\n if (!stretched) {\n return old;\n }\n\n for (var i = 0; i < old.length; ++i) {\n var oldCur = old[i],\n stretchCur = stretched[i];\n\n if (oldCur && stretchCur) {\n spans: for (var j = 0; j < stretchCur.length; ++j) {\n var span = stretchCur[j];\n\n for (var k = 0; k < oldCur.length; ++k) {\n if (oldCur[k].marker == span.marker) {\n continue spans;\n }\n }\n\n oldCur.push(span);\n }\n } else if (stretchCur) {\n old[i] = stretchCur;\n }\n }\n\n return old;\n } // Used both to provide a JSON-safe object in .getHistory, and, when\n // detaching a document, to split the history in two\n\n\n function copyHistoryArray(events, newGroup, instantiateSel) {\n var copy = [];\n\n for (var i = 0; i < events.length; ++i) {\n var event = events[i];\n\n if (event.ranges) {\n copy.push(instantiateSel ? Selection.prototype.deepCopy.call(event) : event);\n continue;\n }\n\n var changes = event.changes,\n newChanges = [];\n copy.push({\n changes: newChanges\n });\n\n for (var j = 0; j < changes.length; ++j) {\n var change = changes[j],\n m = void 0;\n newChanges.push({\n from: change.from,\n to: change.to,\n text: change.text\n });\n\n if (newGroup) {\n for (var prop in change) {\n if (m = prop.match(/^spans_(\\d+)$/)) {\n if (indexOf(newGroup, Number(m[1])) > -1) {\n lst(newChanges)[prop] = change[prop];\n delete change[prop];\n }\n }\n }\n }\n }\n }\n\n return copy;\n } // The 'scroll' parameter given to many of these indicated whether\n // the new cursor position should be scrolled into view after\n // modifying the selection.\n // If shift is held or the extend flag is set, extends a range to\n // include a given position (and optionally a second position).\n // Otherwise, simply returns the range between the given positions.\n // Used for cursor motion and such.\n\n\n function extendRange(range, head, other, extend) {\n if (extend) {\n var anchor = range.anchor;\n\n if (other) {\n var posBefore = cmp(head, anchor) < 0;\n\n if (posBefore != cmp(other, anchor) < 0) {\n anchor = head;\n head = other;\n } else if (posBefore != cmp(head, other) < 0) {\n head = other;\n }\n }\n\n return new Range(anchor, head);\n } else {\n return new Range(other || head, head);\n }\n } // Extend the primary selection range, discard the rest.\n\n\n function extendSelection(doc, head, other, options, extend) {\n if (extend == null) {\n extend = doc.cm && (doc.cm.display.shift || doc.extend);\n }\n\n setSelection(doc, new Selection([extendRange(doc.sel.primary(), head, other, extend)], 0), options);\n } // Extend all selections (pos is an array of selections with length\n // equal the number of selections)\n\n\n function extendSelections(doc, heads, options) {\n var out = [];\n var extend = doc.cm && (doc.cm.display.shift || doc.extend);\n\n for (var i = 0; i < doc.sel.ranges.length; i++) {\n out[i] = extendRange(doc.sel.ranges[i], heads[i], null, extend);\n }\n\n var newSel = normalizeSelection(doc.cm, out, doc.sel.primIndex);\n setSelection(doc, newSel, options);\n } // Updates a single range in the selection.\n\n\n function replaceOneSelection(doc, i, range, options) {\n var ranges = doc.sel.ranges.slice(0);\n ranges[i] = range;\n setSelection(doc, normalizeSelection(doc.cm, ranges, doc.sel.primIndex), options);\n } // Reset the selection to a single range.\n\n\n function setSimpleSelection(doc, anchor, head, options) {\n setSelection(doc, simpleSelection(anchor, head), options);\n } // Give beforeSelectionChange handlers a change to influence a\n // selection update.\n\n\n function filterSelectionChange(doc, sel, options) {\n var obj = {\n ranges: sel.ranges,\n update: function update(ranges) {\n this.ranges = [];\n\n for (var i = 0; i < ranges.length; i++) {\n this.ranges[i] = new Range(_clipPos(doc, ranges[i].anchor), _clipPos(doc, ranges[i].head));\n }\n },\n origin: options && options.origin\n };\n signal(doc, \"beforeSelectionChange\", doc, obj);\n\n if (doc.cm) {\n signal(doc.cm, \"beforeSelectionChange\", doc.cm, obj);\n }\n\n if (obj.ranges != sel.ranges) {\n return normalizeSelection(doc.cm, obj.ranges, obj.ranges.length - 1);\n } else {\n return sel;\n }\n }\n\n function setSelectionReplaceHistory(doc, sel, options) {\n var done = doc.history.done,\n last = lst(done);\n\n if (last && last.ranges) {\n done[done.length - 1] = sel;\n setSelectionNoUndo(doc, sel, options);\n } else {\n setSelection(doc, sel, options);\n }\n } // Set a new selection.\n\n\n function setSelection(doc, sel, options) {\n setSelectionNoUndo(doc, sel, options);\n addSelectionToHistory(doc, doc.sel, doc.cm ? doc.cm.curOp.id : NaN, options);\n }\n\n function setSelectionNoUndo(doc, sel, options) {\n if (hasHandler(doc, \"beforeSelectionChange\") || doc.cm && hasHandler(doc.cm, \"beforeSelectionChange\")) {\n sel = filterSelectionChange(doc, sel, options);\n }\n\n var bias = options && options.bias || (cmp(sel.primary().head, doc.sel.primary().head) < 0 ? -1 : 1);\n setSelectionInner(doc, skipAtomicInSelection(doc, sel, bias, true));\n\n if (!(options && options.scroll === false) && doc.cm) {\n ensureCursorVisible(doc.cm);\n }\n }\n\n function setSelectionInner(doc, sel) {\n if (sel.equals(doc.sel)) {\n return;\n }\n\n doc.sel = sel;\n\n if (doc.cm) {\n doc.cm.curOp.updateInput = 1;\n doc.cm.curOp.selectionChanged = true;\n signalCursorActivity(doc.cm);\n }\n\n signalLater(doc, \"cursorActivity\", doc);\n } // Verify that the selection does not partially select any atomic\n // marked ranges.\n\n\n function reCheckSelection(doc) {\n setSelectionInner(doc, skipAtomicInSelection(doc, doc.sel, null, false));\n } // Return a selection that does not partially select any atomic\n // ranges.\n\n\n function skipAtomicInSelection(doc, sel, bias, mayClear) {\n var out;\n\n for (var i = 0; i < sel.ranges.length; i++) {\n var range = sel.ranges[i];\n var old = sel.ranges.length == doc.sel.ranges.length && doc.sel.ranges[i];\n var newAnchor = skipAtomic(doc, range.anchor, old && old.anchor, bias, mayClear);\n var newHead = skipAtomic(doc, range.head, old && old.head, bias, mayClear);\n\n if (out || newAnchor != range.anchor || newHead != range.head) {\n if (!out) {\n out = sel.ranges.slice(0, i);\n }\n\n out[i] = new Range(newAnchor, newHead);\n }\n }\n\n return out ? normalizeSelection(doc.cm, out, sel.primIndex) : sel;\n }\n\n function skipAtomicInner(doc, pos, oldPos, dir, mayClear) {\n var line = getLine(doc, pos.line);\n\n if (line.markedSpans) {\n for (var i = 0; i < line.markedSpans.length; ++i) {\n var sp = line.markedSpans[i],\n m = sp.marker; // Determine if we should prevent the cursor being placed to the left/right of an atomic marker\n // Historically this was determined using the inclusiveLeft/Right option, but the new way to control it\n // is with selectLeft/Right\n\n var preventCursorLeft = \"selectLeft\" in m ? !m.selectLeft : m.inclusiveLeft;\n var preventCursorRight = \"selectRight\" in m ? !m.selectRight : m.inclusiveRight;\n\n if ((sp.from == null || (preventCursorLeft ? sp.from <= pos.ch : sp.from < pos.ch)) && (sp.to == null || (preventCursorRight ? sp.to >= pos.ch : sp.to > pos.ch))) {\n if (mayClear) {\n signal(m, \"beforeCursorEnter\");\n\n if (m.explicitlyCleared) {\n if (!line.markedSpans) {\n break;\n } else {\n --i;\n continue;\n }\n }\n }\n\n if (!m.atomic) {\n continue;\n }\n\n if (oldPos) {\n var near = m.find(dir < 0 ? 1 : -1),\n diff = void 0;\n\n if (dir < 0 ? preventCursorRight : preventCursorLeft) {\n near = movePos(doc, near, -dir, near && near.line == pos.line ? line : null);\n }\n\n if (near && near.line == pos.line && (diff = cmp(near, oldPos)) && (dir < 0 ? diff < 0 : diff > 0)) {\n return skipAtomicInner(doc, near, pos, dir, mayClear);\n }\n }\n\n var far = m.find(dir < 0 ? -1 : 1);\n\n if (dir < 0 ? preventCursorLeft : preventCursorRight) {\n far = movePos(doc, far, dir, far.line == pos.line ? line : null);\n }\n\n return far ? skipAtomicInner(doc, far, pos, dir, mayClear) : null;\n }\n }\n }\n\n return pos;\n } // Ensure a given position is not inside an atomic range.\n\n\n function skipAtomic(doc, pos, oldPos, bias, mayClear) {\n var dir = bias || 1;\n var found = skipAtomicInner(doc, pos, oldPos, dir, mayClear) || !mayClear && skipAtomicInner(doc, pos, oldPos, dir, true) || skipAtomicInner(doc, pos, oldPos, -dir, mayClear) || !mayClear && skipAtomicInner(doc, pos, oldPos, -dir, true);\n\n if (!found) {\n doc.cantEdit = true;\n return Pos(doc.first, 0);\n }\n\n return found;\n }\n\n function movePos(doc, pos, dir, line) {\n if (dir < 0 && pos.ch == 0) {\n if (pos.line > doc.first) {\n return _clipPos(doc, Pos(pos.line - 1));\n } else {\n return null;\n }\n } else if (dir > 0 && pos.ch == (line || getLine(doc, pos.line)).text.length) {\n if (pos.line < doc.first + doc.size - 1) {\n return Pos(pos.line + 1, 0);\n } else {\n return null;\n }\n } else {\n return new Pos(pos.line, pos.ch + dir);\n }\n }\n\n function selectAll(cm) {\n cm.setSelection(Pos(cm.firstLine(), 0), Pos(cm.lastLine()), sel_dontScroll);\n } // UPDATING\n // Allow \"beforeChange\" event handlers to influence a change\n\n\n function filterChange(doc, change, update) {\n var obj = {\n canceled: false,\n from: change.from,\n to: change.to,\n text: change.text,\n origin: change.origin,\n cancel: function cancel() {\n return obj.canceled = true;\n }\n };\n\n if (update) {\n obj.update = function (from, to, text, origin) {\n if (from) {\n obj.from = _clipPos(doc, from);\n }\n\n if (to) {\n obj.to = _clipPos(doc, to);\n }\n\n if (text) {\n obj.text = text;\n }\n\n if (origin !== undefined) {\n obj.origin = origin;\n }\n };\n }\n\n signal(doc, \"beforeChange\", doc, obj);\n\n if (doc.cm) {\n signal(doc.cm, \"beforeChange\", doc.cm, obj);\n }\n\n if (obj.canceled) {\n if (doc.cm) {\n doc.cm.curOp.updateInput = 2;\n }\n\n return null;\n }\n\n return {\n from: obj.from,\n to: obj.to,\n text: obj.text,\n origin: obj.origin\n };\n } // Apply a change to a document, and add it to the document's\n // history, and propagating it to all linked documents.\n\n\n function makeChange(doc, change, ignoreReadOnly) {\n if (doc.cm) {\n if (!doc.cm.curOp) {\n return operation(doc.cm, makeChange)(doc, change, ignoreReadOnly);\n }\n\n if (doc.cm.state.suppressEdits) {\n return;\n }\n }\n\n if (hasHandler(doc, \"beforeChange\") || doc.cm && hasHandler(doc.cm, \"beforeChange\")) {\n change = filterChange(doc, change, true);\n\n if (!change) {\n return;\n }\n } // Possibly split or suppress the update based on the presence\n // of read-only spans in its range.\n\n\n var split = sawReadOnlySpans && !ignoreReadOnly && removeReadOnlyRanges(doc, change.from, change.to);\n\n if (split) {\n for (var i = split.length - 1; i >= 0; --i) {\n makeChangeInner(doc, {\n from: split[i].from,\n to: split[i].to,\n text: i ? [\"\"] : change.text,\n origin: change.origin\n });\n }\n } else {\n makeChangeInner(doc, change);\n }\n }\n\n function makeChangeInner(doc, change) {\n if (change.text.length == 1 && change.text[0] == \"\" && cmp(change.from, change.to) == 0) {\n return;\n }\n\n var selAfter = computeSelAfterChange(doc, change);\n addChangeToHistory(doc, change, selAfter, doc.cm ? doc.cm.curOp.id : NaN);\n makeChangeSingleDoc(doc, change, selAfter, stretchSpansOverChange(doc, change));\n var rebased = [];\n linkedDocs(doc, function (doc, sharedHist) {\n if (!sharedHist && indexOf(rebased, doc.history) == -1) {\n rebaseHist(doc.history, change);\n rebased.push(doc.history);\n }\n\n makeChangeSingleDoc(doc, change, null, stretchSpansOverChange(doc, change));\n });\n } // Revert a change stored in a document's history.\n\n\n function makeChangeFromHistory(doc, type, allowSelectionOnly) {\n var suppress = doc.cm && doc.cm.state.suppressEdits;\n\n if (suppress && !allowSelectionOnly) {\n return;\n }\n\n var hist = doc.history,\n event,\n selAfter = doc.sel;\n var source = type == \"undo\" ? hist.done : hist.undone,\n dest = type == \"undo\" ? hist.undone : hist.done; // Verify that there is a useable event (so that ctrl-z won't\n // needlessly clear selection events)\n\n var i = 0;\n\n for (; i < source.length; i++) {\n event = source[i];\n\n if (allowSelectionOnly ? event.ranges && !event.equals(doc.sel) : !event.ranges) {\n break;\n }\n }\n\n if (i == source.length) {\n return;\n }\n\n hist.lastOrigin = hist.lastSelOrigin = null;\n\n for (;;) {\n event = source.pop();\n\n if (event.ranges) {\n pushSelectionToHistory(event, dest);\n\n if (allowSelectionOnly && !event.equals(doc.sel)) {\n setSelection(doc, event, {\n clearRedo: false\n });\n return;\n }\n\n selAfter = event;\n } else if (suppress) {\n source.push(event);\n return;\n } else {\n break;\n }\n } // Build up a reverse change object to add to the opposite history\n // stack (redo when undoing, and vice versa).\n\n\n var antiChanges = [];\n pushSelectionToHistory(selAfter, dest);\n dest.push({\n changes: antiChanges,\n generation: hist.generation\n });\n hist.generation = event.generation || ++hist.maxGeneration;\n var filter = hasHandler(doc, \"beforeChange\") || doc.cm && hasHandler(doc.cm, \"beforeChange\");\n\n var loop = function loop(i) {\n var change = event.changes[i];\n change.origin = type;\n\n if (filter && !filterChange(doc, change, false)) {\n source.length = 0;\n return {};\n }\n\n antiChanges.push(historyChangeFromChange(doc, change));\n var after = i ? computeSelAfterChange(doc, change) : lst(source);\n makeChangeSingleDoc(doc, change, after, mergeOldSpans(doc, change));\n\n if (!i && doc.cm) {\n doc.cm.scrollIntoView({\n from: change.from,\n to: changeEnd(change)\n });\n }\n\n var rebased = []; // Propagate to the linked documents\n\n linkedDocs(doc, function (doc, sharedHist) {\n if (!sharedHist && indexOf(rebased, doc.history) == -1) {\n rebaseHist(doc.history, change);\n rebased.push(doc.history);\n }\n\n makeChangeSingleDoc(doc, change, null, mergeOldSpans(doc, change));\n });\n };\n\n for (var i$1 = event.changes.length - 1; i$1 >= 0; --i$1) {\n var returned = loop(i$1);\n if (returned) return returned.v;\n }\n } // Sub-views need their line numbers shifted when text is added\n // above or below them in the parent document.\n\n\n function shiftDoc(doc, distance) {\n if (distance == 0) {\n return;\n }\n\n doc.first += distance;\n doc.sel = new Selection(map(doc.sel.ranges, function (range) {\n return new Range(Pos(range.anchor.line + distance, range.anchor.ch), Pos(range.head.line + distance, range.head.ch));\n }), doc.sel.primIndex);\n\n if (doc.cm) {\n regChange(doc.cm, doc.first, doc.first - distance, distance);\n\n for (var d = doc.cm.display, l = d.viewFrom; l < d.viewTo; l++) {\n regLineChange(doc.cm, l, \"gutter\");\n }\n }\n } // More lower-level change function, handling only a single document\n // (not linked ones).\n\n\n function makeChangeSingleDoc(doc, change, selAfter, spans) {\n if (doc.cm && !doc.cm.curOp) {\n return operation(doc.cm, makeChangeSingleDoc)(doc, change, selAfter, spans);\n }\n\n if (change.to.line < doc.first) {\n shiftDoc(doc, change.text.length - 1 - (change.to.line - change.from.line));\n return;\n }\n\n if (change.from.line > doc.lastLine()) {\n return;\n } // Clip the change to the size of this doc\n\n\n if (change.from.line < doc.first) {\n var shift = change.text.length - 1 - (doc.first - change.from.line);\n shiftDoc(doc, shift);\n change = {\n from: Pos(doc.first, 0),\n to: Pos(change.to.line + shift, change.to.ch),\n text: [lst(change.text)],\n origin: change.origin\n };\n }\n\n var last = doc.lastLine();\n\n if (change.to.line > last) {\n change = {\n from: change.from,\n to: Pos(last, getLine(doc, last).text.length),\n text: [change.text[0]],\n origin: change.origin\n };\n }\n\n change.removed = getBetween(doc, change.from, change.to);\n\n if (!selAfter) {\n selAfter = computeSelAfterChange(doc, change);\n }\n\n if (doc.cm) {\n makeChangeSingleDocInEditor(doc.cm, change, spans);\n } else {\n updateDoc(doc, change, spans);\n }\n\n setSelectionNoUndo(doc, selAfter, sel_dontScroll);\n\n if (doc.cantEdit && skipAtomic(doc, Pos(doc.firstLine(), 0))) {\n doc.cantEdit = false;\n }\n } // Handle the interaction of a change to a document with the editor\n // that this document is part of.\n\n\n function makeChangeSingleDocInEditor(cm, change, spans) {\n var doc = cm.doc,\n display = cm.display,\n from = change.from,\n to = change.to;\n var recomputeMaxLength = false,\n checkWidthStart = from.line;\n\n if (!cm.options.lineWrapping) {\n checkWidthStart = lineNo(visualLine(getLine(doc, from.line)));\n doc.iter(checkWidthStart, to.line + 1, function (line) {\n if (line == display.maxLine) {\n recomputeMaxLength = true;\n return true;\n }\n });\n }\n\n if (doc.sel.contains(change.from, change.to) > -1) {\n signalCursorActivity(cm);\n }\n\n updateDoc(doc, change, spans, estimateHeight(cm));\n\n if (!cm.options.lineWrapping) {\n doc.iter(checkWidthStart, from.line + change.text.length, function (line) {\n var len = lineLength(line);\n\n if (len > display.maxLineLength) {\n display.maxLine = line;\n display.maxLineLength = len;\n display.maxLineChanged = true;\n recomputeMaxLength = false;\n }\n });\n\n if (recomputeMaxLength) {\n cm.curOp.updateMaxLine = true;\n }\n }\n\n retreatFrontier(doc, from.line);\n startWorker(cm, 400);\n var lendiff = change.text.length - (to.line - from.line) - 1; // Remember that these lines changed, for updating the display\n\n if (change.full) {\n regChange(cm);\n } else if (from.line == to.line && change.text.length == 1 && !isWholeLineUpdate(cm.doc, change)) {\n regLineChange(cm, from.line, \"text\");\n } else {\n regChange(cm, from.line, to.line + 1, lendiff);\n }\n\n var changesHandler = hasHandler(cm, \"changes\"),\n changeHandler = hasHandler(cm, \"change\");\n\n if (changeHandler || changesHandler) {\n var obj = {\n from: from,\n to: to,\n text: change.text,\n removed: change.removed,\n origin: change.origin\n };\n\n if (changeHandler) {\n signalLater(cm, \"change\", cm, obj);\n }\n\n if (changesHandler) {\n (cm.curOp.changeObjs || (cm.curOp.changeObjs = [])).push(obj);\n }\n }\n\n cm.display.selForContextMenu = null;\n }\n\n function _replaceRange(doc, code, from, to, origin) {\n var assign;\n\n if (!to) {\n to = from;\n }\n\n if (cmp(to, from) < 0) {\n assign = [to, from], from = assign[0], to = assign[1];\n }\n\n if (typeof code == \"string\") {\n code = doc.splitLines(code);\n }\n\n makeChange(doc, {\n from: from,\n to: to,\n text: code,\n origin: origin\n });\n } // Rebasing/resetting history to deal with externally-sourced changes\n\n\n function rebaseHistSelSingle(pos, from, to, diff) {\n if (to < pos.line) {\n pos.line += diff;\n } else if (from < pos.line) {\n pos.line = from;\n pos.ch = 0;\n }\n } // Tries to rebase an array of history events given a change in the\n // document. If the change touches the same lines as the event, the\n // event, and everything 'behind' it, is discarded. If the change is\n // before the event, the event's positions are updated. Uses a\n // copy-on-write scheme for the positions, to avoid having to\n // reallocate them all on every rebase, but also avoid problems with\n // shared position objects being unsafely updated.\n\n\n function rebaseHistArray(array, from, to, diff) {\n for (var i = 0; i < array.length; ++i) {\n var sub = array[i],\n ok = true;\n\n if (sub.ranges) {\n if (!sub.copied) {\n sub = array[i] = sub.deepCopy();\n sub.copied = true;\n }\n\n for (var j = 0; j < sub.ranges.length; j++) {\n rebaseHistSelSingle(sub.ranges[j].anchor, from, to, diff);\n rebaseHistSelSingle(sub.ranges[j].head, from, to, diff);\n }\n\n continue;\n }\n\n for (var j$1 = 0; j$1 < sub.changes.length; ++j$1) {\n var cur = sub.changes[j$1];\n\n if (to < cur.from.line) {\n cur.from = Pos(cur.from.line + diff, cur.from.ch);\n cur.to = Pos(cur.to.line + diff, cur.to.ch);\n } else if (from <= cur.to.line) {\n ok = false;\n break;\n }\n }\n\n if (!ok) {\n array.splice(0, i + 1);\n i = 0;\n }\n }\n }\n\n function rebaseHist(hist, change) {\n var from = change.from.line,\n to = change.to.line,\n diff = change.text.length - (to - from) - 1;\n rebaseHistArray(hist.done, from, to, diff);\n rebaseHistArray(hist.undone, from, to, diff);\n } // Utility for applying a change to a line by handle or number,\n // returning the number and optionally registering the line as\n // changed.\n\n\n function changeLine(doc, handle, changeType, op) {\n var no = handle,\n line = handle;\n\n if (typeof handle == \"number\") {\n line = getLine(doc, clipLine(doc, handle));\n } else {\n no = lineNo(handle);\n }\n\n if (no == null) {\n return null;\n }\n\n if (op(line, no) && doc.cm) {\n regLineChange(doc.cm, no, changeType);\n }\n\n return line;\n } // The document is represented as a BTree consisting of leaves, with\n // chunk of lines in them, and branches, with up to ten leaves or\n // other branch nodes below them. The top node is always a branch\n // node, and is the document object itself (meaning it has\n // additional methods and properties).\n //\n // All nodes have parent links. The tree is used both to go from\n // line numbers to line objects, and to go from objects to numbers.\n // It also indexes by height, and is used to convert between height\n // and line object, and to find the total height of the document.\n //\n // See also http://marijnhaverbeke.nl/blog/codemirror-line-tree.html\n\n\n function LeafChunk(lines) {\n this.lines = lines;\n this.parent = null;\n var height = 0;\n\n for (var i = 0; i < lines.length; ++i) {\n lines[i].parent = this;\n height += lines[i].height;\n }\n\n this.height = height;\n }\n\n LeafChunk.prototype = {\n chunkSize: function chunkSize() {\n return this.lines.length;\n },\n // Remove the n lines at offset 'at'.\n removeInner: function removeInner(at, n) {\n for (var i = at, e = at + n; i < e; ++i) {\n var line = this.lines[i];\n this.height -= line.height;\n cleanUpLine(line);\n signalLater(line, \"delete\");\n }\n\n this.lines.splice(at, n);\n },\n // Helper used to collapse a small branch into a single leaf.\n collapse: function collapse(lines) {\n lines.push.apply(lines, this.lines);\n },\n // Insert the given array of lines at offset 'at', count them as\n // having the given height.\n insertInner: function insertInner(at, lines, height) {\n this.height += height;\n this.lines = this.lines.slice(0, at).concat(lines).concat(this.lines.slice(at));\n\n for (var i = 0; i < lines.length; ++i) {\n lines[i].parent = this;\n }\n },\n // Used to iterate over a part of the tree.\n iterN: function iterN(at, n, op) {\n for (var e = at + n; at < e; ++at) {\n if (op(this.lines[at])) {\n return true;\n }\n }\n }\n };\n\n function BranchChunk(children) {\n this.children = children;\n var size = 0,\n height = 0;\n\n for (var i = 0; i < children.length; ++i) {\n var ch = children[i];\n size += ch.chunkSize();\n height += ch.height;\n ch.parent = this;\n }\n\n this.size = size;\n this.height = height;\n this.parent = null;\n }\n\n BranchChunk.prototype = {\n chunkSize: function chunkSize() {\n return this.size;\n },\n removeInner: function removeInner(at, n) {\n this.size -= n;\n\n for (var i = 0; i < this.children.length; ++i) {\n var child = this.children[i],\n sz = child.chunkSize();\n\n if (at < sz) {\n var rm = Math.min(n, sz - at),\n oldHeight = child.height;\n child.removeInner(at, rm);\n this.height -= oldHeight - child.height;\n\n if (sz == rm) {\n this.children.splice(i--, 1);\n child.parent = null;\n }\n\n if ((n -= rm) == 0) {\n break;\n }\n\n at = 0;\n } else {\n at -= sz;\n }\n } // If the result is smaller than 25 lines, ensure that it is a\n // single leaf node.\n\n\n if (this.size - n < 25 && (this.children.length > 1 || !(this.children[0] instanceof LeafChunk))) {\n var lines = [];\n this.collapse(lines);\n this.children = [new LeafChunk(lines)];\n this.children[0].parent = this;\n }\n },\n collapse: function collapse(lines) {\n for (var i = 0; i < this.children.length; ++i) {\n this.children[i].collapse(lines);\n }\n },\n insertInner: function insertInner(at, lines, height) {\n this.size += lines.length;\n this.height += height;\n\n for (var i = 0; i < this.children.length; ++i) {\n var child = this.children[i],\n sz = child.chunkSize();\n\n if (at <= sz) {\n child.insertInner(at, lines, height);\n\n if (child.lines && child.lines.length > 50) {\n // To avoid memory thrashing when child.lines is huge (e.g. first view of a large file), it's never spliced.\n // Instead, small slices are taken. They're taken in order because sequential memory accesses are fastest.\n var remaining = child.lines.length % 25 + 25;\n\n for (var pos = remaining; pos < child.lines.length;) {\n var leaf = new LeafChunk(child.lines.slice(pos, pos += 25));\n child.height -= leaf.height;\n this.children.splice(++i, 0, leaf);\n leaf.parent = this;\n }\n\n child.lines = child.lines.slice(0, remaining);\n this.maybeSpill();\n }\n\n break;\n }\n\n at -= sz;\n }\n },\n // When a node has grown, check whether it should be split.\n maybeSpill: function maybeSpill() {\n if (this.children.length <= 10) {\n return;\n }\n\n var me = this;\n\n do {\n var spilled = me.children.splice(me.children.length - 5, 5);\n var sibling = new BranchChunk(spilled);\n\n if (!me.parent) {\n // Become the parent node\n var copy = new BranchChunk(me.children);\n copy.parent = me;\n me.children = [copy, sibling];\n me = copy;\n } else {\n me.size -= sibling.size;\n me.height -= sibling.height;\n var myIndex = indexOf(me.parent.children, me);\n me.parent.children.splice(myIndex + 1, 0, sibling);\n }\n\n sibling.parent = me.parent;\n } while (me.children.length > 10);\n\n me.parent.maybeSpill();\n },\n iterN: function iterN(at, n, op) {\n for (var i = 0; i < this.children.length; ++i) {\n var child = this.children[i],\n sz = child.chunkSize();\n\n if (at < sz) {\n var used = Math.min(n, sz - at);\n\n if (child.iterN(at, used, op)) {\n return true;\n }\n\n if ((n -= used) == 0) {\n break;\n }\n\n at = 0;\n } else {\n at -= sz;\n }\n }\n }\n }; // Line widgets are block elements displayed above or below a line.\n\n var LineWidget = function LineWidget(doc, node, options) {\n if (options) {\n for (var opt in options) {\n if (options.hasOwnProperty(opt)) {\n this[opt] = options[opt];\n }\n }\n }\n\n this.doc = doc;\n this.node = node;\n };\n\n LineWidget.prototype.clear = function () {\n var cm = this.doc.cm,\n ws = this.line.widgets,\n line = this.line,\n no = lineNo(line);\n\n if (no == null || !ws) {\n return;\n }\n\n for (var i = 0; i < ws.length; ++i) {\n if (ws[i] == this) {\n ws.splice(i--, 1);\n }\n }\n\n if (!ws.length) {\n line.widgets = null;\n }\n\n var height = widgetHeight(this);\n updateLineHeight(line, Math.max(0, line.height - height));\n\n if (cm) {\n runInOp(cm, function () {\n adjustScrollWhenAboveVisible(cm, line, -height);\n regLineChange(cm, no, \"widget\");\n });\n signalLater(cm, \"lineWidgetCleared\", cm, this, no);\n }\n };\n\n LineWidget.prototype.changed = function () {\n var this$1 = this;\n var oldH = this.height,\n cm = this.doc.cm,\n line = this.line;\n this.height = null;\n var diff = widgetHeight(this) - oldH;\n\n if (!diff) {\n return;\n }\n\n if (!lineIsHidden(this.doc, line)) {\n updateLineHeight(line, line.height + diff);\n }\n\n if (cm) {\n runInOp(cm, function () {\n cm.curOp.forceUpdate = true;\n adjustScrollWhenAboveVisible(cm, line, diff);\n signalLater(cm, \"lineWidgetChanged\", cm, this$1, lineNo(line));\n });\n }\n };\n\n eventMixin(LineWidget);\n\n function adjustScrollWhenAboveVisible(cm, line, diff) {\n if (_heightAtLine(line) < (cm.curOp && cm.curOp.scrollTop || cm.doc.scrollTop)) {\n addToScrollTop(cm, diff);\n }\n }\n\n function addLineWidget(doc, handle, node, options) {\n var widget = new LineWidget(doc, node, options);\n var cm = doc.cm;\n\n if (cm && widget.noHScroll) {\n cm.display.alignWidgets = true;\n }\n\n changeLine(doc, handle, \"widget\", function (line) {\n var widgets = line.widgets || (line.widgets = []);\n\n if (widget.insertAt == null) {\n widgets.push(widget);\n } else {\n widgets.splice(Math.min(widgets.length - 1, Math.max(0, widget.insertAt)), 0, widget);\n }\n\n widget.line = line;\n\n if (cm && !lineIsHidden(doc, line)) {\n var aboveVisible = _heightAtLine(line) < doc.scrollTop;\n updateLineHeight(line, line.height + widgetHeight(widget));\n\n if (aboveVisible) {\n addToScrollTop(cm, widget.height);\n }\n\n cm.curOp.forceUpdate = true;\n }\n\n return true;\n });\n\n if (cm) {\n signalLater(cm, \"lineWidgetAdded\", cm, widget, typeof handle == \"number\" ? handle : lineNo(handle));\n }\n\n return widget;\n } // TEXTMARKERS\n // Created with markText and setBookmark methods. A TextMarker is a\n // handle that can be used to clear or find a marked position in the\n // document. Line objects hold arrays (markedSpans) containing\n // {from, to, marker} object pointing to such marker objects, and\n // indicating that such a marker is present on that line. Multiple\n // lines may point to the same marker when it spans across lines.\n // The spans will have null for their from/to properties when the\n // marker continues beyond the start/end of the line. Markers have\n // links back to the lines they currently touch.\n // Collapsed markers have unique ids, in order to be able to order\n // them, which is needed for uniquely determining an outer marker\n // when they overlap (they may nest, but not partially overlap).\n\n\n var nextMarkerId = 0;\n\n var TextMarker = function TextMarker(doc, type) {\n this.lines = [];\n this.type = type;\n this.doc = doc;\n this.id = ++nextMarkerId;\n }; // Clear the marker.\n\n\n TextMarker.prototype.clear = function () {\n if (this.explicitlyCleared) {\n return;\n }\n\n var cm = this.doc.cm,\n withOp = cm && !cm.curOp;\n\n if (withOp) {\n _startOperation(cm);\n }\n\n if (hasHandler(this, \"clear\")) {\n var found = this.find();\n\n if (found) {\n signalLater(this, \"clear\", found.from, found.to);\n }\n }\n\n var min = null,\n max = null;\n\n for (var i = 0; i < this.lines.length; ++i) {\n var line = this.lines[i];\n var span = getMarkedSpanFor(line.markedSpans, this);\n\n if (cm && !this.collapsed) {\n regLineChange(cm, lineNo(line), \"text\");\n } else if (cm) {\n if (span.to != null) {\n max = lineNo(line);\n }\n\n if (span.from != null) {\n min = lineNo(line);\n }\n }\n\n line.markedSpans = removeMarkedSpan(line.markedSpans, span);\n\n if (span.from == null && this.collapsed && !lineIsHidden(this.doc, line) && cm) {\n updateLineHeight(line, textHeight(cm.display));\n }\n }\n\n if (cm && this.collapsed && !cm.options.lineWrapping) {\n for (var i$1 = 0; i$1 < this.lines.length; ++i$1) {\n var visual = visualLine(this.lines[i$1]),\n len = lineLength(visual);\n\n if (len > cm.display.maxLineLength) {\n cm.display.maxLine = visual;\n cm.display.maxLineLength = len;\n cm.display.maxLineChanged = true;\n }\n }\n }\n\n if (min != null && cm && this.collapsed) {\n regChange(cm, min, max + 1);\n }\n\n this.lines.length = 0;\n this.explicitlyCleared = true;\n\n if (this.atomic && this.doc.cantEdit) {\n this.doc.cantEdit = false;\n\n if (cm) {\n reCheckSelection(cm.doc);\n }\n }\n\n if (cm) {\n signalLater(cm, \"markerCleared\", cm, this, min, max);\n }\n\n if (withOp) {\n _endOperation(cm);\n }\n\n if (this.parent) {\n this.parent.clear();\n }\n }; // Find the position of the marker in the document. Returns a {from,\n // to} object by default. Side can be passed to get a specific side\n // -- 0 (both), -1 (left), or 1 (right). When lineObj is true, the\n // Pos objects returned contain a line object, rather than a line\n // number (used to prevent looking up the same line twice).\n\n\n TextMarker.prototype.find = function (side, lineObj) {\n if (side == null && this.type == \"bookmark\") {\n side = 1;\n }\n\n var from, to;\n\n for (var i = 0; i < this.lines.length; ++i) {\n var line = this.lines[i];\n var span = getMarkedSpanFor(line.markedSpans, this);\n\n if (span.from != null) {\n from = Pos(lineObj ? line : lineNo(line), span.from);\n\n if (side == -1) {\n return from;\n }\n }\n\n if (span.to != null) {\n to = Pos(lineObj ? line : lineNo(line), span.to);\n\n if (side == 1) {\n return to;\n }\n }\n }\n\n return from && {\n from: from,\n to: to\n };\n }; // Signals that the marker's widget changed, and surrounding layout\n // should be recomputed.\n\n\n TextMarker.prototype.changed = function () {\n var this$1 = this;\n var pos = this.find(-1, true),\n widget = this,\n cm = this.doc.cm;\n\n if (!pos || !cm) {\n return;\n }\n\n runInOp(cm, function () {\n var line = pos.line,\n lineN = lineNo(pos.line);\n var view = findViewForLine(cm, lineN);\n\n if (view) {\n clearLineMeasurementCacheFor(view);\n cm.curOp.selectionChanged = cm.curOp.forceUpdate = true;\n }\n\n cm.curOp.updateMaxLine = true;\n\n if (!lineIsHidden(widget.doc, line) && widget.height != null) {\n var oldHeight = widget.height;\n widget.height = null;\n var dHeight = widgetHeight(widget) - oldHeight;\n\n if (dHeight) {\n updateLineHeight(line, line.height + dHeight);\n }\n }\n\n signalLater(cm, \"markerChanged\", cm, this$1);\n });\n };\n\n TextMarker.prototype.attachLine = function (line) {\n if (!this.lines.length && this.doc.cm) {\n var op = this.doc.cm.curOp;\n\n if (!op.maybeHiddenMarkers || indexOf(op.maybeHiddenMarkers, this) == -1) {\n (op.maybeUnhiddenMarkers || (op.maybeUnhiddenMarkers = [])).push(this);\n }\n }\n\n this.lines.push(line);\n };\n\n TextMarker.prototype.detachLine = function (line) {\n this.lines.splice(indexOf(this.lines, line), 1);\n\n if (!this.lines.length && this.doc.cm) {\n var op = this.doc.cm.curOp;\n (op.maybeHiddenMarkers || (op.maybeHiddenMarkers = [])).push(this);\n }\n };\n\n eventMixin(TextMarker); // Create a marker, wire it up to the right lines, and\n\n function _markText(doc, from, to, options, type) {\n // Shared markers (across linked documents) are handled separately\n // (markTextShared will call out to this again, once per\n // document).\n if (options && options.shared) {\n return markTextShared(doc, from, to, options, type);\n } // Ensure we are in an operation.\n\n\n if (doc.cm && !doc.cm.curOp) {\n return operation(doc.cm, _markText)(doc, from, to, options, type);\n }\n\n var marker = new TextMarker(doc, type),\n diff = cmp(from, to);\n\n if (options) {\n copyObj(options, marker, false);\n } // Don't connect empty markers unless clearWhenEmpty is false\n\n\n if (diff > 0 || diff == 0 && marker.clearWhenEmpty !== false) {\n return marker;\n }\n\n if (marker.replacedWith) {\n // Showing up as a widget implies collapsed (widget replaces text)\n marker.collapsed = true;\n marker.widgetNode = eltP(\"span\", [marker.replacedWith], \"CodeMirror-widget\");\n\n if (!options.handleMouseEvents) {\n marker.widgetNode.setAttribute(\"cm-ignore-events\", \"true\");\n }\n\n if (options.insertLeft) {\n marker.widgetNode.insertLeft = true;\n }\n }\n\n if (marker.collapsed) {\n if (conflictingCollapsedRange(doc, from.line, from, to, marker) || from.line != to.line && conflictingCollapsedRange(doc, to.line, from, to, marker)) {\n throw new Error(\"Inserting collapsed marker partially overlapping an existing one\");\n }\n\n seeCollapsedSpans();\n }\n\n if (marker.addToHistory) {\n addChangeToHistory(doc, {\n from: from,\n to: to,\n origin: \"markText\"\n }, doc.sel, NaN);\n }\n\n var curLine = from.line,\n cm = doc.cm,\n updateMaxLine;\n doc.iter(curLine, to.line + 1, function (line) {\n if (cm && marker.collapsed && !cm.options.lineWrapping && visualLine(line) == cm.display.maxLine) {\n updateMaxLine = true;\n }\n\n if (marker.collapsed && curLine != from.line) {\n updateLineHeight(line, 0);\n }\n\n addMarkedSpan(line, new MarkedSpan(marker, curLine == from.line ? from.ch : null, curLine == to.line ? to.ch : null));\n ++curLine;\n }); // lineIsHidden depends on the presence of the spans, so needs a second pass\n\n if (marker.collapsed) {\n doc.iter(from.line, to.line + 1, function (line) {\n if (lineIsHidden(doc, line)) {\n updateLineHeight(line, 0);\n }\n });\n }\n\n if (marker.clearOnEnter) {\n on(marker, \"beforeCursorEnter\", function () {\n return marker.clear();\n });\n }\n\n if (marker.readOnly) {\n seeReadOnlySpans();\n\n if (doc.history.done.length || doc.history.undone.length) {\n doc.clearHistory();\n }\n }\n\n if (marker.collapsed) {\n marker.id = ++nextMarkerId;\n marker.atomic = true;\n }\n\n if (cm) {\n // Sync editor state\n if (updateMaxLine) {\n cm.curOp.updateMaxLine = true;\n }\n\n if (marker.collapsed) {\n regChange(cm, from.line, to.line + 1);\n } else if (marker.className || marker.startStyle || marker.endStyle || marker.css || marker.attributes || marker.title) {\n for (var i = from.line; i <= to.line; i++) {\n regLineChange(cm, i, \"text\");\n }\n }\n\n if (marker.atomic) {\n reCheckSelection(cm.doc);\n }\n\n signalLater(cm, \"markerAdded\", cm, marker);\n }\n\n return marker;\n } // SHARED TEXTMARKERS\n // A shared marker spans multiple linked documents. It is\n // implemented as a meta-marker-object controlling multiple normal\n // markers.\n\n\n var SharedTextMarker = function SharedTextMarker(markers, primary) {\n this.markers = markers;\n this.primary = primary;\n\n for (var i = 0; i < markers.length; ++i) {\n markers[i].parent = this;\n }\n };\n\n SharedTextMarker.prototype.clear = function () {\n if (this.explicitlyCleared) {\n return;\n }\n\n this.explicitlyCleared = true;\n\n for (var i = 0; i < this.markers.length; ++i) {\n this.markers[i].clear();\n }\n\n signalLater(this, \"clear\");\n };\n\n SharedTextMarker.prototype.find = function (side, lineObj) {\n return this.primary.find(side, lineObj);\n };\n\n eventMixin(SharedTextMarker);\n\n function markTextShared(doc, from, to, options, type) {\n options = copyObj(options);\n options.shared = false;\n var markers = [_markText(doc, from, to, options, type)],\n primary = markers[0];\n var widget = options.widgetNode;\n linkedDocs(doc, function (doc) {\n if (widget) {\n options.widgetNode = widget.cloneNode(true);\n }\n\n markers.push(_markText(doc, _clipPos(doc, from), _clipPos(doc, to), options, type));\n\n for (var i = 0; i < doc.linked.length; ++i) {\n if (doc.linked[i].isParent) {\n return;\n }\n }\n\n primary = lst(markers);\n });\n return new SharedTextMarker(markers, primary);\n }\n\n function findSharedMarkers(doc) {\n return doc.findMarks(Pos(doc.first, 0), doc.clipPos(Pos(doc.lastLine())), function (m) {\n return m.parent;\n });\n }\n\n function copySharedMarkers(doc, markers) {\n for (var i = 0; i < markers.length; i++) {\n var marker = markers[i],\n pos = marker.find();\n var mFrom = doc.clipPos(pos.from),\n mTo = doc.clipPos(pos.to);\n\n if (cmp(mFrom, mTo)) {\n var subMark = _markText(doc, mFrom, mTo, marker.primary, marker.primary.type);\n\n marker.markers.push(subMark);\n subMark.parent = marker;\n }\n }\n }\n\n function detachSharedMarkers(markers) {\n var loop = function loop(i) {\n var marker = markers[i],\n linked = [marker.primary.doc];\n linkedDocs(marker.primary.doc, function (d) {\n return linked.push(d);\n });\n\n for (var j = 0; j < marker.markers.length; j++) {\n var subMarker = marker.markers[j];\n\n if (indexOf(linked, subMarker.doc) == -1) {\n subMarker.parent = null;\n marker.markers.splice(j--, 1);\n }\n }\n };\n\n for (var i = 0; i < markers.length; i++) {\n loop(i);\n }\n }\n\n var nextDocId = 0;\n\n var Doc = function Doc(text, mode, firstLine, lineSep, direction) {\n if (!(this instanceof Doc)) {\n return new Doc(text, mode, firstLine, lineSep, direction);\n }\n\n if (firstLine == null) {\n firstLine = 0;\n }\n\n BranchChunk.call(this, [new LeafChunk([new Line(\"\", null)])]);\n this.first = firstLine;\n this.scrollTop = this.scrollLeft = 0;\n this.cantEdit = false;\n this.cleanGeneration = 1;\n this.modeFrontier = this.highlightFrontier = firstLine;\n var start = Pos(firstLine, 0);\n this.sel = simpleSelection(start);\n this.history = new History(null);\n this.id = ++nextDocId;\n this.modeOption = mode;\n this.lineSep = lineSep;\n this.direction = direction == \"rtl\" ? \"rtl\" : \"ltr\";\n this.extend = false;\n\n if (typeof text == \"string\") {\n text = this.splitLines(text);\n }\n\n updateDoc(this, {\n from: start,\n to: start,\n text: text\n });\n setSelection(this, simpleSelection(start), sel_dontScroll);\n };\n\n Doc.prototype = createObj(BranchChunk.prototype, {\n constructor: Doc,\n // Iterate over the document. Supports two forms -- with only one\n // argument, it calls that for each line in the document. With\n // three, it iterates over the range given by the first two (with\n // the second being non-inclusive).\n iter: function iter(from, to, op) {\n if (op) {\n this.iterN(from - this.first, to - from, op);\n } else {\n this.iterN(this.first, this.first + this.size, from);\n }\n },\n // Non-public interface for adding and removing lines.\n insert: function insert(at, lines) {\n var height = 0;\n\n for (var i = 0; i < lines.length; ++i) {\n height += lines[i].height;\n }\n\n this.insertInner(at - this.first, lines, height);\n },\n remove: function remove(at, n) {\n this.removeInner(at - this.first, n);\n },\n // From here, the methods are part of the public interface. Most\n // are also available from CodeMirror (editor) instances.\n getValue: function getValue(lineSep) {\n var lines = getLines(this, this.first, this.first + this.size);\n\n if (lineSep === false) {\n return lines;\n }\n\n return lines.join(lineSep || this.lineSeparator());\n },\n setValue: docMethodOp(function (code) {\n var top = Pos(this.first, 0),\n last = this.first + this.size - 1;\n makeChange(this, {\n from: top,\n to: Pos(last, getLine(this, last).text.length),\n text: this.splitLines(code),\n origin: \"setValue\",\n full: true\n }, true);\n\n if (this.cm) {\n scrollToCoords(this.cm, 0, 0);\n }\n\n setSelection(this, simpleSelection(top), sel_dontScroll);\n }),\n replaceRange: function replaceRange(code, from, to, origin) {\n from = _clipPos(this, from);\n to = to ? _clipPos(this, to) : from;\n\n _replaceRange(this, code, from, to, origin);\n },\n getRange: function getRange(from, to, lineSep) {\n var lines = getBetween(this, _clipPos(this, from), _clipPos(this, to));\n\n if (lineSep === false) {\n return lines;\n }\n\n return lines.join(lineSep || this.lineSeparator());\n },\n getLine: function getLine(line) {\n var l = this.getLineHandle(line);\n return l && l.text;\n },\n getLineHandle: function getLineHandle(line) {\n if (isLine(this, line)) {\n return getLine(this, line);\n }\n },\n getLineNumber: function getLineNumber(line) {\n return lineNo(line);\n },\n getLineHandleVisualStart: function getLineHandleVisualStart(line) {\n if (typeof line == \"number\") {\n line = getLine(this, line);\n }\n\n return visualLine(line);\n },\n lineCount: function lineCount() {\n return this.size;\n },\n firstLine: function firstLine() {\n return this.first;\n },\n lastLine: function lastLine() {\n return this.first + this.size - 1;\n },\n clipPos: function clipPos(pos) {\n return _clipPos(this, pos);\n },\n getCursor: function getCursor(start) {\n var range = this.sel.primary(),\n pos;\n\n if (start == null || start == \"head\") {\n pos = range.head;\n } else if (start == \"anchor\") {\n pos = range.anchor;\n } else if (start == \"end\" || start == \"to\" || start === false) {\n pos = range.to();\n } else {\n pos = range.from();\n }\n\n return pos;\n },\n listSelections: function listSelections() {\n return this.sel.ranges;\n },\n somethingSelected: function somethingSelected() {\n return this.sel.somethingSelected();\n },\n setCursor: docMethodOp(function (line, ch, options) {\n setSimpleSelection(this, _clipPos(this, typeof line == \"number\" ? Pos(line, ch || 0) : line), null, options);\n }),\n setSelection: docMethodOp(function (anchor, head, options) {\n setSimpleSelection(this, _clipPos(this, anchor), _clipPos(this, head || anchor), options);\n }),\n extendSelection: docMethodOp(function (head, other, options) {\n extendSelection(this, _clipPos(this, head), other && _clipPos(this, other), options);\n }),\n extendSelections: docMethodOp(function (heads, options) {\n extendSelections(this, clipPosArray(this, heads), options);\n }),\n extendSelectionsBy: docMethodOp(function (f, options) {\n var heads = map(this.sel.ranges, f);\n extendSelections(this, clipPosArray(this, heads), options);\n }),\n setSelections: docMethodOp(function (ranges, primary, options) {\n if (!ranges.length) {\n return;\n }\n\n var out = [];\n\n for (var i = 0; i < ranges.length; i++) {\n out[i] = new Range(_clipPos(this, ranges[i].anchor), _clipPos(this, ranges[i].head));\n }\n\n if (primary == null) {\n primary = Math.min(ranges.length - 1, this.sel.primIndex);\n }\n\n setSelection(this, normalizeSelection(this.cm, out, primary), options);\n }),\n addSelection: docMethodOp(function (anchor, head, options) {\n var ranges = this.sel.ranges.slice(0);\n ranges.push(new Range(_clipPos(this, anchor), _clipPos(this, head || anchor)));\n setSelection(this, normalizeSelection(this.cm, ranges, ranges.length - 1), options);\n }),\n getSelection: function getSelection(lineSep) {\n var ranges = this.sel.ranges,\n lines;\n\n for (var i = 0; i < ranges.length; i++) {\n var sel = getBetween(this, ranges[i].from(), ranges[i].to());\n lines = lines ? lines.concat(sel) : sel;\n }\n\n if (lineSep === false) {\n return lines;\n } else {\n return lines.join(lineSep || this.lineSeparator());\n }\n },\n getSelections: function getSelections(lineSep) {\n var parts = [],\n ranges = this.sel.ranges;\n\n for (var i = 0; i < ranges.length; i++) {\n var sel = getBetween(this, ranges[i].from(), ranges[i].to());\n\n if (lineSep !== false) {\n sel = sel.join(lineSep || this.lineSeparator());\n }\n\n parts[i] = sel;\n }\n\n return parts;\n },\n replaceSelection: function replaceSelection(code, collapse, origin) {\n var dup = [];\n\n for (var i = 0; i < this.sel.ranges.length; i++) {\n dup[i] = code;\n }\n\n this.replaceSelections(dup, collapse, origin || \"+input\");\n },\n replaceSelections: docMethodOp(function (code, collapse, origin) {\n var changes = [],\n sel = this.sel;\n\n for (var i = 0; i < sel.ranges.length; i++) {\n var range = sel.ranges[i];\n changes[i] = {\n from: range.from(),\n to: range.to(),\n text: this.splitLines(code[i]),\n origin: origin\n };\n }\n\n var newSel = collapse && collapse != \"end\" && computeReplacedSel(this, changes, collapse);\n\n for (var i$1 = changes.length - 1; i$1 >= 0; i$1--) {\n makeChange(this, changes[i$1]);\n }\n\n if (newSel) {\n setSelectionReplaceHistory(this, newSel);\n } else if (this.cm) {\n ensureCursorVisible(this.cm);\n }\n }),\n undo: docMethodOp(function () {\n makeChangeFromHistory(this, \"undo\");\n }),\n redo: docMethodOp(function () {\n makeChangeFromHistory(this, \"redo\");\n }),\n undoSelection: docMethodOp(function () {\n makeChangeFromHistory(this, \"undo\", true);\n }),\n redoSelection: docMethodOp(function () {\n makeChangeFromHistory(this, \"redo\", true);\n }),\n setExtending: function setExtending(val) {\n this.extend = val;\n },\n getExtending: function getExtending() {\n return this.extend;\n },\n historySize: function historySize() {\n var hist = this.history,\n done = 0,\n undone = 0;\n\n for (var i = 0; i < hist.done.length; i++) {\n if (!hist.done[i].ranges) {\n ++done;\n }\n }\n\n for (var i$1 = 0; i$1 < hist.undone.length; i$1++) {\n if (!hist.undone[i$1].ranges) {\n ++undone;\n }\n }\n\n return {\n undo: done,\n redo: undone\n };\n },\n clearHistory: function clearHistory() {\n var this$1 = this;\n this.history = new History(this.history.maxGeneration);\n linkedDocs(this, function (doc) {\n return doc.history = this$1.history;\n }, true);\n },\n markClean: function markClean() {\n this.cleanGeneration = this.changeGeneration(true);\n },\n changeGeneration: function changeGeneration(forceSplit) {\n if (forceSplit) {\n this.history.lastOp = this.history.lastSelOp = this.history.lastOrigin = null;\n }\n\n return this.history.generation;\n },\n isClean: function isClean(gen) {\n return this.history.generation == (gen || this.cleanGeneration);\n },\n getHistory: function getHistory() {\n return {\n done: copyHistoryArray(this.history.done),\n undone: copyHistoryArray(this.history.undone)\n };\n },\n setHistory: function setHistory(histData) {\n var hist = this.history = new History(this.history.maxGeneration);\n hist.done = copyHistoryArray(histData.done.slice(0), null, true);\n hist.undone = copyHistoryArray(histData.undone.slice(0), null, true);\n },\n setGutterMarker: docMethodOp(function (line, gutterID, value) {\n return changeLine(this, line, \"gutter\", function (line) {\n var markers = line.gutterMarkers || (line.gutterMarkers = {});\n markers[gutterID] = value;\n\n if (!value && isEmpty(markers)) {\n line.gutterMarkers = null;\n }\n\n return true;\n });\n }),\n clearGutter: docMethodOp(function (gutterID) {\n var this$1 = this;\n this.iter(function (line) {\n if (line.gutterMarkers && line.gutterMarkers[gutterID]) {\n changeLine(this$1, line, \"gutter\", function () {\n line.gutterMarkers[gutterID] = null;\n\n if (isEmpty(line.gutterMarkers)) {\n line.gutterMarkers = null;\n }\n\n return true;\n });\n }\n });\n }),\n lineInfo: function lineInfo(line) {\n var n;\n\n if (typeof line == \"number\") {\n if (!isLine(this, line)) {\n return null;\n }\n\n n = line;\n line = getLine(this, line);\n\n if (!line) {\n return null;\n }\n } else {\n n = lineNo(line);\n\n if (n == null) {\n return null;\n }\n }\n\n return {\n line: n,\n handle: line,\n text: line.text,\n gutterMarkers: line.gutterMarkers,\n textClass: line.textClass,\n bgClass: line.bgClass,\n wrapClass: line.wrapClass,\n widgets: line.widgets\n };\n },\n addLineClass: docMethodOp(function (handle, where, cls) {\n return changeLine(this, handle, where == \"gutter\" ? \"gutter\" : \"class\", function (line) {\n var prop = where == \"text\" ? \"textClass\" : where == \"background\" ? \"bgClass\" : where == \"gutter\" ? \"gutterClass\" : \"wrapClass\";\n\n if (!line[prop]) {\n line[prop] = cls;\n } else if (classTest(cls).test(line[prop])) {\n return false;\n } else {\n line[prop] += \" \" + cls;\n }\n\n return true;\n });\n }),\n removeLineClass: docMethodOp(function (handle, where, cls) {\n return changeLine(this, handle, where == \"gutter\" ? \"gutter\" : \"class\", function (line) {\n var prop = where == \"text\" ? \"textClass\" : where == \"background\" ? \"bgClass\" : where == \"gutter\" ? \"gutterClass\" : \"wrapClass\";\n var cur = line[prop];\n\n if (!cur) {\n return false;\n } else if (cls == null) {\n line[prop] = null;\n } else {\n var found = cur.match(classTest(cls));\n\n if (!found) {\n return false;\n }\n\n var end = found.index + found[0].length;\n line[prop] = cur.slice(0, found.index) + (!found.index || end == cur.length ? \"\" : \" \") + cur.slice(end) || null;\n }\n\n return true;\n });\n }),\n addLineWidget: docMethodOp(function (handle, node, options) {\n return addLineWidget(this, handle, node, options);\n }),\n removeLineWidget: function removeLineWidget(widget) {\n widget.clear();\n },\n markText: function markText(from, to, options) {\n return _markText(this, _clipPos(this, from), _clipPos(this, to), options, options && options.type || \"range\");\n },\n setBookmark: function setBookmark(pos, options) {\n var realOpts = {\n replacedWith: options && (options.nodeType == null ? options.widget : options),\n insertLeft: options && options.insertLeft,\n clearWhenEmpty: false,\n shared: options && options.shared,\n handleMouseEvents: options && options.handleMouseEvents\n };\n pos = _clipPos(this, pos);\n return _markText(this, pos, pos, realOpts, \"bookmark\");\n },\n findMarksAt: function findMarksAt(pos) {\n pos = _clipPos(this, pos);\n var markers = [],\n spans = getLine(this, pos.line).markedSpans;\n\n if (spans) {\n for (var i = 0; i < spans.length; ++i) {\n var span = spans[i];\n\n if ((span.from == null || span.from <= pos.ch) && (span.to == null || span.to >= pos.ch)) {\n markers.push(span.marker.parent || span.marker);\n }\n }\n }\n\n return markers;\n },\n findMarks: function findMarks(from, to, filter) {\n from = _clipPos(this, from);\n to = _clipPos(this, to);\n var found = [],\n lineNo = from.line;\n this.iter(from.line, to.line + 1, function (line) {\n var spans = line.markedSpans;\n\n if (spans) {\n for (var i = 0; i < spans.length; i++) {\n var span = spans[i];\n\n if (!(span.to != null && lineNo == from.line && from.ch >= span.to || span.from == null && lineNo != from.line || span.from != null && lineNo == to.line && span.from >= to.ch) && (!filter || filter(span.marker))) {\n found.push(span.marker.parent || span.marker);\n }\n }\n }\n\n ++lineNo;\n });\n return found;\n },\n getAllMarks: function getAllMarks() {\n var markers = [];\n this.iter(function (line) {\n var sps = line.markedSpans;\n\n if (sps) {\n for (var i = 0; i < sps.length; ++i) {\n if (sps[i].from != null) {\n markers.push(sps[i].marker);\n }\n }\n }\n });\n return markers;\n },\n posFromIndex: function posFromIndex(off) {\n var ch,\n lineNo = this.first,\n sepSize = this.lineSeparator().length;\n this.iter(function (line) {\n var sz = line.text.length + sepSize;\n\n if (sz > off) {\n ch = off;\n return true;\n }\n\n off -= sz;\n ++lineNo;\n });\n return _clipPos(this, Pos(lineNo, ch));\n },\n indexFromPos: function indexFromPos(coords) {\n coords = _clipPos(this, coords);\n var index = coords.ch;\n\n if (coords.line < this.first || coords.ch < 0) {\n return 0;\n }\n\n var sepSize = this.lineSeparator().length;\n this.iter(this.first, coords.line, function (line) {\n // iter aborts when callback returns a truthy value\n index += line.text.length + sepSize;\n });\n return index;\n },\n copy: function copy(copyHistory) {\n var doc = new Doc(getLines(this, this.first, this.first + this.size), this.modeOption, this.first, this.lineSep, this.direction);\n doc.scrollTop = this.scrollTop;\n doc.scrollLeft = this.scrollLeft;\n doc.sel = this.sel;\n doc.extend = false;\n\n if (copyHistory) {\n doc.history.undoDepth = this.history.undoDepth;\n doc.setHistory(this.getHistory());\n }\n\n return doc;\n },\n linkedDoc: function linkedDoc(options) {\n if (!options) {\n options = {};\n }\n\n var from = this.first,\n to = this.first + this.size;\n\n if (options.from != null && options.from > from) {\n from = options.from;\n }\n\n if (options.to != null && options.to < to) {\n to = options.to;\n }\n\n var copy = new Doc(getLines(this, from, to), options.mode || this.modeOption, from, this.lineSep, this.direction);\n\n if (options.sharedHist) {\n copy.history = this.history;\n }\n\n (this.linked || (this.linked = [])).push({\n doc: copy,\n sharedHist: options.sharedHist\n });\n copy.linked = [{\n doc: this,\n isParent: true,\n sharedHist: options.sharedHist\n }];\n copySharedMarkers(copy, findSharedMarkers(this));\n return copy;\n },\n unlinkDoc: function unlinkDoc(other) {\n if (other instanceof CodeMirror) {\n other = other.doc;\n }\n\n if (this.linked) {\n for (var i = 0; i < this.linked.length; ++i) {\n var link = this.linked[i];\n\n if (link.doc != other) {\n continue;\n }\n\n this.linked.splice(i, 1);\n other.unlinkDoc(this);\n detachSharedMarkers(findSharedMarkers(this));\n break;\n }\n } // If the histories were shared, split them again\n\n\n if (other.history == this.history) {\n var splitIds = [other.id];\n linkedDocs(other, function (doc) {\n return splitIds.push(doc.id);\n }, true);\n other.history = new History(null);\n other.history.done = copyHistoryArray(this.history.done, splitIds);\n other.history.undone = copyHistoryArray(this.history.undone, splitIds);\n }\n },\n iterLinkedDocs: function iterLinkedDocs(f) {\n linkedDocs(this, f);\n },\n getMode: function getMode() {\n return this.mode;\n },\n getEditor: function getEditor() {\n return this.cm;\n },\n splitLines: function splitLines(str) {\n if (this.lineSep) {\n return str.split(this.lineSep);\n }\n\n return splitLinesAuto(str);\n },\n lineSeparator: function lineSeparator() {\n return this.lineSep || \"\\n\";\n },\n setDirection: docMethodOp(function (dir) {\n if (dir != \"rtl\") {\n dir = \"ltr\";\n }\n\n if (dir == this.direction) {\n return;\n }\n\n this.direction = dir;\n this.iter(function (line) {\n return line.order = null;\n });\n\n if (this.cm) {\n directionChanged(this.cm);\n }\n })\n }); // Public alias.\n\n Doc.prototype.eachLine = Doc.prototype.iter; // Kludge to work around strange IE behavior where it'll sometimes\n // re-fire a series of drag-related events right after the drop (#1551)\n\n var lastDrop = 0;\n\n function onDrop(e) {\n var cm = this;\n clearDragCursor(cm);\n\n if (signalDOMEvent(cm, e) || eventInWidget(cm.display, e)) {\n return;\n }\n\n e_preventDefault(e);\n\n if (ie) {\n lastDrop = +new Date();\n }\n\n var pos = posFromMouse(cm, e, true),\n files = e.dataTransfer.files;\n\n if (!pos || cm.isReadOnly()) {\n return;\n } // Might be a file drop, in which case we simply extract the text\n // and insert it.\n\n\n if (files && files.length && window.FileReader && window.File) {\n var n = files.length,\n text = Array(n),\n read = 0;\n\n var markAsReadAndPasteIfAllFilesAreRead = function markAsReadAndPasteIfAllFilesAreRead() {\n if (++read == n) {\n operation(cm, function () {\n pos = _clipPos(cm.doc, pos);\n var change = {\n from: pos,\n to: pos,\n text: cm.doc.splitLines(text.filter(function (t) {\n return t != null;\n }).join(cm.doc.lineSeparator())),\n origin: \"paste\"\n };\n makeChange(cm.doc, change);\n setSelectionReplaceHistory(cm.doc, simpleSelection(_clipPos(cm.doc, pos), _clipPos(cm.doc, changeEnd(change))));\n })();\n }\n };\n\n var readTextFromFile = function readTextFromFile(file, i) {\n if (cm.options.allowDropFileTypes && indexOf(cm.options.allowDropFileTypes, file.type) == -1) {\n markAsReadAndPasteIfAllFilesAreRead();\n return;\n }\n\n var reader = new FileReader();\n\n reader.onerror = function () {\n return markAsReadAndPasteIfAllFilesAreRead();\n };\n\n reader.onload = function () {\n var content = reader.result;\n\n if (/[\\x00-\\x08\\x0e-\\x1f]{2}/.test(content)) {\n markAsReadAndPasteIfAllFilesAreRead();\n return;\n }\n\n text[i] = content;\n markAsReadAndPasteIfAllFilesAreRead();\n };\n\n reader.readAsText(file);\n };\n\n for (var i = 0; i < files.length; i++) {\n readTextFromFile(files[i], i);\n }\n } else {\n // Normal drop\n // Don't do a replace if the drop happened inside of the selected text.\n if (cm.state.draggingText && cm.doc.sel.contains(pos) > -1) {\n cm.state.draggingText(e); // Ensure the editor is re-focused\n\n setTimeout(function () {\n return cm.display.input.focus();\n }, 20);\n return;\n }\n\n try {\n var text$1 = e.dataTransfer.getData(\"Text\");\n\n if (text$1) {\n var selected;\n\n if (cm.state.draggingText && !cm.state.draggingText.copy) {\n selected = cm.listSelections();\n }\n\n setSelectionNoUndo(cm.doc, simpleSelection(pos, pos));\n\n if (selected) {\n for (var i$1 = 0; i$1 < selected.length; ++i$1) {\n _replaceRange(cm.doc, \"\", selected[i$1].anchor, selected[i$1].head, \"drag\");\n }\n }\n\n cm.replaceSelection(text$1, \"around\", \"paste\");\n cm.display.input.focus();\n }\n } catch (e) {}\n }\n }\n\n function onDragStart(cm, e) {\n if (ie && (!cm.state.draggingText || +new Date() - lastDrop < 100)) {\n e_stop(e);\n return;\n }\n\n if (signalDOMEvent(cm, e) || eventInWidget(cm.display, e)) {\n return;\n }\n\n e.dataTransfer.setData(\"Text\", cm.getSelection());\n e.dataTransfer.effectAllowed = \"copyMove\"; // Use dummy image instead of default browsers image.\n // Recent Safari (~6.0.2) have a tendency to segfault when this happens, so we don't do it there.\n\n if (e.dataTransfer.setDragImage && !safari) {\n var img = elt(\"img\", null, null, \"position: fixed; left: 0; top: 0;\");\n img.src = \"data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\";\n\n if (presto) {\n img.width = img.height = 1;\n cm.display.wrapper.appendChild(img); // Force a relayout, or Opera won't use our image for some obscure reason\n\n img._top = img.offsetTop;\n }\n\n e.dataTransfer.setDragImage(img, 0, 0);\n\n if (presto) {\n img.parentNode.removeChild(img);\n }\n }\n }\n\n function onDragOver(cm, e) {\n var pos = posFromMouse(cm, e);\n\n if (!pos) {\n return;\n }\n\n var frag = document.createDocumentFragment();\n drawSelectionCursor(cm, pos, frag);\n\n if (!cm.display.dragCursor) {\n cm.display.dragCursor = elt(\"div\", null, \"CodeMirror-cursors CodeMirror-dragcursors\");\n cm.display.lineSpace.insertBefore(cm.display.dragCursor, cm.display.cursorDiv);\n }\n\n removeChildrenAndAdd(cm.display.dragCursor, frag);\n }\n\n function clearDragCursor(cm) {\n if (cm.display.dragCursor) {\n cm.display.lineSpace.removeChild(cm.display.dragCursor);\n cm.display.dragCursor = null;\n }\n } // These must be handled carefully, because naively registering a\n // handler for each editor will cause the editors to never be\n // garbage collected.\n\n\n function forEachCodeMirror(f) {\n if (!document.getElementsByClassName) {\n return;\n }\n\n var byClass = document.getElementsByClassName(\"CodeMirror\"),\n editors = [];\n\n for (var i = 0; i < byClass.length; i++) {\n var cm = byClass[i].CodeMirror;\n\n if (cm) {\n editors.push(cm);\n }\n }\n\n if (editors.length) {\n editors[0].operation(function () {\n for (var i = 0; i < editors.length; i++) {\n f(editors[i]);\n }\n });\n }\n }\n\n var globalsRegistered = false;\n\n function ensureGlobalHandlers() {\n if (globalsRegistered) {\n return;\n }\n\n registerGlobalHandlers();\n globalsRegistered = true;\n }\n\n function registerGlobalHandlers() {\n // When the window resizes, we need to refresh active editors.\n var resizeTimer;\n on(window, \"resize\", function () {\n if (resizeTimer == null) {\n resizeTimer = setTimeout(function () {\n resizeTimer = null;\n forEachCodeMirror(onResize);\n }, 100);\n }\n }); // When the window loses focus, we want to show the editor as blurred\n\n on(window, \"blur\", function () {\n return forEachCodeMirror(onBlur);\n });\n } // Called when the window resizes\n\n\n function onResize(cm) {\n var d = cm.display; // Might be a text scaling operation, clear size caches.\n\n d.cachedCharWidth = d.cachedTextHeight = d.cachedPaddingH = null;\n d.scrollbarsClipped = false;\n cm.setSize();\n }\n\n var keyNames = {\n 3: \"Pause\",\n 8: \"Backspace\",\n 9: \"Tab\",\n 13: \"Enter\",\n 16: \"Shift\",\n 17: \"Ctrl\",\n 18: \"Alt\",\n 19: \"Pause\",\n 20: \"CapsLock\",\n 27: \"Esc\",\n 32: \"Space\",\n 33: \"PageUp\",\n 34: \"PageDown\",\n 35: \"End\",\n 36: \"Home\",\n 37: \"Left\",\n 38: \"Up\",\n 39: \"Right\",\n 40: \"Down\",\n 44: \"PrintScrn\",\n 45: \"Insert\",\n 46: \"Delete\",\n 59: \";\",\n 61: \"=\",\n 91: \"Mod\",\n 92: \"Mod\",\n 93: \"Mod\",\n 106: \"*\",\n 107: \"=\",\n 109: \"-\",\n 110: \".\",\n 111: \"/\",\n 145: \"ScrollLock\",\n 173: \"-\",\n 186: \";\",\n 187: \"=\",\n 188: \",\",\n 189: \"-\",\n 190: \".\",\n 191: \"/\",\n 192: \"`\",\n 219: \"[\",\n 220: \"\\\\\",\n 221: \"]\",\n 222: \"'\",\n 63232: \"Up\",\n 63233: \"Down\",\n 63234: \"Left\",\n 63235: \"Right\",\n 63272: \"Delete\",\n 63273: \"Home\",\n 63275: \"End\",\n 63276: \"PageUp\",\n 63277: \"PageDown\",\n 63302: \"Insert\"\n }; // Number keys\n\n for (var i = 0; i < 10; i++) {\n keyNames[i + 48] = keyNames[i + 96] = String(i);\n } // Alphabetic keys\n\n\n for (var i$1 = 65; i$1 <= 90; i$1++) {\n keyNames[i$1] = String.fromCharCode(i$1);\n } // Function keys\n\n\n for (var i$2 = 1; i$2 <= 12; i$2++) {\n keyNames[i$2 + 111] = keyNames[i$2 + 63235] = \"F\" + i$2;\n }\n\n var keyMap = {};\n keyMap.basic = {\n \"Left\": \"goCharLeft\",\n \"Right\": \"goCharRight\",\n \"Up\": \"goLineUp\",\n \"Down\": \"goLineDown\",\n \"End\": \"goLineEnd\",\n \"Home\": \"goLineStartSmart\",\n \"PageUp\": \"goPageUp\",\n \"PageDown\": \"goPageDown\",\n \"Delete\": \"delCharAfter\",\n \"Backspace\": \"delCharBefore\",\n \"Shift-Backspace\": \"delCharBefore\",\n \"Tab\": \"defaultTab\",\n \"Shift-Tab\": \"indentAuto\",\n \"Enter\": \"newlineAndIndent\",\n \"Insert\": \"toggleOverwrite\",\n \"Esc\": \"singleSelection\"\n }; // Note that the save and find-related commands aren't defined by\n // default. User code or addons can define them. Unknown commands\n // are simply ignored.\n\n keyMap.pcDefault = {\n \"Ctrl-A\": \"selectAll\",\n \"Ctrl-D\": \"deleteLine\",\n \"Ctrl-Z\": \"undo\",\n \"Shift-Ctrl-Z\": \"redo\",\n \"Ctrl-Y\": \"redo\",\n \"Ctrl-Home\": \"goDocStart\",\n \"Ctrl-End\": \"goDocEnd\",\n \"Ctrl-Up\": \"goLineUp\",\n \"Ctrl-Down\": \"goLineDown\",\n \"Ctrl-Left\": \"goGroupLeft\",\n \"Ctrl-Right\": \"goGroupRight\",\n \"Alt-Left\": \"goLineStart\",\n \"Alt-Right\": \"goLineEnd\",\n \"Ctrl-Backspace\": \"delGroupBefore\",\n \"Ctrl-Delete\": \"delGroupAfter\",\n \"Ctrl-S\": \"save\",\n \"Ctrl-F\": \"find\",\n \"Ctrl-G\": \"findNext\",\n \"Shift-Ctrl-G\": \"findPrev\",\n \"Shift-Ctrl-F\": \"replace\",\n \"Shift-Ctrl-R\": \"replaceAll\",\n \"Ctrl-[\": \"indentLess\",\n \"Ctrl-]\": \"indentMore\",\n \"Ctrl-U\": \"undoSelection\",\n \"Shift-Ctrl-U\": \"redoSelection\",\n \"Alt-U\": \"redoSelection\",\n \"fallthrough\": \"basic\"\n }; // Very basic readline/emacs-style bindings, which are standard on Mac.\n\n keyMap.emacsy = {\n \"Ctrl-F\": \"goCharRight\",\n \"Ctrl-B\": \"goCharLeft\",\n \"Ctrl-P\": \"goLineUp\",\n \"Ctrl-N\": \"goLineDown\",\n \"Alt-F\": \"goWordRight\",\n \"Alt-B\": \"goWordLeft\",\n \"Ctrl-A\": \"goLineStart\",\n \"Ctrl-E\": \"goLineEnd\",\n \"Ctrl-V\": \"goPageDown\",\n \"Shift-Ctrl-V\": \"goPageUp\",\n \"Ctrl-D\": \"delCharAfter\",\n \"Ctrl-H\": \"delCharBefore\",\n \"Alt-D\": \"delWordAfter\",\n \"Alt-Backspace\": \"delWordBefore\",\n \"Ctrl-K\": \"killLine\",\n \"Ctrl-T\": \"transposeChars\",\n \"Ctrl-O\": \"openLine\"\n };\n keyMap.macDefault = {\n \"Cmd-A\": \"selectAll\",\n \"Cmd-D\": \"deleteLine\",\n \"Cmd-Z\": \"undo\",\n \"Shift-Cmd-Z\": \"redo\",\n \"Cmd-Y\": \"redo\",\n \"Cmd-Home\": \"goDocStart\",\n \"Cmd-Up\": \"goDocStart\",\n \"Cmd-End\": \"goDocEnd\",\n \"Cmd-Down\": \"goDocEnd\",\n \"Alt-Left\": \"goGroupLeft\",\n \"Alt-Right\": \"goGroupRight\",\n \"Cmd-Left\": \"goLineLeft\",\n \"Cmd-Right\": \"goLineRight\",\n \"Alt-Backspace\": \"delGroupBefore\",\n \"Ctrl-Alt-Backspace\": \"delGroupAfter\",\n \"Alt-Delete\": \"delGroupAfter\",\n \"Cmd-S\": \"save\",\n \"Cmd-F\": \"find\",\n \"Cmd-G\": \"findNext\",\n \"Shift-Cmd-G\": \"findPrev\",\n \"Cmd-Alt-F\": \"replace\",\n \"Shift-Cmd-Alt-F\": \"replaceAll\",\n \"Cmd-[\": \"indentLess\",\n \"Cmd-]\": \"indentMore\",\n \"Cmd-Backspace\": \"delWrappedLineLeft\",\n \"Cmd-Delete\": \"delWrappedLineRight\",\n \"Cmd-U\": \"undoSelection\",\n \"Shift-Cmd-U\": \"redoSelection\",\n \"Ctrl-Up\": \"goDocStart\",\n \"Ctrl-Down\": \"goDocEnd\",\n \"fallthrough\": [\"basic\", \"emacsy\"]\n };\n keyMap[\"default\"] = mac ? keyMap.macDefault : keyMap.pcDefault; // KEYMAP DISPATCH\n\n function normalizeKeyName(name) {\n var parts = name.split(/-(?!$)/);\n name = parts[parts.length - 1];\n var alt, ctrl, shift, cmd;\n\n for (var i = 0; i < parts.length - 1; i++) {\n var mod = parts[i];\n\n if (/^(cmd|meta|m)$/i.test(mod)) {\n cmd = true;\n } else if (/^a(lt)?$/i.test(mod)) {\n alt = true;\n } else if (/^(c|ctrl|control)$/i.test(mod)) {\n ctrl = true;\n } else if (/^s(hift)?$/i.test(mod)) {\n shift = true;\n } else {\n throw new Error(\"Unrecognized modifier name: \" + mod);\n }\n }\n\n if (alt) {\n name = \"Alt-\" + name;\n }\n\n if (ctrl) {\n name = \"Ctrl-\" + name;\n }\n\n if (cmd) {\n name = \"Cmd-\" + name;\n }\n\n if (shift) {\n name = \"Shift-\" + name;\n }\n\n return name;\n } // This is a kludge to keep keymaps mostly working as raw objects\n // (backwards compatibility) while at the same time support features\n // like normalization and multi-stroke key bindings. It compiles a\n // new normalized keymap, and then updates the old object to reflect\n // this.\n\n\n function normalizeKeyMap(keymap) {\n var copy = {};\n\n for (var keyname in keymap) {\n if (keymap.hasOwnProperty(keyname)) {\n var value = keymap[keyname];\n\n if (/^(name|fallthrough|(de|at)tach)$/.test(keyname)) {\n continue;\n }\n\n if (value == \"...\") {\n delete keymap[keyname];\n continue;\n }\n\n var keys = map(keyname.split(\" \"), normalizeKeyName);\n\n for (var i = 0; i < keys.length; i++) {\n var val = void 0,\n name = void 0;\n\n if (i == keys.length - 1) {\n name = keys.join(\" \");\n val = value;\n } else {\n name = keys.slice(0, i + 1).join(\" \");\n val = \"...\";\n }\n\n var prev = copy[name];\n\n if (!prev) {\n copy[name] = val;\n } else if (prev != val) {\n throw new Error(\"Inconsistent bindings for \" + name);\n }\n }\n\n delete keymap[keyname];\n }\n }\n\n for (var prop in copy) {\n keymap[prop] = copy[prop];\n }\n\n return keymap;\n }\n\n function lookupKey(key, map, handle, context) {\n map = getKeyMap(map);\n var found = map.call ? map.call(key, context) : map[key];\n\n if (found === false) {\n return \"nothing\";\n }\n\n if (found === \"...\") {\n return \"multi\";\n }\n\n if (found != null && handle(found)) {\n return \"handled\";\n }\n\n if (map.fallthrough) {\n if (Object.prototype.toString.call(map.fallthrough) != \"[object Array]\") {\n return lookupKey(key, map.fallthrough, handle, context);\n }\n\n for (var i = 0; i < map.fallthrough.length; i++) {\n var result = lookupKey(key, map.fallthrough[i], handle, context);\n\n if (result) {\n return result;\n }\n }\n }\n } // Modifier key presses don't count as 'real' key presses for the\n // purpose of keymap fallthrough.\n\n\n function isModifierKey(value) {\n var name = typeof value == \"string\" ? value : keyNames[value.keyCode];\n return name == \"Ctrl\" || name == \"Alt\" || name == \"Shift\" || name == \"Mod\";\n }\n\n function addModifierNames(name, event, noShift) {\n var base = name;\n\n if (event.altKey && base != \"Alt\") {\n name = \"Alt-\" + name;\n }\n\n if ((flipCtrlCmd ? event.metaKey : event.ctrlKey) && base != \"Ctrl\") {\n name = \"Ctrl-\" + name;\n }\n\n if ((flipCtrlCmd ? event.ctrlKey : event.metaKey) && base != \"Cmd\") {\n name = \"Cmd-\" + name;\n }\n\n if (!noShift && event.shiftKey && base != \"Shift\") {\n name = \"Shift-\" + name;\n }\n\n return name;\n } // Look up the name of a key as indicated by an event object.\n\n\n function keyName(event, noShift) {\n if (presto && event.keyCode == 34 && event[\"char\"]) {\n return false;\n }\n\n var name = keyNames[event.keyCode];\n\n if (name == null || event.altGraphKey) {\n return false;\n } // Ctrl-ScrollLock has keyCode 3, same as Ctrl-Pause,\n // so we'll use event.code when available (Chrome 48+, FF 38+, Safari 10.1+)\n\n\n if (event.keyCode == 3 && event.code) {\n name = event.code;\n }\n\n return addModifierNames(name, event, noShift);\n }\n\n function getKeyMap(val) {\n return typeof val == \"string\" ? keyMap[val] : val;\n } // Helper for deleting text near the selection(s), used to implement\n // backspace, delete, and similar functionality.\n\n\n function deleteNearSelection(cm, compute) {\n var ranges = cm.doc.sel.ranges,\n kill = []; // Build up a set of ranges to kill first, merging overlapping\n // ranges.\n\n for (var i = 0; i < ranges.length; i++) {\n var toKill = compute(ranges[i]);\n\n while (kill.length && cmp(toKill.from, lst(kill).to) <= 0) {\n var replaced = kill.pop();\n\n if (cmp(replaced.from, toKill.from) < 0) {\n toKill.from = replaced.from;\n break;\n }\n }\n\n kill.push(toKill);\n } // Next, remove those actual ranges.\n\n\n runInOp(cm, function () {\n for (var i = kill.length - 1; i >= 0; i--) {\n _replaceRange(cm.doc, \"\", kill[i].from, kill[i].to, \"+delete\");\n }\n\n ensureCursorVisible(cm);\n });\n }\n\n function moveCharLogically(line, ch, dir) {\n var target = skipExtendingChars(line.text, ch + dir, dir);\n return target < 0 || target > line.text.length ? null : target;\n }\n\n function moveLogically(line, start, dir) {\n var ch = moveCharLogically(line, start.ch, dir);\n return ch == null ? null : new Pos(start.line, ch, dir < 0 ? \"after\" : \"before\");\n }\n\n function endOfLine(visually, cm, lineObj, lineNo, dir) {\n if (visually) {\n if (cm.doc.direction == \"rtl\") {\n dir = -dir;\n }\n\n var order = getOrder(lineObj, cm.doc.direction);\n\n if (order) {\n var part = dir < 0 ? lst(order) : order[0];\n var moveInStorageOrder = dir < 0 == (part.level == 1);\n var sticky = moveInStorageOrder ? \"after\" : \"before\";\n var ch; // With a wrapped rtl chunk (possibly spanning multiple bidi parts),\n // it could be that the last bidi part is not on the last visual line,\n // since visual lines contain content order-consecutive chunks.\n // Thus, in rtl, we are looking for the first (content-order) character\n // in the rtl chunk that is on the last line (that is, the same line\n // as the last (content-order) character).\n\n if (part.level > 0 || cm.doc.direction == \"rtl\") {\n var prep = prepareMeasureForLine(cm, lineObj);\n ch = dir < 0 ? lineObj.text.length - 1 : 0;\n var targetTop = measureCharPrepared(cm, prep, ch).top;\n ch = findFirst(function (ch) {\n return measureCharPrepared(cm, prep, ch).top == targetTop;\n }, dir < 0 == (part.level == 1) ? part.from : part.to - 1, ch);\n\n if (sticky == \"before\") {\n ch = moveCharLogically(lineObj, ch, 1);\n }\n } else {\n ch = dir < 0 ? part.to : part.from;\n }\n\n return new Pos(lineNo, ch, sticky);\n }\n }\n\n return new Pos(lineNo, dir < 0 ? lineObj.text.length : 0, dir < 0 ? \"before\" : \"after\");\n }\n\n function moveVisually(cm, line, start, dir) {\n var bidi = getOrder(line, cm.doc.direction);\n\n if (!bidi) {\n return moveLogically(line, start, dir);\n }\n\n if (start.ch >= line.text.length) {\n start.ch = line.text.length;\n start.sticky = \"before\";\n } else if (start.ch <= 0) {\n start.ch = 0;\n start.sticky = \"after\";\n }\n\n var partPos = getBidiPartAt(bidi, start.ch, start.sticky),\n part = bidi[partPos];\n\n if (cm.doc.direction == \"ltr\" && part.level % 2 == 0 && (dir > 0 ? part.to > start.ch : part.from < start.ch)) {\n // Case 1: We move within an ltr part in an ltr editor. Even with wrapped lines,\n // nothing interesting happens.\n return moveLogically(line, start, dir);\n }\n\n var mv = function mv(pos, dir) {\n return moveCharLogically(line, pos instanceof Pos ? pos.ch : pos, dir);\n };\n\n var prep;\n\n var getWrappedLineExtent = function getWrappedLineExtent(ch) {\n if (!cm.options.lineWrapping) {\n return {\n begin: 0,\n end: line.text.length\n };\n }\n\n prep = prep || prepareMeasureForLine(cm, line);\n return wrappedLineExtentChar(cm, line, prep, ch);\n };\n\n var wrappedLineExtent = getWrappedLineExtent(start.sticky == \"before\" ? mv(start, -1) : start.ch);\n\n if (cm.doc.direction == \"rtl\" || part.level == 1) {\n var moveInStorageOrder = part.level == 1 == dir < 0;\n var ch = mv(start, moveInStorageOrder ? 1 : -1);\n\n if (ch != null && (!moveInStorageOrder ? ch >= part.from && ch >= wrappedLineExtent.begin : ch <= part.to && ch <= wrappedLineExtent.end)) {\n // Case 2: We move within an rtl part or in an rtl editor on the same visual line\n var sticky = moveInStorageOrder ? \"before\" : \"after\";\n return new Pos(start.line, ch, sticky);\n }\n } // Case 3: Could not move within this bidi part in this visual line, so leave\n // the current bidi part\n\n\n var searchInVisualLine = function searchInVisualLine(partPos, dir, wrappedLineExtent) {\n var getRes = function getRes(ch, moveInStorageOrder) {\n return moveInStorageOrder ? new Pos(start.line, mv(ch, 1), \"before\") : new Pos(start.line, ch, \"after\");\n };\n\n for (; partPos >= 0 && partPos < bidi.length; partPos += dir) {\n var part = bidi[partPos];\n var moveInStorageOrder = dir > 0 == (part.level != 1);\n var ch = moveInStorageOrder ? wrappedLineExtent.begin : mv(wrappedLineExtent.end, -1);\n\n if (part.from <= ch && ch < part.to) {\n return getRes(ch, moveInStorageOrder);\n }\n\n ch = moveInStorageOrder ? part.from : mv(part.to, -1);\n\n if (wrappedLineExtent.begin <= ch && ch < wrappedLineExtent.end) {\n return getRes(ch, moveInStorageOrder);\n }\n }\n }; // Case 3a: Look for other bidi parts on the same visual line\n\n\n var res = searchInVisualLine(partPos + dir, dir, wrappedLineExtent);\n\n if (res) {\n return res;\n } // Case 3b: Look for other bidi parts on the next visual line\n\n\n var nextCh = dir > 0 ? wrappedLineExtent.end : mv(wrappedLineExtent.begin, -1);\n\n if (nextCh != null && !(dir > 0 && nextCh == line.text.length)) {\n res = searchInVisualLine(dir > 0 ? 0 : bidi.length - 1, dir, getWrappedLineExtent(nextCh));\n\n if (res) {\n return res;\n }\n } // Case 4: Nowhere to move\n\n\n return null;\n } // Commands are parameter-less actions that can be performed on an\n // editor, mostly used for keybindings.\n\n\n var commands = {\n selectAll: selectAll,\n singleSelection: function singleSelection(cm) {\n return cm.setSelection(cm.getCursor(\"anchor\"), cm.getCursor(\"head\"), sel_dontScroll);\n },\n killLine: function killLine(cm) {\n return deleteNearSelection(cm, function (range) {\n if (range.empty()) {\n var len = getLine(cm.doc, range.head.line).text.length;\n\n if (range.head.ch == len && range.head.line < cm.lastLine()) {\n return {\n from: range.head,\n to: Pos(range.head.line + 1, 0)\n };\n } else {\n return {\n from: range.head,\n to: Pos(range.head.line, len)\n };\n }\n } else {\n return {\n from: range.from(),\n to: range.to()\n };\n }\n });\n },\n deleteLine: function deleteLine(cm) {\n return deleteNearSelection(cm, function (range) {\n return {\n from: Pos(range.from().line, 0),\n to: _clipPos(cm.doc, Pos(range.to().line + 1, 0))\n };\n });\n },\n delLineLeft: function delLineLeft(cm) {\n return deleteNearSelection(cm, function (range) {\n return {\n from: Pos(range.from().line, 0),\n to: range.from()\n };\n });\n },\n delWrappedLineLeft: function delWrappedLineLeft(cm) {\n return deleteNearSelection(cm, function (range) {\n var top = cm.charCoords(range.head, \"div\").top + 5;\n var leftPos = cm.coordsChar({\n left: 0,\n top: top\n }, \"div\");\n return {\n from: leftPos,\n to: range.from()\n };\n });\n },\n delWrappedLineRight: function delWrappedLineRight(cm) {\n return deleteNearSelection(cm, function (range) {\n var top = cm.charCoords(range.head, \"div\").top + 5;\n var rightPos = cm.coordsChar({\n left: cm.display.lineDiv.offsetWidth + 100,\n top: top\n }, \"div\");\n return {\n from: range.from(),\n to: rightPos\n };\n });\n },\n undo: function undo(cm) {\n return cm.undo();\n },\n redo: function redo(cm) {\n return cm.redo();\n },\n undoSelection: function undoSelection(cm) {\n return cm.undoSelection();\n },\n redoSelection: function redoSelection(cm) {\n return cm.redoSelection();\n },\n goDocStart: function goDocStart(cm) {\n return cm.extendSelection(Pos(cm.firstLine(), 0));\n },\n goDocEnd: function goDocEnd(cm) {\n return cm.extendSelection(Pos(cm.lastLine()));\n },\n goLineStart: function goLineStart(cm) {\n return cm.extendSelectionsBy(function (range) {\n return lineStart(cm, range.head.line);\n }, {\n origin: \"+move\",\n bias: 1\n });\n },\n goLineStartSmart: function goLineStartSmart(cm) {\n return cm.extendSelectionsBy(function (range) {\n return lineStartSmart(cm, range.head);\n }, {\n origin: \"+move\",\n bias: 1\n });\n },\n goLineEnd: function goLineEnd(cm) {\n return cm.extendSelectionsBy(function (range) {\n return lineEnd(cm, range.head.line);\n }, {\n origin: \"+move\",\n bias: -1\n });\n },\n goLineRight: function goLineRight(cm) {\n return cm.extendSelectionsBy(function (range) {\n var top = cm.cursorCoords(range.head, \"div\").top + 5;\n return cm.coordsChar({\n left: cm.display.lineDiv.offsetWidth + 100,\n top: top\n }, \"div\");\n }, sel_move);\n },\n goLineLeft: function goLineLeft(cm) {\n return cm.extendSelectionsBy(function (range) {\n var top = cm.cursorCoords(range.head, \"div\").top + 5;\n return cm.coordsChar({\n left: 0,\n top: top\n }, \"div\");\n }, sel_move);\n },\n goLineLeftSmart: function goLineLeftSmart(cm) {\n return cm.extendSelectionsBy(function (range) {\n var top = cm.cursorCoords(range.head, \"div\").top + 5;\n var pos = cm.coordsChar({\n left: 0,\n top: top\n }, \"div\");\n\n if (pos.ch < cm.getLine(pos.line).search(/\\S/)) {\n return lineStartSmart(cm, range.head);\n }\n\n return pos;\n }, sel_move);\n },\n goLineUp: function goLineUp(cm) {\n return cm.moveV(-1, \"line\");\n },\n goLineDown: function goLineDown(cm) {\n return cm.moveV(1, \"line\");\n },\n goPageUp: function goPageUp(cm) {\n return cm.moveV(-1, \"page\");\n },\n goPageDown: function goPageDown(cm) {\n return cm.moveV(1, \"page\");\n },\n goCharLeft: function goCharLeft(cm) {\n return cm.moveH(-1, \"char\");\n },\n goCharRight: function goCharRight(cm) {\n return cm.moveH(1, \"char\");\n },\n goColumnLeft: function goColumnLeft(cm) {\n return cm.moveH(-1, \"column\");\n },\n goColumnRight: function goColumnRight(cm) {\n return cm.moveH(1, \"column\");\n },\n goWordLeft: function goWordLeft(cm) {\n return cm.moveH(-1, \"word\");\n },\n goGroupRight: function goGroupRight(cm) {\n return cm.moveH(1, \"group\");\n },\n goGroupLeft: function goGroupLeft(cm) {\n return cm.moveH(-1, \"group\");\n },\n goWordRight: function goWordRight(cm) {\n return cm.moveH(1, \"word\");\n },\n delCharBefore: function delCharBefore(cm) {\n return cm.deleteH(-1, \"char\");\n },\n delCharAfter: function delCharAfter(cm) {\n return cm.deleteH(1, \"char\");\n },\n delWordBefore: function delWordBefore(cm) {\n return cm.deleteH(-1, \"word\");\n },\n delWordAfter: function delWordAfter(cm) {\n return cm.deleteH(1, \"word\");\n },\n delGroupBefore: function delGroupBefore(cm) {\n return cm.deleteH(-1, \"group\");\n },\n delGroupAfter: function delGroupAfter(cm) {\n return cm.deleteH(1, \"group\");\n },\n indentAuto: function indentAuto(cm) {\n return cm.indentSelection(\"smart\");\n },\n indentMore: function indentMore(cm) {\n return cm.indentSelection(\"add\");\n },\n indentLess: function indentLess(cm) {\n return cm.indentSelection(\"subtract\");\n },\n insertTab: function insertTab(cm) {\n return cm.replaceSelection(\"\\t\");\n },\n insertSoftTab: function insertSoftTab(cm) {\n var spaces = [],\n ranges = cm.listSelections(),\n tabSize = cm.options.tabSize;\n\n for (var i = 0; i < ranges.length; i++) {\n var pos = ranges[i].from();\n var col = countColumn(cm.getLine(pos.line), pos.ch, tabSize);\n spaces.push(spaceStr(tabSize - col % tabSize));\n }\n\n cm.replaceSelections(spaces);\n },\n defaultTab: function defaultTab(cm) {\n if (cm.somethingSelected()) {\n cm.indentSelection(\"add\");\n } else {\n cm.execCommand(\"insertTab\");\n }\n },\n // Swap the two chars left and right of each selection's head.\n // Move cursor behind the two swapped characters afterwards.\n //\n // Doesn't consider line feeds a character.\n // Doesn't scan more than one line above to find a character.\n // Doesn't do anything on an empty line.\n // Doesn't do anything with non-empty selections.\n transposeChars: function transposeChars(cm) {\n return runInOp(cm, function () {\n var ranges = cm.listSelections(),\n newSel = [];\n\n for (var i = 0; i < ranges.length; i++) {\n if (!ranges[i].empty()) {\n continue;\n }\n\n var cur = ranges[i].head,\n line = getLine(cm.doc, cur.line).text;\n\n if (line) {\n if (cur.ch == line.length) {\n cur = new Pos(cur.line, cur.ch - 1);\n }\n\n if (cur.ch > 0) {\n cur = new Pos(cur.line, cur.ch + 1);\n cm.replaceRange(line.charAt(cur.ch - 1) + line.charAt(cur.ch - 2), Pos(cur.line, cur.ch - 2), cur, \"+transpose\");\n } else if (cur.line > cm.doc.first) {\n var prev = getLine(cm.doc, cur.line - 1).text;\n\n if (prev) {\n cur = new Pos(cur.line, 1);\n cm.replaceRange(line.charAt(0) + cm.doc.lineSeparator() + prev.charAt(prev.length - 1), Pos(cur.line - 1, prev.length - 1), cur, \"+transpose\");\n }\n }\n }\n\n newSel.push(new Range(cur, cur));\n }\n\n cm.setSelections(newSel);\n });\n },\n newlineAndIndent: function newlineAndIndent(cm) {\n return runInOp(cm, function () {\n var sels = cm.listSelections();\n\n for (var i = sels.length - 1; i >= 0; i--) {\n cm.replaceRange(cm.doc.lineSeparator(), sels[i].anchor, sels[i].head, \"+input\");\n }\n\n sels = cm.listSelections();\n\n for (var i$1 = 0; i$1 < sels.length; i$1++) {\n cm.indentLine(sels[i$1].from().line, null, true);\n }\n\n ensureCursorVisible(cm);\n });\n },\n openLine: function openLine(cm) {\n return cm.replaceSelection(\"\\n\", \"start\");\n },\n toggleOverwrite: function toggleOverwrite(cm) {\n return cm.toggleOverwrite();\n }\n };\n\n function lineStart(cm, lineN) {\n var line = getLine(cm.doc, lineN);\n var visual = visualLine(line);\n\n if (visual != line) {\n lineN = lineNo(visual);\n }\n\n return endOfLine(true, cm, visual, lineN, 1);\n }\n\n function lineEnd(cm, lineN) {\n var line = getLine(cm.doc, lineN);\n var visual = visualLineEnd(line);\n\n if (visual != line) {\n lineN = lineNo(visual);\n }\n\n return endOfLine(true, cm, line, lineN, -1);\n }\n\n function lineStartSmart(cm, pos) {\n var start = lineStart(cm, pos.line);\n var line = getLine(cm.doc, start.line);\n var order = getOrder(line, cm.doc.direction);\n\n if (!order || order[0].level == 0) {\n var firstNonWS = Math.max(start.ch, line.text.search(/\\S/));\n var inWS = pos.line == start.line && pos.ch <= firstNonWS && pos.ch;\n return Pos(start.line, inWS ? 0 : firstNonWS, start.sticky);\n }\n\n return start;\n } // Run a handler that was bound to a key.\n\n\n function doHandleBinding(cm, bound, dropShift) {\n if (typeof bound == \"string\") {\n bound = commands[bound];\n\n if (!bound) {\n return false;\n }\n } // Ensure previous input has been read, so that the handler sees a\n // consistent view of the document\n\n\n cm.display.input.ensurePolled();\n var prevShift = cm.display.shift,\n done = false;\n\n try {\n if (cm.isReadOnly()) {\n cm.state.suppressEdits = true;\n }\n\n if (dropShift) {\n cm.display.shift = false;\n }\n\n done = bound(cm) != Pass;\n } finally {\n cm.display.shift = prevShift;\n cm.state.suppressEdits = false;\n }\n\n return done;\n }\n\n function lookupKeyForEditor(cm, name, handle) {\n for (var i = 0; i < cm.state.keyMaps.length; i++) {\n var result = lookupKey(name, cm.state.keyMaps[i], handle, cm);\n\n if (result) {\n return result;\n }\n }\n\n return cm.options.extraKeys && lookupKey(name, cm.options.extraKeys, handle, cm) || lookupKey(name, cm.options.keyMap, handle, cm);\n } // Note that, despite the name, this function is also used to check\n // for bound mouse clicks.\n\n\n var stopSeq = new Delayed();\n\n function dispatchKey(cm, name, e, handle) {\n var seq = cm.state.keySeq;\n\n if (seq) {\n if (isModifierKey(name)) {\n return \"handled\";\n }\n\n if (/\\'$/.test(name)) {\n cm.state.keySeq = null;\n } else {\n stopSeq.set(50, function () {\n if (cm.state.keySeq == seq) {\n cm.state.keySeq = null;\n cm.display.input.reset();\n }\n });\n }\n\n if (dispatchKeyInner(cm, seq + \" \" + name, e, handle)) {\n return true;\n }\n }\n\n return dispatchKeyInner(cm, name, e, handle);\n }\n\n function dispatchKeyInner(cm, name, e, handle) {\n var result = lookupKeyForEditor(cm, name, handle);\n\n if (result == \"multi\") {\n cm.state.keySeq = name;\n }\n\n if (result == \"handled\") {\n signalLater(cm, \"keyHandled\", cm, name, e);\n }\n\n if (result == \"handled\" || result == \"multi\") {\n e_preventDefault(e);\n restartBlink(cm);\n }\n\n return !!result;\n } // Handle a key from the keydown event.\n\n\n function handleKeyBinding(cm, e) {\n var name = keyName(e, true);\n\n if (!name) {\n return false;\n }\n\n if (e.shiftKey && !cm.state.keySeq) {\n // First try to resolve full name (including 'Shift-'). Failing\n // that, see if there is a cursor-motion command (starting with\n // 'go') bound to the keyname without 'Shift-'.\n return dispatchKey(cm, \"Shift-\" + name, e, function (b) {\n return doHandleBinding(cm, b, true);\n }) || dispatchKey(cm, name, e, function (b) {\n if (typeof b == \"string\" ? /^go[A-Z]/.test(b) : b.motion) {\n return doHandleBinding(cm, b);\n }\n });\n } else {\n return dispatchKey(cm, name, e, function (b) {\n return doHandleBinding(cm, b);\n });\n }\n } // Handle a key from the keypress event\n\n\n function handleCharBinding(cm, e, ch) {\n return dispatchKey(cm, \"'\" + ch + \"'\", e, function (b) {\n return doHandleBinding(cm, b, true);\n });\n }\n\n var lastStoppedKey = null;\n\n function onKeyDown(e) {\n var cm = this;\n cm.curOp.focus = activeElt();\n\n if (signalDOMEvent(cm, e)) {\n return;\n } // IE does strange things with escape.\n\n\n if (ie && ie_version < 11 && e.keyCode == 27) {\n e.returnValue = false;\n }\n\n var code = e.keyCode;\n cm.display.shift = code == 16 || e.shiftKey;\n var handled = handleKeyBinding(cm, e);\n\n if (presto) {\n lastStoppedKey = handled ? code : null; // Opera has no cut event... we try to at least catch the key combo\n\n if (!handled && code == 88 && !hasCopyEvent && (mac ? e.metaKey : e.ctrlKey)) {\n cm.replaceSelection(\"\", null, \"cut\");\n }\n }\n\n if (gecko && !mac && !handled && code == 46 && e.shiftKey && !e.ctrlKey && document.execCommand) {\n document.execCommand(\"cut\");\n } // Turn mouse into crosshair when Alt is held on Mac.\n\n\n if (code == 18 && !/\\bCodeMirror-crosshair\\b/.test(cm.display.lineDiv.className)) {\n showCrossHair(cm);\n }\n }\n\n function showCrossHair(cm) {\n var lineDiv = cm.display.lineDiv;\n addClass(lineDiv, \"CodeMirror-crosshair\");\n\n function up(e) {\n if (e.keyCode == 18 || !e.altKey) {\n rmClass(lineDiv, \"CodeMirror-crosshair\");\n off(document, \"keyup\", up);\n off(document, \"mouseover\", up);\n }\n }\n\n on(document, \"keyup\", up);\n on(document, \"mouseover\", up);\n }\n\n function onKeyUp(e) {\n if (e.keyCode == 16) {\n this.doc.sel.shift = false;\n }\n\n signalDOMEvent(this, e);\n }\n\n function onKeyPress(e) {\n var cm = this;\n\n if (eventInWidget(cm.display, e) || signalDOMEvent(cm, e) || e.ctrlKey && !e.altKey || mac && e.metaKey) {\n return;\n }\n\n var keyCode = e.keyCode,\n charCode = e.charCode;\n\n if (presto && keyCode == lastStoppedKey) {\n lastStoppedKey = null;\n e_preventDefault(e);\n return;\n }\n\n if (presto && (!e.which || e.which < 10) && handleKeyBinding(cm, e)) {\n return;\n }\n\n var ch = String.fromCharCode(charCode == null ? keyCode : charCode); // Some browsers fire keypress events for backspace\n\n if (ch == \"\\x08\") {\n return;\n }\n\n if (handleCharBinding(cm, e, ch)) {\n return;\n }\n\n cm.display.input.onKeyPress(e);\n }\n\n var DOUBLECLICK_DELAY = 400;\n\n var PastClick = function PastClick(time, pos, button) {\n this.time = time;\n this.pos = pos;\n this.button = button;\n };\n\n PastClick.prototype.compare = function (time, pos, button) {\n return this.time + DOUBLECLICK_DELAY > time && cmp(pos, this.pos) == 0 && button == this.button;\n };\n\n var lastClick, lastDoubleClick;\n\n function clickRepeat(pos, button) {\n var now = +new Date();\n\n if (lastDoubleClick && lastDoubleClick.compare(now, pos, button)) {\n lastClick = lastDoubleClick = null;\n return \"triple\";\n } else if (lastClick && lastClick.compare(now, pos, button)) {\n lastDoubleClick = new PastClick(now, pos, button);\n lastClick = null;\n return \"double\";\n } else {\n lastClick = new PastClick(now, pos, button);\n lastDoubleClick = null;\n return \"single\";\n }\n } // A mouse down can be a single click, double click, triple click,\n // start of selection drag, start of text drag, new cursor\n // (ctrl-click), rectangle drag (alt-drag), or xwin\n // middle-click-paste. Or it might be a click on something we should\n // not interfere with, such as a scrollbar or widget.\n\n\n function onMouseDown(e) {\n var cm = this,\n display = cm.display;\n\n if (signalDOMEvent(cm, e) || display.activeTouch && display.input.supportsTouch()) {\n return;\n }\n\n display.input.ensurePolled();\n display.shift = e.shiftKey;\n\n if (eventInWidget(display, e)) {\n if (!webkit) {\n // Briefly turn off draggability, to allow widgets to do\n // normal dragging things.\n display.scroller.draggable = false;\n setTimeout(function () {\n return display.scroller.draggable = true;\n }, 100);\n }\n\n return;\n }\n\n if (clickInGutter(cm, e)) {\n return;\n }\n\n var pos = posFromMouse(cm, e),\n button = e_button(e),\n repeat = pos ? clickRepeat(pos, button) : \"single\";\n window.focus(); // #3261: make sure, that we're not starting a second selection\n\n if (button == 1 && cm.state.selectingText) {\n cm.state.selectingText(e);\n }\n\n if (pos && handleMappedButton(cm, button, pos, repeat, e)) {\n return;\n }\n\n if (button == 1) {\n if (pos) {\n leftButtonDown(cm, pos, repeat, e);\n } else if (e_target(e) == display.scroller) {\n e_preventDefault(e);\n }\n } else if (button == 2) {\n if (pos) {\n extendSelection(cm.doc, pos);\n }\n\n setTimeout(function () {\n return display.input.focus();\n }, 20);\n } else if (button == 3) {\n if (captureRightClick) {\n cm.display.input.onContextMenu(e);\n } else {\n delayBlurEvent(cm);\n }\n }\n }\n\n function handleMappedButton(cm, button, pos, repeat, event) {\n var name = \"Click\";\n\n if (repeat == \"double\") {\n name = \"Double\" + name;\n } else if (repeat == \"triple\") {\n name = \"Triple\" + name;\n }\n\n name = (button == 1 ? \"Left\" : button == 2 ? \"Middle\" : \"Right\") + name;\n return dispatchKey(cm, addModifierNames(name, event), event, function (bound) {\n if (typeof bound == \"string\") {\n bound = commands[bound];\n }\n\n if (!bound) {\n return false;\n }\n\n var done = false;\n\n try {\n if (cm.isReadOnly()) {\n cm.state.suppressEdits = true;\n }\n\n done = bound(cm, pos) != Pass;\n } finally {\n cm.state.suppressEdits = false;\n }\n\n return done;\n });\n }\n\n function configureMouse(cm, repeat, event) {\n var option = cm.getOption(\"configureMouse\");\n var value = option ? option(cm, repeat, event) : {};\n\n if (value.unit == null) {\n var rect = chromeOS ? event.shiftKey && event.metaKey : event.altKey;\n value.unit = rect ? \"rectangle\" : repeat == \"single\" ? \"char\" : repeat == \"double\" ? \"word\" : \"line\";\n }\n\n if (value.extend == null || cm.doc.extend) {\n value.extend = cm.doc.extend || event.shiftKey;\n }\n\n if (value.addNew == null) {\n value.addNew = mac ? event.metaKey : event.ctrlKey;\n }\n\n if (value.moveOnDrag == null) {\n value.moveOnDrag = !(mac ? event.altKey : event.ctrlKey);\n }\n\n return value;\n }\n\n function leftButtonDown(cm, pos, repeat, event) {\n if (ie) {\n setTimeout(bind(ensureFocus, cm), 0);\n } else {\n cm.curOp.focus = activeElt();\n }\n\n var behavior = configureMouse(cm, repeat, event);\n var sel = cm.doc.sel,\n contained;\n\n if (cm.options.dragDrop && dragAndDrop && !cm.isReadOnly() && repeat == \"single\" && (contained = sel.contains(pos)) > -1 && (cmp((contained = sel.ranges[contained]).from(), pos) < 0 || pos.xRel > 0) && (cmp(contained.to(), pos) > 0 || pos.xRel < 0)) {\n leftButtonStartDrag(cm, event, pos, behavior);\n } else {\n leftButtonSelect(cm, event, pos, behavior);\n }\n } // Start a text drag. When it ends, see if any dragging actually\n // happen, and treat as a click if it didn't.\n\n\n function leftButtonStartDrag(cm, event, pos, behavior) {\n var display = cm.display,\n moved = false;\n var dragEnd = operation(cm, function (e) {\n if (webkit) {\n display.scroller.draggable = false;\n }\n\n cm.state.draggingText = false;\n off(display.wrapper.ownerDocument, \"mouseup\", dragEnd);\n off(display.wrapper.ownerDocument, \"mousemove\", mouseMove);\n off(display.scroller, \"dragstart\", dragStart);\n off(display.scroller, \"drop\", dragEnd);\n\n if (!moved) {\n e_preventDefault(e);\n\n if (!behavior.addNew) {\n extendSelection(cm.doc, pos, null, null, behavior.extend);\n } // Work around unexplainable focus problem in IE9 (#2127) and Chrome (#3081)\n\n\n if (webkit || ie && ie_version == 9) {\n setTimeout(function () {\n display.wrapper.ownerDocument.body.focus();\n display.input.focus();\n }, 20);\n } else {\n display.input.focus();\n }\n }\n });\n\n var mouseMove = function mouseMove(e2) {\n moved = moved || Math.abs(event.clientX - e2.clientX) + Math.abs(event.clientY - e2.clientY) >= 10;\n };\n\n var dragStart = function dragStart() {\n return moved = true;\n }; // Let the drag handler handle this.\n\n\n if (webkit) {\n display.scroller.draggable = true;\n }\n\n cm.state.draggingText = dragEnd;\n dragEnd.copy = !behavior.moveOnDrag; // IE's approach to draggable\n\n if (display.scroller.dragDrop) {\n display.scroller.dragDrop();\n }\n\n on(display.wrapper.ownerDocument, \"mouseup\", dragEnd);\n on(display.wrapper.ownerDocument, \"mousemove\", mouseMove);\n on(display.scroller, \"dragstart\", dragStart);\n on(display.scroller, \"drop\", dragEnd);\n delayBlurEvent(cm);\n setTimeout(function () {\n return display.input.focus();\n }, 20);\n }\n\n function rangeForUnit(cm, pos, unit) {\n if (unit == \"char\") {\n return new Range(pos, pos);\n }\n\n if (unit == \"word\") {\n return cm.findWordAt(pos);\n }\n\n if (unit == \"line\") {\n return new Range(Pos(pos.line, 0), _clipPos(cm.doc, Pos(pos.line + 1, 0)));\n }\n\n var result = unit(cm, pos);\n return new Range(result.from, result.to);\n } // Normal selection, as opposed to text dragging.\n\n\n function leftButtonSelect(cm, event, start, behavior) {\n var display = cm.display,\n doc = cm.doc;\n e_preventDefault(event);\n var ourRange,\n ourIndex,\n startSel = doc.sel,\n ranges = startSel.ranges;\n\n if (behavior.addNew && !behavior.extend) {\n ourIndex = doc.sel.contains(start);\n\n if (ourIndex > -1) {\n ourRange = ranges[ourIndex];\n } else {\n ourRange = new Range(start, start);\n }\n } else {\n ourRange = doc.sel.primary();\n ourIndex = doc.sel.primIndex;\n }\n\n if (behavior.unit == \"rectangle\") {\n if (!behavior.addNew) {\n ourRange = new Range(start, start);\n }\n\n start = posFromMouse(cm, event, true, true);\n ourIndex = -1;\n } else {\n var range = rangeForUnit(cm, start, behavior.unit);\n\n if (behavior.extend) {\n ourRange = extendRange(ourRange, range.anchor, range.head, behavior.extend);\n } else {\n ourRange = range;\n }\n }\n\n if (!behavior.addNew) {\n ourIndex = 0;\n setSelection(doc, new Selection([ourRange], 0), sel_mouse);\n startSel = doc.sel;\n } else if (ourIndex == -1) {\n ourIndex = ranges.length;\n setSelection(doc, normalizeSelection(cm, ranges.concat([ourRange]), ourIndex), {\n scroll: false,\n origin: \"*mouse\"\n });\n } else if (ranges.length > 1 && ranges[ourIndex].empty() && behavior.unit == \"char\" && !behavior.extend) {\n setSelection(doc, normalizeSelection(cm, ranges.slice(0, ourIndex).concat(ranges.slice(ourIndex + 1)), 0), {\n scroll: false,\n origin: \"*mouse\"\n });\n startSel = doc.sel;\n } else {\n replaceOneSelection(doc, ourIndex, ourRange, sel_mouse);\n }\n\n var lastPos = start;\n\n function extendTo(pos) {\n if (cmp(lastPos, pos) == 0) {\n return;\n }\n\n lastPos = pos;\n\n if (behavior.unit == \"rectangle\") {\n var ranges = [],\n tabSize = cm.options.tabSize;\n var startCol = countColumn(getLine(doc, start.line).text, start.ch, tabSize);\n var posCol = countColumn(getLine(doc, pos.line).text, pos.ch, tabSize);\n var left = Math.min(startCol, posCol),\n right = Math.max(startCol, posCol);\n\n for (var line = Math.min(start.line, pos.line), end = Math.min(cm.lastLine(), Math.max(start.line, pos.line)); line <= end; line++) {\n var text = getLine(doc, line).text,\n leftPos = findColumn(text, left, tabSize);\n\n if (left == right) {\n ranges.push(new Range(Pos(line, leftPos), Pos(line, leftPos)));\n } else if (text.length > leftPos) {\n ranges.push(new Range(Pos(line, leftPos), Pos(line, findColumn(text, right, tabSize))));\n }\n }\n\n if (!ranges.length) {\n ranges.push(new Range(start, start));\n }\n\n setSelection(doc, normalizeSelection(cm, startSel.ranges.slice(0, ourIndex).concat(ranges), ourIndex), {\n origin: \"*mouse\",\n scroll: false\n });\n cm.scrollIntoView(pos);\n } else {\n var oldRange = ourRange;\n var range = rangeForUnit(cm, pos, behavior.unit);\n var anchor = oldRange.anchor,\n head;\n\n if (cmp(range.anchor, anchor) > 0) {\n head = range.head;\n anchor = minPos(oldRange.from(), range.anchor);\n } else {\n head = range.anchor;\n anchor = maxPos(oldRange.to(), range.head);\n }\n\n var ranges$1 = startSel.ranges.slice(0);\n ranges$1[ourIndex] = bidiSimplify(cm, new Range(_clipPos(doc, anchor), head));\n setSelection(doc, normalizeSelection(cm, ranges$1, ourIndex), sel_mouse);\n }\n }\n\n var editorSize = display.wrapper.getBoundingClientRect(); // Used to ensure timeout re-tries don't fire when another extend\n // happened in the meantime (clearTimeout isn't reliable -- at\n // least on Chrome, the timeouts still happen even when cleared,\n // if the clear happens after their scheduled firing time).\n\n var counter = 0;\n\n function extend(e) {\n var curCount = ++counter;\n var cur = posFromMouse(cm, e, true, behavior.unit == \"rectangle\");\n\n if (!cur) {\n return;\n }\n\n if (cmp(cur, lastPos) != 0) {\n cm.curOp.focus = activeElt();\n extendTo(cur);\n var visible = visibleLines(display, doc);\n\n if (cur.line >= visible.to || cur.line < visible.from) {\n setTimeout(operation(cm, function () {\n if (counter == curCount) {\n extend(e);\n }\n }), 150);\n }\n } else {\n var outside = e.clientY < editorSize.top ? -20 : e.clientY > editorSize.bottom ? 20 : 0;\n\n if (outside) {\n setTimeout(operation(cm, function () {\n if (counter != curCount) {\n return;\n }\n\n display.scroller.scrollTop += outside;\n extend(e);\n }), 50);\n }\n }\n }\n\n function done(e) {\n cm.state.selectingText = false;\n counter = Infinity; // If e is null or undefined we interpret this as someone trying\n // to explicitly cancel the selection rather than the user\n // letting go of the mouse button.\n\n if (e) {\n e_preventDefault(e);\n display.input.focus();\n }\n\n off(display.wrapper.ownerDocument, \"mousemove\", move);\n off(display.wrapper.ownerDocument, \"mouseup\", up);\n doc.history.lastSelOrigin = null;\n }\n\n var move = operation(cm, function (e) {\n if (e.buttons === 0 || !e_button(e)) {\n done(e);\n } else {\n extend(e);\n }\n });\n var up = operation(cm, done);\n cm.state.selectingText = up;\n on(display.wrapper.ownerDocument, \"mousemove\", move);\n on(display.wrapper.ownerDocument, \"mouseup\", up);\n } // Used when mouse-selecting to adjust the anchor to the proper side\n // of a bidi jump depending on the visual position of the head.\n\n\n function bidiSimplify(cm, range) {\n var anchor = range.anchor;\n var head = range.head;\n var anchorLine = getLine(cm.doc, anchor.line);\n\n if (cmp(anchor, head) == 0 && anchor.sticky == head.sticky) {\n return range;\n }\n\n var order = getOrder(anchorLine);\n\n if (!order) {\n return range;\n }\n\n var index = getBidiPartAt(order, anchor.ch, anchor.sticky),\n part = order[index];\n\n if (part.from != anchor.ch && part.to != anchor.ch) {\n return range;\n }\n\n var boundary = index + (part.from == anchor.ch == (part.level != 1) ? 0 : 1);\n\n if (boundary == 0 || boundary == order.length) {\n return range;\n } // Compute the relative visual position of the head compared to the\n // anchor (<0 is to the left, >0 to the right)\n\n\n var leftSide;\n\n if (head.line != anchor.line) {\n leftSide = (head.line - anchor.line) * (cm.doc.direction == \"ltr\" ? 1 : -1) > 0;\n } else {\n var headIndex = getBidiPartAt(order, head.ch, head.sticky);\n var dir = headIndex - index || (head.ch - anchor.ch) * (part.level == 1 ? -1 : 1);\n\n if (headIndex == boundary - 1 || headIndex == boundary) {\n leftSide = dir < 0;\n } else {\n leftSide = dir > 0;\n }\n }\n\n var usePart = order[boundary + (leftSide ? -1 : 0)];\n var from = leftSide == (usePart.level == 1);\n var ch = from ? usePart.from : usePart.to,\n sticky = from ? \"after\" : \"before\";\n return anchor.ch == ch && anchor.sticky == sticky ? range : new Range(new Pos(anchor.line, ch, sticky), head);\n } // Determines whether an event happened in the gutter, and fires the\n // handlers for the corresponding event.\n\n\n function gutterEvent(cm, e, type, prevent) {\n var mX, mY;\n\n if (e.touches) {\n mX = e.touches[0].clientX;\n mY = e.touches[0].clientY;\n } else {\n try {\n mX = e.clientX;\n mY = e.clientY;\n } catch (e) {\n return false;\n }\n }\n\n if (mX >= Math.floor(cm.display.gutters.getBoundingClientRect().right)) {\n return false;\n }\n\n if (prevent) {\n e_preventDefault(e);\n }\n\n var display = cm.display;\n var lineBox = display.lineDiv.getBoundingClientRect();\n\n if (mY > lineBox.bottom || !hasHandler(cm, type)) {\n return e_defaultPrevented(e);\n }\n\n mY -= lineBox.top - display.viewOffset;\n\n for (var i = 0; i < cm.display.gutterSpecs.length; ++i) {\n var g = display.gutters.childNodes[i];\n\n if (g && g.getBoundingClientRect().right >= mX) {\n var line = _lineAtHeight(cm.doc, mY);\n\n var gutter = cm.display.gutterSpecs[i];\n signal(cm, type, cm, line, gutter.className, e);\n return e_defaultPrevented(e);\n }\n }\n }\n\n function clickInGutter(cm, e) {\n return gutterEvent(cm, e, \"gutterClick\", true);\n } // CONTEXT MENU HANDLING\n // To make the context menu work, we need to briefly unhide the\n // textarea (making it as unobtrusive as possible) to let the\n // right-click take effect on it.\n\n\n function onContextMenu(cm, e) {\n if (eventInWidget(cm.display, e) || contextMenuInGutter(cm, e)) {\n return;\n }\n\n if (signalDOMEvent(cm, e, \"contextmenu\")) {\n return;\n }\n\n if (!captureRightClick) {\n cm.display.input.onContextMenu(e);\n }\n }\n\n function contextMenuInGutter(cm, e) {\n if (!hasHandler(cm, \"gutterContextMenu\")) {\n return false;\n }\n\n return gutterEvent(cm, e, \"gutterContextMenu\", false);\n }\n\n function themeChanged(cm) {\n cm.display.wrapper.className = cm.display.wrapper.className.replace(/\\s*cm-s-\\S+/g, \"\") + cm.options.theme.replace(/(^|\\s)\\s*/g, \" cm-s-\");\n clearCaches(cm);\n }\n\n var Init = {\n toString: function toString() {\n return \"CodeMirror.Init\";\n }\n };\n var defaults = {};\n var optionHandlers = {};\n\n function defineOptions(CodeMirror) {\n var optionHandlers = CodeMirror.optionHandlers;\n\n function option(name, deflt, handle, notOnInit) {\n CodeMirror.defaults[name] = deflt;\n\n if (handle) {\n optionHandlers[name] = notOnInit ? function (cm, val, old) {\n if (old != Init) {\n handle(cm, val, old);\n }\n } : handle;\n }\n }\n\n CodeMirror.defineOption = option; // Passed to option handlers when there is no old value.\n\n CodeMirror.Init = Init; // These two are, on init, called from the constructor because they\n // have to be initialized before the editor can start at all.\n\n option(\"value\", \"\", function (cm, val) {\n return cm.setValue(val);\n }, true);\n option(\"mode\", null, function (cm, val) {\n cm.doc.modeOption = val;\n loadMode(cm);\n }, true);\n option(\"indentUnit\", 2, loadMode, true);\n option(\"indentWithTabs\", false);\n option(\"smartIndent\", true);\n option(\"tabSize\", 4, function (cm) {\n resetModeState(cm);\n clearCaches(cm);\n regChange(cm);\n }, true);\n option(\"lineSeparator\", null, function (cm, val) {\n cm.doc.lineSep = val;\n\n if (!val) {\n return;\n }\n\n var newBreaks = [],\n lineNo = cm.doc.first;\n cm.doc.iter(function (line) {\n for (var pos = 0;;) {\n var found = line.text.indexOf(val, pos);\n\n if (found == -1) {\n break;\n }\n\n pos = found + val.length;\n newBreaks.push(Pos(lineNo, found));\n }\n\n lineNo++;\n });\n\n for (var i = newBreaks.length - 1; i >= 0; i--) {\n _replaceRange(cm.doc, val, newBreaks[i], Pos(newBreaks[i].line, newBreaks[i].ch + val.length));\n }\n });\n option(\"specialChars\", /[\\u0000-\\u001f\\u007f-\\u009f\\u00ad\\u061c\\u200b-\\u200f\\u2028\\u2029\\ufeff\\ufff9-\\ufffc]/g, function (cm, val, old) {\n cm.state.specialChars = new RegExp(val.source + (val.test(\"\\t\") ? \"\" : \"|\\t\"), \"g\");\n\n if (old != Init) {\n cm.refresh();\n }\n });\n option(\"specialCharPlaceholder\", defaultSpecialCharPlaceholder, function (cm) {\n return cm.refresh();\n }, true);\n option(\"electricChars\", true);\n option(\"inputStyle\", mobile ? \"contenteditable\" : \"textarea\", function () {\n throw new Error(\"inputStyle can not (yet) be changed in a running editor\"); // FIXME\n }, true);\n option(\"spellcheck\", false, function (cm, val) {\n return cm.getInputField().spellcheck = val;\n }, true);\n option(\"autocorrect\", false, function (cm, val) {\n return cm.getInputField().autocorrect = val;\n }, true);\n option(\"autocapitalize\", false, function (cm, val) {\n return cm.getInputField().autocapitalize = val;\n }, true);\n option(\"rtlMoveVisually\", !windows);\n option(\"wholeLineUpdateBefore\", true);\n option(\"theme\", \"default\", function (cm) {\n themeChanged(cm);\n updateGutters(cm);\n }, true);\n option(\"keyMap\", \"default\", function (cm, val, old) {\n var next = getKeyMap(val);\n var prev = old != Init && getKeyMap(old);\n\n if (prev && prev.detach) {\n prev.detach(cm, next);\n }\n\n if (next.attach) {\n next.attach(cm, prev || null);\n }\n });\n option(\"extraKeys\", null);\n option(\"configureMouse\", null);\n option(\"lineWrapping\", false, wrappingChanged, true);\n option(\"gutters\", [], function (cm, val) {\n cm.display.gutterSpecs = getGutters(val, cm.options.lineNumbers);\n updateGutters(cm);\n }, true);\n option(\"fixedGutter\", true, function (cm, val) {\n cm.display.gutters.style.left = val ? compensateForHScroll(cm.display) + \"px\" : \"0\";\n cm.refresh();\n }, true);\n option(\"coverGutterNextToScrollbar\", false, function (cm) {\n return updateScrollbars(cm);\n }, true);\n option(\"scrollbarStyle\", \"native\", function (cm) {\n initScrollbars(cm);\n updateScrollbars(cm);\n cm.display.scrollbars.setScrollTop(cm.doc.scrollTop);\n cm.display.scrollbars.setScrollLeft(cm.doc.scrollLeft);\n }, true);\n option(\"lineNumbers\", false, function (cm, val) {\n cm.display.gutterSpecs = getGutters(cm.options.gutters, val);\n updateGutters(cm);\n }, true);\n option(\"firstLineNumber\", 1, updateGutters, true);\n option(\"lineNumberFormatter\", function (integer) {\n return integer;\n }, updateGutters, true);\n option(\"showCursorWhenSelecting\", false, updateSelection, true);\n option(\"resetSelectionOnContextMenu\", true);\n option(\"lineWiseCopyCut\", true);\n option(\"pasteLinesPerSelection\", true);\n option(\"selectionsMayTouch\", false);\n option(\"readOnly\", false, function (cm, val) {\n if (val == \"nocursor\") {\n onBlur(cm);\n cm.display.input.blur();\n }\n\n cm.display.input.readOnlyChanged(val);\n });\n option(\"screenReaderLabel\", null, function (cm, val) {\n val = val === '' ? null : val;\n cm.display.input.screenReaderLabelChanged(val);\n });\n option(\"disableInput\", false, function (cm, val) {\n if (!val) {\n cm.display.input.reset();\n }\n }, true);\n option(\"dragDrop\", true, dragDropChanged);\n option(\"allowDropFileTypes\", null);\n option(\"cursorBlinkRate\", 530);\n option(\"cursorScrollMargin\", 0);\n option(\"cursorHeight\", 1, updateSelection, true);\n option(\"singleCursorHeightPerLine\", true, updateSelection, true);\n option(\"workTime\", 100);\n option(\"workDelay\", 100);\n option(\"flattenSpans\", true, resetModeState, true);\n option(\"addModeClass\", false, resetModeState, true);\n option(\"pollInterval\", 100);\n option(\"undoDepth\", 200, function (cm, val) {\n return cm.doc.history.undoDepth = val;\n });\n option(\"historyEventDelay\", 1250);\n option(\"viewportMargin\", 10, function (cm) {\n return cm.refresh();\n }, true);\n option(\"maxHighlightLength\", 10000, resetModeState, true);\n option(\"moveInputWithCursor\", true, function (cm, val) {\n if (!val) {\n cm.display.input.resetPosition();\n }\n });\n option(\"tabindex\", null, function (cm, val) {\n return cm.display.input.getField().tabIndex = val || \"\";\n });\n option(\"autofocus\", null);\n option(\"direction\", \"ltr\", function (cm, val) {\n return cm.doc.setDirection(val);\n }, true);\n option(\"phrases\", null);\n }\n\n function dragDropChanged(cm, value, old) {\n var wasOn = old && old != Init;\n\n if (!value != !wasOn) {\n var funcs = cm.display.dragFunctions;\n var toggle = value ? on : off;\n toggle(cm.display.scroller, \"dragstart\", funcs.start);\n toggle(cm.display.scroller, \"dragenter\", funcs.enter);\n toggle(cm.display.scroller, \"dragover\", funcs.over);\n toggle(cm.display.scroller, \"dragleave\", funcs.leave);\n toggle(cm.display.scroller, \"drop\", funcs.drop);\n }\n }\n\n function wrappingChanged(cm) {\n if (cm.options.lineWrapping) {\n addClass(cm.display.wrapper, \"CodeMirror-wrap\");\n cm.display.sizer.style.minWidth = \"\";\n cm.display.sizerWidth = null;\n } else {\n rmClass(cm.display.wrapper, \"CodeMirror-wrap\");\n findMaxLine(cm);\n }\n\n estimateLineHeights(cm);\n regChange(cm);\n clearCaches(cm);\n setTimeout(function () {\n return updateScrollbars(cm);\n }, 100);\n } // A CodeMirror instance represents an editor. This is the object\n // that user code is usually dealing with.\n\n\n function CodeMirror(place, options) {\n var this$1 = this;\n\n if (!(this instanceof CodeMirror)) {\n return new CodeMirror(place, options);\n }\n\n this.options = options = options ? copyObj(options) : {}; // Determine effective options based on given values and defaults.\n\n copyObj(defaults, options, false);\n var doc = options.value;\n\n if (typeof doc == \"string\") {\n doc = new Doc(doc, options.mode, null, options.lineSeparator, options.direction);\n } else if (options.mode) {\n doc.modeOption = options.mode;\n }\n\n this.doc = doc;\n var input = new CodeMirror.inputStyles[options.inputStyle](this);\n var display = this.display = new Display(place, doc, input, options);\n display.wrapper.CodeMirror = this;\n themeChanged(this);\n\n if (options.lineWrapping) {\n this.display.wrapper.className += \" CodeMirror-wrap\";\n }\n\n initScrollbars(this);\n this.state = {\n keyMaps: [],\n // stores maps added by addKeyMap\n overlays: [],\n // highlighting overlays, as added by addOverlay\n modeGen: 0,\n // bumped when mode/overlay changes, used to invalidate highlighting info\n overwrite: false,\n delayingBlurEvent: false,\n focused: false,\n suppressEdits: false,\n // used to disable editing during key handlers when in readOnly mode\n pasteIncoming: -1,\n cutIncoming: -1,\n // help recognize paste/cut edits in input.poll\n selectingText: false,\n draggingText: false,\n highlight: new Delayed(),\n // stores highlight worker timeout\n keySeq: null,\n // Unfinished key sequence\n specialChars: null\n };\n\n if (options.autofocus && !mobile) {\n display.input.focus();\n } // Override magic textarea content restore that IE sometimes does\n // on our hidden textarea on reload\n\n\n if (ie && ie_version < 11) {\n setTimeout(function () {\n return this$1.display.input.reset(true);\n }, 20);\n }\n\n registerEventHandlers(this);\n ensureGlobalHandlers();\n\n _startOperation(this);\n\n this.curOp.forceUpdate = true;\n attachDoc(this, doc);\n\n if (options.autofocus && !mobile || this.hasFocus()) {\n setTimeout(bind(onFocus, this), 20);\n } else {\n onBlur(this);\n }\n\n for (var opt in optionHandlers) {\n if (optionHandlers.hasOwnProperty(opt)) {\n optionHandlers[opt](this, options[opt], Init);\n }\n }\n\n maybeUpdateLineNumberWidth(this);\n\n if (options.finishInit) {\n options.finishInit(this);\n }\n\n for (var i = 0; i < initHooks.length; ++i) {\n initHooks[i](this);\n }\n\n _endOperation(this); // Suppress optimizelegibility in Webkit, since it breaks text\n // measuring on line wrapping boundaries.\n\n\n if (webkit && options.lineWrapping && getComputedStyle(display.lineDiv).textRendering == \"optimizelegibility\") {\n display.lineDiv.style.textRendering = \"auto\";\n }\n } // The default configuration options.\n\n\n CodeMirror.defaults = defaults; // Functions to run when options are changed.\n\n CodeMirror.optionHandlers = optionHandlers; // Attach the necessary event handlers when initializing the editor\n\n function registerEventHandlers(cm) {\n var d = cm.display;\n on(d.scroller, \"mousedown\", operation(cm, onMouseDown)); // Older IE's will not fire a second mousedown for a double click\n\n if (ie && ie_version < 11) {\n on(d.scroller, \"dblclick\", operation(cm, function (e) {\n if (signalDOMEvent(cm, e)) {\n return;\n }\n\n var pos = posFromMouse(cm, e);\n\n if (!pos || clickInGutter(cm, e) || eventInWidget(cm.display, e)) {\n return;\n }\n\n e_preventDefault(e);\n var word = cm.findWordAt(pos);\n extendSelection(cm.doc, word.anchor, word.head);\n }));\n } else {\n on(d.scroller, \"dblclick\", function (e) {\n return signalDOMEvent(cm, e) || e_preventDefault(e);\n });\n } // Some browsers fire contextmenu *after* opening the menu, at\n // which point we can't mess with it anymore. Context menu is\n // handled in onMouseDown for these browsers.\n\n\n on(d.scroller, \"contextmenu\", function (e) {\n return onContextMenu(cm, e);\n });\n on(d.input.getField(), \"contextmenu\", function (e) {\n if (!d.scroller.contains(e.target)) {\n onContextMenu(cm, e);\n }\n }); // Used to suppress mouse event handling when a touch happens\n\n var touchFinished,\n prevTouch = {\n end: 0\n };\n\n function finishTouch() {\n if (d.activeTouch) {\n touchFinished = setTimeout(function () {\n return d.activeTouch = null;\n }, 1000);\n prevTouch = d.activeTouch;\n prevTouch.end = +new Date();\n }\n }\n\n function isMouseLikeTouchEvent(e) {\n if (e.touches.length != 1) {\n return false;\n }\n\n var touch = e.touches[0];\n return touch.radiusX <= 1 && touch.radiusY <= 1;\n }\n\n function farAway(touch, other) {\n if (other.left == null) {\n return true;\n }\n\n var dx = other.left - touch.left,\n dy = other.top - touch.top;\n return dx * dx + dy * dy > 20 * 20;\n }\n\n on(d.scroller, \"touchstart\", function (e) {\n if (!signalDOMEvent(cm, e) && !isMouseLikeTouchEvent(e) && !clickInGutter(cm, e)) {\n d.input.ensurePolled();\n clearTimeout(touchFinished);\n var now = +new Date();\n d.activeTouch = {\n start: now,\n moved: false,\n prev: now - prevTouch.end <= 300 ? prevTouch : null\n };\n\n if (e.touches.length == 1) {\n d.activeTouch.left = e.touches[0].pageX;\n d.activeTouch.top = e.touches[0].pageY;\n }\n }\n });\n on(d.scroller, \"touchmove\", function () {\n if (d.activeTouch) {\n d.activeTouch.moved = true;\n }\n });\n on(d.scroller, \"touchend\", function (e) {\n var touch = d.activeTouch;\n\n if (touch && !eventInWidget(d, e) && touch.left != null && !touch.moved && new Date() - touch.start < 300) {\n var pos = cm.coordsChar(d.activeTouch, \"page\"),\n range;\n\n if (!touch.prev || farAway(touch, touch.prev)) // Single tap\n {\n range = new Range(pos, pos);\n } else if (!touch.prev.prev || farAway(touch, touch.prev.prev)) // Double tap\n {\n range = cm.findWordAt(pos);\n } else // Triple tap\n {\n range = new Range(Pos(pos.line, 0), _clipPos(cm.doc, Pos(pos.line + 1, 0)));\n }\n\n cm.setSelection(range.anchor, range.head);\n cm.focus();\n e_preventDefault(e);\n }\n\n finishTouch();\n });\n on(d.scroller, \"touchcancel\", finishTouch); // Sync scrolling between fake scrollbars and real scrollable\n // area, ensure viewport is updated when scrolling.\n\n on(d.scroller, \"scroll\", function () {\n if (d.scroller.clientHeight) {\n updateScrollTop(cm, d.scroller.scrollTop);\n setScrollLeft(cm, d.scroller.scrollLeft, true);\n signal(cm, \"scroll\", cm);\n }\n }); // Listen to wheel events in order to try and update the viewport on time.\n\n on(d.scroller, \"mousewheel\", function (e) {\n return onScrollWheel(cm, e);\n });\n on(d.scroller, \"DOMMouseScroll\", function (e) {\n return onScrollWheel(cm, e);\n }); // Prevent wrapper from ever scrolling\n\n on(d.wrapper, \"scroll\", function () {\n return d.wrapper.scrollTop = d.wrapper.scrollLeft = 0;\n });\n d.dragFunctions = {\n enter: function enter(e) {\n if (!signalDOMEvent(cm, e)) {\n e_stop(e);\n }\n },\n over: function over(e) {\n if (!signalDOMEvent(cm, e)) {\n onDragOver(cm, e);\n e_stop(e);\n }\n },\n start: function start(e) {\n return onDragStart(cm, e);\n },\n drop: operation(cm, onDrop),\n leave: function leave(e) {\n if (!signalDOMEvent(cm, e)) {\n clearDragCursor(cm);\n }\n }\n };\n var inp = d.input.getField();\n on(inp, \"keyup\", function (e) {\n return onKeyUp.call(cm, e);\n });\n on(inp, \"keydown\", operation(cm, onKeyDown));\n on(inp, \"keypress\", operation(cm, onKeyPress));\n on(inp, \"focus\", function (e) {\n return onFocus(cm, e);\n });\n on(inp, \"blur\", function (e) {\n return onBlur(cm, e);\n });\n }\n\n var initHooks = [];\n\n CodeMirror.defineInitHook = function (f) {\n return initHooks.push(f);\n }; // Indent the given line. The how parameter can be \"smart\",\n // \"add\"/null, \"subtract\", or \"prev\". When aggressive is false\n // (typically set to true for forced single-line indents), empty\n // lines are not indented, and places where the mode returns Pass\n // are left alone.\n\n\n function indentLine(cm, n, how, aggressive) {\n var doc = cm.doc,\n state;\n\n if (how == null) {\n how = \"add\";\n }\n\n if (how == \"smart\") {\n // Fall back to \"prev\" when the mode doesn't have an indentation\n // method.\n if (!doc.mode.indent) {\n how = \"prev\";\n } else {\n state = getContextBefore(cm, n).state;\n }\n }\n\n var tabSize = cm.options.tabSize;\n var line = getLine(doc, n),\n curSpace = countColumn(line.text, null, tabSize);\n\n if (line.stateAfter) {\n line.stateAfter = null;\n }\n\n var curSpaceString = line.text.match(/^\\s*/)[0],\n indentation;\n\n if (!aggressive && !/\\S/.test(line.text)) {\n indentation = 0;\n how = \"not\";\n } else if (how == \"smart\") {\n indentation = doc.mode.indent(state, line.text.slice(curSpaceString.length), line.text);\n\n if (indentation == Pass || indentation > 150) {\n if (!aggressive) {\n return;\n }\n\n how = \"prev\";\n }\n }\n\n if (how == \"prev\") {\n if (n > doc.first) {\n indentation = countColumn(getLine(doc, n - 1).text, null, tabSize);\n } else {\n indentation = 0;\n }\n } else if (how == \"add\") {\n indentation = curSpace + cm.options.indentUnit;\n } else if (how == \"subtract\") {\n indentation = curSpace - cm.options.indentUnit;\n } else if (typeof how == \"number\") {\n indentation = curSpace + how;\n }\n\n indentation = Math.max(0, indentation);\n var indentString = \"\",\n pos = 0;\n\n if (cm.options.indentWithTabs) {\n for (var i = Math.floor(indentation / tabSize); i; --i) {\n pos += tabSize;\n indentString += \"\\t\";\n }\n }\n\n if (pos < indentation) {\n indentString += spaceStr(indentation - pos);\n }\n\n if (indentString != curSpaceString) {\n _replaceRange(doc, indentString, Pos(n, 0), Pos(n, curSpaceString.length), \"+input\");\n\n line.stateAfter = null;\n return true;\n } else {\n // Ensure that, if the cursor was in the whitespace at the start\n // of the line, it is moved to the end of that space.\n for (var i$1 = 0; i$1 < doc.sel.ranges.length; i$1++) {\n var range = doc.sel.ranges[i$1];\n\n if (range.head.line == n && range.head.ch < curSpaceString.length) {\n var pos$1 = Pos(n, curSpaceString.length);\n replaceOneSelection(doc, i$1, new Range(pos$1, pos$1));\n break;\n }\n }\n }\n } // This will be set to a {lineWise: bool, text: [string]} object, so\n // that, when pasting, we know what kind of selections the copied\n // text was made out of.\n\n\n var lastCopied = null;\n\n function setLastCopied(newLastCopied) {\n lastCopied = newLastCopied;\n }\n\n function applyTextInput(cm, inserted, deleted, sel, origin) {\n var doc = cm.doc;\n cm.display.shift = false;\n\n if (!sel) {\n sel = doc.sel;\n }\n\n var recent = +new Date() - 200;\n var paste = origin == \"paste\" || cm.state.pasteIncoming > recent;\n var textLines = splitLinesAuto(inserted),\n multiPaste = null; // When pasting N lines into N selections, insert one line per selection\n\n if (paste && sel.ranges.length > 1) {\n if (lastCopied && lastCopied.text.join(\"\\n\") == inserted) {\n if (sel.ranges.length % lastCopied.text.length == 0) {\n multiPaste = [];\n\n for (var i = 0; i < lastCopied.text.length; i++) {\n multiPaste.push(doc.splitLines(lastCopied.text[i]));\n }\n }\n } else if (textLines.length == sel.ranges.length && cm.options.pasteLinesPerSelection) {\n multiPaste = map(textLines, function (l) {\n return [l];\n });\n }\n }\n\n var updateInput = cm.curOp.updateInput; // Normal behavior is to insert the new text into every selection\n\n for (var i$1 = sel.ranges.length - 1; i$1 >= 0; i$1--) {\n var range = sel.ranges[i$1];\n var from = range.from(),\n to = range.to();\n\n if (range.empty()) {\n if (deleted && deleted > 0) // Handle deletion\n {\n from = Pos(from.line, from.ch - deleted);\n } else if (cm.state.overwrite && !paste) // Handle overwrite\n {\n to = Pos(to.line, Math.min(getLine(doc, to.line).text.length, to.ch + lst(textLines).length));\n } else if (paste && lastCopied && lastCopied.lineWise && lastCopied.text.join(\"\\n\") == inserted) {\n from = to = Pos(from.line, 0);\n }\n }\n\n var changeEvent = {\n from: from,\n to: to,\n text: multiPaste ? multiPaste[i$1 % multiPaste.length] : textLines,\n origin: origin || (paste ? \"paste\" : cm.state.cutIncoming > recent ? \"cut\" : \"+input\")\n };\n makeChange(cm.doc, changeEvent);\n signalLater(cm, \"inputRead\", cm, changeEvent);\n }\n\n if (inserted && !paste) {\n triggerElectric(cm, inserted);\n }\n\n ensureCursorVisible(cm);\n\n if (cm.curOp.updateInput < 2) {\n cm.curOp.updateInput = updateInput;\n }\n\n cm.curOp.typing = true;\n cm.state.pasteIncoming = cm.state.cutIncoming = -1;\n }\n\n function handlePaste(e, cm) {\n var pasted = e.clipboardData && e.clipboardData.getData(\"Text\");\n\n if (pasted) {\n e.preventDefault();\n\n if (!cm.isReadOnly() && !cm.options.disableInput) {\n runInOp(cm, function () {\n return applyTextInput(cm, pasted, 0, null, \"paste\");\n });\n }\n\n return true;\n }\n }\n\n function triggerElectric(cm, inserted) {\n // When an 'electric' character is inserted, immediately trigger a reindent\n if (!cm.options.electricChars || !cm.options.smartIndent) {\n return;\n }\n\n var sel = cm.doc.sel;\n\n for (var i = sel.ranges.length - 1; i >= 0; i--) {\n var range = sel.ranges[i];\n\n if (range.head.ch > 100 || i && sel.ranges[i - 1].head.line == range.head.line) {\n continue;\n }\n\n var mode = cm.getModeAt(range.head);\n var indented = false;\n\n if (mode.electricChars) {\n for (var j = 0; j < mode.electricChars.length; j++) {\n if (inserted.indexOf(mode.electricChars.charAt(j)) > -1) {\n indented = indentLine(cm, range.head.line, \"smart\");\n break;\n }\n }\n } else if (mode.electricInput) {\n if (mode.electricInput.test(getLine(cm.doc, range.head.line).text.slice(0, range.head.ch))) {\n indented = indentLine(cm, range.head.line, \"smart\");\n }\n }\n\n if (indented) {\n signalLater(cm, \"electricInput\", cm, range.head.line);\n }\n }\n }\n\n function copyableRanges(cm) {\n var text = [],\n ranges = [];\n\n for (var i = 0; i < cm.doc.sel.ranges.length; i++) {\n var line = cm.doc.sel.ranges[i].head.line;\n var lineRange = {\n anchor: Pos(line, 0),\n head: Pos(line + 1, 0)\n };\n ranges.push(lineRange);\n text.push(cm.getRange(lineRange.anchor, lineRange.head));\n }\n\n return {\n text: text,\n ranges: ranges\n };\n }\n\n function disableBrowserMagic(field, spellcheck, autocorrect, autocapitalize) {\n field.setAttribute(\"autocorrect\", autocorrect ? \"\" : \"off\");\n field.setAttribute(\"autocapitalize\", autocapitalize ? \"\" : \"off\");\n field.setAttribute(\"spellcheck\", !!spellcheck);\n }\n\n function hiddenTextarea() {\n var te = elt(\"textarea\", null, null, \"position: absolute; bottom: -1em; padding: 0; width: 1px; height: 1em; outline: none\");\n var div = elt(\"div\", [te], null, \"overflow: hidden; position: relative; width: 3px; height: 0px;\"); // The textarea is kept positioned near the cursor to prevent the\n // fact that it'll be scrolled into view on input from scrolling\n // our fake cursor out of view. On webkit, when wrap=off, paste is\n // very slow. So make the area wide instead.\n\n if (webkit) {\n te.style.width = \"1000px\";\n } else {\n te.setAttribute(\"wrap\", \"off\");\n } // If border: 0; -- iOS fails to open keyboard (issue #1287)\n\n\n if (ios) {\n te.style.border = \"1px solid black\";\n }\n\n disableBrowserMagic(te);\n return div;\n } // The publicly visible API. Note that methodOp(f) means\n // 'wrap f in an operation, performed on its `this` parameter'.\n // This is not the complete set of editor methods. Most of the\n // methods defined on the Doc type are also injected into\n // CodeMirror.prototype, for backwards compatibility and\n // convenience.\n\n\n function addEditorMethods(CodeMirror) {\n var optionHandlers = CodeMirror.optionHandlers;\n var helpers = CodeMirror.helpers = {};\n CodeMirror.prototype = {\n constructor: CodeMirror,\n focus: function focus() {\n window.focus();\n this.display.input.focus();\n },\n setOption: function setOption(option, value) {\n var options = this.options,\n old = options[option];\n\n if (options[option] == value && option != \"mode\") {\n return;\n }\n\n options[option] = value;\n\n if (optionHandlers.hasOwnProperty(option)) {\n operation(this, optionHandlers[option])(this, value, old);\n }\n\n signal(this, \"optionChange\", this, option);\n },\n getOption: function getOption(option) {\n return this.options[option];\n },\n getDoc: function getDoc() {\n return this.doc;\n },\n addKeyMap: function addKeyMap(map, bottom) {\n this.state.keyMaps[bottom ? \"push\" : \"unshift\"](getKeyMap(map));\n },\n removeKeyMap: function removeKeyMap(map) {\n var maps = this.state.keyMaps;\n\n for (var i = 0; i < maps.length; ++i) {\n if (maps[i] == map || maps[i].name == map) {\n maps.splice(i, 1);\n return true;\n }\n }\n },\n addOverlay: methodOp(function (spec, options) {\n var mode = spec.token ? spec : CodeMirror.getMode(this.options, spec);\n\n if (mode.startState) {\n throw new Error(\"Overlays may not be stateful.\");\n }\n\n insertSorted(this.state.overlays, {\n mode: mode,\n modeSpec: spec,\n opaque: options && options.opaque,\n priority: options && options.priority || 0\n }, function (overlay) {\n return overlay.priority;\n });\n this.state.modeGen++;\n regChange(this);\n }),\n removeOverlay: methodOp(function (spec) {\n var overlays = this.state.overlays;\n\n for (var i = 0; i < overlays.length; ++i) {\n var cur = overlays[i].modeSpec;\n\n if (cur == spec || typeof spec == \"string\" && cur.name == spec) {\n overlays.splice(i, 1);\n this.state.modeGen++;\n regChange(this);\n return;\n }\n }\n }),\n indentLine: methodOp(function (n, dir, aggressive) {\n if (typeof dir != \"string\" && typeof dir != \"number\") {\n if (dir == null) {\n dir = this.options.smartIndent ? \"smart\" : \"prev\";\n } else {\n dir = dir ? \"add\" : \"subtract\";\n }\n }\n\n if (isLine(this.doc, n)) {\n indentLine(this, n, dir, aggressive);\n }\n }),\n indentSelection: methodOp(function (how) {\n var ranges = this.doc.sel.ranges,\n end = -1;\n\n for (var i = 0; i < ranges.length; i++) {\n var range = ranges[i];\n\n if (!range.empty()) {\n var from = range.from(),\n to = range.to();\n var start = Math.max(end, from.line);\n end = Math.min(this.lastLine(), to.line - (to.ch ? 0 : 1)) + 1;\n\n for (var j = start; j < end; ++j) {\n indentLine(this, j, how);\n }\n\n var newRanges = this.doc.sel.ranges;\n\n if (from.ch == 0 && ranges.length == newRanges.length && newRanges[i].from().ch > 0) {\n replaceOneSelection(this.doc, i, new Range(from, newRanges[i].to()), sel_dontScroll);\n }\n } else if (range.head.line > end) {\n indentLine(this, range.head.line, how, true);\n end = range.head.line;\n\n if (i == this.doc.sel.primIndex) {\n ensureCursorVisible(this);\n }\n }\n }\n }),\n // Fetch the parser token for a given character. Useful for hacks\n // that want to inspect the mode state (say, for completion).\n getTokenAt: function getTokenAt(pos, precise) {\n return takeToken(this, pos, precise);\n },\n getLineTokens: function getLineTokens(line, precise) {\n return takeToken(this, Pos(line), precise, true);\n },\n getTokenTypeAt: function getTokenTypeAt(pos) {\n pos = _clipPos(this.doc, pos);\n var styles = getLineStyles(this, getLine(this.doc, pos.line));\n var before = 0,\n after = (styles.length - 1) / 2,\n ch = pos.ch;\n var type;\n\n if (ch == 0) {\n type = styles[2];\n } else {\n for (;;) {\n var mid = before + after >> 1;\n\n if ((mid ? styles[mid * 2 - 1] : 0) >= ch) {\n after = mid;\n } else if (styles[mid * 2 + 1] < ch) {\n before = mid + 1;\n } else {\n type = styles[mid * 2 + 2];\n break;\n }\n }\n }\n\n var cut = type ? type.indexOf(\"overlay \") : -1;\n return cut < 0 ? type : cut == 0 ? null : type.slice(0, cut - 1);\n },\n getModeAt: function getModeAt(pos) {\n var mode = this.doc.mode;\n\n if (!mode.innerMode) {\n return mode;\n }\n\n return CodeMirror.innerMode(mode, this.getTokenAt(pos).state).mode;\n },\n getHelper: function getHelper(pos, type) {\n return this.getHelpers(pos, type)[0];\n },\n getHelpers: function getHelpers(pos, type) {\n var found = [];\n\n if (!helpers.hasOwnProperty(type)) {\n return found;\n }\n\n var help = helpers[type],\n mode = this.getModeAt(pos);\n\n if (typeof mode[type] == \"string\") {\n if (help[mode[type]]) {\n found.push(help[mode[type]]);\n }\n } else if (mode[type]) {\n for (var i = 0; i < mode[type].length; i++) {\n var val = help[mode[type][i]];\n\n if (val) {\n found.push(val);\n }\n }\n } else if (mode.helperType && help[mode.helperType]) {\n found.push(help[mode.helperType]);\n } else if (help[mode.name]) {\n found.push(help[mode.name]);\n }\n\n for (var i$1 = 0; i$1 < help._global.length; i$1++) {\n var cur = help._global[i$1];\n\n if (cur.pred(mode, this) && indexOf(found, cur.val) == -1) {\n found.push(cur.val);\n }\n }\n\n return found;\n },\n getStateAfter: function getStateAfter(line, precise) {\n var doc = this.doc;\n line = clipLine(doc, line == null ? doc.first + doc.size - 1 : line);\n return getContextBefore(this, line + 1, precise).state;\n },\n cursorCoords: function cursorCoords(start, mode) {\n var pos,\n range = this.doc.sel.primary();\n\n if (start == null) {\n pos = range.head;\n } else if (_typeof(start) == \"object\") {\n pos = _clipPos(this.doc, start);\n } else {\n pos = start ? range.from() : range.to();\n }\n\n return _cursorCoords(this, pos, mode || \"page\");\n },\n charCoords: function charCoords(pos, mode) {\n return _charCoords(this, _clipPos(this.doc, pos), mode || \"page\");\n },\n coordsChar: function coordsChar(coords, mode) {\n coords = fromCoordSystem(this, coords, mode || \"page\");\n return _coordsChar(this, coords.left, coords.top);\n },\n lineAtHeight: function lineAtHeight(height, mode) {\n height = fromCoordSystem(this, {\n top: height,\n left: 0\n }, mode || \"page\").top;\n return _lineAtHeight(this.doc, height + this.display.viewOffset);\n },\n heightAtLine: function heightAtLine(line, mode, includeWidgets) {\n var end = false,\n lineObj;\n\n if (typeof line == \"number\") {\n var last = this.doc.first + this.doc.size - 1;\n\n if (line < this.doc.first) {\n line = this.doc.first;\n } else if (line > last) {\n line = last;\n end = true;\n }\n\n lineObj = getLine(this.doc, line);\n } else {\n lineObj = line;\n }\n\n return intoCoordSystem(this, lineObj, {\n top: 0,\n left: 0\n }, mode || \"page\", includeWidgets || end).top + (end ? this.doc.height - _heightAtLine(lineObj) : 0);\n },\n defaultTextHeight: function defaultTextHeight() {\n return textHeight(this.display);\n },\n defaultCharWidth: function defaultCharWidth() {\n return charWidth(this.display);\n },\n getViewport: function getViewport() {\n return {\n from: this.display.viewFrom,\n to: this.display.viewTo\n };\n },\n addWidget: function addWidget(pos, node, scroll, vert, horiz) {\n var display = this.display;\n pos = _cursorCoords(this, _clipPos(this.doc, pos));\n var top = pos.bottom,\n left = pos.left;\n node.style.position = \"absolute\";\n node.setAttribute(\"cm-ignore-events\", \"true\");\n this.display.input.setUneditable(node);\n display.sizer.appendChild(node);\n\n if (vert == \"over\") {\n top = pos.top;\n } else if (vert == \"above\" || vert == \"near\") {\n var vspace = Math.max(display.wrapper.clientHeight, this.doc.height),\n hspace = Math.max(display.sizer.clientWidth, display.lineSpace.clientWidth); // Default to positioning above (if specified and possible); otherwise default to positioning below\n\n if ((vert == 'above' || pos.bottom + node.offsetHeight > vspace) && pos.top > node.offsetHeight) {\n top = pos.top - node.offsetHeight;\n } else if (pos.bottom + node.offsetHeight <= vspace) {\n top = pos.bottom;\n }\n\n if (left + node.offsetWidth > hspace) {\n left = hspace - node.offsetWidth;\n }\n }\n\n node.style.top = top + \"px\";\n node.style.left = node.style.right = \"\";\n\n if (horiz == \"right\") {\n left = display.sizer.clientWidth - node.offsetWidth;\n node.style.right = \"0px\";\n } else {\n if (horiz == \"left\") {\n left = 0;\n } else if (horiz == \"middle\") {\n left = (display.sizer.clientWidth - node.offsetWidth) / 2;\n }\n\n node.style.left = left + \"px\";\n }\n\n if (scroll) {\n scrollIntoView(this, {\n left: left,\n top: top,\n right: left + node.offsetWidth,\n bottom: top + node.offsetHeight\n });\n }\n },\n triggerOnKeyDown: methodOp(onKeyDown),\n triggerOnKeyPress: methodOp(onKeyPress),\n triggerOnKeyUp: onKeyUp,\n triggerOnMouseDown: methodOp(onMouseDown),\n execCommand: function execCommand(cmd) {\n if (commands.hasOwnProperty(cmd)) {\n return commands[cmd].call(null, this);\n }\n },\n triggerElectric: methodOp(function (text) {\n triggerElectric(this, text);\n }),\n findPosH: function findPosH(from, amount, unit, visually) {\n var dir = 1;\n\n if (amount < 0) {\n dir = -1;\n amount = -amount;\n }\n\n var cur = _clipPos(this.doc, from);\n\n for (var i = 0; i < amount; ++i) {\n cur = _findPosH(this.doc, cur, dir, unit, visually);\n\n if (cur.hitSide) {\n break;\n }\n }\n\n return cur;\n },\n moveH: methodOp(function (dir, unit) {\n var this$1 = this;\n this.extendSelectionsBy(function (range) {\n if (this$1.display.shift || this$1.doc.extend || range.empty()) {\n return _findPosH(this$1.doc, range.head, dir, unit, this$1.options.rtlMoveVisually);\n } else {\n return dir < 0 ? range.from() : range.to();\n }\n }, sel_move);\n }),\n deleteH: methodOp(function (dir, unit) {\n var sel = this.doc.sel,\n doc = this.doc;\n\n if (sel.somethingSelected()) {\n doc.replaceSelection(\"\", null, \"+delete\");\n } else {\n deleteNearSelection(this, function (range) {\n var other = _findPosH(doc, range.head, dir, unit, false);\n\n return dir < 0 ? {\n from: other,\n to: range.head\n } : {\n from: range.head,\n to: other\n };\n });\n }\n }),\n findPosV: function findPosV(from, amount, unit, goalColumn) {\n var dir = 1,\n x = goalColumn;\n\n if (amount < 0) {\n dir = -1;\n amount = -amount;\n }\n\n var cur = _clipPos(this.doc, from);\n\n for (var i = 0; i < amount; ++i) {\n var coords = _cursorCoords(this, cur, \"div\");\n\n if (x == null) {\n x = coords.left;\n } else {\n coords.left = x;\n }\n\n cur = _findPosV(this, coords, dir, unit);\n\n if (cur.hitSide) {\n break;\n }\n }\n\n return cur;\n },\n moveV: methodOp(function (dir, unit) {\n var this$1 = this;\n var doc = this.doc,\n goals = [];\n var collapse = !this.display.shift && !doc.extend && doc.sel.somethingSelected();\n doc.extendSelectionsBy(function (range) {\n if (collapse) {\n return dir < 0 ? range.from() : range.to();\n }\n\n var headPos = _cursorCoords(this$1, range.head, \"div\");\n\n if (range.goalColumn != null) {\n headPos.left = range.goalColumn;\n }\n\n goals.push(headPos.left);\n\n var pos = _findPosV(this$1, headPos, dir, unit);\n\n if (unit == \"page\" && range == doc.sel.primary()) {\n addToScrollTop(this$1, _charCoords(this$1, pos, \"div\").top - headPos.top);\n }\n\n return pos;\n }, sel_move);\n\n if (goals.length) {\n for (var i = 0; i < doc.sel.ranges.length; i++) {\n doc.sel.ranges[i].goalColumn = goals[i];\n }\n }\n }),\n // Find the word at the given position (as returned by coordsChar).\n findWordAt: function findWordAt(pos) {\n var doc = this.doc,\n line = getLine(doc, pos.line).text;\n var start = pos.ch,\n end = pos.ch;\n\n if (line) {\n var helper = this.getHelper(pos, \"wordChars\");\n\n if ((pos.sticky == \"before\" || end == line.length) && start) {\n --start;\n } else {\n ++end;\n }\n\n var startChar = line.charAt(start);\n var check = isWordChar(startChar, helper) ? function (ch) {\n return isWordChar(ch, helper);\n } : /\\s/.test(startChar) ? function (ch) {\n return /\\s/.test(ch);\n } : function (ch) {\n return !/\\s/.test(ch) && !isWordChar(ch);\n };\n\n while (start > 0 && check(line.charAt(start - 1))) {\n --start;\n }\n\n while (end < line.length && check(line.charAt(end))) {\n ++end;\n }\n }\n\n return new Range(Pos(pos.line, start), Pos(pos.line, end));\n },\n toggleOverwrite: function toggleOverwrite(value) {\n if (value != null && value == this.state.overwrite) {\n return;\n }\n\n if (this.state.overwrite = !this.state.overwrite) {\n addClass(this.display.cursorDiv, \"CodeMirror-overwrite\");\n } else {\n rmClass(this.display.cursorDiv, \"CodeMirror-overwrite\");\n }\n\n signal(this, \"overwriteToggle\", this, this.state.overwrite);\n },\n hasFocus: function hasFocus() {\n return this.display.input.getField() == activeElt();\n },\n isReadOnly: function isReadOnly() {\n return !!(this.options.readOnly || this.doc.cantEdit);\n },\n scrollTo: methodOp(function (x, y) {\n scrollToCoords(this, x, y);\n }),\n getScrollInfo: function getScrollInfo() {\n var scroller = this.display.scroller;\n return {\n left: scroller.scrollLeft,\n top: scroller.scrollTop,\n height: scroller.scrollHeight - scrollGap(this) - this.display.barHeight,\n width: scroller.scrollWidth - scrollGap(this) - this.display.barWidth,\n clientHeight: displayHeight(this),\n clientWidth: displayWidth(this)\n };\n },\n scrollIntoView: methodOp(function (range, margin) {\n if (range == null) {\n range = {\n from: this.doc.sel.primary().head,\n to: null\n };\n\n if (margin == null) {\n margin = this.options.cursorScrollMargin;\n }\n } else if (typeof range == \"number\") {\n range = {\n from: Pos(range, 0),\n to: null\n };\n } else if (range.from == null) {\n range = {\n from: range,\n to: null\n };\n }\n\n if (!range.to) {\n range.to = range.from;\n }\n\n range.margin = margin || 0;\n\n if (range.from.line != null) {\n scrollToRange(this, range);\n } else {\n scrollToCoordsRange(this, range.from, range.to, range.margin);\n }\n }),\n setSize: methodOp(function (width, height) {\n var this$1 = this;\n\n var interpret = function interpret(val) {\n return typeof val == \"number\" || /^\\d+$/.test(String(val)) ? val + \"px\" : val;\n };\n\n if (width != null) {\n this.display.wrapper.style.width = interpret(width);\n }\n\n if (height != null) {\n this.display.wrapper.style.height = interpret(height);\n }\n\n if (this.options.lineWrapping) {\n clearLineMeasurementCache(this);\n }\n\n var lineNo = this.display.viewFrom;\n this.doc.iter(lineNo, this.display.viewTo, function (line) {\n if (line.widgets) {\n for (var i = 0; i < line.widgets.length; i++) {\n if (line.widgets[i].noHScroll) {\n regLineChange(this$1, lineNo, \"widget\");\n break;\n }\n }\n }\n\n ++lineNo;\n });\n this.curOp.forceUpdate = true;\n signal(this, \"refresh\", this);\n }),\n operation: function operation(f) {\n return runInOp(this, f);\n },\n startOperation: function startOperation() {\n return _startOperation(this);\n },\n endOperation: function endOperation() {\n return _endOperation(this);\n },\n refresh: methodOp(function () {\n var oldHeight = this.display.cachedTextHeight;\n regChange(this);\n this.curOp.forceUpdate = true;\n clearCaches(this);\n scrollToCoords(this, this.doc.scrollLeft, this.doc.scrollTop);\n updateGutterSpace(this.display);\n\n if (oldHeight == null || Math.abs(oldHeight - textHeight(this.display)) > .5 || this.options.lineWrapping) {\n estimateLineHeights(this);\n }\n\n signal(this, \"refresh\", this);\n }),\n swapDoc: methodOp(function (doc) {\n var old = this.doc;\n old.cm = null; // Cancel the current text selection if any (#5821)\n\n if (this.state.selectingText) {\n this.state.selectingText();\n }\n\n attachDoc(this, doc);\n clearCaches(this);\n this.display.input.reset();\n scrollToCoords(this, doc.scrollLeft, doc.scrollTop);\n this.curOp.forceScroll = true;\n signalLater(this, \"swapDoc\", this, old);\n return old;\n }),\n phrase: function phrase(phraseText) {\n var phrases = this.options.phrases;\n return phrases && Object.prototype.hasOwnProperty.call(phrases, phraseText) ? phrases[phraseText] : phraseText;\n },\n getInputField: function getInputField() {\n return this.display.input.getField();\n },\n getWrapperElement: function getWrapperElement() {\n return this.display.wrapper;\n },\n getScrollerElement: function getScrollerElement() {\n return this.display.scroller;\n },\n getGutterElement: function getGutterElement() {\n return this.display.gutters;\n }\n };\n eventMixin(CodeMirror);\n\n CodeMirror.registerHelper = function (type, name, value) {\n if (!helpers.hasOwnProperty(type)) {\n helpers[type] = CodeMirror[type] = {\n _global: []\n };\n }\n\n helpers[type][name] = value;\n };\n\n CodeMirror.registerGlobalHelper = function (type, name, predicate, value) {\n CodeMirror.registerHelper(type, name, value);\n\n helpers[type]._global.push({\n pred: predicate,\n val: value\n });\n };\n } // Used for horizontal relative motion. Dir is -1 or 1 (left or\n // right), unit can be \"char\", \"column\" (like char, but doesn't\n // cross line boundaries), \"word\" (across next word), or \"group\" (to\n // the start of next group of word or non-word-non-whitespace\n // chars). The visually param controls whether, in right-to-left\n // text, direction 1 means to move towards the next index in the\n // string, or towards the character to the right of the current\n // position. The resulting position will have a hitSide=true\n // property if it reached the end of the document.\n\n\n function _findPosH(doc, pos, dir, unit, visually) {\n var oldPos = pos;\n var origDir = dir;\n var lineObj = getLine(doc, pos.line);\n var lineDir = visually && doc.direction == \"rtl\" ? -dir : dir;\n\n function findNextLine() {\n var l = pos.line + lineDir;\n\n if (l < doc.first || l >= doc.first + doc.size) {\n return false;\n }\n\n pos = new Pos(l, pos.ch, pos.sticky);\n return lineObj = getLine(doc, l);\n }\n\n function moveOnce(boundToLine) {\n var next;\n\n if (visually) {\n next = moveVisually(doc.cm, lineObj, pos, dir);\n } else {\n next = moveLogically(lineObj, pos, dir);\n }\n\n if (next == null) {\n if (!boundToLine && findNextLine()) {\n pos = endOfLine(visually, doc.cm, lineObj, pos.line, lineDir);\n } else {\n return false;\n }\n } else {\n pos = next;\n }\n\n return true;\n }\n\n if (unit == \"char\") {\n moveOnce();\n } else if (unit == \"column\") {\n moveOnce(true);\n } else if (unit == \"word\" || unit == \"group\") {\n var sawType = null,\n group = unit == \"group\";\n var helper = doc.cm && doc.cm.getHelper(pos, \"wordChars\");\n\n for (var first = true;; first = false) {\n if (dir < 0 && !moveOnce(!first)) {\n break;\n }\n\n var cur = lineObj.text.charAt(pos.ch) || \"\\n\";\n var type = isWordChar(cur, helper) ? \"w\" : group && cur == \"\\n\" ? \"n\" : !group || /\\s/.test(cur) ? null : \"p\";\n\n if (group && !first && !type) {\n type = \"s\";\n }\n\n if (sawType && sawType != type) {\n if (dir < 0) {\n dir = 1;\n moveOnce();\n pos.sticky = \"after\";\n }\n\n break;\n }\n\n if (type) {\n sawType = type;\n }\n\n if (dir > 0 && !moveOnce(!first)) {\n break;\n }\n }\n }\n\n var result = skipAtomic(doc, pos, oldPos, origDir, true);\n\n if (equalCursorPos(oldPos, result)) {\n result.hitSide = true;\n }\n\n return result;\n } // For relative vertical movement. Dir may be -1 or 1. Unit can be\n // \"page\" or \"line\". The resulting position will have a hitSide=true\n // property if it reached the end of the document.\n\n\n function _findPosV(cm, pos, dir, unit) {\n var doc = cm.doc,\n x = pos.left,\n y;\n\n if (unit == \"page\") {\n var pageSize = Math.min(cm.display.wrapper.clientHeight, window.innerHeight || document.documentElement.clientHeight);\n var moveAmount = Math.max(pageSize - .5 * textHeight(cm.display), 3);\n y = (dir > 0 ? pos.bottom : pos.top) + dir * moveAmount;\n } else if (unit == \"line\") {\n y = dir > 0 ? pos.bottom + 3 : pos.top - 3;\n }\n\n var target;\n\n for (;;) {\n target = _coordsChar(cm, x, y);\n\n if (!target.outside) {\n break;\n }\n\n if (dir < 0 ? y <= 0 : y >= doc.height) {\n target.hitSide = true;\n break;\n }\n\n y += dir * 5;\n }\n\n return target;\n } // CONTENTEDITABLE INPUT STYLE\n\n\n var ContentEditableInput = function ContentEditableInput(cm) {\n this.cm = cm;\n this.lastAnchorNode = this.lastAnchorOffset = this.lastFocusNode = this.lastFocusOffset = null;\n this.polling = new Delayed();\n this.composing = null;\n this.gracePeriod = false;\n this.readDOMTimeout = null;\n };\n\n ContentEditableInput.prototype.init = function (display) {\n var this$1 = this;\n var input = this,\n cm = input.cm;\n var div = input.div = display.lineDiv;\n disableBrowserMagic(div, cm.options.spellcheck, cm.options.autocorrect, cm.options.autocapitalize);\n on(div, \"paste\", function (e) {\n if (signalDOMEvent(cm, e) || handlePaste(e, cm)) {\n return;\n } // IE doesn't fire input events, so we schedule a read for the pasted content in this way\n\n\n if (ie_version <= 11) {\n setTimeout(operation(cm, function () {\n return this$1.updateFromDOM();\n }), 20);\n }\n });\n on(div, \"compositionstart\", function (e) {\n this$1.composing = {\n data: e.data,\n done: false\n };\n });\n on(div, \"compositionupdate\", function (e) {\n if (!this$1.composing) {\n this$1.composing = {\n data: e.data,\n done: false\n };\n }\n });\n on(div, \"compositionend\", function (e) {\n if (this$1.composing) {\n if (e.data != this$1.composing.data) {\n this$1.readFromDOMSoon();\n }\n\n this$1.composing.done = true;\n }\n });\n on(div, \"touchstart\", function () {\n return input.forceCompositionEnd();\n });\n on(div, \"input\", function () {\n if (!this$1.composing) {\n this$1.readFromDOMSoon();\n }\n });\n\n function onCopyCut(e) {\n if (signalDOMEvent(cm, e)) {\n return;\n }\n\n if (cm.somethingSelected()) {\n setLastCopied({\n lineWise: false,\n text: cm.getSelections()\n });\n\n if (e.type == \"cut\") {\n cm.replaceSelection(\"\", null, \"cut\");\n }\n } else if (!cm.options.lineWiseCopyCut) {\n return;\n } else {\n var ranges = copyableRanges(cm);\n setLastCopied({\n lineWise: true,\n text: ranges.text\n });\n\n if (e.type == \"cut\") {\n cm.operation(function () {\n cm.setSelections(ranges.ranges, 0, sel_dontScroll);\n cm.replaceSelection(\"\", null, \"cut\");\n });\n }\n }\n\n if (e.clipboardData) {\n e.clipboardData.clearData();\n var content = lastCopied.text.join(\"\\n\"); // iOS exposes the clipboard API, but seems to discard content inserted into it\n\n e.clipboardData.setData(\"Text\", content);\n\n if (e.clipboardData.getData(\"Text\") == content) {\n e.preventDefault();\n return;\n }\n } // Old-fashioned briefly-focus-a-textarea hack\n\n\n var kludge = hiddenTextarea(),\n te = kludge.firstChild;\n cm.display.lineSpace.insertBefore(kludge, cm.display.lineSpace.firstChild);\n te.value = lastCopied.text.join(\"\\n\");\n var hadFocus = document.activeElement;\n selectInput(te);\n setTimeout(function () {\n cm.display.lineSpace.removeChild(kludge);\n hadFocus.focus();\n\n if (hadFocus == div) {\n input.showPrimarySelection();\n }\n }, 50);\n }\n\n on(div, \"copy\", onCopyCut);\n on(div, \"cut\", onCopyCut);\n };\n\n ContentEditableInput.prototype.screenReaderLabelChanged = function (label) {\n // Label for screenreaders, accessibility\n if (label) {\n this.div.setAttribute('aria-label', label);\n } else {\n this.div.removeAttribute('aria-label');\n }\n };\n\n ContentEditableInput.prototype.prepareSelection = function () {\n var result = prepareSelection(this.cm, false);\n result.focus = document.activeElement == this.div;\n return result;\n };\n\n ContentEditableInput.prototype.showSelection = function (info, takeFocus) {\n if (!info || !this.cm.display.view.length) {\n return;\n }\n\n if (info.focus || takeFocus) {\n this.showPrimarySelection();\n }\n\n this.showMultipleSelections(info);\n };\n\n ContentEditableInput.prototype.getSelection = function () {\n return this.cm.display.wrapper.ownerDocument.getSelection();\n };\n\n ContentEditableInput.prototype.showPrimarySelection = function () {\n var sel = this.getSelection(),\n cm = this.cm,\n prim = cm.doc.sel.primary();\n var from = prim.from(),\n to = prim.to();\n\n if (cm.display.viewTo == cm.display.viewFrom || from.line >= cm.display.viewTo || to.line < cm.display.viewFrom) {\n sel.removeAllRanges();\n return;\n }\n\n var curAnchor = domToPos(cm, sel.anchorNode, sel.anchorOffset);\n var curFocus = domToPos(cm, sel.focusNode, sel.focusOffset);\n\n if (curAnchor && !curAnchor.bad && curFocus && !curFocus.bad && cmp(minPos(curAnchor, curFocus), from) == 0 && cmp(maxPos(curAnchor, curFocus), to) == 0) {\n return;\n }\n\n var view = cm.display.view;\n var start = from.line >= cm.display.viewFrom && posToDOM(cm, from) || {\n node: view[0].measure.map[2],\n offset: 0\n };\n var end = to.line < cm.display.viewTo && posToDOM(cm, to);\n\n if (!end) {\n var measure = view[view.length - 1].measure;\n var map = measure.maps ? measure.maps[measure.maps.length - 1] : measure.map;\n end = {\n node: map[map.length - 1],\n offset: map[map.length - 2] - map[map.length - 3]\n };\n }\n\n if (!start || !end) {\n sel.removeAllRanges();\n return;\n }\n\n var old = sel.rangeCount && sel.getRangeAt(0),\n rng;\n\n try {\n rng = range(start.node, start.offset, end.offset, end.node);\n } catch (e) {} // Our model of the DOM might be outdated, in which case the range we try to set can be impossible\n\n\n if (rng) {\n if (!gecko && cm.state.focused) {\n sel.collapse(start.node, start.offset);\n\n if (!rng.collapsed) {\n sel.removeAllRanges();\n sel.addRange(rng);\n }\n } else {\n sel.removeAllRanges();\n sel.addRange(rng);\n }\n\n if (old && sel.anchorNode == null) {\n sel.addRange(old);\n } else if (gecko) {\n this.startGracePeriod();\n }\n }\n\n this.rememberSelection();\n };\n\n ContentEditableInput.prototype.startGracePeriod = function () {\n var this$1 = this;\n clearTimeout(this.gracePeriod);\n this.gracePeriod = setTimeout(function () {\n this$1.gracePeriod = false;\n\n if (this$1.selectionChanged()) {\n this$1.cm.operation(function () {\n return this$1.cm.curOp.selectionChanged = true;\n });\n }\n }, 20);\n };\n\n ContentEditableInput.prototype.showMultipleSelections = function (info) {\n removeChildrenAndAdd(this.cm.display.cursorDiv, info.cursors);\n removeChildrenAndAdd(this.cm.display.selectionDiv, info.selection);\n };\n\n ContentEditableInput.prototype.rememberSelection = function () {\n var sel = this.getSelection();\n this.lastAnchorNode = sel.anchorNode;\n this.lastAnchorOffset = sel.anchorOffset;\n this.lastFocusNode = sel.focusNode;\n this.lastFocusOffset = sel.focusOffset;\n };\n\n ContentEditableInput.prototype.selectionInEditor = function () {\n var sel = this.getSelection();\n\n if (!sel.rangeCount) {\n return false;\n }\n\n var node = sel.getRangeAt(0).commonAncestorContainer;\n return contains(this.div, node);\n };\n\n ContentEditableInput.prototype.focus = function () {\n if (this.cm.options.readOnly != \"nocursor\") {\n if (!this.selectionInEditor() || document.activeElement != this.div) {\n this.showSelection(this.prepareSelection(), true);\n }\n\n this.div.focus();\n }\n };\n\n ContentEditableInput.prototype.blur = function () {\n this.div.blur();\n };\n\n ContentEditableInput.prototype.getField = function () {\n return this.div;\n };\n\n ContentEditableInput.prototype.supportsTouch = function () {\n return true;\n };\n\n ContentEditableInput.prototype.receivedFocus = function () {\n var input = this;\n\n if (this.selectionInEditor()) {\n this.pollSelection();\n } else {\n runInOp(this.cm, function () {\n return input.cm.curOp.selectionChanged = true;\n });\n }\n\n function poll() {\n if (input.cm.state.focused) {\n input.pollSelection();\n input.polling.set(input.cm.options.pollInterval, poll);\n }\n }\n\n this.polling.set(this.cm.options.pollInterval, poll);\n };\n\n ContentEditableInput.prototype.selectionChanged = function () {\n var sel = this.getSelection();\n return sel.anchorNode != this.lastAnchorNode || sel.anchorOffset != this.lastAnchorOffset || sel.focusNode != this.lastFocusNode || sel.focusOffset != this.lastFocusOffset;\n };\n\n ContentEditableInput.prototype.pollSelection = function () {\n if (this.readDOMTimeout != null || this.gracePeriod || !this.selectionChanged()) {\n return;\n }\n\n var sel = this.getSelection(),\n cm = this.cm; // On Android Chrome (version 56, at least), backspacing into an\n // uneditable block element will put the cursor in that element,\n // and then, because it's not editable, hide the virtual keyboard.\n // Because Android doesn't allow us to actually detect backspace\n // presses in a sane way, this code checks for when that happens\n // and simulates a backspace press in this case.\n\n if (android && chrome && this.cm.display.gutterSpecs.length && isInGutter(sel.anchorNode)) {\n this.cm.triggerOnKeyDown({\n type: \"keydown\",\n keyCode: 8,\n preventDefault: Math.abs\n });\n this.blur();\n this.focus();\n return;\n }\n\n if (this.composing) {\n return;\n }\n\n this.rememberSelection();\n var anchor = domToPos(cm, sel.anchorNode, sel.anchorOffset);\n var head = domToPos(cm, sel.focusNode, sel.focusOffset);\n\n if (anchor && head) {\n runInOp(cm, function () {\n setSelection(cm.doc, simpleSelection(anchor, head), sel_dontScroll);\n\n if (anchor.bad || head.bad) {\n cm.curOp.selectionChanged = true;\n }\n });\n }\n };\n\n ContentEditableInput.prototype.pollContent = function () {\n if (this.readDOMTimeout != null) {\n clearTimeout(this.readDOMTimeout);\n this.readDOMTimeout = null;\n }\n\n var cm = this.cm,\n display = cm.display,\n sel = cm.doc.sel.primary();\n var from = sel.from(),\n to = sel.to();\n\n if (from.ch == 0 && from.line > cm.firstLine()) {\n from = Pos(from.line - 1, getLine(cm.doc, from.line - 1).length);\n }\n\n if (to.ch == getLine(cm.doc, to.line).text.length && to.line < cm.lastLine()) {\n to = Pos(to.line + 1, 0);\n }\n\n if (from.line < display.viewFrom || to.line > display.viewTo - 1) {\n return false;\n }\n\n var fromIndex, fromLine, fromNode;\n\n if (from.line == display.viewFrom || (fromIndex = findViewIndex(cm, from.line)) == 0) {\n fromLine = lineNo(display.view[0].line);\n fromNode = display.view[0].node;\n } else {\n fromLine = lineNo(display.view[fromIndex].line);\n fromNode = display.view[fromIndex - 1].node.nextSibling;\n }\n\n var toIndex = findViewIndex(cm, to.line);\n var toLine, toNode;\n\n if (toIndex == display.view.length - 1) {\n toLine = display.viewTo - 1;\n toNode = display.lineDiv.lastChild;\n } else {\n toLine = lineNo(display.view[toIndex + 1].line) - 1;\n toNode = display.view[toIndex + 1].node.previousSibling;\n }\n\n if (!fromNode) {\n return false;\n }\n\n var newText = cm.doc.splitLines(domTextBetween(cm, fromNode, toNode, fromLine, toLine));\n var oldText = getBetween(cm.doc, Pos(fromLine, 0), Pos(toLine, getLine(cm.doc, toLine).text.length));\n\n while (newText.length > 1 && oldText.length > 1) {\n if (lst(newText) == lst(oldText)) {\n newText.pop();\n oldText.pop();\n toLine--;\n } else if (newText[0] == oldText[0]) {\n newText.shift();\n oldText.shift();\n fromLine++;\n } else {\n break;\n }\n }\n\n var cutFront = 0,\n cutEnd = 0;\n var newTop = newText[0],\n oldTop = oldText[0],\n maxCutFront = Math.min(newTop.length, oldTop.length);\n\n while (cutFront < maxCutFront && newTop.charCodeAt(cutFront) == oldTop.charCodeAt(cutFront)) {\n ++cutFront;\n }\n\n var newBot = lst(newText),\n oldBot = lst(oldText);\n var maxCutEnd = Math.min(newBot.length - (newText.length == 1 ? cutFront : 0), oldBot.length - (oldText.length == 1 ? cutFront : 0));\n\n while (cutEnd < maxCutEnd && newBot.charCodeAt(newBot.length - cutEnd - 1) == oldBot.charCodeAt(oldBot.length - cutEnd - 1)) {\n ++cutEnd;\n } // Try to move start of change to start of selection if ambiguous\n\n\n if (newText.length == 1 && oldText.length == 1 && fromLine == from.line) {\n while (cutFront && cutFront > from.ch && newBot.charCodeAt(newBot.length - cutEnd - 1) == oldBot.charCodeAt(oldBot.length - cutEnd - 1)) {\n cutFront--;\n cutEnd++;\n }\n }\n\n newText[newText.length - 1] = newBot.slice(0, newBot.length - cutEnd).replace(/^\\u200b+/, \"\");\n newText[0] = newText[0].slice(cutFront).replace(/\\u200b+$/, \"\");\n var chFrom = Pos(fromLine, cutFront);\n var chTo = Pos(toLine, oldText.length ? lst(oldText).length - cutEnd : 0);\n\n if (newText.length > 1 || newText[0] || cmp(chFrom, chTo)) {\n _replaceRange(cm.doc, newText, chFrom, chTo, \"+input\");\n\n return true;\n }\n };\n\n ContentEditableInput.prototype.ensurePolled = function () {\n this.forceCompositionEnd();\n };\n\n ContentEditableInput.prototype.reset = function () {\n this.forceCompositionEnd();\n };\n\n ContentEditableInput.prototype.forceCompositionEnd = function () {\n if (!this.composing) {\n return;\n }\n\n clearTimeout(this.readDOMTimeout);\n this.composing = null;\n this.updateFromDOM();\n this.div.blur();\n this.div.focus();\n };\n\n ContentEditableInput.prototype.readFromDOMSoon = function () {\n var this$1 = this;\n\n if (this.readDOMTimeout != null) {\n return;\n }\n\n this.readDOMTimeout = setTimeout(function () {\n this$1.readDOMTimeout = null;\n\n if (this$1.composing) {\n if (this$1.composing.done) {\n this$1.composing = null;\n } else {\n return;\n }\n }\n\n this$1.updateFromDOM();\n }, 80);\n };\n\n ContentEditableInput.prototype.updateFromDOM = function () {\n var this$1 = this;\n\n if (this.cm.isReadOnly() || !this.pollContent()) {\n runInOp(this.cm, function () {\n return regChange(this$1.cm);\n });\n }\n };\n\n ContentEditableInput.prototype.setUneditable = function (node) {\n node.contentEditable = \"false\";\n };\n\n ContentEditableInput.prototype.onKeyPress = function (e) {\n if (e.charCode == 0 || this.composing) {\n return;\n }\n\n e.preventDefault();\n\n if (!this.cm.isReadOnly()) {\n operation(this.cm, applyTextInput)(this.cm, String.fromCharCode(e.charCode == null ? e.keyCode : e.charCode), 0);\n }\n };\n\n ContentEditableInput.prototype.readOnlyChanged = function (val) {\n this.div.contentEditable = String(val != \"nocursor\");\n };\n\n ContentEditableInput.prototype.onContextMenu = function () {};\n\n ContentEditableInput.prototype.resetPosition = function () {};\n\n ContentEditableInput.prototype.needsContentAttribute = true;\n\n function posToDOM(cm, pos) {\n var view = findViewForLine(cm, pos.line);\n\n if (!view || view.hidden) {\n return null;\n }\n\n var line = getLine(cm.doc, pos.line);\n var info = mapFromLineView(view, line, pos.line);\n var order = getOrder(line, cm.doc.direction),\n side = \"left\";\n\n if (order) {\n var partPos = getBidiPartAt(order, pos.ch);\n side = partPos % 2 ? \"right\" : \"left\";\n }\n\n var result = nodeAndOffsetInLineMap(info.map, pos.ch, side);\n result.offset = result.collapse == \"right\" ? result.end : result.start;\n return result;\n }\n\n function isInGutter(node) {\n for (var scan = node; scan; scan = scan.parentNode) {\n if (/CodeMirror-gutter-wrapper/.test(scan.className)) {\n return true;\n }\n }\n\n return false;\n }\n\n function badPos(pos, bad) {\n if (bad) {\n pos.bad = true;\n }\n\n return pos;\n }\n\n function domTextBetween(cm, from, to, fromLine, toLine) {\n var text = \"\",\n closing = false,\n lineSep = cm.doc.lineSeparator(),\n extraLinebreak = false;\n\n function recognizeMarker(id) {\n return function (marker) {\n return marker.id == id;\n };\n }\n\n function close() {\n if (closing) {\n text += lineSep;\n\n if (extraLinebreak) {\n text += lineSep;\n }\n\n closing = extraLinebreak = false;\n }\n }\n\n function addText(str) {\n if (str) {\n close();\n text += str;\n }\n }\n\n function walk(node) {\n if (node.nodeType == 1) {\n var cmText = node.getAttribute(\"cm-text\");\n\n if (cmText) {\n addText(cmText);\n return;\n }\n\n var markerID = node.getAttribute(\"cm-marker\"),\n range;\n\n if (markerID) {\n var found = cm.findMarks(Pos(fromLine, 0), Pos(toLine + 1, 0), recognizeMarker(+markerID));\n\n if (found.length && (range = found[0].find(0))) {\n addText(getBetween(cm.doc, range.from, range.to).join(lineSep));\n }\n\n return;\n }\n\n if (node.getAttribute(\"contenteditable\") == \"false\") {\n return;\n }\n\n var isBlock = /^(pre|div|p|li|table|br)$/i.test(node.nodeName);\n\n if (!/^br$/i.test(node.nodeName) && node.textContent.length == 0) {\n return;\n }\n\n if (isBlock) {\n close();\n }\n\n for (var i = 0; i < node.childNodes.length; i++) {\n walk(node.childNodes[i]);\n }\n\n if (/^(pre|p)$/i.test(node.nodeName)) {\n extraLinebreak = true;\n }\n\n if (isBlock) {\n closing = true;\n }\n } else if (node.nodeType == 3) {\n addText(node.nodeValue.replace(/\\u200b/g, \"\").replace(/\\u00a0/g, \" \"));\n }\n }\n\n for (;;) {\n walk(from);\n\n if (from == to) {\n break;\n }\n\n from = from.nextSibling;\n extraLinebreak = false;\n }\n\n return text;\n }\n\n function domToPos(cm, node, offset) {\n var lineNode;\n\n if (node == cm.display.lineDiv) {\n lineNode = cm.display.lineDiv.childNodes[offset];\n\n if (!lineNode) {\n return badPos(cm.clipPos(Pos(cm.display.viewTo - 1)), true);\n }\n\n node = null;\n offset = 0;\n } else {\n for (lineNode = node;; lineNode = lineNode.parentNode) {\n if (!lineNode || lineNode == cm.display.lineDiv) {\n return null;\n }\n\n if (lineNode.parentNode && lineNode.parentNode == cm.display.lineDiv) {\n break;\n }\n }\n }\n\n for (var i = 0; i < cm.display.view.length; i++) {\n var lineView = cm.display.view[i];\n\n if (lineView.node == lineNode) {\n return locateNodeInLineView(lineView, node, offset);\n }\n }\n }\n\n function locateNodeInLineView(lineView, node, offset) {\n var wrapper = lineView.text.firstChild,\n bad = false;\n\n if (!node || !contains(wrapper, node)) {\n return badPos(Pos(lineNo(lineView.line), 0), true);\n }\n\n if (node == wrapper) {\n bad = true;\n node = wrapper.childNodes[offset];\n offset = 0;\n\n if (!node) {\n var line = lineView.rest ? lst(lineView.rest) : lineView.line;\n return badPos(Pos(lineNo(line), line.text.length), bad);\n }\n }\n\n var textNode = node.nodeType == 3 ? node : null,\n topNode = node;\n\n if (!textNode && node.childNodes.length == 1 && node.firstChild.nodeType == 3) {\n textNode = node.firstChild;\n\n if (offset) {\n offset = textNode.nodeValue.length;\n }\n }\n\n while (topNode.parentNode != wrapper) {\n topNode = topNode.parentNode;\n }\n\n var measure = lineView.measure,\n maps = measure.maps;\n\n function find(textNode, topNode, offset) {\n for (var i = -1; i < (maps ? maps.length : 0); i++) {\n var map = i < 0 ? measure.map : maps[i];\n\n for (var j = 0; j < map.length; j += 3) {\n var curNode = map[j + 2];\n\n if (curNode == textNode || curNode == topNode) {\n var line = lineNo(i < 0 ? lineView.line : lineView.rest[i]);\n var ch = map[j] + offset;\n\n if (offset < 0 || curNode != textNode) {\n ch = map[j + (offset ? 1 : 0)];\n }\n\n return Pos(line, ch);\n }\n }\n }\n }\n\n var found = find(textNode, topNode, offset);\n\n if (found) {\n return badPos(found, bad);\n } // FIXME this is all really shaky. might handle the few cases it needs to handle, but likely to cause problems\n\n\n for (var after = topNode.nextSibling, dist = textNode ? textNode.nodeValue.length - offset : 0; after; after = after.nextSibling) {\n found = find(after, after.firstChild, 0);\n\n if (found) {\n return badPos(Pos(found.line, found.ch - dist), bad);\n } else {\n dist += after.textContent.length;\n }\n }\n\n for (var before = topNode.previousSibling, dist$1 = offset; before; before = before.previousSibling) {\n found = find(before, before.firstChild, -1);\n\n if (found) {\n return badPos(Pos(found.line, found.ch + dist$1), bad);\n } else {\n dist$1 += before.textContent.length;\n }\n }\n } // TEXTAREA INPUT STYLE\n\n\n var TextareaInput = function TextareaInput(cm) {\n this.cm = cm; // See input.poll and input.reset\n\n this.prevInput = \"\"; // Flag that indicates whether we expect input to appear real soon\n // now (after some event like 'keypress' or 'input') and are\n // polling intensively.\n\n this.pollingFast = false; // Self-resetting timeout for the poller\n\n this.polling = new Delayed(); // Used to work around IE issue with selection being forgotten when focus moves away from textarea\n\n this.hasSelection = false;\n this.composing = null;\n };\n\n TextareaInput.prototype.init = function (display) {\n var this$1 = this;\n var input = this,\n cm = this.cm;\n this.createField(display);\n var te = this.textarea;\n display.wrapper.insertBefore(this.wrapper, display.wrapper.firstChild); // Needed to hide big blue blinking cursor on Mobile Safari (doesn't seem to work in iOS 8 anymore)\n\n if (ios) {\n te.style.width = \"0px\";\n }\n\n on(te, \"input\", function () {\n if (ie && ie_version >= 9 && this$1.hasSelection) {\n this$1.hasSelection = null;\n }\n\n input.poll();\n });\n on(te, \"paste\", function (e) {\n if (signalDOMEvent(cm, e) || handlePaste(e, cm)) {\n return;\n }\n\n cm.state.pasteIncoming = +new Date();\n input.fastPoll();\n });\n\n function prepareCopyCut(e) {\n if (signalDOMEvent(cm, e)) {\n return;\n }\n\n if (cm.somethingSelected()) {\n setLastCopied({\n lineWise: false,\n text: cm.getSelections()\n });\n } else if (!cm.options.lineWiseCopyCut) {\n return;\n } else {\n var ranges = copyableRanges(cm);\n setLastCopied({\n lineWise: true,\n text: ranges.text\n });\n\n if (e.type == \"cut\") {\n cm.setSelections(ranges.ranges, null, sel_dontScroll);\n } else {\n input.prevInput = \"\";\n te.value = ranges.text.join(\"\\n\");\n selectInput(te);\n }\n }\n\n if (e.type == \"cut\") {\n cm.state.cutIncoming = +new Date();\n }\n }\n\n on(te, \"cut\", prepareCopyCut);\n on(te, \"copy\", prepareCopyCut);\n on(display.scroller, \"paste\", function (e) {\n if (eventInWidget(display, e) || signalDOMEvent(cm, e)) {\n return;\n }\n\n if (!te.dispatchEvent) {\n cm.state.pasteIncoming = +new Date();\n input.focus();\n return;\n } // Pass the `paste` event to the textarea so it's handled by its event listener.\n\n\n var event = new Event(\"paste\");\n event.clipboardData = e.clipboardData;\n te.dispatchEvent(event);\n }); // Prevent normal selection in the editor (we handle our own)\n\n on(display.lineSpace, \"selectstart\", function (e) {\n if (!eventInWidget(display, e)) {\n e_preventDefault(e);\n }\n });\n on(te, \"compositionstart\", function () {\n var start = cm.getCursor(\"from\");\n\n if (input.composing) {\n input.composing.range.clear();\n }\n\n input.composing = {\n start: start,\n range: cm.markText(start, cm.getCursor(\"to\"), {\n className: \"CodeMirror-composing\"\n })\n };\n });\n on(te, \"compositionend\", function () {\n if (input.composing) {\n input.poll();\n input.composing.range.clear();\n input.composing = null;\n }\n });\n };\n\n TextareaInput.prototype.createField = function (_display) {\n // Wraps and hides input textarea\n this.wrapper = hiddenTextarea(); // The semihidden textarea that is focused when the editor is\n // focused, and receives input.\n\n this.textarea = this.wrapper.firstChild;\n };\n\n TextareaInput.prototype.screenReaderLabelChanged = function (label) {\n // Label for screenreaders, accessibility\n if (label) {\n this.textarea.setAttribute('aria-label', label);\n } else {\n this.textarea.removeAttribute('aria-label');\n }\n };\n\n TextareaInput.prototype.prepareSelection = function () {\n // Redraw the selection and/or cursor\n var cm = this.cm,\n display = cm.display,\n doc = cm.doc;\n var result = prepareSelection(cm); // Move the hidden textarea near the cursor to prevent scrolling artifacts\n\n if (cm.options.moveInputWithCursor) {\n var headPos = _cursorCoords(cm, doc.sel.primary().head, \"div\");\n\n var wrapOff = display.wrapper.getBoundingClientRect(),\n lineOff = display.lineDiv.getBoundingClientRect();\n result.teTop = Math.max(0, Math.min(display.wrapper.clientHeight - 10, headPos.top + lineOff.top - wrapOff.top));\n result.teLeft = Math.max(0, Math.min(display.wrapper.clientWidth - 10, headPos.left + lineOff.left - wrapOff.left));\n }\n\n return result;\n };\n\n TextareaInput.prototype.showSelection = function (drawn) {\n var cm = this.cm,\n display = cm.display;\n removeChildrenAndAdd(display.cursorDiv, drawn.cursors);\n removeChildrenAndAdd(display.selectionDiv, drawn.selection);\n\n if (drawn.teTop != null) {\n this.wrapper.style.top = drawn.teTop + \"px\";\n this.wrapper.style.left = drawn.teLeft + \"px\";\n }\n }; // Reset the input to correspond to the selection (or to be empty,\n // when not typing and nothing is selected)\n\n\n TextareaInput.prototype.reset = function (typing) {\n if (this.contextMenuPending || this.composing) {\n return;\n }\n\n var cm = this.cm;\n\n if (cm.somethingSelected()) {\n this.prevInput = \"\";\n var content = cm.getSelection();\n this.textarea.value = content;\n\n if (cm.state.focused) {\n selectInput(this.textarea);\n }\n\n if (ie && ie_version >= 9) {\n this.hasSelection = content;\n }\n } else if (!typing) {\n this.prevInput = this.textarea.value = \"\";\n\n if (ie && ie_version >= 9) {\n this.hasSelection = null;\n }\n }\n };\n\n TextareaInput.prototype.getField = function () {\n return this.textarea;\n };\n\n TextareaInput.prototype.supportsTouch = function () {\n return false;\n };\n\n TextareaInput.prototype.focus = function () {\n if (this.cm.options.readOnly != \"nocursor\" && (!mobile || activeElt() != this.textarea)) {\n try {\n this.textarea.focus();\n } catch (e) {} // IE8 will throw if the textarea is display: none or not in DOM\n\n }\n };\n\n TextareaInput.prototype.blur = function () {\n this.textarea.blur();\n };\n\n TextareaInput.prototype.resetPosition = function () {\n this.wrapper.style.top = this.wrapper.style.left = 0;\n };\n\n TextareaInput.prototype.receivedFocus = function () {\n this.slowPoll();\n }; // Poll for input changes, using the normal rate of polling. This\n // runs as long as the editor is focused.\n\n\n TextareaInput.prototype.slowPoll = function () {\n var this$1 = this;\n\n if (this.pollingFast) {\n return;\n }\n\n this.polling.set(this.cm.options.pollInterval, function () {\n this$1.poll();\n\n if (this$1.cm.state.focused) {\n this$1.slowPoll();\n }\n });\n }; // When an event has just come in that is likely to add or change\n // something in the input textarea, we poll faster, to ensure that\n // the change appears on the screen quickly.\n\n\n TextareaInput.prototype.fastPoll = function () {\n var missed = false,\n input = this;\n input.pollingFast = true;\n\n function p() {\n var changed = input.poll();\n\n if (!changed && !missed) {\n missed = true;\n input.polling.set(60, p);\n } else {\n input.pollingFast = false;\n input.slowPoll();\n }\n }\n\n input.polling.set(20, p);\n }; // Read input from the textarea, and update the document to match.\n // When something is selected, it is present in the textarea, and\n // selected (unless it is huge, in which case a placeholder is\n // used). When nothing is selected, the cursor sits after previously\n // seen text (can be empty), which is stored in prevInput (we must\n // not reset the textarea when typing, because that breaks IME).\n\n\n TextareaInput.prototype.poll = function () {\n var this$1 = this;\n var cm = this.cm,\n input = this.textarea,\n prevInput = this.prevInput; // Since this is called a *lot*, try to bail out as cheaply as\n // possible when it is clear that nothing happened. hasSelection\n // will be the case when there is a lot of text in the textarea,\n // in which case reading its value would be expensive.\n\n if (this.contextMenuPending || !cm.state.focused || hasSelection(input) && !prevInput && !this.composing || cm.isReadOnly() || cm.options.disableInput || cm.state.keySeq) {\n return false;\n }\n\n var text = input.value; // If nothing changed, bail.\n\n if (text == prevInput && !cm.somethingSelected()) {\n return false;\n } // Work around nonsensical selection resetting in IE9/10, and\n // inexplicable appearance of private area unicode characters on\n // some key combos in Mac (#2689).\n\n\n if (ie && ie_version >= 9 && this.hasSelection === text || mac && /[\\uf700-\\uf7ff]/.test(text)) {\n cm.display.input.reset();\n return false;\n }\n\n if (cm.doc.sel == cm.display.selForContextMenu) {\n var first = text.charCodeAt(0);\n\n if (first == 0x200b && !prevInput) {\n prevInput = \"\\u200B\";\n }\n\n if (first == 0x21da) {\n this.reset();\n return this.cm.execCommand(\"undo\");\n }\n } // Find the part of the input that is actually new\n\n\n var same = 0,\n l = Math.min(prevInput.length, text.length);\n\n while (same < l && prevInput.charCodeAt(same) == text.charCodeAt(same)) {\n ++same;\n }\n\n runInOp(cm, function () {\n applyTextInput(cm, text.slice(same), prevInput.length - same, null, this$1.composing ? \"*compose\" : null); // Don't leave long text in the textarea, since it makes further polling slow\n\n if (text.length > 1000 || text.indexOf(\"\\n\") > -1) {\n input.value = this$1.prevInput = \"\";\n } else {\n this$1.prevInput = text;\n }\n\n if (this$1.composing) {\n this$1.composing.range.clear();\n this$1.composing.range = cm.markText(this$1.composing.start, cm.getCursor(\"to\"), {\n className: \"CodeMirror-composing\"\n });\n }\n });\n return true;\n };\n\n TextareaInput.prototype.ensurePolled = function () {\n if (this.pollingFast && this.poll()) {\n this.pollingFast = false;\n }\n };\n\n TextareaInput.prototype.onKeyPress = function () {\n if (ie && ie_version >= 9) {\n this.hasSelection = null;\n }\n\n this.fastPoll();\n };\n\n TextareaInput.prototype.onContextMenu = function (e) {\n var input = this,\n cm = input.cm,\n display = cm.display,\n te = input.textarea;\n\n if (input.contextMenuPending) {\n input.contextMenuPending();\n }\n\n var pos = posFromMouse(cm, e),\n scrollPos = display.scroller.scrollTop;\n\n if (!pos || presto) {\n return;\n } // Opera is difficult.\n // Reset the current text selection only if the click is done outside of the selection\n // and 'resetSelectionOnContextMenu' option is true.\n\n\n var reset = cm.options.resetSelectionOnContextMenu;\n\n if (reset && cm.doc.sel.contains(pos) == -1) {\n operation(cm, setSelection)(cm.doc, simpleSelection(pos), sel_dontScroll);\n }\n\n var oldCSS = te.style.cssText,\n oldWrapperCSS = input.wrapper.style.cssText;\n var wrapperBox = input.wrapper.offsetParent.getBoundingClientRect();\n input.wrapper.style.cssText = \"position: static\";\n te.style.cssText = \"position: absolute; width: 30px; height: 30px;\\n top: \" + (e.clientY - wrapperBox.top - 5) + \"px; left: \" + (e.clientX - wrapperBox.left - 5) + \"px;\\n z-index: 1000; background: \" + (ie ? \"rgba(255, 255, 255, .05)\" : \"transparent\") + \";\\n outline: none; border-width: 0; outline: none; overflow: hidden; opacity: .05; filter: alpha(opacity=5);\";\n var oldScrollY;\n\n if (webkit) {\n oldScrollY = window.scrollY;\n } // Work around Chrome issue (#2712)\n\n\n display.input.focus();\n\n if (webkit) {\n window.scrollTo(null, oldScrollY);\n }\n\n display.input.reset(); // Adds \"Select all\" to context menu in FF\n\n if (!cm.somethingSelected()) {\n te.value = input.prevInput = \" \";\n }\n\n input.contextMenuPending = rehide;\n display.selForContextMenu = cm.doc.sel;\n clearTimeout(display.detectingSelectAll); // Select-all will be greyed out if there's nothing to select, so\n // this adds a zero-width space so that we can later check whether\n // it got selected.\n\n function prepareSelectAllHack() {\n if (te.selectionStart != null) {\n var selected = cm.somethingSelected();\n var extval = \"\\u200B\" + (selected ? te.value : \"\");\n te.value = \"\\u21DA\"; // Used to catch context-menu undo\n\n te.value = extval;\n input.prevInput = selected ? \"\" : \"\\u200B\";\n te.selectionStart = 1;\n te.selectionEnd = extval.length; // Re-set this, in case some other handler touched the\n // selection in the meantime.\n\n display.selForContextMenu = cm.doc.sel;\n }\n }\n\n function rehide() {\n if (input.contextMenuPending != rehide) {\n return;\n }\n\n input.contextMenuPending = false;\n input.wrapper.style.cssText = oldWrapperCSS;\n te.style.cssText = oldCSS;\n\n if (ie && ie_version < 9) {\n display.scrollbars.setScrollTop(display.scroller.scrollTop = scrollPos);\n } // Try to detect the user choosing select-all\n\n\n if (te.selectionStart != null) {\n if (!ie || ie && ie_version < 9) {\n prepareSelectAllHack();\n }\n\n var i = 0,\n poll = function poll() {\n if (display.selForContextMenu == cm.doc.sel && te.selectionStart == 0 && te.selectionEnd > 0 && input.prevInput == \"\\u200B\") {\n operation(cm, selectAll)(cm);\n } else if (i++ < 10) {\n display.detectingSelectAll = setTimeout(poll, 500);\n } else {\n display.selForContextMenu = null;\n display.input.reset();\n }\n };\n\n display.detectingSelectAll = setTimeout(poll, 200);\n }\n }\n\n if (ie && ie_version >= 9) {\n prepareSelectAllHack();\n }\n\n if (captureRightClick) {\n e_stop(e);\n\n var mouseup = function mouseup() {\n off(window, \"mouseup\", mouseup);\n setTimeout(rehide, 20);\n };\n\n on(window, \"mouseup\", mouseup);\n } else {\n setTimeout(rehide, 50);\n }\n };\n\n TextareaInput.prototype.readOnlyChanged = function (val) {\n if (!val) {\n this.reset();\n }\n\n this.textarea.disabled = val == \"nocursor\";\n };\n\n TextareaInput.prototype.setUneditable = function () {};\n\n TextareaInput.prototype.needsContentAttribute = false;\n\n function fromTextArea(textarea, options) {\n options = options ? copyObj(options) : {};\n options.value = textarea.value;\n\n if (!options.tabindex && textarea.tabIndex) {\n options.tabindex = textarea.tabIndex;\n }\n\n if (!options.placeholder && textarea.placeholder) {\n options.placeholder = textarea.placeholder;\n } // Set autofocus to true if this textarea is focused, or if it has\n // autofocus and no other element is focused.\n\n\n if (options.autofocus == null) {\n var hasFocus = activeElt();\n options.autofocus = hasFocus == textarea || textarea.getAttribute(\"autofocus\") != null && hasFocus == document.body;\n }\n\n function save() {\n textarea.value = cm.getValue();\n }\n\n var realSubmit;\n\n if (textarea.form) {\n on(textarea.form, \"submit\", save); // Deplorable hack to make the submit method do the right thing.\n\n if (!options.leaveSubmitMethodAlone) {\n var form = textarea.form;\n realSubmit = form.submit;\n\n try {\n var wrappedSubmit = form.submit = function () {\n save();\n form.submit = realSubmit;\n form.submit();\n form.submit = wrappedSubmit;\n };\n } catch (e) {}\n }\n }\n\n options.finishInit = function (cm) {\n cm.save = save;\n\n cm.getTextArea = function () {\n return textarea;\n };\n\n cm.toTextArea = function () {\n cm.toTextArea = isNaN; // Prevent this from being ran twice\n\n save();\n textarea.parentNode.removeChild(cm.getWrapperElement());\n textarea.style.display = \"\";\n\n if (textarea.form) {\n off(textarea.form, \"submit\", save);\n\n if (!options.leaveSubmitMethodAlone && typeof textarea.form.submit == \"function\") {\n textarea.form.submit = realSubmit;\n }\n }\n };\n };\n\n textarea.style.display = \"none\";\n var cm = CodeMirror(function (node) {\n return textarea.parentNode.insertBefore(node, textarea.nextSibling);\n }, options);\n return cm;\n }\n\n function addLegacyProps(CodeMirror) {\n CodeMirror.off = off;\n CodeMirror.on = on;\n CodeMirror.wheelEventPixels = wheelEventPixels;\n CodeMirror.Doc = Doc;\n CodeMirror.splitLines = splitLinesAuto;\n CodeMirror.countColumn = countColumn;\n CodeMirror.findColumn = findColumn;\n CodeMirror.isWordChar = isWordCharBasic;\n CodeMirror.Pass = Pass;\n CodeMirror.signal = signal;\n CodeMirror.Line = Line;\n CodeMirror.changeEnd = changeEnd;\n CodeMirror.scrollbarModel = scrollbarModel;\n CodeMirror.Pos = Pos;\n CodeMirror.cmpPos = cmp;\n CodeMirror.modes = modes;\n CodeMirror.mimeModes = mimeModes;\n CodeMirror.resolveMode = resolveMode;\n CodeMirror.getMode = getMode;\n CodeMirror.modeExtensions = modeExtensions;\n CodeMirror.extendMode = extendMode;\n CodeMirror.copyState = copyState;\n CodeMirror.startState = startState;\n CodeMirror.innerMode = innerMode;\n CodeMirror.commands = commands;\n CodeMirror.keyMap = keyMap;\n CodeMirror.keyName = keyName;\n CodeMirror.isModifierKey = isModifierKey;\n CodeMirror.lookupKey = lookupKey;\n CodeMirror.normalizeKeyMap = normalizeKeyMap;\n CodeMirror.StringStream = StringStream;\n CodeMirror.SharedTextMarker = SharedTextMarker;\n CodeMirror.TextMarker = TextMarker;\n CodeMirror.LineWidget = LineWidget;\n CodeMirror.e_preventDefault = e_preventDefault;\n CodeMirror.e_stopPropagation = e_stopPropagation;\n CodeMirror.e_stop = e_stop;\n CodeMirror.addClass = addClass;\n CodeMirror.contains = contains;\n CodeMirror.rmClass = rmClass;\n CodeMirror.keyNames = keyNames;\n } // EDITOR CONSTRUCTOR\n\n\n defineOptions(CodeMirror);\n addEditorMethods(CodeMirror); // Set up methods on CodeMirror's prototype to redirect to the editor's document.\n\n var dontDelegate = \"iter insert remove copy getEditor constructor\".split(\" \");\n\n for (var prop in Doc.prototype) {\n if (Doc.prototype.hasOwnProperty(prop) && indexOf(dontDelegate, prop) < 0) {\n CodeMirror.prototype[prop] = function (method) {\n return function () {\n return method.apply(this.doc, arguments);\n };\n }(Doc.prototype[prop]);\n }\n }\n\n eventMixin(Doc);\n CodeMirror.inputStyles = {\n \"textarea\": TextareaInput,\n \"contenteditable\": ContentEditableInput\n }; // Extra arguments are stored as the mode's dependencies, which is\n // used by (legacy) mechanisms like loadmode.js to automatically\n // load a mode. (Preferred mechanism is the require/define calls.)\n\n CodeMirror.defineMode = function (name\n /*, mode, …*/\n ) {\n if (!CodeMirror.defaults.mode && name != \"null\") {\n CodeMirror.defaults.mode = name;\n }\n\n defineMode.apply(this, arguments);\n };\n\n CodeMirror.defineMIME = defineMIME; // Minimal default mode.\n\n CodeMirror.defineMode(\"null\", function () {\n return {\n token: function token(stream) {\n return stream.skipToEnd();\n }\n };\n });\n CodeMirror.defineMIME(\"text/plain\", \"null\"); // EXTENSIONS\n\n CodeMirror.defineExtension = function (name, func) {\n CodeMirror.prototype[name] = func;\n };\n\n CodeMirror.defineDocExtension = function (name, func) {\n Doc.prototype[name] = func;\n };\n\n CodeMirror.fromTextArea = fromTextArea;\n addLegacyProps(CodeMirror);\n CodeMirror.version = \"5.53.2\";\n return CodeMirror;\n});","module.exports = function (module) {\n if (!module.webpackPolyfill) {\n module.deprecate = function () {};\n\n module.paths = []; // module.parent = undefined by default\n\n if (!module.children) module.children = [];\n Object.defineProperty(module, \"loaded\", {\n enumerable: true,\n get: function get() {\n return module.l;\n }\n });\n Object.defineProperty(module, \"id\", {\n enumerable: true,\n get: function get() {\n return module.i;\n }\n });\n module.webpackPolyfill = 1;\n }\n\n return module;\n};","var EventListener =\n/** @class */\nfunction () {\n function EventListener(eventTarget, eventName) {\n this.eventTarget = eventTarget;\n this.eventName = eventName;\n this.unorderedBindings = new Set();\n }\n\n EventListener.prototype.connect = function () {\n this.eventTarget.addEventListener(this.eventName, this, false);\n };\n\n EventListener.prototype.disconnect = function () {\n this.eventTarget.removeEventListener(this.eventName, this, false);\n }; // Binding observer delegate\n\n /** @hidden */\n\n\n EventListener.prototype.bindingConnected = function (binding) {\n this.unorderedBindings.add(binding);\n };\n /** @hidden */\n\n\n EventListener.prototype.bindingDisconnected = function (binding) {\n this.unorderedBindings.delete(binding);\n };\n\n EventListener.prototype.handleEvent = function (event) {\n var extendedEvent = extendEvent(event);\n\n for (var _i = 0, _a = this.bindings; _i < _a.length; _i++) {\n var binding = _a[_i];\n\n if (extendedEvent.immediatePropagationStopped) {\n break;\n } else {\n binding.handleEvent(extendedEvent);\n }\n }\n };\n\n Object.defineProperty(EventListener.prototype, \"bindings\", {\n get: function get() {\n return Array.from(this.unorderedBindings).sort(function (left, right) {\n var leftIndex = left.index,\n rightIndex = right.index;\n return leftIndex < rightIndex ? -1 : leftIndex > rightIndex ? 1 : 0;\n });\n },\n enumerable: true,\n configurable: true\n });\n return EventListener;\n}();\n\nexport { EventListener };\n\nfunction extendEvent(event) {\n if (\"immediatePropagationStopped\" in event) {\n return event;\n } else {\n var stopImmediatePropagation_1 = event.stopImmediatePropagation;\n return Object.assign(event, {\n immediatePropagationStopped: false,\n stopImmediatePropagation: function stopImmediatePropagation() {\n this.immediatePropagationStopped = true;\n stopImmediatePropagation_1.call(this);\n }\n });\n }\n}","import { EventListener } from \"./event_listener\";\n\nvar Dispatcher =\n/** @class */\nfunction () {\n function Dispatcher(application) {\n this.application = application;\n this.eventListenerMaps = new Map();\n this.started = false;\n }\n\n Dispatcher.prototype.start = function () {\n if (!this.started) {\n this.started = true;\n this.eventListeners.forEach(function (eventListener) {\n return eventListener.connect();\n });\n }\n };\n\n Dispatcher.prototype.stop = function () {\n if (this.started) {\n this.started = false;\n this.eventListeners.forEach(function (eventListener) {\n return eventListener.disconnect();\n });\n }\n };\n\n Object.defineProperty(Dispatcher.prototype, \"eventListeners\", {\n get: function get() {\n return Array.from(this.eventListenerMaps.values()).reduce(function (listeners, map) {\n return listeners.concat(Array.from(map.values()));\n }, []);\n },\n enumerable: true,\n configurable: true\n }); // Binding observer delegate\n\n /** @hidden */\n\n Dispatcher.prototype.bindingConnected = function (binding) {\n this.fetchEventListenerForBinding(binding).bindingConnected(binding);\n };\n /** @hidden */\n\n\n Dispatcher.prototype.bindingDisconnected = function (binding) {\n this.fetchEventListenerForBinding(binding).bindingDisconnected(binding);\n }; // Error handling\n\n\n Dispatcher.prototype.handleError = function (error, message, detail) {\n if (detail === void 0) {\n detail = {};\n }\n\n this.application.handleError(error, \"Error \" + message, detail);\n };\n\n Dispatcher.prototype.fetchEventListenerForBinding = function (binding) {\n var eventTarget = binding.eventTarget,\n eventName = binding.eventName;\n return this.fetchEventListener(eventTarget, eventName);\n };\n\n Dispatcher.prototype.fetchEventListener = function (eventTarget, eventName) {\n var eventListenerMap = this.fetchEventListenerMapForEventTarget(eventTarget);\n var eventListener = eventListenerMap.get(eventName);\n\n if (!eventListener) {\n eventListener = this.createEventListener(eventTarget, eventName);\n eventListenerMap.set(eventName, eventListener);\n }\n\n return eventListener;\n };\n\n Dispatcher.prototype.createEventListener = function (eventTarget, eventName) {\n var eventListener = new EventListener(eventTarget, eventName);\n\n if (this.started) {\n eventListener.connect();\n }\n\n return eventListener;\n };\n\n Dispatcher.prototype.fetchEventListenerMapForEventTarget = function (eventTarget) {\n var eventListenerMap = this.eventListenerMaps.get(eventTarget);\n\n if (!eventListenerMap) {\n eventListenerMap = new Map();\n this.eventListenerMaps.set(eventTarget, eventListenerMap);\n }\n\n return eventListenerMap;\n };\n\n return Dispatcher;\n}();\n\nexport { Dispatcher };","// capture nos.: 12 23 4 43 1 5 56 7 76\nvar descriptorPattern = /^((.+?)(@(window|document))?->)?(.+?)(#(.+))?$/;\nexport function parseDescriptorString(descriptorString) {\n var source = descriptorString.trim();\n var matches = source.match(descriptorPattern) || [];\n return {\n eventTarget: parseEventTarget(matches[4]),\n eventName: matches[2],\n identifier: matches[5],\n methodName: matches[7]\n };\n}\n\nfunction parseEventTarget(eventTargetName) {\n if (eventTargetName == \"window\") {\n return window;\n } else if (eventTargetName == \"document\") {\n return document;\n }\n}\n\nexport function stringifyEventTarget(eventTarget) {\n if (eventTarget == window) {\n return \"window\";\n } else if (eventTarget == document) {\n return \"document\";\n }\n}","import { parseDescriptorString, stringifyEventTarget } from \"./action_descriptor\";\n\nvar Action =\n/** @class */\nfunction () {\n function Action(element, index, descriptor) {\n this.element = element;\n this.index = index;\n this.eventTarget = descriptor.eventTarget || element;\n this.eventName = descriptor.eventName || getDefaultEventNameForElement(element) || error(\"missing event name\");\n this.identifier = descriptor.identifier || error(\"missing identifier\");\n this.methodName = descriptor.methodName || error(\"missing method name\");\n }\n\n Action.forToken = function (token) {\n return new this(token.element, token.index, parseDescriptorString(token.content));\n };\n\n Action.prototype.toString = function () {\n var eventNameSuffix = this.eventTargetName ? \"@\" + this.eventTargetName : \"\";\n return \"\" + this.eventName + eventNameSuffix + \"->\" + this.identifier + \"#\" + this.methodName;\n };\n\n Object.defineProperty(Action.prototype, \"eventTargetName\", {\n get: function get() {\n return stringifyEventTarget(this.eventTarget);\n },\n enumerable: true,\n configurable: true\n });\n return Action;\n}();\n\nexport { Action };\nvar defaultEventNames = {\n \"a\": function a(e) {\n return \"click\";\n },\n \"button\": function button(e) {\n return \"click\";\n },\n \"form\": function form(e) {\n return \"submit\";\n },\n \"input\": function input(e) {\n return e.getAttribute(\"type\") == \"submit\" ? \"click\" : \"change\";\n },\n \"select\": function select(e) {\n return \"change\";\n },\n \"textarea\": function textarea(e) {\n return \"change\";\n }\n};\nexport function getDefaultEventNameForElement(element) {\n var tagName = element.tagName.toLowerCase();\n\n if (tagName in defaultEventNames) {\n return defaultEventNames[tagName](element);\n }\n}\n\nfunction error(message) {\n throw new Error(message);\n}","var Binding =\n/** @class */\nfunction () {\n function Binding(context, action) {\n this.context = context;\n this.action = action;\n }\n\n Object.defineProperty(Binding.prototype, \"index\", {\n get: function get() {\n return this.action.index;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Binding.prototype, \"eventTarget\", {\n get: function get() {\n return this.action.eventTarget;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Binding.prototype, \"identifier\", {\n get: function get() {\n return this.context.identifier;\n },\n enumerable: true,\n configurable: true\n });\n\n Binding.prototype.handleEvent = function (event) {\n if (this.willBeInvokedByEvent(event)) {\n this.invokeWithEvent(event);\n }\n };\n\n Object.defineProperty(Binding.prototype, \"eventName\", {\n get: function get() {\n return this.action.eventName;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Binding.prototype, \"method\", {\n get: function get() {\n var method = this.controller[this.methodName];\n\n if (typeof method == \"function\") {\n return method;\n }\n\n throw new Error(\"Action \\\"\" + this.action + \"\\\" references undefined method \\\"\" + this.methodName + \"\\\"\");\n },\n enumerable: true,\n configurable: true\n });\n\n Binding.prototype.invokeWithEvent = function (event) {\n try {\n this.method.call(this.controller, event);\n } catch (error) {\n var _a = this,\n identifier = _a.identifier,\n controller = _a.controller,\n element = _a.element,\n index = _a.index;\n\n var detail = {\n identifier: identifier,\n controller: controller,\n element: element,\n index: index,\n event: event\n };\n this.context.handleError(error, \"invoking action \\\"\" + this.action + \"\\\"\", detail);\n }\n };\n\n Binding.prototype.willBeInvokedByEvent = function (event) {\n var eventTarget = event.target;\n\n if (this.element === eventTarget) {\n return true;\n } else if (eventTarget instanceof Element && this.element.contains(eventTarget)) {\n return this.scope.containsElement(eventTarget);\n } else {\n return true;\n }\n };\n\n Object.defineProperty(Binding.prototype, \"controller\", {\n get: function get() {\n return this.context.controller;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Binding.prototype, \"methodName\", {\n get: function get() {\n return this.action.methodName;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Binding.prototype, \"element\", {\n get: function get() {\n return this.scope.element;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Binding.prototype, \"scope\", {\n get: function get() {\n return this.context.scope;\n },\n enumerable: true,\n configurable: true\n });\n return Binding;\n}();\n\nexport { Binding };","var ElementObserver =\n/** @class */\nfunction () {\n function ElementObserver(element, delegate) {\n var _this = this;\n\n this.element = element;\n this.started = false;\n this.delegate = delegate;\n this.elements = new Set();\n this.mutationObserver = new MutationObserver(function (mutations) {\n return _this.processMutations(mutations);\n });\n }\n\n ElementObserver.prototype.start = function () {\n if (!this.started) {\n this.started = true;\n this.mutationObserver.observe(this.element, {\n attributes: true,\n childList: true,\n subtree: true\n });\n this.refresh();\n }\n };\n\n ElementObserver.prototype.stop = function () {\n if (this.started) {\n this.mutationObserver.takeRecords();\n this.mutationObserver.disconnect();\n this.started = false;\n }\n };\n\n ElementObserver.prototype.refresh = function () {\n if (this.started) {\n var matches = new Set(this.matchElementsInTree());\n\n for (var _i = 0, _a = Array.from(this.elements); _i < _a.length; _i++) {\n var element = _a[_i];\n\n if (!matches.has(element)) {\n this.removeElement(element);\n }\n }\n\n for (var _b = 0, _c = Array.from(matches); _b < _c.length; _b++) {\n var element = _c[_b];\n this.addElement(element);\n }\n }\n }; // Mutation record processing\n\n\n ElementObserver.prototype.processMutations = function (mutations) {\n if (this.started) {\n for (var _i = 0, mutations_1 = mutations; _i < mutations_1.length; _i++) {\n var mutation = mutations_1[_i];\n this.processMutation(mutation);\n }\n }\n };\n\n ElementObserver.prototype.processMutation = function (mutation) {\n if (mutation.type == \"attributes\") {\n this.processAttributeChange(mutation.target, mutation.attributeName);\n } else if (mutation.type == \"childList\") {\n this.processRemovedNodes(mutation.removedNodes);\n this.processAddedNodes(mutation.addedNodes);\n }\n };\n\n ElementObserver.prototype.processAttributeChange = function (node, attributeName) {\n var element = node;\n\n if (this.elements.has(element)) {\n if (this.delegate.elementAttributeChanged && this.matchElement(element)) {\n this.delegate.elementAttributeChanged(element, attributeName);\n } else {\n this.removeElement(element);\n }\n } else if (this.matchElement(element)) {\n this.addElement(element);\n }\n };\n\n ElementObserver.prototype.processRemovedNodes = function (nodes) {\n for (var _i = 0, _a = Array.from(nodes); _i < _a.length; _i++) {\n var node = _a[_i];\n var element = this.elementFromNode(node);\n\n if (element) {\n this.processTree(element, this.removeElement);\n }\n }\n };\n\n ElementObserver.prototype.processAddedNodes = function (nodes) {\n for (var _i = 0, _a = Array.from(nodes); _i < _a.length; _i++) {\n var node = _a[_i];\n var element = this.elementFromNode(node);\n\n if (element && this.elementIsActive(element)) {\n this.processTree(element, this.addElement);\n }\n }\n }; // Element matching\n\n\n ElementObserver.prototype.matchElement = function (element) {\n return this.delegate.matchElement(element);\n };\n\n ElementObserver.prototype.matchElementsInTree = function (tree) {\n if (tree === void 0) {\n tree = this.element;\n }\n\n return this.delegate.matchElementsInTree(tree);\n };\n\n ElementObserver.prototype.processTree = function (tree, processor) {\n for (var _i = 0, _a = this.matchElementsInTree(tree); _i < _a.length; _i++) {\n var element = _a[_i];\n processor.call(this, element);\n }\n };\n\n ElementObserver.prototype.elementFromNode = function (node) {\n if (node.nodeType == Node.ELEMENT_NODE) {\n return node;\n }\n };\n\n ElementObserver.prototype.elementIsActive = function (element) {\n if (element.isConnected != this.element.isConnected) {\n return false;\n } else {\n return this.element.contains(element);\n }\n }; // Element tracking\n\n\n ElementObserver.prototype.addElement = function (element) {\n if (!this.elements.has(element)) {\n if (this.elementIsActive(element)) {\n this.elements.add(element);\n\n if (this.delegate.elementMatched) {\n this.delegate.elementMatched(element);\n }\n }\n }\n };\n\n ElementObserver.prototype.removeElement = function (element) {\n if (this.elements.has(element)) {\n this.elements.delete(element);\n\n if (this.delegate.elementUnmatched) {\n this.delegate.elementUnmatched(element);\n }\n }\n };\n\n return ElementObserver;\n}();\n\nexport { ElementObserver };","import { ElementObserver } from \"./element_observer\";\n\nvar AttributeObserver =\n/** @class */\nfunction () {\n function AttributeObserver(element, attributeName, delegate) {\n this.attributeName = attributeName;\n this.delegate = delegate;\n this.elementObserver = new ElementObserver(element, this);\n }\n\n Object.defineProperty(AttributeObserver.prototype, \"element\", {\n get: function get() {\n return this.elementObserver.element;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(AttributeObserver.prototype, \"selector\", {\n get: function get() {\n return \"[\" + this.attributeName + \"]\";\n },\n enumerable: true,\n configurable: true\n });\n\n AttributeObserver.prototype.start = function () {\n this.elementObserver.start();\n };\n\n AttributeObserver.prototype.stop = function () {\n this.elementObserver.stop();\n };\n\n AttributeObserver.prototype.refresh = function () {\n this.elementObserver.refresh();\n };\n\n Object.defineProperty(AttributeObserver.prototype, \"started\", {\n get: function get() {\n return this.elementObserver.started;\n },\n enumerable: true,\n configurable: true\n }); // Element observer delegate\n\n AttributeObserver.prototype.matchElement = function (element) {\n return element.hasAttribute(this.attributeName);\n };\n\n AttributeObserver.prototype.matchElementsInTree = function (tree) {\n var match = this.matchElement(tree) ? [tree] : [];\n var matches = Array.from(tree.querySelectorAll(this.selector));\n return match.concat(matches);\n };\n\n AttributeObserver.prototype.elementMatched = function (element) {\n if (this.delegate.elementMatchedAttribute) {\n this.delegate.elementMatchedAttribute(element, this.attributeName);\n }\n };\n\n AttributeObserver.prototype.elementUnmatched = function (element) {\n if (this.delegate.elementUnmatchedAttribute) {\n this.delegate.elementUnmatchedAttribute(element, this.attributeName);\n }\n };\n\n AttributeObserver.prototype.elementAttributeChanged = function (element, attributeName) {\n if (this.delegate.elementAttributeValueChanged && this.attributeName == attributeName) {\n this.delegate.elementAttributeValueChanged(element, attributeName);\n }\n };\n\n return AttributeObserver;\n}();\n\nexport { AttributeObserver };","export function add(map, key, value) {\n fetch(map, key).add(value);\n}\nexport function del(map, key, value) {\n fetch(map, key).delete(value);\n prune(map, key);\n}\nexport function fetch(map, key) {\n var values = map.get(key);\n\n if (!values) {\n values = new Set();\n map.set(key, values);\n }\n\n return values;\n}\nexport function prune(map, key) {\n var values = map.get(key);\n\n if (values != null && values.size == 0) {\n map.delete(key);\n }\n}","import { add, del } from \"./set_operations\";\n\nvar Multimap =\n/** @class */\nfunction () {\n function Multimap() {\n this.valuesByKey = new Map();\n }\n\n Object.defineProperty(Multimap.prototype, \"values\", {\n get: function get() {\n var sets = Array.from(this.valuesByKey.values());\n return sets.reduce(function (values, set) {\n return values.concat(Array.from(set));\n }, []);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Multimap.prototype, \"size\", {\n get: function get() {\n var sets = Array.from(this.valuesByKey.values());\n return sets.reduce(function (size, set) {\n return size + set.size;\n }, 0);\n },\n enumerable: true,\n configurable: true\n });\n\n Multimap.prototype.add = function (key, value) {\n add(this.valuesByKey, key, value);\n };\n\n Multimap.prototype.delete = function (key, value) {\n del(this.valuesByKey, key, value);\n };\n\n Multimap.prototype.has = function (key, value) {\n var values = this.valuesByKey.get(key);\n return values != null && values.has(value);\n };\n\n Multimap.prototype.hasKey = function (key) {\n return this.valuesByKey.has(key);\n };\n\n Multimap.prototype.hasValue = function (value) {\n var sets = Array.from(this.valuesByKey.values());\n return sets.some(function (set) {\n return set.has(value);\n });\n };\n\n Multimap.prototype.getValuesForKey = function (key) {\n var values = this.valuesByKey.get(key);\n return values ? Array.from(values) : [];\n };\n\n Multimap.prototype.getKeysForValue = function (value) {\n return Array.from(this.valuesByKey).filter(function (_a) {\n var key = _a[0],\n values = _a[1];\n return values.has(value);\n }).map(function (_a) {\n var key = _a[0],\n values = _a[1];\n return key;\n });\n };\n\n return Multimap;\n}();\n\nexport { Multimap };","var __extends = this && this.__extends || function () {\n var extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return function (d, b) {\n extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\n\nimport { Multimap } from \"./multimap\";\nimport { add, del } from \"./set_operations\";\n\nvar IndexedMultimap =\n/** @class */\nfunction (_super) {\n __extends(IndexedMultimap, _super);\n\n function IndexedMultimap() {\n var _this = _super.call(this) || this;\n\n _this.keysByValue = new Map();\n return _this;\n }\n\n Object.defineProperty(IndexedMultimap.prototype, \"values\", {\n get: function get() {\n return Array.from(this.keysByValue.keys());\n },\n enumerable: true,\n configurable: true\n });\n\n IndexedMultimap.prototype.add = function (key, value) {\n _super.prototype.add.call(this, key, value);\n\n add(this.keysByValue, value, key);\n };\n\n IndexedMultimap.prototype.delete = function (key, value) {\n _super.prototype.delete.call(this, key, value);\n\n del(this.keysByValue, value, key);\n };\n\n IndexedMultimap.prototype.hasValue = function (value) {\n return this.keysByValue.has(value);\n };\n\n IndexedMultimap.prototype.getKeysForValue = function (value) {\n var set = this.keysByValue.get(value);\n return set ? Array.from(set) : [];\n };\n\n return IndexedMultimap;\n}(Multimap);\n\nexport { IndexedMultimap };","import { AttributeObserver } from \"./attribute_observer\";\nimport { Multimap } from \"@stimulus/multimap\";\n\nvar TokenListObserver =\n/** @class */\nfunction () {\n function TokenListObserver(element, attributeName, delegate) {\n this.attributeObserver = new AttributeObserver(element, attributeName, this);\n this.delegate = delegate;\n this.tokensByElement = new Multimap();\n }\n\n Object.defineProperty(TokenListObserver.prototype, \"started\", {\n get: function get() {\n return this.attributeObserver.started;\n },\n enumerable: true,\n configurable: true\n });\n\n TokenListObserver.prototype.start = function () {\n this.attributeObserver.start();\n };\n\n TokenListObserver.prototype.stop = function () {\n this.attributeObserver.stop();\n };\n\n TokenListObserver.prototype.refresh = function () {\n this.attributeObserver.refresh();\n };\n\n Object.defineProperty(TokenListObserver.prototype, \"element\", {\n get: function get() {\n return this.attributeObserver.element;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TokenListObserver.prototype, \"attributeName\", {\n get: function get() {\n return this.attributeObserver.attributeName;\n },\n enumerable: true,\n configurable: true\n }); // Attribute observer delegate\n\n TokenListObserver.prototype.elementMatchedAttribute = function (element) {\n this.tokensMatched(this.readTokensForElement(element));\n };\n\n TokenListObserver.prototype.elementAttributeValueChanged = function (element) {\n var _a = this.refreshTokensForElement(element),\n unmatchedTokens = _a[0],\n matchedTokens = _a[1];\n\n this.tokensUnmatched(unmatchedTokens);\n this.tokensMatched(matchedTokens);\n };\n\n TokenListObserver.prototype.elementUnmatchedAttribute = function (element) {\n this.tokensUnmatched(this.tokensByElement.getValuesForKey(element));\n };\n\n TokenListObserver.prototype.tokensMatched = function (tokens) {\n var _this = this;\n\n tokens.forEach(function (token) {\n return _this.tokenMatched(token);\n });\n };\n\n TokenListObserver.prototype.tokensUnmatched = function (tokens) {\n var _this = this;\n\n tokens.forEach(function (token) {\n return _this.tokenUnmatched(token);\n });\n };\n\n TokenListObserver.prototype.tokenMatched = function (token) {\n this.delegate.tokenMatched(token);\n this.tokensByElement.add(token.element, token);\n };\n\n TokenListObserver.prototype.tokenUnmatched = function (token) {\n this.delegate.tokenUnmatched(token);\n this.tokensByElement.delete(token.element, token);\n };\n\n TokenListObserver.prototype.refreshTokensForElement = function (element) {\n var previousTokens = this.tokensByElement.getValuesForKey(element);\n var currentTokens = this.readTokensForElement(element);\n var firstDifferingIndex = zip(previousTokens, currentTokens).findIndex(function (_a) {\n var previousToken = _a[0],\n currentToken = _a[1];\n return !tokensAreEqual(previousToken, currentToken);\n });\n\n if (firstDifferingIndex == -1) {\n return [[], []];\n } else {\n return [previousTokens.slice(firstDifferingIndex), currentTokens.slice(firstDifferingIndex)];\n }\n };\n\n TokenListObserver.prototype.readTokensForElement = function (element) {\n var attributeName = this.attributeName;\n var tokenString = element.getAttribute(attributeName) || \"\";\n return parseTokenString(tokenString, element, attributeName);\n };\n\n return TokenListObserver;\n}();\n\nexport { TokenListObserver };\n\nfunction parseTokenString(tokenString, element, attributeName) {\n return tokenString.trim().split(/\\s+/).filter(function (content) {\n return content.length;\n }).map(function (content, index) {\n return {\n element: element,\n attributeName: attributeName,\n content: content,\n index: index\n };\n });\n}\n\nfunction zip(left, right) {\n var length = Math.max(left.length, right.length);\n return Array.from({\n length: length\n }, function (_, index) {\n return [left[index], right[index]];\n });\n}\n\nfunction tokensAreEqual(left, right) {\n return left && right && left.index == right.index && left.content == right.content;\n}","import { TokenListObserver } from \"./token_list_observer\";\n\nvar ValueListObserver =\n/** @class */\nfunction () {\n function ValueListObserver(element, attributeName, delegate) {\n this.tokenListObserver = new TokenListObserver(element, attributeName, this);\n this.delegate = delegate;\n this.parseResultsByToken = new WeakMap();\n this.valuesByTokenByElement = new WeakMap();\n }\n\n Object.defineProperty(ValueListObserver.prototype, \"started\", {\n get: function get() {\n return this.tokenListObserver.started;\n },\n enumerable: true,\n configurable: true\n });\n\n ValueListObserver.prototype.start = function () {\n this.tokenListObserver.start();\n };\n\n ValueListObserver.prototype.stop = function () {\n this.tokenListObserver.stop();\n };\n\n ValueListObserver.prototype.refresh = function () {\n this.tokenListObserver.refresh();\n };\n\n Object.defineProperty(ValueListObserver.prototype, \"element\", {\n get: function get() {\n return this.tokenListObserver.element;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ValueListObserver.prototype, \"attributeName\", {\n get: function get() {\n return this.tokenListObserver.attributeName;\n },\n enumerable: true,\n configurable: true\n });\n\n ValueListObserver.prototype.tokenMatched = function (token) {\n var element = token.element;\n var value = this.fetchParseResultForToken(token).value;\n\n if (value) {\n this.fetchValuesByTokenForElement(element).set(token, value);\n this.delegate.elementMatchedValue(element, value);\n }\n };\n\n ValueListObserver.prototype.tokenUnmatched = function (token) {\n var element = token.element;\n var value = this.fetchParseResultForToken(token).value;\n\n if (value) {\n this.fetchValuesByTokenForElement(element).delete(token);\n this.delegate.elementUnmatchedValue(element, value);\n }\n };\n\n ValueListObserver.prototype.fetchParseResultForToken = function (token) {\n var parseResult = this.parseResultsByToken.get(token);\n\n if (!parseResult) {\n parseResult = this.parseToken(token);\n this.parseResultsByToken.set(token, parseResult);\n }\n\n return parseResult;\n };\n\n ValueListObserver.prototype.fetchValuesByTokenForElement = function (element) {\n var valuesByToken = this.valuesByTokenByElement.get(element);\n\n if (!valuesByToken) {\n valuesByToken = new Map();\n this.valuesByTokenByElement.set(element, valuesByToken);\n }\n\n return valuesByToken;\n };\n\n ValueListObserver.prototype.parseToken = function (token) {\n try {\n var value = this.delegate.parseValueForToken(token);\n return {\n value: value\n };\n } catch (error) {\n return {\n error: error\n };\n }\n };\n\n return ValueListObserver;\n}();\n\nexport { ValueListObserver };","import { Action } from \"./action\";\nimport { Binding } from \"./binding\";\nimport { ValueListObserver } from \"@stimulus/mutation-observers\";\n\nvar BindingObserver =\n/** @class */\nfunction () {\n function BindingObserver(context, delegate) {\n this.context = context;\n this.delegate = delegate;\n this.bindingsByAction = new Map();\n }\n\n BindingObserver.prototype.start = function () {\n if (!this.valueListObserver) {\n this.valueListObserver = new ValueListObserver(this.element, this.actionAttribute, this);\n this.valueListObserver.start();\n }\n };\n\n BindingObserver.prototype.stop = function () {\n if (this.valueListObserver) {\n this.valueListObserver.stop();\n delete this.valueListObserver;\n this.disconnectAllActions();\n }\n };\n\n Object.defineProperty(BindingObserver.prototype, \"element\", {\n get: function get() {\n return this.context.element;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(BindingObserver.prototype, \"identifier\", {\n get: function get() {\n return this.context.identifier;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(BindingObserver.prototype, \"actionAttribute\", {\n get: function get() {\n return this.schema.actionAttribute;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(BindingObserver.prototype, \"schema\", {\n get: function get() {\n return this.context.schema;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(BindingObserver.prototype, \"bindings\", {\n get: function get() {\n return Array.from(this.bindingsByAction.values());\n },\n enumerable: true,\n configurable: true\n });\n\n BindingObserver.prototype.connectAction = function (action) {\n var binding = new Binding(this.context, action);\n this.bindingsByAction.set(action, binding);\n this.delegate.bindingConnected(binding);\n };\n\n BindingObserver.prototype.disconnectAction = function (action) {\n var binding = this.bindingsByAction.get(action);\n\n if (binding) {\n this.bindingsByAction.delete(action);\n this.delegate.bindingDisconnected(binding);\n }\n };\n\n BindingObserver.prototype.disconnectAllActions = function () {\n var _this = this;\n\n this.bindings.forEach(function (binding) {\n return _this.delegate.bindingDisconnected(binding);\n });\n this.bindingsByAction.clear();\n }; // Value observer delegate\n\n\n BindingObserver.prototype.parseValueForToken = function (token) {\n var action = Action.forToken(token);\n\n if (action.identifier == this.identifier) {\n return action;\n }\n };\n\n BindingObserver.prototype.elementMatchedValue = function (element, action) {\n this.connectAction(action);\n };\n\n BindingObserver.prototype.elementUnmatchedValue = function (element, action) {\n this.disconnectAction(action);\n };\n\n return BindingObserver;\n}();\n\nexport { BindingObserver };","import { BindingObserver } from \"./binding_observer\";\n\nvar Context =\n/** @class */\nfunction () {\n function Context(module, scope) {\n this.module = module;\n this.scope = scope;\n this.controller = new module.controllerConstructor(this);\n this.bindingObserver = new BindingObserver(this, this.dispatcher);\n\n try {\n this.controller.initialize();\n } catch (error) {\n this.handleError(error, \"initializing controller\");\n }\n }\n\n Context.prototype.connect = function () {\n this.bindingObserver.start();\n\n try {\n this.controller.connect();\n } catch (error) {\n this.handleError(error, \"connecting controller\");\n }\n };\n\n Context.prototype.disconnect = function () {\n try {\n this.controller.disconnect();\n } catch (error) {\n this.handleError(error, \"disconnecting controller\");\n }\n\n this.bindingObserver.stop();\n };\n\n Object.defineProperty(Context.prototype, \"application\", {\n get: function get() {\n return this.module.application;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Context.prototype, \"identifier\", {\n get: function get() {\n return this.module.identifier;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Context.prototype, \"schema\", {\n get: function get() {\n return this.application.schema;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Context.prototype, \"dispatcher\", {\n get: function get() {\n return this.application.dispatcher;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Context.prototype, \"element\", {\n get: function get() {\n return this.scope.element;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Context.prototype, \"parentElement\", {\n get: function get() {\n return this.element.parentElement;\n },\n enumerable: true,\n configurable: true\n }); // Error handling\n\n Context.prototype.handleError = function (error, message, detail) {\n if (detail === void 0) {\n detail = {};\n }\n\n var _a = this,\n identifier = _a.identifier,\n controller = _a.controller,\n element = _a.element;\n\n detail = Object.assign({\n identifier: identifier,\n controller: controller,\n element: element\n }, detail);\n this.application.handleError(error, \"Error \" + message, detail);\n };\n\n return Context;\n}();\n\nexport { Context };","var __extends = this && this.__extends || function () {\n var extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return function (d, b) {\n extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\n/** @hidden */\n\n\nexport function blessDefinition(definition) {\n return {\n identifier: definition.identifier,\n controllerConstructor: blessControllerConstructor(definition.controllerConstructor)\n };\n}\n\nfunction blessControllerConstructor(controllerConstructor) {\n var constructor = extend(controllerConstructor);\n constructor.bless();\n return constructor;\n}\n\nvar extend = function () {\n function extendWithReflect(constructor) {\n function Controller() {\n var _newTarget = this && this instanceof Controller ? this.constructor : void 0;\n\n return Reflect.construct(constructor, arguments, _newTarget);\n }\n\n Controller.prototype = Object.create(constructor.prototype, {\n constructor: {\n value: Controller\n }\n });\n Reflect.setPrototypeOf(Controller, constructor);\n return Controller;\n }\n\n function testReflectExtension() {\n var a = function a() {\n this.a.call(this);\n };\n\n var b = extendWithReflect(a);\n\n b.prototype.a = function () {};\n\n return new b();\n }\n\n try {\n testReflectExtension();\n return extendWithReflect;\n } catch (error) {\n return function (constructor) {\n return (\n /** @class */\n function (_super) {\n __extends(Controller, _super);\n\n function Controller() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n return Controller;\n }(constructor)\n );\n };\n }\n}();","import { Context } from \"./context\";\nimport { blessDefinition } from \"./definition\";\n\nvar Module =\n/** @class */\nfunction () {\n function Module(application, definition) {\n this.application = application;\n this.definition = blessDefinition(definition);\n this.contextsByScope = new WeakMap();\n this.connectedContexts = new Set();\n }\n\n Object.defineProperty(Module.prototype, \"identifier\", {\n get: function get() {\n return this.definition.identifier;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Module.prototype, \"controllerConstructor\", {\n get: function get() {\n return this.definition.controllerConstructor;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Module.prototype, \"contexts\", {\n get: function get() {\n return Array.from(this.connectedContexts);\n },\n enumerable: true,\n configurable: true\n });\n\n Module.prototype.connectContextForScope = function (scope) {\n var context = this.fetchContextForScope(scope);\n this.connectedContexts.add(context);\n context.connect();\n };\n\n Module.prototype.disconnectContextForScope = function (scope) {\n var context = this.contextsByScope.get(scope);\n\n if (context) {\n this.connectedContexts.delete(context);\n context.disconnect();\n }\n };\n\n Module.prototype.fetchContextForScope = function (scope) {\n var context = this.contextsByScope.get(scope);\n\n if (!context) {\n context = new Context(this, scope);\n this.contextsByScope.set(scope, context);\n }\n\n return context;\n };\n\n return Module;\n}();\n\nexport { Module };","var DataMap =\n/** @class */\nfunction () {\n function DataMap(scope) {\n this.scope = scope;\n }\n\n Object.defineProperty(DataMap.prototype, \"element\", {\n get: function get() {\n return this.scope.element;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DataMap.prototype, \"identifier\", {\n get: function get() {\n return this.scope.identifier;\n },\n enumerable: true,\n configurable: true\n });\n\n DataMap.prototype.get = function (key) {\n key = this.getFormattedKey(key);\n return this.element.getAttribute(key);\n };\n\n DataMap.prototype.set = function (key, value) {\n key = this.getFormattedKey(key);\n this.element.setAttribute(key, value);\n return this.get(key);\n };\n\n DataMap.prototype.has = function (key) {\n key = this.getFormattedKey(key);\n return this.element.hasAttribute(key);\n };\n\n DataMap.prototype.delete = function (key) {\n if (this.has(key)) {\n key = this.getFormattedKey(key);\n this.element.removeAttribute(key);\n return true;\n } else {\n return false;\n }\n };\n\n DataMap.prototype.getFormattedKey = function (key) {\n return \"data-\" + this.identifier + \"-\" + dasherize(key);\n };\n\n return DataMap;\n}();\n\nexport { DataMap };\n\nfunction dasherize(value) {\n return value.replace(/([A-Z])/g, function (_, char) {\n return \"-\" + char.toLowerCase();\n });\n}","/** @hidden */\nexport function attributeValueContainsToken(attributeName, token) {\n return \"[\" + attributeName + \"~=\\\"\" + token + \"\\\"]\";\n}","import { attributeValueContainsToken } from \"./selectors\";\n\nvar TargetSet =\n/** @class */\nfunction () {\n function TargetSet(scope) {\n this.scope = scope;\n }\n\n Object.defineProperty(TargetSet.prototype, \"element\", {\n get: function get() {\n return this.scope.element;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TargetSet.prototype, \"identifier\", {\n get: function get() {\n return this.scope.identifier;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TargetSet.prototype, \"schema\", {\n get: function get() {\n return this.scope.schema;\n },\n enumerable: true,\n configurable: true\n });\n\n TargetSet.prototype.has = function (targetName) {\n return this.find(targetName) != null;\n };\n\n TargetSet.prototype.find = function () {\n var targetNames = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n targetNames[_i] = arguments[_i];\n }\n\n var selector = this.getSelectorForTargetNames(targetNames);\n return this.scope.findElement(selector);\n };\n\n TargetSet.prototype.findAll = function () {\n var targetNames = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n targetNames[_i] = arguments[_i];\n }\n\n var selector = this.getSelectorForTargetNames(targetNames);\n return this.scope.findAllElements(selector);\n };\n\n TargetSet.prototype.getSelectorForTargetNames = function (targetNames) {\n var _this = this;\n\n return targetNames.map(function (targetName) {\n return _this.getSelectorForTargetName(targetName);\n }).join(\", \");\n };\n\n TargetSet.prototype.getSelectorForTargetName = function (targetName) {\n var targetDescriptor = this.identifier + \".\" + targetName;\n return attributeValueContainsToken(this.schema.targetAttribute, targetDescriptor);\n };\n\n return TargetSet;\n}();\n\nexport { TargetSet };","import { DataMap } from \"./data_map\";\nimport { TargetSet } from \"./target_set\";\nimport { attributeValueContainsToken } from \"./selectors\";\n\nvar Scope =\n/** @class */\nfunction () {\n function Scope(schema, identifier, element) {\n this.schema = schema;\n this.identifier = identifier;\n this.element = element;\n this.targets = new TargetSet(this);\n this.data = new DataMap(this);\n }\n\n Scope.prototype.findElement = function (selector) {\n return this.findAllElements(selector)[0];\n };\n\n Scope.prototype.findAllElements = function (selector) {\n var head = this.element.matches(selector) ? [this.element] : [];\n var tail = this.filterElements(Array.from(this.element.querySelectorAll(selector)));\n return head.concat(tail);\n };\n\n Scope.prototype.filterElements = function (elements) {\n var _this = this;\n\n return elements.filter(function (element) {\n return _this.containsElement(element);\n });\n };\n\n Scope.prototype.containsElement = function (element) {\n return element.closest(this.controllerSelector) === this.element;\n };\n\n Object.defineProperty(Scope.prototype, \"controllerSelector\", {\n get: function get() {\n return attributeValueContainsToken(this.schema.controllerAttribute, this.identifier);\n },\n enumerable: true,\n configurable: true\n });\n return Scope;\n}();\n\nexport { Scope };","import { Scope } from \"./scope\";\nimport { ValueListObserver } from \"@stimulus/mutation-observers\";\n\nvar ScopeObserver =\n/** @class */\nfunction () {\n function ScopeObserver(element, schema, delegate) {\n this.element = element;\n this.schema = schema;\n this.delegate = delegate;\n this.valueListObserver = new ValueListObserver(this.element, this.controllerAttribute, this);\n this.scopesByIdentifierByElement = new WeakMap();\n this.scopeReferenceCounts = new WeakMap();\n }\n\n ScopeObserver.prototype.start = function () {\n this.valueListObserver.start();\n };\n\n ScopeObserver.prototype.stop = function () {\n this.valueListObserver.stop();\n };\n\n Object.defineProperty(ScopeObserver.prototype, \"controllerAttribute\", {\n get: function get() {\n return this.schema.controllerAttribute;\n },\n enumerable: true,\n configurable: true\n }); // Value observer delegate\n\n /** @hidden */\n\n ScopeObserver.prototype.parseValueForToken = function (token) {\n var element = token.element,\n identifier = token.content;\n var scopesByIdentifier = this.fetchScopesByIdentifierForElement(element);\n var scope = scopesByIdentifier.get(identifier);\n\n if (!scope) {\n scope = new Scope(this.schema, identifier, element);\n scopesByIdentifier.set(identifier, scope);\n }\n\n return scope;\n };\n /** @hidden */\n\n\n ScopeObserver.prototype.elementMatchedValue = function (element, value) {\n var referenceCount = (this.scopeReferenceCounts.get(value) || 0) + 1;\n this.scopeReferenceCounts.set(value, referenceCount);\n\n if (referenceCount == 1) {\n this.delegate.scopeConnected(value);\n }\n };\n /** @hidden */\n\n\n ScopeObserver.prototype.elementUnmatchedValue = function (element, value) {\n var referenceCount = this.scopeReferenceCounts.get(value);\n\n if (referenceCount) {\n this.scopeReferenceCounts.set(value, referenceCount - 1);\n\n if (referenceCount == 1) {\n this.delegate.scopeDisconnected(value);\n }\n }\n };\n\n ScopeObserver.prototype.fetchScopesByIdentifierForElement = function (element) {\n var scopesByIdentifier = this.scopesByIdentifierByElement.get(element);\n\n if (!scopesByIdentifier) {\n scopesByIdentifier = new Map();\n this.scopesByIdentifierByElement.set(element, scopesByIdentifier);\n }\n\n return scopesByIdentifier;\n };\n\n return ScopeObserver;\n}();\n\nexport { ScopeObserver };","import { Module } from \"./module\";\nimport { Multimap } from \"@stimulus/multimap\";\nimport { ScopeObserver } from \"./scope_observer\";\n\nvar Router =\n/** @class */\nfunction () {\n function Router(application) {\n this.application = application;\n this.scopeObserver = new ScopeObserver(this.element, this.schema, this);\n this.scopesByIdentifier = new Multimap();\n this.modulesByIdentifier = new Map();\n }\n\n Object.defineProperty(Router.prototype, \"element\", {\n get: function get() {\n return this.application.element;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Router.prototype, \"schema\", {\n get: function get() {\n return this.application.schema;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Router.prototype, \"controllerAttribute\", {\n get: function get() {\n return this.schema.controllerAttribute;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Router.prototype, \"modules\", {\n get: function get() {\n return Array.from(this.modulesByIdentifier.values());\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Router.prototype, \"contexts\", {\n get: function get() {\n return this.modules.reduce(function (contexts, module) {\n return contexts.concat(module.contexts);\n }, []);\n },\n enumerable: true,\n configurable: true\n });\n\n Router.prototype.start = function () {\n this.scopeObserver.start();\n };\n\n Router.prototype.stop = function () {\n this.scopeObserver.stop();\n };\n\n Router.prototype.loadDefinition = function (definition) {\n this.unloadIdentifier(definition.identifier);\n var module = new Module(this.application, definition);\n this.connectModule(module);\n };\n\n Router.prototype.unloadIdentifier = function (identifier) {\n var module = this.modulesByIdentifier.get(identifier);\n\n if (module) {\n this.disconnectModule(module);\n }\n };\n\n Router.prototype.getContextForElementAndIdentifier = function (element, identifier) {\n var module = this.modulesByIdentifier.get(identifier);\n\n if (module) {\n return module.contexts.find(function (context) {\n return context.element == element;\n });\n }\n }; // Error handler delegate\n\n /** @hidden */\n\n\n Router.prototype.handleError = function (error, message, detail) {\n this.application.handleError(error, message, detail);\n }; // Scope observer delegate\n\n /** @hidden */\n\n\n Router.prototype.scopeConnected = function (scope) {\n this.scopesByIdentifier.add(scope.identifier, scope);\n var module = this.modulesByIdentifier.get(scope.identifier);\n\n if (module) {\n module.connectContextForScope(scope);\n }\n };\n /** @hidden */\n\n\n Router.prototype.scopeDisconnected = function (scope) {\n this.scopesByIdentifier.delete(scope.identifier, scope);\n var module = this.modulesByIdentifier.get(scope.identifier);\n\n if (module) {\n module.disconnectContextForScope(scope);\n }\n }; // Modules\n\n\n Router.prototype.connectModule = function (module) {\n this.modulesByIdentifier.set(module.identifier, module);\n var scopes = this.scopesByIdentifier.getValuesForKey(module.identifier);\n scopes.forEach(function (scope) {\n return module.connectContextForScope(scope);\n });\n };\n\n Router.prototype.disconnectModule = function (module) {\n this.modulesByIdentifier.delete(module.identifier);\n var scopes = this.scopesByIdentifier.getValuesForKey(module.identifier);\n scopes.forEach(function (scope) {\n return module.disconnectContextForScope(scope);\n });\n };\n\n return Router;\n}();\n\nexport { Router };","export var defaultSchema = {\n controllerAttribute: \"data-controller\",\n actionAttribute: \"data-action\",\n targetAttribute: \"data-target\"\n};","var __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, generator) {\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n\n function step(result) {\n result.done ? resolve(result.value) : new P(function (resolve) {\n resolve(result.value);\n }).then(fulfilled, rejected);\n }\n\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\n\nvar __generator = this && this.__generator || function (thisArg, body) {\n var _ = {\n label: 0,\n sent: function sent() {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: []\n },\n f,\n y,\n t,\n g;\n return g = {\n next: verb(0),\n \"throw\": verb(1),\n \"return\": verb(2)\n }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function () {\n return this;\n }), g;\n\n function verb(n) {\n return function (v) {\n return step([n, v]);\n };\n }\n\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n\n while (_) {\n try {\n if (f = 1, y && (t = y[op[0] & 2 ? \"return\" : op[0] ? \"throw\" : \"next\"]) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [0, t.value];\n\n switch (op[0]) {\n case 0:\n case 1:\n t = op;\n break;\n\n case 4:\n _.label++;\n return {\n value: op[1],\n done: false\n };\n\n case 5:\n _.label++;\n y = op[1];\n op = [0];\n continue;\n\n case 7:\n op = _.ops.pop();\n\n _.trys.pop();\n\n continue;\n\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {\n _ = 0;\n continue;\n }\n\n if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {\n _.label = op[1];\n break;\n }\n\n if (op[0] === 6 && _.label < t[1]) {\n _.label = t[1];\n t = op;\n break;\n }\n\n if (t && _.label < t[2]) {\n _.label = t[2];\n\n _.ops.push(op);\n\n break;\n }\n\n if (t[2]) _.ops.pop();\n\n _.trys.pop();\n\n continue;\n }\n\n op = body.call(thisArg, _);\n } catch (e) {\n op = [6, e];\n y = 0;\n } finally {\n f = t = 0;\n }\n }\n\n if (op[0] & 5) throw op[1];\n return {\n value: op[0] ? op[1] : void 0,\n done: true\n };\n }\n};\n\nimport { Dispatcher } from \"./dispatcher\";\nimport { Router } from \"./router\";\nimport { defaultSchema } from \"./schema\";\n\nvar Application =\n/** @class */\nfunction () {\n function Application(element, schema) {\n if (element === void 0) {\n element = document.documentElement;\n }\n\n if (schema === void 0) {\n schema = defaultSchema;\n }\n\n this.element = element;\n this.schema = schema;\n this.dispatcher = new Dispatcher(this);\n this.router = new Router(this);\n }\n\n Application.start = function (element, schema) {\n var application = new Application(element, schema);\n application.start();\n return application;\n };\n\n Application.prototype.start = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n return [4\n /*yield*/\n , domReady()];\n\n case 1:\n _a.sent();\n\n this.router.start();\n this.dispatcher.start();\n return [2\n /*return*/\n ];\n }\n });\n });\n };\n\n Application.prototype.stop = function () {\n this.router.stop();\n this.dispatcher.stop();\n };\n\n Application.prototype.register = function (identifier, controllerConstructor) {\n this.load({\n identifier: identifier,\n controllerConstructor: controllerConstructor\n });\n };\n\n Application.prototype.load = function (head) {\n var _this = this;\n\n var rest = [];\n\n for (var _i = 1; _i < arguments.length; _i++) {\n rest[_i - 1] = arguments[_i];\n }\n\n var definitions = Array.isArray(head) ? head : [head].concat(rest);\n definitions.forEach(function (definition) {\n return _this.router.loadDefinition(definition);\n });\n };\n\n Application.prototype.unload = function (head) {\n var _this = this;\n\n var rest = [];\n\n for (var _i = 1; _i < arguments.length; _i++) {\n rest[_i - 1] = arguments[_i];\n }\n\n var identifiers = Array.isArray(head) ? head : [head].concat(rest);\n identifiers.forEach(function (identifier) {\n return _this.router.unloadIdentifier(identifier);\n });\n };\n\n Object.defineProperty(Application.prototype, \"controllers\", {\n // Controllers\n get: function get() {\n return this.router.contexts.map(function (context) {\n return context.controller;\n });\n },\n enumerable: true,\n configurable: true\n });\n\n Application.prototype.getControllerForElementAndIdentifier = function (element, identifier) {\n var context = this.router.getContextForElementAndIdentifier(element, identifier);\n return context ? context.controller : null;\n }; // Error handling\n\n\n Application.prototype.handleError = function (error, message, detail) {\n console.error(\"%s\\n\\n%o\\n\\n%o\", message, error, detail);\n };\n\n return Application;\n}();\n\nexport { Application };\n\nfunction domReady() {\n return new Promise(function (resolve) {\n if (document.readyState == \"loading\") {\n document.addEventListener(\"DOMContentLoaded\", resolve);\n } else {\n resolve();\n }\n });\n}","/** @hidden */\nexport function defineTargetProperties(constructor) {\n var prototype = constructor.prototype;\n var targetNames = getTargetNamesForConstructor(constructor);\n targetNames.forEach(function (name) {\n var _a;\n\n return defineLinkedProperties(prototype, (_a = {}, _a[name + \"Target\"] = {\n get: function get() {\n var target = this.targets.find(name);\n\n if (target) {\n return target;\n } else {\n throw new Error(\"Missing target element \\\"\" + this.identifier + \".\" + name + \"\\\"\");\n }\n }\n }, _a[name + \"Targets\"] = {\n get: function get() {\n return this.targets.findAll(name);\n }\n }, _a[\"has\" + capitalize(name) + \"Target\"] = {\n get: function get() {\n return this.targets.has(name);\n }\n }, _a));\n });\n}\n\nfunction getTargetNamesForConstructor(constructor) {\n var ancestors = getAncestorsForConstructor(constructor);\n return Array.from(ancestors.reduce(function (targetNames, constructor) {\n getOwnTargetNamesForConstructor(constructor).forEach(function (name) {\n return targetNames.add(name);\n });\n return targetNames;\n }, new Set()));\n}\n\nfunction getAncestorsForConstructor(constructor) {\n var ancestors = [];\n\n while (constructor) {\n ancestors.push(constructor);\n constructor = Object.getPrototypeOf(constructor);\n }\n\n return ancestors;\n}\n\nfunction getOwnTargetNamesForConstructor(constructor) {\n var definition = constructor[\"targets\"];\n return Array.isArray(definition) ? definition : [];\n}\n\nfunction defineLinkedProperties(object, properties) {\n Object.keys(properties).forEach(function (name) {\n if (!(name in object)) {\n var descriptor = properties[name];\n Object.defineProperty(object, name, descriptor);\n }\n });\n}\n\nfunction capitalize(name) {\n return name.charAt(0).toUpperCase() + name.slice(1);\n}","import { defineTargetProperties } from \"./target_properties\";\n\nvar Controller =\n/** @class */\nfunction () {\n function Controller(context) {\n this.context = context;\n }\n\n Controller.bless = function () {\n defineTargetProperties(this);\n };\n\n Object.defineProperty(Controller.prototype, \"application\", {\n get: function get() {\n return this.context.application;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Controller.prototype, \"scope\", {\n get: function get() {\n return this.context.scope;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Controller.prototype, \"element\", {\n get: function get() {\n return this.scope.element;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Controller.prototype, \"identifier\", {\n get: function get() {\n return this.scope.identifier;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Controller.prototype, \"targets\", {\n get: function get() {\n return this.scope.targets;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Controller.prototype, \"data\", {\n get: function get() {\n return this.scope.data;\n },\n enumerable: true,\n configurable: true\n });\n\n Controller.prototype.initialize = function () {// Override in your subclass to set up initial controller state\n };\n\n Controller.prototype.connect = function () {// Override in your subclass to respond when the controller is connected to the DOM\n };\n\n Controller.prototype.disconnect = function () {// Override in your subclass to respond when the controller is disconnected from the DOM\n };\n\n Controller.targets = [];\n return Controller;\n}();\n\nexport { Controller };","function getDefaults() {\n return {\n baseUrl: null,\n breaks: false,\n gfm: true,\n headerIds: true,\n headerPrefix: '',\n highlight: null,\n langPrefix: 'language-',\n mangle: true,\n pedantic: false,\n renderer: null,\n sanitize: false,\n sanitizer: null,\n silent: false,\n smartLists: false,\n smartypants: false,\n tokenizer: null,\n xhtml: false\n };\n}\n\nfunction changeDefaults(newDefaults) {\n module.exports.defaults = newDefaults;\n}\n\nmodule.exports = {\n defaults: getDefaults(),\n getDefaults: getDefaults,\n changeDefaults: changeDefaults\n};","/**\n * Helpers\n */\nvar escapeTest = /[&<>\"']/;\nvar escapeReplace = /[&<>\"']/g;\nvar escapeTestNoEncode = /[<>\"']|&(?!#?\\w+;)/;\nvar escapeReplaceNoEncode = /[<>\"']|&(?!#?\\w+;)/g;\nvar escapeReplacements = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n};\n\nvar getEscapeReplacement = function getEscapeReplacement(ch) {\n return escapeReplacements[ch];\n};\n\nfunction escape(html, encode) {\n if (encode) {\n if (escapeTest.test(html)) {\n return html.replace(escapeReplace, getEscapeReplacement);\n }\n } else {\n if (escapeTestNoEncode.test(html)) {\n return html.replace(escapeReplaceNoEncode, getEscapeReplacement);\n }\n }\n\n return html;\n}\n\nvar unescapeTest = /&(#(?:\\d+)|(?:#x[0-9A-Fa-f]+)|(?:\\w+));?/ig;\n\nfunction unescape(html) {\n // explicitly match decimal, hex, and named HTML entities\n return html.replace(unescapeTest, function (_, n) {\n n = n.toLowerCase();\n if (n === 'colon') return ':';\n\n if (n.charAt(0) === '#') {\n return n.charAt(1) === 'x' ? String.fromCharCode(parseInt(n.substring(2), 16)) : String.fromCharCode(+n.substring(1));\n }\n\n return '';\n });\n}\n\nvar caret = /(^|[^\\[])\\^/g;\n\nfunction edit(regex, opt) {\n regex = regex.source || regex;\n opt = opt || '';\n var obj = {\n replace: function replace(name, val) {\n val = val.source || val;\n val = val.replace(caret, '$1');\n regex = regex.replace(name, val);\n return obj;\n },\n getRegex: function getRegex() {\n return new RegExp(regex, opt);\n }\n };\n return obj;\n}\n\nvar nonWordAndColonTest = /[^\\w:]/g;\nvar originIndependentUrl = /^$|^[a-z][a-z0-9+.-]*:|^[?#]/i;\n\nfunction cleanUrl(sanitize, base, href) {\n if (sanitize) {\n var prot;\n\n try {\n prot = decodeURIComponent(unescape(href)).replace(nonWordAndColonTest, '').toLowerCase();\n } catch (e) {\n return null;\n }\n\n if (prot.indexOf('javascript:') === 0 || prot.indexOf('vbscript:') === 0 || prot.indexOf('data:') === 0) {\n return null;\n }\n }\n\n if (base && !originIndependentUrl.test(href)) {\n href = resolveUrl(base, href);\n }\n\n try {\n href = encodeURI(href).replace(/%25/g, '%');\n } catch (e) {\n return null;\n }\n\n return href;\n}\n\nvar baseUrls = {};\nvar justDomain = /^[^:]+:\\/*[^/]*$/;\nvar protocol = /^([^:]+:)[\\s\\S]*$/;\nvar domain = /^([^:]+:\\/*[^/]*)[\\s\\S]*$/;\n\nfunction resolveUrl(base, href) {\n if (!baseUrls[' ' + base]) {\n // we can ignore everything in base after the last slash of its path component,\n // but we might need to add _that_\n // https://tools.ietf.org/html/rfc3986#section-3\n if (justDomain.test(base)) {\n baseUrls[' ' + base] = base + '/';\n } else {\n baseUrls[' ' + base] = rtrim(base, '/', true);\n }\n }\n\n base = baseUrls[' ' + base];\n var relativeBase = base.indexOf(':') === -1;\n\n if (href.substring(0, 2) === '//') {\n if (relativeBase) {\n return href;\n }\n\n return base.replace(protocol, '$1') + href;\n } else if (href.charAt(0) === '/') {\n if (relativeBase) {\n return href;\n }\n\n return base.replace(domain, '$1') + href;\n } else {\n return base + href;\n }\n}\n\nvar noopTest = {\n exec: function noopTest() {}\n};\n\nfunction merge(obj) {\n var i = 1,\n target,\n key;\n\n for (; i < arguments.length; i++) {\n target = arguments[i];\n\n for (key in target) {\n if (Object.prototype.hasOwnProperty.call(target, key)) {\n obj[key] = target[key];\n }\n }\n }\n\n return obj;\n}\n\nfunction splitCells(tableRow, count) {\n // ensure that every cell-delimiting pipe has a space\n // before it to distinguish it from an escaped pipe\n var row = tableRow.replace(/\\|/g, function (match, offset, str) {\n var escaped = false,\n curr = offset;\n\n while (--curr >= 0 && str[curr] === '\\\\') {\n escaped = !escaped;\n }\n\n if (escaped) {\n // odd number of slashes means | is escaped\n // so we leave it alone\n return '|';\n } else {\n // add space before unescaped |\n return ' |';\n }\n }),\n cells = row.split(/ \\|/);\n var i = 0;\n\n if (cells.length > count) {\n cells.splice(count);\n } else {\n while (cells.length < count) {\n cells.push('');\n }\n }\n\n for (; i < cells.length; i++) {\n // leading or trailing whitespace is ignored per the gfm spec\n cells[i] = cells[i].trim().replace(/\\\\\\|/g, '|');\n }\n\n return cells;\n} // Remove trailing 'c's. Equivalent to str.replace(/c*$/, '').\n// /c*$/ is vulnerable to REDOS.\n// invert: Remove suffix of non-c chars instead. Default falsey.\n\n\nfunction rtrim(str, c, invert) {\n var l = str.length;\n\n if (l === 0) {\n return '';\n } // Length of suffix matching the invert condition.\n\n\n var suffLen = 0; // Step left until we fail to match the invert condition.\n\n while (suffLen < l) {\n var currChar = str.charAt(l - suffLen - 1);\n\n if (currChar === c && !invert) {\n suffLen++;\n } else if (currChar !== c && invert) {\n suffLen++;\n } else {\n break;\n }\n }\n\n return str.substr(0, l - suffLen);\n}\n\nfunction findClosingBracket(str, b) {\n if (str.indexOf(b[1]) === -1) {\n return -1;\n }\n\n var l = str.length;\n var level = 0,\n i = 0;\n\n for (; i < l; i++) {\n if (str[i] === '\\\\') {\n i++;\n } else if (str[i] === b[0]) {\n level++;\n } else if (str[i] === b[1]) {\n level--;\n\n if (level < 0) {\n return i;\n }\n }\n }\n\n return -1;\n}\n\nfunction checkSanitizeDeprecation(opt) {\n if (opt && opt.sanitize && !opt.silent) {\n console.warn('marked(): sanitize and sanitizer parameters are deprecated since version 0.7.0, should not be used and will be removed in the future. Read more here: https://marked.js.org/#/USING_ADVANCED.md#options');\n }\n}\n\nmodule.exports = {\n escape: escape,\n unescape: unescape,\n edit: edit,\n cleanUrl: cleanUrl,\n resolveUrl: resolveUrl,\n noopTest: noopTest,\n merge: merge,\n splitCells: splitCells,\n rtrim: rtrim,\n findClosingBracket: findClosingBracket,\n checkSanitizeDeprecation: checkSanitizeDeprecation\n};","function _typeof2(obj) { \"@babel/helpers - typeof\"; return _typeof2 = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof2(obj); }\n\nfunction _typeof(obj) {\n if (typeof Symbol === \"function\" && _typeof2(Symbol.iterator) === \"symbol\") {\n _typeof = function _typeof(obj) {\n return _typeof2(obj);\n };\n } else {\n _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : _typeof2(obj);\n };\n }\n\n return _typeof(obj);\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n var ownKeys = Object.keys(source);\n\n if (typeof Object.getOwnPropertySymbols === 'function') {\n ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n }));\n }\n\n ownKeys.forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n }\n\n return target;\n}\n\nfunction _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest();\n}\n\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread();\n}\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n }\n}\n\nfunction _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n\nfunction _iterableToArray(iter) {\n if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter);\n}\n\nfunction _iterableToArrayLimit(arr, i) {\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}\n\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance\");\n}\n\nfunction _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n}\n\nvar noop = function noop() {};\n\nvar _WINDOW = {};\nvar _DOCUMENT = {};\nvar _MUTATION_OBSERVER = null;\nvar _PERFORMANCE = {\n mark: noop,\n measure: noop\n};\n\ntry {\n if (typeof window !== 'undefined') _WINDOW = window;\n if (typeof document !== 'undefined') _DOCUMENT = document;\n if (typeof MutationObserver !== 'undefined') _MUTATION_OBSERVER = MutationObserver;\n if (typeof performance !== 'undefined') _PERFORMANCE = performance;\n} catch (e) {}\n\nvar _ref = _WINDOW.navigator || {},\n _ref$userAgent = _ref.userAgent,\n userAgent = _ref$userAgent === void 0 ? '' : _ref$userAgent;\n\nvar WINDOW = _WINDOW;\nvar DOCUMENT = _DOCUMENT;\nvar MUTATION_OBSERVER = _MUTATION_OBSERVER;\nvar PERFORMANCE = _PERFORMANCE;\nvar IS_BROWSER = !!WINDOW.document;\nvar IS_DOM = !!DOCUMENT.documentElement && !!DOCUMENT.head && typeof DOCUMENT.addEventListener === 'function' && typeof DOCUMENT.createElement === 'function';\nvar IS_IE = ~userAgent.indexOf('MSIE') || ~userAgent.indexOf('Trident/');\nvar NAMESPACE_IDENTIFIER = '___FONT_AWESOME___';\nvar UNITS_IN_GRID = 16;\nvar DEFAULT_FAMILY_PREFIX = 'fa';\nvar DEFAULT_REPLACEMENT_CLASS = 'svg-inline--fa';\nvar DATA_FA_I2SVG = 'data-fa-i2svg';\nvar DATA_FA_PSEUDO_ELEMENT = 'data-fa-pseudo-element';\nvar DATA_FA_PSEUDO_ELEMENT_PENDING = 'data-fa-pseudo-element-pending';\nvar DATA_PREFIX = 'data-prefix';\nvar DATA_ICON = 'data-icon';\nvar HTML_CLASS_I2SVG_BASE_CLASS = 'fontawesome-i2svg';\nvar MUTATION_APPROACH_ASYNC = 'async';\nvar TAGNAMES_TO_SKIP_FOR_PSEUDOELEMENTS = ['HTML', 'HEAD', 'STYLE', 'SCRIPT'];\n\nvar PRODUCTION = function () {\n try {\n return process.env.NODE_ENV === 'production';\n } catch (e) {\n return false;\n }\n}();\n\nvar PREFIX_TO_STYLE = {\n 'fas': 'solid',\n 'far': 'regular',\n 'fal': 'light',\n 'fad': 'duotone',\n 'fab': 'brands',\n 'fa': 'solid'\n};\nvar STYLE_TO_PREFIX = {\n 'solid': 'fas',\n 'regular': 'far',\n 'light': 'fal',\n 'duotone': 'fad',\n 'brands': 'fab'\n};\nvar LAYERS_TEXT_CLASSNAME = 'fa-layers-text';\nvar FONT_FAMILY_PATTERN = /Font Awesome 5 (Solid|Regular|Light|Duotone|Brands|Free|Pro)/;\nvar FONT_WEIGHT_TO_PREFIX = {\n '900': 'fas',\n '400': 'far',\n 'normal': 'far',\n '300': 'fal'\n};\nvar oneToTen = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];\nvar oneToTwenty = oneToTen.concat([11, 12, 13, 14, 15, 16, 17, 18, 19, 20]);\nvar ATTRIBUTES_WATCHED_FOR_MUTATION = ['class', 'data-prefix', 'data-icon', 'data-fa-transform', 'data-fa-mask'];\nvar DUOTONE_CLASSES = {\n GROUP: 'group',\n SWAP_OPACITY: 'swap-opacity',\n PRIMARY: 'primary',\n SECONDARY: 'secondary'\n};\nvar RESERVED_CLASSES = ['xs', 'sm', 'lg', 'fw', 'ul', 'li', 'border', 'pull-left', 'pull-right', 'spin', 'pulse', 'rotate-90', 'rotate-180', 'rotate-270', 'flip-horizontal', 'flip-vertical', 'flip-both', 'stack', 'stack-1x', 'stack-2x', 'inverse', 'layers', 'layers-text', 'layers-counter', DUOTONE_CLASSES.GROUP, DUOTONE_CLASSES.SWAP_OPACITY, DUOTONE_CLASSES.PRIMARY, DUOTONE_CLASSES.SECONDARY].concat(oneToTen.map(function (n) {\n return \"\".concat(n, \"x\");\n})).concat(oneToTwenty.map(function (n) {\n return \"w-\".concat(n);\n}));\nvar initial = WINDOW.FontAwesomeConfig || {};\n\nfunction getAttrConfig(attr) {\n var element = DOCUMENT.querySelector('script[' + attr + ']');\n\n if (element) {\n return element.getAttribute(attr);\n }\n}\n\nfunction coerce(val) {\n // Getting an empty string will occur if the attribute is set on the HTML tag but without a value\n // We'll assume that this is an indication that it should be toggled to true\n // For example \n if (val === '') return true;\n if (val === 'false') return false;\n if (val === 'true') return true;\n return val;\n}\n\nif (DOCUMENT && typeof DOCUMENT.querySelector === 'function') {\n var attrs = [['data-family-prefix', 'familyPrefix'], ['data-replacement-class', 'replacementClass'], ['data-auto-replace-svg', 'autoReplaceSvg'], ['data-auto-add-css', 'autoAddCss'], ['data-auto-a11y', 'autoA11y'], ['data-search-pseudo-elements', 'searchPseudoElements'], ['data-observe-mutations', 'observeMutations'], ['data-mutate-approach', 'mutateApproach'], ['data-keep-original-source', 'keepOriginalSource'], ['data-measure-performance', 'measurePerformance'], ['data-show-missing-icons', 'showMissingIcons']];\n attrs.forEach(function (_ref) {\n var _ref2 = _slicedToArray(_ref, 2),\n attr = _ref2[0],\n key = _ref2[1];\n\n var val = coerce(getAttrConfig(attr));\n\n if (val !== undefined && val !== null) {\n initial[key] = val;\n }\n });\n}\n\nvar _default = {\n familyPrefix: DEFAULT_FAMILY_PREFIX,\n replacementClass: DEFAULT_REPLACEMENT_CLASS,\n autoReplaceSvg: true,\n autoAddCss: true,\n autoA11y: true,\n searchPseudoElements: false,\n observeMutations: true,\n mutateApproach: 'async',\n keepOriginalSource: true,\n measurePerformance: false,\n showMissingIcons: true\n};\n\nvar _config = _objectSpread({}, _default, initial);\n\nif (!_config.autoReplaceSvg) _config.observeMutations = false;\n\nvar config = _objectSpread({}, _config);\n\nWINDOW.FontAwesomeConfig = config;\nvar w = WINDOW || {};\nif (!w[NAMESPACE_IDENTIFIER]) w[NAMESPACE_IDENTIFIER] = {};\nif (!w[NAMESPACE_IDENTIFIER].styles) w[NAMESPACE_IDENTIFIER].styles = {};\nif (!w[NAMESPACE_IDENTIFIER].hooks) w[NAMESPACE_IDENTIFIER].hooks = {};\nif (!w[NAMESPACE_IDENTIFIER].shims) w[NAMESPACE_IDENTIFIER].shims = [];\nvar namespace = w[NAMESPACE_IDENTIFIER];\nvar functions = [];\n\nvar listener = function listener() {\n DOCUMENT.removeEventListener('DOMContentLoaded', listener);\n loaded = 1;\n functions.map(function (fn) {\n return fn();\n });\n};\n\nvar loaded = false;\n\nif (IS_DOM) {\n loaded = (DOCUMENT.documentElement.doScroll ? /^loaded|^c/ : /^loaded|^i|^c/).test(DOCUMENT.readyState);\n if (!loaded) DOCUMENT.addEventListener('DOMContentLoaded', listener);\n}\n\nfunction domready(fn) {\n if (!IS_DOM) return;\n loaded ? setTimeout(fn, 0) : functions.push(fn);\n}\n\nvar PENDING = 'pending';\nvar SETTLED = 'settled';\nvar FULFILLED = 'fulfilled';\nvar REJECTED = 'rejected';\n\nvar NOOP = function NOOP() {};\n\nvar isNode = typeof global !== 'undefined' && typeof global.process !== 'undefined' && typeof global.process.emit === 'function';\nvar asyncSetTimer = typeof setImmediate === 'undefined' ? setTimeout : setImmediate;\nvar asyncQueue = [];\nvar asyncTimer;\n\nfunction asyncFlush() {\n // run promise callbacks\n for (var i = 0; i < asyncQueue.length; i++) {\n asyncQueue[i][0](asyncQueue[i][1]);\n } // reset async asyncQueue\n\n\n asyncQueue = [];\n asyncTimer = false;\n}\n\nfunction asyncCall(callback, arg) {\n asyncQueue.push([callback, arg]);\n\n if (!asyncTimer) {\n asyncTimer = true;\n asyncSetTimer(asyncFlush, 0);\n }\n}\n\nfunction invokeResolver(resolver, promise) {\n function resolvePromise(value) {\n resolve(promise, value);\n }\n\n function rejectPromise(reason) {\n reject(promise, reason);\n }\n\n try {\n resolver(resolvePromise, rejectPromise);\n } catch (e) {\n rejectPromise(e);\n }\n}\n\nfunction invokeCallback(subscriber) {\n var owner = subscriber.owner;\n var settled = owner._state;\n var value = owner._data;\n var callback = subscriber[settled];\n var promise = subscriber.then;\n\n if (typeof callback === 'function') {\n settled = FULFILLED;\n\n try {\n value = callback(value);\n } catch (e) {\n reject(promise, e);\n }\n }\n\n if (!handleThenable(promise, value)) {\n if (settled === FULFILLED) {\n resolve(promise, value);\n }\n\n if (settled === REJECTED) {\n reject(promise, value);\n }\n }\n}\n\nfunction handleThenable(promise, value) {\n var resolved;\n\n try {\n if (promise === value) {\n throw new TypeError('A promises callback cannot return that same promise.');\n }\n\n if (value && (typeof value === 'function' || _typeof(value) === 'object')) {\n // then should be retrieved only once\n var then = value.then;\n\n if (typeof then === 'function') {\n then.call(value, function (val) {\n if (!resolved) {\n resolved = true;\n\n if (value === val) {\n fulfill(promise, val);\n } else {\n resolve(promise, val);\n }\n }\n }, function (reason) {\n if (!resolved) {\n resolved = true;\n reject(promise, reason);\n }\n });\n return true;\n }\n }\n } catch (e) {\n if (!resolved) {\n reject(promise, e);\n }\n\n return true;\n }\n\n return false;\n}\n\nfunction resolve(promise, value) {\n if (promise === value || !handleThenable(promise, value)) {\n fulfill(promise, value);\n }\n}\n\nfunction fulfill(promise, value) {\n if (promise._state === PENDING) {\n promise._state = SETTLED;\n promise._data = value;\n asyncCall(publishFulfillment, promise);\n }\n}\n\nfunction reject(promise, reason) {\n if (promise._state === PENDING) {\n promise._state = SETTLED;\n promise._data = reason;\n asyncCall(publishRejection, promise);\n }\n}\n\nfunction publish(promise) {\n promise._then = promise._then.forEach(invokeCallback);\n}\n\nfunction publishFulfillment(promise) {\n promise._state = FULFILLED;\n publish(promise);\n}\n\nfunction publishRejection(promise) {\n promise._state = REJECTED;\n publish(promise);\n\n if (!promise._handled && isNode) {\n global.process.emit('unhandledRejection', promise._data, promise);\n }\n}\n\nfunction notifyRejectionHandled(promise) {\n global.process.emit('rejectionHandled', promise);\n}\n/**\n * @class\n */\n\n\nfunction P(resolver) {\n if (typeof resolver !== 'function') {\n throw new TypeError('Promise resolver ' + resolver + ' is not a function');\n }\n\n if (this instanceof P === false) {\n throw new TypeError('Failed to construct \\'Promise\\': Please use the \\'new\\' operator, this object constructor cannot be called as a function.');\n }\n\n this._then = [];\n invokeResolver(resolver, this);\n}\n\nP.prototype = {\n constructor: P,\n _state: PENDING,\n _then: null,\n _data: undefined,\n _handled: false,\n then: function then(onFulfillment, onRejection) {\n var subscriber = {\n owner: this,\n then: new this.constructor(NOOP),\n fulfilled: onFulfillment,\n rejected: onRejection\n };\n\n if ((onRejection || onFulfillment) && !this._handled) {\n this._handled = true;\n\n if (this._state === REJECTED && isNode) {\n asyncCall(notifyRejectionHandled, this);\n }\n }\n\n if (this._state === FULFILLED || this._state === REJECTED) {\n // already resolved, call callback async\n asyncCall(invokeCallback, subscriber);\n } else {\n // subscribe\n this._then.push(subscriber);\n }\n\n return subscriber.then;\n },\n catch: function _catch(onRejection) {\n return this.then(null, onRejection);\n }\n};\n\nP.all = function (promises) {\n if (!Array.isArray(promises)) {\n throw new TypeError('You must pass an array to Promise.all().');\n }\n\n return new P(function (resolve, reject) {\n var results = [];\n var remaining = 0;\n\n function resolver(index) {\n remaining++;\n return function (value) {\n results[index] = value;\n\n if (! --remaining) {\n resolve(results);\n }\n };\n }\n\n for (var i = 0, promise; i < promises.length; i++) {\n promise = promises[i];\n\n if (promise && typeof promise.then === 'function') {\n promise.then(resolver(i), reject);\n } else {\n results[i] = promise;\n }\n }\n\n if (!remaining) {\n resolve(results);\n }\n });\n};\n\nP.race = function (promises) {\n if (!Array.isArray(promises)) {\n throw new TypeError('You must pass an array to Promise.race().');\n }\n\n return new P(function (resolve, reject) {\n for (var i = 0, promise; i < promises.length; i++) {\n promise = promises[i];\n\n if (promise && typeof promise.then === 'function') {\n promise.then(resolve, reject);\n } else {\n resolve(promise);\n }\n }\n });\n};\n\nP.resolve = function (value) {\n if (value && _typeof(value) === 'object' && value.constructor === P) {\n return value;\n }\n\n return new P(function (resolve) {\n resolve(value);\n });\n};\n\nP.reject = function (reason) {\n return new P(function (resolve, reject) {\n reject(reason);\n });\n};\n\nvar picked = typeof Promise === 'function' ? Promise : P;\nvar d = UNITS_IN_GRID;\nvar meaninglessTransform = {\n size: 16,\n x: 0,\n y: 0,\n rotate: 0,\n flipX: false,\n flipY: false\n};\n\nfunction isReserved(name) {\n return ~RESERVED_CLASSES.indexOf(name);\n}\n\nfunction insertCss(css) {\n if (!css || !IS_DOM) {\n return;\n }\n\n var style = DOCUMENT.createElement('style');\n style.setAttribute('type', 'text/css');\n style.innerHTML = css;\n var headChildren = DOCUMENT.head.childNodes;\n var beforeChild = null;\n\n for (var i = headChildren.length - 1; i > -1; i--) {\n var child = headChildren[i];\n var tagName = (child.tagName || '').toUpperCase();\n\n if (['STYLE', 'LINK'].indexOf(tagName) > -1) {\n beforeChild = child;\n }\n }\n\n DOCUMENT.head.insertBefore(style, beforeChild);\n return css;\n}\n\nvar idPool = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';\n\nfunction nextUniqueId() {\n var size = 12;\n var id = '';\n\n while (size-- > 0) {\n id += idPool[Math.random() * 62 | 0];\n }\n\n return id;\n}\n\nfunction toArray(obj) {\n var array = [];\n\n for (var i = (obj || []).length >>> 0; i--;) {\n array[i] = obj[i];\n }\n\n return array;\n}\n\nfunction classArray(node) {\n if (node.classList) {\n return toArray(node.classList);\n } else {\n return (node.getAttribute('class') || '').split(' ').filter(function (i) {\n return i;\n });\n }\n}\n\nfunction getIconName(familyPrefix, cls) {\n var parts = cls.split('-');\n var prefix = parts[0];\n var iconName = parts.slice(1).join('-');\n\n if (prefix === familyPrefix && iconName !== '' && !isReserved(iconName)) {\n return iconName;\n } else {\n return null;\n }\n}\n\nfunction htmlEscape(str) {\n return \"\".concat(str).replace(/&/g, '&').replace(/\"/g, '"').replace(/'/g, ''').replace(//g, '>');\n}\n\nfunction joinAttributes(attributes) {\n return Object.keys(attributes || {}).reduce(function (acc, attributeName) {\n return acc + \"\".concat(attributeName, \"=\\\"\").concat(htmlEscape(attributes[attributeName]), \"\\\" \");\n }, '').trim();\n}\n\nfunction joinStyles(styles) {\n return Object.keys(styles || {}).reduce(function (acc, styleName) {\n return acc + \"\".concat(styleName, \": \").concat(styles[styleName], \";\");\n }, '');\n}\n\nfunction transformIsMeaningful(transform) {\n return transform.size !== meaninglessTransform.size || transform.x !== meaninglessTransform.x || transform.y !== meaninglessTransform.y || transform.rotate !== meaninglessTransform.rotate || transform.flipX || transform.flipY;\n}\n\nfunction transformForSvg(_ref) {\n var transform = _ref.transform,\n containerWidth = _ref.containerWidth,\n iconWidth = _ref.iconWidth;\n var outer = {\n transform: \"translate(\".concat(containerWidth / 2, \" 256)\")\n };\n var innerTranslate = \"translate(\".concat(transform.x * 32, \", \").concat(transform.y * 32, \") \");\n var innerScale = \"scale(\".concat(transform.size / 16 * (transform.flipX ? -1 : 1), \", \").concat(transform.size / 16 * (transform.flipY ? -1 : 1), \") \");\n var innerRotate = \"rotate(\".concat(transform.rotate, \" 0 0)\");\n var inner = {\n transform: \"\".concat(innerTranslate, \" \").concat(innerScale, \" \").concat(innerRotate)\n };\n var path = {\n transform: \"translate(\".concat(iconWidth / 2 * -1, \" -256)\")\n };\n return {\n outer: outer,\n inner: inner,\n path: path\n };\n}\n\nfunction transformForCss(_ref2) {\n var transform = _ref2.transform,\n _ref2$width = _ref2.width,\n width = _ref2$width === void 0 ? UNITS_IN_GRID : _ref2$width,\n _ref2$height = _ref2.height,\n height = _ref2$height === void 0 ? UNITS_IN_GRID : _ref2$height,\n _ref2$startCentered = _ref2.startCentered,\n startCentered = _ref2$startCentered === void 0 ? false : _ref2$startCentered;\n var val = '';\n\n if (startCentered && IS_IE) {\n val += \"translate(\".concat(transform.x / d - width / 2, \"em, \").concat(transform.y / d - height / 2, \"em) \");\n } else if (startCentered) {\n val += \"translate(calc(-50% + \".concat(transform.x / d, \"em), calc(-50% + \").concat(transform.y / d, \"em)) \");\n } else {\n val += \"translate(\".concat(transform.x / d, \"em, \").concat(transform.y / d, \"em) \");\n }\n\n val += \"scale(\".concat(transform.size / d * (transform.flipX ? -1 : 1), \", \").concat(transform.size / d * (transform.flipY ? -1 : 1), \") \");\n val += \"rotate(\".concat(transform.rotate, \"deg) \");\n return val;\n}\n\nvar ALL_SPACE = {\n x: 0,\n y: 0,\n width: '100%',\n height: '100%'\n};\n\nfunction fillBlack(abstract) {\n var force = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\n if (abstract.attributes && (abstract.attributes.fill || force)) {\n abstract.attributes.fill = 'black';\n }\n\n return abstract;\n}\n\nfunction deGroup(abstract) {\n if (abstract.tag === 'g') {\n return abstract.children;\n } else {\n return [abstract];\n }\n}\n\nfunction makeIconMasking(_ref) {\n var children = _ref.children,\n attributes = _ref.attributes,\n main = _ref.main,\n mask = _ref.mask,\n explicitMaskId = _ref.maskId,\n transform = _ref.transform;\n var mainWidth = main.width,\n mainPath = main.icon;\n var maskWidth = mask.width,\n maskPath = mask.icon;\n var trans = transformForSvg({\n transform: transform,\n containerWidth: maskWidth,\n iconWidth: mainWidth\n });\n var maskRect = {\n tag: 'rect',\n attributes: _objectSpread({}, ALL_SPACE, {\n fill: 'white'\n })\n };\n var maskInnerGroupChildrenMixin = mainPath.children ? {\n children: mainPath.children.map(fillBlack)\n } : {};\n var maskInnerGroup = {\n tag: 'g',\n attributes: _objectSpread({}, trans.inner),\n children: [fillBlack(_objectSpread({\n tag: mainPath.tag,\n attributes: _objectSpread({}, mainPath.attributes, trans.path)\n }, maskInnerGroupChildrenMixin))]\n };\n var maskOuterGroup = {\n tag: 'g',\n attributes: _objectSpread({}, trans.outer),\n children: [maskInnerGroup]\n };\n var maskId = \"mask-\".concat(explicitMaskId || nextUniqueId());\n var clipId = \"clip-\".concat(explicitMaskId || nextUniqueId());\n var maskTag = {\n tag: 'mask',\n attributes: _objectSpread({}, ALL_SPACE, {\n id: maskId,\n maskUnits: 'userSpaceOnUse',\n maskContentUnits: 'userSpaceOnUse'\n }),\n children: [maskRect, maskOuterGroup]\n };\n var defs = {\n tag: 'defs',\n children: [{\n tag: 'clipPath',\n attributes: {\n id: clipId\n },\n children: deGroup(maskPath)\n }, maskTag]\n };\n children.push(defs, {\n tag: 'rect',\n attributes: _objectSpread({\n fill: 'currentColor',\n 'clip-path': \"url(#\".concat(clipId, \")\"),\n mask: \"url(#\".concat(maskId, \")\")\n }, ALL_SPACE)\n });\n return {\n children: children,\n attributes: attributes\n };\n}\n\nfunction makeIconStandard(_ref) {\n var children = _ref.children,\n attributes = _ref.attributes,\n main = _ref.main,\n transform = _ref.transform,\n styles = _ref.styles;\n var styleString = joinStyles(styles);\n\n if (styleString.length > 0) {\n attributes['style'] = styleString;\n }\n\n if (transformIsMeaningful(transform)) {\n var trans = transformForSvg({\n transform: transform,\n containerWidth: main.width,\n iconWidth: main.width\n });\n children.push({\n tag: 'g',\n attributes: _objectSpread({}, trans.outer),\n children: [{\n tag: 'g',\n attributes: _objectSpread({}, trans.inner),\n children: [{\n tag: main.icon.tag,\n children: main.icon.children,\n attributes: _objectSpread({}, main.icon.attributes, trans.path)\n }]\n }]\n });\n } else {\n children.push(main.icon);\n }\n\n return {\n children: children,\n attributes: attributes\n };\n}\n\nfunction asIcon(_ref) {\n var children = _ref.children,\n main = _ref.main,\n mask = _ref.mask,\n attributes = _ref.attributes,\n styles = _ref.styles,\n transform = _ref.transform;\n\n if (transformIsMeaningful(transform) && main.found && !mask.found) {\n var width = main.width,\n height = main.height;\n var offset = {\n x: width / height / 2,\n y: 0.5\n };\n attributes['style'] = joinStyles(_objectSpread({}, styles, {\n 'transform-origin': \"\".concat(offset.x + transform.x / 16, \"em \").concat(offset.y + transform.y / 16, \"em\")\n }));\n }\n\n return [{\n tag: 'svg',\n attributes: attributes,\n children: children\n }];\n}\n\nfunction asSymbol(_ref) {\n var prefix = _ref.prefix,\n iconName = _ref.iconName,\n children = _ref.children,\n attributes = _ref.attributes,\n symbol = _ref.symbol;\n var id = symbol === true ? \"\".concat(prefix, \"-\").concat(config.familyPrefix, \"-\").concat(iconName) : symbol;\n return [{\n tag: 'svg',\n attributes: {\n style: 'display: none;'\n },\n children: [{\n tag: 'symbol',\n attributes: _objectSpread({}, attributes, {\n id: id\n }),\n children: children\n }]\n }];\n}\n\nfunction makeInlineSvgAbstract(params) {\n var _params$icons = params.icons,\n main = _params$icons.main,\n mask = _params$icons.mask,\n prefix = params.prefix,\n iconName = params.iconName,\n transform = params.transform,\n symbol = params.symbol,\n title = params.title,\n maskId = params.maskId,\n titleId = params.titleId,\n extra = params.extra,\n _params$watchable = params.watchable,\n watchable = _params$watchable === void 0 ? false : _params$watchable;\n\n var _ref = mask.found ? mask : main,\n width = _ref.width,\n height = _ref.height;\n\n var widthClass = \"fa-w-\".concat(Math.ceil(width / height * 16));\n var attrClass = [config.replacementClass, iconName ? \"\".concat(config.familyPrefix, \"-\").concat(iconName) : '', widthClass].filter(function (c) {\n return extra.classes.indexOf(c) === -1;\n }).concat(extra.classes).join(' ');\n var content = {\n children: [],\n attributes: _objectSpread({}, extra.attributes, {\n 'data-prefix': prefix,\n 'data-icon': iconName,\n 'class': attrClass,\n 'role': extra.attributes.role || 'img',\n 'xmlns': 'http://www.w3.org/2000/svg',\n 'viewBox': \"0 0 \".concat(width, \" \").concat(height)\n })\n };\n\n if (watchable) {\n content.attributes[DATA_FA_I2SVG] = '';\n }\n\n if (title) content.children.push({\n tag: 'title',\n attributes: {\n id: content.attributes['aria-labelledby'] || \"title-\".concat(titleId || nextUniqueId())\n },\n children: [title]\n });\n\n var args = _objectSpread({}, content, {\n prefix: prefix,\n iconName: iconName,\n main: main,\n mask: mask,\n maskId: maskId,\n transform: transform,\n symbol: symbol,\n styles: extra.styles\n });\n\n var _ref2 = mask.found && main.found ? makeIconMasking(args) : makeIconStandard(args),\n children = _ref2.children,\n attributes = _ref2.attributes;\n\n args.children = children;\n args.attributes = attributes;\n\n if (symbol) {\n return asSymbol(args);\n } else {\n return asIcon(args);\n }\n}\n\nfunction makeLayersTextAbstract(params) {\n var content = params.content,\n width = params.width,\n height = params.height,\n transform = params.transform,\n title = params.title,\n extra = params.extra,\n _params$watchable2 = params.watchable,\n watchable = _params$watchable2 === void 0 ? false : _params$watchable2;\n\n var attributes = _objectSpread({}, extra.attributes, title ? {\n 'title': title\n } : {}, {\n 'class': extra.classes.join(' ')\n });\n\n if (watchable) {\n attributes[DATA_FA_I2SVG] = '';\n }\n\n var styles = _objectSpread({}, extra.styles);\n\n if (transformIsMeaningful(transform)) {\n styles['transform'] = transformForCss({\n transform: transform,\n startCentered: true,\n width: width,\n height: height\n });\n styles['-webkit-transform'] = styles['transform'];\n }\n\n var styleString = joinStyles(styles);\n\n if (styleString.length > 0) {\n attributes['style'] = styleString;\n }\n\n var val = [];\n val.push({\n tag: 'span',\n attributes: attributes,\n children: [content]\n });\n\n if (title) {\n val.push({\n tag: 'span',\n attributes: {\n class: 'sr-only'\n },\n children: [title]\n });\n }\n\n return val;\n}\n\nfunction makeLayersCounterAbstract(params) {\n var content = params.content,\n title = params.title,\n extra = params.extra;\n\n var attributes = _objectSpread({}, extra.attributes, title ? {\n 'title': title\n } : {}, {\n 'class': extra.classes.join(' ')\n });\n\n var styleString = joinStyles(extra.styles);\n\n if (styleString.length > 0) {\n attributes['style'] = styleString;\n }\n\n var val = [];\n val.push({\n tag: 'span',\n attributes: attributes,\n children: [content]\n });\n\n if (title) {\n val.push({\n tag: 'span',\n attributes: {\n class: 'sr-only'\n },\n children: [title]\n });\n }\n\n return val;\n}\n\nvar noop$1 = function noop() {};\n\nvar p = config.measurePerformance && PERFORMANCE && PERFORMANCE.mark && PERFORMANCE.measure ? PERFORMANCE : {\n mark: noop$1,\n measure: noop$1\n};\nvar preamble = \"FA \\\"5.13.0\\\"\";\n\nvar begin = function begin(name) {\n p.mark(\"\".concat(preamble, \" \").concat(name, \" begins\"));\n return function () {\n return end(name);\n };\n};\n\nvar end = function end(name) {\n p.mark(\"\".concat(preamble, \" \").concat(name, \" ends\"));\n p.measure(\"\".concat(preamble, \" \").concat(name), \"\".concat(preamble, \" \").concat(name, \" begins\"), \"\".concat(preamble, \" \").concat(name, \" ends\"));\n};\n\nvar perf = {\n begin: begin,\n end: end\n};\n/**\n * Internal helper to bind a function known to have 4 arguments\n * to a given context.\n */\n\nvar bindInternal4 = function bindInternal4(func, thisContext) {\n return function (a, b, c, d) {\n return func.call(thisContext, a, b, c, d);\n };\n};\n/**\n * # Reduce\n *\n * A fast object `.reduce()` implementation.\n *\n * @param {Object} subject The object to reduce over.\n * @param {Function} fn The reducer function.\n * @param {mixed} initialValue The initial value for the reducer, defaults to subject[0].\n * @param {Object} thisContext The context for the reducer.\n * @return {mixed} The final result.\n */\n\n\nvar reduce = function fastReduceObject(subject, fn, initialValue, thisContext) {\n var keys = Object.keys(subject),\n length = keys.length,\n iterator = thisContext !== undefined ? bindInternal4(fn, thisContext) : fn,\n i,\n key,\n result;\n\n if (initialValue === undefined) {\n i = 1;\n result = subject[keys[0]];\n } else {\n i = 0;\n result = initialValue;\n }\n\n for (; i < length; i++) {\n key = keys[i];\n result = iterator(result, subject[key], key, subject);\n }\n\n return result;\n};\n\nfunction toHex(unicode) {\n var result = '';\n\n for (var i = 0; i < unicode.length; i++) {\n var hex = unicode.charCodeAt(i).toString(16);\n result += ('000' + hex).slice(-4);\n }\n\n return result;\n}\n\nfunction defineIcons(prefix, icons) {\n var params = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var _params$skipHooks = params.skipHooks,\n skipHooks = _params$skipHooks === void 0 ? false : _params$skipHooks;\n var normalized = Object.keys(icons).reduce(function (acc, iconName) {\n var icon = icons[iconName];\n var expanded = !!icon.icon;\n\n if (expanded) {\n acc[icon.iconName] = icon.icon;\n } else {\n acc[iconName] = icon;\n }\n\n return acc;\n }, {});\n\n if (typeof namespace.hooks.addPack === 'function' && !skipHooks) {\n namespace.hooks.addPack(prefix, normalized);\n } else {\n namespace.styles[prefix] = _objectSpread({}, namespace.styles[prefix] || {}, normalized);\n }\n /**\n * Font Awesome 4 used the prefix of `fa` for all icons. With the introduction\n * of new styles we needed to differentiate between them. Prefix `fa` is now an alias\n * for `fas` so we'll easy the upgrade process for our users by automatically defining\n * this as well.\n */\n\n\n if (prefix === 'fas') {\n defineIcons('fa', icons);\n }\n}\n\nvar styles = namespace.styles,\n shims = namespace.shims;\nvar _byUnicode = {};\nvar _byLigature = {};\nvar _byOldName = {};\n\nvar build = function build() {\n var lookup = function lookup(reducer) {\n return reduce(styles, function (o, style, prefix) {\n o[prefix] = reduce(style, reducer, {});\n return o;\n }, {});\n };\n\n _byUnicode = lookup(function (acc, icon, iconName) {\n if (icon[3]) {\n acc[icon[3]] = iconName;\n }\n\n return acc;\n });\n _byLigature = lookup(function (acc, icon, iconName) {\n var ligatures = icon[2];\n acc[iconName] = iconName;\n ligatures.forEach(function (ligature) {\n acc[ligature] = iconName;\n });\n return acc;\n });\n var hasRegular = ('far' in styles);\n _byOldName = reduce(shims, function (acc, shim) {\n var oldName = shim[0];\n var prefix = shim[1];\n var iconName = shim[2];\n\n if (prefix === 'far' && !hasRegular) {\n prefix = 'fas';\n }\n\n acc[oldName] = {\n prefix: prefix,\n iconName: iconName\n };\n return acc;\n }, {});\n};\n\nbuild();\n\nfunction byUnicode(prefix, unicode) {\n return (_byUnicode[prefix] || {})[unicode];\n}\n\nfunction byLigature(prefix, ligature) {\n return (_byLigature[prefix] || {})[ligature];\n}\n\nfunction byOldName(name) {\n return _byOldName[name] || {\n prefix: null,\n iconName: null\n };\n}\n\nvar styles$1 = namespace.styles;\n\nvar emptyCanonicalIcon = function emptyCanonicalIcon() {\n return {\n prefix: null,\n iconName: null,\n rest: []\n };\n};\n\nfunction getCanonicalIcon(values) {\n return values.reduce(function (acc, cls) {\n var iconName = getIconName(config.familyPrefix, cls);\n\n if (styles$1[cls]) {\n acc.prefix = cls;\n } else if (config.autoFetchSvg && ['fas', 'far', 'fal', 'fad', 'fab', 'fa'].indexOf(cls) > -1) {\n acc.prefix = cls;\n } else if (iconName) {\n var shim = acc.prefix === 'fa' ? byOldName(iconName) : {};\n acc.iconName = shim.iconName || iconName;\n acc.prefix = shim.prefix || acc.prefix;\n } else if (cls !== config.replacementClass && cls.indexOf('fa-w-') !== 0) {\n acc.rest.push(cls);\n }\n\n return acc;\n }, emptyCanonicalIcon());\n}\n\nfunction iconFromMapping(mapping, prefix, iconName) {\n if (mapping && mapping[prefix] && mapping[prefix][iconName]) {\n return {\n prefix: prefix,\n iconName: iconName,\n icon: mapping[prefix][iconName]\n };\n }\n}\n\nfunction toHtml(abstractNodes) {\n var tag = abstractNodes.tag,\n _abstractNodes$attrib = abstractNodes.attributes,\n attributes = _abstractNodes$attrib === void 0 ? {} : _abstractNodes$attrib,\n _abstractNodes$childr = abstractNodes.children,\n children = _abstractNodes$childr === void 0 ? [] : _abstractNodes$childr;\n\n if (typeof abstractNodes === 'string') {\n return htmlEscape(abstractNodes);\n } else {\n return \"<\".concat(tag, \" \").concat(joinAttributes(attributes), \">\").concat(children.map(toHtml).join(''), \"\").concat(tag, \">\");\n }\n}\n\nvar noop$2 = function noop() {};\n\nfunction isWatched(node) {\n var i2svg = node.getAttribute ? node.getAttribute(DATA_FA_I2SVG) : null;\n return typeof i2svg === 'string';\n}\n\nfunction getMutator() {\n if (config.autoReplaceSvg === true) {\n return mutators.replace;\n }\n\n var mutator = mutators[config.autoReplaceSvg];\n return mutator || mutators.replace;\n}\n\nvar mutators = {\n replace: function replace(mutation) {\n var node = mutation[0];\n var abstract = mutation[1];\n var newOuterHTML = abstract.map(function (a) {\n return toHtml(a);\n }).join('\\n');\n\n if (node.parentNode && node.outerHTML) {\n node.outerHTML = newOuterHTML + (config.keepOriginalSource && node.tagName.toLowerCase() !== 'svg' ? \"\") : '');\n } else if (node.parentNode) {\n var newNode = document.createElement('span');\n node.parentNode.replaceChild(newNode, node);\n newNode.outerHTML = newOuterHTML;\n }\n },\n nest: function nest(mutation) {\n var node = mutation[0];\n var abstract = mutation[1]; // If we already have a replaced node we do not want to continue nesting within it.\n // Short-circuit to the standard replacement\n\n if (~classArray(node).indexOf(config.replacementClass)) {\n return mutators.replace(mutation);\n }\n\n var forSvg = new RegExp(\"\".concat(config.familyPrefix, \"-.*\"));\n delete abstract[0].attributes.style;\n delete abstract[0].attributes.id;\n var splitClasses = abstract[0].attributes.class.split(' ').reduce(function (acc, cls) {\n if (cls === config.replacementClass || cls.match(forSvg)) {\n acc.toSvg.push(cls);\n } else {\n acc.toNode.push(cls);\n }\n\n return acc;\n }, {\n toNode: [],\n toSvg: []\n });\n abstract[0].attributes.class = splitClasses.toSvg.join(' ');\n var newInnerHTML = abstract.map(function (a) {\n return toHtml(a);\n }).join('\\n');\n node.setAttribute('class', splitClasses.toNode.join(' '));\n node.setAttribute(DATA_FA_I2SVG, '');\n node.innerHTML = newInnerHTML;\n }\n};\n\nfunction performOperationSync(op) {\n op();\n}\n\nfunction perform(mutations, callback) {\n var callbackFunction = typeof callback === 'function' ? callback : noop$2;\n\n if (mutations.length === 0) {\n callbackFunction();\n } else {\n var frame = performOperationSync;\n\n if (config.mutateApproach === MUTATION_APPROACH_ASYNC) {\n frame = WINDOW.requestAnimationFrame || performOperationSync;\n }\n\n frame(function () {\n var mutator = getMutator();\n var mark = perf.begin('mutate');\n mutations.map(mutator);\n mark();\n callbackFunction();\n });\n }\n}\n\nvar disabled = false;\n\nfunction disableObservation() {\n disabled = true;\n}\n\nfunction enableObservation() {\n disabled = false;\n}\n\nvar mo = null;\n\nfunction observe(options) {\n if (!MUTATION_OBSERVER) {\n return;\n }\n\n if (!config.observeMutations) {\n return;\n }\n\n var treeCallback = options.treeCallback,\n nodeCallback = options.nodeCallback,\n pseudoElementsCallback = options.pseudoElementsCallback,\n _options$observeMutat = options.observeMutationsRoot,\n observeMutationsRoot = _options$observeMutat === void 0 ? DOCUMENT : _options$observeMutat;\n mo = new MUTATION_OBSERVER(function (objects) {\n if (disabled) return;\n toArray(objects).forEach(function (mutationRecord) {\n if (mutationRecord.type === 'childList' && mutationRecord.addedNodes.length > 0 && !isWatched(mutationRecord.addedNodes[0])) {\n if (config.searchPseudoElements) {\n pseudoElementsCallback(mutationRecord.target);\n }\n\n treeCallback(mutationRecord.target);\n }\n\n if (mutationRecord.type === 'attributes' && mutationRecord.target.parentNode && config.searchPseudoElements) {\n pseudoElementsCallback(mutationRecord.target.parentNode);\n }\n\n if (mutationRecord.type === 'attributes' && isWatched(mutationRecord.target) && ~ATTRIBUTES_WATCHED_FOR_MUTATION.indexOf(mutationRecord.attributeName)) {\n if (mutationRecord.attributeName === 'class') {\n var _getCanonicalIcon = getCanonicalIcon(classArray(mutationRecord.target)),\n prefix = _getCanonicalIcon.prefix,\n iconName = _getCanonicalIcon.iconName;\n\n if (prefix) mutationRecord.target.setAttribute('data-prefix', prefix);\n if (iconName) mutationRecord.target.setAttribute('data-icon', iconName);\n } else {\n nodeCallback(mutationRecord.target);\n }\n }\n });\n });\n if (!IS_DOM) return;\n mo.observe(observeMutationsRoot, {\n childList: true,\n attributes: true,\n characterData: true,\n subtree: true\n });\n}\n\nfunction disconnect() {\n if (!mo) return;\n mo.disconnect();\n}\n\nfunction styleParser(node) {\n var style = node.getAttribute('style');\n var val = [];\n\n if (style) {\n val = style.split(';').reduce(function (acc, style) {\n var styles = style.split(':');\n var prop = styles[0];\n var value = styles.slice(1);\n\n if (prop && value.length > 0) {\n acc[prop] = value.join(':').trim();\n }\n\n return acc;\n }, {});\n }\n\n return val;\n}\n\nfunction classParser(node) {\n var existingPrefix = node.getAttribute('data-prefix');\n var existingIconName = node.getAttribute('data-icon');\n var innerText = node.innerText !== undefined ? node.innerText.trim() : '';\n var val = getCanonicalIcon(classArray(node));\n\n if (existingPrefix && existingIconName) {\n val.prefix = existingPrefix;\n val.iconName = existingIconName;\n }\n\n if (val.prefix && innerText.length > 1) {\n val.iconName = byLigature(val.prefix, node.innerText);\n } else if (val.prefix && innerText.length === 1) {\n val.iconName = byUnicode(val.prefix, toHex(node.innerText));\n }\n\n return val;\n}\n\nvar parseTransformString = function parseTransformString(transformString) {\n var transform = {\n size: 16,\n x: 0,\n y: 0,\n flipX: false,\n flipY: false,\n rotate: 0\n };\n\n if (!transformString) {\n return transform;\n } else {\n return transformString.toLowerCase().split(' ').reduce(function (acc, n) {\n var parts = n.toLowerCase().split('-');\n var first = parts[0];\n var rest = parts.slice(1).join('-');\n\n if (first && rest === 'h') {\n acc.flipX = true;\n return acc;\n }\n\n if (first && rest === 'v') {\n acc.flipY = true;\n return acc;\n }\n\n rest = parseFloat(rest);\n\n if (isNaN(rest)) {\n return acc;\n }\n\n switch (first) {\n case 'grow':\n acc.size = acc.size + rest;\n break;\n\n case 'shrink':\n acc.size = acc.size - rest;\n break;\n\n case 'left':\n acc.x = acc.x - rest;\n break;\n\n case 'right':\n acc.x = acc.x + rest;\n break;\n\n case 'up':\n acc.y = acc.y - rest;\n break;\n\n case 'down':\n acc.y = acc.y + rest;\n break;\n\n case 'rotate':\n acc.rotate = acc.rotate + rest;\n break;\n }\n\n return acc;\n }, transform);\n }\n};\n\nfunction transformParser(node) {\n return parseTransformString(node.getAttribute('data-fa-transform'));\n}\n\nfunction symbolParser(node) {\n var symbol = node.getAttribute('data-fa-symbol');\n return symbol === null ? false : symbol === '' ? true : symbol;\n}\n\nfunction attributesParser(node) {\n var extraAttributes = toArray(node.attributes).reduce(function (acc, attr) {\n if (acc.name !== 'class' && acc.name !== 'style') {\n acc[attr.name] = attr.value;\n }\n\n return acc;\n }, {});\n var title = node.getAttribute('title');\n var titleId = node.getAttribute('data-fa-title-id');\n\n if (config.autoA11y) {\n if (title) {\n extraAttributes['aria-labelledby'] = \"\".concat(config.replacementClass, \"-title-\").concat(titleId || nextUniqueId());\n } else {\n extraAttributes['aria-hidden'] = 'true';\n extraAttributes['focusable'] = 'false';\n }\n }\n\n return extraAttributes;\n}\n\nfunction maskParser(node) {\n var mask = node.getAttribute('data-fa-mask');\n\n if (!mask) {\n return emptyCanonicalIcon();\n } else {\n return getCanonicalIcon(mask.split(' ').map(function (i) {\n return i.trim();\n }));\n }\n}\n\nfunction blankMeta() {\n return {\n iconName: null,\n title: null,\n titleId: null,\n prefix: null,\n transform: meaninglessTransform,\n symbol: false,\n mask: null,\n maskId: null,\n extra: {\n classes: [],\n styles: {},\n attributes: {}\n }\n };\n}\n\nfunction parseMeta(node) {\n var _classParser = classParser(node),\n iconName = _classParser.iconName,\n prefix = _classParser.prefix,\n extraClasses = _classParser.rest;\n\n var extraStyles = styleParser(node);\n var transform = transformParser(node);\n var symbol = symbolParser(node);\n var extraAttributes = attributesParser(node);\n var mask = maskParser(node);\n return {\n iconName: iconName,\n title: node.getAttribute('title'),\n titleId: node.getAttribute('data-fa-title-id'),\n prefix: prefix,\n transform: transform,\n symbol: symbol,\n mask: mask,\n maskId: node.getAttribute('data-fa-mask-id'),\n extra: {\n classes: extraClasses,\n styles: extraStyles,\n attributes: extraAttributes\n }\n };\n}\n\nfunction MissingIcon(error) {\n this.name = 'MissingIcon';\n this.message = error || 'Icon unavailable';\n this.stack = new Error().stack;\n}\n\nMissingIcon.prototype = Object.create(Error.prototype);\nMissingIcon.prototype.constructor = MissingIcon;\nvar FILL = {\n fill: 'currentColor'\n};\nvar ANIMATION_BASE = {\n attributeType: 'XML',\n repeatCount: 'indefinite',\n dur: '2s'\n};\nvar RING = {\n tag: 'path',\n attributes: _objectSpread({}, FILL, {\n d: 'M156.5,447.7l-12.6,29.5c-18.7-9.5-35.9-21.2-51.5-34.9l22.7-22.7C127.6,430.5,141.5,440,156.5,447.7z M40.6,272H8.5 c1.4,21.2,5.4,41.7,11.7,61.1L50,321.2C45.1,305.5,41.8,289,40.6,272z M40.6,240c1.4-18.8,5.2-37,11.1-54.1l-29.5-12.6 C14.7,194.3,10,216.7,8.5,240H40.6z M64.3,156.5c7.8-14.9,17.2-28.8,28.1-41.5L69.7,92.3c-13.7,15.6-25.5,32.8-34.9,51.5 L64.3,156.5z M397,419.6c-13.9,12-29.4,22.3-46.1,30.4l11.9,29.8c20.7-9.9,39.8-22.6,56.9-37.6L397,419.6z M115,92.4 c13.9-12,29.4-22.3,46.1-30.4l-11.9-29.8c-20.7,9.9-39.8,22.6-56.8,37.6L115,92.4z M447.7,355.5c-7.8,14.9-17.2,28.8-28.1,41.5 l22.7,22.7c13.7-15.6,25.5-32.9,34.9-51.5L447.7,355.5z M471.4,272c-1.4,18.8-5.2,37-11.1,54.1l29.5,12.6 c7.5-21.1,12.2-43.5,13.6-66.8H471.4z M321.2,462c-15.7,5-32.2,8.2-49.2,9.4v32.1c21.2-1.4,41.7-5.4,61.1-11.7L321.2,462z M240,471.4c-18.8-1.4-37-5.2-54.1-11.1l-12.6,29.5c21.1,7.5,43.5,12.2,66.8,13.6V471.4z M462,190.8c5,15.7,8.2,32.2,9.4,49.2h32.1 c-1.4-21.2-5.4-41.7-11.7-61.1L462,190.8z M92.4,397c-12-13.9-22.3-29.4-30.4-46.1l-29.8,11.9c9.9,20.7,22.6,39.8,37.6,56.9 L92.4,397z M272,40.6c18.8,1.4,36.9,5.2,54.1,11.1l12.6-29.5C317.7,14.7,295.3,10,272,8.5V40.6z M190.8,50 c15.7-5,32.2-8.2,49.2-9.4V8.5c-21.2,1.4-41.7,5.4-61.1,11.7L190.8,50z M442.3,92.3L419.6,115c12,13.9,22.3,29.4,30.5,46.1 l29.8-11.9C470,128.5,457.3,109.4,442.3,92.3z M397,92.4l22.7-22.7c-15.6-13.7-32.8-25.5-51.5-34.9l-12.6,29.5 C370.4,72.1,384.4,81.5,397,92.4z'\n })\n};\n\nvar OPACITY_ANIMATE = _objectSpread({}, ANIMATION_BASE, {\n attributeName: 'opacity'\n});\n\nvar DOT = {\n tag: 'circle',\n attributes: _objectSpread({}, FILL, {\n cx: '256',\n cy: '364',\n r: '28'\n }),\n children: [{\n tag: 'animate',\n attributes: _objectSpread({}, ANIMATION_BASE, {\n attributeName: 'r',\n values: '28;14;28;28;14;28;'\n })\n }, {\n tag: 'animate',\n attributes: _objectSpread({}, OPACITY_ANIMATE, {\n values: '1;0;1;1;0;1;'\n })\n }]\n};\nvar QUESTION = {\n tag: 'path',\n attributes: _objectSpread({}, FILL, {\n opacity: '1',\n d: 'M263.7,312h-16c-6.6,0-12-5.4-12-12c0-71,77.4-63.9,77.4-107.8c0-20-17.8-40.2-57.4-40.2c-29.1,0-44.3,9.6-59.2,28.7 c-3.9,5-11.1,6-16.2,2.4l-13.1-9.2c-5.6-3.9-6.9-11.8-2.6-17.2c21.2-27.2,46.4-44.7,91.2-44.7c52.3,0,97.4,29.8,97.4,80.2 c0,67.6-77.4,63.5-77.4,107.8C275.7,306.6,270.3,312,263.7,312z'\n }),\n children: [{\n tag: 'animate',\n attributes: _objectSpread({}, OPACITY_ANIMATE, {\n values: '1;0;0;0;0;1;'\n })\n }]\n};\nvar EXCLAMATION = {\n tag: 'path',\n attributes: _objectSpread({}, FILL, {\n opacity: '0',\n d: 'M232.5,134.5l7,168c0.3,6.4,5.6,11.5,12,11.5h9c6.4,0,11.7-5.1,12-11.5l7-168c0.3-6.8-5.2-12.5-12-12.5h-23 C237.7,122,232.2,127.7,232.5,134.5z'\n }),\n children: [{\n tag: 'animate',\n attributes: _objectSpread({}, OPACITY_ANIMATE, {\n values: '0;0;1;1;0;0;'\n })\n }]\n};\nvar missing = {\n tag: 'g',\n children: [RING, DOT, QUESTION, EXCLAMATION]\n};\nvar styles$2 = namespace.styles;\n\nfunction asFoundIcon(icon) {\n var width = icon[0];\n var height = icon[1];\n\n var _icon$slice = icon.slice(4),\n _icon$slice2 = _slicedToArray(_icon$slice, 1),\n vectorData = _icon$slice2[0];\n\n var element = null;\n\n if (Array.isArray(vectorData)) {\n element = {\n tag: 'g',\n attributes: {\n class: \"\".concat(config.familyPrefix, \"-\").concat(DUOTONE_CLASSES.GROUP)\n },\n children: [{\n tag: 'path',\n attributes: {\n class: \"\".concat(config.familyPrefix, \"-\").concat(DUOTONE_CLASSES.SECONDARY),\n fill: 'currentColor',\n d: vectorData[0]\n }\n }, {\n tag: 'path',\n attributes: {\n class: \"\".concat(config.familyPrefix, \"-\").concat(DUOTONE_CLASSES.PRIMARY),\n fill: 'currentColor',\n d: vectorData[1]\n }\n }]\n };\n } else {\n element = {\n tag: 'path',\n attributes: {\n fill: 'currentColor',\n d: vectorData\n }\n };\n }\n\n return {\n found: true,\n width: width,\n height: height,\n icon: element\n };\n}\n\nfunction findIcon(iconName, prefix) {\n return new picked(function (resolve, reject) {\n var val = {\n found: false,\n width: 512,\n height: 512,\n icon: missing\n };\n\n if (iconName && prefix && styles$2[prefix] && styles$2[prefix][iconName]) {\n var icon = styles$2[prefix][iconName];\n return resolve(asFoundIcon(icon));\n }\n\n var headers = {};\n\n if (_typeof(WINDOW.FontAwesomeKitConfig) === 'object' && typeof window.FontAwesomeKitConfig.token === 'string') {\n headers['fa-kit-token'] = WINDOW.FontAwesomeKitConfig.token;\n }\n\n if (iconName && prefix && !config.showMissingIcons) {\n reject(new MissingIcon(\"Icon is missing for prefix \".concat(prefix, \" with icon name \").concat(iconName)));\n } else {\n resolve(val);\n }\n });\n}\n\nvar styles$3 = namespace.styles;\n\nfunction generateSvgReplacementMutation(node, nodeMeta) {\n var iconName = nodeMeta.iconName,\n title = nodeMeta.title,\n titleId = nodeMeta.titleId,\n prefix = nodeMeta.prefix,\n transform = nodeMeta.transform,\n symbol = nodeMeta.symbol,\n mask = nodeMeta.mask,\n maskId = nodeMeta.maskId,\n extra = nodeMeta.extra;\n return new picked(function (resolve, reject) {\n picked.all([findIcon(iconName, prefix), findIcon(mask.iconName, mask.prefix)]).then(function (_ref) {\n var _ref2 = _slicedToArray(_ref, 2),\n main = _ref2[0],\n mask = _ref2[1];\n\n resolve([node, makeInlineSvgAbstract({\n icons: {\n main: main,\n mask: mask\n },\n prefix: prefix,\n iconName: iconName,\n transform: transform,\n symbol: symbol,\n mask: mask,\n maskId: maskId,\n title: title,\n titleId: titleId,\n extra: extra,\n watchable: true\n })]);\n });\n });\n}\n\nfunction generateLayersText(node, nodeMeta) {\n var title = nodeMeta.title,\n transform = nodeMeta.transform,\n extra = nodeMeta.extra;\n var width = null;\n var height = null;\n\n if (IS_IE) {\n var computedFontSize = parseInt(getComputedStyle(node).fontSize, 10);\n var boundingClientRect = node.getBoundingClientRect();\n width = boundingClientRect.width / computedFontSize;\n height = boundingClientRect.height / computedFontSize;\n }\n\n if (config.autoA11y && !title) {\n extra.attributes['aria-hidden'] = 'true';\n }\n\n return picked.resolve([node, makeLayersTextAbstract({\n content: node.innerHTML,\n width: width,\n height: height,\n transform: transform,\n title: title,\n extra: extra,\n watchable: true\n })]);\n}\n\nfunction generateMutation(node) {\n var nodeMeta = parseMeta(node);\n\n if (~nodeMeta.extra.classes.indexOf(LAYERS_TEXT_CLASSNAME)) {\n return generateLayersText(node, nodeMeta);\n } else {\n return generateSvgReplacementMutation(node, nodeMeta);\n }\n}\n\nfunction onTree(root) {\n var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n if (!IS_DOM) return;\n var htmlClassList = DOCUMENT.documentElement.classList;\n\n var hclAdd = function hclAdd(suffix) {\n return htmlClassList.add(\"\".concat(HTML_CLASS_I2SVG_BASE_CLASS, \"-\").concat(suffix));\n };\n\n var hclRemove = function hclRemove(suffix) {\n return htmlClassList.remove(\"\".concat(HTML_CLASS_I2SVG_BASE_CLASS, \"-\").concat(suffix));\n };\n\n var prefixes = config.autoFetchSvg ? Object.keys(PREFIX_TO_STYLE) : Object.keys(styles$3);\n var prefixesDomQuery = [\".\".concat(LAYERS_TEXT_CLASSNAME, \":not([\").concat(DATA_FA_I2SVG, \"])\")].concat(prefixes.map(function (p) {\n return \".\".concat(p, \":not([\").concat(DATA_FA_I2SVG, \"])\");\n })).join(', ');\n\n if (prefixesDomQuery.length === 0) {\n return;\n }\n\n var candidates = [];\n\n try {\n candidates = toArray(root.querySelectorAll(prefixesDomQuery));\n } catch (e) {// noop\n }\n\n if (candidates.length > 0) {\n hclAdd('pending');\n hclRemove('complete');\n } else {\n return;\n }\n\n var mark = perf.begin('onTree');\n var mutations = candidates.reduce(function (acc, node) {\n try {\n var mutation = generateMutation(node);\n\n if (mutation) {\n acc.push(mutation);\n }\n } catch (e) {\n if (!PRODUCTION) {\n if (e instanceof MissingIcon) {\n console.error(e);\n }\n }\n }\n\n return acc;\n }, []);\n return new picked(function (resolve, reject) {\n picked.all(mutations).then(function (resolvedMutations) {\n perform(resolvedMutations, function () {\n hclAdd('active');\n hclAdd('complete');\n hclRemove('pending');\n if (typeof callback === 'function') callback();\n mark();\n resolve();\n });\n }).catch(function () {\n mark();\n reject();\n });\n });\n}\n\nfunction onNode(node) {\n var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n generateMutation(node).then(function (mutation) {\n if (mutation) {\n perform([mutation], callback);\n }\n });\n}\n\nfunction replaceForPosition(node, position) {\n var pendingAttribute = \"\".concat(DATA_FA_PSEUDO_ELEMENT_PENDING).concat(position.replace(':', '-'));\n return new picked(function (resolve, reject) {\n if (node.getAttribute(pendingAttribute) !== null) {\n // This node is already being processed\n return resolve();\n }\n\n var children = toArray(node.children);\n var alreadyProcessedPseudoElement = children.filter(function (c) {\n return c.getAttribute(DATA_FA_PSEUDO_ELEMENT) === position;\n })[0];\n var styles = WINDOW.getComputedStyle(node, position);\n var fontFamily = styles.getPropertyValue('font-family').match(FONT_FAMILY_PATTERN);\n var fontWeight = styles.getPropertyValue('font-weight');\n var content = styles.getPropertyValue('content');\n\n if (alreadyProcessedPseudoElement && !fontFamily) {\n // If we've already processed it but the current computed style does not result in a font-family,\n // that probably means that a class name that was previously present to make the icon has been\n // removed. So we now should delete the icon.\n node.removeChild(alreadyProcessedPseudoElement);\n return resolve();\n } else if (fontFamily && content !== 'none' && content !== '') {\n var prefix = ~['Solid', 'Regular', 'Light', 'Duotone', 'Brands'].indexOf(fontFamily[1]) ? STYLE_TO_PREFIX[fontFamily[1].toLowerCase()] : FONT_WEIGHT_TO_PREFIX[fontWeight];\n var hexValue = toHex(content.length === 3 ? content.substr(1, 1) : content);\n var iconName = byUnicode(prefix, hexValue);\n var iconIdentifier = iconName; // Only convert the pseudo element in this :before/:after position into an icon if we haven't\n // already done so with the same prefix and iconName\n\n if (iconName && (!alreadyProcessedPseudoElement || alreadyProcessedPseudoElement.getAttribute(DATA_PREFIX) !== prefix || alreadyProcessedPseudoElement.getAttribute(DATA_ICON) !== iconIdentifier)) {\n node.setAttribute(pendingAttribute, iconIdentifier);\n\n if (alreadyProcessedPseudoElement) {\n // Delete the old one, since we're replacing it with a new one\n node.removeChild(alreadyProcessedPseudoElement);\n }\n\n var meta = blankMeta();\n var extra = meta.extra;\n extra.attributes[DATA_FA_PSEUDO_ELEMENT] = position;\n findIcon(iconName, prefix).then(function (main) {\n var abstract = makeInlineSvgAbstract(_objectSpread({}, meta, {\n icons: {\n main: main,\n mask: emptyCanonicalIcon()\n },\n prefix: prefix,\n iconName: iconIdentifier,\n extra: extra,\n watchable: true\n }));\n var element = DOCUMENT.createElement('svg');\n\n if (position === ':before') {\n node.insertBefore(element, node.firstChild);\n } else {\n node.appendChild(element);\n }\n\n element.outerHTML = abstract.map(function (a) {\n return toHtml(a);\n }).join('\\n');\n node.removeAttribute(pendingAttribute);\n resolve();\n }).catch(reject);\n } else {\n resolve();\n }\n } else {\n resolve();\n }\n });\n}\n\nfunction replace(node) {\n return picked.all([replaceForPosition(node, ':before'), replaceForPosition(node, ':after')]);\n}\n\nfunction processable(node) {\n return node.parentNode !== document.head && !~TAGNAMES_TO_SKIP_FOR_PSEUDOELEMENTS.indexOf(node.tagName.toUpperCase()) && !node.getAttribute(DATA_FA_PSEUDO_ELEMENT) && (!node.parentNode || node.parentNode.tagName !== 'svg');\n}\n\nfunction searchPseudoElements(root) {\n if (!IS_DOM) return;\n return new picked(function (resolve, reject) {\n var operations = toArray(root.querySelectorAll('*')).filter(processable).map(replace);\n var end = perf.begin('searchPseudoElements');\n disableObservation();\n picked.all(operations).then(function () {\n end();\n enableObservation();\n resolve();\n }).catch(function () {\n end();\n enableObservation();\n reject();\n });\n });\n}\n\nvar baseStyles = \"svg:not(:root).svg-inline--fa {\\n overflow: visible;\\n}\\n\\n.svg-inline--fa {\\n display: inline-block;\\n font-size: inherit;\\n height: 1em;\\n overflow: visible;\\n vertical-align: -0.125em;\\n}\\n.svg-inline--fa.fa-lg {\\n vertical-align: -0.225em;\\n}\\n.svg-inline--fa.fa-w-1 {\\n width: 0.0625em;\\n}\\n.svg-inline--fa.fa-w-2 {\\n width: 0.125em;\\n}\\n.svg-inline--fa.fa-w-3 {\\n width: 0.1875em;\\n}\\n.svg-inline--fa.fa-w-4 {\\n width: 0.25em;\\n}\\n.svg-inline--fa.fa-w-5 {\\n width: 0.3125em;\\n}\\n.svg-inline--fa.fa-w-6 {\\n width: 0.375em;\\n}\\n.svg-inline--fa.fa-w-7 {\\n width: 0.4375em;\\n}\\n.svg-inline--fa.fa-w-8 {\\n width: 0.5em;\\n}\\n.svg-inline--fa.fa-w-9 {\\n width: 0.5625em;\\n}\\n.svg-inline--fa.fa-w-10 {\\n width: 0.625em;\\n}\\n.svg-inline--fa.fa-w-11 {\\n width: 0.6875em;\\n}\\n.svg-inline--fa.fa-w-12 {\\n width: 0.75em;\\n}\\n.svg-inline--fa.fa-w-13 {\\n width: 0.8125em;\\n}\\n.svg-inline--fa.fa-w-14 {\\n width: 0.875em;\\n}\\n.svg-inline--fa.fa-w-15 {\\n width: 0.9375em;\\n}\\n.svg-inline--fa.fa-w-16 {\\n width: 1em;\\n}\\n.svg-inline--fa.fa-w-17 {\\n width: 1.0625em;\\n}\\n.svg-inline--fa.fa-w-18 {\\n width: 1.125em;\\n}\\n.svg-inline--fa.fa-w-19 {\\n width: 1.1875em;\\n}\\n.svg-inline--fa.fa-w-20 {\\n width: 1.25em;\\n}\\n.svg-inline--fa.fa-pull-left {\\n margin-right: 0.3em;\\n width: auto;\\n}\\n.svg-inline--fa.fa-pull-right {\\n margin-left: 0.3em;\\n width: auto;\\n}\\n.svg-inline--fa.fa-border {\\n height: 1.5em;\\n}\\n.svg-inline--fa.fa-li {\\n width: 2em;\\n}\\n.svg-inline--fa.fa-fw {\\n width: 1.25em;\\n}\\n\\n.fa-layers svg.svg-inline--fa {\\n bottom: 0;\\n left: 0;\\n margin: auto;\\n position: absolute;\\n right: 0;\\n top: 0;\\n}\\n\\n.fa-layers {\\n display: inline-block;\\n height: 1em;\\n position: relative;\\n text-align: center;\\n vertical-align: -0.125em;\\n width: 1em;\\n}\\n.fa-layers svg.svg-inline--fa {\\n -webkit-transform-origin: center center;\\n transform-origin: center center;\\n}\\n\\n.fa-layers-counter, .fa-layers-text {\\n display: inline-block;\\n position: absolute;\\n text-align: center;\\n}\\n\\n.fa-layers-text {\\n left: 50%;\\n top: 50%;\\n -webkit-transform: translate(-50%, -50%);\\n transform: translate(-50%, -50%);\\n -webkit-transform-origin: center center;\\n transform-origin: center center;\\n}\\n\\n.fa-layers-counter {\\n background-color: #ff253a;\\n border-radius: 1em;\\n -webkit-box-sizing: border-box;\\n box-sizing: border-box;\\n color: #fff;\\n height: 1.5em;\\n line-height: 1;\\n max-width: 5em;\\n min-width: 1.5em;\\n overflow: hidden;\\n padding: 0.25em;\\n right: 0;\\n text-overflow: ellipsis;\\n top: 0;\\n -webkit-transform: scale(0.25);\\n transform: scale(0.25);\\n -webkit-transform-origin: top right;\\n transform-origin: top right;\\n}\\n\\n.fa-layers-bottom-right {\\n bottom: 0;\\n right: 0;\\n top: auto;\\n -webkit-transform: scale(0.25);\\n transform: scale(0.25);\\n -webkit-transform-origin: bottom right;\\n transform-origin: bottom right;\\n}\\n\\n.fa-layers-bottom-left {\\n bottom: 0;\\n left: 0;\\n right: auto;\\n top: auto;\\n -webkit-transform: scale(0.25);\\n transform: scale(0.25);\\n -webkit-transform-origin: bottom left;\\n transform-origin: bottom left;\\n}\\n\\n.fa-layers-top-right {\\n right: 0;\\n top: 0;\\n -webkit-transform: scale(0.25);\\n transform: scale(0.25);\\n -webkit-transform-origin: top right;\\n transform-origin: top right;\\n}\\n\\n.fa-layers-top-left {\\n left: 0;\\n right: auto;\\n top: 0;\\n -webkit-transform: scale(0.25);\\n transform: scale(0.25);\\n -webkit-transform-origin: top left;\\n transform-origin: top left;\\n}\\n\\n.fa-lg {\\n font-size: 1.3333333333em;\\n line-height: 0.75em;\\n vertical-align: -0.0667em;\\n}\\n\\n.fa-xs {\\n font-size: 0.75em;\\n}\\n\\n.fa-sm {\\n font-size: 0.875em;\\n}\\n\\n.fa-1x {\\n font-size: 1em;\\n}\\n\\n.fa-2x {\\n font-size: 2em;\\n}\\n\\n.fa-3x {\\n font-size: 3em;\\n}\\n\\n.fa-4x {\\n font-size: 4em;\\n}\\n\\n.fa-5x {\\n font-size: 5em;\\n}\\n\\n.fa-6x {\\n font-size: 6em;\\n}\\n\\n.fa-7x {\\n font-size: 7em;\\n}\\n\\n.fa-8x {\\n font-size: 8em;\\n}\\n\\n.fa-9x {\\n font-size: 9em;\\n}\\n\\n.fa-10x {\\n font-size: 10em;\\n}\\n\\n.fa-fw {\\n text-align: center;\\n width: 1.25em;\\n}\\n\\n.fa-ul {\\n list-style-type: none;\\n margin-left: 2.5em;\\n padding-left: 0;\\n}\\n.fa-ul > li {\\n position: relative;\\n}\\n\\n.fa-li {\\n left: -2em;\\n position: absolute;\\n text-align: center;\\n width: 2em;\\n line-height: inherit;\\n}\\n\\n.fa-border {\\n border: solid 0.08em #eee;\\n border-radius: 0.1em;\\n padding: 0.2em 0.25em 0.15em;\\n}\\n\\n.fa-pull-left {\\n float: left;\\n}\\n\\n.fa-pull-right {\\n float: right;\\n}\\n\\n.fa.fa-pull-left,\\n.fas.fa-pull-left,\\n.far.fa-pull-left,\\n.fal.fa-pull-left,\\n.fab.fa-pull-left {\\n margin-right: 0.3em;\\n}\\n.fa.fa-pull-right,\\n.fas.fa-pull-right,\\n.far.fa-pull-right,\\n.fal.fa-pull-right,\\n.fab.fa-pull-right {\\n margin-left: 0.3em;\\n}\\n\\n.fa-spin {\\n -webkit-animation: fa-spin 2s infinite linear;\\n animation: fa-spin 2s infinite linear;\\n}\\n\\n.fa-pulse {\\n -webkit-animation: fa-spin 1s infinite steps(8);\\n animation: fa-spin 1s infinite steps(8);\\n}\\n\\n@-webkit-keyframes fa-spin {\\n 0% {\\n -webkit-transform: rotate(0deg);\\n transform: rotate(0deg);\\n }\\n 100% {\\n -webkit-transform: rotate(360deg);\\n transform: rotate(360deg);\\n }\\n}\\n\\n@keyframes fa-spin {\\n 0% {\\n -webkit-transform: rotate(0deg);\\n transform: rotate(0deg);\\n }\\n 100% {\\n -webkit-transform: rotate(360deg);\\n transform: rotate(360deg);\\n }\\n}\\n.fa-rotate-90 {\\n -ms-filter: \\\"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)\\\";\\n -webkit-transform: rotate(90deg);\\n transform: rotate(90deg);\\n}\\n\\n.fa-rotate-180 {\\n -ms-filter: \\\"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)\\\";\\n -webkit-transform: rotate(180deg);\\n transform: rotate(180deg);\\n}\\n\\n.fa-rotate-270 {\\n -ms-filter: \\\"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)\\\";\\n -webkit-transform: rotate(270deg);\\n transform: rotate(270deg);\\n}\\n\\n.fa-flip-horizontal {\\n -ms-filter: \\\"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)\\\";\\n -webkit-transform: scale(-1, 1);\\n transform: scale(-1, 1);\\n}\\n\\n.fa-flip-vertical {\\n -ms-filter: \\\"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)\\\";\\n -webkit-transform: scale(1, -1);\\n transform: scale(1, -1);\\n}\\n\\n.fa-flip-both, .fa-flip-horizontal.fa-flip-vertical {\\n -ms-filter: \\\"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)\\\";\\n -webkit-transform: scale(-1, -1);\\n transform: scale(-1, -1);\\n}\\n\\n:root .fa-rotate-90,\\n:root .fa-rotate-180,\\n:root .fa-rotate-270,\\n:root .fa-flip-horizontal,\\n:root .fa-flip-vertical,\\n:root .fa-flip-both {\\n -webkit-filter: none;\\n filter: none;\\n}\\n\\n.fa-stack {\\n display: inline-block;\\n height: 2em;\\n position: relative;\\n width: 2.5em;\\n}\\n\\n.fa-stack-1x,\\n.fa-stack-2x {\\n bottom: 0;\\n left: 0;\\n margin: auto;\\n position: absolute;\\n right: 0;\\n top: 0;\\n}\\n\\n.svg-inline--fa.fa-stack-1x {\\n height: 1em;\\n width: 1.25em;\\n}\\n.svg-inline--fa.fa-stack-2x {\\n height: 2em;\\n width: 2.5em;\\n}\\n\\n.fa-inverse {\\n color: #fff;\\n}\\n\\n.sr-only {\\n border: 0;\\n clip: rect(0, 0, 0, 0);\\n height: 1px;\\n margin: -1px;\\n overflow: hidden;\\n padding: 0;\\n position: absolute;\\n width: 1px;\\n}\\n\\n.sr-only-focusable:active, .sr-only-focusable:focus {\\n clip: auto;\\n height: auto;\\n margin: 0;\\n overflow: visible;\\n position: static;\\n width: auto;\\n}\\n\\n.svg-inline--fa .fa-primary {\\n fill: var(--fa-primary-color, currentColor);\\n opacity: 1;\\n opacity: var(--fa-primary-opacity, 1);\\n}\\n\\n.svg-inline--fa .fa-secondary {\\n fill: var(--fa-secondary-color, currentColor);\\n opacity: 0.4;\\n opacity: var(--fa-secondary-opacity, 0.4);\\n}\\n\\n.svg-inline--fa.fa-swap-opacity .fa-primary {\\n opacity: 0.4;\\n opacity: var(--fa-secondary-opacity, 0.4);\\n}\\n\\n.svg-inline--fa.fa-swap-opacity .fa-secondary {\\n opacity: 1;\\n opacity: var(--fa-primary-opacity, 1);\\n}\\n\\n.svg-inline--fa mask .fa-primary,\\n.svg-inline--fa mask .fa-secondary {\\n fill: black;\\n}\\n\\n.fad.fa-inverse {\\n color: #fff;\\n}\";\n\nfunction css() {\n var dfp = DEFAULT_FAMILY_PREFIX;\n var drc = DEFAULT_REPLACEMENT_CLASS;\n var fp = config.familyPrefix;\n var rc = config.replacementClass;\n var s = baseStyles;\n\n if (fp !== dfp || rc !== drc) {\n var dPatt = new RegExp(\"\\\\.\".concat(dfp, \"\\\\-\"), 'g');\n var customPropPatt = new RegExp(\"\\\\--\".concat(dfp, \"\\\\-\"), 'g');\n var rPatt = new RegExp(\"\\\\.\".concat(drc), 'g');\n s = s.replace(dPatt, \".\".concat(fp, \"-\")).replace(customPropPatt, \"--\".concat(fp, \"-\")).replace(rPatt, \".\".concat(rc));\n }\n\n return s;\n}\n\nvar Library = /*#__PURE__*/function () {\n function Library() {\n _classCallCheck(this, Library);\n\n this.definitions = {};\n }\n\n _createClass(Library, [{\n key: \"add\",\n value: function add() {\n var _this = this;\n\n for (var _len = arguments.length, definitions = new Array(_len), _key = 0; _key < _len; _key++) {\n definitions[_key] = arguments[_key];\n }\n\n var additions = definitions.reduce(this._pullDefinitions, {});\n Object.keys(additions).forEach(function (key) {\n _this.definitions[key] = _objectSpread({}, _this.definitions[key] || {}, additions[key]);\n defineIcons(key, additions[key]);\n build();\n });\n }\n }, {\n key: \"reset\",\n value: function reset() {\n this.definitions = {};\n }\n }, {\n key: \"_pullDefinitions\",\n value: function _pullDefinitions(additions, definition) {\n var normalized = definition.prefix && definition.iconName && definition.icon ? {\n 0: definition\n } : definition;\n Object.keys(normalized).map(function (key) {\n var _normalized$key = normalized[key],\n prefix = _normalized$key.prefix,\n iconName = _normalized$key.iconName,\n icon = _normalized$key.icon;\n if (!additions[prefix]) additions[prefix] = {};\n additions[prefix][iconName] = icon;\n });\n return additions;\n }\n }]);\n\n return Library;\n}();\n\nfunction ensureCss() {\n if (config.autoAddCss && !_cssInserted) {\n insertCss(css());\n _cssInserted = true;\n }\n}\n\nfunction apiObject(val, abstractCreator) {\n Object.defineProperty(val, 'abstract', {\n get: abstractCreator\n });\n Object.defineProperty(val, 'html', {\n get: function get() {\n return val.abstract.map(function (a) {\n return toHtml(a);\n });\n }\n });\n Object.defineProperty(val, 'node', {\n get: function get() {\n if (!IS_DOM) return;\n var container = DOCUMENT.createElement('div');\n container.innerHTML = val.html;\n return container.children;\n }\n });\n return val;\n}\n\nfunction findIconDefinition(iconLookup) {\n var _iconLookup$prefix = iconLookup.prefix,\n prefix = _iconLookup$prefix === void 0 ? 'fa' : _iconLookup$prefix,\n iconName = iconLookup.iconName;\n if (!iconName) return;\n return iconFromMapping(library.definitions, prefix, iconName) || iconFromMapping(namespace.styles, prefix, iconName);\n}\n\nfunction resolveIcons(next) {\n return function (maybeIconDefinition) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var iconDefinition = (maybeIconDefinition || {}).icon ? maybeIconDefinition : findIconDefinition(maybeIconDefinition || {});\n var mask = params.mask;\n\n if (mask) {\n mask = (mask || {}).icon ? mask : findIconDefinition(mask || {});\n }\n\n return next(iconDefinition, _objectSpread({}, params, {\n mask: mask\n }));\n };\n}\n\nvar library = new Library();\n\nvar noAuto = function noAuto() {\n config.autoReplaceSvg = false;\n config.observeMutations = false;\n disconnect();\n};\n\nvar _cssInserted = false;\nvar dom = {\n i2svg: function i2svg() {\n var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n if (IS_DOM) {\n ensureCss();\n var _params$node = params.node,\n node = _params$node === void 0 ? DOCUMENT : _params$node,\n _params$callback = params.callback,\n callback = _params$callback === void 0 ? function () {} : _params$callback;\n\n if (config.searchPseudoElements) {\n searchPseudoElements(node);\n }\n\n return onTree(node, callback);\n } else {\n return picked.reject('Operation requires a DOM of some kind.');\n }\n },\n css: css,\n insertCss: function insertCss$$1() {\n if (!_cssInserted) {\n insertCss(css());\n _cssInserted = true;\n }\n },\n watch: function watch() {\n var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var autoReplaceSvgRoot = params.autoReplaceSvgRoot,\n observeMutationsRoot = params.observeMutationsRoot;\n\n if (config.autoReplaceSvg === false) {\n config.autoReplaceSvg = true;\n }\n\n config.observeMutations = true;\n domready(function () {\n autoReplace({\n autoReplaceSvgRoot: autoReplaceSvgRoot\n });\n observe({\n treeCallback: onTree,\n nodeCallback: onNode,\n pseudoElementsCallback: searchPseudoElements,\n observeMutationsRoot: observeMutationsRoot\n });\n });\n }\n};\nvar parse = {\n transform: function transform(transformString) {\n return parseTransformString(transformString);\n }\n};\nvar icon = resolveIcons(function (iconDefinition) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _params$transform = params.transform,\n transform = _params$transform === void 0 ? meaninglessTransform : _params$transform,\n _params$symbol = params.symbol,\n symbol = _params$symbol === void 0 ? false : _params$symbol,\n _params$mask = params.mask,\n mask = _params$mask === void 0 ? null : _params$mask,\n _params$maskId = params.maskId,\n maskId = _params$maskId === void 0 ? null : _params$maskId,\n _params$title = params.title,\n title = _params$title === void 0 ? null : _params$title,\n _params$titleId = params.titleId,\n titleId = _params$titleId === void 0 ? null : _params$titleId,\n _params$classes = params.classes,\n classes = _params$classes === void 0 ? [] : _params$classes,\n _params$attributes = params.attributes,\n attributes = _params$attributes === void 0 ? {} : _params$attributes,\n _params$styles = params.styles,\n styles = _params$styles === void 0 ? {} : _params$styles;\n if (!iconDefinition) return;\n var prefix = iconDefinition.prefix,\n iconName = iconDefinition.iconName,\n icon = iconDefinition.icon;\n return apiObject(_objectSpread({\n type: 'icon'\n }, iconDefinition), function () {\n ensureCss();\n\n if (config.autoA11y) {\n if (title) {\n attributes['aria-labelledby'] = \"\".concat(config.replacementClass, \"-title-\").concat(titleId || nextUniqueId());\n } else {\n attributes['aria-hidden'] = 'true';\n attributes['focusable'] = 'false';\n }\n }\n\n return makeInlineSvgAbstract({\n icons: {\n main: asFoundIcon(icon),\n mask: mask ? asFoundIcon(mask.icon) : {\n found: false,\n width: null,\n height: null,\n icon: {}\n }\n },\n prefix: prefix,\n iconName: iconName,\n transform: _objectSpread({}, meaninglessTransform, transform),\n symbol: symbol,\n title: title,\n maskId: maskId,\n titleId: titleId,\n extra: {\n attributes: attributes,\n styles: styles,\n classes: classes\n }\n });\n });\n});\n\nvar text = function text(content) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _params$transform2 = params.transform,\n transform = _params$transform2 === void 0 ? meaninglessTransform : _params$transform2,\n _params$title2 = params.title,\n title = _params$title2 === void 0 ? null : _params$title2,\n _params$classes2 = params.classes,\n classes = _params$classes2 === void 0 ? [] : _params$classes2,\n _params$attributes2 = params.attributes,\n attributes = _params$attributes2 === void 0 ? {} : _params$attributes2,\n _params$styles2 = params.styles,\n styles = _params$styles2 === void 0 ? {} : _params$styles2;\n return apiObject({\n type: 'text',\n content: content\n }, function () {\n ensureCss();\n return makeLayersTextAbstract({\n content: content,\n transform: _objectSpread({}, meaninglessTransform, transform),\n title: title,\n extra: {\n attributes: attributes,\n styles: styles,\n classes: [\"\".concat(config.familyPrefix, \"-layers-text\")].concat(_toConsumableArray(classes))\n }\n });\n });\n};\n\nvar counter = function counter(content) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _params$title3 = params.title,\n title = _params$title3 === void 0 ? null : _params$title3,\n _params$classes3 = params.classes,\n classes = _params$classes3 === void 0 ? [] : _params$classes3,\n _params$attributes3 = params.attributes,\n attributes = _params$attributes3 === void 0 ? {} : _params$attributes3,\n _params$styles3 = params.styles,\n styles = _params$styles3 === void 0 ? {} : _params$styles3;\n return apiObject({\n type: 'counter',\n content: content\n }, function () {\n ensureCss();\n return makeLayersCounterAbstract({\n content: content.toString(),\n title: title,\n extra: {\n attributes: attributes,\n styles: styles,\n classes: [\"\".concat(config.familyPrefix, \"-layers-counter\")].concat(_toConsumableArray(classes))\n }\n });\n });\n};\n\nvar layer = function layer(assembler) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _params$classes4 = params.classes,\n classes = _params$classes4 === void 0 ? [] : _params$classes4;\n return apiObject({\n type: 'layer'\n }, function () {\n ensureCss();\n var children = [];\n assembler(function (args) {\n Array.isArray(args) ? args.map(function (a) {\n children = children.concat(a.abstract);\n }) : children = children.concat(args.abstract);\n });\n return [{\n tag: 'span',\n attributes: {\n class: [\"\".concat(config.familyPrefix, \"-layers\")].concat(_toConsumableArray(classes)).join(' ')\n },\n children: children\n }];\n });\n};\n\nvar api = {\n noAuto: noAuto,\n config: config,\n dom: dom,\n library: library,\n parse: parse,\n findIconDefinition: findIconDefinition,\n icon: icon,\n text: text,\n counter: counter,\n layer: layer,\n toHtml: toHtml\n};\n\nvar autoReplace = function autoReplace() {\n var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var _params$autoReplaceSv = params.autoReplaceSvgRoot,\n autoReplaceSvgRoot = _params$autoReplaceSv === void 0 ? DOCUMENT : _params$autoReplaceSv;\n if ((Object.keys(namespace.styles).length > 0 || config.autoFetchSvg) && IS_DOM && config.autoReplaceSvg) api.dom.i2svg({\n node: autoReplaceSvgRoot\n });\n};\n\nexport { icon, noAuto, config, toHtml, layer, text, counter, library, dom, parse, findIconDefinition };","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/LICENSE\n(function (mod) {\n if ((typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) == \"object\" && (typeof module === \"undefined\" ? \"undefined\" : _typeof(module)) == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"), require(\"../xml/xml\"), require(\"../meta\"));else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\", \"../xml/xml\", \"../meta\"], mod);else // Plain browser env\n mod(CodeMirror);\n})(function (CodeMirror) {\n \"use strict\";\n\n CodeMirror.defineMode(\"markdown\", function (cmCfg, modeCfg) {\n var htmlMode = CodeMirror.getMode(cmCfg, \"text/html\");\n var htmlModeMissing = htmlMode.name == \"null\";\n\n function getMode(name) {\n if (CodeMirror.findModeByName) {\n var found = CodeMirror.findModeByName(name);\n if (found) name = found.mime || found.mimes[0];\n }\n\n var mode = CodeMirror.getMode(cmCfg, name);\n return mode.name == \"null\" ? null : mode;\n } // Should characters that affect highlighting be highlighted separate?\n // Does not include characters that will be output (such as `1.` and `-` for lists)\n\n\n if (modeCfg.highlightFormatting === undefined) modeCfg.highlightFormatting = false; // Maximum number of nested blockquotes. Set to 0 for infinite nesting.\n // Excess `>` will emit `error` token.\n\n if (modeCfg.maxBlockquoteDepth === undefined) modeCfg.maxBlockquoteDepth = 0; // Turn on task lists? (\"- [ ] \" and \"- [x] \")\n\n if (modeCfg.taskLists === undefined) modeCfg.taskLists = false; // Turn on strikethrough syntax\n\n if (modeCfg.strikethrough === undefined) modeCfg.strikethrough = false;\n if (modeCfg.emoji === undefined) modeCfg.emoji = false;\n if (modeCfg.fencedCodeBlockHighlighting === undefined) modeCfg.fencedCodeBlockHighlighting = true;\n if (modeCfg.xml === undefined) modeCfg.xml = true; // Allow token types to be overridden by user-provided token types.\n\n if (modeCfg.tokenTypeOverrides === undefined) modeCfg.tokenTypeOverrides = {};\n var tokenTypes = {\n header: \"header\",\n code: \"comment\",\n quote: \"quote\",\n list1: \"variable-2\",\n list2: \"variable-3\",\n list3: \"keyword\",\n hr: \"hr\",\n image: \"image\",\n imageAltText: \"image-alt-text\",\n imageMarker: \"image-marker\",\n formatting: \"formatting\",\n linkInline: \"link\",\n linkEmail: \"link\",\n linkText: \"link\",\n linkHref: \"string\",\n em: \"em\",\n strong: \"strong\",\n strikethrough: \"strikethrough\",\n emoji: \"builtin\"\n };\n\n for (var tokenType in tokenTypes) {\n if (tokenTypes.hasOwnProperty(tokenType) && modeCfg.tokenTypeOverrides[tokenType]) {\n tokenTypes[tokenType] = modeCfg.tokenTypeOverrides[tokenType];\n }\n }\n\n var hrRE = /^([*\\-_])(?:\\s*\\1){2,}\\s*$/,\n listRE = /^(?:[*\\-+]|^[0-9]+([.)]))\\s+/,\n taskListRE = /^\\[(x| )\\](?=\\s)/i // Must follow listRE\n ,\n atxHeaderRE = modeCfg.allowAtxHeaderWithoutSpace ? /^(#+)/ : /^(#+)(?: |$)/,\n setextHeaderRE = /^ {0,3}(?:\\={1,}|-{2,})\\s*$/,\n textRE = /^[^#!\\[\\]*_\\\\<>` \"'(~:]+/,\n fencedCodeRE = /^(~~~+|```+)[ \\t]*([\\w+#-]*)[^\\n`]*$/,\n linkDefRE = /^\\s*\\[[^\\]]+?\\]:.*$/ // naive link-definition\n ,\n punctuation = /[!\"#$%&'()*+,\\-.\\/:;<=>?@\\[\\\\\\]^_`{|}~\\xA1\\xA7\\xAB\\xB6\\xB7\\xBB\\xBF\\u037E\\u0387\\u055A-\\u055F\\u0589\\u058A\\u05BE\\u05C0\\u05C3\\u05C6\\u05F3\\u05F4\\u0609\\u060A\\u060C\\u060D\\u061B\\u061E\\u061F\\u066A-\\u066D\\u06D4\\u0700-\\u070D\\u07F7-\\u07F9\\u0830-\\u083E\\u085E\\u0964\\u0965\\u0970\\u0AF0\\u0DF4\\u0E4F\\u0E5A\\u0E5B\\u0F04-\\u0F12\\u0F14\\u0F3A-\\u0F3D\\u0F85\\u0FD0-\\u0FD4\\u0FD9\\u0FDA\\u104A-\\u104F\\u10FB\\u1360-\\u1368\\u1400\\u166D\\u166E\\u169B\\u169C\\u16EB-\\u16ED\\u1735\\u1736\\u17D4-\\u17D6\\u17D8-\\u17DA\\u1800-\\u180A\\u1944\\u1945\\u1A1E\\u1A1F\\u1AA0-\\u1AA6\\u1AA8-\\u1AAD\\u1B5A-\\u1B60\\u1BFC-\\u1BFF\\u1C3B-\\u1C3F\\u1C7E\\u1C7F\\u1CC0-\\u1CC7\\u1CD3\\u2010-\\u2027\\u2030-\\u2043\\u2045-\\u2051\\u2053-\\u205E\\u207D\\u207E\\u208D\\u208E\\u2308-\\u230B\\u2329\\u232A\\u2768-\\u2775\\u27C5\\u27C6\\u27E6-\\u27EF\\u2983-\\u2998\\u29D8-\\u29DB\\u29FC\\u29FD\\u2CF9-\\u2CFC\\u2CFE\\u2CFF\\u2D70\\u2E00-\\u2E2E\\u2E30-\\u2E42\\u3001-\\u3003\\u3008-\\u3011\\u3014-\\u301F\\u3030\\u303D\\u30A0\\u30FB\\uA4FE\\uA4FF\\uA60D-\\uA60F\\uA673\\uA67E\\uA6F2-\\uA6F7\\uA874-\\uA877\\uA8CE\\uA8CF\\uA8F8-\\uA8FA\\uA8FC\\uA92E\\uA92F\\uA95F\\uA9C1-\\uA9CD\\uA9DE\\uA9DF\\uAA5C-\\uAA5F\\uAADE\\uAADF\\uAAF0\\uAAF1\\uABEB\\uFD3E\\uFD3F\\uFE10-\\uFE19\\uFE30-\\uFE52\\uFE54-\\uFE61\\uFE63\\uFE68\\uFE6A\\uFE6B\\uFF01-\\uFF03\\uFF05-\\uFF0A\\uFF0C-\\uFF0F\\uFF1A\\uFF1B\\uFF1F\\uFF20\\uFF3B-\\uFF3D\\uFF3F\\uFF5B\\uFF5D\\uFF5F-\\uFF65]|\\uD800[\\uDD00-\\uDD02\\uDF9F\\uDFD0]|\\uD801\\uDD6F|\\uD802[\\uDC57\\uDD1F\\uDD3F\\uDE50-\\uDE58\\uDE7F\\uDEF0-\\uDEF6\\uDF39-\\uDF3F\\uDF99-\\uDF9C]|\\uD804[\\uDC47-\\uDC4D\\uDCBB\\uDCBC\\uDCBE-\\uDCC1\\uDD40-\\uDD43\\uDD74\\uDD75\\uDDC5-\\uDDC9\\uDDCD\\uDDDB\\uDDDD-\\uDDDF\\uDE38-\\uDE3D\\uDEA9]|\\uD805[\\uDCC6\\uDDC1-\\uDDD7\\uDE41-\\uDE43\\uDF3C-\\uDF3E]|\\uD809[\\uDC70-\\uDC74]|\\uD81A[\\uDE6E\\uDE6F\\uDEF5\\uDF37-\\uDF3B\\uDF44]|\\uD82F\\uDC9F|\\uD836[\\uDE87-\\uDE8B]/,\n expandedTab = \" \"; // CommonMark specifies tab as 4 spaces\n\n function switchInline(stream, state, f) {\n state.f = state.inline = f;\n return f(stream, state);\n }\n\n function switchBlock(stream, state, f) {\n state.f = state.block = f;\n return f(stream, state);\n }\n\n function lineIsEmpty(line) {\n return !line || !/\\S/.test(line.string);\n } // Blocks\n\n\n function blankLine(state) {\n // Reset linkTitle state\n state.linkTitle = false;\n state.linkHref = false;\n state.linkText = false; // Reset EM state\n\n state.em = false; // Reset STRONG state\n\n state.strong = false; // Reset strikethrough state\n\n state.strikethrough = false; // Reset state.quote\n\n state.quote = 0; // Reset state.indentedCode\n\n state.indentedCode = false;\n\n if (state.f == htmlBlock) {\n var exit = htmlModeMissing;\n\n if (!exit) {\n var inner = CodeMirror.innerMode(htmlMode, state.htmlState);\n exit = inner.mode.name == \"xml\" && inner.state.tagStart === null && !inner.state.context && inner.state.tokenize.isInText;\n }\n\n if (exit) {\n state.f = inlineNormal;\n state.block = blockNormal;\n state.htmlState = null;\n }\n } // Reset state.trailingSpace\n\n\n state.trailingSpace = 0;\n state.trailingSpaceNewLine = false; // Mark this line as blank\n\n state.prevLine = state.thisLine;\n state.thisLine = {\n stream: null\n };\n return null;\n }\n\n function blockNormal(stream, state) {\n var firstTokenOnLine = stream.column() === state.indentation;\n var prevLineLineIsEmpty = lineIsEmpty(state.prevLine.stream);\n var prevLineIsIndentedCode = state.indentedCode;\n var prevLineIsHr = state.prevLine.hr;\n var prevLineIsList = state.list !== false;\n var maxNonCodeIndentation = (state.listStack[state.listStack.length - 1] || 0) + 3;\n state.indentedCode = false;\n var lineIndentation = state.indentation; // compute once per line (on first token)\n\n if (state.indentationDiff === null) {\n state.indentationDiff = state.indentation;\n\n if (prevLineIsList) {\n state.list = null; // While this list item's marker's indentation is less than the deepest\n // list item's content's indentation,pop the deepest list item\n // indentation off the stack, and update block indentation state\n\n while (lineIndentation < state.listStack[state.listStack.length - 1]) {\n state.listStack.pop();\n\n if (state.listStack.length) {\n state.indentation = state.listStack[state.listStack.length - 1]; // less than the first list's indent -> the line is no longer a list\n } else {\n state.list = false;\n }\n }\n\n if (state.list !== false) {\n state.indentationDiff = lineIndentation - state.listStack[state.listStack.length - 1];\n }\n }\n } // not comprehensive (currently only for setext detection purposes)\n\n\n var allowsInlineContinuation = !prevLineLineIsEmpty && !prevLineIsHr && !state.prevLine.header && (!prevLineIsList || !prevLineIsIndentedCode) && !state.prevLine.fencedCodeEnd;\n var isHr = (state.list === false || prevLineIsHr || prevLineLineIsEmpty) && state.indentation <= maxNonCodeIndentation && stream.match(hrRE);\n var match = null;\n\n if (state.indentationDiff >= 4 && (prevLineIsIndentedCode || state.prevLine.fencedCodeEnd || state.prevLine.header || prevLineLineIsEmpty)) {\n stream.skipToEnd();\n state.indentedCode = true;\n return tokenTypes.code;\n } else if (stream.eatSpace()) {\n return null;\n } else if (firstTokenOnLine && state.indentation <= maxNonCodeIndentation && (match = stream.match(atxHeaderRE)) && match[1].length <= 6) {\n state.quote = 0;\n state.header = match[1].length;\n state.thisLine.header = true;\n if (modeCfg.highlightFormatting) state.formatting = \"header\";\n state.f = state.inline;\n return getType(state);\n } else if (state.indentation <= maxNonCodeIndentation && stream.eat('>')) {\n state.quote = firstTokenOnLine ? 1 : state.quote + 1;\n if (modeCfg.highlightFormatting) state.formatting = \"quote\";\n stream.eatSpace();\n return getType(state);\n } else if (!isHr && !state.setext && firstTokenOnLine && state.indentation <= maxNonCodeIndentation && (match = stream.match(listRE))) {\n var listType = match[1] ? \"ol\" : \"ul\";\n state.indentation = lineIndentation + stream.current().length;\n state.list = true;\n state.quote = 0; // Add this list item's content's indentation to the stack\n\n state.listStack.push(state.indentation); // Reset inline styles which shouldn't propagate aross list items\n\n state.em = false;\n state.strong = false;\n state.code = false;\n state.strikethrough = false;\n\n if (modeCfg.taskLists && stream.match(taskListRE, false)) {\n state.taskList = true;\n }\n\n state.f = state.inline;\n if (modeCfg.highlightFormatting) state.formatting = [\"list\", \"list-\" + listType];\n return getType(state);\n } else if (firstTokenOnLine && state.indentation <= maxNonCodeIndentation && (match = stream.match(fencedCodeRE, true))) {\n state.quote = 0;\n state.fencedEndRE = new RegExp(match[1] + \"+ *$\"); // try switching mode\n\n state.localMode = modeCfg.fencedCodeBlockHighlighting && getMode(match[2]);\n if (state.localMode) state.localState = CodeMirror.startState(state.localMode);\n state.f = state.block = local;\n if (modeCfg.highlightFormatting) state.formatting = \"code-block\";\n state.code = -1;\n return getType(state); // SETEXT has lowest block-scope precedence after HR, so check it after\n // the others (code, blockquote, list...)\n } else if ( // if setext set, indicates line after ---/===\n state.setext || // line before ---/===\n (!allowsInlineContinuation || !prevLineIsList) && !state.quote && state.list === false && !state.code && !isHr && !linkDefRE.test(stream.string) && (match = stream.lookAhead(1)) && (match = match.match(setextHeaderRE))) {\n if (!state.setext) {\n state.header = match[0].charAt(0) == '=' ? 1 : 2;\n state.setext = state.header;\n } else {\n state.header = state.setext; // has no effect on type so we can reset it now\n\n state.setext = 0;\n stream.skipToEnd();\n if (modeCfg.highlightFormatting) state.formatting = \"header\";\n }\n\n state.thisLine.header = true;\n state.f = state.inline;\n return getType(state);\n } else if (isHr) {\n stream.skipToEnd();\n state.hr = true;\n state.thisLine.hr = true;\n return tokenTypes.hr;\n } else if (stream.peek() === '[') {\n return switchInline(stream, state, footnoteLink);\n }\n\n return switchInline(stream, state, state.inline);\n }\n\n function htmlBlock(stream, state) {\n var style = htmlMode.token(stream, state.htmlState);\n\n if (!htmlModeMissing) {\n var inner = CodeMirror.innerMode(htmlMode, state.htmlState);\n\n if (inner.mode.name == \"xml\" && inner.state.tagStart === null && !inner.state.context && inner.state.tokenize.isInText || state.md_inside && stream.current().indexOf(\">\") > -1) {\n state.f = inlineNormal;\n state.block = blockNormal;\n state.htmlState = null;\n }\n }\n\n return style;\n }\n\n function local(stream, state) {\n var currListInd = state.listStack[state.listStack.length - 1] || 0;\n var hasExitedList = state.indentation < currListInd;\n var maxFencedEndInd = currListInd + 3;\n\n if (state.fencedEndRE && state.indentation <= maxFencedEndInd && (hasExitedList || stream.match(state.fencedEndRE))) {\n if (modeCfg.highlightFormatting) state.formatting = \"code-block\";\n var returnType;\n if (!hasExitedList) returnType = getType(state);\n state.localMode = state.localState = null;\n state.block = blockNormal;\n state.f = inlineNormal;\n state.fencedEndRE = null;\n state.code = 0;\n state.thisLine.fencedCodeEnd = true;\n if (hasExitedList) return switchBlock(stream, state, state.block);\n return returnType;\n } else if (state.localMode) {\n return state.localMode.token(stream, state.localState);\n } else {\n stream.skipToEnd();\n return tokenTypes.code;\n }\n } // Inline\n\n\n function getType(state) {\n var styles = [];\n\n if (state.formatting) {\n styles.push(tokenTypes.formatting);\n if (typeof state.formatting === \"string\") state.formatting = [state.formatting];\n\n for (var i = 0; i < state.formatting.length; i++) {\n styles.push(tokenTypes.formatting + \"-\" + state.formatting[i]);\n\n if (state.formatting[i] === \"header\") {\n styles.push(tokenTypes.formatting + \"-\" + state.formatting[i] + \"-\" + state.header);\n } // Add `formatting-quote` and `formatting-quote-#` for blockquotes\n // Add `error` instead if the maximum blockquote nesting depth is passed\n\n\n if (state.formatting[i] === \"quote\") {\n if (!modeCfg.maxBlockquoteDepth || modeCfg.maxBlockquoteDepth >= state.quote) {\n styles.push(tokenTypes.formatting + \"-\" + state.formatting[i] + \"-\" + state.quote);\n } else {\n styles.push(\"error\");\n }\n }\n }\n }\n\n if (state.taskOpen) {\n styles.push(\"meta\");\n return styles.length ? styles.join(' ') : null;\n }\n\n if (state.taskClosed) {\n styles.push(\"property\");\n return styles.length ? styles.join(' ') : null;\n }\n\n if (state.linkHref) {\n styles.push(tokenTypes.linkHref, \"url\");\n } else {\n // Only apply inline styles to non-url text\n if (state.strong) {\n styles.push(tokenTypes.strong);\n }\n\n if (state.em) {\n styles.push(tokenTypes.em);\n }\n\n if (state.strikethrough) {\n styles.push(tokenTypes.strikethrough);\n }\n\n if (state.emoji) {\n styles.push(tokenTypes.emoji);\n }\n\n if (state.linkText) {\n styles.push(tokenTypes.linkText);\n }\n\n if (state.code) {\n styles.push(tokenTypes.code);\n }\n\n if (state.image) {\n styles.push(tokenTypes.image);\n }\n\n if (state.imageAltText) {\n styles.push(tokenTypes.imageAltText, \"link\");\n }\n\n if (state.imageMarker) {\n styles.push(tokenTypes.imageMarker);\n }\n }\n\n if (state.header) {\n styles.push(tokenTypes.header, tokenTypes.header + \"-\" + state.header);\n }\n\n if (state.quote) {\n styles.push(tokenTypes.quote); // Add `quote-#` where the maximum for `#` is modeCfg.maxBlockquoteDepth\n\n if (!modeCfg.maxBlockquoteDepth || modeCfg.maxBlockquoteDepth >= state.quote) {\n styles.push(tokenTypes.quote + \"-\" + state.quote);\n } else {\n styles.push(tokenTypes.quote + \"-\" + modeCfg.maxBlockquoteDepth);\n }\n }\n\n if (state.list !== false) {\n var listMod = (state.listStack.length - 1) % 3;\n\n if (!listMod) {\n styles.push(tokenTypes.list1);\n } else if (listMod === 1) {\n styles.push(tokenTypes.list2);\n } else {\n styles.push(tokenTypes.list3);\n }\n }\n\n if (state.trailingSpaceNewLine) {\n styles.push(\"trailing-space-new-line\");\n } else if (state.trailingSpace) {\n styles.push(\"trailing-space-\" + (state.trailingSpace % 2 ? \"a\" : \"b\"));\n }\n\n return styles.length ? styles.join(' ') : null;\n }\n\n function handleText(stream, state) {\n if (stream.match(textRE, true)) {\n return getType(state);\n }\n\n return undefined;\n }\n\n function inlineNormal(stream, state) {\n var style = state.text(stream, state);\n if (typeof style !== 'undefined') return style;\n\n if (state.list) {\n // List marker (*, +, -, 1., etc)\n state.list = null;\n return getType(state);\n }\n\n if (state.taskList) {\n var taskOpen = stream.match(taskListRE, true)[1] === \" \";\n if (taskOpen) state.taskOpen = true;else state.taskClosed = true;\n if (modeCfg.highlightFormatting) state.formatting = \"task\";\n state.taskList = false;\n return getType(state);\n }\n\n state.taskOpen = false;\n state.taskClosed = false;\n\n if (state.header && stream.match(/^#+$/, true)) {\n if (modeCfg.highlightFormatting) state.formatting = \"header\";\n return getType(state);\n }\n\n var ch = stream.next(); // Matches link titles present on next line\n\n if (state.linkTitle) {\n state.linkTitle = false;\n var matchCh = ch;\n\n if (ch === '(') {\n matchCh = ')';\n }\n\n matchCh = (matchCh + '').replace(/([.?*+^\\[\\]\\\\(){}|-])/g, \"\\\\$1\");\n var regex = '^\\\\s*(?:[^' + matchCh + '\\\\\\\\]+|\\\\\\\\\\\\\\\\|\\\\\\\\.)' + matchCh;\n\n if (stream.match(new RegExp(regex), true)) {\n return tokenTypes.linkHref;\n }\n } // If this block is changed, it may need to be updated in GFM mode\n\n\n if (ch === '`') {\n var previousFormatting = state.formatting;\n if (modeCfg.highlightFormatting) state.formatting = \"code\";\n stream.eatWhile('`');\n var count = stream.current().length;\n\n if (state.code == 0 && (!state.quote || count == 1)) {\n state.code = count;\n return getType(state);\n } else if (count == state.code) {\n // Must be exact\n var t = getType(state);\n state.code = 0;\n return t;\n } else {\n state.formatting = previousFormatting;\n return getType(state);\n }\n } else if (state.code) {\n return getType(state);\n }\n\n if (ch === '\\\\') {\n stream.next();\n\n if (modeCfg.highlightFormatting) {\n var type = getType(state);\n var formattingEscape = tokenTypes.formatting + \"-escape\";\n return type ? type + \" \" + formattingEscape : formattingEscape;\n }\n }\n\n if (ch === '!' && stream.match(/\\[[^\\]]*\\] ?(?:\\(|\\[)/, false)) {\n state.imageMarker = true;\n state.image = true;\n if (modeCfg.highlightFormatting) state.formatting = \"image\";\n return getType(state);\n }\n\n if (ch === '[' && state.imageMarker && stream.match(/[^\\]]*\\](\\(.*?\\)| ?\\[.*?\\])/, false)) {\n state.imageMarker = false;\n state.imageAltText = true;\n if (modeCfg.highlightFormatting) state.formatting = \"image\";\n return getType(state);\n }\n\n if (ch === ']' && state.imageAltText) {\n if (modeCfg.highlightFormatting) state.formatting = \"image\";\n var type = getType(state);\n state.imageAltText = false;\n state.image = false;\n state.inline = state.f = linkHref;\n return type;\n }\n\n if (ch === '[' && !state.image) {\n if (state.linkText && stream.match(/^.*?\\]/)) return getType(state);\n state.linkText = true;\n if (modeCfg.highlightFormatting) state.formatting = \"link\";\n return getType(state);\n }\n\n if (ch === ']' && state.linkText) {\n if (modeCfg.highlightFormatting) state.formatting = \"link\";\n var type = getType(state);\n state.linkText = false;\n state.inline = state.f = stream.match(/\\(.*?\\)| ?\\[.*?\\]/, false) ? linkHref : inlineNormal;\n return type;\n }\n\n if (ch === '<' && stream.match(/^(https?|ftps?):\\/\\/(?:[^\\\\>]|\\\\.)+>/, false)) {\n state.f = state.inline = linkInline;\n if (modeCfg.highlightFormatting) state.formatting = \"link\";\n var type = getType(state);\n\n if (type) {\n type += \" \";\n } else {\n type = \"\";\n }\n\n return type + tokenTypes.linkInline;\n }\n\n if (ch === '<' && stream.match(/^[^> \\\\]+@(?:[^\\\\>]|\\\\.)+>/, false)) {\n state.f = state.inline = linkInline;\n if (modeCfg.highlightFormatting) state.formatting = \"link\";\n var type = getType(state);\n\n if (type) {\n type += \" \";\n } else {\n type = \"\";\n }\n\n return type + tokenTypes.linkEmail;\n }\n\n if (modeCfg.xml && ch === '<' && stream.match(/^(!--|\\?|!\\[CDATA\\[|[a-z][a-z0-9-]*(?:\\s+[a-z_:.\\-]+(?:\\s*=\\s*[^>]+)?)*\\s*(?:>|$))/i, false)) {\n var end = stream.string.indexOf(\">\", stream.pos);\n\n if (end != -1) {\n var atts = stream.string.substring(stream.start, end);\n if (/markdown\\s*=\\s*('|\"){0,1}1('|\"){0,1}/.test(atts)) state.md_inside = true;\n }\n\n stream.backUp(1);\n state.htmlState = CodeMirror.startState(htmlMode);\n return switchBlock(stream, state, htmlBlock);\n }\n\n if (modeCfg.xml && ch === '<' && stream.match(/^\\/\\w*?>/)) {\n state.md_inside = false;\n return \"tag\";\n } else if (ch === \"*\" || ch === \"_\") {\n var len = 1,\n before = stream.pos == 1 ? \" \" : stream.string.charAt(stream.pos - 2);\n\n while (len < 3 && stream.eat(ch)) {\n len++;\n }\n\n var after = stream.peek() || \" \"; // See http://spec.commonmark.org/0.27/#emphasis-and-strong-emphasis\n\n var leftFlanking = !/\\s/.test(after) && (!punctuation.test(after) || /\\s/.test(before) || punctuation.test(before));\n var rightFlanking = !/\\s/.test(before) && (!punctuation.test(before) || /\\s/.test(after) || punctuation.test(after));\n var setEm = null,\n setStrong = null;\n\n if (len % 2) {\n // Em\n if (!state.em && leftFlanking && (ch === \"*\" || !rightFlanking || punctuation.test(before))) setEm = true;else if (state.em == ch && rightFlanking && (ch === \"*\" || !leftFlanking || punctuation.test(after))) setEm = false;\n }\n\n if (len > 1) {\n // Strong\n if (!state.strong && leftFlanking && (ch === \"*\" || !rightFlanking || punctuation.test(before))) setStrong = true;else if (state.strong == ch && rightFlanking && (ch === \"*\" || !leftFlanking || punctuation.test(after))) setStrong = false;\n }\n\n if (setStrong != null || setEm != null) {\n if (modeCfg.highlightFormatting) state.formatting = setEm == null ? \"strong\" : setStrong == null ? \"em\" : \"strong em\";\n if (setEm === true) state.em = ch;\n if (setStrong === true) state.strong = ch;\n var t = getType(state);\n if (setEm === false) state.em = false;\n if (setStrong === false) state.strong = false;\n return t;\n }\n } else if (ch === ' ') {\n if (stream.eat('*') || stream.eat('_')) {\n // Probably surrounded by spaces\n if (stream.peek() === ' ') {\n // Surrounded by spaces, ignore\n return getType(state);\n } else {\n // Not surrounded by spaces, back up pointer\n stream.backUp(1);\n }\n }\n }\n\n if (modeCfg.strikethrough) {\n if (ch === '~' && stream.eatWhile(ch)) {\n if (state.strikethrough) {\n // Remove strikethrough\n if (modeCfg.highlightFormatting) state.formatting = \"strikethrough\";\n var t = getType(state);\n state.strikethrough = false;\n return t;\n } else if (stream.match(/^[^\\s]/, false)) {\n // Add strikethrough\n state.strikethrough = true;\n if (modeCfg.highlightFormatting) state.formatting = \"strikethrough\";\n return getType(state);\n }\n } else if (ch === ' ') {\n if (stream.match(/^~~/, true)) {\n // Probably surrounded by space\n if (stream.peek() === ' ') {\n // Surrounded by spaces, ignore\n return getType(state);\n } else {\n // Not surrounded by spaces, back up pointer\n stream.backUp(2);\n }\n }\n }\n }\n\n if (modeCfg.emoji && ch === \":\" && stream.match(/^(?:[a-z_\\d+][a-z_\\d+-]*|\\-[a-z_\\d+][a-z_\\d+-]*):/)) {\n state.emoji = true;\n if (modeCfg.highlightFormatting) state.formatting = \"emoji\";\n var retType = getType(state);\n state.emoji = false;\n return retType;\n }\n\n if (ch === ' ') {\n if (stream.match(/^ +$/, false)) {\n state.trailingSpace++;\n } else if (state.trailingSpace) {\n state.trailingSpaceNewLine = true;\n }\n }\n\n return getType(state);\n }\n\n function linkInline(stream, state) {\n var ch = stream.next();\n\n if (ch === \">\") {\n state.f = state.inline = inlineNormal;\n if (modeCfg.highlightFormatting) state.formatting = \"link\";\n var type = getType(state);\n\n if (type) {\n type += \" \";\n } else {\n type = \"\";\n }\n\n return type + tokenTypes.linkInline;\n }\n\n stream.match(/^[^>]+/, true);\n return tokenTypes.linkInline;\n }\n\n function linkHref(stream, state) {\n // Check if space, and return NULL if so (to avoid marking the space)\n if (stream.eatSpace()) {\n return null;\n }\n\n var ch = stream.next();\n\n if (ch === '(' || ch === '[') {\n state.f = state.inline = getLinkHrefInside(ch === \"(\" ? \")\" : \"]\");\n if (modeCfg.highlightFormatting) state.formatting = \"link-string\";\n state.linkHref = true;\n return getType(state);\n }\n\n return 'error';\n }\n\n var linkRE = {\n \")\": /^(?:[^\\\\\\(\\)]|\\\\.|\\((?:[^\\\\\\(\\)]|\\\\.)*\\))*?(?=\\))/,\n \"]\": /^(?:[^\\\\\\[\\]]|\\\\.|\\[(?:[^\\\\\\[\\]]|\\\\.)*\\])*?(?=\\])/\n };\n\n function getLinkHrefInside(endChar) {\n return function (stream, state) {\n var ch = stream.next();\n\n if (ch === endChar) {\n state.f = state.inline = inlineNormal;\n if (modeCfg.highlightFormatting) state.formatting = \"link-string\";\n var returnState = getType(state);\n state.linkHref = false;\n return returnState;\n }\n\n stream.match(linkRE[endChar]);\n state.linkHref = true;\n return getType(state);\n };\n }\n\n function footnoteLink(stream, state) {\n if (stream.match(/^([^\\]\\\\]|\\\\.)*\\]:/, false)) {\n state.f = footnoteLinkInside;\n stream.next(); // Consume [\n\n if (modeCfg.highlightFormatting) state.formatting = \"link\";\n state.linkText = true;\n return getType(state);\n }\n\n return switchInline(stream, state, inlineNormal);\n }\n\n function footnoteLinkInside(stream, state) {\n if (stream.match(/^\\]:/, true)) {\n state.f = state.inline = footnoteUrl;\n if (modeCfg.highlightFormatting) state.formatting = \"link\";\n var returnType = getType(state);\n state.linkText = false;\n return returnType;\n }\n\n stream.match(/^([^\\]\\\\]|\\\\.)+/, true);\n return tokenTypes.linkText;\n }\n\n function footnoteUrl(stream, state) {\n // Check if space, and return NULL if so (to avoid marking the space)\n if (stream.eatSpace()) {\n return null;\n } // Match URL\n\n\n stream.match(/^[^\\s]+/, true); // Check for link title\n\n if (stream.peek() === undefined) {\n // End of line, set flag to check next line\n state.linkTitle = true;\n } else {\n // More content on line, check if link title\n stream.match(/^(?:\\s+(?:\"(?:[^\"\\\\]|\\\\\\\\|\\\\.)+\"|'(?:[^'\\\\]|\\\\\\\\|\\\\.)+'|\\((?:[^)\\\\]|\\\\\\\\|\\\\.)+\\)))?/, true);\n }\n\n state.f = state.inline = inlineNormal;\n return tokenTypes.linkHref + \" url\";\n }\n\n var mode = {\n startState: function startState() {\n return {\n f: blockNormal,\n prevLine: {\n stream: null\n },\n thisLine: {\n stream: null\n },\n block: blockNormal,\n htmlState: null,\n indentation: 0,\n inline: inlineNormal,\n text: handleText,\n formatting: false,\n linkText: false,\n linkHref: false,\n linkTitle: false,\n code: 0,\n em: false,\n strong: false,\n header: 0,\n setext: 0,\n hr: false,\n taskList: false,\n list: false,\n listStack: [],\n quote: 0,\n trailingSpace: 0,\n trailingSpaceNewLine: false,\n strikethrough: false,\n emoji: false,\n fencedEndRE: null\n };\n },\n copyState: function copyState(s) {\n return {\n f: s.f,\n prevLine: s.prevLine,\n thisLine: s.thisLine,\n block: s.block,\n htmlState: s.htmlState && CodeMirror.copyState(htmlMode, s.htmlState),\n indentation: s.indentation,\n localMode: s.localMode,\n localState: s.localMode ? CodeMirror.copyState(s.localMode, s.localState) : null,\n inline: s.inline,\n text: s.text,\n formatting: false,\n linkText: s.linkText,\n linkTitle: s.linkTitle,\n linkHref: s.linkHref,\n code: s.code,\n em: s.em,\n strong: s.strong,\n strikethrough: s.strikethrough,\n emoji: s.emoji,\n header: s.header,\n setext: s.setext,\n hr: s.hr,\n taskList: s.taskList,\n list: s.list,\n listStack: s.listStack.slice(0),\n quote: s.quote,\n indentedCode: s.indentedCode,\n trailingSpace: s.trailingSpace,\n trailingSpaceNewLine: s.trailingSpaceNewLine,\n md_inside: s.md_inside,\n fencedEndRE: s.fencedEndRE\n };\n },\n token: function token(stream, state) {\n // Reset state.formatting\n state.formatting = false;\n\n if (stream != state.thisLine.stream) {\n state.header = 0;\n state.hr = false;\n\n if (stream.match(/^\\s*$/, true)) {\n blankLine(state);\n return null;\n }\n\n state.prevLine = state.thisLine;\n state.thisLine = {\n stream: stream\n }; // Reset state.taskList\n\n state.taskList = false; // Reset state.trailingSpace\n\n state.trailingSpace = 0;\n state.trailingSpaceNewLine = false;\n\n if (!state.localState) {\n state.f = state.block;\n\n if (state.f != htmlBlock) {\n var indentation = stream.match(/^\\s*/, true)[0].replace(/\\t/g, expandedTab).length;\n state.indentation = indentation;\n state.indentationDiff = null;\n if (indentation > 0) return null;\n }\n }\n }\n\n return state.f(stream, state);\n },\n innerMode: function innerMode(state) {\n if (state.block == htmlBlock) return {\n state: state.htmlState,\n mode: htmlMode\n };\n if (state.localState) return {\n state: state.localState,\n mode: state.localMode\n };\n return {\n state: state,\n mode: mode\n };\n },\n indent: function indent(state, textAfter, line) {\n if (state.block == htmlBlock && htmlMode.indent) return htmlMode.indent(state.htmlState, textAfter, line);\n if (state.localState && state.localMode.indent) return state.localMode.indent(state.localState, textAfter, line);\n return CodeMirror.Pass;\n },\n blankLine: blankLine,\n getType: getType,\n blockCommentStart: \"\",\n closeBrackets: \"()[]{}''\\\"\\\"``\",\n fold: \"markdown\"\n };\n return mode;\n }, \"xml\");\n CodeMirror.defineMIME(\"text/markdown\", \"markdown\");\n CodeMirror.defineMIME(\"text/x-markdown\", \"markdown\");\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/LICENSE\n(function (mod) {\n if ((typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) == \"object\" && (typeof module === \"undefined\" ? \"undefined\" : _typeof(module)) == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"));else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);else // Plain browser env\n mod(CodeMirror);\n})(function (CodeMirror) {\n \"use strict\";\n\n var htmlConfig = {\n autoSelfClosers: {\n 'area': true,\n 'base': true,\n 'br': true,\n 'col': true,\n 'command': true,\n 'embed': true,\n 'frame': true,\n 'hr': true,\n 'img': true,\n 'input': true,\n 'keygen': true,\n 'link': true,\n 'meta': true,\n 'param': true,\n 'source': true,\n 'track': true,\n 'wbr': true,\n 'menuitem': true\n },\n implicitlyClosed: {\n 'dd': true,\n 'li': true,\n 'optgroup': true,\n 'option': true,\n 'p': true,\n 'rp': true,\n 'rt': true,\n 'tbody': true,\n 'td': true,\n 'tfoot': true,\n 'th': true,\n 'tr': true\n },\n contextGrabbers: {\n 'dd': {\n 'dd': true,\n 'dt': true\n },\n 'dt': {\n 'dd': true,\n 'dt': true\n },\n 'li': {\n 'li': true\n },\n 'option': {\n 'option': true,\n 'optgroup': true\n },\n 'optgroup': {\n 'optgroup': true\n },\n 'p': {\n 'address': true,\n 'article': true,\n 'aside': true,\n 'blockquote': true,\n 'dir': true,\n 'div': true,\n 'dl': true,\n 'fieldset': true,\n 'footer': true,\n 'form': true,\n 'h1': true,\n 'h2': true,\n 'h3': true,\n 'h4': true,\n 'h5': true,\n 'h6': true,\n 'header': true,\n 'hgroup': true,\n 'hr': true,\n 'menu': true,\n 'nav': true,\n 'ol': true,\n 'p': true,\n 'pre': true,\n 'section': true,\n 'table': true,\n 'ul': true\n },\n 'rp': {\n 'rp': true,\n 'rt': true\n },\n 'rt': {\n 'rp': true,\n 'rt': true\n },\n 'tbody': {\n 'tbody': true,\n 'tfoot': true\n },\n 'td': {\n 'td': true,\n 'th': true\n },\n 'tfoot': {\n 'tbody': true\n },\n 'th': {\n 'td': true,\n 'th': true\n },\n 'thead': {\n 'tbody': true,\n 'tfoot': true\n },\n 'tr': {\n 'tr': true\n }\n },\n doNotIndent: {\n \"pre\": true\n },\n allowUnquoted: true,\n allowMissing: true,\n caseFold: true\n };\n var xmlConfig = {\n autoSelfClosers: {},\n implicitlyClosed: {},\n contextGrabbers: {},\n doNotIndent: {},\n allowUnquoted: false,\n allowMissing: false,\n allowMissingTagName: false,\n caseFold: false\n };\n CodeMirror.defineMode(\"xml\", function (editorConf, config_) {\n var indentUnit = editorConf.indentUnit;\n var config = {};\n var defaults = config_.htmlMode ? htmlConfig : xmlConfig;\n\n for (var prop in defaults) {\n config[prop] = defaults[prop];\n }\n\n for (var prop in config_) {\n config[prop] = config_[prop];\n } // Return variables for tokenizers\n\n\n var type, setStyle;\n\n function inText(stream, state) {\n function chain(parser) {\n state.tokenize = parser;\n return parser(stream, state);\n }\n\n var ch = stream.next();\n\n if (ch == \"<\") {\n if (stream.eat(\"!\")) {\n if (stream.eat(\"[\")) {\n if (stream.match(\"CDATA[\")) return chain(inBlock(\"atom\", \"]]>\"));else return null;\n } else if (stream.match(\"--\")) {\n return chain(inBlock(\"comment\", \"-->\"));\n } else if (stream.match(\"DOCTYPE\", true, true)) {\n stream.eatWhile(/[\\w\\._\\-]/);\n return chain(doctype(1));\n } else {\n return null;\n }\n } else if (stream.eat(\"?\")) {\n stream.eatWhile(/[\\w\\._\\-]/);\n state.tokenize = inBlock(\"meta\", \"?>\");\n return \"meta\";\n } else {\n type = stream.eat(\"/\") ? \"closeTag\" : \"openTag\";\n state.tokenize = inTag;\n return \"tag bracket\";\n }\n } else if (ch == \"&\") {\n var ok;\n\n if (stream.eat(\"#\")) {\n if (stream.eat(\"x\")) {\n ok = stream.eatWhile(/[a-fA-F\\d]/) && stream.eat(\";\");\n } else {\n ok = stream.eatWhile(/[\\d]/) && stream.eat(\";\");\n }\n } else {\n ok = stream.eatWhile(/[\\w\\.\\-:]/) && stream.eat(\";\");\n }\n\n return ok ? \"atom\" : \"error\";\n } else {\n stream.eatWhile(/[^&<]/);\n return null;\n }\n }\n\n inText.isInText = true;\n\n function inTag(stream, state) {\n var ch = stream.next();\n\n if (ch == \">\" || ch == \"/\" && stream.eat(\">\")) {\n state.tokenize = inText;\n type = ch == \">\" ? \"endTag\" : \"selfcloseTag\";\n return \"tag bracket\";\n } else if (ch == \"=\") {\n type = \"equals\";\n return null;\n } else if (ch == \"<\") {\n state.tokenize = inText;\n state.state = baseState;\n state.tagName = state.tagStart = null;\n var next = state.tokenize(stream, state);\n return next ? next + \" tag error\" : \"tag error\";\n } else if (/[\\'\\\"]/.test(ch)) {\n state.tokenize = inAttribute(ch);\n state.stringStartCol = stream.column();\n return state.tokenize(stream, state);\n } else {\n stream.match(/^[^\\s\\u00a0=<>\\\"\\']*[^\\s\\u00a0=<>\\\"\\'\\/]/);\n return \"word\";\n }\n }\n\n function inAttribute(quote) {\n var closure = function closure(stream, state) {\n while (!stream.eol()) {\n if (stream.next() == quote) {\n state.tokenize = inTag;\n break;\n }\n }\n\n return \"string\";\n };\n\n closure.isInAttribute = true;\n return closure;\n }\n\n function inBlock(style, terminator) {\n return function (stream, state) {\n while (!stream.eol()) {\n if (stream.match(terminator)) {\n state.tokenize = inText;\n break;\n }\n\n stream.next();\n }\n\n return style;\n };\n }\n\n function doctype(depth) {\n return function (stream, state) {\n var ch;\n\n while ((ch = stream.next()) != null) {\n if (ch == \"<\") {\n state.tokenize = doctype(depth + 1);\n return state.tokenize(stream, state);\n } else if (ch == \">\") {\n if (depth == 1) {\n state.tokenize = inText;\n break;\n } else {\n state.tokenize = doctype(depth - 1);\n return state.tokenize(stream, state);\n }\n }\n }\n\n return \"meta\";\n };\n }\n\n function Context(state, tagName, startOfLine) {\n this.prev = state.context;\n this.tagName = tagName;\n this.indent = state.indented;\n this.startOfLine = startOfLine;\n if (config.doNotIndent.hasOwnProperty(tagName) || state.context && state.context.noIndent) this.noIndent = true;\n }\n\n function popContext(state) {\n if (state.context) state.context = state.context.prev;\n }\n\n function maybePopContext(state, nextTagName) {\n var parentTagName;\n\n while (true) {\n if (!state.context) {\n return;\n }\n\n parentTagName = state.context.tagName;\n\n if (!config.contextGrabbers.hasOwnProperty(parentTagName) || !config.contextGrabbers[parentTagName].hasOwnProperty(nextTagName)) {\n return;\n }\n\n popContext(state);\n }\n }\n\n function baseState(type, stream, state) {\n if (type == \"openTag\") {\n state.tagStart = stream.column();\n return tagNameState;\n } else if (type == \"closeTag\") {\n return closeTagNameState;\n } else {\n return baseState;\n }\n }\n\n function tagNameState(type, stream, state) {\n if (type == \"word\") {\n state.tagName = stream.current();\n setStyle = \"tag\";\n return attrState;\n } else if (config.allowMissingTagName && type == \"endTag\") {\n setStyle = \"tag bracket\";\n return attrState(type, stream, state);\n } else {\n setStyle = \"error\";\n return tagNameState;\n }\n }\n\n function closeTagNameState(type, stream, state) {\n if (type == \"word\") {\n var tagName = stream.current();\n if (state.context && state.context.tagName != tagName && config.implicitlyClosed.hasOwnProperty(state.context.tagName)) popContext(state);\n\n if (state.context && state.context.tagName == tagName || config.matchClosing === false) {\n setStyle = \"tag\";\n return closeState;\n } else {\n setStyle = \"tag error\";\n return closeStateErr;\n }\n } else if (config.allowMissingTagName && type == \"endTag\") {\n setStyle = \"tag bracket\";\n return closeState(type, stream, state);\n } else {\n setStyle = \"error\";\n return closeStateErr;\n }\n }\n\n function closeState(type, _stream, state) {\n if (type != \"endTag\") {\n setStyle = \"error\";\n return closeState;\n }\n\n popContext(state);\n return baseState;\n }\n\n function closeStateErr(type, stream, state) {\n setStyle = \"error\";\n return closeState(type, stream, state);\n }\n\n function attrState(type, _stream, state) {\n if (type == \"word\") {\n setStyle = \"attribute\";\n return attrEqState;\n } else if (type == \"endTag\" || type == \"selfcloseTag\") {\n var tagName = state.tagName,\n tagStart = state.tagStart;\n state.tagName = state.tagStart = null;\n\n if (type == \"selfcloseTag\" || config.autoSelfClosers.hasOwnProperty(tagName)) {\n maybePopContext(state, tagName);\n } else {\n maybePopContext(state, tagName);\n state.context = new Context(state, tagName, tagStart == state.indented);\n }\n\n return baseState;\n }\n\n setStyle = \"error\";\n return attrState;\n }\n\n function attrEqState(type, stream, state) {\n if (type == \"equals\") return attrValueState;\n if (!config.allowMissing) setStyle = \"error\";\n return attrState(type, stream, state);\n }\n\n function attrValueState(type, stream, state) {\n if (type == \"string\") return attrContinuedState;\n\n if (type == \"word\" && config.allowUnquoted) {\n setStyle = \"string\";\n return attrState;\n }\n\n setStyle = \"error\";\n return attrState(type, stream, state);\n }\n\n function attrContinuedState(type, stream, state) {\n if (type == \"string\") return attrContinuedState;\n return attrState(type, stream, state);\n }\n\n return {\n startState: function startState(baseIndent) {\n var state = {\n tokenize: inText,\n state: baseState,\n indented: baseIndent || 0,\n tagName: null,\n tagStart: null,\n context: null\n };\n if (baseIndent != null) state.baseIndent = baseIndent;\n return state;\n },\n token: function token(stream, state) {\n if (!state.tagName && stream.sol()) state.indented = stream.indentation();\n if (stream.eatSpace()) return null;\n type = null;\n var style = state.tokenize(stream, state);\n\n if ((style || type) && style != \"comment\") {\n setStyle = null;\n state.state = state.state(type || style, stream, state);\n if (setStyle) style = setStyle == \"error\" ? style + \" error\" : setStyle;\n }\n\n return style;\n },\n indent: function indent(state, textAfter, fullLine) {\n var context = state.context; // Indent multi-line strings (e.g. css).\n\n if (state.tokenize.isInAttribute) {\n if (state.tagStart == state.indented) return state.stringStartCol + 1;else return state.indented + indentUnit;\n }\n\n if (context && context.noIndent) return CodeMirror.Pass;\n if (state.tokenize != inTag && state.tokenize != inText) return fullLine ? fullLine.match(/^(\\s*)/)[0].length : 0; // Indent the starts of attribute names.\n\n if (state.tagName) {\n if (config.multilineTagIndentPastTag !== false) return state.tagStart + state.tagName.length + 2;else return state.tagStart + indentUnit * (config.multilineTagIndentFactor || 1);\n }\n\n if (config.alignCDATA && /$/,\n blockCommentStart: \"\",\n configuration: config.htmlMode ? \"html\" : \"xml\",\n helperType: config.htmlMode ? \"html\" : \"xml\",\n skipAttribute: function skipAttribute(state) {\n if (state.state == attrValueState) state.state = attrState;\n },\n xmlCurrentTag: function xmlCurrentTag(state) {\n return state.tagName ? {\n name: state.tagName,\n close: state.type == \"closeTag\"\n } : null;\n },\n xmlCurrentContext: function xmlCurrentContext(state) {\n var context = [];\n\n for (var cx = state.context; cx; cx = cx.prev) {\n if (cx.tagName) context.push(cx.tagName);\n }\n\n return context.reverse();\n }\n };\n });\n CodeMirror.defineMIME(\"text/xml\", \"xml\");\n CodeMirror.defineMIME(\"application/xml\", \"xml\");\n if (!CodeMirror.mimeModes.hasOwnProperty(\"text/html\")) CodeMirror.defineMIME(\"text/html\", {\n name: \"xml\",\n htmlMode: true\n });\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/LICENSE\n// Utility function that allows modes to be combined. The mode given\n// as the base argument takes care of most of the normal mode\n// functionality, but a second (typically simple) mode is used, which\n// can override the style of text. Both modes get to parse all of the\n// text, but when both assign a non-null style to a piece of code, the\n// overlay wins, unless the combine argument was true and not overridden,\n// or state.overlay.combineTokens was true, in which case the styles are\n// combined.\n(function (mod) {\n if ((typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) == \"object\" && (typeof module === \"undefined\" ? \"undefined\" : _typeof(module)) == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"));else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);else // Plain browser env\n mod(CodeMirror);\n})(function (CodeMirror) {\n \"use strict\";\n\n CodeMirror.overlayMode = function (base, overlay, combine) {\n return {\n startState: function startState() {\n return {\n base: CodeMirror.startState(base),\n overlay: CodeMirror.startState(overlay),\n basePos: 0,\n baseCur: null,\n overlayPos: 0,\n overlayCur: null,\n streamSeen: null\n };\n },\n copyState: function copyState(state) {\n return {\n base: CodeMirror.copyState(base, state.base),\n overlay: CodeMirror.copyState(overlay, state.overlay),\n basePos: state.basePos,\n baseCur: null,\n overlayPos: state.overlayPos,\n overlayCur: null\n };\n },\n token: function token(stream, state) {\n if (stream != state.streamSeen || Math.min(state.basePos, state.overlayPos) < stream.start) {\n state.streamSeen = stream;\n state.basePos = state.overlayPos = stream.start;\n }\n\n if (stream.start == state.basePos) {\n state.baseCur = base.token(stream, state.base);\n state.basePos = stream.pos;\n }\n\n if (stream.start == state.overlayPos) {\n stream.pos = stream.start;\n state.overlayCur = overlay.token(stream, state.overlay);\n state.overlayPos = stream.pos;\n }\n\n stream.pos = Math.min(state.basePos, state.overlayPos); // state.overlay.combineTokens always takes precedence over combine,\n // unless set to null\n\n if (state.overlayCur == null) return state.baseCur;else if (state.baseCur != null && state.overlay.combineTokens || combine && state.overlay.combineTokens == null) return state.baseCur + \" \" + state.overlayCur;else return state.overlayCur;\n },\n indent: base.indent && function (state, textAfter, line) {\n return base.indent(state.base, textAfter, line);\n },\n electricChars: base.electricChars,\n innerMode: function innerMode(state) {\n return {\n state: state.base,\n mode: base\n };\n },\n blankLine: function blankLine(state) {\n var baseToken, overlayToken;\n if (base.blankLine) baseToken = base.blankLine(state.base);\n if (overlay.blankLine) overlayToken = overlay.blankLine(state.overlay);\n return overlayToken == null ? baseToken : combine && baseToken != null ? baseToken + \" \" + overlayToken : overlayToken;\n }\n };\n };\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nvar g; // This works in non-strict mode\n\ng = function () {\n return this;\n}();\n\ntry {\n // This works if eval is allowed (see CSP)\n g = g || new Function(\"return this\")();\n} catch (e) {\n // This works if the window reference is available\n if ((typeof window === \"undefined\" ? \"undefined\" : _typeof(window)) === \"object\") g = window;\n} // g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\n\nmodule.exports = g;","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/LICENSE\n(function (mod) {\n if ((typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) == \"object\" && (typeof module === \"undefined\" ? \"undefined\" : _typeof(module)) == \"object\") // CommonJS\n mod(require(\"../lib/codemirror\"));else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../lib/codemirror\"], mod);else // Plain browser env\n mod(CodeMirror);\n})(function (CodeMirror) {\n \"use strict\";\n\n CodeMirror.modeInfo = [{\n name: \"APL\",\n mime: \"text/apl\",\n mode: \"apl\",\n ext: [\"dyalog\", \"apl\"]\n }, {\n name: \"PGP\",\n mimes: [\"application/pgp\", \"application/pgp-encrypted\", \"application/pgp-keys\", \"application/pgp-signature\"],\n mode: \"asciiarmor\",\n ext: [\"asc\", \"pgp\", \"sig\"]\n }, {\n name: \"ASN.1\",\n mime: \"text/x-ttcn-asn\",\n mode: \"asn.1\",\n ext: [\"asn\", \"asn1\"]\n }, {\n name: \"Asterisk\",\n mime: \"text/x-asterisk\",\n mode: \"asterisk\",\n file: /^extensions\\.conf$/i\n }, {\n name: \"Brainfuck\",\n mime: \"text/x-brainfuck\",\n mode: \"brainfuck\",\n ext: [\"b\", \"bf\"]\n }, {\n name: \"C\",\n mime: \"text/x-csrc\",\n mode: \"clike\",\n ext: [\"c\", \"h\", \"ino\"]\n }, {\n name: \"C++\",\n mime: \"text/x-c++src\",\n mode: \"clike\",\n ext: [\"cpp\", \"c++\", \"cc\", \"cxx\", \"hpp\", \"h++\", \"hh\", \"hxx\"],\n alias: [\"cpp\"]\n }, {\n name: \"Cobol\",\n mime: \"text/x-cobol\",\n mode: \"cobol\",\n ext: [\"cob\", \"cpy\"]\n }, {\n name: \"C#\",\n mime: \"text/x-csharp\",\n mode: \"clike\",\n ext: [\"cs\"],\n alias: [\"csharp\", \"cs\"]\n }, {\n name: \"Clojure\",\n mime: \"text/x-clojure\",\n mode: \"clojure\",\n ext: [\"clj\", \"cljc\", \"cljx\"]\n }, {\n name: \"ClojureScript\",\n mime: \"text/x-clojurescript\",\n mode: \"clojure\",\n ext: [\"cljs\"]\n }, {\n name: \"Closure Stylesheets (GSS)\",\n mime: \"text/x-gss\",\n mode: \"css\",\n ext: [\"gss\"]\n }, {\n name: \"CMake\",\n mime: \"text/x-cmake\",\n mode: \"cmake\",\n ext: [\"cmake\", \"cmake.in\"],\n file: /^CMakeLists.txt$/\n }, {\n name: \"CoffeeScript\",\n mimes: [\"application/vnd.coffeescript\", \"text/coffeescript\", \"text/x-coffeescript\"],\n mode: \"coffeescript\",\n ext: [\"coffee\"],\n alias: [\"coffee\", \"coffee-script\"]\n }, {\n name: \"Common Lisp\",\n mime: \"text/x-common-lisp\",\n mode: \"commonlisp\",\n ext: [\"cl\", \"lisp\", \"el\"],\n alias: [\"lisp\"]\n }, {\n name: \"Cypher\",\n mime: \"application/x-cypher-query\",\n mode: \"cypher\",\n ext: [\"cyp\", \"cypher\"]\n }, {\n name: \"Cython\",\n mime: \"text/x-cython\",\n mode: \"python\",\n ext: [\"pyx\", \"pxd\", \"pxi\"]\n }, {\n name: \"Crystal\",\n mime: \"text/x-crystal\",\n mode: \"crystal\",\n ext: [\"cr\"]\n }, {\n name: \"CSS\",\n mime: \"text/css\",\n mode: \"css\",\n ext: [\"css\"]\n }, {\n name: \"CQL\",\n mime: \"text/x-cassandra\",\n mode: \"sql\",\n ext: [\"cql\"]\n }, {\n name: \"D\",\n mime: \"text/x-d\",\n mode: \"d\",\n ext: [\"d\"]\n }, {\n name: \"Dart\",\n mimes: [\"application/dart\", \"text/x-dart\"],\n mode: \"dart\",\n ext: [\"dart\"]\n }, {\n name: \"diff\",\n mime: \"text/x-diff\",\n mode: \"diff\",\n ext: [\"diff\", \"patch\"]\n }, {\n name: \"Django\",\n mime: \"text/x-django\",\n mode: \"django\"\n }, {\n name: \"Dockerfile\",\n mime: \"text/x-dockerfile\",\n mode: \"dockerfile\",\n file: /^Dockerfile$/\n }, {\n name: \"DTD\",\n mime: \"application/xml-dtd\",\n mode: \"dtd\",\n ext: [\"dtd\"]\n }, {\n name: \"Dylan\",\n mime: \"text/x-dylan\",\n mode: \"dylan\",\n ext: [\"dylan\", \"dyl\", \"intr\"]\n }, {\n name: \"EBNF\",\n mime: \"text/x-ebnf\",\n mode: \"ebnf\"\n }, {\n name: \"ECL\",\n mime: \"text/x-ecl\",\n mode: \"ecl\",\n ext: [\"ecl\"]\n }, {\n name: \"edn\",\n mime: \"application/edn\",\n mode: \"clojure\",\n ext: [\"edn\"]\n }, {\n name: \"Eiffel\",\n mime: \"text/x-eiffel\",\n mode: \"eiffel\",\n ext: [\"e\"]\n }, {\n name: \"Elm\",\n mime: \"text/x-elm\",\n mode: \"elm\",\n ext: [\"elm\"]\n }, {\n name: \"Embedded Javascript\",\n mime: \"application/x-ejs\",\n mode: \"htmlembedded\",\n ext: [\"ejs\"]\n }, {\n name: \"Embedded Ruby\",\n mime: \"application/x-erb\",\n mode: \"htmlembedded\",\n ext: [\"erb\"]\n }, {\n name: \"Erlang\",\n mime: \"text/x-erlang\",\n mode: \"erlang\",\n ext: [\"erl\"]\n }, {\n name: \"Esper\",\n mime: \"text/x-esper\",\n mode: \"sql\"\n }, {\n name: \"Factor\",\n mime: \"text/x-factor\",\n mode: \"factor\",\n ext: [\"factor\"]\n }, {\n name: \"FCL\",\n mime: \"text/x-fcl\",\n mode: \"fcl\"\n }, {\n name: \"Forth\",\n mime: \"text/x-forth\",\n mode: \"forth\",\n ext: [\"forth\", \"fth\", \"4th\"]\n }, {\n name: \"Fortran\",\n mime: \"text/x-fortran\",\n mode: \"fortran\",\n ext: [\"f\", \"for\", \"f77\", \"f90\", \"f95\"]\n }, {\n name: \"F#\",\n mime: \"text/x-fsharp\",\n mode: \"mllike\",\n ext: [\"fs\"],\n alias: [\"fsharp\"]\n }, {\n name: \"Gas\",\n mime: \"text/x-gas\",\n mode: \"gas\",\n ext: [\"s\"]\n }, {\n name: \"Gherkin\",\n mime: \"text/x-feature\",\n mode: \"gherkin\",\n ext: [\"feature\"]\n }, {\n name: \"GitHub Flavored Markdown\",\n mime: \"text/x-gfm\",\n mode: \"gfm\",\n file: /^(readme|contributing|history).md$/i\n }, {\n name: \"Go\",\n mime: \"text/x-go\",\n mode: \"go\",\n ext: [\"go\"]\n }, {\n name: \"Groovy\",\n mime: \"text/x-groovy\",\n mode: \"groovy\",\n ext: [\"groovy\", \"gradle\"],\n file: /^Jenkinsfile$/\n }, {\n name: \"HAML\",\n mime: \"text/x-haml\",\n mode: \"haml\",\n ext: [\"haml\"]\n }, {\n name: \"Haskell\",\n mime: \"text/x-haskell\",\n mode: \"haskell\",\n ext: [\"hs\"]\n }, {\n name: \"Haskell (Literate)\",\n mime: \"text/x-literate-haskell\",\n mode: \"haskell-literate\",\n ext: [\"lhs\"]\n }, {\n name: \"Haxe\",\n mime: \"text/x-haxe\",\n mode: \"haxe\",\n ext: [\"hx\"]\n }, {\n name: \"HXML\",\n mime: \"text/x-hxml\",\n mode: \"haxe\",\n ext: [\"hxml\"]\n }, {\n name: \"ASP.NET\",\n mime: \"application/x-aspx\",\n mode: \"htmlembedded\",\n ext: [\"aspx\"],\n alias: [\"asp\", \"aspx\"]\n }, {\n name: \"HTML\",\n mime: \"text/html\",\n mode: \"htmlmixed\",\n ext: [\"html\", \"htm\", \"handlebars\", \"hbs\"],\n alias: [\"xhtml\"]\n }, {\n name: \"HTTP\",\n mime: \"message/http\",\n mode: \"http\"\n }, {\n name: \"IDL\",\n mime: \"text/x-idl\",\n mode: \"idl\",\n ext: [\"pro\"]\n }, {\n name: \"Pug\",\n mime: \"text/x-pug\",\n mode: \"pug\",\n ext: [\"jade\", \"pug\"],\n alias: [\"jade\"]\n }, {\n name: \"Java\",\n mime: \"text/x-java\",\n mode: \"clike\",\n ext: [\"java\"]\n }, {\n name: \"Java Server Pages\",\n mime: \"application/x-jsp\",\n mode: \"htmlembedded\",\n ext: [\"jsp\"],\n alias: [\"jsp\"]\n }, {\n name: \"JavaScript\",\n mimes: [\"text/javascript\", \"text/ecmascript\", \"application/javascript\", \"application/x-javascript\", \"application/ecmascript\"],\n mode: \"javascript\",\n ext: [\"js\"],\n alias: [\"ecmascript\", \"js\", \"node\"]\n }, {\n name: \"JSON\",\n mimes: [\"application/json\", \"application/x-json\"],\n mode: \"javascript\",\n ext: [\"json\", \"map\"],\n alias: [\"json5\"]\n }, {\n name: \"JSON-LD\",\n mime: \"application/ld+json\",\n mode: \"javascript\",\n ext: [\"jsonld\"],\n alias: [\"jsonld\"]\n }, {\n name: \"JSX\",\n mime: \"text/jsx\",\n mode: \"jsx\",\n ext: [\"jsx\"]\n }, {\n name: \"Jinja2\",\n mime: \"text/jinja2\",\n mode: \"jinja2\",\n ext: [\"j2\", \"jinja\", \"jinja2\"]\n }, {\n name: \"Julia\",\n mime: \"text/x-julia\",\n mode: \"julia\",\n ext: [\"jl\"]\n }, {\n name: \"Kotlin\",\n mime: \"text/x-kotlin\",\n mode: \"clike\",\n ext: [\"kt\"]\n }, {\n name: \"LESS\",\n mime: \"text/x-less\",\n mode: \"css\",\n ext: [\"less\"]\n }, {\n name: \"LiveScript\",\n mime: \"text/x-livescript\",\n mode: \"livescript\",\n ext: [\"ls\"],\n alias: [\"ls\"]\n }, {\n name: \"Lua\",\n mime: \"text/x-lua\",\n mode: \"lua\",\n ext: [\"lua\"]\n }, {\n name: \"Markdown\",\n mime: \"text/x-markdown\",\n mode: \"markdown\",\n ext: [\"markdown\", \"md\", \"mkd\"]\n }, {\n name: \"mIRC\",\n mime: \"text/mirc\",\n mode: \"mirc\"\n }, {\n name: \"MariaDB SQL\",\n mime: \"text/x-mariadb\",\n mode: \"sql\"\n }, {\n name: \"Mathematica\",\n mime: \"text/x-mathematica\",\n mode: \"mathematica\",\n ext: [\"m\", \"nb\", \"wl\", \"wls\"]\n }, {\n name: \"Modelica\",\n mime: \"text/x-modelica\",\n mode: \"modelica\",\n ext: [\"mo\"]\n }, {\n name: \"MUMPS\",\n mime: \"text/x-mumps\",\n mode: \"mumps\",\n ext: [\"mps\"]\n }, {\n name: \"MS SQL\",\n mime: \"text/x-mssql\",\n mode: \"sql\"\n }, {\n name: \"mbox\",\n mime: \"application/mbox\",\n mode: \"mbox\",\n ext: [\"mbox\"]\n }, {\n name: \"MySQL\",\n mime: \"text/x-mysql\",\n mode: \"sql\"\n }, {\n name: \"Nginx\",\n mime: \"text/x-nginx-conf\",\n mode: \"nginx\",\n file: /nginx.*\\.conf$/i\n }, {\n name: \"NSIS\",\n mime: \"text/x-nsis\",\n mode: \"nsis\",\n ext: [\"nsh\", \"nsi\"]\n }, {\n name: \"NTriples\",\n mimes: [\"application/n-triples\", \"application/n-quads\", \"text/n-triples\"],\n mode: \"ntriples\",\n ext: [\"nt\", \"nq\"]\n }, {\n name: \"Objective-C\",\n mime: \"text/x-objectivec\",\n mode: \"clike\",\n ext: [\"m\"],\n alias: [\"objective-c\", \"objc\"]\n }, {\n name: \"Objective-C++\",\n mime: \"text/x-objectivec++\",\n mode: \"clike\",\n ext: [\"mm\"],\n alias: [\"objective-c++\", \"objc++\"]\n }, {\n name: \"OCaml\",\n mime: \"text/x-ocaml\",\n mode: \"mllike\",\n ext: [\"ml\", \"mli\", \"mll\", \"mly\"]\n }, {\n name: \"Octave\",\n mime: \"text/x-octave\",\n mode: \"octave\",\n ext: [\"m\"]\n }, {\n name: \"Oz\",\n mime: \"text/x-oz\",\n mode: \"oz\",\n ext: [\"oz\"]\n }, {\n name: \"Pascal\",\n mime: \"text/x-pascal\",\n mode: \"pascal\",\n ext: [\"p\", \"pas\"]\n }, {\n name: \"PEG.js\",\n mime: \"null\",\n mode: \"pegjs\",\n ext: [\"jsonld\"]\n }, {\n name: \"Perl\",\n mime: \"text/x-perl\",\n mode: \"perl\",\n ext: [\"pl\", \"pm\"]\n }, {\n name: \"PHP\",\n mimes: [\"text/x-php\", \"application/x-httpd-php\", \"application/x-httpd-php-open\"],\n mode: \"php\",\n ext: [\"php\", \"php3\", \"php4\", \"php5\", \"php7\", \"phtml\"]\n }, {\n name: \"Pig\",\n mime: \"text/x-pig\",\n mode: \"pig\",\n ext: [\"pig\"]\n }, {\n name: \"Plain Text\",\n mime: \"text/plain\",\n mode: \"null\",\n ext: [\"txt\", \"text\", \"conf\", \"def\", \"list\", \"log\"]\n }, {\n name: \"PLSQL\",\n mime: \"text/x-plsql\",\n mode: \"sql\",\n ext: [\"pls\"]\n }, {\n name: \"PostgreSQL\",\n mime: \"text/x-pgsql\",\n mode: \"sql\"\n }, {\n name: \"PowerShell\",\n mime: \"application/x-powershell\",\n mode: \"powershell\",\n ext: [\"ps1\", \"psd1\", \"psm1\"]\n }, {\n name: \"Properties files\",\n mime: \"text/x-properties\",\n mode: \"properties\",\n ext: [\"properties\", \"ini\", \"in\"],\n alias: [\"ini\", \"properties\"]\n }, {\n name: \"ProtoBuf\",\n mime: \"text/x-protobuf\",\n mode: \"protobuf\",\n ext: [\"proto\"]\n }, {\n name: \"Python\",\n mime: \"text/x-python\",\n mode: \"python\",\n ext: [\"BUILD\", \"bzl\", \"py\", \"pyw\"],\n file: /^(BUCK|BUILD)$/\n }, {\n name: \"Puppet\",\n mime: \"text/x-puppet\",\n mode: \"puppet\",\n ext: [\"pp\"]\n }, {\n name: \"Q\",\n mime: \"text/x-q\",\n mode: \"q\",\n ext: [\"q\"]\n }, {\n name: \"R\",\n mime: \"text/x-rsrc\",\n mode: \"r\",\n ext: [\"r\", \"R\"],\n alias: [\"rscript\"]\n }, {\n name: \"reStructuredText\",\n mime: \"text/x-rst\",\n mode: \"rst\",\n ext: [\"rst\"],\n alias: [\"rst\"]\n }, {\n name: \"RPM Changes\",\n mime: \"text/x-rpm-changes\",\n mode: \"rpm\"\n }, {\n name: \"RPM Spec\",\n mime: \"text/x-rpm-spec\",\n mode: \"rpm\",\n ext: [\"spec\"]\n }, {\n name: \"Ruby\",\n mime: \"text/x-ruby\",\n mode: \"ruby\",\n ext: [\"rb\"],\n alias: [\"jruby\", \"macruby\", \"rake\", \"rb\", \"rbx\"]\n }, {\n name: \"Rust\",\n mime: \"text/x-rustsrc\",\n mode: \"rust\",\n ext: [\"rs\"]\n }, {\n name: \"SAS\",\n mime: \"text/x-sas\",\n mode: \"sas\",\n ext: [\"sas\"]\n }, {\n name: \"Sass\",\n mime: \"text/x-sass\",\n mode: \"sass\",\n ext: [\"sass\"]\n }, {\n name: \"Scala\",\n mime: \"text/x-scala\",\n mode: \"clike\",\n ext: [\"scala\"]\n }, {\n name: \"Scheme\",\n mime: \"text/x-scheme\",\n mode: \"scheme\",\n ext: [\"scm\", \"ss\"]\n }, {\n name: \"SCSS\",\n mime: \"text/x-scss\",\n mode: \"css\",\n ext: [\"scss\"]\n }, {\n name: \"Shell\",\n mimes: [\"text/x-sh\", \"application/x-sh\"],\n mode: \"shell\",\n ext: [\"sh\", \"ksh\", \"bash\"],\n alias: [\"bash\", \"sh\", \"zsh\"],\n file: /^PKGBUILD$/\n }, {\n name: \"Sieve\",\n mime: \"application/sieve\",\n mode: \"sieve\",\n ext: [\"siv\", \"sieve\"]\n }, {\n name: \"Slim\",\n mimes: [\"text/x-slim\", \"application/x-slim\"],\n mode: \"slim\",\n ext: [\"slim\"]\n }, {\n name: \"Smalltalk\",\n mime: \"text/x-stsrc\",\n mode: \"smalltalk\",\n ext: [\"st\"]\n }, {\n name: \"Smarty\",\n mime: \"text/x-smarty\",\n mode: \"smarty\",\n ext: [\"tpl\"]\n }, {\n name: \"Solr\",\n mime: \"text/x-solr\",\n mode: \"solr\"\n }, {\n name: \"SML\",\n mime: \"text/x-sml\",\n mode: \"mllike\",\n ext: [\"sml\", \"sig\", \"fun\", \"smackspec\"]\n }, {\n name: \"Soy\",\n mime: \"text/x-soy\",\n mode: \"soy\",\n ext: [\"soy\"],\n alias: [\"closure template\"]\n }, {\n name: \"SPARQL\",\n mime: \"application/sparql-query\",\n mode: \"sparql\",\n ext: [\"rq\", \"sparql\"],\n alias: [\"sparul\"]\n }, {\n name: \"Spreadsheet\",\n mime: \"text/x-spreadsheet\",\n mode: \"spreadsheet\",\n alias: [\"excel\", \"formula\"]\n }, {\n name: \"SQL\",\n mime: \"text/x-sql\",\n mode: \"sql\",\n ext: [\"sql\"]\n }, {\n name: \"SQLite\",\n mime: \"text/x-sqlite\",\n mode: \"sql\"\n }, {\n name: \"Squirrel\",\n mime: \"text/x-squirrel\",\n mode: \"clike\",\n ext: [\"nut\"]\n }, {\n name: \"Stylus\",\n mime: \"text/x-styl\",\n mode: \"stylus\",\n ext: [\"styl\"]\n }, {\n name: \"Swift\",\n mime: \"text/x-swift\",\n mode: \"swift\",\n ext: [\"swift\"]\n }, {\n name: \"sTeX\",\n mime: \"text/x-stex\",\n mode: \"stex\"\n }, {\n name: \"LaTeX\",\n mime: \"text/x-latex\",\n mode: \"stex\",\n ext: [\"text\", \"ltx\", \"tex\"],\n alias: [\"tex\"]\n }, {\n name: \"SystemVerilog\",\n mime: \"text/x-systemverilog\",\n mode: \"verilog\",\n ext: [\"v\", \"sv\", \"svh\"]\n }, {\n name: \"Tcl\",\n mime: \"text/x-tcl\",\n mode: \"tcl\",\n ext: [\"tcl\"]\n }, {\n name: \"Textile\",\n mime: \"text/x-textile\",\n mode: \"textile\",\n ext: [\"textile\"]\n }, {\n name: \"TiddlyWiki \",\n mime: \"text/x-tiddlywiki\",\n mode: \"tiddlywiki\"\n }, {\n name: \"Tiki wiki\",\n mime: \"text/tiki\",\n mode: \"tiki\"\n }, {\n name: \"TOML\",\n mime: \"text/x-toml\",\n mode: \"toml\",\n ext: [\"toml\"]\n }, {\n name: \"Tornado\",\n mime: \"text/x-tornado\",\n mode: \"tornado\"\n }, {\n name: \"troff\",\n mime: \"text/troff\",\n mode: \"troff\",\n ext: [\"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\"]\n }, {\n name: \"TTCN\",\n mime: \"text/x-ttcn\",\n mode: \"ttcn\",\n ext: [\"ttcn\", \"ttcn3\", \"ttcnpp\"]\n }, {\n name: \"TTCN_CFG\",\n mime: \"text/x-ttcn-cfg\",\n mode: \"ttcn-cfg\",\n ext: [\"cfg\"]\n }, {\n name: \"Turtle\",\n mime: \"text/turtle\",\n mode: \"turtle\",\n ext: [\"ttl\"]\n }, {\n name: \"TypeScript\",\n mime: \"application/typescript\",\n mode: \"javascript\",\n ext: [\"ts\"],\n alias: [\"ts\"]\n }, {\n name: \"TypeScript-JSX\",\n mime: \"text/typescript-jsx\",\n mode: \"jsx\",\n ext: [\"tsx\"],\n alias: [\"tsx\"]\n }, {\n name: \"Twig\",\n mime: \"text/x-twig\",\n mode: \"twig\"\n }, {\n name: \"Web IDL\",\n mime: \"text/x-webidl\",\n mode: \"webidl\",\n ext: [\"webidl\"]\n }, {\n name: \"VB.NET\",\n mime: \"text/x-vb\",\n mode: \"vb\",\n ext: [\"vb\"]\n }, {\n name: \"VBScript\",\n mime: \"text/vbscript\",\n mode: \"vbscript\",\n ext: [\"vbs\"]\n }, {\n name: \"Velocity\",\n mime: \"text/velocity\",\n mode: \"velocity\",\n ext: [\"vtl\"]\n }, {\n name: \"Verilog\",\n mime: \"text/x-verilog\",\n mode: \"verilog\",\n ext: [\"v\"]\n }, {\n name: \"VHDL\",\n mime: \"text/x-vhdl\",\n mode: \"vhdl\",\n ext: [\"vhd\", \"vhdl\"]\n }, {\n name: \"Vue.js Component\",\n mimes: [\"script/x-vue\", \"text/x-vue\"],\n mode: \"vue\",\n ext: [\"vue\"]\n }, {\n name: \"XML\",\n mimes: [\"application/xml\", \"text/xml\"],\n mode: \"xml\",\n ext: [\"xml\", \"xsl\", \"xsd\", \"svg\"],\n alias: [\"rss\", \"wsdl\", \"xsd\"]\n }, {\n name: \"XQuery\",\n mime: \"application/xquery\",\n mode: \"xquery\",\n ext: [\"xy\", \"xquery\"]\n }, {\n name: \"Yacas\",\n mime: \"text/x-yacas\",\n mode: \"yacas\",\n ext: [\"ys\"]\n }, {\n name: \"YAML\",\n mimes: [\"text/x-yaml\", \"text/yaml\"],\n mode: \"yaml\",\n ext: [\"yaml\", \"yml\"],\n alias: [\"yml\"]\n }, {\n name: \"Z80\",\n mime: \"text/x-z80\",\n mode: \"z80\",\n ext: [\"z80\"]\n }, {\n name: \"mscgen\",\n mime: \"text/x-mscgen\",\n mode: \"mscgen\",\n ext: [\"mscgen\", \"mscin\", \"msc\"]\n }, {\n name: \"xu\",\n mime: \"text/x-xu\",\n mode: \"mscgen\",\n ext: [\"xu\"]\n }, {\n name: \"msgenny\",\n mime: \"text/x-msgenny\",\n mode: \"mscgen\",\n ext: [\"msgenny\"]\n }]; // Ensure all modes have a mime property for backwards compatibility\n\n for (var i = 0; i < CodeMirror.modeInfo.length; i++) {\n var info = CodeMirror.modeInfo[i];\n if (info.mimes) info.mime = info.mimes[0];\n }\n\n CodeMirror.findModeByMIME = function (mime) {\n mime = mime.toLowerCase();\n\n for (var i = 0; i < CodeMirror.modeInfo.length; i++) {\n var info = CodeMirror.modeInfo[i];\n if (info.mime == mime) return info;\n if (info.mimes) for (var j = 0; j < info.mimes.length; j++) {\n if (info.mimes[j] == mime) return info;\n }\n }\n\n if (/\\+xml$/.test(mime)) return CodeMirror.findModeByMIME(\"application/xml\");\n if (/\\+json$/.test(mime)) return CodeMirror.findModeByMIME(\"application/json\");\n };\n\n CodeMirror.findModeByExtension = function (ext) {\n ext = ext.toLowerCase();\n\n for (var i = 0; i < CodeMirror.modeInfo.length; i++) {\n var info = CodeMirror.modeInfo[i];\n if (info.ext) for (var j = 0; j < info.ext.length; j++) {\n if (info.ext[j] == ext) return info;\n }\n }\n };\n\n CodeMirror.findModeByFileName = function (filename) {\n for (var i = 0; i < CodeMirror.modeInfo.length; i++) {\n var info = CodeMirror.modeInfo[i];\n if (info.file && info.file.test(filename)) return info;\n }\n\n var dot = filename.lastIndexOf(\".\");\n var ext = dot > -1 && filename.substring(dot + 1, filename.length);\n if (ext) return CodeMirror.findModeByExtension(ext);\n };\n\n CodeMirror.findModeByName = function (name) {\n name = name.toLowerCase();\n\n for (var i = 0; i < CodeMirror.modeInfo.length; i++) {\n var info = CodeMirror.modeInfo[i];\n if (info.name.toLowerCase() == name) return info;\n if (info.alias) for (var j = 0; j < info.alias.length; j++) {\n if (info.alias[j].toLowerCase() == name) return info;\n }\n }\n };\n});","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nvar _require = require('./defaults.js'),\n defaults = _require.defaults;\n\nvar _require2 = require('./helpers.js'),\n rtrim = _require2.rtrim,\n splitCells = _require2.splitCells,\n _escape = _require2.escape,\n findClosingBracket = _require2.findClosingBracket;\n\nfunction outputLink(cap, link, raw) {\n var href = link.href;\n var title = link.title ? _escape(link.title) : null;\n\n if (cap[0].charAt(0) !== '!') {\n return {\n type: 'link',\n raw: raw,\n href: href,\n title: title,\n text: cap[1]\n };\n } else {\n return {\n type: 'image',\n raw: raw,\n text: _escape(cap[1]),\n href: href,\n title: title\n };\n }\n}\n/**\n * Tokenizer\n */\n\n\nmodule.exports = /*#__PURE__*/function () {\n function Tokenizer(options) {\n _classCallCheck(this, Tokenizer);\n\n this.options = options || defaults;\n }\n\n _createClass(Tokenizer, [{\n key: \"space\",\n value: function space(src) {\n var cap = this.rules.block.newline.exec(src);\n\n if (cap) {\n if (cap[0].length > 1) {\n return {\n type: 'space',\n raw: cap[0]\n };\n }\n\n return {\n raw: '\\n'\n };\n }\n }\n }, {\n key: \"code\",\n value: function code(src, tokens) {\n var cap = this.rules.block.code.exec(src);\n\n if (cap) {\n var lastToken = tokens[tokens.length - 1]; // An indented code block cannot interrupt a paragraph.\n\n if (lastToken && lastToken.type === 'paragraph') {\n tokens.pop();\n lastToken.text += '\\n' + cap[0].trimRight();\n lastToken.raw += '\\n' + cap[0];\n return lastToken;\n } else {\n var text = cap[0].replace(/^ {4}/gm, '');\n return {\n type: 'code',\n raw: cap[0],\n codeBlockStyle: 'indented',\n text: !this.options.pedantic ? rtrim(text, '\\n') : text\n };\n }\n }\n }\n }, {\n key: \"fences\",\n value: function fences(src) {\n var cap = this.rules.block.fences.exec(src);\n\n if (cap) {\n return {\n type: 'code',\n raw: cap[0],\n lang: cap[2] ? cap[2].trim() : cap[2],\n text: cap[3] || ''\n };\n }\n }\n }, {\n key: \"heading\",\n value: function heading(src) {\n var cap = this.rules.block.heading.exec(src);\n\n if (cap) {\n return {\n type: 'heading',\n raw: cap[0],\n depth: cap[1].length,\n text: cap[2]\n };\n }\n }\n }, {\n key: \"nptable\",\n value: function nptable(src) {\n var cap = this.rules.block.nptable.exec(src);\n\n if (cap) {\n var item = {\n type: 'table',\n header: splitCells(cap[1].replace(/^ *| *\\| *$/g, '')),\n align: cap[2].replace(/^ *|\\| *$/g, '').split(/ *\\| */),\n cells: cap[3] ? cap[3].replace(/\\n$/, '').split('\\n') : [],\n raw: cap[0]\n };\n\n if (item.header.length === item.align.length) {\n var l = item.align.length;\n var i;\n\n for (i = 0; i < l; i++) {\n if (/^ *-+: *$/.test(item.align[i])) {\n item.align[i] = 'right';\n } else if (/^ *:-+: *$/.test(item.align[i])) {\n item.align[i] = 'center';\n } else if (/^ *:-+ *$/.test(item.align[i])) {\n item.align[i] = 'left';\n } else {\n item.align[i] = null;\n }\n }\n\n l = item.cells.length;\n\n for (i = 0; i < l; i++) {\n item.cells[i] = splitCells(item.cells[i], item.header.length);\n }\n\n return item;\n }\n }\n }\n }, {\n key: \"hr\",\n value: function hr(src) {\n var cap = this.rules.block.hr.exec(src);\n\n if (cap) {\n return {\n type: 'hr',\n raw: cap[0]\n };\n }\n }\n }, {\n key: \"blockquote\",\n value: function blockquote(src) {\n var cap = this.rules.block.blockquote.exec(src);\n\n if (cap) {\n var text = cap[0].replace(/^ *> ?/gm, '');\n return {\n type: 'blockquote',\n raw: cap[0],\n text: text\n };\n }\n }\n }, {\n key: \"list\",\n value: function list(src) {\n var cap = this.rules.block.list.exec(src);\n\n if (cap) {\n var raw = cap[0];\n var bull = cap[2];\n var isordered = bull.length > 1;\n var list = {\n type: 'list',\n raw: raw,\n ordered: isordered,\n start: isordered ? +bull : '',\n loose: false,\n items: []\n }; // Get each top-level item.\n\n var itemMatch = cap[0].match(this.rules.block.item);\n var next = false,\n item,\n space,\n b,\n addBack,\n loose,\n istask,\n ischecked;\n var l = itemMatch.length;\n\n for (var i = 0; i < l; i++) {\n item = itemMatch[i];\n raw = item; // Remove the list item's bullet\n // so it is seen as the next token.\n\n space = item.length;\n item = item.replace(/^ *([*+-]|\\d+\\.) */, ''); // Outdent whatever the\n // list item contains. Hacky.\n\n if (~item.indexOf('\\n ')) {\n space -= item.length;\n item = !this.options.pedantic ? item.replace(new RegExp('^ {1,' + space + '}', 'gm'), '') : item.replace(/^ {1,4}/gm, '');\n } // Determine whether the next list item belongs here.\n // Backpedal if it does not belong in this list.\n\n\n if (i !== l - 1) {\n b = this.rules.block.bullet.exec(itemMatch[i + 1])[0];\n\n if (bull.length > 1 ? b.length === 1 : b.length > 1 || this.options.smartLists && b !== bull) {\n addBack = itemMatch.slice(i + 1).join('\\n');\n list.raw = list.raw.substring(0, list.raw.length - addBack.length);\n i = l - 1;\n }\n } // Determine whether item is loose or not.\n // Use: /(^|\\n)(?! )[^\\n]+\\n\\n(?!\\s*$)/\n // for discount behavior.\n\n\n loose = next || /\\n\\n(?!\\s*$)/.test(item);\n\n if (i !== l - 1) {\n next = item.charAt(item.length - 1) === '\\n';\n if (!loose) loose = next;\n }\n\n if (loose) {\n list.loose = true;\n } // Check for task list items\n\n\n istask = /^\\[[ xX]\\] /.test(item);\n ischecked = undefined;\n\n if (istask) {\n ischecked = item[1] !== ' ';\n item = item.replace(/^\\[[ xX]\\] +/, '');\n }\n\n list.items.push({\n raw: raw,\n task: istask,\n checked: ischecked,\n loose: loose,\n text: item\n });\n }\n\n return list;\n }\n }\n }, {\n key: \"html\",\n value: function html(src) {\n var cap = this.rules.block.html.exec(src);\n\n if (cap) {\n return {\n type: this.options.sanitize ? 'paragraph' : 'html',\n raw: cap[0],\n pre: !this.options.sanitizer && (cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style'),\n text: this.options.sanitize ? this.options.sanitizer ? this.options.sanitizer(cap[0]) : _escape(cap[0]) : cap[0]\n };\n }\n }\n }, {\n key: \"def\",\n value: function def(src) {\n var cap = this.rules.block.def.exec(src);\n\n if (cap) {\n if (cap[3]) cap[3] = cap[3].substring(1, cap[3].length - 1);\n var tag = cap[1].toLowerCase().replace(/\\s+/g, ' ');\n return {\n tag: tag,\n raw: cap[0],\n href: cap[2],\n title: cap[3]\n };\n }\n }\n }, {\n key: \"table\",\n value: function table(src) {\n var cap = this.rules.block.table.exec(src);\n\n if (cap) {\n var item = {\n type: 'table',\n header: splitCells(cap[1].replace(/^ *| *\\| *$/g, '')),\n align: cap[2].replace(/^ *|\\| *$/g, '').split(/ *\\| */),\n cells: cap[3] ? cap[3].replace(/\\n$/, '').split('\\n') : []\n };\n\n if (item.header.length === item.align.length) {\n item.raw = cap[0];\n var l = item.align.length;\n var i;\n\n for (i = 0; i < l; i++) {\n if (/^ *-+: *$/.test(item.align[i])) {\n item.align[i] = 'right';\n } else if (/^ *:-+: *$/.test(item.align[i])) {\n item.align[i] = 'center';\n } else if (/^ *:-+ *$/.test(item.align[i])) {\n item.align[i] = 'left';\n } else {\n item.align[i] = null;\n }\n }\n\n l = item.cells.length;\n\n for (i = 0; i < l; i++) {\n item.cells[i] = splitCells(item.cells[i].replace(/^ *\\| *| *\\| *$/g, ''), item.header.length);\n }\n\n return item;\n }\n }\n }\n }, {\n key: \"lheading\",\n value: function lheading(src) {\n var cap = this.rules.block.lheading.exec(src);\n\n if (cap) {\n return {\n type: 'heading',\n raw: cap[0],\n depth: cap[2].charAt(0) === '=' ? 1 : 2,\n text: cap[1]\n };\n }\n }\n }, {\n key: \"paragraph\",\n value: function paragraph(src) {\n var cap = this.rules.block.paragraph.exec(src);\n\n if (cap) {\n return {\n type: 'paragraph',\n raw: cap[0],\n text: cap[1].charAt(cap[1].length - 1) === '\\n' ? cap[1].slice(0, -1) : cap[1]\n };\n }\n }\n }, {\n key: \"text\",\n value: function text(src) {\n var cap = this.rules.block.text.exec(src);\n\n if (cap) {\n return {\n type: 'text',\n raw: cap[0],\n text: cap[0]\n };\n }\n }\n }, {\n key: \"escape\",\n value: function escape(src) {\n var cap = this.rules.inline.escape.exec(src);\n\n if (cap) {\n return {\n type: 'escape',\n raw: cap[0],\n text: _escape(cap[1])\n };\n }\n }\n }, {\n key: \"tag\",\n value: function tag(src, inLink, inRawBlock) {\n var cap = this.rules.inline.tag.exec(src);\n\n if (cap) {\n if (!inLink && /^/i.test(cap[0])) {\n inLink = false;\n }\n\n if (!inRawBlock && /^<(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n inRawBlock = true;\n } else if (inRawBlock && /^<\\/(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n inRawBlock = false;\n }\n\n return {\n type: this.options.sanitize ? 'text' : 'html',\n raw: cap[0],\n inLink: inLink,\n inRawBlock: inRawBlock,\n text: this.options.sanitize ? this.options.sanitizer ? this.options.sanitizer(cap[0]) : _escape(cap[0]) : cap[0]\n };\n }\n }\n }, {\n key: \"link\",\n value: function link(src) {\n var cap = this.rules.inline.link.exec(src);\n\n if (cap) {\n var lastParenIndex = findClosingBracket(cap[2], '()');\n\n if (lastParenIndex > -1) {\n var start = cap[0].indexOf('!') === 0 ? 5 : 4;\n var linkLen = start + cap[1].length + lastParenIndex;\n cap[2] = cap[2].substring(0, lastParenIndex);\n cap[0] = cap[0].substring(0, linkLen).trim();\n cap[3] = '';\n }\n\n var href = cap[2];\n var title = '';\n\n if (this.options.pedantic) {\n var link = /^([^'\"]*[^\\s])\\s+(['\"])(.*)\\2/.exec(href);\n\n if (link) {\n href = link[1];\n title = link[3];\n } else {\n title = '';\n }\n } else {\n title = cap[3] ? cap[3].slice(1, -1) : '';\n }\n\n href = href.trim().replace(/^<([\\s\\S]*)>$/, '$1');\n var token = outputLink(cap, {\n href: href ? href.replace(this.rules.inline._escapes, '$1') : href,\n title: title ? title.replace(this.rules.inline._escapes, '$1') : title\n }, cap[0]);\n return token;\n }\n }\n }, {\n key: \"reflink\",\n value: function reflink(src, links) {\n var cap;\n\n if ((cap = this.rules.inline.reflink.exec(src)) || (cap = this.rules.inline.nolink.exec(src))) {\n var link = (cap[2] || cap[1]).replace(/\\s+/g, ' ');\n link = links[link.toLowerCase()];\n\n if (!link || !link.href) {\n var text = cap[0].charAt(0);\n return {\n type: 'text',\n raw: text,\n text: text\n };\n }\n\n var token = outputLink(cap, link, cap[0]);\n return token;\n }\n }\n }, {\n key: \"strong\",\n value: function strong(src) {\n var cap = this.rules.inline.strong.exec(src);\n\n if (cap) {\n return {\n type: 'strong',\n raw: cap[0],\n text: cap[4] || cap[3] || cap[2] || cap[1]\n };\n }\n }\n }, {\n key: \"em\",\n value: function em(src) {\n var cap = this.rules.inline.em.exec(src);\n\n if (cap) {\n return {\n type: 'em',\n raw: cap[0],\n text: cap[6] || cap[5] || cap[4] || cap[3] || cap[2] || cap[1]\n };\n }\n }\n }, {\n key: \"codespan\",\n value: function codespan(src) {\n var cap = this.rules.inline.code.exec(src);\n\n if (cap) {\n return {\n type: 'codespan',\n raw: cap[0],\n text: _escape(cap[2].trim(), true)\n };\n }\n }\n }, {\n key: \"br\",\n value: function br(src) {\n var cap = this.rules.inline.br.exec(src);\n\n if (cap) {\n return {\n type: 'br',\n raw: cap[0]\n };\n }\n }\n }, {\n key: \"del\",\n value: function del(src) {\n var cap = this.rules.inline.del.exec(src);\n\n if (cap) {\n return {\n type: 'del',\n raw: cap[0],\n text: cap[1]\n };\n }\n }\n }, {\n key: \"autolink\",\n value: function autolink(src, mangle) {\n var cap = this.rules.inline.autolink.exec(src);\n\n if (cap) {\n var text, href;\n\n if (cap[2] === '@') {\n text = _escape(this.options.mangle ? mangle(cap[1]) : cap[1]);\n href = 'mailto:' + text;\n } else {\n text = _escape(cap[1]);\n href = text;\n }\n\n return {\n type: 'link',\n raw: cap[0],\n text: text,\n href: href,\n tokens: [{\n type: 'text',\n raw: text,\n text: text\n }]\n };\n }\n }\n }, {\n key: \"url\",\n value: function url(src, mangle) {\n var cap;\n\n if (cap = this.rules.inline.url.exec(src)) {\n var text, href;\n\n if (cap[2] === '@') {\n text = _escape(this.options.mangle ? mangle(cap[0]) : cap[0]);\n href = 'mailto:' + text;\n } else {\n // do extended autolink path validation\n var prevCapZero;\n\n do {\n prevCapZero = cap[0];\n cap[0] = this.rules.inline._backpedal.exec(cap[0])[0];\n } while (prevCapZero !== cap[0]);\n\n text = _escape(cap[0]);\n\n if (cap[1] === 'www.') {\n href = 'http://' + text;\n } else {\n href = text;\n }\n }\n\n return {\n type: 'link',\n raw: cap[0],\n text: text,\n href: href,\n tokens: [{\n type: 'text',\n raw: text,\n text: text\n }]\n };\n }\n }\n }, {\n key: \"inlineText\",\n value: function inlineText(src, inRawBlock, smartypants) {\n var cap = this.rules.inline.text.exec(src);\n\n if (cap) {\n var text;\n\n if (inRawBlock) {\n text = this.options.sanitize ? this.options.sanitizer ? this.options.sanitizer(cap[0]) : _escape(cap[0]) : cap[0];\n } else {\n text = _escape(this.options.smartypants ? smartypants(cap[0]) : cap[0]);\n }\n\n return {\n type: 'text',\n raw: cap[0],\n text: text\n };\n }\n }\n }]);\n\n return Tokenizer;\n}();","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nvar _require = require('./defaults.js'),\n defaults = _require.defaults;\n\nvar _require2 = require('./helpers.js'),\n cleanUrl = _require2.cleanUrl,\n escape = _require2.escape;\n/**\n * Renderer\n */\n\n\nmodule.exports = /*#__PURE__*/function () {\n function Renderer(options) {\n _classCallCheck(this, Renderer);\n\n this.options = options || defaults;\n }\n\n _createClass(Renderer, [{\n key: \"code\",\n value: function code(_code, infostring, escaped) {\n var lang = (infostring || '').match(/\\S*/)[0];\n\n if (this.options.highlight) {\n var out = this.options.highlight(_code, lang);\n\n if (out != null && out !== _code) {\n escaped = true;\n _code = out;\n }\n }\n\n if (!lang) {\n return ' ' + text + '
';\n }\n\n return '' + (escaped ? _code : escape(_code, true)) + '
\\n';\n }\n }, {\n key: \"blockquote\",\n value: function blockquote(quote) {\n return '' + (escaped ? _code : escape(_code, true)) + '
\\n' + quote + '
\\n';\n }\n }, {\n key: \"html\",\n value: function html(_html) {\n return _html;\n }\n }, {\n key: \"heading\",\n value: function heading(text, level, raw, slugger) {\n if (this.options.headerIds) {\n return '
\\n' : '
\\n';\n }\n }, {\n key: \"list\",\n value: function list(body, ordered, start) {\n var type = ordered ? 'ol' : 'ul',\n startatt = ordered && start !== 1 ? ' start=\"' + start + '\"' : '';\n return '<' + type + startatt + '>\\n' + body + '' + type + '>\\n';\n }\n }, {\n key: \"listitem\",\n value: function listitem(text) {\n return '
' + text + '
';\n }\n }, {\n key: \"br\",\n value: function br() {\n return this.options.xhtml ? '