mirror of
https://github.com/leporello-js/leporello-js
synced 2026-01-13 13:04:30 -08:00
2 lines
104 KiB
JavaScript
2 lines
104 KiB
JavaScript
/*! For license information please see monaco-vim.js.LICENSE.txt */
|
||
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("monaco-editor/esm/vs/editor/editor.api"),require("monaco-editor/esm/vs/editor/common/commands/shiftCommand")):"function"==typeof define&&define.amd?define(["vs/editor/editor.main","vs/editor/common/commands/shiftCommand"],t):"object"==typeof exports?exports.MonacoVim=t(require("monaco-editor/esm/vs/editor/editor.api"),require("monaco-editor/esm/vs/editor/common/commands/shiftCommand")):e.MonacoVim=t(e.monaco,e[void 0])}(self,((e,t)=>(()=>{"use strict";var n={774:e=>{e.exports=t},135:t=>{t.exports=e}},r={};function o(e){var t=r[e];if(void 0!==t)return t.exports;var i=r[e]={exports:{}};return n[e](i,i.exports,o),i.exports}o.d=(e,t)=>{for(var n in t)o.o(t,n)&&!o.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},o.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),o.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var i={};o.r(i),o.d(i,{StatusBar:()=>N,VimMode:()=>R,initVimMode:()=>K});var a=o(135),s=o(774);function l(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function c(e){return c="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},c(e)}function u(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function h(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,d(r.key),r)}}function f(e,t,n){return t&&h(e.prototype,t),n&&h(e,n),Object.defineProperty(e,"prototype",{writable:!1}),e}function d(e){var t=function(e){if("object"!=c(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=c(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==c(t)?t:t+""}var p={readOnly:65,cursorWidth:20,fontInfo:32},m=/[\u00df\u0587\u0590-\u05f4\u0600-\u06ff\u3040-\u309f\u30a0-\u30ff\u3400-\u4db5\u4e00-\u9fcc\uac00-\ud7af]/;function g(e,t){if(!(this instanceof g))return new g(e,t);this.line=e,this.ch=t}String.prototype.normalize;var v=function(e,t){this.pos=this.start=0,this.string=e,this.tabSize=t||8,this.lastColumnPos=this.lastColumnValue=0,this.lineStart=0};function y(e){return new g(e.lineNumber-1,e.column-1)}function k(e){return new a.Position(e.line+1,e.ch+1)}v.prototype={eol:function(){return this.pos>=this.string.length},sol:function(){return this.pos==this.lineStart},peek:function(){return this.string.charAt(this.pos)||void 0},next:function(){if(this.pos<this.string.length)return this.string.charAt(this.pos++)},eat:function(e){var t=this.string.charAt(this.pos);if("string"==typeof e)var n=t==e;else n=t&&(e.test?e.test(t):e(t));if(n)return++this.pos,t},eatWhile:function(e){for(var t=this.pos;this.eat(e););return this.pos>t},eatSpace:function(){for(var e=this.pos;/[\s\u00a0]/.test(this.string.charAt(this.pos));)++this.pos;return this.pos>e},skipToEnd:function(){this.pos=this.string.length},skipTo:function(e){var t=this.string.indexOf(e,this.pos);if(t>-1)return this.pos=t,!0},backUp:function(e){this.pos-=e},column:function(){throw"not implemented"},indentation:function(){throw"not implemented"},match:function(e,t,n){if("string"!=typeof e){var r=this.string.slice(this.pos).match(e);return r&&r.index>0?null:(r&&!1!==t&&(this.pos+=r[0].length),r)}var o=function(e){return n?e.toLowerCase():e};if(o(this.string.substr(this.pos,e.length))==o(e))return!1!==t&&(this.pos+=e.length),!0},current:function(){return this.string.slice(this.start,this.pos)},hideFirstChars:function(e,t){this.lineStart+=e;try{return t()}finally{this.lineStart-=e}}};var C=function(){return f((function e(t,n,r,o){u(this,e),this.cm=t,this.id=n,this.lineNumber=r+1,this.column=o+1,t.marks[this.id]=this}),[{key:"clear",value:function(){delete this.cm.marks[this.id]}},{key:"find",value:function(){return y(this)}}])}();function w(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=!0,r=a.KeyCode[e.keyCode];e.key&&(r=e.key,n=!1);var o=r,i=t;switch(e.keyCode){case a.KeyCode.Shift:case a.KeyCode.Meta:case a.KeyCode.Alt:case a.KeyCode.Ctrl:return o;case a.KeyCode.Escape:i=!0,o="Esc";break;case a.KeyCode.Space:i=!0}return r.startsWith("Key")||r.startsWith("KEY_")?o=r[r.length-1].toLowerCase():r.startsWith("Digit")?o=r.slice(5,6):r.startsWith("Numpad")?o=r.slice(6,7):r.endsWith("Arrow")?(i=!0,o=r.substring(0,r.length-5)):(r.startsWith("US_")||r.startsWith("Bracket")||!o)&&(o=e.browserEvent.key),i||e.altKey||e.ctrlKey||e.metaKey?(e.altKey&&(o="Alt-".concat(o)),e.ctrlKey&&(o="Ctrl-".concat(o)),e.metaKey&&(o="Meta-".concat(o)),e.shiftKey&&(o="Shift-".concat(o))):o=e.key||e.browserEvent.key,1===o.length&&n&&(o="'".concat(o,"'")),o}var S=function(){function e(t){u(this,e),M.call(this),this.editor=t,this.state={keyMap:"vim"},this.marks={},this.$uid=0,this.disposables=[],this.listeners={},this.curOp={},this.attached=!1,this.statusBar=null,this.options={},this.addLocalListeners(),this.ctxInsert=this.editor.createContextKey("insertMode",!0)}return f(e,[{key:"attach",value:function(){e.keyMap.vim.attach(this)}},{key:"addLocalListeners",value:function(){this.disposables.push(this.editor.onDidChangeCursorPosition(this.handleCursorChange),this.editor.onDidChangeModelContent(this.handleChange),this.editor.onKeyDown(this.handleKeyDown))}},{key:"handleReplaceMode",value:function(e,t){var n=!1,r=e,o=this.editor.getPosition(),i=new a.Range(o.lineNumber,o.column,o.lineNumber,o.column+1);if(e.startsWith("'"))r=e[1];else if("Enter"===r)r="\n";else{if("Backspace"!==r)return;var s=this.replaceStack.pop();if(!s)return;n=!0,r=s,i=new a.Range(o.lineNumber,o.column,o.lineNumber,o.column-1)}t.preventDefault(),t.stopPropagation(),this.replaceStack||(this.replaceStack=[]),n||this.replaceStack.push(this.editor.getModel().getValueInRange(i)),this.editor.executeEdits("vim",[{text:r,range:i,forceMoveMarkers:!0}]),n&&this.editor.setPosition(i.getStartPosition())}},{key:"setOption",value:function(e,t){this.state[e]=t,"theme"===e&&a.editor.setTheme(t)}},{key:"getConfiguration",value:function(){var e=this.editor,t=p;return"function"==typeof e.getConfiguration?e.getConfiguration():("EditorOption"in a.editor&&(t=a.editor.EditorOption),{readOnly:e.getOption(t.readOnly),viewInfo:{cursorWidth:e.getOption(t.cursorWidth)},fontInfo:e.getOption(t.fontInfo)})}},{key:"getOption",value:function(e){return"readOnly"===e?this.getConfiguration().readOnly:"firstLineNumber"===e?this.firstLine()+1:"indentWithTabs"===e?!this.editor.getModel().getOptions().insertSpaces:"function"==typeof this.editor.getConfiguration?this.editor.getRawConfiguration()[e]:this.editor.getRawOptions()[e]}},{key:"dispatch",value:function(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r<t;r++)n[r-1]=arguments[r];var o=this.listeners[e];o&&o.forEach((function(e){return e.apply(void 0,n)}))}},{key:"on",value:function(e,t){this.listeners[e]||(this.listeners[e]=[]),this.listeners[e].push(t)}},{key:"off",value:function(e,t){var n=this.listeners[e];n&&(this.listeners[e]=n.filter((function(e){return e!==t})))}},{key:"firstLine",value:function(){return 0}},{key:"lastLine",value:function(){return this.lineCount()-1}},{key:"lineCount",value:function(){return this.editor.getModel().getLineCount()}},{key:"defaultTextHeight",value:function(){return 1}},{key:"getLine",value:function(e){if(e<0)return"";var t=this.editor.getModel().getLineCount();return e+1>t&&(e=t-1),this.editor.getModel().getLineContent(e+1)}},{key:"getAnchorForSelection",value:function(e){return e.isEmpty()?e.getPosition():e.getDirection()===a.SelectionDirection.LTR?e.getStartPosition():e.getEndPosition()}},{key:"getHeadForSelection",value:function(e){return e.isEmpty()?e.getPosition():e.getDirection()===a.SelectionDirection.LTR?e.getEndPosition():e.getStartPosition()}},{key:"getCursor",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;if(!e)return y(this.editor.getPosition());var t=this.editor.getSelection();return y(t.isEmpty()?t.getPosition():"anchor"===e?this.getAnchorForSelection(t):this.getHeadForSelection(t))}},{key:"getRange",value:function(e,t){var n=k(e),r=k(t);return this.editor.getModel().getValueInRange(a.Range.fromPositions(n,r))}},{key:"getSelection",value:function(){var e=[],t=this.editor;return t.getSelections().map((function(n){e.push(t.getModel().getValueInRange(n))})),e.join("\n")}},{key:"replaceRange",value:function(e,t,n){var r=k(t),o=n?k(n):r;this.editor.executeEdits("vim",[{text:e,range:a.Range.fromPositions(r,o)}]),this.pushUndoStop()}},{key:"pushUndoStop",value:function(){this.editor.pushUndoStop()}},{key:"setCursor",value:function(e,t){var n=e;"object"!==c(e)&&((n={}).line=e,n.ch=t);var r=this.editor.getModel().validatePosition(k(n));this.editor.setPosition(k(n)),this.editor.revealPosition(r)}},{key:"somethingSelected",value:function(){return!this.editor.getSelection().isEmpty()}},{key:"operation",value:function(e,t){return e()}},{key:"listSelections",value:function(){var e=this,t=this.editor.getSelections();return!t.length||this.inVirtualSelectionMode?[{anchor:this.getCursor("anchor"),head:this.getCursor("head")}]:t.map((function(t){return t.getPosition(),t.getStartPosition(),t.getEndPosition(),{anchor:e.clipPos(y(e.getAnchorForSelection(t))),head:e.clipPos(y(e.getHeadForSelection(t)))}}))}},{key:"focus",value:function(){this.editor.focus()}},{key:"setSelections",value:function(e,t){var n=!!this.editor.getSelections().length,r=e.map((function(e,t){var r=e.anchor,o=e.head;return n?a.Selection.fromPositions(k(r),k(o)):a.Selection.fromPositions(k(o),k(r))}));if(t&&r[t]&&r.push(r.splice(t,1)[0]),r.length){var o,i=r[0];o=i.getDirection()===a.SelectionDirection.LTR?i.getEndPosition():i.getStartPosition(),this.editor.setSelections(r),this.editor.revealPosition(o)}}},{key:"setSelection",value:function(e,t){var n=a.Range.fromPositions(k(e),k(t));this.editor.setSelection(n)}},{key:"getSelections",value:function(){var e=this.editor;return e.getSelections().map((function(t){return e.getModel().getValueInRange(t)}))}},{key:"replaceSelections",value:function(e){var t=this.editor;t.getSelections().forEach((function(n,r){t.executeEdits("vim",[{range:n,text:e[r],forceMoveMarkers:!1}])}))}},{key:"toggleOverwrite",value:function(e){e?(this.enterVimMode(),this.replaceMode=!0):(this.leaveVimMode(),this.replaceMode=!1,this.replaceStack=[])}},{key:"charCoords",value:function(e,t){return{top:e.line,left:e.ch}}},{key:"coordsChar",value:function(e,t){}},{key:"clipPos",value:function(e){return y(this.editor.getModel().validatePosition(k(e)))}},{key:"setBookmark",value:function(e,t){var n=new C(this,this.$uid++,e.line,e.ch);return t&&t.insertLeft||(n.$insertRight=!0),this.marks[n.id]=n,n}},{key:"getScrollInfo",value:function(){var e,t,n=this.editor,r=(e=n.getVisibleRanges(),t=1,function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,o,i,a,s=[],l=!0,c=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;l=!1}else for(;!(l=(r=i.call(n)).done)&&(s.push(r.value),s.length!==t);l=!0);}catch(e){c=!0,o=e}finally{try{if(!l&&null!=n.return&&(a=n.return(),Object(a)!==a))return}finally{if(c)throw o}}return s}}(e,t)||function(e,t){if(e){if("string"==typeof e)return l(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?l(e,t):void 0}}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}())[0];return{left:0,top:r.startLineNumber-1,height:n.getModel().getLineCount(),clientHeight:r.endLineNumber-r.startLineNumber+1}}},{key:"triggerEditorAction",value:function(e){this.editor.trigger("vim",e)}},{key:"dispose",value:function(){this.dispatch("dispose"),this.removeOverlay(),e.keyMap.vim&&e.keyMap.vim.detach(this),this.disposables.forEach((function(e){return e.dispose()}))}},{key:"getInputField",value:function(){}},{key:"getWrapperElement",value:function(){}},{key:"enterVimMode",value:function(){this.ctxInsert.set(!1);var e=this.getConfiguration();this.initialCursorWidth=e.viewInfo.cursorWidth||0,this.editor.updateOptions({cursorWidth:e.fontInfo.typicalFullwidthCharacterWidth,cursorBlinking:"solid",cursorStyle:"block"})}},{key:"leaveVimMode",value:function(){this.ctxInsert.set(!0),this.editor.updateOptions({cursorWidth:this.initialCursorWidth||0,cursorBlinking:"blink",cursorStyle:"line"})}},{key:"virtualSelectionMode",value:function(){return this.inVirtualSelectionMode}},{key:"markText",value:function(){return{clear:function(){},find:function(){}}}},{key:"getUserVisibleLines",value:function(){var e=this.editor.getVisibleRanges();if(!e.length)return{top:0,bottom:0};var t={top:1/0,bottom:0};return e.reduce((function(e,t){return t.startLineNumber<e.top&&(e.top=t.startLineNumber),t.endLineNumber>e.bottom&&(e.bottom=t.endLineNumber),e}),t),t.top-=1,t.bottom-=1,t}},{key:"findPosV",value:function(e,t,n){var r=this.editor,o=t,i=n,a=k(e);if("page"===n){var s=r.getLayoutInfo().height,l=this.getConfiguration().fontInfo.lineHeight;o*=Math.floor(s/l),i="line"}return"line"===i&&(a.lineNumber+=o),y(a)}},{key:"findMatchingBracket",value:function(e){var t,n,r=k(e),o=this.editor.getModel();return(t=o.bracketPairs?o.bracketPairs.matchBracket(r):null===(n=o.matchBracket)||void 0===n?void 0:n.call(o,r))&&2===t.length?{to:y(t[1].getStartPosition())}:{to:null}}},{key:"findFirstNonWhiteSpaceCharacter",value:function(e){return this.editor.getModel().getLineFirstNonWhitespaceColumn(e+1)-1}},{key:"scrollTo",value:function(e,t){(e||t)&&(e||(t<0&&(t=this.editor.getPosition().lineNumber-t),this.editor.setScrollTop(this.editor.getTopForLineNumber(t+1))))}},{key:"moveCurrentLineTo",value:function(e){var t,n=this.editor,r=n.getPosition(),o=a.Range.fromPositions(r,r);switch(e){case"top":return void n.revealRangeAtTop(o);case"center":return void n.revealRangeInCenter(o);case"bottom":return void(null===(t=n._revealRange)||void 0===t||t.call(n,o,4))}}},{key:"getSearchCursor",value:function(e,t){var n=!1,r=!1;e instanceof RegExp&&!e.global&&(n=!e.ignoreCase,e=e.source,r=!0),null==t.ch&&(t.ch=Number.MAX_VALUE);var o=k(t),i=this,a=this.editor,s=null,l=a.getModel(),c=l.findMatches(e,!1,r,n)||[];return{getMatches:function(){return c},findNext:function(){return this.find(!1)},findPrevious:function(){return this.find(!0)},jumpTo:function(e){if(!c||!c.length)return!1;var t=c[e];return s=t.range,i.highlightRanges([s],"currentFindMatch"),i.highlightRanges(c.map((function(e){return e.range})).filter((function(e){return!e.equalsRange(s)}))),s},find:function(t){if(!c||!c.length)return!1;var a;if(t){var u=s?s.getStartPosition():o;if(!(a=l.findPreviousMatch(e,u,r,n))||!a.range.getStartPosition().isBeforeOrEqual(u))return!1}else{var h=s?l.getPositionAt(l.getOffsetAt(s.getEndPosition())+1):o;if(!(a=l.findNextMatch(e,h,r,n))||!h.isBeforeOrEqual(a.range.getStartPosition()))return!1}return s=a.range,i.highlightRanges([s],"currentFindMatch"),i.highlightRanges(c.map((function(e){return e.range})).filter((function(e){return!e.equalsRange(s)}))),s},from:function(){return s&&y(s.getStartPosition())},to:function(){return s&&y(s.getEndPosition())},replace:function(e){s&&(a.executeEdits("vim",[{range:s,text:e,forceMoveMarkers:!0}],(function(e){var t=e[0].range,n=t.endLineNumber,r=t.endColumn;s=s.setEndPosition(n,r)})),a.setPosition(s.getStartPosition()))}}}},{key:"highlightRanges",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"findMatch",n="decoration".concat(t);return this[n]=this.editor.deltaDecorations(this[n]||[],e.map((function(e){return{range:e,options:{stickiness:a.editor.TrackedRangeStickiness.NeverGrowsWhenTypingAtEdges,zIndex:13,className:t,showIfCollapsed:!0}}}))),this[n]}},{key:"addOverlay",value:function(e,t,n){var r=e.query,o=!1,i=!1;r&&r instanceof RegExp&&!r.global&&(i=!0,o=!r.ignoreCase,r=r.source);var a=this.editor.getModel().findNextMatch(r,this.editor.getPosition(),i,o);a&&a.range&&this.highlightRanges([a.range])}},{key:"removeOverlay",value:function(){var e=this;["currentFindMatch","findMatch"].forEach((function(t){e.editor.deltaDecorations(e["decoration".concat(t)]||[],[])}))}},{key:"scrollIntoView",value:function(e){e&&this.editor.revealPosition(k(e))}},{key:"moveH",value:function(e,t){if("char"===t){var n=this.editor.getPosition();this.editor.setPosition(new a.Position(n.lineNumber,n.column+e))}}},{key:"scanForBracket",value:function(t,n,r,o){for(var i=o.bracketRegex,a=k(t),s=this.editor.getModel(),l=(-1===n?s.findPreviousMatch:s.findNextMatch).bind(s),c=[],u=0;;){if(u>10)return;var h=l(i.source,a,!0,!0,null,!0),f=h.matches[0];if(void 0===h)return;var d=e.matchingBrackets[f];if(d&&">"===d.charAt(1)==n>0)c.push(f);else{if(0===c.length)return{pos:y(h.range.getStartPosition())};c.pop()}a=s.getPositionAt(s.getOffsetAt(h.range.getStartPosition())+n),u+=1}}},{key:"indexFromPos",value:function(e){return this.editor.getModel().getOffsetAt(k(e))}},{key:"posFromIndex",value:function(e){return y(this.editor.getModel().getPositionAt(e))}},{key:"indentLine",value:function(e){var t,n=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],r=this.editor;t=r._getViewModel?r._getViewModel().cursorConfig:r._getCursors().context.config;var o=new a.Position(e+1,1),i=a.Selection.fromPositions(o,o);r.executeCommand("vim",new s.ShiftCommand(i,{isUnshift:!n,tabSize:t.tabSize,indentSize:t.indentSize,insertSpaces:t.insertSpaces,useTabStops:t.useTabStops,autoIndent:t.autoIndent}))}},{key:"setStatusBar",value:function(e){this.statusBar=e}},{key:"openDialog",value:function(e,t,n){if(this.statusBar)return this.statusBar.setSec(e,t,n)}},{key:"openNotification",value:function(e){this.statusBar&&this.statusBar.showNotification(e)}},{key:"smartIndent",value:function(){this.editor.getAction("editor.action.formatSelection").run()}},{key:"moveCursorTo",value:function(e){var t=this.editor.getPosition();"start"===e?t.column=1:"end"===e&&(t.column=this.editor.getModel().getLineMaxColumn(t.lineNumber)),this.editor.setPosition(t)}},{key:"execCommand",value:function(e){switch(e){case"goLineLeft":this.moveCursorTo("start");break;case"goLineRight":this.moveCursorTo("end");break;case"indentAuto":this.smartIndent()}}}])}();S.Pos=g,S.signal=function(e,t,n){e.dispatch(t,n)},S.on=function(){},S.off=function(){},S.addClass=function(){},S.rmClass=function(){},S.defineOption=function(){},S.keyMap={default:function(e){return function(e){return!0}}},S.matchingBrackets={"(":")>",")":"(<","[":"]>","]":"[<","{":"}>","}":"{<","<":">>",">":"<<"},S.isWordChar=function(e){return/\w/.test(e)||e>""&&(e.toUpperCase()!=e.toLowerCase()||m.test(e))},S.keyName=w,S.StringStream=v,S.e_stop=function(e){return e.stopPropagation?e.stopPropagation():e.cancelBubble=!0,S.e_preventDefault(e),!1},S.e_preventDefault=function(e){return e.preventDefault?(e.preventDefault(),e.browserEvent&&e.browserEvent.preventDefault()):e.returnValue=!1,!1},S.commands={redo:function(e){e.editor.getModel().redo()},undo:function(e){e.editor.getModel().undo()},newlineAndIndent:function(e){e.triggerEditorAction("editor.action.insertLineAfter")}},S.lookupKey=function e(t,n,r){"string"==typeof n&&(n=S.keyMap[n]);var o="function"==typeof n?n(t):n[t];if(!1===o)return"nothing";if("..."===o)return"multi";if(null!=o&&r(o))return"handled";if(n.fallthrough){if(!Array.isArray(n.fallthrough))return e(t,n.fallthrough,r);for(var i=0;i<n.fallthrough.length;i++){var a=e(t,n.fallthrough[i],r);if(a)return a}}},S.defineExtension=function(e,t){S.prototype[e]=t};var M=function(){var e=this;this.handleKeyDown=function(t){if(!(t.browserEvent.defaultPrevented&t.keyCode!==a.KeyCode.Escape)&&e.attached){var n=w(t);if(e.replaceMode&&e.handleReplaceMode(n,t),n){var r=e.state.keyMap;if(S.keyMap[r]&&S.keyMap[r].call){var o=S.keyMap[r].call(n,e);if(o){t.preventDefault(),t.stopPropagation();try{o()}catch(e){console.error(e)}}}}}},this.handleCursorChange=function(t){var n=t.position,r=(t.source,e.editor),o=r.getSelection();if(!e.ctxInsert.get()&&"mouse"===t.source&&o.isEmpty()){var i=r.getModel().getLineMaxColumn(n.lineNumber);if(t.position.column===i)return void r.setPosition(new a.Position(t.position.lineNumber,i-1))}e.dispatch("cursorActivity",e,t)},this.handleChange=function(t){var n={text:t.changes.reduce((function(e,t){return e.push(t.text),e}),[]),origin:"+input"},r=e.curOp=e.curOp||{};r.changeHandlers||(r.changeHandlers=e.listeners.change&&e.listeners.change.slice()),e.virtualSelectionMode()||(r.lastChange?r.lastChange.next=r.lastChange=n:r.lastChange=r.change=n,e.dispatch("change",e,n))}};const x=S;function b(e){return b="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},b(e)}var A=x.Pos;function L(e,t){var n=e.state.vim;if(!n||n.insertMode)return t.head;var r=n.sel.head;return r?n.visualBlock&&t.head.line!=r.line?void 0:t.from()!=t.anchor||t.empty()||t.head.line!=r.line||t.head.ch==r.ch?t.head:new A(t.head.line,t.head.ch-1):t.head}var T=[{keys:"<Left>",type:"keyToKey",toKeys:"h"},{keys:"<Right>",type:"keyToKey",toKeys:"l"},{keys:"<Up>",type:"keyToKey",toKeys:"k"},{keys:"<Down>",type:"keyToKey",toKeys:"j"},{keys:"g<Up>",type:"keyToKey",toKeys:"gk"},{keys:"g<Down>",type:"keyToKey",toKeys:"gj"},{keys:"<Space>",type:"keyToKey",toKeys:"l"},{keys:"<BS>",type:"keyToKey",toKeys:"h",context:"normal"},{keys:"<Del>",type:"keyToKey",toKeys:"x",context:"normal"},{keys:"<C-Space>",type:"keyToKey",toKeys:"W"},{keys:"<C-BS>",type:"keyToKey",toKeys:"B",context:"normal"},{keys:"<S-Space>",type:"keyToKey",toKeys:"w"},{keys:"<S-BS>",type:"keyToKey",toKeys:"b",context:"normal"},{keys:"<C-n>",type:"keyToKey",toKeys:"j"},{keys:"<C-p>",type:"keyToKey",toKeys:"k"},{keys:"<C-[>",type:"keyToKey",toKeys:"<Esc>"},{keys:"<C-c>",type:"keyToKey",toKeys:"<Esc>"},{keys:"<C-[>",type:"keyToKey",toKeys:"<Esc>",context:"insert"},{keys:"<C-c>",type:"keyToKey",toKeys:"<Esc>",context:"insert"},{keys:"s",type:"keyToKey",toKeys:"cl",context:"normal"},{keys:"s",type:"keyToKey",toKeys:"c",context:"visual"},{keys:"S",type:"keyToKey",toKeys:"cc",context:"normal"},{keys:"S",type:"keyToKey",toKeys:"VdO",context:"visual"},{keys:"<Home>",type:"keyToKey",toKeys:"0"},{keys:"<End>",type:"keyToKey",toKeys:"$"},{keys:"<PageUp>",type:"keyToKey",toKeys:"<C-b>"},{keys:"<PageDown>",type:"keyToKey",toKeys:"<C-f>"},{keys:"<CR>",type:"keyToKey",toKeys:"j^",context:"normal"},{keys:"<Ins>",type:"keyToKey",toKeys:"i",context:"normal"},{keys:"<Ins>",type:"action",action:"toggleOverwrite",context:"insert"},{keys:"H",type:"motion",motion:"moveToTopLine",motionArgs:{linewise:!0,toJumplist:!0}},{keys:"M",type:"motion",motion:"moveToMiddleLine",motionArgs:{linewise:!0,toJumplist:!0}},{keys:"L",type:"motion",motion:"moveToBottomLine",motionArgs:{linewise:!0,toJumplist:!0}},{keys:"h",type:"motion",motion:"moveByCharacters",motionArgs:{forward:!1}},{keys:"l",type:"motion",motion:"moveByCharacters",motionArgs:{forward:!0}},{keys:"j",type:"motion",motion:"moveByLines",motionArgs:{forward:!0,linewise:!0}},{keys:"k",type:"motion",motion:"moveByLines",motionArgs:{forward:!1,linewise:!0}},{keys:"gj",type:"motion",motion:"moveByDisplayLines",motionArgs:{forward:!0}},{keys:"gk",type:"motion",motion:"moveByDisplayLines",motionArgs:{forward:!1}},{keys:"w",type:"motion",motion:"moveByWords",motionArgs:{forward:!0,wordEnd:!1}},{keys:"W",type:"motion",motion:"moveByWords",motionArgs:{forward:!0,wordEnd:!1,bigWord:!0}},{keys:"e",type:"motion",motion:"moveByWords",motionArgs:{forward:!0,wordEnd:!0,inclusive:!0}},{keys:"E",type:"motion",motion:"moveByWords",motionArgs:{forward:!0,wordEnd:!0,bigWord:!0,inclusive:!0}},{keys:"b",type:"motion",motion:"moveByWords",motionArgs:{forward:!1,wordEnd:!1}},{keys:"B",type:"motion",motion:"moveByWords",motionArgs:{forward:!1,wordEnd:!1,bigWord:!0}},{keys:"ge",type:"motion",motion:"moveByWords",motionArgs:{forward:!1,wordEnd:!0,inclusive:!0}},{keys:"gE",type:"motion",motion:"moveByWords",motionArgs:{forward:!1,wordEnd:!0,bigWord:!0,inclusive:!0}},{keys:"{",type:"motion",motion:"moveByParagraph",motionArgs:{forward:!1,toJumplist:!0}},{keys:"}",type:"motion",motion:"moveByParagraph",motionArgs:{forward:!0,toJumplist:!0}},{keys:"(",type:"motion",motion:"moveBySentence",motionArgs:{forward:!1}},{keys:")",type:"motion",motion:"moveBySentence",motionArgs:{forward:!0}},{keys:"<C-f>",type:"motion",motion:"moveByPage",motionArgs:{forward:!0}},{keys:"<C-b>",type:"motion",motion:"moveByPage",motionArgs:{forward:!1}},{keys:"<C-d>",type:"motion",motion:"moveByScroll",motionArgs:{forward:!0,explicitRepeat:!0}},{keys:"<C-u>",type:"motion",motion:"moveByScroll",motionArgs:{forward:!1,explicitRepeat:!0}},{keys:"gg",type:"motion",motion:"moveToLineOrEdgeOfDocument",motionArgs:{forward:!1,explicitRepeat:!0,linewise:!0,toJumplist:!0}},{keys:"G",type:"motion",motion:"moveToLineOrEdgeOfDocument",motionArgs:{forward:!0,explicitRepeat:!0,linewise:!0,toJumplist:!0}},{keys:"g$",type:"motion",motion:"moveToEndOfDisplayLine"},{keys:"g^",type:"motion",motion:"moveToStartOfDisplayLine"},{keys:"g0",type:"motion",motion:"moveToStartOfDisplayLine"},{keys:"0",type:"motion",motion:"moveToStartOfLine"},{keys:"^",type:"motion",motion:"moveToFirstNonWhiteSpaceCharacter"},{keys:"+",type:"motion",motion:"moveByLines",motionArgs:{forward:!0,toFirstChar:!0}},{keys:"-",type:"motion",motion:"moveByLines",motionArgs:{forward:!1,toFirstChar:!0}},{keys:"_",type:"motion",motion:"moveByLines",motionArgs:{forward:!0,toFirstChar:!0,repeatOffset:-1}},{keys:"$",type:"motion",motion:"moveToEol",motionArgs:{inclusive:!0}},{keys:"%",type:"motion",motion:"moveToMatchedSymbol",motionArgs:{inclusive:!0,toJumplist:!0}},{keys:"f<character>",type:"motion",motion:"moveToCharacter",motionArgs:{forward:!0,inclusive:!0}},{keys:"F<character>",type:"motion",motion:"moveToCharacter",motionArgs:{forward:!1}},{keys:"t<character>",type:"motion",motion:"moveTillCharacter",motionArgs:{forward:!0,inclusive:!0}},{keys:"T<character>",type:"motion",motion:"moveTillCharacter",motionArgs:{forward:!1}},{keys:";",type:"motion",motion:"repeatLastCharacterSearch",motionArgs:{forward:!0}},{keys:",",type:"motion",motion:"repeatLastCharacterSearch",motionArgs:{forward:!1}},{keys:"'<character>",type:"motion",motion:"goToMark",motionArgs:{toJumplist:!0,linewise:!0}},{keys:"`<character>",type:"motion",motion:"goToMark",motionArgs:{toJumplist:!0}},{keys:"]`",type:"motion",motion:"jumpToMark",motionArgs:{forward:!0}},{keys:"[`",type:"motion",motion:"jumpToMark",motionArgs:{forward:!1}},{keys:"]'",type:"motion",motion:"jumpToMark",motionArgs:{forward:!0,linewise:!0}},{keys:"['",type:"motion",motion:"jumpToMark",motionArgs:{forward:!1,linewise:!0}},{keys:"]p",type:"action",action:"paste",isEdit:!0,actionArgs:{after:!0,isEdit:!0,matchIndent:!0}},{keys:"[p",type:"action",action:"paste",isEdit:!0,actionArgs:{after:!1,isEdit:!0,matchIndent:!0}},{keys:"]<character>",type:"motion",motion:"moveToSymbol",motionArgs:{forward:!0,toJumplist:!0}},{keys:"[<character>",type:"motion",motion:"moveToSymbol",motionArgs:{forward:!1,toJumplist:!0}},{keys:"|",type:"motion",motion:"moveToColumn"},{keys:"o",type:"motion",motion:"moveToOtherHighlightedEnd",context:"visual"},{keys:"O",type:"motion",motion:"moveToOtherHighlightedEnd",motionArgs:{sameLine:!0},context:"visual"},{keys:"d",type:"operator",operator:"delete"},{keys:"y",type:"operator",operator:"yank"},{keys:"c",type:"operator",operator:"change"},{keys:"=",type:"operator",operator:"indentAuto"},{keys:">",type:"operator",operator:"indent",operatorArgs:{indentRight:!0}},{keys:"<",type:"operator",operator:"indent",operatorArgs:{indentRight:!1}},{keys:"g~",type:"operator",operator:"changeCase"},{keys:"gu",type:"operator",operator:"changeCase",operatorArgs:{toLower:!0},isEdit:!0},{keys:"gU",type:"operator",operator:"changeCase",operatorArgs:{toLower:!1},isEdit:!0},{keys:"n",type:"motion",motion:"findNext",motionArgs:{forward:!0,toJumplist:!0}},{keys:"N",type:"motion",motion:"findNext",motionArgs:{forward:!1,toJumplist:!0}},{keys:"gn",type:"motion",motion:"findAndSelectNextInclusive",motionArgs:{forward:!0}},{keys:"gN",type:"motion",motion:"findAndSelectNextInclusive",motionArgs:{forward:!1}},{keys:"x",type:"operatorMotion",operator:"delete",motion:"moveByCharacters",motionArgs:{forward:!0},operatorMotionArgs:{visualLine:!1}},{keys:"X",type:"operatorMotion",operator:"delete",motion:"moveByCharacters",motionArgs:{forward:!1},operatorMotionArgs:{visualLine:!0}},{keys:"D",type:"operatorMotion",operator:"delete",motion:"moveToEol",motionArgs:{inclusive:!0},context:"normal"},{keys:"D",type:"operator",operator:"delete",operatorArgs:{linewise:!0},context:"visual"},{keys:"Y",type:"operatorMotion",operator:"yank",motion:"expandToLine",motionArgs:{linewise:!0},context:"normal"},{keys:"Y",type:"operator",operator:"yank",operatorArgs:{linewise:!0},context:"visual"},{keys:"C",type:"operatorMotion",operator:"change",motion:"moveToEol",motionArgs:{inclusive:!0},context:"normal"},{keys:"C",type:"operator",operator:"change",operatorArgs:{linewise:!0},context:"visual"},{keys:"~",type:"operatorMotion",operator:"changeCase",motion:"moveByCharacters",motionArgs:{forward:!0},operatorArgs:{shouldMoveCursor:!0},context:"normal"},{keys:"~",type:"operator",operator:"changeCase",context:"visual"},{keys:"<C-u>",type:"operatorMotion",operator:"delete",motion:"moveToStartOfLine",context:"insert"},{keys:"<C-w>",type:"operatorMotion",operator:"delete",motion:"moveByWords",motionArgs:{forward:!1,wordEnd:!1},context:"insert"},{keys:"<C-w>",type:"idle",context:"normal"},{keys:"<C-i>",type:"action",action:"jumpListWalk",actionArgs:{forward:!0}},{keys:"<C-o>",type:"action",action:"jumpListWalk",actionArgs:{forward:!1}},{keys:"<C-e>",type:"action",action:"scroll",actionArgs:{forward:!0,linewise:!0}},{keys:"<C-y>",type:"action",action:"scroll",actionArgs:{forward:!1,linewise:!0}},{keys:"a",type:"action",action:"enterInsertMode",isEdit:!0,actionArgs:{insertAt:"charAfter"},context:"normal"},{keys:"A",type:"action",action:"enterInsertMode",isEdit:!0,actionArgs:{insertAt:"eol"},context:"normal"},{keys:"A",type:"action",action:"enterInsertMode",isEdit:!0,actionArgs:{insertAt:"endOfSelectedArea"},context:"visual"},{keys:"i",type:"action",action:"enterInsertMode",isEdit:!0,actionArgs:{insertAt:"inplace"},context:"normal"},{keys:"gi",type:"action",action:"enterInsertMode",isEdit:!0,actionArgs:{insertAt:"lastEdit"},context:"normal"},{keys:"I",type:"action",action:"enterInsertMode",isEdit:!0,actionArgs:{insertAt:"firstNonBlank"},context:"normal"},{keys:"gI",type:"action",action:"enterInsertMode",isEdit:!0,actionArgs:{insertAt:"bol"},context:"normal"},{keys:"I",type:"action",action:"enterInsertMode",isEdit:!0,actionArgs:{insertAt:"startOfSelectedArea"},context:"visual"},{keys:"o",type:"action",action:"newLineAndEnterInsertMode",isEdit:!0,interlaceInsertRepeat:!0,actionArgs:{after:!0},context:"normal"},{keys:"O",type:"action",action:"newLineAndEnterInsertMode",isEdit:!0,interlaceInsertRepeat:!0,actionArgs:{after:!1},context:"normal"},{keys:"v",type:"action",action:"toggleVisualMode"},{keys:"V",type:"action",action:"toggleVisualMode",actionArgs:{linewise:!0}},{keys:"<C-v>",type:"action",action:"toggleVisualMode",actionArgs:{blockwise:!0}},{keys:"<C-q>",type:"action",action:"toggleVisualMode",actionArgs:{blockwise:!0}},{keys:"gv",type:"action",action:"reselectLastSelection"},{keys:"J",type:"action",action:"joinLines",isEdit:!0},{keys:"gJ",type:"action",action:"joinLines",actionArgs:{keepSpaces:!0},isEdit:!0},{keys:"p",type:"action",action:"paste",isEdit:!0,actionArgs:{after:!0,isEdit:!0}},{keys:"P",type:"action",action:"paste",isEdit:!0,actionArgs:{after:!1,isEdit:!0}},{keys:"r<character>",type:"action",action:"replace",isEdit:!0},{keys:"@<character>",type:"action",action:"replayMacro"},{keys:"q<character>",type:"action",action:"enterMacroRecordMode"},{keys:"R",type:"action",action:"enterInsertMode",isEdit:!0,actionArgs:{replace:!0},context:"normal"},{keys:"R",type:"operator",operator:"change",operatorArgs:{linewise:!0,fullLine:!0},context:"visual",exitVisualBlock:!0},{keys:"u",type:"action",action:"undo",context:"normal"},{keys:"u",type:"operator",operator:"changeCase",operatorArgs:{toLower:!0},context:"visual",isEdit:!0},{keys:"U",type:"operator",operator:"changeCase",operatorArgs:{toLower:!1},context:"visual",isEdit:!0},{keys:"<C-r>",type:"action",action:"redo"},{keys:"m<character>",type:"action",action:"setMark"},{keys:'"<character>',type:"action",action:"setRegister"},{keys:"zz",type:"action",action:"scrollToCursor",actionArgs:{position:"center"}},{keys:"z.",type:"action",action:"scrollToCursor",actionArgs:{position:"center"},motion:"moveToFirstNonWhiteSpaceCharacter"},{keys:"zt",type:"action",action:"scrollToCursor",actionArgs:{position:"top"}},{keys:"z<CR>",type:"action",action:"scrollToCursor",actionArgs:{position:"top"},motion:"moveToFirstNonWhiteSpaceCharacter"},{keys:"z-",type:"action",action:"scrollToCursor",actionArgs:{position:"bottom"}},{keys:"zb",type:"action",action:"scrollToCursor",actionArgs:{position:"bottom"},motion:"moveToFirstNonWhiteSpaceCharacter"},{keys:".",type:"action",action:"repeatLastEdit"},{keys:"<C-a>",type:"action",action:"incrementNumberToken",isEdit:!0,actionArgs:{increase:!0,backtrack:!1}},{keys:"<C-x>",type:"action",action:"incrementNumberToken",isEdit:!0,actionArgs:{increase:!1,backtrack:!1}},{keys:"<C-t>",type:"action",action:"indent",actionArgs:{indentRight:!0},context:"insert"},{keys:"<C-d>",type:"action",action:"indent",actionArgs:{indentRight:!1},context:"insert"},{keys:"a<character>",type:"motion",motion:"textObjectManipulation"},{keys:"i<character>",type:"motion",motion:"textObjectManipulation",motionArgs:{textObjectInner:!0}},{keys:"/",type:"search",searchArgs:{forward:!0,querySrc:"prompt",toJumplist:!0}},{keys:"?",type:"search",searchArgs:{forward:!1,querySrc:"prompt",toJumplist:!0}},{keys:"*",type:"search",searchArgs:{forward:!0,querySrc:"wordUnderCursor",wholeWordOnly:!0,toJumplist:!0}},{keys:"#",type:"search",searchArgs:{forward:!1,querySrc:"wordUnderCursor",wholeWordOnly:!0,toJumplist:!0}},{keys:"g*",type:"search",searchArgs:{forward:!0,querySrc:"wordUnderCursor",toJumplist:!0}},{keys:"g#",type:"search",searchArgs:{forward:!1,querySrc:"wordUnderCursor",toJumplist:!0}},{keys:":",type:"ex"}],E=T.length,I=[{name:"colorscheme",shortName:"colo"},{name:"map"},{name:"imap",shortName:"im"},{name:"nmap",shortName:"nm"},{name:"vmap",shortName:"vm"},{name:"unmap"},{name:"write",shortName:"w"},{name:"undo",shortName:"u"},{name:"redo",shortName:"red"},{name:"set",shortName:"se"},{name:"setlocal",shortName:"setl"},{name:"setglobal",shortName:"setg"},{name:"sort",shortName:"sor"},{name:"substitute",shortName:"s",possiblyAsync:!0},{name:"nohlsearch",shortName:"noh"},{name:"yank",shortName:"y"},{name:"delmarks",shortName:"delm"},{name:"registers",shortName:"reg",excludeFromCommandHistory:!0},{name:"vglobal",shortName:"v"},{name:"global",shortName:"g"}];x.Vim=function(){function e(e,n){e.attached=!1,this==x.keyMap.vim&&(e.options.$customCursor=null),n&&n.attach==t||function(e){e.setOption("disableInput",!1),e.off("cursorActivity",Ye),e.state.vim=null,je&&clearTimeout(je),e.leaveVimMode()}(e)}function t(e,n){this==x.keyMap.vim&&(e.attached=!0,e.curOp&&(e.curOp.selectionChanged=!0),e.options.$customCursor=L),n&&n.attach==t||function(e){e.setOption("disableInput",!0),e.setOption("showCursorWhenSelecting",!1),x.signal(e,"vim-mode-change",{mode:"normal"}),e.on("cursorActivity",Ye),D(e),e.enterVimMode()}(e)}function n(e,t){if(t){if(this[e])return this[e];var n=function(e){if("'"==e.charAt(0))return e.charAt(1);if("AltGraph"===e)return!1;var t=e.split(/-(?!$)/),n=t[t.length-1];if(1==t.length&&1==t[0].length)return!1;if(2==t.length&&"Shift"==t[0]&&1==n.length)return!1;for(var i=!1,a=0;a<t.length;a++){var s=t[a];s in r?t[a]=r[s]:i=!0,s in o&&(t[a]=o[s])}return!!i&&(v(n)&&(t[t.length-1]=n.toLowerCase()),"<"+t.join("-")+">")}(e);if(!n)return!1;var i=V.findKey(t,n);return"function"==typeof i&&x.signal(t,"vim-keypress",n),i}}x.defineOption("vimMode",!1,(function(e,t,n){t&&"vim"!=e.getOption("keyMap")?e.setOption("keyMap","vim"):!t&&n!=x.Init&&/^vim/.test(e.getOption("keyMap"))&&e.setOption("keyMap","default")}));var r={Shift:"S",Ctrl:"C",Alt:"A",Cmd:"D",Mod:"A",CapsLock:""},o={Enter:"CR",Backspace:"BS",Delete:"Del",Insert:"Ins"},i=/[\d]/,a=[x.isWordChar,function(e){return e&&!x.isWordChar(e)&&!/\s/.test(e)}],s=[function(e){return/\S/.test(e)}];function l(e,t){for(var n=[],r=e;r<e+t;r++)n.push(String.fromCharCode(r));return n}var c,u=l(65,26),h=l(97,26),f=l(48,10),d=[].concat(u,h,f,["<",">"]),p=[].concat(u,h,f,["-",'"',".",":","_","/"]);try{c=new RegExp("^[\\p{Lu}]$","u")}catch(e){c=/^[A-Z]$/}function m(e,t){return t>=e.firstLine()&&t<=e.lastLine()}function g(e){return/^[a-z]$/.test(e)}function v(e){return c.test(e)}function y(e){return/^\s*$/.test(e)}function k(e){return-1!=".?!".indexOf(e)}function C(e,t){for(var n=0;n<t.length;n++)if(t[n]==e)return!0;return!1}var w={};function S(e,t,n,r,o){if(void 0===t&&!o)throw Error("defaultValue is required unless callback is provided");if(n||(n="string"),w[e]={type:n,defaultValue:t,callback:o},r)for(var i=0;i<r.length;i++)w[r[i]]=w[e];t&&M(e,t)}function M(e,t,n,r){var o=w[e],i=(r=r||{}).scope;if(!o)return new Error("Unknown option: "+e);if("boolean"==o.type){if(t&&!0!==t)return new Error("Invalid argument: "+e+"="+t);!1!==t&&(t=!0)}o.callback?("local"!==i&&o.callback(t,void 0),"global"!==i&&n&&o.callback(t,n)):("local"!==i&&(o.value="boolean"==o.type?!!t:t),"global"!==i&&n&&(n.state.vim.options[e]={value:t}))}function R(e,t,n){var r=w[e],o=(n=n||{}).scope;if(!r)return new Error("Unknown option: "+e);if(r.callback){var i=t&&r.callback(void 0,t);return"global"!==o&&void 0!==i?i:"local"!==o?r.callback():void 0}return((i="global"!==o&&t&&t.state.vim.options[e])||"local"!==o&&r||{}).value}S("filetype",void 0,"string",["ft"],(function(e,t){if(void 0!==t){if(void 0===e)return"null"==(n=t.getOption("mode"))?"":n;var n=""==e?"null":e;t.setOption("mode",n)}}));var O,B,P=function(){var e=100,t=-1,n=0,r=0,o=new Array(e);function i(i,a){(t+=a)>n?t=n:t<r&&(t=r);var s=o[(e+t)%e];if(s&&!s.find()){var l,c=a>0?1:-1,u=i.getCursor();do{if((s=o[(e+(t+=c))%e])&&(l=s.find())&&!ne(u,l))break}while(t<n&&t>r)}return s}return{cachedCursor:void 0,add:function(i,a,s){var l=o[t%e];function c(n){var r=++t%e,a=o[r];a&&a.clear(),o[r]=i.setBookmark(n)}if(l){var u=l.find();u&&!ne(u,a)&&c(a)}else c(a);c(s),n=t,(r=t-e+1)<0&&(r=0)},find:function(e,n){var r=t,o=i(e,n);return t=r,o&&o.find()},move:i}},N=function(e){return e?{changes:e.changes,expectCursorActivityForChange:e.expectCursorActivityForChange}:{changes:[],expectCursorActivityForChange:!1}};function K(){this.latestRegister=void 0,this.isPlaying=!1,this.isRecording=!1,this.replaySearchQueries=[],this.onRecordingDone=void 0,this.lastInsertModeChanges=N()}function D(e){return e.state.vim||(e.state.vim={inputState:new _,lastEditInputState:void 0,lastEditActionCommand:void 0,lastHPos:-1,lastHSPos:-1,lastMotion:null,marks:{},insertMode:!1,insertModeRepeat:void 0,visualMode:!1,visualLine:!1,visualBlock:!1,lastSelection:null,lastPastedText:null,sel:{},options:{}}),e.state.vim}function j(){for(var e in O={searchQuery:null,searchIsReversed:!1,lastSubstituteReplacePart:void 0,jumpList:P(),macroModeState:new K,lastCharacterSearch:{increment:0,forward:!0,selectedCharacter:""},registerController:new F({}),searchHistoryController:new U,exCommandHistoryController:new U},w){var t=w[e];t.value=t.defaultValue}}K.prototype={exitMacroRecordMode:function(){var e=O.macroModeState;e.onRecordingDone&&e.onRecordingDone(),e.onRecordingDone=void 0,e.isRecording=!1},enterMacroRecordMode:function(e,t){var n=O.registerController.getRegister(t);n&&(n.clear(),this.latestRegister=t,e.openDialog&&(this.onRecordingDone=e.openDialog(document.createTextNode("(recording)["+t+"]"),null,{bottom:!0})),this.isRecording=!0)}};var V={buildKeyMap:function(){},getRegisterController:function(){return O.registerController},resetVimGlobalState_:j,getVimGlobalState_:function(){return O},maybeInitVimState_:D,suppressErrorLogging:!1,InsertModeKey:Ze,map:function(e,t,n){Je.map(e,t,n)},unmap:function(e,t){return Je.unmap(e,t)},noremap:function(e,t,n){function r(e){return e?[e]:["normal","insert","visual"]}for(var o=r(n),i=T.length,a=i-E;a<i&&o.length;a++){var s=T[a];if(!(s.keys!=t||n&&s.context&&s.context!==n||"ex"===s.type.substr(0,2)||"key"===s.type.substr(0,3))){var l={};for(var c in s)l[c]=s[c];l.keys=e,n&&!l.context&&(l.context=n),this._mapCommand(l);var u=r(s.context);o=o.filter((function(e){return-1===u.indexOf(e)}))}}},mapclear:function(e){var t=T.length,n=E,r=T.slice(0,t-n);if(T=T.slice(t-n),e)for(var o=r.length-1;o>=0;o--){var i=r[o];if(e!==i.context)if(i.context)this._mapCommand(i);else{var a=["normal","insert","visual"];for(var s in a)if(a[s]!==e){var l={};for(var c in i)l[c]=i[c];l.context=a[s],this._mapCommand(l)}}}},setOption:M,getOption:R,defineOption:S,defineEx:function(e,t,n){if(t){if(0!==e.indexOf(t))throw new Error('(Vim.defineEx) "'+t+'" is not a prefix of "'+e+'", command not registered')}else t=e;qe[e]=n,Je.commandMap_[t]={name:e,shortName:t,type:"api"}},handleKey:function(e,t,n){var r=this.findKey(e,t,n);if("function"==typeof r)return r()},findKey:function(e,t,n){var r,o=D(e);function i(){if("<Esc>"==t){if(o.visualMode)me(e);else{if(!o.insertMode)return;ze(e)}return W(e),!0}}return!1===(r=o.insertMode?function(){if(i())return!0;for(var n=o.inputState.keyBuffer=o.inputState.keyBuffer+t,r=1==t.length,a=$.matchCommand(n,T,o.inputState,"insert");n.length>1&&"full"!=a.type;){n=o.inputState.keyBuffer=n.slice(1);var s=$.matchCommand(n,T,o.inputState,"insert");"none"!=s.type&&(a=s)}if("none"==a.type)return W(e),!1;if("partial"==a.type)return B&&window.clearTimeout(B),B=window.setTimeout((function(){o.insertMode&&o.inputState.keyBuffer&&W(e)}),R("insertModeEscKeysTimeout")),!r;if(B&&window.clearTimeout(B),r){for(var l=e.listSelections(),c=0;c<l.length;c++){var u=l[c].head;e.replaceRange("",Y(u,0,-(n.length-1)),u,"+input")}O.macroModeState.lastInsertModeChanges.changes.pop()}return W(e),a.command}():function(){if(function(){var r=O.macroModeState;if(r.isRecording){if("q"==t)return r.exitMacroRecordMode(),W(e),!0;"mapping"!=n&&function(e,t){if(!e.isPlaying){var n=e.latestRegister,r=O.registerController.getRegister(n);r&&r.pushText(t)}}(r,t)}}()||i())return!0;var r=o.inputState.keyBuffer=o.inputState.keyBuffer+t;if(/^[1-9]\d*$/.test(r))return!0;if(!(l=/^(\d*)(.*)$/.exec(r)))return W(e),!1;var a=o.visualMode?"visual":"normal",s=l[2]||l[1];o.inputState.operatorShortcut&&o.inputState.operatorShortcut.slice(-1)==s&&(s=o.inputState.operatorShortcut);var l,c=$.matchCommand(s,T,o.inputState,a);return"none"==c.type?(W(e),!1):"partial"==c.type||(o.inputState.keyBuffer="",(l=/^(\d*)(.*)$/.exec(r))[1]&&"0"!=l[1]&&o.inputState.pushRepeatDigit(l[1]),c.command)}())?o.insertMode||1!==t.length?void 0:function(){return!0}:!0===r?function(){return!0}:function(){return e.operation((function(){e.curOp.isVimOp=!0;try{"keyToKey"==r.type?function(n){for(var r;n;)r=/<\w+-.+?>|<\w+>|./.exec(n),t=r[0],n=n.substring(r.index+t.length),V.handleKey(e,t,"mapping")}(r.toKeys):$.processCommand(e,o,r)}catch(t){throw e.state.vim=void 0,D(e),V.suppressErrorLogging||console.log(t),t}return!0}))}},handleEx:function(e,t){Je.processCommand(e,t)},defineMotion:function(e,t){q[e]=t},defineAction:function(e,t){Q[e]=t},defineOperator:function(e,t){z[e]=t},mapCommand:function(e,t,n,r,o){var i={keys:e,type:t};for(var a in i[t]=n,i[t+"Args"]=r,o)i[a]=o[a];Qe(i)},_mapCommand:Qe,defineRegister:function(e,t){var n=O.registerController.registers;if(!e||1!=e.length)throw Error("Register name must be 1 character");if(n[e])throw Error("Register already defined "+e);n[e]=t,p.push(e)},exitVisualMode:me,exitInsertMode:ze};function _(){this.prefixRepeat=[],this.motionRepeat=[],this.operator=null,this.operatorArgs=null,this.motion=null,this.motionArgs=null,this.keyBuffer=[],this.registerName=null}function W(e,t){e.state.vim.inputState=new _,x.signal(e,"vim-command-done",t)}function H(e,t,n){this.clear(),this.keyBuffer=[e||""],this.insertModeChanges=[],this.searchQueries=[],this.linewise=!!t,this.blockwise=!!n}function F(e){this.registers=e,this.unnamedRegister=e['"']=new H,e["."]=new H,e[":"]=new H,e["/"]=new H}function U(){this.historyBuffer=[],this.iterator=0,this.initialPrefix=null}_.prototype.pushRepeatDigit=function(e){this.operator?this.motionRepeat=this.motionRepeat.concat(e):this.prefixRepeat=this.prefixRepeat.concat(e)},_.prototype.getRepeat=function(){var e=0;return(this.prefixRepeat.length>0||this.motionRepeat.length>0)&&(e=1,this.prefixRepeat.length>0&&(e*=parseInt(this.prefixRepeat.join(""),10)),this.motionRepeat.length>0&&(e*=parseInt(this.motionRepeat.join(""),10))),e},H.prototype={setText:function(e,t,n){this.keyBuffer=[e||""],this.linewise=!!t,this.blockwise=!!n},pushText:function(e,t){t&&(this.linewise||this.keyBuffer.push("\n"),this.linewise=!0),this.keyBuffer.push(e)},pushInsertModeChanges:function(e){this.insertModeChanges.push(N(e))},pushSearchQuery:function(e){this.searchQueries.push(e)},clear:function(){this.keyBuffer=[],this.insertModeChanges=[],this.searchQueries=[],this.linewise=!1},toString:function(){return this.keyBuffer.join("")}},F.prototype={pushText:function(e,t,n,r,o){if("_"!==e){r&&"\n"!==n.charAt(n.length-1)&&(n+="\n");var i=this.isValidRegister(e)?this.getRegister(e):null;if(i)v(e)?i.pushText(n,r):i.setText(n,r,o),this.unnamedRegister.setText(i.toString(),r);else{switch(t){case"yank":this.registers[0]=new H(n,r,o);break;case"delete":case"change":-1==n.indexOf("\n")?this.registers["-"]=new H(n,r):(this.shiftNumericRegisters_(),this.registers[1]=new H(n,r))}this.unnamedRegister.setText(n,r,o)}}},getRegister:function(e){return this.isValidRegister(e)?(e=e.toLowerCase(),this.registers[e]||(this.registers[e]=new H),this.registers[e]):this.unnamedRegister},isValidRegister:function(e){return e&&C(e,p)},shiftNumericRegisters_:function(){for(var e=9;e>=2;e--)this.registers[e]=this.getRegister(""+(e-1))}},U.prototype={nextMatch:function(e,t){var n=this.historyBuffer,r=t?-1:1;null===this.initialPrefix&&(this.initialPrefix=e);for(var o=this.iterator+r;t?o>=0:o<n.length;o+=r)for(var i=n[o],a=0;a<=i.length;a++)if(this.initialPrefix==i.substring(0,a))return this.iterator=o,i;return o>=n.length?(this.iterator=n.length,this.initialPrefix):o<0?e:void 0},pushInput:function(e){var t=this.historyBuffer.indexOf(e);t>-1&&this.historyBuffer.splice(t,1),e.length&&this.historyBuffer.push(e)},reset:function(){this.initialPrefix=null,this.iterator=this.historyBuffer.length}};var $={matchCommand:function(e,t,n,r){var o,i=function(e,t,n,r){for(var o,i=[],a=[],s=0;s<t.length;s++){var l=t[s];"insert"==n&&"insert"!=l.context||l.context&&l.context!=n||r.operator&&"action"==l.type||!(o=Z(e,l.keys))||("partial"==o&&i.push(l),"full"==o&&a.push(l))}return{partial:i.length&&i,full:a.length&&a}}(e,t,r,n);if(!i.full&&!i.partial)return{type:"none"};if(!i.full&&i.partial)return{type:"partial"};for(var a=0;a<i.full.length;a++){var s=i.full[a];o||(o=s)}if("<character>"==o.keys.slice(-11)){var l=function(e){var t=/^.*(<[^>]+>)$/.exec(e),n=t?t[1]:e.slice(-1);if(n.length>1)switch(n){case"<CR>":n="\n";break;case"<Space>":n=" ";break;default:n=""}return n}(e);if(!l)return{type:"none"};n.selectedCharacter=l}return{type:"full",command:o}},processCommand:function(e,t,n){switch(t.inputState.repeatOverride=n.repeatOverride,n.type){case"motion":this.processMotion(e,t,n);break;case"operator":this.processOperator(e,t,n);break;case"operatorMotion":this.processOperatorMotion(e,t,n);break;case"action":this.processAction(e,t,n);break;case"search":this.processSearch(e,t,n);break;case"ex":case"keyToEx":this.processEx(e,t,n)}},processMotion:function(e,t,n){t.inputState.motion=n.motion,t.inputState.motionArgs=X(n.motionArgs),this.evalInput(e,t)},processOperator:function(e,t,n){var r=t.inputState;if(r.operator){if(r.operator==n.operator)return r.motion="expandToLine",r.motionArgs={linewise:!0},void this.evalInput(e,t);W(e)}r.operator=n.operator,r.operatorArgs=X(n.operatorArgs),n.keys.length>1&&(r.operatorShortcut=n.keys),n.exitVisualBlock&&(t.visualBlock=!1,de(e)),t.visualMode&&this.evalInput(e,t)},processOperatorMotion:function(e,t,n){var r=t.visualMode,o=X(n.operatorMotionArgs);o&&r&&o.visualLine&&(t.visualLine=!0),this.processOperator(e,t,n),r||this.processMotion(e,t,n)},processAction:function(e,t,n){var r=t.inputState,o=r.getRepeat(),i=!!o,a=X(n.actionArgs)||{};r.selectedCharacter&&(a.selectedCharacter=r.selectedCharacter),n.operator&&this.processOperator(e,t,n),n.motion&&this.processMotion(e,t,n),(n.motion||n.operator)&&this.evalInput(e,t),a.repeat=o||1,a.repeatIsExplicit=i,a.registerName=r.registerName,W(e),t.lastMotion=null,n.isEdit&&this.recordLastEdit(t,r,n),Q[n.action](e,a,t)},processSearch:function(e,t,n){if(e.getSearchCursor){var r=n.searchArgs.forward,o=n.searchArgs.wholeWordOnly;Ee(e).setReversed(!r);var i=r?"/":"?",a=Ee(e).getQuery(),s=e.getScrollInfo();switch(n.searchArgs.querySrc){case"prompt":var l=O.macroModeState;l.isPlaying?f(h=l.replaySearchQueries.shift(),!0,!1):Ke(e,{onClose:function(t){e.scrollTo(s.left,s.top),f(t,!0,!0);var n=O.macroModeState;n.isRecording&&function(e,t){if(!e.isPlaying){var n=e.latestRegister,r=O.registerController.getRegister(n);r&&r.pushSearchQuery&&r.pushSearchQuery(t)}}(n,t)},prefix:i,desc:"(JavaScript regexp)",onKeyUp:function(t,n,o){var i,a,l,c=x.keyName(t);"Up"==c||"Down"==c?(i="Up"==c,a=t.target?t.target.selectionEnd:0,o(n=O.searchHistoryController.nextMatch(n,i)||""),a&&t.target&&(t.target.selectionEnd=t.target.selectionStart=Math.min(a,t.target.value.length))):"Left"!=c&&"Right"!=c&&"Ctrl"!=c&&"Alt"!=c&&"Shift"!=c&&O.searchHistoryController.reset();try{l=De(e,n,!0,!0)}catch(t){}l?e.scrollIntoView(_e(e,!r,l),30):(We(e),e.scrollTo(s.left,s.top))},onKeyDown:function(t,n,r){var o=x.keyName(t);"Esc"==o||"Ctrl-C"==o||"Ctrl-["==o||"Backspace"==o&&""==n?(O.searchHistoryController.pushInput(n),O.searchHistoryController.reset(),De(e,a),We(e),e.scrollTo(s.left,s.top),x.e_stop(t),W(e),r(),e.focus()):"Up"==o||"Down"==o?x.e_stop(t):"Ctrl-U"==o&&(x.e_stop(t),r(""))}});break;case"wordUnderCursor":var c=ve(e,!1,0,!1,!0),u=!0;if(c||(c=ve(e,!1,0,!1,!1),u=!1),!c)return;var h=e.getLine(c.start.line).substring(c.start.ch,c.end.ch);h=u&&o?"\\b"+h+"\\b":h.replace(/([.?*+$\[\]\/\\(){}|\-])/g,"\\$1"),O.jumpList.cachedCursor=e.getCursor(),e.setCursor(c.start),f(h,!0,!1)}}function f(r,o,i){O.searchHistoryController.pushInput(r),O.searchHistoryController.reset();try{De(e,r,o,i)}catch(t){return Ne(e,"Invalid regex: "+r),void W(e)}$.processMotion(e,t,{type:"motion",motion:"findNext",motionArgs:{forward:!0,toJumplist:n.searchArgs.toJumplist}})}},processEx:function(e,t,n){function r(t){O.exCommandHistoryController.pushInput(t),O.exCommandHistoryController.reset(),Je.processCommand(e,t)}function o(t,n,r){var o,i,a=x.keyName(t);("Esc"==a||"Ctrl-C"==a||"Ctrl-["==a||"Backspace"==a&&""==n)&&(O.exCommandHistoryController.pushInput(n),O.exCommandHistoryController.reset(),x.e_stop(t),W(e),r(),e.focus()),"Up"==a||"Down"==a?(x.e_stop(t),o="Up"==a,i=t.target?t.target.selectionEnd:0,r(n=O.exCommandHistoryController.nextMatch(n,o)||""),i&&t.target&&(t.target.selectionEnd=t.target.selectionStart=Math.min(i,t.target.value.length))):"Ctrl-U"==a?(x.e_stop(t),r("")):"Left"!=a&&"Right"!=a&&"Ctrl"!=a&&"Alt"!=a&&"Shift"!=a&&O.exCommandHistoryController.reset()}"keyToEx"==n.type?Je.processCommand(e,n.exArgs.input):t.visualMode?Ke(e,{onClose:r,prefix:":",value:"'<,'>",onKeyDown:o,selectValueOnOpen:!1}):Ke(e,{onClose:r,prefix:":",onKeyDown:o})},evalInput:function(e,t){var n,r,o,i=t.inputState,a=i.motion,s=i.motionArgs||{},l=i.operator,c=i.operatorArgs||{},u=i.registerName,h=t.sel,f=te(t.visualMode?G(e,h.head):e.getCursor("head")),d=te(t.visualMode?G(e,h.anchor):e.getCursor("anchor")),p=te(f),m=te(d);if(l&&this.recordLastEdit(t,i),(o=void 0!==i.repeatOverride?i.repeatOverride:i.getRepeat())>0&&s.explicitRepeat?s.repeatIsExplicit=!0:(s.noRepeat||!s.explicitRepeat&&0===o)&&(o=1,s.repeatIsExplicit=!1),i.selectedCharacter&&(s.selectedCharacter=c.selectedCharacter=i.selectedCharacter),s.repeat=o,W(e),a){var g=q[a](e,f,s,t,i);if(t.lastMotion=q[a],!g)return;if(s.toJumplist){var v=O.jumpList,k=v.cachedCursor;k?(ye(e,k,g),delete v.cachedCursor):ye(e,f,g)}g instanceof Array?(r=g[0],n=g[1]):n=g,n||(n=te(f)),t.visualMode?(t.visualBlock&&n.ch===1/0||(n=G(e,n)),r&&(r=G(e,r)),r=r||m,h.anchor=r,h.head=n,de(e),be(e,t,"<",re(r,n)?r:n),be(e,t,">",re(r,n)?n:r)):l||(n=G(e,n),e.setCursor(n.line,n.ch))}if(l){if(c.lastSel){r=m;var C=c.lastSel,w=Math.abs(C.head.line-C.anchor.line),S=Math.abs(C.head.ch-C.anchor.ch);n=C.visualLine?new A(m.line+w,m.ch):C.visualBlock?new A(m.line+w,m.ch+S):C.head.line==C.anchor.line?new A(m.line,m.ch+S):new A(m.line+w,m.ch),t.visualMode=!0,t.visualLine=C.visualLine,t.visualBlock=C.visualBlock,h=t.sel={anchor:r,head:n},de(e)}else t.visualMode&&(c.lastSel={anchor:te(h.anchor),head:te(h.head),visualBlock:t.visualBlock,visualLine:t.visualLine});var M,x,b,L,T;if(t.visualMode){if(M=oe(h.head,h.anchor),x=ie(h.head,h.anchor),b=t.visualLine||c.linewise,T=pe(e,{anchor:M,head:x},L=t.visualBlock?"block":b?"line":"char"),b){var E=T.ranges;if("block"==L)for(var I=0;I<E.length;I++)E[I].head.ch=se(e,E[I].head.line);else"line"==L&&(E[0].head=new A(E[0].head.line+1,0))}}else{if(M=te(r||m),re(x=te(n||p),M)){var R=M;M=x,x=R}(b=s.linewise||c.linewise)?function(e,t,n){t.ch=0,n.ch=0,n.line++}(0,M,x):s.forward&&function(e,t,n){var r=e.getRange(t,n);if(/\n\s*$/.test(r)){var o=r.split("\n");o.pop();for(var i=o.pop();o.length>0&&i&&y(i);i=o.pop())n.line--,n.ch=0;i?(n.line--,n.ch=se(e,n.line)):n.ch=0}}(e,M,x),T=pe(e,{anchor:M,head:x},L="char",!s.inclusive||b)}e.setSelections(T.ranges,T.primary),t.lastMotion=null,c.repeat=o,c.registerName=u,c.linewise=b;var B=z[l](e,c,T.ranges,m,n);t.visualMode&&me(e,null!=B),B&&e.setCursor(B)}},recordLastEdit:function(e,t,n){var r=O.macroModeState;r.isPlaying||(e.lastEditInputState=t,e.lastEditActionCommand=n,r.lastInsertModeChanges.changes=[],r.lastInsertModeChanges.expectCursorActivityForChange=!1,r.lastInsertModeChanges.visualBlock=e.visualBlock?e.sel.head.line-e.sel.anchor.line:0)}},q={moveToTopLine:function(e,t,n){var r=He(e).top+n.repeat-1;return new A(r,ge(e.getLine(r)))},moveToMiddleLine:function(e){var t=He(e),n=Math.floor(.5*(t.top+t.bottom));return new A(n,ge(e.getLine(n)))},moveToBottomLine:function(e,t,n){var r=He(e).bottom-n.repeat+1;return new A(r,ge(e.getLine(r)))},expandToLine:function(e,t,n){return new A(t.line+n.repeat-1,1/0)},findNext:function(e,t,n){var r=Ee(e),o=r.getQuery();if(o){var i=!n.forward;return i=r.isReversed()?!i:i,Ve(e,o),_e(e,i,o,n.repeat)}},findAndSelectNextInclusive:function(e,t,n,r,o){var i=Ee(e),a=i.getQuery();if(a){var s=!n.forward,l=function(e,t,n,r,o){return void 0===r&&(r=1),e.operation((function(){var i=e.getCursor(),a=e.getSearchCursor(n,i),s=a.find(!t);!o.visualMode&&s&&ne(a.from(),i)&&a.find(!t);for(var l=0;l<r;l++)if(!(s=a.find(t))&&!(a=e.getSearchCursor(n,t?new A(e.lastLine()):new A(e.firstLine(),0))).find(t))return;return[a.from(),a.to()]}))}(e,s=i.isReversed()?!s:s,a,n.repeat,r);if(l){if(o.operator)return l;var c=l[0],u=new A(l[1].line,l[1].ch-1);if(r.visualMode){(r.visualLine||r.visualBlock)&&(r.visualLine=!1,r.visualBlock=!1,x.signal(e,"vim-mode-change",{mode:"visual",subMode:""}));var h=r.sel.anchor;if(h)return i.isReversed()?n.forward?[h,c]:[h,u]:n.forward?[h,u]:[h,c]}else r.visualMode=!0,r.visualLine=!1,r.visualBlock=!1,x.signal(e,"vim-mode-change",{mode:"visual",subMode:""});return s?[u,c]:[c,u]}}},goToMark:function(e,t,n,r){var o=Fe(e,r,n.selectedCharacter);return o?n.linewise?{line:o.line,ch:ge(e.getLine(o.line))}:o:null},moveToOtherHighlightedEnd:function(e,t,n,r){if(r.visualBlock&&n.sameLine){var o=r.sel;return[G(e,new A(o.anchor.line,o.head.ch)),G(e,new A(o.head.line,o.anchor.ch))]}return[r.sel.head,r.sel.anchor]},jumpToMark:function(e,t,n,r){for(var o=t,i=0;i<n.repeat;i++){var a=o;for(var s in r.marks)if(g(s)){var l=r.marks[s].find();if(!((n.forward?re(l,a):re(a,l))||n.linewise&&l.line==a.line)){var c=ne(a,o),u=n.forward?ae(a,l,o):ae(o,l,a);(c||u)&&(o=l)}}}return n.linewise&&(o=new A(o.line,ge(e.getLine(o.line)))),o},moveByCharacters:function(e,t,n){var r=t,o=n.repeat,i=n.forward?r.ch+o:r.ch-o;return new A(r.line,i)},moveByLines:function(e,t,n,r){var o=t,i=o.ch;switch(r.lastMotion){case this.moveByLines:case this.moveByDisplayLines:case this.moveByScroll:case this.moveToColumn:case this.moveToEol:i=r.lastHPos;break;default:r.lastHPos=i}var a=n.repeat+(n.repeatOffset||0),s=n.forward?o.line+a:o.line-a,l=e.firstLine(),c=e.lastLine(),u=e.findPosV(o,n.forward?a:-a,"line",r.lastHSPos);return(n.forward?u.line>s:u.line<s)&&(s=u.line,i=u.ch),s<l&&o.line==l?this.moveToStartOfLine(e,t,n,r):s>c&&o.line==c?Me(e,t,n,r,!0):(n.toFirstChar&&(i=ge(e.getLine(s)),r.lastHPos=i),r.lastHSPos=e.charCoords(new A(s,i),"div").left,new A(s,i))},moveByDisplayLines:function(e,t,n,r){var o=t;switch(r.lastMotion){case this.moveByDisplayLines:case this.moveByScroll:case this.moveByLines:case this.moveToColumn:case this.moveToEol:break;default:r.lastHSPos=e.charCoords(o,"div").left}var i=n.repeat;if((s=e.findPosV(o,n.forward?i:-i,"line",r.lastHSPos)).hitSide)if(n.forward)var a={top:e.charCoords(s,"div").top+8,left:r.lastHSPos},s=e.coordsChar(a,"div");else{var l=e.charCoords(new A(e.firstLine(),0),"div");l.left=r.lastHSPos,s=e.coordsChar(l,"div")}return r.lastHPos=s.ch,s},moveByPage:function(e,t,n){var r=t,o=n.repeat;return e.findPosV(r,n.forward?o:-o,"page")},moveByParagraph:function(e,t,n){var r=n.forward?1:-1;return Le(e,t,n.repeat,r)},moveBySentence:function(e,t,n){var r=n.forward?1:-1;return function(e,t,n,r){function o(e,t){if(t.pos+t.dir<0||t.pos+t.dir>=t.line.length){if(t.ln+=t.dir,!m(e,t.ln))return t.line=null,t.ln=null,void(t.pos=null);t.line=e.getLine(t.ln),t.pos=t.dir>0?0:t.line.length-1}else t.pos+=t.dir}function i(e,t,n,r){var i=""===(c=e.getLine(t)),a={line:c,ln:t,pos:n,dir:r},s={ln:a.ln,pos:a.pos},l=""===a.line;for(o(e,a);null!==a.line;){if(s.ln=a.ln,s.pos=a.pos,""===a.line&&!l)return{ln:a.ln,pos:a.pos};if(i&&""!==a.line&&!y(a.line[a.pos]))return{ln:a.ln,pos:a.pos};!k(a.line[a.pos])||i||a.pos!==a.line.length-1&&!y(a.line[a.pos+1])||(i=!0),o(e,a)}var c=e.getLine(s.ln);s.pos=0;for(var u=c.length-1;u>=0;--u)if(!y(c[u])){s.pos=u;break}return s}function a(e,t,n,r){var i={line:e.getLine(t),ln:t,pos:n,dir:r},a={ln:i.ln,pos:null},s=""===i.line;for(o(e,i);null!==i.line;){if(""===i.line&&!s)return null!==a.pos?a:{ln:i.ln,pos:i.pos};if(k(i.line[i.pos])&&null!==a.pos&&(i.ln!==a.ln||i.pos+1!==a.pos))return a;""===i.line||y(i.line[i.pos])||(s=!1,a={ln:i.ln,pos:i.pos}),o(e,i)}var l=e.getLine(a.ln);a.pos=0;for(var c=0;c<l.length;++c)if(!y(l[c])){a.pos=c;break}return a}for(var s={ln:t.line,pos:t.ch};n>0;)s=r<0?a(e,s.ln,s.pos,r):i(e,s.ln,s.pos,r),n--;return new A(s.ln,s.pos)}(e,t,n.repeat,r)},moveByScroll:function(e,t,n,r){var o,i=e.getScrollInfo(),a=n.repeat;a||(a=i.clientHeight/(2*e.defaultTextHeight()));var s=e.charCoords(t,"local");if(n.repeat=a,!(o=q.moveByDisplayLines(e,t,n,r)))return null;var l=e.charCoords(o,"local");return e.scrollTo(null,i.top+l.top-s.top),o},moveByWords:function(e,t,n){return function(e,t,n,r,o,i){var a=te(t),s=[];(r&&!o||!r&&o)&&n++;for(var l=!(r&&o),c=0;c<n;c++){var u=Se(e,t,r,i,l);if(!u){var h=se(e,e.lastLine());s.push(r?{line:e.lastLine(),from:h,to:h}:{line:0,from:0,to:0});break}s.push(u),t=new A(u.line,r?u.to-1:u.from)}var f=s.length!=n,d=s[0],p=s.pop();return r&&!o?(f||d.from==a.ch&&d.line==a.line||(p=s.pop()),new A(p.line,p.from)):r&&o?new A(p.line,p.to-1):!r&&o?(f||d.to==a.ch&&d.line==a.line||(p=s.pop()),new A(p.line,p.to)):new A(p.line,p.from)}(e,t,n.repeat,!!n.forward,!!n.wordEnd,!!n.bigWord)},moveTillCharacter:function(e,t,n){var r=xe(e,n.repeat,n.forward,n.selectedCharacter),o=n.forward?-1:1;return ke(o,n),r?(r.ch+=o,r):null},moveToCharacter:function(e,t,n){var r=n.repeat;return ke(0,n),xe(e,r,n.forward,n.selectedCharacter)||t},moveToSymbol:function(e,t,n){return function(e,t,n,r){var o=te(e.getCursor()),i=n?1:-1,a=n?e.lineCount():-1,s=o.ch,l=o.line,c=e.getLine(l),u={lineText:c,nextCh:c.charAt(s),lastCh:null,index:s,symb:r,reverseSymb:(n?{")":"(","}":"{"}:{"(":")","{":"}"})[r],forward:n,depth:0,curMoveThrough:!1},h=Ce[r];if(!h)return o;var f=we[h].init,d=we[h].isComplete;for(f&&f(u);l!==a&&t;){if(u.index+=i,u.nextCh=u.lineText.charAt(u.index),!u.nextCh){if(l+=i,u.lineText=e.getLine(l)||"",i>0)u.index=0;else{var p=u.lineText.length;u.index=p>0?p-1:0}u.nextCh=u.lineText.charAt(u.index)}d(u)&&(o.line=l,o.ch=u.index,t--)}return u.nextCh||u.curMoveThrough?new A(l,u.index):o}(e,n.repeat,n.forward,n.selectedCharacter)||t},moveToColumn:function(e,t,n,r){var o=n.repeat;return r.lastHPos=o-1,r.lastHSPos=e.charCoords(t,"div").left,function(e,t){var n=e.getCursor().line;return G(e,new A(n,t-1))}(e,o)},moveToEol:function(e,t,n,r){return Me(e,t,n,r,!1)},moveToFirstNonWhiteSpaceCharacter:function(e,t){var n=t;return new A(n.line,ge(e.getLine(n.line)))},moveToMatchedSymbol:function(e,t){var n=t,r=n.line,o=n.ch;if(o<e.getLine(r).length){var i="<"===o||">"===o?/[(){}[\]<>]/:/[(){}[\]]/;return e.findMatchingBracket(new A(r,o),{bracketRegex:i}).to}return n},moveToStartOfLine:function(e,t){return new A(t.line,0)},moveToLineOrEdgeOfDocument:function(e,t,n){var r=n.forward?e.lastLine():e.firstLine();return n.repeatIsExplicit&&(r=n.repeat-e.getOption("firstLineNumber")),new A(r,ge(e.getLine(r)))},moveToStartOfDisplayLine:function(e){return e.execCommand("goLineLeft"),e.getCursor()},moveToEndOfDisplayLine:function(e){e.execCommand("goLineRight");var t=e.getCursor();return"before"==t.sticky&&t.ch--,t},textObjectManipulation:function(e,t,n,r){var o=n.selectedCharacter;"b"==o?o="(":"B"==o&&(o="{");var i,a=!n.textObjectInner;if({"(":")",")":"(","{":"}","}":"{","[":"]","]":"[","<":">",">":"<"}[o])i=function(e,t,n,r){var o,i,a=t,s={"(":/[()]/,")":/[()]/,"[":/[[\]]/,"]":/[[\]]/,"{":/[{}]/,"}":/[{}]/,"<":/[<>]/,">":/[<>]/}[n],l={"(":"(",")":"(","[":"[","]":"[","{":"{","}":"{","<":"<",">":"<"}[n],c=e.getLine(a.line).charAt(a.ch)===l?1:0;if(o=e.scanForBracket(new A(a.line,a.ch+c),-1,void 0,{bracketRegex:s}),i=e.scanForBracket(new A(a.line,a.ch+c),1,void 0,{bracketRegex:s}),!o||!i)return{start:a,end:a};if(o=o.pos,i=i.pos,o.line==i.line&&o.ch>i.ch||o.line>i.line){var u=o;o=i,i=u}return r?i.ch+=1:o.ch+=1,{start:o,end:i}}(e,t,o,a);else if({"'":!0,'"':!0,"`":!0}[o])i=function(e,t,n,r){var o,i,a,s,l=te(t),c=e.getLine(l.line).split(""),u=c.indexOf(n);if(l.ch<u?l.ch=u:u<l.ch&&c[l.ch]==n&&(i=l.ch,--l.ch),c[l.ch]!=n||i)for(a=l.ch;a>-1&&!o;a--)c[a]==n&&(o=a+1);else o=l.ch+1;if(o&&!i)for(a=o,s=c.length;a<s&&!i;a++)c[a]==n&&(i=a);return o&&i?(r&&(--o,++i),{start:new A(l.line,o),end:new A(l.line,i)}):{start:l,end:l}}(e,t,o,a);else if("W"===o)i=ve(e,a,0,!0);else if("w"===o)i=ve(e,a,0,!1);else if("p"===o)if(i=Le(e,t,n.repeat,0,a),n.linewise=!0,r.visualMode)r.visualLine||(r.visualLine=!0);else{var s=r.inputState.operatorArgs;s&&(s.linewise=!0),i.end.line--}else{if("t"!==o)return null;i=function(e,t,n){var r=t;if(!x.findMatchingTag||!x.findEnclosingTag)return{start:r,end:r};var o=x.findMatchingTag(e,t)||x.findEnclosingTag(e,t);return o&&o.open&&o.close?n?{start:o.open.from,end:o.close.to}:{start:o.open.to,end:o.close.from}:{start:r,end:r}}(e,t,a)}return e.state.vim.visualMode?function(e,t,n){var r,o=e.state.vim.sel,i=o.head,a=o.anchor;return re(n,t)&&(r=n,n=t,t=r),re(i,a)?(i=oe(t,i),a=ie(a,n)):(a=oe(t,a),-1==(i=Y(i=ie(i,n),0,-1)).ch&&i.line!=e.firstLine()&&(i=new A(i.line-1,se(e,i.line-1)))),[a,i]}(e,i.start,i.end):[i.start,i.end]},repeatLastCharacterSearch:function(e,t,n){var r=O.lastCharacterSearch,o=n.repeat,i=n.forward===r.forward,a=(r.increment?1:0)*(i?-1:1);e.moveH(-a,"char"),n.inclusive=!!i;var s=xe(e,o,i,r.selectedCharacter);return s?(s.ch+=a,s):(e.moveH(a,"char"),t)}};function J(e,t){for(var n=[],r=0;r<t;r++)n.push(e);return n}var z={change:function(e,t,n){var r,o,i=e.state.vim,a=n[0].anchor,s=n[0].head;if(i.visualMode)if(t.fullLine)s.ch=Number.MAX_VALUE,s.line--,e.setSelection(a,s),o=e.getSelection(),e.replaceSelections(""),r=a;else{o=e.getSelection();var l=J("",n.length);e.replaceSelections(l),r=oe(n[0].head,n[0].anchor)}else{o=e.getRange(a,s);var c=i.lastEditInputState||{};if("moveByWords"==c.motion&&!y(o)){var u=/\s+$/.exec(o);u&&c.motionArgs&&c.motionArgs.forward&&(s=Y(s,0,-u[0].length),o=o.slice(0,-u[0].length))}var h=new A(a.line-1,Number.MAX_VALUE),f=e.firstLine()==e.lastLine();s.line>e.lastLine()&&t.linewise&&!f?e.replaceRange("",h,s):e.replaceRange("",a,s),t.linewise&&(f||(e.setCursor(h),x.commands.newlineAndIndent(e)),a.ch=Number.MAX_VALUE),r=a}O.registerController.pushText(t.registerName,"change",o,t.linewise,n.length>1),Q.enterInsertMode(e,{head:r},e.state.vim)},delete:function(e,t,n){var r,o;e.pushUndoStop();var i=e.state.vim;if(i.visualBlock){o=e.getSelection();var a=J("",n.length);e.replaceSelections(a),r=oe(n[0].head,n[0].anchor)}else{var s=n[0].anchor,l=n[0].head;t.linewise&&l.line!=e.firstLine()&&s.line==e.lastLine()&&s.line==l.line-1&&(s.line==e.firstLine()?s.ch=0:s=new A(s.line-1,se(e,s.line-1))),o=e.getRange(s,l),e.replaceRange("",s,l),r=s,t.linewise&&(r=q.moveToFirstNonWhiteSpaceCharacter(e,s))}return O.registerController.pushText(t.registerName,"delete",o,t.linewise,i.visualBlock),G(e,r)},indent:function(e,t,n){var r=e.state.vim,o=n[0].anchor.line,i=r.visualBlock?n[n.length-1].anchor.line:n[0].head.line,a=r.visualMode?t.repeat:1;t.linewise&&i--,e.pushUndoStop();for(var s=o;s<=i;s++)for(var l=0;l<a;l++)e.indentLine(s,t.indentRight);return e.pushUndoStop(),q.moveToFirstNonWhiteSpaceCharacter(e,n[0].anchor)},indentAuto:function(e,t,n){return e.execCommand("indentAuto"),q.moveToFirstNonWhiteSpaceCharacter(e,n[0].anchor)},changeCase:function(e,t,n,r,o){for(var i=e.getSelections(),a=[],s=t.toLower,l=0;l<i.length;l++){var c=i[l],u="";if(!0===s)u=c.toLowerCase();else if(!1===s)u=c.toUpperCase();else for(var h=0;h<c.length;h++){var f=c.charAt(h);u+=v(f)?f.toLowerCase():f.toUpperCase()}a.push(u)}return e.replaceSelections(a),t.shouldMoveCursor?o:!e.state.vim.visualMode&&t.linewise&&n[0].anchor.line+1==n[0].head.line?q.moveToFirstNonWhiteSpaceCharacter(e,r):t.linewise?r:oe(n[0].anchor,n[0].head)},yank:function(e,t,n,r){var o=e.state.vim,i=e.getSelection(),a=o.visualMode?oe(o.sel.anchor,o.sel.head,n[0].head,n[0].anchor):r;return O.registerController.pushText(t.registerName,"yank",i,t.linewise,o.visualBlock),a}},Q={jumpListWalk:function(e,t,n){if(!n.visualMode){var r=t.repeat,o=t.forward,i=O.jumpList.move(e,o?r:-r),a=i?i.find():void 0;a=a||e.getCursor(),e.setCursor(a)}},scroll:function(e,t,n){if(!n.visualMode){var r=t.repeat||1,o=e.defaultTextHeight(),i=e.getScrollInfo().top,a=o*r,s=t.forward?i+a:i-a,l=te(e.getCursor()),c=e.charCoords(l,"local");if(t.forward)s>c.top?(l.line+=(s-c.top)/o,l.line=Math.ceil(l.line),e.setCursor(l),c=e.charCoords(l,"local"),e.scrollTo(null,c.top)):e.scrollTo(null,s);else{var u=s+e.getScrollInfo().clientHeight;u<c.bottom?(l.line-=(c.bottom-u)/o,l.line=Math.floor(l.line),e.setCursor(l),c=e.charCoords(l,"local"),e.scrollTo(null,c.bottom-e.getScrollInfo().clientHeight)):e.scrollTo(null,s)}}},scrollToCursor:function(e,t){var n=e.getCursor().line,r=e.charCoords(new A(n,0),"local"),o=e.getScrollInfo().clientHeight,i=r.top,a=r.bottom-i;switch(t.position){case"center":i=i-o/2+a;break;case"bottom":i=i-o+a}e.moveCurrentLineTo(i)},replayMacro:function(e,t,n){var r=t.selectedCharacter,o=t.repeat,i=O.macroModeState;for("@"==r?r=i.latestRegister:i.latestRegister=r;o--;)Ge(e,n,i,r)},enterMacroRecordMode:function(e,t){var n=O.macroModeState,r=t.selectedCharacter;O.registerController.isValidRegister(r)&&n.enterMacroRecordMode(e,r)},toggleOverwrite:function(e){e.state.overwrite?(e.toggleOverwrite(!1),e.setOption("keyMap","vim-insert"),x.signal(e,"vim-mode-change",{mode:"insert"})):(e.toggleOverwrite(!0),e.setOption("keyMap","vim-replace"),x.signal(e,"vim-mode-change",{mode:"replace"}))},enterInsertMode:function(e,t,n){if(!e.getOption("readOnly")){n.insertMode=!0,n.insertModeRepeat=t&&t.repeat||1;var r=t?t.insertAt:null,o=n.sel,i=t.head||e.getCursor("head"),a=e.listSelections().length;if("eol"==r)i=new A(i.line,se(e,i.line));else if("bol"==r)i=new A(i.line,0);else if("charAfter"==r)i=Y(i,0,1);else if("firstNonBlank"==r)i=q.moveToFirstNonWhiteSpaceCharacter(e,i);else if("startOfSelectedArea"==r){if(!n.visualMode)return;n.visualBlock?(i=new A(Math.min(o.head.line,o.anchor.line),Math.min(o.head.ch,o.anchor.ch)),a=Math.abs(o.head.line-o.anchor.line)+1):i=o.head.line<o.anchor.line?o.head:new A(o.anchor.line,0)}else if("endOfSelectedArea"==r){if(!n.visualMode)return;n.visualBlock?(i=new A(Math.min(o.head.line,o.anchor.line),Math.max(o.head.ch,o.anchor.ch)+1),a=Math.abs(o.head.line-o.anchor.line)+1):i=o.head.line>=o.anchor.line?Y(o.head,0,1):new A(o.anchor.line,0)}else if("inplace"==r){if(n.visualMode)return}else"lastEdit"==r&&(i=Ue(e)||i);e.setOption("disableInput",!1),t&&t.replace?(e.toggleOverwrite(!0),e.setOption("keyMap","vim-replace"),x.signal(e,"vim-mode-change",{mode:"replace"})):(e.toggleOverwrite(!1),e.setOption("keyMap","vim-insert"),x.signal(e,"vim-mode-change",{mode:"insert"})),O.macroModeState.isPlaying||(e.on("change",Xe),x.on(e.getInputField(),"keydown",et)),n.visualMode&&me(e),he(e,i,a)}},toggleVisualMode:function(e,t,n){var r,o=t.repeat,i=e.getCursor();n.visualMode?n.visualLine^t.linewise||n.visualBlock^t.blockwise?(n.visualLine=!!t.linewise,n.visualBlock=!!t.blockwise,x.signal(e,"vim-mode-change",{mode:"visual",subMode:n.visualLine?"linewise":n.visualBlock?"blockwise":""}),de(e)):me(e):(n.visualMode=!0,n.visualLine=!!t.linewise,n.visualBlock=!!t.blockwise,r=G(e,new A(i.line,i.ch+o-1)),n.sel={anchor:i,head:r},x.signal(e,"vim-mode-change",{mode:"visual",subMode:n.visualLine?"linewise":n.visualBlock?"blockwise":""}),de(e),be(e,n,"<",oe(i,r)),be(e,n,">",ie(i,r)))},reselectLastSelection:function(e,t,n){var r=n.lastSelection;if(n.visualMode&&fe(e,n),r){var o=r.anchorMark.find(),i=r.headMark.find();if(!o||!i)return;n.sel={anchor:o,head:i},n.visualMode=!0,n.visualLine=r.visualLine,n.visualBlock=r.visualBlock,de(e),be(e,n,"<",oe(o,i)),be(e,n,">",ie(o,i)),x.signal(e,"vim-mode-change",{mode:"visual",subMode:n.visualLine?"linewise":n.visualBlock?"blockwise":""})}},joinLines:function(e,t,n){var r,o;if(n.visualMode){if(r=e.getCursor("anchor"),re(o=e.getCursor("head"),r)){var i=o;o=r,r=i}o.ch=se(e,o.line)-1}else{var a=Math.max(t.repeat,2);r=e.getCursor(),o=G(e,new A(r.line+a-1,1/0))}for(var s=0,l=r.line;l<o.line;l++){s=se(e,r.line),i=new A(r.line+1,se(e,r.line+1));var c=e.getRange(r,i);c=t.keepSpaces?c.replace(/\n\r?/g,""):c.replace(/\n\s*/g," "),e.replaceRange(c,r,i)}var u=new A(r.line,s);n.visualMode&&me(e,!1),e.setCursor(u)},newLineAndEnterInsertMode:function(e,t,n){if(!e.getOption("readOnly")){n.insertMode=!0;var r=te(e.getCursor());r.line!==e.firstLine()||t.after?(r.line=t.after?r.line:r.line-1,r.ch=se(e,r.line),e.setCursor(r),(x.commands.newlineAndIndentContinueComment||x.commands.newlineAndIndent)(e)):(e.replaceRange("\n",new A(e.firstLine(),0)),e.setCursor(e.firstLine(),0)),this.enterInsertMode(e,{repeat:t.repeat},n)}},paste:function(e,t,n){var r=te(e.getCursor()),o=O.registerController.getRegister(t.registerName);if(f=o.toString()){if(t.matchIndent){var i=e.getOption("tabSize"),a=function(e){var t=e.split("\t").length-1,n=e.split(" ").length-1;return t*i+1*n},s=e.getLine(e.getCursor().line),l=a(s.match(/^\s*/)[0]),c=f.replace(/\n$/,""),u=f!==c,h=a(f.match(/^\s*/)[0]),f=c.replace(/^\s*/gm,(function(t){var n=l+(a(t)-h);if(n<0)return"";if(e.getOption("indentWithTabs")){var r=Math.floor(n/i);return Array(r+1).join("\t")}return Array(n+1).join(" ")}));f+=u?"\n":""}t.repeat>1&&(f=Array(t.repeat+1).join(f));var d,p,m=o.linewise,g=o.blockwise;if(g){f=f.split("\n"),m&&f.pop();for(var v=0;v<f.length;v++)f[v]=""==f[v]?" ":f[v];r.ch+=t.after?1:0,r.ch=Math.min(se(e,r.line),r.ch)}else m?n.visualMode?f=n.visualLine?f.slice(0,-1):"\n"+f.slice(0,f.length-1)+"\n":t.after?(f="\n"+f.slice(0,f.length-1),r.ch=se(e,r.line)):r.ch=0:r.ch+=t.after?1:0;if(n.visualMode){var y;n.lastPastedText=f;var k=function(e,t){var n=t.lastSelection;return t.visualMode?function(){var t=e.listSelections(),n=t[0],r=t[t.length-1];return[re(n.anchor,n.head)?n.anchor:n.head,re(r.anchor,r.head)?r.head:r.anchor]}():function(){var t=e.getCursor(),r=e.getCursor(),o=n.visualBlock;if(o){var i=o.width,a=o.height;r=new A(t.line+a,t.ch+i);for(var s=[],l=t.line;l<r.line;l++){var c={anchor:new A(l,t.ch),head:new A(l,r.ch)};s.push(c)}e.setSelections(s)}else{var u=n.anchorMark.find(),h=n.headMark.find(),f=h.line-u.line,d=h.ch-u.ch;r={line:r.line+f,ch:f?r.ch:d+r.ch},n.visualLine&&(t=new A(t.line,0),r=new A(r.line,se(e,r.line))),e.setSelection(t,r)}return[t,r]}()}(e,n),C=k[0],w=k[1],S=e.getSelection(),M=e.listSelections(),x=new Array(M.length).join("1").split("1");n.lastSelection&&(y=n.lastSelection.headMark.find()),O.registerController.unnamedRegister.setText(S),g?(e.replaceSelections(x),w=new A(C.line+f.length-1,C.ch),e.setCursor(C),ue(e,w),e.replaceSelections(f),d=C):n.visualBlock?(e.replaceSelections(x),e.setCursor(C),e.replaceRange(f,C,C),d=C):(e.replaceRange(f,C,w),d=e.posFromIndex(e.indexFromPos(C)+f.length-1)),y&&(n.lastSelection.headMark=e.setBookmark(y)),m&&(d.ch=0)}else if(g){for(e.setCursor(r),v=0;v<f.length;v++){var b=r.line+v;b>e.lastLine()&&e.replaceRange("\n",new A(b,0)),se(e,b)<r.ch&&ce(e,b,r.ch)}e.setCursor(r),ue(e,new A(r.line+f.length-1,r.ch)),e.replaceSelections(f),d=r}else e.replaceRange(f,r),m&&t.after?d=new A(r.line+1,ge(e.getLine(r.line+1))):m&&!t.after?d=new A(r.line,ge(e.getLine(r.line))):!m&&t.after?(p=e.indexFromPos(r),d=e.posFromIndex(p+f.length-1)):(p=e.indexFromPos(r),d=e.posFromIndex(p+f.length));n.visualMode&&me(e,!1),e.setCursor(d)}},undo:function(e,t){e.operation((function(){ee(e,x.commands.undo,t.repeat)(),e.setCursor(e.getCursor("anchor"))}))},redo:function(e,t){ee(e,x.commands.redo,t.repeat)()},setRegister:function(e,t,n){n.inputState.registerName=t.selectedCharacter},setMark:function(e,t,n){be(e,n,t.selectedCharacter,e.getCursor())},replace:function(e,t,n){var r,o,i=t.selectedCharacter,a=e.getCursor(),s=e.listSelections();if(n.visualMode)a=e.getCursor("start"),o=e.getCursor("end");else{var l=e.getLine(a.line);(r=a.ch+t.repeat)>l.length&&(r=l.length),o=new A(a.line,r)}if("\n"==i)n.visualMode||e.replaceRange("",a,o),(x.commands.newlineAndIndentContinueComment||x.commands.newlineAndIndent)(e);else{var c=e.getRange(a,o);if(c=c.replace(/[^\n]/g,i),n.visualBlock){var u=new Array(e.getOption("tabSize")+1).join(" ");c=(c=e.getSelection()).replace(/\t/g,u).replace(/[^\n]/g,i).split("\n"),e.replaceSelections(c)}else e.replaceRange(c,a,o);n.visualMode?(a=re(s[0].anchor,s[0].head)?s[0].anchor:s[0].head,e.setCursor(a),me(e,!1)):e.setCursor(Y(o,0,-1))}},incrementNumberToken:function(e,t){for(var n,r,o,i,a=e.getCursor(),s=e.getLine(a.line),l=/(-?)(?:(0x)([\da-f]+)|(0b|0|)(\d+))/gi;null!==(n=l.exec(s))&&(o=(r=n.index)+n[0].length,!(a.ch<o)););if((t.backtrack||!(o<=a.ch))&&n){var c=n[2]||n[4],u=n[3]||n[5],h=t.increase?1:-1,f={"0b":2,0:8,"":10,"0x":16}[c.toLowerCase()];i=(parseInt(n[1]+u,f)+h*t.repeat).toString(f);var d=c?new Array(u.length-i.length+1+n[1].length).join("0"):"";i="-"===i.charAt(0)?"-"+c+d+i.substr(1):c+d+i;var p=new A(a.line,r),m=new A(a.line,o);e.replaceRange(i,p,m),e.setCursor(new A(a.line,r+i.length-1))}},repeatLastEdit:function(e,t,n){if(n.lastEditInputState){var r=t.repeat;r&&t.repeatIsExplicit?n.lastEditInputState.repeatOverride=r:r=n.lastEditInputState.repeatOverride||r,tt(e,n,r,!1)}},indent:function(e,t){e.indentLine(e.getCursor().line,t.indentRight)},exitInsertMode:ze};function G(e,t){var n=e.state.vim,r=n.insertMode||n.visualMode,o=Math.min(Math.max(e.firstLine(),t.line),e.lastLine()),i=se(e,o)-1+!!r,a=Math.min(Math.max(0,t.ch),i);return new A(o,a)}function X(e){var t={};for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n]);return t}function Y(e,t,n){return"object"===b(t)&&(n=t.ch,t=t.line),new A(e.line+t,e.ch+n)}function Z(e,t){if("<character>"==t.slice(-11)){var n=t.length-11,r=e.slice(0,n),o=t.slice(0,n);return r==o&&e.length>n?"full":0==o.indexOf(r)&&"partial"}return e==t?"full":0==t.indexOf(e)&&"partial"}function ee(e,t,n){return function(){for(var r=0;r<n;r++)t(e)}}function te(e){return new A(e.line,e.ch)}function ne(e,t){return e.ch==t.ch&&e.line==t.line}function re(e,t){return e.line<t.line||e.line==t.line&&e.ch<t.ch}function oe(e,t){return arguments.length>2&&(t=oe.apply(void 0,Array.prototype.slice.call(arguments,1))),re(e,t)?e:t}function ie(e,t){return arguments.length>2&&(t=ie.apply(void 0,Array.prototype.slice.call(arguments,1))),re(e,t)?t:e}function ae(e,t,n){var r=re(e,t),o=re(t,n);return r&&o}function se(e,t){return e.getLine(t).length}function le(e){return e.trim?e.trim():e.replace(/^\s+|\s+$/g,"")}function ce(e,t,n){var r=se(e,t),o=new Array(n-r+1).join(" ");e.setCursor(new A(t,r)),e.replaceRange(o,e.getCursor())}function ue(e,t){var n=[],r=e.listSelections(),o=te(e.clipPos(t)),i=!ne(t,o),a=function(e,t){for(var n=0;n<e.length;n++){var r=ne(e[n].anchor,t),o=ne(e[n].head,t);if(r||o)return n}return-1}(r,e.getCursor("head")),s=ne(r[a].head,r[a].anchor),l=r.length-1,c=l-a>a?l:0,u=r[c].anchor,h=Math.min(u.line,o.line),f=Math.max(u.line,o.line),d=u.ch,p=o.ch,m=r[c].head.ch-d,g=p-d;m>0&&g<=0?(d++,i||p--):m<0&&g>=0?(d--,s||p++):m<0&&-1==g&&(d--,p++);for(var v=h;v<=f;v++){var y={anchor:new A(v,d),head:new A(v,p)};n.push(y)}return e.setSelections(n),t.ch=p,u.ch=d,u}function he(e,t,n){for(var r=[],o=0;o<n;o++){var i=Y(t,o,0);r.push({anchor:i,head:i})}e.setSelections(r,0)}function fe(e,t){var n=t.sel.anchor,r=t.sel.head;t.lastPastedText&&(r=e.posFromIndex(e.indexFromPos(n)+t.lastPastedText.length),t.lastPastedText=null),t.lastSelection={anchorMark:e.setBookmark(n),headMark:e.setBookmark(r),anchor:te(n),head:te(r),visualMode:t.visualMode,visualLine:t.visualLine,visualBlock:t.visualBlock}}function de(e,t,n){var r=e.state.vim,o=pe(e,t=t||r.sel,n=n||r.visualLine?"line":r.visualBlock?"block":"char");e.setSelections(o.ranges,o.primary)}function pe(e,t,n,r){var o=te(t.head),i=te(t.anchor);if("char"==n){var a=r||re(t.head,t.anchor)?0:1,s=re(t.head,t.anchor)?1:0;return o=Y(t.head,0,a),{ranges:[{anchor:i=Y(t.anchor,0,s),head:o}],primary:0}}if("line"==n){if(re(t.head,t.anchor))o.ch=0,i.ch=se(e,i.line);else{i.ch=0;var l=e.lastLine();o.line>l&&(o.line=l),o.ch=se(e,o.line)}return{ranges:[{anchor:i,head:o}],primary:0}}if("block"==n){var c=Math.min(i.line,o.line),u=i.ch,h=Math.max(i.line,o.line),f=o.ch;u<f?f+=1:u+=1;for(var d=h-c+1,p=o.line==c?0:d-1,m=[],g=0;g<d;g++)m.push({anchor:new A(c+g,u),head:new A(c+g,f)});return{ranges:m,primary:p}}}function me(e,t){var n=e.state.vim;!1!==t&&e.setCursor(G(e,n.sel.head)),fe(e,n),n.visualMode=!1,n.visualLine=!1,n.visualBlock=!1,n.insertMode||x.signal(e,"vim-mode-change",{mode:"normal"})}function ge(e){if(!e)return 0;var t=e.search(/\S/);return-1==t?e.length:t}function ve(e,t,n,r,o){for(var i=function(e){var t=e.getCursor("head");return 1==e.getSelection().length&&(t=oe(t,e.getCursor("anchor"))),t}(e),l=e.getLine(i.line),c=i.ch,u=o?a[0]:s[0];!u(l.charAt(c));)if(++c>=l.length)return null;r?u=s[0]:(u=a[0])(l.charAt(c))||(u=a[1]);for(var h=c,f=c;u(l.charAt(h))&&h<l.length;)h++;for(;u(l.charAt(f))&&f>=0;)f--;if(f++,t){for(var d=h;/\s/.test(l.charAt(h))&&h<l.length;)h++;if(d==h){for(var p=f;/\s/.test(l.charAt(f-1))&&f>0;)f--;f||(f=p)}}return{start:new A(i.line,f),end:new A(i.line,h)}}function ye(e,t,n){ne(t,n)||O.jumpList.add(e,t,n)}function ke(e,t){O.lastCharacterSearch.increment=e,O.lastCharacterSearch.forward=t.forward,O.lastCharacterSearch.selectedCharacter=t.selectedCharacter}var Ce={"(":"bracket",")":"bracket","{":"bracket","}":"bracket","[":"section","]":"section","*":"comment","/":"comment",m:"method",M:"method","#":"preprocess"},we={bracket:{isComplete:function(e){if(e.nextCh===e.symb){if(e.depth++,e.depth>=1)return!0}else e.nextCh===e.reverseSymb&&e.depth--;return!1}},section:{init:function(e){e.curMoveThrough=!0,e.symb=(e.forward?"]":"[")===e.symb?"{":"}"},isComplete:function(e){return 0===e.index&&e.nextCh===e.symb}},comment:{isComplete:function(e){var t="*"===e.lastCh&&"/"===e.nextCh;return e.lastCh=e.nextCh,t}},method:{init:function(e){e.symb="m"===e.symb?"{":"}",e.reverseSymb="{"===e.symb?"}":"{"},isComplete:function(e){return e.nextCh===e.symb}},preprocess:{init:function(e){e.index=0},isComplete:function(e){if("#"===e.nextCh){var t=e.lineText.match(/^#(\w+)/)[1];if("endif"===t){if(e.forward&&0===e.depth)return!0;e.depth++}else if("if"===t){if(!e.forward&&0===e.depth)return!0;e.depth--}if("else"===t&&0===e.depth)return!0}return!1}}};function Se(e,t,n,r,o){var i=t.line,l=t.ch,c=e.getLine(i),u=n?1:-1,h=r?s:a;if(o&&""==c){if(i+=u,c=e.getLine(i),!m(e,i))return null;l=n?0:c.length}for(;;){if(o&&""==c)return{from:0,to:0,line:i};for(var f=u>0?c.length:-1,d=f,p=f;l!=f;){for(var g=!1,v=0;v<h.length&&!g;++v)if(h[v](c.charAt(l))){for(d=l;l!=f&&h[v](c.charAt(l));)l+=u;if(g=d!=(p=l),d==t.ch&&i==t.line&&p==d+u)continue;return{from:Math.min(d,p+1),to:Math.max(d,p),line:i}}g||(l+=u)}if(!m(e,i+=u))return null;c=e.getLine(i),l=u>0?0:c.length}}function Me(e,t,n,r,o){var i=new A(t.line+n.repeat-1,1/0),a=e.clipPos(i);return a.ch--,o||(r.lastHPos=1/0,r.lastHSPos=e.charCoords(a,"div").left),i}function xe(e,t,n,r){for(var o,i=e.getCursor(),a=i.ch,s=0;s<t;s++){if(-1==(o=Ae(a,e.getLine(i.line),r,n,!0)))return null;a=o}return new A(e.getCursor().line,o)}function be(e,t,n,r){C(n,d)&&(t.marks[n]&&t.marks[n].clear(),t.marks[n]=e.setBookmark(r))}function Ae(e,t,n,r,o){var i;return r?-1==(i=t.indexOf(n,e+1))||o||(i-=1):-1==(i=t.lastIndexOf(n,e-1))||o||(i+=1),i}function Le(e,t,n,r,o){var i,a=t.line,s=e.firstLine(),l=e.lastLine(),c=a;function u(t){return!e.getLine(t)}function h(e,t,n){return n?u(e)!=u(e+t):!u(e)&&u(e+t)}if(r){for(;s<=c&&c<=l&&n>0;)h(c,r)&&n--,c+=r;return new A(c,0)}var f=e.state.vim;if(f.visualLine&&h(a,1,!0)){var d=f.sel.anchor;h(d.line,-1,!0)&&(o&&d.line==a||(a+=1))}var p=u(a);for(c=a;c<=l&&n;c++)h(c,1,!0)&&(o&&u(c)==p||n--);for(i=new A(c,0),c>l&&!p?p=!0:o=!1,c=a;c>s&&(o&&u(c)!=p&&c!=a||!h(c,-1,!0));c--);return{start:new A(c,0),end:i}}function Te(){}function Ee(e){var t=e.state.vim;return t.searchState_||(t.searchState_=new Te)}function Ie(e,t){var n=Re(e,t)||[];if(!n.length)return[];var r=[];if(0===n[0]){for(var o=0;o<n.length;o++)"number"==typeof n[o]&&r.push(e.substring(n[o]+1,n[o+1]));return r}}function Re(e,t){t||(t="/");for(var n=!1,r=[],o=0;o<e.length;o++){var i=e.charAt(o);n||i!=t||r.push(o),n=!n&&"\\"==i}return r}S("pcre",!0,"boolean"),Te.prototype={getQuery:function(){return O.query},setQuery:function(e){O.query=e},getOverlay:function(){return this.searchOverlay},setOverlay:function(e){this.searchOverlay=e},isReversed:function(){return O.isReversed},setReversed:function(e){O.isReversed=e},getScrollbarAnnotate:function(){return this.annotate},setScrollbarAnnotate:function(e){this.annotate=e}};var Oe={"\\n":"\n","\\r":"\r","\\t":"\t"},Be={"\\/":"/","\\\\":"\\","\\n":"\n","\\r":"\r","\\t":"\t","\\&":"&"};function Pe(e){"string"==typeof e&&(e=document.createElement(e));for(var t,n=1;n<arguments.length;n++)if(t=arguments[n])if("object"!==b(t)&&(t=document.createTextNode(t)),t.nodeType)e.appendChild(t);else for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&("$"===r[0]?e.style[r.slice(1)]=t[r]:e.setAttribute(r,t[r]));return e}function Ne(e,t){var n=Pe("pre",{$color:"red",class:"cm-vim-message"},t);e.openNotification?e.openNotification(n,{bottom:!0,duration:5e3}):alert(n.innerText)}function Ke(e,t){var n,r,o=(n=t.prefix,r=t.desc,Pe(document.createDocumentFragment(),Pe("span",{$fontFamily:"monospace",$whiteSpace:"pre"},n,Pe("input",{type:"text",autocorrect:"off",autocapitalize:"off",spellcheck:"false"})),r&&Pe("span",{$color:"#888"},r)));if(e.openDialog)e.openDialog(o,t.onClose,{onKeyDown:t.onKeyDown,onKeyUp:t.onKeyUp,bottom:!0,selectValueOnOpen:!1,value:t.value});else{var i="";"string"!=typeof t.prefix&&t.prefix&&(i+=t.prefix.textContent),t.desc&&(i+=" "+t.desc),t.onClose(prompt(i,""))}}function De(e,t,n,r){if(t){var o=Ee(e),i=function(e,t,n){if(O.registerController.getRegister("/").setText(e),e instanceof RegExp)return e;var r,o,i=Re(e,"/");return i.length?(r=e.substring(0,i[0]),o=-1!=e.substring(i[0]).indexOf("i")):r=e,r?(R("pcre")||(r=function(e){for(var t=!1,n=[],r=-1;r<e.length;r++){var o=e.charAt(r)||"",i=e.charAt(r+1)||"",a=i&&-1!="|(){".indexOf(i);t?("\\"===o&&a||n.push(o),t=!1):"\\"===o?(t=!0,i&&-1!="}".indexOf(i)&&(a=!0),a&&"\\"!==i||n.push(o)):(n.push(o),a&&"\\"!==i&&n.push("\\"))}return n.join("")}(r)),n&&(t=/^[^A-Z]*$/.test(r)),new RegExp(r,t||o?"im":"m")):null}(t,!!n,!!r);if(i)return Ve(e,i),function(e,t){if(e instanceof RegExp&&t instanceof RegExp){for(var n=["global","multiline","ignoreCase","source"],r=0;r<n.length;r++){var o=n[r];if(e[o]!==t[o])return!1}return!0}return!1}(i,o.getQuery())||o.setQuery(i),i}}var je=0;function Ve(e,t){clearTimeout(je),je=setTimeout((function(){if(e.state.vim){var n=Ee(e),r=n.getOverlay();r&&t==r.query||(r&&e.removeOverlay(r),r=function(e){if("^"==e.source.charAt(0))var t=!0;return{token:function(n){if(!t||n.sol()){var r=n.match(e,!1);if(r)return 0==r[0].length?(n.next(),"searching"):n.sol()||(n.backUp(1),e.exec(n.next()+r[0]))?(n.match(e),"searching"):(n.next(),null);for(;!n.eol()&&(n.next(),!n.match(e,!1)););}else n.skipToEnd()},query:e}}(t),e.addOverlay(r),e.showMatchesOnScrollbar&&(n.getScrollbarAnnotate()&&n.getScrollbarAnnotate().clear(),n.setScrollbarAnnotate(e.showMatchesOnScrollbar(t))),n.setOverlay(r))}}),50)}function _e(e,t,n,r){return void 0===r&&(r=1),e.operation((function(){for(var o=e.getCursor(),i=e.getSearchCursor(n,o),a=0;a<r;a++){var s=i.find(t);if(0==a&&s&&ne(i.from(),o)){var l=t?i.from():i.to();(s=i.find(t))&&!s[0]&&ne(i.from(),l)&&e.getLine(l.line).length==l.ch&&(s=i.find(t))}if(!s&&!(i=e.getSearchCursor(n,t?new A(e.lastLine()):new A(e.firstLine(),0))).find(t))return}return i.from()}))}function We(e){var t=Ee(e);e.removeOverlay(Ee(e).getOverlay()),t.setOverlay(null),t.getScrollbarAnnotate()&&(t.getScrollbarAnnotate().clear(),t.setScrollbarAnnotate(null))}function He(e){var t=e.getScrollInfo(),n=e.coordsChar({left:0,top:6+t.top},"local"),r=t.clientHeight-10+t.top,o=e.coordsChar({left:0,top:r},"local");return{top:n.line,bottom:o.line}}function Fe(e,t,n){if("'"==n||"`"==n)return O.jumpList.find(e,-1)||new A(0,0);if("."==n)return Ue(e);var r=t.marks[n];return r&&r.find()}function Ue(e){for(var t=e.doc.history.done,n=t.length;n--;)if(t[n].changes)return te(t[n].changes[0].to)}var $e=function(){this.buildCommandMap_()};$e.prototype={processCommand:function(e,t,n){var r=this;e.operation((function(){e.curOp.isVimOp=!0,r._processCommand(e,t,n)}))},_processCommand:function(e,t,n){var r=e.state.vim,o=O.registerController.getRegister(":"),i=o.toString();r.visualMode&&me(e);var a=new x.StringStream(t);o.setText(t);var s,l,c=n||{};c.input=t;try{this.parseInput_(e,a,c)}catch(t){throw Ne(e,t.toString()),t}if(c.commandName){if(s=this.matchCommand_(c.commandName)){if(l=s.name,s.excludeFromCommandHistory&&o.setText(i),this.parseCommandArgs_(a,c,s),"exToKey"==s.type){for(var u=0;u<s.toKeys.length;u++)V.handleKey(e,s.toKeys[u],"mapping");return}if("exToEx"==s.type)return void this.processCommand(e,s.toInput)}}else void 0!==c.line&&(l="move");if(l)try{qe[l](e,c),s&&s.possiblyAsync||!c.callback||c.callback()}catch(t){throw Ne(e,t.toString()),t}else Ne(e,'Not an editor command ":'+t+'"')},parseInput_:function(e,t,n){t.eatWhile(":"),t.eat("%")?(n.line=e.firstLine(),n.lineEnd=e.lastLine()):(n.line=this.parseLineSpec_(e,t),void 0!==n.line&&t.eat(",")&&(n.lineEnd=this.parseLineSpec_(e,t)));var r=t.match(/^(\w+|!!|@@|[!#&*<=>@~])/);return n.commandName=r?r[1]:t.match(/.*/)[0],n},parseLineSpec_:function(e,t){var n=t.match(/^(\d+)/);if(n)return parseInt(n[1],10)-1;switch(t.next()){case".":return this.parseLineSpecOffset_(t,e.getCursor().line);case"$":return this.parseLineSpecOffset_(t,e.lastLine());case"'":var r=t.next(),o=Fe(e,e.state.vim,r);if(!o)throw new Error("Mark not set");return this.parseLineSpecOffset_(t,o.line);case"-":case"+":return t.backUp(1),this.parseLineSpecOffset_(t,e.getCursor().line);default:return void t.backUp(1)}},parseLineSpecOffset_:function(e,t){var n=e.match(/^([+-])?(\d+)/);if(n){var r=parseInt(n[2],10);"-"==n[1]?t-=r:t+=r}return t},parseCommandArgs_:function(e,t,n){if(!e.eol()){t.argString=e.match(/.*/)[0];var r=n.argDelimiter||/\s+/,o=le(t.argString).split(r);o.length&&o[0]&&(t.args=o)}},matchCommand_:function(e){for(var t=e.length;t>0;t--){var n=e.substring(0,t);if(this.commandMap_[n]){var r=this.commandMap_[n];if(0===r.name.indexOf(e))return r}}return null},buildCommandMap_:function(){this.commandMap_={};for(var e=0;e<I.length;e++){var t=I[e],n=t.shortName||t.name;this.commandMap_[n]=t}},map:function(e,t,n){if(":"!=e&&":"==e.charAt(0)){if(n)throw Error("Mode not supported for ex mappings");var r=e.substring(1);":"!=t&&":"==t.charAt(0)?this.commandMap_[r]={name:r,type:"exToEx",toInput:t.substring(1),user:!0}:this.commandMap_[r]={name:r,type:"exToKey",toKeys:t,user:!0}}else if(":"!=t&&":"==t.charAt(0)){var o={keys:e,type:"keyToEx",exArgs:{input:t.substring(1)}};n&&(o.context=n),T.unshift(o)}else o={keys:e,type:"keyToKey",toKeys:t},n&&(o.context=n),T.unshift(o)},unmap:function(e,t){if(":"!=e&&":"==e.charAt(0)){if(t)throw Error("Mode not supported for ex mappings");var n=e.substring(1);if(this.commandMap_[n]&&this.commandMap_[n].user)return delete this.commandMap_[n],!0}else for(var r=e,o=0;o<T.length;o++)if(r==T[o].keys&&T[o].context===t)return T.splice(o,1),!0}};var qe={colorscheme:function(e,t){!t.args||t.args.length<1?Ne(e,e.getOption("theme")):e.setOption("theme",t.args[0])},map:function(e,t,n){var r=t.args;!r||r.length<2?e&&Ne(e,"Invalid mapping: "+t.input):Je.map(r[0],r[1],n)},imap:function(e,t){this.map(e,t,"insert")},nmap:function(e,t){this.map(e,t,"normal")},vmap:function(e,t){this.map(e,t,"visual")},unmap:function(e,t,n){var r=t.args;(!r||r.length<1||!Je.unmap(r[0],n))&&e&&Ne(e,"No such mapping: "+t.input)},move:function(e,t){$.processCommand(e,e.state.vim,{type:"motion",motion:"moveToLineOrEdgeOfDocument",motionArgs:{forward:!1,explicitRepeat:!0,linewise:!0},repeatOverride:t.line+1})},set:function(e,t){var n=t.args,r=t.setCfg||{};if(!n||n.length<1)e&&Ne(e,"Invalid mapping: "+t.input);else{var o=n[0].split("="),i=o[0],a=o[1],s=!1;if("?"==i.charAt(i.length-1)){if(a)throw Error("Trailing characters: "+t.argString);i=i.substring(0,i.length-1),s=!0}void 0===a&&"no"==i.substring(0,2)&&(i=i.substring(2),a=!1);var l=w[i]&&"boolean"==w[i].type;if(l&&null==a&&(a=!0),!l&&void 0===a||s){var c=R(i,e,r);c instanceof Error?Ne(e,c.message):Ne(e,!0===c||!1===c?" "+(c?"":"no")+i:" "+i+"="+c)}else{var u=M(i,a,e,r);u instanceof Error&&Ne(e,u.message)}}},setlocal:function(e,t){t.setCfg={scope:"local"},this.set(e,t)},setglobal:function(e,t){t.setCfg={scope:"global"},this.set(e,t)},registers:function(e,t){var n=t.args,r=O.registerController.registers,o="----------Registers----------\n\n";if(n){n=n.join("");for(var i=0;i<n.length;i++)a=n.charAt(i),O.registerController.isValidRegister(a)&&(o+='"'+a+" "+(r[a]||new H).toString()+"\n")}else for(var a in r){var s=r[a].toString();s.length&&(o+='"'+a+" "+s+"\n")}Ne(e,o)},sort:function(e,t){var n,r,o,i,a,s=function(){if(t.argString){var e=new x.StringStream(t.argString);if(e.eat("!")&&(n=!0),e.eol())return;if(!e.eatSpace())return"Invalid arguments";var s=e.match(/([dinuox]+)?\s*(\/.+\/)?\s*/);if(!s&&!e.eol())return"Invalid arguments";if(s[1]){r=-1!=s[1].indexOf("i"),o=-1!=s[1].indexOf("u");var l=-1!=s[1].indexOf("d")||-1!=s[1].indexOf("n")&&1,c=-1!=s[1].indexOf("x")&&1,u=-1!=s[1].indexOf("o")&&1;if(l+c+u>1)return"Invalid arguments";i=(l?"decimal":c&&"hex")||u&&"octal"}s[2]&&(a=new RegExp(s[2].substr(1,s[2].length-2),r?"i":""))}}();if(s)Ne(e,s+": "+t.argString);else{var l=t.line||e.firstLine(),c=t.lineEnd||t.line||e.lastLine();if(l!=c){var u=new A(l,0),h=new A(c,se(e,c)),f=e.getRange(u,h).split("\n"),d=a||("decimal"==i?/(-?)([\d]+)/:"hex"==i?/(-?)(?:0x)?([0-9a-f]+)/i:"octal"==i?/([0-7]+)/:null),p="decimal"==i?10:"hex"==i?16:"octal"==i?8:null,m=[],g=[];if(i||a)for(var v=0;v<f.length;v++){var y=a?f[v].match(a):null;y&&""!=y[0]?m.push(y):!a&&d.exec(f[v])?m.push(f[v]):g.push(f[v])}else g=f;if(m.sort(a?function(e,t){var o;return n&&(o=e,e=t,t=o),r&&(e[0]=e[0].toLowerCase(),t[0]=t[0].toLowerCase()),e[0]<t[0]?-1:1}:w),a)for(v=0;v<m.length;v++)m[v]=m[v].input;else i||g.sort(w);if(f=n?m.concat(g):g.concat(m),o){var k,C=f;for(f=[],v=0;v<C.length;v++)C[v]!=k&&f.push(C[v]),k=C[v]}e.replaceRange(f.join("\n"),u,h)}}function w(e,t){var o;n&&(o=e,e=t,t=o),r&&(e=e.toLowerCase(),t=t.toLowerCase());var a=i&&d.exec(e),s=i&&d.exec(t);return a?(a=parseInt((a[1]+a[2]).toLowerCase(),p))-(s=parseInt((s[1]+s[2]).toLowerCase(),p)):e<t?-1:1}},vglobal:function(e,t){this.global(e,t)},global:function(e,t){var n=t.argString;if(n){var r,o="v"===t.commandName[0],i=void 0!==t.line?t.line:e.firstLine(),a=t.lineEnd||t.line||e.lastLine(),s=function(e){return Ie(e,"/")}(n),l=n;if(s.length&&(l=s[0],r=s.slice(1,s.length).join("/")),l)try{De(e,l,!0,!0)}catch(t){return void Ne(e,"Invalid regex: "+l)}for(var c=Ee(e).getQuery(),u=[],h=i;h<=a;h++){var f=e.getLineHandle(h);c.test(f.text)!==o&&u.push(r?f:f.text)}if(r){var d=0,p=function(){if(d<u.length){var t=u[d++],n=e.getLineNumber(t);if(null==n)return void p();var o=n+1+r;Je.processCommand(e,o,{callback:p})}};p()}else Ne(e,u.join("\n"))}else Ne(e,"Regular Expression missing from global")},substitute:function(e,t){if(!e.getSearchCursor)throw new Error("Search feature not available. Requires searchcursor.js or any other getSearchCursor implementation.");var n,r,o,a,s=t.argString,l=s?Ie(s,s[0]):[],c="",u=!1,h=!1;if(l.length)n=l[0],R("pcre")&&""!==n&&(n=new RegExp(n).source),void 0!==(c=l[1])&&(c=R("pcre")?function(e){for(var t=new x.StringStream(e),n=[];!t.eol();){for(;t.peek()&&"\\"!=t.peek();)n.push(t.next());var r=!1;for(var o in Be)if(t.match(o,!0)){r=!0,n.push(Be[o]);break}r||n.push(t.next())}return n.join("")}(c.replace(/([^\\])&/g,"$1$$&")):function(e){for(var t,n=!1,r=[],o=-1;o<e.length;o++){var a=e.charAt(o)||"",s=e.charAt(o+1)||"";Oe[a+s]?(r.push(Oe[a+s]),o++):n?(r.push(a),n=!1):"\\"===a?(n=!0,t=s,i.test(t)||"$"===s?r.push("$"):"/"!==s&&"\\"!==s&&r.push("\\")):("$"===a&&r.push("$"),r.push(a),"/"===s&&r.push("\\"))}return r.join("")}(c),O.lastSubstituteReplacePart=c),r=l[2]?l[2].split(" "):[];else if(s&&s.length)return void Ne(e,"Substitutions should be of the form :s/pattern/replace/");if(r&&(o=r[0],a=parseInt(r[1]),o&&(-1!=o.indexOf("c")&&(u=!0),-1!=o.indexOf("g")&&(h=!0),n=R("pcre")?n+"/"+o:n.replace(/\//g,"\\/")+"/"+o)),n)try{De(e,n,!0,!0)}catch(t){return void Ne(e,"Invalid regex: "+n)}if(void 0!==(c=c||O.lastSubstituteReplacePart)){var f=Ee(e).getQuery(),d=void 0!==t.line?t.line:e.getCursor().line,p=t.lineEnd||d;d==e.firstLine()&&p==e.lastLine()&&(p=1/0),a&&(p=(d=p)+a-1);var m=G(e,new A(d,0)),g=e.getSearchCursor(f,m);e.pushUndoStop(),function(e,t,n,r,o,i,a,s,l){e.state.vim.exMode=!0;var c,u,h,f=!1;function d(){e.operation((function(){for(;!f;)p(),m();g()}))}function p(){var t=e.getRange(i.from(),i.to()).replace(a,s),n=i.to().line;i.replace(t),u=i.to().line,o+=u-n,h=u<n}function m(){for(;l=void 0,d=void 0,l=c&&te(i.to()),(d=i.findNext())&&!d[0]&&l&&ne(i.from(),l)&&(d=i.findNext()),d&&(t=i.from(),a=r,s=o,"number"!=typeof t&&(t=t.line),a instanceof Array?C(t,a):"number"==typeof s?t>=a&&t<=s:t==a);)if(n||i.from().line!=u||h)return e.scrollIntoView(i.from(),30),e.setSelection(i.from(),i.to()),c=i.from(),void(f=!1);var t,a,s,l,d;f=!0}function g(t){if(t&&t(),e.focus(),c){e.setCursor(c);var n=e.state.vim;n.exMode=!1,n.lastHPos=n.lastHSPos=c.ch}l&&l()}if(m(),!f)return t?void Ke(e,{prefix:Pe("span","replace with ",Pe("strong",s)," (y/n/a/q/l)"),onKeyDown:function(t,n,r){switch(x.e_stop(t),x.keyName(t)){case"Y":p(),m();break;case"N":m();break;case"A":var o=l;l=void 0,e.operation(d),l=o;break;case"L":p();case"Q":case"Esc":case"Ctrl-C":case"Ctrl-[":g(r)}return f&&g(r),!0}}):(d(),void(l&&l()));Ne(e,"No matches for "+a.source)}(e,u,h,d,p,g,f,c,t.callback)}else Ne(e,"No previous substitute regular expression")},redo:x.commands.redo,undo:x.commands.undo,write:function(e){x.commands.save?x.commands.save(e):e.save&&e.save()},nohlsearch:function(e){We(e)},yank:function(e){var t=te(e.getCursor()).line,n=e.getLine(t);O.registerController.pushText("0","yank",n,!0,!0)},delmarks:function(e,t){if(t.argString&&le(t.argString))for(var n=e.state.vim,r=new x.StringStream(le(t.argString));!r.eol();){r.eatSpace();var o=r.pos;if(!r.match(/[a-zA-Z]/,!1))return void Ne(e,"Invalid argument: "+t.argString.substring(o));var i=r.next();if(r.match("-",!0)){if(!r.match(/[a-zA-Z]/,!1))return void Ne(e,"Invalid argument: "+t.argString.substring(o));var a=i,s=r.next();if(!(g(a)&&g(s)||v(a)&&v(s)))return void Ne(e,"Invalid argument: "+a+"-");var l=a.charCodeAt(0),c=s.charCodeAt(0);if(l>=c)return void Ne(e,"Invalid argument: "+t.argString.substring(o));for(var u=0;u<=c-l;u++){var h=String.fromCharCode(l+u);delete n.marks[h]}}else delete n.marks[i]}else Ne(e,"Argument required")}},Je=new $e;function ze(e){var t=e.state.vim,n=O.macroModeState,r=O.registerController.getRegister("."),o=n.isPlaying,i=n.lastInsertModeChanges;o||(e.off("change",Xe),x.off(e.getInputField(),"keydown",et)),!o&&t.insertModeRepeat>1&&(tt(e,t,t.insertModeRepeat-1,!0),t.lastEditInputState.repeatOverride=t.insertModeRepeat),delete t.insertModeRepeat,t.insertMode=!1,e.setCursor(e.getCursor().line,e.getCursor().ch-1),e.setOption("keyMap","vim"),e.setOption("disableInput",!0),e.toggleOverwrite(!1),r.setText(i.changes.join("")),x.signal(e,"vim-mode-change",{mode:"normal"}),n.isRecording&&function(e){if(!e.isPlaying){var t=e.latestRegister,n=O.registerController.getRegister(t);n&&n.pushInsertModeChanges&&n.pushInsertModeChanges(e.lastInsertModeChanges)}}(n),e.enterVimMode()}function Qe(e){T.unshift(e)}function Ge(e,t,n,r){var o=O.registerController.getRegister(r);if(":"==r)return o.keyBuffer[0]&&Je.processCommand(e,o.keyBuffer[0]),void(n.isPlaying=!1);var i=o.keyBuffer,a=0;n.isPlaying=!0,n.replaySearchQueries=o.searchQueries.slice(0);for(var s=0;s<i.length;s++)for(var l,c,u=i[s];u;)if(c=(l=/<\w+-.+?>|<\w+>|./.exec(u))[0],u=u.substring(l.index+c.length),V.handleKey(e,c,"macro"),t.insertMode){var h=o.insertModeChanges[a++].changes;O.macroModeState.lastInsertModeChanges.changes=h,nt(e,h,1),ze(e)}n.isPlaying=!1}function Xe(e,t){var n=O.macroModeState,r=n.lastInsertModeChanges;if(!n.isPlaying)for(;t;){if(r.expectCursorActivityForChange=!0,r.ignoreCount>1)r.ignoreCount--;else if("+input"==t.origin||"paste"==t.origin||void 0===t.origin){var o=e.listSelections().length;o>1&&(r.ignoreCount=o);var i=t.text.join("\n");r.maybeReset&&(r.changes=[],r.maybeReset=!1),i&&(e.state.overwrite&&!/\n/.test(i)?r.changes.push([i]):r.changes.push(i))}t=t.next}}function Ye(e){var t=e.state.vim;if(t.insertMode){var n=O.macroModeState;if(n.isPlaying)return;var r=n.lastInsertModeChanges;r.expectCursorActivityForChange?r.expectCursorActivityForChange=!1:r.maybeReset=!0}else e.curOp.isVimOp||function(e,t){var n=e.getCursor("anchor"),r=e.getCursor("head");if(t.visualMode&&!e.somethingSelected()?me(e,!1):t.visualMode||t.insertMode||!e.somethingSelected()||(t.visualMode=!0,t.visualLine=!1,x.signal(e,"vim-mode-change",{mode:"visual"})),t.visualMode){var o=re(r,n)?0:-1,i=re(r,n)?-1:0;r=Y(r,0,o),n=Y(n,0,i),t.sel={anchor:n,head:r},be(e,t,"<",oe(r,n)),be(e,t,">",ie(r,n))}else t.insertMode||(t.lastHPos=e.getCursor().ch)}(e,t)}function Ze(e){this.keyName=e}function et(e){var t=O.macroModeState.lastInsertModeChanges,n=x.keyName(e);n&&(-1==n.indexOf("Delete")&&-1==n.indexOf("Backspace")||x.lookupKey(n,"vim-insert",(function(){return t.maybeReset&&(t.changes=[],t.maybeReset=!1),t.changes.push(new Ze(n)),!0})))}function tt(e,t,n,r){var o=O.macroModeState;o.isPlaying=!0;var i=!!t.lastEditActionCommand,a=t.inputState;function s(){i?$.processAction(e,t,t.lastEditActionCommand):$.evalInput(e,t)}function l(n){if(o.lastInsertModeChanges.changes.length>0){n=t.lastEditActionCommand?n:1;var r=o.lastInsertModeChanges;nt(e,r.changes,n)}}if(t.inputState=t.lastEditInputState,i&&t.lastEditActionCommand.interlaceInsertRepeat)for(var c=0;c<n;c++)s(),l(1);else r||s(),l(n);t.inputState=a,t.insertMode&&!r&&ze(e),o.isPlaying=!1}function nt(e,t,n){function r(t){return"string"==typeof t?x.commands[t](e):t(e),!0}var o=e.getCursor("head"),i=O.macroModeState.lastInsertModeChanges.visualBlock;i&&(he(e,o,i+1),n=e.listSelections().length,e.setCursor(o));for(var a=0;a<n;a++){i&&e.setCursor(Y(o,a,0));for(var s=0;s<t.length;s++){var l=t[s];if(l instanceof Ze)x.lookupKey(l.keyName,"vim-insert",r);else if("string"==typeof l)window.cm=e,e.replaceSelections(l);else{var c=e.getCursor(),u=Y(c,0,l[0].length);e.replaceRange(l[0],c,u),e.setCursor(u)}}}i&&e.setCursor(Y(o,0,1))}return x.keyMap.vim={attach:t,detach:e,call:n},S("insertModeEscKeysTimeout",200,"number"),x.keyMap["vim-insert"]={fallthrough:["default"],attach:t,detach:e,call:n},x.keyMap["vim-replace"]={Backspace:"goCharLeft",fallthrough:["vim-insert"],attach:t,detach:e,call:n},j(),V}();const R=x;function O(e){return O="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},O(e)}function B(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,P(r.key),r)}}function P(e){var t=function(e){if("object"!=O(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=O(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==O(t)?t:t+""}var N=function(){return e=function e(t,n){var r=this,o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.closeInput=function(){r.removeInputListeners(),r.input=null,r.setSec(""),r.editor&&r.editor.focus()},this.clear=function(){r.setInnerHtml_(r.node,"")},this.inputKeyUp=function(e){var t=r.input.options;t&&t.onKeyUp&&t.onKeyUp(e,e.target.value,r.closeInput)},this.inputKeyInput=function(e){var t=r.input.options;t&&t.onKeyInput&&t.onKeyUp(e,e.target.value,r.closeInput)},this.inputBlur=function(){r.input.options.closeOnBlur&&r.closeInput()},this.inputKeyDown=function(e){var t=r.input,n=t.options,o=t.callback;n&&n.onKeyDown&&n.onKeyDown(e,e.target.value,r.closeInput)||((27===e.keyCode||n&&!1!==n.closeOnEnter&&13==e.keyCode)&&(r.input.node.blur(),e.stopPropagation(),r.closeInput()),13===e.keyCode&&o&&(e.stopPropagation(),e.preventDefault(),o(e.target.value)))},this.node=t,this.modeInfoNode=document.createElement("span"),this.secInfoNode=document.createElement("span"),this.notifNode=document.createElement("span"),this.notifNode.className="vim-notification",this.keyInfoNode=document.createElement("span"),this.keyInfoNode.setAttribute("style","float: right"),this.node.appendChild(this.modeInfoNode),this.node.appendChild(this.secInfoNode),this.node.appendChild(this.notifNode),this.node.appendChild(this.keyInfoNode),this.toggleVisibility(!1),this.editor=n,this.sanitizer=o},(t=[{key:"setMode",value:function(e){"visual"!==e.mode?this.setText("--".concat(e.mode.toUpperCase(),"--")):"linewise"===e.subMode?this.setText("--VISUAL LINE--"):"blockwise"===e.subMode?this.setText("--VISUAL BLOCK--"):this.setText("--VISUAL--")}},{key:"setKeyBuffer",value:function(e){this.keyInfoNode.textContent=e}},{key:"setSec",value:function(e,t,n){if(this.notifNode.textContent="",void 0===e)return this.closeInput;this.setInnerHtml_(this.secInfoNode,e);var r=this.secInfoNode.querySelector("input");return r&&(r.focus(),this.input={callback:t,options:n,node:r},n&&(n.selectValueOnOpen&&r.select(),n.value&&(r.value=n.value)),this.addInputListeners()),this.closeInput}},{key:"setText",value:function(e){this.modeInfoNode.textContent=e}},{key:"toggleVisibility",value:function(e){this.node.style.display=e?"block":"none",this.input&&this.removeInputListeners(),clearInterval(this.notifTimeout)}},{key:"addInputListeners",value:function(){var e=this.input.node;e.addEventListener("keyup",this.inputKeyUp),e.addEventListener("keydown",this.inputKeyDown),e.addEventListener("input",this.inputKeyInput),e.addEventListener("blur",this.inputBlur)}},{key:"removeInputListeners",value:function(){if(this.input&&this.input.node){var e=this.input.node;e.removeEventListener("keyup",this.inputKeyUp),e.removeEventListener("keydown",this.inputKeyDown),e.removeEventListener("input",this.inputKeyInput),e.removeEventListener("blur",this.inputBlur)}}},{key:"showNotification",value:function(e){var t=this,n=document.createElement("span");this.setInnerHtml_(n,e),this.notifNode.textContent=n.textContent,this.notifTimeout=setTimeout((function(){t.notifNode.textContent=""}),5e3)}},{key:"setInnerHtml_",value:function(e,t){for(;e.childNodes.length;)e.removeChild(e.childNodes[0]);t&&(this.sanitizer?e.appendChild(this.sanitizer(t)):e.appendChild(t))}}])&&B(e.prototype,t),Object.defineProperty(e,"prototype",{writable:!1}),e;var e,t}();function K(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:N,r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null,o=new R(e);if(!t)return o.attach(),o;var i=new n(t,e,r),a="";return o.on("vim-mode-change",(function(e){i.setMode(e)})),o.on("vim-keypress",(function(e){":"===e?a="":a+=e,i.setKeyBuffer(a)})),o.on("vim-command-done",(function(){a="",i.setKeyBuffer(a)})),o.on("dispose",(function(){i.toggleVisibility(!1),i.closeInput(),i.clear()})),i.toggleVisibility(!0),o.setStatusBar(i),o.attach(),o}return i})())); |