{"version":3,"sources":["webpack:///src/js/conf/home/pages/resource/pages/file/pages/create/index.vue","webpack:///./src/js/conf/home/pages/resource/pages/file/pages/create/index.vue?8a8d","webpack:///./src/js/conf/home/pages/resource/pages/file/pages/create/index.vue?db26","webpack:///./src/js/conf/home/pages/resource/pages/file/pages/create/index.vue?e729","webpack:///./src/js/conf/home/pages/resource/pages/file/pages/create/index.vue","webpack:///src/js/module/components/spin/spin.vue","webpack:///src/js/module/components/listConstruction/listConstruction.vue","webpack:///src/js/module/components/secondaryMenu/secondaryMenu.vue","webpack:///./node_modules/codemirror/lib/codemirror.js","webpack:///./src/js/module/components/spin/spin.vue","webpack:///./src/js/module/components/spin/spin.vue?542d","webpack:///./src/js/module/components/spin/spin.vue?9371","webpack:///./src/js/module/components/spin/spin.vue?87eb","webpack:///./src/js/module/components/listConstruction/listConstruction.vue","webpack:///./src/js/module/components/listConstruction/listConstruction.vue?b527","webpack:///./src/js/module/components/listConstruction/listConstruction.vue?50be","webpack:///./src/js/module/components/listConstruction/listConstruction.vue?6117","webpack:///./src/js/module/components/secondaryMenu/secondaryMenu.vue","webpack:///./src/js/module/components/secondaryMenu/secondaryMenu.vue?c652","webpack:///./src/js/module/components/secondaryMenu/secondaryMenu.vue?7693","webpack:///./src/js/module/components/secondaryMenu/close.png","webpack:///./src/js/module/components/secondaryMenu/open.png","webpack:///./src/js/module/components/secondaryMenu/menu.js","webpack:///./src/js/module/components/secondaryMenu/secondaryMenu.vue?048e","webpack:///src/js/module/components/conditions/conditions.vue","webpack:///./src/js/module/components/conditions/conditions.vue","webpack:///./src/js/module/components/conditions/conditions.vue?8ed7","webpack:///./src/js/conf/home/pages/resource/pages/file/pages/_source/codemirror.js","webpack:///./node_modules/codemirror/mode/sql/sql.js","webpack:///./node_modules/codemirror/addon/hint/show-hint.js","webpack:///./node_modules/codemirror/addon/hint/sql-hint.js","webpack:///./node_modules/codemirror/addon/hint/xml-hint.js","webpack:///./node_modules/codemirror/mode/python/python.js","webpack:///./node_modules/codemirror/mode/xml/xml.js","webpack:///./node_modules/codemirror/mode/textile/textile.js","webpack:///./node_modules/codemirror/mode/shell/shell.js","webpack:///./src/js/conf/home/pages/resource/pages/file/pages/_source/common.js","webpack:///./src/js/conf/home/pages/resource/pages/file/pages/details/_source/utils.js"],"names":["_vuex","__webpack_require__","_common","_utils","editor","name","data","suffix","fileName","desc","fileTypeList","filtTypeArr","content","spinnerLoading","props","methods","Object","assign","mapActions","ok","_this","this","_validation","createResourceFile","type","getValue","then","res","$message","success","msg","setTimeout","$router","push","catch","e","error","warning","_i18n2","default","$t","_handlerEditor","_codemirror2","mode","readOnly","keypress","getOption","showHint","completeSingle","on","_onChange","val","setOption","handlerSuffix","label","watch","created","mounted","destroyed","toTextArea","off","$","computed","components","mSecondaryMenu","_secondaryMenu2","mListConstruction","_listConstruction2","mConditions","_conditions2","mSpin","_spin2","mListBoxF","_listBoxF2","module","i","locals","exports","esExports","render","_vm","_h","$createElement","_c","_self","staticClass","attrs","_v","title","slot","_s","staticStyle","width","placeholder","autocomplete","model","value","callback","$$v","expression","on-change","_l","city","key","id","directives","rawName","shape","loading","click","$event","staticRenderFns","__webpack_exports__","defineProperty","__WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_index_vue__","__WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_index_vue___default","n","__WEBPACK_IMPORT_KEY__","d","__WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_eec9cf36_hasScoped_false_buble_transforms_node_modules_vue_loader_lib_selector_type_template_index_0_index_vue__","__vue_styles__","ssrContext","Component","normalizeComponent","a","isSpin","Boolean","isLeft","String","menuList","_menu2","index","$route","params","isTogHide","className","is","layoutBox","addClass","removeClass","_toggleSubMenu","item","isOpen","_toggleMenu","factory","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","after","slice","length","removeChildren","count","childNodes","removeChild","firstChild","removeChildrenAndAdd","parent","appendChild","elt","tag","style","createElement","cssText","createTextNode","eltP","setAttribute","contains","child","nodeType","parentNode","host","activeElt","activeElement","body","shadowRoot","joinClasses","b","as","split","createRange","start","end","endNode","r","setEnd","setStart","createTextRange","moveToElementText","collapse","moveEnd","moveStart","selectInput","select","bind","f","args","Array","prototype","call","arguments","apply","copyObj","obj","target","overwrite","prop","hasOwnProperty","countColumn","string","tabSize","startIndex","startValue","search","nextTab","indexOf","selectionStart","selectionEnd","_e","Delayed","array","set","ms","clearTimeout","scrollerGap","Pass","toString","sel_dontScroll","scroll","sel_mouse","origin","sel_move","findColumn","goal","pos","col","skipped","Math","min","spaceStrs","spaceStr","lst","arr","map","out","nothing","createObj","base","inst","create","nonASCIISingleCaseWordChar","isWordCharBasic","ch","toUpperCase","toLowerCase","isWordChar","helper","source","isEmpty","extendingChars","isExtendingChar","charCodeAt","skipExtendingChars","str","dir","charAt","findFirst","pred","from","to","midF","mid","ceil","floor","getLine","doc","first","size","Error","chunk","lines","children","sz","chunkSize","getBetween","line","iter","text","getLines","updateLineHeight","height","diff","lineNo","cur","no","lineAtHeight","h","outer","i$1","lh","isLine","l","lineNumberFor","options","lineNumberFormatter","firstLineNumber","Pos","sticky","cmp","equalCursorPos","copyPos","x","maxPos","minPos","clipLine","max","clipPos","last","linelen","clipToLen","clipPosArray","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","found","span$1","clearEmptySpans","newMarkers","gapMarkers","gap","i$2","i$3","clearWhenEmpty","splice","detachMarkedSpans","detachLine","attachMarkedSpans","attachLine","extraLeft","extraRight","compareCollapsedMarkers","lenDiff","aPos","find","bPos","fromCmp","toCmp","collapsedSpanAtSide","sps","sp","collapsed","collapsedSpanAtStart","collapsedSpanAtEnd","collapsedSpanAround","conflictingCollapsedRange","lineNo$$1","visualLine","merged","visualLineNo","lineN","vis","visualLineEndNo","lastLine","lineIsHidden","widgetNode","lineIsHiddenInner","heightAtLine","lineObj","p","lineLength","len","found$1","findMaxLine","cm","display","maxLine","maxLineLength","maxLineChanged","bidiOther","getBidiPartAt","order","bidiOrdering","lowTypes","arabicTypes","bidiRE","isNeutral","isStrong","countsAsLeft","countsAsNum","BidiSpan","level","direction","outerType","code","types","prev","type$1","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","m","i$7","at","j$2","nstart","unshift","reverse","getOrder","noHandlers","emitter","addEventListener","attachEvent","map$$1","_handlers","concat","getHandlers","removeEventListener","detachEvent","signal","handlers","signalDOMEvent","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","range$$1","ownerDocument","selection","parentElement","compareEndPoints","hasCopyEvent","oncopy","badZoomedRects","modes","mimeModes","resolveMode","spec","getMode","mfactory","modeObj","modeExtensions","exts","helperType","modeProps","prop$1","extendMode","properties","copyState","state","nstate","innerMode","info","startState","a1","a2","StringStream","lineOracle","lastColumnPos","lastColumnValue","lineStart","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","o","overlay","overlays","i_end","opaque","styles","classes","bgClass","textClass","getLineStyles","updateFrontier","getContextBefore","resetState","maxHighlightLength","stateAfter","save","styleClasses","highlightFrontier","modeFrontier","precise","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","Line","estimateHeight","cleanUpLine","styleToClassCache","styleToClassCacheWithMode","interpretTokenStyle","cache","buildLineContent","lineView","builder","pre","trailingSpace","splitSpaces","rest","addToken","buildToken","buildTokenBadBidi","insertLineContent","externalMeasured","maps","caches","lastChild","querySelector","defaultSpecialCharPlaceholder","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","k","gutters","gutterWidth","alignable","nextSibling","insertLineWidgets","buildLineElement","insertLineWidgetsFor","allowAbove","widgets","ws","handleMouseEvents","positionLineWidget","above","noHScroll","wrapperWidth","coverGutter","paddingLeft","position","marginLeft","widgetHeight","parentStyle","wrapper","clientWidth","eventInWidget","getAttribute","sizer","mover","paddingTop","lineSpace","offsetTop","paddingVert","paddingH","cachedPaddingH","getComputedStyle","currentStyle","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","get","getBidi","partPos","invert","other","estimateCoords","PosWithInfo","outside","xRel","coordsChar","y","coordsCharInner","rangeEnd","wrappedLineExtent","begin","wrappedLineExtentChar","boxIsAfter","box","widgetHeight$$1","ltr","_lineNo","ref","closestDist","endX","dist","baseX","chAround","boxAround","atLeft","atStart","textHeight","anchor","clientLeft","offsetLeft","compensateForHScroll","th","perLine","widgetsHeight","estimateLineHeights","est","estHeight","posFromMouse","liberal","forRect","space","clientX","clientY","colDiff","round","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","selForContextMenu","reset","receivedFocus","shift","updateHeightsInViewport","prevBottom","lineDiv","updateWidgetHeight","chWidth","w","visibleLines","viewport","ensure","ensureFrom","ensureTo","alignHorizontally","alignWidgets","comp","gutterW","align","maybeUpdateLineNumberWidth","innerW","lineGutter","lineNumInnerWidth","lineNumWidth","updateGutterSpace","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","measureForScrollbars","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","native","null","initScrollbars","scrollbarStyle","axis","nextOpId","startOperation","op","viewChanged","updateInput","typing","changeObjs","cursorActivityCalled","selectionChanged","updateMaxLine","ops","ownsGroup","endOperation","endCb","group","callbacks","fireCallbacksForOps","finishOperation","endOperation_R1","updatedDisplay","mustUpdate","updateDisplayIfNeeded","endOperation_R2","endOperation_W2","endOperation_finish","endOperations","scrollbarsClipped","marginBottom","borderRightWidth","maybeClipScrollbars","DisplayUpdate","barMeasure","adjustWidthTo","maxScrollLeft","preparedSelection","takeFocus","setDocumentHeight","postUpdateDisplay","wheelStartX","wheelStartY","doScroll","innerHeight","scrollNode","scrollIntoView","maybeScrollWindow","limit","changed","endCoords","scrollPos","startTop","startLeft","scrollPosIntoView","maybeHiddenMarkers","unhidden","maybeUnhiddenMarkers","finish","runInOp","operation","methodOp","docMethodOp","regChange","lendiff","updateLineNumbers","resetView","cut","viewCuttingPoint","cut$1","cutTop","cutBot","regLineChange","oldN","newN","countDirtyView","dirty","time","highlight","highlightWorker","Date","workTime","changedLines","oldStyles","highlighted","oldCls","newCls","ischange","workDelay","force","visible","editorIsHidden","wrapperHeight","oldDisplayWidth","events","renderedView","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","updateGutters","specs","gElt","setGuttersForLineNumbers","wheelSamples","wheelPixelsPerUnit","wheelEventDelta","dx","wheelDeltaX","dy","wheelDeltaY","detail","HORIZONTAL_AXIS","VERTICAL_AXIS","wheelDelta","wheelEventPixels","delta","onScrollWheel","canScrollX","canScrollY","pixels","wheelDX","wheelDY","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","estimateHeight$$1","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","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","splitLines","rebaseHistSelSingle","rebaseHistArray","sub","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","detachSharedMarkers","subMarker","nextDocId","Doc","lineSep","cleanGeneration","constructor","join","lineSeparator","setValue","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","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","loadFile","file","allowDropFileTypes","reader","onload","readAsText","draggingText","text$1","getData","selected","dragCursor","forEachCodeMirror","getElementsByClassName","byClass","editors","globalsRegistered","ensureGlobalHandlers","resizeTimer","onResize","setSize","keyNames","3","8","9","13","16","17","18","19","20","27","32","33","34","35","36","37","38","39","40","44","45","46","59","61","91","92","93","106","107","109","110","111","127","145","173","186","187","188","189","190","191","192","219","220","221","222","63232","63233","63234","63235","63272","63273","63275","63276","63277","63302","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","Left","Right","Up","Down","End","Home","PageUp","PageDown","Delete","Backspace","Shift-Backspace","Tab","Shift-Tab","Enter","Insert","Esc","pcDefault","Ctrl-A","Ctrl-D","Ctrl-Z","Shift-Ctrl-Z","Ctrl-Y","Ctrl-Home","Ctrl-End","Ctrl-Up","Ctrl-Down","Ctrl-Left","Ctrl-Right","Alt-Left","Alt-Right","Ctrl-Backspace","Ctrl-Delete","Ctrl-S","Ctrl-F","Ctrl-G","Shift-Ctrl-G","Shift-Ctrl-F","Shift-Ctrl-R","Ctrl-[","Ctrl-]","Ctrl-U","Shift-Ctrl-U","Alt-U","emacsy","Ctrl-B","Ctrl-P","Ctrl-N","Alt-F","Alt-B","Ctrl-E","Ctrl-V","Shift-Ctrl-V","Ctrl-H","Alt-D","Alt-Backspace","Ctrl-K","Ctrl-T","Ctrl-O","macDefault","Cmd-A","Cmd-D","Cmd-Z","Shift-Cmd-Z","Cmd-Y","Cmd-Home","Cmd-Up","Cmd-End","Cmd-Down","Cmd-Left","Cmd-Right","Ctrl-Alt-Backspace","Alt-Delete","Cmd-S","Cmd-F","Cmd-G","Shift-Cmd-G","Cmd-Alt-F","Shift-Cmd-Alt-F","Cmd-[","Cmd-]","Cmd-Backspace","Cmd-Delete","Cmd-U","Shift-Cmd-U","commands","singleSelection","killLine","deleteLine","delLineLeft","delWrappedLineLeft","delWrappedLineRight","rightPos","goDocStart","goDocEnd","goLineStart","goLineStartSmart","lineStartSmart","goLineEnd","visualLineEnd","lineEnd","goLineRight","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","activeTouch","supportsTouch","draggable","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","move","buttons","curCount","leftButtonSelect","leftButtonDown","onContextMenu","findWordAt","gutterEvent","prevent","mX","mY","touches","lineBox","g","contextMenuInGutter","themeChanged","theme","Init","defaults","optionHandlers","guttersChanged","dragDropChanged","funcs","dragFunctions","toggle","enter","over","leave","drop","wrappingChanged","inputStyles","inputStyle","init","pasteIncoming","cutIncoming","autofocus","word","touchFinished","prevTouch","finishTouch","farAway","touch","radiusX","radiusY","isMouseLikeTouchEvent","pageX","pageY","frag","onDragOver","setData","effectAllowed","setDragImage","img","src","_top","onDragStart","inp","getField","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","moveOnce","boundToLine","bidi","mv","getWrappedLineExtent","moveInStorageOrder","searchInVisualLine","getRes","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","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","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","getDoc","addKeyMap","removeKeyMap","addOverlay","score","priority","insertSorted","modeSpec","removeOverlay","newRanges","getTokenAt","getLineTokens","getTokenTypeAt","getHelpers","help","_global","getStateAfter","defaultTextHeight","defaultCharWidth","getViewport","addWidget","vspace","hspace","triggerOnKeyPress","triggerOnKeyUp","triggerOnMouseDown","amount","rtlMoveVisually","goalColumn","goals","startChar","check","getScrollInfo","scrollToRange","interpret","swapDoc","phrase","phraseText","phrases","getWrapperElement","getScrollerElement","getGutterElement","registerHelper","registerGlobalHelper","predicate","addEditorMethods","dontDelegate","method","contenteditable","defineMode","dependencies","defineMIME","mime","defineExtension","func","defineDocExtension","fromTextArea","tabindex","realSubmit","form","leaveSubmitMethodAlone","submit","wrappedSubmit","getTextArea","cmpPos","addLegacyProps","version","__WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_spin_vue__","__WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_spin_vue___default","__WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_16cfa774_hasScoped_false_buble_transforms_node_modules_vue_loader_lib_selector_type_template_index_0_spin_vue__","class","xmlns","xmlns:xlink","viewBox","preserveAspectRatio","transform","attributeName","values","keyTimes","dur","repeatCount","fill","__WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_listConstruction_vue__","__WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_listConstruction_vue___default","__WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_eae3645c_hasScoped_false_buble_transforms_node_modules_vue_loader_lib_selector_type_template_index_0_listConstruction_vue__","_t","__WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_secondaryMenu_vue__","__WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_secondaryMenu_vue___default","__WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_f72bdd3a_hasScoped_false_buble_transforms_node_modules_vue_loader_lib_selector_type_template_index_0_secondaryMenu_vue__","escape","_i18n","menu","projects","i18n","path","icon","security","resource","user","href","$index","el","active-class","searchVal","_ckQuery","$emit","_lodash2","trim","isShow","$slots","__WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_conditions_vue__","__WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_conditions_vue___default","__WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_a4fced1a_hasScoped_false_buble_transforms_node_modules_vue_loader_lib_selector_type_template_index_0_conditions_vue__","on-enterkey","_codemirror","getElementById","hookIdentifier","hookVar","hookClient","config","parserConfig","client","atoms","false","true","builtin","defaultBuiltin","keywords","sqlKeywords","operatorChars","support","hooks","dateSQL","date","timestamp","backslashStringEscapes","brackets","punctuation","tokenBase","quote","hexNumber","binaryNumber","decimallessFloat","doubleQuote","tokenize","escaped","nCharCast","charsetCast","commentSlashSlash","commentHash","commentSpaceRequired","tokenComment","depth","zerolessFloat","ODBCdotTable","pushContext","tok","popContext","textAfter","cx","blockCommentStart","blockCommentEnd","lineComment","closeBrackets","words","@","`","\\","identifierQuote",":","?","\"","HINT_ELEMENT_CLASS","ACTIVE_HINT_ELEMENT_CLASS","Completion","debounce","tick","startPos","startLen","self","activityFunc","getHints","async","newOpts","hintOptions","defaultOptions","resolve","parseOptions","selections","supportsSelection","completionActive","completion","requestAnimationFrame","fn","cancelAnimationFrame","getText","getHintElement","hintsElement","Widget","picked","parentWindow","defaultView","hints","selectedHint","completions","hintId","alignWithWord","below","winW","innerWidth","winH","overlapY","scrolls","startScroll","closingOnBlur","overlapX","baseMap","moveFocus","menuSize","setFocus","pick","custom","customKeys","ourMap","addBinding","extra","buildKeyMap","avoidWrap","changeActive","screenAmount","closeOnUnfocus","onScroll","curScroll","point","t","completeOnSingleClick","fetchHints","closeCharacters","disable","myTick","finishUpdate","resolved","app","applicableHelpers","run","fromList","anyword","term","auto","tables","defaultTable","CONS","QUERY_DIV","ALIAS_KEYWORD","isArray","wrapTable","columns","getTable","shallowClone","object","addMatches","wordlist","formatter","cleanName","nameParts","insertIdentifierQuotes","eachWord","lineText","findTableByAlias","alias","fullQuery","aliasUpperCase","previousWord","table","separator","validRange","indexOfSeparator","prevItem","query","wordUpperCase","parseTables","defaultTableName","disableKeywords","getKeywords","getIdentifierQuote","useIdentifierQuotes","cont","aliasTable","oldTable","tableInsert","nameCompletion","objectOrClass","matches","typed","matchInMiddle","lastIndexOf","tags","schemaInfo","quoteChar","prefix","tagStart","replaceToken","tagName","tagType","curTag","childList","globalAttrs","nm","atValues","atName","wordRegexp","wordOperators","commonKeywords","commonBuiltins","scopes","conf","parserConf","ERRORCLASS","delimiters","singleDelimiters","operators","singleOperators","doubleOperators","doubleDelimiters","tripleDelimiters","hangingIndent","myKeywords","myBuiltins","extra_keywords","extra_builtins","py3","identifiers","stringPrefixes","builtins","lastToken","scopeOffset","lineOffset","pushPyScope","dedent","errorToken","tokenBaseInner","floatLiteral","intLiteral","delimiter","tokenOuter","singleline","OUTCLASS","tokenNestedExpr","tokenString","singleLineStringErrors","isString","formatStringFactory","tokenStringFactory","tokenLexer","beginningOfLine","lambda","delimiter_index","pushBracketScope","basecolumn","addErr","scope","triples","fold","htmlConfig","autoSelfClosers","area","br","command","embed","frame","hr","keygen","link","meta","param","track","wbr","menuitem","implicitlyClosed","dd","li","optgroup","rp","tbody","td","tfoot","tr","contextGrabbers","dt","address","article","aside","blockquote","dl","fieldset","footer","h1","h2","h3","h4","h5","h6","header","hgroup","nav","ol","section","ul","thead","doNotIndent","allowUnquoted","allowMissing","caseFold","xmlConfig","allowMissingTagName","editorConf","config_","setStyle","htmlMode","inText","chain","parser","inBlock","doctype","inTag","closure","baseState","isInAttribute","stringStartCol","terminator","maybePopContext","nextTagName","parentTagName","tagNameState","closeTagNameState","attrState","matchClosing","closeState","closeStateErr","_stream","attrEqState","startOfLine","noIndent","attrValueState","attrContinuedState","isInText","baseIndent","fullLine","multilineTagIndentPastTag","multilineTagIndentFactor","alignCDATA","tagAfter","grabbers","configuration","skipAttribute","TOKEN_STYLES","addition","bold","cite","definitionList","deletion","em","footnote","footCite","html","image","italic","linkDefinition","list1","list2","list3","notextile","specialChar","strong","sup","tableHeading","handlePhraseModifier","togglePhraseModifier","tokenStyles","tokenStylesWith","phraseModifier","closeRE","openSize","charBefore","charAfter","Modes","textileDisabled","layoutType","activeStyles","extraStyles","spanningLayout","newLayout","REs","single","bc","bq","definitionListEnd","drawTable","foot","para","tableCellAttributes","tableText","selector","lang","pad","createRe","makeRe","RE","choiceRe","arg","blockType","newMode","layoutLength","listDepth","listMod","tableCell","startNewLine","define","dict","commonAtoms","commonCommands","tokenDollar","tokenStringStart",".txt",".log",".sh",".conf",".cfg",".py",".java",".sql",".hql",".xml"],"mappings":"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","file":"js/14.b7ae462.js","sourcesContent":["\n\n\n\n\n\n\n// WEBPACK FOOTER //\n// src/js/conf/home/pages/resource/pages/file/pages/create/index.vue","// style-loader: Adds some css to the DOM by adding a \n\n\n\n// WEBPACK FOOTER //\n// src/js/module/components/spin/spin.vue","\n\n\n\n\n\n\n// WEBPACK FOOTER //\n// src/js/module/components/listConstruction/listConstruction.vue","\n\n\n\n\n\n\n// WEBPACK FOOTER //\n// src/js/module/components/secondaryMenu/secondaryMenu.vue","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/LICENSE\n\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\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global.CodeMirror = factory());\n}(this, (function () { 'use strict';\n\n // Kludges for bugs and behavior differences that can't be feature\n // detected are enabled based on userAgent etc sniffing.\n var userAgent = navigator.userAgent;\n var platform = navigator.platform;\n\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\n var ios = !edge && /AppleWebKit/.test(userAgent) && /Mobile\\/\\w+/.test(userAgent);\n var android = /Android/.test(userAgent);\n // This is woefully incomplete. Suggestions for alternative methods welcome.\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\n var presto_version = presto && userAgent.match(/Version\\/(\\d*\\.\\d*)/);\n if (presto_version) { presto_version = Number(presto_version[1]); }\n if (presto_version && presto_version >= 15) { presto = false; webkit = true; }\n // Some browsers use the wrong event properties to signal cmd/ctrl on OS X\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) { return new RegExp(\"(^|\\\\s)\" + cls + \"(?:$|\\\\s)\\\\s*\") }\n\n var rmClass = function(node, cls) {\n var current = node.className;\n var match = classTest(cls).exec(current);\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 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 if (className) { e.className = className; }\n if (style) { e.style.cssText = style; }\n if (typeof content == \"string\") { e.appendChild(document.createTextNode(content)); }\n else if (content) { for (var i = 0; i < content.length; ++i) { e.appendChild(content[i]); } }\n return e\n }\n // wrapper for elt, which removes the elt from the accessibility tree\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 if (document.createRange) { range = function(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 { range = function(node, start, end) {\n var r = document.body.createTextRange();\n try { r.moveToElementText(node.parentNode); }\n catch(e) { return r }\n r.collapse(true);\n r.moveEnd(\"character\", end);\n r.moveStart(\"character\", start);\n return r\n }; }\n\n function contains(parent, child) {\n if (child.nodeType == 3) // Android browser always returns false when child is a textnode\n { child = child.parentNode; }\n if (parent.contains)\n { return parent.contains(child) }\n do {\n if (child.nodeType == 11) { child = child.host; }\n if (child == parent) { return true }\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 try {\n activeElement = document.activeElement;\n } catch(e) {\n activeElement = document.body || null;\n }\n while (activeElement && activeElement.shadowRoot && activeElement.shadowRoot.activeElement)\n { activeElement = activeElement.shadowRoot.activeElement; }\n return activeElement\n }\n\n function addClass(node, cls) {\n var current = node.className;\n if (!classTest(cls).test(current)) { node.className += (current ? \" \" : \"\") + cls; }\n }\n function joinClasses(a, b) {\n var as = a.split(\" \");\n for (var i = 0; i < as.length; i++)\n { if (as[i] && !classTest(as[i]).test(b)) { b += \" \" + as[i]; } }\n return b\n }\n\n var selectInput = function(node) { node.select(); };\n if (ios) // Mobile Safari apparently has a bug where select() is broken.\n { selectInput = function(node) { node.selectionStart = 0; node.selectionEnd = node.value.length; }; }\n else if (ie) // Suppress mysterious IE10 errors\n { selectInput = function(node) { try { node.select(); } catch(_e) {} }; }\n\n function bind(f) {\n var args = Array.prototype.slice.call(arguments, 1);\n return function(){return f.apply(null, args)}\n }\n\n function copyObj(obj, target, overwrite) {\n if (!target) { target = {}; }\n for (var prop in obj)\n { if (obj.hasOwnProperty(prop) && (overwrite !== false || !target.hasOwnProperty(prop)))\n { target[prop] = obj[prop]; } }\n return target\n }\n\n // Counts the column offset in a string, taking tabs into account.\n // Used mostly to find indentation.\n function countColumn(string, end, tabSize, startIndex, startValue) {\n if (end == null) {\n end = string.search(/[^\\s\\u00a0]/);\n if (end == -1) { end = string.length; }\n }\n for (var i = startIndex || 0, n = startValue || 0;;) {\n var nextTab = string.indexOf(\"\\t\", i);\n if (nextTab < 0 || nextTab >= end)\n { return n + (end - i) }\n n += nextTab - i;\n n += tabSize - (n % tabSize);\n i = nextTab + 1;\n }\n }\n\n var Delayed = function() {this.id = null;};\n Delayed.prototype.set = function (ms, f) {\n clearTimeout(this.id);\n this.id = setTimeout(f, ms);\n };\n\n function indexOf(array, elt) {\n for (var i = 0; i < array.length; ++i)\n { if (array[i] == elt) { return i } }\n return -1\n }\n\n // Number of pixels added to scroller and sizer to hide scrollbar\n var scrollerGap = 30;\n\n // Returned or thrown by various protocols to signal 'I'm not\n // handling this'.\n var Pass = {toString: function(){return \"CodeMirror.Pass\"}};\n\n // Reused option objects for setSelection & friends\n var sel_dontScroll = {scroll: false}, sel_mouse = {origin: \"*mouse\"}, sel_move = {origin: \"+move\"};\n\n // The inverse of countColumn -- find the offset that corresponds to\n // a particular column.\n function findColumn(string, goal, tabSize) {\n for (var pos = 0, col = 0;;) {\n var nextTab = string.indexOf(\"\\t\", pos);\n if (nextTab == -1) { nextTab = string.length; }\n var skipped = nextTab - pos;\n if (nextTab == string.length || col + skipped >= goal)\n { return pos + Math.min(skipped, goal - col) }\n col += nextTab - pos;\n col += tabSize - (col % tabSize);\n pos = nextTab + 1;\n if (col >= goal) { return pos }\n }\n }\n\n var spaceStrs = [\"\"];\n function spaceStr(n) {\n while (spaceStrs.length <= n)\n { spaceStrs.push(lst(spaceStrs) + \" \"); }\n return spaceStrs[n]\n }\n\n function lst(arr) { return arr[arr.length-1] }\n\n function map(array, f) {\n var out = [];\n for (var i = 0; i < array.length; i++) { out[i] = f(array[i], i); }\n return out\n }\n\n function insertSorted(array, value, score) {\n var pos = 0, priority = score(value);\n while (pos < array.length && score(array[pos]) <= priority) { pos++; }\n array.splice(pos, 0, value);\n }\n\n function nothing() {}\n\n function createObj(base, props) {\n var inst;\n if (Object.create) {\n inst = Object.create(base);\n } else {\n nothing.prototype = base;\n inst = new nothing();\n }\n if (props) { copyObj(props, inst); }\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 function isWordCharBasic(ch) {\n return /\\w/.test(ch) || ch > \"\\x80\" &&\n (ch.toUpperCase() != ch.toLowerCase() || nonASCIISingleCaseWordChar.test(ch))\n }\n function isWordChar(ch, helper) {\n if (!helper) { return isWordCharBasic(ch) }\n if (helper.source.indexOf(\"\\\\w\") > -1 && isWordCharBasic(ch)) { return true }\n return helper.test(ch)\n }\n\n function isEmpty(obj) {\n for (var n in obj) { if (obj.hasOwnProperty(n) && obj[n]) { return false } }\n return true\n }\n\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 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 function isExtendingChar(ch) { return ch.charCodeAt(0) >= 768 && extendingChars.test(ch) }\n\n // Returns a number from the range [`0`; `str.length`] unless `pos` is outside that range.\n function skipExtendingChars(str, pos, dir) {\n while ((dir < 0 ? pos > 0 : pos < str.length) && isExtendingChar(str.charAt(pos))) { pos += dir; }\n return pos\n }\n\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 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 for (;;) {\n if (from == to) { return from }\n var midF = (from + to) / 2, mid = dir < 0 ? Math.ceil(midF) : Math.floor(midF);\n if (mid == from) { return pred(mid) ? from : to }\n if (pred(mid)) { to = mid; }\n else { from = mid + dir; }\n }\n }\n\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 function Display(place, doc, input) {\n var d = this;\n this.input = input;\n\n // Covers bottom-right square when both scrollbars are present.\n d.scrollbarFiller = elt(\"div\", null, \"CodeMirror-scrollbar-filler\");\n d.scrollbarFiller.setAttribute(\"cm-not-content\", \"true\");\n // Covers bottom of gutter when coverGutterNextToScrollbar is on\n // and h scrollbar is present.\n d.gutterFiller = elt(\"div\", null, \"CodeMirror-gutter-filler\");\n d.gutterFiller.setAttribute(\"cm-not-content\", \"true\");\n // Will contain the actual code, positioned to cover the viewport.\n d.lineDiv = eltP(\"div\", null, \"CodeMirror-code\");\n // Elements are added to these to represent selection and cursors.\n d.selectionDiv = elt(\"div\", null, null, \"position: relative; z-index: 1\");\n d.cursorDiv = elt(\"div\", null, \"CodeMirror-cursors\");\n // A visibility: hidden element used to find the size of things.\n d.measure = elt(\"div\", null, \"CodeMirror-measure\");\n // When lines outside of the viewport are measured, they are drawn in this.\n d.lineMeasure = elt(\"div\", null, \"CodeMirror-measure\");\n // Wraps everything that needs to exist inside the vertically-padded coordinate system\n d.lineSpace = eltP(\"div\", [d.measure, d.lineMeasure, d.selectionDiv, d.cursorDiv, d.lineDiv],\n null, \"position: relative; outline: none\");\n var lines = eltP(\"div\", [d.lineSpace], \"CodeMirror-lines\");\n // Moved around its parent to cover visible view.\n d.mover = elt(\"div\", [lines], null, \"position: relative\");\n // Set to the height of the document, allowing scrolling.\n d.sizer = elt(\"div\", [d.mover], \"CodeMirror-sizer\");\n d.sizerWidth = null;\n // 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 d.heightForcer = elt(\"div\", null, null, \"position: absolute; height: \" + scrollerGap + \"px; width: 1px;\");\n // Will contain the gutters, if any.\n d.gutters = elt(\"div\", null, \"CodeMirror-gutters\");\n d.lineGutter = null;\n // Actual scrollable element.\n d.scroller = elt(\"div\", [d.sizer, d.heightForcer, d.gutters], \"CodeMirror-scroll\");\n d.scroller.setAttribute(\"tabIndex\", \"-1\");\n // The element in which the editor lives.\n d.wrapper = elt(\"div\", [d.scrollbarFiller, d.gutterFiller, d.scroller], \"CodeMirror\");\n\n // Work around IE7 z-index bug (not perfect, hence IE7 not really being supported)\n if (ie && ie_version < 8) { d.gutters.style.zIndex = -1; d.scroller.style.paddingRight = 0; }\n if (!webkit && !(gecko && mobile)) { d.scroller.draggable = true; }\n\n if (place) {\n if (place.appendChild) { place.appendChild(d.wrapper); }\n else { place(d.wrapper); }\n }\n\n // Current rendered range (may be bigger than the view window).\n d.viewFrom = d.viewTo = doc.first;\n d.reportedViewFrom = d.reportedViewTo = doc.first;\n // Information about the rendered lines.\n d.view = [];\n d.renderedView = null;\n // Holds info about a single rendered line when it was rendered\n // for measurement, while not in view.\n d.externalMeasured = null;\n // Empty space (in pixels) above the view\n d.viewOffset = 0;\n d.lastWrapHeight = d.lastWrapWidth = 0;\n d.updateLineNumbers = null;\n\n d.nativeBarWidth = d.barHeight = d.barWidth = 0;\n d.scrollbarsClipped = false;\n\n // 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 d.lineNumWidth = d.lineNumInnerWidth = d.lineNumChars = null;\n // 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 d.alignWidgets = false;\n\n d.cachedCharWidth = d.cachedTextHeight = d.cachedPaddingH = null;\n\n // Tracks the maximum line length so that the horizontal scrollbar\n // can be kept static when scrolling.\n d.maxLine = null;\n d.maxLineLength = 0;\n d.maxLineChanged = false;\n\n // Used for measuring wheel scrolling granularity\n d.wheelDX = d.wheelDY = d.wheelStartX = d.wheelStartY = null;\n\n // True when shift is held down.\n d.shift = false;\n\n // Used to track whether anything happened since the context menu\n // was opened.\n d.selForContextMenu = null;\n\n d.activeTouch = null;\n\n input.init(d);\n }\n\n // Find the line object corresponding to the given line number.\n function getLine(doc, n) {\n n -= doc.first;\n if (n < 0 || n >= doc.size) { throw new Error(\"There is no line \" + (n + doc.first) + \" in the document.\") }\n var chunk = doc;\n while (!chunk.lines) {\n for (var i = 0;; ++i) {\n var child = chunk.children[i], sz = child.chunkSize();\n if (n < sz) { chunk = child; break }\n n -= sz;\n }\n }\n return chunk.lines[n]\n }\n\n // Get the part of a document between two positions, as an array of\n // strings.\n function getBetween(doc, start, end) {\n var out = [], n = start.line;\n doc.iter(start.line, end.line + 1, function (line) {\n var text = line.text;\n if (n == end.line) { text = text.slice(0, end.ch); }\n if (n == start.line) { text = text.slice(start.ch); }\n out.push(text);\n ++n;\n });\n return out\n }\n // Get the lines between from and to, as array of strings.\n function getLines(doc, from, to) {\n var out = [];\n doc.iter(from, to, function (line) { out.push(line.text); }); // iter aborts when callback returns truthy value\n return out\n }\n\n // Update the height of a line, propagating the height change\n // upwards to parent nodes.\n function updateLineHeight(line, height) {\n var diff = height - line.height;\n if (diff) { for (var n = line; n; n = n.parent) { n.height += diff; } }\n }\n\n // Given a line object, find its line number by walking up through\n // its parent links.\n function lineNo(line) {\n if (line.parent == null) { return null }\n var cur = line.parent, no = indexOf(cur.lines, line);\n for (var chunk = cur.parent; chunk; cur = chunk, chunk = chunk.parent) {\n for (var i = 0;; ++i) {\n if (chunk.children[i] == cur) { break }\n no += chunk.children[i].chunkSize();\n }\n }\n return no + cur.first\n }\n\n // Find the line at the given vertical position, using the height\n // information in the document tree.\n function lineAtHeight(chunk, h) {\n var n = chunk.first;\n outer: do {\n for (var i$1 = 0; i$1 < chunk.children.length; ++i$1) {\n var child = chunk.children[i$1], ch = child.height;\n if (h < ch) { chunk = child; continue outer }\n h -= ch;\n n += child.chunkSize();\n }\n return n\n } while (!chunk.lines)\n var i = 0;\n for (; i < chunk.lines.length; ++i) {\n var line = chunk.lines[i], lh = line.height;\n if (h < lh) { break }\n h -= lh;\n }\n return n + i\n }\n\n function isLine(doc, l) {return l >= doc.first && l < doc.first + doc.size}\n\n function lineNumberFor(options, i) {\n return String(options.lineNumberFormatter(i + options.firstLineNumber))\n }\n\n // A Pos instance represents a position within the text.\n function Pos(line, ch, sticky) {\n if ( sticky === void 0 ) sticky = null;\n\n if (!(this instanceof Pos)) { return new Pos(line, ch, sticky) }\n this.line = line;\n this.ch = ch;\n this.sticky = sticky;\n }\n\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 function cmp(a, b) { return a.line - b.line || a.ch - b.ch }\n\n function equalCursorPos(a, b) { return a.sticky == b.sticky && cmp(a, b) == 0 }\n\n function copyPos(x) {return Pos(x.line, x.ch)}\n function maxPos(a, b) { return cmp(a, b) < 0 ? b : a }\n function minPos(a, b) { return cmp(a, b) < 0 ? a : b }\n\n // Most of the external API clips given positions to make sure they\n // actually exist within the document.\n function clipLine(doc, n) {return Math.max(doc.first, Math.min(n, doc.first + doc.size - 1))}\n function clipPos(doc, pos) {\n if (pos.line < doc.first) { return Pos(doc.first, 0) }\n var last = doc.first + doc.size - 1;\n if (pos.line > last) { return Pos(last, getLine(doc, last).text.length) }\n return clipToLen(pos, getLine(doc, pos.line).text.length)\n }\n function clipToLen(pos, linelen) {\n var ch = pos.ch;\n if (ch == null || ch > linelen) { return Pos(pos.line, linelen) }\n else if (ch < 0) { return Pos(pos.line, 0) }\n else { return pos }\n }\n function clipPosArray(doc, array) {\n var out = [];\n for (var i = 0; i < array.length; i++) { out[i] = clipPos(doc, array[i]); }\n return out\n }\n\n // Optimize some code when these features are not used.\n var sawReadOnlySpans = false, sawCollapsedSpans = false;\n\n function seeReadOnlySpans() {\n sawReadOnlySpans = true;\n }\n\n function seeCollapsedSpans() {\n sawCollapsedSpans = true;\n }\n\n // TEXTMARKER SPANS\n\n function MarkedSpan(marker, from, to) {\n this.marker = marker;\n this.from = from; this.to = to;\n }\n\n // Search an array of spans for a span matching the given marker.\n function getMarkedSpanFor(spans, marker) {\n if (spans) { for (var i = 0; i < spans.length; ++i) {\n var span = spans[i];\n if (span.marker == marker) { return span }\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 function removeMarkedSpan(spans, span) {\n var r;\n for (var i = 0; i < spans.length; ++i)\n { if (spans[i] != span) { (r || (r = [])).push(spans[i]); } }\n return r\n }\n // Add a span to a line.\n function addMarkedSpan(line, span) {\n line.markedSpans = line.markedSpans ? line.markedSpans.concat([span]) : [span];\n span.marker.attachLine(line);\n }\n\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 function markedSpansBefore(old, startCh, isInsert) {\n var nw;\n if (old) { for (var i = 0; i < old.length; ++i) {\n var span = old[i], marker = span.marker;\n var startsBefore = span.from == null || (marker.inclusiveLeft ? span.from <= startCh : span.from < startCh);\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 return nw\n }\n function markedSpansAfter(old, endCh, isInsert) {\n var nw;\n if (old) { for (var i = 0; i < old.length; ++i) {\n var span = old[i], marker = span.marker;\n var endsAfter = span.to == null || (marker.inclusiveRight ? span.to >= endCh : span.to > endCh);\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,\n span.to == null ? null : span.to - endCh));\n }\n } }\n return nw\n }\n\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 function stretchSpansOverChange(doc, change) {\n if (change.full) { return null }\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 if (!oldFirst && !oldLast) { return null }\n\n var startCh = change.from.ch, endCh = change.to.ch, isInsert = cmp(change.from, change.to) == 0;\n // Get the spans that 'stick out' on both sides\n var first = markedSpansBefore(oldFirst, startCh, isInsert);\n var last = markedSpansAfter(oldLast, endCh, isInsert);\n\n // Next, merge those two ends\n var sameLine = change.text.length == 1, offset = lst(change.text).length + (sameLine ? startCh : 0);\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 if (span.to == null) {\n var found = getMarkedSpanFor(last, span.marker);\n if (!found) { span.to = startCh; }\n else if (sameLine) { span.to = found.to == null ? null : found.to + offset; }\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 if (span$1.to != null) { span$1.to += offset; }\n if (span$1.from == null) {\n var found$1 = getMarkedSpanFor(first, span$1.marker);\n if (!found$1) {\n span$1.from = offset;\n if (sameLine) { (first || (first = [])).push(span$1); }\n }\n } else {\n span$1.from += offset;\n if (sameLine) { (first || (first = [])).push(span$1); }\n }\n }\n }\n // Make sure we didn't create any zero-length spans\n if (first) { first = clearEmptySpans(first); }\n if (last && last != first) { last = clearEmptySpans(last); }\n\n var newMarkers = [first];\n if (!sameLine) {\n // Fill gap with whole-line-spans\n var gap = change.text.length - 2, gapMarkers;\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 for (var i$3 = 0; i$3 < gap; ++i$3)\n { newMarkers.push(gapMarkers); }\n newMarkers.push(last);\n }\n return newMarkers\n }\n\n // Remove spans that are empty and don't have a clearWhenEmpty\n // option of false.\n function clearEmptySpans(spans) {\n for (var i = 0; i < spans.length; ++i) {\n var span = spans[i];\n if (span.from != null && span.from == span.to && span.marker.clearWhenEmpty !== false)\n { spans.splice(i--, 1); }\n }\n if (!spans.length) { return null }\n return spans\n }\n\n // Used to 'clip' out readOnly ranges when making a change.\n function removeReadOnlyRanges(doc, from, to) {\n var markers = null;\n doc.iter(from.line, to.line + 1, function (line) {\n if (line.markedSpans) { for (var i = 0; i < line.markedSpans.length; ++i) {\n var mark = line.markedSpans[i].marker;\n if (mark.readOnly && (!markers || indexOf(markers, mark) == -1))\n { (markers || (markers = [])).push(mark); }\n } }\n });\n if (!markers) { return null }\n var parts = [{from: from, to: to}];\n for (var i = 0; i < markers.length; ++i) {\n var mk = markers[i], m = mk.find(0);\n for (var j = 0; j < parts.length; ++j) {\n var p = parts[j];\n if (cmp(p.to, m.from) < 0 || cmp(p.from, m.to) > 0) { continue }\n var newParts = [j, 1], dfrom = cmp(p.from, m.from), dto = cmp(p.to, m.to);\n if (dfrom < 0 || !mk.inclusiveLeft && !dfrom)\n { newParts.push({from: p.from, to: m.from}); }\n if (dto > 0 || !mk.inclusiveRight && !dto)\n { newParts.push({from: m.to, to: p.to}); }\n parts.splice.apply(parts, newParts);\n j += newParts.length - 3;\n }\n }\n return parts\n }\n\n // Connect or disconnect spans from a line.\n function detachMarkedSpans(line) {\n var spans = line.markedSpans;\n if (!spans) { return }\n for (var i = 0; i < spans.length; ++i)\n { spans[i].marker.detachLine(line); }\n line.markedSpans = null;\n }\n function attachMarkedSpans(line, spans) {\n if (!spans) { return }\n for (var i = 0; i < spans.length; ++i)\n { spans[i].marker.attachLine(line); }\n line.markedSpans = spans;\n }\n\n // Helpers used when computing which overlapping collapsed span\n // counts as the larger one.\n function extraLeft(marker) { return marker.inclusiveLeft ? -1 : 0 }\n function extraRight(marker) { return marker.inclusiveRight ? 1 : 0 }\n\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 function compareCollapsedMarkers(a, b) {\n var lenDiff = a.lines.length - b.lines.length;\n if (lenDiff != 0) { return lenDiff }\n var aPos = a.find(), bPos = b.find();\n var fromCmp = cmp(aPos.from, bPos.from) || extraLeft(a) - extraLeft(b);\n if (fromCmp) { return -fromCmp }\n var toCmp = cmp(aPos.to, bPos.to) || extraRight(a) - extraRight(b);\n if (toCmp) { return toCmp }\n return b.id - a.id\n }\n\n // Find out whether a line ends or starts in a collapsed span. If\n // so, return the marker for that span.\n function collapsedSpanAtSide(line, start) {\n var sps = sawCollapsedSpans && line.markedSpans, found;\n if (sps) { for (var sp = (void 0), i = 0; i < sps.length; ++i) {\n sp = sps[i];\n if (sp.marker.collapsed && (start ? sp.from : sp.to) == null &&\n (!found || compareCollapsedMarkers(found, sp.marker) < 0))\n { found = sp.marker; }\n } }\n return found\n }\n function collapsedSpanAtStart(line) { return collapsedSpanAtSide(line, true) }\n function collapsedSpanAtEnd(line) { return collapsedSpanAtSide(line, false) }\n\n function collapsedSpanAround(line, ch) {\n var sps = sawCollapsedSpans && line.markedSpans, found;\n if (sps) { for (var i = 0; i < sps.length; ++i) {\n var sp = sps[i];\n if (sp.marker.collapsed && (sp.from == null || sp.from < ch) && (sp.to == null || sp.to > ch) &&\n (!found || compareCollapsedMarkers(found, sp.marker) < 0)) { found = sp.marker; }\n } }\n return found\n }\n\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 function conflictingCollapsedRange(doc, lineNo$$1, from, to, marker) {\n var line = getLine(doc, lineNo$$1);\n var sps = sawCollapsedSpans && line.markedSpans;\n if (sps) { for (var i = 0; i < sps.length; ++i) {\n var sp = sps[i];\n if (!sp.marker.collapsed) { continue }\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 if (fromCmp >= 0 && toCmp <= 0 || fromCmp <= 0 && toCmp >= 0) { continue }\n if (fromCmp <= 0 && (sp.marker.inclusiveRight && marker.inclusiveLeft ? cmp(found.to, from) >= 0 : cmp(found.to, from) > 0) ||\n 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 function visualLine(line) {\n var merged;\n while (merged = collapsedSpanAtStart(line))\n { line = merged.find(-1, true).line; }\n return line\n }\n\n function visualLineEnd(line) {\n var merged;\n while (merged = collapsedSpanAtEnd(line))\n { line = merged.find(1, true).line; }\n return line\n }\n\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 function visualLineContinued(line) {\n var merged, lines;\n while (merged = collapsedSpanAtEnd(line)) {\n line = merged.find(1, true).line\n ;(lines || (lines = [])).push(line);\n }\n return lines\n }\n\n // Get the line number of the start of the visual line that the\n // given line number is part of.\n function visualLineNo(doc, lineN) {\n var line = getLine(doc, lineN), vis = visualLine(line);\n if (line == vis) { return lineN }\n return lineNo(vis)\n }\n\n // Get the line number of the start of the next visual line after\n // the given line.\n function visualLineEndNo(doc, lineN) {\n if (lineN > doc.lastLine()) { return lineN }\n var line = getLine(doc, lineN), merged;\n if (!lineIsHidden(doc, line)) { return lineN }\n while (merged = collapsedSpanAtEnd(line))\n { line = merged.find(1, true).line; }\n return lineNo(line) + 1\n }\n\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 function lineIsHidden(doc, line) {\n var sps = sawCollapsedSpans && line.markedSpans;\n if (sps) { for (var sp = (void 0), i = 0; i < sps.length; ++i) {\n sp = sps[i];\n if (!sp.marker.collapsed) { continue }\n if (sp.from == null) { return true }\n if (sp.marker.widgetNode) { continue }\n if (sp.from == 0 && sp.marker.inclusiveLeft && lineIsHiddenInner(doc, line, sp))\n { return true }\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 if (span.marker.inclusiveRight && span.to == line.text.length)\n { return true }\n for (var sp = (void 0), i = 0; i < line.markedSpans.length; ++i) {\n sp = line.markedSpans[i];\n if (sp.marker.collapsed && !sp.marker.widgetNode && sp.from == span.to &&\n (sp.to == null || sp.to != span.from) &&\n (sp.marker.inclusiveLeft || span.marker.inclusiveRight) &&\n lineIsHiddenInner(doc, line, sp)) { return true }\n }\n }\n\n // Find the height above the given line.\n function heightAtLine(lineObj) {\n lineObj = visualLine(lineObj);\n\n var h = 0, chunk = lineObj.parent;\n for (var i = 0; i < chunk.lines.length; ++i) {\n var line = chunk.lines[i];\n if (line == lineObj) { break }\n else { h += line.height; }\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 if (cur == chunk) { break }\n else { h += cur.height; }\n }\n }\n return h\n }\n\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 function lineLength(line) {\n if (line.height == 0) { return 0 }\n var len = line.text.length, merged, cur = line;\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 cur = line;\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 return len\n }\n\n // Find the longest line in the document.\n function findMaxLine(cm) {\n var d = cm.display, 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 if (len > d.maxLineLength) {\n d.maxLineLength = len;\n d.maxLine = line;\n }\n });\n }\n\n // BIDI HELPERS\n\n function iterateBidiSections(order, from, to, f) {\n if (!order) { return f(from, to, \"ltr\", 0) }\n var found = false;\n for (var i = 0; i < order.length; ++i) {\n var part = order[i];\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 if (!found) { f(from, to, \"ltr\"); }\n }\n\n var bidiOther = null;\n function getBidiPartAt(order, ch, sticky) {\n var found;\n bidiOther = null;\n for (var i = 0; i < order.length; ++i) {\n var cur = order[i];\n if (cur.from < ch && cur.to > ch) { return i }\n if (cur.to == ch) {\n if (cur.from != cur.to && sticky == \"before\") { found = i; }\n else { bidiOther = i; }\n }\n if (cur.from == ch) {\n if (cur.from != cur.to && sticky != \"before\") { found = i; }\n else { bidiOther = i; }\n }\n }\n return found != null ? found : bidiOther\n }\n\n // Bidirectional ordering algorithm\n // See http://unicode.org/reports/tr9/tr9-13.html for the algorithm\n // that this (partially) implements.\n\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\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 var bidiOrdering = (function() {\n // Character types for codepoints 0 to 0xff\n var lowTypes = \"bbbbbbbbbtstwsbbbbbbbbbbbbbbssstwNN%%%NNNNNN,N,N1111111111NNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNbbbbbbsbbbbbbbbbbbbbbbbbbbbbbbbbb,N%%%%NNNNLNNNNN%%11NLNNN1LNNNNNLLLLLLLLLLLLLLLLLLLLLLLNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLN\";\n // Character types for codepoints 0x600 to 0x6f9\n var arabicTypes = \"nnnnnnNNr%%r,rNNmmmmmmmmmmmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnn%nnrrrmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmnNmmmmmmrrmmNmmmmrr1111111111\";\n function charType(code) {\n if (code <= 0xf7) { return lowTypes.charAt(code) }\n else if (0x590 <= code && code <= 0x5f4) { return \"R\" }\n else if (0x600 <= code && code <= 0x6f9) { return arabicTypes.charAt(code - 0x600) }\n else if (0x6ee <= code && code <= 0x8ac) { return \"r\" }\n else if (0x2000 <= code && code <= 0x200b) { return \"w\" }\n else if (code == 0x200c) { return \"b\" }\n else { return \"L\" }\n }\n\n var bidiRE = /[\\u0590-\\u05f4\\u0600-\\u06ff\\u0700-\\u08ac]/;\n var isNeutral = /[stwN]/, isStrong = /[LRr]/, countsAsLeft = /[Lb1n]/, countsAsNum = /[1n]/;\n\n function BidiSpan(level, from, to) {\n this.level = level;\n this.from = from; 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)) { return false }\n var len = str.length, types = [];\n for (var i = 0; i < len; ++i)\n { types.push(charType(str.charCodeAt(i))); }\n\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 for (var i$1 = 0, prev = outerType; i$1 < len; ++i$1) {\n var type = types[i$1];\n if (type == \"m\") { types[i$1] = prev; }\n else { prev = type; }\n }\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 for (var i$2 = 0, cur = outerType; i$2 < len; ++i$2) {\n var type$1 = types[i$2];\n if (type$1 == \"1\" && cur == \"r\") { types[i$2] = \"n\"; }\n else if (isStrong.test(type$1)) { cur = type$1; if (type$1 == \"r\") { 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 for (var i$3 = 1, prev$1 = types[0]; i$3 < len - 1; ++i$3) {\n var type$2 = types[i$3];\n if (type$2 == \"+\" && prev$1 == \"1\" && types[i$3+1] == \"1\") { types[i$3] = \"1\"; }\n else if (type$2 == \",\" && prev$1 == types[i$3+1] &&\n (prev$1 == \"1\" || prev$1 == \"n\")) { types[i$3] = prev$1; }\n prev$1 = type$2;\n }\n\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 for (var i$4 = 0; i$4 < len; ++i$4) {\n var type$3 = types[i$4];\n if (type$3 == \",\") { types[i$4] = \"N\"; }\n else if (type$3 == \"%\") {\n var end = (void 0);\n for (end = i$4 + 1; end < len && types[end] == \"%\"; ++end) {}\n var replace = (i$4 && types[i$4-1] == \"!\") || (end < len && types[end] == \"1\") ? \"1\" : \"N\";\n for (var j = i$4; j < end; ++j) { types[j] = replace; }\n i$4 = end - 1;\n }\n }\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 for (var i$5 = 0, cur$1 = outerType; i$5 < len; ++i$5) {\n var type$4 = types[i$5];\n if (cur$1 == \"L\" && type$4 == \"1\") { types[i$5] = \"L\"; }\n else if (isStrong.test(type$4)) { cur$1 = type$4; }\n }\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 for (var i$6 = 0; i$6 < len; ++i$6) {\n if (isNeutral.test(types[i$6])) {\n var end$1 = (void 0);\n for (end$1 = i$6 + 1; end$1 < len && isNeutral.test(types[end$1]); ++end$1) {}\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 for (var j$1 = i$6; j$1 < end$1; ++j$1) { types[j$1] = replace$1; }\n i$6 = end$1 - 1;\n }\n }\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 var order = [], m;\n for (var i$7 = 0; i$7 < len;) {\n if (countsAsLeft.test(types[i$7])) {\n var start = i$7;\n for (++i$7; i$7 < len && countsAsLeft.test(types[i$7]); ++i$7) {}\n order.push(new BidiSpan(0, start, i$7));\n } else {\n var pos = i$7, at = order.length;\n for (++i$7; i$7 < len && types[i$7] != \"L\"; ++i$7) {}\n for (var j$2 = pos; j$2 < i$7;) {\n if (countsAsNum.test(types[j$2])) {\n if (pos < j$2) { order.splice(at, 0, new BidiSpan(1, pos, j$2)); }\n var nstart = j$2;\n for (++j$2; j$2 < i$7 && countsAsNum.test(types[j$2]); ++j$2) {}\n order.splice(at, 0, new BidiSpan(2, nstart, j$2));\n pos = j$2;\n } else { ++j$2; }\n }\n if (pos < i$7) { order.splice(at, 0, new BidiSpan(1, pos, i$7)); }\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 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 })();\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 function getOrder(line, direction) {\n var order = line.order;\n if (order == null) { order = line.order = bidiOrdering(line.text, direction); }\n return order\n }\n\n // EVENT HANDLING\n\n // Lightweight event framework. on/off also work on DOM nodes,\n // registering native DOM handlers.\n\n var noHandlers = [];\n\n var on = function(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$$1 = emitter._handlers || (emitter._handlers = {});\n map$$1[type] = (map$$1[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$$1 = emitter._handlers, arr = map$$1 && map$$1[type];\n if (arr) {\n var index = indexOf(arr, f);\n if (index > -1)\n { map$$1[type] = arr.slice(0, index).concat(arr.slice(index + 1)); }\n }\n }\n }\n\n function signal(emitter, type /*, values...*/) {\n var handlers = getHandlers(emitter, type);\n if (!handlers.length) { return }\n var args = Array.prototype.slice.call(arguments, 2);\n for (var i = 0; i < handlers.length; ++i) { handlers[i].apply(null, args); }\n }\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 function signalDOMEvent(cm, e, override) {\n if (typeof e == \"string\")\n { e = {type: e, preventDefault: function() { this.defaultPrevented = true; }}; }\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 if (!arr) { return }\n var set = cm.curOp.cursorActivityHandlers || (cm.curOp.cursorActivityHandlers = []);\n for (var i = 0; i < arr.length; ++i) { if (indexOf(set, arr[i]) == -1)\n { set.push(arr[i]); } }\n }\n\n function hasHandler(emitter, type) {\n return getHandlers(emitter, type).length > 0\n }\n\n // Add on and off methods to a constructor's prototype, to make\n // registering events on such objects more convenient.\n function eventMixin(ctor) {\n ctor.prototype.on = function(type, f) {on(this, type, f);};\n ctor.prototype.off = function(type, f) {off(this, type, f);};\n }\n\n // Due to the fact that we still support jurassic IE versions, some\n // compatibility wrappers are needed.\n\n function e_preventDefault(e) {\n if (e.preventDefault) { e.preventDefault(); }\n else { e.returnValue = false; }\n }\n function e_stopPropagation(e) {\n if (e.stopPropagation) { e.stopPropagation(); }\n else { e.cancelBubble = true; }\n }\n function e_defaultPrevented(e) {\n return e.defaultPrevented != null ? e.defaultPrevented : e.returnValue == false\n }\n function e_stop(e) {e_preventDefault(e); e_stopPropagation(e);}\n\n function e_target(e) {return e.target || e.srcElement}\n function e_button(e) {\n var b = e.which;\n if (b == null) {\n if (e.button & 1) { b = 1; }\n else if (e.button & 2) { b = 3; }\n else if (e.button & 4) { b = 2; }\n }\n if (mac && e.ctrlKey && b == 1) { b = 3; }\n return b\n }\n\n // Detect drag-and-drop\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) { return false }\n var div = elt('div');\n return \"draggable\" in div || \"dragDrop\" in div\n }();\n\n var zwspSupported;\n function zeroWidthElement(measure) {\n if (zwspSupported == null) {\n var test = elt(\"span\", \"\\u200b\");\n removeChildrenAndAdd(measure, elt(\"span\", [test, document.createTextNode(\"x\")]));\n if (measure.firstChild.offsetHeight != 0)\n { zwspSupported = test.offsetWidth <= 1 && test.offsetHeight > 2 && !(ie && ie_version < 8); }\n }\n var node = zwspSupported ? elt(\"span\", \"\\u200b\") :\n elt(\"span\", \"\\u00a0\", null, \"display: inline-block; width: 1px; margin-right: -1px\");\n node.setAttribute(\"cm-text\", \"\");\n return node\n }\n\n // Feature-detect IE's crummy client rect reporting for bidi text\n var badBidiRects;\n function hasBadBidiRects(measure) {\n if (badBidiRects != null) { return badBidiRects }\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 if (!r0 || r0.left == r0.right) { return false } // Safari returns null in some cases (#2780)\n return badBidiRects = (r1.right - r0.right < 3)\n }\n\n // See if \"\".split is the broken IE version, if so, provide an\n // alternative way to split lines.\n var splitLinesAuto = \"\\n\\nb\".split(/\\n/).length != 3 ? function (string) {\n var pos = 0, result = [], l = string.length;\n while (pos <= l) {\n var nl = string.indexOf(\"\\n\", pos);\n if (nl == -1) { nl = string.length; }\n var line = string.slice(pos, string.charAt(nl - 1) == \"\\r\" ? nl - 1 : nl);\n var rt = line.indexOf(\"\\r\");\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 return result\n } : function (string) { return string.split(/\\r\\n?|\\n/); };\n\n var hasSelection = window.getSelection ? function (te) {\n try { return te.selectionStart != te.selectionEnd }\n catch(e) { return false }\n } : function (te) {\n var range$$1;\n try {range$$1 = te.ownerDocument.selection.createRange();}\n catch(e) {}\n if (!range$$1 || range$$1.parentElement() != te) { return false }\n return range$$1.compareEndPoints(\"StartToEnd\", range$$1) != 0\n };\n\n var hasCopyEvent = (function () {\n var e = elt(\"div\");\n if (\"oncopy\" in e) { return true }\n e.setAttribute(\"oncopy\", \"return;\");\n return typeof e.oncopy == \"function\"\n })();\n\n var badZoomedRects = null;\n function hasBadZoomedRects(measure) {\n if (badZoomedRects != null) { return badZoomedRects }\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 }\n\n // Known modes, by name and by MIME\n var modes = {}, mimeModes = {};\n\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 function defineMode(name, mode) {\n if (arguments.length > 2)\n { mode.dependencies = Array.prototype.slice.call(arguments, 2); }\n modes[name] = mode;\n }\n\n function defineMIME(mime, spec) {\n mimeModes[mime] = spec;\n }\n\n // Given a MIME type, a {name, ...options} config object, or a name\n // string, return a mode config object.\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 if (typeof found == \"string\") { found = {name: found}; }\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 if (typeof spec == \"string\") { return {name: spec} }\n else { return spec || {name: \"null\"} }\n }\n\n // Given a mode spec (anything that resolveMode accepts), find and\n // initialize an actual mode object.\n function getMode(options, spec) {\n spec = resolveMode(spec);\n var mfactory = modes[spec.name];\n if (!mfactory) { return getMode(options, \"text/plain\") }\n var modeObj = mfactory(options, spec);\n if (modeExtensions.hasOwnProperty(spec.name)) {\n var exts = modeExtensions[spec.name];\n for (var prop in exts) {\n if (!exts.hasOwnProperty(prop)) { continue }\n if (modeObj.hasOwnProperty(prop)) { modeObj[\"_\" + prop] = modeObj[prop]; }\n modeObj[prop] = exts[prop];\n }\n }\n modeObj.name = spec.name;\n if (spec.helperType) { modeObj.helperType = spec.helperType; }\n if (spec.modeProps) { for (var prop$1 in spec.modeProps)\n { modeObj[prop$1] = spec.modeProps[prop$1]; } }\n\n return modeObj\n }\n\n // This can be used to attach properties to mode objects from\n // outside the actual mode definition.\n var modeExtensions = {};\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) { return state }\n if (mode.copyState) { return mode.copyState(state) }\n var nstate = {};\n for (var n in state) {\n var val = state[n];\n if (val instanceof Array) { val = val.concat([]); }\n nstate[n] = val;\n }\n return nstate\n }\n\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 function innerMode(mode, state) {\n var info;\n while (mode.innerMode) {\n info = mode.innerMode(state);\n if (!info || info.mode == mode) { break }\n state = info.state;\n mode = info.mode;\n }\n return info || {mode: mode, state: state}\n }\n\n function startState(mode, a1, a2) {\n return mode.startState ? mode.startState(a1, a2) : true\n }\n\n // STRING STREAM\n\n // Fed to the mode parsers, provides helper functions to make\n // parsers more succinct.\n\n var StringStream = function(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 () {return this.pos >= this.string.length};\n StringStream.prototype.sol = function () {return this.pos == this.lineStart};\n StringStream.prototype.peek = function () {return this.string.charAt(this.pos) || undefined};\n StringStream.prototype.next = function () {\n if (this.pos < this.string.length)\n { return this.string.charAt(this.pos++) }\n };\n StringStream.prototype.eat = function (match) {\n var ch = this.string.charAt(this.pos);\n var ok;\n if (typeof match == \"string\") { ok = ch == match; }\n else { ok = ch && (match.test ? match.test(ch) : match(ch)); }\n if (ok) {++this.pos; return ch}\n };\n StringStream.prototype.eatWhile = function (match) {\n var start = this.pos;\n while (this.eat(match)){}\n return this.pos > start\n };\n StringStream.prototype.eatSpace = function () {\n var this$1 = this;\n\n var start = this.pos;\n while (/[\\s\\u00a0]/.test(this.string.charAt(this.pos))) { ++this$1.pos; }\n return this.pos > start\n };\n StringStream.prototype.skipToEnd = function () {this.pos = this.string.length;};\n StringStream.prototype.skipTo = function (ch) {\n var found = this.string.indexOf(ch, this.pos);\n if (found > -1) {this.pos = found; return true}\n };\n StringStream.prototype.backUp = function (n) {this.pos -= 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 return this.lastColumnValue - (this.lineStart ? countColumn(this.string, this.lineStart, this.tabSize) : 0)\n };\n StringStream.prototype.indentation = function () {\n return countColumn(this.string, null, this.tabSize) -\n (this.lineStart ? countColumn(this.string, this.lineStart, this.tabSize) : 0)\n };\n StringStream.prototype.match = function (pattern, consume, caseInsensitive) {\n if (typeof pattern == \"string\") {\n var cased = function (str) { return caseInsensitive ? str.toLowerCase() : str; };\n var substr = this.string.substr(this.pos, pattern.length);\n if (cased(substr) == cased(pattern)) {\n if (consume !== false) { this.pos += pattern.length; }\n return true\n }\n } else {\n var match = this.string.slice(this.pos).match(pattern);\n if (match && match.index > 0) { return null }\n if (match && consume !== false) { this.pos += match[0].length; }\n return match\n }\n };\n StringStream.prototype.current = function (){return this.string.slice(this.start, this.pos)};\n StringStream.prototype.hideFirstChars = function (n, inner) {\n this.lineStart += n;\n try { return inner() }\n finally { this.lineStart -= n; }\n };\n StringStream.prototype.lookAhead = function (n) {\n var oracle = this.lineOracle;\n return oracle && oracle.lookAhead(n)\n };\n StringStream.prototype.baseToken = function () {\n var oracle = this.lineOracle;\n return oracle && oracle.baseToken(this.pos)\n };\n\n var SavedContext = function(state, lookAhead) {\n this.state = state;\n this.lookAhead = lookAhead;\n };\n\n var Context = function(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 if (line != null && n > this.maxLookAhead) { this.maxLookAhead = n; }\n return line\n };\n\n Context.prototype.baseToken = function (n) {\n var this$1 = this;\n\n if (!this.baseTokens) { return null }\n while (this.baseTokens[this.baseTokenPos] <= n)\n { this$1.baseTokenPos += 2; }\n var type = this.baseTokens[this.baseTokenPos + 1];\n return {type: type && type.replace(/( |^)overlay .*/, \"\"),\n size: this.baseTokens[this.baseTokenPos] - n}\n };\n\n Context.prototype.nextLine = function () {\n this.line++;\n if (this.maxLookAhead > 0) { this.maxLookAhead--; }\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 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 };\n\n\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 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], lineClasses = {};\n // Compute the base array of styles\n runMode(cm, line.text, cm.doc.mode, context, function (end, style) { return st.push(end, style); },\n lineClasses, forceToEnd);\n var state = context.state;\n\n // Run overlays, adjust style array.\n var loop = function ( o ) {\n context.baseTokens = st;\n var overlay = cm.state.overlays[o], i = 1, at = 0;\n context.state = true;\n runMode(cm, line.text, overlay.mode, context, function (end, style) {\n var start = i;\n // Ensure there's a token end at the current position, and that i points at it\n while (at < end) {\n var i_end = st[i];\n if (i_end > end)\n { st.splice(i, 1, end, st[i+1], i_end); }\n i += 2;\n at = Math.min(end, i_end);\n }\n if (!style) { return }\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) loop( o );\n\n return {styles: st, classes: lineClasses.bgClass || lineClasses.textClass ? lineClasses : null}\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 if (resetState) { context.state = resetState; }\n line.stateAfter = context.save(!resetState);\n line.styles = result.styles;\n if (result.classes) { line.styleClasses = result.classes; }\n else if (line.styleClasses) { line.styleClasses = null; }\n if (updateFrontier === cm.doc.highlightFrontier)\n { cm.doc.modeFrontier = Math.max(cm.doc.modeFrontier, ++cm.doc.highlightFrontier); }\n }\n return line.styles\n }\n\n function getContextBefore(cm, n, precise) {\n var doc = cm.doc, display = cm.display;\n if (!doc.mode.startState) { return new Context(doc, true, 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\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 if (precise) { doc.modeFrontier = context.line; }\n return context\n }\n\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 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 if (text == \"\") { callBlankLine(mode, context.state); }\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) { return mode.blankLine(state) }\n if (!mode.innerMode) { return }\n var inner = innerMode(mode, state);\n if (inner.mode.blankLine) { return inner.mode.blankLine(inner.state) }\n }\n\n function readToken(mode, stream, state, inner) {\n for (var i = 0; i < 10; i++) {\n if (inner) { inner[0] = innerMode(mode, state).mode; }\n var style = mode.token(stream, state);\n if (stream.pos > stream.start) { return style }\n }\n throw new Error(\"Mode \" + mode.name + \" failed to advance stream.\")\n }\n\n var Token = function(stream, type, state) {\n this.start = stream.start; this.end = stream.pos;\n this.string = stream.current();\n this.type = type || null;\n this.state = state;\n };\n\n // Utility for getTokenAt and getLineTokens\n function takeToken(cm, pos, precise, asArray) {\n var doc = cm.doc, mode = doc.mode, style;\n pos = clipPos(doc, pos);\n var line = getLine(doc, pos.line), context = getContextBefore(cm, pos.line, precise);\n var stream = new StringStream(line.text, cm.options.tabSize, context), tokens;\n if (asArray) { tokens = []; }\n while ((asArray || stream.pos < pos.ch) && !stream.eol()) {\n stream.start = stream.pos;\n style = readToken(mode, stream, context.state);\n if (asArray) { tokens.push(new Token(stream, style, copyState(doc.mode, context.state))); }\n }\n return asArray ? tokens : new Token(stream, style, context.state)\n }\n\n function extractLineClasses(type, output) {\n if (type) { for (;;) {\n var lineClass = type.match(/(?:^|\\s+)line-(background-)?(\\S+)/);\n if (!lineClass) { break }\n type = type.slice(0, lineClass.index) + type.slice(lineClass.index + lineClass[0].length);\n var prop = lineClass[1] ? \"bgClass\" : \"textClass\";\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 return type\n }\n\n // Run the given mode's parser over a line, calling f for each token.\n function runMode(cm, text, mode, context, f, lineClasses, forceToEnd) {\n var flattenSpans = mode.flattenSpans;\n if (flattenSpans == null) { flattenSpans = cm.options.flattenSpans; }\n var curStart = 0, curStyle = null;\n var stream = new StringStream(text, cm.options.tabSize, context), style;\n var inner = cm.options.addModeClass && [null];\n if (text == \"\") { extractLineClasses(callBlankLine(mode, context.state), lineClasses); }\n while (!stream.eol()) {\n if (stream.pos > cm.options.maxHighlightLength) {\n flattenSpans = false;\n if (forceToEnd) { processLine(cm, text, context, stream.pos); }\n stream.pos = text.length;\n style = null;\n } else {\n style = extractLineClasses(readToken(mode, stream, context.state, inner), lineClasses);\n }\n if (inner) {\n var mName = inner[0].name;\n if (mName) { style = \"m-\" + (style ? mName + \" \" + style : mName); }\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 curStyle = style;\n }\n stream.start = stream.pos;\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 }\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 function findStartLine(cm, n, precise) {\n var minindent, minline, doc = cm.doc;\n var lim = precise ? -1 : n - (cm.doc.mode.innerMode ? 1000 : 100);\n for (var search = n; search > lim; --search) {\n if (search <= doc.first) { return doc.first }\n var line = getLine(doc, search - 1), after = line.stateAfter;\n if (after && (!precise || search + (after instanceof SavedContext ? after.lookAhead : 0) <= doc.modeFrontier))\n { return search }\n var indented = countColumn(line.text, null, cm.options.tabSize);\n if (minline == null || minindent > indented) {\n minline = search - 1;\n minindent = indented;\n }\n }\n return minline\n }\n\n function retreatFrontier(doc, n) {\n doc.modeFrontier = Math.min(doc.modeFrontier, n);\n if (doc.highlightFrontier < n - 10) { return }\n var start = doc.first;\n for (var line = n - 1; line > start; line--) {\n var saved = getLine(doc, line).stateAfter;\n // change is on 3\n // state on line 1 looked ahead 2 -- so saw 3\n // test 1 + 2 < 3 should cover this\n if (saved && (!(saved instanceof SavedContext) || line + saved.lookAhead < n)) {\n start = line + 1;\n break\n }\n }\n doc.highlightFrontier = Math.min(doc.highlightFrontier, start);\n }\n\n // LINE DATA STRUCTURE\n\n // Line objects. These hold state related to a line, including\n // highlighting info (the styles array).\n var Line = function(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 () { return lineNo(this) };\n eventMixin(Line);\n\n // Change the content (text, markers) of a line. Automatically\n // invalidates cached information and tries to re-estimate the\n // line's height.\n function updateLine(line, text, markedSpans, estimateHeight) {\n line.text = text;\n if (line.stateAfter) { line.stateAfter = null; }\n if (line.styles) { line.styles = null; }\n if (line.order != null) { line.order = null; }\n detachMarkedSpans(line);\n attachMarkedSpans(line, markedSpans);\n var estHeight = estimateHeight ? estimateHeight(line) : 1;\n if (estHeight != line.height) { updateLineHeight(line, estHeight); }\n }\n\n // Detach a line from the document tree and its markers.\n function cleanUpLine(line) {\n line.parent = null;\n detachMarkedSpans(line);\n }\n\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 var styleToClassCache = {}, styleToClassCacheWithMode = {};\n function interpretTokenStyle(style, options) {\n if (!style || /^\\s*$/.test(style)) { return null }\n var cache = options.addModeClass ? styleToClassCacheWithMode : styleToClassCache;\n return cache[style] ||\n (cache[style] = style.replace(/\\S+/g, \"cm-$&\"))\n }\n\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 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 = {pre: eltP(\"pre\", [content], \"CodeMirror-line\"), content: content,\n col: 0, pos: 0, cm: cm,\n trailingSpace: false,\n splitSpaces: cm.getOption(\"lineWrapping\")};\n lineView.measure = {};\n\n // Iterate over the logical lines that make up this visual line.\n for (var i = 0; i <= (lineView.rest ? lineView.rest.length : 0); i++) {\n var line = i ? lineView.rest[i - 1] : lineView.line, order = (void 0);\n builder.pos = 0;\n builder.addToken = buildToken;\n // Optionally wire in some hacks into the token-rendering\n // algorithm, to deal with browser quirks.\n if (hasBadBidiRects(cm.display.measure) && (order = getOrder(line, cm.doc.direction)))\n { builder.addToken = buildTokenBadBidi(builder.addToken, order); }\n builder.map = [];\n var allowFrontierUpdate = lineView != cm.display.externalMeasured && lineNo(line);\n insertLineContent(line, builder, getLineStyles(cm, line, allowFrontierUpdate));\n if (line.styleClasses) {\n if (line.styleClasses.bgClass)\n { builder.bgClass = joinClasses(line.styleClasses.bgClass, builder.bgClass || \"\"); }\n if (line.styleClasses.textClass)\n { builder.textClass = joinClasses(line.styleClasses.textClass, builder.textClass || \"\"); }\n }\n\n // Ensure at least a single node is present, for measuring.\n if (builder.map.length == 0)\n { builder.map.push(0, 0, builder.content.appendChild(zeroWidthElement(cm.display.measure))); }\n\n // Store the map and a cache object for the current logical line\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 }\n\n // See issue #2901\n if (webkit) {\n var last = builder.content.lastChild;\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 signal(cm, \"renderLine\", cm, lineView.line, builder.pre);\n if (builder.pre.className)\n { builder.textClass = joinClasses(builder.pre.className, builder.textClass || \"\"); }\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 }\n\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 function buildToken(builder, text, style, startStyle, endStyle, css, attributes) {\n if (!text) { return }\n var displayText = builder.splitSpaces ? splitSpaces(text, builder.trailingSpace) : text;\n var special = builder.cm.state.specialChars, mustWrap = false;\n var content;\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 if (ie && ie_version < 9) { mustWrap = true; }\n builder.pos += text.length;\n } else {\n content = document.createDocumentFragment();\n var pos = 0;\n while (true) {\n special.lastIndex = pos;\n var m = special.exec(text);\n var skipped = m ? m.index - pos : text.length - pos;\n if (skipped) {\n var txt = document.createTextNode(displayText.slice(pos, pos + skipped));\n if (ie && ie_version < 9) { content.appendChild(elt(\"span\", [txt])); }\n else { content.appendChild(txt); }\n builder.map.push(builder.pos, builder.pos + skipped, txt);\n builder.col += skipped;\n builder.pos += skipped;\n }\n if (!m) { break }\n pos += skipped + 1;\n var txt$1 = (void 0);\n if (m[0] == \"\\t\") {\n var tabSize = builder.cm.options.tabSize, 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 if (ie && ie_version < 9) { content.appendChild(elt(\"span\", [txt$1])); }\n else { content.appendChild(txt$1); }\n builder.col += 1;\n }\n builder.map.push(builder.pos, builder.pos + 1, txt$1);\n builder.pos++;\n }\n }\n builder.trailingSpace = displayText.charCodeAt(text.length - 1) == 32;\n if (style || startStyle || endStyle || mustWrap || css) {\n var fullStyle = style || \"\";\n if (startStyle) { fullStyle += startStyle; }\n if (endStyle) { fullStyle += endStyle; }\n var token = elt(\"span\", [content], fullStyle, css);\n if (attributes) {\n for (var attr in attributes) { if (attributes.hasOwnProperty(attr) && attr != \"style\" && attr != \"class\")\n { token.setAttribute(attr, attributes[attr]); } }\n }\n return builder.content.appendChild(token)\n }\n builder.content.appendChild(content);\n }\n\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 function splitSpaces(text, trailingBefore) {\n if (text.length > 1 && !/ /.test(text)) { return text }\n var spaceBefore = trailingBefore, result = \"\";\n for (var i = 0; i < text.length; i++) {\n var ch = text.charAt(i);\n if (ch == \" \" && spaceBefore && (i == text.length - 1 || text.charCodeAt(i + 1) == 32))\n { ch = \"\\u00a0\"; }\n result += ch;\n spaceBefore = ch == \" \";\n }\n return result\n }\n\n // Work around nonsense dimensions being reported for stretches of\n // right-to-left text.\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, end = start + text.length;\n for (;;) {\n // Find the part that overlaps with the start of this text\n var part = (void 0);\n for (var i = 0; i < order.length; i++) {\n part = order[i];\n if (part.to > start && part.from <= start) { break }\n }\n if (part.to >= end) { return inner(builder, text, style, startStyle, endStyle, css, attributes) }\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 if (widget) { builder.map.push(builder.pos, builder.pos + size, widget); }\n if (!ignoreWidget && builder.cm.display.input.needsContentAttribute) {\n if (!widget)\n { widget = builder.content.appendChild(document.createElement(\"span\")); }\n widget.setAttribute(\"cm-marker\", marker.id);\n }\n if (widget) {\n builder.cm.display.input.setUneditable(widget);\n builder.content.appendChild(widget);\n }\n builder.pos += size;\n builder.trailingSpace = false;\n }\n\n // Outputs a number of spans to make up a line, taking highlighting\n // and marked text into account.\n function insertLineContent(line, builder, styles) {\n var spans = line.markedSpans, allText = line.text, at = 0;\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 return\n }\n\n var len = allText.length, pos = 0, i = 1, text = \"\", style, css;\n var nextChange = 0, spanStyle, spanEndStyle, spanStartStyle, collapsed, attributes;\n for (;;) {\n if (nextChange == pos) { // Update current marker set\n spanStyle = spanEndStyle = spanStartStyle = css = \"\";\n attributes = null;\n collapsed = null; nextChange = Infinity;\n var foundBookmarks = [], endStyles = (void 0);\n for (var j = 0; j < spans.length; ++j) {\n var sp = spans[j], m = sp.marker;\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 if (m.className) { spanStyle += \" \" + m.className; }\n if (m.css) { css = (css ? css + \";\" : \"\") + m.css; }\n if (m.startStyle && sp.from == pos) { spanStartStyle += \" \" + m.startStyle; }\n if (m.endStyle && sp.to == nextChange) { (endStyles || (endStyles = [])).push(m.endStyle, sp.to); }\n // support for the old title property\n // https://github.com/codemirror/CodeMirror/pull/5673\n if (m.title) { (attributes || (attributes = {})).title = m.title; }\n if (m.attributes) {\n for (var attr in m.attributes)\n { (attributes || (attributes = {}))[attr] = m.attributes[attr]; }\n }\n if (m.collapsed && (!collapsed || compareCollapsedMarkers(collapsed.marker, m) < 0))\n { collapsed = sp; }\n } else if (sp.from > pos && nextChange > sp.from) {\n nextChange = sp.from;\n }\n }\n if (endStyles) { for (var j$1 = 0; j$1 < endStyles.length; j$1 += 2)\n { if (endStyles[j$1 + 1] == nextChange) { spanEndStyle += \" \" + endStyles[j$1]; } } }\n\n if (!collapsed || collapsed.from == pos) { for (var j$2 = 0; j$2 < foundBookmarks.length; ++j$2)\n { buildCollapsedSpan(builder, 0, foundBookmarks[j$2]); } }\n if (collapsed && (collapsed.from || 0) == pos) {\n buildCollapsedSpan(builder, (collapsed.to == null ? len + 1 : collapsed.to) - pos,\n collapsed.marker, collapsed.from == null);\n if (collapsed.to == null) { return }\n if (collapsed.to == pos) { collapsed = false; }\n }\n }\n if (pos >= len) { break }\n\n var upto = Math.min(len, nextChange);\n while (true) {\n if (text) {\n var end = pos + text.length;\n if (!collapsed) {\n var tokenText = end > upto ? text.slice(0, upto - pos) : text;\n builder.addToken(builder, tokenText, style ? style + spanStyle : spanStyle,\n spanStartStyle, pos + tokenText.length == nextChange ? spanEndStyle : \"\", css, attributes);\n }\n if (end >= upto) {text = text.slice(upto - pos); pos = upto; break}\n pos = end;\n spanStartStyle = \"\";\n }\n text = allText.slice(at, at = styles[i++]);\n style = interpretTokenStyle(styles[i++], builder.cm.options);\n }\n }\n }\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 function LineView(doc, line, lineN) {\n // The starting line\n this.line = line;\n // Continuing lines, if any\n this.rest = visualLineContinued(line);\n // Number of logical lines in this visual line\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 }\n\n // Create a range of LineView objects for the given lines.\n function buildViewArray(cm, from, to) {\n var array = [], nextPos;\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 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, i = 0;\n do {\n for (; i < callbacks.length; i++)\n { callbacks[i].call(null); }\n for (var j = 0; j < group.ops.length; j++) {\n var op = group.ops[j];\n if (op.cursorActivityHandlers)\n { while (op.cursorActivityCalled < op.cursorActivityHandlers.length)\n { op.cursorActivityHandlers[op.cursorActivityCalled++].call(null, op.cm); } }\n }\n } while (i < callbacks.length)\n }\n\n function finishOperation(op, endCb) {\n var group = op.ownsGroup;\n if (!group) { return }\n\n try { fireCallbacksForOps(group); }\n finally {\n operationGroup = null;\n endCb(group);\n }\n }\n\n var orphanDelayedCallbacks = null;\n\n // 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 function signalLater(emitter, type /*, values...*/) {\n var arr = getHandlers(emitter, type);\n if (!arr.length) { return }\n var args = Array.prototype.slice.call(arguments, 2), list;\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 var loop = function ( i ) {\n list.push(function () { return arr[i].apply(null, args); });\n };\n\n for (var i = 0; i < arr.length; ++i)\n loop( i );\n }\n\n function fireOrphanDelayed() {\n var delayed = orphanDelayedCallbacks;\n orphanDelayedCallbacks = null;\n for (var i = 0; i < delayed.length; ++i) { delayed[i](); }\n }\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 function updateLineForChanges(cm, lineView, lineN, dims) {\n for (var j = 0; j < lineView.changes.length; j++) {\n var type = lineView.changes[j];\n if (type == \"text\") { updateLineText(cm, lineView); }\n else if (type == \"gutter\") { updateLineGutter(cm, lineView, lineN, dims); }\n else if (type == \"class\") { updateLineClasses(cm, lineView); }\n else if (type == \"widget\") { updateLineWidgets(cm, lineView, dims); }\n }\n lineView.changes = null;\n }\n\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 function ensureLineWrapped(lineView) {\n if (lineView.node == lineView.text) {\n lineView.node = elt(\"div\", null, null, \"position: relative\");\n if (lineView.text.parentNode)\n { lineView.text.parentNode.replaceChild(lineView.node, lineView.text); }\n lineView.node.appendChild(lineView.text);\n if (ie && ie_version < 8) { lineView.node.style.zIndex = 2; }\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 if (cls) { cls += \" CodeMirror-linebackground\"; }\n if (lineView.background) {\n if (cls) { lineView.background.className = cls; }\n else { lineView.background.parentNode.removeChild(lineView.background); lineView.background = null; }\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 }\n\n // Wrapper around buildLineContent which will reuse the structure\n // in display.externalMeasured when possible.\n function getLineContent(cm, lineView) {\n var ext = cm.display.externalMeasured;\n if (ext && ext.line == lineView.line) {\n cm.display.externalMeasured = null;\n lineView.measure = ext.measure;\n return ext.built\n }\n return buildLineContent(cm, lineView)\n }\n\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 function updateLineText(cm, lineView) {\n var cls = lineView.text.className;\n var built = getLineContent(cm, lineView);\n if (lineView.text == lineView.node) { lineView.node = built.pre; }\n lineView.text.parentNode.replaceChild(built.pre, lineView.text);\n lineView.text = built.pre;\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 if (lineView.line.wrapClass)\n { ensureLineWrapped(lineView).className = lineView.line.wrapClass; }\n else if (lineView.node != lineView.text)\n { lineView.node.className = \"\"; }\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 if (lineView.gutterBackground) {\n lineView.node.removeChild(lineView.gutterBackground);\n lineView.gutterBackground = null;\n }\n if (lineView.line.gutterClass) {\n var wrap = ensureLineWrapped(lineView);\n lineView.gutterBackground = elt(\"div\", null, \"CodeMirror-gutter-background \" + lineView.line.gutterClass,\n (\"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 var markers = lineView.line.gutterMarkers;\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 if (lineView.line.gutterClass)\n { gutterWrap.className += \" \" + lineView.line.gutterClass; }\n if (cm.options.lineNumbers && (!markers || !markers[\"CodeMirror-linenumbers\"]))\n { lineView.lineNumber = gutterWrap.appendChild(\n elt(\"div\", lineNumberFor(cm.options, lineN),\n \"CodeMirror-linenumber CodeMirror-gutter-elt\",\n (\"left: \" + (dims.gutterLeft[\"CodeMirror-linenumbers\"]) + \"px; width: \" + (cm.display.lineNumInnerWidth) + \"px\"))); }\n if (markers) { for (var k = 0; k < cm.options.gutters.length; ++k) {\n var id = cm.options.gutters[k], found = markers.hasOwnProperty(id) && markers[id];\n if (found)\n { gutterWrap.appendChild(elt(\"div\", [found], \"CodeMirror-gutter-elt\",\n (\"left: \" + (dims.gutterLeft[id]) + \"px; width: \" + (dims.gutterWidth[id]) + \"px\"))); }\n } }\n }\n }\n\n function updateLineWidgets(cm, lineView, dims) {\n if (lineView.alignable) { lineView.alignable = null; }\n for (var node = lineView.node.firstChild, next = (void 0); node; node = next) {\n next = node.nextSibling;\n if (node.className == \"CodeMirror-linewidget\")\n { lineView.node.removeChild(node); }\n }\n insertLineWidgets(cm, lineView, dims);\n }\n\n // Build a line's DOM representation from scratch\n function buildLineElement(cm, lineView, lineN, dims) {\n var built = getLineContent(cm, lineView);\n lineView.text = lineView.node = built.pre;\n if (built.bgClass) { lineView.bgClass = built.bgClass; }\n if (built.textClass) { lineView.textClass = built.textClass; }\n\n updateLineClasses(cm, lineView);\n updateLineGutter(cm, lineView, lineN, dims);\n insertLineWidgets(cm, lineView, dims);\n return lineView.node\n }\n\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 function insertLineWidgets(cm, lineView, dims) {\n insertLineWidgetsFor(cm, lineView.line, lineView, dims, true);\n if (lineView.rest) { for (var i = 0; i < lineView.rest.length; i++)\n { insertLineWidgetsFor(cm, lineView.rest[i], lineView, dims, false); } }\n }\n\n function insertLineWidgetsFor(cm, line, lineView, dims, allowAbove) {\n if (!line.widgets) { return }\n var wrap = ensureLineWrapped(lineView);\n for (var i = 0, ws = line.widgets; i < ws.length; ++i) {\n var widget = ws[i], node = elt(\"div\", [widget.node], \"CodeMirror-linewidget\");\n if (!widget.handleMouseEvents) { node.setAttribute(\"cm-ignore-events\", \"true\"); }\n positionLineWidget(widget, node, lineView, dims);\n cm.display.input.setUneditable(node);\n if (allowAbove && widget.above)\n { wrap.insertBefore(node, lineView.gutter || lineView.text); }\n else\n { wrap.appendChild(node); }\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 if (!widget.coverGutter) {\n width -= dims.gutterTotalWidth;\n node.style.paddingLeft = dims.gutterTotalWidth + \"px\";\n }\n node.style.width = width + \"px\";\n }\n if (widget.coverGutter) {\n node.style.zIndex = 5;\n node.style.position = \"relative\";\n if (!widget.noHScroll) { node.style.marginLeft = -dims.gutterTotalWidth + \"px\"; }\n }\n }\n\n function widgetHeight(widget) {\n if (widget.height != null) { return widget.height }\n var cm = widget.doc.cm;\n if (!cm) { return 0 }\n if (!contains(document.body, widget.node)) {\n var parentStyle = \"position: relative;\";\n if (widget.coverGutter)\n { parentStyle += \"margin-left: -\" + cm.display.gutters.offsetWidth + \"px;\"; }\n if (widget.noHScroll)\n { parentStyle += \"width: \" + cm.display.wrapper.clientWidth + \"px;\"; }\n removeChildrenAndAdd(cm.display.measure, elt(\"div\", [widget.node], null, parentStyle));\n }\n return widget.height = widget.node.parentNode.offsetHeight\n }\n\n // Return true when the given mouse event happened in a widget\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 (n.parentNode == display.sizer && n != display.mover))\n { return true }\n }\n }\n\n // POSITION MEASUREMENT\n\n function paddingTop(display) {return display.lineSpace.offsetTop}\n function paddingVert(display) {return display.mover.offsetHeight - display.lineSpace.offsetHeight}\n function paddingH(display) {\n if (display.cachedPaddingH) { return display.cachedPaddingH }\n var e = removeChildrenAndAdd(display.measure, elt(\"pre\", \"x\"));\n var style = window.getComputedStyle ? window.getComputedStyle(e) : e.currentStyle;\n var data = {left: parseInt(style.paddingLeft), right: parseInt(style.paddingRight)};\n if (!isNaN(data.left) && !isNaN(data.right)) { display.cachedPaddingH = data; }\n return data\n }\n\n function scrollGap(cm) { return scrollerGap - cm.display.nativeBarWidth }\n function displayWidth(cm) {\n return cm.display.scroller.clientWidth - scrollGap(cm) - cm.display.barWidth\n }\n function displayHeight(cm) {\n return cm.display.scroller.clientHeight - scrollGap(cm) - cm.display.barHeight\n }\n\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 function ensureLineHeights(cm, lineView, rect) {\n var wrapping = cm.options.lineWrapping;\n var curWidth = wrapping && displayWidth(cm);\n if (!lineView.measure.heights || wrapping && lineView.measure.width != curWidth) {\n var heights = lineView.measure.heights = [];\n if (wrapping) {\n lineView.measure.width = curWidth;\n var rects = lineView.text.firstChild.getClientRects();\n for (var i = 0; i < rects.length - 1; i++) {\n var cur = rects[i], next = rects[i + 1];\n if (Math.abs(cur.bottom - next.bottom) > 2)\n { heights.push((cur.bottom + next.top) / 2 - rect.top); }\n }\n }\n heights.push(rect.bottom - rect.top);\n }\n }\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 function mapFromLineView(lineView, line, lineN) {\n if (lineView.line == line)\n { return {map: lineView.measure.map, cache: lineView.measure.cache} }\n for (var i = 0; i < lineView.rest.length; i++)\n { if (lineView.rest[i] == line)\n { return {map: lineView.measure.maps[i], cache: lineView.measure.caches[i]} } }\n for (var i$1 = 0; i$1 < lineView.rest.length; i$1++)\n { if (lineNo(lineView.rest[i$1]) > lineN)\n { return {map: lineView.measure.maps[i$1], cache: lineView.measure.caches[i$1], before: true} } }\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 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 }\n\n // Get a {top, bottom, left, right} box (in line-local coordinates)\n // for a given character.\n function measureChar(cm, line, ch, bias) {\n return measureCharPrepared(cm, prepareMeasureForLine(cm, line), ch, bias)\n }\n\n // Find a line view that corresponds to the given line number.\n function findViewForLine(cm, lineN) {\n if (lineN >= cm.display.viewFrom && lineN < cm.display.viewTo)\n { return cm.display.view[findViewIndex(cm, lineN)] }\n var ext = cm.display.externalMeasured;\n if (ext && lineN >= ext.lineN && lineN < ext.lineN + ext.size)\n { return ext }\n }\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 function prepareMeasureForLine(cm, line) {\n var lineN = lineNo(line);\n var view = findViewForLine(cm, lineN);\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 if (!view)\n { view = updateExternalMeasurement(cm, line); }\n\n var info = mapFromLineView(view, line, lineN);\n return {\n line: line, view: view, rect: null,\n map: info.map, cache: info.cache, before: info.before,\n hasHeights: false\n }\n }\n\n // Given a prepared measurement object, measures the position of an\n // actual character (or fetches it from the cache).\n function measureCharPrepared(cm, prepared, ch, bias, varHeight) {\n if (prepared.before) { ch = -1; }\n var key = ch + (bias || \"\"), found;\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 if (!prepared.hasHeights) {\n ensureLineHeights(cm, prepared.view, prepared.rect);\n prepared.hasHeights = true;\n }\n found = measureCharInner(cm, prepared, ch, bias);\n if (!found.bogus) { prepared.cache[key] = found; }\n }\n return {left: found.left, right: found.right,\n top: varHeight ? found.rtop : found.top,\n bottom: varHeight ? found.rbottom : found.bottom}\n }\n\n var nullRect = {left: 0, right: 0, top: 0, bottom: 0};\n\n function nodeAndOffsetInLineMap(map$$1, ch, bias) {\n var node, start, end, collapse, mStart, mEnd;\n // First, search the line map for the text node corresponding to,\n // or closest to, the target character.\n for (var i = 0; i < map$$1.length; i += 3) {\n mStart = map$$1[i];\n mEnd = map$$1[i + 1];\n if (ch < mStart) {\n start = 0; end = 1;\n collapse = \"left\";\n } else if (ch < mEnd) {\n start = ch - mStart;\n end = start + 1;\n } else if (i == map$$1.length - 3 || ch == mEnd && map$$1[i + 3] > ch) {\n end = mEnd - mStart;\n start = end - 1;\n if (ch >= mEnd) { collapse = \"right\"; }\n }\n if (start != null) {\n node = map$$1[i + 2];\n if (mStart == mEnd && bias == (node.insertLeft ? \"left\" : \"right\"))\n { collapse = bias; }\n if (bias == \"left\" && start == 0)\n { while (i && map$$1[i - 2] == map$$1[i - 3] && map$$1[i - 1].insertLeft) {\n node = map$$1[(i -= 3) + 2];\n collapse = \"left\";\n } }\n if (bias == \"right\" && start == mEnd - mStart)\n { while (i < map$$1.length - 3 && map$$1[i + 3] == map$$1[i + 4] && !map$$1[i + 5].insertLeft) {\n node = map$$1[(i += 3) + 2];\n collapse = \"right\";\n } }\n break\n }\n }\n return {node: node, start: start, end: end, collapse: collapse, coverStart: mStart, coverEnd: mEnd}\n }\n\n function getUsefulRect(rects, bias) {\n var rect = nullRect;\n if (bias == \"left\") { for (var i = 0; i < rects.length; i++) {\n if ((rect = rects[i]).left != rect.right) { break }\n } } else { for (var i$1 = rects.length - 1; i$1 >= 0; i$1--) {\n if ((rect = rects[i$1]).left != rect.right) { break }\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, start = place.start, end = place.end, collapse = place.collapse;\n\n var rect;\n if (node.nodeType == 3) { // If it is a text node, use a range to retrieve the coordinates.\n for (var i$1 = 0; i$1 < 4; i$1++) { // Retry a maximum of 4 times when nonsense rectangles are returned\n while (start && isExtendingChar(prepared.line.text.charAt(place.coverStart + start))) { --start; }\n while (place.coverStart + end < place.coverEnd && isExtendingChar(prepared.line.text.charAt(place.coverStart + end))) { ++end; }\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 if (rect.left || rect.right || start == 0) { break }\n end = start;\n start = start - 1;\n collapse = \"right\";\n }\n if (ie && ie_version < 11) { rect = maybeUpdateRectForZooming(cm.display.measure, rect); }\n } else { // If it is a widget, simply get the box for the whole widget.\n if (start > 0) { collapse = bias = \"right\"; }\n var rects;\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 if (ie && ie_version < 9 && !start && (!rect || !rect.left && !rect.right)) {\n var rSpan = node.parentNode.getClientRects()[0];\n if (rSpan)\n { rect = {left: rSpan.left, right: rSpan.left + charWidth(cm.display), top: rSpan.top, bottom: rSpan.bottom}; }\n else\n { rect = nullRect; }\n }\n\n var rtop = rect.top - prepared.rect.top, rbot = rect.bottom - prepared.rect.top;\n var mid = (rtop + rbot) / 2;\n var heights = prepared.view.measure.heights;\n var i = 0;\n for (; i < heights.length - 1; i++)\n { if (mid < heights[i]) { break } }\n var top = i ? heights[i - 1] : 0, bot = heights[i];\n var result = {left: (collapse == \"right\" ? rect.right : rect.left) - prepared.rect.left,\n right: (collapse == \"left\" ? rect.left : rect.right) - prepared.rect.left,\n top: top, bottom: bot};\n if (!rect.left && !rect.right) { result.bogus = true; }\n if (!cm.options.singleCursorHeightPerLine) { result.rtop = rtop; result.rbottom = rbot; }\n\n return result\n }\n\n // Work around problem with bounding client rects on ranges being\n // returned incorrectly when zoomed on IE10 and below.\n function maybeUpdateRectForZooming(measure, rect) {\n if (!window.screen || screen.logicalXDPI == null ||\n screen.logicalXDPI == screen.deviceXDPI || !hasBadZoomedRects(measure))\n { return rect }\n var scaleX = screen.logicalXDPI / screen.deviceXDPI;\n var scaleY = screen.logicalYDPI / screen.deviceYDPI;\n return {left: rect.left * scaleX, right: rect.right * scaleX,\n top: rect.top * scaleY, bottom: rect.bottom * scaleY}\n }\n\n function clearLineMeasurementCacheFor(lineView) {\n if (lineView.measure) {\n lineView.measure.cache = {};\n lineView.measure.heights = null;\n if (lineView.rest) { for (var i = 0; i < lineView.rest.length; i++)\n { lineView.measure.caches[i] = {}; } }\n }\n }\n\n function clearLineMeasurementCache(cm) {\n cm.display.externalMeasure = null;\n removeChildren(cm.display.lineMeasure);\n for (var i = 0; i < cm.display.view.length; i++)\n { clearLineMeasurementCacheFor(cm.display.view[i]); }\n }\n\n function clearCaches(cm) {\n clearLineMeasurementCache(cm);\n cm.display.cachedCharWidth = cm.display.cachedTextHeight = cm.display.cachedPaddingH = null;\n if (!cm.options.lineWrapping) { cm.display.maxLineChanged = true; }\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) { return -(document.body.getBoundingClientRect().left - parseInt(getComputedStyle(document.body).marginLeft)) }\n return window.pageXOffset || (document.documentElement || document.body).scrollLeft\n }\n function pageScrollY() {\n if (chrome && android) { return -(document.body.getBoundingClientRect().top - parseInt(getComputedStyle(document.body).marginTop)) }\n return window.pageYOffset || (document.documentElement || document.body).scrollTop\n }\n\n function widgetTopHeight(lineObj) {\n var height = 0;\n if (lineObj.widgets) { for (var i = 0; i < lineObj.widgets.length; ++i) { if (lineObj.widgets[i].above)\n { height += widgetHeight(lineObj.widgets[i]); } } }\n return height\n }\n\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 function intoCoordSystem(cm, lineObj, rect, context, includeWidgets) {\n if (!includeWidgets) {\n var height = widgetTopHeight(lineObj);\n rect.top += height; rect.bottom += height;\n }\n if (context == \"line\") { return rect }\n if (!context) { context = \"local\"; }\n var yOff = heightAtLine(lineObj);\n if (context == \"local\") { yOff += paddingTop(cm.display); }\n else { yOff -= cm.display.viewOffset; }\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; rect.right += xOff;\n }\n rect.top += yOff; rect.bottom += yOff;\n return rect\n }\n\n // Coverts a box from \"div\" coords to another coordinate system.\n // Context may be \"window\", \"page\", \"div\", or \"local\"./null.\n function fromCoordSystem(cm, coords, context) {\n if (context == \"div\") { return coords }\n var left = coords.left, top = coords.top;\n // First move into \"page\" coordinate system\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 {left: left - lineSpaceBox.left, top: top - lineSpaceBox.top}\n }\n\n function charCoords(cm, pos, context, lineObj, bias) {\n if (!lineObj) { lineObj = getLine(cm.doc, pos.line); }\n return intoCoordSystem(cm, lineObj, measureChar(cm, lineObj, pos.ch, bias), context)\n }\n\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 function cursorCoords(cm, pos, context, lineObj, preparedMeasure, varHeight) {\n lineObj = lineObj || getLine(cm.doc, pos.line);\n if (!preparedMeasure) { preparedMeasure = prepareMeasureForLine(cm, lineObj); }\n function get(ch, right) {\n var m = measureCharPrepared(cm, preparedMeasure, ch, right ? \"right\" : \"left\", varHeight);\n if (right) { m.left = m.right; } else { m.right = m.left; }\n return intoCoordSystem(cm, lineObj, m, context)\n }\n var order = getOrder(lineObj, cm.doc.direction), ch = pos.ch, sticky = pos.sticky;\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 if (!order) { return get(sticky == \"before\" ? ch - 1 : ch, sticky == \"before\") }\n\n function getBidi(ch, partPos, invert) {\n var part = order[partPos], right = part.level == 1;\n return get(invert ? ch - 1 : ch, right != invert)\n }\n var partPos = getBidiPartAt(order, ch, sticky);\n var other = bidiOther;\n var val = getBidi(ch, partPos, sticky == \"before\");\n if (other != null) { val.other = getBidi(ch, other, sticky != \"before\"); }\n return val\n }\n\n // Used to cheaply estimate the coordinates for a position. Used for\n // intermediate scroll updates.\n function estimateCoords(cm, pos) {\n var left = 0;\n pos = clipPos(cm.doc, pos);\n if (!cm.options.lineWrapping) { left = charWidth(cm.display) * pos.ch; }\n var lineObj = getLine(cm.doc, pos.line);\n var top = heightAtLine(lineObj) + paddingTop(cm.display);\n return {left: left, right: left, top: top, bottom: top + lineObj.height}\n }\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 function PosWithInfo(line, ch, sticky, outside, xRel) {\n var pos = Pos(line, ch, sticky);\n pos.xRel = xRel;\n if (outside) { pos.outside = true; }\n return pos\n }\n\n // Compute the character position closest to the given coordinates.\n // Input must be lineSpace-local (\"div\" coordinate system).\n function coordsChar(cm, x, y) {\n var doc = cm.doc;\n y += cm.display.viewOffset;\n if (y < 0) { return PosWithInfo(doc.first, 0, null, true, -1) }\n var lineN = lineAtHeight(doc, y), last = doc.first + doc.size - 1;\n if (lineN > last)\n { return PosWithInfo(doc.first + doc.size - 1, getLine(doc, last).text.length, null, true, 1) }\n if (x < 0) { x = 0; }\n\n var lineObj = getLine(doc, lineN);\n for (;;) {\n var found = coordsCharInner(cm, lineObj, lineN, x, y);\n var collapsed = collapsedSpanAround(lineObj, found.ch + (found.xRel > 0 ? 1 : 0));\n if (!collapsed) { return found }\n var rangeEnd = collapsed.find(1);\n if (rangeEnd.line == lineN) { return rangeEnd }\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) { return measureCharPrepared(cm, preparedMeasure, ch - 1).bottom <= y; }, end, 0);\n end = findFirst(function (ch) { return measureCharPrepared(cm, preparedMeasure, ch).top > y; }, begin, end);\n return {begin: begin, end: end}\n }\n\n function wrappedLineExtentChar(cm, lineObj, preparedMeasure, target) {\n if (!preparedMeasure) { preparedMeasure = prepareMeasureForLine(cm, lineObj); }\n var targetTop = intoCoordSystem(cm, lineObj, measureCharPrepared(cm, preparedMeasure, target), \"line\").top;\n return wrappedLineExtent(cm, lineObj, preparedMeasure, targetTop)\n }\n\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 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$$1, x, y) {\n // Move y into line-local coordinate space\n y -= heightAtLine(lineObj);\n var preparedMeasure = prepareMeasureForLine(cm, lineObj);\n // When directly calling `measureCharPrepared`, we have to adjust\n // for the widgets at this line.\n var widgetHeight$$1 = widgetTopHeight(lineObj);\n var begin = 0, end = lineObj.text.length, ltr = true;\n\n var order = getOrder(lineObj, cm.doc.direction);\n // If the line isn't plain left-to-right text, first figure out\n // which bidi section the coordinates fall into.\n if (order) {\n var part = (cm.options.lineWrapping ? coordsBidiPartWrapped : coordsBidiPart)\n (cm, lineObj, lineNo$$1, preparedMeasure, order, x, y);\n ltr = part.level != 1;\n // 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 begin = ltr ? part.from : part.to - 1;\n end = ltr ? part.to : part.from - 1;\n }\n\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 var chAround = null, boxAround = null;\n var ch = findFirst(function (ch) {\n var box = measureCharPrepared(cm, preparedMeasure, ch);\n box.top += widgetHeight$$1; box.bottom += widgetHeight$$1;\n if (!boxIsAfter(box, x, y, false)) { return false }\n if (box.top <= y && box.left <= x) {\n chAround = ch;\n boxAround = box;\n }\n return true\n }, begin, end);\n\n var baseX, sticky, outside = false;\n // If a box around the coordinates was found, use that\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, 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)) { 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 sticky = ch == 0 ? \"after\" : ch == lineObj.text.length ? \"before\" :\n (measureCharPrepared(cm, preparedMeasure, ch - (ltr ? 1 : 0)).bottom + widgetHeight$$1 <= y) == ltr ?\n \"after\" : \"before\";\n // Now get accurate coordinates for this place, in order to get a\n // base X position\n var coords = cursorCoords(cm, Pos(lineNo$$1, ch, sticky), \"line\", lineObj, preparedMeasure);\n baseX = coords.left;\n outside = y < coords.top || y >= coords.bottom;\n }\n\n ch = skipExtendingChars(lineObj.text, ch, 1);\n return PosWithInfo(lineNo$$1, ch, sticky, outside, x - baseX)\n }\n\n function coordsBidiPart(cm, lineObj, lineNo$$1, 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], ltr = part.level != 1;\n return boxIsAfter(cursorCoords(cm, Pos(lineNo$$1, ltr ? part.to : part.from, ltr ? \"before\" : \"after\"),\n \"line\", lineObj, preparedMeasure), x, y, true)\n }, 0, order.length - 1);\n var part = order[index];\n // 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 if (index > 0) {\n var ltr = part.level != 1;\n var start = cursorCoords(cm, Pos(lineNo$$1, ltr ? part.from : part.to, ltr ? \"after\" : \"before\"),\n \"line\", lineObj, preparedMeasure);\n if (boxIsAfter(start, x, y, true) && start.top > y)\n { part = order[index - 1]; }\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 if (/\\s/.test(lineObj.text.charAt(end - 1))) { end--; }\n var part = null, closestDist = null;\n for (var i = 0; i < order.length; i++) {\n var p = order[i];\n if (p.from >= end || p.to <= begin) { continue }\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;\n // Weigh against spans ending before this, so that they are only\n // picked if nothing ends after\n var dist = endX < x ? x - endX + 1e9 : endX - x;\n if (!part || closestDist > dist) {\n part = p;\n closestDist = dist;\n }\n }\n if (!part) { part = order[order.length - 1]; }\n // Clip the part to the wrapped line.\n if (part.from < begin) { part = {from: begin, to: part.to, level: part.level}; }\n if (part.to > end) { part = {from: part.from, to: end, level: part.level}; }\n return part\n }\n\n var measureText;\n // Compute the default text height.\n function textHeight(display) {\n if (display.cachedTextHeight != null) { return display.cachedTextHeight }\n if (measureText == null) {\n measureText = elt(\"pre\");\n // Measure a bunch of lines, for browsers that compute\n // fractional heights.\n for (var i = 0; i < 49; ++i) {\n measureText.appendChild(document.createTextNode(\"x\"));\n measureText.appendChild(elt(\"br\"));\n }\n measureText.appendChild(document.createTextNode(\"x\"));\n }\n removeChildrenAndAdd(display.measure, measureText);\n var height = measureText.offsetHeight / 50;\n if (height > 3) { display.cachedTextHeight = height; }\n removeChildren(display.measure);\n return height || 1\n }\n\n // Compute the default character width.\n function charWidth(display) {\n if (display.cachedCharWidth != null) { return display.cachedCharWidth }\n var anchor = elt(\"span\", \"xxxxxxxxxx\");\n var pre = elt(\"pre\", [anchor]);\n removeChildrenAndAdd(display.measure, pre);\n var rect = anchor.getBoundingClientRect(), width = (rect.right - rect.left) / 10;\n if (width > 2) { display.cachedCharWidth = width; }\n return width || 10\n }\n\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 function getDimensions(cm) {\n var d = cm.display, left = {}, width = {};\n var gutterLeft = d.gutters.clientLeft;\n for (var n = d.gutters.firstChild, i = 0; n; n = n.nextSibling, ++i) {\n left[cm.options.gutters[i]] = n.offsetLeft + n.clientLeft + gutterLeft;\n width[cm.options.gutters[i]] = n.clientWidth;\n }\n return {fixedPos: compensateForHScroll(d),\n gutterTotalWidth: d.gutters.offsetWidth,\n gutterLeft: left,\n gutterWidth: width,\n wrapperWidth: d.wrapper.clientWidth}\n }\n\n // Computes display.scroller.scrollLeft + display.gutters.offsetWidth,\n // but using getBoundingClientRect to get a sub-pixel-accurate\n // result.\n function compensateForHScroll(display) {\n return display.scroller.getBoundingClientRect().left - display.sizer.getBoundingClientRect().left\n }\n\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 function estimateHeight(cm) {\n var th = textHeight(cm.display), 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)) { return 0 }\n\n var widgetsHeight = 0;\n if (line.widgets) { for (var i = 0; i < line.widgets.length; i++) {\n if (line.widgets[i].height) { widgetsHeight += line.widgets[i].height; }\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 function estimateLineHeights(cm) {\n var doc = cm.doc, est = estimateHeight(cm);\n doc.iter(function (line) {\n var estHeight = est(line);\n if (estHeight != line.height) { updateLineHeight(line, estHeight); }\n });\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 function posFromMouse(cm, e, liberal, forRect) {\n var display = cm.display;\n if (!liberal && e_target(e).getAttribute(\"cm-not-content\") == \"true\") { return null }\n\n var x, y, space = display.lineSpace.getBoundingClientRect();\n // Fails unpredictably on IE[67] when mouse is dragged around quickly.\n try { x = e.clientX - space.left; y = e.clientY - space.top; }\n catch (e) { return null }\n var coords = coordsChar(cm, x, y), line;\n if (forRect && coords.xRel == 1 && (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 return coords\n }\n\n // Find the view element corresponding to a given line. Return null\n // when the line isn't visible.\n function findViewIndex(cm, n) {\n if (n >= cm.display.viewTo) { return null }\n n -= cm.display.viewFrom;\n if (n < 0) { return null }\n var view = cm.display.view;\n for (var i = 0; i < view.length; i++) {\n n -= view[i].size;\n if (n < 0) { return i }\n }\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\n var doc = cm.doc, 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) { continue }\n var range$$1 = doc.sel.ranges[i];\n if (range$$1.from().line >= cm.display.viewTo || range$$1.to().line < cm.display.viewFrom) { continue }\n var collapsed = range$$1.empty();\n if (collapsed || cm.options.showCursorWhenSelecting)\n { drawSelectionCursor(cm, range$$1.head, curFragment); }\n if (!collapsed)\n { drawSelectionRange(cm, range$$1, selFragment); }\n }\n return result\n }\n\n // Draws a cursor for the given range\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\", \"\\u00a0\", \"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\", \"\\u00a0\", \"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) { return a.top - b.top || a.left - b.left }\n\n // Draws the given range as a highlighted selection\n function drawSelectionRange(cm, range$$1, output) {\n var display = cm.display, doc = cm.doc;\n var fragment = document.createDocumentFragment();\n var padding = paddingH(cm.display), 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) { top = 0; }\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 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\n var openStart = fromArg == null && from == 0, openEnd = toArg == null && to == lineLen;\n var first = i == 0, last = !order || i == order.length - 1;\n if (toPos.top - fromPos.top <= 3) { // 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 { // Multiple lines\n var topLeft, topRight, botLeft, botRight;\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 add(topLeft, fromPos.top, topRight - topLeft, fromPos.bottom);\n if (fromPos.bottom < toPos.top) { add(leftSide, fromPos.bottom, null, toPos.top); }\n add(botLeft, toPos.top, botRight - botLeft, toPos.bottom);\n }\n\n if (!start || cmpCoords(fromPos, start) < 0) { start = fromPos; }\n if (cmpCoords(toPos, start) < 0) { start = toPos; }\n if (!end || cmpCoords(fromPos, end) < 0) { end = fromPos; }\n if (cmpCoords(toPos, end) < 0) { end = toPos; }\n });\n return {start: start, end: end}\n }\n\n var sFrom = range$$1.from(), sTo = range$$1.to();\n if (sFrom.line == sTo.line) {\n drawForLine(sFrom.line, sFrom.ch, sTo.ch);\n } else {\n var fromLine = getLine(doc, sFrom.line), 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 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 if (leftEnd.bottom < rightStart.top)\n { add(leftSide, leftEnd.bottom, null, rightStart.top); }\n }\n\n output.appendChild(fragment);\n }\n\n // Cursor-blinking\n function restartBlink(cm) {\n if (!cm.state.focused) { return }\n var display = cm.display;\n clearInterval(display.blinker);\n var on = true;\n display.cursorDiv.style.visibility = \"\";\n if (cm.options.cursorBlinkRate > 0)\n { display.blinker = setInterval(function () { 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 function ensureFocus(cm) {\n if (!cm.state.focused) { cm.display.input.focus(); onFocus(cm); }\n }\n\n function delayBlurEvent(cm) {\n cm.state.delayingBlurEvent = true;\n setTimeout(function () { if (cm.state.delayingBlurEvent) {\n cm.state.delayingBlurEvent = false;\n onBlur(cm);\n } }, 100);\n }\n\n function onFocus(cm, e) {\n if (cm.state.delayingBlurEvent) { cm.state.delayingBlurEvent = false; }\n\n if (cm.options.readOnly == \"nocursor\") { return }\n if (!cm.state.focused) {\n signal(cm, \"focus\", cm, e);\n cm.state.focused = true;\n addClass(cm.display.wrapper, \"CodeMirror-focused\");\n // 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 if (!cm.curOp && cm.display.selForContextMenu != cm.doc.sel) {\n cm.display.input.reset();\n if (webkit) { setTimeout(function () { return cm.display.input.reset(true); }, 20); } // Issue #1730\n }\n cm.display.input.receivedFocus();\n }\n restartBlink(cm);\n }\n function onBlur(cm, e) {\n if (cm.state.delayingBlurEvent) { return }\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 clearInterval(cm.display.blinker);\n setTimeout(function () { if (!cm.state.focused) { cm.display.shift = false; } }, 150);\n }\n\n // Read the actual heights of the rendered lines, and update their\n // stored heights to match.\n function updateHeightsInViewport(cm) {\n var display = cm.display;\n var prevBottom = display.lineDiv.offsetTop;\n for (var i = 0; i < display.view.length; i++) {\n var cur = display.view[i], wrapping = cm.options.lineWrapping;\n var height = (void 0), width = 0;\n if (cur.hidden) { continue }\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;\n // Check that lines don't extend past the right of the current\n // editor width\n if (!wrapping && cur.text.firstChild)\n { width = cur.text.firstChild.getBoundingClientRect().right - box.left - 1; }\n }\n var diff = cur.line.height - height;\n if (diff > .005 || diff < -.005) {\n updateLineHeight(cur.line, height);\n updateWidgetHeight(cur.line);\n if (cur.rest) { for (var j = 0; j < cur.rest.length; j++)\n { updateWidgetHeight(cur.rest[j]); } }\n }\n if (width > cm.display.sizerWidth) {\n var chWidth = Math.ceil(width / charWidth(cm.display));\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 }\n\n // Read and store the height of line widgets associated with the\n // given line.\n function updateWidgetHeight(line) {\n if (line.widgets) { for (var i = 0; i < line.widgets.length; ++i) {\n var w = line.widgets[i], parent = w.node.parentNode;\n if (parent) { 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 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), to = lineAtHeight(doc, bottom);\n // Ensure is a {from: {line, ch}, to: {line, ch}} object, and\n // forces those lines into the viewport (if possible).\n if (viewport && viewport.ensure) {\n var ensureFrom = viewport.ensure.from.line, ensureTo = viewport.ensure.to.line;\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 return {from: from, to: Math.max(to, from + 1)}\n }\n\n // Re-align line numbers and gutter marks to compensate for\n // horizontal scrolling.\n function alignHorizontally(cm) {\n var display = cm.display, view = display.view;\n if (!display.alignWidgets && (!display.gutters.firstChild || !cm.options.fixedGutter)) { return }\n var comp = compensateForHScroll(display) - display.scroller.scrollLeft + cm.doc.scrollLeft;\n var gutterW = display.gutters.offsetWidth, left = comp + \"px\";\n for (var i = 0; i < view.length; i++) { if (!view[i].hidden) {\n if (cm.options.fixedGutter) {\n if (view[i].gutter)\n { view[i].gutter.style.left = left; }\n if (view[i].gutterBackground)\n { view[i].gutterBackground.style.left = left; }\n }\n var align = view[i].alignable;\n if (align) { for (var j = 0; j < align.length; j++)\n { align[j].style.left = left; } }\n } }\n if (cm.options.fixedGutter)\n { display.gutters.style.left = (comp + gutterW) + \"px\"; }\n }\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 function maybeUpdateLineNumberWidth(cm) {\n if (!cm.options.lineNumbers) { return false }\n var doc = cm.doc, last = lineNumberFor(cm.options, doc.first + doc.size - 1), display = cm.display;\n if (last.length != display.lineNumChars) {\n var test = display.measure.appendChild(elt(\"div\", [elt(\"div\", last)],\n \"CodeMirror-linenumber CodeMirror-gutter-elt\"));\n var innerW = test.firstChild.offsetWidth, 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);\n return true\n }\n return false\n }\n\n // SCROLLING THINGS INTO VIEW\n\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 function maybeScrollWindow(cm, rect) {\n if (signalDOMEvent(cm, \"scrollCursorIntoView\")) { return }\n\n var display = cm.display, box = display.sizer.getBoundingClientRect(), doScroll = null;\n if (rect.top + box.top < 0) { doScroll = true; }\n else if (rect.bottom + box.top > (window.innerHeight || document.documentElement.clientHeight)) { doScroll = false; }\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 }\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 function scrollPosIntoView(cm, pos, end, margin) {\n if (margin == null) { margin = 0; }\n var rect;\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 for (var limit = 0; limit < 5; limit++) {\n var changed = false;\n var coords = cursorCoords(cm, pos);\n var endCoords = !end || end == pos ? coords : cursorCoords(cm, end);\n rect = {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 var scrollPos = calculateScrollPos(cm, rect);\n var startTop = cm.doc.scrollTop, startLeft = cm.doc.scrollLeft;\n if (scrollPos.scrollTop != null) {\n updateScrollTop(cm, scrollPos.scrollTop);\n if (Math.abs(cm.doc.scrollTop - startTop) > 1) { changed = true; }\n }\n if (scrollPos.scrollLeft != null) {\n setScrollLeft(cm, scrollPos.scrollLeft);\n if (Math.abs(cm.doc.scrollLeft - startLeft) > 1) { changed = true; }\n }\n if (!changed) { break }\n }\n return rect\n }\n\n // Scroll a given set of coordinates into view (immediately).\n function scrollIntoView(cm, rect) {\n var scrollPos = calculateScrollPos(cm, rect);\n if (scrollPos.scrollTop != null) { updateScrollTop(cm, scrollPos.scrollTop); }\n if (scrollPos.scrollLeft != null) { setScrollLeft(cm, scrollPos.scrollLeft); }\n }\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 function calculateScrollPos(cm, rect) {\n var display = cm.display, snapMargin = textHeight(cm.display);\n if (rect.top < 0) { rect.top = 0; }\n var screentop = cm.curOp && cm.curOp.scrollTop != null ? cm.curOp.scrollTop : display.scroller.scrollTop;\n var screen = displayHeight(cm), result = {};\n if (rect.bottom - rect.top > screen) { rect.bottom = rect.top + screen; }\n var docBottom = cm.doc.height + paddingVert(display);\n var atTop = rect.top < snapMargin, atBottom = rect.bottom > docBottom - snapMargin;\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 if (newTop != screentop) { result.scrollTop = newTop; }\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 if (tooWide) { rect.right = rect.left + screenw; }\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 return result\n }\n\n // Store a relative adjustment to the scroll position in the current\n // operation (to be applied when the operation finishes).\n function addToScrollTop(cm, top) {\n if (top == null) { return }\n resolveScrollToPos(cm);\n cm.curOp.scrollTop = (cm.curOp.scrollTop == null ? cm.doc.scrollTop : cm.curOp.scrollTop) + top;\n }\n\n // Make sure that at the end of the operation the current cursor is\n // shown.\n function ensureCursorVisible(cm) {\n resolveScrollToPos(cm);\n var cur = cm.getCursor();\n cm.curOp.scrollToPos = {from: cur, to: cur, margin: cm.options.cursorScrollMargin};\n }\n\n function scrollToCoords(cm, x, y) {\n if (x != null || y != null) { resolveScrollToPos(cm); }\n if (x != null) { cm.curOp.scrollLeft = x; }\n if (y != null) { cm.curOp.scrollTop = y; }\n }\n\n function scrollToRange(cm, range$$1) {\n resolveScrollToPos(cm);\n cm.curOp.scrollToPos = range$$1;\n }\n\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 function resolveScrollToPos(cm) {\n var range$$1 = cm.curOp.scrollToPos;\n if (range$$1) {\n cm.curOp.scrollToPos = null;\n var from = estimateCoords(cm, range$$1.from), to = estimateCoords(cm, range$$1.to);\n scrollToCoordsRange(cm, from, to, range$$1.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 }\n\n // Sync the scrollable area and scrollbars, ensure the viewport\n // covers the visible area.\n function updateScrollTop(cm, val) {\n if (Math.abs(cm.doc.scrollTop - val) < 2) { return }\n if (!gecko) { updateDisplaySimple(cm, {top: val}); }\n setScrollTop(cm, val, true);\n if (gecko) { updateDisplaySimple(cm); }\n startWorker(cm, 100);\n }\n\n function setScrollTop(cm, val, forceScroll) {\n val = Math.min(cm.display.scroller.scrollHeight - cm.display.scroller.clientHeight, val);\n if (cm.display.scroller.scrollTop == val && !forceScroll) { return }\n cm.doc.scrollTop = val;\n cm.display.scrollbars.setScrollTop(val);\n if (cm.display.scroller.scrollTop != val) { cm.display.scroller.scrollTop = val; }\n }\n\n // Sync scroller and scrollbar, ensure the gutter elements are\n // aligned.\n function setScrollLeft(cm, val, isScroller, forceScroll) {\n val = Math.min(val, cm.display.scroller.scrollWidth - cm.display.scroller.clientWidth);\n if ((isScroller ? val == cm.doc.scrollLeft : Math.abs(cm.doc.scrollLeft - val) < 2) && !forceScroll) { return }\n cm.doc.scrollLeft = val;\n alignHorizontally(cm);\n if (cm.display.scroller.scrollLeft != val) { cm.display.scroller.scrollLeft = val; }\n cm.display.scrollbars.setScrollLeft(val);\n }\n\n // SCROLLBARS\n\n // Prepare DOM reads needed to update the scrollbars. Done in one\n // shot to minimize update/measure roundtrips.\n function measureForScrollbars(cm) {\n var d = cm.display, 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, 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(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); place(horiz);\n\n on(vert, \"scroll\", function () {\n if (vert.clientHeight) { scroll(vert.scrollTop, \"vertical\"); }\n });\n on(horiz, \"scroll\", function () {\n if (horiz.clientWidth) { scroll(horiz.scrollLeft, \"horizontal\"); }\n });\n\n this.checkedZeroWidth = false;\n // Need to set a minimum width to see the scrollbar on IE7 (but must not set it on IE8).\n if (ie && ie_version < 8) { this.horiz.style.minHeight = this.vert.style.minWidth = \"18px\"; }\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);\n // A bug in IE8 can cause this value to be negative, so guard it.\n this.vert.firstChild.style.height =\n 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 =\n 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) { this.zeroWidthHack(); }\n this.checkedZeroWidth = true;\n }\n\n return {right: needsV ? sWidth : 0, bottom: needsH ? sWidth : 0}\n };\n\n NativeScrollbars.prototype.setScrollLeft = function (pos) {\n if (this.horiz.scrollLeft != pos) { this.horiz.scrollLeft = pos; }\n if (this.disableHoriz) { this.enableZeroWidthBar(this.horiz, this.disableHoriz, \"horiz\"); }\n };\n\n NativeScrollbars.prototype.setScrollTop = function (pos) {\n if (this.vert.scrollTop != pos) { this.vert.scrollTop = pos; }\n if (this.disableVert) { this.enableZeroWidthBar(this.vert, this.disableVert, \"vert\"); }\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 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$$1 = type == \"vert\" ? document.elementFromPoint(box.right - 1, (box.top + box.bottom) / 2)\n : document.elementFromPoint((box.right + box.left) / 2, box.bottom - 1);\n if (elt$$1 != bar) { bar.style.pointerEvents = \"none\"; }\n else { delay.set(1000, maybeDisable); }\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 () {};\n\n NullScrollbars.prototype.update = function () { return {bottom: 0, right: 0} };\n NullScrollbars.prototype.setScrollLeft = function () {};\n NullScrollbars.prototype.setScrollTop = function () {};\n NullScrollbars.prototype.clear = function () {};\n\n function updateScrollbars(cm, measure) {\n if (!measure) { measure = measureForScrollbars(cm); }\n var startWidth = cm.display.barWidth, startHeight = cm.display.barHeight;\n updateScrollbarsInner(cm, measure);\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 updateScrollbarsInner(cm, measureForScrollbars(cm));\n startWidth = cm.display.barWidth; startHeight = cm.display.barHeight;\n }\n }\n\n // Re-synchronize the fake scrollbars with the actual size of the\n // content.\n function updateScrollbarsInner(cm, measure) {\n var d = cm.display;\n var sizes = d.scrollbars.update(measure);\n\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 { d.scrollbarFiller.style.display = \"\"; }\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 { d.gutterFiller.style.display = \"\"; }\n }\n\n var scrollbarModel = {\"native\": NativeScrollbars, \"null\": NullScrollbars};\n\n function initScrollbars(cm) {\n if (cm.display.scrollbars) {\n cm.display.scrollbars.clear();\n if (cm.display.scrollbars.addClass)\n { rmClass(cm.display.wrapper, cm.display.scrollbars.addClass); }\n }\n\n cm.display.scrollbars = new scrollbarModel[cm.options.scrollbarStyle](function (node) {\n cm.display.wrapper.insertBefore(node, cm.display.scrollbarFiller);\n // Prevent clicks in the scrollbars from killing focus\n on(node, \"mousedown\", function () {\n if (cm.state.focused) { setTimeout(function () { return cm.display.input.focus(); }, 0); }\n });\n node.setAttribute(\"cm-not-content\", \"true\");\n }, function (pos, axis) {\n if (axis == \"horizontal\") { setScrollLeft(cm, pos); }\n else { updateScrollTop(cm, pos); }\n }, cm);\n if (cm.display.scrollbars.addClass)\n { addClass(cm.display.wrapper, cm.display.scrollbars.addClass); }\n }\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 var nextOpId = 0;\n // Start a new operation.\n function startOperation(cm) {\n cm.curOp = {\n cm: cm,\n viewChanged: false, // Flag that indicates that lines might need to be redrawn\n startHeight: cm.doc.height, // Used to detect need to update scrollbar\n forceUpdate: false, // Used to force a redraw\n updateInput: 0, // Whether to reset the input textarea\n typing: false, // Whether this reset should be careful to leave existing text (for compositing)\n changeObjs: null, // Accumulated changes, for firing change events\n cursorActivityHandlers: null, // Set of handlers to fire cursorActivity on\n cursorActivityCalled: 0, // Tracks which cursorActivity handlers have been called already\n selectionChanged: false, // Whether the selection needs to be redrawn\n updateMaxLine: false, // Set when the widest line needs to be determined anew\n scrollLeft: null, scrollTop: null, // Intermediate scroll position, not pushed to DOM yet\n scrollToPos: null, // Used to scroll to a specific position\n focus: false,\n id: ++nextOpId // Unique ID\n };\n pushOperation(cm.curOp);\n }\n\n // Finish an operation, updating the display and signalling delayed events\n function endOperation(cm) {\n var op = cm.curOp;\n if (op) { finishOperation(op, function (group) {\n for (var i = 0; i < group.ops.length; i++)\n { group.ops[i].cm.curOp = null; }\n endOperations(group);\n }); }\n }\n\n // The DOM updates done when an operation finishes are batched so\n // that the minimum number of relayouts are required.\n function endOperations(group) {\n var ops = group.ops;\n for (var i = 0; i < ops.length; i++) // Read DOM\n { endOperation_R1(ops[i]); }\n for (var i$1 = 0; i$1 < ops.length; i$1++) // Write DOM (maybe)\n { endOperation_W1(ops[i$1]); }\n for (var i$2 = 0; i$2 < ops.length; i$2++) // Read DOM\n { endOperation_R2(ops[i$2]); }\n for (var i$3 = 0; i$3 < ops.length; i$3++) // Write DOM (maybe)\n { endOperation_W2(ops[i$3]); }\n for (var i$4 = 0; i$4 < ops.length; i$4++) // Read DOM\n { endOperation_finish(ops[i$4]); }\n }\n\n function endOperation_R1(op) {\n var cm = op.cm, display = cm.display;\n maybeClipScrollbars(cm);\n if (op.updateMaxLine) { findMaxLine(cm); }\n\n op.mustUpdate = op.viewChanged || op.forceUpdate || op.scrollTop != null ||\n op.scrollToPos && (op.scrollToPos.from.line < display.viewFrom ||\n op.scrollToPos.to.line >= display.viewTo) ||\n display.maxLineChanged && cm.options.lineWrapping;\n op.update = op.mustUpdate &&\n new DisplayUpdate(cm, op.mustUpdate && {top: op.scrollTop, ensure: op.scrollToPos}, 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, display = cm.display;\n if (op.updatedDisplay) { updateHeightsInViewport(cm); }\n\n op.barMeasure = measureForScrollbars(cm);\n\n // 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 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 =\n 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 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 if (op.maxScrollLeft < cm.doc.scrollLeft)\n { setScrollLeft(cm, Math.min(cm.display.scroller.scrollLeft, op.maxScrollLeft), true); }\n cm.display.maxLineChanged = false;\n }\n\n var takeFocus = op.focus && op.focus == activeElt();\n if (op.preparedSelection)\n { cm.display.input.showSelection(op.preparedSelection, takeFocus); }\n if (op.updatedDisplay || op.startHeight != cm.doc.height)\n { updateScrollbars(cm, op.barMeasure); }\n if (op.updatedDisplay)\n { setDocumentHeight(cm, op.barMeasure); }\n\n if (op.selectionChanged) { restartBlink(cm); }\n\n if (cm.state.focused && op.updateInput)\n { cm.display.input.reset(op.typing); }\n if (takeFocus) { ensureFocus(op.cm); }\n }\n\n function endOperation_finish(op) {\n var cm = op.cm, display = cm.display, doc = cm.doc;\n\n if (op.updatedDisplay) { postUpdateDisplay(cm, op.update); }\n\n // Abort mouse wheel delta measurement, when scrolling explicitly\n if (display.wheelStartX != null && (op.scrollTop != null || op.scrollLeft != null || op.scrollToPos))\n { display.wheelStartX = display.wheelStartY = null; }\n\n // Propagate the scroll position to the actual DOM scroller\n if (op.scrollTop != null) { setScrollTop(cm, op.scrollTop, op.forceScroll); }\n\n if (op.scrollLeft != null) { setScrollLeft(cm, op.scrollLeft, true, true); }\n // If we need to scroll a specific position into view, do so.\n if (op.scrollToPos) {\n var rect = scrollPosIntoView(cm, clipPos(doc, op.scrollToPos.from),\n clipPos(doc, op.scrollToPos.to), op.scrollToPos.margin);\n maybeScrollWindow(cm, rect);\n }\n\n // Fire events for markers that are hidden/unidden by editing or\n // undoing\n var hidden = op.maybeHiddenMarkers, unhidden = op.maybeUnhiddenMarkers;\n if (hidden) { for (var i = 0; i < hidden.length; ++i)\n { if (!hidden[i].lines.length) { signal(hidden[i], \"hide\"); } } }\n if (unhidden) { for (var i$1 = 0; i$1 < unhidden.length; ++i$1)\n { if (unhidden[i$1].lines.length) { signal(unhidden[i$1], \"unhide\"); } } }\n\n if (display.wrapper.offsetHeight)\n { doc.scrollTop = cm.display.scroller.scrollTop; }\n\n // Fire change events, and delayed event handlers\n if (op.changeObjs)\n { signal(cm, \"changes\", cm, op.changeObjs); }\n if (op.update)\n { op.update.finish(); }\n }\n\n // Run the given function in an operation\n function runInOp(cm, f) {\n if (cm.curOp) { return f() }\n startOperation(cm);\n try { return f() }\n finally { endOperation(cm); }\n }\n // Wraps a function in an operation. Returns the wrapped function.\n function operation(cm, f) {\n return function() {\n if (cm.curOp) { return f.apply(cm, arguments) }\n startOperation(cm);\n try { return f.apply(cm, arguments) }\n finally { endOperation(cm); }\n }\n }\n // Used to add methods to editor and doc instances, wrapping them in\n // operations.\n function methodOp(f) {\n return function() {\n if (this.curOp) { return f.apply(this, arguments) }\n startOperation(this);\n try { return f.apply(this, arguments) }\n finally { endOperation(this); }\n }\n }\n function docMethodOp(f) {\n return function() {\n var cm = this.cm;\n if (!cm || cm.curOp) { return f.apply(this, arguments) }\n startOperation(cm);\n try { return f.apply(this, arguments) }\n finally { endOperation(cm); }\n }\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 function regChange(cm, from, to, lendiff) {\n if (from == null) { from = cm.doc.first; }\n if (to == null) { to = cm.doc.first + cm.doc.size; }\n if (!lendiff) { lendiff = 0; }\n\n var display = cm.display;\n if (lendiff && to < display.viewTo &&\n (display.updateLineNumbers == null || display.updateLineNumbers > from))\n { display.updateLineNumbers = from; }\n\n cm.curOp.viewChanged = true;\n\n if (from >= display.viewTo) { // Change after\n if (sawCollapsedSpans && visualLineNo(cm.doc, from) < display.viewTo)\n { resetView(cm); }\n } else if (to <= display.viewFrom) { // 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) { // Full overlap\n resetView(cm);\n } else if (from <= display.viewFrom) { // Top overlap\n var cut = viewCuttingPoint(cm, to, to + lendiff, 1);\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) { // Bottom overlap\n var cut$1 = viewCuttingPoint(cm, from, from, -1);\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 { // Gap in the middle\n var cutTop = viewCuttingPoint(cm, from, from, -1);\n var cutBot = viewCuttingPoint(cm, to, to + lendiff, 1);\n if (cutTop && cutBot) {\n display.view = display.view.slice(0, cutTop.index)\n .concat(buildViewArray(cm, cutTop.lineN, cutBot.lineN))\n .concat(display.view.slice(cutBot.index));\n display.viewTo += lendiff;\n } else {\n resetView(cm);\n }\n }\n\n var ext = display.externalMeasured;\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\n // Register a change to a single line. Type must be one of \"text\",\n // \"gutter\", \"class\", \"widget\"\n function regLineChange(cm, line, type) {\n cm.curOp.viewChanged = true;\n var display = cm.display, ext = cm.display.externalMeasured;\n if (ext && line >= ext.lineN && line < ext.lineN + ext.size)\n { display.externalMeasured = null; }\n\n if (line < display.viewFrom || line >= display.viewTo) { return }\n var lineView = display.view[findViewIndex(cm, line)];\n if (lineView.node == null) { return }\n var arr = lineView.changes || (lineView.changes = []);\n if (indexOf(arr, type) == -1) { arr.push(type); }\n }\n\n // Clear the view.\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), diff, view = cm.display.view;\n if (!sawCollapsedSpans || newN == cm.doc.first + cm.doc.size)\n { return {index: index, lineN: newN} }\n var n = cm.display.viewFrom;\n for (var i = 0; i < index; i++)\n { n += view[i].size; }\n if (n != oldN) {\n if (dir > 0) {\n if (index == view.length - 1) { return null }\n diff = (n + view[index].size) - oldN;\n index++;\n } else {\n diff = n - oldN;\n }\n oldN += diff; newN += diff;\n }\n while (visualLineNo(cm.doc, newN) != newN) {\n if (index == (dir < 0 ? 0 : view.length - 1)) { return null }\n newN += dir * view[index - (dir < 0 ? 1 : 0)].size;\n index += dir;\n }\n return {index: index, lineN: newN}\n }\n\n // Force the view to cover a given range, adding empty view element\n // or clipping off existing ones as needed.\n function adjustView(cm, from, to) {\n var display = cm.display, view = display.view;\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 display.viewFrom = from;\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 display.viewTo = to;\n }\n\n // Count the number of lines in the view whose DOM representation is\n // out of date (or nonexistent).\n function countDirtyView(cm) {\n var view = cm.display.view, dirty = 0;\n for (var i = 0; i < view.length; i++) {\n var lineView = view[i];\n if (!lineView.hidden && (!lineView.node || lineView.changes)) { ++dirty; }\n }\n return dirty\n }\n\n // HIGHLIGHT WORKER\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 function highlightWorker(cm) {\n var doc = cm.doc;\n if (doc.highlightFrontier >= cm.display.viewTo) { return }\n var end = +new Date + cm.options.workTime;\n var context = getContextBefore(cm, doc.highlightFrontier);\n var changedLines = [];\n\n doc.iter(context.line, Math.min(doc.first + doc.size, cm.display.viewTo + 500), function (line) {\n if (context.line >= cm.display.viewFrom) { // 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 if (resetState) { context.state = resetState; }\n line.styles = highlighted.styles;\n var oldCls = line.styleClasses, newCls = highlighted.classes;\n if (newCls) { line.styleClasses = newCls; }\n else if (oldCls) { line.styleClasses = null; }\n var ischange = !oldStyles || oldStyles.length != line.styles.length ||\n oldCls != newCls && (!oldCls || !newCls || oldCls.bgClass != newCls.bgClass || oldCls.textClass != newCls.textClass);\n for (var i = 0; !ischange && i < oldStyles.length; ++i) { ischange = oldStyles[i] != line.styles[i]; }\n if (ischange) { changedLines.push(context.line); }\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 line.stateAfter = context.line % 5 == 0 ? context.save() : null;\n context.nextLine();\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 if (changedLines.length) { 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 var DisplayUpdate = function(cm, viewport, force) {\n var display = cm.display;\n\n this.viewport = viewport;\n // Store some values that we'll need later (but don't want to force a relayout for)\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 DisplayUpdate.prototype.finish = function () {\n var this$1 = this;\n\n for (var i = 0; i < this.events.length; i++)\n { signal.apply(null, this$1.events[i]); }\n };\n\n function maybeClipScrollbars(cm) {\n var display = cm.display;\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()) { return null }\n var active = activeElt();\n if (!active || !contains(cm.display.lineDiv, active)) { return null }\n var result = {activeElt: active};\n if (window.getSelection) {\n var sel = window.getSelection();\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 return result\n }\n\n function restoreSelection(snapshot) {\n if (!snapshot || !snapshot.activeElt || snapshot.activeElt == activeElt()) { return }\n snapshot.activeElt.focus();\n if (snapshot.anchorNode && contains(document.body, snapshot.anchorNode) && contains(document.body, snapshot.focusNode)) {\n var sel = window.getSelection(), range$$1 = document.createRange();\n range$$1.setEnd(snapshot.anchorNode, snapshot.anchorOffset);\n range$$1.collapse(false);\n sel.removeAllRanges();\n sel.addRange(range$$1);\n sel.extend(snapshot.focusNode, snapshot.focusOffset);\n }\n }\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 function updateDisplayIfNeeded(cm, update) {\n var display = cm.display, doc = cm.doc;\n\n if (update.editorIsHidden) {\n resetView(cm);\n return false\n }\n\n // Bail out if the visible area is already rendered and nothing changed.\n if (!update.force &&\n update.visible.from >= display.viewFrom && update.visible.to <= display.viewTo &&\n (display.updateLineNumbers == null || display.updateLineNumbers >= display.viewTo) &&\n display.renderedView == display.view && countDirtyView(cm) == 0)\n { return false }\n\n if (maybeUpdateLineNumberWidth(cm)) {\n resetView(cm);\n update.dims = getDimensions(cm);\n }\n\n // Compute a suitable new viewport (from & to)\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 if (display.viewFrom < from && from - display.viewFrom < 20) { from = Math.max(doc.first, display.viewFrom); }\n if (display.viewTo > to && display.viewTo - to < 20) { to = Math.min(end, display.viewTo); }\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 ||\n display.lastWrapHeight != update.wrapperHeight || display.lastWrapWidth != update.wrapperWidth;\n adjustView(cm, from, to);\n\n display.viewOffset = heightAtLine(getLine(cm.doc, display.viewFrom));\n // Position the mover div to align with the current scroll position\n cm.display.mover.style.top = display.viewOffset + \"px\";\n\n var toUpdate = countDirtyView(cm);\n if (!different && toUpdate == 0 && !update.force && display.renderedView == display.view &&\n (display.updateLineNumbers == null || display.updateLineNumbers >= display.viewTo))\n { return false }\n\n // For big changes, we hide the enclosing element during the\n // update, since that speeds up the operations on most browsers.\n var selSnapshot = selectionSnapshot(cm);\n if (toUpdate > 4) { display.lineDiv.style.display = \"none\"; }\n patchDisplay(cm, display.updateLineNumbers, update.dims);\n if (toUpdate > 4) { display.lineDiv.style.display = \"\"; }\n display.renderedView = display.view;\n // There might have been a widget with a focused element that got\n // hidden or updated, if so re-focus it.\n restoreSelection(selSnapshot);\n\n // Prevent selection and cursors from interfering with the scroll\n // width and height.\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\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 = {top: Math.min(cm.doc.height + paddingVert(cm.display) - displayHeight(cm), viewport.top)}; }\n // Updated line heights might result in the drawn area not\n // actually covering the viewport. Keep looping until it does.\n update.visible = visibleLines(cm.display, cm.doc, viewport);\n if (update.visible.from >= cm.display.viewFrom && update.visible.to <= cm.display.viewTo)\n { break }\n }\n if (!updateDisplayIfNeeded(cm, update)) { break }\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 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; cm.display.reportedViewTo = cm.display.viewTo;\n }\n }\n\n function updateDisplaySimple(cm, viewport) {\n var update = new DisplayUpdate(cm, viewport);\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 }\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 function patchDisplay(cm, updateNumbersFrom, dims) {\n var display = cm.display, lineNumbers = cm.options.lineNumbers;\n var container = display.lineDiv, cur = container.firstChild;\n\n function rm(node) {\n var next = node.nextSibling;\n // Works around a throw-scroll bug in OS X Webkit\n if (webkit && mac && cm.display.currentWheelTarget == node)\n { node.style.display = \"none\"; }\n else\n { node.parentNode.removeChild(node); }\n return next\n }\n\n var view = display.view, lineN = display.viewFrom;\n // Loop over the elements in the view, syncing cur (the DOM nodes\n // in display.lineDiv) with the view as we go.\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) { // Not drawn yet\n var node = buildLineElement(cm, lineView, lineN, dims);\n container.insertBefore(node, cur);\n } else { // Already drawn\n while (cur != lineView.node) { cur = rm(cur); }\n var updateNumber = lineNumbers && updateNumbersFrom != null &&\n updateNumbersFrom <= lineN && lineView.lineNumber;\n if (lineView.changes) {\n if (indexOf(lineView.changes, \"gutter\") > -1) { updateNumber = false; }\n updateLineForChanges(cm, lineView, lineN, dims);\n }\n if (updateNumber) {\n removeChildren(lineView.lineNumber);\n lineView.lineNumber.appendChild(document.createTextNode(lineNumberFor(cm.options, lineN)));\n }\n cur = lineView.node.nextSibling;\n }\n lineN += lineView.size;\n }\n while (cur) { cur = rm(cur); }\n }\n\n function updateGutterSpace(cm) {\n var width = cm.display.gutters.offsetWidth;\n cm.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 }\n\n // Rebuild the gutter elements, ensure the margin to the left of the\n // code matches their width.\n function updateGutters(cm) {\n var gutters = cm.display.gutters, specs = cm.options.gutters;\n removeChildren(gutters);\n var i = 0;\n for (; i < specs.length; ++i) {\n var gutterClass = specs[i];\n var gElt = gutters.appendChild(elt(\"div\", null, \"CodeMirror-gutter \" + gutterClass));\n if (gutterClass == \"CodeMirror-linenumbers\") {\n cm.display.lineGutter = gElt;\n gElt.style.width = (cm.display.lineNumWidth || 1) + \"px\";\n }\n }\n gutters.style.display = i ? \"\" : \"none\";\n updateGutterSpace(cm);\n }\n\n // Make sure the gutters options contains the element\n // \"CodeMirror-linenumbers\" when the lineNumbers option is true.\n function setGuttersForLineNumbers(options) {\n var found = indexOf(options.gutters, \"CodeMirror-linenumbers\");\n if (found == -1 && options.lineNumbers) {\n options.gutters = options.gutters.concat([\"CodeMirror-linenumbers\"]);\n } else if (found > -1 && !options.lineNumbers) {\n options.gutters = options.gutters.slice(0);\n options.gutters.splice(found, 1);\n }\n }\n\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 var wheelSamples = 0, wheelPixelsPerUnit = null;\n // 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 if (ie) { wheelPixelsPerUnit = -.53; }\n else if (gecko) { wheelPixelsPerUnit = 15; }\n else if (chrome) { wheelPixelsPerUnit = -.7; }\n else if (safari) { wheelPixelsPerUnit = -1/3; }\n\n function wheelEventDelta(e) {\n var dx = e.wheelDeltaX, dy = e.wheelDeltaY;\n if (dx == null && e.detail && e.axis == e.HORIZONTAL_AXIS) { dx = e.detail; }\n if (dy == null && e.detail && e.axis == e.VERTICAL_AXIS) { dy = e.detail; }\n else if (dy == null) { dy = e.wheelDelta; }\n return {x: dx, y: dy}\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), dx = delta.x, dy = delta.y;\n\n var display = cm.display, scroll = display.scroller;\n // Quit if there's nothing to scroll here\n var canScrollX = scroll.scrollWidth > scroll.clientWidth;\n var canScrollY = scroll.scrollHeight > scroll.clientHeight;\n if (!(dx && canScrollX || dy && canScrollY)) { return }\n\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 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 }\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 if (dx && !gecko && !presto && wheelPixelsPerUnit != null) {\n if (dy && canScrollY)\n { updateScrollTop(cm, Math.max(0, scroll.scrollTop + dy * wheelPixelsPerUnit)); }\n setScrollLeft(cm, Math.max(0, scroll.scrollLeft + dx * wheelPixelsPerUnit));\n // 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 if (!dy || (dy && canScrollY))\n { e_preventDefault(e); }\n display.wheelStartX = null; // Abort measurement, if in progress\n return\n }\n\n // 'Project' the visible viewport to cover the area that is being\n // scrolled into view (if we know enough to estimate it).\n if (dy && wheelPixelsPerUnit != null) {\n var pixels = dy * wheelPixelsPerUnit;\n var top = cm.doc.scrollTop, bot = top + display.wrapper.clientHeight;\n if (pixels < 0) { top = Math.max(0, top + pixels - 50); }\n else { bot = Math.min(cm.doc.height, bot + pixels + 50); }\n updateDisplaySimple(cm, {top: top, bottom: bot});\n }\n\n if (wheelSamples < 20) {\n if (display.wheelStartX == null) {\n display.wheelStartX = scroll.scrollLeft; display.wheelStartY = scroll.scrollTop;\n display.wheelDX = dx; display.wheelDY = dy;\n setTimeout(function () {\n if (display.wheelStartX == null) { return }\n var movedX = scroll.scrollLeft - display.wheelStartX;\n var movedY = scroll.scrollTop - display.wheelStartY;\n var sample = (movedY && display.wheelDY && movedY / display.wheelDY) ||\n (movedX && display.wheelDX && movedX / display.wheelDX);\n display.wheelStartX = display.wheelStartY = null;\n if (!sample) { return }\n wheelPixelsPerUnit = (wheelPixelsPerUnit * wheelSamples + sample) / (wheelSamples + 1);\n ++wheelSamples;\n }, 200);\n } else {\n display.wheelDX += dx; display.wheelDY += dy;\n }\n }\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 var Selection = function(ranges, primIndex) {\n this.ranges = ranges;\n this.primIndex = primIndex;\n };\n\n Selection.prototype.primary = function () { return this.ranges[this.primIndex] };\n\n Selection.prototype.equals = function (other) {\n var this$1 = this;\n\n if (other == this) { return true }\n if (other.primIndex != this.primIndex || other.ranges.length != this.ranges.length) { return false }\n for (var i = 0; i < this.ranges.length; i++) {\n var here = this$1.ranges[i], there = other.ranges[i];\n if (!equalCursorPos(here.anchor, there.anchor) || !equalCursorPos(here.head, there.head)) { return false }\n }\n return true\n };\n\n Selection.prototype.deepCopy = function () {\n var this$1 = this;\n\n var out = [];\n for (var i = 0; i < this.ranges.length; i++)\n { out[i] = new Range(copyPos(this$1.ranges[i].anchor), copyPos(this$1.ranges[i].head)); }\n return new Selection(out, this.primIndex)\n };\n\n Selection.prototype.somethingSelected = function () {\n var this$1 = this;\n\n for (var i = 0; i < this.ranges.length; i++)\n { if (!this$1.ranges[i].empty()) { return true } }\n return false\n };\n\n Selection.prototype.contains = function (pos, end) {\n var this$1 = this;\n\n if (!end) { end = pos; }\n for (var i = 0; i < this.ranges.length; i++) {\n var range = this$1.ranges[i];\n if (cmp(end, range.from()) >= 0 && cmp(pos, range.to()) <= 0)\n { return i }\n }\n return -1\n };\n\n var Range = function(anchor, head) {\n this.anchor = anchor; this.head = head;\n };\n\n Range.prototype.from = function () { return minPos(this.anchor, this.head) };\n Range.prototype.to = function () { return maxPos(this.anchor, this.head) };\n Range.prototype.empty = function () { return this.head.line == this.anchor.line && this.head.ch == this.anchor.ch };\n\n // Take an unsorted, potentially overlapping set of ranges, and\n // build a selection out of it. 'Consumes' ranges array (modifying\n // it).\n function normalizeSelection(cm, ranges, primIndex) {\n var mayTouch = cm && cm.options.selectionsMayTouch;\n var prim = ranges[primIndex];\n ranges.sort(function (a, b) { return cmp(a.from(), b.from()); });\n primIndex = indexOf(ranges, prim);\n for (var i = 1; i < ranges.length; i++) {\n var cur = ranges[i], prev = ranges[i - 1];\n var diff = cmp(prev.to(), cur.from());\n if (mayTouch && !cur.empty() ? diff > 0 : diff >= 0) {\n var from = minPos(prev.from(), cur.from()), to = maxPos(prev.to(), cur.to());\n var inv = prev.empty() ? cur.from() == cur.head : prev.from() == prev.head;\n if (i <= primIndex) { --primIndex; }\n ranges.splice(--i, 2, new Range(inv ? to : from, inv ? from : to));\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 }\n\n // Compute the position of the end of a change (its 'to' property\n // refers to the pre-change end).\n function changeEnd(change) {\n if (!change.text) { return change.to }\n return Pos(change.from.line + change.text.length - 1,\n lst(change.text).length + (change.text.length == 1 ? change.from.ch : 0))\n }\n\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 function adjustForChange(pos, change) {\n if (cmp(pos, change.from) < 0) { return pos }\n if (cmp(pos, change.to) <= 0) { return changeEnd(change) }\n\n var line = pos.line + change.text.length - (change.to.line - change.from.line) - 1, ch = pos.ch;\n if (pos.line == change.to.line) { ch += changeEnd(change).ch - change.to.ch; }\n return Pos(line, ch)\n }\n\n function computeSelAfterChange(doc, change) {\n var out = [];\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),\n adjustForChange(range.head, change)));\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\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 function computeReplacedSel(doc, changes, hint) {\n var out = [];\n var oldPrev = Pos(doc.first, 0), newPrev = oldPrev;\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 if (hint == \"around\") {\n var range = doc.sel.ranges[i], 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 return new Selection(out, doc.sel.primIndex)\n }\n\n // Used to get the editor into a consistent state again when options change.\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) { line.stateAfter = null; }\n if (line.styles) { line.styles = null; }\n });\n cm.doc.modeFrontier = cm.doc.highlightFrontier = cm.doc.first;\n startWorker(cm, 100);\n cm.state.modeGen++;\n if (cm.curOp) { regChange(cm); }\n }\n\n // DOCUMENT DATA STRUCTURE\n\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 function isWholeLineUpdate(doc, change) {\n return change.from.ch == 0 && change.to.ch == 0 && lst(change.text) == \"\" &&\n (!doc.cm || doc.cm.options.wholeLineUpdateBefore)\n }\n\n // Perform a change on the document data structure.\n function updateDoc(doc, change, markedSpans, estimateHeight$$1) {\n function spansFor(n) {return markedSpans ? markedSpans[n] : null}\n function update(line, text, spans) {\n updateLine(line, text, spans, estimateHeight$$1);\n signalLater(line, \"change\", line, change);\n }\n function linesFor(start, end) {\n var result = [];\n for (var i = start; i < end; ++i)\n { result.push(new Line(text[i], spansFor(i), estimateHeight$$1)); }\n return result\n }\n\n var from = change.from, to = change.to, text = change.text;\n var firstLine = getLine(doc, from.line), lastLine = getLine(doc, to.line);\n var lastText = lst(text), lastSpans = spansFor(text.length - 1), nlines = to.line - from.line;\n\n // Adjust the line structure\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 if (nlines) { doc.remove(from.line, nlines); }\n if (added.length) { doc.insert(from.line, added); }\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$$1));\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 if (nlines > 1) { doc.remove(from.line + 1, nlines - 1); }\n doc.insert(from.line + 1, added$2);\n }\n\n signalLater(doc, \"change\", doc, change);\n }\n\n // Call f for all linked documents.\n function linkedDocs(doc, f, sharedHistOnly) {\n function propagate(doc, skip, sharedHist) {\n if (doc.linked) { for (var i = 0; i < doc.linked.length; ++i) {\n var rel = doc.linked[i];\n if (rel.doc == skip) { continue }\n var shared = sharedHist && rel.sharedHist;\n if (sharedHistOnly && !shared) { continue }\n f(rel.doc, shared);\n propagate(rel.doc, doc, shared);\n } }\n }\n propagate(doc, null, true);\n }\n\n // Attach a document to an editor.\n function attachDoc(cm, doc) {\n if (doc.cm) { throw new Error(\"This document is already in use.\") }\n cm.doc = doc;\n doc.cm = cm;\n estimateLineHeights(cm);\n loadMode(cm);\n setDirectionClass(cm);\n if (!cm.options.lineWrapping) { findMaxLine(cm); }\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 = []; this.undone = [];\n this.undoDepth = Infinity;\n // Used to track when changes can be merged into a single undo\n // event\n this.lastModTime = this.lastSelTime = 0;\n this.lastOp = this.lastSelOp = null;\n this.lastOrigin = this.lastSelOrigin = null;\n // Used by the isClean() method\n this.generation = this.maxGeneration = startGen || 1;\n }\n\n // Create a history change event from an updateDoc-style change\n // object.\n function historyChangeFromChange(doc, change) {\n var histChange = {from: copyPos(change.from), to: changeEnd(change), text: getBetween(doc, change.from, change.to)};\n attachLocalSpans(doc, histChange, change.from.line, change.to.line + 1);\n linkedDocs(doc, function (doc) { return attachLocalSpans(doc, histChange, change.from.line, change.to.line + 1); }, true);\n return histChange\n }\n\n // Pop all selection events off the end of a history array. Stop at\n // a change event.\n function clearSelectionEvents(array) {\n while (array.length) {\n var last = lst(array);\n if (last.ranges) { array.pop(); }\n else { break }\n }\n }\n\n // Find the top change event in the history. Pop off selection\n // events that are in the way.\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 }\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 function addChangeToHistory(doc, change, selAfter, opId) {\n var hist = doc.history;\n hist.undone.length = 0;\n var time = +new Date, cur;\n var last;\n\n if ((hist.lastOp == opId ||\n hist.lastOrigin == change.origin && change.origin &&\n ((change.origin.charAt(0) == \"+\" && hist.lastModTime > time - (doc.cm ? doc.cm.options.historyEventDelay : 500)) ||\n change.origin.charAt(0) == \"*\")) &&\n (cur = lastChangeEvent(hist, hist.lastOp == opId))) {\n // Merge this change into the last event\n last = lst(cur.changes);\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 if (!before || !before.ranges)\n { pushSelectionToHistory(doc.sel, hist.done); }\n cur = {changes: [historyChangeFromChange(doc, change)],\n generation: hist.generation};\n hist.done.push(cur);\n while (hist.done.length > hist.undoDepth) {\n hist.done.shift();\n if (!hist.done[0].ranges) { hist.done.shift(); }\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) { signal(doc, \"historyAdded\"); }\n }\n\n function selectionEventCanBeMerged(doc, origin, prev, sel) {\n var ch = origin.charAt(0);\n return ch == \"*\" ||\n ch == \"+\" &&\n prev.ranges.length == sel.ranges.length &&\n prev.somethingSelected() == sel.somethingSelected() &&\n new Date - doc.history.lastSelTime <= (doc.cm ? doc.cm.options.historyEventDelay : 500)\n }\n\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 function addSelectionToHistory(doc, sel, opId, options) {\n var hist = doc.history, origin = options && options.origin;\n\n // 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 if (opId == hist.lastSelOp ||\n (origin && hist.lastSelOrigin == origin &&\n (hist.lastModTime == hist.lastSelTime && hist.lastOrigin == origin ||\n selectionEventCanBeMerged(doc, origin, lst(hist.done), sel))))\n { hist.done[hist.done.length - 1] = sel; }\n else\n { pushSelectionToHistory(sel, hist.done); }\n\n hist.lastSelTime = +new Date;\n hist.lastSelOrigin = origin;\n hist.lastSelOp = opId;\n if (options && options.clearRedo !== false)\n { clearSelectionEvents(hist.undone); }\n }\n\n function pushSelectionToHistory(sel, dest) {\n var top = lst(dest);\n if (!(top && top.ranges && top.equals(sel)))\n { dest.push(sel); }\n }\n\n // Used to store marked span information in the history.\n function attachLocalSpans(doc, change, from, to) {\n var existing = change[\"spans_\" + doc.id], 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 function removeClearedSpans(spans) {\n if (!spans) { return null }\n var out;\n for (var i = 0; i < spans.length; ++i) {\n if (spans[i].marker.explicitlyCleared) { if (!out) { out = spans.slice(0, i); } }\n else if (out) { out.push(spans[i]); }\n }\n return !out ? spans : out.length ? out : null\n }\n\n // Retrieve and filter the old marked spans stored in a change event.\n function getOldSpans(doc, change) {\n var found = change[\"spans_\" + doc.id];\n if (!found) { return null }\n var nw = [];\n for (var i = 0; i < change.text.length; ++i)\n { nw.push(removeClearedSpans(found[i])); }\n return nw\n }\n\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 function mergeOldSpans(doc, change) {\n var old = getOldSpans(doc, change);\n var stretched = stretchSpansOverChange(doc, change);\n if (!old) { return stretched }\n if (!stretched) { return old }\n\n for (var i = 0; i < old.length; ++i) {\n var oldCur = old[i], stretchCur = stretched[i];\n if (oldCur && stretchCur) {\n spans: for (var j = 0; j < stretchCur.length; ++j) {\n var span = stretchCur[j];\n for (var k = 0; k < oldCur.length; ++k)\n { if (oldCur[k].marker == span.marker) { continue spans } }\n oldCur.push(span);\n }\n } else if (stretchCur) {\n old[i] = stretchCur;\n }\n }\n return old\n }\n\n // Used both to provide a JSON-safe object in .getHistory, and, when\n // detaching a document, to split the history in two\n function copyHistoryArray(events, newGroup, instantiateSel) {\n var copy = [];\n for (var i = 0; i < events.length; ++i) {\n var event = events[i];\n if (event.ranges) {\n copy.push(instantiateSel ? Selection.prototype.deepCopy.call(event) : event);\n continue\n }\n var changes = event.changes, newChanges = [];\n copy.push({changes: newChanges});\n for (var j = 0; j < changes.length; ++j) {\n var change = changes[j], m = (void 0);\n newChanges.push({from: change.from, to: change.to, text: change.text});\n if (newGroup) { for (var prop in change) { 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 return copy\n }\n\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\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 function extendRange(range, head, other, extend) {\n if (extend) {\n var anchor = range.anchor;\n if (other) {\n var posBefore = cmp(head, anchor) < 0;\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 return new Range(anchor, head)\n } else {\n return new Range(other || head, head)\n }\n }\n\n // Extend the primary selection range, discard the rest.\n function extendSelection(doc, head, other, options, extend) {\n if (extend == null) { extend = doc.cm && (doc.cm.display.shift || doc.extend); }\n setSelection(doc, new Selection([extendRange(doc.sel.primary(), head, other, extend)], 0), options);\n }\n\n // Extend all selections (pos is an array of selections with length\n // equal the number of selections)\n function extendSelections(doc, heads, options) {\n var out = [];\n var extend = doc.cm && (doc.cm.display.shift || doc.extend);\n for (var i = 0; i < doc.sel.ranges.length; i++)\n { out[i] = extendRange(doc.sel.ranges[i], heads[i], null, extend); }\n var newSel = normalizeSelection(doc.cm, out, doc.sel.primIndex);\n setSelection(doc, newSel, options);\n }\n\n // Updates a single range in the selection.\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 }\n\n // Reset the selection to a single range.\n function setSimpleSelection(doc, anchor, head, options) {\n setSelection(doc, simpleSelection(anchor, head), options);\n }\n\n // Give beforeSelectionChange handlers a change to influence a\n // selection update.\n function filterSelectionChange(doc, sel, options) {\n var obj = {\n ranges: sel.ranges,\n update: function(ranges) {\n var this$1 = this;\n\n this.ranges = [];\n for (var i = 0; i < ranges.length; i++)\n { this$1.ranges[i] = new Range(clipPos(doc, ranges[i].anchor),\n clipPos(doc, ranges[i].head)); }\n },\n origin: options && options.origin\n };\n signal(doc, \"beforeSelectionChange\", doc, obj);\n if (doc.cm) { signal(doc.cm, \"beforeSelectionChange\", doc.cm, obj); }\n if (obj.ranges != sel.ranges) { return normalizeSelection(doc.cm, obj.ranges, obj.ranges.length - 1) }\n else { return sel }\n }\n\n function setSelectionReplaceHistory(doc, sel, options) {\n var done = doc.history.done, last = lst(done);\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 }\n\n // Set a new selection.\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 var bias = options && options.bias ||\n (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 function setSelectionInner(doc, sel) {\n if (sel.equals(doc.sel)) { return }\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 signalLater(doc, \"cursorActivity\", doc);\n }\n\n // Verify that the selection does not partially select any atomic\n // marked ranges.\n function reCheckSelection(doc) {\n setSelectionInner(doc, skipAtomicInSelection(doc, doc.sel, null, false));\n }\n\n // Return a selection that does not partially select any atomic\n // ranges.\n function skipAtomicInSelection(doc, sel, bias, mayClear) {\n var out;\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 if (out || newAnchor != range.anchor || newHead != range.head) {\n if (!out) { out = sel.ranges.slice(0, i); }\n out[i] = new Range(newAnchor, newHead);\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 if (line.markedSpans) { for (var i = 0; i < line.markedSpans.length; ++i) {\n var sp = line.markedSpans[i], m = sp.marker;\n if ((sp.from == null || (m.inclusiveLeft ? sp.from <= pos.ch : sp.from < pos.ch)) &&\n (sp.to == null || (m.inclusiveRight ? sp.to >= pos.ch : sp.to > pos.ch))) {\n if (mayClear) {\n signal(m, \"beforeCursorEnter\");\n if (m.explicitlyCleared) {\n if (!line.markedSpans) { break }\n else {--i; continue}\n }\n }\n if (!m.atomic) { continue }\n\n if (oldPos) {\n var near = m.find(dir < 0 ? 1 : -1), diff = (void 0);\n if (dir < 0 ? m.inclusiveRight : m.inclusiveLeft)\n { near = movePos(doc, near, -dir, near && near.line == pos.line ? line : null); }\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 var far = m.find(dir < 0 ? -1 : 1);\n if (dir < 0 ? m.inclusiveLeft : m.inclusiveRight)\n { far = movePos(doc, far, dir, far.line == pos.line ? line : null); }\n return far ? skipAtomicInner(doc, far, pos, dir, mayClear) : null\n }\n } }\n return pos\n }\n\n // Ensure a given position is not inside an atomic range.\n function skipAtomic(doc, pos, oldPos, bias, mayClear) {\n var dir = bias || 1;\n var found = skipAtomicInner(doc, pos, oldPos, dir, mayClear) ||\n (!mayClear && skipAtomicInner(doc, pos, oldPos, dir, true)) ||\n skipAtomicInner(doc, pos, oldPos, -dir, mayClear) ||\n (!mayClear && skipAtomicInner(doc, pos, oldPos, -dir, true));\n if (!found) {\n doc.cantEdit = true;\n return Pos(doc.first, 0)\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) { return clipPos(doc, Pos(pos.line - 1)) }\n else { return null }\n } else if (dir > 0 && pos.ch == (line || getLine(doc, pos.line)).text.length) {\n if (pos.line < doc.first + doc.size - 1) { return Pos(pos.line + 1, 0) }\n else { return null }\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 }\n\n // UPDATING\n\n // Allow \"beforeChange\" event handlers to influence a change\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 () { return obj.canceled = true; }\n };\n if (update) { obj.update = function (from, to, text, origin) {\n if (from) { obj.from = clipPos(doc, from); }\n if (to) { obj.to = clipPos(doc, to); }\n if (text) { obj.text = text; }\n if (origin !== undefined) { obj.origin = origin; }\n }; }\n signal(doc, \"beforeChange\", doc, obj);\n if (doc.cm) { signal(doc.cm, \"beforeChange\", doc.cm, obj); }\n\n if (obj.canceled) {\n if (doc.cm) { doc.cm.curOp.updateInput = 2; }\n return null\n }\n return {from: obj.from, to: obj.to, text: obj.text, origin: obj.origin}\n }\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 function makeChange(doc, change, ignoreReadOnly) {\n if (doc.cm) {\n if (!doc.cm.curOp) { return operation(doc.cm, makeChange)(doc, change, ignoreReadOnly) }\n if (doc.cm.state.suppressEdits) { return }\n }\n\n if (hasHandler(doc, \"beforeChange\") || doc.cm && hasHandler(doc.cm, \"beforeChange\")) {\n change = filterChange(doc, change, true);\n if (!change) { return }\n }\n\n // Possibly split or suppress the update based on the presence\n // of read-only spans in its range.\n var split = sawReadOnlySpans && !ignoreReadOnly && removeReadOnlyRanges(doc, change.from, change.to);\n if (split) {\n for (var i = split.length - 1; i >= 0; --i)\n { makeChangeInner(doc, {from: split[i].from, to: split[i].to, text: i ? [\"\"] : change.text, origin: change.origin}); }\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) { return }\n var selAfter = computeSelAfterChange(doc, change);\n addChangeToHistory(doc, change, selAfter, doc.cm ? doc.cm.curOp.id : NaN);\n\n makeChangeSingleDoc(doc, change, selAfter, stretchSpansOverChange(doc, change));\n var rebased = [];\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 makeChangeSingleDoc(doc, change, null, stretchSpansOverChange(doc, change));\n });\n }\n\n // Revert a change stored in a document's history.\n function makeChangeFromHistory(doc, type, allowSelectionOnly) {\n var suppress = doc.cm && doc.cm.state.suppressEdits;\n if (suppress && !allowSelectionOnly) { return }\n\n var hist = doc.history, event, selAfter = doc.sel;\n var source = type == \"undo\" ? hist.done : hist.undone, dest = type == \"undo\" ? hist.undone : hist.done;\n\n // Verify that there is a useable event (so that ctrl-z won't\n // needlessly clear selection events)\n var i = 0;\n for (; i < source.length; i++) {\n event = source[i];\n if (allowSelectionOnly ? event.ranges && !event.equals(doc.sel) : !event.ranges)\n { break }\n }\n if (i == source.length) { return }\n hist.lastOrigin = hist.lastSelOrigin = null;\n\n for (;;) {\n event = source.pop();\n if (event.ranges) {\n pushSelectionToHistory(event, dest);\n if (allowSelectionOnly && !event.equals(doc.sel)) {\n setSelection(doc, event, {clearRedo: false});\n return\n }\n selAfter = event;\n } else if (suppress) {\n source.push(event);\n return\n } else { break }\n }\n\n // Build up a reverse change object to add to the opposite history\n // stack (redo when undoing, and vice versa).\n var antiChanges = [];\n pushSelectionToHistory(selAfter, dest);\n dest.push({changes: antiChanges, generation: hist.generation});\n hist.generation = event.generation || ++hist.maxGeneration;\n\n var filter = hasHandler(doc, \"beforeChange\") || doc.cm && hasHandler(doc.cm, \"beforeChange\");\n\n var loop = function ( i ) {\n var change = event.changes[i];\n change.origin = type;\n if (filter && !filterChange(doc, change, false)) {\n source.length = 0;\n return {}\n }\n\n antiChanges.push(historyChangeFromChange(doc, change));\n\n var after = i ? computeSelAfterChange(doc, change) : lst(source);\n makeChangeSingleDoc(doc, change, after, mergeOldSpans(doc, change));\n if (!i && doc.cm) { doc.cm.scrollIntoView({from: change.from, to: changeEnd(change)}); }\n var rebased = [];\n\n // Propagate to the linked documents\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 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\n if ( returned ) return returned.v;\n }\n }\n\n // Sub-views need their line numbers shifted when text is added\n // above or below them in the parent document.\n function shiftDoc(doc, distance) {\n if (distance == 0) { return }\n doc.first += distance;\n doc.sel = new Selection(map(doc.sel.ranges, function (range) { return new Range(\n Pos(range.anchor.line + distance, range.anchor.ch),\n Pos(range.head.line + distance, range.head.ch)\n ); }), doc.sel.primIndex);\n if (doc.cm) {\n regChange(doc.cm, doc.first, doc.first - distance, distance);\n for (var d = doc.cm.display, l = d.viewFrom; l < d.viewTo; l++)\n { regLineChange(doc.cm, l, \"gutter\"); }\n }\n }\n\n // More lower-level change function, handling only a single document\n // (not linked ones).\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 if (change.to.line < doc.first) {\n shiftDoc(doc, change.text.length - 1 - (change.to.line - change.from.line));\n return\n }\n if (change.from.line > doc.lastLine()) { return }\n\n // Clip the change to the size of this doc\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 = {from: Pos(doc.first, 0), to: Pos(change.to.line + shift, change.to.ch),\n text: [lst(change.text)], origin: change.origin};\n }\n var last = doc.lastLine();\n if (change.to.line > last) {\n change = {from: change.from, to: Pos(last, getLine(doc, last).text.length),\n text: [change.text[0]], origin: change.origin};\n }\n\n change.removed = getBetween(doc, change.from, change.to);\n\n if (!selAfter) { selAfter = computeSelAfterChange(doc, change); }\n if (doc.cm) { makeChangeSingleDocInEditor(doc.cm, change, spans); }\n else { updateDoc(doc, change, spans); }\n setSelectionNoUndo(doc, selAfter, sel_dontScroll);\n }\n\n // Handle the interaction of a change to a document with the editor\n // that this document is part of.\n function makeChangeSingleDocInEditor(cm, change, spans) {\n var doc = cm.doc, display = cm.display, from = change.from, to = change.to;\n\n var recomputeMaxLength = false, checkWidthStart = from.line;\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 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 if (len > display.maxLineLength) {\n display.maxLine = line;\n display.maxLineLength = len;\n display.maxLineChanged = true;\n recomputeMaxLength = false;\n }\n });\n if (recomputeMaxLength) { cm.curOp.updateMaxLine = true; }\n }\n\n retreatFrontier(doc, from.line);\n startWorker(cm, 400);\n\n var lendiff = change.text.length - (to.line - from.line) - 1;\n // Remember that these lines changed, for updating the display\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 var changesHandler = hasHandler(cm, \"changes\"), changeHandler = hasHandler(cm, \"change\");\n if (changeHandler || changesHandler) {\n var obj = {\n from: from, to: to,\n text: change.text,\n removed: change.removed,\n origin: change.origin\n };\n if (changeHandler) { signalLater(cm, \"change\", cm, obj); }\n if (changesHandler) { (cm.curOp.changeObjs || (cm.curOp.changeObjs = [])).push(obj); }\n }\n cm.display.selForContextMenu = null;\n }\n\n function replaceRange(doc, code, from, to, origin) {\n var assign;\n\n if (!to) { to = from; }\n if (cmp(to, from) < 0) { (assign = [to, from], from = assign[0], to = assign[1]); }\n if (typeof code == \"string\") { code = doc.splitLines(code); }\n makeChange(doc, {from: from, to: to, text: code, origin: origin});\n }\n\n // Rebasing/resetting history to deal with externally-sourced changes\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 }\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 function rebaseHistArray(array, from, to, diff) {\n for (var i = 0; i < array.length; ++i) {\n var sub = array[i], ok = true;\n if (sub.ranges) {\n if (!sub.copied) { sub = array[i] = sub.deepCopy(); sub.copied = true; }\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 continue\n }\n for (var j$1 = 0; j$1 < sub.changes.length; ++j$1) {\n var cur = sub.changes[j$1];\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 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, to = change.to.line, diff = change.text.length - (to - from) - 1;\n rebaseHistArray(hist.done, from, to, diff);\n rebaseHistArray(hist.undone, from, to, diff);\n }\n\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 function changeLine(doc, handle, changeType, op) {\n var no = handle, line = handle;\n if (typeof handle == \"number\") { line = getLine(doc, clipLine(doc, handle)); }\n else { no = lineNo(handle); }\n if (no == null) { return null }\n if (op(line, no) && doc.cm) { regLineChange(doc.cm, no, changeType); }\n return line\n }\n\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 function LeafChunk(lines) {\n var this$1 = this;\n\n this.lines = lines;\n this.parent = null;\n var height = 0;\n for (var i = 0; i < lines.length; ++i) {\n lines[i].parent = this$1;\n height += lines[i].height;\n }\n this.height = height;\n }\n\n LeafChunk.prototype = {\n chunkSize: function() { return this.lines.length },\n\n // Remove the n lines at offset 'at'.\n removeInner: function(at, n) {\n var this$1 = this;\n\n for (var i = at, e = at + n; i < e; ++i) {\n var line = this$1.lines[i];\n this$1.height -= line.height;\n cleanUpLine(line);\n signalLater(line, \"delete\");\n }\n this.lines.splice(at, n);\n },\n\n // Helper used to collapse a small branch into a single leaf.\n collapse: function(lines) {\n lines.push.apply(lines, this.lines);\n },\n\n // Insert the given array of lines at offset 'at', count them as\n // having the given height.\n insertInner: function(at, lines, height) {\n var this$1 = this;\n\n this.height += height;\n this.lines = this.lines.slice(0, at).concat(lines).concat(this.lines.slice(at));\n for (var i = 0; i < lines.length; ++i) { lines[i].parent = this$1; }\n },\n\n // Used to iterate over a part of the tree.\n iterN: function(at, n, op) {\n var this$1 = this;\n\n for (var e = at + n; at < e; ++at)\n { if (op(this$1.lines[at])) { return true } }\n }\n };\n\n function BranchChunk(children) {\n var this$1 = this;\n\n this.children = children;\n var size = 0, height = 0;\n for (var i = 0; i < children.length; ++i) {\n var ch = children[i];\n size += ch.chunkSize(); height += ch.height;\n ch.parent = this$1;\n }\n this.size = size;\n this.height = height;\n this.parent = null;\n }\n\n BranchChunk.prototype = {\n chunkSize: function() { return this.size },\n\n removeInner: function(at, n) {\n var this$1 = this;\n\n this.size -= n;\n for (var i = 0; i < this.children.length; ++i) {\n var child = this$1.children[i], sz = child.chunkSize();\n if (at < sz) {\n var rm = Math.min(n, sz - at), oldHeight = child.height;\n child.removeInner(at, rm);\n this$1.height -= oldHeight - child.height;\n if (sz == rm) { this$1.children.splice(i--, 1); child.parent = null; }\n if ((n -= rm) == 0) { break }\n at = 0;\n } else { at -= sz; }\n }\n // If the result is smaller than 25 lines, ensure that it is a\n // single leaf node.\n if (this.size - n < 25 &&\n (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\n collapse: function(lines) {\n var this$1 = this;\n\n for (var i = 0; i < this.children.length; ++i) { this$1.children[i].collapse(lines); }\n },\n\n insertInner: function(at, lines, height) {\n var this$1 = this;\n\n this.size += lines.length;\n this.height += height;\n for (var i = 0; i < this.children.length; ++i) {\n var child = this$1.children[i], sz = child.chunkSize();\n if (at <= sz) {\n child.insertInner(at, lines, height);\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 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$1.children.splice(++i, 0, leaf);\n leaf.parent = this$1;\n }\n child.lines = child.lines.slice(0, remaining);\n this$1.maybeSpill();\n }\n break\n }\n at -= sz;\n }\n },\n\n // When a node has grown, check whether it should be split.\n maybeSpill: function() {\n if (this.children.length <= 10) { return }\n var me = this;\n do {\n var spilled = me.children.splice(me.children.length - 5, 5);\n var sibling = new BranchChunk(spilled);\n if (!me.parent) { // 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 sibling.parent = me.parent;\n } while (me.children.length > 10)\n me.parent.maybeSpill();\n },\n\n iterN: function(at, n, op) {\n var this$1 = this;\n\n for (var i = 0; i < this.children.length; ++i) {\n var child = this$1.children[i], sz = child.chunkSize();\n if (at < sz) {\n var used = Math.min(n, sz - at);\n if (child.iterN(at, used, op)) { return true }\n if ((n -= used) == 0) { break }\n at = 0;\n } else { at -= sz; }\n }\n }\n };\n\n // Line widgets are block elements displayed above or below a line.\n\n var LineWidget = function(doc, node, options) {\n var this$1 = this;\n\n if (options) { for (var opt in options) { if (options.hasOwnProperty(opt))\n { this$1[opt] = options[opt]; } } }\n this.doc = doc;\n this.node = node;\n };\n\n LineWidget.prototype.clear = function () {\n var this$1 = this;\n\n var cm = this.doc.cm, ws = this.line.widgets, line = this.line, no = lineNo(line);\n if (no == null || !ws) { return }\n for (var i = 0; i < ws.length; ++i) { if (ws[i] == this$1) { ws.splice(i--, 1); } }\n if (!ws.length) { line.widgets = null; }\n var height = widgetHeight(this);\n updateLineHeight(line, Math.max(0, line.height - height));\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\n var oldH = this.height, cm = this.doc.cm, line = this.line;\n this.height = null;\n var diff = widgetHeight(this) - oldH;\n if (!diff) { return }\n if (!lineIsHidden(this.doc, line)) { updateLineHeight(line, line.height + diff); }\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 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 function addLineWidget(doc, handle, node, options) {\n var widget = new LineWidget(doc, node, options);\n var cm = doc.cm;\n if (cm && widget.noHScroll) { cm.display.alignWidgets = true; }\n changeLine(doc, handle, \"widget\", function (line) {\n var widgets = line.widgets || (line.widgets = []);\n if (widget.insertAt == null) { widgets.push(widget); }\n else { widgets.splice(Math.min(widgets.length - 1, Math.max(0, widget.insertAt)), 0, widget); }\n widget.line = line;\n if (cm && !lineIsHidden(doc, line)) {\n var aboveVisible = heightAtLine(line) < doc.scrollTop;\n updateLineHeight(line, line.height + widgetHeight(widget));\n if (aboveVisible) { addToScrollTop(cm, widget.height); }\n cm.curOp.forceUpdate = true;\n }\n return true\n });\n if (cm) { signalLater(cm, \"lineWidgetAdded\", cm, widget, typeof handle == \"number\" ? handle : lineNo(handle)); }\n return widget\n }\n\n // TEXTMARKERS\n\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\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 var nextMarkerId = 0;\n\n var TextMarker = function(doc, type) {\n this.lines = [];\n this.type = type;\n this.doc = doc;\n this.id = ++nextMarkerId;\n };\n\n // Clear the marker.\n TextMarker.prototype.clear = function () {\n var this$1 = this;\n\n if (this.explicitlyCleared) { return }\n var cm = this.doc.cm, withOp = cm && !cm.curOp;\n if (withOp) { startOperation(cm); }\n if (hasHandler(this, \"clear\")) {\n var found = this.find();\n if (found) { signalLater(this, \"clear\", found.from, found.to); }\n }\n var min = null, max = null;\n for (var i = 0; i < this.lines.length; ++i) {\n var line = this$1.lines[i];\n var span = getMarkedSpanFor(line.markedSpans, this$1);\n if (cm && !this$1.collapsed) { regLineChange(cm, lineNo(line), \"text\"); }\n else if (cm) {\n if (span.to != null) { max = lineNo(line); }\n if (span.from != null) { min = lineNo(line); }\n }\n line.markedSpans = removeMarkedSpan(line.markedSpans, span);\n if (span.from == null && this$1.collapsed && !lineIsHidden(this$1.doc, line) && cm)\n { updateLineHeight(line, textHeight(cm.display)); }\n }\n if (cm && this.collapsed && !cm.options.lineWrapping) { for (var i$1 = 0; i$1 < this.lines.length; ++i$1) {\n var visual = visualLine(this$1.lines[i$1]), len = lineLength(visual);\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 if (min != null && cm && this.collapsed) { regChange(cm, min, max + 1); }\n this.lines.length = 0;\n this.explicitlyCleared = true;\n if (this.atomic && this.doc.cantEdit) {\n this.doc.cantEdit = false;\n if (cm) { reCheckSelection(cm.doc); }\n }\n if (cm) { signalLater(cm, \"markerCleared\", cm, this, min, max); }\n if (withOp) { endOperation(cm); }\n if (this.parent) { this.parent.clear(); }\n };\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 TextMarker.prototype.find = function (side, lineObj) {\n var this$1 = this;\n\n if (side == null && this.type == \"bookmark\") { side = 1; }\n var from, to;\n for (var i = 0; i < this.lines.length; ++i) {\n var line = this$1.lines[i];\n var span = getMarkedSpanFor(line.markedSpans, this$1);\n if (span.from != null) {\n from = Pos(lineObj ? line : lineNo(line), span.from);\n if (side == -1) { return from }\n }\n if (span.to != null) {\n to = Pos(lineObj ? line : lineNo(line), span.to);\n if (side == 1) { return to }\n }\n }\n return from && {from: from, to: to}\n };\n\n // Signals that the marker's widget changed, and surrounding layout\n // should be recomputed.\n TextMarker.prototype.changed = function () {\n var this$1 = this;\n\n var pos = this.find(-1, true), widget = this, cm = this.doc.cm;\n if (!pos || !cm) { return }\n runInOp(cm, function () {\n var line = pos.line, lineN = lineNo(pos.line);\n var view = findViewForLine(cm, lineN);\n if (view) {\n clearLineMeasurementCacheFor(view);\n cm.curOp.selectionChanged = cm.curOp.forceUpdate = true;\n }\n cm.curOp.updateMaxLine = true;\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 if (dHeight)\n { updateLineHeight(line, line.height + dHeight); }\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 if (!op.maybeHiddenMarkers || indexOf(op.maybeHiddenMarkers, this) == -1)\n { (op.maybeUnhiddenMarkers || (op.maybeUnhiddenMarkers = [])).push(this); }\n }\n this.lines.push(line);\n };\n\n TextMarker.prototype.detachLine = function (line) {\n this.lines.splice(indexOf(this.lines, line), 1);\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 eventMixin(TextMarker);\n\n // Create a marker, wire it up to the right lines, and\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) { return markTextShared(doc, from, to, options, type) }\n // Ensure we are in an operation.\n if (doc.cm && !doc.cm.curOp) { return operation(doc.cm, markText)(doc, from, to, options, type) }\n\n var marker = new TextMarker(doc, type), diff = cmp(from, to);\n if (options) { copyObj(options, marker, false); }\n // Don't connect empty markers unless clearWhenEmpty is false\n if (diff > 0 || diff == 0 && marker.clearWhenEmpty !== false)\n { return marker }\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 if (!options.handleMouseEvents) { marker.widgetNode.setAttribute(\"cm-ignore-events\", \"true\"); }\n if (options.insertLeft) { marker.widgetNode.insertLeft = true; }\n }\n if (marker.collapsed) {\n if (conflictingCollapsedRange(doc, from.line, from, to, marker) ||\n from.line != to.line && conflictingCollapsedRange(doc, to.line, from, to, marker))\n { throw new Error(\"Inserting collapsed marker partially overlapping an existing one\") }\n seeCollapsedSpans();\n }\n\n if (marker.addToHistory)\n { addChangeToHistory(doc, {from: from, to: to, origin: \"markText\"}, doc.sel, NaN); }\n\n var curLine = from.line, cm = doc.cm, 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 if (marker.collapsed && curLine != from.line) { updateLineHeight(line, 0); }\n addMarkedSpan(line, new MarkedSpan(marker,\n curLine == from.line ? from.ch : null,\n curLine == to.line ? to.ch : null));\n ++curLine;\n });\n // lineIsHidden depends on the presence of the spans, so needs a second pass\n if (marker.collapsed) { doc.iter(from.line, to.line + 1, function (line) {\n if (lineIsHidden(doc, line)) { updateLineHeight(line, 0); }\n }); }\n\n if (marker.clearOnEnter) { on(marker, \"beforeCursorEnter\", function () { return marker.clear(); }); }\n\n if (marker.readOnly) {\n seeReadOnlySpans();\n if (doc.history.done.length || doc.history.undone.length)\n { doc.clearHistory(); }\n }\n if (marker.collapsed) {\n marker.id = ++nextMarkerId;\n marker.atomic = true;\n }\n if (cm) {\n // Sync editor state\n if (updateMaxLine) { cm.curOp.updateMaxLine = true; }\n if (marker.collapsed)\n { regChange(cm, from.line, to.line + 1); }\n else if (marker.className || marker.startStyle || marker.endStyle || marker.css ||\n marker.attributes || marker.title)\n { for (var i = from.line; i <= to.line; i++) { regLineChange(cm, i, \"text\"); } }\n if (marker.atomic) { reCheckSelection(cm.doc); }\n signalLater(cm, \"markerAdded\", cm, marker);\n }\n return marker\n }\n\n // SHARED TEXTMARKERS\n\n // A shared marker spans multiple linked documents. It is\n // implemented as a meta-marker-object controlling multiple normal\n // markers.\n var SharedTextMarker = function(markers, primary) {\n var this$1 = this;\n\n this.markers = markers;\n this.primary = primary;\n for (var i = 0; i < markers.length; ++i)\n { markers[i].parent = this$1; }\n };\n\n SharedTextMarker.prototype.clear = function () {\n var this$1 = this;\n\n if (this.explicitlyCleared) { return }\n this.explicitlyCleared = true;\n for (var i = 0; i < this.markers.length; ++i)\n { this$1.markers[i].clear(); }\n signalLater(this, \"clear\");\n };\n\n SharedTextMarker.prototype.find = function (side, lineObj) {\n return this.primary.find(side, lineObj)\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)], primary = markers[0];\n var widget = options.widgetNode;\n linkedDocs(doc, function (doc) {\n if (widget) { options.widgetNode = widget.cloneNode(true); }\n markers.push(markText(doc, clipPos(doc, from), clipPos(doc, to), options, type));\n for (var i = 0; i < doc.linked.length; ++i)\n { if (doc.linked[i].isParent) { return } }\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) { return m.parent; })\n }\n\n function copySharedMarkers(doc, markers) {\n for (var i = 0; i < markers.length; i++) {\n var marker = markers[i], pos = marker.find();\n var mFrom = doc.clipPos(pos.from), mTo = doc.clipPos(pos.to);\n if (cmp(mFrom, mTo)) {\n var subMark = markText(doc, mFrom, mTo, marker.primary, marker.primary.type);\n marker.markers.push(subMark);\n subMark.parent = marker;\n }\n }\n }\n\n function detachSharedMarkers(markers) {\n var loop = function ( i ) {\n var marker = markers[i], linked = [marker.primary.doc];\n linkedDocs(marker.primary.doc, function (d) { return linked.push(d); });\n for (var j = 0; j < marker.markers.length; j++) {\n var subMarker = marker.markers[j];\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++) loop( i );\n }\n\n var nextDocId = 0;\n var Doc = function(text, mode, firstLine, lineSep, direction) {\n if (!(this instanceof Doc)) { return new Doc(text, mode, firstLine, lineSep, direction) }\n if (firstLine == null) { firstLine = 0; }\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\") { text = this.splitLines(text); }\n updateDoc(this, {from: start, to: start, text: text});\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(from, to, op) {\n if (op) { this.iterN(from - this.first, to - from, op); }\n else { this.iterN(this.first, this.first + this.size, from); }\n },\n\n // Non-public interface for adding and removing lines.\n insert: function(at, lines) {\n var height = 0;\n for (var i = 0; i < lines.length; ++i) { height += lines[i].height; }\n this.insertInner(at - this.first, lines, height);\n },\n remove: function(at, 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\n getValue: function(lineSep) {\n var lines = getLines(this, this.first, this.first + this.size);\n if (lineSep === false) { return lines }\n return lines.join(lineSep || this.lineSeparator())\n },\n setValue: docMethodOp(function(code) {\n var top = Pos(this.first, 0), last = this.first + this.size - 1;\n makeChange(this, {from: top, to: Pos(last, getLine(this, last).text.length),\n text: this.splitLines(code), origin: \"setValue\", full: true}, true);\n if (this.cm) { scrollToCoords(this.cm, 0, 0); }\n setSelection(this, simpleSelection(top), sel_dontScroll);\n }),\n replaceRange: function(code, from, to, origin) {\n from = clipPos(this, from);\n to = to ? clipPos(this, to) : from;\n replaceRange(this, code, from, to, origin);\n },\n getRange: function(from, to, lineSep) {\n var lines = getBetween(this, clipPos(this, from), clipPos(this, to));\n if (lineSep === false) { return lines }\n return lines.join(lineSep || this.lineSeparator())\n },\n\n getLine: function(line) {var l = this.getLineHandle(line); return l && l.text},\n\n getLineHandle: function(line) {if (isLine(this, line)) { return getLine(this, line) }},\n getLineNumber: function(line) {return lineNo(line)},\n\n getLineHandleVisualStart: function(line) {\n if (typeof line == \"number\") { line = getLine(this, line); }\n return visualLine(line)\n },\n\n lineCount: function() {return this.size},\n firstLine: function() {return this.first},\n lastLine: function() {return this.first + this.size - 1},\n\n clipPos: function(pos) {return clipPos(this, pos)},\n\n getCursor: function(start) {\n var range$$1 = this.sel.primary(), pos;\n if (start == null || start == \"head\") { pos = range$$1.head; }\n else if (start == \"anchor\") { pos = range$$1.anchor; }\n else if (start == \"end\" || start == \"to\" || start === false) { pos = range$$1.to(); }\n else { pos = range$$1.from(); }\n return pos\n },\n listSelections: function() { return this.sel.ranges },\n somethingSelected: function() {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 var this$1 = this;\n\n if (!ranges.length) { return }\n var out = [];\n for (var i = 0; i < ranges.length; i++)\n { out[i] = new Range(clipPos(this$1, ranges[i].anchor),\n clipPos(this$1, ranges[i].head)); }\n if (primary == null) { primary = Math.min(ranges.length - 1, this.sel.primIndex); }\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\n getSelection: function(lineSep) {\n var this$1 = this;\n\n var ranges = this.sel.ranges, lines;\n for (var i = 0; i < ranges.length; i++) {\n var sel = getBetween(this$1, ranges[i].from(), ranges[i].to());\n lines = lines ? lines.concat(sel) : sel;\n }\n if (lineSep === false) { return lines }\n else { return lines.join(lineSep || this.lineSeparator()) }\n },\n getSelections: function(lineSep) {\n var this$1 = this;\n\n var parts = [], ranges = this.sel.ranges;\n for (var i = 0; i < ranges.length; i++) {\n var sel = getBetween(this$1, ranges[i].from(), ranges[i].to());\n if (lineSep !== false) { sel = sel.join(lineSep || this$1.lineSeparator()); }\n parts[i] = sel;\n }\n return parts\n },\n replaceSelection: function(code, collapse, origin) {\n var dup = [];\n for (var i = 0; i < this.sel.ranges.length; i++)\n { dup[i] = code; }\n this.replaceSelections(dup, collapse, origin || \"+input\");\n },\n replaceSelections: docMethodOp(function(code, collapse, origin) {\n var this$1 = this;\n\n var changes = [], sel = this.sel;\n for (var i = 0; i < sel.ranges.length; i++) {\n var range$$1 = sel.ranges[i];\n changes[i] = {from: range$$1.from(), to: range$$1.to(), text: this$1.splitLines(code[i]), origin: origin};\n }\n var newSel = collapse && collapse != \"end\" && computeReplacedSel(this, changes, collapse);\n for (var i$1 = changes.length - 1; i$1 >= 0; i$1--)\n { makeChange(this$1, changes[i$1]); }\n if (newSel) { setSelectionReplaceHistory(this, newSel); }\n else if (this.cm) { ensureCursorVisible(this.cm); }\n }),\n undo: docMethodOp(function() {makeChangeFromHistory(this, \"undo\");}),\n redo: docMethodOp(function() {makeChangeFromHistory(this, \"redo\");}),\n undoSelection: docMethodOp(function() {makeChangeFromHistory(this, \"undo\", true);}),\n redoSelection: docMethodOp(function() {makeChangeFromHistory(this, \"redo\", true);}),\n\n setExtending: function(val) {this.extend = val;},\n getExtending: function() {return this.extend},\n\n historySize: function() {\n var hist = this.history, done = 0, undone = 0;\n for (var i = 0; i < hist.done.length; i++) { if (!hist.done[i].ranges) { ++done; } }\n for (var i$1 = 0; i$1 < hist.undone.length; i$1++) { if (!hist.undone[i$1].ranges) { ++undone; } }\n return {undo: done, redo: undone}\n },\n clearHistory: function() {this.history = new History(this.history.maxGeneration);},\n\n markClean: function() {\n this.cleanGeneration = this.changeGeneration(true);\n },\n changeGeneration: function(forceSplit) {\n if (forceSplit)\n { this.history.lastOp = this.history.lastSelOp = this.history.lastOrigin = null; }\n return this.history.generation\n },\n isClean: function (gen) {\n return this.history.generation == (gen || this.cleanGeneration)\n },\n\n getHistory: function() {\n return {done: copyHistoryArray(this.history.done),\n undone: copyHistoryArray(this.history.undone)}\n },\n setHistory: function(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\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 if (!value && isEmpty(markers)) { line.gutterMarkers = null; }\n return true\n })\n }),\n\n clearGutter: docMethodOp(function(gutterID) {\n var this$1 = this;\n\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 if (isEmpty(line.gutterMarkers)) { line.gutterMarkers = null; }\n return true\n });\n }\n });\n }),\n\n lineInfo: function(line) {\n var n;\n if (typeof line == \"number\") {\n if (!isLine(this, line)) { return null }\n n = line;\n line = getLine(this, line);\n if (!line) { return null }\n } else {\n n = lineNo(line);\n if (n == null) { return null }\n }\n return {line: n, handle: line, text: line.text, gutterMarkers: line.gutterMarkers,\n textClass: line.textClass, bgClass: line.bgClass, 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\"\n : where == \"background\" ? \"bgClass\"\n : where == \"gutter\" ? \"gutterClass\" : \"wrapClass\";\n if (!line[prop]) { line[prop] = cls; }\n else if (classTest(cls).test(line[prop])) { return false }\n else { line[prop] += \" \" + cls; }\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\"\n : where == \"background\" ? \"bgClass\"\n : where == \"gutter\" ? \"gutterClass\" : \"wrapClass\";\n var cur = line[prop];\n if (!cur) { return false }\n else if (cls == null) { line[prop] = null; }\n else {\n var found = cur.match(classTest(cls));\n if (!found) { return false }\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 return true\n })\n }),\n\n addLineWidget: docMethodOp(function(handle, node, options) {\n return addLineWidget(this, handle, node, options)\n }),\n removeLineWidget: function(widget) { widget.clear(); },\n\n markText: function(from, to, options) {\n return markText(this, clipPos(this, from), clipPos(this, to), options, options && options.type || \"range\")\n },\n setBookmark: function(pos, options) {\n var realOpts = {replacedWith: options && (options.nodeType == null ? options.widget : options),\n insertLeft: options && options.insertLeft,\n clearWhenEmpty: false, shared: options && options.shared,\n handleMouseEvents: options && options.handleMouseEvents};\n pos = clipPos(this, pos);\n return markText(this, pos, pos, realOpts, \"bookmark\")\n },\n findMarksAt: function(pos) {\n pos = clipPos(this, pos);\n var markers = [], spans = getLine(this, pos.line).markedSpans;\n if (spans) { for (var i = 0; i < spans.length; ++i) {\n var span = spans[i];\n if ((span.from == null || span.from <= pos.ch) &&\n (span.to == null || span.to >= pos.ch))\n { markers.push(span.marker.parent || span.marker); }\n } }\n return markers\n },\n findMarks: function(from, to, filter) {\n from = clipPos(this, from); to = clipPos(this, to);\n var found = [], lineNo$$1 = from.line;\n this.iter(from.line, to.line + 1, function (line) {\n var spans = line.markedSpans;\n if (spans) { for (var i = 0; i < spans.length; i++) {\n var span = spans[i];\n if (!(span.to != null && lineNo$$1 == from.line && from.ch >= span.to ||\n span.from == null && lineNo$$1 != from.line ||\n span.from != null && lineNo$$1 == to.line && span.from >= to.ch) &&\n (!filter || filter(span.marker)))\n { found.push(span.marker.parent || span.marker); }\n } }\n ++lineNo$$1;\n });\n return found\n },\n getAllMarks: function() {\n var markers = [];\n this.iter(function (line) {\n var sps = line.markedSpans;\n if (sps) { for (var i = 0; i < sps.length; ++i)\n { if (sps[i].from != null) { markers.push(sps[i].marker); } } }\n });\n return markers\n },\n\n posFromIndex: function(off) {\n var ch, lineNo$$1 = this.first, sepSize = this.lineSeparator().length;\n this.iter(function (line) {\n var sz = line.text.length + sepSize;\n if (sz > off) { ch = off; return true }\n off -= sz;\n ++lineNo$$1;\n });\n return clipPos(this, Pos(lineNo$$1, ch))\n },\n indexFromPos: function (coords) {\n coords = clipPos(this, coords);\n var index = coords.ch;\n if (coords.line < this.first || coords.ch < 0) { return 0 }\n var sepSize = this.lineSeparator().length;\n this.iter(this.first, coords.line, function (line) { // iter aborts when callback returns a truthy value\n index += line.text.length + sepSize;\n });\n return index\n },\n\n copy: function(copyHistory) {\n var doc = new Doc(getLines(this, this.first, this.first + this.size),\n this.modeOption, this.first, this.lineSep, this.direction);\n doc.scrollTop = this.scrollTop; doc.scrollLeft = this.scrollLeft;\n doc.sel = this.sel;\n doc.extend = false;\n if (copyHistory) {\n doc.history.undoDepth = this.history.undoDepth;\n doc.setHistory(this.getHistory());\n }\n return doc\n },\n\n linkedDoc: function(options) {\n if (!options) { options = {}; }\n var from = this.first, to = this.first + this.size;\n if (options.from != null && options.from > from) { from = options.from; }\n if (options.to != null && options.to < to) { to = options.to; }\n var copy = new Doc(getLines(this, from, to), options.mode || this.modeOption, from, this.lineSep, this.direction);\n if (options.sharedHist) { copy.history = this.history\n ; }(this.linked || (this.linked = [])).push({doc: copy, sharedHist: options.sharedHist});\n copy.linked = [{doc: this, isParent: true, sharedHist: options.sharedHist}];\n copySharedMarkers(copy, findSharedMarkers(this));\n return copy\n },\n unlinkDoc: function(other) {\n var this$1 = this;\n\n if (other instanceof CodeMirror) { other = other.doc; }\n if (this.linked) { for (var i = 0; i < this.linked.length; ++i) {\n var link = this$1.linked[i];\n if (link.doc != other) { continue }\n this$1.linked.splice(i, 1);\n other.unlinkDoc(this$1);\n detachSharedMarkers(findSharedMarkers(this$1));\n break\n } }\n // If the histories were shared, split them again\n if (other.history == this.history) {\n var splitIds = [other.id];\n linkedDocs(other, function (doc) { return splitIds.push(doc.id); }, 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(f) {linkedDocs(this, f);},\n\n getMode: function() {return this.mode},\n getEditor: function() {return this.cm},\n\n splitLines: function(str) {\n if (this.lineSep) { return str.split(this.lineSep) }\n return splitLinesAuto(str)\n },\n lineSeparator: function() { return this.lineSep || \"\\n\" },\n\n setDirection: docMethodOp(function (dir) {\n if (dir != \"rtl\") { dir = \"ltr\"; }\n if (dir == this.direction) { return }\n this.direction = dir;\n this.iter(function (line) { return line.order = null; });\n if (this.cm) { directionChanged(this.cm); }\n })\n });\n\n // Public alias.\n Doc.prototype.eachLine = Doc.prototype.iter;\n\n // 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 var lastDrop = 0;\n\n function onDrop(e) {\n var cm = this;\n clearDragCursor(cm);\n if (signalDOMEvent(cm, e) || eventInWidget(cm.display, e))\n { return }\n e_preventDefault(e);\n if (ie) { lastDrop = +new Date; }\n var pos = posFromMouse(cm, e, true), files = e.dataTransfer.files;\n if (!pos || cm.isReadOnly()) { return }\n // Might be a file drop, in which case we simply extract the text\n // and insert it.\n if (files && files.length && window.FileReader && window.File) {\n var n = files.length, text = Array(n), read = 0;\n var loadFile = function (file, i) {\n if (cm.options.allowDropFileTypes &&\n indexOf(cm.options.allowDropFileTypes, file.type) == -1)\n { return }\n\n var reader = new FileReader;\n reader.onload = operation(cm, function () {\n var content = reader.result;\n if (/[\\x00-\\x08\\x0e-\\x1f]{2}/.test(content)) { content = \"\"; }\n text[i] = content;\n if (++read == n) {\n pos = clipPos(cm.doc, pos);\n var change = {from: pos, to: pos,\n text: cm.doc.splitLines(text.join(cm.doc.lineSeparator())),\n origin: \"paste\"};\n makeChange(cm.doc, change);\n setSelectionReplaceHistory(cm.doc, simpleSelection(pos, changeEnd(change)));\n }\n });\n reader.readAsText(file);\n };\n for (var i = 0; i < n; ++i) { loadFile(files[i], i); }\n } else { // 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);\n // Ensure the editor is re-focused\n setTimeout(function () { return cm.display.input.focus(); }, 20);\n return\n }\n try {\n var text$1 = e.dataTransfer.getData(\"Text\");\n if (text$1) {\n var selected;\n if (cm.state.draggingText && !cm.state.draggingText.copy)\n { selected = cm.listSelections(); }\n setSelectionNoUndo(cm.doc, simpleSelection(pos, pos));\n if (selected) { 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 cm.replaceSelection(text$1, \"around\", \"paste\");\n cm.display.input.focus();\n }\n }\n catch(e){}\n }\n }\n\n function onDragStart(cm, e) {\n if (ie && (!cm.state.draggingText || +new Date - lastDrop < 100)) { e_stop(e); return }\n if (signalDOMEvent(cm, e) || eventInWidget(cm.display, e)) { return }\n\n e.dataTransfer.setData(\"Text\", cm.getSelection());\n e.dataTransfer.effectAllowed = \"copyMove\";\n\n // 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 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 if (presto) {\n img.width = img.height = 1;\n cm.display.wrapper.appendChild(img);\n // Force a relayout, or Opera won't use our image for some obscure reason\n img._top = img.offsetTop;\n }\n e.dataTransfer.setDragImage(img, 0, 0);\n if (presto) { img.parentNode.removeChild(img); }\n }\n }\n\n function onDragOver(cm, e) {\n var pos = posFromMouse(cm, e);\n if (!pos) { return }\n var frag = document.createDocumentFragment();\n drawSelectionCursor(cm, pos, frag);\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 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 }\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 function forEachCodeMirror(f) {\n if (!document.getElementsByClassName) { return }\n var byClass = document.getElementsByClassName(\"CodeMirror\"), editors = [];\n for (var i = 0; i < byClass.length; i++) {\n var cm = byClass[i].CodeMirror;\n if (cm) { editors.push(cm); }\n }\n if (editors.length) { editors[0].operation(function () {\n for (var i = 0; i < editors.length; i++) { f(editors[i]); }\n }); }\n }\n\n var globalsRegistered = false;\n function ensureGlobalHandlers() {\n if (globalsRegistered) { return }\n registerGlobalHandlers();\n globalsRegistered = true;\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) { 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 on(window, \"blur\", function () { return forEachCodeMirror(onBlur); });\n }\n // Called when the window resizes\n function onResize(cm) {\n var d = cm.display;\n // Might be a text scaling operation, clear size caches.\n d.cachedCharWidth = d.cachedTextHeight = d.cachedPaddingH = null;\n d.scrollbarsClipped = false;\n cm.setSize();\n }\n\n var keyNames = {\n 3: \"Pause\", 8: \"Backspace\", 9: \"Tab\", 13: \"Enter\", 16: \"Shift\", 17: \"Ctrl\", 18: \"Alt\",\n 19: \"Pause\", 20: \"CapsLock\", 27: \"Esc\", 32: \"Space\", 33: \"PageUp\", 34: \"PageDown\", 35: \"End\",\n 36: \"Home\", 37: \"Left\", 38: \"Up\", 39: \"Right\", 40: \"Down\", 44: \"PrintScrn\", 45: \"Insert\",\n 46: \"Delete\", 59: \";\", 61: \"=\", 91: \"Mod\", 92: \"Mod\", 93: \"Mod\",\n 106: \"*\", 107: \"=\", 109: \"-\", 110: \".\", 111: \"/\", 127: \"Delete\", 145: \"ScrollLock\",\n 173: \"-\", 186: \";\", 187: \"=\", 188: \",\", 189: \"-\", 190: \".\", 191: \"/\", 192: \"`\", 219: \"[\", 220: \"\\\\\",\n 221: \"]\", 222: \"'\", 63232: \"Up\", 63233: \"Down\", 63234: \"Left\", 63235: \"Right\", 63272: \"Delete\",\n 63273: \"Home\", 63275: \"End\", 63276: \"PageUp\", 63277: \"PageDown\", 63302: \"Insert\"\n };\n\n // Number keys\n for (var i = 0; i < 10; i++) { keyNames[i + 48] = keyNames[i + 96] = String(i); }\n // Alphabetic keys\n for (var i$1 = 65; i$1 <= 90; i$1++) { keyNames[i$1] = String.fromCharCode(i$1); }\n // Function keys\n for (var i$2 = 1; i$2 <= 12; i$2++) { keyNames[i$2 + 111] = keyNames[i$2 + 63235] = \"F\" + i$2; }\n\n var keyMap = {};\n\n keyMap.basic = {\n \"Left\": \"goCharLeft\", \"Right\": \"goCharRight\", \"Up\": \"goLineUp\", \"Down\": \"goLineDown\",\n \"End\": \"goLineEnd\", \"Home\": \"goLineStartSmart\", \"PageUp\": \"goPageUp\", \"PageDown\": \"goPageDown\",\n \"Delete\": \"delCharAfter\", \"Backspace\": \"delCharBefore\", \"Shift-Backspace\": \"delCharBefore\",\n \"Tab\": \"defaultTab\", \"Shift-Tab\": \"indentAuto\",\n \"Enter\": \"newlineAndIndent\", \"Insert\": \"toggleOverwrite\",\n \"Esc\": \"singleSelection\"\n };\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 keyMap.pcDefault = {\n \"Ctrl-A\": \"selectAll\", \"Ctrl-D\": \"deleteLine\", \"Ctrl-Z\": \"undo\", \"Shift-Ctrl-Z\": \"redo\", \"Ctrl-Y\": \"redo\",\n \"Ctrl-Home\": \"goDocStart\", \"Ctrl-End\": \"goDocEnd\", \"Ctrl-Up\": \"goLineUp\", \"Ctrl-Down\": \"goLineDown\",\n \"Ctrl-Left\": \"goGroupLeft\", \"Ctrl-Right\": \"goGroupRight\", \"Alt-Left\": \"goLineStart\", \"Alt-Right\": \"goLineEnd\",\n \"Ctrl-Backspace\": \"delGroupBefore\", \"Ctrl-Delete\": \"delGroupAfter\", \"Ctrl-S\": \"save\", \"Ctrl-F\": \"find\",\n \"Ctrl-G\": \"findNext\", \"Shift-Ctrl-G\": \"findPrev\", \"Shift-Ctrl-F\": \"replace\", \"Shift-Ctrl-R\": \"replaceAll\",\n \"Ctrl-[\": \"indentLess\", \"Ctrl-]\": \"indentMore\",\n \"Ctrl-U\": \"undoSelection\", \"Shift-Ctrl-U\": \"redoSelection\", \"Alt-U\": \"redoSelection\",\n \"fallthrough\": \"basic\"\n };\n // Very basic readline/emacs-style bindings, which are standard on Mac.\n keyMap.emacsy = {\n \"Ctrl-F\": \"goCharRight\", \"Ctrl-B\": \"goCharLeft\", \"Ctrl-P\": \"goLineUp\", \"Ctrl-N\": \"goLineDown\",\n \"Alt-F\": \"goWordRight\", \"Alt-B\": \"goWordLeft\", \"Ctrl-A\": \"goLineStart\", \"Ctrl-E\": \"goLineEnd\",\n \"Ctrl-V\": \"goPageDown\", \"Shift-Ctrl-V\": \"goPageUp\", \"Ctrl-D\": \"delCharAfter\", \"Ctrl-H\": \"delCharBefore\",\n \"Alt-D\": \"delWordAfter\", \"Alt-Backspace\": \"delWordBefore\", \"Ctrl-K\": \"killLine\", \"Ctrl-T\": \"transposeChars\",\n \"Ctrl-O\": \"openLine\"\n };\n keyMap.macDefault = {\n \"Cmd-A\": \"selectAll\", \"Cmd-D\": \"deleteLine\", \"Cmd-Z\": \"undo\", \"Shift-Cmd-Z\": \"redo\", \"Cmd-Y\": \"redo\",\n \"Cmd-Home\": \"goDocStart\", \"Cmd-Up\": \"goDocStart\", \"Cmd-End\": \"goDocEnd\", \"Cmd-Down\": \"goDocEnd\", \"Alt-Left\": \"goGroupLeft\",\n \"Alt-Right\": \"goGroupRight\", \"Cmd-Left\": \"goLineLeft\", \"Cmd-Right\": \"goLineRight\", \"Alt-Backspace\": \"delGroupBefore\",\n \"Ctrl-Alt-Backspace\": \"delGroupAfter\", \"Alt-Delete\": \"delGroupAfter\", \"Cmd-S\": \"save\", \"Cmd-F\": \"find\",\n \"Cmd-G\": \"findNext\", \"Shift-Cmd-G\": \"findPrev\", \"Cmd-Alt-F\": \"replace\", \"Shift-Cmd-Alt-F\": \"replaceAll\",\n \"Cmd-[\": \"indentLess\", \"Cmd-]\": \"indentMore\", \"Cmd-Backspace\": \"delWrappedLineLeft\", \"Cmd-Delete\": \"delWrappedLineRight\",\n \"Cmd-U\": \"undoSelection\", \"Shift-Cmd-U\": \"redoSelection\", \"Ctrl-Up\": \"goDocStart\", \"Ctrl-Down\": \"goDocEnd\",\n \"fallthrough\": [\"basic\", \"emacsy\"]\n };\n keyMap[\"default\"] = mac ? keyMap.macDefault : keyMap.pcDefault;\n\n // 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 for (var i = 0; i < parts.length - 1; i++) {\n var mod = parts[i];\n if (/^(cmd|meta|m)$/i.test(mod)) { cmd = true; }\n else if (/^a(lt)?$/i.test(mod)) { alt = true; }\n else if (/^(c|ctrl|control)$/i.test(mod)) { ctrl = true; }\n else if (/^s(hift)?$/i.test(mod)) { shift = true; }\n else { throw new Error(\"Unrecognized modifier name: \" + mod) }\n }\n if (alt) { name = \"Alt-\" + name; }\n if (ctrl) { name = \"Ctrl-\" + name; }\n if (cmd) { name = \"Cmd-\" + name; }\n if (shift) { name = \"Shift-\" + name; }\n return name\n }\n\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 function normalizeKeyMap(keymap) {\n var copy = {};\n for (var keyname in keymap) { if (keymap.hasOwnProperty(keyname)) {\n var value = keymap[keyname];\n if (/^(name|fallthrough|(de|at)tach)$/.test(keyname)) { continue }\n if (value == \"...\") { delete keymap[keyname]; continue }\n\n var keys = map(keyname.split(\" \"), normalizeKeyName);\n for (var i = 0; i < keys.length; i++) {\n var val = (void 0), name = (void 0);\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 var prev = copy[name];\n if (!prev) { copy[name] = val; }\n else if (prev != val) { throw new Error(\"Inconsistent bindings for \" + name) }\n }\n delete keymap[keyname];\n } }\n for (var prop in copy) { keymap[prop] = copy[prop]; }\n return keymap\n }\n\n function lookupKey(key, map$$1, handle, context) {\n map$$1 = getKeyMap(map$$1);\n var found = map$$1.call ? map$$1.call(key, context) : map$$1[key];\n if (found === false) { return \"nothing\" }\n if (found === \"...\") { return \"multi\" }\n if (found != null && handle(found)) { return \"handled\" }\n\n if (map$$1.fallthrough) {\n if (Object.prototype.toString.call(map$$1.fallthrough) != \"[object Array]\")\n { return lookupKey(key, map$$1.fallthrough, handle, context) }\n for (var i = 0; i < map$$1.fallthrough.length; i++) {\n var result = lookupKey(key, map$$1.fallthrough[i], handle, context);\n if (result) { return result }\n }\n }\n }\n\n // Modifier key presses don't count as 'real' key presses for the\n // purpose of keymap fallthrough.\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 if (event.altKey && base != \"Alt\") { name = \"Alt-\" + name; }\n if ((flipCtrlCmd ? event.metaKey : event.ctrlKey) && base != \"Ctrl\") { name = \"Ctrl-\" + name; }\n if ((flipCtrlCmd ? event.ctrlKey : event.metaKey) && base != \"Cmd\") { name = \"Cmd-\" + name; }\n if (!noShift && event.shiftKey && base != \"Shift\") { name = \"Shift-\" + name; }\n return name\n }\n\n // Look up the name of a key as indicated by an event object.\n function keyName(event, noShift) {\n if (presto && event.keyCode == 34 && event[\"char\"]) { return false }\n var name = keyNames[event.keyCode];\n if (name == null || event.altGraphKey) { 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 if (event.keyCode == 3 && event.code) { name = event.code; }\n return addModifierNames(name, event, noShift)\n }\n\n function getKeyMap(val) {\n return typeof val == \"string\" ? keyMap[val] : val\n }\n\n // Helper for deleting text near the selection(s), used to implement\n // backspace, delete, and similar functionality.\n function deleteNearSelection(cm, compute) {\n var ranges = cm.doc.sel.ranges, kill = [];\n // Build up a set of ranges to kill first, merging overlapping\n // ranges.\n for (var i = 0; i < ranges.length; i++) {\n var toKill = compute(ranges[i]);\n while (kill.length && cmp(toKill.from, lst(kill).to) <= 0) {\n var replaced = kill.pop();\n if (cmp(replaced.from, toKill.from) < 0) {\n toKill.from = replaced.from;\n break\n }\n }\n kill.push(toKill);\n }\n // Next, remove those actual ranges.\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 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 var order = getOrder(lineObj, cm.doc.direction);\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;\n // 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 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) { return measureCharPrepared(cm, prep, ch).top == targetTop; }, (dir < 0) == (part.level == 1) ? part.from : part.to - 1, ch);\n if (sticky == \"before\") { ch = moveCharLogically(lineObj, ch, 1); }\n } else { ch = dir < 0 ? part.to : part.from; }\n return new Pos(lineNo, ch, sticky)\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 if (!bidi) { return moveLogically(line, start, dir) }\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 var partPos = getBidiPartAt(bidi, start.ch, start.sticky), part = bidi[partPos];\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 (pos, dir) { return moveCharLogically(line, pos instanceof Pos ? pos.ch : pos, dir); };\n var prep;\n var getWrappedLineExtent = function (ch) {\n if (!cm.options.lineWrapping) { return {begin: 0, end: line.text.length} }\n prep = prep || prepareMeasureForLine(cm, line);\n return wrappedLineExtentChar(cm, line, prep, ch)\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 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 }\n\n // Case 3: Could not move within this bidi part in this visual line, so leave\n // the current bidi part\n\n var searchInVisualLine = function (partPos, dir, wrappedLineExtent) {\n var getRes = function (ch, moveInStorageOrder) { return moveInStorageOrder\n ? new Pos(start.line, mv(ch, 1), \"before\")\n : new Pos(start.line, ch, \"after\"); };\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 if (part.from <= ch && ch < part.to) { return getRes(ch, moveInStorageOrder) }\n ch = moveInStorageOrder ? part.from : mv(part.to, -1);\n if (wrappedLineExtent.begin <= ch && ch < wrappedLineExtent.end) { return getRes(ch, moveInStorageOrder) }\n }\n };\n\n // Case 3a: Look for other bidi parts on the same visual line\n var res = searchInVisualLine(partPos + dir, dir, wrappedLineExtent);\n if (res) { return res }\n\n // Case 3b: Look for other bidi parts on the next visual line\n var nextCh = dir > 0 ? wrappedLineExtent.end : mv(wrappedLineExtent.begin, -1);\n if (nextCh != null && !(dir > 0 && nextCh == line.text.length)) {\n res = searchInVisualLine(dir > 0 ? 0 : bidi.length - 1, dir, getWrappedLineExtent(nextCh));\n if (res) { return res }\n }\n\n // Case 4: Nowhere to move\n return null\n }\n\n // Commands are parameter-less actions that can be performed on an\n // editor, mostly used for keybindings.\n var commands = {\n selectAll: selectAll,\n singleSelection: function (cm) { return cm.setSelection(cm.getCursor(\"anchor\"), cm.getCursor(\"head\"), sel_dontScroll); },\n killLine: function (cm) { return deleteNearSelection(cm, function (range) {\n if (range.empty()) {\n var len = getLine(cm.doc, range.head.line).text.length;\n if (range.head.ch == len && range.head.line < cm.lastLine())\n { return {from: range.head, to: Pos(range.head.line + 1, 0)} }\n else\n { return {from: range.head, to: Pos(range.head.line, len)} }\n } else {\n return {from: range.from(), to: range.to()}\n }\n }); },\n deleteLine: function (cm) { return deleteNearSelection(cm, function (range) { return ({\n from: Pos(range.from().line, 0),\n to: clipPos(cm.doc, Pos(range.to().line + 1, 0))\n }); }); },\n delLineLeft: function (cm) { return deleteNearSelection(cm, function (range) { return ({\n from: Pos(range.from().line, 0), to: range.from()\n }); }); },\n delWrappedLineLeft: function (cm) { return deleteNearSelection(cm, function (range) {\n var top = cm.charCoords(range.head, \"div\").top + 5;\n var leftPos = cm.coordsChar({left: 0, top: top}, \"div\");\n return {from: leftPos, to: range.from()}\n }); },\n delWrappedLineRight: function (cm) { return deleteNearSelection(cm, function (range) {\n var top = cm.charCoords(range.head, \"div\").top + 5;\n var rightPos = cm.coordsChar({left: cm.display.lineDiv.offsetWidth + 100, top: top}, \"div\");\n return {from: range.from(), to: rightPos }\n }); },\n undo: function (cm) { return cm.undo(); },\n redo: function (cm) { return cm.redo(); },\n undoSelection: function (cm) { return cm.undoSelection(); },\n redoSelection: function (cm) { return cm.redoSelection(); },\n goDocStart: function (cm) { return cm.extendSelection(Pos(cm.firstLine(), 0)); },\n goDocEnd: function (cm) { return cm.extendSelection(Pos(cm.lastLine())); },\n goLineStart: function (cm) { return cm.extendSelectionsBy(function (range) { return lineStart(cm, range.head.line); },\n {origin: \"+move\", bias: 1}\n ); },\n goLineStartSmart: function (cm) { return cm.extendSelectionsBy(function (range) { return lineStartSmart(cm, range.head); },\n {origin: \"+move\", bias: 1}\n ); },\n goLineEnd: function (cm) { return cm.extendSelectionsBy(function (range) { return lineEnd(cm, range.head.line); },\n {origin: \"+move\", bias: -1}\n ); },\n goLineRight: function (cm) { return cm.extendSelectionsBy(function (range) {\n var top = cm.cursorCoords(range.head, \"div\").top + 5;\n return cm.coordsChar({left: cm.display.lineDiv.offsetWidth + 100, top: top}, \"div\")\n }, sel_move); },\n goLineLeft: function (cm) { return cm.extendSelectionsBy(function (range) {\n var top = cm.cursorCoords(range.head, \"div\").top + 5;\n return cm.coordsChar({left: 0, top: top}, \"div\")\n }, sel_move); },\n goLineLeftSmart: function (cm) { return cm.extendSelectionsBy(function (range) {\n var top = cm.cursorCoords(range.head, \"div\").top + 5;\n var pos = cm.coordsChar({left: 0, top: top}, \"div\");\n if (pos.ch < cm.getLine(pos.line).search(/\\S/)) { return lineStartSmart(cm, range.head) }\n return pos\n }, sel_move); },\n goLineUp: function (cm) { return cm.moveV(-1, \"line\"); },\n goLineDown: function (cm) { return cm.moveV(1, \"line\"); },\n goPageUp: function (cm) { return cm.moveV(-1, \"page\"); },\n goPageDown: function (cm) { return cm.moveV(1, \"page\"); },\n goCharLeft: function (cm) { return cm.moveH(-1, \"char\"); },\n goCharRight: function (cm) { return cm.moveH(1, \"char\"); },\n goColumnLeft: function (cm) { return cm.moveH(-1, \"column\"); },\n goColumnRight: function (cm) { return cm.moveH(1, \"column\"); },\n goWordLeft: function (cm) { return cm.moveH(-1, \"word\"); },\n goGroupRight: function (cm) { return cm.moveH(1, \"group\"); },\n goGroupLeft: function (cm) { return cm.moveH(-1, \"group\"); },\n goWordRight: function (cm) { return cm.moveH(1, \"word\"); },\n delCharBefore: function (cm) { return cm.deleteH(-1, \"char\"); },\n delCharAfter: function (cm) { return cm.deleteH(1, \"char\"); },\n delWordBefore: function (cm) { return cm.deleteH(-1, \"word\"); },\n delWordAfter: function (cm) { return cm.deleteH(1, \"word\"); },\n delGroupBefore: function (cm) { return cm.deleteH(-1, \"group\"); },\n delGroupAfter: function (cm) { return cm.deleteH(1, \"group\"); },\n indentAuto: function (cm) { return cm.indentSelection(\"smart\"); },\n indentMore: function (cm) { return cm.indentSelection(\"add\"); },\n indentLess: function (cm) { return cm.indentSelection(\"subtract\"); },\n insertTab: function (cm) { return cm.replaceSelection(\"\\t\"); },\n insertSoftTab: function (cm) {\n var spaces = [], ranges = cm.listSelections(), tabSize = cm.options.tabSize;\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 cm.replaceSelections(spaces);\n },\n defaultTab: function (cm) {\n if (cm.somethingSelected()) { cm.indentSelection(\"add\"); }\n else { cm.execCommand(\"insertTab\"); }\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 (cm) { return runInOp(cm, function () {\n var ranges = cm.listSelections(), newSel = [];\n for (var i = 0; i < ranges.length; i++) {\n if (!ranges[i].empty()) { continue }\n var cur = ranges[i].head, line = getLine(cm.doc, cur.line).text;\n if (line) {\n if (cur.ch == line.length) { cur = new Pos(cur.line, cur.ch - 1); }\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),\n 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 if (prev) {\n cur = new Pos(cur.line, 1);\n cm.replaceRange(line.charAt(0) + cm.doc.lineSeparator() +\n prev.charAt(prev.length - 1),\n Pos(cur.line - 1, prev.length - 1), cur, \"+transpose\");\n }\n }\n }\n newSel.push(new Range(cur, cur));\n }\n cm.setSelections(newSel);\n }); },\n newlineAndIndent: function (cm) { return runInOp(cm, function () {\n var sels = cm.listSelections();\n for (var i = sels.length - 1; i >= 0; i--)\n { cm.replaceRange(cm.doc.lineSeparator(), sels[i].anchor, sels[i].head, \"+input\"); }\n sels = cm.listSelections();\n for (var i$1 = 0; i$1 < sels.length; i$1++)\n { cm.indentLine(sels[i$1].from().line, null, true); }\n ensureCursorVisible(cm);\n }); },\n openLine: function (cm) { return cm.replaceSelection(\"\\n\", \"start\"); },\n toggleOverwrite: function (cm) { return cm.toggleOverwrite(); }\n };\n\n\n function lineStart(cm, lineN) {\n var line = getLine(cm.doc, lineN);\n var visual = visualLine(line);\n if (visual != line) { lineN = lineNo(visual); }\n return endOfLine(true, cm, visual, lineN, 1)\n }\n function lineEnd(cm, lineN) {\n var line = getLine(cm.doc, lineN);\n var visual = visualLineEnd(line);\n if (visual != line) { lineN = lineNo(visual); }\n return endOfLine(true, cm, line, lineN, -1)\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 if (!order || order[0].level == 0) {\n var firstNonWS = Math.max(0, 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 return start\n }\n\n // Run a handler that was bound to a key.\n function doHandleBinding(cm, bound, dropShift) {\n if (typeof bound == \"string\") {\n bound = commands[bound];\n if (!bound) { return false }\n }\n // Ensure previous input has been read, so that the handler sees a\n // consistent view of the document\n cm.display.input.ensurePolled();\n var prevShift = cm.display.shift, done = false;\n try {\n if (cm.isReadOnly()) { cm.state.suppressEdits = true; }\n if (dropShift) { cm.display.shift = false; }\n done = bound(cm) != Pass;\n } finally {\n cm.display.shift = prevShift;\n cm.state.suppressEdits = false;\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 if (result) { return result }\n }\n return (cm.options.extraKeys && lookupKey(name, cm.options.extraKeys, handle, cm))\n || lookupKey(name, cm.options.keyMap, handle, cm)\n }\n\n // Note that, despite the name, this function is also used to check\n // for bound mouse clicks.\n\n var stopSeq = new Delayed;\n\n function dispatchKey(cm, name, e, handle) {\n var seq = cm.state.keySeq;\n if (seq) {\n if (isModifierKey(name)) { return \"handled\" }\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 if (dispatchKeyInner(cm, seq + \" \" + name, e, handle)) { return true }\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 if (result == \"handled\")\n { signalLater(cm, \"keyHandled\", cm, name, e); }\n\n if (result == \"handled\" || result == \"multi\") {\n e_preventDefault(e);\n restartBlink(cm);\n }\n\n return !!result\n }\n\n // Handle a key from the keydown event.\n function handleKeyBinding(cm, e) {\n var name = keyName(e, true);\n if (!name) { return false }\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) { 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 } else {\n return dispatchKey(cm, name, e, function (b) { return doHandleBinding(cm, b); })\n }\n }\n\n // Handle a key from the keypress event\n function handleCharBinding(cm, e, ch) {\n return dispatchKey(cm, \"'\" + ch + \"'\", e, function (b) { return doHandleBinding(cm, b, true); })\n }\n\n var lastStoppedKey = null;\n function onKeyDown(e) {\n var cm = this;\n cm.curOp.focus = activeElt();\n if (signalDOMEvent(cm, e)) { return }\n // IE does strange things with escape.\n if (ie && ie_version < 11 && e.keyCode == 27) { e.returnValue = false; }\n var code = e.keyCode;\n cm.display.shift = code == 16 || e.shiftKey;\n var handled = handleKeyBinding(cm, e);\n if (presto) {\n lastStoppedKey = handled ? code : null;\n // Opera has no cut event... we try to at least catch the key combo\n if (!handled && code == 88 && !hasCopyEvent && (mac ? e.metaKey : e.ctrlKey))\n { cm.replaceSelection(\"\", null, \"cut\"); }\n }\n\n // Turn mouse into crosshair when Alt is held on Mac.\n if (code == 18 && !/\\bCodeMirror-crosshair\\b/.test(cm.display.lineDiv.className))\n { showCrossHair(cm); }\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 on(document, \"keyup\", up);\n on(document, \"mouseover\", up);\n }\n\n function onKeyUp(e) {\n if (e.keyCode == 16) { this.doc.sel.shift = false; }\n signalDOMEvent(this, e);\n }\n\n function onKeyPress(e) {\n var cm = this;\n if (eventInWidget(cm.display, e) || signalDOMEvent(cm, e) || e.ctrlKey && !e.altKey || mac && e.metaKey) { return }\n var keyCode = e.keyCode, charCode = e.charCode;\n if (presto && keyCode == lastStoppedKey) {lastStoppedKey = null; e_preventDefault(e); return}\n if ((presto && (!e.which || e.which < 10)) && handleKeyBinding(cm, e)) { return }\n var ch = String.fromCharCode(charCode == null ? keyCode : charCode);\n // Some browsers fire keypress events for backspace\n if (ch == \"\\x08\") { return }\n if (handleCharBinding(cm, e, ch)) { return }\n cm.display.input.onKeyPress(e);\n }\n\n var DOUBLECLICK_DELAY = 400;\n\n var PastClick = function(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 &&\n cmp(pos, this.pos) == 0 && button == this.button\n };\n\n var lastClick, lastDoubleClick;\n function clickRepeat(pos, button) {\n var now = +new Date;\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 }\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 function onMouseDown(e) {\n var cm = this, display = cm.display;\n if (signalDOMEvent(cm, e) || display.activeTouch && display.input.supportsTouch()) { return }\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 () { return display.scroller.draggable = true; }, 100);\n }\n return\n }\n if (clickInGutter(cm, e)) { return }\n var pos = posFromMouse(cm, e), button = e_button(e), repeat = pos ? clickRepeat(pos, button) : \"single\";\n window.focus();\n\n // #3261: make sure, that we're not starting a second selection\n if (button == 1 && cm.state.selectingText)\n { cm.state.selectingText(e); }\n\n if (pos && handleMappedButton(cm, button, pos, repeat, e)) { return }\n\n if (button == 1) {\n if (pos) { leftButtonDown(cm, pos, repeat, e); }\n else if (e_target(e) == display.scroller) { e_preventDefault(e); }\n } else if (button == 2) {\n if (pos) { extendSelection(cm.doc, pos); }\n setTimeout(function () { return display.input.focus(); }, 20);\n } else if (button == 3) {\n if (captureRightClick) { cm.display.input.onContextMenu(e); }\n else { delayBlurEvent(cm); }\n }\n }\n\n function handleMappedButton(cm, button, pos, repeat, event) {\n var name = \"Click\";\n if (repeat == \"double\") { name = \"Double\" + name; }\n else if (repeat == \"triple\") { name = \"Triple\" + name; }\n name = (button == 1 ? \"Left\" : button == 2 ? \"Middle\" : \"Right\") + name;\n\n return dispatchKey(cm, addModifierNames(name, event), event, function (bound) {\n if (typeof bound == \"string\") { bound = commands[bound]; }\n if (!bound) { return false }\n var done = false;\n try {\n if (cm.isReadOnly()) { cm.state.suppressEdits = true; }\n done = bound(cm, pos) != Pass;\n } finally {\n cm.state.suppressEdits = false;\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 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 if (value.extend == null || cm.doc.extend) { value.extend = cm.doc.extend || event.shiftKey; }\n if (value.addNew == null) { value.addNew = mac ? event.metaKey : event.ctrlKey; }\n if (value.moveOnDrag == null) { value.moveOnDrag = !(mac ? event.altKey : event.ctrlKey); }\n return value\n }\n\n function leftButtonDown(cm, pos, repeat, event) {\n if (ie) { setTimeout(bind(ensureFocus, cm), 0); }\n else { cm.curOp.focus = activeElt(); }\n\n var behavior = configureMouse(cm, repeat, event);\n\n var sel = cm.doc.sel, contained;\n if (cm.options.dragDrop && dragAndDrop && !cm.isReadOnly() &&\n repeat == \"single\" && (contained = sel.contains(pos)) > -1 &&\n (cmp((contained = sel.ranges[contained]).from(), pos) < 0 || pos.xRel > 0) &&\n (cmp(contained.to(), pos) > 0 || pos.xRel < 0))\n { leftButtonStartDrag(cm, event, pos, behavior); }\n else\n { leftButtonSelect(cm, event, pos, behavior); }\n }\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 function leftButtonStartDrag(cm, event, pos, behavior) {\n var display = cm.display, moved = false;\n var dragEnd = operation(cm, function (e) {\n if (webkit) { display.scroller.draggable = false; }\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 if (!moved) {\n e_preventDefault(e);\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 if (webkit || ie && ie_version == 9)\n { setTimeout(function () {display.wrapper.ownerDocument.body.focus(); display.input.focus();}, 20); }\n else\n { display.input.focus(); }\n }\n });\n var mouseMove = function(e2) {\n moved = moved || Math.abs(event.clientX - e2.clientX) + Math.abs(event.clientY - e2.clientY) >= 10;\n };\n var dragStart = function () { return moved = true; };\n // Let the drag handler handle this.\n if (webkit) { display.scroller.draggable = true; }\n cm.state.draggingText = dragEnd;\n dragEnd.copy = !behavior.moveOnDrag;\n // IE's approach to draggable\n if (display.scroller.dragDrop) { display.scroller.dragDrop(); }\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\n delayBlurEvent(cm);\n setTimeout(function () { return display.input.focus(); }, 20);\n }\n\n function rangeForUnit(cm, pos, unit) {\n if (unit == \"char\") { return new Range(pos, pos) }\n if (unit == \"word\") { return cm.findWordAt(pos) }\n if (unit == \"line\") { return new Range(Pos(pos.line, 0), clipPos(cm.doc, Pos(pos.line + 1, 0))) }\n var result = unit(cm, pos);\n return new Range(result.from, result.to)\n }\n\n // Normal selection, as opposed to text dragging.\n function leftButtonSelect(cm, event, start, behavior) {\n var display = cm.display, doc = cm.doc;\n e_preventDefault(event);\n\n var ourRange, ourIndex, startSel = doc.sel, ranges = startSel.ranges;\n if (behavior.addNew && !behavior.extend) {\n ourIndex = doc.sel.contains(start);\n if (ourIndex > -1)\n { ourRange = ranges[ourIndex]; }\n else\n { ourRange = new Range(start, start); }\n } else {\n ourRange = doc.sel.primary();\n ourIndex = doc.sel.primIndex;\n }\n\n if (behavior.unit == \"rectangle\") {\n if (!behavior.addNew) { ourRange = new Range(start, start); }\n start = posFromMouse(cm, event, true, true);\n ourIndex = -1;\n } else {\n var range$$1 = rangeForUnit(cm, start, behavior.unit);\n if (behavior.extend)\n { ourRange = extendRange(ourRange, range$$1.anchor, range$$1.head, behavior.extend); }\n else\n { ourRange = range$$1; }\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, origin: \"*mouse\"});\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, origin: \"*mouse\"});\n startSel = doc.sel;\n } else {\n replaceOneSelection(doc, ourIndex, ourRange, sel_mouse);\n }\n\n var lastPos = start;\n function extendTo(pos) {\n if (cmp(lastPos, pos) == 0) { return }\n lastPos = pos;\n\n if (behavior.unit == \"rectangle\") {\n var ranges = [], 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), right = Math.max(startCol, posCol);\n for (var line = Math.min(start.line, pos.line), end = Math.min(cm.lastLine(), Math.max(start.line, pos.line));\n line <= end; line++) {\n var text = getLine(doc, line).text, leftPos = findColumn(text, left, tabSize);\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 if (!ranges.length) { ranges.push(new Range(start, start)); }\n setSelection(doc, normalizeSelection(cm, startSel.ranges.slice(0, ourIndex).concat(ranges), ourIndex),\n {origin: \"*mouse\", scroll: false});\n cm.scrollIntoView(pos);\n } else {\n var oldRange = ourRange;\n var range$$1 = rangeForUnit(cm, pos, behavior.unit);\n var anchor = oldRange.anchor, head;\n if (cmp(range$$1.anchor, anchor) > 0) {\n head = range$$1.head;\n anchor = minPos(oldRange.from(), range$$1.anchor);\n } else {\n head = range$$1.anchor;\n anchor = maxPos(oldRange.to(), range$$1.head);\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();\n // 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 var counter = 0;\n\n function extend(e) {\n var curCount = ++counter;\n var cur = posFromMouse(cm, e, true, behavior.unit == \"rectangle\");\n if (!cur) { return }\n if (cmp(cur, lastPos) != 0) {\n cm.curOp.focus = activeElt();\n extendTo(cur);\n var visible = visibleLines(display, doc);\n if (cur.line >= visible.to || cur.line < visible.from)\n { setTimeout(operation(cm, function () {if (counter == curCount) { extend(e); }}), 150); }\n } else {\n var outside = e.clientY < editorSize.top ? -20 : e.clientY > editorSize.bottom ? 20 : 0;\n if (outside) { setTimeout(operation(cm, function () {\n if (counter != curCount) { return }\n display.scroller.scrollTop += outside;\n extend(e);\n }), 50); }\n }\n }\n\n function done(e) {\n cm.state.selectingText = false;\n counter = Infinity;\n e_preventDefault(e);\n display.input.focus();\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)) { done(e); }\n else { extend(e); }\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 }\n\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 function bidiSimplify(cm, range$$1) {\n var anchor = range$$1.anchor;\n var head = range$$1.head;\n var anchorLine = getLine(cm.doc, anchor.line);\n if (cmp(anchor, head) == 0 && anchor.sticky == head.sticky) { return range$$1 }\n var order = getOrder(anchorLine);\n if (!order) { return range$$1 }\n var index = getBidiPartAt(order, anchor.ch, anchor.sticky), part = order[index];\n if (part.from != anchor.ch && part.to != anchor.ch) { return range$$1 }\n var boundary = index + ((part.from == anchor.ch) == (part.level != 1) ? 0 : 1);\n if (boundary == 0 || boundary == order.length) { return range$$1 }\n\n // Compute the relative visual position of the head compared to the\n // anchor (<0 is to the left, >0 to the right)\n var leftSide;\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 if (headIndex == boundary - 1 || headIndex == boundary)\n { leftSide = dir < 0; }\n else\n { leftSide = dir > 0; }\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, sticky = from ? \"after\" : \"before\";\n return anchor.ch == ch && anchor.sticky == sticky ? range$$1 : new Range(new Pos(anchor.line, ch, sticky), head)\n }\n\n\n // Determines whether an event happened in the gutter, and fires the\n // handlers for the corresponding event.\n function gutterEvent(cm, e, type, prevent) {\n var mX, mY;\n if (e.touches) {\n mX = e.touches[0].clientX;\n mY = e.touches[0].clientY;\n } else {\n try { mX = e.clientX; mY = e.clientY; }\n catch(e) { return false }\n }\n if (mX >= Math.floor(cm.display.gutters.getBoundingClientRect().right)) { return false }\n if (prevent) { e_preventDefault(e); }\n\n var display = cm.display;\n var lineBox = display.lineDiv.getBoundingClientRect();\n\n if (mY > lineBox.bottom || !hasHandler(cm, type)) { return e_defaultPrevented(e) }\n mY -= lineBox.top - display.viewOffset;\n\n for (var i = 0; i < cm.options.gutters.length; ++i) {\n var g = display.gutters.childNodes[i];\n if (g && g.getBoundingClientRect().right >= mX) {\n var line = lineAtHeight(cm.doc, mY);\n var gutter = cm.options.gutters[i];\n signal(cm, type, cm, line, gutter, e);\n return e_defaultPrevented(e)\n }\n }\n }\n\n function clickInGutter(cm, e) {\n return gutterEvent(cm, e, \"gutterClick\", true)\n }\n\n // CONTEXT MENU HANDLING\n\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 function onContextMenu(cm, e) {\n if (eventInWidget(cm.display, e) || contextMenuInGutter(cm, e)) { return }\n if (signalDOMEvent(cm, e, \"contextmenu\")) { return }\n if (!captureRightClick) { cm.display.input.onContextMenu(e); }\n }\n\n function contextMenuInGutter(cm, e) {\n if (!hasHandler(cm, \"gutterContextMenu\")) { return false }\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, \"\") +\n cm.options.theme.replace(/(^|\\s)\\s*/g, \" cm-s-\");\n clearCaches(cm);\n }\n\n var Init = {toString: function(){return \"CodeMirror.Init\"}};\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 if (handle) { optionHandlers[name] =\n notOnInit ? function (cm, val, old) {if (old != Init) { handle(cm, val, old); }} : handle; }\n }\n\n CodeMirror.defineOption = option;\n\n // Passed to option handlers when there is no old value.\n CodeMirror.Init = Init;\n\n // These two are, on init, called from the constructor because they\n // have to be initialized before the editor can start at all.\n option(\"value\", \"\", function (cm, val) { return cm.setValue(val); }, true);\n option(\"mode\", null, function (cm, val) {\n cm.doc.modeOption = val;\n loadMode(cm);\n }, true);\n\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\n option(\"lineSeparator\", null, function (cm, val) {\n cm.doc.lineSep = val;\n if (!val) { return }\n var newBreaks = [], lineNo = cm.doc.first;\n cm.doc.iter(function (line) {\n for (var pos = 0;;) {\n var found = line.text.indexOf(val, pos);\n if (found == -1) { break }\n pos = found + val.length;\n newBreaks.push(Pos(lineNo, found));\n }\n lineNo++;\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 option(\"specialChars\", /[\\u0000-\\u001f\\u007f-\\u009f\\u00ad\\u061c\\u200b-\\u200f\\u2028\\u2029\\ufeff]/g, function (cm, val, old) {\n cm.state.specialChars = new RegExp(val.source + (val.test(\"\\t\") ? \"\" : \"|\\t\"), \"g\");\n if (old != Init) { cm.refresh(); }\n });\n option(\"specialCharPlaceholder\", defaultSpecialCharPlaceholder, function (cm) { return cm.refresh(); }, 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) { return cm.getInputField().spellcheck = val; }, true);\n option(\"autocorrect\", false, function (cm, val) { return cm.getInputField().autocorrect = val; }, true);\n option(\"autocapitalize\", false, function (cm, val) { return cm.getInputField().autocapitalize = val; }, true);\n option(\"rtlMoveVisually\", !windows);\n option(\"wholeLineUpdateBefore\", true);\n\n option(\"theme\", \"default\", function (cm) {\n themeChanged(cm);\n guttersChanged(cm);\n }, true);\n option(\"keyMap\", \"default\", function (cm, val, old) {\n var next = getKeyMap(val);\n var prev = old != Init && getKeyMap(old);\n if (prev && prev.detach) { prev.detach(cm, next); }\n if (next.attach) { next.attach(cm, prev || null); }\n });\n option(\"extraKeys\", null);\n option(\"configureMouse\", null);\n\n option(\"lineWrapping\", false, wrappingChanged, true);\n option(\"gutters\", [], function (cm) {\n setGuttersForLineNumbers(cm.options);\n guttersChanged(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) { return updateScrollbars(cm); }, 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) {\n setGuttersForLineNumbers(cm.options);\n guttersChanged(cm);\n }, true);\n option(\"firstLineNumber\", 1, guttersChanged, true);\n option(\"lineNumberFormatter\", function (integer) { return integer; }, guttersChanged, true);\n option(\"showCursorWhenSelecting\", false, updateSelection, true);\n\n option(\"resetSelectionOnContextMenu\", true);\n option(\"lineWiseCopyCut\", true);\n option(\"pasteLinesPerSelection\", true);\n option(\"selectionsMayTouch\", false);\n\n option(\"readOnly\", false, function (cm, val) {\n if (val == \"nocursor\") {\n onBlur(cm);\n cm.display.input.blur();\n }\n cm.display.input.readOnlyChanged(val);\n });\n option(\"disableInput\", false, function (cm, val) {if (!val) { cm.display.input.reset(); }}, true);\n option(\"dragDrop\", true, dragDropChanged);\n option(\"allowDropFileTypes\", null);\n\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) { return cm.doc.history.undoDepth = val; });\n option(\"historyEventDelay\", 1250);\n option(\"viewportMargin\", 10, function (cm) { return cm.refresh(); }, true);\n option(\"maxHighlightLength\", 10000, resetModeState, true);\n option(\"moveInputWithCursor\", true, function (cm, val) {\n if (!val) { cm.display.input.resetPosition(); }\n });\n\n option(\"tabindex\", null, function (cm, val) { return cm.display.input.getField().tabIndex = val || \"\"; });\n option(\"autofocus\", null);\n option(\"direction\", \"ltr\", function (cm, val) { return cm.doc.setDirection(val); }, true);\n option(\"phrases\", null);\n }\n\n function guttersChanged(cm) {\n updateGutters(cm);\n regChange(cm);\n alignHorizontally(cm);\n }\n\n function dragDropChanged(cm, value, old) {\n var wasOn = old && old != Init;\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 estimateLineHeights(cm);\n regChange(cm);\n clearCaches(cm);\n setTimeout(function () { return updateScrollbars(cm); }, 100);\n }\n\n // A CodeMirror instance represents an editor. This is the object\n // that user code is usually dealing with.\n\n function CodeMirror(place, options) {\n var this$1 = this;\n\n if (!(this instanceof CodeMirror)) { return new CodeMirror(place, options) }\n\n this.options = options = options ? copyObj(options) : {};\n // Determine effective options based on given values and defaults.\n copyObj(defaults, options, false);\n setGuttersForLineNumbers(options);\n\n var doc = options.value;\n if (typeof doc == \"string\") { doc = new Doc(doc, options.mode, null, options.lineSeparator, options.direction); }\n else if (options.mode) { doc.modeOption = options.mode; }\n this.doc = doc;\n\n var input = new CodeMirror.inputStyles[options.inputStyle](this);\n var display = this.display = new Display(place, doc, input);\n display.wrapper.CodeMirror = this;\n updateGutters(this);\n themeChanged(this);\n if (options.lineWrapping)\n { this.display.wrapper.className += \" CodeMirror-wrap\"; }\n initScrollbars(this);\n\n this.state = {\n keyMaps: [], // stores maps added by addKeyMap\n overlays: [], // highlighting overlays, as added by addOverlay\n modeGen: 0, // bumped when mode/overlay changes, used to invalidate highlighting info\n overwrite: false,\n delayingBlurEvent: false,\n focused: false,\n suppressEdits: false, // used to disable editing during key handlers when in readOnly mode\n pasteIncoming: -1, cutIncoming: -1, // help recognize paste/cut edits in input.poll\n selectingText: false,\n draggingText: false,\n highlight: new Delayed(), // stores highlight worker timeout\n keySeq: null, // Unfinished key sequence\n specialChars: null\n };\n\n if (options.autofocus && !mobile) { display.input.focus(); }\n\n // Override magic textarea content restore that IE sometimes does\n // on our hidden textarea on reload\n if (ie && ie_version < 11) { setTimeout(function () { return this$1.display.input.reset(true); }, 20); }\n\n registerEventHandlers(this);\n ensureGlobalHandlers();\n\n startOperation(this);\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 for (var opt in optionHandlers) { if (optionHandlers.hasOwnProperty(opt))\n { optionHandlers[opt](this$1, options[opt], Init); } }\n maybeUpdateLineNumberWidth(this);\n if (options.finishInit) { options.finishInit(this); }\n for (var i = 0; i < initHooks.length; ++i) { initHooks[i](this$1); }\n endOperation(this);\n // Suppress optimizelegibility in Webkit, since it breaks text\n // measuring on line wrapping boundaries.\n if (webkit && options.lineWrapping &&\n getComputedStyle(display.lineDiv).textRendering == \"optimizelegibility\")\n { display.lineDiv.style.textRendering = \"auto\"; }\n }\n\n // The default configuration options.\n CodeMirror.defaults = defaults;\n // Functions to run when options are changed.\n CodeMirror.optionHandlers = optionHandlers;\n\n // Attach the necessary event handlers when initializing the editor\n function registerEventHandlers(cm) {\n var d = cm.display;\n on(d.scroller, \"mousedown\", operation(cm, onMouseDown));\n // Older IE's will not fire a second mousedown for a double click\n if (ie && ie_version < 11)\n { on(d.scroller, \"dblclick\", operation(cm, function (e) {\n if (signalDOMEvent(cm, e)) { return }\n var pos = posFromMouse(cm, e);\n if (!pos || clickInGutter(cm, e) || eventInWidget(cm.display, e)) { return }\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) { return signalDOMEvent(cm, e) || e_preventDefault(e); }); }\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 on(d.scroller, \"contextmenu\", function (e) { return onContextMenu(cm, e); });\n\n // Used to suppress mouse event handling when a touch happens\n var touchFinished, prevTouch = {end: 0};\n function finishTouch() {\n if (d.activeTouch) {\n touchFinished = setTimeout(function () { return d.activeTouch = null; }, 1000);\n prevTouch = d.activeTouch;\n prevTouch.end = +new Date;\n }\n }\n function isMouseLikeTouchEvent(e) {\n if (e.touches.length != 1) { return false }\n var touch = e.touches[0];\n return touch.radiusX <= 1 && touch.radiusY <= 1\n }\n function farAway(touch, other) {\n if (other.left == null) { return true }\n var dx = other.left - touch.left, dy = other.top - touch.top;\n return dx * dx + dy * dy > 20 * 20\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 = {start: now, moved: false,\n prev: now - prevTouch.end <= 300 ? prevTouch : null};\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) { d.activeTouch.moved = true; }\n });\n on(d.scroller, \"touchend\", function (e) {\n var touch = d.activeTouch;\n if (touch && !eventInWidget(d, e) && touch.left != null &&\n !touch.moved && new Date - touch.start < 300) {\n var pos = cm.coordsChar(d.activeTouch, \"page\"), range;\n if (!touch.prev || farAway(touch, touch.prev)) // Single tap\n { range = new Range(pos, pos); }\n else if (!touch.prev.prev || farAway(touch, touch.prev.prev)) // Double tap\n { range = cm.findWordAt(pos); }\n else // Triple tap\n { range = new Range(Pos(pos.line, 0), clipPos(cm.doc, Pos(pos.line + 1, 0))); }\n cm.setSelection(range.anchor, range.head);\n cm.focus();\n e_preventDefault(e);\n }\n finishTouch();\n });\n on(d.scroller, \"touchcancel\", finishTouch);\n\n // Sync scrolling between fake scrollbars and real scrollable\n // area, ensure viewport is updated when scrolling.\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 });\n\n // Listen to wheel events in order to try and update the viewport on time.\n on(d.scroller, \"mousewheel\", function (e) { return onScrollWheel(cm, e); });\n on(d.scroller, \"DOMMouseScroll\", function (e) { return onScrollWheel(cm, e); });\n\n // Prevent wrapper from ever scrolling\n on(d.wrapper, \"scroll\", function () { return d.wrapper.scrollTop = d.wrapper.scrollLeft = 0; });\n\n d.dragFunctions = {\n enter: function (e) {if (!signalDOMEvent(cm, e)) { e_stop(e); }},\n over: function (e) {if (!signalDOMEvent(cm, e)) { onDragOver(cm, e); e_stop(e); }},\n start: function (e) { return onDragStart(cm, e); },\n drop: operation(cm, onDrop),\n leave: function (e) {if (!signalDOMEvent(cm, e)) { clearDragCursor(cm); }}\n };\n\n var inp = d.input.getField();\n on(inp, \"keyup\", function (e) { return onKeyUp.call(cm, e); });\n on(inp, \"keydown\", operation(cm, onKeyDown));\n on(inp, \"keypress\", operation(cm, onKeyPress));\n on(inp, \"focus\", function (e) { return onFocus(cm, e); });\n on(inp, \"blur\", function (e) { return onBlur(cm, e); });\n }\n\n var initHooks = [];\n CodeMirror.defineInitHook = function (f) { return initHooks.push(f); };\n\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 function indentLine(cm, n, how, aggressive) {\n var doc = cm.doc, state;\n if (how == null) { how = \"add\"; }\n if (how == \"smart\") {\n // Fall back to \"prev\" when the mode doesn't have an indentation\n // method.\n if (!doc.mode.indent) { how = \"prev\"; }\n else { state = getContextBefore(cm, n).state; }\n }\n\n var tabSize = cm.options.tabSize;\n var line = getLine(doc, n), curSpace = countColumn(line.text, null, tabSize);\n if (line.stateAfter) { line.stateAfter = null; }\n var curSpaceString = line.text.match(/^\\s*/)[0], indentation;\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 if (indentation == Pass || indentation > 150) {\n if (!aggressive) { return }\n how = \"prev\";\n }\n }\n if (how == \"prev\") {\n if (n > doc.first) { indentation = countColumn(getLine(doc, n-1).text, null, tabSize); }\n else { indentation = 0; }\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 indentation = Math.max(0, indentation);\n\n var indentString = \"\", pos = 0;\n if (cm.options.indentWithTabs)\n { for (var i = Math.floor(indentation / tabSize); i; --i) {pos += tabSize; indentString += \"\\t\";} }\n if (pos < indentation) { indentString += spaceStr(indentation - pos); }\n\n if (indentString != curSpaceString) {\n replaceRange(doc, indentString, Pos(n, 0), Pos(n, curSpaceString.length), \"+input\");\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 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 }\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 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 if (!sel) { sel = doc.sel; }\n\n var recent = +new Date - 200;\n var paste = origin == \"paste\" || cm.state.pasteIncoming > recent;\n var textLines = splitLinesAuto(inserted), multiPaste = null;\n // When pasting N lines into N selections, insert one line per selection\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 for (var i = 0; i < lastCopied.text.length; i++)\n { multiPaste.push(doc.splitLines(lastCopied.text[i])); }\n }\n } else if (textLines.length == sel.ranges.length && cm.options.pasteLinesPerSelection) {\n multiPaste = map(textLines, function (l) { return [l]; });\n }\n }\n\n var updateInput = cm.curOp.updateInput;\n // Normal behavior is to insert the new text into every selection\n for (var i$1 = sel.ranges.length - 1; i$1 >= 0; i$1--) {\n var range$$1 = sel.ranges[i$1];\n var from = range$$1.from(), to = range$$1.to();\n if (range$$1.empty()) {\n if (deleted && deleted > 0) // Handle deletion\n { from = Pos(from.line, from.ch - deleted); }\n else if (cm.state.overwrite && !paste) // Handle overwrite\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 var changeEvent = {from: from, to: to, text: multiPaste ? multiPaste[i$1 % multiPaste.length] : textLines,\n origin: origin || (paste ? \"paste\" : cm.state.cutIncoming > recent ? \"cut\" : \"+input\")};\n makeChange(cm.doc, changeEvent);\n signalLater(cm, \"inputRead\", cm, changeEvent);\n }\n if (inserted && !paste)\n { triggerElectric(cm, inserted); }\n\n ensureCursorVisible(cm);\n if (cm.curOp.updateInput < 2) { cm.curOp.updateInput = updateInput; }\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 if (pasted) {\n e.preventDefault();\n if (!cm.isReadOnly() && !cm.options.disableInput)\n { runInOp(cm, function () { return applyTextInput(cm, pasted, 0, null, \"paste\"); }); }\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) { return }\n var sel = cm.doc.sel;\n\n for (var i = sel.ranges.length - 1; i >= 0; i--) {\n var range$$1 = sel.ranges[i];\n if (range$$1.head.ch > 100 || (i && sel.ranges[i - 1].head.line == range$$1.head.line)) { continue }\n var mode = cm.getModeAt(range$$1.head);\n var indented = false;\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$$1.head.line, \"smart\");\n break\n } }\n } else if (mode.electricInput) {\n if (mode.electricInput.test(getLine(cm.doc, range$$1.head.line).text.slice(0, range$$1.head.ch)))\n { indented = indentLine(cm, range$$1.head.line, \"smart\"); }\n }\n if (indented) { signalLater(cm, \"electricInput\", cm, range$$1.head.line); }\n }\n }\n\n function copyableRanges(cm) {\n var text = [], ranges = [];\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 = {anchor: Pos(line, 0), head: Pos(line + 1, 0)};\n ranges.push(lineRange);\n text.push(cm.getRange(lineRange.anchor, lineRange.head));\n }\n return {text: text, ranges: ranges}\n }\n\n function disableBrowserMagic(field, spellcheck, autocorrect, autocapitalize) {\n field.setAttribute(\"autocorrect\", !!autocorrect);\n field.setAttribute(\"autocapitalize\", !!autocapitalize);\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;\");\n // 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 if (webkit) { te.style.width = \"1000px\"; }\n else { te.setAttribute(\"wrap\", \"off\"); }\n // If border: 0; -- iOS fails to open keyboard (issue #1287)\n if (ios) { te.style.border = \"1px solid black\"; }\n disableBrowserMagic(te);\n return div\n }\n\n // The publicly visible API. Note that methodOp(f) means\n // 'wrap f in an operation, performed on its `this` parameter'.\n\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 function addEditorMethods(CodeMirror) {\n var optionHandlers = CodeMirror.optionHandlers;\n\n var helpers = CodeMirror.helpers = {};\n\n CodeMirror.prototype = {\n constructor: CodeMirror,\n focus: function(){window.focus(); this.display.input.focus();},\n\n setOption: function(option, value) {\n var options = this.options, old = options[option];\n if (options[option] == value && option != \"mode\") { return }\n options[option] = value;\n if (optionHandlers.hasOwnProperty(option))\n { operation(this, optionHandlers[option])(this, value, old); }\n signal(this, \"optionChange\", this, option);\n },\n\n getOption: function(option) {return this.options[option]},\n getDoc: function() {return this.doc},\n\n addKeyMap: function(map$$1, bottom) {\n this.state.keyMaps[bottom ? \"push\" : \"unshift\"](getKeyMap(map$$1));\n },\n removeKeyMap: function(map$$1) {\n var maps = this.state.keyMaps;\n for (var i = 0; i < maps.length; ++i)\n { if (maps[i] == map$$1 || maps[i].name == map$$1) {\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 if (mode.startState) { throw new Error(\"Overlays may not be stateful.\") }\n insertSorted(this.state.overlays,\n {mode: mode, modeSpec: spec, opaque: options && options.opaque,\n priority: (options && options.priority) || 0},\n function (overlay) { return overlay.priority; });\n this.state.modeGen++;\n regChange(this);\n }),\n removeOverlay: methodOp(function(spec) {\n var this$1 = this;\n\n var overlays = this.state.overlays;\n for (var i = 0; i < overlays.length; ++i) {\n var cur = overlays[i].modeSpec;\n if (cur == spec || typeof spec == \"string\" && cur.name == spec) {\n overlays.splice(i, 1);\n this$1.state.modeGen++;\n regChange(this$1);\n return\n }\n }\n }),\n\n indentLine: methodOp(function(n, dir, aggressive) {\n if (typeof dir != \"string\" && typeof dir != \"number\") {\n if (dir == null) { dir = this.options.smartIndent ? \"smart\" : \"prev\"; }\n else { dir = dir ? \"add\" : \"subtract\"; }\n }\n if (isLine(this.doc, n)) { indentLine(this, n, dir, aggressive); }\n }),\n indentSelection: methodOp(function(how) {\n var this$1 = this;\n\n var ranges = this.doc.sel.ranges, end = -1;\n for (var i = 0; i < ranges.length; i++) {\n var range$$1 = ranges[i];\n if (!range$$1.empty()) {\n var from = range$$1.from(), to = range$$1.to();\n var start = Math.max(end, from.line);\n end = Math.min(this$1.lastLine(), to.line - (to.ch ? 0 : 1)) + 1;\n for (var j = start; j < end; ++j)\n { indentLine(this$1, j, how); }\n var newRanges = this$1.doc.sel.ranges;\n if (from.ch == 0 && ranges.length == newRanges.length && newRanges[i].from().ch > 0)\n { replaceOneSelection(this$1.doc, i, new Range(from, newRanges[i].to()), sel_dontScroll); }\n } else if (range$$1.head.line > end) {\n indentLine(this$1, range$$1.head.line, how, true);\n end = range$$1.head.line;\n if (i == this$1.doc.sel.primIndex) { ensureCursorVisible(this$1); }\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(pos, precise) {\n return takeToken(this, pos, precise)\n },\n\n getLineTokens: function(line, precise) {\n return takeToken(this, Pos(line), precise, true)\n },\n\n getTokenTypeAt: function(pos) {\n pos = clipPos(this.doc, pos);\n var styles = getLineStyles(this, getLine(this.doc, pos.line));\n var before = 0, after = (styles.length - 1) / 2, ch = pos.ch;\n var type;\n if (ch == 0) { type = styles[2]; }\n else { for (;;) {\n var mid = (before + after) >> 1;\n if ((mid ? styles[mid * 2 - 1] : 0) >= ch) { after = mid; }\n else if (styles[mid * 2 + 1] < ch) { before = mid + 1; }\n else { type = styles[mid * 2 + 2]; break }\n } }\n var cut = type ? type.indexOf(\"overlay \") : -1;\n return cut < 0 ? type : cut == 0 ? null : type.slice(0, cut - 1)\n },\n\n getModeAt: function(pos) {\n var mode = this.doc.mode;\n if (!mode.innerMode) { return mode }\n return CodeMirror.innerMode(mode, this.getTokenAt(pos).state).mode\n },\n\n getHelper: function(pos, type) {\n return this.getHelpers(pos, type)[0]\n },\n\n getHelpers: function(pos, type) {\n var this$1 = this;\n\n var found = [];\n if (!helpers.hasOwnProperty(type)) { return found }\n var help = helpers[type], mode = this.getModeAt(pos);\n if (typeof mode[type] == \"string\") {\n if (help[mode[type]]) { found.push(help[mode[type]]); }\n } else if (mode[type]) {\n for (var i = 0; i < mode[type].length; i++) {\n var val = help[mode[type][i]];\n if (val) { found.push(val); }\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 for (var i$1 = 0; i$1 < help._global.length; i$1++) {\n var cur = help._global[i$1];\n if (cur.pred(mode, this$1) && indexOf(found, cur.val) == -1)\n { found.push(cur.val); }\n }\n return found\n },\n\n getStateAfter: function(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\n cursorCoords: function(start, mode) {\n var pos, range$$1 = this.doc.sel.primary();\n if (start == null) { pos = range$$1.head; }\n else if (typeof start == \"object\") { pos = clipPos(this.doc, start); }\n else { pos = start ? range$$1.from() : range$$1.to(); }\n return cursorCoords(this, pos, mode || \"page\")\n },\n\n charCoords: function(pos, mode) {\n return charCoords(this, clipPos(this.doc, pos), mode || \"page\")\n },\n\n coordsChar: function(coords, mode) {\n coords = fromCoordSystem(this, coords, mode || \"page\");\n return coordsChar(this, coords.left, coords.top)\n },\n\n lineAtHeight: function(height, mode) {\n height = fromCoordSystem(this, {top: height, left: 0}, mode || \"page\").top;\n return lineAtHeight(this.doc, height + this.display.viewOffset)\n },\n heightAtLine: function(line, mode, includeWidgets) {\n var end = false, lineObj;\n if (typeof line == \"number\") {\n var last = this.doc.first + this.doc.size - 1;\n if (line < this.doc.first) { line = this.doc.first; }\n else if (line > last) { line = last; end = true; }\n lineObj = getLine(this.doc, line);\n } else {\n lineObj = line;\n }\n return intoCoordSystem(this, lineObj, {top: 0, left: 0}, mode || \"page\", includeWidgets || end).top +\n (end ? this.doc.height - heightAtLine(lineObj) : 0)\n },\n\n defaultTextHeight: function() { return textHeight(this.display) },\n defaultCharWidth: function() { return charWidth(this.display) },\n\n getViewport: function() { return {from: this.display.viewFrom, to: this.display.viewTo}},\n\n addWidget: function(pos, node, scroll, vert, horiz) {\n var display = this.display;\n pos = cursorCoords(this, clipPos(this.doc, pos));\n var top = pos.bottom, 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 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);\n // Default to positioning above (if specified and possible); otherwise default to positioning below\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 if (left + node.offsetWidth > hspace)\n { left = hspace - node.offsetWidth; }\n }\n node.style.top = top + \"px\";\n node.style.left = node.style.right = \"\";\n if (horiz == \"right\") {\n left = display.sizer.clientWidth - node.offsetWidth;\n node.style.right = \"0px\";\n } else {\n if (horiz == \"left\") { left = 0; }\n else if (horiz == \"middle\") { left = (display.sizer.clientWidth - node.offsetWidth) / 2; }\n node.style.left = left + \"px\";\n }\n if (scroll)\n { scrollIntoView(this, {left: left, top: top, right: left + node.offsetWidth, bottom: top + node.offsetHeight}); }\n },\n\n triggerOnKeyDown: methodOp(onKeyDown),\n triggerOnKeyPress: methodOp(onKeyPress),\n triggerOnKeyUp: onKeyUp,\n triggerOnMouseDown: methodOp(onMouseDown),\n\n execCommand: function(cmd) {\n if (commands.hasOwnProperty(cmd))\n { return commands[cmd].call(null, this) }\n },\n\n triggerElectric: methodOp(function(text) { triggerElectric(this, text); }),\n\n findPosH: function(from, amount, unit, visually) {\n var this$1 = this;\n\n var dir = 1;\n if (amount < 0) { dir = -1; amount = -amount; }\n var cur = clipPos(this.doc, from);\n for (var i = 0; i < amount; ++i) {\n cur = findPosH(this$1.doc, cur, dir, unit, visually);\n if (cur.hitSide) { break }\n }\n return cur\n },\n\n moveH: methodOp(function(dir, unit) {\n var this$1 = this;\n\n this.extendSelectionsBy(function (range$$1) {\n if (this$1.display.shift || this$1.doc.extend || range$$1.empty())\n { return findPosH(this$1.doc, range$$1.head, dir, unit, this$1.options.rtlMoveVisually) }\n else\n { return dir < 0 ? range$$1.from() : range$$1.to() }\n }, sel_move);\n }),\n\n deleteH: methodOp(function(dir, unit) {\n var sel = this.doc.sel, doc = this.doc;\n if (sel.somethingSelected())\n { doc.replaceSelection(\"\", null, \"+delete\"); }\n else\n { deleteNearSelection(this, function (range$$1) {\n var other = findPosH(doc, range$$1.head, dir, unit, false);\n return dir < 0 ? {from: other, to: range$$1.head} : {from: range$$1.head, to: other}\n }); }\n }),\n\n findPosV: function(from, amount, unit, goalColumn) {\n var this$1 = this;\n\n var dir = 1, x = goalColumn;\n if (amount < 0) { dir = -1; amount = -amount; }\n var cur = clipPos(this.doc, from);\n for (var i = 0; i < amount; ++i) {\n var coords = cursorCoords(this$1, cur, \"div\");\n if (x == null) { x = coords.left; }\n else { coords.left = x; }\n cur = findPosV(this$1, coords, dir, unit);\n if (cur.hitSide) { break }\n }\n return cur\n },\n\n moveV: methodOp(function(dir, unit) {\n var this$1 = this;\n\n var doc = this.doc, goals = [];\n var collapse = !this.display.shift && !doc.extend && doc.sel.somethingSelected();\n doc.extendSelectionsBy(function (range$$1) {\n if (collapse)\n { return dir < 0 ? range$$1.from() : range$$1.to() }\n var headPos = cursorCoords(this$1, range$$1.head, \"div\");\n if (range$$1.goalColumn != null) { headPos.left = range$$1.goalColumn; }\n goals.push(headPos.left);\n var pos = findPosV(this$1, headPos, dir, unit);\n if (unit == \"page\" && range$$1 == doc.sel.primary())\n { addToScrollTop(this$1, charCoords(this$1, pos, \"div\").top - headPos.top); }\n return pos\n }, sel_move);\n if (goals.length) { for (var i = 0; i < doc.sel.ranges.length; i++)\n { doc.sel.ranges[i].goalColumn = goals[i]; } }\n }),\n\n // Find the word at the given position (as returned by coordsChar).\n findWordAt: function(pos) {\n var doc = this.doc, line = getLine(doc, pos.line).text;\n var start = pos.ch, end = pos.ch;\n if (line) {\n var helper = this.getHelper(pos, \"wordChars\");\n if ((pos.sticky == \"before\" || end == line.length) && start) { --start; } else { ++end; }\n var startChar = line.charAt(start);\n var check = isWordChar(startChar, helper)\n ? function (ch) { return isWordChar(ch, helper); }\n : /\\s/.test(startChar) ? function (ch) { return /\\s/.test(ch); }\n : function (ch) { return (!/\\s/.test(ch) && !isWordChar(ch)); };\n while (start > 0 && check(line.charAt(start - 1))) { --start; }\n while (end < line.length && check(line.charAt(end))) { ++end; }\n }\n return new Range(Pos(pos.line, start), Pos(pos.line, end))\n },\n\n toggleOverwrite: function(value) {\n if (value != null && value == this.state.overwrite) { return }\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 signal(this, \"overwriteToggle\", this, this.state.overwrite);\n },\n hasFocus: function() { return this.display.input.getField() == activeElt() },\n isReadOnly: function() { return !!(this.options.readOnly || this.doc.cantEdit) },\n\n scrollTo: methodOp(function (x, y) { scrollToCoords(this, x, y); }),\n getScrollInfo: function() {\n var scroller = this.display.scroller;\n return {left: scroller.scrollLeft, 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), clientWidth: displayWidth(this)}\n },\n\n scrollIntoView: methodOp(function(range$$1, margin) {\n if (range$$1 == null) {\n range$$1 = {from: this.doc.sel.primary().head, to: null};\n if (margin == null) { margin = this.options.cursorScrollMargin; }\n } else if (typeof range$$1 == \"number\") {\n range$$1 = {from: Pos(range$$1, 0), to: null};\n } else if (range$$1.from == null) {\n range$$1 = {from: range$$1, to: null};\n }\n if (!range$$1.to) { range$$1.to = range$$1.from; }\n range$$1.margin = margin || 0;\n\n if (range$$1.from.line != null) {\n scrollToRange(this, range$$1);\n } else {\n scrollToCoordsRange(this, range$$1.from, range$$1.to, range$$1.margin);\n }\n }),\n\n setSize: methodOp(function(width, height) {\n var this$1 = this;\n\n var interpret = function (val) { return typeof val == \"number\" || /^\\d+$/.test(String(val)) ? val + \"px\" : val; };\n if (width != null) { this.display.wrapper.style.width = interpret(width); }\n if (height != null) { this.display.wrapper.style.height = interpret(height); }\n if (this.options.lineWrapping) { clearLineMeasurementCache(this); }\n var lineNo$$1 = this.display.viewFrom;\n this.doc.iter(lineNo$$1, this.display.viewTo, function (line) {\n if (line.widgets) { for (var i = 0; i < line.widgets.length; i++)\n { if (line.widgets[i].noHScroll) { regLineChange(this$1, lineNo$$1, \"widget\"); break } } }\n ++lineNo$$1;\n });\n this.curOp.forceUpdate = true;\n signal(this, \"refresh\", this);\n }),\n\n operation: function(f){return runInOp(this, f)},\n startOperation: function(){return startOperation(this)},\n endOperation: function(){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);\n if (oldHeight == null || Math.abs(oldHeight - textHeight(this.display)) > .5)\n { estimateLineHeights(this); }\n signal(this, \"refresh\", this);\n }),\n\n swapDoc: methodOp(function(doc) {\n var old = this.doc;\n old.cm = null;\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\n phrase: function(phraseText) {\n var phrases = this.options.phrases;\n return phrases && Object.prototype.hasOwnProperty.call(phrases, phraseText) ? phrases[phraseText] : phraseText\n },\n\n getInputField: function(){return this.display.input.getField()},\n getWrapperElement: function(){return this.display.wrapper},\n getScrollerElement: function(){return this.display.scroller},\n getGutterElement: function(){return this.display.gutters}\n };\n eventMixin(CodeMirror);\n\n CodeMirror.registerHelper = function(type, name, value) {\n if (!helpers.hasOwnProperty(type)) { helpers[type] = CodeMirror[type] = {_global: []}; }\n helpers[type][name] = value;\n };\n CodeMirror.registerGlobalHelper = function(type, name, predicate, value) {\n CodeMirror.registerHelper(type, name, value);\n helpers[type]._global.push({pred: predicate, val: value});\n };\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 function findPosH(doc, pos, dir, unit, visually) {\n var oldPos = pos;\n var origDir = dir;\n var lineObj = getLine(doc, pos.line);\n function findNextLine() {\n var l = pos.line + dir;\n if (l < doc.first || l >= doc.first + doc.size) { return false }\n pos = new Pos(l, pos.ch, pos.sticky);\n return lineObj = getLine(doc, l)\n }\n function moveOnce(boundToLine) {\n var next;\n if (visually) {\n next = moveVisually(doc.cm, lineObj, pos, dir);\n } else {\n next = moveLogically(lineObj, pos, dir);\n }\n if (next == null) {\n if (!boundToLine && findNextLine())\n { pos = endOfLine(visually, doc.cm, lineObj, pos.line, dir); }\n else\n { return false }\n } else {\n pos = next;\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, group = unit == \"group\";\n var helper = doc.cm && doc.cm.getHelper(pos, \"wordChars\");\n for (var first = true;; first = false) {\n if (dir < 0 && !moveOnce(!first)) { break }\n var cur = lineObj.text.charAt(pos.ch) || \"\\n\";\n var type = isWordChar(cur, helper) ? \"w\"\n : group && cur == \"\\n\" ? \"n\"\n : !group || /\\s/.test(cur) ? null\n : \"p\";\n if (group && !first && !type) { type = \"s\"; }\n if (sawType && sawType != type) {\n if (dir < 0) {dir = 1; moveOnce(); pos.sticky = \"after\";}\n break\n }\n\n if (type) { sawType = type; }\n if (dir > 0 && !moveOnce(!first)) { break }\n }\n }\n var result = skipAtomic(doc, pos, oldPos, origDir, true);\n if (equalCursorPos(oldPos, result)) { result.hitSide = true; }\n return result\n }\n\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 function findPosV(cm, pos, dir, unit) {\n var doc = cm.doc, x = pos.left, y;\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\n } else if (unit == \"line\") {\n y = dir > 0 ? pos.bottom + 3 : pos.top - 3;\n }\n var target;\n for (;;) {\n target = coordsChar(cm, x, y);\n if (!target.outside) { break }\n if (dir < 0 ? y <= 0 : y >= doc.height) { target.hitSide = true; break }\n y += dir * 5;\n }\n return target\n }\n\n // CONTENTEDITABLE INPUT STYLE\n\n var ContentEditableInput = function(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\n var input = this, cm = input.cm;\n var div = input.div = display.lineDiv;\n disableBrowserMagic(div, cm.options.spellcheck, cm.options.autocorrect, cm.options.autocapitalize);\n\n on(div, \"paste\", function (e) {\n if (signalDOMEvent(cm, e) || handlePaste(e, cm)) { return }\n // IE doesn't fire input events, so we schedule a read for the pasted content in this way\n if (ie_version <= 11) { setTimeout(operation(cm, function () { return this$1.updateFromDOM(); }), 20); }\n });\n\n on(div, \"compositionstart\", function (e) {\n this$1.composing = {data: e.data, done: false};\n });\n on(div, \"compositionupdate\", function (e) {\n if (!this$1.composing) { this$1.composing = {data: e.data, done: false}; }\n });\n on(div, \"compositionend\", function (e) {\n if (this$1.composing) {\n if (e.data != this$1.composing.data) { this$1.readFromDOMSoon(); }\n this$1.composing.done = true;\n }\n });\n\n on(div, \"touchstart\", function () { return input.forceCompositionEnd(); });\n\n on(div, \"input\", function () {\n if (!this$1.composing) { this$1.readFromDOMSoon(); }\n });\n\n function onCopyCut(e) {\n if (signalDOMEvent(cm, e)) { return }\n if (cm.somethingSelected()) {\n setLastCopied({lineWise: false, text: cm.getSelections()});\n if (e.type == \"cut\") { cm.replaceSelection(\"\", null, \"cut\"); }\n } else if (!cm.options.lineWiseCopyCut) {\n return\n } else {\n var ranges = copyableRanges(cm);\n setLastCopied({lineWise: true, text: ranges.text});\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 if (e.clipboardData) {\n e.clipboardData.clearData();\n var content = lastCopied.text.join(\"\\n\");\n // iOS exposes the clipboard API, but seems to discard content inserted into it\n e.clipboardData.setData(\"Text\", content);\n if (e.clipboardData.getData(\"Text\") == content) {\n e.preventDefault();\n return\n }\n }\n // Old-fashioned briefly-focus-a-textarea hack\n var kludge = hiddenTextarea(), 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 if (hadFocus == div) { input.showPrimarySelection(); }\n }, 50);\n }\n on(div, \"copy\", onCopyCut);\n on(div, \"cut\", onCopyCut);\n };\n\n ContentEditableInput.prototype.prepareSelection = function () {\n var result = prepareSelection(this.cm, false);\n result.focus = this.cm.state.focused;\n return result\n };\n\n ContentEditableInput.prototype.showSelection = function (info, takeFocus) {\n if (!info || !this.cm.display.view.length) { return }\n if (info.focus || takeFocus) { this.showPrimarySelection(); }\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(), cm = this.cm, prim = cm.doc.sel.primary();\n var from = prim.from(), 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 if (curAnchor && !curAnchor.bad && curFocus && !curFocus.bad &&\n cmp(minPos(curAnchor, curFocus), from) == 0 &&\n cmp(maxPos(curAnchor, curFocus), to) == 0)\n { return }\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], offset: 0};\n var end = to.line < cm.display.viewTo && posToDOM(cm, to);\n if (!end) {\n var measure = view[view.length - 1].measure;\n var map$$1 = measure.maps ? measure.maps[measure.maps.length - 1] : measure.map;\n end = {node: map$$1[map$$1.length - 1], offset: map$$1[map$$1.length - 2] - map$$1[map$$1.length - 3]};\n }\n\n if (!start || !end) {\n sel.removeAllRanges();\n return\n }\n\n var old = sel.rangeCount && sel.getRangeAt(0), rng;\n try { 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 if (rng) {\n if (!gecko && cm.state.focused) {\n sel.collapse(start.node, start.offset);\n if (!rng.collapsed) {\n sel.removeAllRanges();\n sel.addRange(rng);\n }\n } else {\n sel.removeAllRanges();\n sel.addRange(rng);\n }\n if (old && sel.anchorNode == null) { sel.addRange(old); }\n else if (gecko) { this.startGracePeriod(); }\n }\n this.rememberSelection();\n };\n\n ContentEditableInput.prototype.startGracePeriod = function () {\n var this$1 = this;\n\n clearTimeout(this.gracePeriod);\n this.gracePeriod = setTimeout(function () {\n this$1.gracePeriod = false;\n if (this$1.selectionChanged())\n { this$1.cm.operation(function () { return this$1.cm.curOp.selectionChanged = true; }); }\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; this.lastAnchorOffset = sel.anchorOffset;\n this.lastFocusNode = sel.focusNode; this.lastFocusOffset = sel.focusOffset;\n };\n\n ContentEditableInput.prototype.selectionInEditor = function () {\n var sel = this.getSelection();\n if (!sel.rangeCount) { return false }\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())\n { this.showSelection(this.prepareSelection(), true); }\n this.div.focus();\n }\n };\n ContentEditableInput.prototype.blur = function () { this.div.blur(); };\n ContentEditableInput.prototype.getField = function () { return this.div };\n\n ContentEditableInput.prototype.supportsTouch = function () { return true };\n\n ContentEditableInput.prototype.receivedFocus = function () {\n var input = this;\n if (this.selectionInEditor())\n { this.pollSelection(); }\n else\n { runInOp(this.cm, function () { return input.cm.curOp.selectionChanged = true; }); }\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 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 ||\n sel.focusNode != this.lastFocusNode || sel.focusOffset != this.lastFocusOffset\n };\n\n ContentEditableInput.prototype.pollSelection = function () {\n if (this.readDOMTimeout != null || this.gracePeriod || !this.selectionChanged()) { return }\n var sel = this.getSelection(), cm = this.cm;\n // 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 if (android && chrome && this.cm.options.gutters.length && isInGutter(sel.anchorNode)) {\n this.cm.triggerOnKeyDown({type: \"keydown\", keyCode: 8, preventDefault: Math.abs});\n this.blur();\n this.focus();\n return\n }\n if (this.composing) { return }\n this.rememberSelection();\n var anchor = domToPos(cm, sel.anchorNode, sel.anchorOffset);\n var head = domToPos(cm, sel.focusNode, sel.focusOffset);\n if (anchor && head) { runInOp(cm, function () {\n setSelection(cm.doc, simpleSelection(anchor, head), sel_dontScroll);\n if (anchor.bad || head.bad) { cm.curOp.selectionChanged = true; }\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, display = cm.display, sel = cm.doc.sel.primary();\n var from = sel.from(), to = sel.to();\n if (from.ch == 0 && from.line > cm.firstLine())\n { from = Pos(from.line - 1, getLine(cm.doc, from.line - 1).length); }\n if (to.ch == getLine(cm.doc, to.line).text.length && to.line < cm.lastLine())\n { to = Pos(to.line + 1, 0); }\n if (from.line < display.viewFrom || to.line > display.viewTo - 1) { return false }\n\n var fromIndex, fromLine, fromNode;\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 var toIndex = findViewIndex(cm, to.line);\n var toLine, toNode;\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) { return false }\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 while (newText.length > 1 && oldText.length > 1) {\n if (lst(newText) == lst(oldText)) { newText.pop(); oldText.pop(); toLine--; }\n else if (newText[0] == oldText[0]) { newText.shift(); oldText.shift(); fromLine++; }\n else { break }\n }\n\n var cutFront = 0, cutEnd = 0;\n var newTop = newText[0], oldTop = oldText[0], maxCutFront = Math.min(newTop.length, oldTop.length);\n while (cutFront < maxCutFront && newTop.charCodeAt(cutFront) == oldTop.charCodeAt(cutFront))\n { ++cutFront; }\n var newBot = lst(newText), oldBot = lst(oldText);\n var maxCutEnd = Math.min(newBot.length - (newText.length == 1 ? cutFront : 0),\n oldBot.length - (oldText.length == 1 ? cutFront : 0));\n while (cutEnd < maxCutEnd &&\n 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 if (newText.length == 1 && oldText.length == 1 && fromLine == from.line) {\n while (cutFront && cutFront > from.ch &&\n 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\n var chFrom = Pos(fromLine, cutFront);\n var chTo = Pos(toLine, oldText.length ? lst(oldText).length - cutEnd : 0);\n if (newText.length > 1 || newText[0] || cmp(chFrom, chTo)) {\n replaceRange(cm.doc, newText, chFrom, chTo, \"+input\");\n return true\n }\n };\n\n ContentEditableInput.prototype.ensurePolled = function () {\n this.forceCompositionEnd();\n };\n ContentEditableInput.prototype.reset = function () {\n this.forceCompositionEnd();\n };\n ContentEditableInput.prototype.forceCompositionEnd = function () {\n if (!this.composing) { return }\n clearTimeout(this.readDOMTimeout);\n this.composing = null;\n this.updateFromDOM();\n this.div.blur();\n this.div.focus();\n };\n ContentEditableInput.prototype.readFromDOMSoon = function () {\n var this$1 = this;\n\n if (this.readDOMTimeout != null) { return }\n this.readDOMTimeout = setTimeout(function () {\n this$1.readDOMTimeout = null;\n if (this$1.composing) {\n if (this$1.composing.done) { this$1.composing = null; }\n else { return }\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 () { return regChange(this$1.cm); }); }\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) { return }\n e.preventDefault();\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 ContentEditableInput.prototype.readOnlyChanged = function (val) {\n this.div.contentEditable = String(val != \"nocursor\");\n };\n\n ContentEditableInput.prototype.onContextMenu = function () {};\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 if (!view || view.hidden) { return null }\n var line = getLine(cm.doc, pos.line);\n var info = mapFromLineView(view, line, pos.line);\n\n var order = getOrder(line, cm.doc.direction), side = \"left\";\n if (order) {\n var partPos = getBidiPartAt(order, pos.ch);\n side = partPos % 2 ? \"right\" : \"left\";\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)) { return true } }\n return false\n }\n\n function badPos(pos, bad) { if (bad) { pos.bad = true; } return pos }\n\n function domTextBetween(cm, from, to, fromLine, toLine) {\n var text = \"\", closing = false, lineSep = cm.doc.lineSeparator(), extraLinebreak = false;\n function recognizeMarker(id) { return function (marker) { return marker.id == id; } }\n function close() {\n if (closing) {\n text += lineSep;\n if (extraLinebreak) { text += lineSep; }\n closing = extraLinebreak = false;\n }\n }\n function addText(str) {\n if (str) {\n close();\n text += str;\n }\n }\n function walk(node) {\n if (node.nodeType == 1) {\n var cmText = node.getAttribute(\"cm-text\");\n if (cmText) {\n addText(cmText);\n return\n }\n var markerID = node.getAttribute(\"cm-marker\"), range$$1;\n if (markerID) {\n var found = cm.findMarks(Pos(fromLine, 0), Pos(toLine + 1, 0), recognizeMarker(+markerID));\n if (found.length && (range$$1 = found[0].find(0)))\n { addText(getBetween(cm.doc, range$$1.from, range$$1.to).join(lineSep)); }\n return\n }\n if (node.getAttribute(\"contenteditable\") == \"false\") { return }\n var isBlock = /^(pre|div|p|li|table|br)$/i.test(node.nodeName);\n if (!/^br$/i.test(node.nodeName) && node.textContent.length == 0) { return }\n\n if (isBlock) { close(); }\n for (var i = 0; i < node.childNodes.length; i++)\n { walk(node.childNodes[i]); }\n\n if (/^(pre|p)$/i.test(node.nodeName)) { extraLinebreak = true; }\n if (isBlock) { closing = true; }\n } else if (node.nodeType == 3) {\n addText(node.nodeValue.replace(/\\u200b/g, \"\").replace(/\\u00a0/g, \" \"));\n }\n }\n for (;;) {\n walk(from);\n if (from == to) { break }\n from = from.nextSibling;\n extraLinebreak = false;\n }\n return text\n }\n\n function domToPos(cm, node, offset) {\n var lineNode;\n if (node == cm.display.lineDiv) {\n lineNode = cm.display.lineDiv.childNodes[offset];\n if (!lineNode) { return badPos(cm.clipPos(Pos(cm.display.viewTo - 1)), true) }\n node = null; offset = 0;\n } else {\n for (lineNode = node;; lineNode = lineNode.parentNode) {\n if (!lineNode || lineNode == cm.display.lineDiv) { return null }\n if (lineNode.parentNode && lineNode.parentNode == cm.display.lineDiv) { break }\n }\n }\n for (var i = 0; i < cm.display.view.length; i++) {\n var lineView = cm.display.view[i];\n if (lineView.node == lineNode)\n { return locateNodeInLineView(lineView, node, offset) }\n }\n }\n\n function locateNodeInLineView(lineView, node, offset) {\n var wrapper = lineView.text.firstChild, bad = false;\n if (!node || !contains(wrapper, node)) { return badPos(Pos(lineNo(lineView.line), 0), true) }\n if (node == wrapper) {\n bad = true;\n node = wrapper.childNodes[offset];\n offset = 0;\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, topNode = node;\n if (!textNode && node.childNodes.length == 1 && node.firstChild.nodeType == 3) {\n textNode = node.firstChild;\n if (offset) { offset = textNode.nodeValue.length; }\n }\n while (topNode.parentNode != wrapper) { topNode = topNode.parentNode; }\n var measure = lineView.measure, maps = measure.maps;\n\n function find(textNode, topNode, offset) {\n for (var i = -1; i < (maps ? maps.length : 0); i++) {\n var map$$1 = i < 0 ? measure.map : maps[i];\n for (var j = 0; j < map$$1.length; j += 3) {\n var curNode = map$$1[j + 2];\n if (curNode == textNode || curNode == topNode) {\n var line = lineNo(i < 0 ? lineView.line : lineView.rest[i]);\n var ch = map$$1[j] + offset;\n if (offset < 0 || curNode != textNode) { ch = map$$1[j + (offset ? 1 : 0)]; }\n return Pos(line, ch)\n }\n }\n }\n }\n var found = find(textNode, topNode, offset);\n if (found) { return badPos(found, bad) }\n\n // FIXME this is all really shaky. might handle the few cases it needs to handle, but likely to cause problems\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 if (found)\n { return badPos(Pos(found.line, found.ch - dist), bad) }\n else\n { dist += after.textContent.length; }\n }\n for (var before = topNode.previousSibling, dist$1 = offset; before; before = before.previousSibling) {\n found = find(before, before.firstChild, -1);\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\n // TEXTAREA INPUT STYLE\n\n var TextareaInput = function(cm) {\n this.cm = cm;\n // See input.poll and input.reset\n this.prevInput = \"\";\n\n // 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 this.pollingFast = false;\n // Self-resetting timeout for the poller\n this.polling = new Delayed();\n // Used to work around IE issue with selection being forgotten when focus moves away from textarea\n this.hasSelection = false;\n this.composing = null;\n };\n\n TextareaInput.prototype.init = function (display) {\n var this$1 = this;\n\n var input = this, cm = this.cm;\n this.createField(display);\n var te = this.textarea;\n\n display.wrapper.insertBefore(this.wrapper, display.wrapper.firstChild);\n\n // Needed to hide big blue blinking cursor on Mobile Safari (doesn't seem to work in iOS 8 anymore)\n if (ios) { te.style.width = \"0px\"; }\n\n on(te, \"input\", function () {\n if (ie && ie_version >= 9 && this$1.hasSelection) { this$1.hasSelection = null; }\n input.poll();\n });\n\n on(te, \"paste\", function (e) {\n if (signalDOMEvent(cm, e) || handlePaste(e, cm)) { return }\n\n cm.state.pasteIncoming = +new Date;\n input.fastPoll();\n });\n\n function prepareCopyCut(e) {\n if (signalDOMEvent(cm, e)) { return }\n if (cm.somethingSelected()) {\n setLastCopied({lineWise: false, text: cm.getSelections()});\n } else if (!cm.options.lineWiseCopyCut) {\n return\n } else {\n var ranges = copyableRanges(cm);\n setLastCopied({lineWise: true, text: ranges.text});\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 if (e.type == \"cut\") { cm.state.cutIncoming = +new Date; }\n }\n on(te, \"cut\", prepareCopyCut);\n on(te, \"copy\", prepareCopyCut);\n\n on(display.scroller, \"paste\", function (e) {\n if (eventInWidget(display, e) || signalDOMEvent(cm, e)) { return }\n if (!te.dispatchEvent) {\n cm.state.pasteIncoming = +new Date;\n input.focus();\n return\n }\n\n // Pass the `paste` event to the textarea so it's handled by its event listener.\n var event = new Event(\"paste\");\n event.clipboardData = e.clipboardData;\n te.dispatchEvent(event);\n });\n\n // Prevent normal selection in the editor (we handle our own)\n on(display.lineSpace, \"selectstart\", function (e) {\n if (!eventInWidget(display, e)) { e_preventDefault(e); }\n });\n\n on(te, \"compositionstart\", function () {\n var start = cm.getCursor(\"from\");\n if (input.composing) { input.composing.range.clear(); }\n input.composing = {\n start: start,\n range: cm.markText(start, cm.getCursor(\"to\"), {className: \"CodeMirror-composing\"})\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();\n // The semihidden textarea that is focused when the editor is\n // focused, and receives input.\n this.textarea = this.wrapper.firstChild;\n };\n\n TextareaInput.prototype.prepareSelection = function () {\n // Redraw the selection and/or cursor\n var cm = this.cm, display = cm.display, doc = cm.doc;\n var result = prepareSelection(cm);\n\n // Move the hidden textarea near the cursor to prevent scrolling artifacts\n if (cm.options.moveInputWithCursor) {\n var headPos = cursorCoords(cm, doc.sel.primary().head, \"div\");\n var wrapOff = display.wrapper.getBoundingClientRect(), lineOff = display.lineDiv.getBoundingClientRect();\n result.teTop = Math.max(0, Math.min(display.wrapper.clientHeight - 10,\n headPos.top + lineOff.top - wrapOff.top));\n result.teLeft = Math.max(0, Math.min(display.wrapper.clientWidth - 10,\n headPos.left + lineOff.left - wrapOff.left));\n }\n\n return result\n };\n\n TextareaInput.prototype.showSelection = function (drawn) {\n var cm = this.cm, display = cm.display;\n removeChildrenAndAdd(display.cursorDiv, drawn.cursors);\n removeChildrenAndAdd(display.selectionDiv, drawn.selection);\n if (drawn.teTop != null) {\n this.wrapper.style.top = drawn.teTop + \"px\";\n this.wrapper.style.left = drawn.teLeft + \"px\";\n }\n };\n\n // Reset the input to correspond to the selection (or to be empty,\n // when not typing and nothing is selected)\n TextareaInput.prototype.reset = function (typing) {\n if (this.contextMenuPending || this.composing) { return }\n var cm = this.cm;\n if (cm.somethingSelected()) {\n this.prevInput = \"\";\n var content = cm.getSelection();\n this.textarea.value = content;\n if (cm.state.focused) { selectInput(this.textarea); }\n if (ie && ie_version >= 9) { this.hasSelection = content; }\n } else if (!typing) {\n this.prevInput = this.textarea.value = \"\";\n if (ie && ie_version >= 9) { this.hasSelection = null; }\n }\n };\n\n TextareaInput.prototype.getField = function () { return this.textarea };\n\n TextareaInput.prototype.supportsTouch = function () { return false };\n\n TextareaInput.prototype.focus = function () {\n if (this.cm.options.readOnly != \"nocursor\" && (!mobile || activeElt() != this.textarea)) {\n try { this.textarea.focus(); }\n catch (e) {} // IE8 will throw if the textarea is display: none or not in DOM\n }\n };\n\n TextareaInput.prototype.blur = function () { this.textarea.blur(); };\n\n TextareaInput.prototype.resetPosition = function () {\n this.wrapper.style.top = this.wrapper.style.left = 0;\n };\n\n TextareaInput.prototype.receivedFocus = function () { this.slowPoll(); };\n\n // Poll for input changes, using the normal rate of polling. This\n // runs as long as the editor is focused.\n TextareaInput.prototype.slowPoll = function () {\n var this$1 = this;\n\n if (this.pollingFast) { return }\n this.polling.set(this.cm.options.pollInterval, function () {\n this$1.poll();\n if (this$1.cm.state.focused) { this$1.slowPoll(); }\n });\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 TextareaInput.prototype.fastPoll = function () {\n var missed = false, input = this;\n input.pollingFast = true;\n function p() {\n var changed = input.poll();\n if (!changed && !missed) {missed = true; input.polling.set(60, p);}\n else {input.pollingFast = false; input.slowPoll();}\n }\n input.polling.set(20, p);\n };\n\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 TextareaInput.prototype.poll = function () {\n var this$1 = this;\n\n var cm = this.cm, input = this.textarea, prevInput = this.prevInput;\n // 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 if (this.contextMenuPending || !cm.state.focused ||\n (hasSelection(input) && !prevInput && !this.composing) ||\n cm.isReadOnly() || cm.options.disableInput || cm.state.keySeq)\n { return false }\n\n var text = input.value;\n // If nothing changed, bail.\n if (text == prevInput && !cm.somethingSelected()) { 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 if (ie && ie_version >= 9 && this.hasSelection === text ||\n 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 if (first == 0x200b && !prevInput) { prevInput = \"\\u200b\"; }\n if (first == 0x21da) { this.reset(); return this.cm.execCommand(\"undo\") }\n }\n // Find the part of the input that is actually new\n var same = 0, l = Math.min(prevInput.length, text.length);\n while (same < l && prevInput.charCodeAt(same) == text.charCodeAt(same)) { ++same; }\n\n runInOp(cm, function () {\n applyTextInput(cm, text.slice(same), prevInput.length - same,\n null, this$1.composing ? \"*compose\" : null);\n\n // Don't leave long text in the textarea, since it makes further polling slow\n if (text.length > 1000 || text.indexOf(\"\\n\") > -1) { input.value = this$1.prevInput = \"\"; }\n else { this$1.prevInput = text; }\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 return true\n };\n\n TextareaInput.prototype.ensurePolled = function () {\n if (this.pollingFast && this.poll()) { this.pollingFast = false; }\n };\n\n TextareaInput.prototype.onKeyPress = function () {\n if (ie && ie_version >= 9) { this.hasSelection = null; }\n this.fastPoll();\n };\n\n TextareaInput.prototype.onContextMenu = function (e) {\n var input = this, cm = input.cm, display = cm.display, te = input.textarea;\n if (input.contextMenuPending) { input.contextMenuPending(); }\n var pos = posFromMouse(cm, e), scrollPos = display.scroller.scrollTop;\n if (!pos || presto) { return } // Opera is difficult.\n\n // Reset the current text selection only if the click is done outside of the selection\n // and 'resetSelectionOnContextMenu' option is true.\n var reset = cm.options.resetSelectionOnContextMenu;\n if (reset && cm.doc.sel.contains(pos) == -1)\n { operation(cm, setSelection)(cm.doc, simpleSelection(pos), sel_dontScroll); }\n\n var oldCSS = te.style.cssText, 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 if (webkit) { oldScrollY = window.scrollY; } // Work around Chrome issue (#2712)\n display.input.focus();\n if (webkit) { window.scrollTo(null, oldScrollY); }\n display.input.reset();\n // Adds \"Select all\" to context menu in FF\n if (!cm.somethingSelected()) { te.value = input.prevInput = \" \"; }\n input.contextMenuPending = rehide;\n display.selForContextMenu = cm.doc.sel;\n clearTimeout(display.detectingSelectAll);\n\n // 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 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 te.value = extval;\n input.prevInput = selected ? \"\" : \"\\u200b\";\n te.selectionStart = 1; te.selectionEnd = extval.length;\n // Re-set this, in case some other handler touched the\n // selection in the meantime.\n display.selForContextMenu = cm.doc.sel;\n }\n }\n function rehide() {\n if (input.contextMenuPending != rehide) { return }\n input.contextMenuPending = false;\n input.wrapper.style.cssText = oldWrapperCSS;\n te.style.cssText = oldCSS;\n if (ie && ie_version < 9) { display.scrollbars.setScrollTop(display.scroller.scrollTop = scrollPos); }\n\n // Try to detect the user choosing select-all\n if (te.selectionStart != null) {\n if (!ie || (ie && ie_version < 9)) { prepareSelectAllHack(); }\n var i = 0, poll = function () {\n if (display.selForContextMenu == cm.doc.sel && te.selectionStart == 0 &&\n 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 display.detectingSelectAll = setTimeout(poll, 200);\n }\n }\n\n if (ie && ie_version >= 9) { prepareSelectAllHack(); }\n if (captureRightClick) {\n e_stop(e);\n var mouseup = function () {\n off(window, \"mouseup\", mouseup);\n setTimeout(rehide, 20);\n };\n on(window, \"mouseup\", mouseup);\n } else {\n setTimeout(rehide, 50);\n }\n };\n\n TextareaInput.prototype.readOnlyChanged = function (val) {\n if (!val) { this.reset(); }\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 if (!options.tabindex && textarea.tabIndex)\n { options.tabindex = textarea.tabIndex; }\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 if (options.autofocus == null) {\n var hasFocus = activeElt();\n options.autofocus = hasFocus == textarea ||\n textarea.getAttribute(\"autofocus\") != null && hasFocus == document.body;\n }\n\n function save() {textarea.value = cm.getValue();}\n\n var realSubmit;\n if (textarea.form) {\n on(textarea.form, \"submit\", save);\n // Deplorable hack to make the submit method do the right thing.\n if (!options.leaveSubmitMethodAlone) {\n var form = textarea.form;\n realSubmit = form.submit;\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 cm.getTextArea = function () { return textarea; };\n cm.toTextArea = function () {\n cm.toTextArea = isNaN; // Prevent this from being ran twice\n save();\n textarea.parentNode.removeChild(cm.getWrapperElement());\n textarea.style.display = \"\";\n if (textarea.form) {\n off(textarea.form, \"submit\", save);\n if (typeof textarea.form.submit == \"function\")\n { textarea.form.submit = realSubmit; }\n }\n };\n };\n\n textarea.style.display = \"none\";\n var cm = CodeMirror(function (node) { 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 }\n\n // EDITOR CONSTRUCTOR\n\n defineOptions(CodeMirror);\n\n addEditorMethods(CodeMirror);\n\n // Set up methods on CodeMirror's prototype to redirect to the editor's document.\n var dontDelegate = \"iter insert remove copy getEditor constructor\".split(\" \");\n for (var prop in Doc.prototype) { if (Doc.prototype.hasOwnProperty(prop) && indexOf(dontDelegate, prop) < 0)\n { CodeMirror.prototype[prop] = (function(method) {\n return function() {return method.apply(this.doc, arguments)}\n })(Doc.prototype[prop]); } }\n\n eventMixin(Doc);\n CodeMirror.inputStyles = {\"textarea\": TextareaInput, \"contenteditable\": ContentEditableInput};\n\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 CodeMirror.defineMode = function(name/*, mode, …*/) {\n if (!CodeMirror.defaults.mode && name != \"null\") { CodeMirror.defaults.mode = name; }\n defineMode.apply(this, arguments);\n };\n\n CodeMirror.defineMIME = defineMIME;\n\n // Minimal default mode.\n CodeMirror.defineMode(\"null\", function () { return ({token: function (stream) { return stream.skipToEnd(); }}); });\n CodeMirror.defineMIME(\"text/plain\", \"null\");\n\n // EXTENSIONS\n\n CodeMirror.defineExtension = function (name, func) {\n CodeMirror.prototype[name] = func;\n };\n CodeMirror.defineDocExtension = function (name, func) {\n Doc.prototype[name] = func;\n };\n\n CodeMirror.fromTextArea = fromTextArea;\n\n addLegacyProps(CodeMirror);\n\n CodeMirror.version = \"5.45.0\";\n\n return CodeMirror;\n\n})));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/codemirror/lib/codemirror.js\n// module id = 644\n// module chunks = 3 4 5 7 8 14","function injectStyle (ssrContext) {\n require(\"!!vue-loader/node_modules/vue-style-loader!css-loader?minimize!../../../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-16cfa774\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":false}!sass-loader!../../../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./spin.vue\")\n}\nvar normalizeComponent = require(\"!../../../../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../../../../node_modules/vue-loader/lib/selector?type=script&index=0!./spin.vue\"\nimport __vue_script__ from \"!!babel-loader!../../../../../node_modules/vue-loader/lib/selector?type=script&index=0!./spin.vue\"\n/* template */\nimport __vue_template__ from \"!!../../../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-16cfa774\\\",\\\"hasScoped\\\":false,\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../../../node_modules/vue-loader/lib/selector?type=template&index=0!./spin.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/js/module/components/spin/spin.vue\n// module id = 646\n// module chunks = 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 26","// style-loader: Adds some css to the DOM by adding a