src/pyams_skin/resources/js/ext/ace/ext-language_tools.min.js
changeset 557 bca7a7e058a3
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/ace/ext-language_tools.min.js	Thu Feb 13 11:43:31 2020 +0100
@@ -0,0 +1,1 @@
+ace.define("ace/snippets",["require","exports","module","ace/lib/oop","ace/lib/event_emitter","ace/lib/lang","ace/range","ace/anchor","ace/keyboard/hash_handler","ace/tokenizer","ace/lib/dom","ace/editor"],function(e,s,t){"use strict";var i=e("./lib/oop"),n=e("./lib/event_emitter").EventEmitter,l=e("./lib/lang"),h=e("./range").Range,o=e("./anchor").Anchor,r=e("./keyboard/hash_handler").HashHandler,a=e("./tokenizer").Tokenizer,p=h.comparePoints,c=function(){this.snippetMap={},this.snippetNameMap={}};(function(){i.implement(this,n),this.getTokenizer=function(){function o(e,t,i){return e=e.substr(1),/^\d+$/.test(e)&&!i.inFormatString?[{tabstopId:parseInt(e,10)}]:[{text:e}]}function e(e){return"(?:[^\\\\"+e+"]|\\\\.)"}return c.$tokenizer=new a({start:[{regex:/:/,onMatch:function(e,t,i){return i.length&&i[0].expectIf?(i[0].expectIf=!1,i[0].elseBranch=i[0],[i[0]]):":"}},{regex:/\\./,onMatch:function(e,t,i){var n=e[1];return"}"==n&&i.length?e=n:-1!="`$\\".indexOf(n)?e=n:i.inFormatString&&("n"==n?e="\n":"t"==n?e="\n":-1!="ulULE".indexOf(n)&&(e={changeCase:n,local:"a"<n})),[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){var n=o(e.substr(1),0,i);return i.unshift(n[0]),n},next:"snippetVar"},{regex:/\n/,token:"newline",merge:!1}],snippetVar:[{regex:"\\|"+e("\\|")+"*\\|",onMatch:function(e,t,i){i[0].choices=e.slice(1,-1).split(",")},next:"start"},{regex:"/("+e("/")+"+)/(?:("+e("/")+"*)/)(\\w*):?",onMatch:function(e,t,i){var n=i[0];return n.fmtString=e,e=this.splitRegex.exec(e),n.guard=e[1],n.fmt=e[2],n.flag=e[3],""},next:"start"},{regex:"`"+e("`")+"*`",onMatch:function(e,t,i){return i[0].code=e.splice(1,-1),""},next:"start"},{regex:"\\?",onMatch:function(e,t,i){i[0]&&(i[0].expectIf=!0)},next:"start"},{regex:"([^:}\\\\]|\\\\.)*:?",token:"",next:"start"}],formatString:[{regex:"/("+e("/")+"+)/",token:"regex"},{regex:"",onMatch:function(e,t,i){i.inFormatString=!0},next:"start"}]}),c.prototype.getTokenizer=function(){return c.$tokenizer},c.$tokenizer},this.tokenizeTmSnippet=function(e,t){return this.getTokenizer().getLineTokens(e,t).tokens.map(function(e){return e.value||e})},this.$getDefaultValue=function(e,t){if(/^[A-Z]\d+$/.test(t)){var i=t.substr(1);return(this.variables[t[0]+"__"]||{})[i]}if(/^\d+$/.test(t))return(this.variables.__||{})[t];if(t=t.replace(/^TM_/,""),e){var n=e.session;switch(t){case"CURRENT_WORD":var o=n.getWordRange();case"SELECTION":case"SELECTED_TEXT":return n.getTextRange(o);case"CURRENT_LINE":return n.getLine(e.getCursorPosition().row);case"PREV_LINE":return n.getLine(e.getCursorPosition().row-1);case"LINE_INDEX":return e.getCursorPosition().column;case"LINE_NUMBER":return e.getCursorPosition().row+1;case"SOFT_TABS":return n.getUseSoftTabs()?"YES":"NO";case"TAB_SIZE":return n.getTabSize();case"FILENAME":case"FILEPATH":return"";case"FULLNAME":return"Ace"}}},this.variables={},this.getVariableValue=function(e,t){return this.variables.hasOwnProperty(t)?this.variables[t](e,t)||"":this.$getDefaultValue(e,t)||""},this.tmStrFormat=function(e,t,r){var i=t.flag||"",n=t.guard;n=new RegExp(n,i.replace(/[^gi]/,""));var s=this.tokenizeTmSnippet(t.fmt,"formatString"),a=this,o=e.replace(n,function(){a.variables.__=arguments;for(var e=a.resolveVariables(s,r),t="E",i=0;i<e.length;i++){var n=e[i];if("object"==typeof n)if(e[i]="",n.changeCase&&n.local){var o=e[i+1];o&&"string"==typeof o&&("u"==n.changeCase?e[i]=o[0].toUpperCase():e[i]=o[0].toLowerCase(),e[i+1]=o.substr(1))}else n.changeCase&&(t=n.changeCase);else"U"==t?e[i]=n.toUpperCase():"L"==t&&(e[i]=n.toLowerCase())}return e.join("")});return this.variables.__=null,o},this.resolveVariables=function(i,e){function t(e){var t=i.indexOf(e,o+1);-1!=t&&(o=t)}for(var n=[],o=0;o<i.length;o++){var r=i[o];if("string"==typeof r)n.push(r);else{if("object"!=typeof r)continue;if(r.skip)t(r);else{if(r.processed<o)continue;if(r.text){var s=this.getVariableValue(e,r.text);s&&r.fmtString&&(s=this.tmStrFormat(s,r)),r.processed=o,null==r.expectIf?s&&(n.push(s),t(r)):s?r.skip=r.elseBranch:t(r)}else null!=r.tabstopId?n.push(r):null!=r.changeCase&&n.push(r)}}}return n},this.insertSnippetForSelection=function(e,t){function i(e){for(var t=[],i=0;i<e.length;i++){var n=e[i];if("object"==typeof n){if(l[n.tabstopId])continue;n=t[e.lastIndexOf(n,i-1)]||{tabstopId:n.tabstopId}}t[i]=n}return t}var n=e.getCursorPosition(),o=e.session.getLine(n.row),r=e.session.getTabString(),s=o.match(/^\s*/)[0];n.column<s.length&&(s=s.slice(0,n.column)),t=t.replace(/\r/g,"");var a=this.tokenizeTmSnippet(t);a=(a=this.resolveVariables(a,e)).map(function(e){return"\n"==e?e+s:"string"==typeof e?e.replace(/\t/g,r):e});var c=[];a.forEach(function(e,t){if("object"==typeof e){var i=e.tabstopId,n=c[i];if(n||((n=c[i]=[]).index=i,n.value=""),-1===n.indexOf(e)){n.push(e);var o=a.indexOf(e,t+1);if(-1!==o){var r=a.slice(t+1,o);r.some(function(e){return"object"==typeof e})&&!n.value?n.value=r:r.length&&(!n.value||"string"!=typeof n.value)&&(n.value=r.join(""))}}}}),c.forEach(function(e){e.length=0});for(var l={},h=0;h<a.length;h++){var p=a[h];if("object"==typeof p){var u=p.tabstopId,d=a.indexOf(p,h+1);if(l[u])l[u]===p&&(l[u]=null);else{var g=c[u],f="string"==typeof g.value?[g.value]:i(g.value);f.unshift(h+1,Math.max(0,d-h)),f.push(p),l[u]=p,a.splice.apply(a,f),-1===g.indexOf(p)&&g.push(p)}}}var m=0,b=0,v="";a.forEach(function(e){if("string"==typeof e){var t=e.split("\n");1<t.length?(b=t[t.length-1].length,m+=t.length-1):b+=e.length,v+=e}else e.start?e.end={row:m,column:b}:e.start={row:m,column:b}});var x=e.getSelectionRange(),w=e.session.replace(x,v),T=new S(e),y=e.inVirtualSelectionMode&&e.selection.index;T.addTabstops(c,x.start,w,y)},this.insertSnippet=function(e,t){var i=this;if(e.inVirtualSelectionMode)return i.insertSnippetForSelection(e,t);e.forEachSelection(function(){i.insertSnippetForSelection(e,t)},null,{keepOrder:!0}),e.tabstopManager&&e.tabstopManager.tabNext()},this.$getScope=function(e){var t=e.session.$mode.$id||"";if("html"===(t=t.split("/").pop())||"php"===t){"php"===t&&!e.session.$mode.inlinePhp&&(t="html");var i=e.getCursorPosition(),n=e.session.getState(i.row);"object"==typeof n&&(n=n[0]),n.substring&&("js-"==n.substring(0,3)?t="javascript":"css-"==n.substring(0,4)?t="css":"php-"==n.substring(0,4)&&(t="php"))}return t},this.getActiveScopes=function(e){var t=this.$getScope(e),i=[t],n=this.snippetMap;return n[t]&&n[t].includeScopes&&i.push.apply(i,n[t].includeScopes),i.push("_"),i},this.expandWithTab=function(e,t){var i=this,n=e.forEachSelection(function(){return i.expandSnippetForSelection(e,t)},null,{keepOrder:!0});return n&&e.tabstopManager&&e.tabstopManager.tabNext(),n},this.expandSnippetForSelection=function(e,t){var i,n=e.getCursorPosition(),o=e.session.getLine(n.row),r=o.substring(0,n.column),s=o.substr(n.column),a=this.snippetMap;return this.getActiveScopes(e).some(function(e){var t=a[e];return t&&(i=this.findMatchingSnippet(t,r,s)),!!i},this),!!i&&(t&&t.dryRun||(e.session.doc.removeInLine(n.row,n.column-i.replaceBefore.length,n.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)},this.findMatchingSnippet=function(e,t,i){for(var n=e.length;n--;){var o=e[n];if((!o.startRe||o.startRe.test(t))&&((!o.endRe||o.endRe.test(i))&&(o.startRe||o.endRe)))return o.matchBefore=o.startRe?o.startRe.exec(t):[""],o.matchAfter=o.endRe?o.endRe.exec(i):[""],o.replaceBefore=o.triggerRe?o.triggerRe.exec(t)[0]:"",o.replaceAfter=o.endTriggerRe?o.endTriggerRe.exec(i)[0]:"",o}},this.snippetMap={},this.snippetNameMap={},this.register=function(e,n){function o(e){return e&&!/^\^?\(.*\)\$?$|^\\b$/.test(e)&&(e="(?:"+e+")"),e||""}function r(e,t,i){return e=o(e),t=o(t),i?(e=t+e)&&"$"!=e[e.length-1]&&(e+="$"):(e+=t)&&"^"!=e[0]&&(e="^"+e),new RegExp(e)}function t(e){e.scope||(e.scope=n||"_"),n=e.scope,s[n]||(s[n]=[],a[n]={});var t=a[n];if(e.name){var i=t[e.name];i&&c.unregister(i),t[e.name]=e}s[n].push(e),e.tabTrigger&&!e.trigger&&(!e.guard&&/^\w/.test(e.tabTrigger)&&(e.guard="\\b"),e.trigger=l.escapeRegExp(e.tabTrigger)),(e.trigger||e.guard||e.endTrigger||e.endGuard)&&(e.startRe=r(e.trigger,e.guard,!0),e.triggerRe=new RegExp(e.trigger),e.endRe=r(e.endTrigger,e.endGuard,!0),e.endTriggerRe=new RegExp(e.endTrigger))}var s=this.snippetMap,a=this.snippetNameMap,c=this;e||(e=[]),e&&e.content?t(e):Array.isArray(e)&&e.forEach(t),this._signal("registerSnippets",{scope:n})},this.unregister=function(e,o){function t(e){var t=s[e.scope||o];if(t&&t[e.name]){delete t[e.name];var i=r[e.scope||o],n=i&&i.indexOf(e);0<=n&&i.splice(n,1)}}var r=this.snippetMap,s=this.snippetNameMap;e.content?t(e):Array.isArray(e)&&e.forEach(t)},this.parseSnippetFile=function(e){e=e.replace(/\r/g,"");for(var t,i=[],n={},o=/^#.*|^({[\s\S]*})\s*$|^(\S+) (.*)$|^((?:\n*\t.*)+)/gm;t=o.exec(e);){if(t[1])try{n=JSON.parse(t[1]),i.push(n)}catch(e){}if(t[4])n.content=t[4].replace(/^\t/gm,""),i.push(n),n={};else{var r=t[2],s=t[3];if("regex"==r){var a=/\/((?:[^\/\\]|\\.)*)|$/g;n.guard=a.exec(s)[1],n.trigger=a.exec(s)[1],n.endTrigger=a.exec(s)[1],n.endGuard=a.exec(s)[1]}else"snippet"==r?(n.tabTrigger=s.match(/^\S*/)[0],n.name||(n.name=s)):n[r]=s}}return i},this.getSnippetByName=function(i,e){var n,o=this.snippetNameMap;return this.getActiveScopes(e).some(function(e){var t=o[e];return t&&(n=t[i]),!!n},this),n}}).call(c.prototype);var S=function(e){if(e.tabstopManager)return e.tabstopManager;(e.tabstopManager=this).$onChange=this.onChange.bind(this),this.$onChangeSelection=l.delayedCall(this.onChangeSelection.bind(this)).schedule,this.$onChangeSession=this.onChangeSession.bind(this),this.$onAfterExec=this.onAfterExec.bind(this),this.attach(e)};(function(){this.attach=function(e){this.index=0,this.ranges=[],this.tabstops=[],this.$openTabstops=null,this.selectedTabstop=null,this.editor=e,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)},this.detach=function(){this.tabstops.forEach(this.removeTabstopMarkers,this),this.ranges=null,this.tabstops=null,this.selectedTabstop=null,this.editor.removeListener("change",this.$onChange),this.editor.removeListener("changeSelection",this.$onChangeSelection),this.editor.removeListener("changeSession",this.$onChangeSession),this.editor.commands.removeListener("afterExec",this.$onAfterExec),this.editor.keyBinding.removeKeyboardHandler(this.keyboardHandler),this.editor.tabstopManager=null,this.editor=null},this.onChange=function(e){var t="r"==e.action[0],i=e.start,n=e.end,o=i.row,r=n.row-o,s=n.column-i.column;if(t&&(r=-r,s=-s),!this.$inChange&&t){var a=this.selectedTabstop;if(a&&!a.some(function(e){return p(e.start,i)<=0&&0<=p(e.end,n)}))return this.detach()}for(var c=this.ranges,l=0;l<c.length;l++){var h=c[l];h.end.row<i.row||(t&&p(i,h.start)<0&&0<p(n,h.end)?(this.removeRange(h),l--):(h.start.row==o&&h.start.column>i.column&&(h.start.column+=s),h.end.row==o&&h.end.column>=i.column&&(h.end.column+=s),h.start.row>=o&&(h.start.row+=r),h.end.row>=o&&(h.end.row+=r),0<p(h.start,h.end)&&this.removeRange(h)))}c.length||this.detach()},this.updateLinkedFields=function(){var e=this.selectedTabstop;if(e&&e.hasLinkedRanges){this.$inChange=!0;for(var t=this.editor.session,i=t.getTextRange(e.firstNonLinked),n=e.length;n--;){var o=e[n];if(o.linked){var r=s.snippetManager.tmStrFormat(i,o.original);t.replace(o,r)}}this.$inChange=!1}},this.onAfterExec=function(e){e.command&&!e.command.readOnly&&this.updateLinkedFields()},this.onChangeSelection=function(){if(this.editor){for(var e=this.editor.selection.lead,t=this.editor.selection.anchor,i=this.editor.selection.isEmpty(),n=this.ranges.length;n--;)if(!this.ranges[n].linked){var o=this.ranges[n].contains(e.row,e.column),r=i||this.ranges[n].contains(t.row,t.column);if(o&&r)return}this.detach()}},this.onChangeSession=function(){this.detach()},this.tabNext=function(e){var t=this.tabstops.length,i=this.index+(e||1);(i=Math.min(Math.max(i,1),t))==t&&(i=0),this.selectTabstop(i),0===i&&this.detach()},this.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){if(this.selectedTabstop=t,this.editor.inVirtualSelectionMode)this.editor.selection.setRange(t.firstNonLinked);else{var i=this.editor.multiSelect;i.toSingleRange(t.firstNonLinked.clone());for(var n=t.length;n--;)t.hasLinkedRanges&&t[n].linked||i.addRange(t[n].clone(),!0);i.ranges[0]&&i.addRange(i.ranges[0].clone())}this.editor.keyBinding.addKeyboardHandler(this.keyboardHandler)}},this.addTabstops=function(e,s,t){if(this.$openTabstops||(this.$openTabstops=[]),!e[0]){var i=h.fromPoints(t,t);g(i.start,s),g(i.end,s),e[0]=[i],e[0].index=0}var a=[this.index+1,0],c=this.ranges;e.forEach(function(e,t){for(var i=this.$openTabstops[t]||e,n=e.length;n--;){var o=e[n],r=h.fromPoints(o.start,o.end||o.start);d(r.start,s),d(r.end,s),r.original=o,r.tabstop=i,c.push(r),i!=e?i.unshift(r):i[n]=r,o.fmtString?(r.linked=!0,i.hasLinkedRanges=!0):i.firstNonLinked||(i.firstNonLinked=r)}i.firstNonLinked||(i.hasLinkedRanges=!1),i===e&&(a.push(i),this.$openTabstops[t]=i),this.addTabstopMarkers(i)},this),2<a.length&&(this.tabstops.length&&a.push(a.splice(2,1)[0]),this.tabstops.splice.apply(this.tabstops,a))},this.addTabstopMarkers=function(e){var t=this.editor.session;e.forEach(function(e){e.markerId||(e.markerId=t.addMarker(e,"ace_snippet-marker","text"))})},this.removeTabstopMarkers=function(e){var t=this.editor.session;e.forEach(function(e){t.removeMarker(e.markerId),e.markerId=null})},this.removeRange=function(e){var t=e.tabstop.indexOf(e);e.tabstop.splice(t,1),t=this.ranges.indexOf(e),this.ranges.splice(t,1),this.editor.session.removeMarker(e.markerId),e.tabstop.length||(-1!=(t=this.tabstops.indexOf(e.tabstop))&&this.tabstops.splice(t,1),this.tabstops.length||this.detach())},this.keyboardHandler=new r,this.keyboardHandler.bindKeys({Tab:function(e){s.snippetManager&&s.snippetManager.expandWithTab(e)||e.tabstopManager.tabNext(1)},"Shift-Tab":function(e){e.tabstopManager.tabNext(-1)},Esc:function(e){e.tabstopManager.detach()},Return:function(e){return!1}})}).call(S.prototype);var u={};u.onChange=o.prototype.onChange,u.setPosition=function(e,t){this.pos.row=e,this.pos.column=t},u.update=function(e,t,i){this.$insertRight=i,this.pos=e,this.onChange(t)};var d=function(e,t){0==e.row&&(e.column+=t.column),e.row+=t.row},g=function(e,t){e.row==t.row&&(e.column-=t.column),e.row-=t.row};e("./lib/dom").importCssString(".ace_snippet-marker {    -moz-box-sizing: border-box;    box-sizing: border-box;    background: rgba(194, 193, 208, 0.09);    border: 1px dotted rgba(211, 208, 235, 0.62);    position: absolute;}"),s.snippetManager=new c;var f=e("./editor").Editor;(function(){this.insertSnippet=function(e,t){return s.snippetManager.insertSnippet(this,e,t)},this.expandSnippet=function(e){return s.snippetManager.expandWithTab(this,e)}}).call(f.prototype)}),ace.define("ace/autocomplete/popup",["require","exports","module","ace/virtual_renderer","ace/editor","ace/range","ace/lib/event","ace/lib/lang","ace/lib/dom"],function(e,t,i){"use strict";var n=e("../virtual_renderer").VirtualRenderer,o=e("../editor").Editor,c=e("../range").Range,l=e("../lib/event"),p=e("../lib/lang"),d=e("../lib/dom"),g=function(e){var t=new n(e);t.$maxLines=4;var i=new o(t);return i.setHighlightActiveLine(!1),i.setShowPrintMargin(!1),i.renderer.setShowGutter(!1),i.renderer.setHighlightGutterLine(!1),i.$mouseHandler.$focusTimeout=0,i.$highlightTagPending=!0,i};d.importCssString(".ace_editor.ace_autocomplete .ace_marker-layer .ace_active-line {    background-color: #CAD6FA;    z-index: 1;}.ace_dark.ace_editor.ace_autocomplete .ace_marker-layer .ace_active-line {    background-color: #3a674e;}.ace_editor.ace_autocomplete .ace_line-hover {    border: 1px solid #abbffe;    margin-top: -1px;    background: rgba(233,233,253,0.4);    position: absolute;    z-index: 2;}.ace_dark.ace_editor.ace_autocomplete .ace_line-hover {    border: 1px solid rgba(109, 150, 13, 0.8);    background: rgba(58, 103, 78, 0.62);}.ace_completion-meta {    opacity: 0.5;    margin: 0.9em;}.ace_editor.ace_autocomplete .ace_completion-highlight{    color: #2d69c7;}.ace_dark.ace_editor.ace_autocomplete .ace_completion-highlight{    color: #93ca12;}.ace_editor.ace_autocomplete {    width: 300px;    z-index: 200000;    border: 1px lightgray solid;    position: fixed;    box-shadow: 2px 3px 5px rgba(0,0,0,.2);    line-height: 1.4;    background: #fefefe;    color: #111;}.ace_dark.ace_editor.ace_autocomplete {    border: 1px #484747 solid;    box-shadow: 2px 3px 5px rgba(0, 0, 0, 0.51);    line-height: 1.4;    background: #25282c;    color: #c1c1c1;}","autocompletion.css"),t.AcePopup=function(e){var t=d.createElement("div"),u=new g(t);e&&e.appendChild(t),t.style.display="none",u.renderer.content.style.cursor="default",u.renderer.setStyle("ace_autocomplete"),u.setOption("displayIndentGuides",!1),u.setOption("dragDelay",150);var i=function(){};u.focus=i,u.$isFocused=!0,u.renderer.$cursorLayer.restartTimer=i,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),o.start.row=o.end.row=t.row,e.stop()});var h,n=new c(-1,0,-1,1/0),o=new c(-1,0,-1,1/0);o.id=u.session.addMarker(o,"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){if(h){if(h.x!=e.x||h.y!=e.y){(h=e).scrollTop=u.renderer.scrollTop;var t=h.getDocumentPosition().row;n.start.row!=t&&(n.id||u.setRow(t),s(t))}}else h=e}),u.renderer.on("beforeRender",function(){if(h&&-1!=n.start.row){h.$pos=null;var e=h.getDocumentPosition().row;n.id||u.setRow(e),s(e,!0)}}),u.renderer.on("afterRender",function(){var e=u.getRow(),t=u.renderer.$textLayer,i=t.element.childNodes[e-t.config.firstRow];i!==t.selectedNode&&t.selectedNode&&d.removeCssClass(t.selectedNode,"ace_selected"),(t.selectedNode=i)&&d.addCssClass(i,"ace_selected")});var r=function(){s(-1)},s=function(e,t){e!==n.start.row&&(n.start.row=n.end.row=e,t||u.session._emit("changeBackMarker"),u._emit("changeHoverMarker"))};u.getHoveredRow=function(){return n.start.row},l.addListener(u.container,"mouseout",r),u.on("hide",r),u.on("changeSelection",r),u.session.doc.getLength=function(){return u.data.length},u.session.doc.getLine=function(e){var t=u.data[e];return"string"==typeof t?t:t&&t.value||""};var a=u.session.bgTokenizer;return a.$tokenizeRow=function(e){function t(e,t){e&&n.push({type:(i.className||"")+(t||""),value:e})}var i=u.data[e],n=[];if(!i)return n;"string"==typeof i&&(i={value:i});for(var o=i.caption||i.value||i.name,r=o.toLowerCase(),s=(u.filterText||"").toLowerCase(),a=0,c=0,l=0;l<=s.length;l++)if(l!=c&&(i.matchMask&1<<l||l==s.length)){var h=s.slice(c,l);c=l;var p=r.indexOf(h,a);if(-1==p)continue;t(o.slice(a,p),""),a=p+h.length,t(o.slice(p,a),"completion-highlight")}return t(o.slice(a,o.length),""),i.meta&&n.push({type:"completion-meta",value:i.meta}),n},a.$updateOnChange=i,a.start=i,u.session.$computeWidth=function(){return this.screenWidth=0},u.isOpen=!1,u.isTopdown=!1,u.autoSelect=!0,u.filterText="",u.data=[],u.setData=function(e,t){u.filterText=t||"",u.setValue(p.stringRepeat("\n",e.length),-1),u.data=e||[],u.setRow(0)},u.getData=function(e){return u.data[e]},u.getRow=function(){return o.start.row},u.setRow=function(e){e=Math.max(this.autoSelect?0:-1,Math.min(this.data.length,e)),o.start.row!=e&&(u.selection.clearSelection(),o.start.row=o.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",this._signal("hide"),u.isOpen=!1},u.show=function(e,t,i){var n=this.container,o=window.innerHeight,r=window.innerWidth,s=this.renderer,a=s.$maxLines*t*1.4,c=e.top+this.$borderSize;o/2<c&&!i&&o<c+t+a?(s.$maxPixelHeight=c-2*this.$borderSize,n.style.top="",n.style.bottom=o-c+"px",u.isTopdown=!1):(c+=t,s.$maxPixelHeight=o-c-.2*t,n.style.top=c+"px",n.style.bottom="",u.isTopdown=!0),n.style.display="";var l=e.left;l+n.offsetWidth>r&&(l=r-n.offsetWidth),n.style.left=l+"px",this._signal("show"),h=null,u.isOpen=!0},u.getTextLeftOffset=function(){return this.$borderSize+this.renderer.$padding+this.$imageSize},u.$imageSize=0,u.$borderSize=1,u}}),ace.define("ace/autocomplete/util",["require","exports","module"],function(e,t,i){"use strict";t.parForEach=function(e,t,i){var n=0,o=e.length;0===o&&i();for(var r=0;r<o;r++)t(e[r],function(e,t){++n===o&&i(e,t)})};var r=/[a-zA-Z_0-9\$\-\u00A2-\uFFFF]/;t.retrievePrecedingIdentifier=function(e,t,i){i=i||r;for(var n=[],o=t-1;0<=o&&i.test(e[o]);o--)n.push(e[o]);return n.reverse().join("")},t.retrieveFollowingIdentifier=function(e,t,i){i=i||r;for(var n=[],o=t;o<e.length&&i.test(e[o]);o++)n.push(e[o]);return n},t.getCompletionPrefix=function(e){var t,i=e.getCursorPosition(),n=e.session.getLine(i.row);return e.completers.forEach(function(e){e.identifierRegexps&&e.identifierRegexps.forEach(function(e){!t&&e&&(t=this.retrievePrecedingIdentifier(n,i.column,e))}.bind(this))}.bind(this)),t||this.retrievePrecedingIdentifier(n,i.column)}}),ace.define("ace/autocomplete",["require","exports","module","ace/keyboard/hash_handler","ace/autocomplete/popup","ace/autocomplete/util","ace/lib/event","ace/lib/lang","ace/lib/dom","ace/snippets"],function(e,t,i){"use strict";var n=e("./keyboard/hash_handler").HashHandler,o=e("./autocomplete/popup").AcePopup,l=e("./autocomplete/util"),r=(e("./lib/event"),e("./lib/lang")),s=e("./lib/dom"),a=e("./snippets").snippetManager,c=function(){this.autoInsert=!1,this.autoSelect=!0,this.exactMatch=!1,this.gatherCompletionsId=0,this.keyboardHandler=new n,this.keyboardHandler.bindKeys(this.commands),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.changeTimer=r.delayedCall(function(){this.updateCompletions(!0)}.bind(this)),this.tooltipTimer=r.delayedCall(this.updateDocTooltip.bind(this),50)};(function(){this.$init=function(){return this.popup=new o(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.tooltipTimer.bind(null,null)),this.popup.on("select",this.tooltipTimer.bind(null,null)),this.popup.on("changeHoverMarker",this.tooltipTimer.bind(null,null)),this.popup},this.getPopup=function(){return this.popup||this.$init()},this.openPopup=function(e,t,i){this.popup||this.$init(),this.popup.autoSelect=this.autoSelect,this.popup.setData(this.completions.filtered,this.completions.filterText),e.keyBinding.addKeyboardHandler(this.keyboardHandler);var n=e.renderer;if(this.popup.setRow(this.autoSelect?0:-1),i)i&&!t&&this.detach();else{this.popup.setTheme(e.getTheme()),this.popup.setFontSize(e.getFontSize());var o=n.layerConfig.lineHeight,r=n.$cursorLayer.getPixelPosition(this.base,!0);r.left-=this.popup.getTextLeftOffset();var s=e.container.getBoundingClientRect();r.top+=s.top-n.layerConfig.offset,r.left+=s.left-e.renderer.scrollLeft,r.left+=n.gutterWidth,this.popup.show(r,o)}},this.detach=function(){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.changeTimer.cancel(),this.hideDocTooltip(),this.gatherCompletionsId+=1,this.popup&&this.popup.isOpen&&this.popup.hide(),this.base&&this.base.detach(),this.activated=!1,this.completions=this.base=null},this.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()},this.blurListener=function(e){var t=document.activeElement,i=this.editor.textInput.getElement(),n=e.relatedTarget&&this.tooltipNode&&this.tooltipNode.contains(e.relatedTarget),o=this.popup&&this.popup.container;t!=i&&t.parentNode!=o&&!n&&t!=this.tooltipNode&&e.relatedTarget!=i&&this.detach()},this.mousedownListener=function(e){this.detach()},this.mousewheelListener=function(e){this.detach()},this.goTo=function(e){var t=this.popup.getRow(),i=this.popup.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.popup.setRow(t)},this.insertMatch=function(e,t){if(e||(e=this.popup.getData(this.popup.getRow())),!e)return!1;if(e.completer&&e.completer.insertMatch)e.completer.insertMatch(this.editor,e);else{if(this.completions.filterText)for(var i,n=this.editor.selection.getAllRanges(),o=0;i=n[o];o++)i.start.column-=this.completions.filterText.length,this.editor.session.remove(i);e.snippet?a.insertSnippet(this.editor,e.snippet):this.editor.execCommand("insertstring",e.value||e)}this.detach()},this.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")},PageUp:function(e){e.completer.popup.gotoPageUp()},PageDown:function(e){e.completer.popup.gotoPageDown()}},this.gatherCompletions=function(i,n){var o=i.getSession(),r=i.getCursorPosition(),s=l.getCompletionPrefix(i);this.base=o.doc.createAnchor(r.row,r.column-s.length),this.base.$insertRight=!0;var a=[],c=i.completers.length;return i.completers.forEach(function(e,t){e.getCompletions(i,o,r,s,function(e,t){!e&&t&&(a=a.concat(t)),n(null,{prefix:l.getCompletionPrefix(i),matches:a,finished:0==--c})})}),!0},this.showPopup=function(e){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()},this.updateCompletions=function(s){if(s&&this.base&&this.completions){var e=this.editor.getCursorPosition(),t=this.editor.session.getTextRange({start:this.base,end:e});if(t==this.completions.filterText)return;return this.completions.setFilter(t),this.completions.filtered.length?1!=this.completions.filtered.length||this.completions.filtered[0].value!=t||this.completions.filtered[0].snippet?void this.openPopup(this.editor,t,s):this.detach():this.detach()}var a=this.gatherCompletionsId;this.gatherCompletions(this.editor,function(e,t){var i=function(){if(t.finished)return this.detach()}.bind(this),n=t.prefix,o=t&&t.matches;if(!o||!o.length)return i();if(0===n.indexOf(t.prefix)&&a==this.gatherCompletionsId){this.completions=new h(o),this.exactMatch&&(this.completions.exactMatch=!0),this.completions.setFilter(n);var r=this.completions.filtered;return r.length&&(1!=r.length||r[0].value!=n||r[0].snippet)?this.autoInsert&&1==r.length&&t.finished?this.insertMatch(r[0]):void this.openPopup(this.editor,n,s):i()}}.bind(this))},this.cancelContextMenu=function(){this.editor.$mouseHandler.cancelContextMenu()},this.updateDocTooltip=function(){var e=this.popup,t=e.data,i=t&&(t[e.getHoveredRow()]||t[e.getRow()]),n=null;return i&&this.editor&&this.popup.isOpen?(this.editor.completers.some(function(e){return e.getDocTooltip&&(n=e.getDocTooltip(i)),n}),n||(n=i),"string"==typeof n&&(n={docText:n}),n&&(n.docHTML||n.docText)?void this.showDocTooltip(n):this.hideDocTooltip()):this.hideDocTooltip()},this.showDocTooltip=function(e){this.tooltipNode||(this.tooltipNode=s.createElement("div"),this.tooltipNode.className="ace_tooltip ace_doc-tooltip",this.tooltipNode.style.margin=0,this.tooltipNode.style.pointerEvents="auto",this.tooltipNode.tabIndex=-1,this.tooltipNode.onblur=this.blurListener.bind(this),this.tooltipNode.onclick=this.onTooltipClick.bind(this));var t=this.tooltipNode;e.docHTML?t.innerHTML=e.docHTML:e.docText&&(t.textContent=e.docText),t.parentNode||document.body.appendChild(t);var i=this.popup,n=i.container.getBoundingClientRect();t.style.top=i.container.style.top,t.style.bottom=i.container.style.bottom,t.style.display="block",window.innerWidth-n.right<320?n.left<320?(i.isTopdown?t.style.top=n.bottom+"px":t.style.top=i.container.offsetTop-t.offsetHeight+"px",t.style.left=n.left+"px",t.style.right="",t.style.bottom=""):(t.style.right=window.innerWidth-n.left+"px",t.style.left=""):(t.style.left=n.right+1+"px",t.style.right="")},this.hideDocTooltip=function(){if(this.tooltipTimer.cancel(),this.tooltipNode){var e=this.tooltipNode;!this.editor.isFocused()&&document.activeElement==e&&this.editor.focus(),this.tooltipNode=null,e.parentNode&&e.parentNode.removeChild(e)}},this.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}}}).call(c.prototype),c.startCommand={name:"startAutocomplete",exec:function(e){e.completer||(e.completer=new c),e.completer.autoInsert=!1,e.completer.autoSelect=!0,e.completer.showPopup(e),e.completer.cancelContextMenu()},bindKey:"Ctrl-Space|Ctrl-Shift-Space|Alt-Space"};var h=function(e,t){this.all=e,this.filtered=e,this.filterText=t||"",this.exactMatch=!1};(function(){this.setFilter=function(e){if(e.length>this.filterText&&0===e.lastIndexOf(this.filterText,0))var t=this.filtered;else t=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)<(t.caption||t.value)});var i=null;t=t.filter(function(e){var t=e.snippet||e.caption||e.value;return t!==i&&(i=t,!0)}),this.filtered=t},this.filterCompletions=function(e,t){var i=[],n=t.toUpperCase(),o=t.toLowerCase();e:for(var r,s=0;r=e[s];s++){var a=r.caption||r.value||r.snippet;if(a){var c,l,h=-1,p=0,u=0;if(this.exactMatch){if(t!==a.substr(0,t.length))continue e}else{var d=a.toLowerCase().indexOf(o);if(-1<d)u=d;else for(var g=0;g<t.length;g++){var f=a.indexOf(o[g],h+1),m=a.indexOf(n[g],h+1);if((c=0<=f&&(m<0||f<m)?f:m)<0)continue e;0<(l=c-h-1)&&(-1===h&&(u+=10),u+=l,p|=1<<g),h=c}}r.matchMask=p,r.exactMatch=u?0:1,r.$score=(r.score||0)-u,i.push(r)}}return i}}).call(h.prototype),t.Autocomplete=c,t.FilteredList=h}),ace.define("ace/autocomplete/text_completer",["require","exports","module","ace/range"],function(e,t,i){function s(e,t){var i,o=(i=t,e.getTextRange(n.fromPoints({row:0,column:0},i)).split(c).length-1),r=e.getValue().split(c),s=Object.create(null),a=r[o];return r.forEach(function(e,t){if(e&&e!==a){var i=Math.abs(o-t),n=r.length-i;s[e]?s[e]=Math.max(n,s[e]):s[e]=n}}),s}var n=e("../range").Range,c=/[^a-zA-Z_0-9\$\-\u00C0-\u1FFF\u2C00-\uD7FF\w]+/;t.getCompletions=function(e,t,i,n,o){var r=s(t,i);o(null,Object.keys(r).map(function(e){return{caption:e,value:e,score:r[e],meta:"local"}}))}}),ace.define("ace/ext/language_tools",["require","exports","module","ace/snippets","ace/autocomplete","ace/config","ace/lib/lang","ace/autocomplete/util","ace/autocomplete/text_completer","ace/editor","ace/config"],function(e,t,i){"use strict";var l=e("../snippets").snippetManager,n=e("../autocomplete").Autocomplete,o=e("../config"),r=e("../lib/lang"),s=e("../autocomplete/util"),a=e("../autocomplete/text_completer"),c={getCompletions:function(e,t,i,n,o){if(t.$mode.completer)return t.$mode.completer.getCompletions(e,t,i,n,o);var r=e.session.getState(i.row);o(null,t.$mode.getCompletions(r,t,i,n))}},h={getCompletions:function(e,t,i,n,o){var r=[],s=t.getTokenAt(i.row,i.column);s&&s.type.match(/(tag-name|tag-open|tag-whitespace|attribute-name|attribute-value)\.xml$/)?r.push("html-tag"):r=l.getActiveScopes(e);var a=l.snippetMap,c=[];r.forEach(function(e){for(var t=a[e]||[],i=t.length;i--;){var n=t[i],o=n.name||n.tabTrigger;o&&c.push({caption:o,snippet:n.content,meta:n.tabTrigger&&!n.name?n.tabTrigger+"⇥ ":"snippet",type:"snippet"})}},this),o(null,c)},getDocTooltip:function(e){"snippet"==e.type&&!e.docHTML&&(e.docHTML=["<b>",r.escapeHTML(e.caption),"</b>","<hr></hr>",r.escapeHTML(e.snippet)].join(""))}},p=[h,a,c];t.setCompleters=function(e){p.length=0,e&&p.push.apply(p,e)},t.addCompleter=function(e){p.push(e)},t.textCompleter=a,t.keyWordCompleter=c,t.snippetCompleter=h;var u={name:"expandSnippet",exec:function(e){return l.expandWithTab(e)},bindKey:"Tab"},d=function(e,t){g(t.session.$mode)},g=function(e){var t=e.$id;l.files||(l.files={}),f(t),e.modes&&e.modes.forEach(g)},f=function(t){if(t&&!l.files[t]){var e=t.replace("mode","snippets");l.files[t]={},o.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){f("ace/mode/"+e)})))})}},m=function(e){var t=e.editor,i=t.completer&&t.completer.activated;if("backspace"===e.command.name)i&&!s.getCompletionPrefix(t)&&t.completer.detach();else if("insertstring"===e.command.name){s.getCompletionPrefix(t)&&!i&&(t.completer||(t.completer=new n),t.completer.autoInsert=!1,t.completer.showPopup(t))}},b=e("../editor").Editor;e("../config").defineOptions(b.prototype,"editor",{enableBasicAutocompletion:{set:function(e){e?(this.completers||(this.completers=Array.isArray(e)?e:p),this.commands.addCommand(n.startCommand)):this.commands.removeCommand(n.startCommand)},value:!1},enableLiveAutocompletion:{set:function(e){e?(this.completers||(this.completers=Array.isArray(e)?e:p),this.commands.on("afterExec",m)):this.commands.removeListener("afterExec",m)},value:!1},enableSnippets:{set:function(e){e?(this.commands.addCommand(u),this.on("changeMode",d),d(0,this)):(this.commands.removeCommand(u),this.off("changeMode",d))},value:!1}})}),ace.require(["ace/ext/language_tools"],function(e){"object"==typeof module&&"object"==typeof exports&&module&&(module.exports=e)});