1 line
75 KiB
JavaScript
1 line
75 KiB
JavaScript
define("ace/snippets",["require","exports","module","ace/lib/dom","ace/lib/oop","ace/lib/event_emitter","ace/lib/lang","ace/range","ace/range_list","ace/keyboard/hash_handler","ace/tokenizer","ace/clipboard","ace/editor"],function(e,r,t){"use strict";function i(e){e=(new Date).toLocaleString("en-us",e);return 1==e.length?"0"+e:e}var o=e("./lib/dom"),n=e("./lib/oop"),s=e("./lib/event_emitter").EventEmitter,c=e("./lib/lang"),h=e("./range").Range,d=e("./range_list").RangeList,a=e("./keyboard/hash_handler").HashHandler,l=e("./tokenizer").Tokenizer,p=e("./clipboard"),u={CURRENT_WORD:function(e){return e.session.getTextRange(e.session.getWordRange())},SELECTION:function(e,t,i){e=e.session.getTextRange();return i?e.replace(/\n\r?([ \t]*\S)/g,"\n"+i+"$1"):e},CURRENT_LINE:function(e){return e.session.getLine(e.getCursorPosition().row)},PREV_LINE:function(e){return e.session.getLine(e.getCursorPosition().row-1)},LINE_INDEX:function(e){return e.getCursorPosition().row},LINE_NUMBER:function(e){return e.getCursorPosition().row+1},SOFT_TABS:function(e){return e.session.getUseSoftTabs()?"YES":"NO"},TAB_SIZE:function(e){return e.session.getTabSize()},CLIPBOARD:function(e){return p.getText&&p.getText()},FILENAME:function(e){return/[^/\\]*$/.exec(this.FILEPATH(e))[0]},FILENAME_BASE:function(e){return/[^/\\]*$/.exec(this.FILEPATH(e))[0].replace(/\.[^.]*$/,"")},DIRECTORY:function(e){return this.FILEPATH(e).replace(/[^/\\]*$/,"")},FILEPATH:function(e){return"/not implemented.txt"},WORKSPACE_NAME:function(){return"Unknown"},FULLNAME:function(){return"Unknown"},BLOCK_COMMENT_START:function(e){e=e.session.$mode||{};return e.blockComment&&e.blockComment.start||""},BLOCK_COMMENT_END:function(e){e=e.session.$mode||{};return e.blockComment&&e.blockComment.end||""},LINE_COMMENT:function(e){return(e.session.$mode||{}).lineCommentStart||""},CURRENT_YEAR:i.bind(null,{year:"numeric"}),CURRENT_YEAR_SHORT:i.bind(null,{year:"2-digit"}),CURRENT_MONTH:i.bind(null,{month:"numeric"}),CURRENT_MONTH_NAME:i.bind(null,{month:"long"}),CURRENT_MONTH_NAME_SHORT:i.bind(null,{month:"short"}),CURRENT_DATE:i.bind(null,{day:"2-digit"}),CURRENT_DAY_NAME:i.bind(null,{weekday:"long"}),CURRENT_DAY_NAME_SHORT:i.bind(null,{weekday:"short"}),CURRENT_HOUR:i.bind(null,{hour:"2-digit",hour12:!1}),CURRENT_MINUTE:i.bind(null,{minute:"2-digit"}),CURRENT_SECOND:i.bind(null,{second:"2-digit"})},m=(u.SELECTED_TEXT=u.SELECTION,g.prototype.getTokenizer=function(){return g.$tokenizer||this.createTokenizer()},g.prototype.createTokenizer=function(){function o(e){return e=e.substr(1),/^\d+$/.test(e)?[{tabstopId:parseInt(e,10)}]:[{text:e}]}function e(e){return"(?:[^\\\\"+e+"]|\\\\.)"}var t={regex:"/("+e("/")+"+)/",onMatch:function(e,t,i){i=i[0];return i.fmtString=!0,i.guard=e.slice(1,-1),i.flag=""},next:"formatString"};return g.$tokenizer=new l({start:[{regex:/\\./,onMatch:function(e,t,i){var o=e[1];return[e="}"==o&&i.length||-1!="`$\\".indexOf(o)?o:e]}},{regex:/}/,onMatch:function(e,t,i){return[i.length?i.shift():e]}},{regex:/\$(?:\d+|\w+)/,onMatch:o},{regex:/\$\{[\dA-Z_a-z]+/,onMatch:function(e,t,i){e=o(e.substr(1));return i.unshift(e[0]),e},next:"snippetVar"},{regex:/\n/,token:"newline",merge:!1}],snippetVar:[{regex:"\\|"+e("\\|")+"*\\|",onMatch:function(e,t,i){e=e.slice(1,-1).replace(/\\[,|\\]|,/g,function(e){return 2==e.length?e[1]:"\0"}).split("\0").map(function(e){return{value:e}});return[(i[0].choices=e)[0]]},next:"start"},t,{regex:"([^:}\\\\]|\\\\.)*:?",token:"",next:"start"}],formatString:[{regex:/:/,onMatch:function(e,t,i){return i.length&&i[0].expectElse?(i[0].expectElse=!1,i[0].ifEnd={elseEnd:i[0]},[i[0].ifEnd]):":"}},{regex:/\\./,onMatch:function(e,t,i){var o=e[1];return"}"==o&&i.length||-1!="`$\\".indexOf(o)?e=o:"n"==o?e="\n":"t"==o?e="\t":-1!="ulULE".indexOf(o)&&(e={changeCase:o,local:"a"<o}),[e]}},{regex:"/\\w*}",onMatch:function(e,t,i){i=i.shift();return i&&(i.flag=e.slice(1,-1)),this.next=i&&i.tabstopId?"start":"",[i||e]},next:"start"},{regex:/\$(?:\d+|\w+)/,onMatch:function(e,t,i){return[{text:e.slice(1)}]}},{regex:/\${\w+/,onMatch:function(e,t,i){e={text:e.slice(2)};return i.unshift(e),[e]},next:"formatStringVar"},{regex:/\n/,token:"newline",merge:!1},{regex:/}/,onMatch:function(e,t,i){i=i.shift();return this.next=i&&i.tabstopId?"start":"",[i||e]},next:"start"}],formatStringVar:[{regex:/:\/\w+}/,onMatch:function(e,t,i){return i[0].formatFunction=e.slice(2,-1),[i.shift()]},next:"formatString"},t,{regex:/:[\?\-+]?/,onMatch:function(e,t,i){"+"==e[1]&&(i[0].ifEnd=i[0]),"?"==e[1]&&(i[0].expectElse=!0)},next:"formatString"},{regex:"([^:}\\\\]|\\\\.)*:?",token:"",next:"formatString"}]})},g.prototype.tokenizeTmSnippet=function(e,t){return this.getTokenizer().getLineTokens(e,t).tokens.map(function(e){return e.value||e})},g.prototype.getVariableValue=function(e,t,i){if(/^\d+$/.test(t))return(this.variables.__||{})[t]||"";if(/^[A-Z]\d+$/.test(t))return(this.variables[t[0]+"__"]||{})[t.substr(1)]||"";if(t=t.replace(/^TM_/,""),!this.variables.hasOwnProperty(t))return"";var o=this.variables[t];return null==(o="function"==typeof o?this.variables[t](e,t,i):o)?"":o},g.prototype.tmStrFormat=function(e,t,r){if(!t.fmt)return e;var i=t.flag||"",o=t.guard,o=new RegExp(o,i.replace(/[^gim]/g,"")),a="string"==typeof t.fmt?this.tokenizeTmSnippet(t.fmt,"formatString"):t.fmt,l=this;return e.replace(o,function(){for(var e=l.variables.__,t=(l.variables.__=[].slice.call(arguments),l.resolveVariables(a,r)),i="E",o=0;o<t.length;o++){var n,s=t[o];"object"==typeof s?(t[o]="",s.changeCase&&s.local?(n=t[o+1])&&"string"==typeof n&&("u"==s.changeCase?t[o]=n[0].toUpperCase():t[o]=n[0].toLowerCase(),t[o+1]=n.substr(1)):s.changeCase&&(i=s.changeCase)):"U"==i?t[o]=s.toUpperCase():"L"==i&&(t[o]=s.toLowerCase())}return l.variables.__=e,t.join("")})},g.prototype.tmFormatFunction=function(e,t,i){return"upcase"==t.formatFunction?e.toUpperCase():"downcase"==t.formatFunction?e.toLowerCase():e},g.prototype.resolveVariables=function(t,e){function i(e){e=t.indexOf(e,r+1);-1!=e&&(r=e)}for(var o=[],n="",s=!0,r=0;r<t.length;r++){var a,l=t[r];"string"==typeof l?(o.push(l),"\n"==l?(s=!0,n=""):s&&(n=/^\t*/.exec(l)[0],s=/\S/.test(l))):l&&(s=!1,l.fmtString&&(-1==(a=t.indexOf(l,r+1))&&(a=t.length),l.fmt=t.slice(r+1,a),r=a),l.text?(a=this.getVariableValue(e,l.text,n)+"",l.fmtString&&(a=this.tmStrFormat(a,l,e)),(a=l.formatFunction?this.tmFormatFunction(a,l,e):a)&&!l.ifEnd?(o.push(a),i(l)):!a&&l.ifEnd&&i(l.ifEnd)):l.elseEnd?i(l.elseEnd):null==l.tabstopId&&null==l.changeCase||o.push(l))}return o},g.prototype.getDisplayTextForSnippet=function(e,t){return f.call(this,e,t).text},g.prototype.insertSnippetForSelection=function(e,t,i){var t=f.call(this,e,t,i=void 0===i?{}:i),i=e.getSelectionRange(),o=e.session.replace(i,t.text),n=new b(e),e=e.inVirtualSelectionMode&&e.selection.index;n.addTabstops(t.tabstops,i.start,o,e)},g.prototype.insertSnippet=function(e,t,i){void 0===i&&(i={});var o=this;if(e.inVirtualSelectionMode)return o.insertSnippetForSelection(e,t,i);e.forEachSelection(function(){o.insertSnippetForSelection(e,t,i)},null,{keepOrder:!0}),e.tabstopManager&&e.tabstopManager.tabNext()},g.prototype.$getScope=function(e){var t,i=e.session.$mode.$id||"";return"html"!==(i=i.split("/").pop())&&"php"!==i||("php"!==i||e.session.$mode.inlinePhp||(i="html"),t=e.getCursorPosition(),(e="object"==typeof(e=e.session.getState(t.row))?e[0]:e).substring&&("js-"==e.substring(0,3)?i="javascript":"css-"==e.substring(0,4)?i="css":"php-"==e.substring(0,4)&&(i="php"))),i},g.prototype.getActiveScopes=function(e){var e=this.$getScope(e),t=[e],i=this.snippetMap;return i[e]&&i[e].includeScopes&&t.push.apply(t,i[e].includeScopes),t.push("_"),t},g.prototype.expandWithTab=function(e,t){var i=this,o=e.forEachSelection(function(){return i.expandSnippetForSelection(e,t)},null,{keepOrder:!0});return o&&e.tabstopManager&&e.tabstopManager.tabNext(),o},g.prototype.expandSnippetForSelection=function(e,t){var i,o=e.getCursorPosition(),n=e.session.getLine(o.row),s=n.substring(0,o.column),r=n.substr(o.column),a=this.snippetMap;return this.getActiveScopes(e).some(function(e){e=a[e];return!!(i=e?this.findMatchingSnippet(e,s,r):i)},this),!!i&&(t&&t.dryRun||(e.session.doc.removeInLine(o.row,o.column-i.replaceBefore.length,o.column+i.replaceAfter.length),this.variables.M__=i.matchBefore,this.variables.T__=i.matchAfter,this.insertSnippetForSelection(e,i.content),this.variables.M__=this.variables.T__=null),!0)},g.prototype.findMatchingSnippet=function(e,t,i){for(var o=e.length;o--;){var n=e[o];if((!n.startRe||n.startRe.test(t))&&((!n.endRe||n.endRe.test(i))&&(n.startRe||n.endRe)))return n.matchBefore=n.startRe?n.startRe.exec(t):[""],n.matchAfter=n.endRe?n.endRe.exec(i):[""],n.replaceBefore=n.triggerRe?n.triggerRe.exec(t)[0]:"",n.replaceAfter=n.endTriggerRe?n.endTriggerRe.exec(i)[0]:"",n}},g.prototype.register=function(t,o){function n(e){return(e=e&&!/^\^?\(.*\)\$?$|^\\b$/.test(e)?"(?:"+e+")":e)||""}function s(e,t,i){return e=n(e),t=n(t),i?(e=t+e)&&"$"!=e[e.length-1]&&(e+="$"):(e+=t)&&"^"!=e[0]&&(e="^"+e),new RegExp(e)}function i(e){e.scope||(e.scope=o||"_"),o=e.scope,r[o]||(r[o]=[],a[o]={});var t,i=a[o];e.name&&((t=i[e.name])&&l.unregister(t),i[e.name]=e),r[o].push(e),e.prefix&&(e.tabTrigger=e.prefix),!e.content&&e.body&&(e.content=Array.isArray(e.body)?e.body.join("\n"):e.body),e.tabTrigger&&!e.trigger&&(!e.guard&&/^\w/.test(e.tabTrigger)&&(e.guard="\\b"),e.trigger=c.escapeRegExp(e.tabTrigger)),(e.trigger||e.guard||e.endTrigger||e.endGuard)&&(e.startRe=s(e.trigger,e.guard,!0),e.triggerRe=new RegExp(e.trigger),e.endRe=s(e.endTrigger,e.endGuard,!0),e.endTriggerRe=new RegExp(e.endTrigger))}var r=this.snippetMap,a=this.snippetNameMap,l=this;t=t||[],Array.isArray(t)?t.forEach(i):Object.keys(t).forEach(function(e){i(t[e])}),this._signal("registerSnippets",{scope:o})},g.prototype.unregister=function(e,i){function t(e){var t=n[e.scope||i];t&&t[e.name]&&(delete t[e.name],0<=(e=(t=o[e.scope||i])&&t.indexOf(e))&&t.splice(e,1))}var o=this.snippetMap,n=this.snippetNameMap;e.content?t(e):Array.isArray(e)&&e.forEach(t)},g.prototype.parseSnippetFile=function(e){e=e.replace(/\r/g,"");for(var t,i,o,n=[],s={},r=/^#.*|^({[\s\S]*})\s*$|^(\S+) (.*)$|^((?:\n*\t.*)+)/gm;i=r.exec(e);){if(i[1])try{s=JSON.parse(i[1]),n.push(s)}catch(e){}i[4]?(s.content=i[4].replace(/^\t/gm,""),n.push(s),s={}):(t=i[2],i=i[3],"regex"==t?(s.guard=(o=/\/((?:[^\/\\]|\\.)*)|$/g).exec(i)[1],s.trigger=o.exec(i)[1],s.endTrigger=o.exec(i)[1],s.endGuard=o.exec(i)[1]):"snippet"==t?(s.tabTrigger=i.match(/^\S*/)[0],s.name||(s.name=i)):t&&(s[t]=i))}return n},g.prototype.getSnippetByName=function(t,e){var i,o=this.snippetNameMap;return this.getActiveScopes(e).some(function(e){e=o[e];return!!(i=e?e[t]:i)},this),i},g);function g(){this.snippetMap={},this.snippetNameMap={},this.variables=u}n.implement(m.prototype,s);var f=function(e,t,i){void 0===i&&(i={});var o=e.getCursorPosition(),n=e.session.getLine(o.row),s=e.session.getTabString(),r=n.match(/^\s*/)[0],a=(o.column<r.length&&(r=r.slice(0,o.column)),t=t.replace(/\r/g,""),this.tokenizeTmSnippet(t));a=(a=this.resolveVariables(a,e)).map(function(e){return"\n"!=e||i.excludeExtraIndent?"string"==typeof e?e.replace(/\t/g,s):e:e+r});for(var l=[],c=(a.forEach(function(e,t){var i,o;"object"==typeof e&&(o=e.tabstopId,(i=l[o])||((i=l[o]=[]).index=o,i.value="",i.parents={}),-1===i.indexOf(e)&&(e.choices&&!i.choices&&(i.choices=e.choices),i.push(e),-1!==(o=a.indexOf(e,t+1))&&((e=a.slice(t+1,o)).some(function(e){return"object"==typeof e})&&!i.value?i.value=e:!e.length||i.value&&"string"==typeof i.value||(i.value=e.join("")))))}),l.forEach(function(e){e.length=0}),{}),p=0;p<a.length;p++){var h,d,u,m=a[p];"object"==typeof m&&(u=m.tabstopId,h=l[u],d=a.indexOf(m,p+1),c[u]?c[u]===m&&(delete c[u],Object.keys(c).forEach(function(e){h.parents[e]=!0})):(c[u]=m,"string"!=typeof(u=h.value)?u=function(e){for(var t=[],i=0;i<e.length;i++){if("object"==typeof(o=e[i])){if(c[o.tabstopId])continue;var o=t[e.lastIndexOf(o,i-1)]||{tabstopId:o.tabstopId}}t[i]=o}return t}(u):m.fmt&&(u=this.tmStrFormat(u,m,e)),a.splice.apply(a,[p+1,Math.max(0,d-p)].concat(u,m)),-1===h.indexOf(m)&&h.push(m)))}var g=0,f=0,b="";return a.forEach(function(e){var t;"string"==typeof e?(1<(t=e.split("\n")).length?(f=t[t.length-1].length,g+=t.length-1):f+=e.length,b+=e):e&&(e.start?e.end={row:g,column:f}:e.start={row:g,column:f})}),{text:b,tabstops:l,tokens:a}},b=(v.prototype.attach=function(e){this.$openTabstops=null,this.selectedTabstop=null,this.editor=e,this.session=e.session,this.editor.on("change",this.$onChange),this.editor.on("changeSelection",this.$onChangeSelection),this.editor.on("changeSession",this.$onChangeSession),this.editor.commands.on("afterExec",this.$onAfterExec),this.editor.keyBinding.addKeyboardHandler(this.keyboardHandler)},v.prototype.detach=function(){this.tabstops.forEach(this.removeTabstopMarkers,this),this.ranges.length=0,this.tabstops.length=0,this.selectedTabstop=null,this.editor.off("change",this.$onChange),this.editor.off("changeSelection",this.$onChangeSelection),this.editor.off("changeSession",this.$onChangeSession),this.editor.commands.off("afterExec",this.$onAfterExec),this.editor.keyBinding.removeKeyboardHandler(this.keyboardHandler),this.editor.tabstopManager=null,this.session=null,this.editor=null},v.prototype.onChange=function(e){for(var t="r"==e.action[0],i=this.selectedTabstop||{},o=i.parents||{},n=this.tabstops.slice(),s=0;s<n.length;s++){var r=n[s],a=r==i||o[r.index];if(r.rangeList.$bias=a?0:1,"remove"==e.action&&r!==i)for(var a=r.parents&&r.parents[i.index],l=(l=r.rangeList.pointIndex(e.start,a))<0?-l-1:l+1,a=(a=r.rangeList.pointIndex(e.end,a))<0?-a-1:a-1,c=r.rangeList.ranges.slice(l,a),p=0;p<c.length;p++)this.removeRange(c[p]);r.rangeList.$onChange(e)}var h=this.session;this.$inChange||!t||1!=h.getLength()||h.getValue()||this.detach()},v.prototype.updateLinkedFields=function(){var e=this.selectedTabstop;if(e&&e.hasLinkedRanges&&e.firstNonLinked){this.$inChange=!0;for(var t=this.session,i=t.getTextRange(e.firstNonLinked),o=0;o<e.length;o++){var n,s=e[o];s.linked&&(n=s.original,n=r.snippetManager.tmStrFormat(i,n,this.editor),t.replace(s,n))}this.$inChange=!1}},v.prototype.onAfterExec=function(e){e.command&&!e.command.readOnly&&this.updateLinkedFields()},v.prototype.onChangeSelection=function(){if(this.editor){for(var e=this.editor.selection.lead,t=this.editor.selection.anchor,i=this.editor.selection.isEmpty(),o=0;o<this.ranges.length;o++)if(!this.ranges[o].linked){var n=this.ranges[o].contains(e.row,e.column),s=i||this.ranges[o].contains(t.row,t.column);if(n&&s)return}this.detach()}},v.prototype.onChangeSession=function(){this.detach()},v.prototype.tabNext=function(e){var t=this.tabstops.length,e=this.index+(e||1),e=Math.min(Math.max(e,1),t);this.selectTabstop(e=e==t?0:e),this.updateTabstopMarkers(),0===e&&this.detach()},v.prototype.selectTabstop=function(e){this.$openTabstops=null;var t=this.tabstops[this.index];if(t&&this.addTabstopMarkers(t),this.index=e,(t=this.tabstops[this.index])&&t.length){e=(this.selectedTabstop=t).firstNonLinked||t;if(t.choices&&(e.cursor=e.start),this.editor.inVirtualSelectionMode)this.editor.selection.fromOrientedRange(e);else{var i=this.editor.multiSelect;i.toSingleRange(e);for(var o=0;o<t.length;o++)t.hasLinkedRanges&&t[o].linked||i.addRange(t[o].clone(),!0)}this.editor.keyBinding.addKeyboardHandler(this.keyboardHandler),this.selectedTabstop&&this.selectedTabstop.choices&&this.editor.execCommand("startAutocomplete",{matches:this.selectedTabstop.choices})}},v.prototype.addTabstops=function(e,r,t){var a=this.useLink||!this.editor.getOption("enableMultiselect");this.$openTabstops||(this.$openTabstops=[]),e[0]||(t=h.fromPoints(t,t),x(t.start,r),x(t.end,r),e[0]=[t],e[0].index=0);var l=[this.index+1,0],c=this.ranges,p=this.snippetId=(this.snippetId||0)+1;e.forEach(function(e,t){var i=this.$openTabstops[t]||e;i.snippetId=p;for(var o=0;o<e.length;o++){var n=e[o],s=h.fromPoints(n.start,n.end||n.start);y(s.start,r),y(s.end,r),s.original=n,s.tabstop=i,c.push(s),i!=e?i.unshift(s):i[o]=s,n.fmtString||i.firstNonLinked&&a?(s.linked=!0,i.hasLinkedRanges=!0):i.firstNonLinked||(i.firstNonLinked=s)}i.firstNonLinked||(i.hasLinkedRanges=!1),i===e&&(l.push(i),this.$openTabstops[t]=i),this.addTabstopMarkers(i),i.rangeList=i.rangeList||new d,i.rangeList.$bias=0,i.rangeList.addList(i)},this),2<l.length&&(this.tabstops.length&&l.push(l.splice(2,1)[0]),this.tabstops.splice.apply(this.tabstops,l))},v.prototype.addTabstopMarkers=function(e){var t=this.session;e.forEach(function(e){e.markerId||(e.markerId=t.addMarker(e,"ace_snippet-marker","text"))})},v.prototype.removeTabstopMarkers=function(e){var t=this.session;e.forEach(function(e){t.removeMarker(e.markerId),e.markerId=null})},v.prototype.updateTabstopMarkers=function(){var t;this.selectedTabstop&&(t=this.selectedTabstop.snippetId,0===this.selectedTabstop.index&&t--,this.tabstops.forEach(function(e){e.snippetId===t?this.addTabstopMarkers(e):this.removeTabstopMarkers(e)},this))},v.prototype.removeRange=function(e){var t=e.tabstop.indexOf(e);-1!=t&&e.tabstop.splice(t,1),-1!=(t=this.ranges.indexOf(e))&&this.ranges.splice(t,1),-1!=(t=e.tabstop.rangeList.ranges.indexOf(e))&&e.tabstop.splice(t,1),this.session.removeMarker(e.markerId),e.tabstop.length||(-1!=(t=this.tabstops.indexOf(e.tabstop))&&this.tabstops.splice(t,1),this.tabstops.length||this.detach())},v);function v(e){if(this.index=0,this.ranges=[],this.tabstops=[],e.tabstopManager)return e.tabstopManager;(e.tabstopManager=this).$onChange=this.onChange.bind(this),this.$onChangeSelection=c.delayedCall(this.onChangeSelection.bind(this)).schedule,this.$onChangeSession=this.onChangeSession.bind(this),this.$onAfterExec=this.onAfterExec.bind(this),this.attach(e)}b.prototype.keyboardHandler=new a,b.prototype.keyboardHandler.bindKeys({Tab:function(e){r.snippetManager&&r.snippetManager.expandWithTab(e)||(e.tabstopManager.tabNext(1),e.renderer.scrollCursorIntoView())},"Shift-Tab":function(e){e.tabstopManager.tabNext(-1),e.renderer.scrollCursorIntoView()},Esc:function(e){e.tabstopManager.detach()}});var y=function(e,t){0==e.row&&(e.column+=t.column),e.row+=t.row},x=function(e,t){e.row==t.row&&(e.column-=t.column),e.row-=t.row},n=(o.importCssString("\n.ace_snippet-marker {\n -moz-box-sizing: border-box;\n box-sizing: border-box;\n background: rgba(194, 193, 208, 0.09);\n border: 1px dotted rgba(211, 208, 235, 0.62);\n position: absolute;\n}","snippets.css",!1),r.snippetManager=new m,e("./editor").Editor);!function(){this.insertSnippet=function(e,t){return r.snippetManager.insertSnippet(this,e,t)},this.expandSnippet=function(e){return r.snippetManager.expandWithTab(this,e)}}.call(n.prototype)}),define("ace/autocomplete/inline_screenreader",["require","exports","module"],function(e,t,i){"use strict";function o(e){this.editor=e,this.screenReaderDiv=document.createElement("div"),this.screenReaderDiv.classList.add("ace_screenreader-only"),this.editor.container.appendChild(this.screenReaderDiv)}o.prototype.setScreenReaderContent=function(e){for(!this.popup&&this.editor.completer&&this.editor.completer.popup&&(this.popup=this.editor.completer.popup,this.popup.renderer.on("afterRender",function(){var e=this.popup.getRow(),t=this.popup.renderer.$textLayer,e=t.element.childNodes[e-t.config.firstRow];if(e){for(var i="doc-tooltip ",o=0;o<this._lines.length;o++)i+="ace-inline-screenreader-line-".concat(o," ");e.setAttribute("aria-describedby",i)}}.bind(this)));this.screenReaderDiv.firstChild;)this.screenReaderDiv.removeChild(this.screenReaderDiv.firstChild);this._lines=e.split(/\r\n|\r|\n/);e=this.createCodeBlock();this.screenReaderDiv.appendChild(e)},o.prototype.destroy=function(){this.screenReaderDiv.remove()},o.prototype.createCodeBlock=function(){var e=document.createElement("pre");e.setAttribute("id","ace-inline-screenreader");for(var t=0;t<this._lines.length;t++){var i=document.createElement("code"),o=(i.setAttribute("id","ace-inline-screenreader-line-".concat(t)),document.createTextNode(this._lines[t]));i.appendChild(o),e.appendChild(i)}return e},t.AceInlineScreenReader=o}),define("ace/autocomplete/inline",["require","exports","module","ace/snippets","ace/autocomplete/inline_screenreader"],function(e,t,i){"use strict";var n=e("../snippets").snippetManager,s=e("./inline_screenreader").AceInlineScreenReader;function o(){this.editor=null}o.prototype.show=function(e,t,i){if(i=i||"",e&&this.editor&&this.editor!==e&&(this.hide(),this.editor=null,this.inlineScreenReader=null),!e||!t)return!1;this.inlineScreenReader||(this.inlineScreenReader=new s(e));var o=t.snippet?n.getDisplayTextForSnippet(e,t.snippet):t.value;return!(t.hideInlinePreview||!o||!o.startsWith(i))&&(this.editor=e,this.inlineScreenReader.setScreenReaderContent(o),""===(o=o.slice(i.length))?e.removeGhostText():e.setGhostText(o),!0)},o.prototype.isOpen=function(){return!!this.editor&&!!this.editor.renderer.$ghostText},o.prototype.hide=function(){return!!this.editor&&(this.editor.removeGhostText(),!0)},o.prototype.destroy=function(){this.hide(),this.editor=null,this.inlineScreenReader&&(this.inlineScreenReader.destroy(),this.inlineScreenReader=null)},t.AceInline=o}),define("ace/autocomplete/popup",["require","exports","module","ace/virtual_renderer","ace/editor","ace/range","ace/lib/event","ace/lib/lang","ace/lib/dom","ace/config","ace/lib/useragent"],function(e,t,i){"use strict";function a(e){return"suggest-aria-id:".concat(e)}function l(e){return(e=new n(e)).$maxLines=4,(e=new s(e)).setHighlightActiveLine(!1),e.setShowPrintMargin(!1),e.renderer.setShowGutter(!1),e.renderer.setHighlightGutterLine(!1),e.$mouseHandler.$focusTimeout=0,e.$highlightTagPending=!0,e}function o(e){function t(){}var i=d.createElement("div"),u=l(i);function o(){r(-1)}e&&e.appendChild(i),i.style.display="none",u.renderer.content.style.cursor="default",u.renderer.setStyle("ace_autocomplete"),u.renderer.$textLayer.element.setAttribute("role",f),u.renderer.$textLayer.element.setAttribute("aria-roledescription",g("autocomplete.popup.aria-roledescription","Autocomplete suggestions")),u.renderer.$textLayer.element.setAttribute("aria-label",g("autocomplete.popup.aria-label","Autocomplete suggestions")),u.renderer.textarea.setAttribute("aria-hidden","true"),u.setOption("displayIndentGuides",!1),u.setOption("dragDelay",150),u.focus=t,u.$isFocused=!0,u.renderer.$cursorLayer.restartTimer=t,u.renderer.$cursorLayer.element.style.opacity="0",u.renderer.$maxLines=8,u.renderer.$keepTextAreaAtCursor=!1,u.setHighlightActiveLine(!1),u.session.highlight(""),u.session.$searchHighlight.clazz="ace_highlight-marker",u.on("mousedown",function(e){var t=e.getDocumentPosition();u.selection.moveToPosition(t),s.start.row=s.end.row=t.row,e.stop()});var m,n=new c(-1,0,-1,1/0),s=new c(-1,0,-1,1/0),r=(s.id=u.session.addMarker(s,"ace_active-line","fullLine"),u.setSelectOnHover=function(e){e?n.id&&(u.session.removeMarker(n.id),n.id=null):n.id=u.session.addMarker(n,"ace_line-hover","fullLine")},u.setSelectOnHover(!1),u.on("mousemove",function(e){var t;m?m.x==e.x&&m.y==e.y||((m=e).scrollTop=u.renderer.scrollTop,u.isMouseOver=!0,t=m.getDocumentPosition().row,n.start.row!=t&&(n.id||u.setRow(t),r(t))):m=e}),u.renderer.on("beforeRender",function(){var e;m&&-1!=n.start.row&&(m.$pos=null,e=m.getDocumentPosition().row,n.id||u.setRow(e),r(e,!0))}),u.renderer.on("afterRender",function(){for(var e=u.renderer.$textLayer,t=e.config.firstRow,i=e.config.lastRow;t<=i;t++){var o=e.element.childNodes[t-e.config.firstRow],n=(o.setAttribute("role",b),o.setAttribute("aria-roledescription",g("autocomplete.popup.item.aria-roledescription","item")),o.setAttribute("aria-setsize",u.data.length),o.setAttribute("aria-describedby","doc-tooltip"),o.setAttribute("aria-posinset",t+1),u.getData(t));n&&(n="".concat(n.caption||n.value).concat(n.meta?", ".concat(n.meta):""),o.setAttribute("aria-label",n)),o.querySelectorAll(".ace_completion-highlight").forEach(function(e){e.setAttribute("role","mark")})}}),u.renderer.on("afterRender",function(){var e=u.getRow(),t=u.renderer.$textLayer,i=t.element.childNodes[e-t.config.firstRow],o=document.activeElement;i!==u.selectedNode&&u.selectedNode&&(d.removeCssClass(u.selectedNode,"ace_selected"),u.selectedNode.removeAttribute(v),u.selectedNode.removeAttribute("id")),o.removeAttribute("aria-activedescendant"),(u.selectedNode=i)&&(e=a(e),d.addCssClass(i,"ace_selected"),i.id=e,t.element.setAttribute("aria-activedescendant",e),o.setAttribute("aria-activedescendant",e),i.setAttribute(v,"true"))}),function(e,t){e!==n.start.row&&(n.start.row=n.end.row=e,t||u.session._emit("changeBackMarker"),u._emit("changeHoverMarker"))});return u.getHoveredRow=function(){return n.start.row},p.addListener(u.container,"mouseout",function(){u.isMouseOver=!1,o()}),u.on("hide",o),u.on("changeSelection",o),u.session.doc.getLength=function(){return u.data.length},u.session.doc.getLine=function(e){e=u.data[e];return"string"==typeof e?e:e&&e.value||""},(e=u.session.bgTokenizer).$tokenizeRow=function(e){function t(e,t){e&&o.push({type:(i.className||"")+(t||""),value:e})}var i=u.data[e],o=[];if(!i)return o;for(var n=(i="string"==typeof i?{value:i}:i).caption||i.value||i.name,s=n.toLowerCase(),r=(u.filterText||"").toLowerCase(),a=0,l=0,c=0;c<=r.length;c++)if(c!=l&&(i.matchMask&1<<c||c==r.length)){var p=r.slice(l,c),l=c,h=s.indexOf(p,a);if(-1==h)continue;t(n.slice(a,h),""),a=h+p.length,t(n.slice(h,a),"completion-highlight")}return t(n.slice(a,n.length),""),o.push({type:"completion-spacer",value:" "}),i.meta&&o.push({type:"completion-meta",value:i.meta}),i.message&&o.push({type:"completion-message",value:i.message}),o},e.$updateOnChange=t,e.start=t,u.session.$computeWidth=function(){return this.screenWidth=0},u.isOpen=!1,u.isTopdown=!1,u.autoSelect=!0,u.filterText="",u.isMouseOver=!1,u.data=[],u.setData=function(e,t){u.filterText=t||"",u.setValue(h.stringRepeat("\n",e.length),-1),u.data=e||[],u.setRow(0)},u.getData=function(e){return u.data[e]},u.getRow=function(){return s.start.row},u.setRow=function(e){e=Math.max(this.autoSelect?0:-1,Math.min(this.data.length-1,e)),s.start.row!=e&&(u.selection.clearSelection(),s.start.row=s.end.row=e||0,u.session._emit("changeBackMarker"),u.moveCursorTo(e||0,0),u.isOpen&&u._signal("select"))},u.on("changeSelection",function(){u.isOpen&&u.setRow(u.selection.lead.row),u.renderer.scrollCursorIntoView()}),u.hide=function(){this.container.style.display="none",u.anchorPos=null,u.anchor=null,u.isOpen&&(u.isOpen=!1,this._signal("hide"))},u.tryShow=function(e,t,i,o){if(!o&&u.isOpen&&u.anchorPos&&u.anchor&&u.anchorPos.top===e.top&&u.anchorPos.left===e.left&&u.anchor===i)return!0;var n=this.container,s=this.renderer.scrollBar.width||10,r=window.innerHeight-s,a=window.innerWidth-s,l=this.renderer,c=l.$maxLines*t*1.4,p={top:0,bottom:0,left:0},h=r-e.top-3*this.$borderSize-t,d=e.top-3*this.$borderSize,t=("top"===(i=i||(d<=h||c<=h?"bottom":"top"))?(p.bottom=e.top-this.$borderSize,p.top=p.bottom-c):"bottom"===i&&(p.top=e.top+t+this.$borderSize,p.bottom=p.top+c),0<=p.top&&p.bottom<=r);if(!o&&!t)return!1;l.$maxPixelHeight=t?null:"top"===i?d:h,n.style.display="";c=n.offsetParent&&n.offsetParent.getBoundingClientRect(),"top"===i?(n.style.top="",n.style.bottom=r+s-p.bottom-(c?r+s-c.bottom:0)+"px",u.isTopdown=!1):(n.style.top=p.top-(c?c.top:0)+"px",n.style.bottom="",u.isTopdown=!0),o=e.left;return o+n.offsetWidth>a&&(o=a-n.offsetWidth),n.style.left=o-(c?c.left:0)+"px",n.style.right="",u.isOpen||(u.isOpen=!0,this._signal("show"),m=null),u.anchorPos=e,u.anchor=i,!0},u.show=function(e,t,i){this.tryShow(e,t,i?"bottom":void 0,!0)},u.goTo=function(e){var t=this.getRow(),i=this.session.getLength()-1;switch(e){case"up":t=t<=0?i:t-1;break;case"down":t=i<=t?-1:t+1;break;case"start":t=0;break;case"end":t=i}this.setRow(t)},u.getTextLeftOffset=function(){return this.$borderSize+this.renderer.$padding+this.$imageSize},u.$imageSize=0,u.$borderSize=1,u}var n=e("../virtual_renderer").VirtualRenderer,s=e("../editor").Editor,c=e("../range").Range,p=e("../lib/event"),h=e("../lib/lang"),d=e("../lib/dom"),g=e("../config").nls,e=e("./../lib/useragent"),f=e.isSafari?"menu":"listbox",b=e.isSafari?"menuitem":"option",v=e.isSafari?"aria-current":"aria-selected";d.importCssString('\n.ace_editor.ace_autocomplete .ace_marker-layer .ace_active-line {\n background-color: #CAD6FA;\n z-index: 1;\n}\n.ace_dark.ace_editor.ace_autocomplete .ace_marker-layer .ace_active-line {\n background-color: #3a674e;\n}\n.ace_editor.ace_autocomplete .ace_line-hover {\n border: 1px solid #abbffe;\n margin-top: -1px;\n background: rgba(233,233,253,0.4);\n position: absolute;\n z-index: 2;\n}\n.ace_dark.ace_editor.ace_autocomplete .ace_line-hover {\n border: 1px solid rgba(109, 150, 13, 0.8);\n background: rgba(58, 103, 78, 0.62);\n}\n.ace_completion-meta {\n opacity: 0.5;\n margin-left: 0.9em;\n}\n.ace_completion-message {\n margin-left: 0.9em;\n color: blue;\n}\n.ace_editor.ace_autocomplete .ace_completion-highlight{\n color: #2d69c7;\n}\n.ace_dark.ace_editor.ace_autocomplete .ace_completion-highlight{\n color: #93ca12;\n}\n.ace_editor.ace_autocomplete {\n width: 300px;\n z-index: 200000;\n border: 1px lightgray solid;\n position: absolute;\n box-shadow: 2px 3px 5px rgba(0,0,0,.2);\n line-height: 1.4;\n background: #fefefe;\n color: #111;\n}\n.ace_dark.ace_editor.ace_autocomplete {\n border: 1px #484747 solid;\n box-shadow: 2px 3px 5px rgba(0, 0, 0, 0.51);\n line-height: 1.4;\n background: #25282c;\n color: #c1c1c1;\n}\n.ace_autocomplete .ace_text-layer {\n width: calc(100% - 8px);\n}\n.ace_autocomplete .ace_line {\n display: flex;\n align-items: center;\n}\n.ace_autocomplete .ace_line > * {\n min-width: 0;\n flex: 0 0 auto;\n}\n.ace_autocomplete .ace_line .ace_ {\n flex: 0 1 auto;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n.ace_autocomplete .ace_completion-spacer {\n flex: 1;\n}\n.ace_autocomplete.ace_loading:after {\n content: "";\n position: absolute;\n top: 0px;\n height: 2px;\n width: 8%;\n background: blue;\n z-index: 100;\n animation: ace_progress 3s infinite linear;\n animation-delay: 300ms;\n transform: translateX(-100%) scaleX(1);\n}\n@keyframes ace_progress {\n 0% { transform: translateX(-100%) scaleX(1) }\n 50% { transform: translateX(625%) scaleX(2) } \n 100% { transform: translateX(1500%) scaleX(3) } \n}\n@media (prefers-reduced-motion) {\n .ace_autocomplete.ace_loading:after {\n transform: translateX(625%) scaleX(2);\n animation: none;\n }\n}\n',"autocompletion.css",!1),t.AcePopup=o,t.$singleLineEditor=l,t.getAriaId=a}),define("ace/autocomplete/util",["require","exports","module"],function(e,t,i){"use strict";t.parForEach=function(e,t,i){var o=0,n=e.length;0===n&&i();for(var s=0;s<n;s++)t(e[s],function(e,t){++o===n&&i(e,t)})};var s=/[a-zA-Z_0-9\$\-\u00A2-\u2000\u2070-\uFFFF]/;t.retrievePrecedingIdentifier=function(e,t,i){i=i||s;for(var o=[],n=t-1;0<=n&&i.test(e[n]);n--)o.push(e[n]);return o.reverse().join("")},t.retrieveFollowingIdentifier=function(e,t,i){i=i||s;for(var o=[],n=t;n<e.length&&i.test(e[n]);n++)o.push(e[n]);return o},t.getCompletionPrefix=function(e){var t,i=e.getCursorPosition(),o=e.session.getLine(i.row);return e.completers.forEach(function(e){e.identifierRegexps&&e.identifierRegexps.forEach(function(e){!t&&e&&(t=this.retrievePrecedingIdentifier(o,i.column,e))}.bind(this))}.bind(this)),t||this.retrievePrecedingIdentifier(o,i.column)},t.triggerAutocomplete=function(e,t){t=null==t?e.session.getPrecedingCharacter():t;return e.completers.some(function(e){if(e.triggerCharacters&&Array.isArray(e.triggerCharacters))return e.triggerCharacters.includes(t)})}}),define("ace/autocomplete",["require","exports","module","ace/keyboard/hash_handler","ace/autocomplete/popup","ace/autocomplete/inline","ace/autocomplete/popup","ace/autocomplete/util","ace/lib/lang","ace/lib/dom","ace/snippets","ace/config","ace/lib/event","ace/lib/scroll"],function(e,t,i){"use strict";function o(e,t){t.completer&&t.completer.destroy()}var n=e("./keyboard/hash_handler").HashHandler,s=e("./autocomplete/popup").AcePopup,r=e("./autocomplete/inline").AceInline,a=e("./autocomplete/popup").getAriaId,c=e("./autocomplete/util"),l=e("./lib/lang"),p=e("./lib/dom"),h=e("./snippets").snippetManager,d=e("./config"),u=e("./lib/event"),m=e("./lib/scroll").preventParentScroll,g=(Object.defineProperty(f,"completionsForLoading",{get:function(){return[{caption:d.nls("autocomplete.loading","Loading..."),value:""}]},enumerable:!1,configurable:!0}),f.prototype.$init=function(){return this.popup=new s(this.parentNode||document.body||document.documentElement),this.popup.on("click",function(e){this.insertMatch(),e.stop()}.bind(this)),this.popup.focus=this.editor.focus.bind(this.editor),this.popup.on("show",this.$onPopupShow.bind(this)),this.popup.on("hide",this.$onHidePopup.bind(this)),this.popup.on("select",this.$onPopupChange.bind(this)),u.addListener(this.popup.container,"mouseout",this.mouseOutListener.bind(this)),this.popup.on("changeHoverMarker",this.tooltipTimer.bind(null,null)),this.popup.renderer.on("afterRender",this.$onPopupRender.bind(this)),this.popup},f.prototype.$initInline=function(){if(this.inlineEnabled&&!this.inlineRenderer)return this.inlineRenderer=new r,this.inlineRenderer},f.prototype.getPopup=function(){return this.popup||this.$init()},f.prototype.$onHidePopup=function(){this.inlineRenderer&&this.inlineRenderer.hide(),this.hideDocTooltip(),this.stickySelectionTimer.cancel(),this.popupTimer.cancel(),this.stickySelection=!1},f.prototype.$seen=function(e){!this.hasSeen.has(e)&&e&&e.completer&&e.completer.onSeen&&"function"==typeof e.completer.onSeen&&(e.completer.onSeen(this.editor,e),this.hasSeen.add(e))},f.prototype.$onPopupChange=function(e){this.inlineRenderer&&this.inlineEnabled?(e=e?null:this.popup.getData(this.popup.getRow()),this.$updateGhostText(e),this.popup.isMouseOver&&this.setSelectOnHover?this.tooltipTimer.call(null,null):(this.popupTimer.schedule(),this.tooltipTimer.schedule())):(this.popupTimer.call(null,null),this.tooltipTimer.call(null,null))},f.prototype.$updateGhostText=function(e){var t=this.base.row,i=this.base.column,o=this.editor.getCursorPosition().column,t=this.editor.session.getLine(t).slice(i,o);this.inlineRenderer.show(this.editor,e,t)?this.$seen(e):this.inlineRenderer.hide()},f.prototype.$onPopupRender=function(){var e=this.inlineRenderer&&this.inlineEnabled;if(this.completions&&this.completions.filtered&&0<this.completions.filtered.length)for(var t=this.popup.getFirstVisibleRow();t<=this.popup.getLastVisibleRow();t++){var i=this.popup.getData(t);!i||e&&!i.hideInlinePreview||this.$seen(i)}},f.prototype.$onPopupShow=function(e){this.$onPopupChange(e),this.stickySelection=!1,0<=this.stickySelectionDelay&&this.stickySelectionTimer.schedule(this.stickySelectionDelay)},f.prototype.observeLayoutChanges=function(){if(!this.$elements&&this.editor){window.addEventListener("resize",this.onLayoutChange,{passive:!0}),window.addEventListener("wheel",this.mousewheelListener);for(var e=this.editor.container.parentNode,t=[];e;)t.push(e),e.addEventListener("scroll",this.onLayoutChange,{passive:!0}),e=e.parentNode;this.$elements=t}},f.prototype.unObserveLayoutChanges=function(){var t=this;window.removeEventListener("resize",this.onLayoutChange,{passive:!0}),window.removeEventListener("wheel",this.mousewheelListener),this.$elements&&this.$elements.forEach(function(e){e.removeEventListener("scroll",t.onLayoutChange,{passive:!0})}),this.$elements=null},f.prototype.onLayoutChange=function(){if(!this.popup.isOpen)return this.unObserveLayoutChanges();this.$updatePopupPosition(),this.updateDocTooltip()},f.prototype.$updatePopupPosition=function(){var e=this.editor,t=e.renderer,i=t.layerConfig.lineHeight,o=t.$cursorLayer.getPixelPosition(this.base,!0),n=(o.left-=this.popup.getTextLeftOffset(),e.container.getBoundingClientRect()),n=(o.top+=n.top-t.layerConfig.offset,o.left+=n.left-e.renderer.scrollLeft,o.left+=t.gutterWidth,{top:o.top,left:o.left}),t=(t.$ghostText&&t.$ghostTextWidget&&this.base.row===t.$ghostText.position.row&&(n.top+=t.$ghostTextWidget.el.offsetHeight),e.container.getBoundingClientRect().bottom-i),e=t<n.top?{top:t,left:n.left}:n;this.popup.tryShow(e,i,"bottom")||this.popup.tryShow(o,i,"top")||this.popup.show(o,i)},f.prototype.openPopup=function(e,t,i){this.$firstOpenTimer.cancel(),this.popup||this.$init(),this.inlineEnabled&&!this.inlineRenderer&&this.$initInline(),this.popup.autoSelect=this.autoSelect,this.popup.setSelectOnHover(this.setSelectOnHover);var o,n=this.popup.getRow(),s=this.popup.data[n],s=(this.popup.setData(this.completions.filtered,this.completions.filterText),this.editor.textInput.setAriaOptions&&this.editor.textInput.setAriaOptions({activeDescendant:a(this.popup.getRow()),inline:this.inlineEnabled}),e.keyBinding.addKeyboardHandler(this.keyboardHandler),(o=this.stickySelection?this.popup.data.indexOf(s):o)&&-1!==o||(o=0),this.popup.setRow(this.autoSelect?o:-1),o===n&&s!==this.completions.filtered[o]&&this.$onPopupChange(),this.inlineRenderer&&this.inlineEnabled);o===n&&s&&(o=this.popup.getData(this.popup.getRow()),this.$updateGhostText(o)),i||(this.popup.setTheme(e.getTheme()),this.popup.setFontSize(e.getFontSize()),this.$updatePopupPosition(),this.tooltipNode&&this.updateDocTooltip()),this.changeTimer.cancel(),this.observeLayoutChanges()},f.prototype.detach=function(){this.editor&&(this.editor.keyBinding.removeKeyboardHandler(this.keyboardHandler),this.editor.off("changeSelection",this.changeListener),this.editor.off("blur",this.blurListener),this.editor.off("mousedown",this.mousedownListener),this.editor.off("mousewheel",this.mousewheelListener)),this.$firstOpenTimer.cancel(),this.changeTimer.cancel(),this.hideDocTooltip(),this.completionProvider&&this.completionProvider.detach(),this.popup&&this.popup.isOpen&&this.popup.hide(),this.popup&&this.popup.renderer&&this.popup.renderer.off("afterRender",this.$onPopupRender),this.base&&this.base.detach(),this.activated=!1,this.completionProvider=this.completions=this.base=null,this.unObserveLayoutChanges()},f.prototype.changeListener=function(e){var t=this.editor.selection.lead;(t.row!=this.base.row||t.column<this.base.column)&&this.detach(),this.activated?this.changeTimer.schedule():this.detach()},f.prototype.blurListener=function(e){var t=document.activeElement,i=this.editor.textInput.getElement(),o=e.relatedTarget&&this.tooltipNode&&this.tooltipNode.contains(e.relatedTarget),n=this.popup&&this.popup.container;t==i||t.parentNode==n||o||t==this.tooltipNode||e.relatedTarget==i||this.detach()},f.prototype.mousedownListener=function(e){this.detach()},f.prototype.mousewheelListener=function(e){this.popup&&!this.popup.isMouseOver&&this.detach()},f.prototype.mouseOutListener=function(e){this.popup.isOpen&&this.$updatePopupPosition()},f.prototype.goTo=function(e){this.popup.goTo(e)},f.prototype.insertMatch=function(e,t){if(!(e=e||this.popup.getData(this.popup.getRow())))return!1;if(""===e.value)return this.detach();var i=this.completions,e=this.getCompletionProvider().insertMatch(this.editor,e,i.filterText,t);return this.completions==i&&this.detach(),e},f.prototype.showPopup=function(e,t){this.editor&&this.detach(),this.activated=!0,(this.editor=e).completer!=this&&(e.completer&&e.completer.detach(),e.completer=this),e.on("changeSelection",this.changeListener),e.on("blur",this.blurListener),e.on("mousedown",this.mousedownListener),e.on("mousewheel",this.mousewheelListener),this.updateCompletions(!1,t)},f.prototype.getCompletionProvider=function(e){return this.completionProvider||(this.completionProvider=new b(e)),this.completionProvider},f.prototype.gatherCompletions=function(e,t){return this.getCompletionProvider().gatherCompletions(e,t)},f.prototype.updateCompletions=function(r,e){if(r&&this.base&&this.completions)return t=this.editor.getCursorPosition(),(i=this.editor.session.getTextRange({start:this.base,end:t}))==this.completions.filterText?void 0:(this.completions.setFilter(i),this.completions.filtered.length&&(1!=this.completions.filtered.length||this.completions.filtered[0].value!=i||this.completions.filtered[0].snippet)?void this.openPopup(this.editor,i,r):this.detach());if(e&&e.matches)return t=this.editor.getSelectionRange().start,this.base=this.editor.session.doc.createAnchor(t.row,t.column),this.base.$insertRight=!0,this.completions=new v(e.matches),this.getCompletionProvider().completions=this.completions,this.openPopup(this.editor,"",r);var e=this.editor.getSession(),t=this.editor.getCursorPosition(),i=c.getCompletionPrefix(this.editor),e=(this.base=e.doc.createAnchor(t.row,t.column-i.length),this.base.$insertRight=!0,{exactMatch:this.exactMatch,ignoreCaption:this.ignoreCaption});this.getCompletionProvider({prefix:i,pos:t}).provideCompletions(this.editor,e,function(e,t,i){var o,n=t.filtered,s=c.getCompletionPrefix(this.editor);if(this.$firstOpenTimer.cancel(),i){if(!n.length)return(o="function"==typeof(o=!this.autoShown&&this.emptyMessage)?this.emptyMessage(s):o)?(this.completions=new v([{caption:o,value:""}]),this.openPopup(this.editor,s,r),this.popup.renderer.setStyle("ace_loading",!1),void this.popup.renderer.setStyle("ace_empty-message",!0)):this.detach();if(1==n.length&&n[0].value==s&&!n[0].snippet)return this.detach();if(this.autoInsert&&!this.autoShown&&1==n.length)return this.insertMatch(n[0])}this.completions=!i&&this.showLoadingState?new v(f.completionsForLoading.concat(n),t.filterText):t,this.openPopup(this.editor,s,r),this.popup.renderer.setStyle("ace_empty-message",!1),this.popup.renderer.setStyle("ace_loading",!i)}.bind(this)),!this.showLoadingState||this.autoShown||this.popup&&this.popup.isOpen||this.$firstOpenTimer.delay(this.stickySelectionDelay/2)},f.prototype.cancelContextMenu=function(){this.editor.$mouseHandler.cancelContextMenu()},f.prototype.updateDocTooltip=function(){var e=this.popup,t=this.completions&&this.completions.filtered,i=t&&(t[e.getHoveredRow()]||t[e.getRow()]),o=null;if(!i||!this.editor||!this.popup.isOpen)return this.hideDocTooltip();for(var n=this.editor.completers.length,s=0;s<n;s++){var r=this.editor.completers[s];if(r.getDocTooltip&&i.completerId===r.id){o=r.getDocTooltip(i);break}}if(!(o="string"==typeof(o=o||"string"==typeof i?o:i)?{docText:o}:o)||!o.docHTML&&!o.docText)return this.hideDocTooltip();this.showDocTooltip(o)},f.prototype.showDocTooltip=function(e){this.tooltipNode||(this.tooltipNode=p.createElement("div"),this.tooltipNode.style.margin="0",this.tooltipNode.style.pointerEvents="auto",this.tooltipNode.style.overscrollBehavior="contain",this.tooltipNode.tabIndex=-1,this.tooltipNode.onblur=this.blurListener.bind(this),this.tooltipNode.onclick=this.onTooltipClick.bind(this),this.tooltipNode.id="doc-tooltip",this.tooltipNode.setAttribute("role","tooltip"),this.tooltipNode.addEventListener("wheel",m));var t=this.editor.renderer.theme,t=(this.tooltipNode.className="ace_tooltip ace_doc-tooltip "+(t.isDark?"ace_dark ":"")+(t.cssClass||""),this.tooltipNode),e=(e.docHTML?t.innerHTML=e.docHTML:e.docText&&(t.textContent=e.docText),t.parentNode||this.popup.container.appendChild(this.tooltipNode),this.popup),i=e.container.getBoundingClientRect(),o=e.renderer.scrollBar.width||10,n=i.left,s=window.innerWidth-i.right-o,r=e.isTopdown?i.top:window.innerHeight-o-i.bottom,s=[Math.min(s/400,1),Math.min(n/400,1),Math.min(r/300*.9)],n=Math.max.apply(Math,s),r=t.style;r.display="block",n==s[0]?(r.left=i.right+1+"px",r.right="",r.maxWidth=400*n+"px",r.top=i.top+"px",r.bottom="",r.maxHeight=Math.min(window.innerHeight-o-i.top,300)+"px"):n==s[1]?(r.right=window.innerWidth-i.left+"px",r.left="",r.maxWidth=400*n+"px",r.top=i.top+"px",r.bottom="",r.maxHeight=Math.min(window.innerHeight-o-i.top,300)+"px"):n==s[2]&&(r.left=window.innerWidth-i.left+"px",r.maxWidth=Math.min(400,window.innerWidth)+"px",e.isTopdown?(r.top=i.bottom+"px",r.left=i.left+"px",r.right="",r.bottom="",r.maxHeight=Math.min(window.innerHeight-o-i.bottom,300)+"px"):(r.top=e.container.offsetTop-t.offsetHeight+"px",r.left=i.left+"px",r.right="",r.bottom="",r.maxHeight=Math.min(e.container.offsetTop,300)+"px"))},f.prototype.hideDocTooltip=function(){var e;this.tooltipTimer.cancel(),this.tooltipNode&&(e=this.tooltipNode,this.editor.isFocused()||document.activeElement!=e||this.editor.focus(),this.tooltipNode=null,e.parentNode&&e.parentNode.removeChild(e))},f.prototype.onTooltipClick=function(e){for(var t=e.target;t&&t!=this.tooltipNode;){if("A"==t.nodeName&&t.href){t.rel="noreferrer",t.target="_blank";break}t=t.parentNode}},f.prototype.destroy=function(){var e;this.detach(),this.popup&&(this.popup.destroy(),(e=this.popup.container)&&e.parentNode&&e.parentNode.removeChild(e)),this.editor&&this.editor.completer==this&&(this.editor.off("destroy",o),this.editor.completer=null),this.inlineRenderer=this.popup=this.editor=null},f.for=function(e){return e.completer instanceof f||(e.completer&&(e.completer.destroy(),e.completer=null),d.get("sharedPopups")?(f.$sharedInstance||(f.$sharedInstance=new f),e.completer=f.$sharedInstance):(e.completer=new f,e.once("destroy",o))),e.completer},f);function f(){this.autoInsert=!1,this.autoSelect=!0,this.autoShown=!1,this.exactMatch=!1,this.inlineEnabled=!1,this.keyboardHandler=new n,this.keyboardHandler.bindKeys(this.commands),this.parentNode=null,this.setSelectOnHover=!1,this.hasSeen=new Set,this.showLoadingState=!1,this.stickySelectionDelay=500,this.blurListener=this.blurListener.bind(this),this.changeListener=this.changeListener.bind(this),this.mousedownListener=this.mousedownListener.bind(this),this.mousewheelListener=this.mousewheelListener.bind(this),this.onLayoutChange=this.onLayoutChange.bind(this),this.changeTimer=l.delayedCall(function(){this.updateCompletions(!0)}.bind(this)),this.tooltipTimer=l.delayedCall(this.updateDocTooltip.bind(this),50),this.popupTimer=l.delayedCall(this.$updatePopupPosition.bind(this),50),this.stickySelectionTimer=l.delayedCall(function(){this.stickySelection=!0}.bind(this),this.stickySelectionDelay),this.$firstOpenTimer=l.delayedCall(function(){var e=this.completionProvider&&this.completionProvider.initialPosition;this.autoShown||this.popup&&this.popup.isOpen||!e||0===this.editor.completers.length||(this.completions=new v(f.completionsForLoading),this.openPopup(this.editor,e.prefix,!1),this.popup.renderer.setStyle("ace_loading",!0))}.bind(this),this.stickySelectionDelay)}g.prototype.commands={Up:function(e){e.completer.goTo("up")},Down:function(e){e.completer.goTo("down")},"Ctrl-Up|Ctrl-Home":function(e){e.completer.goTo("start")},"Ctrl-Down|Ctrl-End":function(e){e.completer.goTo("end")},Esc:function(e){e.completer.detach()},Return:function(e){return e.completer.insertMatch()},"Shift-Return":function(e){e.completer.insertMatch(null,{deleteSuffix:!0})},Tab:function(e){var t=e.completer.insertMatch();if(t||e.tabstopManager)return t;e.completer.goTo("down")},Backspace:function(e){e.execCommand("backspace"),!c.getCompletionPrefix(e)&&e.completer&&e.completer.detach()},PageUp:function(e){e.completer.popup.gotoPageUp()},PageDown:function(e){e.completer.popup.gotoPageDown()}},g.startCommand={name:"startAutocomplete",exec:function(e,t){var i=g.for(e);i.autoInsert=!1,i.autoSelect=!0,i.autoShown=!1,i.showPopup(e,t),i.cancelContextMenu()},bindKey:"Ctrl-Space|Ctrl-Shift-Space|Alt-Space"};x.prototype.insertByIndex=function(e,t,i){return!(!this.completions||!this.completions.filtered)&&this.insertMatch(e,this.completions.filtered[t],i)},x.prototype.insertMatch=function(e,t,i){if(!t)return!1;if(e.startOperation({command:{name:"insertMatch"}}),t.completer&&t.completer.insertMatch)t.completer.insertMatch(e,t);else{if(!this.completions)return!1;var o=this.completions.filterText.length,n=0;if(t.range&&t.range.start.row===t.range.end.row&&(o=(o-=this.initialPosition.prefix.length)+(this.initialPosition.pos.column-t.range.start.column),n+=t.range.end.column-this.initialPosition.pos.column),o||n)for(var s,r=e.selection.getAllRanges?e.selection.getAllRanges():[e.getSelectionRange()],a=0;s=r[a];a++)s.start.column-=o,s.end.column+=n,e.session.remove(s);t.snippet?h.insertSnippet(e,t.snippet):this.$insertString(e,t),t.completer&&t.completer.onInsert&&"function"==typeof t.completer.onInsert&&t.completer.onInsert(e,t),t.command&&"startAutocomplete"===t.command&&e.execCommand(t.command)}return e.endOperation(),!0},x.prototype.$insertString=function(e,t){t=t.value||t;e.execCommand("insertstring",t)},x.prototype.gatherCompletions=function(o,n){var t=o.getSession(),s=o.getCursorPosition(),r=c.getCompletionPrefix(o),a=[],l=(this.completers=o.completers,o.completers.length);return o.completers.forEach(function(i,e){i.getCompletions(o,t,s,r,function(e,t){i.hideInlinePreview&&(t=t.map(function(e){return Object.assign(e,{hideInlinePreview:i.hideInlinePreview})})),!e&&t&&(a=a.concat(t)),n(null,{prefix:c.getCompletionPrefix(o),matches:a,finished:0==--l})})}),!0},x.prototype.provideCompletions=function(e,o,n){var i=function(e){var t=e.prefix,i=e.matches;this.completions=new v(i),o.exactMatch&&(this.completions.exactMatch=!0),o.ignoreCaption&&(this.completions.ignoreCaption=!0),this.completions.setFilter(t),(e.finished||this.completions.filtered.length)&&n(null,this.completions,e.finished)}.bind(this),s=!0,r=null;this.gatherCompletions(e,function(e,t){this.active&&(e&&(n(e,[],!0),this.detach()),0===t.prefix.indexOf(t.prefix)&&(s?r=t:i(t)))}.bind(this)),s=!1,r&&(e=r,r=null,i(e))},x.prototype.detach=function(){this.active=!1,this.completers&&this.completers.forEach(function(e){"function"==typeof e.cancel&&e.cancel()})};var b=x,v=(y.prototype.setFilter=function(e){t=e.length>this.filterText&&0===e.lastIndexOf(this.filterText,0)?this.filtered:this.all,this.filterText=e,t=(t=this.filterCompletions(t,this.filterText)).sort(function(e,t){return t.exactMatch-e.exactMatch||t.$score-e.$score||(e.caption||e.value).localeCompare(t.caption||t.value)});var t,i=null;t=t.filter(function(e){e=e.snippet||e.caption||e.value;return e!==i&&(i=e,!0)}),this.filtered=t},y.prototype.filterCompletions=function(e,t){var i=[],o=t.toUpperCase(),n=t.toLowerCase();e:for(var s,r=0;s=e[r];r++)if(s.skipFilter)s.$score=s.score,i.push(s);else{var a=!this.ignoreCaption&&s.caption||s.value||s.snippet;if(a){var l=-1,c=0,p=0;if(this.exactMatch){if(t!==a.substr(0,t.length))continue}else{var h=a.toLowerCase().indexOf(n);if(-1<h)p=h;else for(var d=0;d<t.length;d++){var u=a.indexOf(n[d],l+1),m=a.indexOf(o[d],l+1);if((u=0<=u&&(m<0||u<m)?u:m)<0)continue e;0<(m=u-l-1)&&(-1===l&&(p+=10),p+=m,c|=1<<d),l=u}}s.matchMask=c,s.exactMatch=p?0:1,s.$score=(s.score||0)-p,i.push(s)}}return i},y);function y(e,t){this.all=e,this.filtered=e,this.filterText=t||"",this.exactMatch=!1,this.ignoreCaption=!1}function x(e){this.initialPosition=e,this.active=!0}t.Autocomplete=g,t.CompletionProvider=b,t.FilteredList=v}),define("ace/ext/command_bar",["require","exports","module","ace/tooltip","ace/lib/event_emitter","ace/lib/lang","ace/lib/dom","ace/lib/oop","ace/lib/useragent"],function(e,t,i){function p(e,t){return t.row>e.row||t.row===e.row&&t.column>e.column?e:t}var a=this&&this.__values||function(e){var t="function"==typeof Symbol&&Symbol.iterator,i=t&&e[t],o=0;if(i)return i.call(e);if(e&&"number"==typeof e.length)return{next:function(){return{value:(e=e&&o>=e.length?void 0:e)&&e[o++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")},l=e("../tooltip").Tooltip,o=e("../lib/event_emitter").EventEmitter,c=e("../lib/lang"),h=e("../lib/dom"),n=e("../lib/oop"),d=e("../lib/useragent"),u="command_bar_tooltip_button",m="command_bar_button_value",g="command_bar_button_caption",f="command_bar_keybinding",b="command_bar_tooltip",v="MoreOptionsButton",y={Ctrl:{mac:"^"},Option:{mac:"⌥"},Command:{mac:"⌘"},Cmd:{mac:"⌘"},Shift:"⇧",Left:"←",Right:"→",Up:"↑",Down:"↓"},e=(s.prototype.registerCommand=function(e,t){var i=Object.keys(this.commands).length<this.maxElementsOnTooltip;i||this.elements[v]||this.$createCommand(v,{name:"···",exec:function(){this.$shouldHideMoreOptions=!1,this.$setMoreOptionsVisibility(!this.isMoreOptionsShown())}.bind(this),type:"checkbox",getValue:function(){return this.isMoreOptionsShown()}.bind(this),enabled:!0},!0),this.$createCommand(e,t,i),this.isShown()&&this.updatePosition()},s.prototype.isShown=function(){return!!this.tooltip&&this.tooltip.isOpen},s.prototype.isMoreOptionsShown=function(){return!!this.moreOptions&&this.moreOptions.isOpen},s.prototype.getAlwaysShow=function(){return this.$alwaysShow},s.prototype.setAlwaysShow=function(e){this.$alwaysShow=e,this.$updateOnHoverHandlers(!this.$alwaysShow),this._signal("alwaysShow",this.$alwaysShow)},s.prototype.attach=function(e){!e||this.isShown()&&this.editor===e||(this.detach(),this.editor=e,this.editor.on("changeSession",this.$onEditorChangeSession),this.editor.session&&(this.editor.session.on("changeScrollLeft",this.$onChangeScroll),this.editor.session.on("changeScrollTop",this.$onChangeScroll)),this.getAlwaysShow()?this.$showTooltip():this.$updateOnHoverHandlers(!0))},s.prototype.updatePosition=function(){if(this.editor){var e=this.editor.renderer,t=this.editor.selection.getAllRanges?this.editor.selection.getAllRanges():[this.editor.getSelectionRange()];if(t.length){for(var i,o=p(t[0].start,t[0].end),n=0;i=t[n];n++)o=p(o,p(i.start,i.end));var s=e.$cursorLayer.getPixelPosition(o,!0),r=this.tooltip.getElement(),a=window.innerWidth,l=window.innerHeight,c=this.editor.container.getBoundingClientRect(),e=(s.top+=c.top-e.layerConfig.offset,s.left+=c.left+e.gutterWidth-e.scrollLeft,s.top>=c.top&&s.top<=c.bottom&&s.left>=c.left+e.gutterWidth&&s.left<=c.right);!e&&this.isShown()?this.$hideTooltip():e&&!this.isShown()&&this.getAlwaysShow()?this.$showTooltip():(c=s.top-r.offsetHeight,e=Math.min(a-r.offsetWidth,s.left),0<=c&&c+r.offsetHeight<=l&&0<=e&&e+r.offsetWidth<=a?(this.tooltip.setPosition(e,c),this.isMoreOptionsShown()&&(c+=r.offsetHeight,e=this.elements[v].getBoundingClientRect().left,s=this.moreOptions.getElement(),l=window.innerHeight,c+s.offsetHeight>l&&(c-=r.offsetHeight+s.offsetHeight),e+s.offsetWidth>a&&(e=a-s.offsetWidth),this.moreOptions.setPosition(e,c))):this.$hideTooltip())}}},s.prototype.update=function(){Object.keys(this.elements).forEach(this.$updateElement.bind(this))},s.prototype.detach=function(){this.tooltip.hide(),this.moreOptions.hide(),this.$updateOnHoverHandlers(!1),this.editor&&(this.editor.off("changeSession",this.$onEditorChangeSession),this.editor.session&&(this.editor.session.off("changeScrollLeft",this.$onChangeScroll),this.editor.session.off("changeScrollTop",this.$onChangeScroll))),this.$mouseInTooltip=!1,this.editor=null},s.prototype.destroy=function(){this.tooltip&&this.moreOptions&&(this.detach(),this.tooltip.destroy(),this.moreOptions.destroy()),this.eventListeners={},this.commands={},this.elements={},this.tooltip=this.moreOptions=this.parentNode=null},s.prototype.$createCommand=function(t,i,e){var o,n=e?this.tooltipEl:this.moreOptionsEl,s=[],r=i.bindKey,r=(r&&(s=(s=(r=(r="object"==typeof r?d.isMac?r.mac:r.win:r).split("|")[0]).split("-")).map(function(e){if(y[e]){if("string"==typeof y[e])return y[e];if(d.isMac&&y[e].mac)return y[e].mac}return e})),e&&i.iconCssClass?o=["div",{class:["ace_icon_svg",i.iconCssClass].join(" "),"aria-label":i.name+" ("+i.bindKey+")"}]:(o=[["div",{class:m}],["div",{class:g},i.name]],s.length&&o.push(["div",{class:f},s.map(function(e){return["div",e]})])),h.buildDom(["div",{class:[u,i.cssClass||""].join(" "),ref:t},o],n,this.elements),this.commands[t]=i,function(e){this.editor&&this.editor.focus(),this.$shouldHideMoreOptions=this.isMoreOptionsShown(),!this.elements[t].disabled&&i.exec&&i.exec(this.editor),this.$shouldHideMoreOptions&&this.$setMoreOptionsVisibility(!1),this.update(),e.preventDefault()}.bind(this));this.eventListeners[t]=r,this.elements[t].addEventListener("click",r.bind(this)),this.$updateElement(t)},s.prototype.$setMoreOptionsVisibility=function(e){e?(this.moreOptions.setTheme(this.editor.renderer.theme),this.moreOptions.setClassName(b+"_wrapper"),this.moreOptions.show(),this.update(),this.updatePosition()):this.moreOptions.hide()},s.prototype.$onEditorChangeSession=function(e){e.oldSession&&(e.oldSession.off("changeScrollTop",this.$onChangeScroll),e.oldSession.off("changeScrollLeft",this.$onChangeScroll)),this.detach()},s.prototype.$onChangeScroll=function(){this.editor.renderer&&(this.isShown()||this.getAlwaysShow())&&this.editor.renderer.once("afterRender",this.updatePosition.bind(this))},s.prototype.$onMouseMove=function(e){var t,i;this.$mouseInTooltip||(t=this.editor.getCursorPosition(),t=this.editor.renderer.textToScreenCoordinates(t.row,t.column),i=this.editor.renderer.lineHeight,e.clientY>=t.pageY&&e.clientY<t.pageY+i?(this.isShown()||this.$showTooltipTimer.isPending()||this.$showTooltipTimer.delay(),this.$hideTooltipTimer.isPending()&&this.$hideTooltipTimer.cancel()):(this.isShown()&&!this.$hideTooltipTimer.isPending()&&this.$hideTooltipTimer.delay(),this.$showTooltipTimer.isPending()&&this.$showTooltipTimer.cancel()))},s.prototype.$preventMouseEvent=function(e){this.editor&&this.editor.focus(),e.preventDefault()},s.prototype.$scheduleTooltipForHide=function(){this.$mouseInTooltip=!1,this.$showTooltipTimer.cancel(),this.$hideTooltipTimer.delay()},s.prototype.$tooltipEnter=function(){this.$mouseInTooltip=!0,this.$showTooltipTimer.isPending()&&this.$showTooltipTimer.cancel(),this.$hideTooltipTimer.isPending()&&this.$hideTooltipTimer.cancel()},s.prototype.$updateOnHoverHandlers=function(e){var t=this.tooltip.getElement(),i=this.moreOptions.getElement();e?(this.editor&&(this.editor.on("mousemove",this.$onMouseMove),this.editor.renderer.getMouseEventTarget().addEventListener("mouseout",this.$scheduleTooltipForHide,!0)),t.addEventListener("mouseenter",this.$tooltipEnter),t.addEventListener("mouseleave",this.$scheduleTooltipForHide),i.addEventListener("mouseenter",this.$tooltipEnter),i.addEventListener("mouseleave",this.$scheduleTooltipForHide)):(this.editor&&(this.editor.off("mousemove",this.$onMouseMove),this.editor.renderer.getMouseEventTarget().removeEventListener("mouseout",this.$scheduleTooltipForHide,!0)),t.removeEventListener("mouseenter",this.$tooltipEnter),t.removeEventListener("mouseleave",this.$scheduleTooltipForHide),i.removeEventListener("mouseenter",this.$tooltipEnter),i.removeEventListener("mouseleave",this.$scheduleTooltipForHide))},s.prototype.$showTooltip=function(){this.isShown()||(this.tooltip.setTheme(this.editor.renderer.theme),this.tooltip.setClassName(b+"_wrapper"),this.tooltip.show(),this.update(),this.updatePosition(),this._signal("show"))},s.prototype.$hideTooltip=function(){this.$mouseInTooltip=!1,this.isShown()&&(this.moreOptions.hide(),this.tooltip.hide(),this._signal("hide"))},s.prototype.$updateElement=function(e){var t,i,o,n=this.commands[e];n&&(e=this.elements[e],"function"==typeof(t=n.enabled)&&(t=t(this.editor)),"function"==typeof n.getValue&&(i=n.getValue(this.editor),"text"===n.type?e.textContent=i:"checkbox"===n.type&&(n=i?h.addCssClass:h.removeCssClass,o=e.parentElement===this.tooltipEl,e.ariaChecked=i,o?n(e,"ace_selected"):n(e=e.querySelector("."+m),"ace_checkmark"))),t&&e.disabled?(h.removeCssClass(e,"ace_disabled"),e.ariaDisabled=e.disabled=!1,e.removeAttribute("disabled")):t||e.disabled||(h.addCssClass(e,"ace_disabled"),e.ariaDisabled=e.disabled=!0,e.setAttribute("disabled","")))},s);function s(e,t){var i,o;t=t||{},this.parentNode=e,this.tooltip=new l(this.parentNode),this.moreOptions=new l(this.parentNode),this.maxElementsOnTooltip=t.maxElementsOnTooltip||4,this.$alwaysShow=t.alwaysShow||!1,this.eventListeners={},this.elements={},this.commands={},this.tooltipEl=h.buildDom(["div",{class:b}],this.tooltip.getElement()),this.moreOptionsEl=h.buildDom(["div",{class:b+" tooltip_more_options"}],this.moreOptions.getElement()),this.$showTooltipTimer=c.delayedCall(this.$showTooltip.bind(this),t.showDelay||100),this.$hideTooltipTimer=c.delayedCall(this.$hideTooltip.bind(this),t.hideDelay||100),this.$tooltipEnter=this.$tooltipEnter.bind(this),this.$onMouseMove=this.$onMouseMove.bind(this),this.$onChangeScroll=this.$onChangeScroll.bind(this),this.$onEditorChangeSession=this.$onEditorChangeSession.bind(this),this.$scheduleTooltipForHide=this.$scheduleTooltipForHide.bind(this),this.$preventMouseEvent=this.$preventMouseEvent.bind(this);try{for(var n=a(["mousedown","mouseup","click"]),s=n.next();!s.done;s=n.next()){var r=s.value;this.tooltip.getElement().addEventListener(r,this.$preventMouseEvent),this.moreOptions.getElement().addEventListener(r,this.$preventMouseEvent)}}catch(e){i={error:e}}finally{try{s&&!s.done&&(o=n.return)&&o.call(n)}finally{if(i)throw i.error}}}n.implement(e.prototype,o),h.importCssString("\n.ace_tooltip.".concat(b,"_wrapper {\n padding: 0;\n}\n\n.ace_tooltip .").concat(b," {\n padding: 1px 5px;\n display: flex;\n pointer-events: auto;\n}\n\n.ace_tooltip .").concat(b,".tooltip_more_options {\n padding: 1px;\n flex-direction: column;\n}\n\ndiv.").concat(u," {\n display: inline-flex;\n cursor: pointer;\n margin: 1px;\n border-radius: 2px;\n padding: 2px 5px;\n align-items: center;\n}\n\ndiv.").concat(u,".ace_selected,\ndiv.").concat(u,":hover:not(.ace_disabled) {\n background-color: rgba(0, 0, 0, 0.1);\n}\n\ndiv.").concat(u,".ace_disabled {\n color: #777;\n pointer-events: none;\n}\n\ndiv.").concat(u," .ace_icon_svg {\n height: 12px;\n background-color: #000;\n}\n\ndiv.").concat(u,".ace_disabled .ace_icon_svg {\n background-color: #777;\n}\n\n.").concat(b,".tooltip_more_options .").concat(u," {\n display: flex;\n}\n\n.").concat(b,".").concat(m," {\n display: none;\n}\n\n.").concat(b,".tooltip_more_options .").concat(m," {\n display: inline-block;\n width: 12px;\n}\n\n.").concat(g," {\n display: inline-block;\n}\n\n.").concat(f," {\n margin: 0 2px;\n display: inline-block;\n font-size: 8px;\n}\n\n.").concat(b,".tooltip_more_options .").concat(f," {\n margin-left: auto;\n}\n\n.").concat(f," div {\n display: inline-block;\n min-width: 8px;\n padding: 2px;\n margin: 0 1px;\n border-radius: 2px;\n background-color: #ccc;\n text-align: center;\n}\n\n.ace_dark.ace_tooltip .").concat(b," {\n background-color: #373737;\n color: #eee;\n}\n\n.ace_dark div.").concat(u,".ace_disabled {\n color: #979797;\n}\n\n.ace_dark div.").concat(u,".ace_selected,\n.ace_dark div.").concat(u,":hover:not(.ace_disabled) {\n background-color: rgba(255, 255, 255, 0.1);\n}\n\n.ace_dark div.").concat(u," .ace_icon_svg {\n background-color: #eee;\n}\n\n.ace_dark div.").concat(u,".ace_disabled .ace_icon_svg {\n background-color: #979797;\n}\n\n.ace_dark .").concat(u,".ace_disabled {\n color: #979797;\n}\n\n.ace_dark .").concat(f," div {\n background-color: #575757;\n}\n\n.ace_checkmark::before {\n content: '✓';\n}\n"),"commandbar.css",!1),t.CommandBarTooltip=e,t.TOOLTIP_CLASS_NAME=b,t.BUTTON_CLASS_NAME=u}),define("ace/marker_group",["require","exports","module"],function(e,t,i){"use strict";n.prototype.getMarkerAtPosition=function(t){return this.markers.find(function(e){return e.range.contains(t.row,t.column)})},n.prototype.markersComparator=function(e,t){return e.range.start.row-t.range.start.row},n.prototype.setMarkers=function(e){this.markers=e.sort(this.markersComparator).slice(0,this.MAX_MARKERS),this.session._signal("changeBackMarker")},n.prototype.update=function(e,t,i,o){if(this.markers&&this.markers.length)for(var n,s=o.firstRow,r=o.lastRow,a=0,l=0,c=0;c<this.markers.length;c++){var p,h,d=this.markers[c];d.range.end.row<s||d.range.start.row>r||(d.range.start.row===l?a++:(l=d.range.start.row,a=0),200<a||((p=d.range.clipRows(s,r)).start.row===p.end.row&&p.start.column===p.end.column||((h=p.toScreenRange(i)).isEmpty()?(n=i.getNextFoldLine(p.end.row,n))&&n.end.row>p.end.row&&(s=n.end.row):"fullLine"===this.markerType?t.drawFullLineMarker(e,h,d.className,o):h.isMultiLine()?"line"===this.markerType?t.drawMultiLineMarker(e,h,d.className,o):t.drawTextMarker(e,h,d.className,o):t.drawSingleLineMarker(e,h,d.className+" ace_br15",o))))}};var o=n;function n(e,t){t&&(this.markerType=t.markerType),this.markers=[],(this.session=e).addDynamicMarker(this)}o.prototype.MAX_MARKERS=1e4,t.MarkerGroup=o}),define("ace/autocomplete/text_completer",["require","exports","module","ace/range"],function(e,t,i){function r(e,t){var i=e.getTextRange(a.fromPoints({row:0,column:0},t)).split(l).length-1,o=e.getValue().split(l),n=Object.create(null),s=o[i];return o.forEach(function(e,t){e&&e!==s&&(t=Math.abs(i-t),t=o.length-t,n[e]?n[e]=Math.max(t,n[e]):n[e]=t)}),n}var a=e("../range").Range,l=/[^a-zA-Z_0-9\$\-\u00C0-\u1FFF\u2C00-\uD7FF\w]+/;t.getCompletions=function(e,t,i,o,n){var s=r(t,i);n(null,Object.keys(s).map(function(e){return{caption:e,value:e,score:s[e],meta:"local"}}))}}),define("ace/ext/language_tools",["require","exports","module","ace/snippets","ace/autocomplete","ace/config","ace/lib/lang","ace/autocomplete/util","ace/marker_group","ace/autocomplete/text_completer","ace/editor","ace/config"],function(e,t,i){"use strict";function o(e,t){b(t.session.$mode)}function n(e){var t=e.editor,i=t.completer&&t.completer.activated;"backspace"===e.command.name?i&&!p.getCompletionPrefix(t)&&t.completer.detach():"insertstring"!==e.command.name||i||((t=(s=e).editor.$liveAutocompletionDelay)?y.delay(t):x(e))}var s,l=e("../snippets").snippetManager,r=e("../autocomplete").Autocomplete,a=e("../config"),c=e("../lib/lang"),p=e("../autocomplete/util"),h=e("../marker_group").MarkerGroup,d=e("../autocomplete/text_completer"),u={getCompletions:function(e,t,i,o,n){if(t.$mode.completer)return t.$mode.completer.getCompletions(e,t,i,o,n);e=e.session.getState(i.row);n(null,t.$mode.getCompletions(e,t,i,o).map(function(e){return e.completerId=u.id,e}))},id:"keywordCompleter"},m={getCompletions:function(e,t,i,o,n){var s=[],t=t.getTokenAt(i.row,i.column),r=(t&&t.type.match(/(tag-name|tag-open|tag-whitespace|attribute-name|attribute-value)\.xml$/)?s.push("html-tag"):s=l.getActiveScopes(e),l.snippetMap),a=[];s.forEach(function(e){for(var t=r[e]||[],i=t.length;i--;){var o=t[i],n=o.name||o.tabTrigger;n&&a.push({caption:n,snippet:o.content,meta:o.tabTrigger&&!o.name?o.tabTrigger+"⇥ ":"snippet",completerId:m.id})}},this),n(null,a)},getDocTooltip:function(e){var n;e.snippet&&!e.docHTML&&(e.docHTML=["<b>",c.escapeHTML(e.caption),"</b>","<hr></hr>",c.escapeHTML((e=e.snippet,n={},e.replace(/\${(\d+)(:(.*?))?}/g,function(e,t,i,o){return n[t]=o||""}).replace(/\$(\d+?)/g,function(e,t){return n[t]})))].join(""))},id:"snippetCompleter"},g=[m,d,u],f=(t.setCompleters=function(e){g.length=0,e&&g.push.apply(g,e)},t.addCompleter=function(e){g.push(e)},t.textCompleter=d,t.keyWordCompleter=u,t.snippetCompleter=m,{name:"expandSnippet",exec:function(e){return l.expandWithTab(e)},bindKey:"Tab"}),b=function(e){(e="string"==typeof e?a.$modes[e]:e)&&(l.files||(l.files={}),v(e.$id,e.snippetFileId),e.modes&&e.modes.forEach(b))},v=function(t,e){e&&t&&!l.files[t]&&(l.files[t]={},a.loadModule(e,function(e){e&&(!(l.files[t]=e).snippets&&e.snippetText&&(e.snippets=l.parseSnippetFile(e.snippetText)),l.register(e.snippets||[],e.scope),e.includeScopes&&(l.snippetMap[e.scope].includeScopes=e.includeScopes,e.includeScopes.forEach(function(e){b("ace/mode/"+e)})))}))},y=c.delayedCall(function(){x(s)},0),x=function(e){var t=e.editor,i=p.getCompletionPrefix(t),e=e.args,e=p.triggerAutocomplete(t,e);(i&&i.length>=t.$liveAutocompletionThreshold||e)&&((i=r.for(t)).autoShown=!0,i.showPopup(t))},d=e("../editor").Editor;e("../config").defineOptions(d.prototype,"editor",{enableBasicAutocompletion:{set:function(e){e?(r.for(this),this.completers||(this.completers=Array.isArray(e)?e:g),this.commands.addCommand(r.startCommand)):this.commands.removeCommand(r.startCommand)},value:!1},enableLiveAutocompletion:{set:function(e){e?(this.completers||(this.completers=Array.isArray(e)?e:g),this.commands.on("afterExec",n)):this.commands.off("afterExec",n)},value:!1},liveAutocompletionDelay:{initialValue:0},liveAutocompletionThreshold:{initialValue:0},enableSnippets:{set:function(e){e?(this.commands.addCommand(f),this.on("changeMode",o),o(0,this)):(this.commands.removeCommand(f),this.off("changeMode",o))},value:!1}}),t.MarkerGroup=h}),define("ace/ext/inline_autocomplete",["require","exports","module","ace/keyboard/hash_handler","ace/autocomplete/inline","ace/autocomplete","ace/autocomplete","ace/editor","ace/autocomplete/util","ace/lib/dom","ace/lib/lang","ace/ext/command_bar","ace/ext/command_bar","ace/ext/language_tools","ace/ext/language_tools","ace/ext/language_tools","ace/config"],function(e,t,i){"use strict";function o(e,t){t.completer&&t.completer.destroy()}var n=e("../keyboard/hash_handler").HashHandler,s=e("../autocomplete/inline").AceInline,r=e("../autocomplete").FilteredList,a=e("../autocomplete").CompletionProvider,l=e("../editor").Editor,c=e("../autocomplete/util"),p=e("../lib/dom"),h=e("../lib/lang"),d=e("./command_bar").CommandBarTooltip,u=e("./command_bar").BUTTON_CLASS_NAME,m=e("./language_tools").snippetCompleter,g=e("./language_tools").textCompleter,f=e("./language_tools").keyWordCompleter,b=(v.prototype.getInlineRenderer=function(){return this.inlineRenderer||(this.inlineRenderer=new s),this.inlineRenderer},v.prototype.getInlineTooltip=function(){return this.inlineTooltip||(this.inlineTooltip=v.createInlineTooltip(document.body||document.documentElement)),this.inlineTooltip},v.prototype.show=function(e){this.activated=!0,this.editor.completer!==this&&(this.editor.completer&&this.editor.completer.detach(),this.editor.completer=this),this.editor.on("changeSelection",this.changeListener),this.editor.on("blur",this.blurListener),this.updateCompletions(e)},v.prototype.$open=function(){this.editor.textInput.setAriaOptions&&this.editor.textInput.setAriaOptions({}),this.editor.keyBinding.addKeyboardHandler(this.keyboardHandler),this.getInlineTooltip().attach(this.editor),-1===this.$index?this.setIndex(0):this.$showCompletion(),this.changeTimer.cancel()},v.prototype.insertMatch=function(){var e=this.getCompletionProvider().insertByIndex(this.editor,this.$index);return this.detach(),e},v.prototype.changeListener=function(e){var t=this.editor.selection.lead;(t.row!=this.base.row||t.column<this.base.column)&&this.detach(),this.activated?this.changeTimer.schedule():this.detach()},v.prototype.blurListener=function(e){this.detach()},v.prototype.goTo=function(e){if(this.completions&&this.completions.filtered){var t=this.completions.filtered.length;switch(e.toLowerCase()){case"prev":this.setIndex((this.$index-1+t)%t);break;case"next":this.setIndex((this.$index+1+t)%t);break;case"first":this.setIndex(0);break;case"last":this.setIndex(this.completions.filtered.length-1)}}},v.prototype.getLength=function(){return this.completions&&this.completions.filtered?this.completions.filtered.length:0},v.prototype.getData=function(e){return null==e||null===e?this.completions.filtered[this.$index]:this.completions.filtered[e]},v.prototype.getIndex=function(){return this.$index},v.prototype.isOpen=function(){return 0<=this.$index},v.prototype.setIndex=function(e){this.completions&&this.completions.filtered&&((e=Math.max(-1,Math.min(this.completions.filtered.length-1,e)))!==this.$index&&(this.$index=e,this.$showCompletion()))},v.prototype.getCompletionProvider=function(e){return this.completionProvider||(this.completionProvider=new a(e)),this.completionProvider},v.prototype.$showCompletion=function(){this.getInlineRenderer().show(this.editor,this.completions.filtered[this.$index],this.completions.filterText)||this.getInlineRenderer().hide(),this.inlineTooltip&&this.inlineTooltip.isShown()&&this.inlineTooltip.update()},v.prototype.$updatePrefix=function(){var e=this.editor.getCursorPosition(),e=this.editor.session.getTextRange({start:this.base,end:e});return this.completions.setFilter(e),this.completions.filtered.length&&(1!=this.completions.filtered.length||this.completions.filtered[0].value!=e||this.completions.filtered[0].snippet)?(this.$open(this.editor,e),e):this.detach()},v.prototype.updateCompletions=function(e){var t="";if(e&&e.matches)return o=this.editor.getSelectionRange().start,this.base=this.editor.session.doc.createAnchor(o.row,o.column),this.base.$insertRight=!0,this.completions=new r(e.matches),this.$open(this.editor,"");this.base&&this.completions&&(t=this.$updatePrefix());var i=this.editor.getSession(),o=this.editor.getCursorPosition(),t=c.getCompletionPrefix(this.editor),e=(this.base=i.doc.createAnchor(o.row,o.column-t.length),{exactMatch:this.base.$insertRight=!0,ignoreCaption:!0});this.getCompletionProvider({prefix:t,base:this.base,pos:o}).provideCompletions(this.editor,e,function(e,t,i){var o=t.filtered,n=c.getCompletionPrefix(this.editor);if(i){if(!o.length)return this.detach();if(1==o.length&&o[0].value==n&&!o[0].snippet)return this.detach()}this.completions=t,this.$open(this.editor,n)}.bind(this))},v.prototype.detach=function(){this.editor&&(this.editor.keyBinding.removeKeyboardHandler(this.keyboardHandler),this.editor.off("changeSelection",this.changeListener),this.editor.off("blur",this.blurListener)),this.changeTimer.cancel(),this.inlineTooltip&&this.inlineTooltip.detach(),this.setIndex(-1),this.completionProvider&&this.completionProvider.detach(),this.inlineRenderer&&this.inlineRenderer.isOpen()&&this.inlineRenderer.hide(),this.base&&this.base.detach(),this.activated=!1,this.completionProvider=this.completions=this.base=null},v.prototype.destroy=function(){this.detach(),this.inlineRenderer&&this.inlineRenderer.destroy(),this.inlineTooltip&&this.inlineTooltip.destroy(),this.editor&&this.editor.completer==this&&(this.editor.off("destroy",o),this.editor.completer=null),this.inlineTooltip=this.editor=this.inlineRenderer=null},v.prototype.updateDocTooltip=function(){},v);function v(e){this.editor=e,this.keyboardHandler=new n(this.commands),this.$index=-1,this.blurListener=this.blurListener.bind(this),this.changeListener=this.changeListener.bind(this),this.changeTimer=h.delayedCall(function(){this.updateCompletions()}.bind(this))}b.prototype.commands={Previous:{bindKey:"Alt-[",name:"Previous",exec:function(e){e.completer.goTo("prev")}},Next:{bindKey:"Alt-]",name:"Next",exec:function(e){e.completer.goTo("next")}},Accept:{bindKey:{win:"Tab|Ctrl-Right",mac:"Tab|Cmd-Right"},name:"Accept",exec:function(e){return e.completer.insertMatch()}},Close:{bindKey:"Esc",name:"Close",exec:function(e){e.completer.detach()}}},b.for=function(e){return e.completer instanceof b||(e.completer&&(e.completer.destroy(),e.completer=null),e.completer=new b(e),e.once("destroy",o)),e.completer},b.startCommand={name:"startInlineAutocomplete",exec:function(e,t){b.for(e).show(t)},bindKey:{win:"Alt-C",mac:"Option-C"}};var y=[m,g,f];e("../config").defineOptions(l.prototype,"editor",{enableInlineAutocompletion:{set:function(e){e?(this.completers||(this.completers=Array.isArray(e)?e:y),this.commands.addCommand(b.startCommand)):this.commands.removeCommand(b.startCommand)},value:!1}}),b.createInlineTooltip=function(e){var t=new d(e);return t.registerCommand("Previous",Object.assign({},b.prototype.commands.Previous,{enabled:!0,type:"button",iconCssClass:"ace_arrow_rotated"})),t.registerCommand("Position",{enabled:!1,getValue:function(e){return e?[e.completer.getIndex()+1,e.completer.getLength()].join("/"):""},type:"text",cssClass:"completion_position"}),t.registerCommand("Next",Object.assign({},b.prototype.commands.Next,{enabled:!0,type:"button",iconCssClass:"ace_arrow"})),t.registerCommand("Accept",Object.assign({},b.prototype.commands.Accept,{enabled:function(e){return!!e&&0<=e.completer.getIndex()},type:"button"})),t.registerCommand("ShowTooltip",{name:"Always Show Tooltip",exec:function(){t.setAlwaysShow(!t.getAlwaysShow())},enabled:!0,getValue:function(){return t.getAlwaysShow()},type:"checkbox"}),t},p.importCssString('\n\n.ace_icon_svg.ace_arrow,\n.ace_icon_svg.ace_arrow_rotated {\n -webkit-mask-image: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxNiAxNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTUuODM3MDEgMTVMNC41ODc1MSAxMy43MTU1TDEwLjE0NjggOEw0LjU4NzUxIDIuMjg0NDZMNS44MzcwMSAxTDEyLjY0NjUgOEw1LjgzNzAxIDE1WiIgZmlsbD0iYmxhY2siLz48L3N2Zz4=");\n}\n\n.ace_icon_svg.ace_arrow_rotated {\n transform: rotate(180deg);\n}\n\ndiv.'.concat(u,".completion_position {\n padding: 0;\n}\n"),"inlineautocomplete.css",!1),t.InlineAutocomplete=b}),window.require(["ace/ext/inline_autocomplete"],function(e){"object"==typeof module&&"object"==typeof exports&&module&&(module.exports=e)}); |