{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./node_modules/axios/lib/utils.js","webpack:///./node_modules/autocomplete.js/src/common/utils.js","webpack:///./node_modules/codemirror/lib/codemirror.js","webpack:///./node_modules/@stimulus/core/dist/src/event_listener.js","webpack:///./node_modules/@stimulus/core/dist/src/dispatcher.js","webpack:///./node_modules/@stimulus/core/dist/src/action_descriptor.js","webpack:///./node_modules/@stimulus/core/dist/src/action.js","webpack:///./node_modules/@stimulus/core/dist/src/binding.js","webpack:///./node_modules/@stimulus/mutation-observers/dist/src/element_observer.js","webpack:///./node_modules/@stimulus/mutation-observers/dist/src/attribute_observer.js","webpack:///./node_modules/@stimulus/multimap/dist/src/set_operations.js","webpack:///./node_modules/@stimulus/multimap/dist/src/multimap.js","webpack:///./node_modules/@stimulus/multimap/dist/src/indexed_multimap.js","webpack:///./node_modules/@stimulus/mutation-observers/dist/src/token_list_observer.js","webpack:///./node_modules/@stimulus/mutation-observers/dist/src/value_list_observer.js","webpack:///./node_modules/@stimulus/core/dist/src/binding_observer.js","webpack:///./node_modules/@stimulus/core/dist/src/context.js","webpack:///./node_modules/@stimulus/core/dist/src/definition.js","webpack:///./node_modules/@stimulus/core/dist/src/module.js","webpack:///./node_modules/@stimulus/core/dist/src/data_map.js","webpack:///./node_modules/@stimulus/core/dist/src/selectors.js","webpack:///./node_modules/@stimulus/core/dist/src/target_set.js","webpack:///./node_modules/@stimulus/core/dist/src/scope.js","webpack:///./node_modules/@stimulus/core/dist/src/scope_observer.js","webpack:///./node_modules/@stimulus/core/dist/src/router.js","webpack:///./node_modules/@stimulus/core/dist/src/schema.js","webpack:///./node_modules/@stimulus/core/dist/src/application.js","webpack:///./node_modules/@stimulus/core/dist/src/target_properties.js","webpack:///./node_modules/@stimulus/core/dist/src/controller.js","webpack:///(webpack)/buildin/module.js","webpack:///./node_modules/autocomplete.js/src/common/dom.js","webpack:///(webpack)/buildin/global.js","webpack:///./node_modules/morphdom/dist/morphdom-esm.js","webpack:///./node_modules/cable_ready/javascript/cable_ready.js","webpack:///./node_modules/cable_ready/javascript/enums.js","webpack:///./node_modules/cable_ready/javascript/utils.js","webpack:///./node_modules/cable_ready/javascript/callbacks.js","webpack:///./app/javascript/channels/consumer.js","webpack:///./node_modules/lodash/lodash.js","webpack:///./node_modules/@rails/actioncable/app/assets/javascripts/action_cable.js","webpack:///./node_modules/stimulus_reflex/javascript/schema.js","webpack:///./node_modules/stimulus_reflex/javascript/consumer.js","webpack:///./node_modules/stimulus_reflex/javascript/utils.js","webpack:///./node_modules/stimulus_reflex/javascript/debug.js","webpack:///./node_modules/stimulus_reflex/javascript/lifecycle.js","webpack:///./node_modules/stimulus_reflex/javascript/attributes.js","webpack:///./node_modules/stimulus_reflex/javascript/controllers.js","webpack:///./node_modules/stimulus_reflex/javascript/log.js","webpack:///./node_modules/stimulus_reflex/javascript/stimulus_reflex.js","webpack:///./node_modules/autocomplete.js/src/autocomplete/event_emitter.js","webpack:///./node_modules/autocomplete.js/src/autocomplete/css.js","webpack:///./node_modules/events/events.js","webpack:///./app/javascript/controllers/application_controller.js","webpack:///./node_modules/autocomplete.js/index.js","webpack:///./node_modules/axios/lib/helpers/bind.js","webpack:///./node_modules/axios/lib/helpers/buildURL.js","webpack:///./node_modules/axios/lib/cancel/isCancel.js","webpack:///./node_modules/axios/lib/defaults.js","webpack:///./node_modules/process/browser.js","webpack:///./node_modules/axios/lib/adapters/xhr.js","webpack:///./node_modules/axios/lib/core/createError.js","webpack:///./node_modules/axios/lib/core/mergeConfig.js","webpack:///./node_modules/axios/lib/cancel/Cancel.js","webpack:///./node_modules/autocomplete.js/src/autocomplete/event_bus.js","webpack:///./node_modules/autocomplete.js/src/autocomplete/html.js","webpack:///./node_modules/autocomplete.js/version.js","webpack:///./node_modules/autocomplete.js/src/common/parseAlgoliaClientVersion.js","webpack:///(webpack)/buildin/amd-options.js","webpack:///./node_modules/jshint/src/reg.js","webpack:///./node_modules/jshint/src/state.js","webpack:///./node_modules/util/util.js","webpack:///./node_modules/axios/index.js","webpack:///./node_modules/jshint/src/jshint.js","webpack:///./node_modules/local-time/app/assets/javascripts/local-time.js","webpack:///./node_modules/@rails/ujs/lib/assets/compiled/rails-ujs.js","webpack:///./node_modules/turbolinks/dist/turbolinks.js","webpack:///./node_modules/@rails/activestorage/app/assets/javascripts/activestorage.js","webpack:///./app/javascript/channels/index.js","webpack:///./app/javascript/channels sync _channel\\.js$","webpack:///./app/javascript/channels/manifest_channel.js","webpack:///./app/javascript/channels/step_channel.js","webpack:///./app/javascript/controllers sync _controller\\.js$","webpack:///./app/javascript/controllers/autocomplete_controller.js","webpack:///./node_modules/axios/lib/axios.js","webpack:///./node_modules/axios/lib/core/Axios.js","webpack:///./node_modules/axios/lib/core/InterceptorManager.js","webpack:///./node_modules/axios/lib/core/dispatchRequest.js","webpack:///./node_modules/axios/lib/core/transformData.js","webpack:///./node_modules/axios/lib/helpers/normalizeHeaderName.js","webpack:///./node_modules/axios/lib/core/settle.js","webpack:///./node_modules/axios/lib/core/enhanceError.js","webpack:///./node_modules/axios/lib/core/buildFullPath.js","webpack:///./node_modules/axios/lib/helpers/isAbsoluteURL.js","webpack:///./node_modules/axios/lib/helpers/combineURLs.js","webpack:///./node_modules/axios/lib/helpers/parseHeaders.js","webpack:///./node_modules/axios/lib/helpers/isURLSameOrigin.js","webpack:///./node_modules/axios/lib/helpers/cookies.js","webpack:///./node_modules/axios/lib/cancel/CancelToken.js","webpack:///./node_modules/axios/lib/helpers/spread.js","webpack:///./node_modules/autocomplete.js/src/standalone/index.js","webpack:///./node_modules/autocomplete.js/zepto.js","webpack:///./node_modules/autocomplete.js/src/autocomplete/typeahead.js","webpack:///./node_modules/autocomplete.js/src/autocomplete/input.js","webpack:///./node_modules/immediate/lib/index.js","webpack:///./node_modules/immediate/lib/queueMicrotask.js","webpack:///./node_modules/immediate/lib/mutation.js","webpack:///./node_modules/immediate/lib/messageChannel.js","webpack:///./node_modules/immediate/lib/stateChange.js","webpack:///./node_modules/immediate/lib/timeout.js","webpack:///./node_modules/autocomplete.js/src/autocomplete/dropdown.js","webpack:///./node_modules/autocomplete.js/src/autocomplete/dataset.js","webpack:///./node_modules/autocomplete.js/src/sources/index.js","webpack:///./node_modules/autocomplete.js/src/sources/hits.js","webpack:///./node_modules/autocomplete.js/src/sources/popularIn.js","webpack:///./node_modules/codemirror/mode/javascript/javascript.js","webpack:///./node_modules/codemirror/addon/lint/lint.js","webpack:///./node_modules/codemirror/addon/lint/javascript-lint.js","webpack:///./node_modules/jshint/src/vars.js","webpack:///./node_modules/jshint/src/messages.js","webpack:///./node_modules/jshint/src/lex.js","webpack:///./node_modules/jshint/src/name-stack.js","webpack:///./node_modules/jshint/data/ascii-identifier-data.js","webpack:///./node_modules/jshint/data/non-ascii-identifier-start.js","webpack:///./node_modules/jshint/data/non-ascii-identifier-part-only.js","webpack:///./node_modules/jshint/data/es5-identifier-names.js","webpack:///./node_modules/jshint/src/validate-unicode-escape-sequence.js","webpack:///./node_modules/jshint/src/style.js","webpack:///./node_modules/jshint/src/options.js","webpack:///./node_modules/jshint/src/scope-manager.js","webpack:///./node_modules/jshint/src/prod-params.js","webpack:///./node_modules/console-browserify/index.js","webpack:///./node_modules/util/support/isBufferBrowser.js","webpack:///./node_modules/util/node_modules/inherits/inherits_browser.js","webpack:///./node_modules/assert/assert.js","webpack:///./node_modules/object-assign/index.js","webpack:///./node_modules/date-now/index.js","webpack:///./app/javascript/controllers/index.js","webpack:///./node_modules/@stimulus/webpack-helpers/dist/index.js","webpack:///./app/javascript/packs/application.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","_typeof","obj","iterator","constructor","toString","isArray","val","isUndefined","isObject","isFunction","forEach","fn","length","isArrayBuffer","isBuffer","isFormData","FormData","isArrayBufferView","ArrayBuffer","isView","buffer","isString","isNumber","isDate","isFile","isBlob","isStream","pipe","isURLSearchParams","URLSearchParams","isStandardBrowserEnv","navigator","product","window","document","merge","result","assignValue","arguments","deepMerge","extend","a","b","thisArg","trim","str","replace","counter","DOM","escapeRegExp","each","map","mixin","isMsie","agentString","undefined","userAgent","test","match","escapeRegExChars","toStr","cloneDeep","clone","this","self","concat","error","msg","Error","every","any","found","getUniqueId","templatify","$template","element","prop","text","String","defer","setTimeout","noop","formatPrefix","prefix","noPrefix","className","clazz","skipDot","escapeHighlightedString","highlightPreTag","highlightPostTag","pre","createElement","appendChild","createTextNode","post","div","innerHTML","RegExp","factory","platform","gecko","ie_upto10","ie_11up","exec","edge","ie","ie_version","documentMode","webkit","qtwebkit","chrome","presto","safari","vendor","mac_geMountainLion","phantom","ios","maxTouchPoints","android","mobile","mac","chromeOS","windows","presto_version","Number","flipCtrlCmd","captureRightClick","classTest","cls","range","rmClass","node","current","after","slice","index","removeChildren","e","count","childNodes","removeChild","firstChild","removeChildrenAndAdd","parent","elt","tag","content","style","cssText","eltP","setAttribute","contains","child","nodeType","parentNode","host","activeElt","activeElement","body","shadowRoot","addClass","joinClasses","as","split","createRange","start","end","endNode","setEnd","setStart","createTextRange","moveToElementText","collapse","moveEnd","moveStart","selectInput","select","f","args","Array","apply","copyObj","target","overwrite","countColumn","string","tabSize","startIndex","startValue","search","nextTab","indexOf","selectionStart","selectionEnd","_e","Delayed","id","time","handler","onTimeout","array","Date","set","ms","clearTimeout","Pass","sel_dontScroll","scroll","sel_mouse","origin","sel_move","findColumn","goal","pos","col","skipped","Math","min","spaceStrs","spaceStr","push","lst","arr","out","nothing","createObj","base","props","inst","nonASCIISingleCaseWordChar","isWordCharBasic","ch","toUpperCase","toLowerCase","isWordChar","helper","source","isEmpty","extendingChars","isExtendingChar","charCodeAt","skipExtendingChars","dir","charAt","findFirst","pred","from","to","midF","mid","ceil","floor","bidiOther","getBidiPartAt","order","sticky","cur","bidiOrdering","bidiRE","isNeutral","isStrong","countsAsLeft","countsAsNum","BidiSpan","level","direction","outerType","code","len","types","i$1","prev","type","i$2","type$1","i$3","prev$1","type$2","i$4","type$3","j","i$5","cur$1","type$4","i$6","end$1","before","replace$1","j$1","i$7","at","isRTL","j$2","splice","nstart","unshift","reverse","getOrder","line","noHandlers","on","emitter","addEventListener","attachEvent","_handlers","getHandlers","off","removeEventListener","detachEvent","signal","handlers","signalDOMEvent","cm","override","preventDefault","defaultPrevented","e_defaultPrevented","codemirrorIgnore","signalCursorActivity","cursorActivity","curOp","cursorActivityHandlers","hasHandler","eventMixin","ctor","e_preventDefault","returnValue","e_stopPropagation","stopPropagation","cancelBubble","e_stop","e_target","srcElement","e_button","which","button","ctrlKey","zwspSupported","badBidiRects","dragAndDrop","zeroWidthElement","measure","offsetHeight","offsetWidth","hasBadBidiRects","txt","r0","getBoundingClientRect","r1","left","right","splitLinesAuto","nl","rt","hasSelection","getSelection","te","ownerDocument","selection","parentElement","compareEndPoints","hasCopyEvent","oncopy","badZoomedRects","modes","mimeModes","defineMode","dependencies","resolveMode","spec","getMode","options","mfactory","modeObj","modeExtensions","exts","helperType","modeProps","prop$1","extendMode","properties","copyState","state","nstate","innerMode","info","startState","a1","a2","StringStream","lineOracle","lastColumnPos","lastColumnValue","lineStart","getLine","doc","first","size","chunk","lines","children","sz","chunkSize","getBetween","iter","getLines","updateLineHeight","height","diff","lineNo","no","_lineAtHeight","h","outer","lh","isLine","lineNumberFor","lineNumberFormatter","firstLineNumber","Pos","cmp","equalCursorPos","copyPos","x","maxPos","minPos","clipLine","max","_clipPos","last","linelen","clipToLen","clipPosArray","eol","sol","peek","next","eat","eatWhile","eatSpace","skipToEnd","skipTo","backUp","column","indentation","pattern","consume","caseInsensitive","cased","substr","hideFirstChars","inner","lookAhead","oracle","baseToken","SavedContext","Context","maxLookAhead","baseTokens","baseTokenPos","highlightLine","context","forceToEnd","st","modeGen","lineClasses","runMode","loop","overlay","overlays","i_end","opaque","styles","classes","bgClass","textClass","getLineStyles","updateFrontier","getContextBefore","resetState","maxHighlightLength","stateAfter","save","styleClasses","highlightFrontier","modeFrontier","precise","display","minindent","minline","lim","indented","findStartLine","saved","fromSaved","processLine","viewFrom","viewTo","nextLine","startAt","stream","callBlankLine","readToken","blankLine","token","copy","Token","takeToken","asArray","tokens","extractLineClasses","output","lineClass","flattenSpans","curStart","curStyle","addModeClass","mName","sawReadOnlySpans","sawCollapsedSpans","MarkedSpan","marker","getMarkedSpanFor","spans","span","removeMarkedSpan","stretchSpansOverChange","change","full","oldFirst","markedSpans","oldLast","startCh","endCh","isInsert","old","nw","inclusiveLeft","insertLeft","endsAfter","inclusiveRight","markedSpansBefore","startsBefore","markedSpansAfter","sameLine","offset","span$1","clearEmptySpans","newMarkers","gapMarkers","gap","clearWhenEmpty","detachMarkedSpans","detachLine","attachMarkedSpans","attachLine","extraLeft","extraRight","compareCollapsedMarkers","lenDiff","aPos","find","bPos","fromCmp","toCmp","collapsedSpanAtSide","sps","sp","collapsed","collapsedSpanAtStart","collapsedSpanAtEnd","collapsedSpanAround","conflictingCollapsedRange","visualLine","merged","visualLineNo","lineN","vis","visualLineEndNo","lastLine","lineIsHidden","widgetNode","lineIsHiddenInner","_heightAtLine","lineObj","lineLength","found$1","findMaxLine","maxLine","maxLineLength","maxLineChanged","Line","estimateHeight","cleanUpLine","styleToClassCache","styleToClassCacheWithMode","interpretTokenStyle","cache","buildLineContent","lineView","builder","trailingSpace","splitSpaces","getOption","rest","addToken","buildToken","buildTokenBadBidi","insertLineContent","externalMeasured","maps","caches","lastChild","querySelector","defaultSpecialCharPlaceholder","title","startStyle","endStyle","css","attributes","displayText","trailingBefore","spaceBefore","special","specialChars","mustWrap","createDocumentFragment","lastIndex","txt$1","tabWidth","specialCharPlaceholder","fullStyle","attr","part","buildCollapsedSpan","ignoreWidget","widget","input","needsContentAttribute","setUneditable","allText","spanStyle","spanEndStyle","spanStartStyle","nextChange","Infinity","foundBookmarks","endStyles","upto","tokenText","LineView","visualLineContinued","hidden","buildViewArray","nextPos","view","operationGroup","orphanDelayedCallbacks","signalLater","list","delayedCallbacks","fireOrphanDelayed","delayed","updateLineForChanges","dims","changes","updateLineText","updateLineGutter","updateLineClasses","updateLineWidgets","ensureLineWrapped","replaceChild","zIndex","getLineContent","ext","built","background","wrap","insertBefore","updateLineBackground","wrapClass","gutter","gutterBackground","gutterClass","fixedGutter","fixedPos","gutterTotalWidth","markers","gutterMarkers","lineNumbers","wrap$1","gutterWrap","lineNumber","gutterLeft","lineNumInnerWidth","k","gutterSpecs","gutterWidth","alignable","isWidget","nextSibling","insertLineWidgets","buildLineElement","insertLineWidgetsFor","allowAbove","widgets","ws","handleMouseEvents","positionLineWidget","above","noHScroll","width","wrapperWidth","coverGutter","paddingLeft","position","marginLeft","widgetHeight","parentStyle","gutters","wrapper","clientWidth","eventInWidget","getAttribute","sizer","mover","paddingTop","lineSpace","offsetTop","paddingVert","paddingH","cachedPaddingH","getComputedStyle","currentStyle","data","parseInt","paddingRight","isNaN","scrollGap","nativeBarWidth","displayWidth","scroller","barWidth","displayHeight","clientHeight","barHeight","mapFromLineView","measureChar","bias","measureCharPrepared","prepareMeasureForLine","findViewForLine","findViewIndex","getDimensions","forceUpdate","lineMeasure","updateExternalMeasurement","rect","hasHeights","prepared","varHeight","wrapping","lineWrapping","curWidth","heights","rects","getClientRects","abs","bottom","top","ensureLineHeights","place","nodeAndOffsetInLineMap","coverStart","coverEnd","getUsefulRect","screen","logicalXDPI","deviceXDPI","normal","fromRange","hasBadZoomedRects","scaleX","scaleY","logicalYDPI","deviceYDPI","maybeUpdateRectForZooming","rSpan","charWidth","nullRect","rtop","rbot","bot","bogus","singleCursorHeightPerLine","rbottom","measureCharInner","measureText","mStart","mEnd","clearLineMeasurementCacheFor","clearLineMeasurementCache","externalMeasure","clearCaches","cachedCharWidth","cachedTextHeight","lineNumChars","pageScrollX","pageXOffset","documentElement","scrollLeft","pageScrollY","marginTop","pageYOffset","scrollTop","widgetTopHeight","intoCoordSystem","includeWidgets","yOff","viewOffset","lOff","xOff","fromCoordSystem","coords","localBox","lineSpaceBox","_charCoords","_cursorCoords","preparedMeasure","getBidi","partPos","invert","other","estimateCoords","PosWithInfo","outside","xRel","_coordsChar","y","coordsCharInner","rangeEnd","wrappedLineExtent","begin","wrappedLineExtentChar","boxIsAfter","box","ltr","coordsBidiPartWrapped","coordsBidiPart","baseX","chAround","boxAround","atLeft","atStart","_lineNo","ref","closestDist","endX","dist","textHeight","anchor","clientLeft","offsetLeft","compensateForHScroll","th","perLine","widgetsHeight","estimateLineHeights","est","estHeight","posFromMouse","liberal","forRect","space","clientX","clientY","e$1","colDiff","round","regChange","lendiff","updateLineNumbers","viewChanged","resetView","cut","viewCuttingPoint","cut$1","cutTop","cutBot","regLineChange","oldN","newN","countDirtyView","dirty","updateSelection","showSelection","prepareSelection","primary","curFragment","cursors","selFragment","customCursor","$customCursor","sel","ranges","primIndex","empty","head","drawSelectionCursor","showCursorWhenSelecting","drawSelectionRange","cursor","cursorHeight","getWrapperElement","charPos","defaultCharWidth","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","hasFocus","onBlur","ensureFocus","focus","onFocus","delayBlurEvent","delayingBlurEvent","draggingText","readOnly","selForContextMenu","reset","receivedFocus","shift","updateHeightsInViewport","prevBottom","lineDiv","viewTop","oldHeight","mustScroll","updateWidgetHeight","chWidth","w","visibleLines","viewport","ensure","ensureFrom","ensureTo","calculateScrollPos","snapMargin","screentop","docBottom","atTop","atBottom","newTop","gutterSpace","screenleft","screenw","tooWide","addToScrollTop","resolveScrollToPos","ensureCursorVisible","getCursor","scrollToPos","margin","cursorScrollMargin","scrollToCoords","scrollToCoordsRange","sPos","updateScrollTop","updateDisplaySimple","setScrollTop","startWorker","forceScroll","scrollHeight","scrollbars","setScrollLeft","isScroller","scrollWidth","alignHorizontally","measureForScrollbars","gutterW","docH","viewHeight","viewWidth","barLeft","docHeight","NativeScrollbars","vert","horiz","tabIndex","checkedZeroWidth","minHeight","minWidth","update","needsH","needsV","sWidth","totalHeight","totalWidth","zeroWidthHack","disableHoriz","enableZeroWidthBar","disableVert","pointerEvents","bar","delay","maybeDisable","elementFromPoint","clear","NullScrollbars","updateScrollbars","startWidth","startHeight","updateScrollbarsInner","sizes","paddingBottom","heightForcer","borderBottom","scrollbarFiller","coverGutterNextToScrollbar","gutterFiller","scrollbarModel","initScrollbars","scrollbarStyle","axis","nextOpId","_startOperation","op","updateInput","typing","changeObjs","cursorActivityCalled","selectionChanged","updateMaxLine","markArrays","ops","ownsGroup","_endOperation","endCb","group","callbacks","fireCallbacksForOps","finishOperation","endOperation_R1","endOperation_W1","endOperation_R2","endOperation_W2","endOperation_finish","endOperations","scrollbarsClipped","marginBottom","borderRightWidth","maybeClipScrollbars","mustUpdate","DisplayUpdate","updatedDisplay","updateDisplayIfNeeded","barMeasure","adjustWidthTo","maxScrollLeft","preparedSelection","takeFocus","setDocumentHeight","postUpdateDisplay","wheelStartX","wheelStartY","limit","changed","endCoords","scrollPos","startTop","startLeft","scrollPosIntoView","doScroll","innerHeight","scrollNode","scrollIntoView","maybeScrollWindow","maybeHiddenMarkers","unhidden","maybeUnhiddenMarkers","finish","runInOp","operation","methodOp","docMethodOp","highlight","highlightWorker","workTime","changedLines","oldStyles","highlighted","oldCls","newCls","ischange","workDelay","force","visible","editorIsHidden","wrapperHeight","oldDisplayWidth","events","renderedView","maybeUpdateLineNumberWidth","viewportMargin","different","lastWrapHeight","lastWrapWidth","adjustView","toUpdate","selSnapshot","active","anchorNode","anchorOffset","focusNode","focusOffset","selectionSnapshot","updateNumbersFrom","container","rm","currentWheelTarget","updateNumber","patchDisplay","snapshot","nodeName","removeAllRanges","addRange","restoreSelection","selectionDiv","reportedViewFrom","reportedViewTo","updateGutterSpace","alignWidgets","comp","align","innerW","lineGutter","lineNumWidth","getGutters","sawLineNumbers","renderGutters","specs","gElt","updateGutters","Display","draggable","wheelDX","wheelDY","activeTouch","init","wheelSamples","wheelPixelsPerUnit","wheelEventDelta","dx","wheelDeltaX","dy","wheelDeltaY","detail","HORIZONTAL_AXIS","VERTICAL_AXIS","wheelDelta","wheelEventPixels","delta","onScrollWheel","pixelsPerUnit","deltaMode","deltaX","deltaY","canScrollX","canScrollY","pixels","movedX","movedY","sample","Selection","equals","here","there","deepCopy","Range","somethingSelected","normalizeSelection","mayTouch","selectionsMayTouch","prim","sort","inv","simpleSelection","changeEnd","adjustForChange","computeSelAfterChange","offsetPos","loadMode","modeOption","resetModeState","isWholeLineUpdate","wholeLineUpdateBefore","updateDoc","spansFor","updateLine","linesFor","firstLine","lastText","lastSpans","nlines","insert","remove","added","added$1","added$2","linkedDocs","sharedHistOnly","propagate","skip","sharedHist","linked","rel","shared","attachDoc","setDirectionClass","History","done","undone","undoDepth","lastModTime","lastSelTime","lastOp","lastSelOp","lastOrigin","lastSelOrigin","generation","maxGeneration","historyChangeFromChange","histChange","attachLocalSpans","clearSelectionEvents","pop","addChangeToHistory","selAfter","opId","hist","history","historyEventDelay","lastChangeEvent","pushSelectionToHistory","addSelectionToHistory","selectionEventCanBeMerged","clearRedo","dest","existing","removeClearedSpans","explicitlyCleared","mergeOldSpans","getOldSpans","stretched","oldCur","stretchCur","copyHistoryArray","newGroup","instantiateSel","event","newChanges","extendRange","posBefore","extendSelection","setSelection","extendSelections","heads","replaceOneSelection","setSimpleSelection","setSelectionReplaceHistory","setSelectionNoUndo","NaN","filterSelectionChange","setSelectionInner","skipAtomicInSelection","reCheckSelection","mayClear","newAnchor","skipAtomic","newHead","skipAtomicInner","oldPos","preventCursorLeft","selectLeft","preventCursorRight","selectRight","atomic","near","movePos","far","cantEdit","selectAll","filterChange","canceled","cancel","makeChange","ignoreReadOnly","suppressEdits","mark","parts","mk","newParts","dfrom","dto","removeReadOnlyRanges","makeChangeInner","makeChangeSingleDoc","rebased","rebaseHist","makeChangeFromHistory","allowSelectionOnly","suppress","antiChanges","filter","returned","v","shiftDoc","distance","removed","recomputeMaxLength","checkWidthStart","retreatFrontier","changesHandler","changeHandler","makeChangeSingleDocInEditor","_replaceRange","assign","splitLines","rebaseHistSelSingle","rebaseHistArray","sub","ok","copied","changeLine","handle","changeType","LeafChunk","BranchChunk","removeInner","insertInner","iterN","remaining","leaf","maybeSpill","me","sibling","myIndex","used","LineWidget","opt","adjustScrollWhenAboveVisible","this$1","oldH","nextMarkerId","TextMarker","_markText","cloneNode","isParent","SharedTextMarker","markTextShared","replacedWith","addToHistory","curLine","inThisOp","WeakSet","has","addMarkedSpan","clearOnEnter","clearHistory","withOp","visual","dHeight","findSharedMarkers","findMarks","clipPos","detachSharedMarkers","subMarker","nextDocId","Doc","lineSep","cleanGeneration","getValue","join","lineSeparator","setValue","replaceRange","getRange","getLineHandle","getLineNumber","getLineHandleVisualStart","lineCount","listSelections","setCursor","extendSelectionsBy","setSelections","addSelection","getSelections","replaceSelection","dup","replaceSelections","newSel","hint","oldPrev","newPrev","computeReplacedSel","undo","redo","undoSelection","redoSelection","setExtending","getExtending","historySize","markClean","changeGeneration","forceSplit","isClean","gen","getHistory","setHistory","histData","setGutterMarker","gutterID","clearGutter","lineInfo","addLineClass","where","removeLineClass","addLineWidget","insertAt","aboveVisible","removeLineWidget","markText","setBookmark","realOpts","findMarksAt","getAllMarks","posFromIndex","sepSize","indexFromPos","copyHistory","linkedDoc","mFrom","mTo","subMark","copySharedMarkers","unlinkDoc","CodeMirror","splitIds","iterLinkedDocs","getEditor","setDirection","eachLine","lastDrop","onDrop","clearDragCursor","files","dataTransfer","isReadOnly","FileReader","File","read","markAsReadAndPasteIfAllFilesAreRead","readTextFromFile","file","allowDropFileTypes","reader","onerror","onload","readAsText","text$1","getData","selected","dragCursor","forEachCodeMirror","getElementsByClassName","byClass","editors","globalsRegistered","ensureGlobalHandlers","resizeTimer","onResize","setSize","keyNames","fromCharCode","keyMap","normalizeKeyName","alt","ctrl","cmd","mod","normalizeKeyMap","keymap","keyname","keys","lookupKey","getKeyMap","fallthrough","isModifierKey","keyCode","addModifierNames","noShift","altKey","metaKey","shiftKey","keyName","altGraphKey","deleteNearSelection","compute","kill","toKill","replaced","moveCharLogically","moveLogically","endOfLine","visually","prep","targetTop","basic","pcDefault","emacsy","macDefault","commands","singleSelection","killLine","deleteLine","delLineLeft","delWrappedLineLeft","charCoords","coordsChar","delWrappedLineRight","rightPos","goDocStart","goDocEnd","goLineStart","goLineStartSmart","lineStartSmart","goLineEnd","visualLineEnd","lineEnd","goLineRight","cursorCoords","goLineLeft","goLineLeftSmart","goLineUp","moveV","goLineDown","goPageUp","goPageDown","goCharLeft","moveH","goCharRight","goColumnLeft","goColumnRight","goWordLeft","goGroupRight","goGroupLeft","goWordRight","delCharBefore","deleteH","delCharAfter","delWordBefore","delWordAfter","delGroupBefore","delGroupAfter","indentAuto","indentSelection","indentMore","indentLess","insertTab","insertSoftTab","spaces","defaultTab","execCommand","transposeChars","newlineAndIndent","sels","indentLine","openLine","toggleOverwrite","firstNonWS","inWS","doHandleBinding","bound","dropShift","ensurePolled","prevShift","stopSeq","dispatchKey","seq","keySeq","dispatchKeyInner","keyMaps","extraKeys","lookupKeyForEditor","handleKeyBinding","motion","lastStoppedKey","onKeyDown","getField","handled","up","showCrossHair","onKeyUp","onKeyPress","charCode","handleCharBinding","lastClick","lastDoubleClick","PastClick","onMouseDown","supportsTouch","clickInGutter","repeat","now","compare","clickRepeat","selectingText","handleMappedButton","contained","behavior","option","unit","addNew","moveOnDrag","configureMouse","dragDrop","moved","dragEnd","mouseMove","dragStart","preventScroll","e2","leftButtonStartDrag","ourRange","ourIndex","startSel","rangeForUnit","lastPos","extendTo","startCol","posCol","leftPos","oldRange","ranges$1","anchorLine","boundary","headIndex","usePart","bidiSimplify","editorSize","curCount","move","buttons","leftButtonSelect","leftButtonDown","onContextMenu","findWordAt","gutterEvent","prevent","mX","mY","touches","lineBox","g","contextMenuInGutter","themeChanged","theme","Init","defaults","optionHandlers","dragDropChanged","funcs","dragFunctions","toggle","enter","over","leave","drop","wrappingChanged","inputStyles","inputStyle","pasteIncoming","cutIncoming","autofocus","word","touchFinished","prevTouch","finishTouch","isMouseLikeTouchEvent","touch","radiusX","radiusY","farAway","pageX","pageY","frag","onDragOver","setData","effectAllowed","setDragImage","img","src","_top","onDragStart","inp","registerEventHandlers","finishInit","initHooks","textRendering","how","aggressive","indent","curSpace","curSpaceString","indentUnit","indentString","indentWithTabs","pos$1","defineInitHook","lastCopied","setLastCopied","newLastCopied","applyTextInput","inserted","deleted","recent","paste","textLines","multiPaste","pasteLinesPerSelection","lineWise","changeEvent","triggerElectric","handlePaste","pasted","clipboardData","disableInput","electricChars","smartIndent","getModeAt","electricInput","copyableRanges","lineRange","disableBrowserMagic","field","spellcheck","autocorrect","autocapitalize","hiddenTextarea","border","_findPosH","origDir","lineDir","moveOnce","boundToLine","astral","bidi","mv","getWrappedLineExtent","moveInStorageOrder","searchInVisualLine","getRes","res","nextCh","moveVisually","sawType","getHelper","hitSide","_findPosV","pageSize","moveAmount","ContentEditableInput","lastAnchorNode","lastAnchorOffset","lastFocusNode","lastFocusOffset","polling","composing","gracePeriod","readDOMTimeout","posToDOM","badPos","bad","domToPos","lineNode","locateNodeInLineView","textNode","topNode","nodeValue","curNode","textContent","previousSibling","dist$1","belongsToInput","onCopyCut","lineWiseCopyCut","clearData","kludge","hadFocus","showPrimarySelection","contentEditable","updateFromDOM","readFromDOMSoon","forceCompositionEnd","screenReaderLabelChanged","label","removeAttribute","showMultipleSelections","curAnchor","curFocus","rng","rangeCount","getRangeAt","startGracePeriod","rememberSelection","selectionInEditor","commonAncestorContainer","blur","pollSelection","pollInterval","poll","scan","isInGutter","triggerOnKeyDown","pollContent","fromIndex","fromNode","toNode","toIndex","newText","closing","extraLinebreak","recognizeMarker","close","addText","walk","cmText","markerID","isBlock","domTextBetween","oldText","cutFront","cutEnd","oldTop","maxCutFront","newBot","oldBot","maxCutEnd","chFrom","chTo","readOnlyChanged","resetPosition","TextareaInput","prevInput","pollingFast","createField","textarea","prepareCopyCut","fastPoll","dispatchEvent","Event","_display","moveInputWithCursor","headPos","wrapOff","lineOff","teTop","teLeft","drawn","contextMenuPending","slowPoll","missed","same","resetSelectionOnContextMenu","oldScrollY","oldCSS","oldWrapperCSS","wrapperBox","offsetParent","scrollY","scrollTo","rehide","detectingSelectAll","prepareSelectAllHack","mouseup","extval","disabled","deflt","notOnInit","defineOption","newBreaks","refresh","getInputField","detach","attach","integer","defineOptions","helpers","setOption","getDoc","addKeyMap","removeKeyMap","addOverlay","score","priority","insertSorted","modeSpec","removeOverlay","newRanges","getTokenAt","getLineTokens","getTokenTypeAt","getHelpers","help","_global","getStateAfter","lineAtHeight","heightAtLine","defaultTextHeight","getViewport","addWidget","vspace","hspace","triggerOnKeyPress","triggerOnKeyUp","triggerOnMouseDown","findPosH","amount","rtlMoveVisually","findPosV","goalColumn","goals","startChar","check","getScrollInfo","scrollToRange","interpret","startOperation","endOperation","swapDoc","phrase","phraseText","phrases","getScrollerElement","getGutterElement","registerHelper","registerGlobalHelper","predicate","addEditorMethods","dontDelegate","method","defineMIME","mime","defineExtension","func","defineDocExtension","fromTextArea","tabindex","placeholder","realSubmit","form","leaveSubmitMethodAlone","submit","wrappedSubmit","getTextArea","toTextArea","cmpPos","addLegacyProps","version","EventListener","eventTarget","eventName","unorderedBindings","Set","connect","disconnect","bindingConnected","binding","bindingDisconnected","delete","handleEvent","extendedEvent","stopImmediatePropagation_1","stopImmediatePropagation","immediatePropagationStopped","extendEvent","_i","_a","bindings","leftIndex","rightIndex","configurable","Dispatcher","application","eventListenerMaps","Map","started","eventListeners","eventListener","stop","values","reduce","listeners","fetchEventListenerForBinding","handleError","message","fetchEventListener","eventListenerMap","fetchEventListenerMapForEventTarget","createEventListener","descriptorPattern","parseEventTarget","eventTargetName","Action","descriptor","tagName","defaultEventNames","getDefaultEventNameForElement","identifier","methodName","forToken","descriptorString","matches","eventNameSuffix","Binding","action","willBeInvokedByEvent","invokeWithEvent","controller","Element","scope","containsElement","ElementObserver","delegate","_this","elements","mutationObserver","MutationObserver","mutations","processMutations","observe","childList","subtree","takeRecords","matchElementsInTree","removeElement","_b","_c","addElement","mutations_1","mutation","processMutation","processAttributeChange","attributeName","processRemovedNodes","removedNodes","processAddedNodes","addedNodes","elementAttributeChanged","matchElement","nodes","elementFromNode","processTree","elementIsActive","tree","processor","Node","ELEMENT_NODE","isConnected","elementMatched","elementUnmatched","AttributeObserver","elementObserver","hasAttribute","querySelectorAll","selector","elementMatchedAttribute","elementUnmatchedAttribute","elementAttributeValueChanged","fetch","del","prune","extendStatics","Multimap","valuesByKey","hasKey","hasValue","some","getValuesForKey","getKeysForValue","__extends","setPrototypeOf","__proto__","__","_super","IndexedMultimap","keysByValue","TokenListObserver","attributeObserver","tokensByElement","tokensMatched","readTokensForElement","refreshTokensForElement","unmatchedTokens","matchedTokens","tokensUnmatched","tokenMatched","tokenUnmatched","previousTokens","currentTokens","firstDifferingIndex","_","findIndex","tokensAreEqual","tokenString","parseTokenString","ValueListObserver","tokenListObserver","parseResultsByToken","WeakMap","valuesByTokenByElement","fetchParseResultForToken","fetchValuesByTokenForElement","elementMatchedValue","elementUnmatchedValue","parseResult","parseToken","valuesByToken","parseValueForToken","BindingObserver","bindingsByAction","valueListObserver","actionAttribute","disconnectAllActions","schema","connectAction","disconnectAction","controllerConstructor","bindingObserver","dispatcher","initialize","blessControllerConstructor","bless","extendWithReflect","Controller","_newTarget","Reflect","construct","Module","definition","blessDefinition","contextsByScope","connectedContexts","connectContextForScope","fetchContextForScope","disconnectContextForScope","DataMap","getFormattedKey","char","attributeValueContainsToken","TargetSet","targetName","targetNames","getSelectorForTargetNames","findElement","findAll","findAllElements","getSelectorForTargetName","targetDescriptor","targetAttribute","Scope","targets","tail","filterElements","closest","controllerSelector","controllerAttribute","ScopeObserver","scopesByIdentifierByElement","scopeReferenceCounts","scopesByIdentifier","fetchScopesByIdentifierForElement","referenceCount","scopeConnected","scopeDisconnected","Router","scopeObserver","modulesByIdentifier","contexts","loadDefinition","unloadIdentifier","connectModule","disconnectModule","getContextForElementAndIdentifier","defaultSchema","__awaiter","_arguments","P","generator","Promise","resolve","reject","fulfilled","step","rejected","then","__generator","sent","trys","verb","TypeError","Application","router","readyState","register","load","definitions","unload","identifiers","getControllerForElementAndIdentifier","console","defineTargetProperties","ancestors","getPrototypeOf","getAncestorsForConstructor","getOwnTargetNamesForConstructor","getTargetNamesForConstructor","capitalize","webpackPolyfill","deprecate","paths","Function","HAS_TEMPLATE_SUPPORT","HAS_RANGE_SUPPORT","toElement","template","createFragmentFromTemplate","selectNode","createContextualFragment","createFragmentFromRange","createFragmentFromWrap","compareNodeNames","fromEl","toEl","fromCodeStart","toCodeStart","fromNodeName","toNodeName","syncBooleanAttrProp","specialElHandlers","OPTION","parentName","selectedIndex","INPUT","TEXTAREA","newValue","oldValue","SELECT","optgroup","curChild","defaultGetNodeKey","morphdom","morphAttrs","toNodeHtml","getNodeKey","onBeforeNodeAdded","onNodeAdded","onBeforeElUpdated","onElUpdated","onBeforeNodeDiscarded","onNodeDiscarded","onBeforeElChildrenUpdated","childrenOnly","fromNodesLookup","keyedRemovalList","addKeyedRemoval","walkDiscardedChildNodes","skipKeyedNodes","removeNode","handleNodeAdded","el","unmatchedFromEl","morphEl","toElKey","curToNodeKey","curFromNodeKey","fromNextSibling","toNextSibling","matchingFromEl","curToNodeChild","curFromNodeChild","isSameNode","curFromNodeType","isCompatible","onBeforeNodeAddedResult","actualize","cleanupFromEl","specialElHandler","morphChildren","indexTree","namespaceURI","morphedNode","morphedNodeType","toNodeType","nextChild","moveChildren","createElementNS","elToRemove","morphdomFactory","attrName","attrNamespaceURI","attrValue","toNodeAttrs","localName","getAttributeNS","setAttributeNS","fromNodeAttrs","hasAttributeNS","removeAttributeNS","inputTags","mutableTags","textInputTypes","color","date","datetime","email","month","number","password","tel","url","week","focusElement","dispatch","bubbles","cancelable","evt","CustomEvent","jQuery","trigger","xpathToElement","xpath","evaluate","XPathResult","FIRST_ORDERED_NODE_TYPE","singleNodeValue","getClassNames","names","flat","processElements","callback","_slicedToArray","_arrayWithHoles","_s","_arr","_n","_d","err","_iterableToArrayLimit","_unsupportedIterableToArray","_nonIterableRest","_toConsumableArray","_arrayLikeToArray","_arrayWithoutHoles","_iterableToArray","_nonIterableSpread","minLen","arr2","shouldMorphCallbacks","isEqualNode","permanentAttributeName","permanent","ignore","attribute","didMorphCallbacks","shouldMorph","includes","didMorph","DOMOperations","append","html","focusSelector","insertAdjacentHTML","graft","innerHtml","insertAdjacentHtml","insertAdjacentText","morph","ordinal","outerHtml","outerHTML","prepend","addCssClass","_element$classList","classList","removeCssClass","_element$classList2","setDatasetProperty","dataset","setProperty","setStyle","setStyles","_i2","_Object$entries","entries","_ref2","clearStorage","storage","sessionStorage","localStorage","go","pushState","removeStorageItem","removeItem","replaceState","setCookie","cookie","setFocus","setStorageItem","setItem","consoleLog","log","notification","Notification","requestPermission","permission","playSound","canplaythrough","audio","play","operations","emitMissingElementWarnings","Audio","unlockAudio","catch","perform","performAsync","createConsumer","FUNC_ERROR_TEXT","HASH_UNDEFINED","PLACEHOLDER","WRAP_CURRY_RIGHT_FLAG","WRAP_PARTIAL_FLAG","WRAP_PARTIAL_RIGHT_FLAG","WRAP_ARY_FLAG","WRAP_REARG_FLAG","INFINITY","MAX_SAFE_INTEGER","NAN","MAX_ARRAY_LENGTH","wrapFlags","argsTag","arrayTag","boolTag","dateTag","errorTag","funcTag","genTag","mapTag","numberTag","objectTag","promiseTag","regexpTag","setTag","stringTag","symbolTag","weakMapTag","arrayBufferTag","dataViewTag","float32Tag","float64Tag","int8Tag","int16Tag","int32Tag","uint8Tag","uint8ClampedTag","uint16Tag","uint32Tag","reEmptyStringLeading","reEmptyStringMiddle","reEmptyStringTrailing","reEscapedHtml","reUnescapedHtml","reHasEscapedHtml","reHasUnescapedHtml","reEscape","reEvaluate","reInterpolate","reIsDeepProp","reIsPlainProp","rePropName","reRegExpChar","reHasRegExpChar","reTrimStart","reWhitespace","reWrapComment","reWrapDetails","reSplitDetails","reAsciiWord","reForbiddenIdentifierChars","reEscapeChar","reEsTemplate","reFlags","reIsBadHex","reIsBinary","reIsHostCtor","reIsOctal","reIsUint","reLatin","reNoMatch","reUnescapedString","rsComboRange","rsComboMarksRange","rsDingbatRange","rsLowerRange","rsUpperRange","rsVarRange","rsBreakRange","rsMathOpRange","rsApos","rsAstral","rsBreak","rsCombo","rsDigits","rsDingbat","rsLower","rsMisc","rsFitz","rsNonAstral","rsRegional","rsSurrPair","rsUpper","rsMiscLower","rsMiscUpper","rsOptContrLower","rsOptContrUpper","reOptMod","rsOptVar","rsSeq","rsEmoji","rsSymbol","reApos","reComboMark","reUnicode","reUnicodeWord","reHasUnicode","reHasUnicodeWord","contextProps","templateCounter","typedArrayTags","cloneableTags","stringEscapes","freeParseFloat","parseFloat","freeParseInt","freeGlobal","global","freeSelf","root","freeExports","freeModule","moduleExports","freeProcess","process","nodeUtil","require","nodeIsArrayBuffer","nodeIsDate","nodeIsMap","isMap","nodeIsRegExp","isRegExp","nodeIsSet","isSet","nodeIsTypedArray","isTypedArray","arrayAggregator","setter","iteratee","accumulator","arrayEach","arrayEachRight","arrayEvery","arrayFilter","resIndex","arrayIncludes","baseIndexOf","arrayIncludesWith","comparator","arrayMap","arrayPush","arrayReduce","initAccum","arrayReduceRight","arraySome","asciiSize","baseProperty","baseFindKey","collection","eachFunc","baseFindIndex","fromRight","strictIndexOf","baseIsNaN","baseIndexOfWith","baseMean","baseSum","basePropertyOf","baseReduce","baseTimes","baseTrim","trimmedEndIndex","baseUnary","baseValues","cacheHas","charsStartIndex","strSymbols","chrSymbols","charsEndIndex","countHolders","deburrLetter","escapeHtmlChar","escapeStringChar","chr","hasUnicode","mapToArray","overArg","transform","arg","replaceHolders","setToArray","setToPairs","stringSize","unicodeSize","stringToArray","unicodeToArray","asciiToArray","unescapeHtmlChar","runInContext","uid","pick","arrayProto","funcProto","objectProto","coreJsData","funcToString","idCounter","maskSrcKey","IE_PROTO","nativeObjectToString","objectCtorString","oldDash","reIsNative","Buffer","_Symbol","Uint8Array","allocUnsafe","getPrototype","objectCreate","propertyIsEnumerable","spreadableSymbol","isConcatSpreadable","symIterator","symToStringTag","getNative","ctxClearTimeout","ctxNow","ctxSetTimeout","nativeCeil","nativeFloor","nativeGetSymbols","getOwnPropertySymbols","nativeIsBuffer","nativeIsFinite","isFinite","nativeJoin","nativeKeys","nativeMax","nativeMin","nativeNow","nativeParseInt","nativeRandom","random","nativeReverse","DataView","nativeCreate","metaMap","realNames","dataViewCtorString","toSource","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","symbolProto","symbolValueOf","valueOf","symbolToString","lodash","isObjectLike","LazyWrapper","LodashWrapper","wrapperClone","baseCreate","proto","baseLodash","chainAll","__wrapped__","__actions__","__chain__","__index__","__values__","__dir__","__filtered__","__iteratees__","__takeCount__","__views__","Hash","entry","ListCache","MapCache","SetCache","__data__","Stack","arrayLikeKeys","inherited","isArr","isArg","isArguments","isBuff","isType","skipIndexes","isIndex","arraySample","baseRandom","arraySampleSize","shuffleSelf","copyArray","baseClamp","arrayShuffle","assignMergeValue","eq","baseAssignValue","objValue","assocIndexOf","baseAggregator","baseEach","baseAssign","copyObject","baseAt","lower","upper","baseClone","bitmask","customizer","stack","isDeep","isFlat","isFull","initCloneArray","getTag","isFunc","cloneBuffer","initCloneObject","getSymbolsIn","copySymbolsIn","keysIn","baseAssignIn","getSymbols","copySymbols","Ctor","cloneArrayBuffer","dataView","byteOffset","byteLength","cloneDataView","cloneTypedArray","regexp","cloneRegExp","symbol","initCloneByTag","stacked","subValue","getAllKeysIn","getAllKeys","baseConformsTo","baseDelay","wait","baseDifference","isCommon","valuesLength","computed","valuesIndex","templateSettings","getMapData","pairs","LARGE_ARRAY_SIZE","createBaseEach","baseForOwn","baseEachRight","baseForOwnRight","baseEvery","baseExtremum","isSymbol","baseFilter","baseFlatten","depth","isStrict","isFlattenable","baseFor","createBaseFor","baseForRight","baseFunctions","baseGet","path","castPath","toKey","baseGetAllKeys","keysFunc","symbolsFunc","baseGetTag","isOwn","unmasked","getRawTag","objectToString","baseGt","baseHas","baseHasIn","baseIntersection","arrays","othLength","othIndex","maxLength","seen","baseInvoke","baseIsArguments","baseIsEqual","equalFunc","objIsArr","othIsArr","objTag","othTag","objIsObj","othIsObj","isSameTag","equalArrays","convert","isPartial","equalByTag","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","objProps","objLength","objStacked","othStacked","skipCtor","othValue","compared","objCtor","othCtor","equalObjects","baseIsEqualDeep","baseIsMatch","matchData","noCustomizer","srcValue","COMPARE_PARTIAL_FLAG","baseIsNative","baseIteratee","identity","baseMatchesProperty","baseMatches","baseKeys","isPrototype","baseKeysIn","nativeKeysIn","isProto","baseLt","baseMap","isArrayLike","getMatchData","matchesStrictComparable","isKey","isStrictComparable","hasIn","baseMerge","srcIndex","mergeFunc","safeGet","isTyped","isArrayLikeObject","isPlainObject","toPlainObject","baseMergeDeep","baseNth","baseOrderBy","iteratees","orders","getIteratee","criteria","comparer","baseSortBy","objCriteria","othCriteria","ordersLength","compareAscending","compareMultiple","basePickBy","baseSet","basePullAll","basePullAt","indexes","previous","baseUnset","baseRepeat","baseRest","setToString","overRest","baseSample","baseSampleSize","nested","baseSetData","baseSetToString","constant","baseShuffle","baseSlice","baseSome","baseSortedIndex","retHighest","low","high","baseSortedIndexBy","valIsNaN","valIsNull","valIsSymbol","valIsUndefined","othIsDefined","othIsNull","othIsReflexive","othIsSymbol","setLow","baseSortedUniq","baseToNumber","baseToString","baseUniq","createSet","seenIndex","baseUpdate","updater","baseWhile","isDrop","baseWrapperValue","actions","baseXor","baseZipObject","assignFunc","valsLength","castArrayLikeObject","castFunction","stringToPath","castRest","castSlice","arrayBuffer","typedArray","valIsDefined","valIsReflexive","composeArgs","partials","holders","isCurried","argsIndex","argsLength","holdersLength","leftLength","rangeLength","isUncurried","composeArgsRight","holdersIndex","rightLength","isNew","createAggregator","initializer","createAssigner","assigner","sources","guard","isIterateeCall","iterable","createCaseFirst","trailing","createCompounder","words","deburr","createCtor","thisBinding","createFind","findIndexFunc","createFlow","flatRest","prereq","thru","getFuncName","funcName","isLaziable","plant","createHybrid","partialsRight","holdersRight","argPos","ary","arity","isAry","isBind","isBindKey","isFlip","getHolder","holdersCount","newHolders","createRecurry","reorder","createInverter","toIteratee","baseInverter","createMathOperation","operator","defaultValue","createOver","arrayFunc","createPadding","chars","charsLength","toFinite","baseRange","createRelationalOperation","toNumber","wrapFunc","isCurry","newData","setWrapToString","createRound","precision","toInteger","pair","createToPairs","baseToPairs","createWrap","srcBitmask","newBitmask","isCombo","mergeData","createCurry","createPartial","createBind","customDefaultsAssignIn","customDefaultsMerge","customOmitClone","arrLength","arrStacked","arrValue","flatten","otherFunc","stubArray","hasPath","hasFunc","isLength","ctorString","isMaskable","stubFalse","otherArgs","oldArray","shortOut","reference","details","insertWrapDetails","updateWrapDetails","getWrapDetails","lastCalled","stamp","rand","memoize","memoizeCapped","quote","subString","difference","differenceBy","differenceWith","findLastIndex","intersection","mapped","intersectionBy","intersectionWith","pull","pullAll","pullAt","union","unionBy","unionWith","unzip","unzipWith","without","xor","xorBy","xorWith","zip","zipWith","chain","interceptor","wrapperAt","countBy","findLast","forEachRight","groupBy","invokeMap","keyBy","partition","sortBy","bindKey","WRAP_BIND_FLAG","debounce","lastArgs","lastThis","maxWait","timerId","lastCallTime","lastInvokeTime","leading","maxing","invokeFunc","leadingEdge","timerExpired","shouldInvoke","timeSinceLastCall","trailingEdge","timeWaiting","remainingWait","debounced","isInvoking","flush","resolver","memoized","Cache","negate","overArgs","transforms","funcsLength","partial","partialRight","rearg","gt","gte","isError","isInteger","lt","lte","toArray","iteratorToArray","remainder","toLength","isBinary","assignIn","assignInWith","assignWith","propsIndex","propsLength","defaultsDeep","mergeWith","invertBy","invoke","omit","CLONE_DEEP_FLAG","basePick","pickBy","toPairs","toPairsIn","camelCase","upperFirst","kebabCase","lowerCase","lowerFirst","snakeCase","startCase","upperCase","hasUnicodeWord","unicodeWords","asciiWords","attempt","bindAll","methodNames","flow","flowRight","methodOf","overEvery","overSome","basePropertyDeep","rangeRight","augend","addend","divide","dividend","divisor","multiply","multiplier","multiplicand","subtract","minuend","subtrahend","castArray","compact","cond","conforms","baseConforms","curry","curryRight","dropRight","dropRightWhile","dropWhile","fill","baseFill","flatMap","flatMapDeep","flatMapDepth","flattenDeep","flattenDepth","flip","fromPairs","functions","functionsIn","initial","mapKeys","mapValues","matchesProperty","nthArg","omitBy","once","orderBy","propertyOf","pullAllBy","pullAllWith","sampleSize","setWith","shuffle","sortedUniq","sortedUniqBy","separator","spread","take","takeRight","takeRightWhile","takeWhile","tap","throttle","toPath","isArrLike","unary","uniq","uniqBy","uniqWith","unset","updateWith","valuesIn","zipObject","zipObjectDeep","entriesIn","extendWith","clamp","cloneDeepWith","cloneWith","conformsTo","defaultTo","endsWith","escape","findKey","findLastKey","forIn","forInRight","forOwn","forOwnRight","inRange","baseInRange","isBoolean","isElement","isEqual","isEqualWith","isMatch","isMatchWith","isNative","isNil","isNull","isSafeInteger","isWeakMap","isWeakSet","lastIndexOf","strictLastIndexOf","maxBy","mean","meanBy","minBy","stubObject","stubString","stubTrue","nth","noConflict","pad","strLength","padEnd","padStart","radix","floating","temp","reduceRight","sortedIndex","sortedIndexBy","sortedIndexOf","sortedLastIndex","sortedLastIndexBy","sortedLastIndexOf","startsWith","sum","sumBy","settings","isEscaping","isEvaluating","imports","importsKeys","importsValues","interpolate","reDelimiters","sourceURL","escapeValue","interpolateValue","esTemplateValue","evaluateValue","variable","times","toLower","toSafeInteger","toUpper","trimEnd","trimStart","truncate","omission","substring","newEnd","unescape","uniqueId","eachRight","VERSION","isFilter","takeName","dropName","checkIteratee","isTaker","lodashFunc","retUnwrapped","isLazy","useLazy","isHybrid","isUnwrapped","onlyLazy","chainName","isRight","getView","iterLength","takeCount","iterIndex","commit","wrapped","toJSON","_typeof2","adapters","logger","WebSocket","enabled","_adapters$logger","_len","messages","_key","classCallCheck","instance","Constructor","createClass","defineProperties","writable","protoProps","staticProps","getTime","secondsSince","ConnectionMonitor","connection","visibilityDidChange","reconnectAttempts","isRunning","startedAt","stoppedAt","startPolling","getPollInterval","stopPolling","recordPing","pingedAt","recordConnect","disconnectedAt","recordDisconnect","pollTimeout","reconnectIfStale","_constructor$pollInte","interval","connectionIsStale","staleThreshold","disconnectedRecently","reopen","_this2","visibilityState","isOpen","INTERNAL","message_types","welcome","ping","confirmation","rejection","disconnect_reasons","unauthorized","invalid_request","server_restart","default_mount_path","protocols","supportedProtocols","Connection","consumer","open","subscriptions","monitor","disconnected","send","webSocket","JSON","stringify","isActive","getState","uninstallEventHandlers","installEventHandlers","_ref","allowReconnect","reopenDelay","getProtocol","protocol","isState","isProtocolSupported","states","_JSON$parse","parse","reason","reconnect","reload","confirmSubscription","notify","notifyAll","willAttemptReconnect","Subscription","params","command","unsubscribe","SubscriptionGuarantor","pendingSubscriptions","guarantee","subscription","startGuaranteeing","forget","stopGuaranteeing","retrySubscribing","retryTimeout","subscribe","Subscriptions","guarantor","channelName","channel","ensureActiveConnection","sendCommand","callbackName","_this3","_len2","_key2","_this4","Consumer","_url","createWebSocketURL","href","getConfig","reflexAttribute","reflexPermanentAttribute","reflexRootAttribute","reflexDatasetAttribute","isConsumer","findConsumer","getConsumer","uuidv4","crypto","msCrypto","getRandomValues","serializeForm","formData","encodeURIComponent","submitButton","camelize","uppercaseFirstLetter","$1","emitEvent","elementToXPath","ix","siblings","computedPath","ixInc","XPathToElement","debugging","debug","stage","reflexElement","controllerElement","reflexId","reflexData","reflexController","reflex","reflexMethodName","specificLifecycleMethod","genericLifecycleMethod","reflexError","reflexes","finalStage","deleteProperty","warned","warn","ownKeys","enumerableOnly","symbols","sym","getOwnPropertyDescriptor","_objectSpread","_defineProperty","getOwnPropertyDescriptors","attributeValue","attributeValues","extractElementAttributes","attrs","memo","checked","tag_name","multipleInstances","collectedOptions","elem","collectCheckedOptions","extractElementDataset","datasetAttribute","extractDataAttributes","app","StimulusReflex","request","timestamp","success","_ref3","stimulusReflex","serverMessage","progress","totalOperations","completedOperations","duration","halted","subject","_ref5","payload","_defineProperties","_classCallCheck","_setPrototypeOf","_createSuper","Derived","hasNativeReflectConstruct","sham","Proxy","Boolean","_isNativeReflectConstruct","Super","_getPrototypeOf","NewTarget","_possibleConstructorReturn","_assertThisInitialized","ReferenceError","stimulusApplication","actionCableConsumer","actionCableParams","isolationMode","NOOP","actionCableSubscriptionActive","received","cableReady","reflexOperations","urls","location","xpathController","xpathElement","pendingOperations","connected","isActionCableConnectionOpen","stimulate","validity","badInput","opts","selectors","getReflexRoots","resolveLate","promise","__perform","StimulusReflexController","_Controller","subClass","superClass","_inherits","setupDeclarativeReflexes","timeoutId","controllers","reflexAttributeNames","reflexName","allReflexControllers","controllerValue","actionValue","reflexString","reflexRoot","stimulusReflexInitialized","_ref4","initializeOptions","isolate","immediate","splitter","cb","bindContext","_callbacks","sync","async","getFlush","cancelled","onSync","onAsync","syncFlush","asyncFlush","borderColor","boxShadow","opacity","verticalAlign","backgroundColor","inputWithNoHint","dropdown","suggestions","suggestion","whiteSpace","suggestionChild","rtl","defaultClasses","dropdownMenu","appendTo","backgroundImage","ReflectOwnKeys","R","ReflectApply","receiver","getOwnPropertyNames","NumberIsNaN","EventEmitter","errorListener","removeListener","eventTargetAgnosticAddListener","flags","addErrorHandlerIfEventEmitter","_events","_eventsCount","_maxListeners","defaultMaxListeners","checkListener","listener","_getMaxListeners","that","_addListener","warning","newListener","emit","onceWrapper","fired","wrapFn","_onceWrap","_listeners","unwrap","evlistener","ret","unwrapListeners","arrayClone","listenerCount","wrapListener","RangeError","setMaxListeners","getMaxListeners","doError","er","addListener","prependListener","prependOnceListener","originalListener","spliceOne","removeAllListeners","rawListeners","eventNames","utils","encode","paramsSerializer","serializedParams","toISOString","hashmarkIndex","__CANCEL__","normalizeHeaderName","DEFAULT_CONTENT_TYPE","setContentTypeIfUnset","headers","adapter","XMLHttpRequest","transformRequest","transformResponse","timeout","xsrfCookieName","xsrfHeaderName","maxContentLength","validateStatus","status","common","cachedSetTimeout","cachedClearTimeout","defaultSetTimout","defaultClearTimeout","runTimeout","fun","currentQueue","queue","draining","queueIndex","cleanUpNextTick","drainQueue","run","runClearTimeout","Item","nextTick","browser","env","argv","versions","cwd","chdir","umask","settle","buildURL","buildFullPath","parseHeaders","isURLSameOrigin","createError","config","requestData","requestHeaders","auth","username","Authorization","btoa","fullPath","baseURL","onreadystatechange","responseURL","responseHeaders","getAllResponseHeaders","response","responseType","responseText","statusText","onabort","ontimeout","timeoutErrorMessage","cookies","xsrfValue","withCredentials","setRequestHeader","onDownloadProgress","onUploadProgress","upload","cancelToken","abort","enhanceError","config1","config2","valueFromConfig2Keys","mergeDeepPropertiesKeys","defaultToConfig2Keys","axiosKeys","otherKeys","Cancel","EventBus","$el","agent","parsed","__webpack_amd_options__","unsafeString","needEsc","needEscGlobal","starSlash","javascriptURL","fallsThrough","maxlenException","whitespace","nonzeroDigit","decimalDigit","regexpSyntaxChars","regexpQuantifiers","regexpControlEscapes","regexpCharClasses","regexpDot","NameStack","syntax","directive","inClassBody","strict","stmtMissingStrict","globalstrict","allowsGlobalUsd","impliedClosure","browserify","inMoz","moz","inES11","esVersion","inES10","inES9","inES8","inES7","inES6","inES5","inferEsVersion","badOpt","esversion","es3","es5","esnext","curr","unstable","funct","ignored","jsonMode","tab","ignoredLines","forinifcheckneeded","nameStack","descriptors","formatRegExp","format","objects","inspect","noDeprecation","throwDeprecation","traceDeprecation","trace","debugEnviron","debugs","ctx","stylize","stylizeNoColor","colors","showHidden","_extend","customInspect","stylizeWithColor","formatValue","styleType","recurseTimes","primitive","simple","formatPrimitive","visibleKeys","hash","idx","arrayToHash","formatError","braces","toUTCString","formatProperty","formatArray","numLinesEst","reduceToSingleString","desc","ar","re","debuglog","NODE_DEBUG","pid","isNullOrUndefined","isPrimitive","months","getHours","getMinutes","getSeconds","getDate","getMonth","inherits","kCustomPromisifiedSymbol","callbackifyOnRejected","newReason","promisify","original","promiseResolve","promiseReject","custom","callbackify","callbackified","maybeCb","rej","vars","Lexer","reg","scopeManager","prodParams","JSHINT","api","declared","inblock","lookahead","lex","member","membersOnly","predefined","bang","extraModules","checkOption","isStable","validNames","unstableNames","isIdentifier","tkn","isReserved","reserved","meta","isFutureReservedWord","isProperty","strictOnly","yield","supplant","combine","blacklist","applyOptions","badESOpt","enforceall","enforceopt","bool","enforcing","noenforceall","relaxopt","relaxing","processenforceall","quit","ecmaIdentifiers","regexpu","couch","qunit","rhino","shelljs","typed","prototypejs","devel","dojo","nonstandard","jasmine","jquery","mootools","worker","wsh","yui","mocha","percentage","errors","exception","character","raw","removeIgnoredMessages","warnings","evidence","maxerr","warningAt","errorAt","addEvalCode","internals","lintingDirective","directiveToken","predef","item","addExported","ch1","numvals","numberVal","validthis","hasParsedCode","tn","renamed","inverted","latedef","unused","shadow","quotmark","caseFallsThrough","peekIgnoreEOL","advance","expected","relatedToken","nextToken","isSpecial","isEndOfExpr","noin","infix","rbp","expression","beginsStmt","fud","useFud","nud","lbp","led","second","startLine","nobreaknonadjacent","laxbreak","nolinebreak","checkComma","laxcomma","allowTrailing","delim","stmt","blockstmt","block","reserveName","plusplus","checkLeftSideAssign","reserve","FutureReservedWord","relation","beginsUnaryExpression","typeofValues","isTypoTypeof","notypeof","es6","isGlobalEval","isGlobal","assignToken","allowDestructuring","freeze","nativeObject","natives","walkPrototype","isPredefined","walkNative","findNativePrototype","isMetaProperty","reassign","destructAssign","bindingtype","assignop","exps","bitwise","bitwiseassignop","suffix","optionalidentifier","isName","preserve","spreadrest","checkPunctuator","reachable","controlToken","inBracelessBlock","reach","parseFinalSemicolon","isUnclosed","isSameLine","blockEnd","asi","lastsemic","statement","hasOwnScope","addLabel","labelled","unstack","expr","nonew","statements","directives","undef","ordinary","isfunc","isfatarrow","iscase","old_indent","metrics","nestedBlockDepth","verifyMaxNestedBlockDepthPerFunction","statementCount","validateParams","curly","supportsFnDecl","declaration","noreturnawait","noempty","countMember","legacy","isLoneArrowParam","use","baseTemplateSyntax","doTemplateLiteral","noSubst","superNud","nocomma","increaseComplexityCount","paren","eqnull","eqeqeq","scripturl","forgiveUndef","mp","metaProperty","inFunction","opening","evil","newcap","supernew","classDeclaration","classNameToken","addbinding","initialized","classBody","classToken","accessorType","isStatic","inGenerator","hasConstructor","preAsync","saveProperty","propertyName","doMethod","infer","computedPropertyName","saveAccessor","checkProperties","doFunction","isMethod","peekThroughParens","parens","pn1","pn","functor","overwrites","createMetrics","leftOrRbp","complete","classExprBinding","isGenerator","isArrow","ignoreLoopFunc","oldOption","oldIgnored","isAsync","tryClause","internallyAccessibleName","paramsInfo","ident","paramsIds","pastDefault","pastRest","loneArg","hasDestructuring","addParam","isSimple","parsedOpening","currentParams","destructuringPattern","checkPunctuators","addParamArgs","functionparams","verifyMaxParametersPerFunction","noyield","verifyMaxStatementsPerFunction","verifyMaxComplexityPerFunction","loopfunc","functionStartToken","ComplexityCount","maxstatements","maxparams","maxdepth","maxcomplexity","cc","checkCondAssignment","boss","setterToken","getterToken","static","isAssignment","assignment","destructuringPatternRecursive","ids","openingParsed","recursiveOptions","firstToken","nextInnerDE","assignTarget","assignmentProperty","isRest","element_after_rest","destructuringPatternMatch","blockVariableStatement","lone","letblock","isLet","isConst","isMozillaLet","hasInitializer","hasComma","noarg","immed","triggerFnExpr","preceeding","isNecessary","singleGroups","blocktype","lookupBlockType","isCompArray","reversed","setState","comprehensiveArrayExpression","isDestAssign","elision","trailingcomma","nextVal","isGeneratorMethod","isAsyncMethod","inObjectBody","conststatement","asyncSymbol","yieldSymbol","letstatement","varstmt","futurehostile","inexport","export","labelType","enablesStrictMode","forinifcheck","forin","forinifchecks","hasParameter","catchParameter","withstmt","noindent","seenCase","leanswitch","nextop","comma","bindingPower","decl","letscope","foreachtok","afterNext","headContext","hasLabel","mozYield","delegatingYield","importSymbol","importName","supportsSuper","moduleSpecifier","setExported","def","exportType","exportedTokens","local","bracketStack","notJson","isClass","isComputed","basictkn","flagName","destructuringAssignOrJsonValue","jsonValue","arrayComprehension","_current","CompArray","variables","_carrays","raw_text","declare","jsonObject","jsonArray","lintEvalCode","globals","priorErrorCount","jdx","internal","itself","escapeRegex","reIgnoreStr","reIgnore","optionKeys","newOptionObj","newIgnoredObj","reservedVars","exported","dict","optionKey","scopeManagerInst","ev","isJSON","getCache","setCache","ignoreDelimiters","delimiterPair","nt","addModule","fu","json","impliedGlobals","getImpliedGlobals","implieds","getUsedOrDefinedGlobals","param","lastcharacter","complexity","parameters","unuseds","getUnuseds","jshint","LocalTime","getController","processElement","i18n","en","dayNames","abbrDayNames","monthNames","abbrMonthNames","yesterday","today","tomorrow","formats","thisYear","am","pm","singular","singularAn","elapsed","seconds","minute","minutes","hour","hours","locale","defaultLocale","timerInterval","parseDate","u","elementMatchesSelector","matchesSelector","webkitMatchesSelector","mozMatchesSelector","msMatchesSelector","getI18nValue","translate","strftime","getDay","getFullYear","CalendarDate","UTC","setUTCDate","year","getUTCFullYear","getUTCMonth","day","getUTCDate","fromDate","is","isToday","occursOnSameYearAs","occursThisYear","daysSince","daysPassed","RelativeTime","calendarDate","toTimeElapsedString","toWeekdayString","toTimeString","toDateString","toTimeOrDateString","PageObserver","processInsertion","observeWithMutationObserver","observeWithMutationEvent","findSignificantElements","pageObserver","startTimer","timer","requestAnimationFrame","Rails","linkClickSelector","buttonClickSelector","exclude","inputChangeSelector","formSubmitSelector","formInputClickSelector","formDisableSelector","formEnableSelector","fileInputSelector","linkDisableSelector","buttonDisableSelector","nonce","loadCSPNonce","cspNonce","oMatchesSelector","$","csrfParam","csrfToken","CSRFProtection","xhr","refreshCSRFTokens","fire","createEvent","initCustomEvent","stopEverything","eventType","AcceptHeaders","createXHR","prepareOptions","processResponse","xml","script","ajax","getResponseHeader","beforeSend","OPENED","dataType","accept","crossDomain","DONE","parser","DOMParser","parseFromString","isCrossDomain","originAnchor","urlAnchor","serializeElement","additionalParam","inputs","formElements","allowAction","handleConfirm","confirm","answer","disableFormElement","disableFormElements","disableLinkElement","enableFormElement","enableFormElements","enableLinkElement","isXhrRedirect","handleDisabledElement","enableElement","disableElement","replacement","originalText","handleMethod","formContent","link","click","isRemote","handleRemote","enctype","formSubmitButtonClick","formNoValidate","preventInsignificantClick","insignificantMetaClick","rails","ajaxPrefilter","originalOptions","_rails_loaded","Turbolinks","supported","visit","clearCache","setProgressBarDelay","initEvent","uuid","Location","absoluteURL","requestURL","getOrigin","getPath","getPathComponents","getLastPathComponent","getExtension","isHTML","isPrefixedBy","isEqualTo","toCacheKey","_t","HttpRequest","requestCanceled","requestTimedOut","requestFailed","requestLoaded","requestProgressed","referrer","NETWORK_FAILURE","TIMEOUT_FAILURE","notifyApplicationBeforeRequestStart","setProgress","requestStarted","lengthComputable","loaded","total","endRequest","requestCompletedWithResponse","failed","requestFailedWithStatusCode","notifyApplicationAfterRequestEnd","onprogress","destroy","requestFinished","ProgressBar","trickle","_t2","stylesheetElement","createStylesheetElement","progressElement","createProgressElement","defaultCSS","show","installStylesheetElement","installProgressElement","startTrickling","hide","hiding","fadeProgressElement","uninstallProgressElement","stopTrickling","trickleInterval","BrowserAdapter","showProgressBar","_t3","progressBar","visitProposedToLocationWithAction","startVisitToLocationWithAction","visitStarted","issueRequest","changeHistory","loadCachedSnapshot","visitRequestStarted","hasCachedSnapshot","showProgressBarAfterDelay","visitRequestProgressed","visitRequestCompleted","loadResponse","visitRequestFailedWithStatusCode","visitRequestFinished","hideProgressBar","visitCompleted","followRedirect","pageInvalidated","progressBarTimeout","progressBarDelay","_t4","onPageLoad","onPopState","shouldHandlePopState","turbolinks","restorationIdentifier","historyPoppedToLocationWithRestorationIdentifier","pageLoaded","pageIsLoaded","HeadDetails","tracked","fromHeadElement","hasElementWithKey","getTrackedElementSignature","getScriptElementsNotInDetails","getElementsMatchingTypeNotInDetails","getStylesheetElementsNotInDetails","getProvisionalElements","getMetaValue","findMetaElementByName","Snapshot","headDetails","bodyElement","fromHTMLString","fromHTMLElement","getRootLocation","getSetting","getCacheControlValue","getElementForAnchor","getPermanentElements","getPermanentElementById","getPermanentElementsPresentInSnapshot","findFirstAutofocusableElement","hasAnchor","isPreviewable","isCacheable","isVisitable","Renderer","render","renderView","viewWillRender","newBody","viewRendered","invalidateView","viewInvalidated","createScriptElement","__super__","SnapshotRenderer","currentSnapshot","newSnapshot","isPreview","currentHeadDetails","newHeadDetails","currentBody","shouldRender","mergeHead","replaceBody","focusFirstAutofocusableElement","copyNewHeadStylesheetElements","copyNewHeadScriptElements","removeCurrentHeadProvisionalElements","copyNewHeadProvisionalElements","relocateCurrentBodyPermanentElements","activateNewBodyScriptElements","assignNewBody","replacePlaceholderElementsWithClonedPermanentElements","trackedElementsAreIdentical","getNewHeadStylesheetElements","getNewHeadScriptElements","getCurrentHeadProvisionalElements","getNewHeadProvisionalElements","getCurrentBodyPermanentElements","permanentElement","getNewBodyScriptElements","_t5","_t6","ErrorRenderer","replaceHeadAndBody","activateBodyScriptElements","getScriptElements","View","htmlElement","getSnapshot","markAsPreview","renderSnapshot","renderError","ScrollManager","onScroll","_t7","scrollToElement","scrollToPosition","updatePosition","scrollPositionChanged","SnapshotCache","snapshots","put","write","Visit","performScroll","_t8","timingMetrics","recordTimingMetric","cancelRender","fail","visitFailed","historyChanged","shouldIssueRequest","getCachedSnapshot","getCachedSnapshotForLocation","cacheSnapshot","visitRendered","redirectedToLocation","followedRedirect","replaceHistoryWithLocationAndRestorationIdentifier","scrolled","scrollToRestoredPosition","scrollToTop","scrollToAnchor","restorationData","scrollPosition","getTimingMetrics","snapshotCached","frame","cancelAnimationFrame","_t9","clickBubbled","clickCaptured","scrollManager","startHistory","disable","stopHistory","applicationAllowsVisitingLocation","locationIsVisitable","getRestorationDataForIdentifier","startVisit","pushHistoryWithLocationAndRestorationIdentifier","shouldCacheSnapshot","notifyApplicationBeforeCachingSnapshot","lastRenderedLocation","getCurrentRestorationData","notifyApplicationBeforeRender","currentVisit","notifyApplicationAfterRender","notifyApplicationAfterPageLoad","clickEventIsSignificant","getVisitableLinkForNode","getVisitableLocationForLink","applicationAllowsFollowingLinkToLocation","getActionForLink","notifyApplicationAfterClickingLinkToLocation","notifyApplicationBeforeVisitingLocation","notifyApplicationAfterVisitingLocation","timing","createVisit","isContentEditable","nodeIsVisitable","currentScript","sparkMd5","createCommonjsModule","hex_chr","md5cycle","md5blk","md5blks","md5blk_array","md51","tmp","lo","hi","md51_array","subarray","rhex","hex","toUtf8","utf8Str2ArrayBuffer","returnUInt8Array","buff","arrayBuffer2Utf8Str","concatenateArrayBuffers","hexToBinaryString","bytes","SparkMD5","num","targetArray","sourceArray","appendBinary","contents","_buff","_length","_hash","_finish","hashBinary","fileSlice","mozSlice","webkitSlice","FileChecksum","chunkCount","chunkIndex","md5Buffer","fileReader","fileReaderDidLoad","fileReaderDidError","readNextChunk","binaryDigest","base64digest","readAsArrayBuffer","eventInit","toArray$1","BlobRecord","checksum","filename","content_type","byte_size","requestDidLoad","requestDidError","blob","direct_upload","directUploadData","_xhr","BlobUpload","_blob$directUploadDat","DirectUpload","DirectUploadController","directUpload","hiddenInput","insertAdjacentElement","dispatchError","signed_id","alert","uploadRequestDidProgress","DirectUploadsController","createDirectUploadControllers","startNextController","processingAttribute","submitButtonsByForm","didClick","didSubmitForm","didSubmitRemoteElement","handleFormSubmissionEvent","enable","submitForm","ActiveStorage","channels","webpackContext","req","webpackContextResolve","CableReady","query","axios","ac","autocomplete","fieldTarget","templates","setVal","Axios","mergeConfig","createInstance","defaultConfig","instanceConfig","CancelToken","isCancel","all","promises","default","InterceptorManager","dispatchRequest","interceptors","getUri","eject","transformData","throwIfCancellationRequested","throwIfRequested","fns","normalizedName","isAxiosError","description","fileName","columnNumber","isAbsoluteURL","combineURLs","requestedURL","relativeURL","ignoreDuplicateOf","originURL","msie","urlParsingNode","resolveURL","hostname","port","pathname","expires","domain","secure","toGMTString","decodeURIComponent","executor","resolvePromise","zepto","proxy","typeaheadKey","Typeahead","datasets","typeaheadObject","$input","eventBus","typeahead","dropdownMenuContainer","minLength","autoselect","autoselectOnBlur","tabAutocomplete","openOnFocus","clearOnSelected","cssClasses","keyboardShortcuts","autoWidth","ariaLabel","methodArguments","wasAutocompleteSet","oldAutocomplete","Zepto","emptyArray","_concat","_filter","_slice","elementDisplay","classCache","cssNumber","fragmentRE","singleTagRE","tagExpanderRE","rootNodeRE","capitalRE","methodAttributes","adjacencyOperators","table","tableRow","containers","readyRE","simpleSelectorRE","class2type","tempParent","propMap","isWindow","isDocument","DOCUMENT_NODE","likeArray","dasherize","classRE","maybeAddPx","defaultDisplay","getPropertyValue","_children","Z","dom","deep","filtered","funcArg","klass","svg","baseVal","deserializeValue","parseJSON","traverseNode","qsa","isZ","ready","maybeID","maybeClass","nameOnly","getElementById","getElementsByTagName","isEmptyObject","isNumeric","inArray","support","grep","not","excludes","$this","parents","pluck","contentDocument","replaceWith","newContent","structure","wrapAll","wrapInner","setting","_html","originHtml","_text","removeAttr","removeProp","multiple","coordinates","parentOffset","computedStyle","removeProperty","hasClass","removeClass","toggleClass","when","hasScrollTop","scrollX","hasScrollLeft","dimension","dimensionProperty","operatorIndex","inside","argType","copyByClone","parentInDocument","defaultView","_zid","specialEvents","focusinSupported","hover","mouseenter","mouseleave","zid","findHandlers","matcher","matcherFor","eventCapture","captureSetting","realEvent","delegator","capture","related","relatedTarget","compatible","isImmediatePropagationStopped","dataPropDescriptor","_args","mousedown","mousemove","proxyFn","unbind","one","returnTrue","returnFalse","ignoreProperties","eventMethods","isDefaultPrevented","sourceMethod","timeStamp","getPreventDefault","createProxy","originalEvent","undelegate","live","die","autoRemove","currentTarget","liveFired","triggerHandler","dataAttr","exp","expando","store","camelName","attributeData","hasData","removeData","origFn","attrsKey","Input","Dropdown","$menu","$hint","isActivated","formattedPrefix","listboxId","domElts","$wrapper","$dropdown","dropdownHtml","role","backgroundAttachment","backgroundClip","backgroundOrigin","backgroundPosition","backgroundRepeat","backgroundSize","getBackgroundStyles","displayKey","menu","buildDom","$node","$e","_onSuggestionClicked","_onCursorMoved","_onCursorRemoved","_onOpened","_onClosed","_onShown","_onEmpty","_onRedrawn","_onDatasetRendered","_onFocused","_onBlurred","_onEnterKeyed","_onTabKeyed","_onEscKeyed","_onUpKeyed","_onDownKeyed","_onLeftKeyed","_onRightKeyed","_onQueryChanged","_onWhitespaceChanged","_bindKeyboardShortcuts","_setLanguageDirection","keydown","datum","getDatumForSuggestion","_select","selectionMethod","getDatumForCursor","currentCursorId","getCurrentCursor","setActiveDescendant","setInputValue","datasetName","resetInputValue","_updateHint","expand","inputRect","wrapperRect","cursorTopSuggestion","clearHint","removeActiveDescendant","getQuery","cursorDatum","topSuggestionDatum","getDatumForTopSuggestion","_autocomplete","moveCursorUp","moveCursorDown","clearHintIfInvalid","getLanguageDirection","setLanguageDirection","escapedQuery","isVisible","hasOverflow","getInputValue","normalizeQuery","setHint","laxCursor","isCursorAtEnd","getHint","setQuery","getVal","insertAfter","destroyDomStructure","getWrapper","$container","specialKeyCodeMap","onKeydown","onInput","_onBlur","_onFocus","_onKeydown","_onInput","$overflowHelper","fontFamily","fontSize","fontStyle","fontVariant","fontWeight","wordSpacing","letterSpacing","textIndent","textTransform","withModifier","_managePreventDefault","_shouldTrigger","_checkInputValue","hintValue","inputValue","areEquivalent","hasDifferentWhitespace","silent","activedescendantId","valIsPrefixOfHint","constraint","valueLength","scheduleDrain","scheduled","install","task","queueMicrotask","Mutation","WebKitMutationObserver","called","observer","characterData","setImmediate","MessageChannel","port1","onmessage","port2","postMessage","scriptEl","Dataset","onSuggestionClick","onSuggestionMouseEnter","onSuggestionMouseLeave","_onSuggestionClick","_onSuggestionMouseEnter","_onSuggestionMouseLeave","cssClass","header","$empty","oDataset","initializeDataset","getRoot","_onRendered","footer","resize","_redraw","_removeCursor","_setCursor","_hide","_show","_getSuggestions","_getCursor","_moveCursor","increment","$suggestions","$oldCursor","newCursorIndex","$newCursor","_ensureVisible","elTop","elBottom","menuScrollTop","menuHeight","extractDatum","extractValue","extractDatasetName","datasetKey","valueKey","datumKey","_isEmpty","displayFn","getDisplayFn","suggestionTemplate","getTemplates","clearCachedSuggestions","_render","hasSuggestions","renderArgs","getEmptyHtml","getHeaderHtml","getFooterHtml","getSuggestionsHtml","suggestionsHtml","getSuggestionNode","suggestionHtml","handleSuggestions","extraArgs","cacheSuggestions","shouldFetchFromCache","cachedSuggestions","cachedRenderExtraArgs","execSource","debounceTimeout","cachedQuery","hits","popularIn","parseAlgoliaClientVersion","algoliaVersion","_ua","additionalUA","hit","detailsIndex","detailsParams","hitsPerPage","detailsAlgoliaVersion","error2","content2","includeAll","allTitle","facet","nbHits","facets","parserConfig","statementIndent","jsonldMode","jsonld","trackScope","isTS","typescript","wordRE","wordCharacters","keywords","kw","A","B","C","D","atom","isOperatorChar","isJsonldKeyword","tp","cont","tokenBase","tokenize","escaped","tokenComment","expressionAllowed","inSet","readRegexp","tokenQuasi","lexical","lastType","maybeEnd","findFatArrow","fatArrowAt","arrow","sawSomething","bracket","atomicTypes","JSLexical","inScope","varname","localVars","cx","parseJS","marked","pass","inList","newContext","registerVarScoped","Var","globalVars","isModifier","defaultVars","pushcontext","pushblockcontext","popcontext","pushlex","poplex","expect","wanted","vardef","parenExpr","maybeexpression","maybeelse","functiondef","forspec","enumdef","typename","typeexpr","maybelabel","maybeCatchBinding","afterExport","afterImport","funarg","expressionInner","expressionNoComma","noComma","arrowBodyNoComma","arrowBody","commasep","maybeop","maybeoperatorNoComma","maybeoperatorComma","classExpression","arrayLiteral","contCommasep","objprop","quasi","targetNoComma","maybeTypeArgs","maybeTarget","continueQuasi","getterSetter","afterprop","maybetype","what","sep","proceed","maybetypeOrIn","mayberettype","isKW","afterType","typeprops","typearg","maybeReturnType","quasiType","typeprop","functiondecl","continueQuasiType","typeparam","maybeTypeDefault","maybeAssign","vardefCont","eltpattern","proppattern","_type","forspec1","forspec2","classNameAfter","classfield","maybeFrom","exportField","importSpec","maybeMoreImports","maybeAs","enummember","basecolumn","textAfter","firstChar","isContinuedStatement","doubleIndentSwitch","blockCommentStart","blockCommentEnd","blockCommentContinue","lineComment","fold","closeBrackets","skipExpression","GUTTER_ID","showTooltipFor","tooltip","tt","lint","selfContain","showTooltip","LintState","conf","hasGutter","getAnnotations","linterOptions","onMouseOver","annotations","ann","__annotation","annotationTooltip","popupTooltips","waitingFor","highlightLines","tooltips","lintOnChange","formatAnnotation","onUpdateLinting","clearMarks","clearErrorLines","makeMarker","labels","severity","tip","messageHTML","startLinting","arg2","updateLinting","lintAsync","issues","annotationsNotSorted","groupByLine","anns","maxSeverity","tipLabel","onChange","hasLintGutter","parseErrors","decodeURI","encodeURI","EvalError","SyntaxError","URIError","Float32Array","Float64Array","Int8Array","Int16Array","Int32Array","Uint16Array","Uint32Array","Uint8ClampedArray","Atomics","SharedArrayBuffer","BigInt","globalThis","Blob","applicationCache","atob","CanvasGradient","CanvasPattern","CanvasRenderingContext2D","CSS","CSSImportRule","CSSGroupingRule","CSSMarginRule","CSSMediaRule","CSSNamespaceRule","CSSPageRule","CSSRule","CSSRuleList","CSSStyleDeclaration","CSSStyleRule","CSSStyleSheet","closed","Comment","CompositionEvent","createImageBitmap","defaultStatus","Document","DocumentFragment","ElementTimeControl","FileList","frames","Headers","HTMLAnchorElement","HTMLAreaElement","HTMLAudioElement","HTMLBaseElement","HTMLBlockquoteElement","HTMLBodyElement","HTMLBRElement","HTMLButtonElement","HTMLCanvasElement","HTMLCollection","HTMLDataElement","HTMLDataListElement","HTMLDetailsElement","HTMLDialogElement","HTMLDirectoryElement","HTMLDivElement","HTMLDListElement","HTMLElement","HTMLEmbedElement","HTMLFieldSetElement","HTMLFontElement","HTMLFormElement","HTMLFrameElement","HTMLFrameSetElement","HTMLHeadElement","HTMLHeadingElement","HTMLHRElement","HTMLHtmlElement","HTMLIFrameElement","HTMLImageElement","HTMLInputElement","HTMLIsIndexElement","HTMLLabelElement","HTMLLayerElement","HTMLLegendElement","HTMLLIElement","HTMLLinkElement","HTMLMapElement","HTMLMarqueeElement","HTMLMediaElement","HTMLMenuElement","HTMLMetaElement","HTMLMeterElement","HTMLModElement","HTMLObjectElement","HTMLOListElement","HTMLOptGroupElement","HTMLOptionElement","HTMLParagraphElement","HTMLParamElement","HTMLPictureElement","HTMLPreElement","HTMLProgressElement","HTMLQuoteElement","HTMLScriptElement","HTMLSelectElement","HTMLSlotElement","HTMLSourceElement","HTMLStyleElement","HTMLTableCaptionElement","HTMLTableCellElement","HTMLTableColElement","HTMLTableElement","HTMLTableRowElement","HTMLTableSectionElement","HTMLTemplateElement","HTMLTextAreaElement","HTMLTimeElement","HTMLTitleElement","HTMLTrackElement","HTMLUListElement","HTMLVideoElement","Image","IntersectionObserver","Intl","matchMedia","MediaList","MediaRecorder","MessageEvent","MessagePort","MouseEvent","moveBy","moveTo","NodeFilter","NodeList","onbeforeunload","onblur","onfocus","onresize","onunload","openDatabase","opener","Option","performance","print","Request","resizeBy","resizeTo","Response","scrollBy","SharedWorker","Storage","StyleSheet","SVGAElement","SVGAltGlyphDefElement","SVGAltGlyphElement","SVGAltGlyphItemElement","SVGAngle","SVGAnimateColorElement","SVGAnimateElement","SVGAnimateMotionElement","SVGAnimateTransformElement","SVGAnimatedAngle","SVGAnimatedBoolean","SVGAnimatedEnumeration","SVGAnimatedInteger","SVGAnimatedLength","SVGAnimatedLengthList","SVGAnimatedNumber","SVGAnimatedNumberList","SVGAnimatedPathData","SVGAnimatedPoints","SVGAnimatedPreserveAspectRatio","SVGAnimatedRect","SVGAnimatedString","SVGAnimatedTransformList","SVGAnimationElement","SVGCSSRule","SVGCircleElement","SVGClipPathElement","SVGColor","SVGColorProfileElement","SVGColorProfileRule","SVGComponentTransferFunctionElement","SVGCursorElement","SVGDefsElement","SVGDescElement","SVGDocument","SVGElement","SVGElementInstance","SVGElementInstanceList","SVGEllipseElement","SVGExternalResourcesRequired","SVGFEBlendElement","SVGFEColorMatrixElement","SVGFEComponentTransferElement","SVGFECompositeElement","SVGFEConvolveMatrixElement","SVGFEDiffuseLightingElement","SVGFEDisplacementMapElement","SVGFEDistantLightElement","SVGFEFloodElement","SVGFEFuncAElement","SVGFEFuncBElement","SVGFEFuncGElement","SVGFEFuncRElement","SVGFEGaussianBlurElement","SVGFEImageElement","SVGFEMergeElement","SVGFEMergeNodeElement","SVGFEMorphologyElement","SVGFEOffsetElement","SVGFEPointLightElement","SVGFESpecularLightingElement","SVGFESpotLightElement","SVGFETileElement","SVGFETurbulenceElement","SVGFilterElement","SVGFilterPrimitiveStandardAttributes","SVGFitToViewBox","SVGFontElement","SVGFontFaceElement","SVGFontFaceFormatElement","SVGFontFaceNameElement","SVGFontFaceSrcElement","SVGFontFaceUriElement","SVGForeignObjectElement","SVGGElement","SVGGlyphElement","SVGGlyphRefElement","SVGGradientElement","SVGHKernElement","SVGICCColor","SVGImageElement","SVGLangSpace","SVGLength","SVGLengthList","SVGLineElement","SVGLinearGradientElement","SVGLocatable","SVGMPathElement","SVGMarkerElement","SVGMaskElement","SVGMatrix","SVGMetadataElement","SVGMissingGlyphElement","SVGNumber","SVGNumberList","SVGPaint","SVGPathElement","SVGPathSeg","SVGPathSegArcAbs","SVGPathSegArcRel","SVGPathSegClosePath","SVGPathSegCurvetoCubicAbs","SVGPathSegCurvetoCubicRel","SVGPathSegCurvetoCubicSmoothAbs","SVGPathSegCurvetoCubicSmoothRel","SVGPathSegCurvetoQuadraticAbs","SVGPathSegCurvetoQuadraticRel","SVGPathSegCurvetoQuadraticSmoothAbs","SVGPathSegCurvetoQuadraticSmoothRel","SVGPathSegLinetoAbs","SVGPathSegLinetoHorizontalAbs","SVGPathSegLinetoHorizontalRel","SVGPathSegLinetoRel","SVGPathSegLinetoVerticalAbs","SVGPathSegLinetoVerticalRel","SVGPathSegList","SVGPathSegMovetoAbs","SVGPathSegMovetoRel","SVGPatternElement","SVGPoint","SVGPointList","SVGPolygonElement","SVGPolylineElement","SVGPreserveAspectRatio","SVGRadialGradientElement","SVGRect","SVGRectElement","SVGRenderingIntent","SVGSVGElement","SVGScriptElement","SVGSetElement","SVGStopElement","SVGStringList","SVGStylable","SVGStyleElement","SVGSwitchElement","SVGSymbolElement","SVGTRefElement","SVGTSpanElement","SVGTests","SVGTextContentElement","SVGTextElement","SVGTextPathElement","SVGTextPositioningElement","SVGTitleElement","SVGTransform","SVGTransformList","SVGTransformable","SVGURIReference","SVGUnitTypes","SVGUseElement","SVGVKernElement","SVGViewElement","SVGViewSpec","SVGZoomAndPan","Text","TextDecoder","TextEncoder","TimeEvent","URL","WebGLActiveInfo","WebGLBuffer","WebGLContextEvent","WebGLFramebuffer","WebGLProgram","WebGLRenderbuffer","WebGLRenderingContext","WebGLShader","WebGLShaderPrecisionFormat","WebGLTexture","WebGLUniformLocation","Window","Worker","XDomainRequest","XMLDocument","XMLSerializer","XPathEvaluator","XPathException","XPathExpression","XPathNamespace","XPathNSResolver","Debug","opera","prompt","importScripts","FileReaderSync","respond","getRow","provides","__filename","__dirname","GLOBAL","clearImmediate","WebPage","asyncTest","deepEqual","equal","notDeepEqual","notEqual","notOk","notPropEqual","notStrictEqual","propEqual","QUnit","raises","strictEqual","defineClass","deserialize","gc","importClass","importPackage","loadClass","Packages","readFile","readUrl","runCommand","seal","serialize","spawn","toint32","echo","exit","cd","pwd","ls","cp","mkdir","cat","sed","dirs","pushd","popd","chmod","tempdir","ArrayBufferView","ActiveXObject","Enumerator","GetObject","ScriptEngine","ScriptEngineBuildVersion","ScriptEngineMajorVersion","ScriptEngineMinorVersion","VBArray","WSH","WScript","dijit","dojox","define","Asset","Browser","Chain","Class","Color","Cookie","Core","DomReady","DOMEvent","DOMReady","Drag","Elements","Events","Fx","Group","HtmlTable","IFrame","IframeShim","InputValidator","instanceOf","Keyboard","Locale","Mask","MooTools","Native","Options","OverText","Scroller","Slick","Slider","Sortables","Spinner","Swiff","Tips","Type","typeOf","URI","Abstract","Ajax","Enumerable","Field","Form","Insertion","ObjectRange","PeriodicalExecuter","Position","Prototype","Selector","Template","Toggle","Try","Autocompleter","Builder","Control","Draggable","Draggables","Droppables","Effect","Sortable","SortableObserver","Sound","Scriptaculous","YUI","Y","YUI_config","describe","xdescribe","xcontext","it","xit","specify","xspecify","beforeEach","afterEach","suite","setup","teardown","suiteSetup","suiteTeardown","setFixtures","loadFixtures","spyOn","runs","waitsFor","waits","beforeAll","afterAll","fdescribe","fit","pending","spyOnProperty","E001","E002","E003","E004","E005","E006","E007","E008","E009","E010","E011","E012","E013","E014","E015","E016","E017","E018","E019","E020","E021","E022","E023","E024","E025","E026","E027","E028","E029","E030","E031","E032","E033","E034","E035","E036","E037","E038","E039","E040","E041","E042","E043","E044","E045","E046","E047","E048","E049","E050","E051","E052","E053","E054","E055","E056","E057","E058","E059","E060","E061","E062","E063","E064","E065","E066","E067","E068","E069","E070","W001","W002","W003","W004","W005","W006","W007","W008","W009","W010","W011","W012","W013","W014","W015","W016","W017","W018","W019","W020","W021","W022","W023","W024","W025","W026","W027","W028","W030","W031","W032","W033","W034","W035","W036","W037","W038","W039","W040","W041","W042","W043","W044","W045","W046","W047","W048","W049","W050","W051","W052","W053","W054","W055","W056","W057","W058","W059","W060","W061","W062","W063","W064","W065","W066","W067","W068","W069","W070","W071","W072","W073","W074","W075","W076","W077","W078","W079","W080","W081","W082","W083","W084","W085","W086","W087","W088","W089","W090","W091","W093","W094","W095","W096","W097","W098","W099","W100","W101","W102","W103","W104","W105","W106","W107","W108","W109","W110","W112","W113","W114","W115","W116","W117","W118","W119","W120","W121","W122","W123","W124","W125","W126","W127","W128","W129","W130","W131","W132","W133","W134","W135","W136","W137","W138","W139","W140","W141","W142","W143","W144","W145","W146","W147","W148","I001","I002","I003","unicodeData","asciiIdentifierStartTable","asciiIdentifierPartTable","nonAsciiIdentifierStartTable","nonAsciiIdentifierPartTable","Block","isHex","isHexDigit","setLines","prereg","inComment","templateStarts","_lines","inContext","ctxType","pushContext","popContext","currentContext","triggerAsync","checks","scanPunctuator","ch2","ch3","ch4","scanComments","commentToken","commentType","isMultiline","strIndex","ignoringLinterErrors","isMalformed","scanKeyword","scanIdentifier","isNonAsciiIdentifierStart","isNonAsciiIdentifierPart","readUnicodeEscapeSequence","sequence","getIdentifierStart","getIdentifierPart","m0","codepoint","removeEscapeSequences","tokenLength","scanNumericLiteral","isAllowedDigit","isDecimalDigit","isLegacy","isNonOctal","isOctalDigit","isIdentifierStart","isBigInt","scanEscapeSequence","allowNewLine","jump","scanTemplateLiteral","tokenType","startPos","scanStringLiteral","multistr","scanRegExp","escapeSequence","terminated","malformedDesc","groupReferences","allFlags","es5Flags","malformed","isCharSet","isCharSetRange","isQuantifiable","hasInvalidQuantifier","escapedChars","hasUFlag","groupCount","scanRegexpEscapeSequence","checkQuantifier","lowerBound","upperBound","translateUFlag","$0","$2","literal","codePoint","hasInvalidEscape","groupReference","escapedChar","scanNonBreakingSpaces","nonbsp","inputTrimmed","maxlen","_checks","exhausted","raw_name","_stack","nameToken","identifierStartTable","identifierPartTable","equalSignIndex","binary","general","nonBinary","nb","General_Category","Script","sc","Script_Extensions","scx","ASCII","ASCII_Hex_Digit","AHex","Alphabetic","Alpha","Any","Assigned","Bidi_Control","Bidi_C","Bidi_Mirrored","Bidi_M","Case_Ignorable","CI","Cased","Changes_When_Casefolded","CWCF","Changes_When_Casemapped","CWCM","Changes_When_Lowercased","CWL","Changes_When_NFKC_Casefolded","CWKCF","Changes_When_Titlecased","CWT","Changes_When_Uppercased","CWU","Dash","Default_Ignorable_Code_Point","DI","Deprecated","Dep","Diacritic","Dia","Emoji","Emoji_Component","EComp","Emoji_Modifier","EMod","Emoji_Modifier_Base","EBase","Emoji_Presentation","EPres","Extended_Pictographic","ExtPict","Extender","Ext","Grapheme_Base","Gr_Base","Grapheme_Extend","Gr_Ext","Hex_Digit","Hex","IDS_Binary_Operator","IDSB","IDS_Trinary_Operator","IDST","ID_Continue","IDC","ID_Start","IDS","Ideographic","Ideo","Join_Control","Join_C","Logical_Order_Exception","LOE","Lowercase","Lower","Noncharacter_Code_Point","NChar","Pattern_Syntax","Pat_Syn","Pattern_White_Space","Pat_WS","Quotation_Mark","QMark","Radical","Regional_Indicator","RI","Sentence_Terminal","STerm","Soft_Dotted","SD","Terminal_Punctuation","Term","Unified_Ideograph","UIdeo","Uppercase","Upper","Variation_Selector","VS","White_Space","XID_Continue","XIDC","XID_Start","XIDS","Cased_Letter","LC","Close_Punctuation","Pe","Connector_Punctuation","Pc","Cc","cntrl","Currency_Symbol","Sc","Dash_Punctuation","Pd","Decimal_Number","Nd","digit","Enclosing_Mark","Me","Final_Punctuation","Pf","Format","Cf","Initial_Punctuation","Pi","Letter","L","Letter_Number","Nl","Line_Separator","Zl","Lowercase_Letter","Ll","Mark","M","Combining_Mark","Math_Symbol","Sm","Modifier_Letter","Lm","Modifier_Symbol","Sk","Nonspacing_Mark","Mn","N","Open_Punctuation","Ps","Other","Other_Letter","Lo","Other_Number","No","Other_Punctuation","Po","Other_Symbol","So","Paragraph_Separator","Zp","Private_Use","Co","Punctuation","punct","Separator","Space_Separator","Zs","Spacing_Mark","Mc","Surrogate","Cs","S","Titlecase_Letter","Lt","Unassigned","Cn","Uppercase_Letter","Lu","Adlam","Adlm","Ahom","Anatolian_Hieroglyphs","Hluw","Arabic","Arab","Armenian","Armn","Avestan","Avst","Balinese","Bali","Bamum","Bamu","Bassa_Vah","Bass","Batak","Batk","Bengali","Beng","Bhaiksuki","Bhks","Bopomofo","Bopo","Brahmi","Brah","Braille","Brai","Buginese","Bugi","Buhid","Buhd","Canadian_Aboriginal","Cans","Carian","Cari","Caucasian_Albanian","Aghb","Chakma","Cakm","Cham","Chorasmian","Chrs","Cherokee","Cher","Common","Zyyy","Coptic","Copt","Qaac","Cuneiform","Xsux","Cypriot","Cprt","Cyrillic","Cyrl","Deseret","Dsrt","Devanagari","Deva","Dives_Akuru","Diak","Dogra","Dogr","Duployan","Dupl","Egyptian_Hieroglyphs","Egyp","Elbasan","Elba","Elymaic","Elym","Ethiopic","Ethi","Georgian","Geor","Glagolitic","Glag","Gothic","Goth","Grantha","Gran","Greek","Grek","Gujarati","Gujr","Gunjala_Gondi","Gong","Gurmukhi","Guru","Han","Hani","Hangul","Hang","Hanifi_Rohingya","Rohg","Hanunoo","Hano","Hatran","Hatr","Hebrew","Hebr","Hiragana","Hira","Imperial_Aramaic","Armi","Inherited","Zinh","Qaai","Inscriptional_Pahlavi","Phli","Inscriptional_Parthian","Prti","Javanese","Java","Kaithi","Kthi","Kannada","Knda","Katakana","Kana","Kayah_Li","Kali","Kharoshthi","Khar","Khitan_Small_Script","Kits","Khmer","Khmr","Khojki","Khoj","Khudawadi","Sind","Lao","Laoo","Latin","Latn","Lepcha","Lepc","Limbu","Limb","Linear_A","Lina","Linear_B","Linb","Lisu","Lycian","Lyci","Lydian","Lydi","Mahajani","Mahj","Makasar","Maka","Malayalam","Mlym","Mandaic","Mand","Manichaean","Mani","Marchen","Marc","Medefaidrin","Medf","Masaram_Gondi","Gonm","Meetei_Mayek","Mtei","Mende_Kikakui","Mend","Meroitic_Cursive","Merc","Meroitic_Hieroglyphs","Mero","Miao","Plrd","Modi","Mongolian","Mong","Mro","Mroo","Multani","Mult","Myanmar","Mymr","Nabataean","Nbat","Nandinagari","Nand","New_Tai_Lue","Talu","Newa","Nko","Nkoo","Nushu","Nshu","Nyiakeng_Puachue_Hmong","Hmnp","Ogham","Ogam","Ol_Chiki","Olck","Old_Hungarian","Hung","Old_Italic","Ital","Old_North_Arabian","Narb","Old_Permic","Perm","Old_Persian","Xpeo","Old_Sogdian","Sogo","Old_South_Arabian","Sarb","Old_Turkic","Orkh","Oriya","Orya","Osage","Osge","Osmanya","Osma","Pahawh_Hmong","Hmng","Palmyrene","Palm","Pau_Cin_Hau","Pauc","Phags_Pa","Phag","Phoenician","Phnx","Psalter_Pahlavi","Phlp","Rejang","Rjng","Runic","Runr","Samaritan","Samr","Saurashtra","Saur","Sharada","Shrd","Shavian","Shaw","Siddham","Sidd","SignWriting","Sgnw","Sinhala","Sinh","Sogdian","Sogd","Sora_Sompeng","Sora","Soyombo","Soyo","Sundanese","Sund","Syloti_Nagri","Sylo","Syriac","Syrc","Tagalog","Tglg","Tagbanwa","Tagb","Tai_Le","Tale","Tai_Tham","Lana","Tai_Viet","Tavt","Takri","Takr","Tamil","Taml","Tangut","Tang","Telugu","Telu","Thaana","Thaa","Thai","Tibetan","Tibt","Tifinagh","Tfng","Tirhuta","Tirh","Ugaritic","Ugar","Vai","Vaii","Wancho","Wcho","Warang_Citi","Wara","Yezidi","Yezi","Yi","Yiii","Zanabazar_Square","Zanb","linter","camelcase","funcscope","environments","obsolete","onecase","regexdash","eqeq","sloppy","nomen","onevar","passfail","white","gcl","smarttabs","_scopeStack","_newScope","_currentFunctBody","usedPredefinedAndGlobals","esModuleExports","_setupUsages","bindingName","_getUnusedOption","unused_opt","_warnUnused","warnable_types","_getBinding","scopeBindings","_checkOuterShadow","isNewFunction","outsideCurrentFunction","stackItem","_latedefWarning","previousScope","isImmutable","subScope","isUnstackingFunctionBody","isUnstackingFunctionParams","isUnstackingFunctionOuter","currentUsages","currentBindings","usedBindingNameList","usedBindingName","usage","usedBinding","usedBindingType","usedTokens","ignoreW021","bindingType","subScopeUsage","ignoreW020","undefinedToken","ignoreUndef","bindingNotUsed","bindingNames","defBindingName","defBinding","shadowed","excludeCurrent","_checkForUnused","previouslyDefinedBindingType","duplicated","currentFunctParamScope","globalBindings","exportName","isblockscoped","ishoisted","isexported","declaredInCurrentScope","declaredInCurrentFunctionScope","usedSoFarInCurrentFunction","onlyBlockscoped","excludeParams","scopeCheck","labelName","tok","paramScope","modify","util","assert","tuple","readUInt8","superCtor","super_","TempCtor","objectAssign","_isBuffer","hasOwn","pSlice","functionsHaveNames","pToString","arrbuf","regex","getName","something","rawname","actual","stackStartFunction","AssertionError","_deepEqual","memos","multiline","ignoreCase","actualIndex","actualVisitedObjects","aIsArgs","bIsArgs","ka","objectKeys","kb","objEquiv","expectedException","isPrototypeOf","_throws","shouldThrow","_tryBlock","userProvidedMessage","isUnexpectedException","generatedMessage","getMessage","captureStackTrace","fn_name","next_line","deepStrictEqual","notDeepStrictEqual","throws","doesNotThrow","ifError","propIsEnumerable","toObject","test1","test2","test3","letter","shouldUseNative","logicalName","identifierForContextKey","definitionForModuleAndIdentifier","definitionForModuleWithContextAndKey","definitionsFromContext","$delete","$notification","matchBrackets"],"mappings":"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,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,KACR,OAAQ,KACR,OAAQ,KACR,OAAQ,KACR,OAAQ,KAER,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU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","file":"js/application-367543da02b9fcf503a0.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/packs/\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 101);\n","'use strict';\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nvar bind = require('./helpers/bind');\n/*global toString:true*/\n// utils is a library of generic helper functions non-specific to axios\n\n\nvar toString = Object.prototype.toString;\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Array, otherwise false\n */\n\nfunction isArray(val) {\n return toString.call(val) === '[object Array]';\n}\n/**\n * Determine if a value is undefined\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if the value is undefined, otherwise false\n */\n\n\nfunction isUndefined(val) {\n return typeof val === 'undefined';\n}\n/**\n * Determine if a value is a Buffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\n\n\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor) && typeof val.constructor.isBuffer === 'function' && val.constructor.isBuffer(val);\n}\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\n\n\nfunction isArrayBuffer(val) {\n return toString.call(val) === '[object ArrayBuffer]';\n}\n/**\n * Determine if a value is a FormData\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an FormData, otherwise false\n */\n\n\nfunction isFormData(val) {\n return typeof FormData !== 'undefined' && val instanceof FormData;\n}\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\n\n\nfunction isArrayBufferView(val) {\n var result;\n\n if (typeof ArrayBuffer !== 'undefined' && ArrayBuffer.isView) {\n result = ArrayBuffer.isView(val);\n } else {\n result = val && val.buffer && val.buffer instanceof ArrayBuffer;\n }\n\n return result;\n}\n/**\n * Determine if a value is a String\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a String, otherwise false\n */\n\n\nfunction isString(val) {\n return typeof val === 'string';\n}\n/**\n * Determine if a value is a Number\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Number, otherwise false\n */\n\n\nfunction isNumber(val) {\n return typeof val === 'number';\n}\n/**\n * Determine if a value is an Object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Object, otherwise false\n */\n\n\nfunction isObject(val) {\n return val !== null && _typeof(val) === 'object';\n}\n/**\n * Determine if a value is a Date\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Date, otherwise false\n */\n\n\nfunction isDate(val) {\n return toString.call(val) === '[object Date]';\n}\n/**\n * Determine if a value is a File\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\n\n\nfunction isFile(val) {\n return toString.call(val) === '[object File]';\n}\n/**\n * Determine if a value is a Blob\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Blob, otherwise false\n */\n\n\nfunction isBlob(val) {\n return toString.call(val) === '[object Blob]';\n}\n/**\n * Determine if a value is a Function\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\n\n\nfunction isFunction(val) {\n return toString.call(val) === '[object Function]';\n}\n/**\n * Determine if a value is a Stream\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Stream, otherwise false\n */\n\n\nfunction isStream(val) {\n return isObject(val) && isFunction(val.pipe);\n}\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\n\n\nfunction isURLSearchParams(val) {\n return typeof URLSearchParams !== 'undefined' && val instanceof URLSearchParams;\n}\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n * @returns {String} The String freed of excess whitespace\n */\n\n\nfunction trim(str) {\n return str.replace(/^\\s*/, '').replace(/\\s*$/, '');\n}\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n */\n\n\nfunction isStandardBrowserEnv() {\n if (typeof navigator !== 'undefined' && (navigator.product === 'ReactNative' || navigator.product === 'NativeScript' || navigator.product === 'NS')) {\n return false;\n }\n\n return typeof window !== 'undefined' && typeof document !== 'undefined';\n}\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n */\n\n\nfunction forEach(obj, fn) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n } // Force an array if not already something iterable\n\n\n if (_typeof(obj) !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (var i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n fn.call(null, obj[key], key, obj);\n }\n }\n }\n}\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n * @returns {Object} Result of all merge properties\n */\n\n\nfunction\n /* obj1, obj2, obj3, ... */\nmerge() {\n var result = {};\n\n function assignValue(val, key) {\n if (_typeof(result[key]) === 'object' && _typeof(val) === 'object') {\n result[key] = merge(result[key], val);\n } else {\n result[key] = val;\n }\n }\n\n for (var i = 0, l = arguments.length; i < l; i++) {\n forEach(arguments[i], assignValue);\n }\n\n return result;\n}\n/**\n * Function equal to merge with the difference being that no reference\n * to original objects is kept.\n *\n * @see merge\n * @param {Object} obj1 Object to merge\n * @returns {Object} Result of all merge properties\n */\n\n\nfunction\n /* obj1, obj2, obj3, ... */\ndeepMerge() {\n var result = {};\n\n function assignValue(val, key) {\n if (_typeof(result[key]) === 'object' && _typeof(val) === 'object') {\n result[key] = deepMerge(result[key], val);\n } else if (_typeof(val) === 'object') {\n result[key] = deepMerge({}, val);\n } else {\n result[key] = val;\n }\n }\n\n for (var i = 0, l = arguments.length; i < l; i++) {\n forEach(arguments[i], assignValue);\n }\n\n return result;\n}\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n * @return {Object} The resulting value of object a\n */\n\n\nfunction extend(a, b, thisArg) {\n forEach(b, function assignValue(val, key) {\n if (thisArg && typeof val === 'function') {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n });\n return a;\n}\n\nmodule.exports = {\n isArray: isArray,\n isArrayBuffer: isArrayBuffer,\n isBuffer: isBuffer,\n isFormData: isFormData,\n isArrayBufferView: isArrayBufferView,\n isString: isString,\n isNumber: isNumber,\n isObject: isObject,\n isUndefined: isUndefined,\n isDate: isDate,\n isFile: isFile,\n isBlob: isBlob,\n isFunction: isFunction,\n isStream: isStream,\n isURLSearchParams: isURLSearchParams,\n isStandardBrowserEnv: isStandardBrowserEnv,\n forEach: forEach,\n merge: merge,\n deepMerge: deepMerge,\n extend: extend,\n trim: trim\n};","'use strict';\n\nvar DOM = require('./dom.js');\n\nfunction escapeRegExp(str) {\n return str.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, '\\\\$&');\n}\n\nmodule.exports = {\n // those methods are implemented differently\n // depending on which build it is, using\n // $... or angular... or Zepto... or require(...)\n isArray: null,\n isFunction: null,\n isObject: null,\n bind: null,\n each: null,\n map: null,\n mixin: null,\n isMsie: function isMsie(agentString) {\n if (agentString === undefined) {\n agentString = navigator.userAgent;\n } // from https://github.com/ded/bowser/blob/master/bowser.js\n\n\n if (/(msie|trident)/i.test(agentString)) {\n var match = agentString.match(/(msie |rv:)(\\d+(.\\d+)?)/i);\n\n if (match) {\n return match[2];\n }\n }\n\n return false;\n },\n // http://stackoverflow.com/a/6969486\n escapeRegExChars: function escapeRegExChars(str) {\n return str.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, '\\\\$&');\n },\n isNumber: function isNumber(obj) {\n return typeof obj === 'number';\n },\n toStr: function toStr(s) {\n return s === undefined || s === null ? '' : s + '';\n },\n cloneDeep: function cloneDeep(obj) {\n var clone = this.mixin({}, obj);\n var self = this;\n this.each(clone, function (value, key) {\n if (value) {\n if (self.isArray(value)) {\n clone[key] = [].concat(value);\n } else if (self.isObject(value)) {\n clone[key] = self.cloneDeep(value);\n }\n }\n });\n return clone;\n },\n error: function error(msg) {\n throw new Error(msg);\n },\n every: function every(obj, test) {\n var result = true;\n\n if (!obj) {\n return result;\n }\n\n this.each(obj, function (val, key) {\n if (result) {\n result = test.call(null, val, key, obj) && result;\n }\n });\n return !!result;\n },\n any: function any(obj, test) {\n var found = false;\n\n if (!obj) {\n return found;\n }\n\n this.each(obj, function (val, key) {\n if (test.call(null, val, key, obj)) {\n found = true;\n return false;\n }\n });\n return found;\n },\n getUniqueId: function () {\n var counter = 0;\n return function () {\n return counter++;\n };\n }(),\n templatify: function templatify(obj) {\n if (this.isFunction(obj)) {\n return obj;\n }\n\n var $template = DOM.element(obj);\n\n if ($template.prop('tagName') === 'SCRIPT') {\n return function template() {\n return $template.text();\n };\n }\n\n return function template() {\n return String(obj);\n };\n },\n defer: function defer(fn) {\n setTimeout(fn, 0);\n },\n noop: function noop() {},\n formatPrefix: function formatPrefix(prefix, noPrefix) {\n return noPrefix ? '' : prefix + '-';\n },\n className: function className(prefix, clazz, skipDot) {\n return (skipDot ? '' : '.') + prefix + clazz;\n },\n escapeHighlightedString: function escapeHighlightedString(str, highlightPreTag, highlightPostTag) {\n highlightPreTag = highlightPreTag || '';\n var pre = document.createElement('div');\n pre.appendChild(document.createTextNode(highlightPreTag));\n highlightPostTag = highlightPostTag || '';\n var post = document.createElement('div');\n post.appendChild(document.createTextNode(highlightPostTag));\n var div = document.createElement('div');\n div.appendChild(document.createTextNode(str));\n return div.innerHTML.replace(RegExp(escapeRegExp(pre.innerHTML), 'g'), highlightPreTag).replace(RegExp(escapeRegExp(post.innerHTML), 'g'), highlightPostTag);\n }\n};","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/LICENSE\n// This is CodeMirror (https://codemirror.net), a code editor\n// implemented in JavaScript on top of the browser's DOM.\n//\n// You can find some technical background for some of the code below\n// at http://marijnhaverbeke.nl/blog/#cm-internals .\n(function (global, factory) {\n (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object' && typeof module !== 'undefined' ? module.exports = factory() : typeof define === 'function' && define.amd ? define(factory) : (global = global || self, global.CodeMirror = factory());\n})(this, function () {\n 'use strict'; // Kludges for bugs and behavior differences that can't be feature\n // detected are enabled based on userAgent etc sniffing.\n\n var userAgent = navigator.userAgent;\n var platform = navigator.platform;\n var gecko = /gecko\\/\\d/i.test(userAgent);\n var ie_upto10 = /MSIE \\d/.test(userAgent);\n var ie_11up = /Trident\\/(?:[7-9]|\\d{2,})\\..*rv:(\\d+)/.exec(userAgent);\n var edge = /Edge\\/(\\d+)/.exec(userAgent);\n var ie = ie_upto10 || ie_11up || edge;\n var ie_version = ie && (ie_upto10 ? document.documentMode || 6 : +(edge || ie_11up)[1]);\n var webkit = !edge && /WebKit\\//.test(userAgent);\n var qtwebkit = webkit && /Qt\\/\\d+\\.\\d+/.test(userAgent);\n var chrome = !edge && /Chrome\\//.test(userAgent);\n var presto = /Opera\\//.test(userAgent);\n var safari = /Apple Computer/.test(navigator.vendor);\n var mac_geMountainLion = /Mac OS X 1\\d\\D([8-9]|\\d\\d)\\D/.test(userAgent);\n var phantom = /PhantomJS/.test(userAgent);\n var ios = safari && (/Mobile\\/\\w+/.test(userAgent) || navigator.maxTouchPoints > 2);\n var android = /Android/.test(userAgent); // This is woefully incomplete. Suggestions for alternative methods welcome.\n\n var mobile = ios || android || /webOS|BlackBerry|Opera Mini|Opera Mobi|IEMobile/i.test(userAgent);\n var mac = ios || /Mac/.test(platform);\n var chromeOS = /\\bCrOS\\b/.test(userAgent);\n var windows = /win/i.test(platform);\n var presto_version = presto && userAgent.match(/Version\\/(\\d*\\.\\d*)/);\n\n if (presto_version) {\n presto_version = Number(presto_version[1]);\n }\n\n if (presto_version && presto_version >= 15) {\n presto = false;\n webkit = true;\n } // Some browsers use the wrong event properties to signal cmd/ctrl on OS X\n\n\n var flipCtrlCmd = mac && (qtwebkit || presto && (presto_version == null || presto_version < 12.11));\n var captureRightClick = gecko || ie && ie_version >= 9;\n\n function classTest(cls) {\n return new RegExp(\"(^|\\\\s)\" + cls + \"(?:$|\\\\s)\\\\s*\");\n }\n\n var rmClass = function rmClass(node, cls) {\n var current = node.className;\n var match = classTest(cls).exec(current);\n\n if (match) {\n var after = current.slice(match.index + match[0].length);\n node.className = current.slice(0, match.index) + (after ? match[1] + after : \"\");\n }\n };\n\n function removeChildren(e) {\n for (var count = e.childNodes.length; count > 0; --count) {\n e.removeChild(e.firstChild);\n }\n\n return e;\n }\n\n function removeChildrenAndAdd(parent, e) {\n return removeChildren(parent).appendChild(e);\n }\n\n function elt(tag, content, className, style) {\n var e = document.createElement(tag);\n\n if (className) {\n e.className = className;\n }\n\n if (style) {\n e.style.cssText = style;\n }\n\n if (typeof content == \"string\") {\n e.appendChild(document.createTextNode(content));\n } else if (content) {\n for (var i = 0; i < content.length; ++i) {\n e.appendChild(content[i]);\n }\n }\n\n return e;\n } // wrapper for elt, which removes the elt from the accessibility tree\n\n\n function eltP(tag, content, className, style) {\n var e = elt(tag, content, className, style);\n e.setAttribute(\"role\", \"presentation\");\n return e;\n }\n\n var range;\n\n if (document.createRange) {\n range = function range(node, start, end, endNode) {\n var r = document.createRange();\n r.setEnd(endNode || node, end);\n r.setStart(node, start);\n return r;\n };\n } else {\n range = function range(node, start, end) {\n var r = document.body.createTextRange();\n\n try {\n r.moveToElementText(node.parentNode);\n } catch (e) {\n return r;\n }\n\n r.collapse(true);\n r.moveEnd(\"character\", end);\n r.moveStart(\"character\", start);\n return r;\n };\n }\n\n function contains(parent, child) {\n if (child.nodeType == 3) // Android browser always returns false when child is a textnode\n {\n child = child.parentNode;\n }\n\n if (parent.contains) {\n return parent.contains(child);\n }\n\n do {\n if (child.nodeType == 11) {\n child = child.host;\n }\n\n if (child == parent) {\n return true;\n }\n } while (child = child.parentNode);\n }\n\n function activeElt() {\n // IE and Edge may throw an \"Unspecified Error\" when accessing document.activeElement.\n // IE < 10 will throw when accessed while the page is loading or in an iframe.\n // IE > 9 and Edge will throw when accessed in an iframe if document.body is unavailable.\n var activeElement;\n\n try {\n activeElement = document.activeElement;\n } catch (e) {\n activeElement = document.body || null;\n }\n\n while (activeElement && activeElement.shadowRoot && activeElement.shadowRoot.activeElement) {\n activeElement = activeElement.shadowRoot.activeElement;\n }\n\n return activeElement;\n }\n\n function addClass(node, cls) {\n var current = node.className;\n\n if (!classTest(cls).test(current)) {\n node.className += (current ? \" \" : \"\") + cls;\n }\n }\n\n function joinClasses(a, b) {\n var as = a.split(\" \");\n\n for (var i = 0; i < as.length; i++) {\n if (as[i] && !classTest(as[i]).test(b)) {\n b += \" \" + as[i];\n }\n }\n\n return b;\n }\n\n var selectInput = function selectInput(node) {\n node.select();\n };\n\n if (ios) // Mobile Safari apparently has a bug where select() is broken.\n {\n selectInput = function selectInput(node) {\n node.selectionStart = 0;\n node.selectionEnd = node.value.length;\n };\n } else if (ie) // Suppress mysterious IE10 errors\n {\n selectInput = function selectInput(node) {\n try {\n node.select();\n } catch (_e) {}\n };\n }\n\n function bind(f) {\n var args = Array.prototype.slice.call(arguments, 1);\n return function () {\n return f.apply(null, args);\n };\n }\n\n function copyObj(obj, target, overwrite) {\n if (!target) {\n target = {};\n }\n\n for (var prop in obj) {\n if (obj.hasOwnProperty(prop) && (overwrite !== false || !target.hasOwnProperty(prop))) {\n target[prop] = obj[prop];\n }\n }\n\n return target;\n } // Counts the column offset in a string, taking tabs into account.\n // Used mostly to find indentation.\n\n\n function countColumn(string, end, tabSize, startIndex, startValue) {\n if (end == null) {\n end = string.search(/[^\\s\\u00a0]/);\n\n if (end == -1) {\n end = string.length;\n }\n }\n\n for (var i = startIndex || 0, n = startValue || 0;;) {\n var nextTab = string.indexOf(\"\\t\", i);\n\n if (nextTab < 0 || nextTab >= end) {\n return n + (end - i);\n }\n\n n += nextTab - i;\n n += tabSize - n % tabSize;\n i = nextTab + 1;\n }\n }\n\n var Delayed = function Delayed() {\n this.id = null;\n this.f = null;\n this.time = 0;\n this.handler = bind(this.onTimeout, this);\n };\n\n Delayed.prototype.onTimeout = function (self) {\n self.id = 0;\n\n if (self.time <= +new Date()) {\n self.f();\n } else {\n setTimeout(self.handler, self.time - +new Date());\n }\n };\n\n Delayed.prototype.set = function (ms, f) {\n this.f = f;\n var time = +new Date() + ms;\n\n if (!this.id || time < this.time) {\n clearTimeout(this.id);\n this.id = setTimeout(this.handler, ms);\n this.time = time;\n }\n };\n\n function indexOf(array, elt) {\n for (var i = 0; i < array.length; ++i) {\n if (array[i] == elt) {\n return i;\n }\n }\n\n return -1;\n } // Number of pixels added to scroller and sizer to hide scrollbar\n\n\n var scrollerGap = 50; // Returned or thrown by various protocols to signal 'I'm not\n // handling this'.\n\n var Pass = {\n toString: function toString() {\n return \"CodeMirror.Pass\";\n }\n }; // Reused option objects for setSelection & friends\n\n var sel_dontScroll = {\n scroll: false\n },\n sel_mouse = {\n origin: \"*mouse\"\n },\n sel_move = {\n origin: \"+move\"\n }; // The inverse of countColumn -- find the offset that corresponds to\n // a particular column.\n\n function findColumn(string, goal, tabSize) {\n for (var pos = 0, col = 0;;) {\n var nextTab = string.indexOf(\"\\t\", pos);\n\n if (nextTab == -1) {\n nextTab = string.length;\n }\n\n var skipped = nextTab - pos;\n\n if (nextTab == string.length || col + skipped >= goal) {\n return pos + Math.min(skipped, goal - col);\n }\n\n col += nextTab - pos;\n col += tabSize - col % tabSize;\n pos = nextTab + 1;\n\n if (col >= goal) {\n return pos;\n }\n }\n }\n\n var spaceStrs = [\"\"];\n\n function spaceStr(n) {\n while (spaceStrs.length <= n) {\n spaceStrs.push(lst(spaceStrs) + \" \");\n }\n\n return spaceStrs[n];\n }\n\n function lst(arr) {\n return arr[arr.length - 1];\n }\n\n function map(array, f) {\n var out = [];\n\n for (var i = 0; i < array.length; i++) {\n out[i] = f(array[i], i);\n }\n\n return out;\n }\n\n function insertSorted(array, value, score) {\n var pos = 0,\n priority = score(value);\n\n while (pos < array.length && score(array[pos]) <= priority) {\n pos++;\n }\n\n array.splice(pos, 0, value);\n }\n\n function nothing() {}\n\n function createObj(base, props) {\n var inst;\n\n if (Object.create) {\n inst = Object.create(base);\n } else {\n nothing.prototype = base;\n inst = new nothing();\n }\n\n if (props) {\n copyObj(props, inst);\n }\n\n return inst;\n }\n\n var nonASCIISingleCaseWordChar = /[\\u00df\\u0587\\u0590-\\u05f4\\u0600-\\u06ff\\u3040-\\u309f\\u30a0-\\u30ff\\u3400-\\u4db5\\u4e00-\\u9fcc\\uac00-\\ud7af]/;\n\n function isWordCharBasic(ch) {\n return /\\w/.test(ch) || ch > \"\\x80\" && (ch.toUpperCase() != ch.toLowerCase() || nonASCIISingleCaseWordChar.test(ch));\n }\n\n function isWordChar(ch, helper) {\n if (!helper) {\n return isWordCharBasic(ch);\n }\n\n if (helper.source.indexOf(\"\\\\w\") > -1 && isWordCharBasic(ch)) {\n return true;\n }\n\n return helper.test(ch);\n }\n\n function isEmpty(obj) {\n for (var n in obj) {\n if (obj.hasOwnProperty(n) && obj[n]) {\n return false;\n }\n }\n\n return true;\n } // Extending unicode characters. A series of a non-extending char +\n // any number of extending chars is treated as a single unit as far\n // as editing and measuring is concerned. This is not fully correct,\n // since some scripts/fonts/browsers also treat other configurations\n // of code points as a group.\n\n\n var extendingChars = /[\\u0300-\\u036f\\u0483-\\u0489\\u0591-\\u05bd\\u05bf\\u05c1\\u05c2\\u05c4\\u05c5\\u05c7\\u0610-\\u061a\\u064b-\\u065e\\u0670\\u06d6-\\u06dc\\u06de-\\u06e4\\u06e7\\u06e8\\u06ea-\\u06ed\\u0711\\u0730-\\u074a\\u07a6-\\u07b0\\u07eb-\\u07f3\\u0816-\\u0819\\u081b-\\u0823\\u0825-\\u0827\\u0829-\\u082d\\u0900-\\u0902\\u093c\\u0941-\\u0948\\u094d\\u0951-\\u0955\\u0962\\u0963\\u0981\\u09bc\\u09be\\u09c1-\\u09c4\\u09cd\\u09d7\\u09e2\\u09e3\\u0a01\\u0a02\\u0a3c\\u0a41\\u0a42\\u0a47\\u0a48\\u0a4b-\\u0a4d\\u0a51\\u0a70\\u0a71\\u0a75\\u0a81\\u0a82\\u0abc\\u0ac1-\\u0ac5\\u0ac7\\u0ac8\\u0acd\\u0ae2\\u0ae3\\u0b01\\u0b3c\\u0b3e\\u0b3f\\u0b41-\\u0b44\\u0b4d\\u0b56\\u0b57\\u0b62\\u0b63\\u0b82\\u0bbe\\u0bc0\\u0bcd\\u0bd7\\u0c3e-\\u0c40\\u0c46-\\u0c48\\u0c4a-\\u0c4d\\u0c55\\u0c56\\u0c62\\u0c63\\u0cbc\\u0cbf\\u0cc2\\u0cc6\\u0ccc\\u0ccd\\u0cd5\\u0cd6\\u0ce2\\u0ce3\\u0d3e\\u0d41-\\u0d44\\u0d4d\\u0d57\\u0d62\\u0d63\\u0dca\\u0dcf\\u0dd2-\\u0dd4\\u0dd6\\u0ddf\\u0e31\\u0e34-\\u0e3a\\u0e47-\\u0e4e\\u0eb1\\u0eb4-\\u0eb9\\u0ebb\\u0ebc\\u0ec8-\\u0ecd\\u0f18\\u0f19\\u0f35\\u0f37\\u0f39\\u0f71-\\u0f7e\\u0f80-\\u0f84\\u0f86\\u0f87\\u0f90-\\u0f97\\u0f99-\\u0fbc\\u0fc6\\u102d-\\u1030\\u1032-\\u1037\\u1039\\u103a\\u103d\\u103e\\u1058\\u1059\\u105e-\\u1060\\u1071-\\u1074\\u1082\\u1085\\u1086\\u108d\\u109d\\u135f\\u1712-\\u1714\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17b7-\\u17bd\\u17c6\\u17c9-\\u17d3\\u17dd\\u180b-\\u180d\\u18a9\\u1920-\\u1922\\u1927\\u1928\\u1932\\u1939-\\u193b\\u1a17\\u1a18\\u1a56\\u1a58-\\u1a5e\\u1a60\\u1a62\\u1a65-\\u1a6c\\u1a73-\\u1a7c\\u1a7f\\u1b00-\\u1b03\\u1b34\\u1b36-\\u1b3a\\u1b3c\\u1b42\\u1b6b-\\u1b73\\u1b80\\u1b81\\u1ba2-\\u1ba5\\u1ba8\\u1ba9\\u1c2c-\\u1c33\\u1c36\\u1c37\\u1cd0-\\u1cd2\\u1cd4-\\u1ce0\\u1ce2-\\u1ce8\\u1ced\\u1dc0-\\u1de6\\u1dfd-\\u1dff\\u200c\\u200d\\u20d0-\\u20f0\\u2cef-\\u2cf1\\u2de0-\\u2dff\\u302a-\\u302f\\u3099\\u309a\\ua66f-\\ua672\\ua67c\\ua67d\\ua6f0\\ua6f1\\ua802\\ua806\\ua80b\\ua825\\ua826\\ua8c4\\ua8e0-\\ua8f1\\ua926-\\ua92d\\ua947-\\ua951\\ua980-\\ua982\\ua9b3\\ua9b6-\\ua9b9\\ua9bc\\uaa29-\\uaa2e\\uaa31\\uaa32\\uaa35\\uaa36\\uaa43\\uaa4c\\uaab0\\uaab2-\\uaab4\\uaab7\\uaab8\\uaabe\\uaabf\\uaac1\\uabe5\\uabe8\\uabed\\udc00-\\udfff\\ufb1e\\ufe00-\\ufe0f\\ufe20-\\ufe26\\uff9e\\uff9f]/;\n\n function isExtendingChar(ch) {\n return ch.charCodeAt(0) >= 768 && extendingChars.test(ch);\n } // Returns a number from the range [`0`; `str.length`] unless `pos` is outside that range.\n\n\n function skipExtendingChars(str, pos, dir) {\n while ((dir < 0 ? pos > 0 : pos < str.length) && isExtendingChar(str.charAt(pos))) {\n pos += dir;\n }\n\n return pos;\n } // Returns the value from the range [`from`; `to`] that satisfies\n // `pred` and is closest to `from`. Assumes that at least `to`\n // satisfies `pred`. Supports `from` being greater than `to`.\n\n\n function findFirst(pred, from, to) {\n // At any point we are certain `to` satisfies `pred`, don't know\n // whether `from` does.\n var dir = from > to ? -1 : 1;\n\n for (;;) {\n if (from == to) {\n return from;\n }\n\n var midF = (from + to) / 2,\n mid = dir < 0 ? Math.ceil(midF) : Math.floor(midF);\n\n if (mid == from) {\n return pred(mid) ? from : to;\n }\n\n if (pred(mid)) {\n to = mid;\n } else {\n from = mid + dir;\n }\n }\n } // BIDI HELPERS\n\n\n function iterateBidiSections(order, from, to, f) {\n if (!order) {\n return f(from, to, \"ltr\", 0);\n }\n\n var found = false;\n\n for (var i = 0; i < order.length; ++i) {\n var part = order[i];\n\n if (part.from < to && part.to > from || from == to && part.to == from) {\n f(Math.max(part.from, from), Math.min(part.to, to), part.level == 1 ? \"rtl\" : \"ltr\", i);\n found = true;\n }\n }\n\n if (!found) {\n f(from, to, \"ltr\");\n }\n }\n\n var bidiOther = null;\n\n function getBidiPartAt(order, ch, sticky) {\n var found;\n bidiOther = null;\n\n for (var i = 0; i < order.length; ++i) {\n var cur = order[i];\n\n if (cur.from < ch && cur.to > ch) {\n return i;\n }\n\n if (cur.to == ch) {\n if (cur.from != cur.to && sticky == \"before\") {\n found = i;\n } else {\n bidiOther = i;\n }\n }\n\n if (cur.from == ch) {\n if (cur.from != cur.to && sticky != \"before\") {\n found = i;\n } else {\n bidiOther = i;\n }\n }\n }\n\n return found != null ? found : bidiOther;\n } // Bidirectional ordering algorithm\n // See http://unicode.org/reports/tr9/tr9-13.html for the algorithm\n // that this (partially) implements.\n // One-char codes used for character types:\n // L (L): Left-to-Right\n // R (R): Right-to-Left\n // r (AL): Right-to-Left Arabic\n // 1 (EN): European Number\n // + (ES): European Number Separator\n // % (ET): European Number Terminator\n // n (AN): Arabic Number\n // , (CS): Common Number Separator\n // m (NSM): Non-Spacing Mark\n // b (BN): Boundary Neutral\n // s (B): Paragraph Separator\n // t (S): Segment Separator\n // w (WS): Whitespace\n // N (ON): Other Neutrals\n // Returns null if characters are ordered as they appear\n // (left-to-right), or an array of sections ({from, to, level}\n // objects) in the order in which they occur visually.\n\n\n var bidiOrdering = function () {\n // Character types for codepoints 0 to 0xff\n var lowTypes = \"bbbbbbbbbtstwsbbbbbbbbbbbbbbssstwNN%%%NNNNNN,N,N1111111111NNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNbbbbbbsbbbbbbbbbbbbbbbbbbbbbbbbbb,N%%%%NNNNLNNNNN%%11NLNNN1LNNNNNLLLLLLLLLLLLLLLLLLLLLLLNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLN\"; // Character types for codepoints 0x600 to 0x6f9\n\n var arabicTypes = \"nnnnnnNNr%%r,rNNmmmmmmmmmmmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnn%nnrrrmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmnNmmmmmmrrmmNmmmmrr1111111111\";\n\n function charType(code) {\n if (code <= 0xf7) {\n return lowTypes.charAt(code);\n } else if (0x590 <= code && code <= 0x5f4) {\n return \"R\";\n } else if (0x600 <= code && code <= 0x6f9) {\n return arabicTypes.charAt(code - 0x600);\n } else if (0x6ee <= code && code <= 0x8ac) {\n return \"r\";\n } else if (0x2000 <= code && code <= 0x200b) {\n return \"w\";\n } else if (code == 0x200c) {\n return \"b\";\n } else {\n return \"L\";\n }\n }\n\n var bidiRE = /[\\u0590-\\u05f4\\u0600-\\u06ff\\u0700-\\u08ac]/;\n var isNeutral = /[stwN]/,\n isStrong = /[LRr]/,\n countsAsLeft = /[Lb1n]/,\n countsAsNum = /[1n]/;\n\n function BidiSpan(level, from, to) {\n this.level = level;\n this.from = from;\n this.to = to;\n }\n\n return function (str, direction) {\n var outerType = direction == \"ltr\" ? \"L\" : \"R\";\n\n if (str.length == 0 || direction == \"ltr\" && !bidiRE.test(str)) {\n return false;\n }\n\n var len = str.length,\n types = [];\n\n for (var i = 0; i < len; ++i) {\n types.push(charType(str.charCodeAt(i)));\n } // W1. Examine each non-spacing mark (NSM) in the level run, and\n // change the type of the NSM to the type of the previous\n // character. If the NSM is at the start of the level run, it will\n // get the type of sor.\n\n\n for (var i$1 = 0, prev = outerType; i$1 < len; ++i$1) {\n var type = types[i$1];\n\n if (type == \"m\") {\n types[i$1] = prev;\n } else {\n prev = type;\n }\n } // W2. Search backwards from each instance of a European number\n // until the first strong type (R, L, AL, or sor) is found. If an\n // AL is found, change the type of the European number to Arabic\n // number.\n // W3. Change all ALs to R.\n\n\n for (var i$2 = 0, cur = outerType; i$2 < len; ++i$2) {\n var type$1 = types[i$2];\n\n if (type$1 == \"1\" && cur == \"r\") {\n types[i$2] = \"n\";\n } else if (isStrong.test(type$1)) {\n cur = type$1;\n\n if (type$1 == \"r\") {\n types[i$2] = \"R\";\n }\n }\n } // W4. A single European separator between two European numbers\n // changes to a European number. A single common separator between\n // two numbers of the same type changes to that type.\n\n\n for (var i$3 = 1, prev$1 = types[0]; i$3 < len - 1; ++i$3) {\n var type$2 = types[i$3];\n\n if (type$2 == \"+\" && prev$1 == \"1\" && types[i$3 + 1] == \"1\") {\n types[i$3] = \"1\";\n } else if (type$2 == \",\" && prev$1 == types[i$3 + 1] && (prev$1 == \"1\" || prev$1 == \"n\")) {\n types[i$3] = prev$1;\n }\n\n prev$1 = type$2;\n } // W5. A sequence of European terminators adjacent to European\n // numbers changes to all European numbers.\n // W6. Otherwise, separators and terminators change to Other\n // Neutral.\n\n\n for (var i$4 = 0; i$4 < len; ++i$4) {\n var type$3 = types[i$4];\n\n if (type$3 == \",\") {\n types[i$4] = \"N\";\n } else if (type$3 == \"%\") {\n var end = void 0;\n\n for (end = i$4 + 1; end < len && types[end] == \"%\"; ++end) {}\n\n var replace = i$4 && types[i$4 - 1] == \"!\" || end < len && types[end] == \"1\" ? \"1\" : \"N\";\n\n for (var j = i$4; j < end; ++j) {\n types[j] = replace;\n }\n\n i$4 = end - 1;\n }\n } // W7. Search backwards from each instance of a European number\n // until the first strong type (R, L, or sor) is found. If an L is\n // found, then change the type of the European number to L.\n\n\n for (var i$5 = 0, cur$1 = outerType; i$5 < len; ++i$5) {\n var type$4 = types[i$5];\n\n if (cur$1 == \"L\" && type$4 == \"1\") {\n types[i$5] = \"L\";\n } else if (isStrong.test(type$4)) {\n cur$1 = type$4;\n }\n } // N1. A sequence of neutrals takes the direction of the\n // surrounding strong text if the text on both sides has the same\n // direction. European and Arabic numbers act as if they were R in\n // terms of their influence on neutrals. Start-of-level-run (sor)\n // and end-of-level-run (eor) are used at level run boundaries.\n // N2. Any remaining neutrals take the embedding direction.\n\n\n for (var i$6 = 0; i$6 < len; ++i$6) {\n if (isNeutral.test(types[i$6])) {\n var end$1 = void 0;\n\n for (end$1 = i$6 + 1; end$1 < len && isNeutral.test(types[end$1]); ++end$1) {}\n\n var before = (i$6 ? types[i$6 - 1] : outerType) == \"L\";\n var after = (end$1 < len ? types[end$1] : outerType) == \"L\";\n var replace$1 = before == after ? before ? \"L\" : \"R\" : outerType;\n\n for (var j$1 = i$6; j$1 < end$1; ++j$1) {\n types[j$1] = replace$1;\n }\n\n i$6 = end$1 - 1;\n }\n } // Here we depart from the documented algorithm, in order to avoid\n // building up an actual levels array. Since there are only three\n // levels (0, 1, 2) in an implementation that doesn't take\n // explicit embedding into account, we can build up the order on\n // the fly, without following the level-based algorithm.\n\n\n var order = [],\n m;\n\n for (var i$7 = 0; i$7 < len;) {\n if (countsAsLeft.test(types[i$7])) {\n var start = i$7;\n\n for (++i$7; i$7 < len && countsAsLeft.test(types[i$7]); ++i$7) {}\n\n order.push(new BidiSpan(0, start, i$7));\n } else {\n var pos = i$7,\n at = order.length,\n isRTL = direction == \"rtl\" ? 1 : 0;\n\n for (++i$7; i$7 < len && types[i$7] != \"L\"; ++i$7) {}\n\n for (var j$2 = pos; j$2 < i$7;) {\n if (countsAsNum.test(types[j$2])) {\n if (pos < j$2) {\n order.splice(at, 0, new BidiSpan(1, pos, j$2));\n at += isRTL;\n }\n\n var nstart = j$2;\n\n for (++j$2; j$2 < i$7 && countsAsNum.test(types[j$2]); ++j$2) {}\n\n order.splice(at, 0, new BidiSpan(2, nstart, j$2));\n at += isRTL;\n pos = j$2;\n } else {\n ++j$2;\n }\n }\n\n if (pos < i$7) {\n order.splice(at, 0, new BidiSpan(1, pos, i$7));\n }\n }\n }\n\n if (direction == \"ltr\") {\n if (order[0].level == 1 && (m = str.match(/^\\s+/))) {\n order[0].from = m[0].length;\n order.unshift(new BidiSpan(0, 0, m[0].length));\n }\n\n if (lst(order).level == 1 && (m = str.match(/\\s+$/))) {\n lst(order).to -= m[0].length;\n order.push(new BidiSpan(0, len - m[0].length, len));\n }\n }\n\n return direction == \"rtl\" ? order.reverse() : order;\n };\n }(); // Get the bidi ordering for the given line (and cache it). Returns\n // false for lines that are fully left-to-right, and an array of\n // BidiSpan objects otherwise.\n\n\n function getOrder(line, direction) {\n var order = line.order;\n\n if (order == null) {\n order = line.order = bidiOrdering(line.text, direction);\n }\n\n return order;\n } // EVENT HANDLING\n // Lightweight event framework. on/off also work on DOM nodes,\n // registering native DOM handlers.\n\n\n var noHandlers = [];\n\n var on = function on(emitter, type, f) {\n if (emitter.addEventListener) {\n emitter.addEventListener(type, f, false);\n } else if (emitter.attachEvent) {\n emitter.attachEvent(\"on\" + type, f);\n } else {\n var map = emitter._handlers || (emitter._handlers = {});\n map[type] = (map[type] || noHandlers).concat(f);\n }\n };\n\n function getHandlers(emitter, type) {\n return emitter._handlers && emitter._handlers[type] || noHandlers;\n }\n\n function off(emitter, type, f) {\n if (emitter.removeEventListener) {\n emitter.removeEventListener(type, f, false);\n } else if (emitter.detachEvent) {\n emitter.detachEvent(\"on\" + type, f);\n } else {\n var map = emitter._handlers,\n arr = map && map[type];\n\n if (arr) {\n var index = indexOf(arr, f);\n\n if (index > -1) {\n map[type] = arr.slice(0, index).concat(arr.slice(index + 1));\n }\n }\n }\n }\n\n function signal(emitter, type\n /*, values...*/\n ) {\n var handlers = getHandlers(emitter, type);\n\n if (!handlers.length) {\n return;\n }\n\n var args = Array.prototype.slice.call(arguments, 2);\n\n for (var i = 0; i < handlers.length; ++i) {\n handlers[i].apply(null, args);\n }\n } // The DOM events that CodeMirror handles can be overridden by\n // registering a (non-DOM) handler on the editor for the event name,\n // and preventDefault-ing the event in that handler.\n\n\n function signalDOMEvent(cm, e, override) {\n if (typeof e == \"string\") {\n e = {\n type: e,\n preventDefault: function preventDefault() {\n this.defaultPrevented = true;\n }\n };\n }\n\n signal(cm, override || e.type, cm, e);\n return e_defaultPrevented(e) || e.codemirrorIgnore;\n }\n\n function signalCursorActivity(cm) {\n var arr = cm._handlers && cm._handlers.cursorActivity;\n\n if (!arr) {\n return;\n }\n\n var set = cm.curOp.cursorActivityHandlers || (cm.curOp.cursorActivityHandlers = []);\n\n for (var i = 0; i < arr.length; ++i) {\n if (indexOf(set, arr[i]) == -1) {\n set.push(arr[i]);\n }\n }\n }\n\n function hasHandler(emitter, type) {\n return getHandlers(emitter, type).length > 0;\n } // Add on and off methods to a constructor's prototype, to make\n // registering events on such objects more convenient.\n\n\n function eventMixin(ctor) {\n ctor.prototype.on = function (type, f) {\n on(this, type, f);\n };\n\n ctor.prototype.off = function (type, f) {\n off(this, type, f);\n };\n } // Due to the fact that we still support jurassic IE versions, some\n // compatibility wrappers are needed.\n\n\n function e_preventDefault(e) {\n if (e.preventDefault) {\n e.preventDefault();\n } else {\n e.returnValue = false;\n }\n }\n\n function e_stopPropagation(e) {\n if (e.stopPropagation) {\n e.stopPropagation();\n } else {\n e.cancelBubble = true;\n }\n }\n\n function e_defaultPrevented(e) {\n return e.defaultPrevented != null ? e.defaultPrevented : e.returnValue == false;\n }\n\n function e_stop(e) {\n e_preventDefault(e);\n e_stopPropagation(e);\n }\n\n function e_target(e) {\n return e.target || e.srcElement;\n }\n\n function e_button(e) {\n var b = e.which;\n\n if (b == null) {\n if (e.button & 1) {\n b = 1;\n } else if (e.button & 2) {\n b = 3;\n } else if (e.button & 4) {\n b = 2;\n }\n }\n\n if (mac && e.ctrlKey && b == 1) {\n b = 3;\n }\n\n return b;\n } // Detect drag-and-drop\n\n\n var dragAndDrop = function () {\n // There is *some* kind of drag-and-drop support in IE6-8, but I\n // couldn't get it to work yet.\n if (ie && ie_version < 9) {\n return false;\n }\n\n var div = elt('div');\n return \"draggable\" in div || \"dragDrop\" in div;\n }();\n\n var zwspSupported;\n\n function zeroWidthElement(measure) {\n if (zwspSupported == null) {\n var test = elt(\"span\", \"\\u200B\");\n removeChildrenAndAdd(measure, elt(\"span\", [test, document.createTextNode(\"x\")]));\n\n if (measure.firstChild.offsetHeight != 0) {\n zwspSupported = test.offsetWidth <= 1 && test.offsetHeight > 2 && !(ie && ie_version < 8);\n }\n }\n\n var node = zwspSupported ? elt(\"span\", \"\\u200B\") : elt(\"span\", \"\\xA0\", null, \"display: inline-block; width: 1px; margin-right: -1px\");\n node.setAttribute(\"cm-text\", \"\");\n return node;\n } // Feature-detect IE's crummy client rect reporting for bidi text\n\n\n var badBidiRects;\n\n function hasBadBidiRects(measure) {\n if (badBidiRects != null) {\n return badBidiRects;\n }\n\n var txt = removeChildrenAndAdd(measure, document.createTextNode(\"A\\u062EA\"));\n var r0 = range(txt, 0, 1).getBoundingClientRect();\n var r1 = range(txt, 1, 2).getBoundingClientRect();\n removeChildren(measure);\n\n if (!r0 || r0.left == r0.right) {\n return false;\n } // Safari returns null in some cases (#2780)\n\n\n return badBidiRects = r1.right - r0.right < 3;\n } // See if \"\".split is the broken IE version, if so, provide an\n // alternative way to split lines.\n\n\n var splitLinesAuto = \"\\n\\nb\".split(/\\n/).length != 3 ? function (string) {\n var pos = 0,\n result = [],\n l = string.length;\n\n while (pos <= l) {\n var nl = string.indexOf(\"\\n\", pos);\n\n if (nl == -1) {\n nl = string.length;\n }\n\n var line = string.slice(pos, string.charAt(nl - 1) == \"\\r\" ? nl - 1 : nl);\n var rt = line.indexOf(\"\\r\");\n\n if (rt != -1) {\n result.push(line.slice(0, rt));\n pos += rt + 1;\n } else {\n result.push(line);\n pos = nl + 1;\n }\n }\n\n return result;\n } : function (string) {\n return string.split(/\\r\\n?|\\n/);\n };\n var hasSelection = window.getSelection ? function (te) {\n try {\n return te.selectionStart != te.selectionEnd;\n } catch (e) {\n return false;\n }\n } : function (te) {\n var range;\n\n try {\n range = te.ownerDocument.selection.createRange();\n } catch (e) {}\n\n if (!range || range.parentElement() != te) {\n return false;\n }\n\n return range.compareEndPoints(\"StartToEnd\", range) != 0;\n };\n\n var hasCopyEvent = function () {\n var e = elt(\"div\");\n\n if (\"oncopy\" in e) {\n return true;\n }\n\n e.setAttribute(\"oncopy\", \"return;\");\n return typeof e.oncopy == \"function\";\n }();\n\n var badZoomedRects = null;\n\n function hasBadZoomedRects(measure) {\n if (badZoomedRects != null) {\n return badZoomedRects;\n }\n\n var node = removeChildrenAndAdd(measure, elt(\"span\", \"x\"));\n var normal = node.getBoundingClientRect();\n var fromRange = range(node, 0, 1).getBoundingClientRect();\n return badZoomedRects = Math.abs(normal.left - fromRange.left) > 1;\n } // Known modes, by name and by MIME\n\n\n var modes = {},\n mimeModes = {}; // Extra arguments are stored as the mode's dependencies, which is\n // used by (legacy) mechanisms like loadmode.js to automatically\n // load a mode. (Preferred mechanism is the require/define calls.)\n\n function defineMode(name, mode) {\n if (arguments.length > 2) {\n mode.dependencies = Array.prototype.slice.call(arguments, 2);\n }\n\n modes[name] = mode;\n }\n\n function defineMIME(mime, spec) {\n mimeModes[mime] = spec;\n } // Given a MIME type, a {name, ...options} config object, or a name\n // string, return a mode config object.\n\n\n function resolveMode(spec) {\n if (typeof spec == \"string\" && mimeModes.hasOwnProperty(spec)) {\n spec = mimeModes[spec];\n } else if (spec && typeof spec.name == \"string\" && mimeModes.hasOwnProperty(spec.name)) {\n var found = mimeModes[spec.name];\n\n if (typeof found == \"string\") {\n found = {\n name: found\n };\n }\n\n spec = createObj(found, spec);\n spec.name = found.name;\n } else if (typeof spec == \"string\" && /^[\\w\\-]+\\/[\\w\\-]+\\+xml$/.test(spec)) {\n return resolveMode(\"application/xml\");\n } else if (typeof spec == \"string\" && /^[\\w\\-]+\\/[\\w\\-]+\\+json$/.test(spec)) {\n return resolveMode(\"application/json\");\n }\n\n if (typeof spec == \"string\") {\n return {\n name: spec\n };\n } else {\n return spec || {\n name: \"null\"\n };\n }\n } // Given a mode spec (anything that resolveMode accepts), find and\n // initialize an actual mode object.\n\n\n function getMode(options, spec) {\n spec = resolveMode(spec);\n var mfactory = modes[spec.name];\n\n if (!mfactory) {\n return getMode(options, \"text/plain\");\n }\n\n var modeObj = mfactory(options, spec);\n\n if (modeExtensions.hasOwnProperty(spec.name)) {\n var exts = modeExtensions[spec.name];\n\n for (var prop in exts) {\n if (!exts.hasOwnProperty(prop)) {\n continue;\n }\n\n if (modeObj.hasOwnProperty(prop)) {\n modeObj[\"_\" + prop] = modeObj[prop];\n }\n\n modeObj[prop] = exts[prop];\n }\n }\n\n modeObj.name = spec.name;\n\n if (spec.helperType) {\n modeObj.helperType = spec.helperType;\n }\n\n if (spec.modeProps) {\n for (var prop$1 in spec.modeProps) {\n modeObj[prop$1] = spec.modeProps[prop$1];\n }\n }\n\n return modeObj;\n } // This can be used to attach properties to mode objects from\n // outside the actual mode definition.\n\n\n var modeExtensions = {};\n\n function extendMode(mode, properties) {\n var exts = modeExtensions.hasOwnProperty(mode) ? modeExtensions[mode] : modeExtensions[mode] = {};\n copyObj(properties, exts);\n }\n\n function copyState(mode, state) {\n if (state === true) {\n return state;\n }\n\n if (mode.copyState) {\n return mode.copyState(state);\n }\n\n var nstate = {};\n\n for (var n in state) {\n var val = state[n];\n\n if (val instanceof Array) {\n val = val.concat([]);\n }\n\n nstate[n] = val;\n }\n\n return nstate;\n } // Given a mode and a state (for that mode), find the inner mode and\n // state at the position that the state refers to.\n\n\n function innerMode(mode, state) {\n var info;\n\n while (mode.innerMode) {\n info = mode.innerMode(state);\n\n if (!info || info.mode == mode) {\n break;\n }\n\n state = info.state;\n mode = info.mode;\n }\n\n return info || {\n mode: mode,\n state: state\n };\n }\n\n function startState(mode, a1, a2) {\n return mode.startState ? mode.startState(a1, a2) : true;\n } // STRING STREAM\n // Fed to the mode parsers, provides helper functions to make\n // parsers more succinct.\n\n\n var StringStream = function StringStream(string, tabSize, lineOracle) {\n this.pos = this.start = 0;\n this.string = string;\n this.tabSize = tabSize || 8;\n this.lastColumnPos = this.lastColumnValue = 0;\n this.lineStart = 0;\n this.lineOracle = lineOracle;\n };\n\n StringStream.prototype.eol = function () {\n return this.pos >= this.string.length;\n };\n\n StringStream.prototype.sol = function () {\n return this.pos == this.lineStart;\n };\n\n StringStream.prototype.peek = function () {\n return this.string.charAt(this.pos) || undefined;\n };\n\n StringStream.prototype.next = function () {\n if (this.pos < this.string.length) {\n return this.string.charAt(this.pos++);\n }\n };\n\n StringStream.prototype.eat = function (match) {\n var ch = this.string.charAt(this.pos);\n var ok;\n\n if (typeof match == \"string\") {\n ok = ch == match;\n } else {\n ok = ch && (match.test ? match.test(ch) : match(ch));\n }\n\n if (ok) {\n ++this.pos;\n return ch;\n }\n };\n\n StringStream.prototype.eatWhile = function (match) {\n var start = this.pos;\n\n while (this.eat(match)) {}\n\n return this.pos > start;\n };\n\n StringStream.prototype.eatSpace = function () {\n var start = this.pos;\n\n while (/[\\s\\u00a0]/.test(this.string.charAt(this.pos))) {\n ++this.pos;\n }\n\n return this.pos > start;\n };\n\n StringStream.prototype.skipToEnd = function () {\n this.pos = this.string.length;\n };\n\n StringStream.prototype.skipTo = function (ch) {\n var found = this.string.indexOf(ch, this.pos);\n\n if (found > -1) {\n this.pos = found;\n return true;\n }\n };\n\n StringStream.prototype.backUp = function (n) {\n this.pos -= n;\n };\n\n StringStream.prototype.column = function () {\n if (this.lastColumnPos < this.start) {\n this.lastColumnValue = countColumn(this.string, this.start, this.tabSize, this.lastColumnPos, this.lastColumnValue);\n this.lastColumnPos = this.start;\n }\n\n return this.lastColumnValue - (this.lineStart ? countColumn(this.string, this.lineStart, this.tabSize) : 0);\n };\n\n StringStream.prototype.indentation = function () {\n return countColumn(this.string, null, this.tabSize) - (this.lineStart ? countColumn(this.string, this.lineStart, this.tabSize) : 0);\n };\n\n StringStream.prototype.match = function (pattern, consume, caseInsensitive) {\n if (typeof pattern == \"string\") {\n var cased = function cased(str) {\n return caseInsensitive ? str.toLowerCase() : str;\n };\n\n var substr = this.string.substr(this.pos, pattern.length);\n\n if (cased(substr) == cased(pattern)) {\n if (consume !== false) {\n this.pos += pattern.length;\n }\n\n return true;\n }\n } else {\n var match = this.string.slice(this.pos).match(pattern);\n\n if (match && match.index > 0) {\n return null;\n }\n\n if (match && consume !== false) {\n this.pos += match[0].length;\n }\n\n return match;\n }\n };\n\n StringStream.prototype.current = function () {\n return this.string.slice(this.start, this.pos);\n };\n\n StringStream.prototype.hideFirstChars = function (n, inner) {\n this.lineStart += n;\n\n try {\n return inner();\n } finally {\n this.lineStart -= n;\n }\n };\n\n StringStream.prototype.lookAhead = function (n) {\n var oracle = this.lineOracle;\n return oracle && oracle.lookAhead(n);\n };\n\n StringStream.prototype.baseToken = function () {\n var oracle = this.lineOracle;\n return oracle && oracle.baseToken(this.pos);\n }; // Find the line object corresponding to the given line number.\n\n\n function getLine(doc, n) {\n n -= doc.first;\n\n if (n < 0 || n >= doc.size) {\n throw new Error(\"There is no line \" + (n + doc.first) + \" in the document.\");\n }\n\n var chunk = doc;\n\n while (!chunk.lines) {\n for (var i = 0;; ++i) {\n var child = chunk.children[i],\n sz = child.chunkSize();\n\n if (n < sz) {\n chunk = child;\n break;\n }\n\n n -= sz;\n }\n }\n\n return chunk.lines[n];\n } // Get the part of a document between two positions, as an array of\n // strings.\n\n\n function getBetween(doc, start, end) {\n var out = [],\n n = start.line;\n doc.iter(start.line, end.line + 1, function (line) {\n var text = line.text;\n\n if (n == end.line) {\n text = text.slice(0, end.ch);\n }\n\n if (n == start.line) {\n text = text.slice(start.ch);\n }\n\n out.push(text);\n ++n;\n });\n return out;\n } // Get the lines between from and to, as array of strings.\n\n\n function getLines(doc, from, to) {\n var out = [];\n doc.iter(from, to, function (line) {\n out.push(line.text);\n }); // iter aborts when callback returns truthy value\n\n return out;\n } // Update the height of a line, propagating the height change\n // upwards to parent nodes.\n\n\n function updateLineHeight(line, height) {\n var diff = height - line.height;\n\n if (diff) {\n for (var n = line; n; n = n.parent) {\n n.height += diff;\n }\n }\n } // Given a line object, find its line number by walking up through\n // its parent links.\n\n\n function lineNo(line) {\n if (line.parent == null) {\n return null;\n }\n\n var cur = line.parent,\n no = indexOf(cur.lines, line);\n\n for (var chunk = cur.parent; chunk; cur = chunk, chunk = chunk.parent) {\n for (var i = 0;; ++i) {\n if (chunk.children[i] == cur) {\n break;\n }\n\n no += chunk.children[i].chunkSize();\n }\n }\n\n return no + cur.first;\n } // Find the line at the given vertical position, using the height\n // information in the document tree.\n\n\n function _lineAtHeight(chunk, h) {\n var n = chunk.first;\n\n outer: do {\n for (var i$1 = 0; i$1 < chunk.children.length; ++i$1) {\n var child = chunk.children[i$1],\n ch = child.height;\n\n if (h < ch) {\n chunk = child;\n continue outer;\n }\n\n h -= ch;\n n += child.chunkSize();\n }\n\n return n;\n } while (!chunk.lines);\n\n var i = 0;\n\n for (; i < chunk.lines.length; ++i) {\n var line = chunk.lines[i],\n lh = line.height;\n\n if (h < lh) {\n break;\n }\n\n h -= lh;\n }\n\n return n + i;\n }\n\n function isLine(doc, l) {\n return l >= doc.first && l < doc.first + doc.size;\n }\n\n function lineNumberFor(options, i) {\n return String(options.lineNumberFormatter(i + options.firstLineNumber));\n } // A Pos instance represents a position within the text.\n\n\n function Pos(line, ch, sticky) {\n if (sticky === void 0) sticky = null;\n\n if (!(this instanceof Pos)) {\n return new Pos(line, ch, sticky);\n }\n\n this.line = line;\n this.ch = ch;\n this.sticky = sticky;\n } // Compare two positions, return 0 if they are the same, a negative\n // number when a is less, and a positive number otherwise.\n\n\n function cmp(a, b) {\n return a.line - b.line || a.ch - b.ch;\n }\n\n function equalCursorPos(a, b) {\n return a.sticky == b.sticky && cmp(a, b) == 0;\n }\n\n function copyPos(x) {\n return Pos(x.line, x.ch);\n }\n\n function maxPos(a, b) {\n return cmp(a, b) < 0 ? b : a;\n }\n\n function minPos(a, b) {\n return cmp(a, b) < 0 ? a : b;\n } // Most of the external API clips given positions to make sure they\n // actually exist within the document.\n\n\n function clipLine(doc, n) {\n return Math.max(doc.first, Math.min(n, doc.first + doc.size - 1));\n }\n\n function _clipPos(doc, pos) {\n if (pos.line < doc.first) {\n return Pos(doc.first, 0);\n }\n\n var last = doc.first + doc.size - 1;\n\n if (pos.line > last) {\n return Pos(last, getLine(doc, last).text.length);\n }\n\n return clipToLen(pos, getLine(doc, pos.line).text.length);\n }\n\n function clipToLen(pos, linelen) {\n var ch = pos.ch;\n\n if (ch == null || ch > linelen) {\n return Pos(pos.line, linelen);\n } else if (ch < 0) {\n return Pos(pos.line, 0);\n } else {\n return pos;\n }\n }\n\n function clipPosArray(doc, array) {\n var out = [];\n\n for (var i = 0; i < array.length; i++) {\n out[i] = _clipPos(doc, array[i]);\n }\n\n return out;\n }\n\n var SavedContext = function SavedContext(state, lookAhead) {\n this.state = state;\n this.lookAhead = lookAhead;\n };\n\n var Context = function Context(doc, state, line, lookAhead) {\n this.state = state;\n this.doc = doc;\n this.line = line;\n this.maxLookAhead = lookAhead || 0;\n this.baseTokens = null;\n this.baseTokenPos = 1;\n };\n\n Context.prototype.lookAhead = function (n) {\n var line = this.doc.getLine(this.line + n);\n\n if (line != null && n > this.maxLookAhead) {\n this.maxLookAhead = n;\n }\n\n return line;\n };\n\n Context.prototype.baseToken = function (n) {\n if (!this.baseTokens) {\n return null;\n }\n\n while (this.baseTokens[this.baseTokenPos] <= n) {\n this.baseTokenPos += 2;\n }\n\n var type = this.baseTokens[this.baseTokenPos + 1];\n return {\n type: type && type.replace(/( |^)overlay .*/, \"\"),\n size: this.baseTokens[this.baseTokenPos] - n\n };\n };\n\n Context.prototype.nextLine = function () {\n this.line++;\n\n if (this.maxLookAhead > 0) {\n this.maxLookAhead--;\n }\n };\n\n Context.fromSaved = function (doc, saved, line) {\n if (saved instanceof SavedContext) {\n return new Context(doc, copyState(doc.mode, saved.state), line, saved.lookAhead);\n } else {\n return new Context(doc, copyState(doc.mode, saved), line);\n }\n };\n\n Context.prototype.save = function (copy) {\n var state = copy !== false ? copyState(this.doc.mode, this.state) : this.state;\n return this.maxLookAhead > 0 ? new SavedContext(state, this.maxLookAhead) : state;\n }; // Compute a style array (an array starting with a mode generation\n // -- for invalidation -- followed by pairs of end positions and\n // style strings), which is used to highlight the tokens on the\n // line.\n\n\n function highlightLine(cm, line, context, forceToEnd) {\n // A styles array always starts with a number identifying the\n // mode/overlays that it is based on (for easy invalidation).\n var st = [cm.state.modeGen],\n lineClasses = {}; // Compute the base array of styles\n\n runMode(cm, line.text, cm.doc.mode, context, function (end, style) {\n return st.push(end, style);\n }, lineClasses, forceToEnd);\n var state = context.state; // Run overlays, adjust style array.\n\n var loop = function loop(o) {\n context.baseTokens = st;\n var overlay = cm.state.overlays[o],\n i = 1,\n at = 0;\n context.state = true;\n runMode(cm, line.text, overlay.mode, context, function (end, style) {\n var start = i; // Ensure there's a token end at the current position, and that i points at it\n\n while (at < end) {\n var i_end = st[i];\n\n if (i_end > end) {\n st.splice(i, 1, end, st[i + 1], i_end);\n }\n\n i += 2;\n at = Math.min(end, i_end);\n }\n\n if (!style) {\n return;\n }\n\n if (overlay.opaque) {\n st.splice(start, i - start, end, \"overlay \" + style);\n i = start + 2;\n } else {\n for (; start < i; start += 2) {\n var cur = st[start + 1];\n st[start + 1] = (cur ? cur + \" \" : \"\") + \"overlay \" + style;\n }\n }\n }, lineClasses);\n context.state = state;\n context.baseTokens = null;\n context.baseTokenPos = 1;\n };\n\n for (var o = 0; o < cm.state.overlays.length; ++o) {\n loop(o);\n }\n\n return {\n styles: st,\n classes: lineClasses.bgClass || lineClasses.textClass ? lineClasses : null\n };\n }\n\n function getLineStyles(cm, line, updateFrontier) {\n if (!line.styles || line.styles[0] != cm.state.modeGen) {\n var context = getContextBefore(cm, lineNo(line));\n var resetState = line.text.length > cm.options.maxHighlightLength && copyState(cm.doc.mode, context.state);\n var result = highlightLine(cm, line, context);\n\n if (resetState) {\n context.state = resetState;\n }\n\n line.stateAfter = context.save(!resetState);\n line.styles = result.styles;\n\n if (result.classes) {\n line.styleClasses = result.classes;\n } else if (line.styleClasses) {\n line.styleClasses = null;\n }\n\n if (updateFrontier === cm.doc.highlightFrontier) {\n cm.doc.modeFrontier = Math.max(cm.doc.modeFrontier, ++cm.doc.highlightFrontier);\n }\n }\n\n return line.styles;\n }\n\n function getContextBefore(cm, n, precise) {\n var doc = cm.doc,\n display = cm.display;\n\n if (!doc.mode.startState) {\n return new Context(doc, true, n);\n }\n\n var start = findStartLine(cm, n, precise);\n var saved = start > doc.first && getLine(doc, start - 1).stateAfter;\n var context = saved ? Context.fromSaved(doc, saved, start) : new Context(doc, startState(doc.mode), start);\n doc.iter(start, n, function (line) {\n processLine(cm, line.text, context);\n var pos = context.line;\n line.stateAfter = pos == n - 1 || pos % 5 == 0 || pos >= display.viewFrom && pos < display.viewTo ? context.save() : null;\n context.nextLine();\n });\n\n if (precise) {\n doc.modeFrontier = context.line;\n }\n\n return context;\n } // Lightweight form of highlight -- proceed over this line and\n // update state, but don't save a style array. Used for lines that\n // aren't currently visible.\n\n\n function processLine(cm, text, context, startAt) {\n var mode = cm.doc.mode;\n var stream = new StringStream(text, cm.options.tabSize, context);\n stream.start = stream.pos = startAt || 0;\n\n if (text == \"\") {\n callBlankLine(mode, context.state);\n }\n\n while (!stream.eol()) {\n readToken(mode, stream, context.state);\n stream.start = stream.pos;\n }\n }\n\n function callBlankLine(mode, state) {\n if (mode.blankLine) {\n return mode.blankLine(state);\n }\n\n if (!mode.innerMode) {\n return;\n }\n\n var inner = innerMode(mode, state);\n\n if (inner.mode.blankLine) {\n return inner.mode.blankLine(inner.state);\n }\n }\n\n function readToken(mode, stream, state, inner) {\n for (var i = 0; i < 10; i++) {\n if (inner) {\n inner[0] = innerMode(mode, state).mode;\n }\n\n var style = mode.token(stream, state);\n\n if (stream.pos > stream.start) {\n return style;\n }\n }\n\n throw new Error(\"Mode \" + mode.name + \" failed to advance stream.\");\n }\n\n var Token = function Token(stream, type, state) {\n this.start = stream.start;\n this.end = stream.pos;\n this.string = stream.current();\n this.type = type || null;\n this.state = state;\n }; // Utility for getTokenAt and getLineTokens\n\n\n function takeToken(cm, pos, precise, asArray) {\n var doc = cm.doc,\n mode = doc.mode,\n style;\n pos = _clipPos(doc, pos);\n var line = getLine(doc, pos.line),\n context = getContextBefore(cm, pos.line, precise);\n var stream = new StringStream(line.text, cm.options.tabSize, context),\n tokens;\n\n if (asArray) {\n tokens = [];\n }\n\n while ((asArray || stream.pos < pos.ch) && !stream.eol()) {\n stream.start = stream.pos;\n style = readToken(mode, stream, context.state);\n\n if (asArray) {\n tokens.push(new Token(stream, style, copyState(doc.mode, context.state)));\n }\n }\n\n return asArray ? tokens : new Token(stream, style, context.state);\n }\n\n function extractLineClasses(type, output) {\n if (type) {\n for (;;) {\n var lineClass = type.match(/(?:^|\\s+)line-(background-)?(\\S+)/);\n\n if (!lineClass) {\n break;\n }\n\n type = type.slice(0, lineClass.index) + type.slice(lineClass.index + lineClass[0].length);\n var prop = lineClass[1] ? \"bgClass\" : \"textClass\";\n\n if (output[prop] == null) {\n output[prop] = lineClass[2];\n } else if (!new RegExp(\"(?:^|\\\\s)\" + lineClass[2] + \"(?:$|\\\\s)\").test(output[prop])) {\n output[prop] += \" \" + lineClass[2];\n }\n }\n }\n\n return type;\n } // Run the given mode's parser over a line, calling f for each token.\n\n\n function runMode(cm, text, mode, context, f, lineClasses, forceToEnd) {\n var flattenSpans = mode.flattenSpans;\n\n if (flattenSpans == null) {\n flattenSpans = cm.options.flattenSpans;\n }\n\n var curStart = 0,\n curStyle = null;\n var stream = new StringStream(text, cm.options.tabSize, context),\n style;\n var inner = cm.options.addModeClass && [null];\n\n if (text == \"\") {\n extractLineClasses(callBlankLine(mode, context.state), lineClasses);\n }\n\n while (!stream.eol()) {\n if (stream.pos > cm.options.maxHighlightLength) {\n flattenSpans = false;\n\n if (forceToEnd) {\n processLine(cm, text, context, stream.pos);\n }\n\n stream.pos = text.length;\n style = null;\n } else {\n style = extractLineClasses(readToken(mode, stream, context.state, inner), lineClasses);\n }\n\n if (inner) {\n var mName = inner[0].name;\n\n if (mName) {\n style = \"m-\" + (style ? mName + \" \" + style : mName);\n }\n }\n\n if (!flattenSpans || curStyle != style) {\n while (curStart < stream.start) {\n curStart = Math.min(stream.start, curStart + 5000);\n f(curStart, curStyle);\n }\n\n curStyle = style;\n }\n\n stream.start = stream.pos;\n }\n\n while (curStart < stream.pos) {\n // Webkit seems to refuse to render text nodes longer than 57444\n // characters, and returns inaccurate measurements in nodes\n // starting around 5000 chars.\n var pos = Math.min(stream.pos, curStart + 5000);\n f(pos, curStyle);\n curStart = pos;\n }\n } // Finds the line to start with when starting a parse. Tries to\n // find a line with a stateAfter, so that it can start with a\n // valid state. If that fails, it returns the line with the\n // smallest indentation, which tends to need the least context to\n // parse correctly.\n\n\n function findStartLine(cm, n, precise) {\n var minindent,\n minline,\n doc = cm.doc;\n var lim = precise ? -1 : n - (cm.doc.mode.innerMode ? 1000 : 100);\n\n for (var search = n; search > lim; --search) {\n if (search <= doc.first) {\n return doc.first;\n }\n\n var line = getLine(doc, search - 1),\n after = line.stateAfter;\n\n if (after && (!precise || search + (after instanceof SavedContext ? after.lookAhead : 0) <= doc.modeFrontier)) {\n return search;\n }\n\n var indented = countColumn(line.text, null, cm.options.tabSize);\n\n if (minline == null || minindent > indented) {\n minline = search - 1;\n minindent = indented;\n }\n }\n\n return minline;\n }\n\n function retreatFrontier(doc, n) {\n doc.modeFrontier = Math.min(doc.modeFrontier, n);\n\n if (doc.highlightFrontier < n - 10) {\n return;\n }\n\n var start = doc.first;\n\n for (var line = n - 1; line > start; line--) {\n var saved = getLine(doc, line).stateAfter; // change is on 3\n // state on line 1 looked ahead 2 -- so saw 3\n // test 1 + 2 < 3 should cover this\n\n if (saved && (!(saved instanceof SavedContext) || line + saved.lookAhead < n)) {\n start = line + 1;\n break;\n }\n }\n\n doc.highlightFrontier = Math.min(doc.highlightFrontier, start);\n } // Optimize some code when these features are not used.\n\n\n var sawReadOnlySpans = false,\n sawCollapsedSpans = false;\n\n function seeReadOnlySpans() {\n sawReadOnlySpans = true;\n }\n\n function seeCollapsedSpans() {\n sawCollapsedSpans = true;\n } // TEXTMARKER SPANS\n\n\n function MarkedSpan(marker, from, to) {\n this.marker = marker;\n this.from = from;\n this.to = to;\n } // Search an array of spans for a span matching the given marker.\n\n\n function getMarkedSpanFor(spans, marker) {\n if (spans) {\n for (var i = 0; i < spans.length; ++i) {\n var span = spans[i];\n\n if (span.marker == marker) {\n return span;\n }\n }\n }\n } // Remove a span from an array, returning undefined if no spans are\n // left (we don't store arrays for lines without spans).\n\n\n function removeMarkedSpan(spans, span) {\n var r;\n\n for (var i = 0; i < spans.length; ++i) {\n if (spans[i] != span) {\n (r || (r = [])).push(spans[i]);\n }\n }\n\n return r;\n } // Add a span to a line.\n\n\n function addMarkedSpan(line, span, op) {\n var inThisOp = op && window.WeakSet && (op.markedSpans || (op.markedSpans = new WeakSet()));\n\n if (inThisOp && inThisOp.has(line.markedSpans)) {\n line.markedSpans.push(span);\n } else {\n line.markedSpans = line.markedSpans ? line.markedSpans.concat([span]) : [span];\n\n if (inThisOp) {\n inThisOp.add(line.markedSpans);\n }\n }\n\n span.marker.attachLine(line);\n } // Used for the algorithm that adjusts markers for a change in the\n // document. These functions cut an array of spans at a given\n // character position, returning an array of remaining chunks (or\n // undefined if nothing remains).\n\n\n function markedSpansBefore(old, startCh, isInsert) {\n var nw;\n\n if (old) {\n for (var i = 0; i < old.length; ++i) {\n var span = old[i],\n marker = span.marker;\n var startsBefore = span.from == null || (marker.inclusiveLeft ? span.from <= startCh : span.from < startCh);\n\n if (startsBefore || span.from == startCh && marker.type == \"bookmark\" && (!isInsert || !span.marker.insertLeft)) {\n var endsAfter = span.to == null || (marker.inclusiveRight ? span.to >= startCh : span.to > startCh);\n (nw || (nw = [])).push(new MarkedSpan(marker, span.from, endsAfter ? null : span.to));\n }\n }\n }\n\n return nw;\n }\n\n function markedSpansAfter(old, endCh, isInsert) {\n var nw;\n\n if (old) {\n for (var i = 0; i < old.length; ++i) {\n var span = old[i],\n marker = span.marker;\n var endsAfter = span.to == null || (marker.inclusiveRight ? span.to >= endCh : span.to > endCh);\n\n if (endsAfter || span.from == endCh && marker.type == \"bookmark\" && (!isInsert || span.marker.insertLeft)) {\n var startsBefore = span.from == null || (marker.inclusiveLeft ? span.from <= endCh : span.from < endCh);\n (nw || (nw = [])).push(new MarkedSpan(marker, startsBefore ? null : span.from - endCh, span.to == null ? null : span.to - endCh));\n }\n }\n }\n\n return nw;\n } // Given a change object, compute the new set of marker spans that\n // cover the line in which the change took place. Removes spans\n // entirely within the change, reconnects spans belonging to the\n // same marker that appear on both sides of the change, and cuts off\n // spans partially within the change. Returns an array of span\n // arrays with one element for each line in (after) the change.\n\n\n function stretchSpansOverChange(doc, change) {\n if (change.full) {\n return null;\n }\n\n var oldFirst = isLine(doc, change.from.line) && getLine(doc, change.from.line).markedSpans;\n var oldLast = isLine(doc, change.to.line) && getLine(doc, change.to.line).markedSpans;\n\n if (!oldFirst && !oldLast) {\n return null;\n }\n\n var startCh = change.from.ch,\n endCh = change.to.ch,\n isInsert = cmp(change.from, change.to) == 0; // Get the spans that 'stick out' on both sides\n\n var first = markedSpansBefore(oldFirst, startCh, isInsert);\n var last = markedSpansAfter(oldLast, endCh, isInsert); // Next, merge those two ends\n\n var sameLine = change.text.length == 1,\n offset = lst(change.text).length + (sameLine ? startCh : 0);\n\n if (first) {\n // Fix up .to properties of first\n for (var i = 0; i < first.length; ++i) {\n var span = first[i];\n\n if (span.to == null) {\n var found = getMarkedSpanFor(last, span.marker);\n\n if (!found) {\n span.to = startCh;\n } else if (sameLine) {\n span.to = found.to == null ? null : found.to + offset;\n }\n }\n }\n }\n\n if (last) {\n // Fix up .from in last (or move them into first in case of sameLine)\n for (var i$1 = 0; i$1 < last.length; ++i$1) {\n var span$1 = last[i$1];\n\n if (span$1.to != null) {\n span$1.to += offset;\n }\n\n if (span$1.from == null) {\n var found$1 = getMarkedSpanFor(first, span$1.marker);\n\n if (!found$1) {\n span$1.from = offset;\n\n if (sameLine) {\n (first || (first = [])).push(span$1);\n }\n }\n } else {\n span$1.from += offset;\n\n if (sameLine) {\n (first || (first = [])).push(span$1);\n }\n }\n }\n } // Make sure we didn't create any zero-length spans\n\n\n if (first) {\n first = clearEmptySpans(first);\n }\n\n if (last && last != first) {\n last = clearEmptySpans(last);\n }\n\n var newMarkers = [first];\n\n if (!sameLine) {\n // Fill gap with whole-line-spans\n var gap = change.text.length - 2,\n gapMarkers;\n\n if (gap > 0 && first) {\n for (var i$2 = 0; i$2 < first.length; ++i$2) {\n if (first[i$2].to == null) {\n (gapMarkers || (gapMarkers = [])).push(new MarkedSpan(first[i$2].marker, null, null));\n }\n }\n }\n\n for (var i$3 = 0; i$3 < gap; ++i$3) {\n newMarkers.push(gapMarkers);\n }\n\n newMarkers.push(last);\n }\n\n return newMarkers;\n } // Remove spans that are empty and don't have a clearWhenEmpty\n // option of false.\n\n\n function clearEmptySpans(spans) {\n for (var i = 0; i < spans.length; ++i) {\n var span = spans[i];\n\n if (span.from != null && span.from == span.to && span.marker.clearWhenEmpty !== false) {\n spans.splice(i--, 1);\n }\n }\n\n if (!spans.length) {\n return null;\n }\n\n return spans;\n } // Used to 'clip' out readOnly ranges when making a change.\n\n\n function removeReadOnlyRanges(doc, from, to) {\n var markers = null;\n doc.iter(from.line, to.line + 1, function (line) {\n if (line.markedSpans) {\n for (var i = 0; i < line.markedSpans.length; ++i) {\n var mark = line.markedSpans[i].marker;\n\n if (mark.readOnly && (!markers || indexOf(markers, mark) == -1)) {\n (markers || (markers = [])).push(mark);\n }\n }\n }\n });\n\n if (!markers) {\n return null;\n }\n\n var parts = [{\n from: from,\n to: to\n }];\n\n for (var i = 0; i < markers.length; ++i) {\n var mk = markers[i],\n m = mk.find(0);\n\n for (var j = 0; j < parts.length; ++j) {\n var p = parts[j];\n\n if (cmp(p.to, m.from) < 0 || cmp(p.from, m.to) > 0) {\n continue;\n }\n\n var newParts = [j, 1],\n dfrom = cmp(p.from, m.from),\n dto = cmp(p.to, m.to);\n\n if (dfrom < 0 || !mk.inclusiveLeft && !dfrom) {\n newParts.push({\n from: p.from,\n to: m.from\n });\n }\n\n if (dto > 0 || !mk.inclusiveRight && !dto) {\n newParts.push({\n from: m.to,\n to: p.to\n });\n }\n\n parts.splice.apply(parts, newParts);\n j += newParts.length - 3;\n }\n }\n\n return parts;\n } // Connect or disconnect spans from a line.\n\n\n function detachMarkedSpans(line) {\n var spans = line.markedSpans;\n\n if (!spans) {\n return;\n }\n\n for (var i = 0; i < spans.length; ++i) {\n spans[i].marker.detachLine(line);\n }\n\n line.markedSpans = null;\n }\n\n function attachMarkedSpans(line, spans) {\n if (!spans) {\n return;\n }\n\n for (var i = 0; i < spans.length; ++i) {\n spans[i].marker.attachLine(line);\n }\n\n line.markedSpans = spans;\n } // Helpers used when computing which overlapping collapsed span\n // counts as the larger one.\n\n\n function extraLeft(marker) {\n return marker.inclusiveLeft ? -1 : 0;\n }\n\n function extraRight(marker) {\n return marker.inclusiveRight ? 1 : 0;\n } // Returns a number indicating which of two overlapping collapsed\n // spans is larger (and thus includes the other). Falls back to\n // comparing ids when the spans cover exactly the same range.\n\n\n function compareCollapsedMarkers(a, b) {\n var lenDiff = a.lines.length - b.lines.length;\n\n if (lenDiff != 0) {\n return lenDiff;\n }\n\n var aPos = a.find(),\n bPos = b.find();\n var fromCmp = cmp(aPos.from, bPos.from) || extraLeft(a) - extraLeft(b);\n\n if (fromCmp) {\n return -fromCmp;\n }\n\n var toCmp = cmp(aPos.to, bPos.to) || extraRight(a) - extraRight(b);\n\n if (toCmp) {\n return toCmp;\n }\n\n return b.id - a.id;\n } // Find out whether a line ends or starts in a collapsed span. If\n // so, return the marker for that span.\n\n\n function collapsedSpanAtSide(line, start) {\n var sps = sawCollapsedSpans && line.markedSpans,\n found;\n\n if (sps) {\n for (var sp = void 0, i = 0; i < sps.length; ++i) {\n sp = sps[i];\n\n if (sp.marker.collapsed && (start ? sp.from : sp.to) == null && (!found || compareCollapsedMarkers(found, sp.marker) < 0)) {\n found = sp.marker;\n }\n }\n }\n\n return found;\n }\n\n function collapsedSpanAtStart(line) {\n return collapsedSpanAtSide(line, true);\n }\n\n function collapsedSpanAtEnd(line) {\n return collapsedSpanAtSide(line, false);\n }\n\n function collapsedSpanAround(line, ch) {\n var sps = sawCollapsedSpans && line.markedSpans,\n found;\n\n if (sps) {\n for (var i = 0; i < sps.length; ++i) {\n var sp = sps[i];\n\n if (sp.marker.collapsed && (sp.from == null || sp.from < ch) && (sp.to == null || sp.to > ch) && (!found || compareCollapsedMarkers(found, sp.marker) < 0)) {\n found = sp.marker;\n }\n }\n }\n\n return found;\n } // Test whether there exists a collapsed span that partially\n // overlaps (covers the start or end, but not both) of a new span.\n // Such overlap is not allowed.\n\n\n function conflictingCollapsedRange(doc, lineNo, from, to, marker) {\n var line = getLine(doc, lineNo);\n var sps = sawCollapsedSpans && line.markedSpans;\n\n if (sps) {\n for (var i = 0; i < sps.length; ++i) {\n var sp = sps[i];\n\n if (!sp.marker.collapsed) {\n continue;\n }\n\n var found = sp.marker.find(0);\n var fromCmp = cmp(found.from, from) || extraLeft(sp.marker) - extraLeft(marker);\n var toCmp = cmp(found.to, to) || extraRight(sp.marker) - extraRight(marker);\n\n if (fromCmp >= 0 && toCmp <= 0 || fromCmp <= 0 && toCmp >= 0) {\n continue;\n }\n\n if (fromCmp <= 0 && (sp.marker.inclusiveRight && marker.inclusiveLeft ? cmp(found.to, from) >= 0 : cmp(found.to, from) > 0) || fromCmp >= 0 && (sp.marker.inclusiveRight && marker.inclusiveLeft ? cmp(found.from, to) <= 0 : cmp(found.from, to) < 0)) {\n return true;\n }\n }\n }\n } // A visual line is a line as drawn on the screen. Folding, for\n // example, can cause multiple logical lines to appear on the same\n // visual line. This finds the start of the visual line that the\n // given line is part of (usually that is the line itself).\n\n\n function visualLine(line) {\n var merged;\n\n while (merged = collapsedSpanAtStart(line)) {\n line = merged.find(-1, true).line;\n }\n\n return line;\n }\n\n function visualLineEnd(line) {\n var merged;\n\n while (merged = collapsedSpanAtEnd(line)) {\n line = merged.find(1, true).line;\n }\n\n return line;\n } // Returns an array of logical lines that continue the visual line\n // started by the argument, or undefined if there are no such lines.\n\n\n function visualLineContinued(line) {\n var merged, lines;\n\n while (merged = collapsedSpanAtEnd(line)) {\n line = merged.find(1, true).line;\n (lines || (lines = [])).push(line);\n }\n\n return lines;\n } // Get the line number of the start of the visual line that the\n // given line number is part of.\n\n\n function visualLineNo(doc, lineN) {\n var line = getLine(doc, lineN),\n vis = visualLine(line);\n\n if (line == vis) {\n return lineN;\n }\n\n return lineNo(vis);\n } // Get the line number of the start of the next visual line after\n // the given line.\n\n\n function visualLineEndNo(doc, lineN) {\n if (lineN > doc.lastLine()) {\n return lineN;\n }\n\n var line = getLine(doc, lineN),\n merged;\n\n if (!lineIsHidden(doc, line)) {\n return lineN;\n }\n\n while (merged = collapsedSpanAtEnd(line)) {\n line = merged.find(1, true).line;\n }\n\n return lineNo(line) + 1;\n } // Compute whether a line is hidden. Lines count as hidden when they\n // are part of a visual line that starts with another line, or when\n // they are entirely covered by collapsed, non-widget span.\n\n\n function lineIsHidden(doc, line) {\n var sps = sawCollapsedSpans && line.markedSpans;\n\n if (sps) {\n for (var sp = void 0, i = 0; i < sps.length; ++i) {\n sp = sps[i];\n\n if (!sp.marker.collapsed) {\n continue;\n }\n\n if (sp.from == null) {\n return true;\n }\n\n if (sp.marker.widgetNode) {\n continue;\n }\n\n if (sp.from == 0 && sp.marker.inclusiveLeft && lineIsHiddenInner(doc, line, sp)) {\n return true;\n }\n }\n }\n }\n\n function lineIsHiddenInner(doc, line, span) {\n if (span.to == null) {\n var end = span.marker.find(1, true);\n return lineIsHiddenInner(doc, end.line, getMarkedSpanFor(end.line.markedSpans, span.marker));\n }\n\n if (span.marker.inclusiveRight && span.to == line.text.length) {\n return true;\n }\n\n for (var sp = void 0, i = 0; i < line.markedSpans.length; ++i) {\n sp = line.markedSpans[i];\n\n if (sp.marker.collapsed && !sp.marker.widgetNode && sp.from == span.to && (sp.to == null || sp.to != span.from) && (sp.marker.inclusiveLeft || span.marker.inclusiveRight) && lineIsHiddenInner(doc, line, sp)) {\n return true;\n }\n }\n } // Find the height above the given line.\n\n\n function _heightAtLine(lineObj) {\n lineObj = visualLine(lineObj);\n var h = 0,\n chunk = lineObj.parent;\n\n for (var i = 0; i < chunk.lines.length; ++i) {\n var line = chunk.lines[i];\n\n if (line == lineObj) {\n break;\n } else {\n h += line.height;\n }\n }\n\n for (var p = chunk.parent; p; chunk = p, p = chunk.parent) {\n for (var i$1 = 0; i$1 < p.children.length; ++i$1) {\n var cur = p.children[i$1];\n\n if (cur == chunk) {\n break;\n } else {\n h += cur.height;\n }\n }\n }\n\n return h;\n } // Compute the character length of a line, taking into account\n // collapsed ranges (see markText) that might hide parts, and join\n // other lines onto it.\n\n\n function lineLength(line) {\n if (line.height == 0) {\n return 0;\n }\n\n var len = line.text.length,\n merged,\n cur = line;\n\n while (merged = collapsedSpanAtStart(cur)) {\n var found = merged.find(0, true);\n cur = found.from.line;\n len += found.from.ch - found.to.ch;\n }\n\n cur = line;\n\n while (merged = collapsedSpanAtEnd(cur)) {\n var found$1 = merged.find(0, true);\n len -= cur.text.length - found$1.from.ch;\n cur = found$1.to.line;\n len += cur.text.length - found$1.to.ch;\n }\n\n return len;\n } // Find the longest line in the document.\n\n\n function findMaxLine(cm) {\n var d = cm.display,\n doc = cm.doc;\n d.maxLine = getLine(doc, doc.first);\n d.maxLineLength = lineLength(d.maxLine);\n d.maxLineChanged = true;\n doc.iter(function (line) {\n var len = lineLength(line);\n\n if (len > d.maxLineLength) {\n d.maxLineLength = len;\n d.maxLine = line;\n }\n });\n } // LINE DATA STRUCTURE\n // Line objects. These hold state related to a line, including\n // highlighting info (the styles array).\n\n\n var Line = function Line(text, markedSpans, estimateHeight) {\n this.text = text;\n attachMarkedSpans(this, markedSpans);\n this.height = estimateHeight ? estimateHeight(this) : 1;\n };\n\n Line.prototype.lineNo = function () {\n return lineNo(this);\n };\n\n eventMixin(Line); // Change the content (text, markers) of a line. Automatically\n // invalidates cached information and tries to re-estimate the\n // line's height.\n\n function updateLine(line, text, markedSpans, estimateHeight) {\n line.text = text;\n\n if (line.stateAfter) {\n line.stateAfter = null;\n }\n\n if (line.styles) {\n line.styles = null;\n }\n\n if (line.order != null) {\n line.order = null;\n }\n\n detachMarkedSpans(line);\n attachMarkedSpans(line, markedSpans);\n var estHeight = estimateHeight ? estimateHeight(line) : 1;\n\n if (estHeight != line.height) {\n updateLineHeight(line, estHeight);\n }\n } // Detach a line from the document tree and its markers.\n\n\n function cleanUpLine(line) {\n line.parent = null;\n detachMarkedSpans(line);\n } // Convert a style as returned by a mode (either null, or a string\n // containing one or more styles) to a CSS style. This is cached,\n // and also looks for line-wide styles.\n\n\n var styleToClassCache = {},\n styleToClassCacheWithMode = {};\n\n function interpretTokenStyle(style, options) {\n if (!style || /^\\s*$/.test(style)) {\n return null;\n }\n\n var cache = options.addModeClass ? styleToClassCacheWithMode : styleToClassCache;\n return cache[style] || (cache[style] = style.replace(/\\S+/g, \"cm-$&\"));\n } // Render the DOM representation of the text of a line. Also builds\n // up a 'line map', which points at the DOM nodes that represent\n // specific stretches of text, and is used by the measuring code.\n // The returned object contains the DOM node, this map, and\n // information about line-wide styles that were set by the mode.\n\n\n function buildLineContent(cm, lineView) {\n // The padding-right forces the element to have a 'border', which\n // is needed on Webkit to be able to get line-level bounding\n // rectangles for it (in measureChar).\n var content = eltP(\"span\", null, null, webkit ? \"padding-right: .1px\" : null);\n var builder = {\n pre: eltP(\"pre\", [content], \"CodeMirror-line\"),\n content: content,\n col: 0,\n pos: 0,\n cm: cm,\n trailingSpace: false,\n splitSpaces: cm.getOption(\"lineWrapping\")\n };\n lineView.measure = {}; // Iterate over the logical lines that make up this visual line.\n\n for (var i = 0; i <= (lineView.rest ? lineView.rest.length : 0); i++) {\n var line = i ? lineView.rest[i - 1] : lineView.line,\n order = void 0;\n builder.pos = 0;\n builder.addToken = buildToken; // Optionally wire in some hacks into the token-rendering\n // algorithm, to deal with browser quirks.\n\n if (hasBadBidiRects(cm.display.measure) && (order = getOrder(line, cm.doc.direction))) {\n builder.addToken = buildTokenBadBidi(builder.addToken, order);\n }\n\n builder.map = [];\n var allowFrontierUpdate = lineView != cm.display.externalMeasured && lineNo(line);\n insertLineContent(line, builder, getLineStyles(cm, line, allowFrontierUpdate));\n\n if (line.styleClasses) {\n if (line.styleClasses.bgClass) {\n builder.bgClass = joinClasses(line.styleClasses.bgClass, builder.bgClass || \"\");\n }\n\n if (line.styleClasses.textClass) {\n builder.textClass = joinClasses(line.styleClasses.textClass, builder.textClass || \"\");\n }\n } // Ensure at least a single node is present, for measuring.\n\n\n if (builder.map.length == 0) {\n builder.map.push(0, 0, builder.content.appendChild(zeroWidthElement(cm.display.measure)));\n } // Store the map and a cache object for the current logical line\n\n\n if (i == 0) {\n lineView.measure.map = builder.map;\n lineView.measure.cache = {};\n } else {\n (lineView.measure.maps || (lineView.measure.maps = [])).push(builder.map);\n (lineView.measure.caches || (lineView.measure.caches = [])).push({});\n }\n } // See issue #2901\n\n\n if (webkit) {\n var last = builder.content.lastChild;\n\n if (/\\bcm-tab\\b/.test(last.className) || last.querySelector && last.querySelector(\".cm-tab\")) {\n builder.content.className = \"cm-tab-wrap-hack\";\n }\n }\n\n signal(cm, \"renderLine\", cm, lineView.line, builder.pre);\n\n if (builder.pre.className) {\n builder.textClass = joinClasses(builder.pre.className, builder.textClass || \"\");\n }\n\n return builder;\n }\n\n function defaultSpecialCharPlaceholder(ch) {\n var token = elt(\"span\", \"\\u2022\", \"cm-invalidchar\");\n token.title = \"\\\\u\" + ch.charCodeAt(0).toString(16);\n token.setAttribute(\"aria-label\", token.title);\n return token;\n } // Build up the DOM representation for a single token, and add it to\n // the line map. Takes care to render special characters separately.\n\n\n function buildToken(builder, text, style, startStyle, endStyle, css, attributes) {\n if (!text) {\n return;\n }\n\n var displayText = builder.splitSpaces ? splitSpaces(text, builder.trailingSpace) : text;\n var special = builder.cm.state.specialChars,\n mustWrap = false;\n var content;\n\n if (!special.test(text)) {\n builder.col += text.length;\n content = document.createTextNode(displayText);\n builder.map.push(builder.pos, builder.pos + text.length, content);\n\n if (ie && ie_version < 9) {\n mustWrap = true;\n }\n\n builder.pos += text.length;\n } else {\n content = document.createDocumentFragment();\n var pos = 0;\n\n while (true) {\n special.lastIndex = pos;\n var m = special.exec(text);\n var skipped = m ? m.index - pos : text.length - pos;\n\n if (skipped) {\n var txt = document.createTextNode(displayText.slice(pos, pos + skipped));\n\n if (ie && ie_version < 9) {\n content.appendChild(elt(\"span\", [txt]));\n } else {\n content.appendChild(txt);\n }\n\n builder.map.push(builder.pos, builder.pos + skipped, txt);\n builder.col += skipped;\n builder.pos += skipped;\n }\n\n if (!m) {\n break;\n }\n\n pos += skipped + 1;\n var txt$1 = void 0;\n\n if (m[0] == \"\\t\") {\n var tabSize = builder.cm.options.tabSize,\n tabWidth = tabSize - builder.col % tabSize;\n txt$1 = content.appendChild(elt(\"span\", spaceStr(tabWidth), \"cm-tab\"));\n txt$1.setAttribute(\"role\", \"presentation\");\n txt$1.setAttribute(\"cm-text\", \"\\t\");\n builder.col += tabWidth;\n } else if (m[0] == \"\\r\" || m[0] == \"\\n\") {\n txt$1 = content.appendChild(elt(\"span\", m[0] == \"\\r\" ? \"\\u240D\" : \"\\u2424\", \"cm-invalidchar\"));\n txt$1.setAttribute(\"cm-text\", m[0]);\n builder.col += 1;\n } else {\n txt$1 = builder.cm.options.specialCharPlaceholder(m[0]);\n txt$1.setAttribute(\"cm-text\", m[0]);\n\n if (ie && ie_version < 9) {\n content.appendChild(elt(\"span\", [txt$1]));\n } else {\n content.appendChild(txt$1);\n }\n\n builder.col += 1;\n }\n\n builder.map.push(builder.pos, builder.pos + 1, txt$1);\n builder.pos++;\n }\n }\n\n builder.trailingSpace = displayText.charCodeAt(text.length - 1) == 32;\n\n if (style || startStyle || endStyle || mustWrap || css || attributes) {\n var fullStyle = style || \"\";\n\n if (startStyle) {\n fullStyle += startStyle;\n }\n\n if (endStyle) {\n fullStyle += endStyle;\n }\n\n var token = elt(\"span\", [content], fullStyle, css);\n\n if (attributes) {\n for (var attr in attributes) {\n if (attributes.hasOwnProperty(attr) && attr != \"style\" && attr != \"class\") {\n token.setAttribute(attr, attributes[attr]);\n }\n }\n }\n\n return builder.content.appendChild(token);\n }\n\n builder.content.appendChild(content);\n } // Change some spaces to NBSP to prevent the browser from collapsing\n // trailing spaces at the end of a line when rendering text (issue #1362).\n\n\n function splitSpaces(text, trailingBefore) {\n if (text.length > 1 && !/ /.test(text)) {\n return text;\n }\n\n var spaceBefore = trailingBefore,\n result = \"\";\n\n for (var i = 0; i < text.length; i++) {\n var ch = text.charAt(i);\n\n if (ch == \" \" && spaceBefore && (i == text.length - 1 || text.charCodeAt(i + 1) == 32)) {\n ch = \"\\xA0\";\n }\n\n result += ch;\n spaceBefore = ch == \" \";\n }\n\n return result;\n } // Work around nonsense dimensions being reported for stretches of\n // right-to-left text.\n\n\n function buildTokenBadBidi(inner, order) {\n return function (builder, text, style, startStyle, endStyle, css, attributes) {\n style = style ? style + \" cm-force-border\" : \"cm-force-border\";\n var start = builder.pos,\n end = start + text.length;\n\n for (;;) {\n // Find the part that overlaps with the start of this text\n var part = void 0;\n\n for (var i = 0; i < order.length; i++) {\n part = order[i];\n\n if (part.to > start && part.from <= start) {\n break;\n }\n }\n\n if (part.to >= end) {\n return inner(builder, text, style, startStyle, endStyle, css, attributes);\n }\n\n inner(builder, text.slice(0, part.to - start), style, startStyle, null, css, attributes);\n startStyle = null;\n text = text.slice(part.to - start);\n start = part.to;\n }\n };\n }\n\n function buildCollapsedSpan(builder, size, marker, ignoreWidget) {\n var widget = !ignoreWidget && marker.widgetNode;\n\n if (widget) {\n builder.map.push(builder.pos, builder.pos + size, widget);\n }\n\n if (!ignoreWidget && builder.cm.display.input.needsContentAttribute) {\n if (!widget) {\n widget = builder.content.appendChild(document.createElement(\"span\"));\n }\n\n widget.setAttribute(\"cm-marker\", marker.id);\n }\n\n if (widget) {\n builder.cm.display.input.setUneditable(widget);\n builder.content.appendChild(widget);\n }\n\n builder.pos += size;\n builder.trailingSpace = false;\n } // Outputs a number of spans to make up a line, taking highlighting\n // and marked text into account.\n\n\n function insertLineContent(line, builder, styles) {\n var spans = line.markedSpans,\n allText = line.text,\n at = 0;\n\n if (!spans) {\n for (var i$1 = 1; i$1 < styles.length; i$1 += 2) {\n builder.addToken(builder, allText.slice(at, at = styles[i$1]), interpretTokenStyle(styles[i$1 + 1], builder.cm.options));\n }\n\n return;\n }\n\n var len = allText.length,\n pos = 0,\n i = 1,\n text = \"\",\n style,\n css;\n var nextChange = 0,\n spanStyle,\n spanEndStyle,\n spanStartStyle,\n collapsed,\n attributes;\n\n for (;;) {\n if (nextChange == pos) {\n // Update current marker set\n spanStyle = spanEndStyle = spanStartStyle = css = \"\";\n attributes = null;\n collapsed = null;\n nextChange = Infinity;\n var foundBookmarks = [],\n endStyles = void 0;\n\n for (var j = 0; j < spans.length; ++j) {\n var sp = spans[j],\n m = sp.marker;\n\n if (m.type == \"bookmark\" && sp.from == pos && m.widgetNode) {\n foundBookmarks.push(m);\n } else if (sp.from <= pos && (sp.to == null || sp.to > pos || m.collapsed && sp.to == pos && sp.from == pos)) {\n if (sp.to != null && sp.to != pos && nextChange > sp.to) {\n nextChange = sp.to;\n spanEndStyle = \"\";\n }\n\n if (m.className) {\n spanStyle += \" \" + m.className;\n }\n\n if (m.css) {\n css = (css ? css + \";\" : \"\") + m.css;\n }\n\n if (m.startStyle && sp.from == pos) {\n spanStartStyle += \" \" + m.startStyle;\n }\n\n if (m.endStyle && sp.to == nextChange) {\n (endStyles || (endStyles = [])).push(m.endStyle, sp.to);\n } // support for the old title property\n // https://github.com/codemirror/CodeMirror/pull/5673\n\n\n if (m.title) {\n (attributes || (attributes = {})).title = m.title;\n }\n\n if (m.attributes) {\n for (var attr in m.attributes) {\n (attributes || (attributes = {}))[attr] = m.attributes[attr];\n }\n }\n\n if (m.collapsed && (!collapsed || compareCollapsedMarkers(collapsed.marker, m) < 0)) {\n collapsed = sp;\n }\n } else if (sp.from > pos && nextChange > sp.from) {\n nextChange = sp.from;\n }\n }\n\n if (endStyles) {\n for (var j$1 = 0; j$1 < endStyles.length; j$1 += 2) {\n if (endStyles[j$1 + 1] == nextChange) {\n spanEndStyle += \" \" + endStyles[j$1];\n }\n }\n }\n\n if (!collapsed || collapsed.from == pos) {\n for (var j$2 = 0; j$2 < foundBookmarks.length; ++j$2) {\n buildCollapsedSpan(builder, 0, foundBookmarks[j$2]);\n }\n }\n\n if (collapsed && (collapsed.from || 0) == pos) {\n buildCollapsedSpan(builder, (collapsed.to == null ? len + 1 : collapsed.to) - pos, collapsed.marker, collapsed.from == null);\n\n if (collapsed.to == null) {\n return;\n }\n\n if (collapsed.to == pos) {\n collapsed = false;\n }\n }\n }\n\n if (pos >= len) {\n break;\n }\n\n var upto = Math.min(len, nextChange);\n\n while (true) {\n if (text) {\n var end = pos + text.length;\n\n if (!collapsed) {\n var tokenText = end > upto ? text.slice(0, upto - pos) : text;\n builder.addToken(builder, tokenText, style ? style + spanStyle : spanStyle, spanStartStyle, pos + tokenText.length == nextChange ? spanEndStyle : \"\", css, attributes);\n }\n\n if (end >= upto) {\n text = text.slice(upto - pos);\n pos = upto;\n break;\n }\n\n pos = end;\n spanStartStyle = \"\";\n }\n\n text = allText.slice(at, at = styles[i++]);\n style = interpretTokenStyle(styles[i++], builder.cm.options);\n }\n }\n } // These objects are used to represent the visible (currently drawn)\n // part of the document. A LineView may correspond to multiple\n // logical lines, if those are connected by collapsed ranges.\n\n\n function LineView(doc, line, lineN) {\n // The starting line\n this.line = line; // Continuing lines, if any\n\n this.rest = visualLineContinued(line); // Number of logical lines in this visual line\n\n this.size = this.rest ? lineNo(lst(this.rest)) - lineN + 1 : 1;\n this.node = this.text = null;\n this.hidden = lineIsHidden(doc, line);\n } // Create a range of LineView objects for the given lines.\n\n\n function buildViewArray(cm, from, to) {\n var array = [],\n nextPos;\n\n for (var pos = from; pos < to; pos = nextPos) {\n var view = new LineView(cm.doc, getLine(cm.doc, pos), pos);\n nextPos = pos + view.size;\n array.push(view);\n }\n\n return array;\n }\n\n var operationGroup = null;\n\n function pushOperation(op) {\n if (operationGroup) {\n operationGroup.ops.push(op);\n } else {\n op.ownsGroup = operationGroup = {\n ops: [op],\n delayedCallbacks: []\n };\n }\n }\n\n function fireCallbacksForOps(group) {\n // Calls delayed callbacks and cursorActivity handlers until no\n // new ones appear\n var callbacks = group.delayedCallbacks,\n i = 0;\n\n do {\n for (; i < callbacks.length; i++) {\n callbacks[i].call(null);\n }\n\n for (var j = 0; j < group.ops.length; j++) {\n var op = group.ops[j];\n\n if (op.cursorActivityHandlers) {\n while (op.cursorActivityCalled < op.cursorActivityHandlers.length) {\n op.cursorActivityHandlers[op.cursorActivityCalled++].call(null, op.cm);\n }\n }\n }\n } while (i < callbacks.length);\n }\n\n function finishOperation(op, endCb) {\n var group = op.ownsGroup;\n\n if (!group) {\n return;\n }\n\n try {\n fireCallbacksForOps(group);\n } finally {\n operationGroup = null;\n endCb(group);\n }\n }\n\n var orphanDelayedCallbacks = null; // Often, we want to signal events at a point where we are in the\n // middle of some work, but don't want the handler to start calling\n // other methods on the editor, which might be in an inconsistent\n // state or simply not expect any other events to happen.\n // signalLater looks whether there are any handlers, and schedules\n // them to be executed when the last operation ends, or, if no\n // operation is active, when a timeout fires.\n\n function signalLater(emitter, type\n /*, values...*/\n ) {\n var arr = getHandlers(emitter, type);\n\n if (!arr.length) {\n return;\n }\n\n var args = Array.prototype.slice.call(arguments, 2),\n list;\n\n if (operationGroup) {\n list = operationGroup.delayedCallbacks;\n } else if (orphanDelayedCallbacks) {\n list = orphanDelayedCallbacks;\n } else {\n list = orphanDelayedCallbacks = [];\n setTimeout(fireOrphanDelayed, 0);\n }\n\n var loop = function loop(i) {\n list.push(function () {\n return arr[i].apply(null, args);\n });\n };\n\n for (var i = 0; i < arr.length; ++i) {\n loop(i);\n }\n }\n\n function fireOrphanDelayed() {\n var delayed = orphanDelayedCallbacks;\n orphanDelayedCallbacks = null;\n\n for (var i = 0; i < delayed.length; ++i) {\n delayed[i]();\n }\n } // When an aspect of a line changes, a string is added to\n // lineView.changes. This updates the relevant part of the line's\n // DOM structure.\n\n\n function updateLineForChanges(cm, lineView, lineN, dims) {\n for (var j = 0; j < lineView.changes.length; j++) {\n var type = lineView.changes[j];\n\n if (type == \"text\") {\n updateLineText(cm, lineView);\n } else if (type == \"gutter\") {\n updateLineGutter(cm, lineView, lineN, dims);\n } else if (type == \"class\") {\n updateLineClasses(cm, lineView);\n } else if (type == \"widget\") {\n updateLineWidgets(cm, lineView, dims);\n }\n }\n\n lineView.changes = null;\n } // Lines with gutter elements, widgets or a background class need to\n // be wrapped, and have the extra elements added to the wrapper div\n\n\n function ensureLineWrapped(lineView) {\n if (lineView.node == lineView.text) {\n lineView.node = elt(\"div\", null, null, \"position: relative\");\n\n if (lineView.text.parentNode) {\n lineView.text.parentNode.replaceChild(lineView.node, lineView.text);\n }\n\n lineView.node.appendChild(lineView.text);\n\n if (ie && ie_version < 8) {\n lineView.node.style.zIndex = 2;\n }\n }\n\n return lineView.node;\n }\n\n function updateLineBackground(cm, lineView) {\n var cls = lineView.bgClass ? lineView.bgClass + \" \" + (lineView.line.bgClass || \"\") : lineView.line.bgClass;\n\n if (cls) {\n cls += \" CodeMirror-linebackground\";\n }\n\n if (lineView.background) {\n if (cls) {\n lineView.background.className = cls;\n } else {\n lineView.background.parentNode.removeChild(lineView.background);\n lineView.background = null;\n }\n } else if (cls) {\n var wrap = ensureLineWrapped(lineView);\n lineView.background = wrap.insertBefore(elt(\"div\", null, cls), wrap.firstChild);\n cm.display.input.setUneditable(lineView.background);\n }\n } // Wrapper around buildLineContent which will reuse the structure\n // in display.externalMeasured when possible.\n\n\n function getLineContent(cm, lineView) {\n var ext = cm.display.externalMeasured;\n\n if (ext && ext.line == lineView.line) {\n cm.display.externalMeasured = null;\n lineView.measure = ext.measure;\n return ext.built;\n }\n\n return buildLineContent(cm, lineView);\n } // Redraw the line's text. Interacts with the background and text\n // classes because the mode may output tokens that influence these\n // classes.\n\n\n function updateLineText(cm, lineView) {\n var cls = lineView.text.className;\n var built = getLineContent(cm, lineView);\n\n if (lineView.text == lineView.node) {\n lineView.node = built.pre;\n }\n\n lineView.text.parentNode.replaceChild(built.pre, lineView.text);\n lineView.text = built.pre;\n\n if (built.bgClass != lineView.bgClass || built.textClass != lineView.textClass) {\n lineView.bgClass = built.bgClass;\n lineView.textClass = built.textClass;\n updateLineClasses(cm, lineView);\n } else if (cls) {\n lineView.text.className = cls;\n }\n }\n\n function updateLineClasses(cm, lineView) {\n updateLineBackground(cm, lineView);\n\n if (lineView.line.wrapClass) {\n ensureLineWrapped(lineView).className = lineView.line.wrapClass;\n } else if (lineView.node != lineView.text) {\n lineView.node.className = \"\";\n }\n\n var textClass = lineView.textClass ? lineView.textClass + \" \" + (lineView.line.textClass || \"\") : lineView.line.textClass;\n lineView.text.className = textClass || \"\";\n }\n\n function updateLineGutter(cm, lineView, lineN, dims) {\n if (lineView.gutter) {\n lineView.node.removeChild(lineView.gutter);\n lineView.gutter = null;\n }\n\n if (lineView.gutterBackground) {\n lineView.node.removeChild(lineView.gutterBackground);\n lineView.gutterBackground = null;\n }\n\n if (lineView.line.gutterClass) {\n var wrap = ensureLineWrapped(lineView);\n lineView.gutterBackground = elt(\"div\", null, \"CodeMirror-gutter-background \" + lineView.line.gutterClass, \"left: \" + (cm.options.fixedGutter ? dims.fixedPos : -dims.gutterTotalWidth) + \"px; width: \" + dims.gutterTotalWidth + \"px\");\n cm.display.input.setUneditable(lineView.gutterBackground);\n wrap.insertBefore(lineView.gutterBackground, lineView.text);\n }\n\n var markers = lineView.line.gutterMarkers;\n\n if (cm.options.lineNumbers || markers) {\n var wrap$1 = ensureLineWrapped(lineView);\n var gutterWrap = lineView.gutter = elt(\"div\", null, \"CodeMirror-gutter-wrapper\", \"left: \" + (cm.options.fixedGutter ? dims.fixedPos : -dims.gutterTotalWidth) + \"px\");\n gutterWrap.setAttribute(\"aria-hidden\", \"true\");\n cm.display.input.setUneditable(gutterWrap);\n wrap$1.insertBefore(gutterWrap, lineView.text);\n\n if (lineView.line.gutterClass) {\n gutterWrap.className += \" \" + lineView.line.gutterClass;\n }\n\n if (cm.options.lineNumbers && (!markers || !markers[\"CodeMirror-linenumbers\"])) {\n lineView.lineNumber = gutterWrap.appendChild(elt(\"div\", lineNumberFor(cm.options, lineN), \"CodeMirror-linenumber CodeMirror-gutter-elt\", \"left: \" + dims.gutterLeft[\"CodeMirror-linenumbers\"] + \"px; width: \" + cm.display.lineNumInnerWidth + \"px\"));\n }\n\n if (markers) {\n for (var k = 0; k < cm.display.gutterSpecs.length; ++k) {\n var id = cm.display.gutterSpecs[k].className,\n found = markers.hasOwnProperty(id) && markers[id];\n\n if (found) {\n gutterWrap.appendChild(elt(\"div\", [found], \"CodeMirror-gutter-elt\", \"left: \" + dims.gutterLeft[id] + \"px; width: \" + dims.gutterWidth[id] + \"px\"));\n }\n }\n }\n }\n }\n\n function updateLineWidgets(cm, lineView, dims) {\n if (lineView.alignable) {\n lineView.alignable = null;\n }\n\n var isWidget = classTest(\"CodeMirror-linewidget\");\n\n for (var node = lineView.node.firstChild, next = void 0; node; node = next) {\n next = node.nextSibling;\n\n if (isWidget.test(node.className)) {\n lineView.node.removeChild(node);\n }\n }\n\n insertLineWidgets(cm, lineView, dims);\n } // Build a line's DOM representation from scratch\n\n\n function buildLineElement(cm, lineView, lineN, dims) {\n var built = getLineContent(cm, lineView);\n lineView.text = lineView.node = built.pre;\n\n if (built.bgClass) {\n lineView.bgClass = built.bgClass;\n }\n\n if (built.textClass) {\n lineView.textClass = built.textClass;\n }\n\n updateLineClasses(cm, lineView);\n updateLineGutter(cm, lineView, lineN, dims);\n insertLineWidgets(cm, lineView, dims);\n return lineView.node;\n } // A lineView may contain multiple logical lines (when merged by\n // collapsed spans). The widgets for all of them need to be drawn.\n\n\n function insertLineWidgets(cm, lineView, dims) {\n insertLineWidgetsFor(cm, lineView.line, lineView, dims, true);\n\n if (lineView.rest) {\n for (var i = 0; i < lineView.rest.length; i++) {\n insertLineWidgetsFor(cm, lineView.rest[i], lineView, dims, false);\n }\n }\n }\n\n function insertLineWidgetsFor(cm, line, lineView, dims, allowAbove) {\n if (!line.widgets) {\n return;\n }\n\n var wrap = ensureLineWrapped(lineView);\n\n for (var i = 0, ws = line.widgets; i < ws.length; ++i) {\n var widget = ws[i],\n node = elt(\"div\", [widget.node], \"CodeMirror-linewidget\" + (widget.className ? \" \" + widget.className : \"\"));\n\n if (!widget.handleMouseEvents) {\n node.setAttribute(\"cm-ignore-events\", \"true\");\n }\n\n positionLineWidget(widget, node, lineView, dims);\n cm.display.input.setUneditable(node);\n\n if (allowAbove && widget.above) {\n wrap.insertBefore(node, lineView.gutter || lineView.text);\n } else {\n wrap.appendChild(node);\n }\n\n signalLater(widget, \"redraw\");\n }\n }\n\n function positionLineWidget(widget, node, lineView, dims) {\n if (widget.noHScroll) {\n (lineView.alignable || (lineView.alignable = [])).push(node);\n var width = dims.wrapperWidth;\n node.style.left = dims.fixedPos + \"px\";\n\n if (!widget.coverGutter) {\n width -= dims.gutterTotalWidth;\n node.style.paddingLeft = dims.gutterTotalWidth + \"px\";\n }\n\n node.style.width = width + \"px\";\n }\n\n if (widget.coverGutter) {\n node.style.zIndex = 5;\n node.style.position = \"relative\";\n\n if (!widget.noHScroll) {\n node.style.marginLeft = -dims.gutterTotalWidth + \"px\";\n }\n }\n }\n\n function widgetHeight(widget) {\n if (widget.height != null) {\n return widget.height;\n }\n\n var cm = widget.doc.cm;\n\n if (!cm) {\n return 0;\n }\n\n if (!contains(document.body, widget.node)) {\n var parentStyle = \"position: relative;\";\n\n if (widget.coverGutter) {\n parentStyle += \"margin-left: -\" + cm.display.gutters.offsetWidth + \"px;\";\n }\n\n if (widget.noHScroll) {\n parentStyle += \"width: \" + cm.display.wrapper.clientWidth + \"px;\";\n }\n\n removeChildrenAndAdd(cm.display.measure, elt(\"div\", [widget.node], null, parentStyle));\n }\n\n return widget.height = widget.node.parentNode.offsetHeight;\n } // Return true when the given mouse event happened in a widget\n\n\n function eventInWidget(display, e) {\n for (var n = e_target(e); n != display.wrapper; n = n.parentNode) {\n if (!n || n.nodeType == 1 && n.getAttribute(\"cm-ignore-events\") == \"true\" || n.parentNode == display.sizer && n != display.mover) {\n return true;\n }\n }\n } // POSITION MEASUREMENT\n\n\n function paddingTop(display) {\n return display.lineSpace.offsetTop;\n }\n\n function paddingVert(display) {\n return display.mover.offsetHeight - display.lineSpace.offsetHeight;\n }\n\n function paddingH(display) {\n if (display.cachedPaddingH) {\n return display.cachedPaddingH;\n }\n\n var e = removeChildrenAndAdd(display.measure, elt(\"pre\", \"x\", \"CodeMirror-line-like\"));\n var style = window.getComputedStyle ? window.getComputedStyle(e) : e.currentStyle;\n var data = {\n left: parseInt(style.paddingLeft),\n right: parseInt(style.paddingRight)\n };\n\n if (!isNaN(data.left) && !isNaN(data.right)) {\n display.cachedPaddingH = data;\n }\n\n return data;\n }\n\n function scrollGap(cm) {\n return scrollerGap - cm.display.nativeBarWidth;\n }\n\n function displayWidth(cm) {\n return cm.display.scroller.clientWidth - scrollGap(cm) - cm.display.barWidth;\n }\n\n function displayHeight(cm) {\n return cm.display.scroller.clientHeight - scrollGap(cm) - cm.display.barHeight;\n } // Ensure the lineView.wrapping.heights array is populated. This is\n // an array of bottom offsets for the lines that make up a drawn\n // line. When lineWrapping is on, there might be more than one\n // height.\n\n\n function ensureLineHeights(cm, lineView, rect) {\n var wrapping = cm.options.lineWrapping;\n var curWidth = wrapping && displayWidth(cm);\n\n if (!lineView.measure.heights || wrapping && lineView.measure.width != curWidth) {\n var heights = lineView.measure.heights = [];\n\n if (wrapping) {\n lineView.measure.width = curWidth;\n var rects = lineView.text.firstChild.getClientRects();\n\n for (var i = 0; i < rects.length - 1; i++) {\n var cur = rects[i],\n next = rects[i + 1];\n\n if (Math.abs(cur.bottom - next.bottom) > 2) {\n heights.push((cur.bottom + next.top) / 2 - rect.top);\n }\n }\n }\n\n heights.push(rect.bottom - rect.top);\n }\n } // Find a line map (mapping character offsets to text nodes) and a\n // measurement cache for the given line number. (A line view might\n // contain multiple lines when collapsed ranges are present.)\n\n\n function mapFromLineView(lineView, line, lineN) {\n if (lineView.line == line) {\n return {\n map: lineView.measure.map,\n cache: lineView.measure.cache\n };\n }\n\n if (lineView.rest) {\n for (var i = 0; i < lineView.rest.length; i++) {\n if (lineView.rest[i] == line) {\n return {\n map: lineView.measure.maps[i],\n cache: lineView.measure.caches[i]\n };\n }\n }\n\n for (var i$1 = 0; i$1 < lineView.rest.length; i$1++) {\n if (lineNo(lineView.rest[i$1]) > lineN) {\n return {\n map: lineView.measure.maps[i$1],\n cache: lineView.measure.caches[i$1],\n before: true\n };\n }\n }\n }\n } // Render a line into the hidden node display.externalMeasured. Used\n // when measurement is needed for a line that's not in the viewport.\n\n\n function updateExternalMeasurement(cm, line) {\n line = visualLine(line);\n var lineN = lineNo(line);\n var view = cm.display.externalMeasured = new LineView(cm.doc, line, lineN);\n view.lineN = lineN;\n var built = view.built = buildLineContent(cm, view);\n view.text = built.pre;\n removeChildrenAndAdd(cm.display.lineMeasure, built.pre);\n return view;\n } // Get a {top, bottom, left, right} box (in line-local coordinates)\n // for a given character.\n\n\n function measureChar(cm, line, ch, bias) {\n return measureCharPrepared(cm, prepareMeasureForLine(cm, line), ch, bias);\n } // Find a line view that corresponds to the given line number.\n\n\n function findViewForLine(cm, lineN) {\n if (lineN >= cm.display.viewFrom && lineN < cm.display.viewTo) {\n return cm.display.view[findViewIndex(cm, lineN)];\n }\n\n var ext = cm.display.externalMeasured;\n\n if (ext && lineN >= ext.lineN && lineN < ext.lineN + ext.size) {\n return ext;\n }\n } // Measurement can be split in two steps, the set-up work that\n // applies to the whole line, and the measurement of the actual\n // character. Functions like coordsChar, that need to do a lot of\n // measurements in a row, can thus ensure that the set-up work is\n // only done once.\n\n\n function prepareMeasureForLine(cm, line) {\n var lineN = lineNo(line);\n var view = findViewForLine(cm, lineN);\n\n if (view && !view.text) {\n view = null;\n } else if (view && view.changes) {\n updateLineForChanges(cm, view, lineN, getDimensions(cm));\n cm.curOp.forceUpdate = true;\n }\n\n if (!view) {\n view = updateExternalMeasurement(cm, line);\n }\n\n var info = mapFromLineView(view, line, lineN);\n return {\n line: line,\n view: view,\n rect: null,\n map: info.map,\n cache: info.cache,\n before: info.before,\n hasHeights: false\n };\n } // Given a prepared measurement object, measures the position of an\n // actual character (or fetches it from the cache).\n\n\n function measureCharPrepared(cm, prepared, ch, bias, varHeight) {\n if (prepared.before) {\n ch = -1;\n }\n\n var key = ch + (bias || \"\"),\n found;\n\n if (prepared.cache.hasOwnProperty(key)) {\n found = prepared.cache[key];\n } else {\n if (!prepared.rect) {\n prepared.rect = prepared.view.text.getBoundingClientRect();\n }\n\n if (!prepared.hasHeights) {\n ensureLineHeights(cm, prepared.view, prepared.rect);\n prepared.hasHeights = true;\n }\n\n found = measureCharInner(cm, prepared, ch, bias);\n\n if (!found.bogus) {\n prepared.cache[key] = found;\n }\n }\n\n return {\n left: found.left,\n right: found.right,\n top: varHeight ? found.rtop : found.top,\n bottom: varHeight ? found.rbottom : found.bottom\n };\n }\n\n var nullRect = {\n left: 0,\n right: 0,\n top: 0,\n bottom: 0\n };\n\n function nodeAndOffsetInLineMap(map, ch, bias) {\n var node, start, end, collapse, mStart, mEnd; // First, search the line map for the text node corresponding to,\n // or closest to, the target character.\n\n for (var i = 0; i < map.length; i += 3) {\n mStart = map[i];\n mEnd = map[i + 1];\n\n if (ch < mStart) {\n start = 0;\n end = 1;\n collapse = \"left\";\n } else if (ch < mEnd) {\n start = ch - mStart;\n end = start + 1;\n } else if (i == map.length - 3 || ch == mEnd && map[i + 3] > ch) {\n end = mEnd - mStart;\n start = end - 1;\n\n if (ch >= mEnd) {\n collapse = \"right\";\n }\n }\n\n if (start != null) {\n node = map[i + 2];\n\n if (mStart == mEnd && bias == (node.insertLeft ? \"left\" : \"right\")) {\n collapse = bias;\n }\n\n if (bias == \"left\" && start == 0) {\n while (i && map[i - 2] == map[i - 3] && map[i - 1].insertLeft) {\n node = map[(i -= 3) + 2];\n collapse = \"left\";\n }\n }\n\n if (bias == \"right\" && start == mEnd - mStart) {\n while (i < map.length - 3 && map[i + 3] == map[i + 4] && !map[i + 5].insertLeft) {\n node = map[(i += 3) + 2];\n collapse = \"right\";\n }\n }\n\n break;\n }\n }\n\n return {\n node: node,\n start: start,\n end: end,\n collapse: collapse,\n coverStart: mStart,\n coverEnd: mEnd\n };\n }\n\n function getUsefulRect(rects, bias) {\n var rect = nullRect;\n\n if (bias == \"left\") {\n for (var i = 0; i < rects.length; i++) {\n if ((rect = rects[i]).left != rect.right) {\n break;\n }\n }\n } else {\n for (var i$1 = rects.length - 1; i$1 >= 0; i$1--) {\n if ((rect = rects[i$1]).left != rect.right) {\n break;\n }\n }\n }\n\n return rect;\n }\n\n function measureCharInner(cm, prepared, ch, bias) {\n var place = nodeAndOffsetInLineMap(prepared.map, ch, bias);\n var node = place.node,\n start = place.start,\n end = place.end,\n collapse = place.collapse;\n var rect;\n\n if (node.nodeType == 3) {\n // If it is a text node, use a range to retrieve the coordinates.\n for (var i$1 = 0; i$1 < 4; i$1++) {\n // Retry a maximum of 4 times when nonsense rectangles are returned\n while (start && isExtendingChar(prepared.line.text.charAt(place.coverStart + start))) {\n --start;\n }\n\n while (place.coverStart + end < place.coverEnd && isExtendingChar(prepared.line.text.charAt(place.coverStart + end))) {\n ++end;\n }\n\n if (ie && ie_version < 9 && start == 0 && end == place.coverEnd - place.coverStart) {\n rect = node.parentNode.getBoundingClientRect();\n } else {\n rect = getUsefulRect(range(node, start, end).getClientRects(), bias);\n }\n\n if (rect.left || rect.right || start == 0) {\n break;\n }\n\n end = start;\n start = start - 1;\n collapse = \"right\";\n }\n\n if (ie && ie_version < 11) {\n rect = maybeUpdateRectForZooming(cm.display.measure, rect);\n }\n } else {\n // If it is a widget, simply get the box for the whole widget.\n if (start > 0) {\n collapse = bias = \"right\";\n }\n\n var rects;\n\n if (cm.options.lineWrapping && (rects = node.getClientRects()).length > 1) {\n rect = rects[bias == \"right\" ? rects.length - 1 : 0];\n } else {\n rect = node.getBoundingClientRect();\n }\n }\n\n if (ie && ie_version < 9 && !start && (!rect || !rect.left && !rect.right)) {\n var rSpan = node.parentNode.getClientRects()[0];\n\n if (rSpan) {\n rect = {\n left: rSpan.left,\n right: rSpan.left + charWidth(cm.display),\n top: rSpan.top,\n bottom: rSpan.bottom\n };\n } else {\n rect = nullRect;\n }\n }\n\n var rtop = rect.top - prepared.rect.top,\n rbot = rect.bottom - prepared.rect.top;\n var mid = (rtop + rbot) / 2;\n var heights = prepared.view.measure.heights;\n var i = 0;\n\n for (; i < heights.length - 1; i++) {\n if (mid < heights[i]) {\n break;\n }\n }\n\n var top = i ? heights[i - 1] : 0,\n bot = heights[i];\n var result = {\n left: (collapse == \"right\" ? rect.right : rect.left) - prepared.rect.left,\n right: (collapse == \"left\" ? rect.left : rect.right) - prepared.rect.left,\n top: top,\n bottom: bot\n };\n\n if (!rect.left && !rect.right) {\n result.bogus = true;\n }\n\n if (!cm.options.singleCursorHeightPerLine) {\n result.rtop = rtop;\n result.rbottom = rbot;\n }\n\n return result;\n } // Work around problem with bounding client rects on ranges being\n // returned incorrectly when zoomed on IE10 and below.\n\n\n function maybeUpdateRectForZooming(measure, rect) {\n if (!window.screen || screen.logicalXDPI == null || screen.logicalXDPI == screen.deviceXDPI || !hasBadZoomedRects(measure)) {\n return rect;\n }\n\n var scaleX = screen.logicalXDPI / screen.deviceXDPI;\n var scaleY = screen.logicalYDPI / screen.deviceYDPI;\n return {\n left: rect.left * scaleX,\n right: rect.right * scaleX,\n top: rect.top * scaleY,\n bottom: rect.bottom * scaleY\n };\n }\n\n function clearLineMeasurementCacheFor(lineView) {\n if (lineView.measure) {\n lineView.measure.cache = {};\n lineView.measure.heights = null;\n\n if (lineView.rest) {\n for (var i = 0; i < lineView.rest.length; i++) {\n lineView.measure.caches[i] = {};\n }\n }\n }\n }\n\n function clearLineMeasurementCache(cm) {\n cm.display.externalMeasure = null;\n removeChildren(cm.display.lineMeasure);\n\n for (var i = 0; i < cm.display.view.length; i++) {\n clearLineMeasurementCacheFor(cm.display.view[i]);\n }\n }\n\n function clearCaches(cm) {\n clearLineMeasurementCache(cm);\n cm.display.cachedCharWidth = cm.display.cachedTextHeight = cm.display.cachedPaddingH = null;\n\n if (!cm.options.lineWrapping) {\n cm.display.maxLineChanged = true;\n }\n\n cm.display.lineNumChars = null;\n }\n\n function pageScrollX() {\n // Work around https://bugs.chromium.org/p/chromium/issues/detail?id=489206\n // which causes page_Offset and bounding client rects to use\n // different reference viewports and invalidate our calculations.\n if (chrome && android) {\n return -(document.body.getBoundingClientRect().left - parseInt(getComputedStyle(document.body).marginLeft));\n }\n\n return window.pageXOffset || (document.documentElement || document.body).scrollLeft;\n }\n\n function pageScrollY() {\n if (chrome && android) {\n return -(document.body.getBoundingClientRect().top - parseInt(getComputedStyle(document.body).marginTop));\n }\n\n return window.pageYOffset || (document.documentElement || document.body).scrollTop;\n }\n\n function widgetTopHeight(lineObj) {\n var ref = visualLine(lineObj);\n var widgets = ref.widgets;\n var height = 0;\n\n if (widgets) {\n for (var i = 0; i < widgets.length; ++i) {\n if (widgets[i].above) {\n height += widgetHeight(widgets[i]);\n }\n }\n }\n\n return height;\n } // Converts a {top, bottom, left, right} box from line-local\n // coordinates into another coordinate system. Context may be one of\n // \"line\", \"div\" (display.lineDiv), \"local\"./null (editor), \"window\",\n // or \"page\".\n\n\n function intoCoordSystem(cm, lineObj, rect, context, includeWidgets) {\n if (!includeWidgets) {\n var height = widgetTopHeight(lineObj);\n rect.top += height;\n rect.bottom += height;\n }\n\n if (context == \"line\") {\n return rect;\n }\n\n if (!context) {\n context = \"local\";\n }\n\n var yOff = _heightAtLine(lineObj);\n\n if (context == \"local\") {\n yOff += paddingTop(cm.display);\n } else {\n yOff -= cm.display.viewOffset;\n }\n\n if (context == \"page\" || context == \"window\") {\n var lOff = cm.display.lineSpace.getBoundingClientRect();\n yOff += lOff.top + (context == \"window\" ? 0 : pageScrollY());\n var xOff = lOff.left + (context == \"window\" ? 0 : pageScrollX());\n rect.left += xOff;\n rect.right += xOff;\n }\n\n rect.top += yOff;\n rect.bottom += yOff;\n return rect;\n } // Coverts a box from \"div\" coords to another coordinate system.\n // Context may be \"window\", \"page\", \"div\", or \"local\"./null.\n\n\n function fromCoordSystem(cm, coords, context) {\n if (context == \"div\") {\n return coords;\n }\n\n var left = coords.left,\n top = coords.top; // First move into \"page\" coordinate system\n\n if (context == \"page\") {\n left -= pageScrollX();\n top -= pageScrollY();\n } else if (context == \"local\" || !context) {\n var localBox = cm.display.sizer.getBoundingClientRect();\n left += localBox.left;\n top += localBox.top;\n }\n\n var lineSpaceBox = cm.display.lineSpace.getBoundingClientRect();\n return {\n left: left - lineSpaceBox.left,\n top: top - lineSpaceBox.top\n };\n }\n\n function _charCoords(cm, pos, context, lineObj, bias) {\n if (!lineObj) {\n lineObj = getLine(cm.doc, pos.line);\n }\n\n return intoCoordSystem(cm, lineObj, measureChar(cm, lineObj, pos.ch, bias), context);\n } // Returns a box for a given cursor position, which may have an\n // 'other' property containing the position of the secondary cursor\n // on a bidi boundary.\n // A cursor Pos(line, char, \"before\") is on the same visual line as `char - 1`\n // and after `char - 1` in writing order of `char - 1`\n // A cursor Pos(line, char, \"after\") is on the same visual line as `char`\n // and before `char` in writing order of `char`\n // Examples (upper-case letters are RTL, lower-case are LTR):\n // Pos(0, 1, ...)\n // before after\n // ab a|b a|b\n // aB a|B aB|\n // Ab |Ab A|b\n // AB B|A B|A\n // Every position after the last character on a line is considered to stick\n // to the last character on the line.\n\n\n function _cursorCoords(cm, pos, context, lineObj, preparedMeasure, varHeight) {\n lineObj = lineObj || getLine(cm.doc, pos.line);\n\n if (!preparedMeasure) {\n preparedMeasure = prepareMeasureForLine(cm, lineObj);\n }\n\n function get(ch, right) {\n var m = measureCharPrepared(cm, preparedMeasure, ch, right ? \"right\" : \"left\", varHeight);\n\n if (right) {\n m.left = m.right;\n } else {\n m.right = m.left;\n }\n\n return intoCoordSystem(cm, lineObj, m, context);\n }\n\n var order = getOrder(lineObj, cm.doc.direction),\n ch = pos.ch,\n sticky = pos.sticky;\n\n if (ch >= lineObj.text.length) {\n ch = lineObj.text.length;\n sticky = \"before\";\n } else if (ch <= 0) {\n ch = 0;\n sticky = \"after\";\n }\n\n if (!order) {\n return get(sticky == \"before\" ? ch - 1 : ch, sticky == \"before\");\n }\n\n function getBidi(ch, partPos, invert) {\n var part = order[partPos],\n right = part.level == 1;\n return get(invert ? ch - 1 : ch, right != invert);\n }\n\n var partPos = getBidiPartAt(order, ch, sticky);\n var other = bidiOther;\n var val = getBidi(ch, partPos, sticky == \"before\");\n\n if (other != null) {\n val.other = getBidi(ch, other, sticky != \"before\");\n }\n\n return val;\n } // Used to cheaply estimate the coordinates for a position. Used for\n // intermediate scroll updates.\n\n\n function estimateCoords(cm, pos) {\n var left = 0;\n pos = _clipPos(cm.doc, pos);\n\n if (!cm.options.lineWrapping) {\n left = charWidth(cm.display) * pos.ch;\n }\n\n var lineObj = getLine(cm.doc, pos.line);\n var top = _heightAtLine(lineObj) + paddingTop(cm.display);\n return {\n left: left,\n right: left,\n top: top,\n bottom: top + lineObj.height\n };\n } // Positions returned by coordsChar contain some extra information.\n // xRel is the relative x position of the input coordinates compared\n // to the found position (so xRel > 0 means the coordinates are to\n // the right of the character position, for example). When outside\n // is true, that means the coordinates lie outside the line's\n // vertical range.\n\n\n function PosWithInfo(line, ch, sticky, outside, xRel) {\n var pos = Pos(line, ch, sticky);\n pos.xRel = xRel;\n\n if (outside) {\n pos.outside = outside;\n }\n\n return pos;\n } // Compute the character position closest to the given coordinates.\n // Input must be lineSpace-local (\"div\" coordinate system).\n\n\n function _coordsChar(cm, x, y) {\n var doc = cm.doc;\n y += cm.display.viewOffset;\n\n if (y < 0) {\n return PosWithInfo(doc.first, 0, null, -1, -1);\n }\n\n var lineN = _lineAtHeight(doc, y),\n last = doc.first + doc.size - 1;\n\n if (lineN > last) {\n return PosWithInfo(doc.first + doc.size - 1, getLine(doc, last).text.length, null, 1, 1);\n }\n\n if (x < 0) {\n x = 0;\n }\n\n var lineObj = getLine(doc, lineN);\n\n for (;;) {\n var found = coordsCharInner(cm, lineObj, lineN, x, y);\n var collapsed = collapsedSpanAround(lineObj, found.ch + (found.xRel > 0 || found.outside > 0 ? 1 : 0));\n\n if (!collapsed) {\n return found;\n }\n\n var rangeEnd = collapsed.find(1);\n\n if (rangeEnd.line == lineN) {\n return rangeEnd;\n }\n\n lineObj = getLine(doc, lineN = rangeEnd.line);\n }\n }\n\n function wrappedLineExtent(cm, lineObj, preparedMeasure, y) {\n y -= widgetTopHeight(lineObj);\n var end = lineObj.text.length;\n var begin = findFirst(function (ch) {\n return measureCharPrepared(cm, preparedMeasure, ch - 1).bottom <= y;\n }, end, 0);\n end = findFirst(function (ch) {\n return measureCharPrepared(cm, preparedMeasure, ch).top > y;\n }, begin, end);\n return {\n begin: begin,\n end: end\n };\n }\n\n function wrappedLineExtentChar(cm, lineObj, preparedMeasure, target) {\n if (!preparedMeasure) {\n preparedMeasure = prepareMeasureForLine(cm, lineObj);\n }\n\n var targetTop = intoCoordSystem(cm, lineObj, measureCharPrepared(cm, preparedMeasure, target), \"line\").top;\n return wrappedLineExtent(cm, lineObj, preparedMeasure, targetTop);\n } // Returns true if the given side of a box is after the given\n // coordinates, in top-to-bottom, left-to-right order.\n\n\n function boxIsAfter(box, x, y, left) {\n return box.bottom <= y ? false : box.top > y ? true : (left ? box.left : box.right) > x;\n }\n\n function coordsCharInner(cm, lineObj, lineNo, x, y) {\n // Move y into line-local coordinate space\n y -= _heightAtLine(lineObj);\n var preparedMeasure = prepareMeasureForLine(cm, lineObj); // When directly calling `measureCharPrepared`, we have to adjust\n // for the widgets at this line.\n\n var widgetHeight = widgetTopHeight(lineObj);\n var begin = 0,\n end = lineObj.text.length,\n ltr = true;\n var order = getOrder(lineObj, cm.doc.direction); // If the line isn't plain left-to-right text, first figure out\n // which bidi section the coordinates fall into.\n\n if (order) {\n var part = (cm.options.lineWrapping ? coordsBidiPartWrapped : coordsBidiPart)(cm, lineObj, lineNo, preparedMeasure, order, x, y);\n ltr = part.level != 1; // The awkward -1 offsets are needed because findFirst (called\n // on these below) will treat its first bound as inclusive,\n // second as exclusive, but we want to actually address the\n // characters in the part's range\n\n begin = ltr ? part.from : part.to - 1;\n end = ltr ? part.to : part.from - 1;\n } // A binary search to find the first character whose bounding box\n // starts after the coordinates. If we run across any whose box wrap\n // the coordinates, store that.\n\n\n var chAround = null,\n boxAround = null;\n var ch = findFirst(function (ch) {\n var box = measureCharPrepared(cm, preparedMeasure, ch);\n box.top += widgetHeight;\n box.bottom += widgetHeight;\n\n if (!boxIsAfter(box, x, y, false)) {\n return false;\n }\n\n if (box.top <= y && box.left <= x) {\n chAround = ch;\n boxAround = box;\n }\n\n return true;\n }, begin, end);\n var baseX,\n sticky,\n outside = false; // If a box around the coordinates was found, use that\n\n if (boxAround) {\n // Distinguish coordinates nearer to the left or right side of the box\n var atLeft = x - boxAround.left < boxAround.right - x,\n atStart = atLeft == ltr;\n ch = chAround + (atStart ? 0 : 1);\n sticky = atStart ? \"after\" : \"before\";\n baseX = atLeft ? boxAround.left : boxAround.right;\n } else {\n // (Adjust for extended bound, if necessary.)\n if (!ltr && (ch == end || ch == begin)) {\n ch++;\n } // To determine which side to associate with, get the box to the\n // left of the character and compare it's vertical position to the\n // coordinates\n\n\n sticky = ch == 0 ? \"after\" : ch == lineObj.text.length ? \"before\" : measureCharPrepared(cm, preparedMeasure, ch - (ltr ? 1 : 0)).bottom + widgetHeight <= y == ltr ? \"after\" : \"before\"; // Now get accurate coordinates for this place, in order to get a\n // base X position\n\n var coords = _cursorCoords(cm, Pos(lineNo, ch, sticky), \"line\", lineObj, preparedMeasure);\n\n baseX = coords.left;\n outside = y < coords.top ? -1 : y >= coords.bottom ? 1 : 0;\n }\n\n ch = skipExtendingChars(lineObj.text, ch, 1);\n return PosWithInfo(lineNo, ch, sticky, outside, x - baseX);\n }\n\n function coordsBidiPart(cm, lineObj, lineNo, preparedMeasure, order, x, y) {\n // Bidi parts are sorted left-to-right, and in a non-line-wrapping\n // situation, we can take this ordering to correspond to the visual\n // ordering. This finds the first part whose end is after the given\n // coordinates.\n var index = findFirst(function (i) {\n var part = order[i],\n ltr = part.level != 1;\n return boxIsAfter(_cursorCoords(cm, Pos(lineNo, ltr ? part.to : part.from, ltr ? \"before\" : \"after\"), \"line\", lineObj, preparedMeasure), x, y, true);\n }, 0, order.length - 1);\n var part = order[index]; // If this isn't the first part, the part's start is also after\n // the coordinates, and the coordinates aren't on the same line as\n // that start, move one part back.\n\n if (index > 0) {\n var ltr = part.level != 1;\n\n var start = _cursorCoords(cm, Pos(lineNo, ltr ? part.from : part.to, ltr ? \"after\" : \"before\"), \"line\", lineObj, preparedMeasure);\n\n if (boxIsAfter(start, x, y, true) && start.top > y) {\n part = order[index - 1];\n }\n }\n\n return part;\n }\n\n function coordsBidiPartWrapped(cm, lineObj, _lineNo, preparedMeasure, order, x, y) {\n // In a wrapped line, rtl text on wrapping boundaries can do things\n // that don't correspond to the ordering in our `order` array at\n // all, so a binary search doesn't work, and we want to return a\n // part that only spans one line so that the binary search in\n // coordsCharInner is safe. As such, we first find the extent of the\n // wrapped line, and then do a flat search in which we discard any\n // spans that aren't on the line.\n var ref = wrappedLineExtent(cm, lineObj, preparedMeasure, y);\n var begin = ref.begin;\n var end = ref.end;\n\n if (/\\s/.test(lineObj.text.charAt(end - 1))) {\n end--;\n }\n\n var part = null,\n closestDist = null;\n\n for (var i = 0; i < order.length; i++) {\n var p = order[i];\n\n if (p.from >= end || p.to <= begin) {\n continue;\n }\n\n var ltr = p.level != 1;\n var endX = measureCharPrepared(cm, preparedMeasure, ltr ? Math.min(end, p.to) - 1 : Math.max(begin, p.from)).right; // Weigh against spans ending before this, so that they are only\n // picked if nothing ends after\n\n var dist = endX < x ? x - endX + 1e9 : endX - x;\n\n if (!part || closestDist > dist) {\n part = p;\n closestDist = dist;\n }\n }\n\n if (!part) {\n part = order[order.length - 1];\n } // Clip the part to the wrapped line.\n\n\n if (part.from < begin) {\n part = {\n from: begin,\n to: part.to,\n level: part.level\n };\n }\n\n if (part.to > end) {\n part = {\n from: part.from,\n to: end,\n level: part.level\n };\n }\n\n return part;\n }\n\n var measureText; // Compute the default text height.\n\n function textHeight(display) {\n if (display.cachedTextHeight != null) {\n return display.cachedTextHeight;\n }\n\n if (measureText == null) {\n measureText = elt(\"pre\", null, \"CodeMirror-line-like\"); // Measure a bunch of lines, for browsers that compute\n // fractional heights.\n\n for (var i = 0; i < 49; ++i) {\n measureText.appendChild(document.createTextNode(\"x\"));\n measureText.appendChild(elt(\"br\"));\n }\n\n measureText.appendChild(document.createTextNode(\"x\"));\n }\n\n removeChildrenAndAdd(display.measure, measureText);\n var height = measureText.offsetHeight / 50;\n\n if (height > 3) {\n display.cachedTextHeight = height;\n }\n\n removeChildren(display.measure);\n return height || 1;\n } // Compute the default character width.\n\n\n function charWidth(display) {\n if (display.cachedCharWidth != null) {\n return display.cachedCharWidth;\n }\n\n var anchor = elt(\"span\", \"xxxxxxxxxx\");\n var pre = elt(\"pre\", [anchor], \"CodeMirror-line-like\");\n removeChildrenAndAdd(display.measure, pre);\n var rect = anchor.getBoundingClientRect(),\n width = (rect.right - rect.left) / 10;\n\n if (width > 2) {\n display.cachedCharWidth = width;\n }\n\n return width || 10;\n } // Do a bulk-read of the DOM positions and sizes needed to draw the\n // view, so that we don't interleave reading and writing to the DOM.\n\n\n function getDimensions(cm) {\n var d = cm.display,\n left = {},\n width = {};\n var gutterLeft = d.gutters.clientLeft;\n\n for (var n = d.gutters.firstChild, i = 0; n; n = n.nextSibling, ++i) {\n var id = cm.display.gutterSpecs[i].className;\n left[id] = n.offsetLeft + n.clientLeft + gutterLeft;\n width[id] = n.clientWidth;\n }\n\n return {\n fixedPos: compensateForHScroll(d),\n gutterTotalWidth: d.gutters.offsetWidth,\n gutterLeft: left,\n gutterWidth: width,\n wrapperWidth: d.wrapper.clientWidth\n };\n } // Computes display.scroller.scrollLeft + display.gutters.offsetWidth,\n // but using getBoundingClientRect to get a sub-pixel-accurate\n // result.\n\n\n function compensateForHScroll(display) {\n return display.scroller.getBoundingClientRect().left - display.sizer.getBoundingClientRect().left;\n } // Returns a function that estimates the height of a line, to use as\n // first approximation until the line becomes visible (and is thus\n // properly measurable).\n\n\n function estimateHeight(cm) {\n var th = textHeight(cm.display),\n wrapping = cm.options.lineWrapping;\n var perLine = wrapping && Math.max(5, cm.display.scroller.clientWidth / charWidth(cm.display) - 3);\n return function (line) {\n if (lineIsHidden(cm.doc, line)) {\n return 0;\n }\n\n var widgetsHeight = 0;\n\n if (line.widgets) {\n for (var i = 0; i < line.widgets.length; i++) {\n if (line.widgets[i].height) {\n widgetsHeight += line.widgets[i].height;\n }\n }\n }\n\n if (wrapping) {\n return widgetsHeight + (Math.ceil(line.text.length / perLine) || 1) * th;\n } else {\n return widgetsHeight + th;\n }\n };\n }\n\n function estimateLineHeights(cm) {\n var doc = cm.doc,\n est = estimateHeight(cm);\n doc.iter(function (line) {\n var estHeight = est(line);\n\n if (estHeight != line.height) {\n updateLineHeight(line, estHeight);\n }\n });\n } // Given a mouse event, find the corresponding position. If liberal\n // is false, it checks whether a gutter or scrollbar was clicked,\n // and returns null if it was. forRect is used by rectangular\n // selections, and tries to estimate a character position even for\n // coordinates beyond the right of the text.\n\n\n function posFromMouse(cm, e, liberal, forRect) {\n var display = cm.display;\n\n if (!liberal && e_target(e).getAttribute(\"cm-not-content\") == \"true\") {\n return null;\n }\n\n var x,\n y,\n space = display.lineSpace.getBoundingClientRect(); // Fails unpredictably on IE[67] when mouse is dragged around quickly.\n\n try {\n x = e.clientX - space.left;\n y = e.clientY - space.top;\n } catch (e$1) {\n return null;\n }\n\n var coords = _coordsChar(cm, x, y),\n line;\n\n if (forRect && coords.xRel > 0 && (line = getLine(cm.doc, coords.line).text).length == coords.ch) {\n var colDiff = countColumn(line, line.length, cm.options.tabSize) - line.length;\n coords = Pos(coords.line, Math.max(0, Math.round((x - paddingH(cm.display).left) / charWidth(cm.display)) - colDiff));\n }\n\n return coords;\n } // Find the view element corresponding to a given line. Return null\n // when the line isn't visible.\n\n\n function findViewIndex(cm, n) {\n if (n >= cm.display.viewTo) {\n return null;\n }\n\n n -= cm.display.viewFrom;\n\n if (n < 0) {\n return null;\n }\n\n var view = cm.display.view;\n\n for (var i = 0; i < view.length; i++) {\n n -= view[i].size;\n\n if (n < 0) {\n return i;\n }\n }\n } // Updates the display.view data structure for a given change to the\n // document. From and to are in pre-change coordinates. Lendiff is\n // the amount of lines added or subtracted by the change. This is\n // used for changes that span multiple lines, or change the way\n // lines are divided into visual lines. regLineChange (below)\n // registers single-line changes.\n\n\n function regChange(cm, from, to, lendiff) {\n if (from == null) {\n from = cm.doc.first;\n }\n\n if (to == null) {\n to = cm.doc.first + cm.doc.size;\n }\n\n if (!lendiff) {\n lendiff = 0;\n }\n\n var display = cm.display;\n\n if (lendiff && to < display.viewTo && (display.updateLineNumbers == null || display.updateLineNumbers > from)) {\n display.updateLineNumbers = from;\n }\n\n cm.curOp.viewChanged = true;\n\n if (from >= display.viewTo) {\n // Change after\n if (sawCollapsedSpans && visualLineNo(cm.doc, from) < display.viewTo) {\n resetView(cm);\n }\n } else if (to <= display.viewFrom) {\n // Change before\n if (sawCollapsedSpans && visualLineEndNo(cm.doc, to + lendiff) > display.viewFrom) {\n resetView(cm);\n } else {\n display.viewFrom += lendiff;\n display.viewTo += lendiff;\n }\n } else if (from <= display.viewFrom && to >= display.viewTo) {\n // Full overlap\n resetView(cm);\n } else if (from <= display.viewFrom) {\n // Top overlap\n var cut = viewCuttingPoint(cm, to, to + lendiff, 1);\n\n if (cut) {\n display.view = display.view.slice(cut.index);\n display.viewFrom = cut.lineN;\n display.viewTo += lendiff;\n } else {\n resetView(cm);\n }\n } else if (to >= display.viewTo) {\n // Bottom overlap\n var cut$1 = viewCuttingPoint(cm, from, from, -1);\n\n if (cut$1) {\n display.view = display.view.slice(0, cut$1.index);\n display.viewTo = cut$1.lineN;\n } else {\n resetView(cm);\n }\n } else {\n // Gap in the middle\n var cutTop = viewCuttingPoint(cm, from, from, -1);\n var cutBot = viewCuttingPoint(cm, to, to + lendiff, 1);\n\n if (cutTop && cutBot) {\n display.view = display.view.slice(0, cutTop.index).concat(buildViewArray(cm, cutTop.lineN, cutBot.lineN)).concat(display.view.slice(cutBot.index));\n display.viewTo += lendiff;\n } else {\n resetView(cm);\n }\n }\n\n var ext = display.externalMeasured;\n\n if (ext) {\n if (to < ext.lineN) {\n ext.lineN += lendiff;\n } else if (from < ext.lineN + ext.size) {\n display.externalMeasured = null;\n }\n }\n } // Register a change to a single line. Type must be one of \"text\",\n // \"gutter\", \"class\", \"widget\"\n\n\n function regLineChange(cm, line, type) {\n cm.curOp.viewChanged = true;\n var display = cm.display,\n ext = cm.display.externalMeasured;\n\n if (ext && line >= ext.lineN && line < ext.lineN + ext.size) {\n display.externalMeasured = null;\n }\n\n if (line < display.viewFrom || line >= display.viewTo) {\n return;\n }\n\n var lineView = display.view[findViewIndex(cm, line)];\n\n if (lineView.node == null) {\n return;\n }\n\n var arr = lineView.changes || (lineView.changes = []);\n\n if (indexOf(arr, type) == -1) {\n arr.push(type);\n }\n } // Clear the view.\n\n\n function resetView(cm) {\n cm.display.viewFrom = cm.display.viewTo = cm.doc.first;\n cm.display.view = [];\n cm.display.viewOffset = 0;\n }\n\n function viewCuttingPoint(cm, oldN, newN, dir) {\n var index = findViewIndex(cm, oldN),\n diff,\n view = cm.display.view;\n\n if (!sawCollapsedSpans || newN == cm.doc.first + cm.doc.size) {\n return {\n index: index,\n lineN: newN\n };\n }\n\n var n = cm.display.viewFrom;\n\n for (var i = 0; i < index; i++) {\n n += view[i].size;\n }\n\n if (n != oldN) {\n if (dir > 0) {\n if (index == view.length - 1) {\n return null;\n }\n\n diff = n + view[index].size - oldN;\n index++;\n } else {\n diff = n - oldN;\n }\n\n oldN += diff;\n newN += diff;\n }\n\n while (visualLineNo(cm.doc, newN) != newN) {\n if (index == (dir < 0 ? 0 : view.length - 1)) {\n return null;\n }\n\n newN += dir * view[index - (dir < 0 ? 1 : 0)].size;\n index += dir;\n }\n\n return {\n index: index,\n lineN: newN\n };\n } // Force the view to cover a given range, adding empty view element\n // or clipping off existing ones as needed.\n\n\n function adjustView(cm, from, to) {\n var display = cm.display,\n view = display.view;\n\n if (view.length == 0 || from >= display.viewTo || to <= display.viewFrom) {\n display.view = buildViewArray(cm, from, to);\n display.viewFrom = from;\n } else {\n if (display.viewFrom > from) {\n display.view = buildViewArray(cm, from, display.viewFrom).concat(display.view);\n } else if (display.viewFrom < from) {\n display.view = display.view.slice(findViewIndex(cm, from));\n }\n\n display.viewFrom = from;\n\n if (display.viewTo < to) {\n display.view = display.view.concat(buildViewArray(cm, display.viewTo, to));\n } else if (display.viewTo > to) {\n display.view = display.view.slice(0, findViewIndex(cm, to));\n }\n }\n\n display.viewTo = to;\n } // Count the number of lines in the view whose DOM representation is\n // out of date (or nonexistent).\n\n\n function countDirtyView(cm) {\n var view = cm.display.view,\n dirty = 0;\n\n for (var i = 0; i < view.length; i++) {\n var lineView = view[i];\n\n if (!lineView.hidden && (!lineView.node || lineView.changes)) {\n ++dirty;\n }\n }\n\n return dirty;\n }\n\n function updateSelection(cm) {\n cm.display.input.showSelection(cm.display.input.prepareSelection());\n }\n\n function prepareSelection(cm, primary) {\n if (primary === void 0) primary = true;\n var doc = cm.doc,\n result = {};\n var curFragment = result.cursors = document.createDocumentFragment();\n var selFragment = result.selection = document.createDocumentFragment();\n var customCursor = cm.options.$customCursor;\n\n if (customCursor) {\n primary = true;\n }\n\n for (var i = 0; i < doc.sel.ranges.length; i++) {\n if (!primary && i == doc.sel.primIndex) {\n continue;\n }\n\n var range = doc.sel.ranges[i];\n\n if (range.from().line >= cm.display.viewTo || range.to().line < cm.display.viewFrom) {\n continue;\n }\n\n var collapsed = range.empty();\n\n if (customCursor) {\n var head = customCursor(cm, range);\n\n if (head) {\n drawSelectionCursor(cm, head, curFragment);\n }\n } else if (collapsed || cm.options.showCursorWhenSelecting) {\n drawSelectionCursor(cm, range.head, curFragment);\n }\n\n if (!collapsed) {\n drawSelectionRange(cm, range, selFragment);\n }\n }\n\n return result;\n } // Draws a cursor for the given range\n\n\n function drawSelectionCursor(cm, head, output) {\n var pos = _cursorCoords(cm, head, \"div\", null, null, !cm.options.singleCursorHeightPerLine);\n\n var cursor = output.appendChild(elt(\"div\", \"\\xA0\", \"CodeMirror-cursor\"));\n cursor.style.left = pos.left + \"px\";\n cursor.style.top = pos.top + \"px\";\n cursor.style.height = Math.max(0, pos.bottom - pos.top) * cm.options.cursorHeight + \"px\";\n\n if (/\\bcm-fat-cursor\\b/.test(cm.getWrapperElement().className)) {\n var charPos = _charCoords(cm, head, \"div\", null, null);\n\n var width = charPos.right - charPos.left;\n cursor.style.width = (width > 0 ? width : cm.defaultCharWidth()) + \"px\";\n }\n\n if (pos.other) {\n // Secondary cursor, shown when on a 'jump' in bi-directional text\n var otherCursor = output.appendChild(elt(\"div\", \"\\xA0\", \"CodeMirror-cursor CodeMirror-secondarycursor\"));\n otherCursor.style.display = \"\";\n otherCursor.style.left = pos.other.left + \"px\";\n otherCursor.style.top = pos.other.top + \"px\";\n otherCursor.style.height = (pos.other.bottom - pos.other.top) * .85 + \"px\";\n }\n }\n\n function cmpCoords(a, b) {\n return a.top - b.top || a.left - b.left;\n } // Draws the given range as a highlighted selection\n\n\n function drawSelectionRange(cm, range, output) {\n var display = cm.display,\n doc = cm.doc;\n var fragment = document.createDocumentFragment();\n var padding = paddingH(cm.display),\n leftSide = padding.left;\n var rightSide = Math.max(display.sizerWidth, displayWidth(cm) - display.sizer.offsetLeft) - padding.right;\n var docLTR = doc.direction == \"ltr\";\n\n function add(left, top, width, bottom) {\n if (top < 0) {\n top = 0;\n }\n\n top = Math.round(top);\n bottom = Math.round(bottom);\n fragment.appendChild(elt(\"div\", null, \"CodeMirror-selected\", \"position: absolute; left: \" + left + \"px;\\n top: \" + top + \"px; width: \" + (width == null ? rightSide - left : width) + \"px;\\n height: \" + (bottom - top) + \"px\"));\n }\n\n function drawForLine(line, fromArg, toArg) {\n var lineObj = getLine(doc, line);\n var lineLen = lineObj.text.length;\n var start, end;\n\n function coords(ch, bias) {\n return _charCoords(cm, Pos(line, ch), \"div\", lineObj, bias);\n }\n\n function wrapX(pos, dir, side) {\n var extent = wrappedLineExtentChar(cm, lineObj, null, pos);\n var prop = dir == \"ltr\" == (side == \"after\") ? \"left\" : \"right\";\n var ch = side == \"after\" ? extent.begin : extent.end - (/\\s/.test(lineObj.text.charAt(extent.end - 1)) ? 2 : 1);\n return coords(ch, prop)[prop];\n }\n\n var order = getOrder(lineObj, doc.direction);\n iterateBidiSections(order, fromArg || 0, toArg == null ? lineLen : toArg, function (from, to, dir, i) {\n var ltr = dir == \"ltr\";\n var fromPos = coords(from, ltr ? \"left\" : \"right\");\n var toPos = coords(to - 1, ltr ? \"right\" : \"left\");\n var openStart = fromArg == null && from == 0,\n openEnd = toArg == null && to == lineLen;\n var first = i == 0,\n last = !order || i == order.length - 1;\n\n if (toPos.top - fromPos.top <= 3) {\n // Single line\n var openLeft = (docLTR ? openStart : openEnd) && first;\n var openRight = (docLTR ? openEnd : openStart) && last;\n var left = openLeft ? leftSide : (ltr ? fromPos : toPos).left;\n var right = openRight ? rightSide : (ltr ? toPos : fromPos).right;\n add(left, fromPos.top, right - left, fromPos.bottom);\n } else {\n // Multiple lines\n var topLeft, topRight, botLeft, botRight;\n\n if (ltr) {\n topLeft = docLTR && openStart && first ? leftSide : fromPos.left;\n topRight = docLTR ? rightSide : wrapX(from, dir, \"before\");\n botLeft = docLTR ? leftSide : wrapX(to, dir, \"after\");\n botRight = docLTR && openEnd && last ? rightSide : toPos.right;\n } else {\n topLeft = !docLTR ? leftSide : wrapX(from, dir, \"before\");\n topRight = !docLTR && openStart && first ? rightSide : fromPos.right;\n botLeft = !docLTR && openEnd && last ? leftSide : toPos.left;\n botRight = !docLTR ? rightSide : wrapX(to, dir, \"after\");\n }\n\n add(topLeft, fromPos.top, topRight - topLeft, fromPos.bottom);\n\n if (fromPos.bottom < toPos.top) {\n add(leftSide, fromPos.bottom, null, toPos.top);\n }\n\n add(botLeft, toPos.top, botRight - botLeft, toPos.bottom);\n }\n\n if (!start || cmpCoords(fromPos, start) < 0) {\n start = fromPos;\n }\n\n if (cmpCoords(toPos, start) < 0) {\n start = toPos;\n }\n\n if (!end || cmpCoords(fromPos, end) < 0) {\n end = fromPos;\n }\n\n if (cmpCoords(toPos, end) < 0) {\n end = toPos;\n }\n });\n return {\n start: start,\n end: end\n };\n }\n\n var sFrom = range.from(),\n sTo = range.to();\n\n if (sFrom.line == sTo.line) {\n drawForLine(sFrom.line, sFrom.ch, sTo.ch);\n } else {\n var fromLine = getLine(doc, sFrom.line),\n toLine = getLine(doc, sTo.line);\n var singleVLine = visualLine(fromLine) == visualLine(toLine);\n var leftEnd = drawForLine(sFrom.line, sFrom.ch, singleVLine ? fromLine.text.length + 1 : null).end;\n var rightStart = drawForLine(sTo.line, singleVLine ? 0 : null, sTo.ch).start;\n\n if (singleVLine) {\n if (leftEnd.top < rightStart.top - 2) {\n add(leftEnd.right, leftEnd.top, null, leftEnd.bottom);\n add(leftSide, rightStart.top, rightStart.left, rightStart.bottom);\n } else {\n add(leftEnd.right, leftEnd.top, rightStart.left - leftEnd.right, leftEnd.bottom);\n }\n }\n\n if (leftEnd.bottom < rightStart.top) {\n add(leftSide, leftEnd.bottom, null, rightStart.top);\n }\n }\n\n output.appendChild(fragment);\n } // Cursor-blinking\n\n\n function restartBlink(cm) {\n if (!cm.state.focused) {\n return;\n }\n\n var display = cm.display;\n clearInterval(display.blinker);\n var on = true;\n display.cursorDiv.style.visibility = \"\";\n\n if (cm.options.cursorBlinkRate > 0) {\n display.blinker = setInterval(function () {\n if (!cm.hasFocus()) {\n onBlur(cm);\n }\n\n display.cursorDiv.style.visibility = (on = !on) ? \"\" : \"hidden\";\n }, cm.options.cursorBlinkRate);\n } else if (cm.options.cursorBlinkRate < 0) {\n display.cursorDiv.style.visibility = \"hidden\";\n }\n }\n\n function ensureFocus(cm) {\n if (!cm.hasFocus()) {\n cm.display.input.focus();\n\n if (!cm.state.focused) {\n onFocus(cm);\n }\n }\n }\n\n function delayBlurEvent(cm) {\n cm.state.delayingBlurEvent = true;\n setTimeout(function () {\n if (cm.state.delayingBlurEvent) {\n cm.state.delayingBlurEvent = false;\n\n if (cm.state.focused) {\n onBlur(cm);\n }\n }\n }, 100);\n }\n\n function onFocus(cm, e) {\n if (cm.state.delayingBlurEvent && !cm.state.draggingText) {\n cm.state.delayingBlurEvent = false;\n }\n\n if (cm.options.readOnly == \"nocursor\") {\n return;\n }\n\n if (!cm.state.focused) {\n signal(cm, \"focus\", cm, e);\n cm.state.focused = true;\n addClass(cm.display.wrapper, \"CodeMirror-focused\"); // This test prevents this from firing when a context\n // menu is closed (since the input reset would kill the\n // select-all detection hack)\n\n if (!cm.curOp && cm.display.selForContextMenu != cm.doc.sel) {\n cm.display.input.reset();\n\n if (webkit) {\n setTimeout(function () {\n return cm.display.input.reset(true);\n }, 20);\n } // Issue #1730\n\n }\n\n cm.display.input.receivedFocus();\n }\n\n restartBlink(cm);\n }\n\n function onBlur(cm, e) {\n if (cm.state.delayingBlurEvent) {\n return;\n }\n\n if (cm.state.focused) {\n signal(cm, \"blur\", cm, e);\n cm.state.focused = false;\n rmClass(cm.display.wrapper, \"CodeMirror-focused\");\n }\n\n clearInterval(cm.display.blinker);\n setTimeout(function () {\n if (!cm.state.focused) {\n cm.display.shift = false;\n }\n }, 150);\n } // Read the actual heights of the rendered lines, and update their\n // stored heights to match.\n\n\n function updateHeightsInViewport(cm) {\n var display = cm.display;\n var prevBottom = display.lineDiv.offsetTop;\n var viewTop = Math.max(0, display.scroller.getBoundingClientRect().top);\n var oldHeight = display.lineDiv.getBoundingClientRect().top;\n var mustScroll = 0;\n\n for (var i = 0; i < display.view.length; i++) {\n var cur = display.view[i],\n wrapping = cm.options.lineWrapping;\n var height = void 0,\n width = 0;\n\n if (cur.hidden) {\n continue;\n }\n\n oldHeight += cur.line.height;\n\n if (ie && ie_version < 8) {\n var bot = cur.node.offsetTop + cur.node.offsetHeight;\n height = bot - prevBottom;\n prevBottom = bot;\n } else {\n var box = cur.node.getBoundingClientRect();\n height = box.bottom - box.top; // Check that lines don't extend past the right of the current\n // editor width\n\n if (!wrapping && cur.text.firstChild) {\n width = cur.text.firstChild.getBoundingClientRect().right - box.left - 1;\n }\n }\n\n var diff = cur.line.height - height;\n\n if (diff > .005 || diff < -.005) {\n if (oldHeight < viewTop) {\n mustScroll -= diff;\n }\n\n updateLineHeight(cur.line, height);\n updateWidgetHeight(cur.line);\n\n if (cur.rest) {\n for (var j = 0; j < cur.rest.length; j++) {\n updateWidgetHeight(cur.rest[j]);\n }\n }\n }\n\n if (width > cm.display.sizerWidth) {\n var chWidth = Math.ceil(width / charWidth(cm.display));\n\n if (chWidth > cm.display.maxLineLength) {\n cm.display.maxLineLength = chWidth;\n cm.display.maxLine = cur.line;\n cm.display.maxLineChanged = true;\n }\n }\n }\n\n if (Math.abs(mustScroll) > 2) {\n display.scroller.scrollTop += mustScroll;\n }\n } // Read and store the height of line widgets associated with the\n // given line.\n\n\n function updateWidgetHeight(line) {\n if (line.widgets) {\n for (var i = 0; i < line.widgets.length; ++i) {\n var w = line.widgets[i],\n parent = w.node.parentNode;\n\n if (parent) {\n w.height = parent.offsetHeight;\n }\n }\n }\n } // Compute the lines that are visible in a given viewport (defaults\n // the the current scroll position). viewport may contain top,\n // height, and ensure (see op.scrollToPos) properties.\n\n\n function visibleLines(display, doc, viewport) {\n var top = viewport && viewport.top != null ? Math.max(0, viewport.top) : display.scroller.scrollTop;\n top = Math.floor(top - paddingTop(display));\n var bottom = viewport && viewport.bottom != null ? viewport.bottom : top + display.wrapper.clientHeight;\n\n var from = _lineAtHeight(doc, top),\n to = _lineAtHeight(doc, bottom); // Ensure is a {from: {line, ch}, to: {line, ch}} object, and\n // forces those lines into the viewport (if possible).\n\n\n if (viewport && viewport.ensure) {\n var ensureFrom = viewport.ensure.from.line,\n ensureTo = viewport.ensure.to.line;\n\n if (ensureFrom < from) {\n from = ensureFrom;\n to = _lineAtHeight(doc, _heightAtLine(getLine(doc, ensureFrom)) + display.wrapper.clientHeight);\n } else if (Math.min(ensureTo, doc.lastLine()) >= to) {\n from = _lineAtHeight(doc, _heightAtLine(getLine(doc, ensureTo)) - display.wrapper.clientHeight);\n to = ensureTo;\n }\n }\n\n return {\n from: from,\n to: Math.max(to, from + 1)\n };\n } // SCROLLING THINGS INTO VIEW\n // If an editor sits on the top or bottom of the window, partially\n // scrolled out of view, this ensures that the cursor is visible.\n\n\n function maybeScrollWindow(cm, rect) {\n if (signalDOMEvent(cm, \"scrollCursorIntoView\")) {\n return;\n }\n\n var display = cm.display,\n box = display.sizer.getBoundingClientRect(),\n doScroll = null;\n\n if (rect.top + box.top < 0) {\n doScroll = true;\n } else if (rect.bottom + box.top > (window.innerHeight || document.documentElement.clientHeight)) {\n doScroll = false;\n }\n\n if (doScroll != null && !phantom) {\n var scrollNode = elt(\"div\", \"\\u200B\", null, \"position: absolute;\\n top: \" + (rect.top - display.viewOffset - paddingTop(cm.display)) + \"px;\\n height: \" + (rect.bottom - rect.top + scrollGap(cm) + display.barHeight) + \"px;\\n left: \" + rect.left + \"px; width: \" + Math.max(2, rect.right - rect.left) + \"px;\");\n cm.display.lineSpace.appendChild(scrollNode);\n scrollNode.scrollIntoView(doScroll);\n cm.display.lineSpace.removeChild(scrollNode);\n }\n } // Scroll a given position into view (immediately), verifying that\n // it actually became visible (as line heights are accurately\n // measured, the position of something may 'drift' during drawing).\n\n\n function scrollPosIntoView(cm, pos, end, margin) {\n if (margin == null) {\n margin = 0;\n }\n\n var rect;\n\n if (!cm.options.lineWrapping && pos == end) {\n // Set pos and end to the cursor positions around the character pos sticks to\n // If pos.sticky == \"before\", that is around pos.ch - 1, otherwise around pos.ch\n // If pos == Pos(_, 0, \"before\"), pos and end are unchanged\n end = pos.sticky == \"before\" ? Pos(pos.line, pos.ch + 1, \"before\") : pos;\n pos = pos.ch ? Pos(pos.line, pos.sticky == \"before\" ? pos.ch - 1 : pos.ch, \"after\") : pos;\n }\n\n for (var limit = 0; limit < 5; limit++) {\n var changed = false;\n\n var coords = _cursorCoords(cm, pos);\n\n var endCoords = !end || end == pos ? coords : _cursorCoords(cm, end);\n rect = {\n left: Math.min(coords.left, endCoords.left),\n top: Math.min(coords.top, endCoords.top) - margin,\n right: Math.max(coords.left, endCoords.left),\n bottom: Math.max(coords.bottom, endCoords.bottom) + margin\n };\n var scrollPos = calculateScrollPos(cm, rect);\n var startTop = cm.doc.scrollTop,\n startLeft = cm.doc.scrollLeft;\n\n if (scrollPos.scrollTop != null) {\n updateScrollTop(cm, scrollPos.scrollTop);\n\n if (Math.abs(cm.doc.scrollTop - startTop) > 1) {\n changed = true;\n }\n }\n\n if (scrollPos.scrollLeft != null) {\n setScrollLeft(cm, scrollPos.scrollLeft);\n\n if (Math.abs(cm.doc.scrollLeft - startLeft) > 1) {\n changed = true;\n }\n }\n\n if (!changed) {\n break;\n }\n }\n\n return rect;\n } // Scroll a given set of coordinates into view (immediately).\n\n\n function scrollIntoView(cm, rect) {\n var scrollPos = calculateScrollPos(cm, rect);\n\n if (scrollPos.scrollTop != null) {\n updateScrollTop(cm, scrollPos.scrollTop);\n }\n\n if (scrollPos.scrollLeft != null) {\n setScrollLeft(cm, scrollPos.scrollLeft);\n }\n } // Calculate a new scroll position needed to scroll the given\n // rectangle into view. Returns an object with scrollTop and\n // scrollLeft properties. When these are undefined, the\n // vertical/horizontal position does not need to be adjusted.\n\n\n function calculateScrollPos(cm, rect) {\n var display = cm.display,\n snapMargin = textHeight(cm.display);\n\n if (rect.top < 0) {\n rect.top = 0;\n }\n\n var screentop = cm.curOp && cm.curOp.scrollTop != null ? cm.curOp.scrollTop : display.scroller.scrollTop;\n var screen = displayHeight(cm),\n result = {};\n\n if (rect.bottom - rect.top > screen) {\n rect.bottom = rect.top + screen;\n }\n\n var docBottom = cm.doc.height + paddingVert(display);\n var atTop = rect.top < snapMargin,\n atBottom = rect.bottom > docBottom - snapMargin;\n\n if (rect.top < screentop) {\n result.scrollTop = atTop ? 0 : rect.top;\n } else if (rect.bottom > screentop + screen) {\n var newTop = Math.min(rect.top, (atBottom ? docBottom : rect.bottom) - screen);\n\n if (newTop != screentop) {\n result.scrollTop = newTop;\n }\n }\n\n var gutterSpace = cm.options.fixedGutter ? 0 : display.gutters.offsetWidth;\n var screenleft = cm.curOp && cm.curOp.scrollLeft != null ? cm.curOp.scrollLeft : display.scroller.scrollLeft - gutterSpace;\n var screenw = displayWidth(cm) - display.gutters.offsetWidth;\n var tooWide = rect.right - rect.left > screenw;\n\n if (tooWide) {\n rect.right = rect.left + screenw;\n }\n\n if (rect.left < 10) {\n result.scrollLeft = 0;\n } else if (rect.left < screenleft) {\n result.scrollLeft = Math.max(0, rect.left + gutterSpace - (tooWide ? 0 : 10));\n } else if (rect.right > screenw + screenleft - 3) {\n result.scrollLeft = rect.right + (tooWide ? 0 : 10) - screenw;\n }\n\n return result;\n } // Store a relative adjustment to the scroll position in the current\n // operation (to be applied when the operation finishes).\n\n\n function addToScrollTop(cm, top) {\n if (top == null) {\n return;\n }\n\n resolveScrollToPos(cm);\n cm.curOp.scrollTop = (cm.curOp.scrollTop == null ? cm.doc.scrollTop : cm.curOp.scrollTop) + top;\n } // Make sure that at the end of the operation the current cursor is\n // shown.\n\n\n function ensureCursorVisible(cm) {\n resolveScrollToPos(cm);\n var cur = cm.getCursor();\n cm.curOp.scrollToPos = {\n from: cur,\n to: cur,\n margin: cm.options.cursorScrollMargin\n };\n }\n\n function scrollToCoords(cm, x, y) {\n if (x != null || y != null) {\n resolveScrollToPos(cm);\n }\n\n if (x != null) {\n cm.curOp.scrollLeft = x;\n }\n\n if (y != null) {\n cm.curOp.scrollTop = y;\n }\n }\n\n function scrollToRange(cm, range) {\n resolveScrollToPos(cm);\n cm.curOp.scrollToPos = range;\n } // When an operation has its scrollToPos property set, and another\n // scroll action is applied before the end of the operation, this\n // 'simulates' scrolling that position into view in a cheap way, so\n // that the effect of intermediate scroll commands is not ignored.\n\n\n function resolveScrollToPos(cm) {\n var range = cm.curOp.scrollToPos;\n\n if (range) {\n cm.curOp.scrollToPos = null;\n var from = estimateCoords(cm, range.from),\n to = estimateCoords(cm, range.to);\n scrollToCoordsRange(cm, from, to, range.margin);\n }\n }\n\n function scrollToCoordsRange(cm, from, to, margin) {\n var sPos = calculateScrollPos(cm, {\n left: Math.min(from.left, to.left),\n top: Math.min(from.top, to.top) - margin,\n right: Math.max(from.right, to.right),\n bottom: Math.max(from.bottom, to.bottom) + margin\n });\n scrollToCoords(cm, sPos.scrollLeft, sPos.scrollTop);\n } // Sync the scrollable area and scrollbars, ensure the viewport\n // covers the visible area.\n\n\n function updateScrollTop(cm, val) {\n if (Math.abs(cm.doc.scrollTop - val) < 2) {\n return;\n }\n\n if (!gecko) {\n updateDisplaySimple(cm, {\n top: val\n });\n }\n\n setScrollTop(cm, val, true);\n\n if (gecko) {\n updateDisplaySimple(cm);\n }\n\n startWorker(cm, 100);\n }\n\n function setScrollTop(cm, val, forceScroll) {\n val = Math.max(0, Math.min(cm.display.scroller.scrollHeight - cm.display.scroller.clientHeight, val));\n\n if (cm.display.scroller.scrollTop == val && !forceScroll) {\n return;\n }\n\n cm.doc.scrollTop = val;\n cm.display.scrollbars.setScrollTop(val);\n\n if (cm.display.scroller.scrollTop != val) {\n cm.display.scroller.scrollTop = val;\n }\n } // Sync scroller and scrollbar, ensure the gutter elements are\n // aligned.\n\n\n function setScrollLeft(cm, val, isScroller, forceScroll) {\n val = Math.max(0, Math.min(val, cm.display.scroller.scrollWidth - cm.display.scroller.clientWidth));\n\n if ((isScroller ? val == cm.doc.scrollLeft : Math.abs(cm.doc.scrollLeft - val) < 2) && !forceScroll) {\n return;\n }\n\n cm.doc.scrollLeft = val;\n alignHorizontally(cm);\n\n if (cm.display.scroller.scrollLeft != val) {\n cm.display.scroller.scrollLeft = val;\n }\n\n cm.display.scrollbars.setScrollLeft(val);\n } // SCROLLBARS\n // Prepare DOM reads needed to update the scrollbars. Done in one\n // shot to minimize update/measure roundtrips.\n\n\n function measureForScrollbars(cm) {\n var d = cm.display,\n gutterW = d.gutters.offsetWidth;\n var docH = Math.round(cm.doc.height + paddingVert(cm.display));\n return {\n clientHeight: d.scroller.clientHeight,\n viewHeight: d.wrapper.clientHeight,\n scrollWidth: d.scroller.scrollWidth,\n clientWidth: d.scroller.clientWidth,\n viewWidth: d.wrapper.clientWidth,\n barLeft: cm.options.fixedGutter ? gutterW : 0,\n docHeight: docH,\n scrollHeight: docH + scrollGap(cm) + d.barHeight,\n nativeBarWidth: d.nativeBarWidth,\n gutterWidth: gutterW\n };\n }\n\n var NativeScrollbars = function NativeScrollbars(place, scroll, cm) {\n this.cm = cm;\n var vert = this.vert = elt(\"div\", [elt(\"div\", null, null, \"min-width: 1px\")], \"CodeMirror-vscrollbar\");\n var horiz = this.horiz = elt(\"div\", [elt(\"div\", null, null, \"height: 100%; min-height: 1px\")], \"CodeMirror-hscrollbar\");\n vert.tabIndex = horiz.tabIndex = -1;\n place(vert);\n place(horiz);\n on(vert, \"scroll\", function () {\n if (vert.clientHeight) {\n scroll(vert.scrollTop, \"vertical\");\n }\n });\n on(horiz, \"scroll\", function () {\n if (horiz.clientWidth) {\n scroll(horiz.scrollLeft, \"horizontal\");\n }\n });\n this.checkedZeroWidth = false; // Need to set a minimum width to see the scrollbar on IE7 (but must not set it on IE8).\n\n if (ie && ie_version < 8) {\n this.horiz.style.minHeight = this.vert.style.minWidth = \"18px\";\n }\n };\n\n NativeScrollbars.prototype.update = function (measure) {\n var needsH = measure.scrollWidth > measure.clientWidth + 1;\n var needsV = measure.scrollHeight > measure.clientHeight + 1;\n var sWidth = measure.nativeBarWidth;\n\n if (needsV) {\n this.vert.style.display = \"block\";\n this.vert.style.bottom = needsH ? sWidth + \"px\" : \"0\";\n var totalHeight = measure.viewHeight - (needsH ? sWidth : 0); // A bug in IE8 can cause this value to be negative, so guard it.\n\n this.vert.firstChild.style.height = Math.max(0, measure.scrollHeight - measure.clientHeight + totalHeight) + \"px\";\n } else {\n this.vert.scrollTop = 0;\n this.vert.style.display = \"\";\n this.vert.firstChild.style.height = \"0\";\n }\n\n if (needsH) {\n this.horiz.style.display = \"block\";\n this.horiz.style.right = needsV ? sWidth + \"px\" : \"0\";\n this.horiz.style.left = measure.barLeft + \"px\";\n var totalWidth = measure.viewWidth - measure.barLeft - (needsV ? sWidth : 0);\n this.horiz.firstChild.style.width = Math.max(0, measure.scrollWidth - measure.clientWidth + totalWidth) + \"px\";\n } else {\n this.horiz.style.display = \"\";\n this.horiz.firstChild.style.width = \"0\";\n }\n\n if (!this.checkedZeroWidth && measure.clientHeight > 0) {\n if (sWidth == 0) {\n this.zeroWidthHack();\n }\n\n this.checkedZeroWidth = true;\n }\n\n return {\n right: needsV ? sWidth : 0,\n bottom: needsH ? sWidth : 0\n };\n };\n\n NativeScrollbars.prototype.setScrollLeft = function (pos) {\n if (this.horiz.scrollLeft != pos) {\n this.horiz.scrollLeft = pos;\n }\n\n if (this.disableHoriz) {\n this.enableZeroWidthBar(this.horiz, this.disableHoriz, \"horiz\");\n }\n };\n\n NativeScrollbars.prototype.setScrollTop = function (pos) {\n if (this.vert.scrollTop != pos) {\n this.vert.scrollTop = pos;\n }\n\n if (this.disableVert) {\n this.enableZeroWidthBar(this.vert, this.disableVert, \"vert\");\n }\n };\n\n NativeScrollbars.prototype.zeroWidthHack = function () {\n var w = mac && !mac_geMountainLion ? \"12px\" : \"18px\";\n this.horiz.style.height = this.vert.style.width = w;\n this.horiz.style.pointerEvents = this.vert.style.pointerEvents = \"none\";\n this.disableHoriz = new Delayed();\n this.disableVert = new Delayed();\n };\n\n NativeScrollbars.prototype.enableZeroWidthBar = function (bar, delay, type) {\n bar.style.pointerEvents = \"auto\";\n\n function maybeDisable() {\n // To find out whether the scrollbar is still visible, we\n // check whether the element under the pixel in the bottom\n // right corner of the scrollbar box is the scrollbar box\n // itself (when the bar is still visible) or its filler child\n // (when the bar is hidden). If it is still visible, we keep\n // it enabled, if it's hidden, we disable pointer events.\n var box = bar.getBoundingClientRect();\n var elt = type == \"vert\" ? document.elementFromPoint(box.right - 1, (box.top + box.bottom) / 2) : document.elementFromPoint((box.right + box.left) / 2, box.bottom - 1);\n\n if (elt != bar) {\n bar.style.pointerEvents = \"none\";\n } else {\n delay.set(1000, maybeDisable);\n }\n }\n\n delay.set(1000, maybeDisable);\n };\n\n NativeScrollbars.prototype.clear = function () {\n var parent = this.horiz.parentNode;\n parent.removeChild(this.horiz);\n parent.removeChild(this.vert);\n };\n\n var NullScrollbars = function NullScrollbars() {};\n\n NullScrollbars.prototype.update = function () {\n return {\n bottom: 0,\n right: 0\n };\n };\n\n NullScrollbars.prototype.setScrollLeft = function () {};\n\n NullScrollbars.prototype.setScrollTop = function () {};\n\n NullScrollbars.prototype.clear = function () {};\n\n function updateScrollbars(cm, measure) {\n if (!measure) {\n measure = measureForScrollbars(cm);\n }\n\n var startWidth = cm.display.barWidth,\n startHeight = cm.display.barHeight;\n updateScrollbarsInner(cm, measure);\n\n for (var i = 0; i < 4 && startWidth != cm.display.barWidth || startHeight != cm.display.barHeight; i++) {\n if (startWidth != cm.display.barWidth && cm.options.lineWrapping) {\n updateHeightsInViewport(cm);\n }\n\n updateScrollbarsInner(cm, measureForScrollbars(cm));\n startWidth = cm.display.barWidth;\n startHeight = cm.display.barHeight;\n }\n } // Re-synchronize the fake scrollbars with the actual size of the\n // content.\n\n\n function updateScrollbarsInner(cm, measure) {\n var d = cm.display;\n var sizes = d.scrollbars.update(measure);\n d.sizer.style.paddingRight = (d.barWidth = sizes.right) + \"px\";\n d.sizer.style.paddingBottom = (d.barHeight = sizes.bottom) + \"px\";\n d.heightForcer.style.borderBottom = sizes.bottom + \"px solid transparent\";\n\n if (sizes.right && sizes.bottom) {\n d.scrollbarFiller.style.display = \"block\";\n d.scrollbarFiller.style.height = sizes.bottom + \"px\";\n d.scrollbarFiller.style.width = sizes.right + \"px\";\n } else {\n d.scrollbarFiller.style.display = \"\";\n }\n\n if (sizes.bottom && cm.options.coverGutterNextToScrollbar && cm.options.fixedGutter) {\n d.gutterFiller.style.display = \"block\";\n d.gutterFiller.style.height = sizes.bottom + \"px\";\n d.gutterFiller.style.width = measure.gutterWidth + \"px\";\n } else {\n d.gutterFiller.style.display = \"\";\n }\n }\n\n var scrollbarModel = {\n \"native\": NativeScrollbars,\n \"null\": NullScrollbars\n };\n\n function initScrollbars(cm) {\n if (cm.display.scrollbars) {\n cm.display.scrollbars.clear();\n\n if (cm.display.scrollbars.addClass) {\n rmClass(cm.display.wrapper, cm.display.scrollbars.addClass);\n }\n }\n\n cm.display.scrollbars = new scrollbarModel[cm.options.scrollbarStyle](function (node) {\n cm.display.wrapper.insertBefore(node, cm.display.scrollbarFiller); // Prevent clicks in the scrollbars from killing focus\n\n on(node, \"mousedown\", function () {\n if (cm.state.focused) {\n setTimeout(function () {\n return cm.display.input.focus();\n }, 0);\n }\n });\n node.setAttribute(\"cm-not-content\", \"true\");\n }, function (pos, axis) {\n if (axis == \"horizontal\") {\n setScrollLeft(cm, pos);\n } else {\n updateScrollTop(cm, pos);\n }\n }, cm);\n\n if (cm.display.scrollbars.addClass) {\n addClass(cm.display.wrapper, cm.display.scrollbars.addClass);\n }\n } // Operations are used to wrap a series of changes to the editor\n // state in such a way that each change won't have to update the\n // cursor and display (which would be awkward, slow, and\n // error-prone). Instead, display updates are batched and then all\n // combined and executed at once.\n\n\n var nextOpId = 0; // Start a new operation.\n\n function _startOperation(cm) {\n cm.curOp = {\n cm: cm,\n viewChanged: false,\n // Flag that indicates that lines might need to be redrawn\n startHeight: cm.doc.height,\n // Used to detect need to update scrollbar\n forceUpdate: false,\n // Used to force a redraw\n updateInput: 0,\n // Whether to reset the input textarea\n typing: false,\n // Whether this reset should be careful to leave existing text (for compositing)\n changeObjs: null,\n // Accumulated changes, for firing change events\n cursorActivityHandlers: null,\n // Set of handlers to fire cursorActivity on\n cursorActivityCalled: 0,\n // Tracks which cursorActivity handlers have been called already\n selectionChanged: false,\n // Whether the selection needs to be redrawn\n updateMaxLine: false,\n // Set when the widest line needs to be determined anew\n scrollLeft: null,\n scrollTop: null,\n // Intermediate scroll position, not pushed to DOM yet\n scrollToPos: null,\n // Used to scroll to a specific position\n focus: false,\n id: ++nextOpId,\n // Unique ID\n markArrays: null // Used by addMarkedSpan\n\n };\n pushOperation(cm.curOp);\n } // Finish an operation, updating the display and signalling delayed events\n\n\n function _endOperation(cm) {\n var op = cm.curOp;\n\n if (op) {\n finishOperation(op, function (group) {\n for (var i = 0; i < group.ops.length; i++) {\n group.ops[i].cm.curOp = null;\n }\n\n endOperations(group);\n });\n }\n } // The DOM updates done when an operation finishes are batched so\n // that the minimum number of relayouts are required.\n\n\n function endOperations(group) {\n var ops = group.ops;\n\n for (var i = 0; i < ops.length; i++) // Read DOM\n {\n endOperation_R1(ops[i]);\n }\n\n for (var i$1 = 0; i$1 < ops.length; i$1++) // Write DOM (maybe)\n {\n endOperation_W1(ops[i$1]);\n }\n\n for (var i$2 = 0; i$2 < ops.length; i$2++) // Read DOM\n {\n endOperation_R2(ops[i$2]);\n }\n\n for (var i$3 = 0; i$3 < ops.length; i$3++) // Write DOM (maybe)\n {\n endOperation_W2(ops[i$3]);\n }\n\n for (var i$4 = 0; i$4 < ops.length; i$4++) // Read DOM\n {\n endOperation_finish(ops[i$4]);\n }\n }\n\n function endOperation_R1(op) {\n var cm = op.cm,\n display = cm.display;\n maybeClipScrollbars(cm);\n\n if (op.updateMaxLine) {\n findMaxLine(cm);\n }\n\n op.mustUpdate = op.viewChanged || op.forceUpdate || op.scrollTop != null || op.scrollToPos && (op.scrollToPos.from.line < display.viewFrom || op.scrollToPos.to.line >= display.viewTo) || display.maxLineChanged && cm.options.lineWrapping;\n op.update = op.mustUpdate && new DisplayUpdate(cm, op.mustUpdate && {\n top: op.scrollTop,\n ensure: op.scrollToPos\n }, op.forceUpdate);\n }\n\n function endOperation_W1(op) {\n op.updatedDisplay = op.mustUpdate && updateDisplayIfNeeded(op.cm, op.update);\n }\n\n function endOperation_R2(op) {\n var cm = op.cm,\n display = cm.display;\n\n if (op.updatedDisplay) {\n updateHeightsInViewport(cm);\n }\n\n op.barMeasure = measureForScrollbars(cm); // If the max line changed since it was last measured, measure it,\n // and ensure the document's width matches it.\n // updateDisplay_W2 will use these properties to do the actual resizing\n\n if (display.maxLineChanged && !cm.options.lineWrapping) {\n op.adjustWidthTo = measureChar(cm, display.maxLine, display.maxLine.text.length).left + 3;\n cm.display.sizerWidth = op.adjustWidthTo;\n op.barMeasure.scrollWidth = Math.max(display.scroller.clientWidth, display.sizer.offsetLeft + op.adjustWidthTo + scrollGap(cm) + cm.display.barWidth);\n op.maxScrollLeft = Math.max(0, display.sizer.offsetLeft + op.adjustWidthTo - displayWidth(cm));\n }\n\n if (op.updatedDisplay || op.selectionChanged) {\n op.preparedSelection = display.input.prepareSelection();\n }\n }\n\n function endOperation_W2(op) {\n var cm = op.cm;\n\n if (op.adjustWidthTo != null) {\n cm.display.sizer.style.minWidth = op.adjustWidthTo + \"px\";\n\n if (op.maxScrollLeft < cm.doc.scrollLeft) {\n setScrollLeft(cm, Math.min(cm.display.scroller.scrollLeft, op.maxScrollLeft), true);\n }\n\n cm.display.maxLineChanged = false;\n }\n\n var takeFocus = op.focus && op.focus == activeElt();\n\n if (op.preparedSelection) {\n cm.display.input.showSelection(op.preparedSelection, takeFocus);\n }\n\n if (op.updatedDisplay || op.startHeight != cm.doc.height) {\n updateScrollbars(cm, op.barMeasure);\n }\n\n if (op.updatedDisplay) {\n setDocumentHeight(cm, op.barMeasure);\n }\n\n if (op.selectionChanged) {\n restartBlink(cm);\n }\n\n if (cm.state.focused && op.updateInput) {\n cm.display.input.reset(op.typing);\n }\n\n if (takeFocus) {\n ensureFocus(op.cm);\n }\n }\n\n function endOperation_finish(op) {\n var cm = op.cm,\n display = cm.display,\n doc = cm.doc;\n\n if (op.updatedDisplay) {\n postUpdateDisplay(cm, op.update);\n } // Abort mouse wheel delta measurement, when scrolling explicitly\n\n\n if (display.wheelStartX != null && (op.scrollTop != null || op.scrollLeft != null || op.scrollToPos)) {\n display.wheelStartX = display.wheelStartY = null;\n } // Propagate the scroll position to the actual DOM scroller\n\n\n if (op.scrollTop != null) {\n setScrollTop(cm, op.scrollTop, op.forceScroll);\n }\n\n if (op.scrollLeft != null) {\n setScrollLeft(cm, op.scrollLeft, true, true);\n } // If we need to scroll a specific position into view, do so.\n\n\n if (op.scrollToPos) {\n var rect = scrollPosIntoView(cm, _clipPos(doc, op.scrollToPos.from), _clipPos(doc, op.scrollToPos.to), op.scrollToPos.margin);\n maybeScrollWindow(cm, rect);\n } // Fire events for markers that are hidden/unidden by editing or\n // undoing\n\n\n var hidden = op.maybeHiddenMarkers,\n unhidden = op.maybeUnhiddenMarkers;\n\n if (hidden) {\n for (var i = 0; i < hidden.length; ++i) {\n if (!hidden[i].lines.length) {\n signal(hidden[i], \"hide\");\n }\n }\n }\n\n if (unhidden) {\n for (var i$1 = 0; i$1 < unhidden.length; ++i$1) {\n if (unhidden[i$1].lines.length) {\n signal(unhidden[i$1], \"unhide\");\n }\n }\n }\n\n if (display.wrapper.offsetHeight) {\n doc.scrollTop = cm.display.scroller.scrollTop;\n } // Fire change events, and delayed event handlers\n\n\n if (op.changeObjs) {\n signal(cm, \"changes\", cm, op.changeObjs);\n }\n\n if (op.update) {\n op.update.finish();\n }\n } // Run the given function in an operation\n\n\n function runInOp(cm, f) {\n if (cm.curOp) {\n return f();\n }\n\n _startOperation(cm);\n\n try {\n return f();\n } finally {\n _endOperation(cm);\n }\n } // Wraps a function in an operation. Returns the wrapped function.\n\n\n function operation(cm, f) {\n return function () {\n if (cm.curOp) {\n return f.apply(cm, arguments);\n }\n\n _startOperation(cm);\n\n try {\n return f.apply(cm, arguments);\n } finally {\n _endOperation(cm);\n }\n };\n } // Used to add methods to editor and doc instances, wrapping them in\n // operations.\n\n\n function methodOp(f) {\n return function () {\n if (this.curOp) {\n return f.apply(this, arguments);\n }\n\n _startOperation(this);\n\n try {\n return f.apply(this, arguments);\n } finally {\n _endOperation(this);\n }\n };\n }\n\n function docMethodOp(f) {\n return function () {\n var cm = this.cm;\n\n if (!cm || cm.curOp) {\n return f.apply(this, arguments);\n }\n\n _startOperation(cm);\n\n try {\n return f.apply(this, arguments);\n } finally {\n _endOperation(cm);\n }\n };\n } // HIGHLIGHT WORKER\n\n\n function startWorker(cm, time) {\n if (cm.doc.highlightFrontier < cm.display.viewTo) {\n cm.state.highlight.set(time, bind(highlightWorker, cm));\n }\n }\n\n function highlightWorker(cm) {\n var doc = cm.doc;\n\n if (doc.highlightFrontier >= cm.display.viewTo) {\n return;\n }\n\n var end = +new Date() + cm.options.workTime;\n var context = getContextBefore(cm, doc.highlightFrontier);\n var changedLines = [];\n doc.iter(context.line, Math.min(doc.first + doc.size, cm.display.viewTo + 500), function (line) {\n if (context.line >= cm.display.viewFrom) {\n // Visible\n var oldStyles = line.styles;\n var resetState = line.text.length > cm.options.maxHighlightLength ? copyState(doc.mode, context.state) : null;\n var highlighted = highlightLine(cm, line, context, true);\n\n if (resetState) {\n context.state = resetState;\n }\n\n line.styles = highlighted.styles;\n var oldCls = line.styleClasses,\n newCls = highlighted.classes;\n\n if (newCls) {\n line.styleClasses = newCls;\n } else if (oldCls) {\n line.styleClasses = null;\n }\n\n var ischange = !oldStyles || oldStyles.length != line.styles.length || oldCls != newCls && (!oldCls || !newCls || oldCls.bgClass != newCls.bgClass || oldCls.textClass != newCls.textClass);\n\n for (var i = 0; !ischange && i < oldStyles.length; ++i) {\n ischange = oldStyles[i] != line.styles[i];\n }\n\n if (ischange) {\n changedLines.push(context.line);\n }\n\n line.stateAfter = context.save();\n context.nextLine();\n } else {\n if (line.text.length <= cm.options.maxHighlightLength) {\n processLine(cm, line.text, context);\n }\n\n line.stateAfter = context.line % 5 == 0 ? context.save() : null;\n context.nextLine();\n }\n\n if (+new Date() > end) {\n startWorker(cm, cm.options.workDelay);\n return true;\n }\n });\n doc.highlightFrontier = context.line;\n doc.modeFrontier = Math.max(doc.modeFrontier, context.line);\n\n if (changedLines.length) {\n runInOp(cm, function () {\n for (var i = 0; i < changedLines.length; i++) {\n regLineChange(cm, changedLines[i], \"text\");\n }\n });\n }\n } // DISPLAY DRAWING\n\n\n var DisplayUpdate = function DisplayUpdate(cm, viewport, force) {\n var display = cm.display;\n this.viewport = viewport; // Store some values that we'll need later (but don't want to force a relayout for)\n\n this.visible = visibleLines(display, cm.doc, viewport);\n this.editorIsHidden = !display.wrapper.offsetWidth;\n this.wrapperHeight = display.wrapper.clientHeight;\n this.wrapperWidth = display.wrapper.clientWidth;\n this.oldDisplayWidth = displayWidth(cm);\n this.force = force;\n this.dims = getDimensions(cm);\n this.events = [];\n };\n\n DisplayUpdate.prototype.signal = function (emitter, type) {\n if (hasHandler(emitter, type)) {\n this.events.push(arguments);\n }\n };\n\n DisplayUpdate.prototype.finish = function () {\n for (var i = 0; i < this.events.length; i++) {\n signal.apply(null, this.events[i]);\n }\n };\n\n function maybeClipScrollbars(cm) {\n var display = cm.display;\n\n if (!display.scrollbarsClipped && display.scroller.offsetWidth) {\n display.nativeBarWidth = display.scroller.offsetWidth - display.scroller.clientWidth;\n display.heightForcer.style.height = scrollGap(cm) + \"px\";\n display.sizer.style.marginBottom = -display.nativeBarWidth + \"px\";\n display.sizer.style.borderRightWidth = scrollGap(cm) + \"px\";\n display.scrollbarsClipped = true;\n }\n }\n\n function selectionSnapshot(cm) {\n if (cm.hasFocus()) {\n return null;\n }\n\n var active = activeElt();\n\n if (!active || !contains(cm.display.lineDiv, active)) {\n return null;\n }\n\n var result = {\n activeElt: active\n };\n\n if (window.getSelection) {\n var sel = window.getSelection();\n\n if (sel.anchorNode && sel.extend && contains(cm.display.lineDiv, sel.anchorNode)) {\n result.anchorNode = sel.anchorNode;\n result.anchorOffset = sel.anchorOffset;\n result.focusNode = sel.focusNode;\n result.focusOffset = sel.focusOffset;\n }\n }\n\n return result;\n }\n\n function restoreSelection(snapshot) {\n if (!snapshot || !snapshot.activeElt || snapshot.activeElt == activeElt()) {\n return;\n }\n\n snapshot.activeElt.focus();\n\n if (!/^(INPUT|TEXTAREA)$/.test(snapshot.activeElt.nodeName) && snapshot.anchorNode && contains(document.body, snapshot.anchorNode) && contains(document.body, snapshot.focusNode)) {\n var sel = window.getSelection(),\n range = document.createRange();\n range.setEnd(snapshot.anchorNode, snapshot.anchorOffset);\n range.collapse(false);\n sel.removeAllRanges();\n sel.addRange(range);\n sel.extend(snapshot.focusNode, snapshot.focusOffset);\n }\n } // Does the actual updating of the line display. Bails out\n // (returning false) when there is nothing to be done and forced is\n // false.\n\n\n function updateDisplayIfNeeded(cm, update) {\n var display = cm.display,\n doc = cm.doc;\n\n if (update.editorIsHidden) {\n resetView(cm);\n return false;\n } // Bail out if the visible area is already rendered and nothing changed.\n\n\n if (!update.force && update.visible.from >= display.viewFrom && update.visible.to <= display.viewTo && (display.updateLineNumbers == null || display.updateLineNumbers >= display.viewTo) && display.renderedView == display.view && countDirtyView(cm) == 0) {\n return false;\n }\n\n if (maybeUpdateLineNumberWidth(cm)) {\n resetView(cm);\n update.dims = getDimensions(cm);\n } // Compute a suitable new viewport (from & to)\n\n\n var end = doc.first + doc.size;\n var from = Math.max(update.visible.from - cm.options.viewportMargin, doc.first);\n var to = Math.min(end, update.visible.to + cm.options.viewportMargin);\n\n if (display.viewFrom < from && from - display.viewFrom < 20) {\n from = Math.max(doc.first, display.viewFrom);\n }\n\n if (display.viewTo > to && display.viewTo - to < 20) {\n to = Math.min(end, display.viewTo);\n }\n\n if (sawCollapsedSpans) {\n from = visualLineNo(cm.doc, from);\n to = visualLineEndNo(cm.doc, to);\n }\n\n var different = from != display.viewFrom || to != display.viewTo || display.lastWrapHeight != update.wrapperHeight || display.lastWrapWidth != update.wrapperWidth;\n adjustView(cm, from, to);\n display.viewOffset = _heightAtLine(getLine(cm.doc, display.viewFrom)); // Position the mover div to align with the current scroll position\n\n cm.display.mover.style.top = display.viewOffset + \"px\";\n var toUpdate = countDirtyView(cm);\n\n if (!different && toUpdate == 0 && !update.force && display.renderedView == display.view && (display.updateLineNumbers == null || display.updateLineNumbers >= display.viewTo)) {\n return false;\n } // For big changes, we hide the enclosing element during the\n // update, since that speeds up the operations on most browsers.\n\n\n var selSnapshot = selectionSnapshot(cm);\n\n if (toUpdate > 4) {\n display.lineDiv.style.display = \"none\";\n }\n\n patchDisplay(cm, display.updateLineNumbers, update.dims);\n\n if (toUpdate > 4) {\n display.lineDiv.style.display = \"\";\n }\n\n display.renderedView = display.view; // There might have been a widget with a focused element that got\n // hidden or updated, if so re-focus it.\n\n restoreSelection(selSnapshot); // Prevent selection and cursors from interfering with the scroll\n // width and height.\n\n removeChildren(display.cursorDiv);\n removeChildren(display.selectionDiv);\n display.gutters.style.height = display.sizer.style.minHeight = 0;\n\n if (different) {\n display.lastWrapHeight = update.wrapperHeight;\n display.lastWrapWidth = update.wrapperWidth;\n startWorker(cm, 400);\n }\n\n display.updateLineNumbers = null;\n return true;\n }\n\n function postUpdateDisplay(cm, update) {\n var viewport = update.viewport;\n\n for (var first = true;; first = false) {\n if (!first || !cm.options.lineWrapping || update.oldDisplayWidth == displayWidth(cm)) {\n // Clip forced viewport to actual scrollable area.\n if (viewport && viewport.top != null) {\n viewport = {\n top: Math.min(cm.doc.height + paddingVert(cm.display) - displayHeight(cm), viewport.top)\n };\n } // Updated line heights might result in the drawn area not\n // actually covering the viewport. Keep looping until it does.\n\n\n update.visible = visibleLines(cm.display, cm.doc, viewport);\n\n if (update.visible.from >= cm.display.viewFrom && update.visible.to <= cm.display.viewTo) {\n break;\n }\n } else if (first) {\n update.visible = visibleLines(cm.display, cm.doc, viewport);\n }\n\n if (!updateDisplayIfNeeded(cm, update)) {\n break;\n }\n\n updateHeightsInViewport(cm);\n var barMeasure = measureForScrollbars(cm);\n updateSelection(cm);\n updateScrollbars(cm, barMeasure);\n setDocumentHeight(cm, barMeasure);\n update.force = false;\n }\n\n update.signal(cm, \"update\", cm);\n\n if (cm.display.viewFrom != cm.display.reportedViewFrom || cm.display.viewTo != cm.display.reportedViewTo) {\n update.signal(cm, \"viewportChange\", cm, cm.display.viewFrom, cm.display.viewTo);\n cm.display.reportedViewFrom = cm.display.viewFrom;\n cm.display.reportedViewTo = cm.display.viewTo;\n }\n }\n\n function updateDisplaySimple(cm, viewport) {\n var update = new DisplayUpdate(cm, viewport);\n\n if (updateDisplayIfNeeded(cm, update)) {\n updateHeightsInViewport(cm);\n postUpdateDisplay(cm, update);\n var barMeasure = measureForScrollbars(cm);\n updateSelection(cm);\n updateScrollbars(cm, barMeasure);\n setDocumentHeight(cm, barMeasure);\n update.finish();\n }\n } // Sync the actual display DOM structure with display.view, removing\n // nodes for lines that are no longer in view, and creating the ones\n // that are not there yet, and updating the ones that are out of\n // date.\n\n\n function patchDisplay(cm, updateNumbersFrom, dims) {\n var display = cm.display,\n lineNumbers = cm.options.lineNumbers;\n var container = display.lineDiv,\n cur = container.firstChild;\n\n function rm(node) {\n var next = node.nextSibling; // Works around a throw-scroll bug in OS X Webkit\n\n if (webkit && mac && cm.display.currentWheelTarget == node) {\n node.style.display = \"none\";\n } else {\n node.parentNode.removeChild(node);\n }\n\n return next;\n }\n\n var view = display.view,\n lineN = display.viewFrom; // Loop over the elements in the view, syncing cur (the DOM nodes\n // in display.lineDiv) with the view as we go.\n\n for (var i = 0; i < view.length; i++) {\n var lineView = view[i];\n if (lineView.hidden) ;else if (!lineView.node || lineView.node.parentNode != container) {\n // Not drawn yet\n var node = buildLineElement(cm, lineView, lineN, dims);\n container.insertBefore(node, cur);\n } else {\n // Already drawn\n while (cur != lineView.node) {\n cur = rm(cur);\n }\n\n var updateNumber = lineNumbers && updateNumbersFrom != null && updateNumbersFrom <= lineN && lineView.lineNumber;\n\n if (lineView.changes) {\n if (indexOf(lineView.changes, \"gutter\") > -1) {\n updateNumber = false;\n }\n\n updateLineForChanges(cm, lineView, lineN, dims);\n }\n\n if (updateNumber) {\n removeChildren(lineView.lineNumber);\n lineView.lineNumber.appendChild(document.createTextNode(lineNumberFor(cm.options, lineN)));\n }\n\n cur = lineView.node.nextSibling;\n }\n lineN += lineView.size;\n }\n\n while (cur) {\n cur = rm(cur);\n }\n }\n\n function updateGutterSpace(display) {\n var width = display.gutters.offsetWidth;\n display.sizer.style.marginLeft = width + \"px\"; // Send an event to consumers responding to changes in gutter width.\n\n signalLater(display, \"gutterChanged\", display);\n }\n\n function setDocumentHeight(cm, measure) {\n cm.display.sizer.style.minHeight = measure.docHeight + \"px\";\n cm.display.heightForcer.style.top = measure.docHeight + \"px\";\n cm.display.gutters.style.height = measure.docHeight + cm.display.barHeight + scrollGap(cm) + \"px\";\n } // Re-align line numbers and gutter marks to compensate for\n // horizontal scrolling.\n\n\n function alignHorizontally(cm) {\n var display = cm.display,\n view = display.view;\n\n if (!display.alignWidgets && (!display.gutters.firstChild || !cm.options.fixedGutter)) {\n return;\n }\n\n var comp = compensateForHScroll(display) - display.scroller.scrollLeft + cm.doc.scrollLeft;\n var gutterW = display.gutters.offsetWidth,\n left = comp + \"px\";\n\n for (var i = 0; i < view.length; i++) {\n if (!view[i].hidden) {\n if (cm.options.fixedGutter) {\n if (view[i].gutter) {\n view[i].gutter.style.left = left;\n }\n\n if (view[i].gutterBackground) {\n view[i].gutterBackground.style.left = left;\n }\n }\n\n var align = view[i].alignable;\n\n if (align) {\n for (var j = 0; j < align.length; j++) {\n align[j].style.left = left;\n }\n }\n }\n }\n\n if (cm.options.fixedGutter) {\n display.gutters.style.left = comp + gutterW + \"px\";\n }\n } // Used to ensure that the line number gutter is still the right\n // size for the current document size. Returns true when an update\n // is needed.\n\n\n function maybeUpdateLineNumberWidth(cm) {\n if (!cm.options.lineNumbers) {\n return false;\n }\n\n var doc = cm.doc,\n last = lineNumberFor(cm.options, doc.first + doc.size - 1),\n display = cm.display;\n\n if (last.length != display.lineNumChars) {\n var test = display.measure.appendChild(elt(\"div\", [elt(\"div\", last)], \"CodeMirror-linenumber CodeMirror-gutter-elt\"));\n var innerW = test.firstChild.offsetWidth,\n padding = test.offsetWidth - innerW;\n display.lineGutter.style.width = \"\";\n display.lineNumInnerWidth = Math.max(innerW, display.lineGutter.offsetWidth - padding) + 1;\n display.lineNumWidth = display.lineNumInnerWidth + padding;\n display.lineNumChars = display.lineNumInnerWidth ? last.length : -1;\n display.lineGutter.style.width = display.lineNumWidth + \"px\";\n updateGutterSpace(cm.display);\n return true;\n }\n\n return false;\n }\n\n function getGutters(gutters, lineNumbers) {\n var result = [],\n sawLineNumbers = false;\n\n for (var i = 0; i < gutters.length; i++) {\n var name = gutters[i],\n style = null;\n\n if (typeof name != \"string\") {\n style = name.style;\n name = name.className;\n }\n\n if (name == \"CodeMirror-linenumbers\") {\n if (!lineNumbers) {\n continue;\n } else {\n sawLineNumbers = true;\n }\n }\n\n result.push({\n className: name,\n style: style\n });\n }\n\n if (lineNumbers && !sawLineNumbers) {\n result.push({\n className: \"CodeMirror-linenumbers\",\n style: null\n });\n }\n\n return result;\n } // Rebuild the gutter elements, ensure the margin to the left of the\n // code matches their width.\n\n\n function renderGutters(display) {\n var gutters = display.gutters,\n specs = display.gutterSpecs;\n removeChildren(gutters);\n display.lineGutter = null;\n\n for (var i = 0; i < specs.length; ++i) {\n var ref = specs[i];\n var className = ref.className;\n var style = ref.style;\n var gElt = gutters.appendChild(elt(\"div\", null, \"CodeMirror-gutter \" + className));\n\n if (style) {\n gElt.style.cssText = style;\n }\n\n if (className == \"CodeMirror-linenumbers\") {\n display.lineGutter = gElt;\n gElt.style.width = (display.lineNumWidth || 1) + \"px\";\n }\n }\n\n gutters.style.display = specs.length ? \"\" : \"none\";\n updateGutterSpace(display);\n }\n\n function updateGutters(cm) {\n renderGutters(cm.display);\n regChange(cm);\n alignHorizontally(cm);\n } // The display handles the DOM integration, both for input reading\n // and content drawing. It holds references to DOM nodes and\n // display-related state.\n\n\n function Display(place, doc, input, options) {\n var d = this;\n this.input = input; // Covers bottom-right square when both scrollbars are present.\n\n d.scrollbarFiller = elt(\"div\", null, \"CodeMirror-scrollbar-filler\");\n d.scrollbarFiller.setAttribute(\"cm-not-content\", \"true\"); // Covers bottom of gutter when coverGutterNextToScrollbar is on\n // and h scrollbar is present.\n\n d.gutterFiller = elt(\"div\", null, \"CodeMirror-gutter-filler\");\n d.gutterFiller.setAttribute(\"cm-not-content\", \"true\"); // Will contain the actual code, positioned to cover the viewport.\n\n d.lineDiv = eltP(\"div\", null, \"CodeMirror-code\"); // Elements are added to these to represent selection and cursors.\n\n d.selectionDiv = elt(\"div\", null, null, \"position: relative; z-index: 1\");\n d.cursorDiv = elt(\"div\", null, \"CodeMirror-cursors\"); // A visibility: hidden element used to find the size of things.\n\n d.measure = elt(\"div\", null, \"CodeMirror-measure\"); // When lines outside of the viewport are measured, they are drawn in this.\n\n d.lineMeasure = elt(\"div\", null, \"CodeMirror-measure\"); // Wraps everything that needs to exist inside the vertically-padded coordinate system\n\n d.lineSpace = eltP(\"div\", [d.measure, d.lineMeasure, d.selectionDiv, d.cursorDiv, d.lineDiv], null, \"position: relative; outline: none\");\n var lines = eltP(\"div\", [d.lineSpace], \"CodeMirror-lines\"); // Moved around its parent to cover visible view.\n\n d.mover = elt(\"div\", [lines], null, \"position: relative\"); // Set to the height of the document, allowing scrolling.\n\n d.sizer = elt(\"div\", [d.mover], \"CodeMirror-sizer\");\n d.sizerWidth = null; // Behavior of elts with overflow: auto and padding is\n // inconsistent across browsers. This is used to ensure the\n // scrollable area is big enough.\n\n d.heightForcer = elt(\"div\", null, null, \"position: absolute; height: \" + scrollerGap + \"px; width: 1px;\"); // Will contain the gutters, if any.\n\n d.gutters = elt(\"div\", null, \"CodeMirror-gutters\");\n d.lineGutter = null; // Actual scrollable element.\n\n d.scroller = elt(\"div\", [d.sizer, d.heightForcer, d.gutters], \"CodeMirror-scroll\");\n d.scroller.setAttribute(\"tabIndex\", \"-1\"); // The element in which the editor lives.\n\n d.wrapper = elt(\"div\", [d.scrollbarFiller, d.gutterFiller, d.scroller], \"CodeMirror\"); // This attribute is respected by automatic translation systems such as Google Translate,\n // and may also be respected by tools used by human translators.\n\n d.wrapper.setAttribute('translate', 'no'); // Work around IE7 z-index bug (not perfect, hence IE7 not really being supported)\n\n if (ie && ie_version < 8) {\n d.gutters.style.zIndex = -1;\n d.scroller.style.paddingRight = 0;\n }\n\n if (!webkit && !(gecko && mobile)) {\n d.scroller.draggable = true;\n }\n\n if (place) {\n if (place.appendChild) {\n place.appendChild(d.wrapper);\n } else {\n place(d.wrapper);\n }\n } // Current rendered range (may be bigger than the view window).\n\n\n d.viewFrom = d.viewTo = doc.first;\n d.reportedViewFrom = d.reportedViewTo = doc.first; // Information about the rendered lines.\n\n d.view = [];\n d.renderedView = null; // Holds info about a single rendered line when it was rendered\n // for measurement, while not in view.\n\n d.externalMeasured = null; // Empty space (in pixels) above the view\n\n d.viewOffset = 0;\n d.lastWrapHeight = d.lastWrapWidth = 0;\n d.updateLineNumbers = null;\n d.nativeBarWidth = d.barHeight = d.barWidth = 0;\n d.scrollbarsClipped = false; // Used to only resize the line number gutter when necessary (when\n // the amount of lines crosses a boundary that makes its width change)\n\n d.lineNumWidth = d.lineNumInnerWidth = d.lineNumChars = null; // Set to true when a non-horizontal-scrolling line widget is\n // added. As an optimization, line widget aligning is skipped when\n // this is false.\n\n d.alignWidgets = false;\n d.cachedCharWidth = d.cachedTextHeight = d.cachedPaddingH = null; // Tracks the maximum line length so that the horizontal scrollbar\n // can be kept static when scrolling.\n\n d.maxLine = null;\n d.maxLineLength = 0;\n d.maxLineChanged = false; // Used for measuring wheel scrolling granularity\n\n d.wheelDX = d.wheelDY = d.wheelStartX = d.wheelStartY = null; // True when shift is held down.\n\n d.shift = false; // Used to track whether anything happened since the context menu\n // was opened.\n\n d.selForContextMenu = null;\n d.activeTouch = null;\n d.gutterSpecs = getGutters(options.gutters, options.lineNumbers);\n renderGutters(d);\n input.init(d);\n } // Since the delta values reported on mouse wheel events are\n // unstandardized between browsers and even browser versions, and\n // generally horribly unpredictable, this code starts by measuring\n // the scroll effect that the first few mouse wheel events have,\n // and, from that, detects the way it can convert deltas to pixel\n // offsets afterwards.\n //\n // The reason we want to know the amount a wheel event will scroll\n // is that it gives us a chance to update the display before the\n // actual scrolling happens, reducing flickering.\n\n\n var wheelSamples = 0,\n wheelPixelsPerUnit = null; // Fill in a browser-detected starting value on browsers where we\n // know one. These don't have to be accurate -- the result of them\n // being wrong would just be a slight flicker on the first wheel\n // scroll (if it is large enough).\n\n if (ie) {\n wheelPixelsPerUnit = -.53;\n } else if (gecko) {\n wheelPixelsPerUnit = 15;\n } else if (chrome) {\n wheelPixelsPerUnit = -.7;\n } else if (safari) {\n wheelPixelsPerUnit = -1 / 3;\n }\n\n function wheelEventDelta(e) {\n var dx = e.wheelDeltaX,\n dy = e.wheelDeltaY;\n\n if (dx == null && e.detail && e.axis == e.HORIZONTAL_AXIS) {\n dx = e.detail;\n }\n\n if (dy == null && e.detail && e.axis == e.VERTICAL_AXIS) {\n dy = e.detail;\n } else if (dy == null) {\n dy = e.wheelDelta;\n }\n\n return {\n x: dx,\n y: dy\n };\n }\n\n function wheelEventPixels(e) {\n var delta = wheelEventDelta(e);\n delta.x *= wheelPixelsPerUnit;\n delta.y *= wheelPixelsPerUnit;\n return delta;\n }\n\n function onScrollWheel(cm, e) {\n var delta = wheelEventDelta(e),\n dx = delta.x,\n dy = delta.y;\n var pixelsPerUnit = wheelPixelsPerUnit;\n\n if (e.deltaMode === 0) {\n dx = e.deltaX;\n dy = e.deltaY;\n pixelsPerUnit = 1;\n }\n\n var display = cm.display,\n scroll = display.scroller; // Quit if there's nothing to scroll here\n\n var canScrollX = scroll.scrollWidth > scroll.clientWidth;\n var canScrollY = scroll.scrollHeight > scroll.clientHeight;\n\n if (!(dx && canScrollX || dy && canScrollY)) {\n return;\n } // Webkit browsers on OS X abort momentum scrolls when the target\n // of the scroll event is removed from the scrollable element.\n // This hack (see related code in patchDisplay) makes sure the\n // element is kept around.\n\n\n if (dy && mac && webkit) {\n outer: for (var cur = e.target, view = display.view; cur != scroll; cur = cur.parentNode) {\n for (var i = 0; i < view.length; i++) {\n if (view[i].node == cur) {\n cm.display.currentWheelTarget = cur;\n break outer;\n }\n }\n }\n } // On some browsers, horizontal scrolling will cause redraws to\n // happen before the gutter has been realigned, causing it to\n // wriggle around in a most unseemly way. When we have an\n // estimated pixels/delta value, we just handle horizontal\n // scrolling entirely here. It'll be slightly off from native, but\n // better than glitching out.\n\n\n if (dx && !gecko && !presto && pixelsPerUnit != null) {\n if (dy && canScrollY) {\n updateScrollTop(cm, Math.max(0, scroll.scrollTop + dy * pixelsPerUnit));\n }\n\n setScrollLeft(cm, Math.max(0, scroll.scrollLeft + dx * pixelsPerUnit)); // Only prevent default scrolling if vertical scrolling is\n // actually possible. Otherwise, it causes vertical scroll\n // jitter on OSX trackpads when deltaX is small and deltaY\n // is large (issue #3579)\n\n if (!dy || dy && canScrollY) {\n e_preventDefault(e);\n }\n\n display.wheelStartX = null; // Abort measurement, if in progress\n\n return;\n } // 'Project' the visible viewport to cover the area that is being\n // scrolled into view (if we know enough to estimate it).\n\n\n if (dy && pixelsPerUnit != null) {\n var pixels = dy * pixelsPerUnit;\n var top = cm.doc.scrollTop,\n bot = top + display.wrapper.clientHeight;\n\n if (pixels < 0) {\n top = Math.max(0, top + pixels - 50);\n } else {\n bot = Math.min(cm.doc.height, bot + pixels + 50);\n }\n\n updateDisplaySimple(cm, {\n top: top,\n bottom: bot\n });\n }\n\n if (wheelSamples < 20 && e.deltaMode !== 0) {\n if (display.wheelStartX == null) {\n display.wheelStartX = scroll.scrollLeft;\n display.wheelStartY = scroll.scrollTop;\n display.wheelDX = dx;\n display.wheelDY = dy;\n setTimeout(function () {\n if (display.wheelStartX == null) {\n return;\n }\n\n var movedX = scroll.scrollLeft - display.wheelStartX;\n var movedY = scroll.scrollTop - display.wheelStartY;\n var sample = movedY && display.wheelDY && movedY / display.wheelDY || movedX && display.wheelDX && movedX / display.wheelDX;\n display.wheelStartX = display.wheelStartY = null;\n\n if (!sample) {\n return;\n }\n\n wheelPixelsPerUnit = (wheelPixelsPerUnit * wheelSamples + sample) / (wheelSamples + 1);\n ++wheelSamples;\n }, 200);\n } else {\n display.wheelDX += dx;\n display.wheelDY += dy;\n }\n }\n } // Selection objects are immutable. A new one is created every time\n // the selection changes. A selection is one or more non-overlapping\n // (and non-touching) ranges, sorted, and an integer that indicates\n // which one is the primary selection (the one that's scrolled into\n // view, that getCursor returns, etc).\n\n\n var Selection = function Selection(ranges, primIndex) {\n this.ranges = ranges;\n this.primIndex = primIndex;\n };\n\n Selection.prototype.primary = function () {\n return this.ranges[this.primIndex];\n };\n\n Selection.prototype.equals = function (other) {\n if (other == this) {\n return true;\n }\n\n if (other.primIndex != this.primIndex || other.ranges.length != this.ranges.length) {\n return false;\n }\n\n for (var i = 0; i < this.ranges.length; i++) {\n var here = this.ranges[i],\n there = other.ranges[i];\n\n if (!equalCursorPos(here.anchor, there.anchor) || !equalCursorPos(here.head, there.head)) {\n return false;\n }\n }\n\n return true;\n };\n\n Selection.prototype.deepCopy = function () {\n var out = [];\n\n for (var i = 0; i < this.ranges.length; i++) {\n out[i] = new Range(copyPos(this.ranges[i].anchor), copyPos(this.ranges[i].head));\n }\n\n return new Selection(out, this.primIndex);\n };\n\n Selection.prototype.somethingSelected = function () {\n for (var i = 0; i < this.ranges.length; i++) {\n if (!this.ranges[i].empty()) {\n return true;\n }\n }\n\n return false;\n };\n\n Selection.prototype.contains = function (pos, end) {\n if (!end) {\n end = pos;\n }\n\n for (var i = 0; i < this.ranges.length; i++) {\n var range = this.ranges[i];\n\n if (cmp(end, range.from()) >= 0 && cmp(pos, range.to()) <= 0) {\n return i;\n }\n }\n\n return -1;\n };\n\n var Range = function Range(anchor, head) {\n this.anchor = anchor;\n this.head = head;\n };\n\n Range.prototype.from = function () {\n return minPos(this.anchor, this.head);\n };\n\n Range.prototype.to = function () {\n return maxPos(this.anchor, this.head);\n };\n\n Range.prototype.empty = function () {\n return this.head.line == this.anchor.line && this.head.ch == this.anchor.ch;\n }; // Take an unsorted, potentially overlapping set of ranges, and\n // build a selection out of it. 'Consumes' ranges array (modifying\n // it).\n\n\n function normalizeSelection(cm, ranges, primIndex) {\n var mayTouch = cm && cm.options.selectionsMayTouch;\n var prim = ranges[primIndex];\n ranges.sort(function (a, b) {\n return cmp(a.from(), b.from());\n });\n primIndex = indexOf(ranges, prim);\n\n for (var i = 1; i < ranges.length; i++) {\n var cur = ranges[i],\n prev = ranges[i - 1];\n var diff = cmp(prev.to(), cur.from());\n\n if (mayTouch && !cur.empty() ? diff > 0 : diff >= 0) {\n var from = minPos(prev.from(), cur.from()),\n to = maxPos(prev.to(), cur.to());\n var inv = prev.empty() ? cur.from() == cur.head : prev.from() == prev.head;\n\n if (i <= primIndex) {\n --primIndex;\n }\n\n ranges.splice(--i, 2, new Range(inv ? to : from, inv ? from : to));\n }\n }\n\n return new Selection(ranges, primIndex);\n }\n\n function simpleSelection(anchor, head) {\n return new Selection([new Range(anchor, head || anchor)], 0);\n } // Compute the position of the end of a change (its 'to' property\n // refers to the pre-change end).\n\n\n function changeEnd(change) {\n if (!change.text) {\n return change.to;\n }\n\n return Pos(change.from.line + change.text.length - 1, lst(change.text).length + (change.text.length == 1 ? change.from.ch : 0));\n } // Adjust a position to refer to the post-change position of the\n // same text, or the end of the change if the change covers it.\n\n\n function adjustForChange(pos, change) {\n if (cmp(pos, change.from) < 0) {\n return pos;\n }\n\n if (cmp(pos, change.to) <= 0) {\n return changeEnd(change);\n }\n\n var line = pos.line + change.text.length - (change.to.line - change.from.line) - 1,\n ch = pos.ch;\n\n if (pos.line == change.to.line) {\n ch += changeEnd(change).ch - change.to.ch;\n }\n\n return Pos(line, ch);\n }\n\n function computeSelAfterChange(doc, change) {\n var out = [];\n\n for (var i = 0; i < doc.sel.ranges.length; i++) {\n var range = doc.sel.ranges[i];\n out.push(new Range(adjustForChange(range.anchor, change), adjustForChange(range.head, change)));\n }\n\n return normalizeSelection(doc.cm, out, doc.sel.primIndex);\n }\n\n function offsetPos(pos, old, nw) {\n if (pos.line == old.line) {\n return Pos(nw.line, pos.ch - old.ch + nw.ch);\n } else {\n return Pos(nw.line + (pos.line - old.line), pos.ch);\n }\n } // Used by replaceSelections to allow moving the selection to the\n // start or around the replaced test. Hint may be \"start\" or \"around\".\n\n\n function computeReplacedSel(doc, changes, hint) {\n var out = [];\n var oldPrev = Pos(doc.first, 0),\n newPrev = oldPrev;\n\n for (var i = 0; i < changes.length; i++) {\n var change = changes[i];\n var from = offsetPos(change.from, oldPrev, newPrev);\n var to = offsetPos(changeEnd(change), oldPrev, newPrev);\n oldPrev = change.to;\n newPrev = to;\n\n if (hint == \"around\") {\n var range = doc.sel.ranges[i],\n inv = cmp(range.head, range.anchor) < 0;\n out[i] = new Range(inv ? to : from, inv ? from : to);\n } else {\n out[i] = new Range(from, from);\n }\n }\n\n return new Selection(out, doc.sel.primIndex);\n } // Used to get the editor into a consistent state again when options change.\n\n\n function loadMode(cm) {\n cm.doc.mode = getMode(cm.options, cm.doc.modeOption);\n resetModeState(cm);\n }\n\n function resetModeState(cm) {\n cm.doc.iter(function (line) {\n if (line.stateAfter) {\n line.stateAfter = null;\n }\n\n if (line.styles) {\n line.styles = null;\n }\n });\n cm.doc.modeFrontier = cm.doc.highlightFrontier = cm.doc.first;\n startWorker(cm, 100);\n cm.state.modeGen++;\n\n if (cm.curOp) {\n regChange(cm);\n }\n } // DOCUMENT DATA STRUCTURE\n // By default, updates that start and end at the beginning of a line\n // are treated specially, in order to make the association of line\n // widgets and marker elements with the text behave more intuitive.\n\n\n function isWholeLineUpdate(doc, change) {\n return change.from.ch == 0 && change.to.ch == 0 && lst(change.text) == \"\" && (!doc.cm || doc.cm.options.wholeLineUpdateBefore);\n } // Perform a change on the document data structure.\n\n\n function updateDoc(doc, change, markedSpans, estimateHeight) {\n function spansFor(n) {\n return markedSpans ? markedSpans[n] : null;\n }\n\n function update(line, text, spans) {\n updateLine(line, text, spans, estimateHeight);\n signalLater(line, \"change\", line, change);\n }\n\n function linesFor(start, end) {\n var result = [];\n\n for (var i = start; i < end; ++i) {\n result.push(new Line(text[i], spansFor(i), estimateHeight));\n }\n\n return result;\n }\n\n var from = change.from,\n to = change.to,\n text = change.text;\n var firstLine = getLine(doc, from.line),\n lastLine = getLine(doc, to.line);\n var lastText = lst(text),\n lastSpans = spansFor(text.length - 1),\n nlines = to.line - from.line; // Adjust the line structure\n\n if (change.full) {\n doc.insert(0, linesFor(0, text.length));\n doc.remove(text.length, doc.size - text.length);\n } else if (isWholeLineUpdate(doc, change)) {\n // This is a whole-line replace. Treated specially to make\n // sure line objects move the way they are supposed to.\n var added = linesFor(0, text.length - 1);\n update(lastLine, lastLine.text, lastSpans);\n\n if (nlines) {\n doc.remove(from.line, nlines);\n }\n\n if (added.length) {\n doc.insert(from.line, added);\n }\n } else if (firstLine == lastLine) {\n if (text.length == 1) {\n update(firstLine, firstLine.text.slice(0, from.ch) + lastText + firstLine.text.slice(to.ch), lastSpans);\n } else {\n var added$1 = linesFor(1, text.length - 1);\n added$1.push(new Line(lastText + firstLine.text.slice(to.ch), lastSpans, estimateHeight));\n update(firstLine, firstLine.text.slice(0, from.ch) + text[0], spansFor(0));\n doc.insert(from.line + 1, added$1);\n }\n } else if (text.length == 1) {\n update(firstLine, firstLine.text.slice(0, from.ch) + text[0] + lastLine.text.slice(to.ch), spansFor(0));\n doc.remove(from.line + 1, nlines);\n } else {\n update(firstLine, firstLine.text.slice(0, from.ch) + text[0], spansFor(0));\n update(lastLine, lastText + lastLine.text.slice(to.ch), lastSpans);\n var added$2 = linesFor(1, text.length - 1);\n\n if (nlines > 1) {\n doc.remove(from.line + 1, nlines - 1);\n }\n\n doc.insert(from.line + 1, added$2);\n }\n\n signalLater(doc, \"change\", doc, change);\n } // Call f for all linked documents.\n\n\n function linkedDocs(doc, f, sharedHistOnly) {\n function propagate(doc, skip, sharedHist) {\n if (doc.linked) {\n for (var i = 0; i < doc.linked.length; ++i) {\n var rel = doc.linked[i];\n\n if (rel.doc == skip) {\n continue;\n }\n\n var shared = sharedHist && rel.sharedHist;\n\n if (sharedHistOnly && !shared) {\n continue;\n }\n\n f(rel.doc, shared);\n propagate(rel.doc, doc, shared);\n }\n }\n }\n\n propagate(doc, null, true);\n } // Attach a document to an editor.\n\n\n function attachDoc(cm, doc) {\n if (doc.cm) {\n throw new Error(\"This document is already in use.\");\n }\n\n cm.doc = doc;\n doc.cm = cm;\n estimateLineHeights(cm);\n loadMode(cm);\n setDirectionClass(cm);\n cm.options.direction = doc.direction;\n\n if (!cm.options.lineWrapping) {\n findMaxLine(cm);\n }\n\n cm.options.mode = doc.modeOption;\n regChange(cm);\n }\n\n function setDirectionClass(cm) {\n (cm.doc.direction == \"rtl\" ? addClass : rmClass)(cm.display.lineDiv, \"CodeMirror-rtl\");\n }\n\n function directionChanged(cm) {\n runInOp(cm, function () {\n setDirectionClass(cm);\n regChange(cm);\n });\n }\n\n function History(prev) {\n // Arrays of change events and selections. Doing something adds an\n // event to done and clears undo. Undoing moves events from done\n // to undone, redoing moves them in the other direction.\n this.done = [];\n this.undone = [];\n this.undoDepth = prev ? prev.undoDepth : Infinity; // Used to track when changes can be merged into a single undo\n // event\n\n this.lastModTime = this.lastSelTime = 0;\n this.lastOp = this.lastSelOp = null;\n this.lastOrigin = this.lastSelOrigin = null; // Used by the isClean() method\n\n this.generation = this.maxGeneration = prev ? prev.maxGeneration : 1;\n } // Create a history change event from an updateDoc-style change\n // object.\n\n\n function historyChangeFromChange(doc, change) {\n var histChange = {\n from: copyPos(change.from),\n to: changeEnd(change),\n text: getBetween(doc, change.from, change.to)\n };\n attachLocalSpans(doc, histChange, change.from.line, change.to.line + 1);\n linkedDocs(doc, function (doc) {\n return attachLocalSpans(doc, histChange, change.from.line, change.to.line + 1);\n }, true);\n return histChange;\n } // Pop all selection events off the end of a history array. Stop at\n // a change event.\n\n\n function clearSelectionEvents(array) {\n while (array.length) {\n var last = lst(array);\n\n if (last.ranges) {\n array.pop();\n } else {\n break;\n }\n }\n } // Find the top change event in the history. Pop off selection\n // events that are in the way.\n\n\n function lastChangeEvent(hist, force) {\n if (force) {\n clearSelectionEvents(hist.done);\n return lst(hist.done);\n } else if (hist.done.length && !lst(hist.done).ranges) {\n return lst(hist.done);\n } else if (hist.done.length > 1 && !hist.done[hist.done.length - 2].ranges) {\n hist.done.pop();\n return lst(hist.done);\n }\n } // Register a change in the history. Merges changes that are within\n // a single operation, or are close together with an origin that\n // allows merging (starting with \"+\") into a single event.\n\n\n function addChangeToHistory(doc, change, selAfter, opId) {\n var hist = doc.history;\n hist.undone.length = 0;\n var time = +new Date(),\n cur;\n var last;\n\n if ((hist.lastOp == opId || hist.lastOrigin == change.origin && change.origin && (change.origin.charAt(0) == \"+\" && hist.lastModTime > time - (doc.cm ? doc.cm.options.historyEventDelay : 500) || change.origin.charAt(0) == \"*\")) && (cur = lastChangeEvent(hist, hist.lastOp == opId))) {\n // Merge this change into the last event\n last = lst(cur.changes);\n\n if (cmp(change.from, change.to) == 0 && cmp(change.from, last.to) == 0) {\n // Optimized case for simple insertion -- don't want to add\n // new changesets for every character typed\n last.to = changeEnd(change);\n } else {\n // Add new sub-event\n cur.changes.push(historyChangeFromChange(doc, change));\n }\n } else {\n // Can not be merged, start a new event.\n var before = lst(hist.done);\n\n if (!before || !before.ranges) {\n pushSelectionToHistory(doc.sel, hist.done);\n }\n\n cur = {\n changes: [historyChangeFromChange(doc, change)],\n generation: hist.generation\n };\n hist.done.push(cur);\n\n while (hist.done.length > hist.undoDepth) {\n hist.done.shift();\n\n if (!hist.done[0].ranges) {\n hist.done.shift();\n }\n }\n }\n\n hist.done.push(selAfter);\n hist.generation = ++hist.maxGeneration;\n hist.lastModTime = hist.lastSelTime = time;\n hist.lastOp = hist.lastSelOp = opId;\n hist.lastOrigin = hist.lastSelOrigin = change.origin;\n\n if (!last) {\n signal(doc, \"historyAdded\");\n }\n }\n\n function selectionEventCanBeMerged(doc, origin, prev, sel) {\n var ch = origin.charAt(0);\n return ch == \"*\" || ch == \"+\" && prev.ranges.length == sel.ranges.length && prev.somethingSelected() == sel.somethingSelected() && new Date() - doc.history.lastSelTime <= (doc.cm ? doc.cm.options.historyEventDelay : 500);\n } // Called whenever the selection changes, sets the new selection as\n // the pending selection in the history, and pushes the old pending\n // selection into the 'done' array when it was significantly\n // different (in number of selected ranges, emptiness, or time).\n\n\n function addSelectionToHistory(doc, sel, opId, options) {\n var hist = doc.history,\n origin = options && options.origin; // A new event is started when the previous origin does not match\n // the current, or the origins don't allow matching. Origins\n // starting with * are always merged, those starting with + are\n // merged when similar and close together in time.\n\n if (opId == hist.lastSelOp || origin && hist.lastSelOrigin == origin && (hist.lastModTime == hist.lastSelTime && hist.lastOrigin == origin || selectionEventCanBeMerged(doc, origin, lst(hist.done), sel))) {\n hist.done[hist.done.length - 1] = sel;\n } else {\n pushSelectionToHistory(sel, hist.done);\n }\n\n hist.lastSelTime = +new Date();\n hist.lastSelOrigin = origin;\n hist.lastSelOp = opId;\n\n if (options && options.clearRedo !== false) {\n clearSelectionEvents(hist.undone);\n }\n }\n\n function pushSelectionToHistory(sel, dest) {\n var top = lst(dest);\n\n if (!(top && top.ranges && top.equals(sel))) {\n dest.push(sel);\n }\n } // Used to store marked span information in the history.\n\n\n function attachLocalSpans(doc, change, from, to) {\n var existing = change[\"spans_\" + doc.id],\n n = 0;\n doc.iter(Math.max(doc.first, from), Math.min(doc.first + doc.size, to), function (line) {\n if (line.markedSpans) {\n (existing || (existing = change[\"spans_\" + doc.id] = {}))[n] = line.markedSpans;\n }\n\n ++n;\n });\n } // When un/re-doing restores text containing marked spans, those\n // that have been explicitly cleared should not be restored.\n\n\n function removeClearedSpans(spans) {\n if (!spans) {\n return null;\n }\n\n var out;\n\n for (var i = 0; i < spans.length; ++i) {\n if (spans[i].marker.explicitlyCleared) {\n if (!out) {\n out = spans.slice(0, i);\n }\n } else if (out) {\n out.push(spans[i]);\n }\n }\n\n return !out ? spans : out.length ? out : null;\n } // Retrieve and filter the old marked spans stored in a change event.\n\n\n function getOldSpans(doc, change) {\n var found = change[\"spans_\" + doc.id];\n\n if (!found) {\n return null;\n }\n\n var nw = [];\n\n for (var i = 0; i < change.text.length; ++i) {\n nw.push(removeClearedSpans(found[i]));\n }\n\n return nw;\n } // Used for un/re-doing changes from the history. Combines the\n // result of computing the existing spans with the set of spans that\n // existed in the history (so that deleting around a span and then\n // undoing brings back the span).\n\n\n function mergeOldSpans(doc, change) {\n var old = getOldSpans(doc, change);\n var stretched = stretchSpansOverChange(doc, change);\n\n if (!old) {\n return stretched;\n }\n\n if (!stretched) {\n return old;\n }\n\n for (var i = 0; i < old.length; ++i) {\n var oldCur = old[i],\n stretchCur = stretched[i];\n\n if (oldCur && stretchCur) {\n spans: for (var j = 0; j < stretchCur.length; ++j) {\n var span = stretchCur[j];\n\n for (var k = 0; k < oldCur.length; ++k) {\n if (oldCur[k].marker == span.marker) {\n continue spans;\n }\n }\n\n oldCur.push(span);\n }\n } else if (stretchCur) {\n old[i] = stretchCur;\n }\n }\n\n return old;\n } // Used both to provide a JSON-safe object in .getHistory, and, when\n // detaching a document, to split the history in two\n\n\n function copyHistoryArray(events, newGroup, instantiateSel) {\n var copy = [];\n\n for (var i = 0; i < events.length; ++i) {\n var event = events[i];\n\n if (event.ranges) {\n copy.push(instantiateSel ? Selection.prototype.deepCopy.call(event) : event);\n continue;\n }\n\n var changes = event.changes,\n newChanges = [];\n copy.push({\n changes: newChanges\n });\n\n for (var j = 0; j < changes.length; ++j) {\n var change = changes[j],\n m = void 0;\n newChanges.push({\n from: change.from,\n to: change.to,\n text: change.text\n });\n\n if (newGroup) {\n for (var prop in change) {\n if (m = prop.match(/^spans_(\\d+)$/)) {\n if (indexOf(newGroup, Number(m[1])) > -1) {\n lst(newChanges)[prop] = change[prop];\n delete change[prop];\n }\n }\n }\n }\n }\n }\n\n return copy;\n } // The 'scroll' parameter given to many of these indicated whether\n // the new cursor position should be scrolled into view after\n // modifying the selection.\n // If shift is held or the extend flag is set, extends a range to\n // include a given position (and optionally a second position).\n // Otherwise, simply returns the range between the given positions.\n // Used for cursor motion and such.\n\n\n function extendRange(range, head, other, extend) {\n if (extend) {\n var anchor = range.anchor;\n\n if (other) {\n var posBefore = cmp(head, anchor) < 0;\n\n if (posBefore != cmp(other, anchor) < 0) {\n anchor = head;\n head = other;\n } else if (posBefore != cmp(head, other) < 0) {\n head = other;\n }\n }\n\n return new Range(anchor, head);\n } else {\n return new Range(other || head, head);\n }\n } // Extend the primary selection range, discard the rest.\n\n\n function extendSelection(doc, head, other, options, extend) {\n if (extend == null) {\n extend = doc.cm && (doc.cm.display.shift || doc.extend);\n }\n\n setSelection(doc, new Selection([extendRange(doc.sel.primary(), head, other, extend)], 0), options);\n } // Extend all selections (pos is an array of selections with length\n // equal the number of selections)\n\n\n function extendSelections(doc, heads, options) {\n var out = [];\n var extend = doc.cm && (doc.cm.display.shift || doc.extend);\n\n for (var i = 0; i < doc.sel.ranges.length; i++) {\n out[i] = extendRange(doc.sel.ranges[i], heads[i], null, extend);\n }\n\n var newSel = normalizeSelection(doc.cm, out, doc.sel.primIndex);\n setSelection(doc, newSel, options);\n } // Updates a single range in the selection.\n\n\n function replaceOneSelection(doc, i, range, options) {\n var ranges = doc.sel.ranges.slice(0);\n ranges[i] = range;\n setSelection(doc, normalizeSelection(doc.cm, ranges, doc.sel.primIndex), options);\n } // Reset the selection to a single range.\n\n\n function setSimpleSelection(doc, anchor, head, options) {\n setSelection(doc, simpleSelection(anchor, head), options);\n } // Give beforeSelectionChange handlers a change to influence a\n // selection update.\n\n\n function filterSelectionChange(doc, sel, options) {\n var obj = {\n ranges: sel.ranges,\n update: function update(ranges) {\n this.ranges = [];\n\n for (var i = 0; i < ranges.length; i++) {\n this.ranges[i] = new Range(_clipPos(doc, ranges[i].anchor), _clipPos(doc, ranges[i].head));\n }\n },\n origin: options && options.origin\n };\n signal(doc, \"beforeSelectionChange\", doc, obj);\n\n if (doc.cm) {\n signal(doc.cm, \"beforeSelectionChange\", doc.cm, obj);\n }\n\n if (obj.ranges != sel.ranges) {\n return normalizeSelection(doc.cm, obj.ranges, obj.ranges.length - 1);\n } else {\n return sel;\n }\n }\n\n function setSelectionReplaceHistory(doc, sel, options) {\n var done = doc.history.done,\n last = lst(done);\n\n if (last && last.ranges) {\n done[done.length - 1] = sel;\n setSelectionNoUndo(doc, sel, options);\n } else {\n setSelection(doc, sel, options);\n }\n } // Set a new selection.\n\n\n function setSelection(doc, sel, options) {\n setSelectionNoUndo(doc, sel, options);\n addSelectionToHistory(doc, doc.sel, doc.cm ? doc.cm.curOp.id : NaN, options);\n }\n\n function setSelectionNoUndo(doc, sel, options) {\n if (hasHandler(doc, \"beforeSelectionChange\") || doc.cm && hasHandler(doc.cm, \"beforeSelectionChange\")) {\n sel = filterSelectionChange(doc, sel, options);\n }\n\n var bias = options && options.bias || (cmp(sel.primary().head, doc.sel.primary().head) < 0 ? -1 : 1);\n setSelectionInner(doc, skipAtomicInSelection(doc, sel, bias, true));\n\n if (!(options && options.scroll === false) && doc.cm && doc.cm.getOption(\"readOnly\") != \"nocursor\") {\n ensureCursorVisible(doc.cm);\n }\n }\n\n function setSelectionInner(doc, sel) {\n if (sel.equals(doc.sel)) {\n return;\n }\n\n doc.sel = sel;\n\n if (doc.cm) {\n doc.cm.curOp.updateInput = 1;\n doc.cm.curOp.selectionChanged = true;\n signalCursorActivity(doc.cm);\n }\n\n signalLater(doc, \"cursorActivity\", doc);\n } // Verify that the selection does not partially select any atomic\n // marked ranges.\n\n\n function reCheckSelection(doc) {\n setSelectionInner(doc, skipAtomicInSelection(doc, doc.sel, null, false));\n } // Return a selection that does not partially select any atomic\n // ranges.\n\n\n function skipAtomicInSelection(doc, sel, bias, mayClear) {\n var out;\n\n for (var i = 0; i < sel.ranges.length; i++) {\n var range = sel.ranges[i];\n var old = sel.ranges.length == doc.sel.ranges.length && doc.sel.ranges[i];\n var newAnchor = skipAtomic(doc, range.anchor, old && old.anchor, bias, mayClear);\n var newHead = skipAtomic(doc, range.head, old && old.head, bias, mayClear);\n\n if (out || newAnchor != range.anchor || newHead != range.head) {\n if (!out) {\n out = sel.ranges.slice(0, i);\n }\n\n out[i] = new Range(newAnchor, newHead);\n }\n }\n\n return out ? normalizeSelection(doc.cm, out, sel.primIndex) : sel;\n }\n\n function skipAtomicInner(doc, pos, oldPos, dir, mayClear) {\n var line = getLine(doc, pos.line);\n\n if (line.markedSpans) {\n for (var i = 0; i < line.markedSpans.length; ++i) {\n var sp = line.markedSpans[i],\n m = sp.marker; // Determine if we should prevent the cursor being placed to the left/right of an atomic marker\n // Historically this was determined using the inclusiveLeft/Right option, but the new way to control it\n // is with selectLeft/Right\n\n var preventCursorLeft = \"selectLeft\" in m ? !m.selectLeft : m.inclusiveLeft;\n var preventCursorRight = \"selectRight\" in m ? !m.selectRight : m.inclusiveRight;\n\n if ((sp.from == null || (preventCursorLeft ? sp.from <= pos.ch : sp.from < pos.ch)) && (sp.to == null || (preventCursorRight ? sp.to >= pos.ch : sp.to > pos.ch))) {\n if (mayClear) {\n signal(m, \"beforeCursorEnter\");\n\n if (m.explicitlyCleared) {\n if (!line.markedSpans) {\n break;\n } else {\n --i;\n continue;\n }\n }\n }\n\n if (!m.atomic) {\n continue;\n }\n\n if (oldPos) {\n var near = m.find(dir < 0 ? 1 : -1),\n diff = void 0;\n\n if (dir < 0 ? preventCursorRight : preventCursorLeft) {\n near = movePos(doc, near, -dir, near && near.line == pos.line ? line : null);\n }\n\n if (near && near.line == pos.line && (diff = cmp(near, oldPos)) && (dir < 0 ? diff < 0 : diff > 0)) {\n return skipAtomicInner(doc, near, pos, dir, mayClear);\n }\n }\n\n var far = m.find(dir < 0 ? -1 : 1);\n\n if (dir < 0 ? preventCursorLeft : preventCursorRight) {\n far = movePos(doc, far, dir, far.line == pos.line ? line : null);\n }\n\n return far ? skipAtomicInner(doc, far, pos, dir, mayClear) : null;\n }\n }\n }\n\n return pos;\n } // Ensure a given position is not inside an atomic range.\n\n\n function skipAtomic(doc, pos, oldPos, bias, mayClear) {\n var dir = bias || 1;\n var found = skipAtomicInner(doc, pos, oldPos, dir, mayClear) || !mayClear && skipAtomicInner(doc, pos, oldPos, dir, true) || skipAtomicInner(doc, pos, oldPos, -dir, mayClear) || !mayClear && skipAtomicInner(doc, pos, oldPos, -dir, true);\n\n if (!found) {\n doc.cantEdit = true;\n return Pos(doc.first, 0);\n }\n\n return found;\n }\n\n function movePos(doc, pos, dir, line) {\n if (dir < 0 && pos.ch == 0) {\n if (pos.line > doc.first) {\n return _clipPos(doc, Pos(pos.line - 1));\n } else {\n return null;\n }\n } else if (dir > 0 && pos.ch == (line || getLine(doc, pos.line)).text.length) {\n if (pos.line < doc.first + doc.size - 1) {\n return Pos(pos.line + 1, 0);\n } else {\n return null;\n }\n } else {\n return new Pos(pos.line, pos.ch + dir);\n }\n }\n\n function selectAll(cm) {\n cm.setSelection(Pos(cm.firstLine(), 0), Pos(cm.lastLine()), sel_dontScroll);\n } // UPDATING\n // Allow \"beforeChange\" event handlers to influence a change\n\n\n function filterChange(doc, change, update) {\n var obj = {\n canceled: false,\n from: change.from,\n to: change.to,\n text: change.text,\n origin: change.origin,\n cancel: function cancel() {\n return obj.canceled = true;\n }\n };\n\n if (update) {\n obj.update = function (from, to, text, origin) {\n if (from) {\n obj.from = _clipPos(doc, from);\n }\n\n if (to) {\n obj.to = _clipPos(doc, to);\n }\n\n if (text) {\n obj.text = text;\n }\n\n if (origin !== undefined) {\n obj.origin = origin;\n }\n };\n }\n\n signal(doc, \"beforeChange\", doc, obj);\n\n if (doc.cm) {\n signal(doc.cm, \"beforeChange\", doc.cm, obj);\n }\n\n if (obj.canceled) {\n if (doc.cm) {\n doc.cm.curOp.updateInput = 2;\n }\n\n return null;\n }\n\n return {\n from: obj.from,\n to: obj.to,\n text: obj.text,\n origin: obj.origin\n };\n } // Apply a change to a document, and add it to the document's\n // history, and propagating it to all linked documents.\n\n\n function makeChange(doc, change, ignoreReadOnly) {\n if (doc.cm) {\n if (!doc.cm.curOp) {\n return operation(doc.cm, makeChange)(doc, change, ignoreReadOnly);\n }\n\n if (doc.cm.state.suppressEdits) {\n return;\n }\n }\n\n if (hasHandler(doc, \"beforeChange\") || doc.cm && hasHandler(doc.cm, \"beforeChange\")) {\n change = filterChange(doc, change, true);\n\n if (!change) {\n return;\n }\n } // Possibly split or suppress the update based on the presence\n // of read-only spans in its range.\n\n\n var split = sawReadOnlySpans && !ignoreReadOnly && removeReadOnlyRanges(doc, change.from, change.to);\n\n if (split) {\n for (var i = split.length - 1; i >= 0; --i) {\n makeChangeInner(doc, {\n from: split[i].from,\n to: split[i].to,\n text: i ? [\"\"] : change.text,\n origin: change.origin\n });\n }\n } else {\n makeChangeInner(doc, change);\n }\n }\n\n function makeChangeInner(doc, change) {\n if (change.text.length == 1 && change.text[0] == \"\" && cmp(change.from, change.to) == 0) {\n return;\n }\n\n var selAfter = computeSelAfterChange(doc, change);\n addChangeToHistory(doc, change, selAfter, doc.cm ? doc.cm.curOp.id : NaN);\n makeChangeSingleDoc(doc, change, selAfter, stretchSpansOverChange(doc, change));\n var rebased = [];\n linkedDocs(doc, function (doc, sharedHist) {\n if (!sharedHist && indexOf(rebased, doc.history) == -1) {\n rebaseHist(doc.history, change);\n rebased.push(doc.history);\n }\n\n makeChangeSingleDoc(doc, change, null, stretchSpansOverChange(doc, change));\n });\n } // Revert a change stored in a document's history.\n\n\n function makeChangeFromHistory(doc, type, allowSelectionOnly) {\n var suppress = doc.cm && doc.cm.state.suppressEdits;\n\n if (suppress && !allowSelectionOnly) {\n return;\n }\n\n var hist = doc.history,\n event,\n selAfter = doc.sel;\n var source = type == \"undo\" ? hist.done : hist.undone,\n dest = type == \"undo\" ? hist.undone : hist.done; // Verify that there is a useable event (so that ctrl-z won't\n // needlessly clear selection events)\n\n var i = 0;\n\n for (; i < source.length; i++) {\n event = source[i];\n\n if (allowSelectionOnly ? event.ranges && !event.equals(doc.sel) : !event.ranges) {\n break;\n }\n }\n\n if (i == source.length) {\n return;\n }\n\n hist.lastOrigin = hist.lastSelOrigin = null;\n\n for (;;) {\n event = source.pop();\n\n if (event.ranges) {\n pushSelectionToHistory(event, dest);\n\n if (allowSelectionOnly && !event.equals(doc.sel)) {\n setSelection(doc, event, {\n clearRedo: false\n });\n return;\n }\n\n selAfter = event;\n } else if (suppress) {\n source.push(event);\n return;\n } else {\n break;\n }\n } // Build up a reverse change object to add to the opposite history\n // stack (redo when undoing, and vice versa).\n\n\n var antiChanges = [];\n pushSelectionToHistory(selAfter, dest);\n dest.push({\n changes: antiChanges,\n generation: hist.generation\n });\n hist.generation = event.generation || ++hist.maxGeneration;\n var filter = hasHandler(doc, \"beforeChange\") || doc.cm && hasHandler(doc.cm, \"beforeChange\");\n\n var loop = function loop(i) {\n var change = event.changes[i];\n change.origin = type;\n\n if (filter && !filterChange(doc, change, false)) {\n source.length = 0;\n return {};\n }\n\n antiChanges.push(historyChangeFromChange(doc, change));\n var after = i ? computeSelAfterChange(doc, change) : lst(source);\n makeChangeSingleDoc(doc, change, after, mergeOldSpans(doc, change));\n\n if (!i && doc.cm) {\n doc.cm.scrollIntoView({\n from: change.from,\n to: changeEnd(change)\n });\n }\n\n var rebased = []; // Propagate to the linked documents\n\n linkedDocs(doc, function (doc, sharedHist) {\n if (!sharedHist && indexOf(rebased, doc.history) == -1) {\n rebaseHist(doc.history, change);\n rebased.push(doc.history);\n }\n\n makeChangeSingleDoc(doc, change, null, mergeOldSpans(doc, change));\n });\n };\n\n for (var i$1 = event.changes.length - 1; i$1 >= 0; --i$1) {\n var returned = loop(i$1);\n if (returned) return returned.v;\n }\n } // Sub-views need their line numbers shifted when text is added\n // above or below them in the parent document.\n\n\n function shiftDoc(doc, distance) {\n if (distance == 0) {\n return;\n }\n\n doc.first += distance;\n doc.sel = new Selection(map(doc.sel.ranges, function (range) {\n return new Range(Pos(range.anchor.line + distance, range.anchor.ch), Pos(range.head.line + distance, range.head.ch));\n }), doc.sel.primIndex);\n\n if (doc.cm) {\n regChange(doc.cm, doc.first, doc.first - distance, distance);\n\n for (var d = doc.cm.display, l = d.viewFrom; l < d.viewTo; l++) {\n regLineChange(doc.cm, l, \"gutter\");\n }\n }\n } // More lower-level change function, handling only a single document\n // (not linked ones).\n\n\n function makeChangeSingleDoc(doc, change, selAfter, spans) {\n if (doc.cm && !doc.cm.curOp) {\n return operation(doc.cm, makeChangeSingleDoc)(doc, change, selAfter, spans);\n }\n\n if (change.to.line < doc.first) {\n shiftDoc(doc, change.text.length - 1 - (change.to.line - change.from.line));\n return;\n }\n\n if (change.from.line > doc.lastLine()) {\n return;\n } // Clip the change to the size of this doc\n\n\n if (change.from.line < doc.first) {\n var shift = change.text.length - 1 - (doc.first - change.from.line);\n shiftDoc(doc, shift);\n change = {\n from: Pos(doc.first, 0),\n to: Pos(change.to.line + shift, change.to.ch),\n text: [lst(change.text)],\n origin: change.origin\n };\n }\n\n var last = doc.lastLine();\n\n if (change.to.line > last) {\n change = {\n from: change.from,\n to: Pos(last, getLine(doc, last).text.length),\n text: [change.text[0]],\n origin: change.origin\n };\n }\n\n change.removed = getBetween(doc, change.from, change.to);\n\n if (!selAfter) {\n selAfter = computeSelAfterChange(doc, change);\n }\n\n if (doc.cm) {\n makeChangeSingleDocInEditor(doc.cm, change, spans);\n } else {\n updateDoc(doc, change, spans);\n }\n\n setSelectionNoUndo(doc, selAfter, sel_dontScroll);\n\n if (doc.cantEdit && skipAtomic(doc, Pos(doc.firstLine(), 0))) {\n doc.cantEdit = false;\n }\n } // Handle the interaction of a change to a document with the editor\n // that this document is part of.\n\n\n function makeChangeSingleDocInEditor(cm, change, spans) {\n var doc = cm.doc,\n display = cm.display,\n from = change.from,\n to = change.to;\n var recomputeMaxLength = false,\n checkWidthStart = from.line;\n\n if (!cm.options.lineWrapping) {\n checkWidthStart = lineNo(visualLine(getLine(doc, from.line)));\n doc.iter(checkWidthStart, to.line + 1, function (line) {\n if (line == display.maxLine) {\n recomputeMaxLength = true;\n return true;\n }\n });\n }\n\n if (doc.sel.contains(change.from, change.to) > -1) {\n signalCursorActivity(cm);\n }\n\n updateDoc(doc, change, spans, estimateHeight(cm));\n\n if (!cm.options.lineWrapping) {\n doc.iter(checkWidthStart, from.line + change.text.length, function (line) {\n var len = lineLength(line);\n\n if (len > display.maxLineLength) {\n display.maxLine = line;\n display.maxLineLength = len;\n display.maxLineChanged = true;\n recomputeMaxLength = false;\n }\n });\n\n if (recomputeMaxLength) {\n cm.curOp.updateMaxLine = true;\n }\n }\n\n retreatFrontier(doc, from.line);\n startWorker(cm, 400);\n var lendiff = change.text.length - (to.line - from.line) - 1; // Remember that these lines changed, for updating the display\n\n if (change.full) {\n regChange(cm);\n } else if (from.line == to.line && change.text.length == 1 && !isWholeLineUpdate(cm.doc, change)) {\n regLineChange(cm, from.line, \"text\");\n } else {\n regChange(cm, from.line, to.line + 1, lendiff);\n }\n\n var changesHandler = hasHandler(cm, \"changes\"),\n changeHandler = hasHandler(cm, \"change\");\n\n if (changeHandler || changesHandler) {\n var obj = {\n from: from,\n to: to,\n text: change.text,\n removed: change.removed,\n origin: change.origin\n };\n\n if (changeHandler) {\n signalLater(cm, \"change\", cm, obj);\n }\n\n if (changesHandler) {\n (cm.curOp.changeObjs || (cm.curOp.changeObjs = [])).push(obj);\n }\n }\n\n cm.display.selForContextMenu = null;\n }\n\n function _replaceRange(doc, code, from, to, origin) {\n var assign;\n\n if (!to) {\n to = from;\n }\n\n if (cmp(to, from) < 0) {\n assign = [to, from], from = assign[0], to = assign[1];\n }\n\n if (typeof code == \"string\") {\n code = doc.splitLines(code);\n }\n\n makeChange(doc, {\n from: from,\n to: to,\n text: code,\n origin: origin\n });\n } // Rebasing/resetting history to deal with externally-sourced changes\n\n\n function rebaseHistSelSingle(pos, from, to, diff) {\n if (to < pos.line) {\n pos.line += diff;\n } else if (from < pos.line) {\n pos.line = from;\n pos.ch = 0;\n }\n } // Tries to rebase an array of history events given a change in the\n // document. If the change touches the same lines as the event, the\n // event, and everything 'behind' it, is discarded. If the change is\n // before the event, the event's positions are updated. Uses a\n // copy-on-write scheme for the positions, to avoid having to\n // reallocate them all on every rebase, but also avoid problems with\n // shared position objects being unsafely updated.\n\n\n function rebaseHistArray(array, from, to, diff) {\n for (var i = 0; i < array.length; ++i) {\n var sub = array[i],\n ok = true;\n\n if (sub.ranges) {\n if (!sub.copied) {\n sub = array[i] = sub.deepCopy();\n sub.copied = true;\n }\n\n for (var j = 0; j < sub.ranges.length; j++) {\n rebaseHistSelSingle(sub.ranges[j].anchor, from, to, diff);\n rebaseHistSelSingle(sub.ranges[j].head, from, to, diff);\n }\n\n continue;\n }\n\n for (var j$1 = 0; j$1 < sub.changes.length; ++j$1) {\n var cur = sub.changes[j$1];\n\n if (to < cur.from.line) {\n cur.from = Pos(cur.from.line + diff, cur.from.ch);\n cur.to = Pos(cur.to.line + diff, cur.to.ch);\n } else if (from <= cur.to.line) {\n ok = false;\n break;\n }\n }\n\n if (!ok) {\n array.splice(0, i + 1);\n i = 0;\n }\n }\n }\n\n function rebaseHist(hist, change) {\n var from = change.from.line,\n to = change.to.line,\n diff = change.text.length - (to - from) - 1;\n rebaseHistArray(hist.done, from, to, diff);\n rebaseHistArray(hist.undone, from, to, diff);\n } // Utility for applying a change to a line by handle or number,\n // returning the number and optionally registering the line as\n // changed.\n\n\n function changeLine(doc, handle, changeType, op) {\n var no = handle,\n line = handle;\n\n if (typeof handle == \"number\") {\n line = getLine(doc, clipLine(doc, handle));\n } else {\n no = lineNo(handle);\n }\n\n if (no == null) {\n return null;\n }\n\n if (op(line, no) && doc.cm) {\n regLineChange(doc.cm, no, changeType);\n }\n\n return line;\n } // The document is represented as a BTree consisting of leaves, with\n // chunk of lines in them, and branches, with up to ten leaves or\n // other branch nodes below them. The top node is always a branch\n // node, and is the document object itself (meaning it has\n // additional methods and properties).\n //\n // All nodes have parent links. The tree is used both to go from\n // line numbers to line objects, and to go from objects to numbers.\n // It also indexes by height, and is used to convert between height\n // and line object, and to find the total height of the document.\n //\n // See also http://marijnhaverbeke.nl/blog/codemirror-line-tree.html\n\n\n function LeafChunk(lines) {\n this.lines = lines;\n this.parent = null;\n var height = 0;\n\n for (var i = 0; i < lines.length; ++i) {\n lines[i].parent = this;\n height += lines[i].height;\n }\n\n this.height = height;\n }\n\n LeafChunk.prototype = {\n chunkSize: function chunkSize() {\n return this.lines.length;\n },\n // Remove the n lines at offset 'at'.\n removeInner: function removeInner(at, n) {\n for (var i = at, e = at + n; i < e; ++i) {\n var line = this.lines[i];\n this.height -= line.height;\n cleanUpLine(line);\n signalLater(line, \"delete\");\n }\n\n this.lines.splice(at, n);\n },\n // Helper used to collapse a small branch into a single leaf.\n collapse: function collapse(lines) {\n lines.push.apply(lines, this.lines);\n },\n // Insert the given array of lines at offset 'at', count them as\n // having the given height.\n insertInner: function insertInner(at, lines, height) {\n this.height += height;\n this.lines = this.lines.slice(0, at).concat(lines).concat(this.lines.slice(at));\n\n for (var i = 0; i < lines.length; ++i) {\n lines[i].parent = this;\n }\n },\n // Used to iterate over a part of the tree.\n iterN: function iterN(at, n, op) {\n for (var e = at + n; at < e; ++at) {\n if (op(this.lines[at])) {\n return true;\n }\n }\n }\n };\n\n function BranchChunk(children) {\n this.children = children;\n var size = 0,\n height = 0;\n\n for (var i = 0; i < children.length; ++i) {\n var ch = children[i];\n size += ch.chunkSize();\n height += ch.height;\n ch.parent = this;\n }\n\n this.size = size;\n this.height = height;\n this.parent = null;\n }\n\n BranchChunk.prototype = {\n chunkSize: function chunkSize() {\n return this.size;\n },\n removeInner: function removeInner(at, n) {\n this.size -= n;\n\n for (var i = 0; i < this.children.length; ++i) {\n var child = this.children[i],\n sz = child.chunkSize();\n\n if (at < sz) {\n var rm = Math.min(n, sz - at),\n oldHeight = child.height;\n child.removeInner(at, rm);\n this.height -= oldHeight - child.height;\n\n if (sz == rm) {\n this.children.splice(i--, 1);\n child.parent = null;\n }\n\n if ((n -= rm) == 0) {\n break;\n }\n\n at = 0;\n } else {\n at -= sz;\n }\n } // If the result is smaller than 25 lines, ensure that it is a\n // single leaf node.\n\n\n if (this.size - n < 25 && (this.children.length > 1 || !(this.children[0] instanceof LeafChunk))) {\n var lines = [];\n this.collapse(lines);\n this.children = [new LeafChunk(lines)];\n this.children[0].parent = this;\n }\n },\n collapse: function collapse(lines) {\n for (var i = 0; i < this.children.length; ++i) {\n this.children[i].collapse(lines);\n }\n },\n insertInner: function insertInner(at, lines, height) {\n this.size += lines.length;\n this.height += height;\n\n for (var i = 0; i < this.children.length; ++i) {\n var child = this.children[i],\n sz = child.chunkSize();\n\n if (at <= sz) {\n child.insertInner(at, lines, height);\n\n if (child.lines && child.lines.length > 50) {\n // To avoid memory thrashing when child.lines is huge (e.g. first view of a large file), it's never spliced.\n // Instead, small slices are taken. They're taken in order because sequential memory accesses are fastest.\n var remaining = child.lines.length % 25 + 25;\n\n for (var pos = remaining; pos < child.lines.length;) {\n var leaf = new LeafChunk(child.lines.slice(pos, pos += 25));\n child.height -= leaf.height;\n this.children.splice(++i, 0, leaf);\n leaf.parent = this;\n }\n\n child.lines = child.lines.slice(0, remaining);\n this.maybeSpill();\n }\n\n break;\n }\n\n at -= sz;\n }\n },\n // When a node has grown, check whether it should be split.\n maybeSpill: function maybeSpill() {\n if (this.children.length <= 10) {\n return;\n }\n\n var me = this;\n\n do {\n var spilled = me.children.splice(me.children.length - 5, 5);\n var sibling = new BranchChunk(spilled);\n\n if (!me.parent) {\n // Become the parent node\n var copy = new BranchChunk(me.children);\n copy.parent = me;\n me.children = [copy, sibling];\n me = copy;\n } else {\n me.size -= sibling.size;\n me.height -= sibling.height;\n var myIndex = indexOf(me.parent.children, me);\n me.parent.children.splice(myIndex + 1, 0, sibling);\n }\n\n sibling.parent = me.parent;\n } while (me.children.length > 10);\n\n me.parent.maybeSpill();\n },\n iterN: function iterN(at, n, op) {\n for (var i = 0; i < this.children.length; ++i) {\n var child = this.children[i],\n sz = child.chunkSize();\n\n if (at < sz) {\n var used = Math.min(n, sz - at);\n\n if (child.iterN(at, used, op)) {\n return true;\n }\n\n if ((n -= used) == 0) {\n break;\n }\n\n at = 0;\n } else {\n at -= sz;\n }\n }\n }\n }; // Line widgets are block elements displayed above or below a line.\n\n var LineWidget = function LineWidget(doc, node, options) {\n if (options) {\n for (var opt in options) {\n if (options.hasOwnProperty(opt)) {\n this[opt] = options[opt];\n }\n }\n }\n\n this.doc = doc;\n this.node = node;\n };\n\n LineWidget.prototype.clear = function () {\n var cm = this.doc.cm,\n ws = this.line.widgets,\n line = this.line,\n no = lineNo(line);\n\n if (no == null || !ws) {\n return;\n }\n\n for (var i = 0; i < ws.length; ++i) {\n if (ws[i] == this) {\n ws.splice(i--, 1);\n }\n }\n\n if (!ws.length) {\n line.widgets = null;\n }\n\n var height = widgetHeight(this);\n updateLineHeight(line, Math.max(0, line.height - height));\n\n if (cm) {\n runInOp(cm, function () {\n adjustScrollWhenAboveVisible(cm, line, -height);\n regLineChange(cm, no, \"widget\");\n });\n signalLater(cm, \"lineWidgetCleared\", cm, this, no);\n }\n };\n\n LineWidget.prototype.changed = function () {\n var this$1 = this;\n var oldH = this.height,\n cm = this.doc.cm,\n line = this.line;\n this.height = null;\n var diff = widgetHeight(this) - oldH;\n\n if (!diff) {\n return;\n }\n\n if (!lineIsHidden(this.doc, line)) {\n updateLineHeight(line, line.height + diff);\n }\n\n if (cm) {\n runInOp(cm, function () {\n cm.curOp.forceUpdate = true;\n adjustScrollWhenAboveVisible(cm, line, diff);\n signalLater(cm, \"lineWidgetChanged\", cm, this$1, lineNo(line));\n });\n }\n };\n\n eventMixin(LineWidget);\n\n function adjustScrollWhenAboveVisible(cm, line, diff) {\n if (_heightAtLine(line) < (cm.curOp && cm.curOp.scrollTop || cm.doc.scrollTop)) {\n addToScrollTop(cm, diff);\n }\n }\n\n function addLineWidget(doc, handle, node, options) {\n var widget = new LineWidget(doc, node, options);\n var cm = doc.cm;\n\n if (cm && widget.noHScroll) {\n cm.display.alignWidgets = true;\n }\n\n changeLine(doc, handle, \"widget\", function (line) {\n var widgets = line.widgets || (line.widgets = []);\n\n if (widget.insertAt == null) {\n widgets.push(widget);\n } else {\n widgets.splice(Math.min(widgets.length, Math.max(0, widget.insertAt)), 0, widget);\n }\n\n widget.line = line;\n\n if (cm && !lineIsHidden(doc, line)) {\n var aboveVisible = _heightAtLine(line) < doc.scrollTop;\n updateLineHeight(line, line.height + widgetHeight(widget));\n\n if (aboveVisible) {\n addToScrollTop(cm, widget.height);\n }\n\n cm.curOp.forceUpdate = true;\n }\n\n return true;\n });\n\n if (cm) {\n signalLater(cm, \"lineWidgetAdded\", cm, widget, typeof handle == \"number\" ? handle : lineNo(handle));\n }\n\n return widget;\n } // TEXTMARKERS\n // Created with markText and setBookmark methods. A TextMarker is a\n // handle that can be used to clear or find a marked position in the\n // document. Line objects hold arrays (markedSpans) containing\n // {from, to, marker} object pointing to such marker objects, and\n // indicating that such a marker is present on that line. Multiple\n // lines may point to the same marker when it spans across lines.\n // The spans will have null for their from/to properties when the\n // marker continues beyond the start/end of the line. Markers have\n // links back to the lines they currently touch.\n // Collapsed markers have unique ids, in order to be able to order\n // them, which is needed for uniquely determining an outer marker\n // when they overlap (they may nest, but not partially overlap).\n\n\n var nextMarkerId = 0;\n\n var TextMarker = function TextMarker(doc, type) {\n this.lines = [];\n this.type = type;\n this.doc = doc;\n this.id = ++nextMarkerId;\n }; // Clear the marker.\n\n\n TextMarker.prototype.clear = function () {\n if (this.explicitlyCleared) {\n return;\n }\n\n var cm = this.doc.cm,\n withOp = cm && !cm.curOp;\n\n if (withOp) {\n _startOperation(cm);\n }\n\n if (hasHandler(this, \"clear\")) {\n var found = this.find();\n\n if (found) {\n signalLater(this, \"clear\", found.from, found.to);\n }\n }\n\n var min = null,\n max = null;\n\n for (var i = 0; i < this.lines.length; ++i) {\n var line = this.lines[i];\n var span = getMarkedSpanFor(line.markedSpans, this);\n\n if (cm && !this.collapsed) {\n regLineChange(cm, lineNo(line), \"text\");\n } else if (cm) {\n if (span.to != null) {\n max = lineNo(line);\n }\n\n if (span.from != null) {\n min = lineNo(line);\n }\n }\n\n line.markedSpans = removeMarkedSpan(line.markedSpans, span);\n\n if (span.from == null && this.collapsed && !lineIsHidden(this.doc, line) && cm) {\n updateLineHeight(line, textHeight(cm.display));\n }\n }\n\n if (cm && this.collapsed && !cm.options.lineWrapping) {\n for (var i$1 = 0; i$1 < this.lines.length; ++i$1) {\n var visual = visualLine(this.lines[i$1]),\n len = lineLength(visual);\n\n if (len > cm.display.maxLineLength) {\n cm.display.maxLine = visual;\n cm.display.maxLineLength = len;\n cm.display.maxLineChanged = true;\n }\n }\n }\n\n if (min != null && cm && this.collapsed) {\n regChange(cm, min, max + 1);\n }\n\n this.lines.length = 0;\n this.explicitlyCleared = true;\n\n if (this.atomic && this.doc.cantEdit) {\n this.doc.cantEdit = false;\n\n if (cm) {\n reCheckSelection(cm.doc);\n }\n }\n\n if (cm) {\n signalLater(cm, \"markerCleared\", cm, this, min, max);\n }\n\n if (withOp) {\n _endOperation(cm);\n }\n\n if (this.parent) {\n this.parent.clear();\n }\n }; // Find the position of the marker in the document. Returns a {from,\n // to} object by default. Side can be passed to get a specific side\n // -- 0 (both), -1 (left), or 1 (right). When lineObj is true, the\n // Pos objects returned contain a line object, rather than a line\n // number (used to prevent looking up the same line twice).\n\n\n TextMarker.prototype.find = function (side, lineObj) {\n if (side == null && this.type == \"bookmark\") {\n side = 1;\n }\n\n var from, to;\n\n for (var i = 0; i < this.lines.length; ++i) {\n var line = this.lines[i];\n var span = getMarkedSpanFor(line.markedSpans, this);\n\n if (span.from != null) {\n from = Pos(lineObj ? line : lineNo(line), span.from);\n\n if (side == -1) {\n return from;\n }\n }\n\n if (span.to != null) {\n to = Pos(lineObj ? line : lineNo(line), span.to);\n\n if (side == 1) {\n return to;\n }\n }\n }\n\n return from && {\n from: from,\n to: to\n };\n }; // Signals that the marker's widget changed, and surrounding layout\n // should be recomputed.\n\n\n TextMarker.prototype.changed = function () {\n var this$1 = this;\n var pos = this.find(-1, true),\n widget = this,\n cm = this.doc.cm;\n\n if (!pos || !cm) {\n return;\n }\n\n runInOp(cm, function () {\n var line = pos.line,\n lineN = lineNo(pos.line);\n var view = findViewForLine(cm, lineN);\n\n if (view) {\n clearLineMeasurementCacheFor(view);\n cm.curOp.selectionChanged = cm.curOp.forceUpdate = true;\n }\n\n cm.curOp.updateMaxLine = true;\n\n if (!lineIsHidden(widget.doc, line) && widget.height != null) {\n var oldHeight = widget.height;\n widget.height = null;\n var dHeight = widgetHeight(widget) - oldHeight;\n\n if (dHeight) {\n updateLineHeight(line, line.height + dHeight);\n }\n }\n\n signalLater(cm, \"markerChanged\", cm, this$1);\n });\n };\n\n TextMarker.prototype.attachLine = function (line) {\n if (!this.lines.length && this.doc.cm) {\n var op = this.doc.cm.curOp;\n\n if (!op.maybeHiddenMarkers || indexOf(op.maybeHiddenMarkers, this) == -1) {\n (op.maybeUnhiddenMarkers || (op.maybeUnhiddenMarkers = [])).push(this);\n }\n }\n\n this.lines.push(line);\n };\n\n TextMarker.prototype.detachLine = function (line) {\n this.lines.splice(indexOf(this.lines, line), 1);\n\n if (!this.lines.length && this.doc.cm) {\n var op = this.doc.cm.curOp;\n (op.maybeHiddenMarkers || (op.maybeHiddenMarkers = [])).push(this);\n }\n };\n\n eventMixin(TextMarker); // Create a marker, wire it up to the right lines, and\n\n function _markText(doc, from, to, options, type) {\n // Shared markers (across linked documents) are handled separately\n // (markTextShared will call out to this again, once per\n // document).\n if (options && options.shared) {\n return markTextShared(doc, from, to, options, type);\n } // Ensure we are in an operation.\n\n\n if (doc.cm && !doc.cm.curOp) {\n return operation(doc.cm, _markText)(doc, from, to, options, type);\n }\n\n var marker = new TextMarker(doc, type),\n diff = cmp(from, to);\n\n if (options) {\n copyObj(options, marker, false);\n } // Don't connect empty markers unless clearWhenEmpty is false\n\n\n if (diff > 0 || diff == 0 && marker.clearWhenEmpty !== false) {\n return marker;\n }\n\n if (marker.replacedWith) {\n // Showing up as a widget implies collapsed (widget replaces text)\n marker.collapsed = true;\n marker.widgetNode = eltP(\"span\", [marker.replacedWith], \"CodeMirror-widget\");\n\n if (!options.handleMouseEvents) {\n marker.widgetNode.setAttribute(\"cm-ignore-events\", \"true\");\n }\n\n if (options.insertLeft) {\n marker.widgetNode.insertLeft = true;\n }\n }\n\n if (marker.collapsed) {\n if (conflictingCollapsedRange(doc, from.line, from, to, marker) || from.line != to.line && conflictingCollapsedRange(doc, to.line, from, to, marker)) {\n throw new Error(\"Inserting collapsed marker partially overlapping an existing one\");\n }\n\n seeCollapsedSpans();\n }\n\n if (marker.addToHistory) {\n addChangeToHistory(doc, {\n from: from,\n to: to,\n origin: \"markText\"\n }, doc.sel, NaN);\n }\n\n var curLine = from.line,\n cm = doc.cm,\n updateMaxLine;\n doc.iter(curLine, to.line + 1, function (line) {\n if (cm && marker.collapsed && !cm.options.lineWrapping && visualLine(line) == cm.display.maxLine) {\n updateMaxLine = true;\n }\n\n if (marker.collapsed && curLine != from.line) {\n updateLineHeight(line, 0);\n }\n\n addMarkedSpan(line, new MarkedSpan(marker, curLine == from.line ? from.ch : null, curLine == to.line ? to.ch : null), doc.cm && doc.cm.curOp);\n ++curLine;\n }); // lineIsHidden depends on the presence of the spans, so needs a second pass\n\n if (marker.collapsed) {\n doc.iter(from.line, to.line + 1, function (line) {\n if (lineIsHidden(doc, line)) {\n updateLineHeight(line, 0);\n }\n });\n }\n\n if (marker.clearOnEnter) {\n on(marker, \"beforeCursorEnter\", function () {\n return marker.clear();\n });\n }\n\n if (marker.readOnly) {\n seeReadOnlySpans();\n\n if (doc.history.done.length || doc.history.undone.length) {\n doc.clearHistory();\n }\n }\n\n if (marker.collapsed) {\n marker.id = ++nextMarkerId;\n marker.atomic = true;\n }\n\n if (cm) {\n // Sync editor state\n if (updateMaxLine) {\n cm.curOp.updateMaxLine = true;\n }\n\n if (marker.collapsed) {\n regChange(cm, from.line, to.line + 1);\n } else if (marker.className || marker.startStyle || marker.endStyle || marker.css || marker.attributes || marker.title) {\n for (var i = from.line; i <= to.line; i++) {\n regLineChange(cm, i, \"text\");\n }\n }\n\n if (marker.atomic) {\n reCheckSelection(cm.doc);\n }\n\n signalLater(cm, \"markerAdded\", cm, marker);\n }\n\n return marker;\n } // SHARED TEXTMARKERS\n // A shared marker spans multiple linked documents. It is\n // implemented as a meta-marker-object controlling multiple normal\n // markers.\n\n\n var SharedTextMarker = function SharedTextMarker(markers, primary) {\n this.markers = markers;\n this.primary = primary;\n\n for (var i = 0; i < markers.length; ++i) {\n markers[i].parent = this;\n }\n };\n\n SharedTextMarker.prototype.clear = function () {\n if (this.explicitlyCleared) {\n return;\n }\n\n this.explicitlyCleared = true;\n\n for (var i = 0; i < this.markers.length; ++i) {\n this.markers[i].clear();\n }\n\n signalLater(this, \"clear\");\n };\n\n SharedTextMarker.prototype.find = function (side, lineObj) {\n return this.primary.find(side, lineObj);\n };\n\n eventMixin(SharedTextMarker);\n\n function markTextShared(doc, from, to, options, type) {\n options = copyObj(options);\n options.shared = false;\n var markers = [_markText(doc, from, to, options, type)],\n primary = markers[0];\n var widget = options.widgetNode;\n linkedDocs(doc, function (doc) {\n if (widget) {\n options.widgetNode = widget.cloneNode(true);\n }\n\n markers.push(_markText(doc, _clipPos(doc, from), _clipPos(doc, to), options, type));\n\n for (var i = 0; i < doc.linked.length; ++i) {\n if (doc.linked[i].isParent) {\n return;\n }\n }\n\n primary = lst(markers);\n });\n return new SharedTextMarker(markers, primary);\n }\n\n function findSharedMarkers(doc) {\n return doc.findMarks(Pos(doc.first, 0), doc.clipPos(Pos(doc.lastLine())), function (m) {\n return m.parent;\n });\n }\n\n function copySharedMarkers(doc, markers) {\n for (var i = 0; i < markers.length; i++) {\n var marker = markers[i],\n pos = marker.find();\n var mFrom = doc.clipPos(pos.from),\n mTo = doc.clipPos(pos.to);\n\n if (cmp(mFrom, mTo)) {\n var subMark = _markText(doc, mFrom, mTo, marker.primary, marker.primary.type);\n\n marker.markers.push(subMark);\n subMark.parent = marker;\n }\n }\n }\n\n function detachSharedMarkers(markers) {\n var loop = function loop(i) {\n var marker = markers[i],\n linked = [marker.primary.doc];\n linkedDocs(marker.primary.doc, function (d) {\n return linked.push(d);\n });\n\n for (var j = 0; j < marker.markers.length; j++) {\n var subMarker = marker.markers[j];\n\n if (indexOf(linked, subMarker.doc) == -1) {\n subMarker.parent = null;\n marker.markers.splice(j--, 1);\n }\n }\n };\n\n for (var i = 0; i < markers.length; i++) {\n loop(i);\n }\n }\n\n var nextDocId = 0;\n\n var Doc = function Doc(text, mode, firstLine, lineSep, direction) {\n if (!(this instanceof Doc)) {\n return new Doc(text, mode, firstLine, lineSep, direction);\n }\n\n if (firstLine == null) {\n firstLine = 0;\n }\n\n BranchChunk.call(this, [new LeafChunk([new Line(\"\", null)])]);\n this.first = firstLine;\n this.scrollTop = this.scrollLeft = 0;\n this.cantEdit = false;\n this.cleanGeneration = 1;\n this.modeFrontier = this.highlightFrontier = firstLine;\n var start = Pos(firstLine, 0);\n this.sel = simpleSelection(start);\n this.history = new History(null);\n this.id = ++nextDocId;\n this.modeOption = mode;\n this.lineSep = lineSep;\n this.direction = direction == \"rtl\" ? \"rtl\" : \"ltr\";\n this.extend = false;\n\n if (typeof text == \"string\") {\n text = this.splitLines(text);\n }\n\n updateDoc(this, {\n from: start,\n to: start,\n text: text\n });\n setSelection(this, simpleSelection(start), sel_dontScroll);\n };\n\n Doc.prototype = createObj(BranchChunk.prototype, {\n constructor: Doc,\n // Iterate over the document. Supports two forms -- with only one\n // argument, it calls that for each line in the document. With\n // three, it iterates over the range given by the first two (with\n // the second being non-inclusive).\n iter: function iter(from, to, op) {\n if (op) {\n this.iterN(from - this.first, to - from, op);\n } else {\n this.iterN(this.first, this.first + this.size, from);\n }\n },\n // Non-public interface for adding and removing lines.\n insert: function insert(at, lines) {\n var height = 0;\n\n for (var i = 0; i < lines.length; ++i) {\n height += lines[i].height;\n }\n\n this.insertInner(at - this.first, lines, height);\n },\n remove: function remove(at, n) {\n this.removeInner(at - this.first, n);\n },\n // From here, the methods are part of the public interface. Most\n // are also available from CodeMirror (editor) instances.\n getValue: function getValue(lineSep) {\n var lines = getLines(this, this.first, this.first + this.size);\n\n if (lineSep === false) {\n return lines;\n }\n\n return lines.join(lineSep || this.lineSeparator());\n },\n setValue: docMethodOp(function (code) {\n var top = Pos(this.first, 0),\n last = this.first + this.size - 1;\n makeChange(this, {\n from: top,\n to: Pos(last, getLine(this, last).text.length),\n text: this.splitLines(code),\n origin: \"setValue\",\n full: true\n }, true);\n\n if (this.cm) {\n scrollToCoords(this.cm, 0, 0);\n }\n\n setSelection(this, simpleSelection(top), sel_dontScroll);\n }),\n replaceRange: function replaceRange(code, from, to, origin) {\n from = _clipPos(this, from);\n to = to ? _clipPos(this, to) : from;\n\n _replaceRange(this, code, from, to, origin);\n },\n getRange: function getRange(from, to, lineSep) {\n var lines = getBetween(this, _clipPos(this, from), _clipPos(this, to));\n\n if (lineSep === false) {\n return lines;\n }\n\n if (lineSep === '') {\n return lines.join('');\n }\n\n return lines.join(lineSep || this.lineSeparator());\n },\n getLine: function getLine(line) {\n var l = this.getLineHandle(line);\n return l && l.text;\n },\n getLineHandle: function getLineHandle(line) {\n if (isLine(this, line)) {\n return getLine(this, line);\n }\n },\n getLineNumber: function getLineNumber(line) {\n return lineNo(line);\n },\n getLineHandleVisualStart: function getLineHandleVisualStart(line) {\n if (typeof line == \"number\") {\n line = getLine(this, line);\n }\n\n return visualLine(line);\n },\n lineCount: function lineCount() {\n return this.size;\n },\n firstLine: function firstLine() {\n return this.first;\n },\n lastLine: function lastLine() {\n return this.first + this.size - 1;\n },\n clipPos: function clipPos(pos) {\n return _clipPos(this, pos);\n },\n getCursor: function getCursor(start) {\n var range = this.sel.primary(),\n pos;\n\n if (start == null || start == \"head\") {\n pos = range.head;\n } else if (start == \"anchor\") {\n pos = range.anchor;\n } else if (start == \"end\" || start == \"to\" || start === false) {\n pos = range.to();\n } else {\n pos = range.from();\n }\n\n return pos;\n },\n listSelections: function listSelections() {\n return this.sel.ranges;\n },\n somethingSelected: function somethingSelected() {\n return this.sel.somethingSelected();\n },\n setCursor: docMethodOp(function (line, ch, options) {\n setSimpleSelection(this, _clipPos(this, typeof line == \"number\" ? Pos(line, ch || 0) : line), null, options);\n }),\n setSelection: docMethodOp(function (anchor, head, options) {\n setSimpleSelection(this, _clipPos(this, anchor), _clipPos(this, head || anchor), options);\n }),\n extendSelection: docMethodOp(function (head, other, options) {\n extendSelection(this, _clipPos(this, head), other && _clipPos(this, other), options);\n }),\n extendSelections: docMethodOp(function (heads, options) {\n extendSelections(this, clipPosArray(this, heads), options);\n }),\n extendSelectionsBy: docMethodOp(function (f, options) {\n var heads = map(this.sel.ranges, f);\n extendSelections(this, clipPosArray(this, heads), options);\n }),\n setSelections: docMethodOp(function (ranges, primary, options) {\n if (!ranges.length) {\n return;\n }\n\n var out = [];\n\n for (var i = 0; i < ranges.length; i++) {\n out[i] = new Range(_clipPos(this, ranges[i].anchor), _clipPos(this, ranges[i].head || ranges[i].anchor));\n }\n\n if (primary == null) {\n primary = Math.min(ranges.length - 1, this.sel.primIndex);\n }\n\n setSelection(this, normalizeSelection(this.cm, out, primary), options);\n }),\n addSelection: docMethodOp(function (anchor, head, options) {\n var ranges = this.sel.ranges.slice(0);\n ranges.push(new Range(_clipPos(this, anchor), _clipPos(this, head || anchor)));\n setSelection(this, normalizeSelection(this.cm, ranges, ranges.length - 1), options);\n }),\n getSelection: function getSelection(lineSep) {\n var ranges = this.sel.ranges,\n lines;\n\n for (var i = 0; i < ranges.length; i++) {\n var sel = getBetween(this, ranges[i].from(), ranges[i].to());\n lines = lines ? lines.concat(sel) : sel;\n }\n\n if (lineSep === false) {\n return lines;\n } else {\n return lines.join(lineSep || this.lineSeparator());\n }\n },\n getSelections: function getSelections(lineSep) {\n var parts = [],\n ranges = this.sel.ranges;\n\n for (var i = 0; i < ranges.length; i++) {\n var sel = getBetween(this, ranges[i].from(), ranges[i].to());\n\n if (lineSep !== false) {\n sel = sel.join(lineSep || this.lineSeparator());\n }\n\n parts[i] = sel;\n }\n\n return parts;\n },\n replaceSelection: function replaceSelection(code, collapse, origin) {\n var dup = [];\n\n for (var i = 0; i < this.sel.ranges.length; i++) {\n dup[i] = code;\n }\n\n this.replaceSelections(dup, collapse, origin || \"+input\");\n },\n replaceSelections: docMethodOp(function (code, collapse, origin) {\n var changes = [],\n sel = this.sel;\n\n for (var i = 0; i < sel.ranges.length; i++) {\n var range = sel.ranges[i];\n changes[i] = {\n from: range.from(),\n to: range.to(),\n text: this.splitLines(code[i]),\n origin: origin\n };\n }\n\n var newSel = collapse && collapse != \"end\" && computeReplacedSel(this, changes, collapse);\n\n for (var i$1 = changes.length - 1; i$1 >= 0; i$1--) {\n makeChange(this, changes[i$1]);\n }\n\n if (newSel) {\n setSelectionReplaceHistory(this, newSel);\n } else if (this.cm) {\n ensureCursorVisible(this.cm);\n }\n }),\n undo: docMethodOp(function () {\n makeChangeFromHistory(this, \"undo\");\n }),\n redo: docMethodOp(function () {\n makeChangeFromHistory(this, \"redo\");\n }),\n undoSelection: docMethodOp(function () {\n makeChangeFromHistory(this, \"undo\", true);\n }),\n redoSelection: docMethodOp(function () {\n makeChangeFromHistory(this, \"redo\", true);\n }),\n setExtending: function setExtending(val) {\n this.extend = val;\n },\n getExtending: function getExtending() {\n return this.extend;\n },\n historySize: function historySize() {\n var hist = this.history,\n done = 0,\n undone = 0;\n\n for (var i = 0; i < hist.done.length; i++) {\n if (!hist.done[i].ranges) {\n ++done;\n }\n }\n\n for (var i$1 = 0; i$1 < hist.undone.length; i$1++) {\n if (!hist.undone[i$1].ranges) {\n ++undone;\n }\n }\n\n return {\n undo: done,\n redo: undone\n };\n },\n clearHistory: function clearHistory() {\n var this$1 = this;\n this.history = new History(this.history);\n linkedDocs(this, function (doc) {\n return doc.history = this$1.history;\n }, true);\n },\n markClean: function markClean() {\n this.cleanGeneration = this.changeGeneration(true);\n },\n changeGeneration: function changeGeneration(forceSplit) {\n if (forceSplit) {\n this.history.lastOp = this.history.lastSelOp = this.history.lastOrigin = null;\n }\n\n return this.history.generation;\n },\n isClean: function isClean(gen) {\n return this.history.generation == (gen || this.cleanGeneration);\n },\n getHistory: function getHistory() {\n return {\n done: copyHistoryArray(this.history.done),\n undone: copyHistoryArray(this.history.undone)\n };\n },\n setHistory: function setHistory(histData) {\n var hist = this.history = new History(this.history);\n hist.done = copyHistoryArray(histData.done.slice(0), null, true);\n hist.undone = copyHistoryArray(histData.undone.slice(0), null, true);\n },\n setGutterMarker: docMethodOp(function (line, gutterID, value) {\n return changeLine(this, line, \"gutter\", function (line) {\n var markers = line.gutterMarkers || (line.gutterMarkers = {});\n markers[gutterID] = value;\n\n if (!value && isEmpty(markers)) {\n line.gutterMarkers = null;\n }\n\n return true;\n });\n }),\n clearGutter: docMethodOp(function (gutterID) {\n var this$1 = this;\n this.iter(function (line) {\n if (line.gutterMarkers && line.gutterMarkers[gutterID]) {\n changeLine(this$1, line, \"gutter\", function () {\n line.gutterMarkers[gutterID] = null;\n\n if (isEmpty(line.gutterMarkers)) {\n line.gutterMarkers = null;\n }\n\n return true;\n });\n }\n });\n }),\n lineInfo: function lineInfo(line) {\n var n;\n\n if (typeof line == \"number\") {\n if (!isLine(this, line)) {\n return null;\n }\n\n n = line;\n line = getLine(this, line);\n\n if (!line) {\n return null;\n }\n } else {\n n = lineNo(line);\n\n if (n == null) {\n return null;\n }\n }\n\n return {\n line: n,\n handle: line,\n text: line.text,\n gutterMarkers: line.gutterMarkers,\n textClass: line.textClass,\n bgClass: line.bgClass,\n wrapClass: line.wrapClass,\n widgets: line.widgets\n };\n },\n addLineClass: docMethodOp(function (handle, where, cls) {\n return changeLine(this, handle, where == \"gutter\" ? \"gutter\" : \"class\", function (line) {\n var prop = where == \"text\" ? \"textClass\" : where == \"background\" ? \"bgClass\" : where == \"gutter\" ? \"gutterClass\" : \"wrapClass\";\n\n if (!line[prop]) {\n line[prop] = cls;\n } else if (classTest(cls).test(line[prop])) {\n return false;\n } else {\n line[prop] += \" \" + cls;\n }\n\n return true;\n });\n }),\n removeLineClass: docMethodOp(function (handle, where, cls) {\n return changeLine(this, handle, where == \"gutter\" ? \"gutter\" : \"class\", function (line) {\n var prop = where == \"text\" ? \"textClass\" : where == \"background\" ? \"bgClass\" : where == \"gutter\" ? \"gutterClass\" : \"wrapClass\";\n var cur = line[prop];\n\n if (!cur) {\n return false;\n } else if (cls == null) {\n line[prop] = null;\n } else {\n var found = cur.match(classTest(cls));\n\n if (!found) {\n return false;\n }\n\n var end = found.index + found[0].length;\n line[prop] = cur.slice(0, found.index) + (!found.index || end == cur.length ? \"\" : \" \") + cur.slice(end) || null;\n }\n\n return true;\n });\n }),\n addLineWidget: docMethodOp(function (handle, node, options) {\n return addLineWidget(this, handle, node, options);\n }),\n removeLineWidget: function removeLineWidget(widget) {\n widget.clear();\n },\n markText: function markText(from, to, options) {\n return _markText(this, _clipPos(this, from), _clipPos(this, to), options, options && options.type || \"range\");\n },\n setBookmark: function setBookmark(pos, options) {\n var realOpts = {\n replacedWith: options && (options.nodeType == null ? options.widget : options),\n insertLeft: options && options.insertLeft,\n clearWhenEmpty: false,\n shared: options && options.shared,\n handleMouseEvents: options && options.handleMouseEvents\n };\n pos = _clipPos(this, pos);\n return _markText(this, pos, pos, realOpts, \"bookmark\");\n },\n findMarksAt: function findMarksAt(pos) {\n pos = _clipPos(this, pos);\n var markers = [],\n spans = getLine(this, pos.line).markedSpans;\n\n if (spans) {\n for (var i = 0; i < spans.length; ++i) {\n var span = spans[i];\n\n if ((span.from == null || span.from <= pos.ch) && (span.to == null || span.to >= pos.ch)) {\n markers.push(span.marker.parent || span.marker);\n }\n }\n }\n\n return markers;\n },\n findMarks: function findMarks(from, to, filter) {\n from = _clipPos(this, from);\n to = _clipPos(this, to);\n var found = [],\n lineNo = from.line;\n this.iter(from.line, to.line + 1, function (line) {\n var spans = line.markedSpans;\n\n if (spans) {\n for (var i = 0; i < spans.length; i++) {\n var span = spans[i];\n\n if (!(span.to != null && lineNo == from.line && from.ch >= span.to || span.from == null && lineNo != from.line || span.from != null && lineNo == to.line && span.from >= to.ch) && (!filter || filter(span.marker))) {\n found.push(span.marker.parent || span.marker);\n }\n }\n }\n\n ++lineNo;\n });\n return found;\n },\n getAllMarks: function getAllMarks() {\n var markers = [];\n this.iter(function (line) {\n var sps = line.markedSpans;\n\n if (sps) {\n for (var i = 0; i < sps.length; ++i) {\n if (sps[i].from != null) {\n markers.push(sps[i].marker);\n }\n }\n }\n });\n return markers;\n },\n posFromIndex: function posFromIndex(off) {\n var ch,\n lineNo = this.first,\n sepSize = this.lineSeparator().length;\n this.iter(function (line) {\n var sz = line.text.length + sepSize;\n\n if (sz > off) {\n ch = off;\n return true;\n }\n\n off -= sz;\n ++lineNo;\n });\n return _clipPos(this, Pos(lineNo, ch));\n },\n indexFromPos: function indexFromPos(coords) {\n coords = _clipPos(this, coords);\n var index = coords.ch;\n\n if (coords.line < this.first || coords.ch < 0) {\n return 0;\n }\n\n var sepSize = this.lineSeparator().length;\n this.iter(this.first, coords.line, function (line) {\n // iter aborts when callback returns a truthy value\n index += line.text.length + sepSize;\n });\n return index;\n },\n copy: function copy(copyHistory) {\n var doc = new Doc(getLines(this, this.first, this.first + this.size), this.modeOption, this.first, this.lineSep, this.direction);\n doc.scrollTop = this.scrollTop;\n doc.scrollLeft = this.scrollLeft;\n doc.sel = this.sel;\n doc.extend = false;\n\n if (copyHistory) {\n doc.history.undoDepth = this.history.undoDepth;\n doc.setHistory(this.getHistory());\n }\n\n return doc;\n },\n linkedDoc: function linkedDoc(options) {\n if (!options) {\n options = {};\n }\n\n var from = this.first,\n to = this.first + this.size;\n\n if (options.from != null && options.from > from) {\n from = options.from;\n }\n\n if (options.to != null && options.to < to) {\n to = options.to;\n }\n\n var copy = new Doc(getLines(this, from, to), options.mode || this.modeOption, from, this.lineSep, this.direction);\n\n if (options.sharedHist) {\n copy.history = this.history;\n }\n\n (this.linked || (this.linked = [])).push({\n doc: copy,\n sharedHist: options.sharedHist\n });\n copy.linked = [{\n doc: this,\n isParent: true,\n sharedHist: options.sharedHist\n }];\n copySharedMarkers(copy, findSharedMarkers(this));\n return copy;\n },\n unlinkDoc: function unlinkDoc(other) {\n if (other instanceof CodeMirror) {\n other = other.doc;\n }\n\n if (this.linked) {\n for (var i = 0; i < this.linked.length; ++i) {\n var link = this.linked[i];\n\n if (link.doc != other) {\n continue;\n }\n\n this.linked.splice(i, 1);\n other.unlinkDoc(this);\n detachSharedMarkers(findSharedMarkers(this));\n break;\n }\n } // If the histories were shared, split them again\n\n\n if (other.history == this.history) {\n var splitIds = [other.id];\n linkedDocs(other, function (doc) {\n return splitIds.push(doc.id);\n }, true);\n other.history = new History(null);\n other.history.done = copyHistoryArray(this.history.done, splitIds);\n other.history.undone = copyHistoryArray(this.history.undone, splitIds);\n }\n },\n iterLinkedDocs: function iterLinkedDocs(f) {\n linkedDocs(this, f);\n },\n getMode: function getMode() {\n return this.mode;\n },\n getEditor: function getEditor() {\n return this.cm;\n },\n splitLines: function splitLines(str) {\n if (this.lineSep) {\n return str.split(this.lineSep);\n }\n\n return splitLinesAuto(str);\n },\n lineSeparator: function lineSeparator() {\n return this.lineSep || \"\\n\";\n },\n setDirection: docMethodOp(function (dir) {\n if (dir != \"rtl\") {\n dir = \"ltr\";\n }\n\n if (dir == this.direction) {\n return;\n }\n\n this.direction = dir;\n this.iter(function (line) {\n return line.order = null;\n });\n\n if (this.cm) {\n directionChanged(this.cm);\n }\n })\n }); // Public alias.\n\n Doc.prototype.eachLine = Doc.prototype.iter; // Kludge to work around strange IE behavior where it'll sometimes\n // re-fire a series of drag-related events right after the drop (#1551)\n\n var lastDrop = 0;\n\n function onDrop(e) {\n var cm = this;\n clearDragCursor(cm);\n\n if (signalDOMEvent(cm, e) || eventInWidget(cm.display, e)) {\n return;\n }\n\n e_preventDefault(e);\n\n if (ie) {\n lastDrop = +new Date();\n }\n\n var pos = posFromMouse(cm, e, true),\n files = e.dataTransfer.files;\n\n if (!pos || cm.isReadOnly()) {\n return;\n } // Might be a file drop, in which case we simply extract the text\n // and insert it.\n\n\n if (files && files.length && window.FileReader && window.File) {\n var n = files.length,\n text = Array(n),\n read = 0;\n\n var markAsReadAndPasteIfAllFilesAreRead = function markAsReadAndPasteIfAllFilesAreRead() {\n if (++read == n) {\n operation(cm, function () {\n pos = _clipPos(cm.doc, pos);\n var change = {\n from: pos,\n to: pos,\n text: cm.doc.splitLines(text.filter(function (t) {\n return t != null;\n }).join(cm.doc.lineSeparator())),\n origin: \"paste\"\n };\n makeChange(cm.doc, change);\n setSelectionReplaceHistory(cm.doc, simpleSelection(_clipPos(cm.doc, pos), _clipPos(cm.doc, changeEnd(change))));\n })();\n }\n };\n\n var readTextFromFile = function readTextFromFile(file, i) {\n if (cm.options.allowDropFileTypes && indexOf(cm.options.allowDropFileTypes, file.type) == -1) {\n markAsReadAndPasteIfAllFilesAreRead();\n return;\n }\n\n var reader = new FileReader();\n\n reader.onerror = function () {\n return markAsReadAndPasteIfAllFilesAreRead();\n };\n\n reader.onload = function () {\n var content = reader.result;\n\n if (/[\\x00-\\x08\\x0e-\\x1f]{2}/.test(content)) {\n markAsReadAndPasteIfAllFilesAreRead();\n return;\n }\n\n text[i] = content;\n markAsReadAndPasteIfAllFilesAreRead();\n };\n\n reader.readAsText(file);\n };\n\n for (var i = 0; i < files.length; i++) {\n readTextFromFile(files[i], i);\n }\n } else {\n // Normal drop\n // Don't do a replace if the drop happened inside of the selected text.\n if (cm.state.draggingText && cm.doc.sel.contains(pos) > -1) {\n cm.state.draggingText(e); // Ensure the editor is re-focused\n\n setTimeout(function () {\n return cm.display.input.focus();\n }, 20);\n return;\n }\n\n try {\n var text$1 = e.dataTransfer.getData(\"Text\");\n\n if (text$1) {\n var selected;\n\n if (cm.state.draggingText && !cm.state.draggingText.copy) {\n selected = cm.listSelections();\n }\n\n setSelectionNoUndo(cm.doc, simpleSelection(pos, pos));\n\n if (selected) {\n for (var i$1 = 0; i$1 < selected.length; ++i$1) {\n _replaceRange(cm.doc, \"\", selected[i$1].anchor, selected[i$1].head, \"drag\");\n }\n }\n\n cm.replaceSelection(text$1, \"around\", \"paste\");\n cm.display.input.focus();\n }\n } catch (e$1) {}\n }\n }\n\n function onDragStart(cm, e) {\n if (ie && (!cm.state.draggingText || +new Date() - lastDrop < 100)) {\n e_stop(e);\n return;\n }\n\n if (signalDOMEvent(cm, e) || eventInWidget(cm.display, e)) {\n return;\n }\n\n e.dataTransfer.setData(\"Text\", cm.getSelection());\n e.dataTransfer.effectAllowed = \"copyMove\"; // Use dummy image instead of default browsers image.\n // Recent Safari (~6.0.2) have a tendency to segfault when this happens, so we don't do it there.\n\n if (e.dataTransfer.setDragImage && !safari) {\n var img = elt(\"img\", null, null, \"position: fixed; left: 0; top: 0;\");\n img.src = \"data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\";\n\n if (presto) {\n img.width = img.height = 1;\n cm.display.wrapper.appendChild(img); // Force a relayout, or Opera won't use our image for some obscure reason\n\n img._top = img.offsetTop;\n }\n\n e.dataTransfer.setDragImage(img, 0, 0);\n\n if (presto) {\n img.parentNode.removeChild(img);\n }\n }\n }\n\n function onDragOver(cm, e) {\n var pos = posFromMouse(cm, e);\n\n if (!pos) {\n return;\n }\n\n var frag = document.createDocumentFragment();\n drawSelectionCursor(cm, pos, frag);\n\n if (!cm.display.dragCursor) {\n cm.display.dragCursor = elt(\"div\", null, \"CodeMirror-cursors CodeMirror-dragcursors\");\n cm.display.lineSpace.insertBefore(cm.display.dragCursor, cm.display.cursorDiv);\n }\n\n removeChildrenAndAdd(cm.display.dragCursor, frag);\n }\n\n function clearDragCursor(cm) {\n if (cm.display.dragCursor) {\n cm.display.lineSpace.removeChild(cm.display.dragCursor);\n cm.display.dragCursor = null;\n }\n } // These must be handled carefully, because naively registering a\n // handler for each editor will cause the editors to never be\n // garbage collected.\n\n\n function forEachCodeMirror(f) {\n if (!document.getElementsByClassName) {\n return;\n }\n\n var byClass = document.getElementsByClassName(\"CodeMirror\"),\n editors = [];\n\n for (var i = 0; i < byClass.length; i++) {\n var cm = byClass[i].CodeMirror;\n\n if (cm) {\n editors.push(cm);\n }\n }\n\n if (editors.length) {\n editors[0].operation(function () {\n for (var i = 0; i < editors.length; i++) {\n f(editors[i]);\n }\n });\n }\n }\n\n var globalsRegistered = false;\n\n function ensureGlobalHandlers() {\n if (globalsRegistered) {\n return;\n }\n\n registerGlobalHandlers();\n globalsRegistered = true;\n }\n\n function registerGlobalHandlers() {\n // When the window resizes, we need to refresh active editors.\n var resizeTimer;\n on(window, \"resize\", function () {\n if (resizeTimer == null) {\n resizeTimer = setTimeout(function () {\n resizeTimer = null;\n forEachCodeMirror(onResize);\n }, 100);\n }\n }); // When the window loses focus, we want to show the editor as blurred\n\n on(window, \"blur\", function () {\n return forEachCodeMirror(onBlur);\n });\n } // Called when the window resizes\n\n\n function onResize(cm) {\n var d = cm.display; // Might be a text scaling operation, clear size caches.\n\n d.cachedCharWidth = d.cachedTextHeight = d.cachedPaddingH = null;\n d.scrollbarsClipped = false;\n cm.setSize();\n }\n\n var keyNames = {\n 3: \"Pause\",\n 8: \"Backspace\",\n 9: \"Tab\",\n 13: \"Enter\",\n 16: \"Shift\",\n 17: \"Ctrl\",\n 18: \"Alt\",\n 19: \"Pause\",\n 20: \"CapsLock\",\n 27: \"Esc\",\n 32: \"Space\",\n 33: \"PageUp\",\n 34: \"PageDown\",\n 35: \"End\",\n 36: \"Home\",\n 37: \"Left\",\n 38: \"Up\",\n 39: \"Right\",\n 40: \"Down\",\n 44: \"PrintScrn\",\n 45: \"Insert\",\n 46: \"Delete\",\n 59: \";\",\n 61: \"=\",\n 91: \"Mod\",\n 92: \"Mod\",\n 93: \"Mod\",\n 106: \"*\",\n 107: \"=\",\n 109: \"-\",\n 110: \".\",\n 111: \"/\",\n 145: \"ScrollLock\",\n 173: \"-\",\n 186: \";\",\n 187: \"=\",\n 188: \",\",\n 189: \"-\",\n 190: \".\",\n 191: \"/\",\n 192: \"`\",\n 219: \"[\",\n 220: \"\\\\\",\n 221: \"]\",\n 222: \"'\",\n 224: \"Mod\",\n 63232: \"Up\",\n 63233: \"Down\",\n 63234: \"Left\",\n 63235: \"Right\",\n 63272: \"Delete\",\n 63273: \"Home\",\n 63275: \"End\",\n 63276: \"PageUp\",\n 63277: \"PageDown\",\n 63302: \"Insert\"\n }; // Number keys\n\n for (var i = 0; i < 10; i++) {\n keyNames[i + 48] = keyNames[i + 96] = String(i);\n } // Alphabetic keys\n\n\n for (var i$1 = 65; i$1 <= 90; i$1++) {\n keyNames[i$1] = String.fromCharCode(i$1);\n } // Function keys\n\n\n for (var i$2 = 1; i$2 <= 12; i$2++) {\n keyNames[i$2 + 111] = keyNames[i$2 + 63235] = \"F\" + i$2;\n }\n\n var keyMap = {};\n keyMap.basic = {\n \"Left\": \"goCharLeft\",\n \"Right\": \"goCharRight\",\n \"Up\": \"goLineUp\",\n \"Down\": \"goLineDown\",\n \"End\": \"goLineEnd\",\n \"Home\": \"goLineStartSmart\",\n \"PageUp\": \"goPageUp\",\n \"PageDown\": \"goPageDown\",\n \"Delete\": \"delCharAfter\",\n \"Backspace\": \"delCharBefore\",\n \"Shift-Backspace\": \"delCharBefore\",\n \"Tab\": \"defaultTab\",\n \"Shift-Tab\": \"indentAuto\",\n \"Enter\": \"newlineAndIndent\",\n \"Insert\": \"toggleOverwrite\",\n \"Esc\": \"singleSelection\"\n }; // Note that the save and find-related commands aren't defined by\n // default. User code or addons can define them. Unknown commands\n // are simply ignored.\n\n keyMap.pcDefault = {\n \"Ctrl-A\": \"selectAll\",\n \"Ctrl-D\": \"deleteLine\",\n \"Ctrl-Z\": \"undo\",\n \"Shift-Ctrl-Z\": \"redo\",\n \"Ctrl-Y\": \"redo\",\n \"Ctrl-Home\": \"goDocStart\",\n \"Ctrl-End\": \"goDocEnd\",\n \"Ctrl-Up\": \"goLineUp\",\n \"Ctrl-Down\": \"goLineDown\",\n \"Ctrl-Left\": \"goGroupLeft\",\n \"Ctrl-Right\": \"goGroupRight\",\n \"Alt-Left\": \"goLineStart\",\n \"Alt-Right\": \"goLineEnd\",\n \"Ctrl-Backspace\": \"delGroupBefore\",\n \"Ctrl-Delete\": \"delGroupAfter\",\n \"Ctrl-S\": \"save\",\n \"Ctrl-F\": \"find\",\n \"Ctrl-G\": \"findNext\",\n \"Shift-Ctrl-G\": \"findPrev\",\n \"Shift-Ctrl-F\": \"replace\",\n \"Shift-Ctrl-R\": \"replaceAll\",\n \"Ctrl-[\": \"indentLess\",\n \"Ctrl-]\": \"indentMore\",\n \"Ctrl-U\": \"undoSelection\",\n \"Shift-Ctrl-U\": \"redoSelection\",\n \"Alt-U\": \"redoSelection\",\n \"fallthrough\": \"basic\"\n }; // Very basic readline/emacs-style bindings, which are standard on Mac.\n\n keyMap.emacsy = {\n \"Ctrl-F\": \"goCharRight\",\n \"Ctrl-B\": \"goCharLeft\",\n \"Ctrl-P\": \"goLineUp\",\n \"Ctrl-N\": \"goLineDown\",\n \"Ctrl-A\": \"goLineStart\",\n \"Ctrl-E\": \"goLineEnd\",\n \"Ctrl-V\": \"goPageDown\",\n \"Shift-Ctrl-V\": \"goPageUp\",\n \"Ctrl-D\": \"delCharAfter\",\n \"Ctrl-H\": \"delCharBefore\",\n \"Alt-Backspace\": \"delWordBefore\",\n \"Ctrl-K\": \"killLine\",\n \"Ctrl-T\": \"transposeChars\",\n \"Ctrl-O\": \"openLine\"\n };\n keyMap.macDefault = {\n \"Cmd-A\": \"selectAll\",\n \"Cmd-D\": \"deleteLine\",\n \"Cmd-Z\": \"undo\",\n \"Shift-Cmd-Z\": \"redo\",\n \"Cmd-Y\": \"redo\",\n \"Cmd-Home\": \"goDocStart\",\n \"Cmd-Up\": \"goDocStart\",\n \"Cmd-End\": \"goDocEnd\",\n \"Cmd-Down\": \"goDocEnd\",\n \"Alt-Left\": \"goGroupLeft\",\n \"Alt-Right\": \"goGroupRight\",\n \"Cmd-Left\": \"goLineLeft\",\n \"Cmd-Right\": \"goLineRight\",\n \"Alt-Backspace\": \"delGroupBefore\",\n \"Ctrl-Alt-Backspace\": \"delGroupAfter\",\n \"Alt-Delete\": \"delGroupAfter\",\n \"Cmd-S\": \"save\",\n \"Cmd-F\": \"find\",\n \"Cmd-G\": \"findNext\",\n \"Shift-Cmd-G\": \"findPrev\",\n \"Cmd-Alt-F\": \"replace\",\n \"Shift-Cmd-Alt-F\": \"replaceAll\",\n \"Cmd-[\": \"indentLess\",\n \"Cmd-]\": \"indentMore\",\n \"Cmd-Backspace\": \"delWrappedLineLeft\",\n \"Cmd-Delete\": \"delWrappedLineRight\",\n \"Cmd-U\": \"undoSelection\",\n \"Shift-Cmd-U\": \"redoSelection\",\n \"Ctrl-Up\": \"goDocStart\",\n \"Ctrl-Down\": \"goDocEnd\",\n \"fallthrough\": [\"basic\", \"emacsy\"]\n };\n keyMap[\"default\"] = mac ? keyMap.macDefault : keyMap.pcDefault; // KEYMAP DISPATCH\n\n function normalizeKeyName(name) {\n var parts = name.split(/-(?!$)/);\n name = parts[parts.length - 1];\n var alt, ctrl, shift, cmd;\n\n for (var i = 0; i < parts.length - 1; i++) {\n var mod = parts[i];\n\n if (/^(cmd|meta|m)$/i.test(mod)) {\n cmd = true;\n } else if (/^a(lt)?$/i.test(mod)) {\n alt = true;\n } else if (/^(c|ctrl|control)$/i.test(mod)) {\n ctrl = true;\n } else if (/^s(hift)?$/i.test(mod)) {\n shift = true;\n } else {\n throw new Error(\"Unrecognized modifier name: \" + mod);\n }\n }\n\n if (alt) {\n name = \"Alt-\" + name;\n }\n\n if (ctrl) {\n name = \"Ctrl-\" + name;\n }\n\n if (cmd) {\n name = \"Cmd-\" + name;\n }\n\n if (shift) {\n name = \"Shift-\" + name;\n }\n\n return name;\n } // This is a kludge to keep keymaps mostly working as raw objects\n // (backwards compatibility) while at the same time support features\n // like normalization and multi-stroke key bindings. It compiles a\n // new normalized keymap, and then updates the old object to reflect\n // this.\n\n\n function normalizeKeyMap(keymap) {\n var copy = {};\n\n for (var keyname in keymap) {\n if (keymap.hasOwnProperty(keyname)) {\n var value = keymap[keyname];\n\n if (/^(name|fallthrough|(de|at)tach)$/.test(keyname)) {\n continue;\n }\n\n if (value == \"...\") {\n delete keymap[keyname];\n continue;\n }\n\n var keys = map(keyname.split(\" \"), normalizeKeyName);\n\n for (var i = 0; i < keys.length; i++) {\n var val = void 0,\n name = void 0;\n\n if (i == keys.length - 1) {\n name = keys.join(\" \");\n val = value;\n } else {\n name = keys.slice(0, i + 1).join(\" \");\n val = \"...\";\n }\n\n var prev = copy[name];\n\n if (!prev) {\n copy[name] = val;\n } else if (prev != val) {\n throw new Error(\"Inconsistent bindings for \" + name);\n }\n }\n\n delete keymap[keyname];\n }\n }\n\n for (var prop in copy) {\n keymap[prop] = copy[prop];\n }\n\n return keymap;\n }\n\n function lookupKey(key, map, handle, context) {\n map = getKeyMap(map);\n var found = map.call ? map.call(key, context) : map[key];\n\n if (found === false) {\n return \"nothing\";\n }\n\n if (found === \"...\") {\n return \"multi\";\n }\n\n if (found != null && handle(found)) {\n return \"handled\";\n }\n\n if (map.fallthrough) {\n if (Object.prototype.toString.call(map.fallthrough) != \"[object Array]\") {\n return lookupKey(key, map.fallthrough, handle, context);\n }\n\n for (var i = 0; i < map.fallthrough.length; i++) {\n var result = lookupKey(key, map.fallthrough[i], handle, context);\n\n if (result) {\n return result;\n }\n }\n }\n } // Modifier key presses don't count as 'real' key presses for the\n // purpose of keymap fallthrough.\n\n\n function isModifierKey(value) {\n var name = typeof value == \"string\" ? value : keyNames[value.keyCode];\n return name == \"Ctrl\" || name == \"Alt\" || name == \"Shift\" || name == \"Mod\";\n }\n\n function addModifierNames(name, event, noShift) {\n var base = name;\n\n if (event.altKey && base != \"Alt\") {\n name = \"Alt-\" + name;\n }\n\n if ((flipCtrlCmd ? event.metaKey : event.ctrlKey) && base != \"Ctrl\") {\n name = \"Ctrl-\" + name;\n }\n\n if ((flipCtrlCmd ? event.ctrlKey : event.metaKey) && base != \"Mod\") {\n name = \"Cmd-\" + name;\n }\n\n if (!noShift && event.shiftKey && base != \"Shift\") {\n name = \"Shift-\" + name;\n }\n\n return name;\n } // Look up the name of a key as indicated by an event object.\n\n\n function keyName(event, noShift) {\n if (presto && event.keyCode == 34 && event[\"char\"]) {\n return false;\n }\n\n var name = keyNames[event.keyCode];\n\n if (name == null || event.altGraphKey) {\n return false;\n } // Ctrl-ScrollLock has keyCode 3, same as Ctrl-Pause,\n // so we'll use event.code when available (Chrome 48+, FF 38+, Safari 10.1+)\n\n\n if (event.keyCode == 3 && event.code) {\n name = event.code;\n }\n\n return addModifierNames(name, event, noShift);\n }\n\n function getKeyMap(val) {\n return typeof val == \"string\" ? keyMap[val] : val;\n } // Helper for deleting text near the selection(s), used to implement\n // backspace, delete, and similar functionality.\n\n\n function deleteNearSelection(cm, compute) {\n var ranges = cm.doc.sel.ranges,\n kill = []; // Build up a set of ranges to kill first, merging overlapping\n // ranges.\n\n for (var i = 0; i < ranges.length; i++) {\n var toKill = compute(ranges[i]);\n\n while (kill.length && cmp(toKill.from, lst(kill).to) <= 0) {\n var replaced = kill.pop();\n\n if (cmp(replaced.from, toKill.from) < 0) {\n toKill.from = replaced.from;\n break;\n }\n }\n\n kill.push(toKill);\n } // Next, remove those actual ranges.\n\n\n runInOp(cm, function () {\n for (var i = kill.length - 1; i >= 0; i--) {\n _replaceRange(cm.doc, \"\", kill[i].from, kill[i].to, \"+delete\");\n }\n\n ensureCursorVisible(cm);\n });\n }\n\n function moveCharLogically(line, ch, dir) {\n var target = skipExtendingChars(line.text, ch + dir, dir);\n return target < 0 || target > line.text.length ? null : target;\n }\n\n function moveLogically(line, start, dir) {\n var ch = moveCharLogically(line, start.ch, dir);\n return ch == null ? null : new Pos(start.line, ch, dir < 0 ? \"after\" : \"before\");\n }\n\n function endOfLine(visually, cm, lineObj, lineNo, dir) {\n if (visually) {\n if (cm.doc.direction == \"rtl\") {\n dir = -dir;\n }\n\n var order = getOrder(lineObj, cm.doc.direction);\n\n if (order) {\n var part = dir < 0 ? lst(order) : order[0];\n var moveInStorageOrder = dir < 0 == (part.level == 1);\n var sticky = moveInStorageOrder ? \"after\" : \"before\";\n var ch; // With a wrapped rtl chunk (possibly spanning multiple bidi parts),\n // it could be that the last bidi part is not on the last visual line,\n // since visual lines contain content order-consecutive chunks.\n // Thus, in rtl, we are looking for the first (content-order) character\n // in the rtl chunk that is on the last line (that is, the same line\n // as the last (content-order) character).\n\n if (part.level > 0 || cm.doc.direction == \"rtl\") {\n var prep = prepareMeasureForLine(cm, lineObj);\n ch = dir < 0 ? lineObj.text.length - 1 : 0;\n var targetTop = measureCharPrepared(cm, prep, ch).top;\n ch = findFirst(function (ch) {\n return measureCharPrepared(cm, prep, ch).top == targetTop;\n }, dir < 0 == (part.level == 1) ? part.from : part.to - 1, ch);\n\n if (sticky == \"before\") {\n ch = moveCharLogically(lineObj, ch, 1);\n }\n } else {\n ch = dir < 0 ? part.to : part.from;\n }\n\n return new Pos(lineNo, ch, sticky);\n }\n }\n\n return new Pos(lineNo, dir < 0 ? lineObj.text.length : 0, dir < 0 ? \"before\" : \"after\");\n }\n\n function moveVisually(cm, line, start, dir) {\n var bidi = getOrder(line, cm.doc.direction);\n\n if (!bidi) {\n return moveLogically(line, start, dir);\n }\n\n if (start.ch >= line.text.length) {\n start.ch = line.text.length;\n start.sticky = \"before\";\n } else if (start.ch <= 0) {\n start.ch = 0;\n start.sticky = \"after\";\n }\n\n var partPos = getBidiPartAt(bidi, start.ch, start.sticky),\n part = bidi[partPos];\n\n if (cm.doc.direction == \"ltr\" && part.level % 2 == 0 && (dir > 0 ? part.to > start.ch : part.from < start.ch)) {\n // Case 1: We move within an ltr part in an ltr editor. Even with wrapped lines,\n // nothing interesting happens.\n return moveLogically(line, start, dir);\n }\n\n var mv = function mv(pos, dir) {\n return moveCharLogically(line, pos instanceof Pos ? pos.ch : pos, dir);\n };\n\n var prep;\n\n var getWrappedLineExtent = function getWrappedLineExtent(ch) {\n if (!cm.options.lineWrapping) {\n return {\n begin: 0,\n end: line.text.length\n };\n }\n\n prep = prep || prepareMeasureForLine(cm, line);\n return wrappedLineExtentChar(cm, line, prep, ch);\n };\n\n var wrappedLineExtent = getWrappedLineExtent(start.sticky == \"before\" ? mv(start, -1) : start.ch);\n\n if (cm.doc.direction == \"rtl\" || part.level == 1) {\n var moveInStorageOrder = part.level == 1 == dir < 0;\n var ch = mv(start, moveInStorageOrder ? 1 : -1);\n\n if (ch != null && (!moveInStorageOrder ? ch >= part.from && ch >= wrappedLineExtent.begin : ch <= part.to && ch <= wrappedLineExtent.end)) {\n // Case 2: We move within an rtl part or in an rtl editor on the same visual line\n var sticky = moveInStorageOrder ? \"before\" : \"after\";\n return new Pos(start.line, ch, sticky);\n }\n } // Case 3: Could not move within this bidi part in this visual line, so leave\n // the current bidi part\n\n\n var searchInVisualLine = function searchInVisualLine(partPos, dir, wrappedLineExtent) {\n var getRes = function getRes(ch, moveInStorageOrder) {\n return moveInStorageOrder ? new Pos(start.line, mv(ch, 1), \"before\") : new Pos(start.line, ch, \"after\");\n };\n\n for (; partPos >= 0 && partPos < bidi.length; partPos += dir) {\n var part = bidi[partPos];\n var moveInStorageOrder = dir > 0 == (part.level != 1);\n var ch = moveInStorageOrder ? wrappedLineExtent.begin : mv(wrappedLineExtent.end, -1);\n\n if (part.from <= ch && ch < part.to) {\n return getRes(ch, moveInStorageOrder);\n }\n\n ch = moveInStorageOrder ? part.from : mv(part.to, -1);\n\n if (wrappedLineExtent.begin <= ch && ch < wrappedLineExtent.end) {\n return getRes(ch, moveInStorageOrder);\n }\n }\n }; // Case 3a: Look for other bidi parts on the same visual line\n\n\n var res = searchInVisualLine(partPos + dir, dir, wrappedLineExtent);\n\n if (res) {\n return res;\n } // Case 3b: Look for other bidi parts on the next visual line\n\n\n var nextCh = dir > 0 ? wrappedLineExtent.end : mv(wrappedLineExtent.begin, -1);\n\n if (nextCh != null && !(dir > 0 && nextCh == line.text.length)) {\n res = searchInVisualLine(dir > 0 ? 0 : bidi.length - 1, dir, getWrappedLineExtent(nextCh));\n\n if (res) {\n return res;\n }\n } // Case 4: Nowhere to move\n\n\n return null;\n } // Commands are parameter-less actions that can be performed on an\n // editor, mostly used for keybindings.\n\n\n var commands = {\n selectAll: selectAll,\n singleSelection: function singleSelection(cm) {\n return cm.setSelection(cm.getCursor(\"anchor\"), cm.getCursor(\"head\"), sel_dontScroll);\n },\n killLine: function killLine(cm) {\n return deleteNearSelection(cm, function (range) {\n if (range.empty()) {\n var len = getLine(cm.doc, range.head.line).text.length;\n\n if (range.head.ch == len && range.head.line < cm.lastLine()) {\n return {\n from: range.head,\n to: Pos(range.head.line + 1, 0)\n };\n } else {\n return {\n from: range.head,\n to: Pos(range.head.line, len)\n };\n }\n } else {\n return {\n from: range.from(),\n to: range.to()\n };\n }\n });\n },\n deleteLine: function deleteLine(cm) {\n return deleteNearSelection(cm, function (range) {\n return {\n from: Pos(range.from().line, 0),\n to: _clipPos(cm.doc, Pos(range.to().line + 1, 0))\n };\n });\n },\n delLineLeft: function delLineLeft(cm) {\n return deleteNearSelection(cm, function (range) {\n return {\n from: Pos(range.from().line, 0),\n to: range.from()\n };\n });\n },\n delWrappedLineLeft: function delWrappedLineLeft(cm) {\n return deleteNearSelection(cm, function (range) {\n var top = cm.charCoords(range.head, \"div\").top + 5;\n var leftPos = cm.coordsChar({\n left: 0,\n top: top\n }, \"div\");\n return {\n from: leftPos,\n to: range.from()\n };\n });\n },\n delWrappedLineRight: function delWrappedLineRight(cm) {\n return deleteNearSelection(cm, function (range) {\n var top = cm.charCoords(range.head, \"div\").top + 5;\n var rightPos = cm.coordsChar({\n left: cm.display.lineDiv.offsetWidth + 100,\n top: top\n }, \"div\");\n return {\n from: range.from(),\n to: rightPos\n };\n });\n },\n undo: function undo(cm) {\n return cm.undo();\n },\n redo: function redo(cm) {\n return cm.redo();\n },\n undoSelection: function undoSelection(cm) {\n return cm.undoSelection();\n },\n redoSelection: function redoSelection(cm) {\n return cm.redoSelection();\n },\n goDocStart: function goDocStart(cm) {\n return cm.extendSelection(Pos(cm.firstLine(), 0));\n },\n goDocEnd: function goDocEnd(cm) {\n return cm.extendSelection(Pos(cm.lastLine()));\n },\n goLineStart: function goLineStart(cm) {\n return cm.extendSelectionsBy(function (range) {\n return lineStart(cm, range.head.line);\n }, {\n origin: \"+move\",\n bias: 1\n });\n },\n goLineStartSmart: function goLineStartSmart(cm) {\n return cm.extendSelectionsBy(function (range) {\n return lineStartSmart(cm, range.head);\n }, {\n origin: \"+move\",\n bias: 1\n });\n },\n goLineEnd: function goLineEnd(cm) {\n return cm.extendSelectionsBy(function (range) {\n return lineEnd(cm, range.head.line);\n }, {\n origin: \"+move\",\n bias: -1\n });\n },\n goLineRight: function goLineRight(cm) {\n return cm.extendSelectionsBy(function (range) {\n var top = cm.cursorCoords(range.head, \"div\").top + 5;\n return cm.coordsChar({\n left: cm.display.lineDiv.offsetWidth + 100,\n top: top\n }, \"div\");\n }, sel_move);\n },\n goLineLeft: function goLineLeft(cm) {\n return cm.extendSelectionsBy(function (range) {\n var top = cm.cursorCoords(range.head, \"div\").top + 5;\n return cm.coordsChar({\n left: 0,\n top: top\n }, \"div\");\n }, sel_move);\n },\n goLineLeftSmart: function goLineLeftSmart(cm) {\n return cm.extendSelectionsBy(function (range) {\n var top = cm.cursorCoords(range.head, \"div\").top + 5;\n var pos = cm.coordsChar({\n left: 0,\n top: top\n }, \"div\");\n\n if (pos.ch < cm.getLine(pos.line).search(/\\S/)) {\n return lineStartSmart(cm, range.head);\n }\n\n return pos;\n }, sel_move);\n },\n goLineUp: function goLineUp(cm) {\n return cm.moveV(-1, \"line\");\n },\n goLineDown: function goLineDown(cm) {\n return cm.moveV(1, \"line\");\n },\n goPageUp: function goPageUp(cm) {\n return cm.moveV(-1, \"page\");\n },\n goPageDown: function goPageDown(cm) {\n return cm.moveV(1, \"page\");\n },\n goCharLeft: function goCharLeft(cm) {\n return cm.moveH(-1, \"char\");\n },\n goCharRight: function goCharRight(cm) {\n return cm.moveH(1, \"char\");\n },\n goColumnLeft: function goColumnLeft(cm) {\n return cm.moveH(-1, \"column\");\n },\n goColumnRight: function goColumnRight(cm) {\n return cm.moveH(1, \"column\");\n },\n goWordLeft: function goWordLeft(cm) {\n return cm.moveH(-1, \"word\");\n },\n goGroupRight: function goGroupRight(cm) {\n return cm.moveH(1, \"group\");\n },\n goGroupLeft: function goGroupLeft(cm) {\n return cm.moveH(-1, \"group\");\n },\n goWordRight: function goWordRight(cm) {\n return cm.moveH(1, \"word\");\n },\n delCharBefore: function delCharBefore(cm) {\n return cm.deleteH(-1, \"codepoint\");\n },\n delCharAfter: function delCharAfter(cm) {\n return cm.deleteH(1, \"char\");\n },\n delWordBefore: function delWordBefore(cm) {\n return cm.deleteH(-1, \"word\");\n },\n delWordAfter: function delWordAfter(cm) {\n return cm.deleteH(1, \"word\");\n },\n delGroupBefore: function delGroupBefore(cm) {\n return cm.deleteH(-1, \"group\");\n },\n delGroupAfter: function delGroupAfter(cm) {\n return cm.deleteH(1, \"group\");\n },\n indentAuto: function indentAuto(cm) {\n return cm.indentSelection(\"smart\");\n },\n indentMore: function indentMore(cm) {\n return cm.indentSelection(\"add\");\n },\n indentLess: function indentLess(cm) {\n return cm.indentSelection(\"subtract\");\n },\n insertTab: function insertTab(cm) {\n return cm.replaceSelection(\"\\t\");\n },\n insertSoftTab: function insertSoftTab(cm) {\n var spaces = [],\n ranges = cm.listSelections(),\n tabSize = cm.options.tabSize;\n\n for (var i = 0; i < ranges.length; i++) {\n var pos = ranges[i].from();\n var col = countColumn(cm.getLine(pos.line), pos.ch, tabSize);\n spaces.push(spaceStr(tabSize - col % tabSize));\n }\n\n cm.replaceSelections(spaces);\n },\n defaultTab: function defaultTab(cm) {\n if (cm.somethingSelected()) {\n cm.indentSelection(\"add\");\n } else {\n cm.execCommand(\"insertTab\");\n }\n },\n // Swap the two chars left and right of each selection's head.\n // Move cursor behind the two swapped characters afterwards.\n //\n // Doesn't consider line feeds a character.\n // Doesn't scan more than one line above to find a character.\n // Doesn't do anything on an empty line.\n // Doesn't do anything with non-empty selections.\n transposeChars: function transposeChars(cm) {\n return runInOp(cm, function () {\n var ranges = cm.listSelections(),\n newSel = [];\n\n for (var i = 0; i < ranges.length; i++) {\n if (!ranges[i].empty()) {\n continue;\n }\n\n var cur = ranges[i].head,\n line = getLine(cm.doc, cur.line).text;\n\n if (line) {\n if (cur.ch == line.length) {\n cur = new Pos(cur.line, cur.ch - 1);\n }\n\n if (cur.ch > 0) {\n cur = new Pos(cur.line, cur.ch + 1);\n cm.replaceRange(line.charAt(cur.ch - 1) + line.charAt(cur.ch - 2), Pos(cur.line, cur.ch - 2), cur, \"+transpose\");\n } else if (cur.line > cm.doc.first) {\n var prev = getLine(cm.doc, cur.line - 1).text;\n\n if (prev) {\n cur = new Pos(cur.line, 1);\n cm.replaceRange(line.charAt(0) + cm.doc.lineSeparator() + prev.charAt(prev.length - 1), Pos(cur.line - 1, prev.length - 1), cur, \"+transpose\");\n }\n }\n }\n\n newSel.push(new Range(cur, cur));\n }\n\n cm.setSelections(newSel);\n });\n },\n newlineAndIndent: function newlineAndIndent(cm) {\n return runInOp(cm, function () {\n var sels = cm.listSelections();\n\n for (var i = sels.length - 1; i >= 0; i--) {\n cm.replaceRange(cm.doc.lineSeparator(), sels[i].anchor, sels[i].head, \"+input\");\n }\n\n sels = cm.listSelections();\n\n for (var i$1 = 0; i$1 < sels.length; i$1++) {\n cm.indentLine(sels[i$1].from().line, null, true);\n }\n\n ensureCursorVisible(cm);\n });\n },\n openLine: function openLine(cm) {\n return cm.replaceSelection(\"\\n\", \"start\");\n },\n toggleOverwrite: function toggleOverwrite(cm) {\n return cm.toggleOverwrite();\n }\n };\n\n function lineStart(cm, lineN) {\n var line = getLine(cm.doc, lineN);\n var visual = visualLine(line);\n\n if (visual != line) {\n lineN = lineNo(visual);\n }\n\n return endOfLine(true, cm, visual, lineN, 1);\n }\n\n function lineEnd(cm, lineN) {\n var line = getLine(cm.doc, lineN);\n var visual = visualLineEnd(line);\n\n if (visual != line) {\n lineN = lineNo(visual);\n }\n\n return endOfLine(true, cm, line, lineN, -1);\n }\n\n function lineStartSmart(cm, pos) {\n var start = lineStart(cm, pos.line);\n var line = getLine(cm.doc, start.line);\n var order = getOrder(line, cm.doc.direction);\n\n if (!order || order[0].level == 0) {\n var firstNonWS = Math.max(start.ch, line.text.search(/\\S/));\n var inWS = pos.line == start.line && pos.ch <= firstNonWS && pos.ch;\n return Pos(start.line, inWS ? 0 : firstNonWS, start.sticky);\n }\n\n return start;\n } // Run a handler that was bound to a key.\n\n\n function doHandleBinding(cm, bound, dropShift) {\n if (typeof bound == \"string\") {\n bound = commands[bound];\n\n if (!bound) {\n return false;\n }\n } // Ensure previous input has been read, so that the handler sees a\n // consistent view of the document\n\n\n cm.display.input.ensurePolled();\n var prevShift = cm.display.shift,\n done = false;\n\n try {\n if (cm.isReadOnly()) {\n cm.state.suppressEdits = true;\n }\n\n if (dropShift) {\n cm.display.shift = false;\n }\n\n done = bound(cm) != Pass;\n } finally {\n cm.display.shift = prevShift;\n cm.state.suppressEdits = false;\n }\n\n return done;\n }\n\n function lookupKeyForEditor(cm, name, handle) {\n for (var i = 0; i < cm.state.keyMaps.length; i++) {\n var result = lookupKey(name, cm.state.keyMaps[i], handle, cm);\n\n if (result) {\n return result;\n }\n }\n\n return cm.options.extraKeys && lookupKey(name, cm.options.extraKeys, handle, cm) || lookupKey(name, cm.options.keyMap, handle, cm);\n } // Note that, despite the name, this function is also used to check\n // for bound mouse clicks.\n\n\n var stopSeq = new Delayed();\n\n function dispatchKey(cm, name, e, handle) {\n var seq = cm.state.keySeq;\n\n if (seq) {\n if (isModifierKey(name)) {\n return \"handled\";\n }\n\n if (/\\'$/.test(name)) {\n cm.state.keySeq = null;\n } else {\n stopSeq.set(50, function () {\n if (cm.state.keySeq == seq) {\n cm.state.keySeq = null;\n cm.display.input.reset();\n }\n });\n }\n\n if (dispatchKeyInner(cm, seq + \" \" + name, e, handle)) {\n return true;\n }\n }\n\n return dispatchKeyInner(cm, name, e, handle);\n }\n\n function dispatchKeyInner(cm, name, e, handle) {\n var result = lookupKeyForEditor(cm, name, handle);\n\n if (result == \"multi\") {\n cm.state.keySeq = name;\n }\n\n if (result == \"handled\") {\n signalLater(cm, \"keyHandled\", cm, name, e);\n }\n\n if (result == \"handled\" || result == \"multi\") {\n e_preventDefault(e);\n restartBlink(cm);\n }\n\n return !!result;\n } // Handle a key from the keydown event.\n\n\n function handleKeyBinding(cm, e) {\n var name = keyName(e, true);\n\n if (!name) {\n return false;\n }\n\n if (e.shiftKey && !cm.state.keySeq) {\n // First try to resolve full name (including 'Shift-'). Failing\n // that, see if there is a cursor-motion command (starting with\n // 'go') bound to the keyname without 'Shift-'.\n return dispatchKey(cm, \"Shift-\" + name, e, function (b) {\n return doHandleBinding(cm, b, true);\n }) || dispatchKey(cm, name, e, function (b) {\n if (typeof b == \"string\" ? /^go[A-Z]/.test(b) : b.motion) {\n return doHandleBinding(cm, b);\n }\n });\n } else {\n return dispatchKey(cm, name, e, function (b) {\n return doHandleBinding(cm, b);\n });\n }\n } // Handle a key from the keypress event\n\n\n function handleCharBinding(cm, e, ch) {\n return dispatchKey(cm, \"'\" + ch + \"'\", e, function (b) {\n return doHandleBinding(cm, b, true);\n });\n }\n\n var lastStoppedKey = null;\n\n function onKeyDown(e) {\n var cm = this;\n\n if (e.target && e.target != cm.display.input.getField()) {\n return;\n }\n\n cm.curOp.focus = activeElt();\n\n if (signalDOMEvent(cm, e)) {\n return;\n } // IE does strange things with escape.\n\n\n if (ie && ie_version < 11 && e.keyCode == 27) {\n e.returnValue = false;\n }\n\n var code = e.keyCode;\n cm.display.shift = code == 16 || e.shiftKey;\n var handled = handleKeyBinding(cm, e);\n\n if (presto) {\n lastStoppedKey = handled ? code : null; // Opera has no cut event... we try to at least catch the key combo\n\n if (!handled && code == 88 && !hasCopyEvent && (mac ? e.metaKey : e.ctrlKey)) {\n cm.replaceSelection(\"\", null, \"cut\");\n }\n }\n\n if (gecko && !mac && !handled && code == 46 && e.shiftKey && !e.ctrlKey && document.execCommand) {\n document.execCommand(\"cut\");\n } // Turn mouse into crosshair when Alt is held on Mac.\n\n\n if (code == 18 && !/\\bCodeMirror-crosshair\\b/.test(cm.display.lineDiv.className)) {\n showCrossHair(cm);\n }\n }\n\n function showCrossHair(cm) {\n var lineDiv = cm.display.lineDiv;\n addClass(lineDiv, \"CodeMirror-crosshair\");\n\n function up(e) {\n if (e.keyCode == 18 || !e.altKey) {\n rmClass(lineDiv, \"CodeMirror-crosshair\");\n off(document, \"keyup\", up);\n off(document, \"mouseover\", up);\n }\n }\n\n on(document, \"keyup\", up);\n on(document, \"mouseover\", up);\n }\n\n function onKeyUp(e) {\n if (e.keyCode == 16) {\n this.doc.sel.shift = false;\n }\n\n signalDOMEvent(this, e);\n }\n\n function onKeyPress(e) {\n var cm = this;\n\n if (e.target && e.target != cm.display.input.getField()) {\n return;\n }\n\n if (eventInWidget(cm.display, e) || signalDOMEvent(cm, e) || e.ctrlKey && !e.altKey || mac && e.metaKey) {\n return;\n }\n\n var keyCode = e.keyCode,\n charCode = e.charCode;\n\n if (presto && keyCode == lastStoppedKey) {\n lastStoppedKey = null;\n e_preventDefault(e);\n return;\n }\n\n if (presto && (!e.which || e.which < 10) && handleKeyBinding(cm, e)) {\n return;\n }\n\n var ch = String.fromCharCode(charCode == null ? keyCode : charCode); // Some browsers fire keypress events for backspace\n\n if (ch == \"\\x08\") {\n return;\n }\n\n if (handleCharBinding(cm, e, ch)) {\n return;\n }\n\n cm.display.input.onKeyPress(e);\n }\n\n var DOUBLECLICK_DELAY = 400;\n\n var PastClick = function PastClick(time, pos, button) {\n this.time = time;\n this.pos = pos;\n this.button = button;\n };\n\n PastClick.prototype.compare = function (time, pos, button) {\n return this.time + DOUBLECLICK_DELAY > time && cmp(pos, this.pos) == 0 && button == this.button;\n };\n\n var lastClick, lastDoubleClick;\n\n function clickRepeat(pos, button) {\n var now = +new Date();\n\n if (lastDoubleClick && lastDoubleClick.compare(now, pos, button)) {\n lastClick = lastDoubleClick = null;\n return \"triple\";\n } else if (lastClick && lastClick.compare(now, pos, button)) {\n lastDoubleClick = new PastClick(now, pos, button);\n lastClick = null;\n return \"double\";\n } else {\n lastClick = new PastClick(now, pos, button);\n lastDoubleClick = null;\n return \"single\";\n }\n } // A mouse down can be a single click, double click, triple click,\n // start of selection drag, start of text drag, new cursor\n // (ctrl-click), rectangle drag (alt-drag), or xwin\n // middle-click-paste. Or it might be a click on something we should\n // not interfere with, such as a scrollbar or widget.\n\n\n function onMouseDown(e) {\n var cm = this,\n display = cm.display;\n\n if (signalDOMEvent(cm, e) || display.activeTouch && display.input.supportsTouch()) {\n return;\n }\n\n display.input.ensurePolled();\n display.shift = e.shiftKey;\n\n if (eventInWidget(display, e)) {\n if (!webkit) {\n // Briefly turn off draggability, to allow widgets to do\n // normal dragging things.\n display.scroller.draggable = false;\n setTimeout(function () {\n return display.scroller.draggable = true;\n }, 100);\n }\n\n return;\n }\n\n if (clickInGutter(cm, e)) {\n return;\n }\n\n var pos = posFromMouse(cm, e),\n button = e_button(e),\n repeat = pos ? clickRepeat(pos, button) : \"single\";\n window.focus(); // #3261: make sure, that we're not starting a second selection\n\n if (button == 1 && cm.state.selectingText) {\n cm.state.selectingText(e);\n }\n\n if (pos && handleMappedButton(cm, button, pos, repeat, e)) {\n return;\n }\n\n if (button == 1) {\n if (pos) {\n leftButtonDown(cm, pos, repeat, e);\n } else if (e_target(e) == display.scroller) {\n e_preventDefault(e);\n }\n } else if (button == 2) {\n if (pos) {\n extendSelection(cm.doc, pos);\n }\n\n setTimeout(function () {\n return display.input.focus();\n }, 20);\n } else if (button == 3) {\n if (captureRightClick) {\n cm.display.input.onContextMenu(e);\n } else {\n delayBlurEvent(cm);\n }\n }\n }\n\n function handleMappedButton(cm, button, pos, repeat, event) {\n var name = \"Click\";\n\n if (repeat == \"double\") {\n name = \"Double\" + name;\n } else if (repeat == \"triple\") {\n name = \"Triple\" + name;\n }\n\n name = (button == 1 ? \"Left\" : button == 2 ? \"Middle\" : \"Right\") + name;\n return dispatchKey(cm, addModifierNames(name, event), event, function (bound) {\n if (typeof bound == \"string\") {\n bound = commands[bound];\n }\n\n if (!bound) {\n return false;\n }\n\n var done = false;\n\n try {\n if (cm.isReadOnly()) {\n cm.state.suppressEdits = true;\n }\n\n done = bound(cm, pos) != Pass;\n } finally {\n cm.state.suppressEdits = false;\n }\n\n return done;\n });\n }\n\n function configureMouse(cm, repeat, event) {\n var option = cm.getOption(\"configureMouse\");\n var value = option ? option(cm, repeat, event) : {};\n\n if (value.unit == null) {\n var rect = chromeOS ? event.shiftKey && event.metaKey : event.altKey;\n value.unit = rect ? \"rectangle\" : repeat == \"single\" ? \"char\" : repeat == \"double\" ? \"word\" : \"line\";\n }\n\n if (value.extend == null || cm.doc.extend) {\n value.extend = cm.doc.extend || event.shiftKey;\n }\n\n if (value.addNew == null) {\n value.addNew = mac ? event.metaKey : event.ctrlKey;\n }\n\n if (value.moveOnDrag == null) {\n value.moveOnDrag = !(mac ? event.altKey : event.ctrlKey);\n }\n\n return value;\n }\n\n function leftButtonDown(cm, pos, repeat, event) {\n if (ie) {\n setTimeout(bind(ensureFocus, cm), 0);\n } else {\n cm.curOp.focus = activeElt();\n }\n\n var behavior = configureMouse(cm, repeat, event);\n var sel = cm.doc.sel,\n contained;\n\n if (cm.options.dragDrop && dragAndDrop && !cm.isReadOnly() && repeat == \"single\" && (contained = sel.contains(pos)) > -1 && (cmp((contained = sel.ranges[contained]).from(), pos) < 0 || pos.xRel > 0) && (cmp(contained.to(), pos) > 0 || pos.xRel < 0)) {\n leftButtonStartDrag(cm, event, pos, behavior);\n } else {\n leftButtonSelect(cm, event, pos, behavior);\n }\n } // Start a text drag. When it ends, see if any dragging actually\n // happen, and treat as a click if it didn't.\n\n\n function leftButtonStartDrag(cm, event, pos, behavior) {\n var display = cm.display,\n moved = false;\n var dragEnd = operation(cm, function (e) {\n if (webkit) {\n display.scroller.draggable = false;\n }\n\n cm.state.draggingText = false;\n\n if (cm.state.delayingBlurEvent) {\n if (cm.hasFocus()) {\n cm.state.delayingBlurEvent = false;\n } else {\n delayBlurEvent(cm);\n }\n }\n\n off(display.wrapper.ownerDocument, \"mouseup\", dragEnd);\n off(display.wrapper.ownerDocument, \"mousemove\", mouseMove);\n off(display.scroller, \"dragstart\", dragStart);\n off(display.scroller, \"drop\", dragEnd);\n\n if (!moved) {\n e_preventDefault(e);\n\n if (!behavior.addNew) {\n extendSelection(cm.doc, pos, null, null, behavior.extend);\n } // Work around unexplainable focus problem in IE9 (#2127) and Chrome (#3081)\n\n\n if (webkit && !safari || ie && ie_version == 9) {\n setTimeout(function () {\n display.wrapper.ownerDocument.body.focus({\n preventScroll: true\n });\n display.input.focus();\n }, 20);\n } else {\n display.input.focus();\n }\n }\n });\n\n var mouseMove = function mouseMove(e2) {\n moved = moved || Math.abs(event.clientX - e2.clientX) + Math.abs(event.clientY - e2.clientY) >= 10;\n };\n\n var dragStart = function dragStart() {\n return moved = true;\n }; // Let the drag handler handle this.\n\n\n if (webkit) {\n display.scroller.draggable = true;\n }\n\n cm.state.draggingText = dragEnd;\n dragEnd.copy = !behavior.moveOnDrag;\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 cm.state.delayingBlurEvent = true;\n setTimeout(function () {\n return display.input.focus();\n }, 20); // IE's approach to draggable\n\n if (display.scroller.dragDrop) {\n display.scroller.dragDrop();\n }\n }\n\n function rangeForUnit(cm, pos, unit) {\n if (unit == \"char\") {\n return new Range(pos, pos);\n }\n\n if (unit == \"word\") {\n return cm.findWordAt(pos);\n }\n\n if (unit == \"line\") {\n return new Range(Pos(pos.line, 0), _clipPos(cm.doc, Pos(pos.line + 1, 0)));\n }\n\n var result = unit(cm, pos);\n return new Range(result.from, result.to);\n } // Normal selection, as opposed to text dragging.\n\n\n function leftButtonSelect(cm, event, start, behavior) {\n if (ie) {\n delayBlurEvent(cm);\n }\n\n var display = cm.display,\n doc = cm.doc;\n e_preventDefault(event);\n var ourRange,\n ourIndex,\n startSel = doc.sel,\n ranges = startSel.ranges;\n\n if (behavior.addNew && !behavior.extend) {\n ourIndex = doc.sel.contains(start);\n\n if (ourIndex > -1) {\n ourRange = ranges[ourIndex];\n } else {\n ourRange = new Range(start, start);\n }\n } else {\n ourRange = doc.sel.primary();\n ourIndex = doc.sel.primIndex;\n }\n\n if (behavior.unit == \"rectangle\") {\n if (!behavior.addNew) {\n ourRange = new Range(start, start);\n }\n\n start = posFromMouse(cm, event, true, true);\n ourIndex = -1;\n } else {\n var range = rangeForUnit(cm, start, behavior.unit);\n\n if (behavior.extend) {\n ourRange = extendRange(ourRange, range.anchor, range.head, behavior.extend);\n } else {\n ourRange = range;\n }\n }\n\n if (!behavior.addNew) {\n ourIndex = 0;\n setSelection(doc, new Selection([ourRange], 0), sel_mouse);\n startSel = doc.sel;\n } else if (ourIndex == -1) {\n ourIndex = ranges.length;\n setSelection(doc, normalizeSelection(cm, ranges.concat([ourRange]), ourIndex), {\n scroll: false,\n origin: \"*mouse\"\n });\n } else if (ranges.length > 1 && ranges[ourIndex].empty() && behavior.unit == \"char\" && !behavior.extend) {\n setSelection(doc, normalizeSelection(cm, ranges.slice(0, ourIndex).concat(ranges.slice(ourIndex + 1)), 0), {\n scroll: false,\n origin: \"*mouse\"\n });\n startSel = doc.sel;\n } else {\n replaceOneSelection(doc, ourIndex, ourRange, sel_mouse);\n }\n\n var lastPos = start;\n\n function extendTo(pos) {\n if (cmp(lastPos, pos) == 0) {\n return;\n }\n\n lastPos = pos;\n\n if (behavior.unit == \"rectangle\") {\n var ranges = [],\n tabSize = cm.options.tabSize;\n var startCol = countColumn(getLine(doc, start.line).text, start.ch, tabSize);\n var posCol = countColumn(getLine(doc, pos.line).text, pos.ch, tabSize);\n var left = Math.min(startCol, posCol),\n right = Math.max(startCol, posCol);\n\n for (var line = Math.min(start.line, pos.line), end = Math.min(cm.lastLine(), Math.max(start.line, pos.line)); line <= end; line++) {\n var text = getLine(doc, line).text,\n leftPos = findColumn(text, left, tabSize);\n\n if (left == right) {\n ranges.push(new Range(Pos(line, leftPos), Pos(line, leftPos)));\n } else if (text.length > leftPos) {\n ranges.push(new Range(Pos(line, leftPos), Pos(line, findColumn(text, right, tabSize))));\n }\n }\n\n if (!ranges.length) {\n ranges.push(new Range(start, start));\n }\n\n setSelection(doc, normalizeSelection(cm, startSel.ranges.slice(0, ourIndex).concat(ranges), ourIndex), {\n origin: \"*mouse\",\n scroll: false\n });\n cm.scrollIntoView(pos);\n } else {\n var oldRange = ourRange;\n var range = rangeForUnit(cm, pos, behavior.unit);\n var anchor = oldRange.anchor,\n head;\n\n if (cmp(range.anchor, anchor) > 0) {\n head = range.head;\n anchor = minPos(oldRange.from(), range.anchor);\n } else {\n head = range.anchor;\n anchor = maxPos(oldRange.to(), range.head);\n }\n\n var ranges$1 = startSel.ranges.slice(0);\n ranges$1[ourIndex] = bidiSimplify(cm, new Range(_clipPos(doc, anchor), head));\n setSelection(doc, normalizeSelection(cm, ranges$1, ourIndex), sel_mouse);\n }\n }\n\n var editorSize = display.wrapper.getBoundingClientRect(); // Used to ensure timeout re-tries don't fire when another extend\n // happened in the meantime (clearTimeout isn't reliable -- at\n // least on Chrome, the timeouts still happen even when cleared,\n // if the clear happens after their scheduled firing time).\n\n var counter = 0;\n\n function extend(e) {\n var curCount = ++counter;\n var cur = posFromMouse(cm, e, true, behavior.unit == \"rectangle\");\n\n if (!cur) {\n return;\n }\n\n if (cmp(cur, lastPos) != 0) {\n cm.curOp.focus = activeElt();\n extendTo(cur);\n var visible = visibleLines(display, doc);\n\n if (cur.line >= visible.to || cur.line < visible.from) {\n setTimeout(operation(cm, function () {\n if (counter == curCount) {\n extend(e);\n }\n }), 150);\n }\n } else {\n var outside = e.clientY < editorSize.top ? -20 : e.clientY > editorSize.bottom ? 20 : 0;\n\n if (outside) {\n setTimeout(operation(cm, function () {\n if (counter != curCount) {\n return;\n }\n\n display.scroller.scrollTop += outside;\n extend(e);\n }), 50);\n }\n }\n }\n\n function done(e) {\n cm.state.selectingText = false;\n counter = Infinity; // If e is null or undefined we interpret this as someone trying\n // to explicitly cancel the selection rather than the user\n // letting go of the mouse button.\n\n if (e) {\n e_preventDefault(e);\n display.input.focus();\n }\n\n off(display.wrapper.ownerDocument, \"mousemove\", move);\n off(display.wrapper.ownerDocument, \"mouseup\", up);\n doc.history.lastSelOrigin = null;\n }\n\n var move = operation(cm, function (e) {\n if (e.buttons === 0 || !e_button(e)) {\n done(e);\n } else {\n extend(e);\n }\n });\n var up = operation(cm, done);\n cm.state.selectingText = up;\n on(display.wrapper.ownerDocument, \"mousemove\", move);\n on(display.wrapper.ownerDocument, \"mouseup\", up);\n } // Used when mouse-selecting to adjust the anchor to the proper side\n // of a bidi jump depending on the visual position of the head.\n\n\n function bidiSimplify(cm, range) {\n var anchor = range.anchor;\n var head = range.head;\n var anchorLine = getLine(cm.doc, anchor.line);\n\n if (cmp(anchor, head) == 0 && anchor.sticky == head.sticky) {\n return range;\n }\n\n var order = getOrder(anchorLine);\n\n if (!order) {\n return range;\n }\n\n var index = getBidiPartAt(order, anchor.ch, anchor.sticky),\n part = order[index];\n\n if (part.from != anchor.ch && part.to != anchor.ch) {\n return range;\n }\n\n var boundary = index + (part.from == anchor.ch == (part.level != 1) ? 0 : 1);\n\n if (boundary == 0 || boundary == order.length) {\n return range;\n } // Compute the relative visual position of the head compared to the\n // anchor (<0 is to the left, >0 to the right)\n\n\n var leftSide;\n\n if (head.line != anchor.line) {\n leftSide = (head.line - anchor.line) * (cm.doc.direction == \"ltr\" ? 1 : -1) > 0;\n } else {\n var headIndex = getBidiPartAt(order, head.ch, head.sticky);\n var dir = headIndex - index || (head.ch - anchor.ch) * (part.level == 1 ? -1 : 1);\n\n if (headIndex == boundary - 1 || headIndex == boundary) {\n leftSide = dir < 0;\n } else {\n leftSide = dir > 0;\n }\n }\n\n var usePart = order[boundary + (leftSide ? -1 : 0)];\n var from = leftSide == (usePart.level == 1);\n var ch = from ? usePart.from : usePart.to,\n sticky = from ? \"after\" : \"before\";\n return anchor.ch == ch && anchor.sticky == sticky ? range : new Range(new Pos(anchor.line, ch, sticky), head);\n } // Determines whether an event happened in the gutter, and fires the\n // handlers for the corresponding event.\n\n\n function gutterEvent(cm, e, type, prevent) {\n var mX, mY;\n\n if (e.touches) {\n mX = e.touches[0].clientX;\n mY = e.touches[0].clientY;\n } else {\n try {\n mX = e.clientX;\n mY = e.clientY;\n } catch (e$1) {\n return false;\n }\n }\n\n if (mX >= Math.floor(cm.display.gutters.getBoundingClientRect().right)) {\n return false;\n }\n\n if (prevent) {\n e_preventDefault(e);\n }\n\n var display = cm.display;\n var lineBox = display.lineDiv.getBoundingClientRect();\n\n if (mY > lineBox.bottom || !hasHandler(cm, type)) {\n return e_defaultPrevented(e);\n }\n\n mY -= lineBox.top - display.viewOffset;\n\n for (var i = 0; i < cm.display.gutterSpecs.length; ++i) {\n var g = display.gutters.childNodes[i];\n\n if (g && g.getBoundingClientRect().right >= mX) {\n var line = _lineAtHeight(cm.doc, mY);\n\n var gutter = cm.display.gutterSpecs[i];\n signal(cm, type, cm, line, gutter.className, e);\n return e_defaultPrevented(e);\n }\n }\n }\n\n function clickInGutter(cm, e) {\n return gutterEvent(cm, e, \"gutterClick\", true);\n } // CONTEXT MENU HANDLING\n // To make the context menu work, we need to briefly unhide the\n // textarea (making it as unobtrusive as possible) to let the\n // right-click take effect on it.\n\n\n function onContextMenu(cm, e) {\n if (eventInWidget(cm.display, e) || contextMenuInGutter(cm, e)) {\n return;\n }\n\n if (signalDOMEvent(cm, e, \"contextmenu\")) {\n return;\n }\n\n if (!captureRightClick) {\n cm.display.input.onContextMenu(e);\n }\n }\n\n function contextMenuInGutter(cm, e) {\n if (!hasHandler(cm, \"gutterContextMenu\")) {\n return false;\n }\n\n return gutterEvent(cm, e, \"gutterContextMenu\", false);\n }\n\n function themeChanged(cm) {\n cm.display.wrapper.className = cm.display.wrapper.className.replace(/\\s*cm-s-\\S+/g, \"\") + cm.options.theme.replace(/(^|\\s)\\s*/g, \" cm-s-\");\n clearCaches(cm);\n }\n\n var Init = {\n toString: function toString() {\n return \"CodeMirror.Init\";\n }\n };\n var defaults = {};\n var optionHandlers = {};\n\n function defineOptions(CodeMirror) {\n var optionHandlers = CodeMirror.optionHandlers;\n\n function option(name, deflt, handle, notOnInit) {\n CodeMirror.defaults[name] = deflt;\n\n if (handle) {\n optionHandlers[name] = notOnInit ? function (cm, val, old) {\n if (old != Init) {\n handle(cm, val, old);\n }\n } : handle;\n }\n }\n\n CodeMirror.defineOption = option; // Passed to option handlers when there is no old value.\n\n CodeMirror.Init = Init; // These two are, on init, called from the constructor because they\n // have to be initialized before the editor can start at all.\n\n option(\"value\", \"\", function (cm, val) {\n return cm.setValue(val);\n }, true);\n option(\"mode\", null, function (cm, val) {\n cm.doc.modeOption = val;\n loadMode(cm);\n }, true);\n option(\"indentUnit\", 2, loadMode, true);\n option(\"indentWithTabs\", false);\n option(\"smartIndent\", true);\n option(\"tabSize\", 4, function (cm) {\n resetModeState(cm);\n clearCaches(cm);\n regChange(cm);\n }, true);\n option(\"lineSeparator\", null, function (cm, val) {\n cm.doc.lineSep = val;\n\n if (!val) {\n return;\n }\n\n var newBreaks = [],\n lineNo = cm.doc.first;\n cm.doc.iter(function (line) {\n for (var pos = 0;;) {\n var found = line.text.indexOf(val, pos);\n\n if (found == -1) {\n break;\n }\n\n pos = found + val.length;\n newBreaks.push(Pos(lineNo, found));\n }\n\n lineNo++;\n });\n\n for (var i = newBreaks.length - 1; i >= 0; i--) {\n _replaceRange(cm.doc, val, newBreaks[i], Pos(newBreaks[i].line, newBreaks[i].ch + val.length));\n }\n });\n option(\"specialChars\", /[\\u0000-\\u001f\\u007f-\\u009f\\u00ad\\u061c\\u200b\\u200e\\u200f\\u2028\\u2029\\ufeff\\ufff9-\\ufffc]/g, function (cm, val, old) {\n cm.state.specialChars = new RegExp(val.source + (val.test(\"\\t\") ? \"\" : \"|\\t\"), \"g\");\n\n if (old != Init) {\n cm.refresh();\n }\n });\n option(\"specialCharPlaceholder\", defaultSpecialCharPlaceholder, function (cm) {\n return cm.refresh();\n }, true);\n option(\"electricChars\", true);\n option(\"inputStyle\", mobile ? \"contenteditable\" : \"textarea\", function () {\n throw new Error(\"inputStyle can not (yet) be changed in a running editor\"); // FIXME\n }, true);\n option(\"spellcheck\", false, function (cm, val) {\n return cm.getInputField().spellcheck = val;\n }, true);\n option(\"autocorrect\", false, function (cm, val) {\n return cm.getInputField().autocorrect = val;\n }, true);\n option(\"autocapitalize\", false, function (cm, val) {\n return cm.getInputField().autocapitalize = val;\n }, true);\n option(\"rtlMoveVisually\", !windows);\n option(\"wholeLineUpdateBefore\", true);\n option(\"theme\", \"default\", function (cm) {\n themeChanged(cm);\n updateGutters(cm);\n }, true);\n option(\"keyMap\", \"default\", function (cm, val, old) {\n var next = getKeyMap(val);\n var prev = old != Init && getKeyMap(old);\n\n if (prev && prev.detach) {\n prev.detach(cm, next);\n }\n\n if (next.attach) {\n next.attach(cm, prev || null);\n }\n });\n option(\"extraKeys\", null);\n option(\"configureMouse\", null);\n option(\"lineWrapping\", false, wrappingChanged, true);\n option(\"gutters\", [], function (cm, val) {\n cm.display.gutterSpecs = getGutters(val, cm.options.lineNumbers);\n updateGutters(cm);\n }, true);\n option(\"fixedGutter\", true, function (cm, val) {\n cm.display.gutters.style.left = val ? compensateForHScroll(cm.display) + \"px\" : \"0\";\n cm.refresh();\n }, true);\n option(\"coverGutterNextToScrollbar\", false, function (cm) {\n return updateScrollbars(cm);\n }, true);\n option(\"scrollbarStyle\", \"native\", function (cm) {\n initScrollbars(cm);\n updateScrollbars(cm);\n cm.display.scrollbars.setScrollTop(cm.doc.scrollTop);\n cm.display.scrollbars.setScrollLeft(cm.doc.scrollLeft);\n }, true);\n option(\"lineNumbers\", false, function (cm, val) {\n cm.display.gutterSpecs = getGutters(cm.options.gutters, val);\n updateGutters(cm);\n }, true);\n option(\"firstLineNumber\", 1, updateGutters, true);\n option(\"lineNumberFormatter\", function (integer) {\n return integer;\n }, updateGutters, true);\n option(\"showCursorWhenSelecting\", false, updateSelection, true);\n option(\"resetSelectionOnContextMenu\", true);\n option(\"lineWiseCopyCut\", true);\n option(\"pasteLinesPerSelection\", true);\n option(\"selectionsMayTouch\", false);\n option(\"readOnly\", false, function (cm, val) {\n if (val == \"nocursor\") {\n onBlur(cm);\n cm.display.input.blur();\n }\n\n cm.display.input.readOnlyChanged(val);\n });\n option(\"screenReaderLabel\", null, function (cm, val) {\n val = val === '' ? null : val;\n cm.display.input.screenReaderLabelChanged(val);\n });\n option(\"disableInput\", false, function (cm, val) {\n if (!val) {\n cm.display.input.reset();\n }\n }, true);\n option(\"dragDrop\", true, dragDropChanged);\n option(\"allowDropFileTypes\", null);\n option(\"cursorBlinkRate\", 530);\n option(\"cursorScrollMargin\", 0);\n option(\"cursorHeight\", 1, updateSelection, true);\n option(\"singleCursorHeightPerLine\", true, updateSelection, true);\n option(\"workTime\", 100);\n option(\"workDelay\", 100);\n option(\"flattenSpans\", true, resetModeState, true);\n option(\"addModeClass\", false, resetModeState, true);\n option(\"pollInterval\", 100);\n option(\"undoDepth\", 200, function (cm, val) {\n return cm.doc.history.undoDepth = val;\n });\n option(\"historyEventDelay\", 1250);\n option(\"viewportMargin\", 10, function (cm) {\n return cm.refresh();\n }, true);\n option(\"maxHighlightLength\", 10000, resetModeState, true);\n option(\"moveInputWithCursor\", true, function (cm, val) {\n if (!val) {\n cm.display.input.resetPosition();\n }\n });\n option(\"tabindex\", null, function (cm, val) {\n return cm.display.input.getField().tabIndex = val || \"\";\n });\n option(\"autofocus\", null);\n option(\"direction\", \"ltr\", function (cm, val) {\n return cm.doc.setDirection(val);\n }, true);\n option(\"phrases\", null);\n }\n\n function dragDropChanged(cm, value, old) {\n var wasOn = old && old != Init;\n\n if (!value != !wasOn) {\n var funcs = cm.display.dragFunctions;\n var toggle = value ? on : off;\n toggle(cm.display.scroller, \"dragstart\", funcs.start);\n toggle(cm.display.scroller, \"dragenter\", funcs.enter);\n toggle(cm.display.scroller, \"dragover\", funcs.over);\n toggle(cm.display.scroller, \"dragleave\", funcs.leave);\n toggle(cm.display.scroller, \"drop\", funcs.drop);\n }\n }\n\n function wrappingChanged(cm) {\n if (cm.options.lineWrapping) {\n addClass(cm.display.wrapper, \"CodeMirror-wrap\");\n cm.display.sizer.style.minWidth = \"\";\n cm.display.sizerWidth = null;\n } else {\n rmClass(cm.display.wrapper, \"CodeMirror-wrap\");\n findMaxLine(cm);\n }\n\n estimateLineHeights(cm);\n regChange(cm);\n clearCaches(cm);\n setTimeout(function () {\n return updateScrollbars(cm);\n }, 100);\n } // A CodeMirror instance represents an editor. This is the object\n // that user code is usually dealing with.\n\n\n function CodeMirror(place, options) {\n var this$1 = this;\n\n if (!(this instanceof CodeMirror)) {\n return new CodeMirror(place, options);\n }\n\n this.options = options = options ? copyObj(options) : {}; // Determine effective options based on given values and defaults.\n\n copyObj(defaults, options, false);\n var doc = options.value;\n\n if (typeof doc == \"string\") {\n doc = new Doc(doc, options.mode, null, options.lineSeparator, options.direction);\n } else if (options.mode) {\n doc.modeOption = options.mode;\n }\n\n this.doc = doc;\n var input = new CodeMirror.inputStyles[options.inputStyle](this);\n var display = this.display = new Display(place, doc, input, options);\n display.wrapper.CodeMirror = this;\n themeChanged(this);\n\n if (options.lineWrapping) {\n this.display.wrapper.className += \" CodeMirror-wrap\";\n }\n\n initScrollbars(this);\n this.state = {\n keyMaps: [],\n // stores maps added by addKeyMap\n overlays: [],\n // highlighting overlays, as added by addOverlay\n modeGen: 0,\n // bumped when mode/overlay changes, used to invalidate highlighting info\n overwrite: false,\n delayingBlurEvent: false,\n focused: false,\n suppressEdits: false,\n // used to disable editing during key handlers when in readOnly mode\n pasteIncoming: -1,\n cutIncoming: -1,\n // help recognize paste/cut edits in input.poll\n selectingText: false,\n draggingText: false,\n highlight: new Delayed(),\n // stores highlight worker timeout\n keySeq: null,\n // Unfinished key sequence\n specialChars: null\n };\n\n if (options.autofocus && !mobile) {\n display.input.focus();\n } // Override magic textarea content restore that IE sometimes does\n // on our hidden textarea on reload\n\n\n if (ie && ie_version < 11) {\n setTimeout(function () {\n return this$1.display.input.reset(true);\n }, 20);\n }\n\n registerEventHandlers(this);\n ensureGlobalHandlers();\n\n _startOperation(this);\n\n this.curOp.forceUpdate = true;\n attachDoc(this, doc);\n\n if (options.autofocus && !mobile || this.hasFocus()) {\n setTimeout(function () {\n if (this$1.hasFocus() && !this$1.state.focused) {\n onFocus(this$1);\n }\n }, 20);\n } else {\n onBlur(this);\n }\n\n for (var opt in optionHandlers) {\n if (optionHandlers.hasOwnProperty(opt)) {\n optionHandlers[opt](this, options[opt], Init);\n }\n }\n\n maybeUpdateLineNumberWidth(this);\n\n if (options.finishInit) {\n options.finishInit(this);\n }\n\n for (var i = 0; i < initHooks.length; ++i) {\n initHooks[i](this);\n }\n\n _endOperation(this); // Suppress optimizelegibility in Webkit, since it breaks text\n // measuring on line wrapping boundaries.\n\n\n if (webkit && options.lineWrapping && getComputedStyle(display.lineDiv).textRendering == \"optimizelegibility\") {\n display.lineDiv.style.textRendering = \"auto\";\n }\n } // The default configuration options.\n\n\n CodeMirror.defaults = defaults; // Functions to run when options are changed.\n\n CodeMirror.optionHandlers = optionHandlers; // Attach the necessary event handlers when initializing the editor\n\n function registerEventHandlers(cm) {\n var d = cm.display;\n on(d.scroller, \"mousedown\", operation(cm, onMouseDown)); // Older IE's will not fire a second mousedown for a double click\n\n if (ie && ie_version < 11) {\n on(d.scroller, \"dblclick\", operation(cm, function (e) {\n if (signalDOMEvent(cm, e)) {\n return;\n }\n\n var pos = posFromMouse(cm, e);\n\n if (!pos || clickInGutter(cm, e) || eventInWidget(cm.display, e)) {\n return;\n }\n\n e_preventDefault(e);\n var word = cm.findWordAt(pos);\n extendSelection(cm.doc, word.anchor, word.head);\n }));\n } else {\n on(d.scroller, \"dblclick\", function (e) {\n return signalDOMEvent(cm, e) || e_preventDefault(e);\n });\n } // Some browsers fire contextmenu *after* opening the menu, at\n // which point we can't mess with it anymore. Context menu is\n // handled in onMouseDown for these browsers.\n\n\n on(d.scroller, \"contextmenu\", function (e) {\n return onContextMenu(cm, e);\n });\n on(d.input.getField(), \"contextmenu\", function (e) {\n if (!d.scroller.contains(e.target)) {\n onContextMenu(cm, e);\n }\n }); // Used to suppress mouse event handling when a touch happens\n\n var touchFinished,\n prevTouch = {\n end: 0\n };\n\n function finishTouch() {\n if (d.activeTouch) {\n touchFinished = setTimeout(function () {\n return d.activeTouch = null;\n }, 1000);\n prevTouch = d.activeTouch;\n prevTouch.end = +new Date();\n }\n }\n\n function isMouseLikeTouchEvent(e) {\n if (e.touches.length != 1) {\n return false;\n }\n\n var touch = e.touches[0];\n return touch.radiusX <= 1 && touch.radiusY <= 1;\n }\n\n function farAway(touch, other) {\n if (other.left == null) {\n return true;\n }\n\n var dx = other.left - touch.left,\n dy = other.top - touch.top;\n return dx * dx + dy * dy > 20 * 20;\n }\n\n on(d.scroller, \"touchstart\", function (e) {\n if (!signalDOMEvent(cm, e) && !isMouseLikeTouchEvent(e) && !clickInGutter(cm, e)) {\n d.input.ensurePolled();\n clearTimeout(touchFinished);\n var now = +new Date();\n d.activeTouch = {\n start: now,\n moved: false,\n prev: now - prevTouch.end <= 300 ? prevTouch : null\n };\n\n if (e.touches.length == 1) {\n d.activeTouch.left = e.touches[0].pageX;\n d.activeTouch.top = e.touches[0].pageY;\n }\n }\n });\n on(d.scroller, \"touchmove\", function () {\n if (d.activeTouch) {\n d.activeTouch.moved = true;\n }\n });\n on(d.scroller, \"touchend\", function (e) {\n var touch = d.activeTouch;\n\n if (touch && !eventInWidget(d, e) && touch.left != null && !touch.moved && new Date() - touch.start < 300) {\n var pos = cm.coordsChar(d.activeTouch, \"page\"),\n range;\n\n if (!touch.prev || farAway(touch, touch.prev)) // Single tap\n {\n range = new Range(pos, pos);\n } else if (!touch.prev.prev || farAway(touch, touch.prev.prev)) // Double tap\n {\n range = cm.findWordAt(pos);\n } else // Triple tap\n {\n range = new Range(Pos(pos.line, 0), _clipPos(cm.doc, Pos(pos.line + 1, 0)));\n }\n\n cm.setSelection(range.anchor, range.head);\n cm.focus();\n e_preventDefault(e);\n }\n\n finishTouch();\n });\n on(d.scroller, \"touchcancel\", finishTouch); // Sync scrolling between fake scrollbars and real scrollable\n // area, ensure viewport is updated when scrolling.\n\n on(d.scroller, \"scroll\", function () {\n if (d.scroller.clientHeight) {\n updateScrollTop(cm, d.scroller.scrollTop);\n setScrollLeft(cm, d.scroller.scrollLeft, true);\n signal(cm, \"scroll\", cm);\n }\n }); // Listen to wheel events in order to try and update the viewport on time.\n\n on(d.scroller, \"mousewheel\", function (e) {\n return onScrollWheel(cm, e);\n });\n on(d.scroller, \"DOMMouseScroll\", function (e) {\n return onScrollWheel(cm, e);\n }); // Prevent wrapper from ever scrolling\n\n on(d.wrapper, \"scroll\", function () {\n return d.wrapper.scrollTop = d.wrapper.scrollLeft = 0;\n });\n d.dragFunctions = {\n enter: function enter(e) {\n if (!signalDOMEvent(cm, e)) {\n e_stop(e);\n }\n },\n over: function over(e) {\n if (!signalDOMEvent(cm, e)) {\n onDragOver(cm, e);\n e_stop(e);\n }\n },\n start: function start(e) {\n return onDragStart(cm, e);\n },\n drop: operation(cm, onDrop),\n leave: function leave(e) {\n if (!signalDOMEvent(cm, e)) {\n clearDragCursor(cm);\n }\n }\n };\n var inp = d.input.getField();\n on(inp, \"keyup\", function (e) {\n return onKeyUp.call(cm, e);\n });\n on(inp, \"keydown\", operation(cm, onKeyDown));\n on(inp, \"keypress\", operation(cm, onKeyPress));\n on(inp, \"focus\", function (e) {\n return onFocus(cm, e);\n });\n on(inp, \"blur\", function (e) {\n return onBlur(cm, e);\n });\n }\n\n var initHooks = [];\n\n CodeMirror.defineInitHook = function (f) {\n return initHooks.push(f);\n }; // Indent the given line. The how parameter can be \"smart\",\n // \"add\"/null, \"subtract\", or \"prev\". When aggressive is false\n // (typically set to true for forced single-line indents), empty\n // lines are not indented, and places where the mode returns Pass\n // are left alone.\n\n\n function indentLine(cm, n, how, aggressive) {\n var doc = cm.doc,\n state;\n\n if (how == null) {\n how = \"add\";\n }\n\n if (how == \"smart\") {\n // Fall back to \"prev\" when the mode doesn't have an indentation\n // method.\n if (!doc.mode.indent) {\n how = \"prev\";\n } else {\n state = getContextBefore(cm, n).state;\n }\n }\n\n var tabSize = cm.options.tabSize;\n var line = getLine(doc, n),\n curSpace = countColumn(line.text, null, tabSize);\n\n if (line.stateAfter) {\n line.stateAfter = null;\n }\n\n var curSpaceString = line.text.match(/^\\s*/)[0],\n indentation;\n\n if (!aggressive && !/\\S/.test(line.text)) {\n indentation = 0;\n how = \"not\";\n } else if (how == \"smart\") {\n indentation = doc.mode.indent(state, line.text.slice(curSpaceString.length), line.text);\n\n if (indentation == Pass || indentation > 150) {\n if (!aggressive) {\n return;\n }\n\n how = \"prev\";\n }\n }\n\n if (how == \"prev\") {\n if (n > doc.first) {\n indentation = countColumn(getLine(doc, n - 1).text, null, tabSize);\n } else {\n indentation = 0;\n }\n } else if (how == \"add\") {\n indentation = curSpace + cm.options.indentUnit;\n } else if (how == \"subtract\") {\n indentation = curSpace - cm.options.indentUnit;\n } else if (typeof how == \"number\") {\n indentation = curSpace + how;\n }\n\n indentation = Math.max(0, indentation);\n var indentString = \"\",\n pos = 0;\n\n if (cm.options.indentWithTabs) {\n for (var i = Math.floor(indentation / tabSize); i; --i) {\n pos += tabSize;\n indentString += \"\\t\";\n }\n }\n\n if (pos < indentation) {\n indentString += spaceStr(indentation - pos);\n }\n\n if (indentString != curSpaceString) {\n _replaceRange(doc, indentString, Pos(n, 0), Pos(n, curSpaceString.length), \"+input\");\n\n line.stateAfter = null;\n return true;\n } else {\n // Ensure that, if the cursor was in the whitespace at the start\n // of the line, it is moved to the end of that space.\n for (var i$1 = 0; i$1 < doc.sel.ranges.length; i$1++) {\n var range = doc.sel.ranges[i$1];\n\n if (range.head.line == n && range.head.ch < curSpaceString.length) {\n var pos$1 = Pos(n, curSpaceString.length);\n replaceOneSelection(doc, i$1, new Range(pos$1, pos$1));\n break;\n }\n }\n }\n } // This will be set to a {lineWise: bool, text: [string]} object, so\n // that, when pasting, we know what kind of selections the copied\n // text was made out of.\n\n\n var lastCopied = null;\n\n function setLastCopied(newLastCopied) {\n lastCopied = newLastCopied;\n }\n\n function applyTextInput(cm, inserted, deleted, sel, origin) {\n var doc = cm.doc;\n cm.display.shift = false;\n\n if (!sel) {\n sel = doc.sel;\n }\n\n var recent = +new Date() - 200;\n var paste = origin == \"paste\" || cm.state.pasteIncoming > recent;\n var textLines = splitLinesAuto(inserted),\n multiPaste = null; // When pasting N lines into N selections, insert one line per selection\n\n if (paste && sel.ranges.length > 1) {\n if (lastCopied && lastCopied.text.join(\"\\n\") == inserted) {\n if (sel.ranges.length % lastCopied.text.length == 0) {\n multiPaste = [];\n\n for (var i = 0; i < lastCopied.text.length; i++) {\n multiPaste.push(doc.splitLines(lastCopied.text[i]));\n }\n }\n } else if (textLines.length == sel.ranges.length && cm.options.pasteLinesPerSelection) {\n multiPaste = map(textLines, function (l) {\n return [l];\n });\n }\n }\n\n var updateInput = cm.curOp.updateInput; // Normal behavior is to insert the new text into every selection\n\n for (var i$1 = sel.ranges.length - 1; i$1 >= 0; i$1--) {\n var range = sel.ranges[i$1];\n var from = range.from(),\n to = range.to();\n\n if (range.empty()) {\n if (deleted && deleted > 0) // Handle deletion\n {\n from = Pos(from.line, from.ch - deleted);\n } else if (cm.state.overwrite && !paste) // Handle overwrite\n {\n to = Pos(to.line, Math.min(getLine(doc, to.line).text.length, to.ch + lst(textLines).length));\n } else if (paste && lastCopied && lastCopied.lineWise && lastCopied.text.join(\"\\n\") == textLines.join(\"\\n\")) {\n from = to = Pos(from.line, 0);\n }\n }\n\n var changeEvent = {\n from: from,\n to: to,\n text: multiPaste ? multiPaste[i$1 % multiPaste.length] : textLines,\n origin: origin || (paste ? \"paste\" : cm.state.cutIncoming > recent ? \"cut\" : \"+input\")\n };\n makeChange(cm.doc, changeEvent);\n signalLater(cm, \"inputRead\", cm, changeEvent);\n }\n\n if (inserted && !paste) {\n triggerElectric(cm, inserted);\n }\n\n ensureCursorVisible(cm);\n\n if (cm.curOp.updateInput < 2) {\n cm.curOp.updateInput = updateInput;\n }\n\n cm.curOp.typing = true;\n cm.state.pasteIncoming = cm.state.cutIncoming = -1;\n }\n\n function handlePaste(e, cm) {\n var pasted = e.clipboardData && e.clipboardData.getData(\"Text\");\n\n if (pasted) {\n e.preventDefault();\n\n if (!cm.isReadOnly() && !cm.options.disableInput) {\n runInOp(cm, function () {\n return applyTextInput(cm, pasted, 0, null, \"paste\");\n });\n }\n\n return true;\n }\n }\n\n function triggerElectric(cm, inserted) {\n // When an 'electric' character is inserted, immediately trigger a reindent\n if (!cm.options.electricChars || !cm.options.smartIndent) {\n return;\n }\n\n var sel = cm.doc.sel;\n\n for (var i = sel.ranges.length - 1; i >= 0; i--) {\n var range = sel.ranges[i];\n\n if (range.head.ch > 100 || i && sel.ranges[i - 1].head.line == range.head.line) {\n continue;\n }\n\n var mode = cm.getModeAt(range.head);\n var indented = false;\n\n if (mode.electricChars) {\n for (var j = 0; j < mode.electricChars.length; j++) {\n if (inserted.indexOf(mode.electricChars.charAt(j)) > -1) {\n indented = indentLine(cm, range.head.line, \"smart\");\n break;\n }\n }\n } else if (mode.electricInput) {\n if (mode.electricInput.test(getLine(cm.doc, range.head.line).text.slice(0, range.head.ch))) {\n indented = indentLine(cm, range.head.line, \"smart\");\n }\n }\n\n if (indented) {\n signalLater(cm, \"electricInput\", cm, range.head.line);\n }\n }\n }\n\n function copyableRanges(cm) {\n var text = [],\n ranges = [];\n\n for (var i = 0; i < cm.doc.sel.ranges.length; i++) {\n var line = cm.doc.sel.ranges[i].head.line;\n var lineRange = {\n anchor: Pos(line, 0),\n head: Pos(line + 1, 0)\n };\n ranges.push(lineRange);\n text.push(cm.getRange(lineRange.anchor, lineRange.head));\n }\n\n return {\n text: text,\n ranges: ranges\n };\n }\n\n function disableBrowserMagic(field, spellcheck, autocorrect, autocapitalize) {\n field.setAttribute(\"autocorrect\", autocorrect ? \"\" : \"off\");\n field.setAttribute(\"autocapitalize\", autocapitalize ? \"\" : \"off\");\n field.setAttribute(\"spellcheck\", !!spellcheck);\n }\n\n function hiddenTextarea() {\n var te = elt(\"textarea\", null, null, \"position: absolute; bottom: -1em; padding: 0; width: 1px; height: 1em; min-height: 1em; outline: none\");\n var div = elt(\"div\", [te], null, \"overflow: hidden; position: relative; width: 3px; height: 0px;\"); // The textarea is kept positioned near the cursor to prevent the\n // fact that it'll be scrolled into view on input from scrolling\n // our fake cursor out of view. On webkit, when wrap=off, paste is\n // very slow. So make the area wide instead.\n\n if (webkit) {\n te.style.width = \"1000px\";\n } else {\n te.setAttribute(\"wrap\", \"off\");\n } // If border: 0; -- iOS fails to open keyboard (issue #1287)\n\n\n if (ios) {\n te.style.border = \"1px solid black\";\n }\n\n disableBrowserMagic(te);\n return div;\n } // The publicly visible API. Note that methodOp(f) means\n // 'wrap f in an operation, performed on its `this` parameter'.\n // This is not the complete set of editor methods. Most of the\n // methods defined on the Doc type are also injected into\n // CodeMirror.prototype, for backwards compatibility and\n // convenience.\n\n\n function addEditorMethods(CodeMirror) {\n var optionHandlers = CodeMirror.optionHandlers;\n var helpers = CodeMirror.helpers = {};\n CodeMirror.prototype = {\n constructor: CodeMirror,\n focus: function focus() {\n window.focus();\n this.display.input.focus();\n },\n setOption: function setOption(option, value) {\n var options = this.options,\n old = options[option];\n\n if (options[option] == value && option != \"mode\") {\n return;\n }\n\n options[option] = value;\n\n if (optionHandlers.hasOwnProperty(option)) {\n operation(this, optionHandlers[option])(this, value, old);\n }\n\n signal(this, \"optionChange\", this, option);\n },\n getOption: function getOption(option) {\n return this.options[option];\n },\n getDoc: function getDoc() {\n return this.doc;\n },\n addKeyMap: function addKeyMap(map, bottom) {\n this.state.keyMaps[bottom ? \"push\" : \"unshift\"](getKeyMap(map));\n },\n removeKeyMap: function removeKeyMap(map) {\n var maps = this.state.keyMaps;\n\n for (var i = 0; i < maps.length; ++i) {\n if (maps[i] == map || maps[i].name == map) {\n maps.splice(i, 1);\n return true;\n }\n }\n },\n addOverlay: methodOp(function (spec, options) {\n var mode = spec.token ? spec : CodeMirror.getMode(this.options, spec);\n\n if (mode.startState) {\n throw new Error(\"Overlays may not be stateful.\");\n }\n\n insertSorted(this.state.overlays, {\n mode: mode,\n modeSpec: spec,\n opaque: options && options.opaque,\n priority: options && options.priority || 0\n }, function (overlay) {\n return overlay.priority;\n });\n this.state.modeGen++;\n regChange(this);\n }),\n removeOverlay: methodOp(function (spec) {\n var overlays = this.state.overlays;\n\n for (var i = 0; i < overlays.length; ++i) {\n var cur = overlays[i].modeSpec;\n\n if (cur == spec || typeof spec == \"string\" && cur.name == spec) {\n overlays.splice(i, 1);\n this.state.modeGen++;\n regChange(this);\n return;\n }\n }\n }),\n indentLine: methodOp(function (n, dir, aggressive) {\n if (typeof dir != \"string\" && typeof dir != \"number\") {\n if (dir == null) {\n dir = this.options.smartIndent ? \"smart\" : \"prev\";\n } else {\n dir = dir ? \"add\" : \"subtract\";\n }\n }\n\n if (isLine(this.doc, n)) {\n indentLine(this, n, dir, aggressive);\n }\n }),\n indentSelection: methodOp(function (how) {\n var ranges = this.doc.sel.ranges,\n end = -1;\n\n for (var i = 0; i < ranges.length; i++) {\n var range = ranges[i];\n\n if (!range.empty()) {\n var from = range.from(),\n to = range.to();\n var start = Math.max(end, from.line);\n end = Math.min(this.lastLine(), to.line - (to.ch ? 0 : 1)) + 1;\n\n for (var j = start; j < end; ++j) {\n indentLine(this, j, how);\n }\n\n var newRanges = this.doc.sel.ranges;\n\n if (from.ch == 0 && ranges.length == newRanges.length && newRanges[i].from().ch > 0) {\n replaceOneSelection(this.doc, i, new Range(from, newRanges[i].to()), sel_dontScroll);\n }\n } else if (range.head.line > end) {\n indentLine(this, range.head.line, how, true);\n end = range.head.line;\n\n if (i == this.doc.sel.primIndex) {\n ensureCursorVisible(this);\n }\n }\n }\n }),\n // Fetch the parser token for a given character. Useful for hacks\n // that want to inspect the mode state (say, for completion).\n getTokenAt: function getTokenAt(pos, precise) {\n return takeToken(this, pos, precise);\n },\n getLineTokens: function getLineTokens(line, precise) {\n return takeToken(this, Pos(line), precise, true);\n },\n getTokenTypeAt: function getTokenTypeAt(pos) {\n pos = _clipPos(this.doc, pos);\n var styles = getLineStyles(this, getLine(this.doc, pos.line));\n var before = 0,\n after = (styles.length - 1) / 2,\n ch = pos.ch;\n var type;\n\n if (ch == 0) {\n type = styles[2];\n } else {\n for (;;) {\n var mid = before + after >> 1;\n\n if ((mid ? styles[mid * 2 - 1] : 0) >= ch) {\n after = mid;\n } else if (styles[mid * 2 + 1] < ch) {\n before = mid + 1;\n } else {\n type = styles[mid * 2 + 2];\n break;\n }\n }\n }\n\n var cut = type ? type.indexOf(\"overlay \") : -1;\n return cut < 0 ? type : cut == 0 ? null : type.slice(0, cut - 1);\n },\n getModeAt: function getModeAt(pos) {\n var mode = this.doc.mode;\n\n if (!mode.innerMode) {\n return mode;\n }\n\n return CodeMirror.innerMode(mode, this.getTokenAt(pos).state).mode;\n },\n getHelper: function getHelper(pos, type) {\n return this.getHelpers(pos, type)[0];\n },\n getHelpers: function getHelpers(pos, type) {\n var found = [];\n\n if (!helpers.hasOwnProperty(type)) {\n return found;\n }\n\n var help = helpers[type],\n mode = this.getModeAt(pos);\n\n if (typeof mode[type] == \"string\") {\n if (help[mode[type]]) {\n found.push(help[mode[type]]);\n }\n } else if (mode[type]) {\n for (var i = 0; i < mode[type].length; i++) {\n var val = help[mode[type][i]];\n\n if (val) {\n found.push(val);\n }\n }\n } else if (mode.helperType && help[mode.helperType]) {\n found.push(help[mode.helperType]);\n } else if (help[mode.name]) {\n found.push(help[mode.name]);\n }\n\n for (var i$1 = 0; i$1 < help._global.length; i$1++) {\n var cur = help._global[i$1];\n\n if (cur.pred(mode, this) && indexOf(found, cur.val) == -1) {\n found.push(cur.val);\n }\n }\n\n return found;\n },\n getStateAfter: function getStateAfter(line, precise) {\n var doc = this.doc;\n line = clipLine(doc, line == null ? doc.first + doc.size - 1 : line);\n return getContextBefore(this, line + 1, precise).state;\n },\n cursorCoords: function cursorCoords(start, mode) {\n var pos,\n range = this.doc.sel.primary();\n\n if (start == null) {\n pos = range.head;\n } else if (_typeof(start) == \"object\") {\n pos = _clipPos(this.doc, start);\n } else {\n pos = start ? range.from() : range.to();\n }\n\n return _cursorCoords(this, pos, mode || \"page\");\n },\n charCoords: function charCoords(pos, mode) {\n return _charCoords(this, _clipPos(this.doc, pos), mode || \"page\");\n },\n coordsChar: function coordsChar(coords, mode) {\n coords = fromCoordSystem(this, coords, mode || \"page\");\n return _coordsChar(this, coords.left, coords.top);\n },\n lineAtHeight: function lineAtHeight(height, mode) {\n height = fromCoordSystem(this, {\n top: height,\n left: 0\n }, mode || \"page\").top;\n return _lineAtHeight(this.doc, height + this.display.viewOffset);\n },\n heightAtLine: function heightAtLine(line, mode, includeWidgets) {\n var end = false,\n lineObj;\n\n if (typeof line == \"number\") {\n var last = this.doc.first + this.doc.size - 1;\n\n if (line < this.doc.first) {\n line = this.doc.first;\n } else if (line > last) {\n line = last;\n end = true;\n }\n\n lineObj = getLine(this.doc, line);\n } else {\n lineObj = line;\n }\n\n return intoCoordSystem(this, lineObj, {\n top: 0,\n left: 0\n }, mode || \"page\", includeWidgets || end).top + (end ? this.doc.height - _heightAtLine(lineObj) : 0);\n },\n defaultTextHeight: function defaultTextHeight() {\n return textHeight(this.display);\n },\n defaultCharWidth: function defaultCharWidth() {\n return charWidth(this.display);\n },\n getViewport: function getViewport() {\n return {\n from: this.display.viewFrom,\n to: this.display.viewTo\n };\n },\n addWidget: function addWidget(pos, node, scroll, vert, horiz) {\n var display = this.display;\n pos = _cursorCoords(this, _clipPos(this.doc, pos));\n var top = pos.bottom,\n left = pos.left;\n node.style.position = \"absolute\";\n node.setAttribute(\"cm-ignore-events\", \"true\");\n this.display.input.setUneditable(node);\n display.sizer.appendChild(node);\n\n if (vert == \"over\") {\n top = pos.top;\n } else if (vert == \"above\" || vert == \"near\") {\n var vspace = Math.max(display.wrapper.clientHeight, this.doc.height),\n hspace = Math.max(display.sizer.clientWidth, display.lineSpace.clientWidth); // Default to positioning above (if specified and possible); otherwise default to positioning below\n\n if ((vert == 'above' || pos.bottom + node.offsetHeight > vspace) && pos.top > node.offsetHeight) {\n top = pos.top - node.offsetHeight;\n } else if (pos.bottom + node.offsetHeight <= vspace) {\n top = pos.bottom;\n }\n\n if (left + node.offsetWidth > hspace) {\n left = hspace - node.offsetWidth;\n }\n }\n\n node.style.top = top + \"px\";\n node.style.left = node.style.right = \"\";\n\n if (horiz == \"right\") {\n left = display.sizer.clientWidth - node.offsetWidth;\n node.style.right = \"0px\";\n } else {\n if (horiz == \"left\") {\n left = 0;\n } else if (horiz == \"middle\") {\n left = (display.sizer.clientWidth - node.offsetWidth) / 2;\n }\n\n node.style.left = left + \"px\";\n }\n\n if (scroll) {\n scrollIntoView(this, {\n left: left,\n top: top,\n right: left + node.offsetWidth,\n bottom: top + node.offsetHeight\n });\n }\n },\n triggerOnKeyDown: methodOp(onKeyDown),\n triggerOnKeyPress: methodOp(onKeyPress),\n triggerOnKeyUp: onKeyUp,\n triggerOnMouseDown: methodOp(onMouseDown),\n execCommand: function execCommand(cmd) {\n if (commands.hasOwnProperty(cmd)) {\n return commands[cmd].call(null, this);\n }\n },\n triggerElectric: methodOp(function (text) {\n triggerElectric(this, text);\n }),\n findPosH: function findPosH(from, amount, unit, visually) {\n var dir = 1;\n\n if (amount < 0) {\n dir = -1;\n amount = -amount;\n }\n\n var cur = _clipPos(this.doc, from);\n\n for (var i = 0; i < amount; ++i) {\n cur = _findPosH(this.doc, cur, dir, unit, visually);\n\n if (cur.hitSide) {\n break;\n }\n }\n\n return cur;\n },\n moveH: methodOp(function (dir, unit) {\n var this$1 = this;\n this.extendSelectionsBy(function (range) {\n if (this$1.display.shift || this$1.doc.extend || range.empty()) {\n return _findPosH(this$1.doc, range.head, dir, unit, this$1.options.rtlMoveVisually);\n } else {\n return dir < 0 ? range.from() : range.to();\n }\n }, sel_move);\n }),\n deleteH: methodOp(function (dir, unit) {\n var sel = this.doc.sel,\n doc = this.doc;\n\n if (sel.somethingSelected()) {\n doc.replaceSelection(\"\", null, \"+delete\");\n } else {\n deleteNearSelection(this, function (range) {\n var other = _findPosH(doc, range.head, dir, unit, false);\n\n return dir < 0 ? {\n from: other,\n to: range.head\n } : {\n from: range.head,\n to: other\n };\n });\n }\n }),\n findPosV: function findPosV(from, amount, unit, goalColumn) {\n var dir = 1,\n x = goalColumn;\n\n if (amount < 0) {\n dir = -1;\n amount = -amount;\n }\n\n var cur = _clipPos(this.doc, from);\n\n for (var i = 0; i < amount; ++i) {\n var coords = _cursorCoords(this, cur, \"div\");\n\n if (x == null) {\n x = coords.left;\n } else {\n coords.left = x;\n }\n\n cur = _findPosV(this, coords, dir, unit);\n\n if (cur.hitSide) {\n break;\n }\n }\n\n return cur;\n },\n moveV: methodOp(function (dir, unit) {\n var this$1 = this;\n var doc = this.doc,\n goals = [];\n var collapse = !this.display.shift && !doc.extend && doc.sel.somethingSelected();\n doc.extendSelectionsBy(function (range) {\n if (collapse) {\n return dir < 0 ? range.from() : range.to();\n }\n\n var headPos = _cursorCoords(this$1, range.head, \"div\");\n\n if (range.goalColumn != null) {\n headPos.left = range.goalColumn;\n }\n\n goals.push(headPos.left);\n\n var pos = _findPosV(this$1, headPos, dir, unit);\n\n if (unit == \"page\" && range == doc.sel.primary()) {\n addToScrollTop(this$1, _charCoords(this$1, pos, \"div\").top - headPos.top);\n }\n\n return pos;\n }, sel_move);\n\n if (goals.length) {\n for (var i = 0; i < doc.sel.ranges.length; i++) {\n doc.sel.ranges[i].goalColumn = goals[i];\n }\n }\n }),\n // Find the word at the given position (as returned by coordsChar).\n findWordAt: function findWordAt(pos) {\n var doc = this.doc,\n line = getLine(doc, pos.line).text;\n var start = pos.ch,\n end = pos.ch;\n\n if (line) {\n var helper = this.getHelper(pos, \"wordChars\");\n\n if ((pos.sticky == \"before\" || end == line.length) && start) {\n --start;\n } else {\n ++end;\n }\n\n var startChar = line.charAt(start);\n var check = isWordChar(startChar, helper) ? function (ch) {\n return isWordChar(ch, helper);\n } : /\\s/.test(startChar) ? function (ch) {\n return /\\s/.test(ch);\n } : function (ch) {\n return !/\\s/.test(ch) && !isWordChar(ch);\n };\n\n while (start > 0 && check(line.charAt(start - 1))) {\n --start;\n }\n\n while (end < line.length && check(line.charAt(end))) {\n ++end;\n }\n }\n\n return new Range(Pos(pos.line, start), Pos(pos.line, end));\n },\n toggleOverwrite: function toggleOverwrite(value) {\n if (value != null && value == this.state.overwrite) {\n return;\n }\n\n if (this.state.overwrite = !this.state.overwrite) {\n addClass(this.display.cursorDiv, \"CodeMirror-overwrite\");\n } else {\n rmClass(this.display.cursorDiv, \"CodeMirror-overwrite\");\n }\n\n signal(this, \"overwriteToggle\", this, this.state.overwrite);\n },\n hasFocus: function hasFocus() {\n return this.display.input.getField() == activeElt();\n },\n isReadOnly: function isReadOnly() {\n return !!(this.options.readOnly || this.doc.cantEdit);\n },\n scrollTo: methodOp(function (x, y) {\n scrollToCoords(this, x, y);\n }),\n getScrollInfo: function getScrollInfo() {\n var scroller = this.display.scroller;\n return {\n left: scroller.scrollLeft,\n top: scroller.scrollTop,\n height: scroller.scrollHeight - scrollGap(this) - this.display.barHeight,\n width: scroller.scrollWidth - scrollGap(this) - this.display.barWidth,\n clientHeight: displayHeight(this),\n clientWidth: displayWidth(this)\n };\n },\n scrollIntoView: methodOp(function (range, margin) {\n if (range == null) {\n range = {\n from: this.doc.sel.primary().head,\n to: null\n };\n\n if (margin == null) {\n margin = this.options.cursorScrollMargin;\n }\n } else if (typeof range == \"number\") {\n range = {\n from: Pos(range, 0),\n to: null\n };\n } else if (range.from == null) {\n range = {\n from: range,\n to: null\n };\n }\n\n if (!range.to) {\n range.to = range.from;\n }\n\n range.margin = margin || 0;\n\n if (range.from.line != null) {\n scrollToRange(this, range);\n } else {\n scrollToCoordsRange(this, range.from, range.to, range.margin);\n }\n }),\n setSize: methodOp(function (width, height) {\n var this$1 = this;\n\n var interpret = function interpret(val) {\n return typeof val == \"number\" || /^\\d+$/.test(String(val)) ? val + \"px\" : val;\n };\n\n if (width != null) {\n this.display.wrapper.style.width = interpret(width);\n }\n\n if (height != null) {\n this.display.wrapper.style.height = interpret(height);\n }\n\n if (this.options.lineWrapping) {\n clearLineMeasurementCache(this);\n }\n\n var lineNo = this.display.viewFrom;\n this.doc.iter(lineNo, this.display.viewTo, function (line) {\n if (line.widgets) {\n for (var i = 0; i < line.widgets.length; i++) {\n if (line.widgets[i].noHScroll) {\n regLineChange(this$1, lineNo, \"widget\");\n break;\n }\n }\n }\n\n ++lineNo;\n });\n this.curOp.forceUpdate = true;\n signal(this, \"refresh\", this);\n }),\n operation: function operation(f) {\n return runInOp(this, f);\n },\n startOperation: function startOperation() {\n return _startOperation(this);\n },\n endOperation: function endOperation() {\n return _endOperation(this);\n },\n refresh: methodOp(function () {\n var oldHeight = this.display.cachedTextHeight;\n regChange(this);\n this.curOp.forceUpdate = true;\n clearCaches(this);\n scrollToCoords(this, this.doc.scrollLeft, this.doc.scrollTop);\n updateGutterSpace(this.display);\n\n if (oldHeight == null || Math.abs(oldHeight - textHeight(this.display)) > .5 || this.options.lineWrapping) {\n estimateLineHeights(this);\n }\n\n signal(this, \"refresh\", this);\n }),\n swapDoc: methodOp(function (doc) {\n var old = this.doc;\n old.cm = null; // Cancel the current text selection if any (#5821)\n\n if (this.state.selectingText) {\n this.state.selectingText();\n }\n\n attachDoc(this, doc);\n clearCaches(this);\n this.display.input.reset();\n scrollToCoords(this, doc.scrollLeft, doc.scrollTop);\n this.curOp.forceScroll = true;\n signalLater(this, \"swapDoc\", this, old);\n return old;\n }),\n phrase: function phrase(phraseText) {\n var phrases = this.options.phrases;\n return phrases && Object.prototype.hasOwnProperty.call(phrases, phraseText) ? phrases[phraseText] : phraseText;\n },\n getInputField: function getInputField() {\n return this.display.input.getField();\n },\n getWrapperElement: function getWrapperElement() {\n return this.display.wrapper;\n },\n getScrollerElement: function getScrollerElement() {\n return this.display.scroller;\n },\n getGutterElement: function getGutterElement() {\n return this.display.gutters;\n }\n };\n eventMixin(CodeMirror);\n\n CodeMirror.registerHelper = function (type, name, value) {\n if (!helpers.hasOwnProperty(type)) {\n helpers[type] = CodeMirror[type] = {\n _global: []\n };\n }\n\n helpers[type][name] = value;\n };\n\n CodeMirror.registerGlobalHelper = function (type, name, predicate, value) {\n CodeMirror.registerHelper(type, name, value);\n\n helpers[type]._global.push({\n pred: predicate,\n val: value\n });\n };\n } // Used for horizontal relative motion. Dir is -1 or 1 (left or\n // right), unit can be \"codepoint\", \"char\", \"column\" (like char, but\n // doesn't cross line boundaries), \"word\" (across next word), or\n // \"group\" (to the start of next group of word or\n // non-word-non-whitespace chars). The visually param controls\n // whether, in right-to-left text, direction 1 means to move towards\n // the next index in the string, or towards the character to the right\n // of the current position. The resulting position will have a\n // hitSide=true property if it reached the end of the document.\n\n\n function _findPosH(doc, pos, dir, unit, visually) {\n var oldPos = pos;\n var origDir = dir;\n var lineObj = getLine(doc, pos.line);\n var lineDir = visually && doc.direction == \"rtl\" ? -dir : dir;\n\n function findNextLine() {\n var l = pos.line + lineDir;\n\n if (l < doc.first || l >= doc.first + doc.size) {\n return false;\n }\n\n pos = new Pos(l, pos.ch, pos.sticky);\n return lineObj = getLine(doc, l);\n }\n\n function moveOnce(boundToLine) {\n var next;\n\n if (unit == \"codepoint\") {\n var ch = lineObj.text.charCodeAt(pos.ch + (dir > 0 ? 0 : -1));\n\n if (isNaN(ch)) {\n next = null;\n } else {\n var astral = dir > 0 ? ch >= 0xD800 && ch < 0xDC00 : ch >= 0xDC00 && ch < 0xDFFF;\n next = new Pos(pos.line, Math.max(0, Math.min(lineObj.text.length, pos.ch + dir * (astral ? 2 : 1))), -dir);\n }\n } else if (visually) {\n next = moveVisually(doc.cm, lineObj, pos, dir);\n } else {\n next = moveLogically(lineObj, pos, dir);\n }\n\n if (next == null) {\n if (!boundToLine && findNextLine()) {\n pos = endOfLine(visually, doc.cm, lineObj, pos.line, lineDir);\n } else {\n return false;\n }\n } else {\n pos = next;\n }\n\n return true;\n }\n\n if (unit == \"char\" || unit == \"codepoint\") {\n moveOnce();\n } else if (unit == \"column\") {\n moveOnce(true);\n } else if (unit == \"word\" || unit == \"group\") {\n var sawType = null,\n group = unit == \"group\";\n var helper = doc.cm && doc.cm.getHelper(pos, \"wordChars\");\n\n for (var first = true;; first = false) {\n if (dir < 0 && !moveOnce(!first)) {\n break;\n }\n\n var cur = lineObj.text.charAt(pos.ch) || \"\\n\";\n var type = isWordChar(cur, helper) ? \"w\" : group && cur == \"\\n\" ? \"n\" : !group || /\\s/.test(cur) ? null : \"p\";\n\n if (group && !first && !type) {\n type = \"s\";\n }\n\n if (sawType && sawType != type) {\n if (dir < 0) {\n dir = 1;\n moveOnce();\n pos.sticky = \"after\";\n }\n\n break;\n }\n\n if (type) {\n sawType = type;\n }\n\n if (dir > 0 && !moveOnce(!first)) {\n break;\n }\n }\n }\n\n var result = skipAtomic(doc, pos, oldPos, origDir, true);\n\n if (equalCursorPos(oldPos, result)) {\n result.hitSide = true;\n }\n\n return result;\n } // For relative vertical movement. Dir may be -1 or 1. Unit can be\n // \"page\" or \"line\". The resulting position will have a hitSide=true\n // property if it reached the end of the document.\n\n\n function _findPosV(cm, pos, dir, unit) {\n var doc = cm.doc,\n x = pos.left,\n y;\n\n if (unit == \"page\") {\n var pageSize = Math.min(cm.display.wrapper.clientHeight, window.innerHeight || document.documentElement.clientHeight);\n var moveAmount = Math.max(pageSize - .5 * textHeight(cm.display), 3);\n y = (dir > 0 ? pos.bottom : pos.top) + dir * moveAmount;\n } else if (unit == \"line\") {\n y = dir > 0 ? pos.bottom + 3 : pos.top - 3;\n }\n\n var target;\n\n for (;;) {\n target = _coordsChar(cm, x, y);\n\n if (!target.outside) {\n break;\n }\n\n if (dir < 0 ? y <= 0 : y >= doc.height) {\n target.hitSide = true;\n break;\n }\n\n y += dir * 5;\n }\n\n return target;\n } // CONTENTEDITABLE INPUT STYLE\n\n\n var ContentEditableInput = function ContentEditableInput(cm) {\n this.cm = cm;\n this.lastAnchorNode = this.lastAnchorOffset = this.lastFocusNode = this.lastFocusOffset = null;\n this.polling = new Delayed();\n this.composing = null;\n this.gracePeriod = false;\n this.readDOMTimeout = null;\n };\n\n ContentEditableInput.prototype.init = function (display) {\n var this$1 = this;\n var input = this,\n cm = input.cm;\n var div = input.div = display.lineDiv;\n div.contentEditable = true;\n disableBrowserMagic(div, cm.options.spellcheck, cm.options.autocorrect, cm.options.autocapitalize);\n\n function belongsToInput(e) {\n for (var t = e.target; t; t = t.parentNode) {\n if (t == div) {\n return true;\n }\n\n if (/\\bCodeMirror-(?:line)?widget\\b/.test(t.className)) {\n break;\n }\n }\n\n return false;\n }\n\n on(div, \"paste\", function (e) {\n if (!belongsToInput(e) || signalDOMEvent(cm, e) || handlePaste(e, cm)) {\n return;\n } // IE doesn't fire input events, so we schedule a read for the pasted content in this way\n\n\n if (ie_version <= 11) {\n setTimeout(operation(cm, function () {\n return this$1.updateFromDOM();\n }), 20);\n }\n });\n on(div, \"compositionstart\", function (e) {\n this$1.composing = {\n data: e.data,\n done: false\n };\n });\n on(div, \"compositionupdate\", function (e) {\n if (!this$1.composing) {\n this$1.composing = {\n data: e.data,\n done: false\n };\n }\n });\n on(div, \"compositionend\", function (e) {\n if (this$1.composing) {\n if (e.data != this$1.composing.data) {\n this$1.readFromDOMSoon();\n }\n\n this$1.composing.done = true;\n }\n });\n on(div, \"touchstart\", function () {\n return input.forceCompositionEnd();\n });\n on(div, \"input\", function () {\n if (!this$1.composing) {\n this$1.readFromDOMSoon();\n }\n });\n\n function onCopyCut(e) {\n if (!belongsToInput(e) || signalDOMEvent(cm, e)) {\n return;\n }\n\n if (cm.somethingSelected()) {\n setLastCopied({\n lineWise: false,\n text: cm.getSelections()\n });\n\n if (e.type == \"cut\") {\n cm.replaceSelection(\"\", null, \"cut\");\n }\n } else if (!cm.options.lineWiseCopyCut) {\n return;\n } else {\n var ranges = copyableRanges(cm);\n setLastCopied({\n lineWise: true,\n text: ranges.text\n });\n\n if (e.type == \"cut\") {\n cm.operation(function () {\n cm.setSelections(ranges.ranges, 0, sel_dontScroll);\n cm.replaceSelection(\"\", null, \"cut\");\n });\n }\n }\n\n if (e.clipboardData) {\n e.clipboardData.clearData();\n var content = lastCopied.text.join(\"\\n\"); // iOS exposes the clipboard API, but seems to discard content inserted into it\n\n e.clipboardData.setData(\"Text\", content);\n\n if (e.clipboardData.getData(\"Text\") == content) {\n e.preventDefault();\n return;\n }\n } // Old-fashioned briefly-focus-a-textarea hack\n\n\n var kludge = hiddenTextarea(),\n te = kludge.firstChild;\n cm.display.lineSpace.insertBefore(kludge, cm.display.lineSpace.firstChild);\n te.value = lastCopied.text.join(\"\\n\");\n var hadFocus = activeElt();\n selectInput(te);\n setTimeout(function () {\n cm.display.lineSpace.removeChild(kludge);\n hadFocus.focus();\n\n if (hadFocus == div) {\n input.showPrimarySelection();\n }\n }, 50);\n }\n\n on(div, \"copy\", onCopyCut);\n on(div, \"cut\", onCopyCut);\n };\n\n ContentEditableInput.prototype.screenReaderLabelChanged = function (label) {\n // Label for screenreaders, accessibility\n if (label) {\n this.div.setAttribute('aria-label', label);\n } else {\n this.div.removeAttribute('aria-label');\n }\n };\n\n ContentEditableInput.prototype.prepareSelection = function () {\n var result = prepareSelection(this.cm, false);\n result.focus = activeElt() == this.div;\n return result;\n };\n\n ContentEditableInput.prototype.showSelection = function (info, takeFocus) {\n if (!info || !this.cm.display.view.length) {\n return;\n }\n\n if (info.focus || takeFocus) {\n this.showPrimarySelection();\n }\n\n this.showMultipleSelections(info);\n };\n\n ContentEditableInput.prototype.getSelection = function () {\n return this.cm.display.wrapper.ownerDocument.getSelection();\n };\n\n ContentEditableInput.prototype.showPrimarySelection = function () {\n var sel = this.getSelection(),\n cm = this.cm,\n prim = cm.doc.sel.primary();\n var from = prim.from(),\n to = prim.to();\n\n if (cm.display.viewTo == cm.display.viewFrom || from.line >= cm.display.viewTo || to.line < cm.display.viewFrom) {\n sel.removeAllRanges();\n return;\n }\n\n var curAnchor = domToPos(cm, sel.anchorNode, sel.anchorOffset);\n var curFocus = domToPos(cm, sel.focusNode, sel.focusOffset);\n\n if (curAnchor && !curAnchor.bad && curFocus && !curFocus.bad && cmp(minPos(curAnchor, curFocus), from) == 0 && cmp(maxPos(curAnchor, curFocus), to) == 0) {\n return;\n }\n\n var view = cm.display.view;\n var start = from.line >= cm.display.viewFrom && posToDOM(cm, from) || {\n node: view[0].measure.map[2],\n offset: 0\n };\n var end = to.line < cm.display.viewTo && posToDOM(cm, to);\n\n if (!end) {\n var measure = view[view.length - 1].measure;\n var map = measure.maps ? measure.maps[measure.maps.length - 1] : measure.map;\n end = {\n node: map[map.length - 1],\n offset: map[map.length - 2] - map[map.length - 3]\n };\n }\n\n if (!start || !end) {\n sel.removeAllRanges();\n return;\n }\n\n var old = sel.rangeCount && sel.getRangeAt(0),\n rng;\n\n try {\n rng = range(start.node, start.offset, end.offset, end.node);\n } catch (e) {} // Our model of the DOM might be outdated, in which case the range we try to set can be impossible\n\n\n if (rng) {\n if (!gecko && cm.state.focused) {\n sel.collapse(start.node, start.offset);\n\n if (!rng.collapsed) {\n sel.removeAllRanges();\n sel.addRange(rng);\n }\n } else {\n sel.removeAllRanges();\n sel.addRange(rng);\n }\n\n if (old && sel.anchorNode == null) {\n sel.addRange(old);\n } else if (gecko) {\n this.startGracePeriod();\n }\n }\n\n this.rememberSelection();\n };\n\n ContentEditableInput.prototype.startGracePeriod = function () {\n var this$1 = this;\n clearTimeout(this.gracePeriod);\n this.gracePeriod = setTimeout(function () {\n this$1.gracePeriod = false;\n\n if (this$1.selectionChanged()) {\n this$1.cm.operation(function () {\n return this$1.cm.curOp.selectionChanged = true;\n });\n }\n }, 20);\n };\n\n ContentEditableInput.prototype.showMultipleSelections = function (info) {\n removeChildrenAndAdd(this.cm.display.cursorDiv, info.cursors);\n removeChildrenAndAdd(this.cm.display.selectionDiv, info.selection);\n };\n\n ContentEditableInput.prototype.rememberSelection = function () {\n var sel = this.getSelection();\n this.lastAnchorNode = sel.anchorNode;\n this.lastAnchorOffset = sel.anchorOffset;\n this.lastFocusNode = sel.focusNode;\n this.lastFocusOffset = sel.focusOffset;\n };\n\n ContentEditableInput.prototype.selectionInEditor = function () {\n var sel = this.getSelection();\n\n if (!sel.rangeCount) {\n return false;\n }\n\n var node = sel.getRangeAt(0).commonAncestorContainer;\n return contains(this.div, node);\n };\n\n ContentEditableInput.prototype.focus = function () {\n if (this.cm.options.readOnly != \"nocursor\") {\n if (!this.selectionInEditor() || activeElt() != this.div) {\n this.showSelection(this.prepareSelection(), true);\n }\n\n this.div.focus();\n }\n };\n\n ContentEditableInput.prototype.blur = function () {\n this.div.blur();\n };\n\n ContentEditableInput.prototype.getField = function () {\n return this.div;\n };\n\n ContentEditableInput.prototype.supportsTouch = function () {\n return true;\n };\n\n ContentEditableInput.prototype.receivedFocus = function () {\n var this$1 = this;\n var input = this;\n\n if (this.selectionInEditor()) {\n setTimeout(function () {\n return this$1.pollSelection();\n }, 20);\n } else {\n runInOp(this.cm, function () {\n return input.cm.curOp.selectionChanged = true;\n });\n }\n\n function poll() {\n if (input.cm.state.focused) {\n input.pollSelection();\n input.polling.set(input.cm.options.pollInterval, poll);\n }\n }\n\n this.polling.set(this.cm.options.pollInterval, poll);\n };\n\n ContentEditableInput.prototype.selectionChanged = function () {\n var sel = this.getSelection();\n return sel.anchorNode != this.lastAnchorNode || sel.anchorOffset != this.lastAnchorOffset || sel.focusNode != this.lastFocusNode || sel.focusOffset != this.lastFocusOffset;\n };\n\n ContentEditableInput.prototype.pollSelection = function () {\n if (this.readDOMTimeout != null || this.gracePeriod || !this.selectionChanged()) {\n return;\n }\n\n var sel = this.getSelection(),\n cm = this.cm; // On Android Chrome (version 56, at least), backspacing into an\n // uneditable block element will put the cursor in that element,\n // and then, because it's not editable, hide the virtual keyboard.\n // Because Android doesn't allow us to actually detect backspace\n // presses in a sane way, this code checks for when that happens\n // and simulates a backspace press in this case.\n\n if (android && chrome && this.cm.display.gutterSpecs.length && isInGutter(sel.anchorNode)) {\n this.cm.triggerOnKeyDown({\n type: \"keydown\",\n keyCode: 8,\n preventDefault: Math.abs\n });\n this.blur();\n this.focus();\n return;\n }\n\n if (this.composing) {\n return;\n }\n\n this.rememberSelection();\n var anchor = domToPos(cm, sel.anchorNode, sel.anchorOffset);\n var head = domToPos(cm, sel.focusNode, sel.focusOffset);\n\n if (anchor && head) {\n runInOp(cm, function () {\n setSelection(cm.doc, simpleSelection(anchor, head), sel_dontScroll);\n\n if (anchor.bad || head.bad) {\n cm.curOp.selectionChanged = true;\n }\n });\n }\n };\n\n ContentEditableInput.prototype.pollContent = function () {\n if (this.readDOMTimeout != null) {\n clearTimeout(this.readDOMTimeout);\n this.readDOMTimeout = null;\n }\n\n var cm = this.cm,\n display = cm.display,\n sel = cm.doc.sel.primary();\n var from = sel.from(),\n to = sel.to();\n\n if (from.ch == 0 && from.line > cm.firstLine()) {\n from = Pos(from.line - 1, getLine(cm.doc, from.line - 1).length);\n }\n\n if (to.ch == getLine(cm.doc, to.line).text.length && to.line < cm.lastLine()) {\n to = Pos(to.line + 1, 0);\n }\n\n if (from.line < display.viewFrom || to.line > display.viewTo - 1) {\n return false;\n }\n\n var fromIndex, fromLine, fromNode;\n\n if (from.line == display.viewFrom || (fromIndex = findViewIndex(cm, from.line)) == 0) {\n fromLine = lineNo(display.view[0].line);\n fromNode = display.view[0].node;\n } else {\n fromLine = lineNo(display.view[fromIndex].line);\n fromNode = display.view[fromIndex - 1].node.nextSibling;\n }\n\n var toIndex = findViewIndex(cm, to.line);\n var toLine, toNode;\n\n if (toIndex == display.view.length - 1) {\n toLine = display.viewTo - 1;\n toNode = display.lineDiv.lastChild;\n } else {\n toLine = lineNo(display.view[toIndex + 1].line) - 1;\n toNode = display.view[toIndex + 1].node.previousSibling;\n }\n\n if (!fromNode) {\n return false;\n }\n\n var newText = cm.doc.splitLines(domTextBetween(cm, fromNode, toNode, fromLine, toLine));\n var oldText = getBetween(cm.doc, Pos(fromLine, 0), Pos(toLine, getLine(cm.doc, toLine).text.length));\n\n while (newText.length > 1 && oldText.length > 1) {\n if (lst(newText) == lst(oldText)) {\n newText.pop();\n oldText.pop();\n toLine--;\n } else if (newText[0] == oldText[0]) {\n newText.shift();\n oldText.shift();\n fromLine++;\n } else {\n break;\n }\n }\n\n var cutFront = 0,\n cutEnd = 0;\n var newTop = newText[0],\n oldTop = oldText[0],\n maxCutFront = Math.min(newTop.length, oldTop.length);\n\n while (cutFront < maxCutFront && newTop.charCodeAt(cutFront) == oldTop.charCodeAt(cutFront)) {\n ++cutFront;\n }\n\n var newBot = lst(newText),\n oldBot = lst(oldText);\n var maxCutEnd = Math.min(newBot.length - (newText.length == 1 ? cutFront : 0), oldBot.length - (oldText.length == 1 ? cutFront : 0));\n\n while (cutEnd < maxCutEnd && newBot.charCodeAt(newBot.length - cutEnd - 1) == oldBot.charCodeAt(oldBot.length - cutEnd - 1)) {\n ++cutEnd;\n } // Try to move start of change to start of selection if ambiguous\n\n\n if (newText.length == 1 && oldText.length == 1 && fromLine == from.line) {\n while (cutFront && cutFront > from.ch && newBot.charCodeAt(newBot.length - cutEnd - 1) == oldBot.charCodeAt(oldBot.length - cutEnd - 1)) {\n cutFront--;\n cutEnd++;\n }\n }\n\n newText[newText.length - 1] = newBot.slice(0, newBot.length - cutEnd).replace(/^\\u200b+/, \"\");\n newText[0] = newText[0].slice(cutFront).replace(/\\u200b+$/, \"\");\n var chFrom = Pos(fromLine, cutFront);\n var chTo = Pos(toLine, oldText.length ? lst(oldText).length - cutEnd : 0);\n\n if (newText.length > 1 || newText[0] || cmp(chFrom, chTo)) {\n _replaceRange(cm.doc, newText, chFrom, chTo, \"+input\");\n\n return true;\n }\n };\n\n ContentEditableInput.prototype.ensurePolled = function () {\n this.forceCompositionEnd();\n };\n\n ContentEditableInput.prototype.reset = function () {\n this.forceCompositionEnd();\n };\n\n ContentEditableInput.prototype.forceCompositionEnd = function () {\n if (!this.composing) {\n return;\n }\n\n clearTimeout(this.readDOMTimeout);\n this.composing = null;\n this.updateFromDOM();\n this.div.blur();\n this.div.focus();\n };\n\n ContentEditableInput.prototype.readFromDOMSoon = function () {\n var this$1 = this;\n\n if (this.readDOMTimeout != null) {\n return;\n }\n\n this.readDOMTimeout = setTimeout(function () {\n this$1.readDOMTimeout = null;\n\n if (this$1.composing) {\n if (this$1.composing.done) {\n this$1.composing = null;\n } else {\n return;\n }\n }\n\n this$1.updateFromDOM();\n }, 80);\n };\n\n ContentEditableInput.prototype.updateFromDOM = function () {\n var this$1 = this;\n\n if (this.cm.isReadOnly() || !this.pollContent()) {\n runInOp(this.cm, function () {\n return regChange(this$1.cm);\n });\n }\n };\n\n ContentEditableInput.prototype.setUneditable = function (node) {\n node.contentEditable = \"false\";\n };\n\n ContentEditableInput.prototype.onKeyPress = function (e) {\n if (e.charCode == 0 || this.composing) {\n return;\n }\n\n e.preventDefault();\n\n if (!this.cm.isReadOnly()) {\n operation(this.cm, applyTextInput)(this.cm, String.fromCharCode(e.charCode == null ? e.keyCode : e.charCode), 0);\n }\n };\n\n ContentEditableInput.prototype.readOnlyChanged = function (val) {\n this.div.contentEditable = String(val != \"nocursor\");\n };\n\n ContentEditableInput.prototype.onContextMenu = function () {};\n\n ContentEditableInput.prototype.resetPosition = function () {};\n\n ContentEditableInput.prototype.needsContentAttribute = true;\n\n function posToDOM(cm, pos) {\n var view = findViewForLine(cm, pos.line);\n\n if (!view || view.hidden) {\n return null;\n }\n\n var line = getLine(cm.doc, pos.line);\n var info = mapFromLineView(view, line, pos.line);\n var order = getOrder(line, cm.doc.direction),\n side = \"left\";\n\n if (order) {\n var partPos = getBidiPartAt(order, pos.ch);\n side = partPos % 2 ? \"right\" : \"left\";\n }\n\n var result = nodeAndOffsetInLineMap(info.map, pos.ch, side);\n result.offset = result.collapse == \"right\" ? result.end : result.start;\n return result;\n }\n\n function isInGutter(node) {\n for (var scan = node; scan; scan = scan.parentNode) {\n if (/CodeMirror-gutter-wrapper/.test(scan.className)) {\n return true;\n }\n }\n\n return false;\n }\n\n function badPos(pos, bad) {\n if (bad) {\n pos.bad = true;\n }\n\n return pos;\n }\n\n function domTextBetween(cm, from, to, fromLine, toLine) {\n var text = \"\",\n closing = false,\n lineSep = cm.doc.lineSeparator(),\n extraLinebreak = false;\n\n function recognizeMarker(id) {\n return function (marker) {\n return marker.id == id;\n };\n }\n\n function close() {\n if (closing) {\n text += lineSep;\n\n if (extraLinebreak) {\n text += lineSep;\n }\n\n closing = extraLinebreak = false;\n }\n }\n\n function addText(str) {\n if (str) {\n close();\n text += str;\n }\n }\n\n function walk(node) {\n if (node.nodeType == 1) {\n var cmText = node.getAttribute(\"cm-text\");\n\n if (cmText) {\n addText(cmText);\n return;\n }\n\n var markerID = node.getAttribute(\"cm-marker\"),\n range;\n\n if (markerID) {\n var found = cm.findMarks(Pos(fromLine, 0), Pos(toLine + 1, 0), recognizeMarker(+markerID));\n\n if (found.length && (range = found[0].find(0))) {\n addText(getBetween(cm.doc, range.from, range.to).join(lineSep));\n }\n\n return;\n }\n\n if (node.getAttribute(\"contenteditable\") == \"false\") {\n return;\n }\n\n var isBlock = /^(pre|div|p|li|table|br)$/i.test(node.nodeName);\n\n if (!/^br$/i.test(node.nodeName) && node.textContent.length == 0) {\n return;\n }\n\n if (isBlock) {\n close();\n }\n\n for (var i = 0; i < node.childNodes.length; i++) {\n walk(node.childNodes[i]);\n }\n\n if (/^(pre|p)$/i.test(node.nodeName)) {\n extraLinebreak = true;\n }\n\n if (isBlock) {\n closing = true;\n }\n } else if (node.nodeType == 3) {\n addText(node.nodeValue.replace(/\\u200b/g, \"\").replace(/\\u00a0/g, \" \"));\n }\n }\n\n for (;;) {\n walk(from);\n\n if (from == to) {\n break;\n }\n\n from = from.nextSibling;\n extraLinebreak = false;\n }\n\n return text;\n }\n\n function domToPos(cm, node, offset) {\n var lineNode;\n\n if (node == cm.display.lineDiv) {\n lineNode = cm.display.lineDiv.childNodes[offset];\n\n if (!lineNode) {\n return badPos(cm.clipPos(Pos(cm.display.viewTo - 1)), true);\n }\n\n node = null;\n offset = 0;\n } else {\n for (lineNode = node;; lineNode = lineNode.parentNode) {\n if (!lineNode || lineNode == cm.display.lineDiv) {\n return null;\n }\n\n if (lineNode.parentNode && lineNode.parentNode == cm.display.lineDiv) {\n break;\n }\n }\n }\n\n for (var i = 0; i < cm.display.view.length; i++) {\n var lineView = cm.display.view[i];\n\n if (lineView.node == lineNode) {\n return locateNodeInLineView(lineView, node, offset);\n }\n }\n }\n\n function locateNodeInLineView(lineView, node, offset) {\n var wrapper = lineView.text.firstChild,\n bad = false;\n\n if (!node || !contains(wrapper, node)) {\n return badPos(Pos(lineNo(lineView.line), 0), true);\n }\n\n if (node == wrapper) {\n bad = true;\n node = wrapper.childNodes[offset];\n offset = 0;\n\n if (!node) {\n var line = lineView.rest ? lst(lineView.rest) : lineView.line;\n return badPos(Pos(lineNo(line), line.text.length), bad);\n }\n }\n\n var textNode = node.nodeType == 3 ? node : null,\n topNode = node;\n\n if (!textNode && node.childNodes.length == 1 && node.firstChild.nodeType == 3) {\n textNode = node.firstChild;\n\n if (offset) {\n offset = textNode.nodeValue.length;\n }\n }\n\n while (topNode.parentNode != wrapper) {\n topNode = topNode.parentNode;\n }\n\n var measure = lineView.measure,\n maps = measure.maps;\n\n function find(textNode, topNode, offset) {\n for (var i = -1; i < (maps ? maps.length : 0); i++) {\n var map = i < 0 ? measure.map : maps[i];\n\n for (var j = 0; j < map.length; j += 3) {\n var curNode = map[j + 2];\n\n if (curNode == textNode || curNode == topNode) {\n var line = lineNo(i < 0 ? lineView.line : lineView.rest[i]);\n var ch = map[j] + offset;\n\n if (offset < 0 || curNode != textNode) {\n ch = map[j + (offset ? 1 : 0)];\n }\n\n return Pos(line, ch);\n }\n }\n }\n }\n\n var found = find(textNode, topNode, offset);\n\n if (found) {\n return badPos(found, bad);\n } // FIXME this is all really shaky. might handle the few cases it needs to handle, but likely to cause problems\n\n\n for (var after = topNode.nextSibling, dist = textNode ? textNode.nodeValue.length - offset : 0; after; after = after.nextSibling) {\n found = find(after, after.firstChild, 0);\n\n if (found) {\n return badPos(Pos(found.line, found.ch - dist), bad);\n } else {\n dist += after.textContent.length;\n }\n }\n\n for (var before = topNode.previousSibling, dist$1 = offset; before; before = before.previousSibling) {\n found = find(before, before.firstChild, -1);\n\n if (found) {\n return badPos(Pos(found.line, found.ch + dist$1), bad);\n } else {\n dist$1 += before.textContent.length;\n }\n }\n } // TEXTAREA INPUT STYLE\n\n\n var TextareaInput = function TextareaInput(cm) {\n this.cm = cm; // See input.poll and input.reset\n\n this.prevInput = \"\"; // Flag that indicates whether we expect input to appear real soon\n // now (after some event like 'keypress' or 'input') and are\n // polling intensively.\n\n this.pollingFast = false; // Self-resetting timeout for the poller\n\n this.polling = new Delayed(); // Used to work around IE issue with selection being forgotten when focus moves away from textarea\n\n this.hasSelection = false;\n this.composing = null;\n };\n\n TextareaInput.prototype.init = function (display) {\n var this$1 = this;\n var input = this,\n cm = this.cm;\n this.createField(display);\n var te = this.textarea;\n display.wrapper.insertBefore(this.wrapper, display.wrapper.firstChild); // Needed to hide big blue blinking cursor on Mobile Safari (doesn't seem to work in iOS 8 anymore)\n\n if (ios) {\n te.style.width = \"0px\";\n }\n\n on(te, \"input\", function () {\n if (ie && ie_version >= 9 && this$1.hasSelection) {\n this$1.hasSelection = null;\n }\n\n input.poll();\n });\n on(te, \"paste\", function (e) {\n if (signalDOMEvent(cm, e) || handlePaste(e, cm)) {\n return;\n }\n\n cm.state.pasteIncoming = +new Date();\n input.fastPoll();\n });\n\n function prepareCopyCut(e) {\n if (signalDOMEvent(cm, e)) {\n return;\n }\n\n if (cm.somethingSelected()) {\n setLastCopied({\n lineWise: false,\n text: cm.getSelections()\n });\n } else if (!cm.options.lineWiseCopyCut) {\n return;\n } else {\n var ranges = copyableRanges(cm);\n setLastCopied({\n lineWise: true,\n text: ranges.text\n });\n\n if (e.type == \"cut\") {\n cm.setSelections(ranges.ranges, null, sel_dontScroll);\n } else {\n input.prevInput = \"\";\n te.value = ranges.text.join(\"\\n\");\n selectInput(te);\n }\n }\n\n if (e.type == \"cut\") {\n cm.state.cutIncoming = +new Date();\n }\n }\n\n on(te, \"cut\", prepareCopyCut);\n on(te, \"copy\", prepareCopyCut);\n on(display.scroller, \"paste\", function (e) {\n if (eventInWidget(display, e) || signalDOMEvent(cm, e)) {\n return;\n }\n\n if (!te.dispatchEvent) {\n cm.state.pasteIncoming = +new Date();\n input.focus();\n return;\n } // Pass the `paste` event to the textarea so it's handled by its event listener.\n\n\n var event = new Event(\"paste\");\n event.clipboardData = e.clipboardData;\n te.dispatchEvent(event);\n }); // Prevent normal selection in the editor (we handle our own)\n\n on(display.lineSpace, \"selectstart\", function (e) {\n if (!eventInWidget(display, e)) {\n e_preventDefault(e);\n }\n });\n on(te, \"compositionstart\", function () {\n var start = cm.getCursor(\"from\");\n\n if (input.composing) {\n input.composing.range.clear();\n }\n\n input.composing = {\n start: start,\n range: cm.markText(start, cm.getCursor(\"to\"), {\n className: \"CodeMirror-composing\"\n })\n };\n });\n on(te, \"compositionend\", function () {\n if (input.composing) {\n input.poll();\n input.composing.range.clear();\n input.composing = null;\n }\n });\n };\n\n TextareaInput.prototype.createField = function (_display) {\n // Wraps and hides input textarea\n this.wrapper = hiddenTextarea(); // The semihidden textarea that is focused when the editor is\n // focused, and receives input.\n\n this.textarea = this.wrapper.firstChild;\n };\n\n TextareaInput.prototype.screenReaderLabelChanged = function (label) {\n // Label for screenreaders, accessibility\n if (label) {\n this.textarea.setAttribute('aria-label', label);\n } else {\n this.textarea.removeAttribute('aria-label');\n }\n };\n\n TextareaInput.prototype.prepareSelection = function () {\n // Redraw the selection and/or cursor\n var cm = this.cm,\n display = cm.display,\n doc = cm.doc;\n var result = prepareSelection(cm); // Move the hidden textarea near the cursor to prevent scrolling artifacts\n\n if (cm.options.moveInputWithCursor) {\n var headPos = _cursorCoords(cm, doc.sel.primary().head, \"div\");\n\n var wrapOff = display.wrapper.getBoundingClientRect(),\n lineOff = display.lineDiv.getBoundingClientRect();\n result.teTop = Math.max(0, Math.min(display.wrapper.clientHeight - 10, headPos.top + lineOff.top - wrapOff.top));\n result.teLeft = Math.max(0, Math.min(display.wrapper.clientWidth - 10, headPos.left + lineOff.left - wrapOff.left));\n }\n\n return result;\n };\n\n TextareaInput.prototype.showSelection = function (drawn) {\n var cm = this.cm,\n display = cm.display;\n removeChildrenAndAdd(display.cursorDiv, drawn.cursors);\n removeChildrenAndAdd(display.selectionDiv, drawn.selection);\n\n if (drawn.teTop != null) {\n this.wrapper.style.top = drawn.teTop + \"px\";\n this.wrapper.style.left = drawn.teLeft + \"px\";\n }\n }; // Reset the input to correspond to the selection (or to be empty,\n // when not typing and nothing is selected)\n\n\n TextareaInput.prototype.reset = function (typing) {\n if (this.contextMenuPending || this.composing) {\n return;\n }\n\n var cm = this.cm;\n\n if (cm.somethingSelected()) {\n this.prevInput = \"\";\n var content = cm.getSelection();\n this.textarea.value = content;\n\n if (cm.state.focused) {\n selectInput(this.textarea);\n }\n\n if (ie && ie_version >= 9) {\n this.hasSelection = content;\n }\n } else if (!typing) {\n this.prevInput = this.textarea.value = \"\";\n\n if (ie && ie_version >= 9) {\n this.hasSelection = null;\n }\n }\n };\n\n TextareaInput.prototype.getField = function () {\n return this.textarea;\n };\n\n TextareaInput.prototype.supportsTouch = function () {\n return false;\n };\n\n TextareaInput.prototype.focus = function () {\n if (this.cm.options.readOnly != \"nocursor\" && (!mobile || activeElt() != this.textarea)) {\n try {\n this.textarea.focus();\n } catch (e) {} // IE8 will throw if the textarea is display: none or not in DOM\n\n }\n };\n\n TextareaInput.prototype.blur = function () {\n this.textarea.blur();\n };\n\n TextareaInput.prototype.resetPosition = function () {\n this.wrapper.style.top = this.wrapper.style.left = 0;\n };\n\n TextareaInput.prototype.receivedFocus = function () {\n this.slowPoll();\n }; // Poll for input changes, using the normal rate of polling. This\n // runs as long as the editor is focused.\n\n\n TextareaInput.prototype.slowPoll = function () {\n var this$1 = this;\n\n if (this.pollingFast) {\n return;\n }\n\n this.polling.set(this.cm.options.pollInterval, function () {\n this$1.poll();\n\n if (this$1.cm.state.focused) {\n this$1.slowPoll();\n }\n });\n }; // When an event has just come in that is likely to add or change\n // something in the input textarea, we poll faster, to ensure that\n // the change appears on the screen quickly.\n\n\n TextareaInput.prototype.fastPoll = function () {\n var missed = false,\n input = this;\n input.pollingFast = true;\n\n function p() {\n var changed = input.poll();\n\n if (!changed && !missed) {\n missed = true;\n input.polling.set(60, p);\n } else {\n input.pollingFast = false;\n input.slowPoll();\n }\n }\n\n input.polling.set(20, p);\n }; // Read input from the textarea, and update the document to match.\n // When something is selected, it is present in the textarea, and\n // selected (unless it is huge, in which case a placeholder is\n // used). When nothing is selected, the cursor sits after previously\n // seen text (can be empty), which is stored in prevInput (we must\n // not reset the textarea when typing, because that breaks IME).\n\n\n TextareaInput.prototype.poll = function () {\n var this$1 = this;\n var cm = this.cm,\n input = this.textarea,\n prevInput = this.prevInput; // Since this is called a *lot*, try to bail out as cheaply as\n // possible when it is clear that nothing happened. hasSelection\n // will be the case when there is a lot of text in the textarea,\n // in which case reading its value would be expensive.\n\n if (this.contextMenuPending || !cm.state.focused || hasSelection(input) && !prevInput && !this.composing || cm.isReadOnly() || cm.options.disableInput || cm.state.keySeq) {\n return false;\n }\n\n var text = input.value; // If nothing changed, bail.\n\n if (text == prevInput && !cm.somethingSelected()) {\n return false;\n } // Work around nonsensical selection resetting in IE9/10, and\n // inexplicable appearance of private area unicode characters on\n // some key combos in Mac (#2689).\n\n\n if (ie && ie_version >= 9 && this.hasSelection === text || mac && /[\\uf700-\\uf7ff]/.test(text)) {\n cm.display.input.reset();\n return false;\n }\n\n if (cm.doc.sel == cm.display.selForContextMenu) {\n var first = text.charCodeAt(0);\n\n if (first == 0x200b && !prevInput) {\n prevInput = \"\\u200B\";\n }\n\n if (first == 0x21da) {\n this.reset();\n return this.cm.execCommand(\"undo\");\n }\n } // Find the part of the input that is actually new\n\n\n var same = 0,\n l = Math.min(prevInput.length, text.length);\n\n while (same < l && prevInput.charCodeAt(same) == text.charCodeAt(same)) {\n ++same;\n }\n\n runInOp(cm, function () {\n applyTextInput(cm, text.slice(same), prevInput.length - same, null, this$1.composing ? \"*compose\" : null); // Don't leave long text in the textarea, since it makes further polling slow\n\n if (text.length > 1000 || text.indexOf(\"\\n\") > -1) {\n input.value = this$1.prevInput = \"\";\n } else {\n this$1.prevInput = text;\n }\n\n if (this$1.composing) {\n this$1.composing.range.clear();\n this$1.composing.range = cm.markText(this$1.composing.start, cm.getCursor(\"to\"), {\n className: \"CodeMirror-composing\"\n });\n }\n });\n return true;\n };\n\n TextareaInput.prototype.ensurePolled = function () {\n if (this.pollingFast && this.poll()) {\n this.pollingFast = false;\n }\n };\n\n TextareaInput.prototype.onKeyPress = function () {\n if (ie && ie_version >= 9) {\n this.hasSelection = null;\n }\n\n this.fastPoll();\n };\n\n TextareaInput.prototype.onContextMenu = function (e) {\n var input = this,\n cm = input.cm,\n display = cm.display,\n te = input.textarea;\n\n if (input.contextMenuPending) {\n input.contextMenuPending();\n }\n\n var pos = posFromMouse(cm, e),\n scrollPos = display.scroller.scrollTop;\n\n if (!pos || presto) {\n return;\n } // Opera is difficult.\n // Reset the current text selection only if the click is done outside of the selection\n // and 'resetSelectionOnContextMenu' option is true.\n\n\n var reset = cm.options.resetSelectionOnContextMenu;\n\n if (reset && cm.doc.sel.contains(pos) == -1) {\n operation(cm, setSelection)(cm.doc, simpleSelection(pos), sel_dontScroll);\n }\n\n var oldCSS = te.style.cssText,\n oldWrapperCSS = input.wrapper.style.cssText;\n var wrapperBox = input.wrapper.offsetParent.getBoundingClientRect();\n input.wrapper.style.cssText = \"position: static\";\n te.style.cssText = \"position: absolute; width: 30px; height: 30px;\\n top: \" + (e.clientY - wrapperBox.top - 5) + \"px; left: \" + (e.clientX - wrapperBox.left - 5) + \"px;\\n z-index: 1000; background: \" + (ie ? \"rgba(255, 255, 255, .05)\" : \"transparent\") + \";\\n outline: none; border-width: 0; outline: none; overflow: hidden; opacity: .05; filter: alpha(opacity=5);\";\n var oldScrollY;\n\n if (webkit) {\n oldScrollY = window.scrollY;\n } // Work around Chrome issue (#2712)\n\n\n display.input.focus();\n\n if (webkit) {\n window.scrollTo(null, oldScrollY);\n }\n\n display.input.reset(); // Adds \"Select all\" to context menu in FF\n\n if (!cm.somethingSelected()) {\n te.value = input.prevInput = \" \";\n }\n\n input.contextMenuPending = rehide;\n display.selForContextMenu = cm.doc.sel;\n clearTimeout(display.detectingSelectAll); // Select-all will be greyed out if there's nothing to select, so\n // this adds a zero-width space so that we can later check whether\n // it got selected.\n\n function prepareSelectAllHack() {\n if (te.selectionStart != null) {\n var selected = cm.somethingSelected();\n var extval = \"\\u200B\" + (selected ? te.value : \"\");\n te.value = \"\\u21DA\"; // Used to catch context-menu undo\n\n te.value = extval;\n input.prevInput = selected ? \"\" : \"\\u200B\";\n te.selectionStart = 1;\n te.selectionEnd = extval.length; // Re-set this, in case some other handler touched the\n // selection in the meantime.\n\n display.selForContextMenu = cm.doc.sel;\n }\n }\n\n function rehide() {\n if (input.contextMenuPending != rehide) {\n return;\n }\n\n input.contextMenuPending = false;\n input.wrapper.style.cssText = oldWrapperCSS;\n te.style.cssText = oldCSS;\n\n if (ie && ie_version < 9) {\n display.scrollbars.setScrollTop(display.scroller.scrollTop = scrollPos);\n } // Try to detect the user choosing select-all\n\n\n if (te.selectionStart != null) {\n if (!ie || ie && ie_version < 9) {\n prepareSelectAllHack();\n }\n\n var i = 0,\n poll = function poll() {\n if (display.selForContextMenu == cm.doc.sel && te.selectionStart == 0 && te.selectionEnd > 0 && input.prevInput == \"\\u200B\") {\n operation(cm, selectAll)(cm);\n } else if (i++ < 10) {\n display.detectingSelectAll = setTimeout(poll, 500);\n } else {\n display.selForContextMenu = null;\n display.input.reset();\n }\n };\n\n display.detectingSelectAll = setTimeout(poll, 200);\n }\n }\n\n if (ie && ie_version >= 9) {\n prepareSelectAllHack();\n }\n\n if (captureRightClick) {\n e_stop(e);\n\n var mouseup = function mouseup() {\n off(window, \"mouseup\", mouseup);\n setTimeout(rehide, 20);\n };\n\n on(window, \"mouseup\", mouseup);\n } else {\n setTimeout(rehide, 50);\n }\n };\n\n TextareaInput.prototype.readOnlyChanged = function (val) {\n if (!val) {\n this.reset();\n }\n\n this.textarea.disabled = val == \"nocursor\";\n this.textarea.readOnly = !!val;\n };\n\n TextareaInput.prototype.setUneditable = function () {};\n\n TextareaInput.prototype.needsContentAttribute = false;\n\n function fromTextArea(textarea, options) {\n options = options ? copyObj(options) : {};\n options.value = textarea.value;\n\n if (!options.tabindex && textarea.tabIndex) {\n options.tabindex = textarea.tabIndex;\n }\n\n if (!options.placeholder && textarea.placeholder) {\n options.placeholder = textarea.placeholder;\n } // Set autofocus to true if this textarea is focused, or if it has\n // autofocus and no other element is focused.\n\n\n if (options.autofocus == null) {\n var hasFocus = activeElt();\n options.autofocus = hasFocus == textarea || textarea.getAttribute(\"autofocus\") != null && hasFocus == document.body;\n }\n\n function save() {\n textarea.value = cm.getValue();\n }\n\n var realSubmit;\n\n if (textarea.form) {\n on(textarea.form, \"submit\", save); // Deplorable hack to make the submit method do the right thing.\n\n if (!options.leaveSubmitMethodAlone) {\n var form = textarea.form;\n realSubmit = form.submit;\n\n try {\n var wrappedSubmit = form.submit = function () {\n save();\n form.submit = realSubmit;\n form.submit();\n form.submit = wrappedSubmit;\n };\n } catch (e) {}\n }\n }\n\n options.finishInit = function (cm) {\n cm.save = save;\n\n cm.getTextArea = function () {\n return textarea;\n };\n\n cm.toTextArea = function () {\n cm.toTextArea = isNaN; // Prevent this from being ran twice\n\n save();\n textarea.parentNode.removeChild(cm.getWrapperElement());\n textarea.style.display = \"\";\n\n if (textarea.form) {\n off(textarea.form, \"submit\", save);\n\n if (!options.leaveSubmitMethodAlone && typeof textarea.form.submit == \"function\") {\n textarea.form.submit = realSubmit;\n }\n }\n };\n };\n\n textarea.style.display = \"none\";\n var cm = CodeMirror(function (node) {\n return textarea.parentNode.insertBefore(node, textarea.nextSibling);\n }, options);\n return cm;\n }\n\n function addLegacyProps(CodeMirror) {\n CodeMirror.off = off;\n CodeMirror.on = on;\n CodeMirror.wheelEventPixels = wheelEventPixels;\n CodeMirror.Doc = Doc;\n CodeMirror.splitLines = splitLinesAuto;\n CodeMirror.countColumn = countColumn;\n CodeMirror.findColumn = findColumn;\n CodeMirror.isWordChar = isWordCharBasic;\n CodeMirror.Pass = Pass;\n CodeMirror.signal = signal;\n CodeMirror.Line = Line;\n CodeMirror.changeEnd = changeEnd;\n CodeMirror.scrollbarModel = scrollbarModel;\n CodeMirror.Pos = Pos;\n CodeMirror.cmpPos = cmp;\n CodeMirror.modes = modes;\n CodeMirror.mimeModes = mimeModes;\n CodeMirror.resolveMode = resolveMode;\n CodeMirror.getMode = getMode;\n CodeMirror.modeExtensions = modeExtensions;\n CodeMirror.extendMode = extendMode;\n CodeMirror.copyState = copyState;\n CodeMirror.startState = startState;\n CodeMirror.innerMode = innerMode;\n CodeMirror.commands = commands;\n CodeMirror.keyMap = keyMap;\n CodeMirror.keyName = keyName;\n CodeMirror.isModifierKey = isModifierKey;\n CodeMirror.lookupKey = lookupKey;\n CodeMirror.normalizeKeyMap = normalizeKeyMap;\n CodeMirror.StringStream = StringStream;\n CodeMirror.SharedTextMarker = SharedTextMarker;\n CodeMirror.TextMarker = TextMarker;\n CodeMirror.LineWidget = LineWidget;\n CodeMirror.e_preventDefault = e_preventDefault;\n CodeMirror.e_stopPropagation = e_stopPropagation;\n CodeMirror.e_stop = e_stop;\n CodeMirror.addClass = addClass;\n CodeMirror.contains = contains;\n CodeMirror.rmClass = rmClass;\n CodeMirror.keyNames = keyNames;\n } // EDITOR CONSTRUCTOR\n\n\n defineOptions(CodeMirror);\n addEditorMethods(CodeMirror); // Set up methods on CodeMirror's prototype to redirect to the editor's document.\n\n var dontDelegate = \"iter insert remove copy getEditor constructor\".split(\" \");\n\n for (var prop in Doc.prototype) {\n if (Doc.prototype.hasOwnProperty(prop) && indexOf(dontDelegate, prop) < 0) {\n CodeMirror.prototype[prop] = function (method) {\n return function () {\n return method.apply(this.doc, arguments);\n };\n }(Doc.prototype[prop]);\n }\n }\n\n eventMixin(Doc);\n CodeMirror.inputStyles = {\n \"textarea\": TextareaInput,\n \"contenteditable\": ContentEditableInput\n }; // Extra arguments are stored as the mode's dependencies, which is\n // used by (legacy) mechanisms like loadmode.js to automatically\n // load a mode. (Preferred mechanism is the require/define calls.)\n\n CodeMirror.defineMode = function (name\n /*, mode, …*/\n ) {\n if (!CodeMirror.defaults.mode && name != \"null\") {\n CodeMirror.defaults.mode = name;\n }\n\n defineMode.apply(this, arguments);\n };\n\n CodeMirror.defineMIME = defineMIME; // Minimal default mode.\n\n CodeMirror.defineMode(\"null\", function () {\n return {\n token: function token(stream) {\n return stream.skipToEnd();\n }\n };\n });\n CodeMirror.defineMIME(\"text/plain\", \"null\"); // EXTENSIONS\n\n CodeMirror.defineExtension = function (name, func) {\n CodeMirror.prototype[name] = func;\n };\n\n CodeMirror.defineDocExtension = function (name, func) {\n Doc.prototype[name] = func;\n };\n\n CodeMirror.fromTextArea = fromTextArea;\n addLegacyProps(CodeMirror);\n CodeMirror.version = \"5.65.2\";\n return CodeMirror;\n});","var EventListener =\n/** @class */\nfunction () {\n function EventListener(eventTarget, eventName) {\n this.eventTarget = eventTarget;\n this.eventName = eventName;\n this.unorderedBindings = new Set();\n }\n\n EventListener.prototype.connect = function () {\n this.eventTarget.addEventListener(this.eventName, this, false);\n };\n\n EventListener.prototype.disconnect = function () {\n this.eventTarget.removeEventListener(this.eventName, this, false);\n }; // Binding observer delegate\n\n /** @hidden */\n\n\n EventListener.prototype.bindingConnected = function (binding) {\n this.unorderedBindings.add(binding);\n };\n /** @hidden */\n\n\n EventListener.prototype.bindingDisconnected = function (binding) {\n this.unorderedBindings.delete(binding);\n };\n\n EventListener.prototype.handleEvent = function (event) {\n var extendedEvent = extendEvent(event);\n\n for (var _i = 0, _a = this.bindings; _i < _a.length; _i++) {\n var binding = _a[_i];\n\n if (extendedEvent.immediatePropagationStopped) {\n break;\n } else {\n binding.handleEvent(extendedEvent);\n }\n }\n };\n\n Object.defineProperty(EventListener.prototype, \"bindings\", {\n get: function get() {\n return Array.from(this.unorderedBindings).sort(function (left, right) {\n var leftIndex = left.index,\n rightIndex = right.index;\n return leftIndex < rightIndex ? -1 : leftIndex > rightIndex ? 1 : 0;\n });\n },\n enumerable: true,\n configurable: true\n });\n return EventListener;\n}();\n\nexport { EventListener };\n\nfunction extendEvent(event) {\n if (\"immediatePropagationStopped\" in event) {\n return event;\n } else {\n var stopImmediatePropagation_1 = event.stopImmediatePropagation;\n return Object.assign(event, {\n immediatePropagationStopped: false,\n stopImmediatePropagation: function stopImmediatePropagation() {\n this.immediatePropagationStopped = true;\n stopImmediatePropagation_1.call(this);\n }\n });\n }\n}","import { EventListener } from \"./event_listener\";\n\nvar Dispatcher =\n/** @class */\nfunction () {\n function Dispatcher(application) {\n this.application = application;\n this.eventListenerMaps = new Map();\n this.started = false;\n }\n\n Dispatcher.prototype.start = function () {\n if (!this.started) {\n this.started = true;\n this.eventListeners.forEach(function (eventListener) {\n return eventListener.connect();\n });\n }\n };\n\n Dispatcher.prototype.stop = function () {\n if (this.started) {\n this.started = false;\n this.eventListeners.forEach(function (eventListener) {\n return eventListener.disconnect();\n });\n }\n };\n\n Object.defineProperty(Dispatcher.prototype, \"eventListeners\", {\n get: function get() {\n return Array.from(this.eventListenerMaps.values()).reduce(function (listeners, map) {\n return listeners.concat(Array.from(map.values()));\n }, []);\n },\n enumerable: true,\n configurable: true\n }); // Binding observer delegate\n\n /** @hidden */\n\n Dispatcher.prototype.bindingConnected = function (binding) {\n this.fetchEventListenerForBinding(binding).bindingConnected(binding);\n };\n /** @hidden */\n\n\n Dispatcher.prototype.bindingDisconnected = function (binding) {\n this.fetchEventListenerForBinding(binding).bindingDisconnected(binding);\n }; // Error handling\n\n\n Dispatcher.prototype.handleError = function (error, message, detail) {\n if (detail === void 0) {\n detail = {};\n }\n\n this.application.handleError(error, \"Error \" + message, detail);\n };\n\n Dispatcher.prototype.fetchEventListenerForBinding = function (binding) {\n var eventTarget = binding.eventTarget,\n eventName = binding.eventName;\n return this.fetchEventListener(eventTarget, eventName);\n };\n\n Dispatcher.prototype.fetchEventListener = function (eventTarget, eventName) {\n var eventListenerMap = this.fetchEventListenerMapForEventTarget(eventTarget);\n var eventListener = eventListenerMap.get(eventName);\n\n if (!eventListener) {\n eventListener = this.createEventListener(eventTarget, eventName);\n eventListenerMap.set(eventName, eventListener);\n }\n\n return eventListener;\n };\n\n Dispatcher.prototype.createEventListener = function (eventTarget, eventName) {\n var eventListener = new EventListener(eventTarget, eventName);\n\n if (this.started) {\n eventListener.connect();\n }\n\n return eventListener;\n };\n\n Dispatcher.prototype.fetchEventListenerMapForEventTarget = function (eventTarget) {\n var eventListenerMap = this.eventListenerMaps.get(eventTarget);\n\n if (!eventListenerMap) {\n eventListenerMap = new Map();\n this.eventListenerMaps.set(eventTarget, eventListenerMap);\n }\n\n return eventListenerMap;\n };\n\n return Dispatcher;\n}();\n\nexport { Dispatcher };","// capture nos.: 12 23 4 43 1 5 56 7 76\nvar descriptorPattern = /^((.+?)(@(window|document))?->)?(.+?)(#(.+))?$/;\nexport function parseDescriptorString(descriptorString) {\n var source = descriptorString.trim();\n var matches = source.match(descriptorPattern) || [];\n return {\n eventTarget: parseEventTarget(matches[4]),\n eventName: matches[2],\n identifier: matches[5],\n methodName: matches[7]\n };\n}\n\nfunction parseEventTarget(eventTargetName) {\n if (eventTargetName == \"window\") {\n return window;\n } else if (eventTargetName == \"document\") {\n return document;\n }\n}\n\nexport function stringifyEventTarget(eventTarget) {\n if (eventTarget == window) {\n return \"window\";\n } else if (eventTarget == document) {\n return \"document\";\n }\n}","import { parseDescriptorString, stringifyEventTarget } from \"./action_descriptor\";\n\nvar Action =\n/** @class */\nfunction () {\n function Action(element, index, descriptor) {\n this.element = element;\n this.index = index;\n this.eventTarget = descriptor.eventTarget || element;\n this.eventName = descriptor.eventName || getDefaultEventNameForElement(element) || error(\"missing event name\");\n this.identifier = descriptor.identifier || error(\"missing identifier\");\n this.methodName = descriptor.methodName || error(\"missing method name\");\n }\n\n Action.forToken = function (token) {\n return new this(token.element, token.index, parseDescriptorString(token.content));\n };\n\n Action.prototype.toString = function () {\n var eventNameSuffix = this.eventTargetName ? \"@\" + this.eventTargetName : \"\";\n return \"\" + this.eventName + eventNameSuffix + \"->\" + this.identifier + \"#\" + this.methodName;\n };\n\n Object.defineProperty(Action.prototype, \"eventTargetName\", {\n get: function get() {\n return stringifyEventTarget(this.eventTarget);\n },\n enumerable: true,\n configurable: true\n });\n return Action;\n}();\n\nexport { Action };\nvar defaultEventNames = {\n \"a\": function a(e) {\n return \"click\";\n },\n \"button\": function button(e) {\n return \"click\";\n },\n \"form\": function form(e) {\n return \"submit\";\n },\n \"input\": function input(e) {\n return e.getAttribute(\"type\") == \"submit\" ? \"click\" : \"change\";\n },\n \"select\": function select(e) {\n return \"change\";\n },\n \"textarea\": function textarea(e) {\n return \"change\";\n }\n};\nexport function getDefaultEventNameForElement(element) {\n var tagName = element.tagName.toLowerCase();\n\n if (tagName in defaultEventNames) {\n return defaultEventNames[tagName](element);\n }\n}\n\nfunction error(message) {\n throw new Error(message);\n}","var Binding =\n/** @class */\nfunction () {\n function Binding(context, action) {\n this.context = context;\n this.action = action;\n }\n\n Object.defineProperty(Binding.prototype, \"index\", {\n get: function get() {\n return this.action.index;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Binding.prototype, \"eventTarget\", {\n get: function get() {\n return this.action.eventTarget;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Binding.prototype, \"identifier\", {\n get: function get() {\n return this.context.identifier;\n },\n enumerable: true,\n configurable: true\n });\n\n Binding.prototype.handleEvent = function (event) {\n if (this.willBeInvokedByEvent(event)) {\n this.invokeWithEvent(event);\n }\n };\n\n Object.defineProperty(Binding.prototype, \"eventName\", {\n get: function get() {\n return this.action.eventName;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Binding.prototype, \"method\", {\n get: function get() {\n var method = this.controller[this.methodName];\n\n if (typeof method == \"function\") {\n return method;\n }\n\n throw new Error(\"Action \\\"\" + this.action + \"\\\" references undefined method \\\"\" + this.methodName + \"\\\"\");\n },\n enumerable: true,\n configurable: true\n });\n\n Binding.prototype.invokeWithEvent = function (event) {\n try {\n this.method.call(this.controller, event);\n } catch (error) {\n var _a = this,\n identifier = _a.identifier,\n controller = _a.controller,\n element = _a.element,\n index = _a.index;\n\n var detail = {\n identifier: identifier,\n controller: controller,\n element: element,\n index: index,\n event: event\n };\n this.context.handleError(error, \"invoking action \\\"\" + this.action + \"\\\"\", detail);\n }\n };\n\n Binding.prototype.willBeInvokedByEvent = function (event) {\n var eventTarget = event.target;\n\n if (this.element === eventTarget) {\n return true;\n } else if (eventTarget instanceof Element && this.element.contains(eventTarget)) {\n return this.scope.containsElement(eventTarget);\n } else {\n return true;\n }\n };\n\n Object.defineProperty(Binding.prototype, \"controller\", {\n get: function get() {\n return this.context.controller;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Binding.prototype, \"methodName\", {\n get: function get() {\n return this.action.methodName;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Binding.prototype, \"element\", {\n get: function get() {\n return this.scope.element;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Binding.prototype, \"scope\", {\n get: function get() {\n return this.context.scope;\n },\n enumerable: true,\n configurable: true\n });\n return Binding;\n}();\n\nexport { Binding };","var ElementObserver =\n/** @class */\nfunction () {\n function ElementObserver(element, delegate) {\n var _this = this;\n\n this.element = element;\n this.started = false;\n this.delegate = delegate;\n this.elements = new Set();\n this.mutationObserver = new MutationObserver(function (mutations) {\n return _this.processMutations(mutations);\n });\n }\n\n ElementObserver.prototype.start = function () {\n if (!this.started) {\n this.started = true;\n this.mutationObserver.observe(this.element, {\n attributes: true,\n childList: true,\n subtree: true\n });\n this.refresh();\n }\n };\n\n ElementObserver.prototype.stop = function () {\n if (this.started) {\n this.mutationObserver.takeRecords();\n this.mutationObserver.disconnect();\n this.started = false;\n }\n };\n\n ElementObserver.prototype.refresh = function () {\n if (this.started) {\n var matches = new Set(this.matchElementsInTree());\n\n for (var _i = 0, _a = Array.from(this.elements); _i < _a.length; _i++) {\n var element = _a[_i];\n\n if (!matches.has(element)) {\n this.removeElement(element);\n }\n }\n\n for (var _b = 0, _c = Array.from(matches); _b < _c.length; _b++) {\n var element = _c[_b];\n this.addElement(element);\n }\n }\n }; // Mutation record processing\n\n\n ElementObserver.prototype.processMutations = function (mutations) {\n if (this.started) {\n for (var _i = 0, mutations_1 = mutations; _i < mutations_1.length; _i++) {\n var mutation = mutations_1[_i];\n this.processMutation(mutation);\n }\n }\n };\n\n ElementObserver.prototype.processMutation = function (mutation) {\n if (mutation.type == \"attributes\") {\n this.processAttributeChange(mutation.target, mutation.attributeName);\n } else if (mutation.type == \"childList\") {\n this.processRemovedNodes(mutation.removedNodes);\n this.processAddedNodes(mutation.addedNodes);\n }\n };\n\n ElementObserver.prototype.processAttributeChange = function (node, attributeName) {\n var element = node;\n\n if (this.elements.has(element)) {\n if (this.delegate.elementAttributeChanged && this.matchElement(element)) {\n this.delegate.elementAttributeChanged(element, attributeName);\n } else {\n this.removeElement(element);\n }\n } else if (this.matchElement(element)) {\n this.addElement(element);\n }\n };\n\n ElementObserver.prototype.processRemovedNodes = function (nodes) {\n for (var _i = 0, _a = Array.from(nodes); _i < _a.length; _i++) {\n var node = _a[_i];\n var element = this.elementFromNode(node);\n\n if (element) {\n this.processTree(element, this.removeElement);\n }\n }\n };\n\n ElementObserver.prototype.processAddedNodes = function (nodes) {\n for (var _i = 0, _a = Array.from(nodes); _i < _a.length; _i++) {\n var node = _a[_i];\n var element = this.elementFromNode(node);\n\n if (element && this.elementIsActive(element)) {\n this.processTree(element, this.addElement);\n }\n }\n }; // Element matching\n\n\n ElementObserver.prototype.matchElement = function (element) {\n return this.delegate.matchElement(element);\n };\n\n ElementObserver.prototype.matchElementsInTree = function (tree) {\n if (tree === void 0) {\n tree = this.element;\n }\n\n return this.delegate.matchElementsInTree(tree);\n };\n\n ElementObserver.prototype.processTree = function (tree, processor) {\n for (var _i = 0, _a = this.matchElementsInTree(tree); _i < _a.length; _i++) {\n var element = _a[_i];\n processor.call(this, element);\n }\n };\n\n ElementObserver.prototype.elementFromNode = function (node) {\n if (node.nodeType == Node.ELEMENT_NODE) {\n return node;\n }\n };\n\n ElementObserver.prototype.elementIsActive = function (element) {\n if (element.isConnected != this.element.isConnected) {\n return false;\n } else {\n return this.element.contains(element);\n }\n }; // Element tracking\n\n\n ElementObserver.prototype.addElement = function (element) {\n if (!this.elements.has(element)) {\n if (this.elementIsActive(element)) {\n this.elements.add(element);\n\n if (this.delegate.elementMatched) {\n this.delegate.elementMatched(element);\n }\n }\n }\n };\n\n ElementObserver.prototype.removeElement = function (element) {\n if (this.elements.has(element)) {\n this.elements.delete(element);\n\n if (this.delegate.elementUnmatched) {\n this.delegate.elementUnmatched(element);\n }\n }\n };\n\n return ElementObserver;\n}();\n\nexport { ElementObserver };","import { ElementObserver } from \"./element_observer\";\n\nvar AttributeObserver =\n/** @class */\nfunction () {\n function AttributeObserver(element, attributeName, delegate) {\n this.attributeName = attributeName;\n this.delegate = delegate;\n this.elementObserver = new ElementObserver(element, this);\n }\n\n Object.defineProperty(AttributeObserver.prototype, \"element\", {\n get: function get() {\n return this.elementObserver.element;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(AttributeObserver.prototype, \"selector\", {\n get: function get() {\n return \"[\" + this.attributeName + \"]\";\n },\n enumerable: true,\n configurable: true\n });\n\n AttributeObserver.prototype.start = function () {\n this.elementObserver.start();\n };\n\n AttributeObserver.prototype.stop = function () {\n this.elementObserver.stop();\n };\n\n AttributeObserver.prototype.refresh = function () {\n this.elementObserver.refresh();\n };\n\n Object.defineProperty(AttributeObserver.prototype, \"started\", {\n get: function get() {\n return this.elementObserver.started;\n },\n enumerable: true,\n configurable: true\n }); // Element observer delegate\n\n AttributeObserver.prototype.matchElement = function (element) {\n return element.hasAttribute(this.attributeName);\n };\n\n AttributeObserver.prototype.matchElementsInTree = function (tree) {\n var match = this.matchElement(tree) ? [tree] : [];\n var matches = Array.from(tree.querySelectorAll(this.selector));\n return match.concat(matches);\n };\n\n AttributeObserver.prototype.elementMatched = function (element) {\n if (this.delegate.elementMatchedAttribute) {\n this.delegate.elementMatchedAttribute(element, this.attributeName);\n }\n };\n\n AttributeObserver.prototype.elementUnmatched = function (element) {\n if (this.delegate.elementUnmatchedAttribute) {\n this.delegate.elementUnmatchedAttribute(element, this.attributeName);\n }\n };\n\n AttributeObserver.prototype.elementAttributeChanged = function (element, attributeName) {\n if (this.delegate.elementAttributeValueChanged && this.attributeName == attributeName) {\n this.delegate.elementAttributeValueChanged(element, attributeName);\n }\n };\n\n return AttributeObserver;\n}();\n\nexport { AttributeObserver };","export function add(map, key, value) {\n fetch(map, key).add(value);\n}\nexport function del(map, key, value) {\n fetch(map, key).delete(value);\n prune(map, key);\n}\nexport function fetch(map, key) {\n var values = map.get(key);\n\n if (!values) {\n values = new Set();\n map.set(key, values);\n }\n\n return values;\n}\nexport function prune(map, key) {\n var values = map.get(key);\n\n if (values != null && values.size == 0) {\n map.delete(key);\n }\n}","import { add, del } from \"./set_operations\";\n\nvar Multimap =\n/** @class */\nfunction () {\n function Multimap() {\n this.valuesByKey = new Map();\n }\n\n Object.defineProperty(Multimap.prototype, \"values\", {\n get: function get() {\n var sets = Array.from(this.valuesByKey.values());\n return sets.reduce(function (values, set) {\n return values.concat(Array.from(set));\n }, []);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Multimap.prototype, \"size\", {\n get: function get() {\n var sets = Array.from(this.valuesByKey.values());\n return sets.reduce(function (size, set) {\n return size + set.size;\n }, 0);\n },\n enumerable: true,\n configurable: true\n });\n\n Multimap.prototype.add = function (key, value) {\n add(this.valuesByKey, key, value);\n };\n\n Multimap.prototype.delete = function (key, value) {\n del(this.valuesByKey, key, value);\n };\n\n Multimap.prototype.has = function (key, value) {\n var values = this.valuesByKey.get(key);\n return values != null && values.has(value);\n };\n\n Multimap.prototype.hasKey = function (key) {\n return this.valuesByKey.has(key);\n };\n\n Multimap.prototype.hasValue = function (value) {\n var sets = Array.from(this.valuesByKey.values());\n return sets.some(function (set) {\n return set.has(value);\n });\n };\n\n Multimap.prototype.getValuesForKey = function (key) {\n var values = this.valuesByKey.get(key);\n return values ? Array.from(values) : [];\n };\n\n Multimap.prototype.getKeysForValue = function (value) {\n return Array.from(this.valuesByKey).filter(function (_a) {\n var key = _a[0],\n values = _a[1];\n return values.has(value);\n }).map(function (_a) {\n var key = _a[0],\n values = _a[1];\n return key;\n });\n };\n\n return Multimap;\n}();\n\nexport { Multimap };","var __extends = this && this.__extends || function () {\n var extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return function (d, b) {\n extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\n\nimport { Multimap } from \"./multimap\";\nimport { add, del } from \"./set_operations\";\n\nvar IndexedMultimap =\n/** @class */\nfunction (_super) {\n __extends(IndexedMultimap, _super);\n\n function IndexedMultimap() {\n var _this = _super.call(this) || this;\n\n _this.keysByValue = new Map();\n return _this;\n }\n\n Object.defineProperty(IndexedMultimap.prototype, \"values\", {\n get: function get() {\n return Array.from(this.keysByValue.keys());\n },\n enumerable: true,\n configurable: true\n });\n\n IndexedMultimap.prototype.add = function (key, value) {\n _super.prototype.add.call(this, key, value);\n\n add(this.keysByValue, value, key);\n };\n\n IndexedMultimap.prototype.delete = function (key, value) {\n _super.prototype.delete.call(this, key, value);\n\n del(this.keysByValue, value, key);\n };\n\n IndexedMultimap.prototype.hasValue = function (value) {\n return this.keysByValue.has(value);\n };\n\n IndexedMultimap.prototype.getKeysForValue = function (value) {\n var set = this.keysByValue.get(value);\n return set ? Array.from(set) : [];\n };\n\n return IndexedMultimap;\n}(Multimap);\n\nexport { IndexedMultimap };","import { AttributeObserver } from \"./attribute_observer\";\nimport { Multimap } from \"@stimulus/multimap\";\n\nvar TokenListObserver =\n/** @class */\nfunction () {\n function TokenListObserver(element, attributeName, delegate) {\n this.attributeObserver = new AttributeObserver(element, attributeName, this);\n this.delegate = delegate;\n this.tokensByElement = new Multimap();\n }\n\n Object.defineProperty(TokenListObserver.prototype, \"started\", {\n get: function get() {\n return this.attributeObserver.started;\n },\n enumerable: true,\n configurable: true\n });\n\n TokenListObserver.prototype.start = function () {\n this.attributeObserver.start();\n };\n\n TokenListObserver.prototype.stop = function () {\n this.attributeObserver.stop();\n };\n\n TokenListObserver.prototype.refresh = function () {\n this.attributeObserver.refresh();\n };\n\n Object.defineProperty(TokenListObserver.prototype, \"element\", {\n get: function get() {\n return this.attributeObserver.element;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TokenListObserver.prototype, \"attributeName\", {\n get: function get() {\n return this.attributeObserver.attributeName;\n },\n enumerable: true,\n configurable: true\n }); // Attribute observer delegate\n\n TokenListObserver.prototype.elementMatchedAttribute = function (element) {\n this.tokensMatched(this.readTokensForElement(element));\n };\n\n TokenListObserver.prototype.elementAttributeValueChanged = function (element) {\n var _a = this.refreshTokensForElement(element),\n unmatchedTokens = _a[0],\n matchedTokens = _a[1];\n\n this.tokensUnmatched(unmatchedTokens);\n this.tokensMatched(matchedTokens);\n };\n\n TokenListObserver.prototype.elementUnmatchedAttribute = function (element) {\n this.tokensUnmatched(this.tokensByElement.getValuesForKey(element));\n };\n\n TokenListObserver.prototype.tokensMatched = function (tokens) {\n var _this = this;\n\n tokens.forEach(function (token) {\n return _this.tokenMatched(token);\n });\n };\n\n TokenListObserver.prototype.tokensUnmatched = function (tokens) {\n var _this = this;\n\n tokens.forEach(function (token) {\n return _this.tokenUnmatched(token);\n });\n };\n\n TokenListObserver.prototype.tokenMatched = function (token) {\n this.delegate.tokenMatched(token);\n this.tokensByElement.add(token.element, token);\n };\n\n TokenListObserver.prototype.tokenUnmatched = function (token) {\n this.delegate.tokenUnmatched(token);\n this.tokensByElement.delete(token.element, token);\n };\n\n TokenListObserver.prototype.refreshTokensForElement = function (element) {\n var previousTokens = this.tokensByElement.getValuesForKey(element);\n var currentTokens = this.readTokensForElement(element);\n var firstDifferingIndex = zip(previousTokens, currentTokens).findIndex(function (_a) {\n var previousToken = _a[0],\n currentToken = _a[1];\n return !tokensAreEqual(previousToken, currentToken);\n });\n\n if (firstDifferingIndex == -1) {\n return [[], []];\n } else {\n return [previousTokens.slice(firstDifferingIndex), currentTokens.slice(firstDifferingIndex)];\n }\n };\n\n TokenListObserver.prototype.readTokensForElement = function (element) {\n var attributeName = this.attributeName;\n var tokenString = element.getAttribute(attributeName) || \"\";\n return parseTokenString(tokenString, element, attributeName);\n };\n\n return TokenListObserver;\n}();\n\nexport { TokenListObserver };\n\nfunction parseTokenString(tokenString, element, attributeName) {\n return tokenString.trim().split(/\\s+/).filter(function (content) {\n return content.length;\n }).map(function (content, index) {\n return {\n element: element,\n attributeName: attributeName,\n content: content,\n index: index\n };\n });\n}\n\nfunction zip(left, right) {\n var length = Math.max(left.length, right.length);\n return Array.from({\n length: length\n }, function (_, index) {\n return [left[index], right[index]];\n });\n}\n\nfunction tokensAreEqual(left, right) {\n return left && right && left.index == right.index && left.content == right.content;\n}","import { TokenListObserver } from \"./token_list_observer\";\n\nvar ValueListObserver =\n/** @class */\nfunction () {\n function ValueListObserver(element, attributeName, delegate) {\n this.tokenListObserver = new TokenListObserver(element, attributeName, this);\n this.delegate = delegate;\n this.parseResultsByToken = new WeakMap();\n this.valuesByTokenByElement = new WeakMap();\n }\n\n Object.defineProperty(ValueListObserver.prototype, \"started\", {\n get: function get() {\n return this.tokenListObserver.started;\n },\n enumerable: true,\n configurable: true\n });\n\n ValueListObserver.prototype.start = function () {\n this.tokenListObserver.start();\n };\n\n ValueListObserver.prototype.stop = function () {\n this.tokenListObserver.stop();\n };\n\n ValueListObserver.prototype.refresh = function () {\n this.tokenListObserver.refresh();\n };\n\n Object.defineProperty(ValueListObserver.prototype, \"element\", {\n get: function get() {\n return this.tokenListObserver.element;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ValueListObserver.prototype, \"attributeName\", {\n get: function get() {\n return this.tokenListObserver.attributeName;\n },\n enumerable: true,\n configurable: true\n });\n\n ValueListObserver.prototype.tokenMatched = function (token) {\n var element = token.element;\n var value = this.fetchParseResultForToken(token).value;\n\n if (value) {\n this.fetchValuesByTokenForElement(element).set(token, value);\n this.delegate.elementMatchedValue(element, value);\n }\n };\n\n ValueListObserver.prototype.tokenUnmatched = function (token) {\n var element = token.element;\n var value = this.fetchParseResultForToken(token).value;\n\n if (value) {\n this.fetchValuesByTokenForElement(element).delete(token);\n this.delegate.elementUnmatchedValue(element, value);\n }\n };\n\n ValueListObserver.prototype.fetchParseResultForToken = function (token) {\n var parseResult = this.parseResultsByToken.get(token);\n\n if (!parseResult) {\n parseResult = this.parseToken(token);\n this.parseResultsByToken.set(token, parseResult);\n }\n\n return parseResult;\n };\n\n ValueListObserver.prototype.fetchValuesByTokenForElement = function (element) {\n var valuesByToken = this.valuesByTokenByElement.get(element);\n\n if (!valuesByToken) {\n valuesByToken = new Map();\n this.valuesByTokenByElement.set(element, valuesByToken);\n }\n\n return valuesByToken;\n };\n\n ValueListObserver.prototype.parseToken = function (token) {\n try {\n var value = this.delegate.parseValueForToken(token);\n return {\n value: value\n };\n } catch (error) {\n return {\n error: error\n };\n }\n };\n\n return ValueListObserver;\n}();\n\nexport { ValueListObserver };","import { Action } from \"./action\";\nimport { Binding } from \"./binding\";\nimport { ValueListObserver } from \"@stimulus/mutation-observers\";\n\nvar BindingObserver =\n/** @class */\nfunction () {\n function BindingObserver(context, delegate) {\n this.context = context;\n this.delegate = delegate;\n this.bindingsByAction = new Map();\n }\n\n BindingObserver.prototype.start = function () {\n if (!this.valueListObserver) {\n this.valueListObserver = new ValueListObserver(this.element, this.actionAttribute, this);\n this.valueListObserver.start();\n }\n };\n\n BindingObserver.prototype.stop = function () {\n if (this.valueListObserver) {\n this.valueListObserver.stop();\n delete this.valueListObserver;\n this.disconnectAllActions();\n }\n };\n\n Object.defineProperty(BindingObserver.prototype, \"element\", {\n get: function get() {\n return this.context.element;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(BindingObserver.prototype, \"identifier\", {\n get: function get() {\n return this.context.identifier;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(BindingObserver.prototype, \"actionAttribute\", {\n get: function get() {\n return this.schema.actionAttribute;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(BindingObserver.prototype, \"schema\", {\n get: function get() {\n return this.context.schema;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(BindingObserver.prototype, \"bindings\", {\n get: function get() {\n return Array.from(this.bindingsByAction.values());\n },\n enumerable: true,\n configurable: true\n });\n\n BindingObserver.prototype.connectAction = function (action) {\n var binding = new Binding(this.context, action);\n this.bindingsByAction.set(action, binding);\n this.delegate.bindingConnected(binding);\n };\n\n BindingObserver.prototype.disconnectAction = function (action) {\n var binding = this.bindingsByAction.get(action);\n\n if (binding) {\n this.bindingsByAction.delete(action);\n this.delegate.bindingDisconnected(binding);\n }\n };\n\n BindingObserver.prototype.disconnectAllActions = function () {\n var _this = this;\n\n this.bindings.forEach(function (binding) {\n return _this.delegate.bindingDisconnected(binding);\n });\n this.bindingsByAction.clear();\n }; // Value observer delegate\n\n\n BindingObserver.prototype.parseValueForToken = function (token) {\n var action = Action.forToken(token);\n\n if (action.identifier == this.identifier) {\n return action;\n }\n };\n\n BindingObserver.prototype.elementMatchedValue = function (element, action) {\n this.connectAction(action);\n };\n\n BindingObserver.prototype.elementUnmatchedValue = function (element, action) {\n this.disconnectAction(action);\n };\n\n return BindingObserver;\n}();\n\nexport { BindingObserver };","import { BindingObserver } from \"./binding_observer\";\n\nvar Context =\n/** @class */\nfunction () {\n function Context(module, scope) {\n this.module = module;\n this.scope = scope;\n this.controller = new module.controllerConstructor(this);\n this.bindingObserver = new BindingObserver(this, this.dispatcher);\n\n try {\n this.controller.initialize();\n } catch (error) {\n this.handleError(error, \"initializing controller\");\n }\n }\n\n Context.prototype.connect = function () {\n this.bindingObserver.start();\n\n try {\n this.controller.connect();\n } catch (error) {\n this.handleError(error, \"connecting controller\");\n }\n };\n\n Context.prototype.disconnect = function () {\n try {\n this.controller.disconnect();\n } catch (error) {\n this.handleError(error, \"disconnecting controller\");\n }\n\n this.bindingObserver.stop();\n };\n\n Object.defineProperty(Context.prototype, \"application\", {\n get: function get() {\n return this.module.application;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Context.prototype, \"identifier\", {\n get: function get() {\n return this.module.identifier;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Context.prototype, \"schema\", {\n get: function get() {\n return this.application.schema;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Context.prototype, \"dispatcher\", {\n get: function get() {\n return this.application.dispatcher;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Context.prototype, \"element\", {\n get: function get() {\n return this.scope.element;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Context.prototype, \"parentElement\", {\n get: function get() {\n return this.element.parentElement;\n },\n enumerable: true,\n configurable: true\n }); // Error handling\n\n Context.prototype.handleError = function (error, message, detail) {\n if (detail === void 0) {\n detail = {};\n }\n\n var _a = this,\n identifier = _a.identifier,\n controller = _a.controller,\n element = _a.element;\n\n detail = Object.assign({\n identifier: identifier,\n controller: controller,\n element: element\n }, detail);\n this.application.handleError(error, \"Error \" + message, detail);\n };\n\n return Context;\n}();\n\nexport { Context };","var __extends = this && this.__extends || function () {\n var extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return function (d, b) {\n extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\n/** @hidden */\n\n\nexport function blessDefinition(definition) {\n return {\n identifier: definition.identifier,\n controllerConstructor: blessControllerConstructor(definition.controllerConstructor)\n };\n}\n\nfunction blessControllerConstructor(controllerConstructor) {\n var constructor = extend(controllerConstructor);\n constructor.bless();\n return constructor;\n}\n\nvar extend = function () {\n function extendWithReflect(constructor) {\n function Controller() {\n var _newTarget = this && this instanceof Controller ? this.constructor : void 0;\n\n return Reflect.construct(constructor, arguments, _newTarget);\n }\n\n Controller.prototype = Object.create(constructor.prototype, {\n constructor: {\n value: Controller\n }\n });\n Reflect.setPrototypeOf(Controller, constructor);\n return Controller;\n }\n\n function testReflectExtension() {\n var a = function a() {\n this.a.call(this);\n };\n\n var b = extendWithReflect(a);\n\n b.prototype.a = function () {};\n\n return new b();\n }\n\n try {\n testReflectExtension();\n return extendWithReflect;\n } catch (error) {\n return function (constructor) {\n return (\n /** @class */\n function (_super) {\n __extends(Controller, _super);\n\n function Controller() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n return Controller;\n }(constructor)\n );\n };\n }\n}();","import { Context } from \"./context\";\nimport { blessDefinition } from \"./definition\";\n\nvar Module =\n/** @class */\nfunction () {\n function Module(application, definition) {\n this.application = application;\n this.definition = blessDefinition(definition);\n this.contextsByScope = new WeakMap();\n this.connectedContexts = new Set();\n }\n\n Object.defineProperty(Module.prototype, \"identifier\", {\n get: function get() {\n return this.definition.identifier;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Module.prototype, \"controllerConstructor\", {\n get: function get() {\n return this.definition.controllerConstructor;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Module.prototype, \"contexts\", {\n get: function get() {\n return Array.from(this.connectedContexts);\n },\n enumerable: true,\n configurable: true\n });\n\n Module.prototype.connectContextForScope = function (scope) {\n var context = this.fetchContextForScope(scope);\n this.connectedContexts.add(context);\n context.connect();\n };\n\n Module.prototype.disconnectContextForScope = function (scope) {\n var context = this.contextsByScope.get(scope);\n\n if (context) {\n this.connectedContexts.delete(context);\n context.disconnect();\n }\n };\n\n Module.prototype.fetchContextForScope = function (scope) {\n var context = this.contextsByScope.get(scope);\n\n if (!context) {\n context = new Context(this, scope);\n this.contextsByScope.set(scope, context);\n }\n\n return context;\n };\n\n return Module;\n}();\n\nexport { Module };","var DataMap =\n/** @class */\nfunction () {\n function DataMap(scope) {\n this.scope = scope;\n }\n\n Object.defineProperty(DataMap.prototype, \"element\", {\n get: function get() {\n return this.scope.element;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DataMap.prototype, \"identifier\", {\n get: function get() {\n return this.scope.identifier;\n },\n enumerable: true,\n configurable: true\n });\n\n DataMap.prototype.get = function (key) {\n key = this.getFormattedKey(key);\n return this.element.getAttribute(key);\n };\n\n DataMap.prototype.set = function (key, value) {\n key = this.getFormattedKey(key);\n this.element.setAttribute(key, value);\n return this.get(key);\n };\n\n DataMap.prototype.has = function (key) {\n key = this.getFormattedKey(key);\n return this.element.hasAttribute(key);\n };\n\n DataMap.prototype.delete = function (key) {\n if (this.has(key)) {\n key = this.getFormattedKey(key);\n this.element.removeAttribute(key);\n return true;\n } else {\n return false;\n }\n };\n\n DataMap.prototype.getFormattedKey = function (key) {\n return \"data-\" + this.identifier + \"-\" + dasherize(key);\n };\n\n return DataMap;\n}();\n\nexport { DataMap };\n\nfunction dasherize(value) {\n return value.replace(/([A-Z])/g, function (_, char) {\n return \"-\" + char.toLowerCase();\n });\n}","/** @hidden */\nexport function attributeValueContainsToken(attributeName, token) {\n return \"[\" + attributeName + \"~=\\\"\" + token + \"\\\"]\";\n}","import { attributeValueContainsToken } from \"./selectors\";\n\nvar TargetSet =\n/** @class */\nfunction () {\n function TargetSet(scope) {\n this.scope = scope;\n }\n\n Object.defineProperty(TargetSet.prototype, \"element\", {\n get: function get() {\n return this.scope.element;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TargetSet.prototype, \"identifier\", {\n get: function get() {\n return this.scope.identifier;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TargetSet.prototype, \"schema\", {\n get: function get() {\n return this.scope.schema;\n },\n enumerable: true,\n configurable: true\n });\n\n TargetSet.prototype.has = function (targetName) {\n return this.find(targetName) != null;\n };\n\n TargetSet.prototype.find = function () {\n var targetNames = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n targetNames[_i] = arguments[_i];\n }\n\n var selector = this.getSelectorForTargetNames(targetNames);\n return this.scope.findElement(selector);\n };\n\n TargetSet.prototype.findAll = function () {\n var targetNames = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n targetNames[_i] = arguments[_i];\n }\n\n var selector = this.getSelectorForTargetNames(targetNames);\n return this.scope.findAllElements(selector);\n };\n\n TargetSet.prototype.getSelectorForTargetNames = function (targetNames) {\n var _this = this;\n\n return targetNames.map(function (targetName) {\n return _this.getSelectorForTargetName(targetName);\n }).join(\", \");\n };\n\n TargetSet.prototype.getSelectorForTargetName = function (targetName) {\n var targetDescriptor = this.identifier + \".\" + targetName;\n return attributeValueContainsToken(this.schema.targetAttribute, targetDescriptor);\n };\n\n return TargetSet;\n}();\n\nexport { TargetSet };","import { DataMap } from \"./data_map\";\nimport { TargetSet } from \"./target_set\";\nimport { attributeValueContainsToken } from \"./selectors\";\n\nvar Scope =\n/** @class */\nfunction () {\n function Scope(schema, identifier, element) {\n this.schema = schema;\n this.identifier = identifier;\n this.element = element;\n this.targets = new TargetSet(this);\n this.data = new DataMap(this);\n }\n\n Scope.prototype.findElement = function (selector) {\n return this.findAllElements(selector)[0];\n };\n\n Scope.prototype.findAllElements = function (selector) {\n var head = this.element.matches(selector) ? [this.element] : [];\n var tail = this.filterElements(Array.from(this.element.querySelectorAll(selector)));\n return head.concat(tail);\n };\n\n Scope.prototype.filterElements = function (elements) {\n var _this = this;\n\n return elements.filter(function (element) {\n return _this.containsElement(element);\n });\n };\n\n Scope.prototype.containsElement = function (element) {\n return element.closest(this.controllerSelector) === this.element;\n };\n\n Object.defineProperty(Scope.prototype, \"controllerSelector\", {\n get: function get() {\n return attributeValueContainsToken(this.schema.controllerAttribute, this.identifier);\n },\n enumerable: true,\n configurable: true\n });\n return Scope;\n}();\n\nexport { Scope };","import { Scope } from \"./scope\";\nimport { ValueListObserver } from \"@stimulus/mutation-observers\";\n\nvar ScopeObserver =\n/** @class */\nfunction () {\n function ScopeObserver(element, schema, delegate) {\n this.element = element;\n this.schema = schema;\n this.delegate = delegate;\n this.valueListObserver = new ValueListObserver(this.element, this.controllerAttribute, this);\n this.scopesByIdentifierByElement = new WeakMap();\n this.scopeReferenceCounts = new WeakMap();\n }\n\n ScopeObserver.prototype.start = function () {\n this.valueListObserver.start();\n };\n\n ScopeObserver.prototype.stop = function () {\n this.valueListObserver.stop();\n };\n\n Object.defineProperty(ScopeObserver.prototype, \"controllerAttribute\", {\n get: function get() {\n return this.schema.controllerAttribute;\n },\n enumerable: true,\n configurable: true\n }); // Value observer delegate\n\n /** @hidden */\n\n ScopeObserver.prototype.parseValueForToken = function (token) {\n var element = token.element,\n identifier = token.content;\n var scopesByIdentifier = this.fetchScopesByIdentifierForElement(element);\n var scope = scopesByIdentifier.get(identifier);\n\n if (!scope) {\n scope = new Scope(this.schema, identifier, element);\n scopesByIdentifier.set(identifier, scope);\n }\n\n return scope;\n };\n /** @hidden */\n\n\n ScopeObserver.prototype.elementMatchedValue = function (element, value) {\n var referenceCount = (this.scopeReferenceCounts.get(value) || 0) + 1;\n this.scopeReferenceCounts.set(value, referenceCount);\n\n if (referenceCount == 1) {\n this.delegate.scopeConnected(value);\n }\n };\n /** @hidden */\n\n\n ScopeObserver.prototype.elementUnmatchedValue = function (element, value) {\n var referenceCount = this.scopeReferenceCounts.get(value);\n\n if (referenceCount) {\n this.scopeReferenceCounts.set(value, referenceCount - 1);\n\n if (referenceCount == 1) {\n this.delegate.scopeDisconnected(value);\n }\n }\n };\n\n ScopeObserver.prototype.fetchScopesByIdentifierForElement = function (element) {\n var scopesByIdentifier = this.scopesByIdentifierByElement.get(element);\n\n if (!scopesByIdentifier) {\n scopesByIdentifier = new Map();\n this.scopesByIdentifierByElement.set(element, scopesByIdentifier);\n }\n\n return scopesByIdentifier;\n };\n\n return ScopeObserver;\n}();\n\nexport { ScopeObserver };","import { Module } from \"./module\";\nimport { Multimap } from \"@stimulus/multimap\";\nimport { ScopeObserver } from \"./scope_observer\";\n\nvar Router =\n/** @class */\nfunction () {\n function Router(application) {\n this.application = application;\n this.scopeObserver = new ScopeObserver(this.element, this.schema, this);\n this.scopesByIdentifier = new Multimap();\n this.modulesByIdentifier = new Map();\n }\n\n Object.defineProperty(Router.prototype, \"element\", {\n get: function get() {\n return this.application.element;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Router.prototype, \"schema\", {\n get: function get() {\n return this.application.schema;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Router.prototype, \"controllerAttribute\", {\n get: function get() {\n return this.schema.controllerAttribute;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Router.prototype, \"modules\", {\n get: function get() {\n return Array.from(this.modulesByIdentifier.values());\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Router.prototype, \"contexts\", {\n get: function get() {\n return this.modules.reduce(function (contexts, module) {\n return contexts.concat(module.contexts);\n }, []);\n },\n enumerable: true,\n configurable: true\n });\n\n Router.prototype.start = function () {\n this.scopeObserver.start();\n };\n\n Router.prototype.stop = function () {\n this.scopeObserver.stop();\n };\n\n Router.prototype.loadDefinition = function (definition) {\n this.unloadIdentifier(definition.identifier);\n var module = new Module(this.application, definition);\n this.connectModule(module);\n };\n\n Router.prototype.unloadIdentifier = function (identifier) {\n var module = this.modulesByIdentifier.get(identifier);\n\n if (module) {\n this.disconnectModule(module);\n }\n };\n\n Router.prototype.getContextForElementAndIdentifier = function (element, identifier) {\n var module = this.modulesByIdentifier.get(identifier);\n\n if (module) {\n return module.contexts.find(function (context) {\n return context.element == element;\n });\n }\n }; // Error handler delegate\n\n /** @hidden */\n\n\n Router.prototype.handleError = function (error, message, detail) {\n this.application.handleError(error, message, detail);\n }; // Scope observer delegate\n\n /** @hidden */\n\n\n Router.prototype.scopeConnected = function (scope) {\n this.scopesByIdentifier.add(scope.identifier, scope);\n var module = this.modulesByIdentifier.get(scope.identifier);\n\n if (module) {\n module.connectContextForScope(scope);\n }\n };\n /** @hidden */\n\n\n Router.prototype.scopeDisconnected = function (scope) {\n this.scopesByIdentifier.delete(scope.identifier, scope);\n var module = this.modulesByIdentifier.get(scope.identifier);\n\n if (module) {\n module.disconnectContextForScope(scope);\n }\n }; // Modules\n\n\n Router.prototype.connectModule = function (module) {\n this.modulesByIdentifier.set(module.identifier, module);\n var scopes = this.scopesByIdentifier.getValuesForKey(module.identifier);\n scopes.forEach(function (scope) {\n return module.connectContextForScope(scope);\n });\n };\n\n Router.prototype.disconnectModule = function (module) {\n this.modulesByIdentifier.delete(module.identifier);\n var scopes = this.scopesByIdentifier.getValuesForKey(module.identifier);\n scopes.forEach(function (scope) {\n return module.disconnectContextForScope(scope);\n });\n };\n\n return Router;\n}();\n\nexport { Router };","export var defaultSchema = {\n controllerAttribute: \"data-controller\",\n actionAttribute: \"data-action\",\n targetAttribute: \"data-target\"\n};","var __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, generator) {\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n\n function step(result) {\n result.done ? resolve(result.value) : new P(function (resolve) {\n resolve(result.value);\n }).then(fulfilled, rejected);\n }\n\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\n\nvar __generator = this && this.__generator || function (thisArg, body) {\n var _ = {\n label: 0,\n sent: function sent() {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: []\n },\n f,\n y,\n t,\n g;\n return g = {\n next: verb(0),\n \"throw\": verb(1),\n \"return\": verb(2)\n }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function () {\n return this;\n }), g;\n\n function verb(n) {\n return function (v) {\n return step([n, v]);\n };\n }\n\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n\n while (_) {\n try {\n if (f = 1, y && (t = y[op[0] & 2 ? \"return\" : op[0] ? \"throw\" : \"next\"]) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [0, t.value];\n\n switch (op[0]) {\n case 0:\n case 1:\n t = op;\n break;\n\n case 4:\n _.label++;\n return {\n value: op[1],\n done: false\n };\n\n case 5:\n _.label++;\n y = op[1];\n op = [0];\n continue;\n\n case 7:\n op = _.ops.pop();\n\n _.trys.pop();\n\n continue;\n\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {\n _ = 0;\n continue;\n }\n\n if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {\n _.label = op[1];\n break;\n }\n\n if (op[0] === 6 && _.label < t[1]) {\n _.label = t[1];\n t = op;\n break;\n }\n\n if (t && _.label < t[2]) {\n _.label = t[2];\n\n _.ops.push(op);\n\n break;\n }\n\n if (t[2]) _.ops.pop();\n\n _.trys.pop();\n\n continue;\n }\n\n op = body.call(thisArg, _);\n } catch (e) {\n op = [6, e];\n y = 0;\n } finally {\n f = t = 0;\n }\n }\n\n if (op[0] & 5) throw op[1];\n return {\n value: op[0] ? op[1] : void 0,\n done: true\n };\n }\n};\n\nimport { Dispatcher } from \"./dispatcher\";\nimport { Router } from \"./router\";\nimport { defaultSchema } from \"./schema\";\n\nvar Application =\n/** @class */\nfunction () {\n function Application(element, schema) {\n if (element === void 0) {\n element = document.documentElement;\n }\n\n if (schema === void 0) {\n schema = defaultSchema;\n }\n\n this.element = element;\n this.schema = schema;\n this.dispatcher = new Dispatcher(this);\n this.router = new Router(this);\n }\n\n Application.start = function (element, schema) {\n var application = new Application(element, schema);\n application.start();\n return application;\n };\n\n Application.prototype.start = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n return [4\n /*yield*/\n , domReady()];\n\n case 1:\n _a.sent();\n\n this.router.start();\n this.dispatcher.start();\n return [2\n /*return*/\n ];\n }\n });\n });\n };\n\n Application.prototype.stop = function () {\n this.router.stop();\n this.dispatcher.stop();\n };\n\n Application.prototype.register = function (identifier, controllerConstructor) {\n this.load({\n identifier: identifier,\n controllerConstructor: controllerConstructor\n });\n };\n\n Application.prototype.load = function (head) {\n var _this = this;\n\n var rest = [];\n\n for (var _i = 1; _i < arguments.length; _i++) {\n rest[_i - 1] = arguments[_i];\n }\n\n var definitions = Array.isArray(head) ? head : [head].concat(rest);\n definitions.forEach(function (definition) {\n return _this.router.loadDefinition(definition);\n });\n };\n\n Application.prototype.unload = function (head) {\n var _this = this;\n\n var rest = [];\n\n for (var _i = 1; _i < arguments.length; _i++) {\n rest[_i - 1] = arguments[_i];\n }\n\n var identifiers = Array.isArray(head) ? head : [head].concat(rest);\n identifiers.forEach(function (identifier) {\n return _this.router.unloadIdentifier(identifier);\n });\n };\n\n Object.defineProperty(Application.prototype, \"controllers\", {\n // Controllers\n get: function get() {\n return this.router.contexts.map(function (context) {\n return context.controller;\n });\n },\n enumerable: true,\n configurable: true\n });\n\n Application.prototype.getControllerForElementAndIdentifier = function (element, identifier) {\n var context = this.router.getContextForElementAndIdentifier(element, identifier);\n return context ? context.controller : null;\n }; // Error handling\n\n\n Application.prototype.handleError = function (error, message, detail) {\n console.error(\"%s\\n\\n%o\\n\\n%o\", message, error, detail);\n };\n\n return Application;\n}();\n\nexport { Application };\n\nfunction domReady() {\n return new Promise(function (resolve) {\n if (document.readyState == \"loading\") {\n document.addEventListener(\"DOMContentLoaded\", resolve);\n } else {\n resolve();\n }\n });\n}","/** @hidden */\nexport function defineTargetProperties(constructor) {\n var prototype = constructor.prototype;\n var targetNames = getTargetNamesForConstructor(constructor);\n targetNames.forEach(function (name) {\n var _a;\n\n return defineLinkedProperties(prototype, (_a = {}, _a[name + \"Target\"] = {\n get: function get() {\n var target = this.targets.find(name);\n\n if (target) {\n return target;\n } else {\n throw new Error(\"Missing target element \\\"\" + this.identifier + \".\" + name + \"\\\"\");\n }\n }\n }, _a[name + \"Targets\"] = {\n get: function get() {\n return this.targets.findAll(name);\n }\n }, _a[\"has\" + capitalize(name) + \"Target\"] = {\n get: function get() {\n return this.targets.has(name);\n }\n }, _a));\n });\n}\n\nfunction getTargetNamesForConstructor(constructor) {\n var ancestors = getAncestorsForConstructor(constructor);\n return Array.from(ancestors.reduce(function (targetNames, constructor) {\n getOwnTargetNamesForConstructor(constructor).forEach(function (name) {\n return targetNames.add(name);\n });\n return targetNames;\n }, new Set()));\n}\n\nfunction getAncestorsForConstructor(constructor) {\n var ancestors = [];\n\n while (constructor) {\n ancestors.push(constructor);\n constructor = Object.getPrototypeOf(constructor);\n }\n\n return ancestors;\n}\n\nfunction getOwnTargetNamesForConstructor(constructor) {\n var definition = constructor[\"targets\"];\n return Array.isArray(definition) ? definition : [];\n}\n\nfunction defineLinkedProperties(object, properties) {\n Object.keys(properties).forEach(function (name) {\n if (!(name in object)) {\n var descriptor = properties[name];\n Object.defineProperty(object, name, descriptor);\n }\n });\n}\n\nfunction capitalize(name) {\n return name.charAt(0).toUpperCase() + name.slice(1);\n}","import { defineTargetProperties } from \"./target_properties\";\n\nvar Controller =\n/** @class */\nfunction () {\n function Controller(context) {\n this.context = context;\n }\n\n Controller.bless = function () {\n defineTargetProperties(this);\n };\n\n Object.defineProperty(Controller.prototype, \"application\", {\n get: function get() {\n return this.context.application;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Controller.prototype, \"scope\", {\n get: function get() {\n return this.context.scope;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Controller.prototype, \"element\", {\n get: function get() {\n return this.scope.element;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Controller.prototype, \"identifier\", {\n get: function get() {\n return this.scope.identifier;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Controller.prototype, \"targets\", {\n get: function get() {\n return this.scope.targets;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Controller.prototype, \"data\", {\n get: function get() {\n return this.scope.data;\n },\n enumerable: true,\n configurable: true\n });\n\n Controller.prototype.initialize = function () {// Override in your subclass to set up initial controller state\n };\n\n Controller.prototype.connect = function () {// Override in your subclass to respond when the controller is connected to the DOM\n };\n\n Controller.prototype.disconnect = function () {// Override in your subclass to respond when the controller is disconnected from the DOM\n };\n\n Controller.targets = [];\n return Controller;\n}();\n\nexport { Controller };","module.exports = function (module) {\n if (!module.webpackPolyfill) {\n module.deprecate = function () {};\n\n module.paths = []; // module.parent = undefined by default\n\n if (!module.children) module.children = [];\n Object.defineProperty(module, \"loaded\", {\n enumerable: true,\n get: function get() {\n return module.l;\n }\n });\n Object.defineProperty(module, \"id\", {\n enumerable: true,\n get: function get() {\n return module.i;\n }\n });\n module.webpackPolyfill = 1;\n }\n\n return module;\n};","'use strict';\n\nmodule.exports = {\n element: null\n};","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nvar g; // This works in non-strict mode\n\ng = function () {\n return this;\n}();\n\ntry {\n // This works if eval is allowed (see CSP)\n g = g || new Function(\"return this\")();\n} catch (e) {\n // This works if the window reference is available\n if ((typeof window === \"undefined\" ? \"undefined\" : _typeof(window)) === \"object\") g = window;\n} // g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\n\nmodule.exports = g;","var DOCUMENT_FRAGMENT_NODE = 11;\n\nfunction morphAttrs(fromNode, toNode) {\n var toNodeAttrs = toNode.attributes;\n var attr;\n var attrName;\n var attrNamespaceURI;\n var attrValue;\n var fromValue; // document-fragments dont have attributes so lets not do anything\n\n if (toNode.nodeType === DOCUMENT_FRAGMENT_NODE || fromNode.nodeType === DOCUMENT_FRAGMENT_NODE) {\n return;\n } // update attributes on original DOM element\n\n\n for (var i = toNodeAttrs.length - 1; i >= 0; i--) {\n attr = toNodeAttrs[i];\n attrName = attr.name;\n attrNamespaceURI = attr.namespaceURI;\n attrValue = attr.value;\n\n if (attrNamespaceURI) {\n attrName = attr.localName || attrName;\n fromValue = fromNode.getAttributeNS(attrNamespaceURI, attrName);\n\n if (fromValue !== attrValue) {\n if (attr.prefix === 'xmlns') {\n attrName = attr.name; // It's not allowed to set an attribute with the XMLNS namespace without specifying the `xmlns` prefix\n }\n\n fromNode.setAttributeNS(attrNamespaceURI, attrName, attrValue);\n }\n } else {\n fromValue = fromNode.getAttribute(attrName);\n\n if (fromValue !== attrValue) {\n fromNode.setAttribute(attrName, attrValue);\n }\n }\n } // Remove any extra attributes found on the original DOM element that\n // weren't found on the target element.\n\n\n var fromNodeAttrs = fromNode.attributes;\n\n for (var d = fromNodeAttrs.length - 1; d >= 0; d--) {\n attr = fromNodeAttrs[d];\n attrName = attr.name;\n attrNamespaceURI = attr.namespaceURI;\n\n if (attrNamespaceURI) {\n attrName = attr.localName || attrName;\n\n if (!toNode.hasAttributeNS(attrNamespaceURI, attrName)) {\n fromNode.removeAttributeNS(attrNamespaceURI, attrName);\n }\n } else {\n if (!toNode.hasAttribute(attrName)) {\n fromNode.removeAttribute(attrName);\n }\n }\n }\n}\n\nvar range; // Create a range object for efficently rendering strings to elements.\n\nvar NS_XHTML = 'http://www.w3.org/1999/xhtml';\nvar doc = typeof document === 'undefined' ? undefined : document;\nvar HAS_TEMPLATE_SUPPORT = !!doc && 'content' in doc.createElement('template');\nvar HAS_RANGE_SUPPORT = !!doc && doc.createRange && 'createContextualFragment' in doc.createRange();\n\nfunction createFragmentFromTemplate(str) {\n var template = doc.createElement('template');\n template.innerHTML = str;\n return template.content.childNodes[0];\n}\n\nfunction createFragmentFromRange(str) {\n if (!range) {\n range = doc.createRange();\n range.selectNode(doc.body);\n }\n\n var fragment = range.createContextualFragment(str);\n return fragment.childNodes[0];\n}\n\nfunction createFragmentFromWrap(str) {\n var fragment = doc.createElement('body');\n fragment.innerHTML = str;\n return fragment.childNodes[0];\n}\n/**\n * This is about the same\n * var html = new DOMParser().parseFromString(str, 'text/html');\n * return html.body.firstChild;\n *\n * @method toElement\n * @param {String} str\n */\n\n\nfunction toElement(str) {\n str = str.trim();\n\n if (HAS_TEMPLATE_SUPPORT) {\n // avoid restrictions on content for things like `
' + func(text) + '
';\n * });\n *\n * p('fred, barney, & pebbles');\n * // => 'fred, barney, & pebbles
'\n */\n\n\n function wrap(value, wrapper) {\n return partial(castFunction(wrapper), value);\n }\n /*------------------------------------------------------------------------*/\n\n /**\n * Casts `value` as an array if it's not one.\n *\n * @static\n * @memberOf _\n * @since 4.4.0\n * @category Lang\n * @param {*} value The value to inspect.\n * @returns {Array} Returns the cast array.\n * @example\n *\n * _.castArray(1);\n * // => [1]\n *\n * _.castArray({ 'a': 1 });\n * // => [{ 'a': 1 }]\n *\n * _.castArray('abc');\n * // => ['abc']\n *\n * _.castArray(null);\n * // => [null]\n *\n * _.castArray(undefined);\n * // => [undefined]\n *\n * _.castArray();\n * // => []\n *\n * var array = [1, 2, 3];\n * console.log(_.castArray(array) === array);\n * // => true\n */\n\n\n function castArray() {\n if (!arguments.length) {\n return [];\n }\n\n var value = arguments[0];\n return isArray(value) ? value : [value];\n }\n /**\n * Creates a shallow clone of `value`.\n *\n * **Note:** This method is loosely based on the\n * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm)\n * and supports cloning arrays, array buffers, booleans, date objects, maps,\n * numbers, `Object` objects, regexes, sets, strings, symbols, and typed\n * arrays. The own enumerable properties of `arguments` objects are cloned\n * as plain objects. An empty object is returned for uncloneable values such\n * as error objects, functions, DOM nodes, and WeakMaps.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to clone.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeep\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var shallow = _.clone(objects);\n * console.log(shallow[0] === objects[0]);\n * // => true\n */\n\n\n function clone(value) {\n return baseClone(value, CLONE_SYMBOLS_FLAG);\n }\n /**\n * This method is like `_.clone` except that it accepts `customizer` which\n * is invoked to produce the cloned value. If `customizer` returns `undefined`,\n * cloning is handled by the method instead. The `customizer` is invoked with\n * up to four arguments; (value [, index|key, object, stack]).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to clone.\n * @param {Function} [customizer] The function to customize cloning.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeepWith\n * @example\n *\n * function customizer(value) {\n * if (_.isElement(value)) {\n * return value.cloneNode(false);\n * }\n * }\n *\n * var el = _.cloneWith(document.body, customizer);\n *\n * console.log(el === document.body);\n * // => false\n * console.log(el.nodeName);\n * // => 'BODY'\n * console.log(el.childNodes.length);\n * // => 0\n */\n\n\n function cloneWith(value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseClone(value, CLONE_SYMBOLS_FLAG, customizer);\n }\n /**\n * This method is like `_.clone` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @returns {*} Returns the deep cloned value.\n * @see _.clone\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var deep = _.cloneDeep(objects);\n * console.log(deep[0] === objects[0]);\n * // => false\n */\n\n\n function cloneDeep(value) {\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);\n }\n /**\n * This method is like `_.cloneWith` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @param {Function} [customizer] The function to customize cloning.\n * @returns {*} Returns the deep cloned value.\n * @see _.cloneWith\n * @example\n *\n * function customizer(value) {\n * if (_.isElement(value)) {\n * return value.cloneNode(true);\n * }\n * }\n *\n * var el = _.cloneDeepWith(document.body, customizer);\n *\n * console.log(el === document.body);\n * // => false\n * console.log(el.nodeName);\n * // => 'BODY'\n * console.log(el.childNodes.length);\n * // => 20\n */\n\n\n function cloneDeepWith(value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG, customizer);\n }\n /**\n * Checks if `object` conforms to `source` by invoking the predicate\n * properties of `source` with the corresponding property values of `object`.\n *\n * **Note:** This method is equivalent to `_.conforms` when `source` is\n * partially applied.\n *\n * @static\n * @memberOf _\n * @since 4.14.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property predicates to conform to.\n * @returns {boolean} Returns `true` if `object` conforms, else `false`.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n *\n * _.conformsTo(object, { 'b': function(n) { return n > 1; } });\n * // => true\n *\n * _.conformsTo(object, { 'b': function(n) { return n > 2; } });\n * // => false\n */\n\n\n function conformsTo(object, source) {\n return source == null || baseConformsTo(object, source, keys(source));\n }\n /**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\n\n\n function eq(value, other) {\n return value === other || value !== value && other !== other;\n }\n /**\n * Checks if `value` is greater than `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than `other`,\n * else `false`.\n * @see _.lt\n * @example\n *\n * _.gt(3, 1);\n * // => true\n *\n * _.gt(3, 3);\n * // => false\n *\n * _.gt(1, 3);\n * // => false\n */\n\n\n var gt = createRelationalOperation(baseGt);\n /**\n * Checks if `value` is greater than or equal to `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than or equal to\n * `other`, else `false`.\n * @see _.lte\n * @example\n *\n * _.gte(3, 1);\n * // => true\n *\n * _.gte(3, 3);\n * // => true\n *\n * _.gte(1, 3);\n * // => false\n */\n\n var gte = createRelationalOperation(function (value, other) {\n return value >= other;\n });\n /**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\n\n var isArguments = baseIsArguments(function () {\n return arguments;\n }()) ? baseIsArguments : function (value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') && !propertyIsEnumerable.call(value, 'callee');\n };\n /**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\n\n var isArray = Array.isArray;\n /**\n * Checks if `value` is classified as an `ArrayBuffer` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.\n * @example\n *\n * _.isArrayBuffer(new ArrayBuffer(2));\n * // => true\n *\n * _.isArrayBuffer(new Array(2));\n * // => false\n */\n\n var isArrayBuffer = nodeIsArrayBuffer ? baseUnary(nodeIsArrayBuffer) : baseIsArrayBuffer;\n /**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\n\n function isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n }\n /**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\n\n\n function isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n }\n /**\n * Checks if `value` is classified as a boolean primitive or object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a boolean, else `false`.\n * @example\n *\n * _.isBoolean(false);\n * // => true\n *\n * _.isBoolean(null);\n * // => false\n */\n\n\n function isBoolean(value) {\n return value === true || value === false || isObjectLike(value) && baseGetTag(value) == boolTag;\n }\n /**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\n\n\n var isBuffer = nativeIsBuffer || stubFalse;\n /**\n * Checks if `value` is classified as a `Date` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a date object, else `false`.\n * @example\n *\n * _.isDate(new Date);\n * // => true\n *\n * _.isDate('Mon April 23 2012');\n * // => false\n */\n\n var isDate = nodeIsDate ? baseUnary(nodeIsDate) : baseIsDate;\n /**\n * Checks if `value` is likely a DOM element.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a DOM element, else `false`.\n * @example\n *\n * _.isElement(document.body);\n * // => true\n *\n * _.isElement('');\n * // => false\n */\n\n function isElement(value) {\n return isObjectLike(value) && value.nodeType === 1 && !isPlainObject(value);\n }\n /**\n * Checks if `value` is an empty object, collection, map, or set.\n *\n * Objects are considered empty if they have no own enumerable string keyed\n * properties.\n *\n * Array-like values such as `arguments` objects, arrays, buffers, strings, or\n * jQuery-like collections are considered empty if they have a `length` of `0`.\n * Similarly, maps and sets are considered empty if they have a `size` of `0`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is empty, else `false`.\n * @example\n *\n * _.isEmpty(null);\n * // => true\n *\n * _.isEmpty(true);\n * // => true\n *\n * _.isEmpty(1);\n * // => true\n *\n * _.isEmpty([1, 2, 3]);\n * // => false\n *\n * _.isEmpty({ 'a': 1 });\n * // => false\n */\n\n\n function isEmpty(value) {\n if (value == null) {\n return true;\n }\n\n if (isArrayLike(value) && (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' || isBuffer(value) || isTypedArray(value) || isArguments(value))) {\n return !value.length;\n }\n\n var tag = getTag(value);\n\n if (tag == mapTag || tag == setTag) {\n return !value.size;\n }\n\n if (isPrototype(value)) {\n return !baseKeys(value).length;\n }\n\n for (var key in value) {\n if (hasOwnProperty.call(value, key)) {\n return false;\n }\n }\n\n return true;\n }\n /**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\n\n\n function isEqual(value, other) {\n return baseIsEqual(value, other);\n }\n /**\n * This method is like `_.isEqual` except that it accepts `customizer` which\n * is invoked to compare values. If `customizer` returns `undefined`, comparisons\n * are handled by the method instead. The `customizer` is invoked with up to\n * six arguments: (objValue, othValue [, index|key, object, other, stack]).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * function isGreeting(value) {\n * return /^h(?:i|ello)$/.test(value);\n * }\n *\n * function customizer(objValue, othValue) {\n * if (isGreeting(objValue) && isGreeting(othValue)) {\n * return true;\n * }\n * }\n *\n * var array = ['hello', 'goodbye'];\n * var other = ['hi', 'goodbye'];\n *\n * _.isEqualWith(array, other, customizer);\n * // => true\n */\n\n\n function isEqualWith(value, other, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n var result = customizer ? customizer(value, other) : undefined;\n return result === undefined ? baseIsEqual(value, other, undefined, customizer) : !!result;\n }\n /**\n * Checks if `value` is an `Error`, `EvalError`, `RangeError`, `ReferenceError`,\n * `SyntaxError`, `TypeError`, or `URIError` object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an error object, else `false`.\n * @example\n *\n * _.isError(new Error);\n * // => true\n *\n * _.isError(Error);\n * // => false\n */\n\n\n function isError(value) {\n if (!isObjectLike(value)) {\n return false;\n }\n\n var tag = baseGetTag(value);\n return tag == errorTag || tag == domExcTag || typeof value.message == 'string' && typeof value.name == 'string' && !isPlainObject(value);\n }\n /**\n * Checks if `value` is a finite primitive number.\n *\n * **Note:** This method is based on\n * [`Number.isFinite`](https://mdn.io/Number/isFinite).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a finite number, else `false`.\n * @example\n *\n * _.isFinite(3);\n * // => true\n *\n * _.isFinite(Number.MIN_VALUE);\n * // => true\n *\n * _.isFinite(Infinity);\n * // => false\n *\n * _.isFinite('3');\n * // => false\n */\n\n\n function isFinite(value) {\n return typeof value == 'number' && nativeIsFinite(value);\n }\n /**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\n\n\n function isFunction(value) {\n if (!isObject(value)) {\n return false;\n } // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n\n\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n }\n /**\n * Checks if `value` is an integer.\n *\n * **Note:** This method is based on\n * [`Number.isInteger`](https://mdn.io/Number/isInteger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an integer, else `false`.\n * @example\n *\n * _.isInteger(3);\n * // => true\n *\n * _.isInteger(Number.MIN_VALUE);\n * // => false\n *\n * _.isInteger(Infinity);\n * // => false\n *\n * _.isInteger('3');\n * // => false\n */\n\n\n function isInteger(value) {\n return typeof value == 'number' && value == toInteger(value);\n }\n /**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\n\n\n function isLength(value) {\n return typeof value == 'number' && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n }\n /**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\n\n\n function isObject(value) {\n var type = _typeof(value);\n\n return value != null && (type == 'object' || type == 'function');\n }\n /**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\n\n\n function isObjectLike(value) {\n return value != null && _typeof(value) == 'object';\n }\n /**\n * Checks if `value` is classified as a `Map` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n * @example\n *\n * _.isMap(new Map);\n * // => true\n *\n * _.isMap(new WeakMap);\n * // => false\n */\n\n\n var isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;\n /**\n * Performs a partial deep comparison between `object` and `source` to\n * determine if `object` contains equivalent property values.\n *\n * **Note:** This method is equivalent to `_.matches` when `source` is\n * partially applied.\n *\n * Partial comparisons will match empty array and empty object `source`\n * values against any array or object value, respectively. See `_.isEqual`\n * for a list of supported value comparisons.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n *\n * _.isMatch(object, { 'b': 2 });\n * // => true\n *\n * _.isMatch(object, { 'b': 1 });\n * // => false\n */\n\n function isMatch(object, source) {\n return object === source || baseIsMatch(object, source, getMatchData(source));\n }\n /**\n * This method is like `_.isMatch` except that it accepts `customizer` which\n * is invoked to compare values. If `customizer` returns `undefined`, comparisons\n * are handled by the method instead. The `customizer` is invoked with five\n * arguments: (objValue, srcValue, index|key, object, source).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n * @example\n *\n * function isGreeting(value) {\n * return /^h(?:i|ello)$/.test(value);\n * }\n *\n * function customizer(objValue, srcValue) {\n * if (isGreeting(objValue) && isGreeting(srcValue)) {\n * return true;\n * }\n * }\n *\n * var object = { 'greeting': 'hello' };\n * var source = { 'greeting': 'hi' };\n *\n * _.isMatchWith(object, source, customizer);\n * // => true\n */\n\n\n function isMatchWith(object, source, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseIsMatch(object, source, getMatchData(source), customizer);\n }\n /**\n * Checks if `value` is `NaN`.\n *\n * **Note:** This method is based on\n * [`Number.isNaN`](https://mdn.io/Number/isNaN) and is not the same as\n * global [`isNaN`](https://mdn.io/isNaN) which returns `true` for\n * `undefined` and other non-number values.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n * @example\n *\n * _.isNaN(NaN);\n * // => true\n *\n * _.isNaN(new Number(NaN));\n * // => true\n *\n * isNaN(undefined);\n * // => true\n *\n * _.isNaN(undefined);\n * // => false\n */\n\n\n function isNaN(value) {\n // An `NaN` primitive is the only value that is not equal to itself.\n // Perform the `toStringTag` check first to avoid errors with some\n // ActiveX objects in IE.\n return isNumber(value) && value != +value;\n }\n /**\n * Checks if `value` is a pristine native function.\n *\n * **Note:** This method can't reliably detect native functions in the presence\n * of the core-js package because core-js circumvents this kind of detection.\n * Despite multiple requests, the core-js maintainer has made it clear: any\n * attempt to fix the detection will be obstructed. As a result, we're left\n * with little choice but to throw an error. Unfortunately, this also affects\n * packages, like [babel-polyfill](https://www.npmjs.com/package/babel-polyfill),\n * which rely on core-js.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n * @example\n *\n * _.isNative(Array.prototype.push);\n * // => true\n *\n * _.isNative(_);\n * // => false\n */\n\n\n function isNative(value) {\n if (isMaskable(value)) {\n throw new Error(CORE_ERROR_TEXT);\n }\n\n return baseIsNative(value);\n }\n /**\n * Checks if `value` is `null`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `null`, else `false`.\n * @example\n *\n * _.isNull(null);\n * // => true\n *\n * _.isNull(void 0);\n * // => false\n */\n\n\n function isNull(value) {\n return value === null;\n }\n /**\n * Checks if `value` is `null` or `undefined`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is nullish, else `false`.\n * @example\n *\n * _.isNil(null);\n * // => true\n *\n * _.isNil(void 0);\n * // => true\n *\n * _.isNil(NaN);\n * // => false\n */\n\n\n function isNil(value) {\n return value == null;\n }\n /**\n * Checks if `value` is classified as a `Number` primitive or object.\n *\n * **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are\n * classified as numbers, use the `_.isFinite` method.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a number, else `false`.\n * @example\n *\n * _.isNumber(3);\n * // => true\n *\n * _.isNumber(Number.MIN_VALUE);\n * // => true\n *\n * _.isNumber(Infinity);\n * // => true\n *\n * _.isNumber('3');\n * // => false\n */\n\n\n function isNumber(value) {\n return typeof value == 'number' || isObjectLike(value) && baseGetTag(value) == numberTag;\n }\n /**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\n\n\n function isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n\n var proto = getPrototype(value);\n\n if (proto === null) {\n return true;\n }\n\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor && funcToString.call(Ctor) == objectCtorString;\n }\n /**\n * Checks if `value` is classified as a `RegExp` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n * @example\n *\n * _.isRegExp(/abc/);\n * // => true\n *\n * _.isRegExp('/abc/');\n * // => false\n */\n\n\n var isRegExp = nodeIsRegExp ? baseUnary(nodeIsRegExp) : baseIsRegExp;\n /**\n * Checks if `value` is a safe integer. An integer is safe if it's an IEEE-754\n * double precision number which isn't the result of a rounded unsafe integer.\n *\n * **Note:** This method is based on\n * [`Number.isSafeInteger`](https://mdn.io/Number/isSafeInteger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a safe integer, else `false`.\n * @example\n *\n * _.isSafeInteger(3);\n * // => true\n *\n * _.isSafeInteger(Number.MIN_VALUE);\n * // => false\n *\n * _.isSafeInteger(Infinity);\n * // => false\n *\n * _.isSafeInteger('3');\n * // => false\n */\n\n function isSafeInteger(value) {\n return isInteger(value) && value >= -MAX_SAFE_INTEGER && value <= MAX_SAFE_INTEGER;\n }\n /**\n * Checks if `value` is classified as a `Set` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n * @example\n *\n * _.isSet(new Set);\n * // => true\n *\n * _.isSet(new WeakSet);\n * // => false\n */\n\n\n var isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;\n /**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a string, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\n\n function isString(value) {\n return typeof value == 'string' || !isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag;\n }\n /**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\n\n\n function isSymbol(value) {\n return _typeof(value) == 'symbol' || isObjectLike(value) && baseGetTag(value) == symbolTag;\n }\n /**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\n\n\n var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n /**\n * Checks if `value` is `undefined`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`.\n * @example\n *\n * _.isUndefined(void 0);\n * // => true\n *\n * _.isUndefined(null);\n * // => false\n */\n\n function isUndefined(value) {\n return value === undefined;\n }\n /**\n * Checks if `value` is classified as a `WeakMap` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a weak map, else `false`.\n * @example\n *\n * _.isWeakMap(new WeakMap);\n * // => true\n *\n * _.isWeakMap(new Map);\n * // => false\n */\n\n\n function isWeakMap(value) {\n return isObjectLike(value) && getTag(value) == weakMapTag;\n }\n /**\n * Checks if `value` is classified as a `WeakSet` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a weak set, else `false`.\n * @example\n *\n * _.isWeakSet(new WeakSet);\n * // => true\n *\n * _.isWeakSet(new Set);\n * // => false\n */\n\n\n function isWeakSet(value) {\n return isObjectLike(value) && baseGetTag(value) == weakSetTag;\n }\n /**\n * Checks if `value` is less than `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than `other`,\n * else `false`.\n * @see _.gt\n * @example\n *\n * _.lt(1, 3);\n * // => true\n *\n * _.lt(3, 3);\n * // => false\n *\n * _.lt(3, 1);\n * // => false\n */\n\n\n var lt = createRelationalOperation(baseLt);\n /**\n * Checks if `value` is less than or equal to `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than or equal to\n * `other`, else `false`.\n * @see _.gte\n * @example\n *\n * _.lte(1, 3);\n * // => true\n *\n * _.lte(3, 3);\n * // => true\n *\n * _.lte(3, 1);\n * // => false\n */\n\n var lte = createRelationalOperation(function (value, other) {\n return value <= other;\n });\n /**\n * Converts `value` to an array.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Array} Returns the converted array.\n * @example\n *\n * _.toArray({ 'a': 1, 'b': 2 });\n * // => [1, 2]\n *\n * _.toArray('abc');\n * // => ['a', 'b', 'c']\n *\n * _.toArray(1);\n * // => []\n *\n * _.toArray(null);\n * // => []\n */\n\n function toArray(value) {\n if (!value) {\n return [];\n }\n\n if (isArrayLike(value)) {\n return isString(value) ? stringToArray(value) : copyArray(value);\n }\n\n if (symIterator && value[symIterator]) {\n return iteratorToArray(value[symIterator]());\n }\n\n var tag = getTag(value),\n func = tag == mapTag ? mapToArray : tag == setTag ? setToArray : values;\n return func(value);\n }\n /**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\n\n\n function toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n\n value = toNumber(value);\n\n if (value === INFINITY || value === -INFINITY) {\n var sign = value < 0 ? -1 : 1;\n return sign * MAX_INTEGER;\n }\n\n return value === value ? value : 0;\n }\n /**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\n\n\n function toInteger(value) {\n var result = toFinite(value),\n remainder = result % 1;\n return result === result ? remainder ? result - remainder : result : 0;\n }\n /**\n * Converts `value` to an integer suitable for use as the length of an\n * array-like object.\n *\n * **Note:** This method is based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toLength(3.2);\n * // => 3\n *\n * _.toLength(Number.MIN_VALUE);\n * // => 0\n *\n * _.toLength(Infinity);\n * // => 4294967295\n *\n * _.toLength('3.2');\n * // => 3\n */\n\n\n function toLength(value) {\n return value ? baseClamp(toInteger(value), 0, MAX_ARRAY_LENGTH) : 0;\n }\n /**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\n\n\n function toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n\n if (isSymbol(value)) {\n return NAN;\n }\n\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? other + '' : other;\n }\n\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n\n value = baseTrim(value);\n var isBinary = reIsBinary.test(value);\n return isBinary || reIsOctal.test(value) ? freeParseInt(value.slice(2), isBinary ? 2 : 8) : reIsBadHex.test(value) ? NAN : +value;\n }\n /**\n * Converts `value` to a plain object flattening inherited enumerable string\n * keyed properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\n\n\n function toPlainObject(value) {\n return copyObject(value, keysIn(value));\n }\n /**\n * Converts `value` to a safe integer. A safe integer can be compared and\n * represented correctly.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toSafeInteger(3.2);\n * // => 3\n *\n * _.toSafeInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toSafeInteger(Infinity);\n * // => 9007199254740991\n *\n * _.toSafeInteger('3.2');\n * // => 3\n */\n\n\n function toSafeInteger(value) {\n return value ? baseClamp(toInteger(value), -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER) : value === 0 ? value : 0;\n }\n /**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\n\n\n function toString(value) {\n return value == null ? '' : baseToString(value);\n }\n /*------------------------------------------------------------------------*/\n\n /**\n * Assigns own enumerable string keyed properties of source objects to the\n * destination object. Source objects are applied from left to right.\n * Subsequent sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object` and is loosely based on\n * [`Object.assign`](https://mdn.io/Object/assign).\n *\n * @static\n * @memberOf _\n * @since 0.10.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.assignIn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * function Bar() {\n * this.c = 3;\n * }\n *\n * Foo.prototype.b = 2;\n * Bar.prototype.d = 4;\n *\n * _.assign({ 'a': 0 }, new Foo, new Bar);\n * // => { 'a': 1, 'c': 3 }\n */\n\n\n var assign = createAssigner(function (object, source) {\n if (isPrototype(source) || isArrayLike(source)) {\n copyObject(source, keys(source), object);\n return;\n }\n\n for (var key in source) {\n if (hasOwnProperty.call(source, key)) {\n assignValue(object, key, source[key]);\n }\n }\n });\n /**\n * This method is like `_.assign` except that it iterates over own and\n * inherited source properties.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias extend\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.assign\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * function Bar() {\n * this.c = 3;\n * }\n *\n * Foo.prototype.b = 2;\n * Bar.prototype.d = 4;\n *\n * _.assignIn({ 'a': 0 }, new Foo, new Bar);\n * // => { 'a': 1, 'b': 2, 'c': 3, 'd': 4 }\n */\n\n var assignIn = createAssigner(function (object, source) {\n copyObject(source, keysIn(source), object);\n });\n /**\n * This method is like `_.assignIn` except that it accepts `customizer`\n * which is invoked to produce the assigned values. If `customizer` returns\n * `undefined`, assignment is handled by the method instead. The `customizer`\n * is invoked with five arguments: (objValue, srcValue, key, object, source).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias extendWith\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @see _.assignWith\n * @example\n *\n * function customizer(objValue, srcValue) {\n * return _.isUndefined(objValue) ? srcValue : objValue;\n * }\n *\n * var defaults = _.partialRight(_.assignInWith, customizer);\n *\n * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n\n var assignInWith = createAssigner(function (object, source, srcIndex, customizer) {\n copyObject(source, keysIn(source), object, customizer);\n });\n /**\n * This method is like `_.assign` except that it accepts `customizer`\n * which is invoked to produce the assigned values. If `customizer` returns\n * `undefined`, assignment is handled by the method instead. The `customizer`\n * is invoked with five arguments: (objValue, srcValue, key, object, source).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @see _.assignInWith\n * @example\n *\n * function customizer(objValue, srcValue) {\n * return _.isUndefined(objValue) ? srcValue : objValue;\n * }\n *\n * var defaults = _.partialRight(_.assignWith, customizer);\n *\n * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n\n var assignWith = createAssigner(function (object, source, srcIndex, customizer) {\n copyObject(source, keys(source), object, customizer);\n });\n /**\n * Creates an array of values corresponding to `paths` of `object`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Array} Returns the picked values.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };\n *\n * _.at(object, ['a[0].b.c', 'a[1]']);\n * // => [3, 4]\n */\n\n var at = flatRest(baseAt);\n /**\n * Creates an object that inherits from the `prototype` object. If a\n * `properties` object is given, its own enumerable string keyed properties\n * are assigned to the created object.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Object\n * @param {Object} prototype The object to inherit from.\n * @param {Object} [properties] The properties to assign to the object.\n * @returns {Object} Returns the new object.\n * @example\n *\n * function Shape() {\n * this.x = 0;\n * this.y = 0;\n * }\n *\n * function Circle() {\n * Shape.call(this);\n * }\n *\n * Circle.prototype = _.create(Shape.prototype, {\n * 'constructor': Circle\n * });\n *\n * var circle = new Circle;\n * circle instanceof Circle;\n * // => true\n *\n * circle instanceof Shape;\n * // => true\n */\n\n function create(prototype, properties) {\n var result = baseCreate(prototype);\n return properties == null ? result : baseAssign(result, properties);\n }\n /**\n * Assigns own and inherited enumerable string keyed properties of source\n * objects to the destination object for all destination properties that\n * resolve to `undefined`. Source objects are applied from left to right.\n * Once a property is set, additional values of the same property are ignored.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaultsDeep\n * @example\n *\n * _.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n\n\n var defaults = baseRest(function (object, sources) {\n object = Object(object);\n var index = -1;\n var length = sources.length;\n var guard = length > 2 ? sources[2] : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n length = 1;\n }\n\n while (++index < length) {\n var source = sources[index];\n var props = keysIn(source);\n var propsIndex = -1;\n var propsLength = props.length;\n\n while (++propsIndex < propsLength) {\n var key = props[propsIndex];\n var value = object[key];\n\n if (value === undefined || eq(value, objectProto[key]) && !hasOwnProperty.call(object, key)) {\n object[key] = source[key];\n }\n }\n }\n\n return object;\n });\n /**\n * This method is like `_.defaults` except that it recursively assigns\n * default properties.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 3.10.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaults\n * @example\n *\n * _.defaultsDeep({ 'a': { 'b': 2 } }, { 'a': { 'b': 1, 'c': 3 } });\n * // => { 'a': { 'b': 2, 'c': 3 } }\n */\n\n var defaultsDeep = baseRest(function (args) {\n args.push(undefined, customDefaultsMerge);\n return apply(mergeWith, undefined, args);\n });\n /**\n * This method is like `_.find` except that it returns the key of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {string|undefined} Returns the key of the matched element,\n * else `undefined`.\n * @example\n *\n * var users = {\n * 'barney': { 'age': 36, 'active': true },\n * 'fred': { 'age': 40, 'active': false },\n * 'pebbles': { 'age': 1, 'active': true }\n * };\n *\n * _.findKey(users, function(o) { return o.age < 40; });\n * // => 'barney' (iteration order is not guaranteed)\n *\n * // The `_.matches` iteratee shorthand.\n * _.findKey(users, { 'age': 1, 'active': true });\n * // => 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findKey(users, ['active', false]);\n * // => 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.findKey(users, 'active');\n * // => 'barney'\n */\n\n function findKey(object, predicate) {\n return baseFindKey(object, getIteratee(predicate, 3), baseForOwn);\n }\n /**\n * This method is like `_.findKey` except that it iterates over elements of\n * a collection in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {string|undefined} Returns the key of the matched element,\n * else `undefined`.\n * @example\n *\n * var users = {\n * 'barney': { 'age': 36, 'active': true },\n * 'fred': { 'age': 40, 'active': false },\n * 'pebbles': { 'age': 1, 'active': true }\n * };\n *\n * _.findLastKey(users, function(o) { return o.age < 40; });\n * // => returns 'pebbles' assuming `_.findKey` returns 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.findLastKey(users, { 'age': 36, 'active': true });\n * // => 'barney'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findLastKey(users, ['active', false]);\n * // => 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.findLastKey(users, 'active');\n * // => 'pebbles'\n */\n\n\n function findLastKey(object, predicate) {\n return baseFindKey(object, getIteratee(predicate, 3), baseForOwnRight);\n }\n /**\n * Iterates over own and inherited enumerable string keyed properties of an\n * object and invokes `iteratee` for each property. The iteratee is invoked\n * with three arguments: (value, key, object). Iteratee functions may exit\n * iteration early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 0.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forInRight\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forIn(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a', 'b', then 'c' (iteration order is not guaranteed).\n */\n\n\n function forIn(object, iteratee) {\n return object == null ? object : baseFor(object, getIteratee(iteratee, 3), keysIn);\n }\n /**\n * This method is like `_.forIn` except that it iterates over properties of\n * `object` in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forIn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forInRight(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'c', 'b', then 'a' assuming `_.forIn` logs 'a', 'b', then 'c'.\n */\n\n\n function forInRight(object, iteratee) {\n return object == null ? object : baseForRight(object, getIteratee(iteratee, 3), keysIn);\n }\n /**\n * Iterates over own enumerable string keyed properties of an object and\n * invokes `iteratee` for each property. The iteratee is invoked with three\n * arguments: (value, key, object). Iteratee functions may exit iteration\n * early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 0.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forOwnRight\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forOwn(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\n\n\n function forOwn(object, iteratee) {\n return object && baseForOwn(object, getIteratee(iteratee, 3));\n }\n /**\n * This method is like `_.forOwn` except that it iterates over properties of\n * `object` in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forOwn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forOwnRight(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'b' then 'a' assuming `_.forOwn` logs 'a' then 'b'.\n */\n\n\n function forOwnRight(object, iteratee) {\n return object && baseForOwnRight(object, getIteratee(iteratee, 3));\n }\n /**\n * Creates an array of function property names from own enumerable properties\n * of `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to inspect.\n * @returns {Array} Returns the function names.\n * @see _.functionsIn\n * @example\n *\n * function Foo() {\n * this.a = _.constant('a');\n * this.b = _.constant('b');\n * }\n *\n * Foo.prototype.c = _.constant('c');\n *\n * _.functions(new Foo);\n * // => ['a', 'b']\n */\n\n\n function functions(object) {\n return object == null ? [] : baseFunctions(object, keys(object));\n }\n /**\n * Creates an array of function property names from own and inherited\n * enumerable properties of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @returns {Array} Returns the function names.\n * @see _.functions\n * @example\n *\n * function Foo() {\n * this.a = _.constant('a');\n * this.b = _.constant('b');\n * }\n *\n * Foo.prototype.c = _.constant('c');\n *\n * _.functionsIn(new Foo);\n * // => ['a', 'b', 'c']\n */\n\n\n function functionsIn(object) {\n return object == null ? [] : baseFunctions(object, keysIn(object));\n }\n /**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\n\n\n function get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n }\n /**\n * Checks if `path` is a direct property of `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = { 'a': { 'b': 2 } };\n * var other = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.has(object, 'a');\n * // => true\n *\n * _.has(object, 'a.b');\n * // => true\n *\n * _.has(object, ['a', 'b']);\n * // => true\n *\n * _.has(other, 'a');\n * // => false\n */\n\n\n function has(object, path) {\n return object != null && hasPath(object, path, baseHas);\n }\n /**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\n\n\n function hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n }\n /**\n * Creates an object composed of the inverted keys and values of `object`.\n * If `object` contains duplicate values, subsequent values overwrite\n * property assignments of previous values.\n *\n * @static\n * @memberOf _\n * @since 0.7.0\n * @category Object\n * @param {Object} object The object to invert.\n * @returns {Object} Returns the new inverted object.\n * @example\n *\n * var object = { 'a': 1, 'b': 2, 'c': 1 };\n *\n * _.invert(object);\n * // => { '1': 'c', '2': 'b' }\n */\n\n\n var invert = createInverter(function (result, value, key) {\n if (value != null && typeof value.toString != 'function') {\n value = nativeObjectToString.call(value);\n }\n\n result[value] = key;\n }, constant(identity));\n /**\n * This method is like `_.invert` except that the inverted object is generated\n * from the results of running each element of `object` thru `iteratee`. The\n * corresponding inverted value of each inverted key is an array of keys\n * responsible for generating the inverted value. The iteratee is invoked\n * with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.1.0\n * @category Object\n * @param {Object} object The object to invert.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Object} Returns the new inverted object.\n * @example\n *\n * var object = { 'a': 1, 'b': 2, 'c': 1 };\n *\n * _.invertBy(object);\n * // => { '1': ['a', 'c'], '2': ['b'] }\n *\n * _.invertBy(object, function(value) {\n * return 'group' + value;\n * });\n * // => { 'group1': ['a', 'c'], 'group2': ['b'] }\n */\n\n var invertBy = createInverter(function (result, value, key) {\n if (value != null && typeof value.toString != 'function') {\n value = nativeObjectToString.call(value);\n }\n\n if (hasOwnProperty.call(result, value)) {\n result[value].push(key);\n } else {\n result[value] = [key];\n }\n }, getIteratee);\n /**\n * Invokes the method at `path` of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the method to invoke.\n * @param {...*} [args] The arguments to invoke the method with.\n * @returns {*} Returns the result of the invoked method.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': [1, 2, 3, 4] } }] };\n *\n * _.invoke(object, 'a[0].b.c.slice', 1, 3);\n * // => [2, 3]\n */\n\n var invoke = baseRest(baseInvoke);\n /**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\n\n function keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n }\n /**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\n\n\n function keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n }\n /**\n * The opposite of `_.mapValues`; this method creates an object with the\n * same values as `object` and keys generated by running each own enumerable\n * string keyed property of `object` thru `iteratee`. The iteratee is invoked\n * with three arguments: (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapValues\n * @example\n *\n * _.mapKeys({ 'a': 1, 'b': 2 }, function(value, key) {\n * return key + value;\n * });\n * // => { 'a1': 1, 'b2': 2 }\n */\n\n\n function mapKeys(object, iteratee) {\n var result = {};\n iteratee = getIteratee(iteratee, 3);\n baseForOwn(object, function (value, key, object) {\n baseAssignValue(result, iteratee(value, key, object), value);\n });\n return result;\n }\n /**\n * Creates an object with the same keys as `object` and values generated\n * by running each own enumerable string keyed property of `object` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapKeys\n * @example\n *\n * var users = {\n * 'fred': { 'user': 'fred', 'age': 40 },\n * 'pebbles': { 'user': 'pebbles', 'age': 1 }\n * };\n *\n * _.mapValues(users, function(o) { return o.age; });\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n *\n * // The `_.property` iteratee shorthand.\n * _.mapValues(users, 'age');\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n */\n\n\n function mapValues(object, iteratee) {\n var result = {};\n iteratee = getIteratee(iteratee, 3);\n baseForOwn(object, function (value, key, object) {\n baseAssignValue(result, key, iteratee(value, key, object));\n });\n return result;\n }\n /**\n * This method is like `_.assign` except that it recursively merges own and\n * inherited enumerable string keyed properties of source objects into the\n * destination object. Source properties that resolve to `undefined` are\n * skipped if a destination value exists. Array and plain object properties\n * are merged recursively. Other objects and value types are overridden by\n * assignment. Source objects are applied from left to right. Subsequent\n * sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {\n * 'a': [{ 'b': 2 }, { 'd': 4 }]\n * };\n *\n * var other = {\n * 'a': [{ 'c': 3 }, { 'e': 5 }]\n * };\n *\n * _.merge(object, other);\n * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\n */\n\n\n var merge = createAssigner(function (object, source, srcIndex) {\n baseMerge(object, source, srcIndex);\n });\n /**\n * This method is like `_.merge` except that it accepts `customizer` which\n * is invoked to produce the merged values of the destination and source\n * properties. If `customizer` returns `undefined`, merging is handled by the\n * method instead. The `customizer` is invoked with six arguments:\n * (objValue, srcValue, key, object, source, stack).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} customizer The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * function customizer(objValue, srcValue) {\n * if (_.isArray(objValue)) {\n * return objValue.concat(srcValue);\n * }\n * }\n *\n * var object = { 'a': [1], 'b': [2] };\n * var other = { 'a': [3], 'b': [4] };\n *\n * _.mergeWith(object, other, customizer);\n * // => { 'a': [1, 3], 'b': [2, 4] }\n */\n\n var mergeWith = createAssigner(function (object, source, srcIndex, customizer) {\n baseMerge(object, source, srcIndex, customizer);\n });\n /**\n * The opposite of `_.pick`; this method creates an object composed of the\n * own and inherited enumerable property paths of `object` that are not omitted.\n *\n * **Note:** This method is considerably slower than `_.pick`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to omit.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omit(object, ['a', 'c']);\n * // => { 'b': '2' }\n */\n\n var omit = flatRest(function (object, paths) {\n var result = {};\n\n if (object == null) {\n return result;\n }\n\n var isDeep = false;\n paths = arrayMap(paths, function (path) {\n path = castPath(path, object);\n isDeep || (isDeep = path.length > 1);\n return path;\n });\n copyObject(object, getAllKeysIn(object), result);\n\n if (isDeep) {\n result = baseClone(result, CLONE_DEEP_FLAG | CLONE_FLAT_FLAG | CLONE_SYMBOLS_FLAG, customOmitClone);\n }\n\n var length = paths.length;\n\n while (length--) {\n baseUnset(result, paths[length]);\n }\n\n return result;\n });\n /**\n * The opposite of `_.pickBy`; this method creates an object composed of\n * the own and inherited enumerable string keyed properties of `object` that\n * `predicate` doesn't return truthy for. The predicate is invoked with two\n * arguments: (value, key).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The source object.\n * @param {Function} [predicate=_.identity] The function invoked per property.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omitBy(object, _.isNumber);\n * // => { 'b': '2' }\n */\n\n function omitBy(object, predicate) {\n return pickBy(object, negate(getIteratee(predicate)));\n }\n /**\n * Creates an object composed of the picked `object` properties.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pick(object, ['a', 'c']);\n * // => { 'a': 1, 'c': 3 }\n */\n\n\n var pick = flatRest(function (object, paths) {\n return object == null ? {} : basePick(object, paths);\n });\n /**\n * Creates an object composed of the `object` properties `predicate` returns\n * truthy for. The predicate is invoked with two arguments: (value, key).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The source object.\n * @param {Function} [predicate=_.identity] The function invoked per property.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pickBy(object, _.isNumber);\n * // => { 'a': 1, 'c': 3 }\n */\n\n function pickBy(object, predicate) {\n if (object == null) {\n return {};\n }\n\n var props = arrayMap(getAllKeysIn(object), function (prop) {\n return [prop];\n });\n predicate = getIteratee(predicate);\n return basePickBy(object, props, function (value, path) {\n return predicate(value, path[0]);\n });\n }\n /**\n * This method is like `_.get` except that if the resolved value is a\n * function it's invoked with the `this` binding of its parent object and\n * its result is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to resolve.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c1': 3, 'c2': _.constant(4) } }] };\n *\n * _.result(object, 'a[0].b.c1');\n * // => 3\n *\n * _.result(object, 'a[0].b.c2');\n * // => 4\n *\n * _.result(object, 'a[0].b.c3', 'default');\n * // => 'default'\n *\n * _.result(object, 'a[0].b.c3', _.constant('default'));\n * // => 'default'\n */\n\n\n function result(object, path, defaultValue) {\n path = castPath(path, object);\n var index = -1,\n length = path.length; // Ensure the loop is entered when path is empty.\n\n if (!length) {\n length = 1;\n object = undefined;\n }\n\n while (++index < length) {\n var value = object == null ? undefined : object[toKey(path[index])];\n\n if (value === undefined) {\n index = length;\n value = defaultValue;\n }\n\n object = isFunction(value) ? value.call(object) : value;\n }\n\n return object;\n }\n /**\n * Sets the value at `path` of `object`. If a portion of `path` doesn't exist,\n * it's created. Arrays are created for missing index properties while objects\n * are created for all other missing properties. Use `_.setWith` to customize\n * `path` creation.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.set(object, 'a[0].b.c', 4);\n * console.log(object.a[0].b.c);\n * // => 4\n *\n * _.set(object, ['x', '0', 'y', 'z'], 5);\n * console.log(object.x[0].y.z);\n * // => 5\n */\n\n\n function set(object, path, value) {\n return object == null ? object : baseSet(object, path, value);\n }\n /**\n * This method is like `_.set` except that it accepts `customizer` which is\n * invoked to produce the objects of `path`. If `customizer` returns `undefined`\n * path creation is handled by the method instead. The `customizer` is invoked\n * with three arguments: (nsValue, key, nsObject).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {};\n *\n * _.setWith(object, '[0][1]', 'a', Object);\n * // => { '0': { '1': 'a' } }\n */\n\n\n function setWith(object, path, value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return object == null ? object : baseSet(object, path, value, customizer);\n }\n /**\n * Creates an array of own enumerable string keyed-value pairs for `object`\n * which can be consumed by `_.fromPairs`. If `object` is a map or set, its\n * entries are returned.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias entries\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the key-value pairs.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.toPairs(new Foo);\n * // => [['a', 1], ['b', 2]] (iteration order is not guaranteed)\n */\n\n\n var toPairs = createToPairs(keys);\n /**\n * Creates an array of own and inherited enumerable string keyed-value pairs\n * for `object` which can be consumed by `_.fromPairs`. If `object` is a map\n * or set, its entries are returned.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias entriesIn\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the key-value pairs.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.toPairsIn(new Foo);\n * // => [['a', 1], ['b', 2], ['c', 3]] (iteration order is not guaranteed)\n */\n\n var toPairsIn = createToPairs(keysIn);\n /**\n * An alternative to `_.reduce`; this method transforms `object` to a new\n * `accumulator` object which is the result of running each of its own\n * enumerable string keyed properties thru `iteratee`, with each invocation\n * potentially mutating the `accumulator` object. If `accumulator` is not\n * provided, a new object with the same `[[Prototype]]` will be used. The\n * iteratee is invoked with four arguments: (accumulator, value, key, object).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 1.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The custom accumulator value.\n * @returns {*} Returns the accumulated value.\n * @example\n *\n * _.transform([2, 3, 4], function(result, n) {\n * result.push(n *= n);\n * return n % 2 == 0;\n * }, []);\n * // => [4, 9]\n *\n * _.transform({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n * (result[value] || (result[value] = [])).push(key);\n * }, {});\n * // => { '1': ['a', 'c'], '2': ['b'] }\n */\n\n function transform(object, iteratee, accumulator) {\n var isArr = isArray(object),\n isArrLike = isArr || isBuffer(object) || isTypedArray(object);\n iteratee = getIteratee(iteratee, 4);\n\n if (accumulator == null) {\n var Ctor = object && object.constructor;\n\n if (isArrLike) {\n accumulator = isArr ? new Ctor() : [];\n } else if (isObject(object)) {\n accumulator = isFunction(Ctor) ? baseCreate(getPrototype(object)) : {};\n } else {\n accumulator = {};\n }\n }\n\n (isArrLike ? arrayEach : baseForOwn)(object, function (value, index, object) {\n return iteratee(accumulator, value, index, object);\n });\n return accumulator;\n }\n /**\n * Removes the property at `path` of `object`.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 7 } }] };\n * _.unset(object, 'a[0].b.c');\n * // => true\n *\n * console.log(object);\n * // => { 'a': [{ 'b': {} }] };\n *\n * _.unset(object, ['a', '0', 'b', 'c']);\n * // => true\n *\n * console.log(object);\n * // => { 'a': [{ 'b': {} }] };\n */\n\n\n function unset(object, path) {\n return object == null ? true : baseUnset(object, path);\n }\n /**\n * This method is like `_.set` except that accepts `updater` to produce the\n * value to set. Use `_.updateWith` to customize `path` creation. The `updater`\n * is invoked with one argument: (value).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {Function} updater The function to produce the updated value.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.update(object, 'a[0].b.c', function(n) { return n * n; });\n * console.log(object.a[0].b.c);\n * // => 9\n *\n * _.update(object, 'x[0].y.z', function(n) { return n ? n + 1 : 0; });\n * console.log(object.x[0].y.z);\n * // => 0\n */\n\n\n function update(object, path, updater) {\n return object == null ? object : baseUpdate(object, path, castFunction(updater));\n }\n /**\n * This method is like `_.update` except that it accepts `customizer` which is\n * invoked to produce the objects of `path`. If `customizer` returns `undefined`\n * path creation is handled by the method instead. The `customizer` is invoked\n * with three arguments: (nsValue, key, nsObject).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {Function} updater The function to produce the updated value.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {};\n *\n * _.updateWith(object, '[0][1]', _.constant('a'), Object);\n * // => { '0': { '1': 'a' } }\n */\n\n\n function updateWith(object, path, updater, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return object == null ? object : baseUpdate(object, path, castFunction(updater), customizer);\n }\n /**\n * Creates an array of the own enumerable string keyed property values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.values(new Foo);\n * // => [1, 2] (iteration order is not guaranteed)\n *\n * _.values('hi');\n * // => ['h', 'i']\n */\n\n\n function values(object) {\n return object == null ? [] : baseValues(object, keys(object));\n }\n /**\n * Creates an array of the own and inherited enumerable string keyed property\n * values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.valuesIn(new Foo);\n * // => [1, 2, 3] (iteration order is not guaranteed)\n */\n\n\n function valuesIn(object) {\n return object == null ? [] : baseValues(object, keysIn(object));\n }\n /*------------------------------------------------------------------------*/\n\n /**\n * Clamps `number` within the inclusive `lower` and `upper` bounds.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Number\n * @param {number} number The number to clamp.\n * @param {number} [lower] The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the clamped number.\n * @example\n *\n * _.clamp(-10, -5, 5);\n * // => -5\n *\n * _.clamp(10, -5, 5);\n * // => 5\n */\n\n\n function clamp(number, lower, upper) {\n if (upper === undefined) {\n upper = lower;\n lower = undefined;\n }\n\n if (upper !== undefined) {\n upper = toNumber(upper);\n upper = upper === upper ? upper : 0;\n }\n\n if (lower !== undefined) {\n lower = toNumber(lower);\n lower = lower === lower ? lower : 0;\n }\n\n return baseClamp(toNumber(number), lower, upper);\n }\n /**\n * Checks if `n` is between `start` and up to, but not including, `end`. If\n * `end` is not specified, it's set to `start` with `start` then set to `0`.\n * If `start` is greater than `end` the params are swapped to support\n * negative ranges.\n *\n * @static\n * @memberOf _\n * @since 3.3.0\n * @category Number\n * @param {number} number The number to check.\n * @param {number} [start=0] The start of the range.\n * @param {number} end The end of the range.\n * @returns {boolean} Returns `true` if `number` is in the range, else `false`.\n * @see _.range, _.rangeRight\n * @example\n *\n * _.inRange(3, 2, 4);\n * // => true\n *\n * _.inRange(4, 8);\n * // => true\n *\n * _.inRange(4, 2);\n * // => false\n *\n * _.inRange(2, 2);\n * // => false\n *\n * _.inRange(1.2, 2);\n * // => true\n *\n * _.inRange(5.2, 4);\n * // => false\n *\n * _.inRange(-3, -2, -6);\n * // => true\n */\n\n\n function inRange(number, start, end) {\n start = toFinite(start);\n\n if (end === undefined) {\n end = start;\n start = 0;\n } else {\n end = toFinite(end);\n }\n\n number = toNumber(number);\n return baseInRange(number, start, end);\n }\n /**\n * Produces a random number between the inclusive `lower` and `upper` bounds.\n * If only one argument is provided a number between `0` and the given number\n * is returned. If `floating` is `true`, or either `lower` or `upper` are\n * floats, a floating-point number is returned instead of an integer.\n *\n * **Note:** JavaScript follows the IEEE-754 standard for resolving\n * floating-point values which can produce unexpected results.\n *\n * @static\n * @memberOf _\n * @since 0.7.0\n * @category Number\n * @param {number} [lower=0] The lower bound.\n * @param {number} [upper=1] The upper bound.\n * @param {boolean} [floating] Specify returning a floating-point number.\n * @returns {number} Returns the random number.\n * @example\n *\n * _.random(0, 5);\n * // => an integer between 0 and 5\n *\n * _.random(5);\n * // => also an integer between 0 and 5\n *\n * _.random(5, true);\n * // => a floating-point number between 0 and 5\n *\n * _.random(1.2, 5.2);\n * // => a floating-point number between 1.2 and 5.2\n */\n\n\n function random(lower, upper, floating) {\n if (floating && typeof floating != 'boolean' && isIterateeCall(lower, upper, floating)) {\n upper = floating = undefined;\n }\n\n if (floating === undefined) {\n if (typeof upper == 'boolean') {\n floating = upper;\n upper = undefined;\n } else if (typeof lower == 'boolean') {\n floating = lower;\n lower = undefined;\n }\n }\n\n if (lower === undefined && upper === undefined) {\n lower = 0;\n upper = 1;\n } else {\n lower = toFinite(lower);\n\n if (upper === undefined) {\n upper = lower;\n lower = 0;\n } else {\n upper = toFinite(upper);\n }\n }\n\n if (lower > upper) {\n var temp = lower;\n lower = upper;\n upper = temp;\n }\n\n if (floating || lower % 1 || upper % 1) {\n var rand = nativeRandom();\n return nativeMin(lower + rand * (upper - lower + freeParseFloat('1e-' + ((rand + '').length - 1))), upper);\n }\n\n return baseRandom(lower, upper);\n }\n /*------------------------------------------------------------------------*/\n\n /**\n * Converts `string` to [camel case](https://en.wikipedia.org/wiki/CamelCase).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the camel cased string.\n * @example\n *\n * _.camelCase('Foo Bar');\n * // => 'fooBar'\n *\n * _.camelCase('--foo-bar--');\n * // => 'fooBar'\n *\n * _.camelCase('__FOO_BAR__');\n * // => 'fooBar'\n */\n\n\n var camelCase = createCompounder(function (result, word, index) {\n word = word.toLowerCase();\n return result + (index ? capitalize(word) : word);\n });\n /**\n * Converts the first character of `string` to upper case and the remaining\n * to lower case.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to capitalize.\n * @returns {string} Returns the capitalized string.\n * @example\n *\n * _.capitalize('FRED');\n * // => 'Fred'\n */\n\n function capitalize(string) {\n return upperFirst(toString(string).toLowerCase());\n }\n /**\n * Deburrs `string` by converting\n * [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table)\n * and [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A)\n * letters to basic Latin letters and removing\n * [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to deburr.\n * @returns {string} Returns the deburred string.\n * @example\n *\n * _.deburr('déjà vu');\n * // => 'deja vu'\n */\n\n\n function deburr(string) {\n string = toString(string);\n return string && string.replace(reLatin, deburrLetter).replace(reComboMark, '');\n }\n /**\n * Checks if `string` ends with the given target string.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {string} [target] The string to search for.\n * @param {number} [position=string.length] The position to search up to.\n * @returns {boolean} Returns `true` if `string` ends with `target`,\n * else `false`.\n * @example\n *\n * _.endsWith('abc', 'c');\n * // => true\n *\n * _.endsWith('abc', 'b');\n * // => false\n *\n * _.endsWith('abc', 'b', 2);\n * // => true\n */\n\n\n function endsWith(string, target, position) {\n string = toString(string);\n target = baseToString(target);\n var length = string.length;\n position = position === undefined ? length : baseClamp(toInteger(position), 0, length);\n var end = position;\n position -= target.length;\n return position >= 0 && string.slice(position, end) == target;\n }\n /**\n * Converts the characters \"&\", \"<\", \">\", '\"', and \"'\" in `string` to their\n * corresponding HTML entities.\n *\n * **Note:** No other characters are escaped. To escape additional\n * characters use a third-party library like [_he_](https://mths.be/he).\n *\n * Though the \">\" character is escaped for symmetry, characters like\n * \">\" and \"/\" don't need escaping in HTML and have no special meaning\n * unless they're part of a tag or unquoted attribute value. See\n * [Mathias Bynens's article](https://mathiasbynens.be/notes/ambiguous-ampersands)\n * (under \"semi-related fun fact\") for more details.\n *\n * When working with HTML you should always\n * [quote attribute values](http://wonko.com/post/html-escaping) to reduce\n * XSS vectors.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category String\n * @param {string} [string=''] The string to escape.\n * @returns {string} Returns the escaped string.\n * @example\n *\n * _.escape('fred, barney, & pebbles');\n * // => 'fred, barney, & pebbles'\n */\n\n\n function escape(string) {\n string = toString(string);\n return string && reHasUnescapedHtml.test(string) ? string.replace(reUnescapedHtml, escapeHtmlChar) : string;\n }\n /**\n * Escapes the `RegExp` special characters \"^\", \"$\", \"\\\", \".\", \"*\", \"+\",\n * \"?\", \"(\", \")\", \"[\", \"]\", \"{\", \"}\", and \"|\" in `string`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to escape.\n * @returns {string} Returns the escaped string.\n * @example\n *\n * _.escapeRegExp('[lodash](https://lodash.com/)');\n * // => '\\[lodash\\]\\(https://lodash\\.com/\\)'\n */\n\n\n function escapeRegExp(string) {\n string = toString(string);\n return string && reHasRegExpChar.test(string) ? string.replace(reRegExpChar, '\\\\$&') : string;\n }\n /**\n * Converts `string` to\n * [kebab case](https://en.wikipedia.org/wiki/Letter_case#Special_case_styles).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the kebab cased string.\n * @example\n *\n * _.kebabCase('Foo Bar');\n * // => 'foo-bar'\n *\n * _.kebabCase('fooBar');\n * // => 'foo-bar'\n *\n * _.kebabCase('__FOO_BAR__');\n * // => 'foo-bar'\n */\n\n\n var kebabCase = createCompounder(function (result, word, index) {\n return result + (index ? '-' : '') + word.toLowerCase();\n });\n /**\n * Converts `string`, as space separated words, to lower case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the lower cased string.\n * @example\n *\n * _.lowerCase('--Foo-Bar--');\n * // => 'foo bar'\n *\n * _.lowerCase('fooBar');\n * // => 'foo bar'\n *\n * _.lowerCase('__FOO_BAR__');\n * // => 'foo bar'\n */\n\n var lowerCase = createCompounder(function (result, word, index) {\n return result + (index ? ' ' : '') + word.toLowerCase();\n });\n /**\n * Converts the first character of `string` to lower case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.lowerFirst('Fred');\n * // => 'fred'\n *\n * _.lowerFirst('FRED');\n * // => 'fRED'\n */\n\n var lowerFirst = createCaseFirst('toLowerCase');\n /**\n * Pads `string` on the left and right sides if it's shorter than `length`.\n * Padding characters are truncated if they can't be evenly divided by `length`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.pad('abc', 8);\n * // => ' abc '\n *\n * _.pad('abc', 8, '_-');\n * // => '_-abc_-_'\n *\n * _.pad('abc', 3);\n * // => 'abc'\n */\n\n function pad(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n var strLength = length ? stringSize(string) : 0;\n\n if (!length || strLength >= length) {\n return string;\n }\n\n var mid = (length - strLength) / 2;\n return createPadding(nativeFloor(mid), chars) + string + createPadding(nativeCeil(mid), chars);\n }\n /**\n * Pads `string` on the right side if it's shorter than `length`. Padding\n * characters are truncated if they exceed `length`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.padEnd('abc', 6);\n * // => 'abc '\n *\n * _.padEnd('abc', 6, '_-');\n * // => 'abc_-_'\n *\n * _.padEnd('abc', 3);\n * // => 'abc'\n */\n\n\n function padEnd(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n var strLength = length ? stringSize(string) : 0;\n return length && strLength < length ? string + createPadding(length - strLength, chars) : string;\n }\n /**\n * Pads `string` on the left side if it's shorter than `length`. Padding\n * characters are truncated if they exceed `length`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.padStart('abc', 6);\n * // => ' abc'\n *\n * _.padStart('abc', 6, '_-');\n * // => '_-_abc'\n *\n * _.padStart('abc', 3);\n * // => 'abc'\n */\n\n\n function padStart(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n var strLength = length ? stringSize(string) : 0;\n return length && strLength < length ? createPadding(length - strLength, chars) + string : string;\n }\n /**\n * Converts `string` to an integer of the specified radix. If `radix` is\n * `undefined` or `0`, a `radix` of `10` is used unless `value` is a\n * hexadecimal, in which case a `radix` of `16` is used.\n *\n * **Note:** This method aligns with the\n * [ES5 implementation](https://es5.github.io/#x15.1.2.2) of `parseInt`.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category String\n * @param {string} string The string to convert.\n * @param {number} [radix=10] The radix to interpret `value` by.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.parseInt('08');\n * // => 8\n *\n * _.map(['6', '08', '10'], _.parseInt);\n * // => [6, 8, 10]\n */\n\n\n function parseInt(string, radix, guard) {\n if (guard || radix == null) {\n radix = 0;\n } else if (radix) {\n radix = +radix;\n }\n\n return nativeParseInt(toString(string).replace(reTrimStart, ''), radix || 0);\n }\n /**\n * Repeats the given string `n` times.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to repeat.\n * @param {number} [n=1] The number of times to repeat the string.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {string} Returns the repeated string.\n * @example\n *\n * _.repeat('*', 3);\n * // => '***'\n *\n * _.repeat('abc', 2);\n * // => 'abcabc'\n *\n * _.repeat('abc', 0);\n * // => ''\n */\n\n\n function repeat(string, n, guard) {\n if (guard ? isIterateeCall(string, n, guard) : n === undefined) {\n n = 1;\n } else {\n n = toInteger(n);\n }\n\n return baseRepeat(toString(string), n);\n }\n /**\n * Replaces matches for `pattern` in `string` with `replacement`.\n *\n * **Note:** This method is based on\n * [`String#replace`](https://mdn.io/String/replace).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to modify.\n * @param {RegExp|string} pattern The pattern to replace.\n * @param {Function|string} replacement The match replacement.\n * @returns {string} Returns the modified string.\n * @example\n *\n * _.replace('Hi Fred', 'Fred', 'Barney');\n * // => 'Hi Barney'\n */\n\n\n function replace() {\n var args = arguments,\n string = toString(args[0]);\n return args.length < 3 ? string : string.replace(args[1], args[2]);\n }\n /**\n * Converts `string` to\n * [snake case](https://en.wikipedia.org/wiki/Snake_case).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the snake cased string.\n * @example\n *\n * _.snakeCase('Foo Bar');\n * // => 'foo_bar'\n *\n * _.snakeCase('fooBar');\n * // => 'foo_bar'\n *\n * _.snakeCase('--FOO-BAR--');\n * // => 'foo_bar'\n */\n\n\n var snakeCase = createCompounder(function (result, word, index) {\n return result + (index ? '_' : '') + word.toLowerCase();\n });\n /**\n * Splits `string` by `separator`.\n *\n * **Note:** This method is based on\n * [`String#split`](https://mdn.io/String/split).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to split.\n * @param {RegExp|string} separator The separator pattern to split by.\n * @param {number} [limit] The length to truncate results to.\n * @returns {Array} Returns the string segments.\n * @example\n *\n * _.split('a-b-c', '-', 2);\n * // => ['a', 'b']\n */\n\n function split(string, separator, limit) {\n if (limit && typeof limit != 'number' && isIterateeCall(string, separator, limit)) {\n separator = limit = undefined;\n }\n\n limit = limit === undefined ? MAX_ARRAY_LENGTH : limit >>> 0;\n\n if (!limit) {\n return [];\n }\n\n string = toString(string);\n\n if (string && (typeof separator == 'string' || separator != null && !isRegExp(separator))) {\n separator = baseToString(separator);\n\n if (!separator && hasUnicode(string)) {\n return castSlice(stringToArray(string), 0, limit);\n }\n }\n\n return string.split(separator, limit);\n }\n /**\n * Converts `string` to\n * [start case](https://en.wikipedia.org/wiki/Letter_case#Stylistic_or_specialised_usage).\n *\n * @static\n * @memberOf _\n * @since 3.1.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the start cased string.\n * @example\n *\n * _.startCase('--foo-bar--');\n * // => 'Foo Bar'\n *\n * _.startCase('fooBar');\n * // => 'Foo Bar'\n *\n * _.startCase('__FOO_BAR__');\n * // => 'FOO BAR'\n */\n\n\n var startCase = createCompounder(function (result, word, index) {\n return result + (index ? ' ' : '') + upperFirst(word);\n });\n /**\n * Checks if `string` starts with the given target string.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {string} [target] The string to search for.\n * @param {number} [position=0] The position to search from.\n * @returns {boolean} Returns `true` if `string` starts with `target`,\n * else `false`.\n * @example\n *\n * _.startsWith('abc', 'a');\n * // => true\n *\n * _.startsWith('abc', 'b');\n * // => false\n *\n * _.startsWith('abc', 'b', 1);\n * // => true\n */\n\n function startsWith(string, target, position) {\n string = toString(string);\n position = position == null ? 0 : baseClamp(toInteger(position), 0, string.length);\n target = baseToString(target);\n return string.slice(position, position + target.length) == target;\n }\n /**\n * Creates a compiled template function that can interpolate data properties\n * in \"interpolate\" delimiters, HTML-escape interpolated data properties in\n * \"escape\" delimiters, and execute JavaScript in \"evaluate\" delimiters. Data\n * properties may be accessed as free variables in the template. If a setting\n * object is given, it takes precedence over `_.templateSettings` values.\n *\n * **Note:** In the development build `_.template` utilizes\n * [sourceURLs](http://www.html5rocks.com/en/tutorials/developertools/sourcemaps/#toc-sourceurl)\n * for easier debugging.\n *\n * For more information on precompiling templates see\n * [lodash's custom builds documentation](https://lodash.com/custom-builds).\n *\n * For more information on Chrome extension sandboxes see\n * [Chrome's extensions documentation](https://developer.chrome.com/extensions/sandboxingEval).\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category String\n * @param {string} [string=''] The template string.\n * @param {Object} [options={}] The options object.\n * @param {RegExp} [options.escape=_.templateSettings.escape]\n * The HTML \"escape\" delimiter.\n * @param {RegExp} [options.evaluate=_.templateSettings.evaluate]\n * The \"evaluate\" delimiter.\n * @param {Object} [options.imports=_.templateSettings.imports]\n * An object to import into the template as free variables.\n * @param {RegExp} [options.interpolate=_.templateSettings.interpolate]\n * The \"interpolate\" delimiter.\n * @param {string} [options.sourceURL='lodash.templateSources[n]']\n * The sourceURL of the compiled template.\n * @param {string} [options.variable='obj']\n * The data object variable name.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the compiled template function.\n * @example\n *\n * // Use the \"interpolate\" delimiter to create a compiled template.\n * var compiled = _.template('hello <%= user %>!');\n * compiled({ 'user': 'fred' });\n * // => 'hello fred!'\n *\n * // Use the HTML \"escape\" delimiter to escape data property values.\n * var compiled = _.template('<%- value %>');\n * compiled({ 'value': '