diff --git a/static/js/lib/ace/src-min-noconflict/ace.js b/static/js/lib/ace/src-min-noconflict/ace.js
index 0205abf..f5ad094 100755
--- a/static/js/lib/ace/src-min-noconflict/ace.js
+++ b/static/js/lib/ace/src-min-noconflict/ace.js
@@ -2,7 +2,7 @@
 m.removeEventListener("mousewheel",o)}}function n(t){s.setPosition(t.x,t.y)}p.editor.setDefaultHandler("guttermousemove",function(u){var t=u.domEvent.target||u.domEvent.srcElement;if(f.hasCssClass(t,"ace_fold-widget")){return o()}if(l&&p.$tooltipFollowsMouse){n(u)}j=u;if(r){return}r=setTimeout(function(){r=null;if(j&&!p.isMousePressed){q()}else{o()}},50)});a.addListener(m.renderer.$gutter,"mouseout",function(t){j=null;if(!l||r){return}r=setTimeout(function(){r=null;o()},50)});m.on("changeSession",o)}function c(j){i.call(this,j)}h.inherits(c,i);(function(){this.setPosition=function(k,o){var l=window.innerWidth||document.documentElement.clientWidth;var n=window.innerHeight||document.documentElement.clientHeight;var m=this.getWidth();var j=this.getHeight();k+=15;o+=15;if(k+m>l){k-=(k+m)-l}if(o+j>n){o-=20+j}i.prototype.setPosition.call(this,k,o)}}).call(c.prototype);g.GutterHandler=b});ace.define("ace/mouse/mouse_event",["require","exports","module","ace/lib/event","ace/lib/useragent"],function(c,b,d){var f=c("../lib/event");var a=c("../lib/useragent");var e=b.MouseEvent=function(h,g){this.domEvent=h;this.editor=g;this.x=this.clientX=h.clientX;this.y=this.clientY=h.clientY;this.$pos=null;this.$inSelection=null;this.propagationStopped=false;this.defaultPrevented=false};(function(){this.stopPropagation=function(){f.stopPropagation(this.domEvent);this.propagationStopped=true};this.preventDefault=function(){f.preventDefault(this.domEvent);this.defaultPrevented=true};this.stop=function(){this.stopPropagation();this.preventDefault()};this.getDocumentPosition=function(){if(this.$pos){return this.$pos}this.$pos=this.editor.renderer.screenToTextCoordinates(this.clientX,this.clientY);return this.$pos};this.inSelection=function(){if(this.$inSelection!==null){return this.$inSelection}var g=this.editor;var i=g.getSelectionRange();if(i.isEmpty()){this.$inSelection=false}else{var h=this.getDocumentPosition();this.$inSelection=i.contains(h.row,h.column)}return this.$inSelection};this.getButton=function(){return f.getButton(this.domEvent)};this.getShiftKey=function(){return this.domEvent.shiftKey};this.getAccelKey=a.isMac?function(){return this.domEvent.metaKey}:function(){return this.domEvent.ctrlKey}}).call(e.prototype)});ace.define("ace/mouse/dragdrop_handler",["require","exports","module","ace/lib/dom","ace/lib/event","ace/lib/useragent"],function(e,g,c){var f=e("../lib/dom");var a=e("../lib/event");var d=e("../lib/useragent");var j=200;var h=200;var k=5;function i(t){var r=t.editor;var L=f.createElement("img");L.src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==";if(d.isOpera){L.style.cssText="width:1px;height:1px;position:fixed;top:0;left:0;z-index:2147483647;opacity:0;"}var M=["dragWait","dragWaitEnd","startDrag","dragReadyEnd","onMouseDrag"];M.forEach(function(y){t[y]=this[y]},this);r.addEventListener("mousedown",this.onMouseDown.bind(t));var z=r.container;var J,B,w;var C,F;var p,A=0;var q;var K;var G;var u;var D;this.onDragStart=function(N){if(this.cancelDrag||!z.draggable){var x=this;setTimeout(function(){x.startSelect();x.captureMouse(N)},0);return N.preventDefault()}F=r.getSelectionRange();var y=N.dataTransfer;y.effectAllowed=r.getReadOnly()?"copy":"copyMove";if(d.isOpera){r.container.appendChild(L);L.scrollTop=0}y.setDragImage&&y.setDragImage(L,0,0);if(d.isOpera){r.container.removeChild(L)}y.clearData();y.setData("Text",r.session.getTextRange());K=true;this.setState("drag")};this.onDragEnd=function(y){z.draggable=false;K=false;this.setState(null);if(!r.getReadOnly()){var x=y.dataTransfer.dropEffect;if(!q&&x=="move"){r.session.remove(r.getSelectionRange())}r.renderer.$cursorLayer.setBlinking(true)}this.editor.unsetStyle("ace_dragging");this.editor.renderer.setCursorStyle("")};this.onDragEnter=function(x){if(r.getReadOnly()||!n(x.dataTransfer)){return}B=x.clientX;w=x.clientY;if(!J){v()}A++;x.dataTransfer.dropEffect=q=H(x);return a.preventDefault(x)};this.onDragOver=function(x){if(r.getReadOnly()||!n(x.dataTransfer)){return}B=x.clientX;w=x.clientY;if(!J){v();A++}if(l!==null){l=null}x.dataTransfer.dropEffect=q=H(x);return a.preventDefault(x)};this.onDragLeave=function(x){A--;if(A<=0&&J){o();q=null;return a.preventDefault(x)}};this.onDrop=function(N){if(!p){return}var y=N.dataTransfer;if(K){switch(q){case"move":if(F.contains(p.row,p.column)){F={start:p,end:p}}else{F=r.moveText(F,p)}break;case"copy":F=r.moveText(F,p,true);break}}else{var x=y.getData("Text");F={start:p,end:r.session.insert(p,x)};r.focus();q=null}o();return a.preventDefault(N)};a.addListener(z,"dragstart",this.onDragStart.bind(t));a.addListener(z,"dragend",this.onDragEnd.bind(t));a.addListener(z,"dragenter",this.onDragEnter.bind(t));a.addListener(z,"dragover",this.onDragOver.bind(t));a.addListener(z,"dragleave",this.onDragLeave.bind(t));a.addListener(z,"drop",this.onDrop.bind(t));function I(O,N){var y=Date.now();var x=!N||O.row!=N.row;var Q=!N||O.column!=N.column;if(!u||x||Q){r.$blockScrolling+=1;r.moveCursorToPosition(O);r.$blockScrolling-=1;u=y;D={x:B,y:w}}else{var P=b(D.x,D.y,B,w);if(P>k){u=null}else{if(y-u>=h){r.renderer.scrollCursorIntoView();u=null}}}}function s(W,Q){var N=Date.now();var U=r.renderer.layerConfig.lineHeight;var y=r.renderer.layerConfig.characterWidth;var O=r.renderer.scroller.getBoundingClientRect();var R={x:{left:B-O.left,right:O.right-B},y:{top:w-O.top,bottom:O.bottom-w}};var T=Math.min(R.x.left,R.x.right);var P=Math.min(R.y.top,R.y.bottom);var X={row:W.row,column:W.column};if(T/y<=2){X.column+=(R.x.left<R.x.right?-3:+2)}if(P/U<=1){X.row+=(R.y.top<R.y.bottom?-1:+1)}var V=W.row!=X.row;var S=W.column!=X.column;var x=!Q||W.row!=Q.row;if(V||(S&&!x)){if(!G){G=N}else{if(N-G>=j){r.renderer.scrollCursorIntoView(X)}}}else{G=null}}function m(){var x=p;p=r.renderer.screenToTextCoordinates(B,w);I(p,x);s(p,x)}function v(){F=r.selection.toOrientedRange();J=r.session.addMarker(F,"ace_selection",r.getSelectionStyle());r.clearSelection();if(r.isFocused()){r.renderer.$cursorLayer.setBlinking(false)}clearInterval(C);m();C=setInterval(m,20);A=0;a.addListener(document,"mousemove",E)}function o(){clearInterval(C);r.session.removeMarker(J);J=null;r.$blockScrolling+=1;r.selection.fromOrientedRange(F);r.$blockScrolling-=1;if(r.isFocused()&&!K){r.renderer.$cursorLayer.setBlinking(!r.getReadOnly())}F=null;p=null;A=0;G=null;u=null;a.removeListener(document,"mousemove",E)}var l=null;function E(){if(l==null){l=setTimeout(function(){if(l!=null&&J){o()}},20)}}function n(y){var x=y.types;return !x||Array.prototype.some.call(x,function(N){return N=="text/plain"||N=="Text"})}function H(Q){var P=["copy","copymove","all","uninitialized"];var x=["move","copymove","linkmove","all","uninitialized"];var y=d.isMac?Q.altKey:Q.ctrlKey;var O="uninitialized";try{O=Q.dataTransfer.effectAllowed.toLowerCase()}catch(Q){}var N="none";if(y&&P.indexOf(O)>=0){N="copy"}else{if(x.indexOf(O)>=0){N="move"}else{if(P.indexOf(O)>=0){N="copy"}}}return N}}(function(){this.dragWait=function(){var l=Date.now()-this.mousedownEvent.time;if(l>this.editor.getDragDelay()){this.startDrag()}};this.dragWaitEnd=function(){var l=this.editor.container;l.draggable=false;this.startSelect(this.mousedownEvent.getDocumentPosition());this.selectEnd()};this.dragReadyEnd=function(l){this.editor.renderer.$cursorLayer.setBlinking(!this.editor.getReadOnly());this.editor.unsetStyle("ace_dragging");this.editor.renderer.setCursorStyle("");this.dragWaitEnd()};this.startDrag=function(){this.cancelDrag=false;var m=this.editor;var n=m.container;n.draggable=true;m.renderer.$cursorLayer.setBlinking(false);m.setStyle("ace_dragging");var l=d.isWin?"default":"move";m.renderer.setCursorStyle(l);this.setState("dragReady")};this.onMouseDrag=function(m){var l=this.editor.container;if(d.isIE&&this.state=="dragReady"){var n=b(this.mousedownEvent.x,this.mousedownEvent.y,this.x,this.y);if(n>3){l.dragDrop()}}if(this.state==="dragWait"){var n=b(this.mousedownEvent.x,this.mousedownEvent.y,this.x,this.y);if(n>0){l.draggable=false;this.startSelect(this.mousedownEvent.getDocumentPosition())}}};this.onMouseDown=function(r){if(!this.$dragEnabled){return}this.mousedownEvent=r;var o=this.editor;var n=r.inSelection();var m=r.getButton();var l=r.domEvent.detail||1;if(l===1&&m===0&&n){if(r.editor.inMultiSelectMode&&(r.getAccelKey()||r.getShiftKey())){return}this.mousedownEvent.time=Date.now();var q=r.domEvent.target||r.domEvent.srcElement;if("unselectable" in q){q.unselectable="on"}if(o.getDragDelay()){if(d.isWebKit){this.cancelDrag=true;var p=o.container;p.draggable=true}this.setState("dragWait")}else{this.startDrag()}this.captureMouse(r,this.onMouseDrag.bind(this));r.defaultPrevented=true}}}).call(i.prototype);function b(m,l,o,n){return Math.sqrt(Math.pow(o-m,2)+Math.pow(n-l,2))}g.DragdropHandler=i});ace.define("ace/lib/net",["require","exports","module","ace/lib/dom"],function(b,a,c){var d=b("./dom");a.get=function(e,g){var f=new XMLHttpRequest();f.open("GET",e,true);f.onreadystatechange=function(){if(f.readyState===4){g(f.responseText)}};f.send(null)};a.loadScript=function(g,h){var e=d.getDocumentHead();var f=document.createElement("script");f.src=g;e.appendChild(f);f.onload=f.onreadystatechange=function(j,i){if(i||!f.readyState||f.readyState=="loaded"||f.readyState=="complete"){f=f.onload=f.onreadystatechange=null;if(!i){h()}}}};a.qualifyURL=function(f){var e=document.createElement("a");e.href=f;return e.href}});ace.define("ace/lib/event_emitter",["require","exports","module"],function(d,b,e){var f={};var a=function(){this.propagationStopped=true};var c=function(){this.defaultPrevented=true};f._emit=f._dispatchEvent=function(g,l){this._eventRegistry||(this._eventRegistry={});this._defaultHandlers||(this._defaultHandlers={});var k=this._eventRegistry[g]||[];var h=this._defaultHandlers[g];if(!k.length&&!h){return}if(typeof l!="object"||!l){l={}}if(!l.type){l.type=g}if(!l.stopPropagation){l.stopPropagation=a}if(!l.preventDefault){l.preventDefault=c}k=k.slice();for(var j=0;j<k.length;j++){k[j](l,this);if(l.propagationStopped){break}}if(h&&!l.defaultPrevented){return h(l,this)}};f._signal=function(g,k){var j=(this._eventRegistry||{})[g];if(!j){return}j=j.slice();for(var h=0;h<j.length;h++){j[h](k,this)}};f.once=function(h,j){var g=this;j&&this.addEventListener(h,function i(){g.removeEventListener(h,i);j.apply(null,arguments)})};f.setDefaultHandler=function(j,m){var h=this._defaultHandlers;if(!h){h=this._defaultHandlers={_disabled_:{}}}if(h[j]){var g=h[j];var l=h._disabled_[j];if(!l){h._disabled_[j]=l=[]}l.push(g);var k=l.indexOf(m);if(k!=-1){l.splice(k,1)}}h[j]=m};f.removeDefaultHandler=function(j,m){var h=this._defaultHandlers;if(!h){return}var l=h._disabled_[j];if(h[j]==m){var g=h[j];if(l){this.setDefaultHandler(j,l.pop())}}else{if(l){var k=l.indexOf(m);if(k!=-1){l.splice(k,1)}}}};f.on=f.addEventListener=function(h,j,g){this._eventRegistry=this._eventRegistry||{};var i=this._eventRegistry[h];if(!i){i=this._eventRegistry[h]=[]}if(i.indexOf(j)==-1){i[g?"unshift":"push"](j)}return j};f.off=f.removeListener=f.removeEventListener=function(g,j){this._eventRegistry=this._eventRegistry||{};var i=this._eventRegistry[g];if(!i){return}var h=i.indexOf(j);if(h!==-1){i.splice(h,1)}};f.removeAllListeners=function(g){if(this._eventRegistry){this._eventRegistry[g]=[]}};b.EventEmitter=f});ace.define("ace/lib/app_config",["require","exports","module","ace/lib/oop","ace/lib/event_emitter"],function(d,e,c){var g=d("./oop");var i=d("./event_emitter").EventEmitter;var a={setOptions:function(j){Object.keys(j).forEach(function(k){this.setOption(k,j[k])},this)},getOptions:function(k){var j={};if(!k){k=Object.keys(this.$options)}else{if(!Array.isArray(k)){j=k;k=Object.keys(j)}}k.forEach(function(l){j[l]=this.getOption(l)},this);return j},setOption:function(j,l){if(this["$"+j]===l){return}var k=this.$options[j];if(!k){return f('misspelled option "'+j+'"')}if(k.forwardTo){return this[k.forwardTo]&&this[k.forwardTo].setOption(j,l)}if(!k.handlesSet){this["$"+j]=l}if(k&&k.set){k.set.call(this,l)}},getOption:function(j){var k=this.$options[j];if(!k){return f('misspelled option "'+j+'"')}if(k.forwardTo){return this[k.forwardTo]&&this[k.forwardTo].getOption(j)}return k&&k.get?k.get.call(this):this["$"+j]}};function f(j){if(typeof console!="undefined"&&console.warn){console.warn.apply(console,arguments)}}function h(l,j){var k=new Error(l);k.data=j;if(typeof console=="object"&&console.error){console.error(k)}setTimeout(function(){throw k})}var b=function(){this.$defaultOptions={}};(function(){g.implement(this,i);this.defineOptions=function(l,k,j){if(!l.$options){this.$defaultOptions[k]=l.$options={}}Object.keys(j).forEach(function(n){var m=j[n];if(typeof m=="string"){m={forwardTo:m}}m.name||(m.name=n);l.$options[m.name]=m;if("initialValue" in m){l["$"+m.name]=m.initialValue}});g.implement(l,a);return this};this.resetOptions=function(j){Object.keys(j.$options).forEach(function(l){var k=j.$options[l];if("value" in k){j.setOption(l,k.value)}})};this.setDefaultValue=function(m,j,l){var k=this.$defaultOptions[m]||(this.$defaultOptions[m]={});if(k[j]){if(k.forwardTo){this.setDefaultValue(k.forwardTo,j,l)}else{k[j].value=l}}};this.setDefaultValues=function(j,k){Object.keys(k).forEach(function(l){this.setDefaultValue(j,l,k[l])},this)};this.warn=f;this.reportError=h}).call(b.prototype);e.AppConfig=b});ace.define("ace/config",["require","exports","module","ace/lib/lang","ace/lib/oop","ace/lib/net","ace/lib/app_config"],function(e,g,d){var c=e("./lib/lang");var h=e("./lib/oop");var i=e("./lib/net");var b=e("./lib/app_config").AppConfig;d.exports=g=new b();var a=(function(){return this||typeof window!="undefined"&&window})();var k={packaged:false,workerPath:null,modePath:null,themePath:null,basePath:"",suffix:".js",$moduleUrls:{}};g.get=function(l){if(!k.hasOwnProperty(l)){throw new Error("Unknown config key: "+l)}return k[l]};g.set=function(l,m){if(!k.hasOwnProperty(l)){throw new Error("Unknown config key: "+l)}k[l]=m};g.all=function(){return c.copyObject(k)};g.moduleUrl=function(n,m){if(k.$moduleUrls[n]){return k.$moduleUrls[n]}var r=n.split("/");m=m||r[r.length-2]||"";var l=m=="snippets"?"/":"-";var p=r[r.length-1];if(m=="worker"&&l=="-"){var o=new RegExp("^"+m+"[\\-_]|[\\-_]"+m+"$","g");p=p.replace(o,"")}if((!p||p==m)&&r.length>1){p=r[r.length-2]}var q=k[m+"Path"];if(q==null){q=k.basePath}else{if(l=="/"){m=l=""}}if(q&&q.slice(-1)!="/"){q+="/"}return q+m+l+p+this.get("suffix")};g.setModuleUrl=function(l,m){return k.$moduleUrls[l]=m};g.$loading={};g.loadModule=function(l,o){var m,n;if(Array.isArray(l)){n=l[0];l=l[1]}try{m=e(l)}catch(p){}if(m&&!g.$loading[l]){return o&&o(m)}if(!g.$loading[l]){g.$loading[l]=[]}g.$loading[l].push(o);if(g.$loading[l].length>1){return}var q=function(){e([l],function(r){g._emit("load.module",{name:l,module:r});var s=g.$loading[l];g.$loading[l]=null;s.forEach(function(t){t&&t(r)})})};if(!g.get("packaged")){return q()}i.loadScript(g.moduleUrl(l,n),q)};j(true);function j(p){if(!a||!a.document){return}k.packaged=p||e.packaged||d.packaged||(a.define&&define.packaged);var o={};var r="";var t=(document.currentScript||document._currentScript);var y=t&&t.ownerDocument||document;var u=y.getElementsByTagName("script");for(var x=0;x<u.length;x++){var A=u[x];var n=A.src||A.getAttribute("src");if(!n){continue}var w=A.attributes;for(var v=0,s=w.length;v<s;v++){var z=w[v];if(z.name.indexOf("data-ace-")===0){o[f(z.name.replace(/^data-ace-/,""))]=z.value}}var q=n.match(/^(.*)\/ace(\-\w+)?\.js(\?|$)/);if(q){r=q[1]}}if(r){o.base=o.base||r;o.packaged=true}o.basePath=o.base;o.workerPath=o.workerPath||o.base;o.modePath=o.modePath||o.base;o.themePath=o.themePath||o.base;delete o.base;for(var B in o){if(typeof o[B]!=="undefined"){g.set(B,o[B])}}}g.init=j;function f(l){return l.replace(/-(.)/g,function(n,o){return o.toUpperCase()})}});ace.define("ace/mouse/mouse_handler",["require","exports","module","ace/lib/event","ace/lib/useragent","ace/mouse/default_handlers","ace/mouse/default_gutter_handler","ace/mouse/mouse_event","ace/mouse/dragdrop_handler","ace/config"],function(f,h,c){var a=f("../lib/event");var d=f("../lib/useragent");var k=f("./default_handlers").DefaultHandlers;var b=f("./default_gutter_handler").GutterHandler;var j=f("./mouse_event").MouseEvent;var i=f("./dragdrop_handler").DragdropHandler;var e=f("../config");var g=function(n){var l=this;this.editor=n;new k(this);new b(this);new i(this);var p=function(r){var q=!document.hasFocus||!document.hasFocus()||!n.isFocused()&&document.activeElement==(n.textInput&&n.textInput.getElement());if(q){window.focus()}n.focus()};var o=n.renderer.getMouseEventTarget();a.addListener(o,"click",this.onMouseEvent.bind(this,"click"));a.addListener(o,"mousemove",this.onMouseMove.bind(this,"mousemove"));a.addMultiMouseDownListener([o,n.renderer.scrollBarV&&n.renderer.scrollBarV.inner,n.renderer.scrollBarH&&n.renderer.scrollBarH.inner,n.textInput&&n.textInput.getElement()].filter(Boolean),[400,300,250],this,"onMouseEvent");a.addMouseWheelListener(n.container,this.onMouseWheel.bind(this,"mousewheel"));a.addTouchMoveListener(n.container,this.onTouchMove.bind(this,"touchmove"));var m=n.renderer.$gutter;a.addListener(m,"mousedown",this.onMouseEvent.bind(this,"guttermousedown"));a.addListener(m,"click",this.onMouseEvent.bind(this,"gutterclick"));a.addListener(m,"dblclick",this.onMouseEvent.bind(this,"gutterdblclick"));a.addListener(m,"mousemove",this.onMouseEvent.bind(this,"guttermousemove"));a.addListener(o,"mousedown",p);a.addListener(m,"mousedown",p);if(d.isIE&&n.renderer.scrollBarV){a.addListener(n.renderer.scrollBarV.element,"mousedown",p);a.addListener(n.renderer.scrollBarH.element,"mousedown",p)}n.on("mousemove",function(t){if(l.state||l.$dragDelay||!l.$dragEnabled){return}var s=n.renderer.screenToTextCoordinates(t.x,t.y);var q=n.session.selection.getRange();var r=n.renderer;if(!q.isEmpty()&&q.insideStart(s.row,s.column)){r.setCursorStyle("default")}else{r.setCursorStyle("")}})};(function(){this.onMouseEvent=function(l,m){this.editor._emit(l,new j(m,this.editor))};this.onMouseMove=function(l,n){var m=this.editor._eventRegistry&&this.editor._eventRegistry.mousemove;if(!m||!m.length){return}this.editor._emit(l,new j(n,this.editor))};this.onMouseWheel=function(l,m){var n=new j(m,this.editor);n.speed=this.$scrollSpeed*2;n.wheelX=m.wheelX;n.wheelY=m.wheelY;this.editor._emit(l,n)};this.onTouchMove=function(l,m){var n=new j(m,this.editor);n.speed=1;n.wheelX=m.wheelX;n.wheelY=m.wheelY;this.editor._emit(l,n)};this.setState=function(l){this.state=l};this.captureMouse=function(p,m){this.x=p.x;this.y=p.y;this.isMousePressed=true;var q=this.editor.renderer;if(q.$keepTextAreaAtCursor){q.$keepTextAreaAtCursor=null}var n=this;var s=function(t){if(!t){return}if(d.isWebKit&&!t.which&&n.releaseMouse){return n.releaseMouse()}n.x=t.clientX;n.y=t.clientY;m&&m(t);n.mouseEvent=new j(t,n.editor);n.$mouseMoved=true};var r=function(t){clearInterval(l);o();n[n.state+"End"]&&n[n.state+"End"](t);n.state="";if(q.$keepTextAreaAtCursor==null){q.$keepTextAreaAtCursor=true;q.$moveTextAreaToCursor()}n.isMousePressed=false;n.$onCaptureMouseMove=n.releaseMouse=null;t&&n.onMouseEvent("mouseup",t)};var o=function(){n[n.state]&&n[n.state]();n.$mouseMoved=false};if(d.isOldIE&&p.domEvent.type=="dblclick"){return setTimeout(function(){r(p)})}n.$onCaptureMouseMove=s;n.releaseMouse=a.capture(this.editor.container,s,r);var l=setInterval(o,20)};this.releaseMouse=null;this.cancelContextMenu=function(){var l=function(m){if(m&&m.domEvent&&m.domEvent.type!="contextmenu"){return}this.editor.off("nativecontextmenu",l);if(m&&m.domEvent){a.stopEvent(m.domEvent)}}.bind(this);setTimeout(l,10);this.editor.on("nativecontextmenu",l)}}).call(g.prototype);e.defineOptions(g.prototype,"mouseHandler",{scrollSpeed:{initialValue:2},dragDelay:{initialValue:(d.isMac?150:0)},dragEnabled:{initialValue:true},focusTimout:{initialValue:0},tooltipFollowsMouse:{initialValue:true}});h.MouseHandler=g});ace.define("ace/mouse/fold_handler",["require","exports","module"],function(b,a,c){function d(e){e.on("click",function(i){var f=i.getDocumentPosition();var h=e.session;var g=h.getFoldAt(f.row,f.column,1);if(g){if(i.getAccelKey()){h.removeFold(g)}else{h.expandFold(g)}i.stop()}});e.on("gutterclick",function(g){var i=e.renderer.$gutterLayer.getRegion(g);if(i=="foldWidgets"){var h=g.getDocumentPosition().row;var f=e.session;if(f.foldWidgets&&f.foldWidgets[h]){e.session.onFoldWidgetClick(h,g)}if(!e.isFocused()){e.focus()}g.stop()}});e.on("gutterdblclick",function(j){var l=e.renderer.$gutterLayer.getRegion(j);if(l=="foldWidgets"){var k=j.getDocumentPosition().row;var i=e.session;var h=i.getParentFoldRangeData(k,true);var f=h.range||h.firstRange;if(f){k=f.start.row;var g=i.getFoldAt(k,i.getLine(k).length,1);if(g){i.removeFold(g)}else{i.addFold("...",f);e.renderer.scrollCursorIntoView({row:f.start.row,column:0})}}j.stop()}})}a.FoldHandler=d});ace.define("ace/keyboard/keybinding",["require","exports","module","ace/lib/keys","ace/lib/event"],function(c,a,d){var b=c("../lib/keys");var e=c("../lib/event");var f=function(g){this.$editor=g;this.$data={editor:g};this.$handlers=[];this.setDefaultHandler(g.commands)};(function(){this.setDefaultHandler=function(g){this.removeKeyboardHandler(this.$defaultHandler);this.$defaultHandler=g;this.addKeyboardHandler(g,0)};this.setKeyboardHandler=function(i){var g=this.$handlers;if(g[g.length-1]==i){return}while(g[g.length-1]&&g[g.length-1]!=this.$defaultHandler){this.removeKeyboardHandler(g[g.length-1])}this.addKeyboardHandler(i,1)};this.addKeyboardHandler=function(h,j){if(!h){return}if(typeof h=="function"&&!h.handleKeyboard){h.handleKeyboard=h}var g=this.$handlers.indexOf(h);if(g!=-1){this.$handlers.splice(g,1)}if(j==undefined){this.$handlers.push(h)}else{this.$handlers.splice(j,0,h)}if(g==-1&&h.attach){h.attach(this.$editor)}};this.removeKeyboardHandler=function(h){var g=this.$handlers.indexOf(h);if(g==-1){return false}this.$handlers.splice(g,1);h.detach&&h.detach(this.$editor);return true};this.getKeyboardHandler=function(){return this.$handlers[this.$handlers.length-1]};this.getStatusText=function(){var h=this.$data;var g=h.editor;return this.$handlers.map(function(i){return i.getStatusText&&i.getStatusText(g,h)||""}).filter(Boolean).join(" ")};this.$callKeyboardHandlers=function(l,h,n,m){var k;var o=false;var g=this.$editor.commands;for(var j=this.$handlers.length;j--;){k=this.$handlers[j].handleKeyboard(this.$data,l,h,n,m);if(!k||!k.command){continue}if(k.command=="null"){o=true}else{o=g.exec(k.command,this.$editor,k.args,m)}if(o&&m&&l!=-1&&k.passEvent!=true&&k.command.passEvent!=true){e.stopEvent(m)}if(o){break}}if(!o&&l==-1){k={command:"insertstring"};o=g.exec("insertstring",this.$editor,h)}if(o&&this.$editor._signal){this.$editor._signal("keyboardActivity",k)}return o};this.onCommandKey=function(j,h,i){var g=b.keyCodeToString(i);this.$callKeyboardHandlers(h,g,i,j)};this.onTextInput=function(g){this.$callKeyboardHandlers(-1,g)}}).call(f.prototype);a.KeyBinding=f});ace.define("ace/lib/bidiutil",["require","exports","module"],function(e,I,d){var s=["\u0621","\u0641"];var v=["\u063A","\u064a"];var O=0,o=0;var w=false,K=false,j=false,b=false,q=false,M=false;var p=[[0,3,0,1,0,0,0],[0,3,0,1,2,2,0],[0,3,0,17,2,0,1],[0,3,5,5,4,1,0],[0,3,21,21,4,0,1],[0,3,5,5,4,2,0]];var G=[[2,0,1,1,0,1,0],[2,0,1,1,0,2,0],[2,0,2,1,3,2,0],[2,0,2,33,3,1,1]];var N=0,l=1;var i=0;var h=1;var D=2;var P=3;var t=4;var m=5;var g=6;var T=7;var F=8;var k=9;var y=10;var x=11;var c=12;var E=13;var Q=14;var H=15;var z=16;var J=17;var C=18;var U=[C,C,C,C,C,C,C,C,C,g,m,g,F,m,C,C,C,C,C,C,C,C,C,C,C,C,C,C,m,m,m,g,F,t,t,x,x,x,t,t,t,t,t,y,k,y,k,k,D,D,D,D,D,D,D,D,D,D,k,t,t,t,t,t,t,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,t,t,t,t,t,t,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,t,t,t,t,C,C,C,C,C,C,m,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,k,t,x,x,x,x,t,t,t,t,i,t,t,C,t,t,x,x,D,D,t,i,t,t,t,D,i,t,t,t,t,t];var n=[F,F,F,F,F,F,F,F,F,F,F,C,C,C,i,h,t,t,t,t,t,t,t,t,t,t,t,t,t,t,t,t,t,t,t,t,t,t,t,t,F,m,E,Q,H,z,J,k,x,x,x,x,x,t,t,t,t,t,t,t,t,t,t,t,t,t,t,t,k,t,t,t,t,t,t,t,t,t,t,t,t,t,t,t,t,t,t,t,t,t,t,t,t,t,t,F];function r(ac,ag,Z,B){var ad=O?G:p,ae=null,aa=null,X=null,W=0,S=null,ab=null,af=-1,Y=null,L=null,R=[];if(!B){for(Y=0,B=[];Y<Z;Y++){B[Y]=u(ac[Y])}}o=O;w=false;K=false;j=false;b=false;for(L=0;L<Z;L++){ae=W;R[L]=aa=a(ac,B,R,L);W=ad[ae][aa];S=W&240;W&=15;ag[L]=X=ad[W][5];if(S>0){if(S==16){for(Y=af;Y<L;Y++){ag[Y]=1}af=-1}else{af=-1}}ab=ad[W][6];if(ab){if(af==-1){af=L}}else{if(af>-1){for(Y=af;Y<L;Y++){ag[Y]=X}af=-1}}if(B[L]==m){ag[L]=0}o|=X}if(b){for(Y=0;Y<Z;Y++){if(B[Y]==g){ag[Y]=O;for(var V=Y-1;V>=0;V--){if(B[V]==F){ag[V]=O}else{break}}}}}}function f(L,Z,Y){if(o<L){return}if(L==1&&O==l&&!j){Y.reverse();return}var W=Y.length,B=0,S,X,R,V;while(B<W){if(Z[B]>=L){S=B+1;while(S<W&&Z[S]>=L){S++}for(X=B,R=S-1;X<R;X++,R--){V=Y[X];Y[X]=Y[R];Y[R]=V}B=S}B++}}function a(aa,X,R,L){var V=X[L],ab,W,Y,S;switch(V){case i:case h:w=false;case t:case P:return V;case D:return w?P:D;case T:w=true;K=true;return h;case F:return t;case k:if(L<1||(L+1)>=X.length||((ab=R[L-1])!=D&&ab!=P)||((W=X[L+1])!=D&&W!=P)){return t}if(w){W=P}return W==ab?W:t;case y:ab=L>0?R[L-1]:m;if(ab==D&&(L+1)<X.length&&X[L+1]==D){return D}return t;case x:if(L>0&&R[L-1]==D){return D}if(w){return t}S=L+1;Y=X.length;while(S<Y&&X[S]==x){S++}if(S<Y&&X[S]==D){return D}return t;case c:Y=X.length;S=L+1;while(S<Y&&X[S]==c){S++}if(S<Y){var Z=aa[L],B=(Z>=1425&&Z<=2303)||Z==64286;ab=X[S];if(B&&(ab==h||ab==T)){return h}}if(L<1||(ab=X[L-1])==m){return t}return R[L-1];case m:w=false;j=true;return O;case g:b=true;return t;case E:case Q:case z:case J:case H:w=false;case C:return t}}function u(R){var B=R.charCodeAt(0),L=B>>8;if(L==0){return((B>191)?i:U[B])}else{if(L==5){return(/[\u0591-\u05f4]/.test(R)?h:i)}else{if(L==6){if(/[\u0610-\u061a\u064b-\u065f\u06d6-\u06e4\u06e7-\u06ed]/.test(R)){return c}else{if(/[\u0660-\u0669\u066b-\u066c]/.test(R)){return P}else{if(B==1642){return x}else{if(/[\u06f0-\u06f9]/.test(R)){return D}else{return T}}}}}else{if(L==32&&B<=8287){return n[B&255]}else{if(L==254){return(B>=65136?T:t)}}}}}return t}function A(B){return(B>="\u064b"&&B<="\u0655")}I.L=i;I.R=h;I.EN=D;I.ON_R=3;I.AN=4;I.R_H=5;I.B=6;I.DOT="\xB7";I.doBidiReorder=function(Y,V,L){if(Y.length<2){return{}}var S=Y.split(""),B=new Array(S.length),X=new Array(S.length),W=[];O=L?l:N;r(S,W,S.length,V);for(var R=0;R<B.length;B[R]=R,R++){}f(2,W,B);f(1,W,B);for(var R=0;R<B.length-1;R++){if(V[R]===P){W[R]=I.AN}else{if(W[R]===h&&((V[R]>T&&V[R]<E)||V[R]===t||V[R]===C)){W[R]=I.ON_R}else{if((R>0&&S[R-1]==="\u0644")&&/\u0622|\u0623|\u0625|\u0627/.test(S[R])){W[R-1]=W[R]=I.R_H;R++}}}}if(S[S.length-1]===I.DOT){W[S.length-1]=I.B}for(var R=0;R<B.length;R++){X[R]=W[B[R]]}return{"logicalFromVisual":B,"bidiLevels":X}};I.hasBidiCharacters=function(S,R){var B=false;for(var L=0;L<S.length;L++){R[L]=u(S.charAt(L));if(!B&&(R[L]==h||R[L]==T)){B=true}}return B};I.getVisualFromLogicalIdx=function(R,B){for(var L=0;L<B.logicalFromVisual.length;L++){if(B.logicalFromVisual[L]==R){return L}}return 0}});ace.define("ace/bidihandler",["require","exports","module","ace/lib/bidiutil","ace/lib/lang","ace/lib/useragent"],function(d,c,e){var h=d("./lib/bidiutil");var g=d("./lib/lang");var a=d("./lib/useragent");var f=/[\u0590-\u05f4\u0600-\u06ff\u0700-\u08ac]/;var b=function(i){this.session=i;this.bidiMap={};this.currentRow=null;this.bidiUtil=h;this.charWidths=[];this.EOL="\xAC";this.showInvisibles=true;this.isRtlDir=false;this.line="";this.wrapIndent=0;this.isLastRow=false;this.EOF="\xB6";this.seenBidi=false};(function(){this.isBidiRow=function(k,i,j){if(!this.seenBidi){return false}if(k!==this.currentRow){this.currentRow=k;this.updateRowLine(i,j);this.updateBidiMap()}return this.bidiMap.bidiLevels};this.onChange=function(i){if(!this.seenBidi){if(i.action=="insert"&&f.test(i.lines.join("\n"))){this.seenBidi=true;this.currentRow=null}}else{this.currentRow=null}};this.getDocumentRow=function(){var i=0;var k=this.session.$screenRowCache;if(k.length){var j=this.session.$getRowCacheIndex(k,this.currentRow);if(j>=0){i=this.session.$docRowCache[j]}}return i};this.getSplitIndex=function(){var j=0;var l=this.session.$screenRowCache;if(l.length){var i,k=this.session.$getRowCacheIndex(l,this.currentRow);while(this.currentRow-j>0){i=this.session.$getRowCacheIndex(l,this.currentRow-j-1);if(i!==k){break}k=i;j++}}return j};this.updateRowLine=function(j,k){if(j===undefined){j=this.getDocumentRow()}this.wrapIndent=0;this.isLastRow=(j===this.session.getLength()-1);this.line=this.session.getLine(j);if(this.session.$useWrapMode){var n=this.session.$wrapData[j];if(n){if(k===undefined){k=this.getSplitIndex()}if(k>0&&n.length){this.wrapIndent=n.indent;this.line=(k<n.length)?this.line.substring(n[k-1],n[n.length-1]):this.line.substring(n[n.length-1])}else{this.line=this.line.substring(0,n[k])}}}var m=this.session,i=0,l;this.line=this.line.replace(/\t|[\u1100-\u2029, \u202F-\uFFE6]/g,function(p,o){if(p==="\t"||m.isFullWidth(p.charCodeAt(0))){l=(p==="\t")?m.getScreenTabSize(o+i):2;i+=l-1;return g.stringRepeat(h.DOT,l)}return p})};this.updateBidiMap=function(){var k=[],i=this.isLastRow?this.EOF:this.EOL;var j=this.line+(this.showInvisibles?i:h.DOT);if(h.hasBidiCharacters(j,k)){this.bidiMap=h.doBidiReorder(j,k,this.isRtlDir)}else{this.bidiMap={}}};this.markAsDirty=function(){this.currentRow=null};this.updateCharacterWidths=function(k){if(!this.seenBidi){return}if(this.characterWidth===k.$characterSize.width){return}var i=this.characterWidth=k.$characterSize.width;var j=k.$measureCharWidth("\u05d4");this.charWidths[h.L]=this.charWidths[h.EN]=this.charWidths[h.ON_R]=i;this.charWidths[h.R]=this.charWidths[h.AN]=j;this.charWidths[h.R_H]=a.isChrome?j:j*0.45;this.charWidths[h.B]=0;this.currentRow=null};this.getShowInvisibles=function(){return this.showInvisibles};this.setShowInvisibles=function(i){this.showInvisibles=i;this.currentRow=null};this.setEolChar=function(i){this.EOL=i};this.setTextDir=function(i){this.isRtlDir=i};this.getPosLeft=function(j){j-=this.wrapIndent;var l=h.getVisualFromLogicalIdx(j>0?j-1:0,this.bidiMap),m=this.bidiMap.bidiLevels,n=0;if(j===0&&m[l]%2!==0){l++}for(var k=0;k<l;k++){n+=this.charWidths[m[k]]}if(j!==0&&m[l]%2===0){n+=this.charWidths[m[l]]}if(this.wrapIndent){n+=this.wrapIndent*this.charWidths[h.L]}return n};this.getSelections=function(k,r){var j=this.bidiMap,v=j.bidiLevels,i,o=this.wrapIndent*this.charWidths[h.L],m=[],n=Math.min(k,r)-this.wrapIndent,q=Math.max(k,r)-this.wrapIndent,l=false,s=false,t=0;for(var p,u=0;u<v.length;u++){p=j.logicalFromVisual[u];i=v[u];l=(p>=n)&&(p<q);if(l&&!s){t=o}else{if(!l&&s){m.push({left:t,width:o-t})}}o+=this.charWidths[i];s=l}if(l&&(u===v.length)){m.push({left:t,width:o-t})}return m};this.offsetToCol=function(n){var m=0,n=Math.max(n,0),l=0,j=0,k=this.bidiMap.bidiLevels,i=this.charWidths[k[j]];if(this.wrapIndent){n-=this.wrapIndent*this.charWidths[h.L]}while(n>l+i/2){l+=i;if(j===k.length-1){i=0;break}i=this.charWidths[k[++j]]}if(j>0&&(k[j-1]%2!==0)&&(k[j]%2===0)){if(n<l){j--}m=this.bidiMap.logicalFromVisual[j]}else{if(j>0&&(k[j-1]%2===0)&&(k[j]%2!==0)){m=1+((n>l)?this.bidiMap.logicalFromVisual[j]:this.bidiMap.logicalFromVisual[j-1])}else{if((this.isRtlDir&&j===k.length-1&&i===0&&(k[j-1]%2===0))||(!this.isRtlDir&&j===0&&(k[j]%2!==0))){m=1+this.bidiMap.logicalFromVisual[j]}else{if(j>0&&(k[j-1]%2!==0)&&i!==0){j--}m=this.bidiMap.logicalFromVisual[j]}}}return(m+this.wrapIndent)}}).call(b.prototype);c.BidiHandler=b});ace.define("ace/range",["require","exports","module"],function(b,a,c){var e=function(g,f){return g.row-f.row||g.column-f.column};var d=function(g,h,f,i){this.start={row:g,column:h};this.end={row:f,column:i}};(function(){this.isEqual=function(f){return this.start.row===f.start.row&&this.end.row===f.end.row&&this.start.column===f.start.column&&this.end.column===f.end.column};this.toString=function(){return("Range: ["+this.start.row+"/"+this.start.column+"] -> ["+this.end.row+"/"+this.end.column+"]")};this.contains=function(g,f){return this.compare(g,f)==0};this.compareRange=function(g){var h,f=g.end,i=g.start;h=this.compare(f.row,f.column);if(h==1){h=this.compare(i.row,i.column);if(h==1){return 2}else{if(h==0){return 1}else{return 0}}}else{if(h==-1){return -2}else{h=this.compare(i.row,i.column);if(h==-1){return -1}else{if(h==1){return 42}else{return 0}}}}};this.comparePoint=function(f){return this.compare(f.row,f.column)};this.containsRange=function(f){return this.comparePoint(f.start)==0&&this.comparePoint(f.end)==0};this.intersects=function(f){var g=this.compareRange(f);return(g==-1||g==0||g==1)};this.isEnd=function(g,f){return this.end.row==g&&this.end.column==f};this.isStart=function(g,f){return this.start.row==g&&this.start.column==f};this.setStart=function(g,f){if(typeof g=="object"){this.start.column=g.column;this.start.row=g.row}else{this.start.row=g;this.start.column=f}};this.setEnd=function(g,f){if(typeof g=="object"){this.end.column=g.column;this.end.row=g.row}else{this.end.row=g;this.end.column=f}};this.inside=function(g,f){if(this.compare(g,f)==0){if(this.isEnd(g,f)||this.isStart(g,f)){return false}else{return true}}return false};this.insideStart=function(g,f){if(this.compare(g,f)==0){if(this.isEnd(g,f)){return false}else{return true}}return false};this.insideEnd=function(g,f){if(this.compare(g,f)==0){if(this.isStart(g,f)){return false}else{return true}}return false};this.compare=function(g,f){if(!this.isMultiLine()){if(g===this.start.row){return f<this.start.column?-1:(f>this.end.column?1:0)}}if(g<this.start.row){return -1}if(g>this.end.row){return 1}if(this.start.row===g){return f>=this.start.column?0:-1}if(this.end.row===g){return f<=this.end.column?0:1}return 0};this.compareStart=function(g,f){if(this.start.row==g&&this.start.column==f){return -1}else{return this.compare(g,f)}};this.compareEnd=function(g,f){if(this.end.row==g&&this.end.column==f){return 1}else{return this.compare(g,f)}};this.compareInside=function(g,f){if(this.end.row==g&&this.end.column==f){return 1}else{if(this.start.row==g&&this.start.column==f){return -1}else{return this.compare(g,f)}}};this.clipRows=function(h,g){if(this.end.row>g){var f={row:g+1,column:0}}else{if(this.end.row<h){var f={row:h,column:0}}}if(this.start.row>g){var i={row:g+1,column:0}}else{if(this.start.row<h){var i={row:h,column:0}}}return d.fromPoints(i||this.start,f||this.end)};this.extend=function(i,g){var h=this.compare(i,g);if(h==0){return this}else{if(h==-1){var j={row:i,column:g}}else{var f={row:i,column:g}}}return d.fromPoints(j||this.start,f||this.end)};this.isEmpty=function(){return(this.start.row===this.end.row&&this.start.column===this.end.column)};this.isMultiLine=function(){return(this.start.row!==this.end.row)};this.clone=function(){return d.fromPoints(this.start,this.end)};this.collapseRows=function(){if(this.end.column==0){return new d(this.start.row,0,Math.max(this.start.row,this.end.row-1),0)}else{return new d(this.start.row,0,this.end.row,0)}};this.toScreenRange=function(g){var f=g.documentToScreenPosition(this.start);var h=g.documentToScreenPosition(this.end);return new d(f.row,f.column,h.row,h.column)};this.moveBy=function(g,f){this.start.row+=g;this.start.column+=f;this.end.row+=g;this.end.column+=f}}).call(d.prototype);d.fromPoints=function(g,f){return new d(g.row,g.column,f.row,f.column)};d.comparePoints=e;d.comparePoints=function(g,f){return g.row-f.row||g.column-f.column};a.Range=d});ace.define("ace/selection",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/lib/event_emitter","ace/range"],function(b,a,c){var f=b("./lib/oop");var h=b("./lib/lang");var e=b("./lib/event_emitter").EventEmitter;var g=b("./range").Range;var d=function(j){this.session=j;this.doc=j.getDocument();this.clearSelection();this.lead=this.selectionLead=this.doc.createAnchor(0,0);this.anchor=this.selectionAnchor=this.doc.createAnchor(0,0);var i=this;this.lead.on("change",function(k){i._emit("changeCursor");if(!i.$isEmpty){i._emit("changeSelection")}if(!i.$keepDesiredColumnOnChange&&k.old.column!=k.value.column){i.$desiredColumn=null}});this.selectionAnchor.on("change",function(){if(!i.$isEmpty){i._emit("changeSelection")}})};(function(){f.implement(this,e);this.isEmpty=function(){return(this.$isEmpty||(this.anchor.row==this.lead.row&&this.anchor.column==this.lead.column))};this.isMultiLine=function(){if(this.isEmpty()){return false}return this.getRange().isMultiLine()};this.getCursor=function(){return this.lead.getPosition()};this.setSelectionAnchor=function(j,i){this.anchor.setPosition(j,i);if(this.$isEmpty){this.$isEmpty=false;this._emit("changeSelection")}};this.getSelectionAnchor=function(){if(this.$isEmpty){return this.getSelectionLead()}else{return this.anchor.getPosition()}};this.getSelectionLead=function(){return this.lead.getPosition()};this.shiftSelection=function(k){if(this.$isEmpty){this.moveCursorTo(this.lead.row,this.lead.column+k);return}var j=this.getSelectionAnchor();var i=this.getSelectionLead();var l=this.isBackwards();if(!l||j.column!==0){this.setSelectionAnchor(j.row,j.column+k)}if(l||i.column!==0){this.$moveSelection(function(){this.moveCursorTo(i.row,i.column+k)})}};this.isBackwards=function(){var j=this.anchor;var i=this.lead;return(j.row>i.row||(j.row==i.row&&j.column>i.column))};this.getRange=function(){var j=this.anchor;var i=this.lead;if(this.isEmpty()){return g.fromPoints(i,i)}if(this.isBackwards()){return g.fromPoints(i,j)}else{return g.fromPoints(j,i)}};this.clearSelection=function(){if(!this.$isEmpty){this.$isEmpty=true;this._emit("changeSelection")}};this.selectAll=function(){var i=this.doc.getLength()-1;this.setSelectionAnchor(0,0);this.moveCursorTo(i,this.doc.getLine(i).length)};this.setRange=this.setSelectionRange=function(i,j){if(j){this.setSelectionAnchor(i.end.row,i.end.column);this.selectTo(i.start.row,i.start.column)}else{this.setSelectionAnchor(i.start.row,i.start.column);this.selectTo(i.end.row,i.end.column)}if(this.getRange().isEmpty()){this.$isEmpty=true}this.$desiredColumn=null};this.$moveSelection=function(i){var j=this.lead;if(this.$isEmpty){this.setSelectionAnchor(j.row,j.column)}i.call(this)};this.selectTo=function(j,i){this.$moveSelection(function(){this.moveCursorTo(j,i)})};this.selectToPosition=function(i){this.$moveSelection(function(){this.moveCursorToPosition(i)})};this.moveTo=function(j,i){this.clearSelection();this.moveCursorTo(j,i)};this.moveToPosition=function(i){this.clearSelection();this.moveCursorToPosition(i)};this.selectUp=function(){this.$moveSelection(this.moveCursorUp)};this.selectDown=function(){this.$moveSelection(this.moveCursorDown)};this.selectRight=function(){this.$moveSelection(this.moveCursorRight)};this.selectLeft=function(){this.$moveSelection(this.moveCursorLeft)};this.selectLineStart=function(){this.$moveSelection(this.moveCursorLineStart)};this.selectLineEnd=function(){this.$moveSelection(this.moveCursorLineEnd)};this.selectFileEnd=function(){this.$moveSelection(this.moveCursorFileEnd)};this.selectFileStart=function(){this.$moveSelection(this.moveCursorFileStart)};this.selectWordRight=function(){this.$moveSelection(this.moveCursorWordRight)};this.selectWordLeft=function(){this.$moveSelection(this.moveCursorWordLeft)};this.getWordRange=function(k,i){if(typeof i=="undefined"){var j=k||this.lead;k=j.row;i=j.column}return this.session.getWordRange(k,i)};this.selectWord=function(){this.setSelectionRange(this.getWordRange())};this.selectAWord=function(){var j=this.getCursor();var i=this.session.getAWordRange(j.row,j.column);this.setSelectionRange(i)};this.getLineRange=function(m,k){var i=typeof m=="number"?m:this.lead.row;var j;var l=this.session.getFoldLine(i);if(l){i=l.start.row;j=l.end.row}else{j=i}if(k===true){return new g(i,0,j,this.session.getLine(j).length)}else{return new g(i,0,j+1,0)}};this.selectLine=function(){this.setSelectionRange(this.getLineRange())};this.moveCursorUp=function(){this.moveCursorBy(-1,0)};this.moveCursorDown=function(){this.moveCursorBy(1,0)};this.wouldMoveIntoSoftTab=function(l,k,j){var m=l.column;var i=l.column+k;if(j<0){m=l.column-k;i=l.column}return this.session.isTabStop(l)&&this.doc.getLine(l.row).slice(m,i).split(" ").length-1==k};this.moveCursorLeft=function(){var k=this.lead.getPosition(),i;if(i=this.session.getFoldAt(k.row,k.column,-1)){this.moveCursorTo(i.start.row,i.start.column)}else{if(k.column===0){if(k.row>0){this.moveCursorTo(k.row-1,this.doc.getLine(k.row-1).length)}}else{var j=this.session.getTabSize();if(this.wouldMoveIntoSoftTab(k,j,-1)&&!this.session.getNavigateWithinSoftTabs()){this.moveCursorBy(0,-j)}else{this.moveCursorBy(0,-1)}}}};this.moveCursorRight=function(){var k=this.lead.getPosition(),i;if(i=this.session.getFoldAt(k.row,k.column,1)){this.moveCursorTo(i.end.row,i.end.column)}else{if(this.lead.column==this.doc.getLine(this.lead.row).length){if(this.lead.row<this.doc.getLength()-1){this.moveCursorTo(this.lead.row+1,0)}}else{var j=this.session.getTabSize();var k=this.lead;if(this.wouldMoveIntoSoftTab(k,j,1)&&!this.session.getNavigateWithinSoftTabs()){this.moveCursorBy(0,j)}else{this.moveCursorBy(0,1)}}}};this.moveCursorLineStart=function(){var n=this.lead.row;var k=this.lead.column;var j=this.session.documentToScreenRow(n,k);var i=this.session.screenToDocumentPosition(j,0);var l=this.session.getDisplayLine(n,null,i.row,i.column);var m=l.match(/^\s*/);if(m[0].length!=k&&!this.session.$useEmacsStyleLineStart){i.column+=m[0].length}this.moveCursorToPosition(i)};this.moveCursorLineEnd=function(){var j=this.lead;var l=this.session.getDocumentLastRowColumnPosition(j.row,j.column);if(this.lead.column==l.column){var i=this.session.getLine(l.row);if(l.column==i.length){var k=i.search(/\s+$/);if(k>0){l.column=k}}}this.moveCursorTo(l.row,l.column)};this.moveCursorFileEnd=function(){var j=this.doc.getLength()-1;var i=this.doc.getLine(j).length;this.moveCursorTo(j,i)};this.moveCursorFileStart=function(){this.moveCursorTo(0,0)};this.moveCursorLongWordRight=function(){var n=this.lead.row;var l=this.lead.column;var i=this.doc.getLine(n);var m=i.substring(l);var k;this.session.nonTokenRe.lastIndex=0;this.session.tokenRe.lastIndex=0;var j=this.session.getFoldAt(n,l,1);if(j){this.moveCursorTo(j.end.row,j.end.column);return}if(k=this.session.nonTokenRe.exec(m)){l+=this.session.nonTokenRe.lastIndex;this.session.nonTokenRe.lastIndex=0;m=i.substring(l)}if(l>=i.length){this.moveCursorTo(n,i.length);this.moveCursorRight();if(n<this.doc.getLength()-1){this.moveCursorWordRight()}return}if(k=this.session.tokenRe.exec(m)){l+=this.session.tokenRe.lastIndex;this.session.tokenRe.lastIndex=0}this.moveCursorTo(n,l)};this.moveCursorLongWordLeft=function(){var n=this.lead.row;var k=this.lead.column;var j;if(j=this.session.getFoldAt(n,k,-1)){this.moveCursorTo(j.start.row,j.start.column);return}var m=this.session.getFoldStringAt(n,k,-1);if(m==null){m=this.doc.getLine(n).substring(0,k)}var l=h.stringReverse(m);var i;this.session.nonTokenRe.lastIndex=0;this.session.tokenRe.lastIndex=0;if(i=this.session.nonTokenRe.exec(l)){k-=this.session.nonTokenRe.lastIndex;l=l.slice(this.session.nonTokenRe.lastIndex);this.session.nonTokenRe.lastIndex=0}if(k<=0){this.moveCursorTo(n,0);this.moveCursorLeft();if(n>0){this.moveCursorWordLeft()}return}if(i=this.session.tokenRe.exec(l)){k-=this.session.tokenRe.lastIndex;this.session.tokenRe.lastIndex=0}this.moveCursorTo(n,k)};this.$shortWordEndIndex=function(n){var j,i=0,m;var l=/\s/;var k=this.session.tokenRe;k.lastIndex=0;if(j=this.session.tokenRe.exec(n)){i=this.session.tokenRe.lastIndex}else{while((m=n[i])&&l.test(m)){i++}if(i<1){k.lastIndex=0;while((m=n[i])&&!k.test(m)){k.lastIndex=0;i++;if(l.test(m)){if(i>2){i--;break}else{while((m=n[i])&&l.test(m)){i++}if(i>2){break}}}}}}k.lastIndex=0;return i};this.moveCursorShortWordRight=function(){var p=this.lead.row;var n=this.lead.column;var j=this.doc.getLine(p);var o=j.substring(n);var m=this.session.getFoldAt(p,n,1);if(m){return this.moveCursorTo(m.end.row,m.end.column)}if(n==j.length){var i=this.doc.getLength();do{p++;o=this.doc.getLine(p)}while(p<i&&/^\s*$/.test(o));if(!/^\s+/.test(o)){o=""}n=0}var k=this.$shortWordEndIndex(o);this.moveCursorTo(p,n+k)};this.moveCursorShortWordLeft=function(){var n=this.lead.row;var l=this.lead.column;var k;if(k=this.session.getFoldAt(n,l,-1)){return this.moveCursorTo(k.start.row,k.start.column)}var i=this.session.getLine(n).substring(0,l);if(l===0){do{n--;i=this.doc.getLine(n)}while(n>0&&/^\s*$/.test(i));l=i.length;if(!/\s+$/.test(i)){i=""}}var m=h.stringReverse(i);var j=this.$shortWordEndIndex(m);return this.moveCursorTo(n,l-j)};this.moveCursorWordRight=function(){if(this.session.$selectLongWords){this.moveCursorLongWordRight()}else{this.moveCursorShortWordRight()}};this.moveCursorWordLeft=function(){if(this.session.$selectLongWords){this.moveCursorLongWordLeft()}else{this.moveCursorShortWordLeft()}};this.moveCursorBy=function(m,l){var k=this.session.documentToScreenPosition(this.lead.row,this.lead.column);var i;if(l===0){if(m!==0){if(this.session.$bidiHandler.isBidiRow(k.row,this.lead.row)){i=this.session.$bidiHandler.getPosLeft(k.column);k.column=Math.round(i/this.session.$bidiHandler.charWidths[0])}else{i=k.column*this.session.$bidiHandler.charWidths[0]}}if(this.$desiredColumn){k.column=this.$desiredColumn}else{this.$desiredColumn=k.column}}var j=this.session.screenToDocumentPosition(k.row+m,k.column,i);if(m!==0&&l===0&&j.row===this.lead.row&&j.column===this.lead.column){if(this.session.lineWidgets&&this.session.lineWidgets[j.row]){if(j.row>0||m>0){j.row++}}}this.moveCursorTo(j.row,j.column+l,l===0)};this.moveCursorToPosition=function(i){this.moveCursorTo(i.row,i.column)};this.moveCursorTo=function(m,l,j){var k=this.session.getFoldAt(m,l,1);if(k){m=k.start.row;l=k.start.column}this.$keepDesiredColumnOnChange=true;var i=this.session.getLine(m);if(/[\uDC00-\uDFFF]/.test(i.charAt(l))&&i.charAt(l-1)){if(this.lead.row==m&&this.lead.column==l+1){l=l-1}else{l=l+1}}this.lead.setPosition(m,l);this.$keepDesiredColumnOnChange=false;if(!j){this.$desiredColumn=null}};this.moveCursorToScreen=function(k,j,i){var l=this.session.screenToDocumentPosition(k,j);this.moveCursorTo(l.row,l.column,i)};this.detach=function(){this.lead.detach();this.anchor.detach();this.session=this.doc=null};this.fromOrientedRange=function(i){this.setSelectionRange(i,i.cursor==i.start);this.$desiredColumn=i.desiredColumn||this.$desiredColumn};this.toOrientedRange=function(i){var j=this.getRange();if(i){i.start.column=j.start.column;i.start.row=j.start.row;i.end.column=j.end.column;i.end.row=j.end.row}else{i=j}i.cursor=this.isBackwards()?i.start:i.end;i.desiredColumn=this.$desiredColumn;return i};this.getRangeOfMovements=function(j){var l=this.getCursor();try{j(this);var i=this.getCursor();return g.fromPoints(l,i)}catch(k){return g.fromPoints(l,l)}finally{this.moveCursorToPosition(l)}};this.toJSON=function(){if(this.rangeCount){var i=this.ranges.map(function(k){var j=k.clone();j.isBackwards=k.cursor==k.start;return j})}else{var i=this.getRange();i.isBackwards=this.isBackwards()}return i};this.fromJSON=function(l){if(l.start==undefined){if(this.rangeList){this.toSingleRange(l[0]);for(var j=l.length;j--;){var k=g.fromPoints(l[j].start,l[j].end);if(l[j].isBackwards){k.cursor=k.start}this.addRange(k,true)}return}else{l=l[0]}}if(this.rangeList){this.toSingleRange(l)}this.setSelectionRange(l,l.isBackwards)};this.isEqual=function(k){if((k.length||this.rangeCount)&&k.length!=this.rangeCount){return false}if(!k.length||!this.ranges){return this.getRange().isEqual(k)}for(var j=this.ranges.length;j--;){if(!this.ranges[j].isEqual(k[j])){return false}}return true}}).call(d.prototype);a.Selection=d});ace.define("ace/tokenizer",["require","exports","module","ace/config"],function(d,a,e){var c=d("./config");var f=500000;var b=function(q){this.states=q;this.regExps={};this.matchMappings={};for(var p in this.states){var h=this.states[p];var k=[];var r=0;var g=this.matchMappings[p]={defaultToken:"text"};var l="g";var n=[];for(var j=0;j<h.length;j++){var m=h[j];if(m.defaultToken){g.defaultToken=m.defaultToken}if(m.caseInsensitive){l="gi"}if(m.regex==null){continue}if(m.regex instanceof RegExp){m.regex=m.regex.toString().slice(1,-1)}var o=m.regex;var s=new RegExp("(?:("+o+")|(.))").exec("a").length-2;if(Array.isArray(m.token)){if(m.token.length==1||s==1){m.token=m.token[0]}else{if(s-1!=m.token.length){this.reportError("number of classes and regexp groups doesn't match",{rule:m,groupCount:s-1});m.token=m.token[0]}else{m.tokenArray=m.token;m.token=null;m.onMatch=this.$arrayTokens}}}else{if(typeof m.token=="function"&&!m.onMatch){if(s>1){m.onMatch=this.$applyToken}else{m.onMatch=m.token}}}if(s>1){if(/\\\d/.test(m.regex)){o=m.regex.replace(/\\([0-9]+)/g,function(i,t){return"\\"+(parseInt(t,10)+r+1)})}else{s=1;o=this.removeCapturingGroups(m.regex)}if(!m.splitRegex&&typeof m.token!="string"){n.push(m)}}g[r]=j;r+=s;k.push(o);if(!m.onMatch){m.onMatch=null}}if(!k.length){g[0]=0;k.push("$")}n.forEach(function(i){i.splitRegex=this.createSplitterRegexp(i.regex,l)},this);this.regExps[p]=new RegExp("("+k.join(")|(")+")|($)",l)}};(function(){this.$setMaxTokenCount=function(g){f=g|0};this.$applyToken=function(n){var h=this.splitRegex.exec(n).slice(1);var k=this.token.apply(this,h);if(typeof k==="string"){return[{type:k,value:n}]}var m=[];for(var j=0,g=k.length;j<g;j++){if(h[j]){m[m.length]={type:k[j],value:h[j]}}}return m};this.$arrayTokens=function(n){if(!n){return[]}var h=this.splitRegex.exec(n);if(!h){return"text"}var m=[];var k=this.tokenArray;for(var j=0,g=k.length;j<g;j++){if(h[j+1]){m[m.length]={type:k[j],value:h[j+1]}}}return m};this.removeCapturingGroups=function(h){var g=h.replace(/\[(?:\\.|[^\]])*?\]|\\.|\(\?[:=!]|(\()/g,function(i,j){return j?"(?:":i});return g};this.createSplitterRegexp=function(j,h){if(j.indexOf("(?=")!=-1){var g=0;var k=false;var i={};j.replace(/(\\.)|(\((?:\?[=!])?)|(\))|([\[\]])/g,function(l,n,r,q,p,o){if(k){k=p!="]"}else{if(p){k=true}else{if(q){if(g==i.stack){i.end=o+1;i.stack=-1}g--}else{if(r){g++;if(r.length!=1){i.stack=g;i.start=o}}}}}return l});if(i.end!=null&&/^\)*$/.test(j.substr(i.end))){j=j.substring(0,i.start)+j.substr(i.end)
 }}if(j.charAt(0)!="^"){j="^"+j}if(j.charAt(j.length-1)!="$"){j+="$"}return new RegExp(j,(h||"").replace("g",""))};this.getLineTokens=function(q,g){if(g&&typeof g!="string"){var k=g.slice(0);g=k[0];if(g==="#tmp"){k.shift();g=k.shift()}}else{var k=[]}var y=g||"start";var j=this.states[y];if(!j){y="start";j=this.states[y]}var p=this.matchMappings[y];var t=this.regExps[y];t.lastIndex=0;var o,r=[];var w=0;var s=0;var n={type:null,value:""};while(o=t.exec(q)){var h=p.defaultToken;var l=null;var u=o[0];var m=t.lastIndex;if(m-u.length>w){var x=q.substring(w,m-u.length);if(n.type==h){n.value+=x}else{if(n.type){r.push(n)}n={type:h,value:x}}}for(var v=0;v<o.length-2;v++){if(o[v+1]===undefined){continue}l=j[p[v]];if(l.onMatch){h=l.onMatch(u,y,k,q)}else{h=l.token}if(l.next){if(typeof l.next=="string"){y=l.next}else{y=l.next(y,k)}j=this.states[y];if(!j){this.reportError("state doesn't exist",y);y="start";j=this.states[y]}p=this.matchMappings[y];w=m;t=this.regExps[y];t.lastIndex=m}if(l.consumeLineEnd){w=m}break}if(u){if(typeof h==="string"){if((!l||l.merge!==false)&&n.type===h){n.value+=u}else{if(n.type){r.push(n)}n={type:h,value:u}}}else{if(h){if(n.type){r.push(n)}n={type:null,value:""};for(var v=0;v<h.length;v++){r.push(h[v])}}}}if(w==q.length){break}w=m;if(s++>f){if(s>2*q.length){this.reportError("infinite loop with in ace tokenizer",{startState:g,line:q})}while(w<q.length){if(n.type){r.push(n)}n={value:q.substring(w,w+=2000),type:"overflow"}}y="start";k=[];break}}if(n.type){r.push(n)}if(k.length>1){if(k[0]!==y){k.unshift("#tmp",y)}}return{tokens:r,state:k.length?k:y}};this.reportError=c.reportError}).call(b.prototype);a.Tokenizer=b});ace.define("ace/mode/text_highlight_rules",["require","exports","module","ace/lib/lang"],function(c,b,d){var e=c("../lib/lang");var a=function(){this.$rules={"start":[{token:"empty_line",regex:"^$"},{defaultToken:"text"}]}};(function(){this.addRules=function(n,l){if(!l){for(var j in n){this.$rules[j]=n[j]}return}for(var j in n){var k=n[j];for(var h=0;h<k.length;h++){var m=k[h];if(m.next||m.onMatch){if(typeof m.next=="string"){if(m.next.indexOf(l)!==0){m.next=l+m.next}}if(m.nextState&&m.nextState.indexOf(l)!==0){m.nextState=l+m.nextState}}}this.$rules[l+j]=k}};this.getRules=function(){return this.$rules};this.embedRules=function(l,n,o,q,j){var h=typeof l=="function"?new l().getRules():l;if(q){for(var m=0;m<q.length;m++){q[m]=n+q[m]}}else{q=[];for(var p in h){q.push(n+p)}}this.addRules(h,n);if(o){var k=Array.prototype[j?"push":"unshift"];for(var m=0;m<q.length;m++){k.apply(this.$rules[q[m]],e.deepCopy(o))}}if(!this.$embeds){this.$embeds=[]}this.$embeds.push(n)};this.getEmbeds=function(){return this.$embeds};var f=function(i,h){if(i!="start"||h.length){h.unshift(this.nextState,i)}return this.nextState};var g=function(i,h){h.shift();return h.shift()||"start"};this.normalizeRules=function(){var j=0;var i=this.$rules;function h(t){var m=i[t];m.processed=true;for(var n=0;n<m.length;n++){var s=m[n];var p=null;if(Array.isArray(s)){p=s;s={}}if(!s.regex&&s.start){s.regex=s.start;if(!s.next){s.next=[]}s.next.push({defaultToken:s.token},{token:s.token+".end",regex:s.end||s.start,next:"pop"});s.token=s.token+".start";s.push=true}var o=s.next||s.push;if(o&&Array.isArray(o)){var u=s.stateName;if(!u){u=s.token;if(typeof u!="string"){u=u[0]||""}if(i[u]){u+=j++}}i[u]=o;s.next=u;h(u)}else{if(o=="pop"){s.next=g}}if(s.push){s.nextState=s.next||s.push;s.next=f;delete s.push}if(s.rules){for(var l in s.rules){if(i[l]){if(i[l].push){i[l].push.apply(i[l],s.rules[l])}}else{i[l]=s.rules[l]}}}var k=typeof s=="string"?s:s.include;if(k){if(Array.isArray(k)){p=k.map(function(r){return i[r]})}else{p=i[k]}}if(p){var q=[n,1].concat(p);if(s.noEscape){q=q.filter(function(r){return !r.next})}m.splice.apply(m,q);n--}if(s.keywordMap){s.token=this.createKeywordMapper(s.keywordMap,s.defaultToken||"text",s.caseInsensitive);delete s.defaultToken}}}Object.keys(i).forEach(h,this)};this.createKeywordMapper=function(j,l,h,k){var i=Object.create(null);Object.keys(j).forEach(function(o){var m=j[o];if(h){m=m.toLowerCase()}var p=m.split(k||"|");for(var n=p.length;n--;){i[p[n]]=o}});if(Object.getPrototypeOf(i)){i.__proto__=null}this.$keywordList=Object.keys(i);j=null;return h?function(m){return i[m.toLowerCase()]||l}:function(m){return i[m]||l}};this.getKeywords=function(){return this.$keywords}}).call(a.prototype);b.TextHighlightRules=a});ace.define("ace/mode/behaviour",["require","exports","module"],function(b,a,c){var d=function(){this.$behaviours={}};(function(){this.add=function(e,f,g){switch(undefined){case this.$behaviours:this.$behaviours={};case this.$behaviours[e]:this.$behaviours[e]={}}this.$behaviours[e][f]=g};this.addBehaviours=function(f){for(var e in f){for(var g in f[e]){this.add(e,g,f[e][g])}}};this.remove=function(e){if(this.$behaviours&&this.$behaviours[e]){delete this.$behaviours[e]}};this.inherit=function(g,e){if(typeof g==="function"){var f=new g().getBehaviours(e)}else{var f=g.getBehaviours(e)}this.addBehaviours(f)};this.getBehaviours=function(g){if(!g){return this.$behaviours}else{var e={};for(var f=0;f<g.length;f++){if(this.$behaviours[g[f]]){e[g[f]]=this.$behaviours[g[f]]}}return e}}}).call(d.prototype);a.Behaviour=d});ace.define("ace/token_iterator",["require","exports","module","ace/range"],function(b,a,c){var e=b("./range").Range;var d=function(h,g,i){this.$session=h;this.$row=g;this.$rowTokens=h.getTokens(g);var f=h.getTokenAt(g,i);this.$tokenIndex=f?f.index:-1};(function(){this.stepBackward=function(){this.$tokenIndex-=1;while(this.$tokenIndex<0){this.$row-=1;if(this.$row<0){this.$row=0;return null}this.$rowTokens=this.$session.getTokens(this.$row);this.$tokenIndex=this.$rowTokens.length-1}return this.$rowTokens[this.$tokenIndex]};this.stepForward=function(){this.$tokenIndex+=1;var f;while(this.$tokenIndex>=this.$rowTokens.length){this.$row+=1;if(!f){f=this.$session.getLength()}if(this.$row>=f){this.$row=f-1;return null}this.$rowTokens=this.$session.getTokens(this.$row);this.$tokenIndex=0}return this.$rowTokens[this.$tokenIndex]};this.getCurrentToken=function(){return this.$rowTokens[this.$tokenIndex]};this.getCurrentTokenRow=function(){return this.$row};this.getCurrentTokenColumn=function(){var g=this.$rowTokens;var f=this.$tokenIndex;var h=g[f].start;if(h!==undefined){return h}h=0;while(f>0){f-=1;h+=g[f].value.length}return h};this.getCurrentTokenPosition=function(){return{row:this.$row,column:this.getCurrentTokenColumn()}};this.getCurrentTokenRange=function(){var f=this.$rowTokens[this.$tokenIndex];var g=this.getCurrentTokenColumn();return new e(this.$row,g,this.$row,g+f.value.length)}}).call(d.prototype);a.TokenIterator=d});ace.define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(f,i,d){var l=f("../../lib/oop");var h=f("../behaviour").Behaviour;var n=f("../../token_iterator").TokenIterator;var c=f("../../lib/lang");var j=["text","paren.rparen","punctuation.operator"];var e=["text","paren.rparen","punctuation.operator","comment"];var a;var g={};var m={'"':'"',"'":"'"};var b=function(p){var q=-1;if(p.multiSelect){q=p.selection.index;if(g.rangeCount!=p.multiSelect.rangeCount){g={rangeCount:p.multiSelect.rangeCount}}}if(g[q]){return a=g[q]}a=g[q]={autoInsertedBrackets:0,autoInsertedRow:-1,autoInsertedLineEnd:"",maybeInsertedBrackets:0,maybeInsertedRow:-1,maybeInsertedLineStart:"",maybeInsertedLineEnd:""}};var k=function(s,r,p,q){var t=s.end.row-s.start.row;return{text:p+r+q,selection:[0,s.start.column+1,t,s.end.column+(t?0:1)]}};var o=function(p){this.add("braces","insertion",function(r,u,x,A,C){var D=x.getCursorPosition();var E=A.doc.getLine(D.row);if(C=="{"){b(x);var B=x.getSelectionRange();var v=A.doc.getTextRange(B);if(v!==""&&v!=="{"&&x.getWrapBehavioursEnabled()){return k(B,v,"{","}")}else{if(o.isSaneInsertion(x,A)){if(/[\]\}\)]/.test(E[D.column])||x.inMultiSelectMode||p&&p.braces){o.recordAutoInsert(x,A,"}");return{text:"{}",selection:[1,1]}}else{o.recordMaybeInsert(x,A,"{");return{text:"{",selection:[1,1]}}}}}else{if(C=="}"){b(x);var y=E.substring(D.column,D.column+1);if(y=="}"){var q=A.$findOpeningBracket("}",{column:D.column+1,row:D.row});if(q!==null&&o.isAutoInsertedClosing(D,E,C)){o.popAutoInsertedClosing();return{text:"",selection:[1,1]}}}}else{if(C=="\n"||C=="\r\n"){b(x);var t="";if(o.isMaybeInsertedClosing(D,E)){t=c.stringRepeat("}",a.maybeInsertedBrackets);o.clearMaybeInsertedClosing()}var y=E.substring(D.column,D.column+1);if(y==="}"){var z=A.findMatchingBracket({row:D.row,column:D.column+1},"}");if(!z){return null}var w=this.$getIndent(A.getLine(z.row))}else{if(t){var w=this.$getIndent(E)}else{o.clearMaybeInsertedClosing();return}}var s=w+A.getTabString();return{text:"\n"+s+"\n"+w+t,selection:[1,s.length,1,s.length]}}else{o.clearMaybeInsertedClosing()}}}});this.add("braces","deletion",function(v,u,t,w,r){var s=w.doc.getTextRange(r);if(!r.isMultiLine()&&s=="{"){b(t);var q=w.doc.getLine(r.start.row);var x=q.substring(r.end.column,r.end.column+1);if(x=="}"){r.end.column++;return r}else{a.maybeInsertedBrackets--}}});this.add("parens","insertion",function(r,s,u,w,y){if(y=="("){b(u);var x=u.getSelectionRange();var t=w.doc.getTextRange(x);if(t!==""&&u.getWrapBehavioursEnabled()){return k(x,t,"(",")")}else{if(o.isSaneInsertion(u,w)){o.recordAutoInsert(u,w,")");return{text:"()",selection:[1,1]}}}}else{if(y==")"){b(u);var z=u.getCursorPosition();var A=w.doc.getLine(z.row);var v=A.substring(z.column,z.column+1);if(v==")"){var q=w.$findOpeningBracket(")",{column:z.column+1,row:z.row});if(q!==null&&o.isAutoInsertedClosing(z,A,y)){o.popAutoInsertedClosing();return{text:"",selection:[1,1]}}}}}});this.add("parens","deletion",function(v,u,t,w,r){var s=w.doc.getTextRange(r);if(!r.isMultiLine()&&s=="("){b(t);var q=w.doc.getLine(r.start.row);var x=q.substring(r.start.column+1,r.start.column+2);if(x==")"){r.end.column++;return r}}});this.add("brackets","insertion",function(r,s,u,w,y){if(y=="["){b(u);var x=u.getSelectionRange();var t=w.doc.getTextRange(x);if(t!==""&&u.getWrapBehavioursEnabled()){return k(x,t,"[","]")}else{if(o.isSaneInsertion(u,w)){o.recordAutoInsert(u,w,"]");return{text:"[]",selection:[1,1]}}}}else{if(y=="]"){b(u);var z=u.getCursorPosition();var A=w.doc.getLine(z.row);var v=A.substring(z.column,z.column+1);if(v=="]"){var q=w.$findOpeningBracket("]",{column:z.column+1,row:z.row});if(q!==null&&o.isAutoInsertedClosing(z,A,y)){o.popAutoInsertedClosing();return{text:"",selection:[1,1]}}}}}});this.add("brackets","deletion",function(v,u,t,w,r){var s=w.doc.getTextRange(r);if(!r.isMultiLine()&&s=="["){b(t);var q=w.doc.getLine(r.start.row);var x=q.substring(r.start.column+1,r.start.column+2);if(x=="]"){r.end.column++;return r}}});this.add("string_dquotes","insertion",function(v,G,t,q,A){var F=q.$mode.$quotes||m;if(A.length==1&&F[A]){if(this.lineCommentStart&&this.lineCommentStart.indexOf(A)!=-1){return}b(t);var J=A;var K=t.getSelectionRange();var B=q.doc.getTextRange(K);if(B!==""&&(B.length!=1||!F[B])&&t.getWrapBehavioursEnabled()){return k(K,B,J,J)}else{if(!B){var u=t.getCursorPosition();var x=q.doc.getLine(u.row);var r=x.substring(u.column-1,u.column);var z=x.substring(u.column,u.column+1);var w=q.getTokenAt(u.row,u.column);var E=q.getTokenAt(u.row,u.column+1);if(r=="\\"&&w&&/escape/.test(w.type)){return null}var I=w&&/string|escape/.test(w.type);var D=!E||/string|escape/.test(E.type);var C;if(z==J){C=I!==D;if(C&&/string\.end/.test(E.type)){C=false}}else{if(I&&!D){return null}if(I&&D){return null}var s=q.$mode.tokenRe;s.lastIndex=0;var y=s.test(r);s.lastIndex=0;var H=s.test(r);if(y||H){return null}if(z&&!/[\s;,.})\]\\]/.test(z)){return null}C=true}return{text:C?J+J:"",selection:[1,1]}}}}});this.add("string_dquotes","deletion",function(v,u,t,w,r){var s=w.doc.getTextRange(r);if(!r.isMultiLine()&&(s=='"'||s=="'")){b(t);var q=w.doc.getLine(r.start.row);var x=q.substring(r.start.column+1,r.start.column+2);if(x==s){r.end.column++;return r}}})};o.isSaneInsertion=function(r,s){var t=r.getCursorPosition();var q=new n(s,t.row,t.column);if(!this.$matchTokenType(q.getCurrentToken()||"text",j)){var p=new n(s,t.row,t.column+1);if(!this.$matchTokenType(p.getCurrentToken()||"text",j)){return false}}q.stepForward();return q.getCurrentTokenRow()!==t.row||this.$matchTokenType(q.getCurrentToken()||"text",e)};o.$matchTokenType=function(q,p){return p.indexOf(q.type||q)>-1};o.recordAutoInsert=function(q,r,t){var s=q.getCursorPosition();var p=r.doc.getLine(s.row);if(!this.isAutoInsertedClosing(s,p,a.autoInsertedLineEnd[0])){a.autoInsertedBrackets=0}a.autoInsertedRow=s.row;a.autoInsertedLineEnd=t+p.substr(s.column);a.autoInsertedBrackets++};o.recordMaybeInsert=function(q,r,t){var s=q.getCursorPosition();var p=r.doc.getLine(s.row);if(!this.isMaybeInsertedClosing(s,p)){a.maybeInsertedBrackets=0}a.maybeInsertedRow=s.row;a.maybeInsertedLineStart=p.substr(0,s.column)+t;a.maybeInsertedLineEnd=p.substr(s.column);a.maybeInsertedBrackets++};o.isAutoInsertedClosing=function(r,p,q){return a.autoInsertedBrackets>0&&r.row===a.autoInsertedRow&&q===a.autoInsertedLineEnd[0]&&p.substr(r.column)===a.autoInsertedLineEnd};o.isMaybeInsertedClosing=function(q,p){return a.maybeInsertedBrackets>0&&q.row===a.maybeInsertedRow&&p.substr(q.column)===a.maybeInsertedLineEnd&&p.substr(0,q.column)==a.maybeInsertedLineStart};o.popAutoInsertedClosing=function(){a.autoInsertedLineEnd=a.autoInsertedLineEnd.substr(1);a.autoInsertedBrackets--};o.clearMaybeInsertedClosing=function(){if(a){a.maybeInsertedBrackets=0;a.maybeInsertedRow=-1}};l.inherits(o,h);i.CstyleBehaviour=o});ace.define("ace/unicode",["require","exports","module"],function(c,b,d){b.packages={};a({L:"0041-005A0061-007A00AA00B500BA00C0-00D600D8-00F600F8-02C102C6-02D102E0-02E402EC02EE0370-037403760377037A-037D03860388-038A038C038E-03A103A3-03F503F7-0481048A-05250531-055605590561-058705D0-05EA05F0-05F20621-064A066E066F0671-06D306D506E506E606EE06EF06FA-06FC06FF07100712-072F074D-07A507B107CA-07EA07F407F507FA0800-0815081A082408280904-0939093D09500958-0961097109720979-097F0985-098C098F09900993-09A809AA-09B009B209B6-09B909BD09CE09DC09DD09DF-09E109F009F10A05-0A0A0A0F0A100A13-0A280A2A-0A300A320A330A350A360A380A390A59-0A5C0A5E0A72-0A740A85-0A8D0A8F-0A910A93-0AA80AAA-0AB00AB20AB30AB5-0AB90ABD0AD00AE00AE10B05-0B0C0B0F0B100B13-0B280B2A-0B300B320B330B35-0B390B3D0B5C0B5D0B5F-0B610B710B830B85-0B8A0B8E-0B900B92-0B950B990B9A0B9C0B9E0B9F0BA30BA40BA8-0BAA0BAE-0BB90BD00C05-0C0C0C0E-0C100C12-0C280C2A-0C330C35-0C390C3D0C580C590C600C610C85-0C8C0C8E-0C900C92-0CA80CAA-0CB30CB5-0CB90CBD0CDE0CE00CE10D05-0D0C0D0E-0D100D12-0D280D2A-0D390D3D0D600D610D7A-0D7F0D85-0D960D9A-0DB10DB3-0DBB0DBD0DC0-0DC60E01-0E300E320E330E40-0E460E810E820E840E870E880E8A0E8D0E94-0E970E99-0E9F0EA1-0EA30EA50EA70EAA0EAB0EAD-0EB00EB20EB30EBD0EC0-0EC40EC60EDC0EDD0F000F40-0F470F49-0F6C0F88-0F8B1000-102A103F1050-1055105A-105D106110651066106E-10701075-1081108E10A0-10C510D0-10FA10FC1100-1248124A-124D1250-12561258125A-125D1260-1288128A-128D1290-12B012B2-12B512B8-12BE12C012C2-12C512C8-12D612D8-13101312-13151318-135A1380-138F13A0-13F41401-166C166F-167F1681-169A16A0-16EA1700-170C170E-17111720-17311740-17511760-176C176E-17701780-17B317D717DC1820-18771880-18A818AA18B0-18F51900-191C1950-196D1970-19741980-19AB19C1-19C71A00-1A161A20-1A541AA71B05-1B331B45-1B4B1B83-1BA01BAE1BAF1C00-1C231C4D-1C4F1C5A-1C7D1CE9-1CEC1CEE-1CF11D00-1DBF1E00-1F151F18-1F1D1F20-1F451F48-1F4D1F50-1F571F591F5B1F5D1F5F-1F7D1F80-1FB41FB6-1FBC1FBE1FC2-1FC41FC6-1FCC1FD0-1FD31FD6-1FDB1FE0-1FEC1FF2-1FF41FF6-1FFC2071207F2090-209421022107210A-211321152119-211D212421262128212A-212D212F-2139213C-213F2145-2149214E218321842C00-2C2E2C30-2C5E2C60-2CE42CEB-2CEE2D00-2D252D30-2D652D6F2D80-2D962DA0-2DA62DA8-2DAE2DB0-2DB62DB8-2DBE2DC0-2DC62DC8-2DCE2DD0-2DD62DD8-2DDE2E2F300530063031-3035303B303C3041-3096309D-309F30A1-30FA30FC-30FF3105-312D3131-318E31A0-31B731F0-31FF3400-4DB54E00-9FCBA000-A48CA4D0-A4FDA500-A60CA610-A61FA62AA62BA640-A65FA662-A66EA67F-A697A6A0-A6E5A717-A71FA722-A788A78BA78CA7FB-A801A803-A805A807-A80AA80C-A822A840-A873A882-A8B3A8F2-A8F7A8FBA90A-A925A930-A946A960-A97CA984-A9B2A9CFAA00-AA28AA40-AA42AA44-AA4BAA60-AA76AA7AAA80-AAAFAAB1AAB5AAB6AAB9-AABDAAC0AAC2AADB-AADDABC0-ABE2AC00-D7A3D7B0-D7C6D7CB-D7FBF900-FA2DFA30-FA6DFA70-FAD9FB00-FB06FB13-FB17FB1DFB1F-FB28FB2A-FB36FB38-FB3CFB3EFB40FB41FB43FB44FB46-FBB1FBD3-FD3DFD50-FD8FFD92-FDC7FDF0-FDFBFE70-FE74FE76-FEFCFF21-FF3AFF41-FF5AFF66-FFBEFFC2-FFC7FFCA-FFCFFFD2-FFD7FFDA-FFDC",Ll:"0061-007A00AA00B500BA00DF-00F600F8-00FF01010103010501070109010B010D010F01110113011501170119011B011D011F01210123012501270129012B012D012F01310133013501370138013A013C013E014001420144014601480149014B014D014F01510153015501570159015B015D015F01610163016501670169016B016D016F0171017301750177017A017C017E-0180018301850188018C018D019201950199-019B019E01A101A301A501A801AA01AB01AD01B001B401B601B901BA01BD-01BF01C601C901CC01CE01D001D201D401D601D801DA01DC01DD01DF01E101E301E501E701E901EB01ED01EF01F001F301F501F901FB01FD01FF02010203020502070209020B020D020F02110213021502170219021B021D021F02210223022502270229022B022D022F02310233-0239023C023F0240024202470249024B024D024F-02930295-02AF037103730377037B-037D039003AC-03CE03D003D103D5-03D703D903DB03DD03DF03E103E303E503E703E903EB03ED03EF-03F303F503F803FB03FC0430-045F04610463046504670469046B046D046F04710473047504770479047B047D047F0481048B048D048F04910493049504970499049B049D049F04A104A304A504A704A904AB04AD04AF04B104B304B504B704B904BB04BD04BF04C204C404C604C804CA04CC04CE04CF04D104D304D504D704D904DB04DD04DF04E104E304E504E704E904EB04ED04EF04F104F304F504F704F904FB04FD04FF05010503050505070509050B050D050F05110513051505170519051B051D051F0521052305250561-05871D00-1D2B1D62-1D771D79-1D9A1E011E031E051E071E091E0B1E0D1E0F1E111E131E151E171E191E1B1E1D1E1F1E211E231E251E271E291E2B1E2D1E2F1E311E331E351E371E391E3B1E3D1E3F1E411E431E451E471E491E4B1E4D1E4F1E511E531E551E571E591E5B1E5D1E5F1E611E631E651E671E691E6B1E6D1E6F1E711E731E751E771E791E7B1E7D1E7F1E811E831E851E871E891E8B1E8D1E8F1E911E931E95-1E9D1E9F1EA11EA31EA51EA71EA91EAB1EAD1EAF1EB11EB31EB51EB71EB91EBB1EBD1EBF1EC11EC31EC51EC71EC91ECB1ECD1ECF1ED11ED31ED51ED71ED91EDB1EDD1EDF1EE11EE31EE51EE71EE91EEB1EED1EEF1EF11EF31EF51EF71EF91EFB1EFD1EFF-1F071F10-1F151F20-1F271F30-1F371F40-1F451F50-1F571F60-1F671F70-1F7D1F80-1F871F90-1F971FA0-1FA71FB0-1FB41FB61FB71FBE1FC2-1FC41FC61FC71FD0-1FD31FD61FD71FE0-1FE71FF2-1FF41FF61FF7210A210E210F2113212F21342139213C213D2146-2149214E21842C30-2C5E2C612C652C662C682C6A2C6C2C712C732C742C76-2C7C2C812C832C852C872C892C8B2C8D2C8F2C912C932C952C972C992C9B2C9D2C9F2CA12CA32CA52CA72CA92CAB2CAD2CAF2CB12CB32CB52CB72CB92CBB2CBD2CBF2CC12CC32CC52CC72CC92CCB2CCD2CCF2CD12CD32CD52CD72CD92CDB2CDD2CDF2CE12CE32CE42CEC2CEE2D00-2D25A641A643A645A647A649A64BA64DA64FA651A653A655A657A659A65BA65DA65FA663A665A667A669A66BA66DA681A683A685A687A689A68BA68DA68FA691A693A695A697A723A725A727A729A72BA72DA72F-A731A733A735A737A739A73BA73DA73FA741A743A745A747A749A74BA74DA74FA751A753A755A757A759A75BA75DA75FA761A763A765A767A769A76BA76DA76FA771-A778A77AA77CA77FA781A783A785A787A78CFB00-FB06FB13-FB17FF41-FF5A",Lu:"0041-005A00C0-00D600D8-00DE01000102010401060108010A010C010E01100112011401160118011A011C011E01200122012401260128012A012C012E01300132013401360139013B013D013F0141014301450147014A014C014E01500152015401560158015A015C015E01600162016401660168016A016C016E017001720174017601780179017B017D018101820184018601870189-018B018E-0191019301940196-0198019C019D019F01A001A201A401A601A701A901AC01AE01AF01B1-01B301B501B701B801BC01C401C701CA01CD01CF01D101D301D501D701D901DB01DE01E001E201E401E601E801EA01EC01EE01F101F401F6-01F801FA01FC01FE02000202020402060208020A020C020E02100212021402160218021A021C021E02200222022402260228022A022C022E02300232023A023B023D023E02410243-02460248024A024C024E03700372037603860388-038A038C038E038F0391-03A103A3-03AB03CF03D2-03D403D803DA03DC03DE03E003E203E403E603E803EA03EC03EE03F403F703F903FA03FD-042F04600462046404660468046A046C046E04700472047404760478047A047C047E0480048A048C048E04900492049404960498049A049C049E04A004A204A404A604A804AA04AC04AE04B004B204B404B604B804BA04BC04BE04C004C104C304C504C704C904CB04CD04D004D204D404D604D804DA04DC04DE04E004E204E404E604E804EA04EC04EE04F004F204F404F604F804FA04FC04FE05000502050405060508050A050C050E05100512051405160518051A051C051E0520052205240531-055610A0-10C51E001E021E041E061E081E0A1E0C1E0E1E101E121E141E161E181E1A1E1C1E1E1E201E221E241E261E281E2A1E2C1E2E1E301E321E341E361E381E3A1E3C1E3E1E401E421E441E461E481E4A1E4C1E4E1E501E521E541E561E581E5A1E5C1E5E1E601E621E641E661E681E6A1E6C1E6E1E701E721E741E761E781E7A1E7C1E7E1E801E821E841E861E881E8A1E8C1E8E1E901E921E941E9E1EA01EA21EA41EA61EA81EAA1EAC1EAE1EB01EB21EB41EB61EB81EBA1EBC1EBE1EC01EC21EC41EC61EC81ECA1ECC1ECE1ED01ED21ED41ED61ED81EDA1EDC1EDE1EE01EE21EE41EE61EE81EEA1EEC1EEE1EF01EF21EF41EF61EF81EFA1EFC1EFE1F08-1F0F1F18-1F1D1F28-1F2F1F38-1F3F1F48-1F4D1F591F5B1F5D1F5F1F68-1F6F1FB8-1FBB1FC8-1FCB1FD8-1FDB1FE8-1FEC1FF8-1FFB21022107210B-210D2110-211221152119-211D212421262128212A-212D2130-2133213E213F214521832C00-2C2E2C602C62-2C642C672C692C6B2C6D-2C702C722C752C7E-2C802C822C842C862C882C8A2C8C2C8E2C902C922C942C962C982C9A2C9C2C9E2CA02CA22CA42CA62CA82CAA2CAC2CAE2CB02CB22CB42CB62CB82CBA2CBC2CBE2CC02CC22CC42CC62CC82CCA2CCC2CCE2CD02CD22CD42CD62CD82CDA2CDC2CDE2CE02CE22CEB2CEDA640A642A644A646A648A64AA64CA64EA650A652A654A656A658A65AA65CA65EA662A664A666A668A66AA66CA680A682A684A686A688A68AA68CA68EA690A692A694A696A722A724A726A728A72AA72CA72EA732A734A736A738A73AA73CA73EA740A742A744A746A748A74AA74CA74EA750A752A754A756A758A75AA75CA75EA760A762A764A766A768A76AA76CA76EA779A77BA77DA77EA780A782A784A786A78BFF21-FF3A",Lt:"01C501C801CB01F21F88-1F8F1F98-1F9F1FA8-1FAF1FBC1FCC1FFC",Lm:"02B0-02C102C6-02D102E0-02E402EC02EE0374037A0559064006E506E607F407F507FA081A0824082809710E460EC610FC17D718431AA71C78-1C7D1D2C-1D611D781D9B-1DBF2071207F2090-20942C7D2D6F2E2F30053031-3035303B309D309E30FC-30FEA015A4F8-A4FDA60CA67FA717-A71FA770A788A9CFAA70AADDFF70FF9EFF9F",Lo:"01BB01C0-01C3029405D0-05EA05F0-05F20621-063F0641-064A066E066F0671-06D306D506EE06EF06FA-06FC06FF07100712-072F074D-07A507B107CA-07EA0800-08150904-0939093D09500958-096109720979-097F0985-098C098F09900993-09A809AA-09B009B209B6-09B909BD09CE09DC09DD09DF-09E109F009F10A05-0A0A0A0F0A100A13-0A280A2A-0A300A320A330A350A360A380A390A59-0A5C0A5E0A72-0A740A85-0A8D0A8F-0A910A93-0AA80AAA-0AB00AB20AB30AB5-0AB90ABD0AD00AE00AE10B05-0B0C0B0F0B100B13-0B280B2A-0B300B320B330B35-0B390B3D0B5C0B5D0B5F-0B610B710B830B85-0B8A0B8E-0B900B92-0B950B990B9A0B9C0B9E0B9F0BA30BA40BA8-0BAA0BAE-0BB90BD00C05-0C0C0C0E-0C100C12-0C280C2A-0C330C35-0C390C3D0C580C590C600C610C85-0C8C0C8E-0C900C92-0CA80CAA-0CB30CB5-0CB90CBD0CDE0CE00CE10D05-0D0C0D0E-0D100D12-0D280D2A-0D390D3D0D600D610D7A-0D7F0D85-0D960D9A-0DB10DB3-0DBB0DBD0DC0-0DC60E01-0E300E320E330E40-0E450E810E820E840E870E880E8A0E8D0E94-0E970E99-0E9F0EA1-0EA30EA50EA70EAA0EAB0EAD-0EB00EB20EB30EBD0EC0-0EC40EDC0EDD0F000F40-0F470F49-0F6C0F88-0F8B1000-102A103F1050-1055105A-105D106110651066106E-10701075-1081108E10D0-10FA1100-1248124A-124D1250-12561258125A-125D1260-1288128A-128D1290-12B012B2-12B512B8-12BE12C012C2-12C512C8-12D612D8-13101312-13151318-135A1380-138F13A0-13F41401-166C166F-167F1681-169A16A0-16EA1700-170C170E-17111720-17311740-17511760-176C176E-17701780-17B317DC1820-18421844-18771880-18A818AA18B0-18F51900-191C1950-196D1970-19741980-19AB19C1-19C71A00-1A161A20-1A541B05-1B331B45-1B4B1B83-1BA01BAE1BAF1C00-1C231C4D-1C4F1C5A-1C771CE9-1CEC1CEE-1CF12135-21382D30-2D652D80-2D962DA0-2DA62DA8-2DAE2DB0-2DB62DB8-2DBE2DC0-2DC62DC8-2DCE2DD0-2DD62DD8-2DDE3006303C3041-3096309F30A1-30FA30FF3105-312D3131-318E31A0-31B731F0-31FF3400-4DB54E00-9FCBA000-A014A016-A48CA4D0-A4F7A500-A60BA610-A61FA62AA62BA66EA6A0-A6E5A7FB-A801A803-A805A807-A80AA80C-A822A840-A873A882-A8B3A8F2-A8F7A8FBA90A-A925A930-A946A960-A97CA984-A9B2AA00-AA28AA40-AA42AA44-AA4BAA60-AA6FAA71-AA76AA7AAA80-AAAFAAB1AAB5AAB6AAB9-AABDAAC0AAC2AADBAADCABC0-ABE2AC00-D7A3D7B0-D7C6D7CB-D7FBF900-FA2DFA30-FA6DFA70-FAD9FB1DFB1F-FB28FB2A-FB36FB38-FB3CFB3EFB40FB41FB43FB44FB46-FBB1FBD3-FD3DFD50-FD8FFD92-FDC7FDF0-FDFBFE70-FE74FE76-FEFCFF66-FF6FFF71-FF9DFFA0-FFBEFFC2-FFC7FFCA-FFCFFFD2-FFD7FFDA-FFDC",M:"0300-036F0483-04890591-05BD05BF05C105C205C405C505C70610-061A064B-065E067006D6-06DC06DE-06E406E706E806EA-06ED07110730-074A07A6-07B007EB-07F30816-0819081B-08230825-08270829-082D0900-0903093C093E-094E0951-0955096209630981-098309BC09BE-09C409C709C809CB-09CD09D709E209E30A01-0A030A3C0A3E-0A420A470A480A4B-0A4D0A510A700A710A750A81-0A830ABC0ABE-0AC50AC7-0AC90ACB-0ACD0AE20AE30B01-0B030B3C0B3E-0B440B470B480B4B-0B4D0B560B570B620B630B820BBE-0BC20BC6-0BC80BCA-0BCD0BD70C01-0C030C3E-0C440C46-0C480C4A-0C4D0C550C560C620C630C820C830CBC0CBE-0CC40CC6-0CC80CCA-0CCD0CD50CD60CE20CE30D020D030D3E-0D440D46-0D480D4A-0D4D0D570D620D630D820D830DCA0DCF-0DD40DD60DD8-0DDF0DF20DF30E310E34-0E3A0E47-0E4E0EB10EB4-0EB90EBB0EBC0EC8-0ECD0F180F190F350F370F390F3E0F3F0F71-0F840F860F870F90-0F970F99-0FBC0FC6102B-103E1056-1059105E-10601062-10641067-106D1071-10741082-108D108F109A-109D135F1712-17141732-1734175217531772177317B6-17D317DD180B-180D18A91920-192B1930-193B19B0-19C019C819C91A17-1A1B1A55-1A5E1A60-1A7C1A7F1B00-1B041B34-1B441B6B-1B731B80-1B821BA1-1BAA1C24-1C371CD0-1CD21CD4-1CE81CED1CF21DC0-1DE61DFD-1DFF20D0-20F02CEF-2CF12DE0-2DFF302A-302F3099309AA66F-A672A67CA67DA6F0A6F1A802A806A80BA823-A827A880A881A8B4-A8C4A8E0-A8F1A926-A92DA947-A953A980-A983A9B3-A9C0AA29-AA36AA43AA4CAA4DAA7BAAB0AAB2-AAB4AAB7AAB8AABEAABFAAC1ABE3-ABEAABECABEDFB1EFE00-FE0FFE20-FE26",Mn:"0300-036F0483-04870591-05BD05BF05C105C205C405C505C70610-061A064B-065E067006D6-06DC06DF-06E406E706E806EA-06ED07110730-074A07A6-07B007EB-07F30816-0819081B-08230825-08270829-082D0900-0902093C0941-0948094D0951-095509620963098109BC09C1-09C409CD09E209E30A010A020A3C0A410A420A470A480A4B-0A4D0A510A700A710A750A810A820ABC0AC1-0AC50AC70AC80ACD0AE20AE30B010B3C0B3F0B41-0B440B4D0B560B620B630B820BC00BCD0C3E-0C400C46-0C480C4A-0C4D0C550C560C620C630CBC0CBF0CC60CCC0CCD0CE20CE30D41-0D440D4D0D620D630DCA0DD2-0DD40DD60E310E34-0E3A0E47-0E4E0EB10EB4-0EB90EBB0EBC0EC8-0ECD0F180F190F350F370F390F71-0F7E0F80-0F840F860F870F90-0F970F99-0FBC0FC6102D-10301032-10371039103A103D103E10581059105E-10601071-1074108210851086108D109D135F1712-17141732-1734175217531772177317B7-17BD17C617C9-17D317DD180B-180D18A91920-19221927192819321939-193B1A171A181A561A58-1A5E1A601A621A65-1A6C1A73-1A7C1A7F1B00-1B031B341B36-1B3A1B3C1B421B6B-1B731B801B811BA2-1BA51BA81BA91C2C-1C331C361C371CD0-1CD21CD4-1CE01CE2-1CE81CED1DC0-1DE61DFD-1DFF20D0-20DC20E120E5-20F02CEF-2CF12DE0-2DFF302A-302F3099309AA66FA67CA67DA6F0A6F1A802A806A80BA825A826A8C4A8E0-A8F1A926-A92DA947-A951A980-A982A9B3A9B6-A9B9A9BCAA29-AA2EAA31AA32AA35AA36AA43AA4CAAB0AAB2-AAB4AAB7AAB8AABEAABFAAC1ABE5ABE8ABEDFB1EFE00-FE0FFE20-FE26",Mc:"0903093E-09400949-094C094E0982098309BE-09C009C709C809CB09CC09D70A030A3E-0A400A830ABE-0AC00AC90ACB0ACC0B020B030B3E0B400B470B480B4B0B4C0B570BBE0BBF0BC10BC20BC6-0BC80BCA-0BCC0BD70C01-0C030C41-0C440C820C830CBE0CC0-0CC40CC70CC80CCA0CCB0CD50CD60D020D030D3E-0D400D46-0D480D4A-0D4C0D570D820D830DCF-0DD10DD8-0DDF0DF20DF30F3E0F3F0F7F102B102C10311038103B103C105610571062-10641067-106D108310841087-108C108F109A-109C17B617BE-17C517C717C81923-19261929-192B193019311933-193819B0-19C019C819C91A19-1A1B1A551A571A611A631A641A6D-1A721B041B351B3B1B3D-1B411B431B441B821BA11BA61BA71BAA1C24-1C2B1C341C351CE11CF2A823A824A827A880A881A8B4-A8C3A952A953A983A9B4A9B5A9BAA9BBA9BD-A9C0AA2FAA30AA33AA34AA4DAA7BABE3ABE4ABE6ABE7ABE9ABEAABEC",Me:"0488048906DE20DD-20E020E2-20E4A670-A672",N:"0030-003900B200B300B900BC-00BE0660-066906F0-06F907C0-07C90966-096F09E6-09EF09F4-09F90A66-0A6F0AE6-0AEF0B66-0B6F0BE6-0BF20C66-0C6F0C78-0C7E0CE6-0CEF0D66-0D750E50-0E590ED0-0ED90F20-0F331040-10491090-10991369-137C16EE-16F017E0-17E917F0-17F91810-18191946-194F19D0-19DA1A80-1A891A90-1A991B50-1B591BB0-1BB91C40-1C491C50-1C5920702074-20792080-20892150-21822185-21892460-249B24EA-24FF2776-27932CFD30073021-30293038-303A3192-31953220-32293251-325F3280-328932B1-32BFA620-A629A6E6-A6EFA830-A835A8D0-A8D9A900-A909A9D0-A9D9AA50-AA59ABF0-ABF9FF10-FF19",Nd:"0030-00390660-066906F0-06F907C0-07C90966-096F09E6-09EF0A66-0A6F0AE6-0AEF0B66-0B6F0BE6-0BEF0C66-0C6F0CE6-0CEF0D66-0D6F0E50-0E590ED0-0ED90F20-0F291040-10491090-109917E0-17E91810-18191946-194F19D0-19DA1A80-1A891A90-1A991B50-1B591BB0-1BB91C40-1C491C50-1C59A620-A629A8D0-A8D9A900-A909A9D0-A9D9AA50-AA59ABF0-ABF9FF10-FF19",Nl:"16EE-16F02160-21822185-218830073021-30293038-303AA6E6-A6EF",No:"00B200B300B900BC-00BE09F4-09F90BF0-0BF20C78-0C7E0D70-0D750F2A-0F331369-137C17F0-17F920702074-20792080-20892150-215F21892460-249B24EA-24FF2776-27932CFD3192-31953220-32293251-325F3280-328932B1-32BFA830-A835",P:"0021-00230025-002A002C-002F003A003B003F0040005B-005D005F007B007D00A100AB00B700BB00BF037E0387055A-055F0589058A05BE05C005C305C605F305F40609060A060C060D061B061E061F066A-066D06D40700-070D07F7-07F90830-083E0964096509700DF40E4F0E5A0E5B0F04-0F120F3A-0F3D0F850FD0-0FD4104A-104F10FB1361-13681400166D166E169B169C16EB-16ED1735173617D4-17D617D8-17DA1800-180A1944194519DE19DF1A1E1A1F1AA0-1AA61AA8-1AAD1B5A-1B601C3B-1C3F1C7E1C7F1CD32010-20272030-20432045-20512053-205E207D207E208D208E2329232A2768-277527C527C627E6-27EF2983-299829D8-29DB29FC29FD2CF9-2CFC2CFE2CFF2E00-2E2E2E302E313001-30033008-30113014-301F3030303D30A030FBA4FEA4FFA60D-A60FA673A67EA6F2-A6F7A874-A877A8CEA8CFA8F8-A8FAA92EA92FA95FA9C1-A9CDA9DEA9DFAA5C-AA5FAADEAADFABEBFD3EFD3FFE10-FE19FE30-FE52FE54-FE61FE63FE68FE6AFE6BFF01-FF03FF05-FF0AFF0C-FF0FFF1AFF1BFF1FFF20FF3B-FF3DFF3FFF5BFF5DFF5F-FF65",Pd:"002D058A05BE140018062010-20152E172E1A301C303030A0FE31FE32FE58FE63FF0D",Ps:"0028005B007B0F3A0F3C169B201A201E2045207D208D23292768276A276C276E27702772277427C527E627E827EA27EC27EE2983298529872989298B298D298F299129932995299729D829DA29FC2E222E242E262E283008300A300C300E3010301430163018301A301DFD3EFE17FE35FE37FE39FE3BFE3DFE3FFE41FE43FE47FE59FE5BFE5DFF08FF3BFF5BFF5FFF62",Pe:"0029005D007D0F3B0F3D169C2046207E208E232A2769276B276D276F27712773277527C627E727E927EB27ED27EF298429862988298A298C298E2990299229942996299829D929DB29FD2E232E252E272E293009300B300D300F3011301530173019301B301E301FFD3FFE18FE36FE38FE3AFE3CFE3EFE40FE42FE44FE48FE5AFE5CFE5EFF09FF3DFF5DFF60FF63",Pi:"00AB2018201B201C201F20392E022E042E092E0C2E1C2E20",Pf:"00BB2019201D203A2E032E052E0A2E0D2E1D2E21",Pc:"005F203F20402054FE33FE34FE4D-FE4FFF3F",Po:"0021-00230025-0027002A002C002E002F003A003B003F0040005C00A100B700BF037E0387055A-055F058905C005C305C605F305F40609060A060C060D061B061E061F066A-066D06D40700-070D07F7-07F90830-083E0964096509700DF40E4F0E5A0E5B0F04-0F120F850FD0-0FD4104A-104F10FB1361-1368166D166E16EB-16ED1735173617D4-17D617D8-17DA1800-18051807-180A1944194519DE19DF1A1E1A1F1AA0-1AA61AA8-1AAD1B5A-1B601C3B-1C3F1C7E1C7F1CD3201620172020-20272030-2038203B-203E2041-20432047-205120532055-205E2CF9-2CFC2CFE2CFF2E002E012E06-2E082E0B2E0E-2E162E182E192E1B2E1E2E1F2E2A-2E2E2E302E313001-3003303D30FBA4FEA4FFA60D-A60FA673A67EA6F2-A6F7A874-A877A8CEA8CFA8F8-A8FAA92EA92FA95FA9C1-A9CDA9DEA9DFAA5C-AA5FAADEAADFABEBFE10-FE16FE19FE30FE45FE46FE49-FE4CFE50-FE52FE54-FE57FE5F-FE61FE68FE6AFE6BFF01-FF03FF05-FF07FF0AFF0CFF0EFF0FFF1AFF1BFF1FFF20FF3CFF61FF64FF65",S:"0024002B003C-003E005E0060007C007E00A2-00A900AC00AE-00B100B400B600B800D700F702C2-02C502D2-02DF02E5-02EB02ED02EF-02FF03750384038503F604820606-0608060B060E060F06E906FD06FE07F609F209F309FA09FB0AF10B700BF3-0BFA0C7F0CF10CF20D790E3F0F01-0F030F13-0F170F1A-0F1F0F340F360F380FBE-0FC50FC7-0FCC0FCE0FCF0FD5-0FD8109E109F13601390-139917DB194019E0-19FF1B61-1B6A1B74-1B7C1FBD1FBF-1FC11FCD-1FCF1FDD-1FDF1FED-1FEF1FFD1FFE20442052207A-207C208A-208C20A0-20B8210021012103-21062108210921142116-2118211E-2123212521272129212E213A213B2140-2144214A-214D214F2190-2328232B-23E82400-24262440-244A249C-24E92500-26CD26CF-26E126E326E8-26FF2701-27042706-2709270C-27272729-274B274D274F-27522756-275E2761-276727942798-27AF27B1-27BE27C0-27C427C7-27CA27CC27D0-27E527F0-29822999-29D729DC-29FB29FE-2B4C2B50-2B592CE5-2CEA2E80-2E992E9B-2EF32F00-2FD52FF0-2FFB300430123013302030363037303E303F309B309C319031913196-319F31C0-31E33200-321E322A-32503260-327F328A-32B032C0-32FE3300-33FF4DC0-4DFFA490-A4C6A700-A716A720A721A789A78AA828-A82BA836-A839AA77-AA79FB29FDFCFDFDFE62FE64-FE66FE69FF04FF0BFF1C-FF1EFF3EFF40FF5CFF5EFFE0-FFE6FFE8-FFEEFFFCFFFD",Sm:"002B003C-003E007C007E00AC00B100D700F703F60606-060820442052207A-207C208A-208C2140-2144214B2190-2194219A219B21A021A321A621AE21CE21CF21D221D421F4-22FF2308-230B23202321237C239B-23B323DC-23E125B725C125F8-25FF266F27C0-27C427C7-27CA27CC27D0-27E527F0-27FF2900-29822999-29D729DC-29FB29FE-2AFF2B30-2B442B47-2B4CFB29FE62FE64-FE66FF0BFF1C-FF1EFF5CFF5EFFE2FFE9-FFEC",Sc:"002400A2-00A5060B09F209F309FB0AF10BF90E3F17DB20A0-20B8A838FDFCFE69FF04FFE0FFE1FFE5FFE6",Sk:"005E006000A800AF00B400B802C2-02C502D2-02DF02E5-02EB02ED02EF-02FF0375038403851FBD1FBF-1FC11FCD-1FCF1FDD-1FDF1FED-1FEF1FFD1FFE309B309CA700-A716A720A721A789A78AFF3EFF40FFE3",So:"00A600A700A900AE00B000B60482060E060F06E906FD06FE07F609FA0B700BF3-0BF80BFA0C7F0CF10CF20D790F01-0F030F13-0F170F1A-0F1F0F340F360F380FBE-0FC50FC7-0FCC0FCE0FCF0FD5-0FD8109E109F13601390-1399194019E0-19FF1B61-1B6A1B74-1B7C210021012103-21062108210921142116-2118211E-2123212521272129212E213A213B214A214C214D214F2195-2199219C-219F21A121A221A421A521A7-21AD21AF-21CD21D021D121D321D5-21F32300-2307230C-231F2322-2328232B-237B237D-239A23B4-23DB23E2-23E82400-24262440-244A249C-24E92500-25B625B8-25C025C2-25F72600-266E2670-26CD26CF-26E126E326E8-26FF2701-27042706-2709270C-27272729-274B274D274F-27522756-275E2761-276727942798-27AF27B1-27BE2800-28FF2B00-2B2F2B452B462B50-2B592CE5-2CEA2E80-2E992E9B-2EF32F00-2FD52FF0-2FFB300430123013302030363037303E303F319031913196-319F31C0-31E33200-321E322A-32503260-327F328A-32B032C0-32FE3300-33FF4DC0-4DFFA490-A4C6A828-A82BA836A837A839AA77-AA79FDFDFFE4FFE8FFEDFFEEFFFCFFFD",Z:"002000A01680180E2000-200A20282029202F205F3000",Zs:"002000A01680180E2000-200A202F205F3000",Zl:"2028",Zp:"2029",C:"0000-001F007F-009F00AD03780379037F-0383038B038D03A20526-05300557055805600588058B-059005C8-05CF05EB-05EF05F5-0605061C061D0620065F06DD070E070F074B074C07B2-07BF07FB-07FF082E082F083F-08FF093A093B094F095609570973-097809800984098D098E0991099209A909B109B3-09B509BA09BB09C509C609C909CA09CF-09D609D8-09DB09DE09E409E509FC-0A000A040A0B-0A0E0A110A120A290A310A340A370A3A0A3B0A3D0A43-0A460A490A4A0A4E-0A500A52-0A580A5D0A5F-0A650A76-0A800A840A8E0A920AA90AB10AB40ABA0ABB0AC60ACA0ACE0ACF0AD1-0ADF0AE40AE50AF00AF2-0B000B040B0D0B0E0B110B120B290B310B340B3A0B3B0B450B460B490B4A0B4E-0B550B58-0B5B0B5E0B640B650B72-0B810B840B8B-0B8D0B910B96-0B980B9B0B9D0BA0-0BA20BA5-0BA70BAB-0BAD0BBA-0BBD0BC3-0BC50BC90BCE0BCF0BD1-0BD60BD8-0BE50BFB-0C000C040C0D0C110C290C340C3A-0C3C0C450C490C4E-0C540C570C5A-0C5F0C640C650C70-0C770C800C810C840C8D0C910CA90CB40CBA0CBB0CC50CC90CCE-0CD40CD7-0CDD0CDF0CE40CE50CF00CF3-0D010D040D0D0D110D290D3A-0D3C0D450D490D4E-0D560D58-0D5F0D640D650D76-0D780D800D810D840D97-0D990DB20DBC0DBE0DBF0DC7-0DC90DCB-0DCE0DD50DD70DE0-0DF10DF5-0E000E3B-0E3E0E5C-0E800E830E850E860E890E8B0E8C0E8E-0E930E980EA00EA40EA60EA80EA90EAC0EBA0EBE0EBF0EC50EC70ECE0ECF0EDA0EDB0EDE-0EFF0F480F6D-0F700F8C-0F8F0F980FBD0FCD0FD9-0FFF10C6-10CF10FD-10FF1249124E124F12571259125E125F1289128E128F12B112B612B712BF12C112C612C712D7131113161317135B-135E137D-137F139A-139F13F5-13FF169D-169F16F1-16FF170D1715-171F1737-173F1754-175F176D17711774-177F17B417B517DE17DF17EA-17EF17FA-17FF180F181A-181F1878-187F18AB-18AF18F6-18FF191D-191F192C-192F193C-193F1941-1943196E196F1975-197F19AC-19AF19CA-19CF19DB-19DD1A1C1A1D1A5F1A7D1A7E1A8A-1A8F1A9A-1A9F1AAE-1AFF1B4C-1B4F1B7D-1B7F1BAB-1BAD1BBA-1BFF1C38-1C3A1C4A-1C4C1C80-1CCF1CF3-1CFF1DE7-1DFC1F161F171F1E1F1F1F461F471F4E1F4F1F581F5A1F5C1F5E1F7E1F7F1FB51FC51FD41FD51FDC1FF01FF11FF51FFF200B-200F202A-202E2060-206F20722073208F2095-209F20B9-20CF20F1-20FF218A-218F23E9-23FF2427-243F244B-245F26CE26E226E4-26E727002705270A270B2728274C274E2753-2755275F27602795-279727B027BF27CB27CD-27CF2B4D-2B4F2B5A-2BFF2C2F2C5F2CF2-2CF82D26-2D2F2D66-2D6E2D70-2D7F2D97-2D9F2DA72DAF2DB72DBF2DC72DCF2DD72DDF2E32-2E7F2E9A2EF4-2EFF2FD6-2FEF2FFC-2FFF3040309730983100-3104312E-3130318F31B8-31BF31E4-31EF321F32FF4DB6-4DBF9FCC-9FFFA48D-A48FA4C7-A4CFA62C-A63FA660A661A674-A67BA698-A69FA6F8-A6FFA78D-A7FAA82C-A82FA83A-A83FA878-A87FA8C5-A8CDA8DA-A8DFA8FC-A8FFA954-A95EA97D-A97FA9CEA9DA-A9DDA9E0-A9FFAA37-AA3FAA4EAA4FAA5AAA5BAA7C-AA7FAAC3-AADAAAE0-ABBFABEEABEFABFA-ABFFD7A4-D7AFD7C7-D7CAD7FC-F8FFFA2EFA2FFA6EFA6FFADA-FAFFFB07-FB12FB18-FB1CFB37FB3DFB3FFB42FB45FBB2-FBD2FD40-FD4FFD90FD91FDC8-FDEFFDFEFDFFFE1A-FE1FFE27-FE2FFE53FE67FE6C-FE6FFE75FEFD-FF00FFBF-FFC1FFC8FFC9FFD0FFD1FFD8FFD9FFDD-FFDFFFE7FFEF-FFFBFFFEFFFF",Cc:"0000-001F007F-009F",Cf:"00AD0600-060306DD070F17B417B5200B-200F202A-202E2060-2064206A-206FFEFFFFF9-FFFB",Co:"E000-F8FF",Cs:"D800-DFFF",Cn:"03780379037F-0383038B038D03A20526-05300557055805600588058B-059005C8-05CF05EB-05EF05F5-05FF06040605061C061D0620065F070E074B074C07B2-07BF07FB-07FF082E082F083F-08FF093A093B094F095609570973-097809800984098D098E0991099209A909B109B3-09B509BA09BB09C509C609C909CA09CF-09D609D8-09DB09DE09E409E509FC-0A000A040A0B-0A0E0A110A120A290A310A340A370A3A0A3B0A3D0A43-0A460A490A4A0A4E-0A500A52-0A580A5D0A5F-0A650A76-0A800A840A8E0A920AA90AB10AB40ABA0ABB0AC60ACA0ACE0ACF0AD1-0ADF0AE40AE50AF00AF2-0B000B040B0D0B0E0B110B120B290B310B340B3A0B3B0B450B460B490B4A0B4E-0B550B58-0B5B0B5E0B640B650B72-0B810B840B8B-0B8D0B910B96-0B980B9B0B9D0BA0-0BA20BA5-0BA70BAB-0BAD0BBA-0BBD0BC3-0BC50BC90BCE0BCF0BD1-0BD60BD8-0BE50BFB-0C000C040C0D0C110C290C340C3A-0C3C0C450C490C4E-0C540C570C5A-0C5F0C640C650C70-0C770C800C810C840C8D0C910CA90CB40CBA0CBB0CC50CC90CCE-0CD40CD7-0CDD0CDF0CE40CE50CF00CF3-0D010D040D0D0D110D290D3A-0D3C0D450D490D4E-0D560D58-0D5F0D640D650D76-0D780D800D810D840D97-0D990DB20DBC0DBE0DBF0DC7-0DC90DCB-0DCE0DD50DD70DE0-0DF10DF5-0E000E3B-0E3E0E5C-0E800E830E850E860E890E8B0E8C0E8E-0E930E980EA00EA40EA60EA80EA90EAC0EBA0EBE0EBF0EC50EC70ECE0ECF0EDA0EDB0EDE-0EFF0F480F6D-0F700F8C-0F8F0F980FBD0FCD0FD9-0FFF10C6-10CF10FD-10FF1249124E124F12571259125E125F1289128E128F12B112B612B712BF12C112C612C712D7131113161317135B-135E137D-137F139A-139F13F5-13FF169D-169F16F1-16FF170D1715-171F1737-173F1754-175F176D17711774-177F17DE17DF17EA-17EF17FA-17FF180F181A-181F1878-187F18AB-18AF18F6-18FF191D-191F192C-192F193C-193F1941-1943196E196F1975-197F19AC-19AF19CA-19CF19DB-19DD1A1C1A1D1A5F1A7D1A7E1A8A-1A8F1A9A-1A9F1AAE-1AFF1B4C-1B4F1B7D-1B7F1BAB-1BAD1BBA-1BFF1C38-1C3A1C4A-1C4C1C80-1CCF1CF3-1CFF1DE7-1DFC1F161F171F1E1F1F1F461F471F4E1F4F1F581F5A1F5C1F5E1F7E1F7F1FB51FC51FD41FD51FDC1FF01FF11FF51FFF2065-206920722073208F2095-209F20B9-20CF20F1-20FF218A-218F23E9-23FF2427-243F244B-245F26CE26E226E4-26E727002705270A270B2728274C274E2753-2755275F27602795-279727B027BF27CB27CD-27CF2B4D-2B4F2B5A-2BFF2C2F2C5F2CF2-2CF82D26-2D2F2D66-2D6E2D70-2D7F2D97-2D9F2DA72DAF2DB72DBF2DC72DCF2DD72DDF2E32-2E7F2E9A2EF4-2EFF2FD6-2FEF2FFC-2FFF3040309730983100-3104312E-3130318F31B8-31BF31E4-31EF321F32FF4DB6-4DBF9FCC-9FFFA48D-A48FA4C7-A4CFA62C-A63FA660A661A674-A67BA698-A69FA6F8-A6FFA78D-A7FAA82C-A82FA83A-A83FA878-A87FA8C5-A8CDA8DA-A8DFA8FC-A8FFA954-A95EA97D-A97FA9CEA9DA-A9DDA9E0-A9FFAA37-AA3FAA4EAA4FAA5AAA5BAA7C-AA7FAAC3-AADAAAE0-ABBFABEEABEFABFA-ABFFD7A4-D7AFD7C7-D7CAD7FC-D7FFFA2EFA2FFA6EFA6FFADA-FAFFFB07-FB12FB18-FB1CFB37FB3DFB3FFB42FB45FBB2-FBD2FD40-FD4FFD90FD91FDC8-FDEFFDFEFDFFFE1A-FE1FFE27-FE2FFE53FE67FE6C-FE6FFE75FEFDFEFEFF00FFBF-FFC1FFC8FFC9FFD0FFD1FFD8FFD9FFDD-FFDFFFE7FFEF-FFF8FFFEFFFF"});function a(g){var f=/\w{4}/g;for(var e in g){b.packages[e]=g[e].replace(f,"\\u$&")}}});ace.define("ace/mode/text",["require","exports","module","ace/tokenizer","ace/mode/text_highlight_rules","ace/mode/behaviour/cstyle","ace/unicode","ace/lib/lang","ace/token_iterator","ace/range"],function(f,g,d){var i=f("../tokenizer").Tokenizer;var a=f("./text_highlight_rules").TextHighlightRules;var k=f("./behaviour/cstyle").CstyleBehaviour;var b=f("../unicode");var c=f("../lib/lang");var h=f("../token_iterator").TokenIterator;var e=f("../range").Range;var j=function(){this.HighlightRules=a};(function(){this.$defaultBehaviour=new k();this.tokenRe=new RegExp("^["+b.packages.L+b.packages.Mn+b.packages.Mc+b.packages.Nd+b.packages.Pc+"\\$_]+","g");this.nonTokenRe=new RegExp("^(?:[^"+b.packages.L+b.packages.Mn+b.packages.Mc+b.packages.Nd+b.packages.Pc+"\\$_]|\\s])+","g");this.getTokenizer=function(){if(!this.$tokenizer){this.$highlightRules=this.$highlightRules||new this.HighlightRules(this.$highlightRuleConfig);this.$tokenizer=new i(this.$highlightRules.getRules())}return this.$tokenizer};this.lineCommentStart="";this.blockComment="";this.toggleCommentLines=function(q,m,l,z){var F=m.doc;var p=true;var B=true;var o=Infinity;var w=m.getTabSize();var E=false;if(!this.lineCommentStart){if(!this.blockComment){return false}var C=this.blockComment.start;var t=this.blockComment.end;var x=new RegExp("^(\\s*)(?:"+c.escapeRegExp(C)+")");var y=new RegExp("(?:"+c.escapeRegExp(t)+")\\s*$");var n=function(G,H){if(u(G,H)){return}if(!p||/\S/.test(G)){F.insertInLine({row:H,column:G.length},t);F.insertInLine({row:H,column:o},C)}};var r=function(H,I){var G;if(G=H.match(y)){F.removeInLine(I,H.length-G[0].length,H.length)}if(G=H.match(x)){F.removeInLine(I,G[1].length,G[0].length)}};var u=function(G,J){if(x.test(G)){return true}var I=m.getTokens(J);for(var H=0;H<I.length;H++){if(I[H].type==="comment"){return true}}}}else{if(Array.isArray(this.lineCommentStart)){var x=this.lineCommentStart.map(c.escapeRegExp).join("|");var C=this.lineCommentStart[0]}else{var x=c.escapeRegExp(this.lineCommentStart);var C=this.lineCommentStart}x=new RegExp("^(\\s*)(?:"+x+") ?");E=m.getUseSoftTabs();var r=function(I,J){var G=I.match(x);if(!G){return}var K=G[1].length,H=G[0].length;if(!D(I,K,H)&&G[0][H-1]==" "){H--}F.removeInLine(J,K,H)};var s=C+" ";var n=function(G,H){if(!p||/\S/.test(G)){if(D(G,o,o)){F.insertInLine({row:H,column:o},s)}else{F.insertInLine({row:H,column:o},C)}}};var u=function(G,H){return x.test(G)};var D=function(G,I,J){var H=0;while(I--&&G.charAt(I)==" "){H++}if(H%w!=0){return false}var H=0;while(G.charAt(J++)==" "){H++}if(w>2){return H%w!=w-1}else{return H%w==0}return true}}function A(G){for(var H=l;H<=z;H++){G(F.getLine(H),H)}}var v=Infinity;A(function(H,I){var G=H.search(/\S/);if(G!==-1){if(G<o){o=G}if(B&&!u(H,I)){B=false}}else{if(v>H.length){v=H.length}}});if(o==Infinity){o=v;p=false;B=false}if(E&&o%w!=0){o=Math.floor(o/w)*w}A(B?r:n)};this.toggleBlockComment=function(l,w,s,z){var t=this.blockComment;if(!t){return}if(!t.start&&t[0]){t=t[0]}var r=new h(w,z.row,z.column);var o=r.getCurrentToken();var m=w.selection;var v=w.selection.toOrientedRange();var y,u;if(o&&/comment/.test(o.type)){var x,p;while(o&&/comment/.test(o.type)){var q=o.value.indexOf(t.start);if(q!=-1){var A=r.getCurrentTokenRow();var n=r.getCurrentTokenColumn()+q;x=new e(A,n,A,n+t.start.length);break}o=r.stepBackward()}var r=new h(w,z.row,z.column);var o=r.getCurrentToken();while(o&&/comment/.test(o.type)){var q=o.value.indexOf(t.end);if(q!=-1){var A=r.getCurrentTokenRow();var n=r.getCurrentTokenColumn()+q;p=new e(A,n,A,n+t.end.length);break}o=r.stepForward()}if(p){w.remove(p)}if(x){w.remove(x);y=x.start.row;u=-t.start.length}}else{u=t.start.length;y=s.start.row;w.insert(s.end,t.end);w.insert(s.start,t.start)}if(v.start.row==y){v.start.column+=u}if(v.end.row==y){v.end.column+=u}w.selection.fromOrientedRange(v)};this.getNextLineIndent=function(n,l,m){return this.$getIndent(l)};this.checkOutdent=function(n,l,m){return false};this.autoOutdent=function(l,m,n){};this.$getIndent=function(l){return l.match(/^\s*/)[0]};this.createWorker=function(l){return null};this.createModeDelegates=function(m){this.$embeds=[];this.$modes={};for(var n in m){if(m[n]){this.$embeds.push(n);this.$modes[n]=new m[n]()}}var l=["toggleBlockComment","toggleCommentLines","getNextLineIndent","checkOutdent","autoOutdent","transformAction","getCompletions"];for(var n=0;n<l.length;n++){(function(p){var q=l[n];var o=p[q];p[l[n]]=function(){return this.$delegator(q,arguments,o)}}(this))}};this.$delegator=function(s,n,m){var q=n[0];if(typeof q!="string"){q=q[0]}for(var p=0;p<this.$embeds.length;p++){if(!this.$modes[this.$embeds[p]]){continue}var o=q.split(this.$embeds[p]);if(!o[0]&&o[1]){n[0]=o[1];var r=this.$modes[this.$embeds[p]];return r[s].apply(r,n)}}var l=m.apply(this,n);return m?l:undefined};this.transformAction=function(q,p,n,r,s){if(this.$behaviour){var o=this.$behaviour.getBehaviours();for(var m in o){if(o[m][p]){var l=o[m][p].apply(this,arguments);if(l){return l}}}}};this.getKeywords=function(o){if(!this.completionKeywords){var v=this.$tokenizer.rules;var p=[];for(var t in v){var s=v[t];for(var n=0,q=s.length;n<q;n++){if(typeof s[n].token==="string"){if(/keyword|support|storage/.test(s[n].token)){p.push(s[n].regex)}}else{if(typeof s[n].token==="object"){for(var u=0,m=s[n].token.length;u<m;u++){if(/keyword|support|storage/.test(s[n].token[u])){var t=s[n].regex.match(/\(.+?\)/g)[u];p.push(t.substr(1,t.length-2))}}}}}}this.completionKeywords=p}if(!o){return this.$keywordList}return p.concat(this.$keywordList||[])};this.$createKeywordList=function(){if(!this.$highlightRules){this.getTokenizer()}return this.$keywordList=this.$highlightRules.$keywordList||[]};this.getCompletions=function(n,o,p,m){var l=this.$keywordList||this.$createKeywordList();return l.map(function(q){return{name:q,value:q,score:0,meta:"keyword"}})};this.$id="ace/mode/text"}).call(j.prototype);g.Mode=j});ace.define("ace/apply_delta",["require","exports","module"],function(c,b,e){function a(h,g){console.log("Invalid Delta:",h);throw"Invalid Delta: "+g}function d(h,g){return g.row>=0&&g.row<h.length&&g.column>=0&&g.column<=h[g.row].length}function f(l,k){if(k.action!="insert"&&k.action!="remove"){a(k,"delta.action must be 'insert' or 'remove'")}if(!(k.lines instanceof Array)){a(k,"delta.lines must be an Array")}if(!k.start||!k.end){a(k,"delta.start/end must be an present")}var j=k.start;if(!d(l,k.start)){a(k,"delta.start must be contained in document")}var g=k.end;if(k.action=="remove"&&!d(l,g)){a(k,"delta.end must contained in document for 'remove' actions")}var i=g.row-j.row;var h=(g.column-(i==0?j.column:0));if(i!=k.lines.length-1||k.lines[i].length!=h){a(k,"delta.range must match delta lines")}}b.applyDelta=function(j,m,i){var n=m.start.row;var g=m.start.column;var o=j[n]||"";switch(m.action){case"insert":var p=m.lines;if(p.length===1){j[n]=o.substring(0,g)+m.lines[0]+o.substring(g)}else{var l=[n,1].concat(m.lines);j.splice.apply(j,l);j[n]=o.substring(0,g)+j[n];j[n+m.lines.length-1]+=o.substring(g)}break;case"remove":var k=m.end.column;var h=m.end.row;if(n===h){j[n]=o.substring(0,g)+o.substring(k)}else{j.splice(n,h-n+1,o.substring(0,g)+j[h].substring(k))}break}}});ace.define("ace/anchor",["require","exports","module","ace/lib/oop","ace/lib/event_emitter"],function(c,b,d){var f=c("./lib/oop");var e=c("./lib/event_emitter").EventEmitter;var a=b.Anchor=function(h,i,g){this.$onChange=this.onChange.bind(this);this.attach(h);if(typeof g=="undefined"){this.setPosition(i.row,i.column)}else{this.setPosition(i,g)}};(function(){f.implement(this,e);this.getPosition=function(){return this.$clipPositionToDocument(this.row,this.column)};this.getDocument=function(){return this.document};this.$insertRight=false;this.onChange=function(j){if(j.start.row==j.end.row&&j.start.row!=this.row){return}if(j.start.row>this.row){return}var i=g(j,{row:this.row,column:this.column},this.$insertRight);this.setPosition(i.row,i.column,true)};function h(j,i,k){var l=k?j.column<=i.column:j.column<i.column;return(j.row<i.row)||(j.row==i.row&&l)}function g(p,k,j){var n=p.action=="insert";var o=(n?1:-1)*(p.end.row-p.start.row);var m=(n?1:-1)*(p.end.column-p.start.column);var i=p.start;var l=n?i:p.end;if(h(k,i,j)){return{row:k.row,column:k.column}}if(h(l,k,!j)){return{row:k.row+o,column:k.column+(k.row==l.row?m:0)}}return{row:i.row,column:i.column}}this.setPosition=function(l,k,i){var m;if(i){m={row:l,column:k}}else{m=this.$clipPositionToDocument(l,k)}if(this.row==m.row&&this.column==m.column){return}var j={row:this.row,column:this.column};this.row=m.row;this.column=m.column;this._signal("change",{old:j,value:m})};this.detach=function(){this.document.removeEventListener("change",this.$onChange)};this.attach=function(i){this.document=i||this.document;this.document.on("change",this.$onChange)};this.$clipPositionToDocument=function(j,i){var k={};if(j>=this.document.getLength()){k.row=Math.max(0,this.document.getLength()-1);k.column=this.document.getLine(k.row).length}else{if(j<0){k.row=0;k.column=0}else{k.row=j;k.column=Math.min(this.document.getLine(k.row).length,Math.max(0,i))}}if(i<0){k.column=0}return k}}).call(a.prototype)});ace.define("ace/document",["require","exports","module","ace/lib/oop","ace/apply_delta","ace/lib/event_emitter","ace/range","ace/anchor"],function(c,d,a){var g=c("./lib/oop");var h=c("./apply_delta").applyDelta;var i=c("./lib/event_emitter").EventEmitter;var b=c("./range").Range;var f=c("./anchor").Anchor;var e=function(j){this.$lines=[""];if(j.length===0){this.$lines=[""]}else{if(Array.isArray(j)){this.insertMergedLines({row:0,column:0},j)}else{this.insert({row:0,column:0},j)}}};(function(){g.implement(this,i);this.setValue=function(k){var j=this.getLength()-1;this.remove(new b(0,0,j,this.getLine(j).length));this.insert({row:0,column:0},k)};this.getValue=function(){return this.getAllLines().join(this.getNewLineCharacter())};this.createAnchor=function(k,j){return new f(this,k,j)};if("aaa".split(/a/).length===0){this.$split=function(j){return j.replace(/\r\n|\r/g,"\n").split("\n")}}else{this.$split=function(j){return j.split(/\r\n|\r|\n/)}}this.$detectNewLine=function(k){var j=k.match(/^.*?(\r\n|\r|\n)/m);this.$autoNewLine=j?j[1]:"\n";this._signal("changeNewLineMode")};this.getNewLineCharacter=function(){switch(this.$newLineMode){case"windows":return"\r\n";case"unix":return"\n";default:return this.$autoNewLine||"\n"}};this.$autoNewLine="";this.$newLineMode="auto";this.setNewLineMode=function(j){if(this.$newLineMode===j){return}this.$newLineMode=j;this._signal("changeNewLineMode")};this.getNewLineMode=function(){return this.$newLineMode};this.isNewLine=function(j){return(j=="\r\n"||j=="\r"||j=="\n")};this.getLine=function(j){return this.$lines[j]||""};this.getLines=function(k,j){return this.$lines.slice(k,j+1)};this.getAllLines=function(){return this.getLines(0,this.getLength())
 };this.getLength=function(){return this.$lines.length};this.getTextRange=function(j){return this.getLinesForRange(j).join(this.getNewLineCharacter())};this.getLinesForRange=function(m){var k;if(m.start.row===m.end.row){k=[this.getLine(m.start.row).substring(m.start.column,m.end.column)]}else{k=this.getLines(m.start.row,m.end.row);k[0]=(k[0]||"").substring(m.start.column);var j=k.length-1;if(m.end.row-m.start.row==j){k[j]=k[j].substring(0,m.end.column)}}return k};this.insertLines=function(k,j){console.warn("Use of document.insertLines is deprecated. Use the insertFullLines method instead.");return this.insertFullLines(k,j)};this.removeLines=function(k,j){console.warn("Use of document.removeLines is deprecated. Use the removeFullLines method instead.");return this.removeFullLines(k,j)};this.insertNewLine=function(j){console.warn("Use of document.insertNewLine is deprecated. Use insertMergedLines(position, ['', '']) instead.");return this.insertMergedLines(j,["",""])};this.insert=function(j,k){if(this.getLength()<=1){this.$detectNewLine(k)}return this.insertMergedLines(j,this.$split(k))};this.insertInLine=function(j,l){var m=this.clippedPos(j.row,j.column);var k=this.pos(j.row,j.column+l.length);this.applyDelta({start:m,end:k,action:"insert",lines:[l]},true);return this.clonePos(k)};this.clippedPos=function(m,k){var l=this.getLength();if(m===undefined){m=l}else{if(m<0){m=0}else{if(m>=l){m=l-1;k=undefined}}}var j=this.getLine(m);if(k==undefined){k=j.length}k=Math.min(Math.max(k,0),j.length);return{row:m,column:k}};this.clonePos=function(j){return{row:j.row,column:j.column}};this.pos=function(k,j){return{row:k,column:j}};this.$clipPosition=function(j){var k=this.getLength();if(j.row>=k){j.row=Math.max(0,k-1);j.column=this.getLine(k-1).length}else{j.row=Math.max(0,j.row);j.column=Math.min(Math.max(j.column,0),this.getLine(j.row).length)}return j};this.insertFullLines=function(l,j){l=Math.min(Math.max(l,0),this.getLength());var k=0;if(l<this.getLength()){j=j.concat([""]);k=0}else{j=[""].concat(j);l--;k=this.$lines[l].length}this.insertMergedLines({row:l,column:k},j)};this.insertMergedLines=function(j,l){var m=this.clippedPos(j.row,j.column);var k={row:m.row+l.length-1,column:(l.length==1?m.column:0)+l[l.length-1].length};this.applyDelta({start:m,end:k,action:"insert",lines:l});return this.clonePos(k)};this.remove=function(k){var l=this.clippedPos(k.start.row,k.start.column);var j=this.clippedPos(k.end.row,k.end.column);this.applyDelta({start:l,end:j,action:"remove",lines:this.getLinesForRange({start:l,end:j})});return this.clonePos(l)};this.removeInLine=function(l,k,n){var m=this.clippedPos(l,k);var j=this.clippedPos(l,n);this.applyDelta({start:m,end:j,action:"remove",lines:this.getLinesForRange({start:m,end:j})},true);return this.clonePos(m)};this.removeFullLines=function(l,s){l=Math.min(Math.max(0,l),this.getLength()-1);s=Math.min(Math.max(0,s),this.getLength()-1);var p=s==this.getLength()-1&&l>0;var k=s<this.getLength()-1;var r=(p?l-1:l);var j=(p?this.getLine(r).length:0);var m=(k?s+1:s);var q=(k?0:this.getLine(m).length);var o=new b(r,j,m,q);var n=this.$lines.slice(l,s+1);this.applyDelta({start:o.start,end:o.end,action:"remove",lines:this.getLinesForRange(o)});return n};this.removeNewLine=function(j){if(j<this.getLength()-1&&j>=0){this.applyDelta({start:this.pos(j,this.getLine(j).length),end:this.pos(j+1,0),action:"remove",lines:["",""]})}};this.replace=function(k,l){if(!(k instanceof b)){k=b.fromPoints(k.start,k.end)}if(l.length===0&&k.isEmpty()){return k.start}if(l==this.getTextRange(k)){return k.end}this.remove(k);var j;if(l){j=this.insert(k.start,l)}else{j=k.start}return j};this.applyDeltas=function(k){for(var j=0;j<k.length;j++){this.applyDelta(k[j])}};this.revertDeltas=function(k){for(var j=k.length-1;j>=0;j--){this.revertDelta(k[j])}};this.applyDelta=function(l,j){var k=l.action=="insert";if(k?l.lines.length<=1&&!l.lines[0]:!b.comparePoints(l.start,l.end)){return}if(k&&l.lines.length>20000){this.$splitAndapplyLargeDelta(l,20000)}h(this.$lines,l,j);this._signal("change",l)};this.$splitAndapplyLargeDelta=function(q,j){var s=q.lines;var m=s.length;var r=q.start.row;var k=q.start.column;var o=0,p=0;do{o=p;p+=j-1;var n=s.slice(o,p);if(p>m){q.lines=n;q.start.row=r+o;q.start.column=k;break}n.push("");this.applyDelta({start:this.pos(r+o,k),end:this.pos(r+p,k=0),action:q.action,lines:n},true)}while(true)};this.revertDelta=function(j){this.applyDelta({start:this.clonePos(j.start),end:this.clonePos(j.end),action:(j.action=="insert"?"remove":"insert"),lines:j.lines.slice()})};this.indexToPosition=function(o,n){var k=this.$lines||this.getAllLines();var m=this.getNewLineCharacter().length;for(var p=n||0,j=k.length;p<j;p++){o-=k[p].length+m;if(o<0){return{row:p,column:o+k[p].length+m}}}return{row:j-1,column:k[j-1].length}};this.positionToIndex=function(p,l){var j=this.$lines||this.getAllLines();var k=this.getNewLineCharacter().length;var m=0;var o=Math.min(p.row,j.length);for(var n=l||0;n<o;++n){m+=j[n].length+k}return m+p.column}}).call(e.prototype);d.Document=e});ace.define("ace/background_tokenizer",["require","exports","module","ace/lib/oop","ace/lib/event_emitter"],function(c,b,d){var f=c("./lib/oop");var e=c("./lib/event_emitter").EventEmitter;var a=function(i,h){this.running=false;this.lines=[];this.states=[];this.currentLine=0;this.tokenizer=i;var g=this;this.$worker=function(){if(!g.running){return}var n=new Date();var p=g.currentLine;var l=-1;var m=g.doc;var o=p;while(g.lines[p]){p++}var j=m.getLength();var k=0;g.running=false;while(p<j){g.$tokenizeRow(p);l=p;do{p++}while(g.lines[p]);k++;if((k%5===0)&&(new Date()-n)>20){g.running=setTimeout(g.$worker,20);break}}g.currentLine=p;if(l==-1){l=p}if(o<=l){g.fireUpdateEvent(o,l)}}};(function(){f.implement(this,e);this.setTokenizer=function(g){this.tokenizer=g;this.lines=[];this.states=[];this.start(0)};this.setDocument=function(g){this.doc=g;this.lines=[];this.states=[];this.stop()};this.fireUpdateEvent=function(i,g){var h={first:i,last:g};this._signal("update",{data:h})};this.start=function(g){this.currentLine=Math.min(g||0,this.currentLine,this.doc.getLength());this.lines.splice(this.currentLine,this.lines.length);this.states.splice(this.currentLine,this.states.length);this.stop();this.running=setTimeout(this.$worker,700)};this.scheduleStart=function(){if(!this.running){this.running=setTimeout(this.$worker,700)}};this.$updateOnChange=function(j){var h=j.start.row;var g=j.end.row-h;if(g===0){this.lines[h]=null}else{if(j.action=="remove"){this.lines.splice(h,g+1,null);this.states.splice(h,g+1,null)}else{var i=Array(g+1);i.unshift(h,1);this.lines.splice.apply(this.lines,i);this.states.splice.apply(this.states,i)}}this.currentLine=Math.min(h,this.currentLine,this.doc.getLength());this.stop()};this.stop=function(){if(this.running){clearTimeout(this.running)}this.running=false};this.getTokens=function(g){return this.lines[g]||this.$tokenizeRow(g)};this.getState=function(g){if(this.currentLine==g){this.$tokenizeRow(g)}return this.states[g]||"start"};this.$tokenizeRow=function(j){var g=this.doc.getLine(j);var i=this.states[j-1];var h=this.tokenizer.getLineTokens(g,i,j);if(this.states[j]+""!==h.state+""){this.states[j]=h.state;this.lines[j+1]=null;if(this.currentLine>j+1){this.currentLine=j+1}}else{if(this.currentLine==j){this.currentLine=j+1}}return this.lines[j]=h.tokens}}).call(a.prototype);b.BackgroundTokenizer=a});ace.define("ace/search_highlight",["require","exports","module","ace/lib/lang","ace/lib/oop","ace/range"],function(b,a,c){var g=b("./lib/lang");var e=b("./lib/oop");var f=b("./range").Range;var d=function(i,h,j){this.setRegexp(i);this.clazz=h;this.type=j||"text"};(function(){this.MAX_RANGES=500;this.setRegexp=function(h){if(this.regExp+""==h+""){return}this.regExp=h;this.cache=[]};this.update=function(p,q,r,l){if(!this.regExp){return}var k=l.firstRow,m=l.lastRow;for(var o=k;o<=m;o++){var h=this.cache[o];if(h==null){h=g.getMatchOffsets(r.getLine(o),this.regExp);if(h.length>this.MAX_RANGES){h=h.slice(0,this.MAX_RANGES)}h=h.map(function(i){return new f(o,i.offset,o,i.offset+i.length)});this.cache[o]=h.length?h:""}for(var n=h.length;n--;){q.drawSingleLineMarker(p,h[n].toScreenRange(r),this.clazz,l)}}}}).call(d.prototype);a.SearchHighlight=d});ace.define("ace/edit_session/fold_line",["require","exports","module","ace/range"],function(b,a,c){var d=b("../range").Range;function e(f,h){this.foldData=f;if(Array.isArray(h)){this.folds=h}else{h=this.folds=[h]}var g=h[h.length-1];this.range=new d(h[0].start.row,h[0].start.column,g.end.row,g.end.column);this.start=this.range.start;this.end=this.range.end;this.folds.forEach(function(i){i.setFoldLine(this)},this)}(function(){this.shiftRow=function(f){this.start.row+=f;this.end.row+=f;this.folds.forEach(function(g){g.start.row+=f;g.end.row+=f})};this.addFold=function(f){if(f.sameRow){if(f.start.row<this.startRow||f.endRow>this.endRow){throw new Error("Can't add a fold to this FoldLine as it has no connection")}this.folds.push(f);this.folds.sort(function(h,g){return -h.range.compareEnd(g.start.row,g.start.column)});if(this.range.compareEnd(f.start.row,f.start.column)>0){this.end.row=f.end.row;this.end.column=f.end.column}else{if(this.range.compareStart(f.end.row,f.end.column)<0){this.start.row=f.start.row;this.start.column=f.start.column}}}else{if(f.start.row==this.end.row){this.folds.push(f);this.end.row=f.end.row;this.end.column=f.end.column}else{if(f.end.row==this.start.row){this.folds.unshift(f);this.start.row=f.start.row;this.start.column=f.start.column}else{throw new Error("Trying to add fold to FoldRow that doesn't have a matching row")}}}f.foldLine=this};this.containsRow=function(f){return f>=this.start.row&&f<=this.end.row};this.walk=function(p,g,k){var f=0,o=this.folds,l,m,n,j=true;if(g==null){g=this.end.row;k=this.end.column}for(var h=0;h<o.length;h++){l=o[h];m=l.range.compareStart(g,k);if(m==-1){p(null,g,k,f,j);return}n=p(null,l.start.row,l.start.column,f,j);n=!n&&p(l.placeholder,l.start.row,l.start.column,f);if(n||m===0){return}j=!l.sameRow;f=l.end.column}p(null,g,k,f,j)};this.getNextFoldTo=function(k,h){var f,j;for(var g=0;g<this.folds.length;g++){f=this.folds[g];j=f.range.compareEnd(k,h);if(j==-1){return{fold:f,kind:"after"}}else{if(j===0){return{fold:f,kind:"inside"}}}}return null};this.addRemoveChars=function(m,k,f){var h=this.getNextFoldTo(m,k),g,l;if(h){g=h.fold;if(h.kind=="inside"&&g.start.column!=k&&g.start.row!=m){window.console&&window.console.log(m,k,g)}else{if(g.start.row==m){l=this.folds;var j=l.indexOf(g);if(j===0){this.start.column+=f}for(j;j<l.length;j++){g=l[j];g.start.column+=f;if(!g.sameRow){return}g.end.column+=f}this.end.column+=f}}}};this.split=function(o,g){var l=this.getNextFoldTo(o,g);if(!l||l.kind=="inside"){return null}var k=l.fold;var n=this.folds;var f=this.foldData;var h=n.indexOf(k);var m=n[h-1];this.end.row=m.end.row;this.end.column=m.end.column;n=n.splice(h,n.length-h);var j=new e(f,n);f.splice(f.indexOf(this)+1,0,j);return j};this.merge=function(h){var j=h.folds;for(var g=0;g<j.length;g++){this.addFold(j[g])}var f=this.foldData;f.splice(f.indexOf(h),1)};this.toString=function(){var f=[this.range.toString()+": ["];this.folds.forEach(function(g){f.push("  "+g.toString())});f.push("]");return f.join("\n")};this.idxToPosition=function(f){var j=0;for(var h=0;h<this.folds.length;h++){var g=this.folds[h];f-=g.start.column-j;if(f<0){return{row:g.start.row,column:g.start.column+f}}f-=g.placeholder.length;if(f<0){return g.start}j=g.end.column}return{row:this.end.row,column:this.end.column+f}}}).call(e.prototype);a.FoldLine=e});ace.define("ace/range_list",["require","exports","module","ace/range"],function(c,b,d){var f=c("./range").Range;var e=f.comparePoints;var a=function(){this.ranges=[]};(function(){this.comparePoints=e;this.pointIndex=function(o,j,n){var l=this.ranges;for(var k=n||0;k<l.length;k++){var h=l[k];var m=e(o,h.end);if(m>0){continue}var g=e(o,h.start);if(m===0){return j&&g!==0?-k-2:k}if(g>0||(g===0&&!j)){return k}return -k-1}return -k-1};this.add=function(h){var g=!h.isEmpty();var j=this.pointIndex(h.start,g);if(j<0){j=-j-1}var i=this.pointIndex(h.end,g,j);if(i<0){i=-i-1}else{i++}return this.ranges.splice(j,i-j,h)};this.addList=function(h){var j=[];for(var g=h.length;g--;){j.push.apply(j,this.add(h[g]))}return j};this.substractPoint=function(h){var g=this.pointIndex(h);if(g>=0){return this.ranges.splice(g,1)}};this.merge=function(){var m=[];var l=this.ranges;l=l.sort(function(n,i){return e(n.start,i.start)});var j=l[0],g;for(var h=1;h<l.length;h++){g=j;j=l[h];var k=e(g.end,j.start);if(k<0){continue}if(k==0&&!g.isEmpty()&&!j.isEmpty()){continue}if(e(g.end,j.end)<0){g.end.row=j.end.row;g.end.column=j.end.column}l.splice(h,1);m.push(j);j=g;h--}this.ranges=l;return m};this.contains=function(h,g){return this.pointIndex({row:h,column:g})>=0};this.containsPoint=function(g){return this.pointIndex(g)>=0};this.rangeAtPoint=function(h){var g=this.pointIndex(h);if(g>=0){return this.ranges[g]}};this.clipRows=function(j,h){var m=this.ranges;if(m[0].start.row>h||m[m.length-1].start.row<j){return[]}var n=this.pointIndex({row:j,column:0});if(n<0){n=-n-1}var l=this.pointIndex({row:h,column:0},n);if(l<0){l=-l-1}var g=[];for(var k=n;k<l;k++){g.push(m[k])}return g};this.removeAll=function(){return this.ranges.splice(0,this.ranges.length)};this.attach=function(g){if(this.session){this.detach()}this.session=g;this.onChange=this.$onChange.bind(this);this.session.on("change",this.onChange)};this.detach=function(){if(!this.session){return}this.session.removeListener("change",this.onChange);this.session=null};this.$onChange=function(s){if(s.action=="insert"){var j=s.start;var l=s.end}else{var l=s.start;var j=s.end}var t=j.row;var m=l.row;var q=m-t;var p=-j.column+l.column;var h=this.ranges;for(var o=0,k=h.length;o<k;o++){var g=h[o];if(g.end.row<t){continue}if(g.start.row>t){break}if(g.start.row==t&&g.start.column>=j.column){if(g.start.column==j.column&&this.$insertRight){}else{g.start.column+=p;g.start.row+=q}}if(g.end.row==t&&g.end.column>=j.column){if(g.end.column==j.column&&this.$insertRight){continue}if(g.end.column==j.column&&p>0&&o<k-1){if(g.end.column>g.start.column&&g.end.column==h[o+1].start.column){g.end.column-=p}}g.end.column+=p;g.end.row+=q}}if(q!=0&&o<k){for(;o<k;o++){var g=h[o];g.start.row+=q;g.end.row+=q}}}}).call(a.prototype);b.RangeList=a});ace.define("ace/edit_session/fold",["require","exports","module","ace/range","ace/range_list","ace/lib/oop"],function(d,f,a){var c=d("../range").Range;var g=d("../range_list").RangeList;var h=d("../lib/oop");var j=f.Fold=function(l,m){this.foldLine=null;this.placeholder=m;this.range=l;this.start=l.start;this.end=l.end;this.sameRow=l.start.row==l.end.row;this.subFolds=this.ranges=[]};h.inherits(j,g);(function(){this.toString=function(){return'"'+this.placeholder+'" '+this.range.toString()};this.setFoldLine=function(l){this.foldLine=l;this.subFolds.forEach(function(m){m.setFoldLine(l)})};this.clone=function(){var l=this.range.clone();var m=new j(l,this.placeholder);this.subFolds.forEach(function(n){m.subFolds.push(n.clone())});m.collapseChildren=this.collapseChildren;return m};this.addSubFold=function(p){if(this.range.isEqual(p)){return}if(!this.range.containsRange(p)){throw new Error("A fold can't intersect already existing fold"+p.range+this.range)}i(p,this.start);var t=p.start.row,l=p.start.column;for(var o=0,r=-1;o<this.subFolds.length;o++){r=this.subFolds[o].range.compare(t,l);if(r!=1){break}}var s=this.subFolds[o];if(r==0){return s.addSubFold(p)}var t=p.range.end.row,l=p.range.end.column;for(var m=o,r=-1;m<this.subFolds.length;m++){r=this.subFolds[m].range.compare(t,l);if(r!=1){break}}var n=this.subFolds[m];if(r==0){throw new Error("A fold can't intersect already existing fold"+p.range+this.range)}var q=this.subFolds.splice(o,m-o,p);p.setFoldLine(this.foldLine);return p};this.restoreRange=function(l){return k(l,this.start)}}).call(j.prototype);function b(l,m){l.row-=m.row;if(l.row==0){l.column-=m.column}}function i(l,m){b(l.start,m);b(l.end,m)}function e(l,m){if(l.row==0){l.column+=m.column}l.row+=m.row}function k(l,m){e(l.start,m);e(l.end,m)}});ace.define("ace/edit_session/folding",["require","exports","module","ace/range","ace/edit_session/fold_line","ace/edit_session/fold","ace/token_iterator"],function(d,c,e){var g=d("../range").Range;var h=d("./fold_line").FoldLine;var a=d("./fold").Fold;var f=d("../token_iterator").TokenIterator;function b(){this.getFoldAt=function(p,m,l){var o=this.getFoldLine(p);if(!o){return null}var n=o.folds;for(var k=0;k<n.length;k++){var j=n[k];if(j.range.contains(p,m)){if(l==1&&j.range.isEnd(p,m)){continue}else{if(l==-1&&j.range.isStart(p,m)){continue}}return j}}};this.getFoldsInRange=function(q){var l=q.start;var n=q.end;var m=this.$foldData;var k=[];l.column+=1;n.column-=1;for(var p=0;p<m.length;p++){var s=m[p].range.compareRange(q);if(s==2){continue}else{if(s==-2){break}}var t=m[p].folds;for(var o=0;o<t.length;o++){var r=t[o];s=r.range.compareRange(q);if(s==-2){break}else{if(s==2){continue}else{if(s==42){break}}}k.push(r)}}l.column-=1;n.column+=1;return k};this.getFoldsInRangeList=function(i){if(Array.isArray(i)){var j=[];i.forEach(function(k){j=j.concat(this.getFoldsInRange(k))},this)}else{var j=this.getFoldsInRange(i)}return j};this.getAllFolds=function(){var n=[];var m=this.$foldData;for(var l=0;l<m.length;l++){for(var k=0;k<m[l].folds.length;k++){n.push(m[l].folds[k])}}return n};this.getFoldStringAt=function(r,k,j,q){q=q||this.getFoldLine(r);if(!q){return null}var m={end:{column:0}};var o,n;for(var l=0;l<q.folds.length;l++){n=q.folds[l];var p=n.range.compareEnd(r,k);if(p==-1){o=this.getLine(n.start.row).substring(m.end.column,n.start.column);break}else{if(p===0){return null}}m=n}if(!o){o=this.getLine(n.start.row).substring(m.end.column)}if(j==-1){return o.substring(0,k-m.end.column)}else{if(j==1){return o.substring(k-m.end.column)}else{return o}}};this.getFoldLine=function(j,k){var m=this.$foldData;var l=0;if(k){l=m.indexOf(k)}if(l==-1){l=0}for(l;l<m.length;l++){var n=m[l];if(n.start.row<=j&&n.end.row>=j){return n}else{if(n.end.row>j){return null}}}return null};this.getNextFoldLine=function(j,k){var m=this.$foldData;var l=0;if(k){l=m.indexOf(k)}if(l==-1){l=0}for(l;l<m.length;l++){var n=m[l];if(n.end.row>=j){return n}}return null};this.getFoldedRowCount=function(p,n){var m=this.$foldData,k=n-p+1;for(var l=0;l<m.length;l++){var o=m[l],j=o.end.row,q=o.start.row;if(j>=n){if(q<n){if(q>=p){k-=n-q}else{k=0}}break}else{if(j>=p){if(q>=p){k-=j-q}else{k-=j-p+1}}}}return k};this.$addFoldLine=function(i){this.$foldData.push(i);this.$foldData.sort(function(k,j){return k.start.row-j.start.row});return i};this.addFold=function(t,n){var j=this.$foldData;var r=false;var q;if(t instanceof a){q=t}else{q=new a(n,t);q.collapseChildren=n.collapseChildren}this.$clipRangeToDocument(q.range);var w=q.start.row;var k=q.start.column;var l=q.end.row;var p=q.end.column;if(!(w<l||w==l&&k<=p-2)){throw new Error("The range has to be at least 2 characters width")}var o=this.getFoldAt(w,k,1);var v=this.getFoldAt(l,p,-1);if(o&&v==o){return o.addSubFold(q)}if(o&&!o.range.isStart(w,k)){this.removeFold(o)}if(v&&!v.range.isEnd(l,p)){this.removeFold(v)}var u=this.getFoldsInRange(q.range);if(u.length>0){this.removeFolds(u);u.forEach(function(i){q.addSubFold(i)})}for(var m=0;m<j.length;m++){var s=j[m];if(l==s.start.row){s.addFold(q);r=true;break}else{if(w==s.end.row){s.addFold(q);r=true;if(!q.sameRow){var x=j[m+1];if(x&&x.start.row==l){s.merge(x);break}}break}else{if(l<=s.start.row){break}}}}if(!r){s=this.$addFoldLine(new h(this.$foldData,q))}if(this.$useWrapMode){this.$updateWrapData(s.start.row,s.start.row)}else{this.$updateRowLengthCache(s.start.row,s.start.row)}this.$modified=true;this._signal("changeFold",{data:q,action:"add"});return q};this.addFolds=function(i){i.forEach(function(j){this.addFold(j)},this)};this.removeFold=function(l){var o=l.foldLine;var k=o.start.row;var j=o.end.row;var m=this.$foldData;var n=o.folds;if(n.length==1){m.splice(m.indexOf(o),1)}else{if(o.range.isEnd(l.end.row,l.end.column)){n.pop();o.end.row=n[n.length-1].end.row;o.end.column=n[n.length-1].end.column}else{if(o.range.isStart(l.start.row,l.start.column)){n.shift();o.start.row=n[0].start.row;o.start.column=n[0].start.column}else{if(l.sameRow){n.splice(n.indexOf(l),1)}else{var i=o.split(l.start.row,l.start.column);n=i.folds;n.shift();i.start.row=n[0].start.row;i.start.column=n[0].start.column}}}}if(!this.$updating){if(this.$useWrapMode){this.$updateWrapData(k,j)}else{this.$updateRowLengthCache(k,j)}}this.$modified=true;this._signal("changeFold",{data:l,action:"remove"})};this.removeFolds=function(l){var j=[];for(var k=0;k<l.length;k++){j.push(l[k])}j.forEach(function(i){this.removeFold(i)},this);this.$modified=true};this.expandFold=function(i){this.removeFold(i);i.subFolds.forEach(function(j){i.restoreRange(j);this.addFold(j)},this);if(i.collapseChildren>0){this.foldAll(i.start.row+1,i.end.row,i.collapseChildren-1)}i.subFolds=[]};this.expandFolds=function(i){i.forEach(function(j){this.expandFold(j)},this)};this.unfold=function(i,k){var j,m;if(i==null){j=new g(0,0,this.getLength(),0);k=true}else{if(typeof i=="number"){j=new g(i,0,i,this.getLine(i).length)}else{if("row" in i){j=g.fromPoints(i,i)}else{j=i}}}m=this.getFoldsInRangeList(j);if(k){this.removeFolds(m)}else{var l=m;while(l.length){this.expandFolds(l);l=this.getFoldsInRangeList(j)}}if(m.length){return m}};this.isRowFolded=function(i,j){return !!this.getFoldLine(i,j)};this.getRowFoldEnd=function(i,j){var k=this.getFoldLine(i,j);return k?k.end.row:i};this.getRowFoldStart=function(i,j){var k=this.getFoldLine(i,j);return k?k.start.row:i};this.getFoldDisplayLine=function(n,j,o,i,l){if(i==null){i=n.start.row}if(l==null){l=0}if(j==null){j=n.end.row}if(o==null){o=this.getLine(j).length}var m=this.doc;var k="";n.walk(function(s,r,q,p){if(r<i){return}if(r==i){if(q<l){return}p=Math.max(l,p)}if(s!=null){k+=s}else{k+=m.getLine(r).substring(p,q)}},j,o);return k};this.getDisplayLine=function(m,n,j,k){var l=this.getFoldLine(m);if(!l){var i;i=this.doc.getLine(m);return i.substring(k||0,n||i.length)}else{return this.getFoldDisplayLine(l,m,n,j,k)}};this.$cloneFoldData=function(){var i=[];i=this.$foldData.map(function(k){var j=k.folds.map(function(l){return l.clone()});return new h(i,j)});return i};this.toggleFold=function(k){var l=this.selection;var i=l.getRange();var j;var p;if(i.isEmpty()){var o=i.start;j=this.getFoldAt(o.row,o.column);if(j){this.expandFold(j);return}else{if(p=this.findMatchingBracket(o)){if(i.comparePoint(p)==1){i.end=p}else{i.start=p;i.start.column++;i.end.column--}}else{if(p=this.findMatchingBracket({row:o.row,column:o.column+1})){if(i.comparePoint(p)==1){i.end=p}else{i.start=p}i.start.column++}else{i=this.getCommentFoldRange(o.row,o.column)||i}}}}else{var m=this.getFoldsInRange(i);if(k&&m.length){this.expandFolds(m);return}else{if(m.length==1){j=m[0]}}}if(!j){j=this.getFoldAt(i.start.row,i.start.column)}if(j&&j.range.toString()==i.toString()){this.expandFold(j);return}var n="...";if(!i.isMultiLine()){n=this.getTextRange(i);if(n.length<4){return}n=n.trim().substring(0,2)+".."}this.addFold(n,i)};this.getCommentFoldRange=function(r,k,j){var m=new f(this,r,k);var l=m.getCurrentToken();var o=l.type;if(l&&/^comment|string/.test(o)){o=o.match(/comment|string/)[0];if(o=="comment"){o+="|doc-start"}var p=new RegExp(o);var n=new g();if(j!=1){do{l=m.stepBackward()}while(l&&p.test(l.type));m.stepForward()}n.start.row=m.getCurrentTokenRow();n.start.column=m.getCurrentTokenColumn()+2;m=new f(this,r,k);if(j!=-1){var q=-1;do{l=m.stepForward();if(q==-1){var i=this.getState(m.$row);if(!p.test(i)){q=m.$row}}else{if(m.$row>q){break}}}while(l&&p.test(l.type));l=m.stepBackward()}else{l=m.getCurrentToken()}n.end.row=m.getCurrentTokenRow();n.end.column=m.getCurrentTokenColumn()+l.value.length-2;return n}};this.foldAll=function(k,j,p){if(p==undefined){p=100000}var m=this.foldWidgets;if(!m){return}j=j||this.getLength();k=k||0;for(var o=k;o<j;o++){if(m[o]==null){m[o]=this.getFoldWidget(o)}if(m[o]!="start"){continue}var i=this.getFoldWidgetRange(o);if(i&&i.isMultiLine()&&i.end.row<=j&&i.start.row>=k){o=i.end.row;try{var l=this.addFold("...",i);if(l){l.collapseChildren=p}}catch(n){}}}};this.$foldStyles={"manual":1,"markbegin":1,"markbeginend":1};this.$foldStyle="markbegin";this.setFoldStyle=function(i){if(!this.$foldStyles[i]){throw new Error("invalid fold style: "+i+"["+Object.keys(this.$foldStyles).join(", ")+"]")}if(this.$foldStyle==i){return}this.$foldStyle=i;if(i=="manual"){this.unfold()}var j=this.$foldMode;this.$setFolding(null);this.$setFolding(j)};this.$setFolding=function(i){if(this.$foldMode==i){return}this.$foldMode=i;this.off("change",this.$updateFoldWidgets);this.off("tokenizerUpdate",this.$tokenizerUpdateFoldWidgets);this._signal("changeAnnotation");if(!i||this.$foldStyle=="manual"){this.foldWidgets=null;return}this.foldWidgets=[];this.getFoldWidget=i.getFoldWidget.bind(i,this,this.$foldStyle);this.getFoldWidgetRange=i.getFoldWidgetRange.bind(i,this,this.$foldStyle);this.$updateFoldWidgets=this.updateFoldWidgets.bind(this);this.$tokenizerUpdateFoldWidgets=this.tokenizerUpdateFoldWidgets.bind(this);this.on("change",this.$updateFoldWidgets);this.on("tokenizerUpdate",this.$tokenizerUpdateFoldWidgets)};this.getParentFoldRangeData=function(o,l){var n=this.foldWidgets;if(!n||(l&&n[o])){return{}}var m=o-1,j;while(m>=0){var p=n[m];if(p==null){p=n[m]=this.getFoldWidget(m)}if(p=="start"){var k=this.getFoldWidgetRange(m);if(!j){j=k}if(k&&k.end.row>=o){break}}m--}return{range:m!==-1&&k,firstRange:j}};this.onFoldWidgetClick=function(m,l){l=l.domEvent;var j={children:l.shiftKey,all:l.ctrlKey||l.metaKey,siblings:l.altKey};var i=this.$toggleFoldWidget(m,j);if(!i){var k=(l.target||l.srcElement);if(k&&/ace_fold-widget/.test(k.className)){k.className+=" ace_invalid"}}};this.$toggleFoldWidget=function(p,q){if(!this.getFoldWidget){return}var n=this.getFoldWidget(p);var r=this.getLine(p);var i=n==="end"?-1:1;var m=this.getFoldAt(p,i===-1?0:r.length,i);if(m){if(q.children||q.all){this.removeFold(m)}else{this.expandFold(m)}return m}var l=this.getFoldWidgetRange(p,true);if(l&&!l.isMultiLine()){m=this.getFoldAt(l.start.row,l.start.column,1);if(m&&l.isEqual(m.range)){this.removeFold(m);return m}}if(q.siblings){var k=this.getParentFoldRangeData(p);if(k.range){var o=k.range.start.row+1;var j=k.range.end.row}this.foldAll(o,j,q.all?10000:0)}else{if(q.children){j=l?l.end.row:this.getLength();this.foldAll(p+1,j,q.all?10000:0)}else{if(l){if(q.all){l.collapseChildren=10000}this.addFold("...",l)}}}return l};this.toggleFoldWidget=function(m){var l=this.selection.getCursor().row;l=this.getRowFoldStart(l);var i=this.$toggleFoldWidget(l,{});if(i){return}var k=this.getParentFoldRangeData(l,true);i=k.range||k.firstRange;if(i){l=i.start.row;var j=this.getFoldAt(l,this.getLine(l).length,1);if(j){this.removeFold(j)}else{this.addFold("...",i)}}};this.updateFoldWidgets=function(l){var k=l.start.row;var i=l.end.row-k;if(i===0){this.foldWidgets[k]=null}else{if(l.action=="remove"){this.foldWidgets.splice(k,i+1,null)}else{var j=Array(i+1);j.unshift(k,1);this.foldWidgets.splice.apply(this.foldWidgets,j)}}};this.tokenizerUpdateFoldWidgets=function(j){var i=j.data;if(i.first!=i.last){if(this.foldWidgets.length>i.first){this.foldWidgets.splice(i.first,this.foldWidgets.length)}}}}c.Folding=b});ace.define("ace/edit_session/bracket_match",["require","exports","module","ace/token_iterator","ace/range"],function(c,b,d){var e=c("../token_iterator").TokenIterator;var f=c("../range").Range;function a(){this.findMatchingBracket=function(g,i){if(g.column==0){return null}var j=i||this.getLine(g.row).charAt(g.column-1);if(j==""){return null}var h=j.match(/([\(\[\{])|([\)\]\}])/);if(!h){return null}if(h[1]){return this.$findClosingBracket(h[1],g)}else{return this.$findOpeningBracket(h[2],g)}};this.getBracketRange=function(m){var g=this.getLine(m.row);var k=true,h;var j=g.charAt(m.column-1);var i=j&&j.match(/([\(\[\{])|([\)\]\}])/);if(!i){j=g.charAt(m.column);m={row:m.row,column:m.column+1};i=j&&j.match(/([\(\[\{])|([\)\]\}])/);k=false}if(!i){return null}if(i[1]){var l=this.$findClosingBracket(i[1],m);if(!l){return null}h=f.fromPoints(m,l);if(!k){h.end.column++;h.start.column--}h.cursor=h.end}else{var l=this.$findOpeningBracket(i[2],m);if(!l){return null}h=f.fromPoints(l,m);if(!k){h.start.column++;h.end.column--}h.cursor=h.start}return h};this.$brackets={")":"(","(":")","]":"[","[":"]","{":"}","}":"{"};this.$findOpeningBracket=function(g,m,p){var j=this.$brackets[g];var k=1;var l=new e(this,m.row,m.column);var h=l.getCurrentToken();if(!h){h=l.stepForward()}if(!h){return}if(!p){p=new RegExp("(\\.?"+h.type.replace(".","\\.").replace("rparen",".paren").replace(/\b(?:end)\b/,"(?:start|begin|end)")+")+")}var n=m.column-l.getCurrentTokenColumn()-2;var o=h.value;while(true){while(n>=0){var i=o.charAt(n);if(i==j){k-=1;if(k==0){return{row:l.getCurrentTokenRow(),column:n+l.getCurrentTokenColumn()}}}else{if(i==g){k+=1}}n-=1}do{h=l.stepBackward()}while(h&&!p.test(h.type));if(h==null){break}o=h.value;n=o.length-1}return null};this.$findClosingBracket=function(g,m,q){var h=this.$brackets[g];var k=1;var l=new e(this,m.row,m.column);var i=l.getCurrentToken();if(!i){i=l.stepForward()}if(!i){return}if(!q){q=new RegExp("(\\.?"+i.type.replace(".","\\.").replace("lparen",".paren").replace(/\b(?:start|begin)\b/,"(?:start|begin|end)")+")+")}var n=m.column-l.getCurrentTokenColumn();while(true){var o=i.value;var p=o.length;while(n<p){var j=o.charAt(n);if(j==h){k-=1;if(k==0){return{row:l.getCurrentTokenRow(),column:n+l.getCurrentTokenColumn()}}}else{if(j==g){k+=1}}n+=1}do{i=l.stepForward()}while(i&&!q.test(i.type));if(i==null){break}n=0}return null}}b.BracketMatch=a});ace.define("ace/edit_session",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/bidihandler","ace/config","ace/lib/event_emitter","ace/selection","ace/mode/text","ace/range","ace/document","ace/background_tokenizer","ace/search_highlight","ace/edit_session/folding","ace/edit_session/bracket_match"],function(g,i,c){var l=g("./lib/oop");var b=g("./lib/lang");var m=g("./bidihandler").BidiHandler;var e=g("./config");var o=g("./lib/event_emitter").EventEmitter;var n=g("./selection").Selection;var h=g("./mode/text").Mode;var f=g("./range").Range;var j=g("./document").Document;var d=g("./background_tokenizer").BackgroundTokenizer;var k=g("./search_highlight").SearchHighlight;var a=function(q,p){this.$breakpoints=[];this.$decorations=[];this.$frontMarkers={};this.$backMarkers={};this.$markerId=1;this.$undoSelect=true;this.$foldData=[];this.id="session"+(++a.$uid);this.$foldData.toString=function(){return this.join("\n")};this.on("changeFold",this.onChangeFold.bind(this));this.$onChange=this.onChange.bind(this);if(typeof q!="object"||!q.getLine){q=new j(q)}this.$bidiHandler=new m(this);this.setDocument(q);this.selection=new n(this);e.resetOptions(this);this.setMode(p);e._signal("session",this)};a.$uid=0;(function(){l.implement(this,o);this.setDocument=function(y){if(this.doc){this.doc.removeListener("change",this.$onChange)}this.doc=y;y.on("change",this.$onChange);if(this.bgTokenizer){this.bgTokenizer.setDocument(this.getDocument())}this.resetCaches()};this.getDocument=function(){return this.doc};this.$resetRowCache=function(z){if(!z){this.$docRowCache=[];this.$screenRowCache=[];return}var y=this.$docRowCache.length;var A=this.$getRowCacheIndex(this.$docRowCache,z)+1;if(y>A){this.$docRowCache.splice(A,y);this.$screenRowCache.splice(A,y)}};this.$getRowCacheIndex=function(z,C){var y=0;var B=z.length-1;while(y<=B){var A=(y+B)>>1;var D=z[A];if(C>D){y=A+1}else{if(C<D){B=A-1}else{return A}}}return y-1};this.resetCaches=function(){this.$modified=true;this.$wrapData=[];this.$rowLengthCache=[];this.$resetRowCache(0);if(this.bgTokenizer){this.bgTokenizer.start(0)}};this.onChangeFold=function(z){var y=z.data;this.$resetRowCache(y.start.row)};this.onChange=function(z){this.$modified=true;this.$bidiHandler.onChange(z);this.$resetRowCache(z.start.row);var y=this.$updateInternalDataOnChange(z);if(!this.$fromUndo&&this.$undoManager&&!z.ignore){this.$deltasDoc.push(z);if(y&&y.length!=0){this.$deltasFold.push({action:"removeFolds",folds:y})}this.$informUndoManager.schedule()}this.bgTokenizer&&this.bgTokenizer.$updateOnChange(z);this._signal("change",z)};this.setValue=function(y){this.doc.setValue(y);this.selection.moveTo(0,0);this.$resetRowCache(0);this.$deltas=[];this.$deltasDoc=[];this.$deltasFold=[];this.setUndoManager(this.$undoManager);this.getUndoManager().reset()};this.getValue=this.toString=function(){return this.doc.getValue()};this.getSelection=function(){return this.selection};this.getState=function(y){return this.bgTokenizer.getState(y)};this.getTokens=function(y){return this.bgTokenizer.getTokens(y)};this.getTokenAt=function(C,A){var B=this.bgTokenizer.getTokens(C);var z,D=0;if(A==null){var y=B.length-1;D=this.getLine(C).length}else{for(var y=0;y<B.length;y++){D+=B[y].value.length;if(D>=A){break}}}z=B[y];if(!z){return null}z.index=y;z.start=D-z.value.length;return z};this.setUndoManager=function(z){this.$undoManager=z;this.$deltas=[];this.$deltasDoc=[];this.$deltasFold=[];if(this.$informUndoManager){this.$informUndoManager.cancel()}if(z){var y=this;this.$syncInformUndoManager=function(){y.$informUndoManager.cancel();if(y.$deltasFold.length){y.$deltas.push({group:"fold",deltas:y.$deltasFold});y.$deltasFold=[]}if(y.$deltasDoc.length){y.$deltas.push({group:"doc",deltas:y.$deltasDoc});y.$deltasDoc=[]}if(y.$deltas.length>0){z.execute({action:"aceupdate",args:[y.$deltas,y],merge:y.mergeUndoDeltas})}y.mergeUndoDeltas=false;y.$deltas=[]};this.$informUndoManager=b.delayedCall(this.$syncInformUndoManager)}};this.markUndoGroup=function(){if(this.$syncInformUndoManager){this.$syncInformUndoManager()}};this.$defaultUndoManager={undo:function(){},redo:function(){},reset:function(){}};this.getUndoManager=function(){return this.$undoManager||this.$defaultUndoManager};this.getTabString=function(){if(this.getUseSoftTabs()){return b.stringRepeat(" ",this.getTabSize())}else{return"\t"}};this.setUseSoftTabs=function(y){this.setOption("useSoftTabs",y)};this.getUseSoftTabs=function(){return this.$useSoftTabs&&!this.$mode.$indentWithTabs};this.setTabSize=function(y){this.setOption("tabSize",y)};this.getTabSize=function(){return this.$tabSize};this.isTabStop=function(y){return this.$useSoftTabs&&(y.column%this.$tabSize===0)};this.setNavigateWithinSoftTabs=function(y){this.setOption("navigateWithinSoftTabs",y)};this.getNavigateWithinSoftTabs=function(){return this.$navigateWithinSoftTabs};this.$overwrite=false;this.setOverwrite=function(y){this.setOption("overwrite",y)};this.getOverwrite=function(){return this.$overwrite};this.toggleOverwrite=function(){this.setOverwrite(!this.$overwrite)};this.addGutterDecoration=function(z,y){if(!this.$decorations[z]){this.$decorations[z]=""}this.$decorations[z]+=" "+y;this._signal("changeBreakpoint",{})};this.removeGutterDecoration=function(z,y){this.$decorations[z]=(this.$decorations[z]||"").replace(" "+y,"");this._signal("changeBreakpoint",{})};this.getBreakpoints=function(){return this.$breakpoints};this.setBreakpoints=function(z){this.$breakpoints=[];for(var y=0;y<z.length;y++){this.$breakpoints[z[y]]="ace_breakpoint"}this._signal("changeBreakpoint",{})};this.clearBreakpoints=function(){this.$breakpoints=[];this._signal("changeBreakpoint",{})};this.setBreakpoint=function(z,y){if(y===undefined){y="ace_breakpoint"}if(y){this.$breakpoints[z]=y}else{delete this.$breakpoints[z]}this._signal("changeBreakpoint",{})};this.clearBreakpoint=function(y){delete this.$breakpoints[y];this._signal("changeBreakpoint",{})};this.addMarker=function(A,B,C,z){var D=this.$markerId++;var y={range:A,type:C||"line",renderer:typeof C=="function"?C:null,clazz:B,inFront:!!z,id:D};if(z){this.$frontMarkers[D]=y;this._signal("changeFrontMarker")}else{this.$backMarkers[D]=y;this._signal("changeBackMarker")}return D};this.addDynamicMarker=function(y,z){if(!y.update){return}var A=this.$markerId++;y.id=A;y.inFront=!!z;if(z){this.$frontMarkers[A]=y;this._signal("changeFrontMarker")}else{this.$backMarkers[A]=y;this._signal("changeBackMarker")}return y};this.removeMarker=function(z){var y=this.$frontMarkers[z]||this.$backMarkers[z];if(!y){return}var A=y.inFront?this.$frontMarkers:this.$backMarkers;if(y){delete (A[z]);this._signal(y.inFront?"changeFrontMarker":"changeBackMarker")}};this.getMarkers=function(y){return y?this.$frontMarkers:this.$backMarkers};this.highlight=function(z){if(!this.$searchHighlight){var y=new k(null,"ace_selected-word","text");this.$searchHighlight=this.addDynamicMarker(y)}this.$searchHighlight.setRegexp(z)};this.highlightLines=function(B,A,C,z){if(typeof A!="number"){C=A;A=B}if(!C){C="ace_step"}var y=new f(B,0,A,Infinity);y.id=this.addMarker(y,C,"fullLine",z);return y};this.setAnnotations=function(y){this.$annotations=y;this._signal("changeAnnotation",{})};this.getAnnotations=function(){return this.$annotations||[]};this.clearAnnotations=function(){this.setAnnotations([])};this.$detectNewLine=function(z){var y=z.match(/^.*?(\r?\n)/m);if(y){this.$autoNewLine=y[1]}else{this.$autoNewLine="\n"}};this.getWordRange=function(D,C){var A=this.getLine(D);var y=false;if(C>0){y=!!A.charAt(C-1).match(this.tokenRe)}if(!y){y=!!A.charAt(C).match(this.tokenRe)}if(y){var B=this.tokenRe}else{if(/^\s+$/.test(A.slice(C-1,C+1))){var B=/\s/}else{var B=this.nonTokenRe}}var E=C;if(E>0){do{E--}while(E>=0&&A.charAt(E).match(B));E++}var z=C;while(z<A.length&&A.charAt(z).match(B)){z++}return new f(D,E,D,z)};this.getAWordRange=function(A,z){var B=this.getWordRange(A,z);var y=this.getLine(B.end.row);while(y.charAt(B.end.column).match(/[ \t]/)){B.end.column+=1}return B};this.setNewLineMode=function(y){this.doc.setNewLineMode(y)};this.getNewLineMode=function(){return this.doc.getNewLineMode()};this.setUseWorker=function(y){this.setOption("useWorker",y)};this.getUseWorker=function(){return this.$useWorker};this.onReloadTokenizer=function(z){var y=z.data;this.bgTokenizer.start(y.first);this._signal("tokenizerUpdate",z)};this.$modes={};this.$mode=null;this.$modeId=null;this.setMode=function(B,y){if(B&&typeof B==="object"){if(B.getTokenizer){return this.$onChangeMode(B)}var z=B;var A=z.path}else{A=B||"ace/mode/text"}if(!this.$modes["ace/mode/text"]){this.$modes["ace/mode/text"]=new h()}if(this.$modes[A]&&!z){this.$onChangeMode(this.$modes[A]);y&&y();return}this.$modeId=A;e.loadModule(["mode",A],function(C){if(this.$modeId!==A){return y&&y()}if(this.$modes[A]&&!z){this.$onChangeMode(this.$modes[A])}else{if(C&&C.Mode){C=new C.Mode(z);if(!z){this.$modes[A]=C;C.$id=A}this.$onChangeMode(C)}}y&&y()}.bind(this));if(!this.$mode){this.$onChangeMode(this.$modes["ace/mode/text"],true)}};this.$onChangeMode=function(B,C){if(!C){this.$modeId=B.$id}if(this.$mode===B){return}this.$mode=B;this.$stopWorker();if(this.$useWorker){this.$startWorker()}var A=B.getTokenizer();if(A.addEventListener!==undefined){var z=this.onReloadTokenizer.bind(this);A.addEventListener("update",z)}if(!this.bgTokenizer){this.bgTokenizer=new d(A);var y=this;this.bgTokenizer.addEventListener("update",function(D){y._signal("tokenizerUpdate",D)})}else{this.bgTokenizer.setTokenizer(A)}this.bgTokenizer.setDocument(this.getDocument());this.tokenRe=B.tokenRe;this.nonTokenRe=B.nonTokenRe;if(!C){if(B.attachToSession){B.attachToSession(this)}this.$options.wrapMethod.set.call(this,this.$wrapMethod);this.$setFolding(B.foldingRules);this.bgTokenizer.start(0);this._emit("changeMode")}};this.$stopWorker=function(){if(this.$worker){this.$worker.terminate();this.$worker=null}};this.$startWorker=function(){try{this.$worker=this.$mode.createWorker(this)}catch(y){e.warn("Could not load worker",y);this.$worker=null}};this.getMode=function(){return this.$mode};this.$scrollTop=0;this.setScrollTop=function(y){if(this.$scrollTop===y||isNaN(y)){return}this.$scrollTop=y;this._signal("changeScrollTop",y)};this.getScrollTop=function(){return this.$scrollTop};this.$scrollLeft=0;this.setScrollLeft=function(y){if(this.$scrollLeft===y||isNaN(y)){return}this.$scrollLeft=y;this._signal("changeScrollLeft",y)};this.getScrollLeft=function(){return this.$scrollLeft};this.getScreenWidth=function(){this.$computeWidth();if(this.lineWidgets){return Math.max(this.getLineWidgetMaxWidth(),this.screenWidth)}return this.screenWidth};this.getLineWidgetMaxWidth=function(){if(this.lineWidgetsWidth!=null){return this.lineWidgetsWidth}var y=0;this.lineWidgets.forEach(function(z){if(z&&z.screenWidth>y){y=z.screenWidth}});return this.lineWidgetWidth=y};this.$computeWidth=function(z){if(this.$modified||z){this.$modified=false;if(this.$useWrapMode){return this.screenWidth=this.$wrapLimit}var G=this.doc.getAllLines();var y=this.$rowLengthCache;var A=0;var F=0;var E=this.$foldData[F];var C=E?E.start.row:Infinity;var D=G.length;for(var B=0;B<D;B++){if(B>C){B=E.end.row+1;if(B>=D){break}E=this.$foldData[F++];C=E?E.start.row:Infinity}if(y[B]==null){y[B]=this.$getStringScreenWidth(G[B])[0]}if(y[B]>A){A=y[B]}}this.screenWidth=A}};this.getLine=function(y){return this.doc.getLine(y)};this.getLines=function(z,y){return this.doc.getLines(z,y)};this.getLength=function(){return this.doc.getLength()};this.getTextRange=function(y){return this.doc.getTextRange(y||this.selection.getRange())};this.insert=function(y,z){return this.doc.insert(y,z)};this.remove=function(y){return this.doc.remove(y)};this.removeFullLines=function(z,y){return this.doc.removeFullLines(z,y)};this.undoChanges=function(B,A){if(!B.length){return}this.$fromUndo=true;var y=null;for(var z=B.length-1;z!=-1;z--){var C=B[z];if(C.group=="doc"){this.doc.revertDeltas(C.deltas);y=this.$getUndoSelection(C.deltas,true,y)}else{C.deltas.forEach(function(D){this.addFolds(D.folds)},this)}}this.$fromUndo=false;y&&this.$undoSelect&&!A&&this.selection.setSelectionRange(y);return y};this.redoChanges=function(B,A){if(!B.length){return}this.$fromUndo=true;var y=null;for(var z=0;z<B.length;z++){var C=B[z];if(C.group=="doc"){this.doc.applyDeltas(C.deltas);y=this.$getUndoSelection(C.deltas,false,y)}}this.$fromUndo=false;y&&this.$undoSelect&&!A&&this.selection.setSelectionRange(y);return y};this.setUndoSelect=function(y){this.$undoSelect=y};this.$getUndoSelection=function(y,z,F){function C(I){return z?I.action!=="insert":I.action==="insert"}var H=y[0];var B,G;var D=false;if(C(H)){B=f.fromPoints(H.start,H.end);D=true}else{B=f.fromPoints(H.start,H.start);D=false}for(var A=1;A<y.length;A++){H=y[A];if(C(H)){G=H.start;if(B.compare(G.row,G.column)==-1){B.setStart(G)}G=H.end;if(B.compare(G.row,G.column)==1){B.setEnd(G)}D=true}else{G=H.start;if(B.compare(G.row,G.column)==-1){B=f.fromPoints(H.start,H.start)}D=false}}if(F!=null){if(f.comparePoints(F.start,B.start)===0){F.start.column+=B.end.column-B.start.column;F.end.column+=B.end.column-B.start.column}var E=F.compareRange(B);if(E==1){B.setStart(F.start)}else{if(E==-1){B.setEnd(F.end)}}}return B};this.replace=function(y,z){return this.doc.replace(y,z)};this.moveText=function(E,G,y){var H=this.getTextRange(E);var F=this.getFoldsInRange(E);var z=f.fromPoints(G,G);if(!y){this.remove(E);var D=E.start.row-E.end.row;var A=D?-E.end.column:E.start.column-E.end.column;if(A){if(z.start.row==E.end.row&&z.start.column>E.end.column){z.start.column+=A}if(z.end.row==E.end.row&&z.end.column>E.end.column){z.end.column+=A}}if(D&&z.start.row>=E.end.row){z.start.row+=D;z.end.row+=D}}z.end=this.insert(z.start,H);if(F.length){var B=E.start;var C=z.start;var D=C.row-B.row;var A=C.column-B.column;this.addFolds(F.map(function(I){I=I.clone();if(I.start.row==B.row){I.start.column+=A}if(I.end.row==B.row){I.end.column+=A}I.start.row+=D;I.end.row+=D;return I}))}return z};this.indentRows=function(z,y,B){B=B.replace(/\t/g,this.getTabString());for(var A=z;A<=y;A++){this.doc.insertInLine({row:A,column:0},B)}};this.outdentRows=function(A){var E=A.collapseRows();var z=new f(0,0,0,0);var D=this.getTabSize();for(var C=E.start.row;C<=E.end.row;++C){var y=this.getLine(C);z.start.row=C;z.end.row=C;for(var B=0;B<D;++B){if(y.charAt(B)!=" "){break}}if(B<D&&y.charAt(B)=="\t"){z.start.column=B;z.end.column=B+1}else{z.start.column=0;z.end.column=B}this.remove(z)}};this.$moveLines=function(F,B,A){F=this.getRowFoldStart(F);B=this.getRowFoldEnd(B);if(A<0){var E=this.getRowFoldStart(F+A);if(E<0){return 0}var D=E-F}else{if(A>0){var E=this.getRowFoldEnd(B+A);if(E>this.doc.getLength()-1){return 0}var D=E-B}else{F=this.$clipRowToDocument(F);B=this.$clipRowToDocument(B);var D=B-F+1}}var z=new f(F,0,B,Number.MAX_VALUE);var C=this.getFoldsInRange(z).map(function(G){G=G.clone();G.start.row+=D;G.end.row+=D;return G});var y=A==0?this.doc.getLines(F,B):this.doc.removeFullLines(F,B);this.doc.insertFullLines(F+D,y);C.length&&this.addFolds(C);return D};this.moveLinesUp=function(z,y){return this.$moveLines(z,y,-1)};this.moveLinesDown=function(z,y){return this.$moveLines(z,y,1)};this.duplicateLines=function(z,y){return this.$moveLines(z,y,0)};this.$clipRowToDocument=function(y){return Math.max(0,Math.min(y,this.doc.getLength()-1))};this.$clipColumnToRow=function(z,y){if(y<0){return 0}return Math.min(this.doc.getLine(z).length,y)};this.$clipPositionToDocument=function(A,z){z=Math.max(0,z);if(A<0){A=0;z=0}else{var y=this.doc.getLength();if(A>=y){A=y-1;z=this.doc.getLine(y-1).length}else{z=Math.min(this.doc.getLine(A).length,z)}}return{row:A,column:z}};this.$clipRangeToDocument=function(z){if(z.start.row<0){z.start.row=0;z.start.column=0}else{z.start.column=this.$clipColumnToRow(z.start.row,z.start.column)}var y=this.doc.getLength()-1;if(z.end.row>y){z.end.row=y;z.end.column=this.doc.getLine(y).length}else{z.end.column=this.$clipColumnToRow(z.end.row,z.end.column)}return z};this.$wrapLimit=80;this.$useWrapMode=false;this.$wrapLimitRange={min:null,max:null};this.setUseWrapMode=function(z){if(z!=this.$useWrapMode){this.$useWrapMode=z;this.$modified=true;this.$resetRowCache(0);if(z){var y=this.getLength();this.$wrapData=Array(y);this.$updateWrapData(0,y-1)}this._signal("changeWrapMode")}};this.getUseWrapMode=function(){return this.$useWrapMode};this.setWrapLimitRange=function(z,y){if(this.$wrapLimitRange.min!==z||this.$wrapLimitRange.max!==y){this.$wrapLimitRange={min:z,max:y};this.$modified=true;this.$bidiHandler.markAsDirty();if(this.$useWrapMode){this._signal("changeWrapMode")}}};this.adjustWrapLimit=function(B,A){var z=this.$wrapLimitRange;if(z.max<0){z={min:A,max:A}}var y=this.$constrainWrapLimit(B,z.min,z.max);if(y!=this.$wrapLimit&&y>1){this.$wrapLimit=y;this.$modified=true;if(this.$useWrapMode){this.$updateWrapData(0,this.getLength()-1);this.$resetRowCache(0);this._signal("changeWrapLimit")}return true}return false};this.$constrainWrapLimit=function(z,A,y){if(A){z=Math.max(A,z)}if(y){z=Math.min(y,z)}return z};this.getWrapLimit=function(){return this.$wrapLimit};this.setWrapLimit=function(y){this.setWrapLimitRange(y,y)};this.getWrapLimitRange=function(){return{min:this.$wrapLimitRange.min,max:this.$wrapLimitRange.max}};this.$updateInternalDataOnChange=function(M){var E=this.$useWrapMode;var C=M.action;var z=M.start;var D=M.end;var B=z.row;var N=D.row;var G=N-B;var y=null;this.$updating=true;if(G!=0){if(C==="remove"){this[E?"$wrapData":"$rowLengthCache"].splice(B,G);var A=this.$foldData;y=this.getFoldsInRange(M);this.removeFolds(y);var K=this.getFoldLine(D.row);var L=0;if(K){K.addRemoveChars(D.row,D.column,z.column-D.column);K.shiftRow(-G);var J=this.getFoldLine(B);if(J&&J!==K){J.merge(K);K=J}L=A.indexOf(K)+1}for(L;L<A.length;L++){var K=A[L];if(K.start.row>=D.row){K.shiftRow(-G)}}N=B}else{var H=Array(G);H.unshift(B,0);var F=E?this.$wrapData:this.$rowLengthCache;F.splice.apply(F,H);var A=this.$foldData;var K=this.getFoldLine(B);var L=0;if(K){var I=K.range.compareInside(z.row,z.column);if(I==0){K=K.split(z.row,z.column);if(K){K.shiftRow(G);K.addRemoveChars(N,0,D.column-z.column)}}else{if(I==-1){K.addRemoveChars(B,0,D.column-z.column);K.shiftRow(G)}}L=A.indexOf(K)+1}for(L;L<A.length;L++){var K=A[L];if(K.start.row>=B){K.shiftRow(G)}}}}else{G=Math.abs(M.start.column-M.end.column);if(C==="remove"){y=this.getFoldsInRange(M);this.removeFolds(y);G=-G}var K=this.getFoldLine(B);if(K){K.addRemoveChars(B,z.column,G)}}if(E&&this.$wrapData.length!=this.doc.getLength()){console.error("doc.getLength() and $wrapData.length have to be the same!")}this.$updating=false;if(E){this.$updateWrapData(B,N)}else{this.$updateRowLengthCache(B,N)}return y};this.$updateRowLengthCache=function(A,z,y){this.$rowLengthCache[A]=null;this.$rowLengthCache[z]=null};this.$updateWrapData=function(y,E){var G=this.doc.getAllLines();var A=this.getTabSize();var z=this.$wrapData;var F=this.$wrapLimit;var B;var C;var D=y;E=Math.min(E,G.length-1);while(D<=E){C=this.getFoldLine(D,C);if(!C){B=this.$getDisplayTokens(G[D]);z[D]=this.$computeWrapSplits(B,F,A);D++}else{B=[];C.walk(function(M,L,K,H){var I;if(M!=null){I=this.$getDisplayTokens(M,B.length);I[0]=v;for(var J=1;J<I.length;J++){I[J]=p}}else{I=this.$getDisplayTokens(G[L].substring(H,K),B.length)}B=B.concat(I)}.bind(this),C.end.row,G[C.end.row].length+1);z[C.start.row]=this.$computeWrapSplits(B,F,A);D=C.end.row+1}}};var x=1,w=2,v=3,p=4,s=9,t=10,u=11,q=12;this.$computeWrapSplits=function(I,N,E){if(I.length==0){return[]}var K=[];var D=I.length;var G=0,B=0;var J=this.$wrapAsCode;var M=this.$indentedSoftWrap;var z=N<=Math.max(2*E,8)||M===false?0:Math.floor(N/2);function C(){var O=0;if(z===0){return O}if(M){for(var Q=0;Q<I.length;Q++){var P=I[Q];if(P==t){O+=1}else{if(P==u){O+=E}else{if(P==q){continue}else{break}}}}}if(J&&M!==false){O+=E}return Math.min(O,z)}function L(Q){var P=I.slice(G,Q);var O=P.length;P.join("").replace(/12/g,function(){O-=1}).replace(/2/g,function(){O-=1});if(!K.length){A=C();K.indent=A}B+=O;K.push(B);G=Q}var A=0;var y=0;while(D-G>N-A){var H=G+N-A;if(I[H-1]>=t&&I[H]>=t){L(H);continue}if(I[H]==v||I[H]==p){for(H;H!=G-1;H--){if(I[H]==v){break}}if(H>G){L(H);continue}H=G+N;for(H;H<I.length;H++){if(I[H]!=p){break}}if(H==I.length){break}L(H);continue}var F=Math.max(H-(N-(N>>2)),G-1);while(H>F&&I[H]<v){H--
-}if(J){while(H>F&&I[H]<v){H--}while(H>F&&I[H]==s){H--}}else{while(H>F&&I[H]<t){H--}}if(H>F){if(y==D-G){break}y=D-G;if(I[H]==w||I[H-1]==w){L(H++)}else{L(++H)}continue}H=G+N;if(I[H]==w){H--}L(H-A)}return K};this.$getDisplayTokens=function(C,B){var y=[];var A;B=B||0;for(var z=0;z<C.length;z++){var E=C.charCodeAt(z);if(E==9){A=this.getScreenTabSize(y.length+B);y.push(u);for(var D=1;D<A;D++){y.push(q)}}else{if(E==32){y.push(t)}else{if((E>39&&E<48)||(E>57&&E<64)){y.push(s)}else{if(E>=4352&&r(E)){y.push(t,w)}else{y.push(x)}}}}}return y};this.$getStringScreenWidth=function(A,C,y){if(C==0){return[0,0]}if(C==null){C=Infinity}y=y||0;var B,z;for(z=0;z<A.length;z++){B=A.charCodeAt(z);if(B==9){y+=this.getScreenTabSize(y)}else{if(B>=4352&&r(B)){y+=2}else{y+=1}}if(y>C){break}}return[y,z]};this.lineWidgets=null;this.getRowLength=function(z){if(this.lineWidgets){var y=this.lineWidgets[z]&&this.lineWidgets[z].rowCount||0}else{y=0}if(!this.$useWrapMode||!this.$wrapData[z]){return 1+y}else{return this.$wrapData[z].length+1+y}};this.getRowLineCount=function(y){if(!this.$useWrapMode||!this.$wrapData[y]){return 1}else{return this.$wrapData[y].length+1}};this.getRowWrapIndent=function(y){if(this.$useWrapMode){var A=this.screenToDocumentPosition(y,Number.MAX_VALUE);var z=this.$wrapData[A.row];return z.length&&z[0]<A.column?z.indent:0}else{return 0}};this.getScreenLastRowColumn=function(y){var z=this.screenToDocumentPosition(y,Number.MAX_VALUE);return this.documentToScreenColumn(z.row,z.column)};this.getDocumentLastRowColumn=function(y,A){var z=this.documentToScreenRow(y,A);return this.getScreenLastRowColumn(z)};this.getDocumentLastRowColumnPosition=function(y,A){var z=this.documentToScreenRow(y,A);return this.screenToDocumentPosition(z,Number.MAX_VALUE/10)};this.getRowSplitData=function(y){if(!this.$useWrapMode){return undefined}else{return this.$wrapData[y]}};this.getScreenTabSize=function(y){return this.$tabSize-y%this.$tabSize};this.screenToDocumentRow=function(z,y){return this.screenToDocumentPosition(z,y).row};this.screenToDocumentColumn=function(z,y){return this.screenToDocumentPosition(z,y).column};this.screenToDocumentPosition=function(G,C,O){if(G<0){return{row:0,column:0}}var E;var y=0;var M=0;var z;var B=0;var K=0;var I=this.$screenRowCache;var N=this.$getRowCacheIndex(I,G);var L=I.length;if(L&&N>=0){var B=I[N];var y=this.$docRowCache[N];var F=G>I[L-1]}else{var F=!L}var J=this.getLength()-1;var P=this.getNextFoldLine(y);var A=P?P.start.row:Infinity;while(B<=G){K=this.getRowLength(y);if(B+K>G||y>=J){break}else{B+=K;y++;if(y>A){y=P.end.row+1;P=this.getNextFoldLine(y,P);A=P?P.start.row:Infinity}}if(F){this.$docRowCache.push(y);this.$screenRowCache.push(B)}}if(P&&P.start.row<=y){E=this.getFoldDisplayLine(P);y=P.start.row}else{if(B+K<=G||y>J){return{row:J,column:this.getLine(J).length}}else{E=this.getLine(y);P=null}}var H=0,Q=Math.floor(G-B);if(this.$useWrapMode){var D=this.$wrapData[y];if(D){z=D[Q];if(Q>0&&D.length){H=D.indent;M=D[Q-1]||D[D.length-1];E=E.substring(M)}}}if(O!==undefined&&this.$bidiHandler.isBidiRow(B+Q,y,Q)){C=this.$bidiHandler.offsetToCol(O)}M+=this.$getStringScreenWidth(E,C-H)[1];if(this.$useWrapMode&&M>=z){M=z-1}if(P){return P.idxToPosition(M)}return{row:y,column:M}};this.documentToScreenPosition=function(y,M){if(typeof M==="undefined"){var B=this.$clipPositionToDocument(y.row,y.column)}else{B=this.$clipPositionToDocument(y,M)}y=B.row;M=B.column;var G=0;var I=null;var A=null;A=this.getFoldAt(y,M,1);if(A){y=A.start.row;M=A.start.column}var K,C=0;var J=this.$docRowCache;var N=this.$getRowCacheIndex(J,y);var L=J.length;if(L&&N>=0){var C=J[N];var G=this.$screenRowCache[N];var F=y>J[L-1]}else{var F=!L}var O=this.getNextFoldLine(C);var z=O?O.start.row:Infinity;while(C<y){if(C>=z){K=O.end.row+1;if(K>y){break}O=this.getNextFoldLine(K,O);z=O?O.start.row:Infinity}else{K=C+1}G+=this.getRowLength(C);C=K;if(F){this.$docRowCache.push(C);this.$screenRowCache.push(G)}}var E="";if(O&&C>=z){E=this.getFoldDisplayLine(O,y,M);I=O.start.row}else{E=this.getLine(y).substring(0,M);I=y}var H=0;if(this.$useWrapMode){var P=this.$wrapData[I];if(P){var D=0;while(E.length>=P[D]){G++;D++}E=E.substring(P[D-1]||0,E.length);H=D>0?P.indent:0}}return{row:G,column:H+this.$getStringScreenWidth(E)[0]}};this.documentToScreenColumn=function(z,y){return this.documentToScreenPosition(z,y).column};this.documentToScreenRow=function(y,z){return this.documentToScreenPosition(y,z).row};this.getScreenLength=function(){var E=0;var z=null;if(!this.$useWrapMode){E=this.getLength();var B=this.$foldData;for(var A=0;A<B.length;A++){z=B[A];E-=z.end.row-z.start.row}}else{var C=this.$wrapData.length;var F=0,A=0;var z=this.$foldData[A++];var y=z?z.start.row:Infinity;while(F<C){var D=this.$wrapData[F];E+=D?D.length+1:1;F++;if(F>y){F=z.end.row+1;z=this.$foldData[A++];y=z?z.start.row:Infinity}}}if(this.lineWidgets){E+=this.$getWidgetScreenLength()}return E};this.$setFontMetrics=function(y){if(!this.$enableVarChar){return}this.$getStringScreenWidth=function(B,D,z){if(D===0){return[0,0]}if(!D){D=Infinity}z=z||0;var C,A;for(A=0;A<B.length;A++){C=B.charAt(A);if(C==="\t"){z+=this.getScreenTabSize(z)}else{z+=y.getCharacterWidth(C)}if(z>D){break}}return[z,A]}};this.destroy=function(){if(this.bgTokenizer){this.bgTokenizer.setDocument(null);this.bgTokenizer=null}this.$stopWorker()};this.isFullWidth=r;function r(y){if(y<4352){return false}return y>=4352&&y<=4447||y>=4515&&y<=4519||y>=4602&&y<=4607||y>=9001&&y<=9002||y>=11904&&y<=11929||y>=11931&&y<=12019||y>=12032&&y<=12245||y>=12272&&y<=12283||y>=12288&&y<=12350||y>=12353&&y<=12438||y>=12441&&y<=12543||y>=12549&&y<=12589||y>=12593&&y<=12686||y>=12688&&y<=12730||y>=12736&&y<=12771||y>=12784&&y<=12830||y>=12832&&y<=12871||y>=12880&&y<=13054||y>=13056&&y<=19903||y>=19968&&y<=42124||y>=42128&&y<=42182||y>=43360&&y<=43388||y>=44032&&y<=55203||y>=55216&&y<=55238||y>=55243&&y<=55291||y>=63744&&y<=64255||y>=65040&&y<=65049||y>=65072&&y<=65106||y>=65108&&y<=65126||y>=65128&&y<=65131||y>=65281&&y<=65376||y>=65504&&y<=65510}}).call(a.prototype);g("./edit_session/folding").Folding.call(a.prototype);g("./edit_session/bracket_match").BracketMatch.call(a.prototype);e.defineOptions(a.prototype,"session",{wrap:{set:function(q){if(!q||q=="off"){q=false}else{if(q=="free"){q=true}else{if(q=="printMargin"){q=-1}else{if(typeof q=="string"){q=parseInt(q,10)||false}}}}if(this.$wrap==q){return}this.$wrap=q;if(!q){this.setUseWrapMode(false)}else{var p=typeof q=="number"?q:null;this.setWrapLimitRange(p,p);this.setUseWrapMode(true)}},get:function(){if(this.getUseWrapMode()){if(this.$wrap==-1){return"printMargin"}if(!this.getWrapLimitRange().min){return"free"}return this.$wrap}return"off"},handlesSet:true},wrapMethod:{set:function(p){p=p=="auto"?this.$mode.type!="text":p!="text";if(p!=this.$wrapAsCode){this.$wrapAsCode=p;if(this.$useWrapMode){this.$modified=true;this.$resetRowCache(0);this.$updateWrapData(0,this.getLength()-1)}}},initialValue:"auto"},indentedSoftWrap:{initialValue:true},firstLineNumber:{set:function(){this._signal("changeBreakpoint")},initialValue:1},useWorker:{set:function(p){this.$useWorker=p;this.$stopWorker();if(p){this.$startWorker()}},initialValue:true},useSoftTabs:{initialValue:true},tabSize:{set:function(p){if(isNaN(p)||this.$tabSize===p){return}this.$modified=true;this.$rowLengthCache=[];this.$tabSize=p;this._signal("changeTabSize")},initialValue:4,handlesSet:true},navigateWithinSoftTabs:{initialValue:false},overwrite:{set:function(p){this._signal("changeOverwrite")},initialValue:false},newLineMode:{set:function(p){this.doc.setNewLineMode(p)},get:function(){return this.doc.getNewLineMode()},handlesSet:true},mode:{set:function(p){this.setMode(p)},get:function(){return this.$modeId}}});i.EditSession=a});ace.define("ace/search",["require","exports","module","ace/lib/lang","ace/lib/oop","ace/range"],function(c,a,d){var h=c("./lib/lang");var f=c("./lib/oop");var g=c("./range").Range;var b=function(){this.$options={}};(function(){this.set=function(i){f.mixin(this.$options,i);return this};this.getOptions=function(){return h.copyObject(this.$options)};this.setOptions=function(i){this.$options=i};this.find=function(l){var j=this.$options;var k=this.$matchIterator(l,j);if(!k){return false}var i=null;k.forEach(function(n,o,p,m){i=new g(n,o,p,m);if(o==m&&j.start&&j.start.start&&j.skipCurrent!=false&&i.isEqual(j.start)){i=null;return false}return true});return i};this.findAll=function(l){var r=this.$options;if(!r.needle){return[]}this.$assembleRegExp(r);var w=r.range;var k=w?l.getLines(w.start.row,w.end.row):l.doc.getAllLines();var p=[];var y=r.re;if(r.$isMultiLine){var D=y.length;var z=k.length-D;var x;outer:for(var t=y.offset||0;t<=z;t++){for(var B=0;B<D;B++){if(k[t+B].search(y[B])==-1){continue outer}}var A=k[t];var v=k[t+D-1];var s=A.length-A.match(y[0])[0].length;var o=v.match(y[D-1])[0].length;if(x&&x.end.row===t&&x.end.column>s){continue}p.push(x=new g(t,s,t+D-1,o));if(D>2){t=t+D-2}}}else{for(var C=0;C<k.length;C++){var m=h.getMatchOffsets(k[C],y);for(var B=0;B<m.length;B++){var u=m[B];p.push(new g(C,u.offset,C,u.offset+u.length))}}}if(w){var q=w.start.column;var n=w.start.column;var C=0,B=p.length-1;while(C<B&&p[C].start.column<q&&p[C].start.row==w.start.row){C++}while(C<B&&p[B].end.column>n&&p[B].end.row==w.end.row){B--}p=p.slice(C,B+1);for(C=0,B=p.length;C<B;C++){p[C].start.row+=w.start.row;p[C].end.row+=w.start.row}}return p};this.replace=function(j,p){var l=this.$options;var o=this.$assembleRegExp(l);if(l.$isMultiLine){return p}if(!o){return}var k=o.exec(j);if(!k||k[0].length!=j.length){return null}p=j.replace(o,p);if(l.preserveCase){p=p.split("");for(var m=Math.min(j.length,j.length);m--;){var n=j[m];if(n&&n.toLowerCase()!=n){p[m]=p[m].toUpperCase()}else{p[m]=p[m].toLowerCase()}}p=p.join("")}return p};this.$assembleRegExp=function(j,n){if(j.needle instanceof RegExp){return j.re=j.needle}var m=j.needle;if(!j.needle){return j.re=false}if(!j.regExp){m=h.escapeRegExp(m)}if(j.wholeWord){m=e(m,j)}var i=j.caseSensitive?"gm":"gmi";j.$isMultiLine=!n&&/[\n\r]/.test(m);if(j.$isMultiLine){return j.re=this.$assembleMultilineRegExp(m,i)}try{var k=new RegExp(m,i)}catch(l){k=false}return j.re=k};this.$assembleMultilineRegExp=function(o,j){var n=o.replace(/\r\n|\r|\n/g,"$\n^").split("\n");var l=[];for(var k=0;k<n.length;k++){try{l.push(new RegExp(n[k],j))}catch(m){return false}}return l};this.$matchIterator=function(p,t){var r=this.$assembleRegExp(t);if(!r){return false}var q=t.backwards==true;var j=t.skipCurrent!=false;var l=t.range;var i=t.start;if(!i){i=l?l[q?"end":"start"]:p.selection.getRange()}if(i.start){i=i[j!=q?"end":"start"]}var k=l?l.start.row:0;var s=l?l.end.row:p.getLength()-1;if(q){var n=function(v){var u=i.row;if(o(u,i.column,v)){return}for(u--;u>=k;u--){if(o(u,Number.MAX_VALUE,v)){return}}if(t.wrap==false){return}for(u=s,k=i.row;u>=k;u--){if(o(u,Number.MAX_VALUE,v)){return}}}}else{var n=function(v){var u=i.row;if(o(u,i.column,v)){return}for(u=u+1;u<=s;u++){if(o(u,0,v)){return}}if(t.wrap==false){return}for(u=k,s=i.row;u<=s;u++){if(o(u,0,v)){return}}}}if(t.$isMultiLine){var m=r.length;var o=function(A,z,B){var v=q?A-m+1:A;if(v<0){return}var u=p.getLine(v);var y=u.search(r[0]);if(!q&&y<z||y===-1){return}for(var w=1;w<m;w++){u=p.getLine(v+w);if(u.search(r[w])==-1){return}}var x=u.match(r[m-1])[0].length;if(q&&x>z){return}if(B(v,y,v+m-1,x)){return true}}}else{if(q){var o=function(C,y,B){var D=p.getLine(C);var z=[];var v,A=0;r.lastIndex=0;while((v=r.exec(D))){var u=v[0].length;A=v.index;if(!u){if(A>=D.length){break}r.lastIndex=A+=1}if(v.index+u>y){break}z.push(v.index,u)}for(var x=z.length-1;x>=0;x-=2){var w=z[x-1];var u=z[x];if(B(C,w,C,w+u)){return true}}}}else{var o=function(z,y,A){var v=p.getLine(z);var u;var x=y;r.lastIndex=y;while((u=r.exec(v))){var w=u[0].length;x=u.index;if(A(z,x,z,x+w)){return true}if(!w){r.lastIndex=x+=1;if(x>=v.length){return false}}}}}}return{forEach:n}}}).call(b.prototype);function e(k,j){function i(l){if(/\w/.test(l)||j.regExp){return"\\b"}return""}return i(k[0])+k+i(k[k.length-1])}a.Search=b});ace.define("ace/keyboard/hash_handler",["require","exports","module","ace/lib/keys","ace/lib/useragent"],function(e,c,f){var d=e("../lib/keys");var b=e("../lib/useragent");var a=d.KEY_MODS;function g(j,i){this.platform=i||(b.isMac?"mac":"win");this.commands={};this.commandKeyBinding={};this.addCommands(j);this.$singleCommand=true}function h(j,i){g.call(this,j,i);this.$singleCommand=false}h.prototype=g.prototype;(function(){this.addCommand=function(k){if(this.commands[k.name]){this.removeCommand(k)}this.commands[k.name]=k;if(k.bindKey){this._buildKeyHash(k)}};this.removeCommand=function(o,m){var k=o&&(typeof o==="string"?o:o.name);o=this.commands[k];if(!m){delete this.commands[k]}var n=this.commandKeyBinding;for(var q in n){var p=n[q];if(p==o){delete n[q]}else{if(Array.isArray(p)){var l=p.indexOf(o);if(l!=-1){p.splice(l,1);if(p.length==1){n[q]=p[0]}}}}}};this.bindKey=function(l,m,k){if(typeof l=="object"&&l){if(k==undefined){k=l.position}l=l[this.platform]}if(!l){return}if(typeof m=="function"){return this.addCommand({exec:m,bindKey:l,name:m.name||l})}l.split("|").forEach(function(o){var n="";if(o.indexOf(" ")!=-1){var p=o.split(/\s+/);o=p.pop();p.forEach(function(s){var t=this.parseKeys(s);var u=a[t.hashId]+t.key;n+=(n?" ":"")+u;this._addCommandToBinding(n,"chainKeys")},this);n+=" "}var q=this.parseKeys(o);var r=a[q.hashId]+q.key;this._addCommandToBinding(n+r,m,k)},this)};function j(k){return typeof k=="object"&&k.bindKey&&k.bindKey.position||(k.isDefault?-100:0)}this._addCommandToBinding=function(r,q,m){var p=this.commandKeyBinding,o;if(!q){delete p[r]}else{if(!p[r]||this.$singleCommand){p[r]=q}else{if(!Array.isArray(p[r])){p[r]=[p[r]]}else{if((o=p[r].indexOf(q))!=-1){p[r].splice(o,1)}}if(typeof m!="number"){m=j(q)}var l=p[r];for(o=0;o<l.length;o++){var k=l[o];var n=j(k);if(n>m){break}}l.splice(o,0,q)}}};this.addCommands=function(k){k&&Object.keys(k).forEach(function(l){var m=k[l];if(!m){return}if(typeof m==="string"){return this.bindKey(m,l)}if(typeof m==="function"){m={exec:m}}if(typeof m!=="object"){return}if(!m.name){m.name=l}this.addCommand(m)},this)};this.removeCommands=function(k){Object.keys(k).forEach(function(l){this.removeCommand(k[l])},this)};this.bindKeys=function(k){Object.keys(k).forEach(function(l){this.bindKey(l,k[l])},this)};this._buildKeyHash=function(k){this.bindKey(k.bindKey,k)};this.parseKeys=function(o){var q=o.toLowerCase().split(/[\-\+]([\-\+])?/).filter(function(r){return r});var m=q.pop();var p=d[m];if(d.FUNCTION_KEYS[p]){m=d.FUNCTION_KEYS[p].toLowerCase()}else{if(!q.length){return{key:m,hashId:-1}}else{if(q.length==1&&q[0]=="shift"){return{key:m.toUpperCase(),hashId:-1}}}}var n=0;for(var l=q.length;l--;){var k=d.KEY_MODS[q[l]];if(k==null){if(typeof console!="undefined"){console.error("invalid modifier "+q[l]+" in "+o)}return false}n|=k}return{key:m,hashId:n}};this.findKeyCommand=function i(m,k){var l=a[m]+k;return this.commandKeyBinding[l]};this.handleKeyboard=function(n,m,k,o){if(o<0){return}var l=a[m]+k;var p=this.commandKeyBinding[l];if(n.$keyChain){n.$keyChain+=" "+l;p=this.commandKeyBinding[n.$keyChain]||p}if(p){if(p=="chainKeys"||p[p.length-1]=="chainKeys"){n.$keyChain=n.$keyChain||l;return{command:"null"}}}if(n.$keyChain){if((!m||m==4)&&k.length==1){n.$keyChain=n.$keyChain.slice(0,-l.length-1)}else{if(m==-1||o>0){n.$keyChain=""}}}return{command:p}};this.getStatusText=function(k,l){return l.$keyChain||""}}).call(g.prototype);c.HashHandler=g;c.MultiHashHandler=h});ace.define("ace/commands/command_manager",["require","exports","module","ace/lib/oop","ace/keyboard/hash_handler","ace/lib/event_emitter"],function(b,a,c){var f=b("../lib/oop");var e=b("../keyboard/hash_handler").MultiHashHandler;var d=b("../lib/event_emitter").EventEmitter;var g=function(i,h){e.call(this,h,i);this.byName=this.commands;this.setDefaultHandler("exec",function(j){return j.command.exec(j.editor,j.args||{})})};f.inherits(g,e);(function(){f.implement(this,d);this.exec=function(m,k,h){if(Array.isArray(m)){for(var j=m.length;j--;){if(this.exec(m[j],k,h)){return true}}return false}if(typeof m==="string"){m=this.commands[m]}if(!m){return false}if(k&&k.$readOnly&&!m.readOnly){return false}if(m.isAvailable&&!m.isAvailable(k)){return false}var l={editor:k,command:m,args:h};l.returnValue=this._emit("exec",l);this._signal("afterExec",l);return l.returnValue===false?false:true};this.toggleRecording=function(h){if(this.$inReplay){return}h&&h._emit("changeStatus");if(this.recording){this.macro.pop();this.removeEventListener("exec",this.$addCommandToMacro);if(!this.macro.length){this.macro=this.oldMacro}return this.recording=false}if(!this.$addCommandToMacro){this.$addCommandToMacro=function(i){this.macro.push([i.command,i.args])}.bind(this)}this.oldMacro=this.macro;this.macro=[];this.on("exec",this.$addCommandToMacro);return this.recording=true};this.replay=function(h){if(this.$inReplay||!this.macro){return}if(this.recording){return this.toggleRecording(h)}try{this.$inReplay=true;this.macro.forEach(function(i){if(typeof i=="string"){this.exec(i,h)}else{this.exec(i[0],h,i[1])}},this)}finally{this.$inReplay=false}};this.trimMacro=function(h){return h.map(function(i){if(typeof i[0]!="string"){i[0]=i[0].name}if(!i[1]){i=i[0]}return i})}}).call(g.prototype);a.CommandManager=g});ace.define("ace/commands/default_commands",["require","exports","module","ace/lib/lang","ace/config","ace/range"],function(c,a,d){var g=c("../lib/lang");var b=c("../config");var f=c("../range").Range;function e(h,i){return{win:h,mac:i}}a.commands=[{name:"showSettingsMenu",bindKey:e("Ctrl-,","Command-,"),exec:function(h){b.loadModule("ace/ext/settings_menu",function(i){i.init(h);h.showSettingsMenu()})},readOnly:true},{name:"goToNextError",bindKey:e("Alt-E","F4"),exec:function(h){b.loadModule("ace/ext/error_marker",function(i){i.showErrorMarker(h,1)})},scrollIntoView:"animate",readOnly:true},{name:"goToPreviousError",bindKey:e("Alt-Shift-E","Shift-F4"),exec:function(h){b.loadModule("ace/ext/error_marker",function(i){i.showErrorMarker(h,-1)})},scrollIntoView:"animate",readOnly:true},{name:"selectall",bindKey:e("Ctrl-A","Command-A"),exec:function(h){h.selectAll()},readOnly:true},{name:"centerselection",bindKey:e(null,"Ctrl-L"),exec:function(h){h.centerSelection()},readOnly:true},{name:"gotoline",bindKey:e("Ctrl-L","Command-L"),exec:function(i){var h=parseInt(prompt("Enter line number:"),10);if(!isNaN(h)){i.gotoLine(h)}},readOnly:true},{name:"fold",bindKey:e("Alt-L|Ctrl-F1","Command-Alt-L|Command-F1"),exec:function(h){h.session.toggleFold(false)},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:true},{name:"unfold",bindKey:e("Alt-Shift-L|Ctrl-Shift-F1","Command-Alt-Shift-L|Command-Shift-F1"),exec:function(h){h.session.toggleFold(true)},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:true},{name:"toggleFoldWidget",bindKey:e("F2","F2"),exec:function(h){h.session.toggleFoldWidget()},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:true},{name:"toggleParentFoldWidget",bindKey:e("Alt-F2","Alt-F2"),exec:function(h){h.session.toggleFoldWidget(true)},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:true},{name:"foldall",bindKey:e(null,"Ctrl-Command-Option-0"),exec:function(h){h.session.foldAll()},scrollIntoView:"center",readOnly:true},{name:"foldOther",bindKey:e("Alt-0","Command-Option-0"),exec:function(h){h.session.foldAll();h.session.unfold(h.selection.getAllRanges())},scrollIntoView:"center",readOnly:true},{name:"unfoldall",bindKey:e("Alt-Shift-0","Command-Option-Shift-0"),exec:function(h){h.session.unfold()},scrollIntoView:"center",readOnly:true},{name:"findnext",bindKey:e("Ctrl-K","Command-G"),exec:function(h){h.findNext()},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:true},{name:"findprevious",bindKey:e("Ctrl-Shift-K","Command-Shift-G"),exec:function(h){h.findPrevious()},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:true},{name:"selectOrFindNext",bindKey:e("Alt-K","Ctrl-G"),exec:function(h){if(h.selection.isEmpty()){h.selection.selectWord()}else{h.findNext()}},readOnly:true},{name:"selectOrFindPrevious",bindKey:e("Alt-Shift-K","Ctrl-Shift-G"),exec:function(h){if(h.selection.isEmpty()){h.selection.selectWord()}else{h.findPrevious()}},readOnly:true},{name:"find",bindKey:e("Ctrl-F","Command-F"),exec:function(h){b.loadModule("ace/ext/searchbox",function(i){i.Search(h)})},readOnly:true},{name:"overwrite",bindKey:"Insert",exec:function(h){h.toggleOverwrite()},readOnly:true},{name:"selecttostart",bindKey:e("Ctrl-Shift-Home","Command-Shift-Home|Command-Shift-Up"),exec:function(h){h.getSelection().selectFileStart()},multiSelectAction:"forEach",readOnly:true,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"gotostart",bindKey:e("Ctrl-Home","Command-Home|Command-Up"),exec:function(h){h.navigateFileStart()},multiSelectAction:"forEach",readOnly:true,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"selectup",bindKey:e("Shift-Up","Shift-Up|Ctrl-Shift-P"),exec:function(h){h.getSelection().selectUp()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:true},{name:"golineup",bindKey:e("Up","Up|Ctrl-P"),exec:function(i,h){i.navigateUp(h.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:true},{name:"selecttoend",bindKey:e("Ctrl-Shift-End","Command-Shift-End|Command-Shift-Down"),exec:function(h){h.getSelection().selectFileEnd()},multiSelectAction:"forEach",readOnly:true,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"gotoend",bindKey:e("Ctrl-End","Command-End|Command-Down"),exec:function(h){h.navigateFileEnd()},multiSelectAction:"forEach",readOnly:true,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"selectdown",bindKey:e("Shift-Down","Shift-Down|Ctrl-Shift-N"),exec:function(h){h.getSelection().selectDown()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:true},{name:"golinedown",bindKey:e("Down","Down|Ctrl-N"),exec:function(i,h){i.navigateDown(h.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:true},{name:"selectwordleft",bindKey:e("Ctrl-Shift-Left","Option-Shift-Left"),exec:function(h){h.getSelection().selectWordLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:true},{name:"gotowordleft",bindKey:e("Ctrl-Left","Option-Left"),exec:function(h){h.navigateWordLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:true},{name:"selecttolinestart",bindKey:e("Alt-Shift-Left","Command-Shift-Left|Ctrl-Shift-A"),exec:function(h){h.getSelection().selectLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:true},{name:"gotolinestart",bindKey:e("Alt-Left|Home","Command-Left|Home|Ctrl-A"),exec:function(h){h.navigateLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:true},{name:"selectleft",bindKey:e("Shift-Left","Shift-Left|Ctrl-Shift-B"),exec:function(h){h.getSelection().selectLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:true},{name:"gotoleft",bindKey:e("Left","Left|Ctrl-B"),exec:function(i,h){i.navigateLeft(h.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:true},{name:"selectwordright",bindKey:e("Ctrl-Shift-Right","Option-Shift-Right"),exec:function(h){h.getSelection().selectWordRight()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:true},{name:"gotowordright",bindKey:e("Ctrl-Right","Option-Right"),exec:function(h){h.navigateWordRight()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:true},{name:"selecttolineend",bindKey:e("Alt-Shift-Right","Command-Shift-Right|Shift-End|Ctrl-Shift-E"),exec:function(h){h.getSelection().selectLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:true},{name:"gotolineend",bindKey:e("Alt-Right|End","Command-Right|End|Ctrl-E"),exec:function(h){h.navigateLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:true},{name:"selectright",bindKey:e("Shift-Right","Shift-Right"),exec:function(h){h.getSelection().selectRight()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:true},{name:"gotoright",bindKey:e("Right","Right|Ctrl-F"),exec:function(i,h){i.navigateRight(h.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:true},{name:"selectpagedown",bindKey:"Shift-PageDown",exec:function(h){h.selectPageDown()},readOnly:true},{name:"pagedown",bindKey:e(null,"Option-PageDown"),exec:function(h){h.scrollPageDown()},readOnly:true},{name:"gotopagedown",bindKey:e("PageDown","PageDown|Ctrl-V"),exec:function(h){h.gotoPageDown()},readOnly:true},{name:"selectpageup",bindKey:"Shift-PageUp",exec:function(h){h.selectPageUp()},readOnly:true},{name:"pageup",bindKey:e(null,"Option-PageUp"),exec:function(h){h.scrollPageUp()},readOnly:true},{name:"gotopageup",bindKey:"PageUp",exec:function(h){h.gotoPageUp()},readOnly:true},{name:"scrollup",bindKey:e("Ctrl-Up",null),exec:function(h){h.renderer.scrollBy(0,-2*h.renderer.layerConfig.lineHeight)},readOnly:true},{name:"scrolldown",bindKey:e("Ctrl-Down",null),exec:function(h){h.renderer.scrollBy(0,2*h.renderer.layerConfig.lineHeight)},readOnly:true},{name:"selectlinestart",bindKey:"Shift-Home",exec:function(h){h.getSelection().selectLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:true},{name:"selectlineend",bindKey:"Shift-End",exec:function(h){h.getSelection().selectLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:true},{name:"togglerecording",bindKey:e("Ctrl-Alt-E","Command-Option-E"),exec:function(h){h.commands.toggleRecording(h)},readOnly:true},{name:"replaymacro",bindKey:e("Ctrl-Shift-E","Command-Shift-E"),exec:function(h){h.commands.replay(h)},readOnly:true},{name:"jumptomatching",bindKey:e("Ctrl-P","Ctrl-P"),exec:function(h){h.jumpToMatching()},multiSelectAction:"forEach",scrollIntoView:"animate",readOnly:true},{name:"selecttomatching",bindKey:e("Ctrl-Shift-P","Ctrl-Shift-P"),exec:function(h){h.jumpToMatching(true)},multiSelectAction:"forEach",scrollIntoView:"animate",readOnly:true},{name:"expandToMatching",bindKey:e("Ctrl-Shift-M","Ctrl-Shift-M"),exec:function(h){h.jumpToMatching(true,true)},multiSelectAction:"forEach",scrollIntoView:"animate",readOnly:true},{name:"passKeysToBrowser",bindKey:e(null,null),exec:function(){},passEvent:true,readOnly:true},{name:"copy",exec:function(h){},readOnly:true},{name:"cut",exec:function(i){var h=i.getSelectionRange();i._emit("cut",h);if(!i.selection.isEmpty()){i.session.remove(h);i.clearSelection()}},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"paste",exec:function(i,h){i.$handlePaste(h)},scrollIntoView:"cursor"},{name:"removeline",bindKey:e("Ctrl-D","Command-D"),exec:function(h){h.removeLines()},scrollIntoView:"cursor",multiSelectAction:"forEachLine"},{name:"duplicateSelection",bindKey:e("Ctrl-Shift-D","Command-Shift-D"),exec:function(h){h.duplicateSelection()},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"sortlines",bindKey:e("Ctrl-Alt-S","Command-Alt-S"),exec:function(h){h.sortLines()},scrollIntoView:"selection",multiSelectAction:"forEachLine"},{name:"togglecomment",bindKey:e("Ctrl-/","Command-/"),exec:function(h){h.toggleCommentLines()},multiSelectAction:"forEachLine",scrollIntoView:"selectionPart"},{name:"toggleBlockComment",bindKey:e("Ctrl-Shift-/","Command-Shift-/"),exec:function(h){h.toggleBlockComment()},multiSelectAction:"forEach",scrollIntoView:"selectionPart"},{name:"modifyNumberUp",bindKey:e("Ctrl-Shift-Up","Alt-Shift-Up"),exec:function(h){h.modifyNumber(1)},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"modifyNumberDown",bindKey:e("Ctrl-Shift-Down","Alt-Shift-Down"),exec:function(h){h.modifyNumber(-1)},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"replace",bindKey:e("Ctrl-H","Command-Option-F"),exec:function(h){b.loadModule("ace/ext/searchbox",function(i){i.Search(h,true)})}},{name:"undo",bindKey:e("Ctrl-Z","Command-Z"),exec:function(h){h.undo()}},{name:"redo",bindKey:e("Ctrl-Shift-Z|Ctrl-Y","Command-Shift-Z|Command-Y"),exec:function(h){h.redo()}},{name:"copylinesup",bindKey:e("Alt-Shift-Up","Command-Option-Up"),exec:function(h){h.copyLinesUp()},scrollIntoView:"cursor"},{name:"movelinesup",bindKey:e("Alt-Up","Option-Up"),exec:function(h){h.moveLinesUp()},scrollIntoView:"cursor"},{name:"copylinesdown",bindKey:e("Alt-Shift-Down","Command-Option-Down"),exec:function(h){h.copyLinesDown()},scrollIntoView:"cursor"},{name:"movelinesdown",bindKey:e("Alt-Down","Option-Down"),exec:function(h){h.moveLinesDown()},scrollIntoView:"cursor"},{name:"del",bindKey:e("Delete","Delete|Ctrl-D|Shift-Delete"),exec:function(h){h.remove("right")},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"backspace",bindKey:e("Shift-Backspace|Backspace","Ctrl-Backspace|Shift-Backspace|Backspace|Ctrl-H"),exec:function(h){h.remove("left")},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"cut_or_delete",bindKey:e("Shift-Delete",null),exec:function(h){if(h.selection.isEmpty()){h.remove("left")}else{return false}},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removetolinestart",bindKey:e("Alt-Backspace","Command-Backspace"),exec:function(h){h.removeToLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removetolineend",bindKey:e("Alt-Delete","Ctrl-K|Command-Delete"),exec:function(h){h.removeToLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removetolinestarthard",bindKey:e("Ctrl-Shift-Backspace",null),exec:function(i){var h=i.selection.getRange();h.start.column=0;i.session.remove(h)},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removetolineendhard",bindKey:e("Ctrl-Shift-Delete",null),exec:function(i){var h=i.selection.getRange();h.end.column=Number.MAX_VALUE;i.session.remove(h)},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removewordleft",bindKey:e("Ctrl-Backspace","Alt-Backspace|Ctrl-Alt-Backspace"),exec:function(h){h.removeWordLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removewordright",bindKey:e("Ctrl-Delete","Alt-Delete"),exec:function(h){h.removeWordRight()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"outdent",bindKey:e("Shift-Tab","Shift-Tab"),exec:function(h){h.blockOutdent()},multiSelectAction:"forEach",scrollIntoView:"selectionPart"},{name:"indent",bindKey:e("Tab","Tab"),exec:function(h){h.indent()},multiSelectAction:"forEach",scrollIntoView:"selectionPart"},{name:"blockoutdent",bindKey:e("Ctrl-[","Ctrl-["),exec:function(h){h.blockOutdent()},multiSelectAction:"forEachLine",scrollIntoView:"selectionPart"},{name:"blockindent",bindKey:e("Ctrl-]","Ctrl-]"),exec:function(h){h.blockIndent()},multiSelectAction:"forEachLine",scrollIntoView:"selectionPart"},{name:"insertstring",exec:function(h,i){h.insert(i)},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"inserttext",exec:function(i,h){i.insert(g.stringRepeat(h.text||"",h.times||1))},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"splitline",bindKey:e(null,"Ctrl-O"),exec:function(h){h.splitLine()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"transposeletters",bindKey:e("Alt-Shift-X","Ctrl-T"),exec:function(h){h.transposeLetters()},multiSelectAction:function(h){h.transposeSelections(1)},scrollIntoView:"cursor"},{name:"touppercase",bindKey:e("Ctrl-U","Ctrl-U"),exec:function(h){h.toUpperCase()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"tolowercase",bindKey:e("Ctrl-Shift-U","Ctrl-Shift-U"),exec:function(h){h.toLowerCase()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"expandtoline",bindKey:e("Ctrl-Shift-L","Command-Shift-L"),exec:function(i){var h=i.selection.getRange();h.start.column=h.end.column=0;h.end.row++;i.selection.setRange(h,false)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:true},{name:"joinlines",bindKey:e(null,null),exec:function(o){var q=o.selection.isBackwards();var p=q?o.selection.getSelectionLead():o.selection.getSelectionAnchor();var r=q?o.selection.getSelectionAnchor():o.selection.getSelectionLead();var m=o.session.doc.getLine(p.row).length;var k=o.session.doc.getTextRange(o.selection.getRange());var l=k.replace(/\n\s*/," ").length;var j=o.session.doc.getLine(p.row);for(var n=p.row+1;n<=r.row+1;n++){var h=g.stringTrimLeft(g.stringTrimRight(o.session.doc.getLine(n)));if(h.length!==0){h=" "+h}j+=h}if(r.row+1<(o.session.doc.getLength()-1)){j+=o.session.doc.getNewLineCharacter()}o.clearSelection();o.session.doc.replace(new f(p.row,0,r.row+2,0),j);if(l>0){o.selection.moveCursorTo(p.row,p.column);o.selection.selectTo(p.row,p.column+l)}else{m=o.session.doc.getLine(p.row).length>m?(m+1):m;o.selection.moveCursorTo(p.row,m)}},multiSelectAction:"forEach",readOnly:true},{name:"invertSelection",bindKey:e(null,null),exec:function(m){var k=m.session.doc.getLength()-1;var n=m.session.doc.getLine(k).length;var h=m.selection.rangeList.ranges;var j=[];if(h.length<1){h=[m.selection.getRange()]}for(var l=0;l<h.length;l++){if(l==(h.length-1)){if(!(h[l].end.row===k&&h[l].end.column===n)){j.push(new f(h[l].end.row,h[l].end.column,k,n))}}if(l===0){if(!(h[l].start.row===0&&h[l].start.column===0)){j.push(new f(0,0,h[l].start.row,h[l].start.column))}}else{j.push(new f(h[l-1].end.row,h[l-1].end.column,h[l].start.row,h[l].start.column))}}m.exitMultiSelectMode();m.clearSelection();for(var l=0;l<j.length;l++){m.selection.addRange(j[l],false)}},readOnly:true,scrollIntoView:"none"}]});ace.define("ace/editor",["require","exports","module","ace/lib/fixoldbrowsers","ace/lib/oop","ace/lib/dom","ace/lib/lang","ace/lib/useragent","ace/keyboard/textinput","ace/mouse/mouse_handler","ace/mouse/fold_handler","ace/keyboard/keybinding","ace/edit_session","ace/search","ace/range","ace/lib/event_emitter","ace/commands/command_manager","ace/commands/default_commands","ace/config","ace/token_iterator"],function(i,s,c){i("./lib/fixoldbrowsers");var o=i("./lib/oop");var n=i("./lib/dom");var t=i("./lib/lang");var m=i("./lib/useragent");var b=i("./keyboard/textinput").TextInput;var q=i("./mouse/mouse_handler").MouseHandler;var d=i("./mouse/fold_handler").FoldHandler;var g=i("./keyboard/keybinding").KeyBinding;var a=i("./edit_session").EditSession;var h=i("./search").Search;var p=i("./range").Range;var f=i("./lib/event_emitter").EventEmitter;var k=i("./commands/command_manager").CommandManager;var j=i("./commands/default_commands").commands;var r=i("./config");var e=i("./token_iterator").TokenIterator;var l=function(v,w){var u=v.getContainerElement();this.container=u;this.renderer=v;this.id="editor"+(++l.$uid);this.commands=new k(m.isMac?"mac":"win",j);if(typeof document=="object"){this.textInput=new b(v.getTextAreaContainer(),this);this.renderer.textarea=this.textInput.getElement();this.$mouseHandler=new q(this);new d(this)}this.keyBinding=new g(this);this.$blockScrolling=0;this.$search=new h().set({wrap:true});this.$historyTracker=this.$historyTracker.bind(this);this.commands.on("exec",this.$historyTracker);this.$initOperationListeners();this._$emitInputEvent=t.delayedCall(function(){this._signal("input",{});if(this.session&&this.session.bgTokenizer){this.session.bgTokenizer.scheduleStart()}}.bind(this));this.on("change",function(y,x){x._$emitInputEvent.schedule(31)});this.setSession(w||new a(""));r.resetOptions(this);r._signal("editor",this)};l.$uid=0;(function(){o.implement(this,f);this.$initOperationListeners=function(){function u(v){return v[v.length-1]}this.selections=[];this.commands.on("exec",this.startOperation.bind(this),true);this.commands.on("afterExec",this.endOperation.bind(this),true);this.$opResetTimer=t.delayedCall(this.endOperation.bind(this));this.on("change",function(){this.curOp||this.startOperation();this.curOp.docChanged=true}.bind(this),true);this.on("changeSelection",function(){this.curOp||this.startOperation();this.curOp.selectionChanged=true}.bind(this),true)};this.curOp=null;this.prevOp={};this.startOperation=function(u){if(this.curOp){if(!u||this.curOp.command){return}this.prevOp=this.curOp}if(!u){this.previousCommand=null;u={}}this.$opResetTimer.schedule();this.curOp={command:u.command||{},args:u.args,scrollTop:this.renderer.scrollTop};if(this.curOp.command.name&&this.curOp.command.scrollIntoView!==undefined){this.$blockScrolling++}};this.endOperation=function(w){if(this.curOp){if(w&&w.returnValue===false){return this.curOp=null}this._signal("beforeEndOperation");var x=this.curOp.command;if(x.name&&this.$blockScrolling>0){this.$blockScrolling--}var y=x&&x.scrollIntoView;if(y){switch(y){case"center-animate":y="animate";case"center":this.renderer.scrollCursorIntoView(null,0.5);break;case"animate":case"cursor":this.renderer.scrollCursorIntoView();break;case"selectionPart":var u=this.selection.getRange();var v=this.renderer.layerConfig;if(u.start.row>=v.lastRow||u.end.row<=v.firstRow){this.renderer.scrollSelectionIntoView(this.selection.anchor,this.selection.lead)}break;default:break}if(y=="animate"){this.renderer.animateScrolling(this.curOp.scrollTop)}}this.prevOp=this.curOp;this.curOp=null}};this.$mergeableCommands=["backspace","del","insertstring"];this.$historyTracker=function(w){if(!this.$mergeUndoDeltas){return}var v=this.prevOp;var u=this.$mergeableCommands;var y=v.command&&(w.command.name==v.command.name);if(w.command.name=="insertstring"){var x=w.args;if(this.mergeNextCommand===undefined){this.mergeNextCommand=true}y=y&&this.mergeNextCommand&&(!/\s/.test(x)||/\s/.test(v.args));this.mergeNextCommand=true}else{y=y&&u.indexOf(w.command.name)!==-1}if(this.$mergeUndoDeltas!="always"&&Date.now()-this.sequenceStartTime>2000){y=false}if(y){this.session.mergeUndoDeltas=true}else{if(u.indexOf(w.command.name)!==-1){this.sequenceStartTime=Date.now()}}};this.setKeyboardHandler=function(w,v){if(w&&typeof w==="string"){this.$keybindingId=w;var u=this;r.loadModule(["keybinding",w],function(x){if(u.$keybindingId==w){u.keyBinding.setKeyboardHandler(x&&x.handler)}v&&v()})}else{this.$keybindingId=null;this.keyBinding.setKeyboardHandler(w);v&&v()}};this.getKeyboardHandler=function(){return this.keyBinding.getKeyboardHandler()};this.setSession=function(w){if(this.session==w){return}if(this.curOp){this.endOperation()}this.curOp={};var v=this.session;if(v){this.session.off("change",this.$onDocumentChange);this.session.off("changeMode",this.$onChangeMode);this.session.off("tokenizerUpdate",this.$onTokenizerUpdate);this.session.off("changeTabSize",this.$onChangeTabSize);this.session.off("changeWrapLimit",this.$onChangeWrapLimit);this.session.off("changeWrapMode",this.$onChangeWrapMode);this.session.off("changeFold",this.$onChangeFold);this.session.off("changeFrontMarker",this.$onChangeFrontMarker);this.session.off("changeBackMarker",this.$onChangeBackMarker);this.session.off("changeBreakpoint",this.$onChangeBreakpoint);this.session.off("changeAnnotation",this.$onChangeAnnotation);this.session.off("changeOverwrite",this.$onCursorChange);this.session.off("changeScrollTop",this.$onScrollTopChange);this.session.off("changeScrollLeft",this.$onScrollLeftChange);var u=this.session.getSelection();u.off("changeCursor",this.$onCursorChange);u.off("changeSelection",this.$onSelectionChange)}this.session=w;if(w){this.$onDocumentChange=this.onDocumentChange.bind(this);w.on("change",this.$onDocumentChange);this.renderer.setSession(w);this.$onChangeMode=this.onChangeMode.bind(this);w.on("changeMode",this.$onChangeMode);this.$onTokenizerUpdate=this.onTokenizerUpdate.bind(this);w.on("tokenizerUpdate",this.$onTokenizerUpdate);this.$onChangeTabSize=this.renderer.onChangeTabSize.bind(this.renderer);w.on("changeTabSize",this.$onChangeTabSize);this.$onChangeWrapLimit=this.onChangeWrapLimit.bind(this);w.on("changeWrapLimit",this.$onChangeWrapLimit);this.$onChangeWrapMode=this.onChangeWrapMode.bind(this);w.on("changeWrapMode",this.$onChangeWrapMode);this.$onChangeFold=this.onChangeFold.bind(this);w.on("changeFold",this.$onChangeFold);this.$onChangeFrontMarker=this.onChangeFrontMarker.bind(this);this.session.on("changeFrontMarker",this.$onChangeFrontMarker);this.$onChangeBackMarker=this.onChangeBackMarker.bind(this);this.session.on("changeBackMarker",this.$onChangeBackMarker);this.$onChangeBreakpoint=this.onChangeBreakpoint.bind(this);this.session.on("changeBreakpoint",this.$onChangeBreakpoint);this.$onChangeAnnotation=this.onChangeAnnotation.bind(this);this.session.on("changeAnnotation",this.$onChangeAnnotation);this.$onCursorChange=this.onCursorChange.bind(this);this.session.on("changeOverwrite",this.$onCursorChange);this.$onScrollTopChange=this.onScrollTopChange.bind(this);this.session.on("changeScrollTop",this.$onScrollTopChange);this.$onScrollLeftChange=this.onScrollLeftChange.bind(this);this.session.on("changeScrollLeft",this.$onScrollLeftChange);this.selection=w.getSelection();this.selection.on("changeCursor",this.$onCursorChange);this.$onSelectionChange=this.onSelectionChange.bind(this);this.selection.on("changeSelection",this.$onSelectionChange);this.onChangeMode();this.$blockScrolling+=1;this.onCursorChange();this.$blockScrolling-=1;this.onScrollTopChange();this.onScrollLeftChange();this.onSelectionChange();this.onChangeFrontMarker();this.onChangeBackMarker();this.onChangeBreakpoint();this.onChangeAnnotation();this.session.getUseWrapMode()&&this.renderer.adjustWrapLimit();this.renderer.updateFull()}else{this.selection=null;this.renderer.setSession(w)}this._signal("changeSession",{session:w,oldSession:v});this.curOp=null;v&&v._signal("changeEditor",{oldEditor:this});w&&w._signal("changeEditor",{editor:this});if(w&&w.bgTokenizer){w.bgTokenizer.scheduleStart()}};this.getSession=function(){return this.session};this.setValue=function(u,v){this.session.doc.setValue(u);if(!v){this.selectAll()}else{if(v==1){this.navigateFileEnd()}else{if(v==-1){this.navigateFileStart()}}}return u};this.getValue=function(){return this.session.getValue()};this.getSelection=function(){return this.selection};this.resize=function(u){this.renderer.onResize(u)};this.setTheme=function(v,u){this.renderer.setTheme(v,u)};this.getTheme=function(){return this.renderer.getTheme()};this.setStyle=function(u){this.renderer.setStyle(u)};this.unsetStyle=function(u){this.renderer.unsetStyle(u)};this.getFontSize=function(){return this.getOption("fontSize")||n.computedStyle(this.container,"fontSize")};this.setFontSize=function(u){this.setOption("fontSize",u)};this.$highlightBrackets=function(){if(this.session.$bracketHighlight){this.session.removeMarker(this.session.$bracketHighlight);this.session.$bracketHighlight=null}if(this.$highlightPending){return}var u=this;this.$highlightPending=true;setTimeout(function(){u.$highlightPending=false;var w=u.session;if(!w||!w.bgTokenizer){return}var x=w.findMatchingBracket(u.getCursorPosition());if(x){var v=new p(x.row,x.column,x.row,x.column+1)}else{if(w.$mode.getMatching){var v=w.$mode.getMatching(u.session)}}if(v){w.$bracketHighlight=w.addMarker(v,"ace_bracket","text")}},50)};this.$highlightTags=function(){if(this.$highlightTagPending){return}var u=this;this.$highlightTagPending=true;setTimeout(function(){u.$highlightTagPending=false;var C=u.session;if(!C||!C.bgTokenizer){return}var D=u.getCursorPosition();var B=new e(u.session,D.row,D.column);var y=B.getCurrentToken();if(!y||!/\b(?:tag-open|tag-name)/.test(y.type)){C.removeMarker(C.$tagHighlight);C.$tagHighlight=null;return}if(y.type.indexOf("tag-open")!=-1){y=B.stepForward();if(!y){return}}var F=y.value;var z=0;var v=B.stepBackward();if(v.value=="<"){do{v=y;y=B.stepForward();if(y&&y.value===F&&y.type.indexOf("tag-name")!==-1){if(v.value==="<"){z++}else{if(v.value==="</"){z--}}}}while(y&&z>=0)}else{do{y=v;v=B.stepBackward();if(y&&y.value===F&&y.type.indexOf("tag-name")!==-1){if(v.value==="<"){z++}else{if(v.value==="</"){z--}}}}while(v&&z<=0);B.stepForward()}if(!y){C.removeMarker(C.$tagHighlight);C.$tagHighlight=null;return}var E=B.getCurrentTokenRow();var x=B.getCurrentTokenColumn();var A=new p(E,x,E,x+y.value.length);var w=C.$backMarkers[C.$tagHighlight];if(C.$tagHighlight&&w!=undefined&&A.compareRange(w.range)!==0){C.removeMarker(C.$tagHighlight);C.$tagHighlight=null}if(A&&!C.$tagHighlight){C.$tagHighlight=C.addMarker(A,"ace_bracket","text")}},50)};this.focus=function(){var u=this;setTimeout(function(){u.textInput.focus()});this.textInput.focus()};this.isFocused=function(){return this.textInput.isFocused()};this.blur=function(){this.textInput.blur()};this.onFocus=function(u){if(this.$isFocused){return}this.$isFocused=true;this.renderer.showCursor();this.renderer.visualizeFocus();this._emit("focus",u)};this.onBlur=function(u){if(!this.$isFocused){return}this.$isFocused=false;this.renderer.hideCursor();this.renderer.visualizeBlur();this._emit("blur",u)};this.$cursorChange=function(){this.renderer.updateCursor()};this.onDocumentChange=function(w){var u=this.session.$useWrapMode;var v=(w.start.row==w.end.row?w.end.row:Infinity);this.renderer.updateLines(w.start.row,v,u);this._signal("change",w);this.$cursorChange();this.$updateHighlightActiveLine()};this.onTokenizerUpdate=function(v){var u=v.data;this.renderer.updateLines(u.first,u.last)};this.onScrollTopChange=function(){this.renderer.scrollToY(this.session.getScrollTop())};this.onScrollLeftChange=function(){this.renderer.scrollToX(this.session.getScrollLeft())};this.onCursorChange=function(){this.$cursorChange();if(!this.$blockScrolling){r.warn("Automatically scrolling cursor into view after selection change","this will be disabled in the next version","set editor.$blockScrolling = Infinity to disable this message");this.renderer.scrollCursorIntoView()}this.$highlightBrackets();this.$highlightTags();this.$updateHighlightActiveLine();this._signal("changeSelection")};this.$updateHighlightActiveLine=function(){var w=this.getSession();var v;if(this.$highlightActiveLine){if((this.$selectionStyle!="line"||!this.selection.isMultiLine())){v=this.getCursorPosition()}if(this.renderer.$maxLines&&this.session.getLength()===1&&!(this.renderer.$minLines>1)){v=false}}if(w.$highlightLineMarker&&!v){w.removeMarker(w.$highlightLineMarker.id);w.$highlightLineMarker=null}else{if(!w.$highlightLineMarker&&v){var u=new p(v.row,v.column,v.row,Infinity);u.id=w.addMarker(u,"ace_active-line","screenLine");w.$highlightLineMarker=u}else{if(v){w.$highlightLineMarker.start.row=v.row;w.$highlightLineMarker.end.row=v.row;w.$highlightLineMarker.start.column=v.column;w._signal("changeBackMarker")}}}};this.onSelectionChange=function(y){var x=this.session;if(x.$selectionMarker){x.removeMarker(x.$selectionMarker)}x.$selectionMarker=null;if(!this.selection.isEmpty()){var u=this.selection.getRange();var w=this.getSelectionStyle();x.$selectionMarker=x.addMarker(u,"ace_selection",w)}else{this.$updateHighlightActiveLine()}var v=this.$highlightSelectedWord&&this.$getSelectionHighLightRegexp();this.session.highlight(v);this._signal("changeSelection")};this.$getSelectionHighLightRegexp=function(){var A=this.session;var x=this.getSelectionRange();if(x.isEmpty()||x.isMultiLine()){return}var B=x.start.column-1;var z=x.end.column+1;var v=A.getLine(x.start.row);var u=v.length;var y=v.substring(Math.max(B,0),Math.min(z,u));if((B>=0&&/^[\w\d]/.test(y))||(z<=u&&/[\w\d]$/.test(y))){return}y=v.substring(x.start.column,x.end.column);if(!/^[\w\d]+$/.test(y)){return}var w=this.$search.$assembleRegExp({wholeWord:true,caseSensitive:true,needle:y});return w};this.onChangeFrontMarker=function(){this.renderer.updateFrontMarkers()};this.onChangeBackMarker=function(){this.renderer.updateBackMarkers()};this.onChangeBreakpoint=function(){this.renderer.updateBreakpoints()};this.onChangeAnnotation=function(){this.renderer.setAnnotations(this.session.getAnnotations())};this.onChangeMode=function(u){this.renderer.updateText();this._emit("changeMode",u)};this.onChangeWrapLimit=function(){this.renderer.updateFull()};this.onChangeWrapMode=function(){this.renderer.onResize(true)};this.onChangeFold=function(){this.$updateHighlightActiveLine();this.renderer.updateFull()};this.getSelectedText=function(){return this.session.getTextRange(this.getSelectionRange())};this.getCopyText=function(){var u=this.getSelectedText();this._signal("copy",u);return u};this.onCopy=function(){this.commands.exec("copy",this)};this.onCut=function(){this.commands.exec("cut",this)};this.onPaste=function(w,u){var v={text:w,event:u};this.commands.exec("paste",this,v)};this.$handlePaste=function(y){if(typeof y=="string"){y={text:y}}this._signal("paste",y);var z=y.text;if(!this.inMultiSelectMode||this.inVirtualSelectionMode){this.insert(z)}else{var v=z.split(/\r\n|\r|\n/);var u=this.selection.rangeList.ranges;if(v.length>u.length||v.length<2||!v[1]){return this.commands.exec("insertstring",this,z)}for(var x=u.length;x--;){var w=u[x];if(!w.isEmpty()){this.session.remove(w)}this.session.insert(w.start,v[x])}}};this.execCommand=function(v,u){return this.commands.exec(v,this,u)};this.insert=function(E,C){var D=this.session;var A=D.getMode();var F=this.getCursorPosition();if(this.getBehavioursEnabled()&&!C){var w=A.transformAction(D.getState(F.row),"insertion",this,D,E);if(w){if(E!==w.text){this.session.mergeUndoDeltas=false;this.$mergeNextCommand=false}E=w.text}}if(E=="\t"){E=this.session.getTabString()}if(!this.selection.isEmpty()){var z=this.getSelectionRange();F=this.session.remove(z);this.clearSelection()}else{if(this.session.getOverwrite()&&E.indexOf("\n")==-1){var z=new p.fromPoints(F,F);z.end.column+=E.length;this.session.remove(z)}}if(E=="\n"||E=="\r\n"){var H=D.getLine(F.row);if(F.column>H.search(/\S|$/)){var B=H.substr(F.column).search(/\S|$/);D.doc.removeInLine(F.row,F.column,F.column+B)}}this.clearSelection();var v=F.column;var y=D.getState(F.row);var H=D.getLine(F.row);var G=A.checkOutdent(y,H,E);var x=D.insert(F,E);if(w&&w.selection){if(w.selection.length==2){this.selection.setSelectionRange(new p(F.row,v+w.selection[0],F.row,v+w.selection[1]))}else{this.selection.setSelectionRange(new p(F.row+w.selection[0],w.selection[1],F.row+w.selection[2],w.selection[3]))}}if(D.getDocument().isNewLine(E)){var u=A.getNextLineIndent(y,H.slice(0,F.column),D.getTabString());D.insert({row:F.row+1,column:0},u)}if(G){A.autoOutdent(y,D,F.row)
+}if(J){while(H>F&&I[H]<v){H--}while(H>F&&I[H]==s){H--}}else{while(H>F&&I[H]<t){H--}}if(H>F){if(y==D-G){break}y=D-G;if(I[H]==w||I[H-1]==w){L(H++)}else{L(++H)}continue}H=G+N;if(I[H]==w){H--}L(H-A)}return K};this.$getDisplayTokens=function(C,B){var y=[];var A;B=B||0;for(var z=0;z<C.length;z++){var E=C.charCodeAt(z);if(E==9){A=this.getScreenTabSize(y.length+B);y.push(u);for(var D=1;D<A;D++){y.push(q)}}else{if(E==32){y.push(t)}else{if((E>39&&E<48)||(E>57&&E<64)){y.push(s)}else{if(E>=4352&&r(E)){y.push(t,w)}else{y.push(x)}}}}}return y};this.$getStringScreenWidth=function(A,C,y){if(C==0){return[0,0]}if(C==null){C=Infinity}y=y||0;var B,z;for(z=0;z<A.length;z++){B=A.charCodeAt(z);if(B==9){y+=this.getScreenTabSize(y)}else{if(B>=4352&&r(B)){y+=2}else{y+=1}}if(y>C){break}}return[y,z]};this.lineWidgets=null;this.getRowLength=function(z){if(this.lineWidgets){var y=this.lineWidgets[z]&&this.lineWidgets[z].rowCount||0}else{y=0}if(!this.$useWrapMode||!this.$wrapData[z]){return 1+y}else{return this.$wrapData[z].length+1+y}};this.getRowLineCount=function(y){if(!this.$useWrapMode||!this.$wrapData[y]){return 1}else{return this.$wrapData[y].length+1}};this.getRowWrapIndent=function(y){if(this.$useWrapMode){var A=this.screenToDocumentPosition(y,Number.MAX_VALUE);var z=this.$wrapData[A.row];return z.length&&z[0]<A.column?z.indent:0}else{return 0}};this.getScreenLastRowColumn=function(y){var z=this.screenToDocumentPosition(y,Number.MAX_VALUE);return this.documentToScreenColumn(z.row,z.column)};this.getDocumentLastRowColumn=function(y,A){var z=this.documentToScreenRow(y,A);return this.getScreenLastRowColumn(z)};this.getDocumentLastRowColumnPosition=function(y,A){var z=this.documentToScreenRow(y,A);return this.screenToDocumentPosition(z,Number.MAX_VALUE/10)};this.getRowSplitData=function(y){if(!this.$useWrapMode){return undefined}else{return this.$wrapData[y]}};this.getScreenTabSize=function(y){return this.$tabSize-y%this.$tabSize};this.screenToDocumentRow=function(z,y){return this.screenToDocumentPosition(z,y).row};this.screenToDocumentColumn=function(z,y){return this.screenToDocumentPosition(z,y).column};this.screenToDocumentPosition=function(G,C,O){if(G<0){return{row:0,column:0}}var E;var y=0;var M=0;var z;var B=0;var K=0;var I=this.$screenRowCache;var N=this.$getRowCacheIndex(I,G);var L=I.length;if(L&&N>=0){var B=I[N];var y=this.$docRowCache[N];var F=G>I[L-1]}else{var F=!L}var J=this.getLength()-1;var P=this.getNextFoldLine(y);var A=P?P.start.row:Infinity;while(B<=G){K=this.getRowLength(y);if(B+K>G||y>=J){break}else{B+=K;y++;if(y>A){y=P.end.row+1;P=this.getNextFoldLine(y,P);A=P?P.start.row:Infinity}}if(F){this.$docRowCache.push(y);this.$screenRowCache.push(B)}}if(P&&P.start.row<=y){E=this.getFoldDisplayLine(P);y=P.start.row}else{if(B+K<=G||y>J){return{row:J,column:this.getLine(J).length}}else{E=this.getLine(y);P=null}}var H=0,Q=Math.floor(G-B);if(this.$useWrapMode){var D=this.$wrapData[y];if(D){z=D[Q];if(Q>0&&D.length){H=D.indent;M=D[Q-1]||D[D.length-1];E=E.substring(M)}}}if(O!==undefined&&this.$bidiHandler.isBidiRow(B+Q,y,Q)){C=this.$bidiHandler.offsetToCol(O)}M+=this.$getStringScreenWidth(E,C-H)[1];if(this.$useWrapMode&&M>=z){M=z-1}if(P){return P.idxToPosition(M)}return{row:y,column:M}};this.documentToScreenPosition=function(y,M){if(typeof M==="undefined"){var B=this.$clipPositionToDocument(y.row,y.column)}else{B=this.$clipPositionToDocument(y,M)}y=B.row;M=B.column;var G=0;var I=null;var A=null;A=this.getFoldAt(y,M,1);if(A){y=A.start.row;M=A.start.column}var K,C=0;var J=this.$docRowCache;var N=this.$getRowCacheIndex(J,y);var L=J.length;if(L&&N>=0){var C=J[N];var G=this.$screenRowCache[N];var F=y>J[L-1]}else{var F=!L}var O=this.getNextFoldLine(C);var z=O?O.start.row:Infinity;while(C<y){if(C>=z){K=O.end.row+1;if(K>y){break}O=this.getNextFoldLine(K,O);z=O?O.start.row:Infinity}else{K=C+1}G+=this.getRowLength(C);C=K;if(F){this.$docRowCache.push(C);this.$screenRowCache.push(G)}}var E="";if(O&&C>=z){E=this.getFoldDisplayLine(O,y,M);I=O.start.row}else{E=this.getLine(y).substring(0,M);I=y}var H=0;if(this.$useWrapMode){var P=this.$wrapData[I];if(P){var D=0;while(E.length>=P[D]){G++;D++}E=E.substring(P[D-1]||0,E.length);H=D>0?P.indent:0}}return{row:G,column:H+this.$getStringScreenWidth(E)[0]}};this.documentToScreenColumn=function(z,y){return this.documentToScreenPosition(z,y).column};this.documentToScreenRow=function(y,z){return this.documentToScreenPosition(y,z).row};this.getScreenLength=function(){var E=0;var z=null;if(!this.$useWrapMode){E=this.getLength();var B=this.$foldData;for(var A=0;A<B.length;A++){z=B[A];E-=z.end.row-z.start.row}}else{var C=this.$wrapData.length;var F=0,A=0;var z=this.$foldData[A++];var y=z?z.start.row:Infinity;while(F<C){var D=this.$wrapData[F];E+=D?D.length+1:1;F++;if(F>y){F=z.end.row+1;z=this.$foldData[A++];y=z?z.start.row:Infinity}}}if(this.lineWidgets){E+=this.$getWidgetScreenLength()}return E};this.$setFontMetrics=function(y){if(!this.$enableVarChar){return}this.$getStringScreenWidth=function(B,D,z){if(D===0){return[0,0]}if(!D){D=Infinity}z=z||0;var C,A;for(A=0;A<B.length;A++){C=B.charAt(A);if(C==="\t"){z+=this.getScreenTabSize(z)}else{z+=y.getCharacterWidth(C)}if(z>D){break}}return[z,A]}};this.destroy=function(){if(this.bgTokenizer){this.bgTokenizer.setDocument(null);this.bgTokenizer=null}this.$stopWorker()};this.isFullWidth=r;function r(y){if(y<4352){return false}return y>=4352&&y<=4447||y>=4515&&y<=4519||y>=4602&&y<=4607||y>=9001&&y<=9002||y>=11904&&y<=11929||y>=11931&&y<=12019||y>=12032&&y<=12245||y>=12272&&y<=12283||y>=12288&&y<=12350||y>=12353&&y<=12438||y>=12441&&y<=12543||y>=12549&&y<=12589||y>=12593&&y<=12686||y>=12688&&y<=12730||y>=12736&&y<=12771||y>=12784&&y<=12830||y>=12832&&y<=12871||y>=12880&&y<=13054||y>=13056&&y<=19903||y>=19968&&y<=42124||y>=42128&&y<=42182||y>=43360&&y<=43388||y>=44032&&y<=55203||y>=55216&&y<=55238||y>=55243&&y<=55291||y>=63744&&y<=64255||y>=65040&&y<=65049||y>=65072&&y<=65106||y>=65108&&y<=65126||y>=65128&&y<=65131||y>=65281&&y<=65376||y>=65504&&y<=65510}}).call(a.prototype);g("./edit_session/folding").Folding.call(a.prototype);g("./edit_session/bracket_match").BracketMatch.call(a.prototype);e.defineOptions(a.prototype,"session",{wrap:{set:function(q){if(!q||q=="off"){q=false}else{if(q=="free"){q=true}else{if(q=="printMargin"){q=-1}else{if(typeof q=="string"){q=parseInt(q,10)||false}}}}if(this.$wrap==q){return}this.$wrap=q;if(!q){this.setUseWrapMode(false)}else{var p=typeof q=="number"?q:null;this.setWrapLimitRange(p,p);this.setUseWrapMode(true)}},get:function(){if(this.getUseWrapMode()){if(this.$wrap==-1){return"printMargin"}if(!this.getWrapLimitRange().min){return"free"}return this.$wrap}return"off"},handlesSet:true},wrapMethod:{set:function(p){p=p=="auto"?this.$mode.type!="text":p!="text";if(p!=this.$wrapAsCode){this.$wrapAsCode=p;if(this.$useWrapMode){this.$modified=true;this.$resetRowCache(0);this.$updateWrapData(0,this.getLength()-1)}}},initialValue:"auto"},indentedSoftWrap:{initialValue:false},firstLineNumber:{set:function(){this._signal("changeBreakpoint")},initialValue:1},useWorker:{set:function(p){this.$useWorker=p;this.$stopWorker();if(p){this.$startWorker()}},initialValue:true},useSoftTabs:{initialValue:true},tabSize:{set:function(p){if(isNaN(p)||this.$tabSize===p){return}this.$modified=true;this.$rowLengthCache=[];this.$tabSize=p;this._signal("changeTabSize")},initialValue:4,handlesSet:true},navigateWithinSoftTabs:{initialValue:false},overwrite:{set:function(p){this._signal("changeOverwrite")},initialValue:false},newLineMode:{set:function(p){this.doc.setNewLineMode(p)},get:function(){return this.doc.getNewLineMode()},handlesSet:true},mode:{set:function(p){this.setMode(p)},get:function(){return this.$modeId}}});i.EditSession=a});ace.define("ace/search",["require","exports","module","ace/lib/lang","ace/lib/oop","ace/range"],function(c,a,d){var h=c("./lib/lang");var f=c("./lib/oop");var g=c("./range").Range;var b=function(){this.$options={}};(function(){this.set=function(i){f.mixin(this.$options,i);return this};this.getOptions=function(){return h.copyObject(this.$options)};this.setOptions=function(i){this.$options=i};this.find=function(l){var j=this.$options;var k=this.$matchIterator(l,j);if(!k){return false}var i=null;k.forEach(function(n,o,p,m){i=new g(n,o,p,m);if(o==m&&j.start&&j.start.start&&j.skipCurrent!=false&&i.isEqual(j.start)){i=null;return false}return true});return i};this.findAll=function(l){var r=this.$options;if(!r.needle){return[]}this.$assembleRegExp(r);var w=r.range;var k=w?l.getLines(w.start.row,w.end.row):l.doc.getAllLines();var p=[];var y=r.re;if(r.$isMultiLine){var D=y.length;var z=k.length-D;var x;outer:for(var t=y.offset||0;t<=z;t++){for(var B=0;B<D;B++){if(k[t+B].search(y[B])==-1){continue outer}}var A=k[t];var v=k[t+D-1];var s=A.length-A.match(y[0])[0].length;var o=v.match(y[D-1])[0].length;if(x&&x.end.row===t&&x.end.column>s){continue}p.push(x=new g(t,s,t+D-1,o));if(D>2){t=t+D-2}}}else{for(var C=0;C<k.length;C++){var m=h.getMatchOffsets(k[C],y);for(var B=0;B<m.length;B++){var u=m[B];p.push(new g(C,u.offset,C,u.offset+u.length))}}}if(w){var q=w.start.column;var n=w.start.column;var C=0,B=p.length-1;while(C<B&&p[C].start.column<q&&p[C].start.row==w.start.row){C++}while(C<B&&p[B].end.column>n&&p[B].end.row==w.end.row){B--}p=p.slice(C,B+1);for(C=0,B=p.length;C<B;C++){p[C].start.row+=w.start.row;p[C].end.row+=w.start.row}}return p};this.replace=function(j,p){var l=this.$options;var o=this.$assembleRegExp(l);if(l.$isMultiLine){return p}if(!o){return}var k=o.exec(j);if(!k||k[0].length!=j.length){return null}p=j.replace(o,p);if(l.preserveCase){p=p.split("");for(var m=Math.min(j.length,j.length);m--;){var n=j[m];if(n&&n.toLowerCase()!=n){p[m]=p[m].toUpperCase()}else{p[m]=p[m].toLowerCase()}}p=p.join("")}return p};this.$assembleRegExp=function(j,n){if(j.needle instanceof RegExp){return j.re=j.needle}var m=j.needle;if(!j.needle){return j.re=false}if(!j.regExp){m=h.escapeRegExp(m)}if(j.wholeWord){m=e(m,j)}var i=j.caseSensitive?"gm":"gmi";j.$isMultiLine=!n&&/[\n\r]/.test(m);if(j.$isMultiLine){return j.re=this.$assembleMultilineRegExp(m,i)}try{var k=new RegExp(m,i)}catch(l){k=false}return j.re=k};this.$assembleMultilineRegExp=function(o,j){var n=o.replace(/\r\n|\r|\n/g,"$\n^").split("\n");var l=[];for(var k=0;k<n.length;k++){try{l.push(new RegExp(n[k],j))}catch(m){return false}}return l};this.$matchIterator=function(p,t){var r=this.$assembleRegExp(t);if(!r){return false}var q=t.backwards==true;var j=t.skipCurrent!=false;var l=t.range;var i=t.start;if(!i){i=l?l[q?"end":"start"]:p.selection.getRange()}if(i.start){i=i[j!=q?"end":"start"]}var k=l?l.start.row:0;var s=l?l.end.row:p.getLength()-1;if(q){var n=function(v){var u=i.row;if(o(u,i.column,v)){return}for(u--;u>=k;u--){if(o(u,Number.MAX_VALUE,v)){return}}if(t.wrap==false){return}for(u=s,k=i.row;u>=k;u--){if(o(u,Number.MAX_VALUE,v)){return}}}}else{var n=function(v){var u=i.row;if(o(u,i.column,v)){return}for(u=u+1;u<=s;u++){if(o(u,0,v)){return}}if(t.wrap==false){return}for(u=k,s=i.row;u<=s;u++){if(o(u,0,v)){return}}}}if(t.$isMultiLine){var m=r.length;var o=function(A,z,B){var v=q?A-m+1:A;if(v<0){return}var u=p.getLine(v);var y=u.search(r[0]);if(!q&&y<z||y===-1){return}for(var w=1;w<m;w++){u=p.getLine(v+w);if(u.search(r[w])==-1){return}}var x=u.match(r[m-1])[0].length;if(q&&x>z){return}if(B(v,y,v+m-1,x)){return true}}}else{if(q){var o=function(C,y,B){var D=p.getLine(C);var z=[];var v,A=0;r.lastIndex=0;while((v=r.exec(D))){var u=v[0].length;A=v.index;if(!u){if(A>=D.length){break}r.lastIndex=A+=1}if(v.index+u>y){break}z.push(v.index,u)}for(var x=z.length-1;x>=0;x-=2){var w=z[x-1];var u=z[x];if(B(C,w,C,w+u)){return true}}}}else{var o=function(z,y,A){var v=p.getLine(z);var u;var x=y;r.lastIndex=y;while((u=r.exec(v))){var w=u[0].length;x=u.index;if(A(z,x,z,x+w)){return true}if(!w){r.lastIndex=x+=1;if(x>=v.length){return false}}}}}}return{forEach:n}}}).call(b.prototype);function e(k,j){function i(l){if(/\w/.test(l)||j.regExp){return"\\b"}return""}return i(k[0])+k+i(k[k.length-1])}a.Search=b});ace.define("ace/keyboard/hash_handler",["require","exports","module","ace/lib/keys","ace/lib/useragent"],function(e,c,f){var d=e("../lib/keys");var b=e("../lib/useragent");var a=d.KEY_MODS;function g(j,i){this.platform=i||(b.isMac?"mac":"win");this.commands={};this.commandKeyBinding={};this.addCommands(j);this.$singleCommand=true}function h(j,i){g.call(this,j,i);this.$singleCommand=false}h.prototype=g.prototype;(function(){this.addCommand=function(k){if(this.commands[k.name]){this.removeCommand(k)}this.commands[k.name]=k;if(k.bindKey){this._buildKeyHash(k)}};this.removeCommand=function(o,m){var k=o&&(typeof o==="string"?o:o.name);o=this.commands[k];if(!m){delete this.commands[k]}var n=this.commandKeyBinding;for(var q in n){var p=n[q];if(p==o){delete n[q]}else{if(Array.isArray(p)){var l=p.indexOf(o);if(l!=-1){p.splice(l,1);if(p.length==1){n[q]=p[0]}}}}}};this.bindKey=function(l,m,k){if(typeof l=="object"&&l){if(k==undefined){k=l.position}l=l[this.platform]}if(!l){return}if(typeof m=="function"){return this.addCommand({exec:m,bindKey:l,name:m.name||l})}l.split("|").forEach(function(o){var n="";if(o.indexOf(" ")!=-1){var p=o.split(/\s+/);o=p.pop();p.forEach(function(s){var t=this.parseKeys(s);var u=a[t.hashId]+t.key;n+=(n?" ":"")+u;this._addCommandToBinding(n,"chainKeys")},this);n+=" "}var q=this.parseKeys(o);var r=a[q.hashId]+q.key;this._addCommandToBinding(n+r,m,k)},this)};function j(k){return typeof k=="object"&&k.bindKey&&k.bindKey.position||(k.isDefault?-100:0)}this._addCommandToBinding=function(r,q,m){var p=this.commandKeyBinding,o;if(!q){delete p[r]}else{if(!p[r]||this.$singleCommand){p[r]=q}else{if(!Array.isArray(p[r])){p[r]=[p[r]]}else{if((o=p[r].indexOf(q))!=-1){p[r].splice(o,1)}}if(typeof m!="number"){m=j(q)}var l=p[r];for(o=0;o<l.length;o++){var k=l[o];var n=j(k);if(n>m){break}}l.splice(o,0,q)}}};this.addCommands=function(k){k&&Object.keys(k).forEach(function(l){var m=k[l];if(!m){return}if(typeof m==="string"){return this.bindKey(m,l)}if(typeof m==="function"){m={exec:m}}if(typeof m!=="object"){return}if(!m.name){m.name=l}this.addCommand(m)},this)};this.removeCommands=function(k){Object.keys(k).forEach(function(l){this.removeCommand(k[l])},this)};this.bindKeys=function(k){Object.keys(k).forEach(function(l){this.bindKey(l,k[l])},this)};this._buildKeyHash=function(k){this.bindKey(k.bindKey,k)};this.parseKeys=function(o){var q=o.toLowerCase().split(/[\-\+]([\-\+])?/).filter(function(r){return r});var m=q.pop();var p=d[m];if(d.FUNCTION_KEYS[p]){m=d.FUNCTION_KEYS[p].toLowerCase()}else{if(!q.length){return{key:m,hashId:-1}}else{if(q.length==1&&q[0]=="shift"){return{key:m.toUpperCase(),hashId:-1}}}}var n=0;for(var l=q.length;l--;){var k=d.KEY_MODS[q[l]];if(k==null){if(typeof console!="undefined"){console.error("invalid modifier "+q[l]+" in "+o)}return false}n|=k}return{key:m,hashId:n}};this.findKeyCommand=function i(m,k){var l=a[m]+k;return this.commandKeyBinding[l]};this.handleKeyboard=function(n,m,k,o){if(o<0){return}var l=a[m]+k;var p=this.commandKeyBinding[l];if(n.$keyChain){n.$keyChain+=" "+l;p=this.commandKeyBinding[n.$keyChain]||p}if(p){if(p=="chainKeys"||p[p.length-1]=="chainKeys"){n.$keyChain=n.$keyChain||l;return{command:"null"}}}if(n.$keyChain){if((!m||m==4)&&k.length==1){n.$keyChain=n.$keyChain.slice(0,-l.length-1)}else{if(m==-1||o>0){n.$keyChain=""}}}return{command:p}};this.getStatusText=function(k,l){return l.$keyChain||""}}).call(g.prototype);c.HashHandler=g;c.MultiHashHandler=h});ace.define("ace/commands/command_manager",["require","exports","module","ace/lib/oop","ace/keyboard/hash_handler","ace/lib/event_emitter"],function(b,a,c){var f=b("../lib/oop");var e=b("../keyboard/hash_handler").MultiHashHandler;var d=b("../lib/event_emitter").EventEmitter;var g=function(i,h){e.call(this,h,i);this.byName=this.commands;this.setDefaultHandler("exec",function(j){return j.command.exec(j.editor,j.args||{})})};f.inherits(g,e);(function(){f.implement(this,d);this.exec=function(m,k,h){if(Array.isArray(m)){for(var j=m.length;j--;){if(this.exec(m[j],k,h)){return true}}return false}if(typeof m==="string"){m=this.commands[m]}if(!m){return false}if(k&&k.$readOnly&&!m.readOnly){return false}if(m.isAvailable&&!m.isAvailable(k)){return false}var l={editor:k,command:m,args:h};l.returnValue=this._emit("exec",l);this._signal("afterExec",l);return l.returnValue===false?false:true};this.toggleRecording=function(h){if(this.$inReplay){return}h&&h._emit("changeStatus");if(this.recording){this.macro.pop();this.removeEventListener("exec",this.$addCommandToMacro);if(!this.macro.length){this.macro=this.oldMacro}return this.recording=false}if(!this.$addCommandToMacro){this.$addCommandToMacro=function(i){this.macro.push([i.command,i.args])}.bind(this)}this.oldMacro=this.macro;this.macro=[];this.on("exec",this.$addCommandToMacro);return this.recording=true};this.replay=function(h){if(this.$inReplay||!this.macro){return}if(this.recording){return this.toggleRecording(h)}try{this.$inReplay=true;this.macro.forEach(function(i){if(typeof i=="string"){this.exec(i,h)}else{this.exec(i[0],h,i[1])}},this)}finally{this.$inReplay=false}};this.trimMacro=function(h){return h.map(function(i){if(typeof i[0]!="string"){i[0]=i[0].name}if(!i[1]){i=i[0]}return i})}}).call(g.prototype);a.CommandManager=g});ace.define("ace/commands/default_commands",["require","exports","module","ace/lib/lang","ace/config","ace/range"],function(c,a,d){var g=c("../lib/lang");var b=c("../config");var f=c("../range").Range;function e(h,i){return{win:h,mac:i}}a.commands=[{name:"showSettingsMenu",bindKey:e("Ctrl-,","Command-,"),exec:function(h){b.loadModule("ace/ext/settings_menu",function(i){i.init(h);h.showSettingsMenu()})},readOnly:true},{name:"goToNextError",bindKey:e("Alt-E","F4"),exec:function(h){b.loadModule("ace/ext/error_marker",function(i){i.showErrorMarker(h,1)})},scrollIntoView:"animate",readOnly:true},{name:"goToPreviousError",bindKey:e("Alt-Shift-E","Shift-F4"),exec:function(h){b.loadModule("ace/ext/error_marker",function(i){i.showErrorMarker(h,-1)})},scrollIntoView:"animate",readOnly:true},{name:"selectall",bindKey:e("Ctrl-A","Command-A"),exec:function(h){h.selectAll()},readOnly:true},{name:"centerselection",bindKey:e(null,"Ctrl-L"),exec:function(h){h.centerSelection()},readOnly:true},{name:"gotoline",bindKey:e("Ctrl-L","Command-L"),exec:function(i){var h=parseInt(prompt("Enter line number:"),10);if(!isNaN(h)){i.gotoLine(h)}},readOnly:true},{name:"fold",bindKey:e("Alt-L|Ctrl-F1","Command-Alt-L|Command-F1"),exec:function(h){h.session.toggleFold(false)},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:true},{name:"unfold",bindKey:e("Alt-Shift-L|Ctrl-Shift-F1","Command-Alt-Shift-L|Command-Shift-F1"),exec:function(h){h.session.toggleFold(true)},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:true},{name:"toggleFoldWidget",bindKey:e("F2","F2"),exec:function(h){h.session.toggleFoldWidget()},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:true},{name:"toggleParentFoldWidget",bindKey:e("Alt-F2","Alt-F2"),exec:function(h){h.session.toggleFoldWidget(true)},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:true},{name:"foldall",bindKey:e(null,"Ctrl-Command-Option-0"),exec:function(h){h.session.foldAll()},scrollIntoView:"center",readOnly:true},{name:"foldOther",bindKey:e("Alt-0","Command-Option-0"),exec:function(h){h.session.foldAll();h.session.unfold(h.selection.getAllRanges())},scrollIntoView:"center",readOnly:true},{name:"unfoldall",bindKey:e("Alt-Shift-0","Command-Option-Shift-0"),exec:function(h){h.session.unfold()},scrollIntoView:"center",readOnly:true},{name:"findnext",bindKey:e("Ctrl-K","Command-G"),exec:function(h){h.findNext()},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:true},{name:"findprevious",bindKey:e("Ctrl-Shift-K","Command-Shift-G"),exec:function(h){h.findPrevious()},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:true},{name:"selectOrFindNext",bindKey:e("Alt-K","Ctrl-G"),exec:function(h){if(h.selection.isEmpty()){h.selection.selectWord()}else{h.findNext()}},readOnly:true},{name:"selectOrFindPrevious",bindKey:e("Alt-Shift-K","Ctrl-Shift-G"),exec:function(h){if(h.selection.isEmpty()){h.selection.selectWord()}else{h.findPrevious()}},readOnly:true},{name:"find",bindKey:e("Ctrl-F","Command-F"),exec:function(h){b.loadModule("ace/ext/searchbox",function(i){i.Search(h)})},readOnly:true},{name:"overwrite",bindKey:"Insert",exec:function(h){h.toggleOverwrite()},readOnly:true},{name:"selecttostart",bindKey:e("Ctrl-Shift-Home","Command-Shift-Home|Command-Shift-Up"),exec:function(h){h.getSelection().selectFileStart()},multiSelectAction:"forEach",readOnly:true,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"gotostart",bindKey:e("Ctrl-Home","Command-Home|Command-Up"),exec:function(h){h.navigateFileStart()},multiSelectAction:"forEach",readOnly:true,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"selectup",bindKey:e("Shift-Up","Shift-Up|Ctrl-Shift-P"),exec:function(h){h.getSelection().selectUp()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:true},{name:"golineup",bindKey:e("Up","Up|Ctrl-P"),exec:function(i,h){i.navigateUp(h.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:true},{name:"selecttoend",bindKey:e("Ctrl-Shift-End","Command-Shift-End|Command-Shift-Down"),exec:function(h){h.getSelection().selectFileEnd()},multiSelectAction:"forEach",readOnly:true,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"gotoend",bindKey:e("Ctrl-End","Command-End|Command-Down"),exec:function(h){h.navigateFileEnd()},multiSelectAction:"forEach",readOnly:true,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"selectdown",bindKey:e("Shift-Down","Shift-Down|Ctrl-Shift-N"),exec:function(h){h.getSelection().selectDown()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:true},{name:"golinedown",bindKey:e("Down","Down|Ctrl-N"),exec:function(i,h){i.navigateDown(h.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:true},{name:"selectwordleft",bindKey:e("Ctrl-Shift-Left","Option-Shift-Left"),exec:function(h){h.getSelection().selectWordLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:true},{name:"gotowordleft",bindKey:e("Ctrl-Left","Option-Left"),exec:function(h){h.navigateWordLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:true},{name:"selecttolinestart",bindKey:e("Alt-Shift-Left","Command-Shift-Left|Ctrl-Shift-A"),exec:function(h){h.getSelection().selectLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:true},{name:"gotolinestart",bindKey:e("Alt-Left|Home","Command-Left|Home|Ctrl-A"),exec:function(h){h.navigateLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:true},{name:"selectleft",bindKey:e("Shift-Left","Shift-Left|Ctrl-Shift-B"),exec:function(h){h.getSelection().selectLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:true},{name:"gotoleft",bindKey:e("Left","Left|Ctrl-B"),exec:function(i,h){i.navigateLeft(h.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:true},{name:"selectwordright",bindKey:e("Ctrl-Shift-Right","Option-Shift-Right"),exec:function(h){h.getSelection().selectWordRight()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:true},{name:"gotowordright",bindKey:e("Ctrl-Right","Option-Right"),exec:function(h){h.navigateWordRight()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:true},{name:"selecttolineend",bindKey:e("Alt-Shift-Right","Command-Shift-Right|Shift-End|Ctrl-Shift-E"),exec:function(h){h.getSelection().selectLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:true},{name:"gotolineend",bindKey:e("Alt-Right|End","Command-Right|End|Ctrl-E"),exec:function(h){h.navigateLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:true},{name:"selectright",bindKey:e("Shift-Right","Shift-Right"),exec:function(h){h.getSelection().selectRight()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:true},{name:"gotoright",bindKey:e("Right","Right|Ctrl-F"),exec:function(i,h){i.navigateRight(h.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:true},{name:"selectpagedown",bindKey:"Shift-PageDown",exec:function(h){h.selectPageDown()},readOnly:true},{name:"pagedown",bindKey:e(null,"Option-PageDown"),exec:function(h){h.scrollPageDown()},readOnly:true},{name:"gotopagedown",bindKey:e("PageDown","PageDown|Ctrl-V"),exec:function(h){h.gotoPageDown()},readOnly:true},{name:"selectpageup",bindKey:"Shift-PageUp",exec:function(h){h.selectPageUp()},readOnly:true},{name:"pageup",bindKey:e(null,"Option-PageUp"),exec:function(h){h.scrollPageUp()},readOnly:true},{name:"gotopageup",bindKey:"PageUp",exec:function(h){h.gotoPageUp()},readOnly:true},{name:"scrollup",bindKey:e("Ctrl-Up",null),exec:function(h){h.renderer.scrollBy(0,-2*h.renderer.layerConfig.lineHeight)},readOnly:true},{name:"scrolldown",bindKey:e("Ctrl-Down",null),exec:function(h){h.renderer.scrollBy(0,2*h.renderer.layerConfig.lineHeight)},readOnly:true},{name:"selectlinestart",bindKey:"Shift-Home",exec:function(h){h.getSelection().selectLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:true},{name:"selectlineend",bindKey:"Shift-End",exec:function(h){h.getSelection().selectLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:true},{name:"togglerecording",bindKey:e("Ctrl-Alt-E","Command-Option-E"),exec:function(h){h.commands.toggleRecording(h)},readOnly:true},{name:"replaymacro",bindKey:e("Ctrl-Shift-E","Command-Shift-E"),exec:function(h){h.commands.replay(h)},readOnly:true},{name:"jumptomatching",bindKey:e("Ctrl-P","Ctrl-P"),exec:function(h){h.jumpToMatching()},multiSelectAction:"forEach",scrollIntoView:"animate",readOnly:true},{name:"selecttomatching",bindKey:e("Ctrl-Shift-P","Ctrl-Shift-P"),exec:function(h){h.jumpToMatching(true)},multiSelectAction:"forEach",scrollIntoView:"animate",readOnly:true},{name:"expandToMatching",bindKey:e("Ctrl-Shift-M","Ctrl-Shift-M"),exec:function(h){h.jumpToMatching(true,true)},multiSelectAction:"forEach",scrollIntoView:"animate",readOnly:true},{name:"passKeysToBrowser",bindKey:e(null,null),exec:function(){},passEvent:true,readOnly:true},{name:"copy",exec:function(h){},readOnly:true},{name:"cut",exec:function(i){var h=i.getSelectionRange();i._emit("cut",h);if(!i.selection.isEmpty()){i.session.remove(h);i.clearSelection()}},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"paste",exec:function(i,h){i.$handlePaste(h)},scrollIntoView:"cursor"},{name:"removeline",bindKey:e("Ctrl-D","Command-D"),exec:function(h){h.removeLines()},scrollIntoView:"cursor",multiSelectAction:"forEachLine"},{name:"duplicateSelection",bindKey:e("Ctrl-Shift-D","Command-Shift-D"),exec:function(h){h.duplicateSelection()},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"sortlines",bindKey:e("Ctrl-Alt-S","Command-Alt-S"),exec:function(h){h.sortLines()},scrollIntoView:"selection",multiSelectAction:"forEachLine"},{name:"togglecomment",bindKey:e("Ctrl-/","Command-/"),exec:function(h){h.toggleCommentLines()},multiSelectAction:"forEachLine",scrollIntoView:"selectionPart"},{name:"toggleBlockComment",bindKey:e("Ctrl-Shift-/","Command-Shift-/"),exec:function(h){h.toggleBlockComment()},multiSelectAction:"forEach",scrollIntoView:"selectionPart"},{name:"modifyNumberUp",bindKey:e("Ctrl-Shift-Up","Alt-Shift-Up"),exec:function(h){h.modifyNumber(1)},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"modifyNumberDown",bindKey:e("Ctrl-Shift-Down","Alt-Shift-Down"),exec:function(h){h.modifyNumber(-1)},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"replace",bindKey:e("Ctrl-H","Command-Option-F"),exec:function(h){b.loadModule("ace/ext/searchbox",function(i){i.Search(h,true)})}},{name:"undo",bindKey:e("Ctrl-Z","Command-Z"),exec:function(h){h.undo()}},{name:"redo",bindKey:e("Ctrl-Shift-Z|Ctrl-Y","Command-Shift-Z|Command-Y"),exec:function(h){h.redo()}},{name:"copylinesup",bindKey:e("Alt-Shift-Up","Command-Option-Up"),exec:function(h){h.copyLinesUp()},scrollIntoView:"cursor"},{name:"movelinesup",bindKey:e("Alt-Up","Option-Up"),exec:function(h){h.moveLinesUp()},scrollIntoView:"cursor"},{name:"copylinesdown",bindKey:e("Alt-Shift-Down","Command-Option-Down"),exec:function(h){h.copyLinesDown()},scrollIntoView:"cursor"},{name:"movelinesdown",bindKey:e("Alt-Down","Option-Down"),exec:function(h){h.moveLinesDown()},scrollIntoView:"cursor"},{name:"del",bindKey:e("Delete","Delete|Ctrl-D|Shift-Delete"),exec:function(h){h.remove("right")},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"backspace",bindKey:e("Shift-Backspace|Backspace","Ctrl-Backspace|Shift-Backspace|Backspace|Ctrl-H"),exec:function(h){h.remove("left")},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"cut_or_delete",bindKey:e("Shift-Delete",null),exec:function(h){if(h.selection.isEmpty()){h.remove("left")}else{return false}},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removetolinestart",bindKey:e("Alt-Backspace","Command-Backspace"),exec:function(h){h.removeToLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removetolineend",bindKey:e("Alt-Delete","Ctrl-K|Command-Delete"),exec:function(h){h.removeToLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removetolinestarthard",bindKey:e("Ctrl-Shift-Backspace",null),exec:function(i){var h=i.selection.getRange();h.start.column=0;i.session.remove(h)},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removetolineendhard",bindKey:e("Ctrl-Shift-Delete",null),exec:function(i){var h=i.selection.getRange();h.end.column=Number.MAX_VALUE;i.session.remove(h)},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removewordleft",bindKey:e("Ctrl-Backspace","Alt-Backspace|Ctrl-Alt-Backspace"),exec:function(h){h.removeWordLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removewordright",bindKey:e("Ctrl-Delete","Alt-Delete"),exec:function(h){h.removeWordRight()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"outdent",bindKey:e("Shift-Tab","Shift-Tab"),exec:function(h){h.blockOutdent()},multiSelectAction:"forEach",scrollIntoView:"selectionPart"},{name:"indent",bindKey:e("Tab","Tab"),exec:function(h){h.indent()},multiSelectAction:"forEach",scrollIntoView:"selectionPart"},{name:"blockoutdent",bindKey:e("Ctrl-[","Ctrl-["),exec:function(h){h.blockOutdent()},multiSelectAction:"forEachLine",scrollIntoView:"selectionPart"},{name:"blockindent",bindKey:e("Ctrl-]","Ctrl-]"),exec:function(h){h.blockIndent()},multiSelectAction:"forEachLine",scrollIntoView:"selectionPart"},{name:"insertstring",exec:function(h,i){h.insert(i)},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"inserttext",exec:function(i,h){i.insert(g.stringRepeat(h.text||"",h.times||1))},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"splitline",bindKey:e(null,"Ctrl-O"),exec:function(h){h.splitLine()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"transposeletters",bindKey:e("Alt-Shift-X","Ctrl-T"),exec:function(h){h.transposeLetters()},multiSelectAction:function(h){h.transposeSelections(1)},scrollIntoView:"cursor"},{name:"touppercase",bindKey:e("Ctrl-U","Ctrl-U"),exec:function(h){h.toUpperCase()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"tolowercase",bindKey:e("Ctrl-Shift-U","Ctrl-Shift-U"),exec:function(h){h.toLowerCase()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"expandtoline",bindKey:e("Ctrl-Shift-L","Command-Shift-L"),exec:function(i){var h=i.selection.getRange();h.start.column=h.end.column=0;h.end.row++;i.selection.setRange(h,false)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:true},{name:"joinlines",bindKey:e(null,null),exec:function(o){var q=o.selection.isBackwards();var p=q?o.selection.getSelectionLead():o.selection.getSelectionAnchor();var r=q?o.selection.getSelectionAnchor():o.selection.getSelectionLead();var m=o.session.doc.getLine(p.row).length;var k=o.session.doc.getTextRange(o.selection.getRange());var l=k.replace(/\n\s*/," ").length;var j=o.session.doc.getLine(p.row);for(var n=p.row+1;n<=r.row+1;n++){var h=g.stringTrimLeft(g.stringTrimRight(o.session.doc.getLine(n)));if(h.length!==0){h=" "+h}j+=h}if(r.row+1<(o.session.doc.getLength()-1)){j+=o.session.doc.getNewLineCharacter()}o.clearSelection();o.session.doc.replace(new f(p.row,0,r.row+2,0),j);if(l>0){o.selection.moveCursorTo(p.row,p.column);o.selection.selectTo(p.row,p.column+l)}else{m=o.session.doc.getLine(p.row).length>m?(m+1):m;o.selection.moveCursorTo(p.row,m)}},multiSelectAction:"forEach",readOnly:true},{name:"invertSelection",bindKey:e(null,null),exec:function(m){var k=m.session.doc.getLength()-1;var n=m.session.doc.getLine(k).length;var h=m.selection.rangeList.ranges;var j=[];if(h.length<1){h=[m.selection.getRange()]}for(var l=0;l<h.length;l++){if(l==(h.length-1)){if(!(h[l].end.row===k&&h[l].end.column===n)){j.push(new f(h[l].end.row,h[l].end.column,k,n))}}if(l===0){if(!(h[l].start.row===0&&h[l].start.column===0)){j.push(new f(0,0,h[l].start.row,h[l].start.column))}}else{j.push(new f(h[l-1].end.row,h[l-1].end.column,h[l].start.row,h[l].start.column))}}m.exitMultiSelectMode();m.clearSelection();for(var l=0;l<j.length;l++){m.selection.addRange(j[l],false)}},readOnly:true,scrollIntoView:"none"}]});ace.define("ace/editor",["require","exports","module","ace/lib/fixoldbrowsers","ace/lib/oop","ace/lib/dom","ace/lib/lang","ace/lib/useragent","ace/keyboard/textinput","ace/mouse/mouse_handler","ace/mouse/fold_handler","ace/keyboard/keybinding","ace/edit_session","ace/search","ace/range","ace/lib/event_emitter","ace/commands/command_manager","ace/commands/default_commands","ace/config","ace/token_iterator"],function(i,s,c){i("./lib/fixoldbrowsers");var o=i("./lib/oop");var n=i("./lib/dom");var t=i("./lib/lang");var m=i("./lib/useragent");var b=i("./keyboard/textinput").TextInput;var q=i("./mouse/mouse_handler").MouseHandler;var d=i("./mouse/fold_handler").FoldHandler;var g=i("./keyboard/keybinding").KeyBinding;var a=i("./edit_session").EditSession;var h=i("./search").Search;var p=i("./range").Range;var f=i("./lib/event_emitter").EventEmitter;var k=i("./commands/command_manager").CommandManager;var j=i("./commands/default_commands").commands;var r=i("./config");var e=i("./token_iterator").TokenIterator;var l=function(v,w){var u=v.getContainerElement();this.container=u;this.renderer=v;this.id="editor"+(++l.$uid);this.commands=new k(m.isMac?"mac":"win",j);if(typeof document=="object"){this.textInput=new b(v.getTextAreaContainer(),this);this.renderer.textarea=this.textInput.getElement();this.$mouseHandler=new q(this);new d(this)}this.keyBinding=new g(this);this.$blockScrolling=0;this.$search=new h().set({wrap:true});this.$historyTracker=this.$historyTracker.bind(this);this.commands.on("exec",this.$historyTracker);this.$initOperationListeners();this._$emitInputEvent=t.delayedCall(function(){this._signal("input",{});if(this.session&&this.session.bgTokenizer){this.session.bgTokenizer.scheduleStart()}}.bind(this));this.on("change",function(y,x){x._$emitInputEvent.schedule(31)});this.setSession(w||new a(""));r.resetOptions(this);r._signal("editor",this)};l.$uid=0;(function(){o.implement(this,f);this.$initOperationListeners=function(){function u(v){return v[v.length-1]}this.selections=[];this.commands.on("exec",this.startOperation.bind(this),true);this.commands.on("afterExec",this.endOperation.bind(this),true);this.$opResetTimer=t.delayedCall(this.endOperation.bind(this));this.on("change",function(){this.curOp||this.startOperation();this.curOp.docChanged=true}.bind(this),true);this.on("changeSelection",function(){this.curOp||this.startOperation();this.curOp.selectionChanged=true}.bind(this),true)};this.curOp=null;this.prevOp={};this.startOperation=function(u){if(this.curOp){if(!u||this.curOp.command){return}this.prevOp=this.curOp}if(!u){this.previousCommand=null;u={}}this.$opResetTimer.schedule();this.curOp={command:u.command||{},args:u.args,scrollTop:this.renderer.scrollTop};if(this.curOp.command.name&&this.curOp.command.scrollIntoView!==undefined){this.$blockScrolling++}};this.endOperation=function(w){if(this.curOp){if(w&&w.returnValue===false){return this.curOp=null}this._signal("beforeEndOperation");var x=this.curOp.command;if(x.name&&this.$blockScrolling>0){this.$blockScrolling--}var y=x&&x.scrollIntoView;if(y){switch(y){case"center-animate":y="animate";case"center":this.renderer.scrollCursorIntoView(null,0.5);break;case"animate":case"cursor":this.renderer.scrollCursorIntoView();break;case"selectionPart":var u=this.selection.getRange();var v=this.renderer.layerConfig;if(u.start.row>=v.lastRow||u.end.row<=v.firstRow){this.renderer.scrollSelectionIntoView(this.selection.anchor,this.selection.lead)}break;default:break}if(y=="animate"){this.renderer.animateScrolling(this.curOp.scrollTop)}}this.prevOp=this.curOp;this.curOp=null}};this.$mergeableCommands=["backspace","del","insertstring"];this.$historyTracker=function(w){if(!this.$mergeUndoDeltas){return}var v=this.prevOp;var u=this.$mergeableCommands;var y=v.command&&(w.command.name==v.command.name);if(w.command.name=="insertstring"){var x=w.args;if(this.mergeNextCommand===undefined){this.mergeNextCommand=true}y=y&&this.mergeNextCommand&&(!/\s/.test(x)||/\s/.test(v.args));this.mergeNextCommand=true}else{y=y&&u.indexOf(w.command.name)!==-1}if(this.$mergeUndoDeltas!="always"&&Date.now()-this.sequenceStartTime>2000){y=false}if(y){this.session.mergeUndoDeltas=true}else{if(u.indexOf(w.command.name)!==-1){this.sequenceStartTime=Date.now()}}};this.setKeyboardHandler=function(w,v){if(w&&typeof w==="string"){this.$keybindingId=w;var u=this;r.loadModule(["keybinding",w],function(x){if(u.$keybindingId==w){u.keyBinding.setKeyboardHandler(x&&x.handler)}v&&v()})}else{this.$keybindingId=null;this.keyBinding.setKeyboardHandler(w);v&&v()}};this.getKeyboardHandler=function(){return this.keyBinding.getKeyboardHandler()};this.setSession=function(w){if(this.session==w){return}if(this.curOp){this.endOperation()}this.curOp={};var v=this.session;if(v){this.session.off("change",this.$onDocumentChange);this.session.off("changeMode",this.$onChangeMode);this.session.off("tokenizerUpdate",this.$onTokenizerUpdate);this.session.off("changeTabSize",this.$onChangeTabSize);this.session.off("changeWrapLimit",this.$onChangeWrapLimit);this.session.off("changeWrapMode",this.$onChangeWrapMode);this.session.off("changeFold",this.$onChangeFold);this.session.off("changeFrontMarker",this.$onChangeFrontMarker);this.session.off("changeBackMarker",this.$onChangeBackMarker);this.session.off("changeBreakpoint",this.$onChangeBreakpoint);this.session.off("changeAnnotation",this.$onChangeAnnotation);this.session.off("changeOverwrite",this.$onCursorChange);this.session.off("changeScrollTop",this.$onScrollTopChange);this.session.off("changeScrollLeft",this.$onScrollLeftChange);var u=this.session.getSelection();u.off("changeCursor",this.$onCursorChange);u.off("changeSelection",this.$onSelectionChange)}this.session=w;if(w){this.$onDocumentChange=this.onDocumentChange.bind(this);w.on("change",this.$onDocumentChange);this.renderer.setSession(w);this.$onChangeMode=this.onChangeMode.bind(this);w.on("changeMode",this.$onChangeMode);this.$onTokenizerUpdate=this.onTokenizerUpdate.bind(this);w.on("tokenizerUpdate",this.$onTokenizerUpdate);this.$onChangeTabSize=this.renderer.onChangeTabSize.bind(this.renderer);w.on("changeTabSize",this.$onChangeTabSize);this.$onChangeWrapLimit=this.onChangeWrapLimit.bind(this);w.on("changeWrapLimit",this.$onChangeWrapLimit);this.$onChangeWrapMode=this.onChangeWrapMode.bind(this);w.on("changeWrapMode",this.$onChangeWrapMode);this.$onChangeFold=this.onChangeFold.bind(this);w.on("changeFold",this.$onChangeFold);this.$onChangeFrontMarker=this.onChangeFrontMarker.bind(this);this.session.on("changeFrontMarker",this.$onChangeFrontMarker);this.$onChangeBackMarker=this.onChangeBackMarker.bind(this);this.session.on("changeBackMarker",this.$onChangeBackMarker);this.$onChangeBreakpoint=this.onChangeBreakpoint.bind(this);this.session.on("changeBreakpoint",this.$onChangeBreakpoint);this.$onChangeAnnotation=this.onChangeAnnotation.bind(this);this.session.on("changeAnnotation",this.$onChangeAnnotation);this.$onCursorChange=this.onCursorChange.bind(this);this.session.on("changeOverwrite",this.$onCursorChange);this.$onScrollTopChange=this.onScrollTopChange.bind(this);this.session.on("changeScrollTop",this.$onScrollTopChange);this.$onScrollLeftChange=this.onScrollLeftChange.bind(this);this.session.on("changeScrollLeft",this.$onScrollLeftChange);this.selection=w.getSelection();this.selection.on("changeCursor",this.$onCursorChange);this.$onSelectionChange=this.onSelectionChange.bind(this);this.selection.on("changeSelection",this.$onSelectionChange);this.onChangeMode();this.$blockScrolling+=1;this.onCursorChange();this.$blockScrolling-=1;this.onScrollTopChange();this.onScrollLeftChange();this.onSelectionChange();this.onChangeFrontMarker();this.onChangeBackMarker();this.onChangeBreakpoint();this.onChangeAnnotation();this.session.getUseWrapMode()&&this.renderer.adjustWrapLimit();this.renderer.updateFull()}else{this.selection=null;this.renderer.setSession(w)}this._signal("changeSession",{session:w,oldSession:v});this.curOp=null;v&&v._signal("changeEditor",{oldEditor:this});w&&w._signal("changeEditor",{editor:this});if(w&&w.bgTokenizer){w.bgTokenizer.scheduleStart()}};this.getSession=function(){return this.session};this.setValue=function(u,v){this.session.doc.setValue(u);if(!v){this.selectAll()}else{if(v==1){this.navigateFileEnd()}else{if(v==-1){this.navigateFileStart()}}}return u};this.getValue=function(){return this.session.getValue()};this.getSelection=function(){return this.selection};this.resize=function(u){this.renderer.onResize(u)};this.setTheme=function(v,u){this.renderer.setTheme(v,u)};this.getTheme=function(){return this.renderer.getTheme()};this.setStyle=function(u){this.renderer.setStyle(u)};this.unsetStyle=function(u){this.renderer.unsetStyle(u)};this.getFontSize=function(){return this.getOption("fontSize")||n.computedStyle(this.container,"fontSize")};this.setFontSize=function(u){this.setOption("fontSize",u)};this.$highlightBrackets=function(){if(this.session.$bracketHighlight){this.session.removeMarker(this.session.$bracketHighlight);this.session.$bracketHighlight=null}if(this.$highlightPending){return}var u=this;this.$highlightPending=true;setTimeout(function(){u.$highlightPending=false;var w=u.session;if(!w||!w.bgTokenizer){return}var x=w.findMatchingBracket(u.getCursorPosition());if(x){var v=new p(x.row,x.column,x.row,x.column+1)}else{if(w.$mode.getMatching){var v=w.$mode.getMatching(u.session)}}if(v){w.$bracketHighlight=w.addMarker(v,"ace_bracket","text")}},50)};this.$highlightTags=function(){if(this.$highlightTagPending){return}var u=this;this.$highlightTagPending=true;setTimeout(function(){u.$highlightTagPending=false;var C=u.session;if(!C||!C.bgTokenizer){return}var D=u.getCursorPosition();var B=new e(u.session,D.row,D.column);var y=B.getCurrentToken();if(!y||!/\b(?:tag-open|tag-name)/.test(y.type)){C.removeMarker(C.$tagHighlight);C.$tagHighlight=null;return}if(y.type.indexOf("tag-open")!=-1){y=B.stepForward();if(!y){return}}var F=y.value;var z=0;var v=B.stepBackward();if(v.value=="<"){do{v=y;y=B.stepForward();if(y&&y.value===F&&y.type.indexOf("tag-name")!==-1){if(v.value==="<"){z++}else{if(v.value==="</"){z--}}}}while(y&&z>=0)}else{do{y=v;v=B.stepBackward();if(y&&y.value===F&&y.type.indexOf("tag-name")!==-1){if(v.value==="<"){z++}else{if(v.value==="</"){z--}}}}while(v&&z<=0);B.stepForward()}if(!y){C.removeMarker(C.$tagHighlight);C.$tagHighlight=null;return}var E=B.getCurrentTokenRow();var x=B.getCurrentTokenColumn();var A=new p(E,x,E,x+y.value.length);var w=C.$backMarkers[C.$tagHighlight];if(C.$tagHighlight&&w!=undefined&&A.compareRange(w.range)!==0){C.removeMarker(C.$tagHighlight);C.$tagHighlight=null}if(A&&!C.$tagHighlight){C.$tagHighlight=C.addMarker(A,"ace_bracket","text")}},50)};this.focus=function(){var u=this;setTimeout(function(){u.textInput.focus()});this.textInput.focus()};this.isFocused=function(){return this.textInput.isFocused()};this.blur=function(){this.textInput.blur()};this.onFocus=function(u){if(this.$isFocused){return}this.$isFocused=true;this.renderer.showCursor();this.renderer.visualizeFocus();this._emit("focus",u)};this.onBlur=function(u){if(!this.$isFocused){return}this.$isFocused=false;this.renderer.hideCursor();this.renderer.visualizeBlur();this._emit("blur",u)};this.$cursorChange=function(){this.renderer.updateCursor()};this.onDocumentChange=function(w){var u=this.session.$useWrapMode;var v=(w.start.row==w.end.row?w.end.row:Infinity);this.renderer.updateLines(w.start.row,v,u);this._signal("change",w);this.$cursorChange();this.$updateHighlightActiveLine()};this.onTokenizerUpdate=function(v){var u=v.data;this.renderer.updateLines(u.first,u.last)};this.onScrollTopChange=function(){this.renderer.scrollToY(this.session.getScrollTop())};this.onScrollLeftChange=function(){this.renderer.scrollToX(this.session.getScrollLeft())};this.onCursorChange=function(){this.$cursorChange();if(!this.$blockScrolling){r.warn("Automatically scrolling cursor into view after selection change","this will be disabled in the next version","set editor.$blockScrolling = Infinity to disable this message");this.renderer.scrollCursorIntoView()}this.$highlightBrackets();this.$highlightTags();this.$updateHighlightActiveLine();this._signal("changeSelection")};this.$updateHighlightActiveLine=function(){var w=this.getSession();var v;if(this.$highlightActiveLine){if((this.$selectionStyle!="line"||!this.selection.isMultiLine())){v=this.getCursorPosition()}if(this.renderer.$maxLines&&this.session.getLength()===1&&!(this.renderer.$minLines>1)){v=false}}if(w.$highlightLineMarker&&!v){w.removeMarker(w.$highlightLineMarker.id);w.$highlightLineMarker=null}else{if(!w.$highlightLineMarker&&v){var u=new p(v.row,v.column,v.row,Infinity);u.id=w.addMarker(u,"ace_active-line","screenLine");w.$highlightLineMarker=u}else{if(v){w.$highlightLineMarker.start.row=v.row;w.$highlightLineMarker.end.row=v.row;w.$highlightLineMarker.start.column=v.column;w._signal("changeBackMarker")}}}};this.onSelectionChange=function(y){var x=this.session;if(x.$selectionMarker){x.removeMarker(x.$selectionMarker)}x.$selectionMarker=null;if(!this.selection.isEmpty()){var u=this.selection.getRange();var w=this.getSelectionStyle();x.$selectionMarker=x.addMarker(u,"ace_selection",w)}else{this.$updateHighlightActiveLine()}var v=this.$highlightSelectedWord&&this.$getSelectionHighLightRegexp();this.session.highlight(v);this._signal("changeSelection")};this.$getSelectionHighLightRegexp=function(){var A=this.session;var x=this.getSelectionRange();if(x.isEmpty()||x.isMultiLine()){return}var B=x.start.column-1;var z=x.end.column+1;var v=A.getLine(x.start.row);var u=v.length;var y=v.substring(Math.max(B,0),Math.min(z,u));if((B>=0&&/^[\w\d]/.test(y))||(z<=u&&/[\w\d]$/.test(y))){return}y=v.substring(x.start.column,x.end.column);if(!/^[\w\d]+$/.test(y)){return}var w=this.$search.$assembleRegExp({wholeWord:true,caseSensitive:true,needle:y});return w};this.onChangeFrontMarker=function(){this.renderer.updateFrontMarkers()};this.onChangeBackMarker=function(){this.renderer.updateBackMarkers()};this.onChangeBreakpoint=function(){this.renderer.updateBreakpoints()};this.onChangeAnnotation=function(){this.renderer.setAnnotations(this.session.getAnnotations())};this.onChangeMode=function(u){this.renderer.updateText();this._emit("changeMode",u)};this.onChangeWrapLimit=function(){this.renderer.updateFull()};this.onChangeWrapMode=function(){this.renderer.onResize(true)};this.onChangeFold=function(){this.$updateHighlightActiveLine();this.renderer.updateFull()};this.getSelectedText=function(){return this.session.getTextRange(this.getSelectionRange())};this.getCopyText=function(){var u=this.getSelectedText();this._signal("copy",u);return u};this.onCopy=function(){this.commands.exec("copy",this)};this.onCut=function(){this.commands.exec("cut",this)};this.onPaste=function(w,u){var v={text:w,event:u};this.commands.exec("paste",this,v)};this.$handlePaste=function(y){if(typeof y=="string"){y={text:y}}this._signal("paste",y);var z=y.text;if(!this.inMultiSelectMode||this.inVirtualSelectionMode){this.insert(z)}else{var v=z.split(/\r\n|\r|\n/);var u=this.selection.rangeList.ranges;if(v.length>u.length||v.length<2||!v[1]){return this.commands.exec("insertstring",this,z)}for(var x=u.length;x--;){var w=u[x];if(!w.isEmpty()){this.session.remove(w)}this.session.insert(w.start,v[x])}}};this.execCommand=function(v,u){return this.commands.exec(v,this,u)};this.insert=function(E,C){var D=this.session;var A=D.getMode();var F=this.getCursorPosition();if(this.getBehavioursEnabled()&&!C){var w=A.transformAction(D.getState(F.row),"insertion",this,D,E);if(w){if(E!==w.text){this.session.mergeUndoDeltas=false;this.$mergeNextCommand=false}E=w.text}}if(E=="\t"){E=this.session.getTabString()}if(!this.selection.isEmpty()){var z=this.getSelectionRange();F=this.session.remove(z);this.clearSelection()}else{if(this.session.getOverwrite()&&E.indexOf("\n")==-1){var z=new p.fromPoints(F,F);z.end.column+=E.length;this.session.remove(z)}}if(E=="\n"||E=="\r\n"){var H=D.getLine(F.row);if(F.column>H.search(/\S|$/)){var B=H.substr(F.column).search(/\S|$/);D.doc.removeInLine(F.row,F.column,F.column+B)}}this.clearSelection();var v=F.column;var y=D.getState(F.row);var H=D.getLine(F.row);var G=A.checkOutdent(y,H,E);var x=D.insert(F,E);if(w&&w.selection){if(w.selection.length==2){this.selection.setSelectionRange(new p(F.row,v+w.selection[0],F.row,v+w.selection[1]))}else{this.selection.setSelectionRange(new p(F.row+w.selection[0],w.selection[1],F.row+w.selection[2],w.selection[3]))}}if(D.getDocument().isNewLine(E)){var u=A.getNextLineIndent(y,H.slice(0,F.column),D.getTabString());D.insert({row:F.row+1,column:0},u)}if(G){A.autoOutdent(y,D,F.row)
 }};this.onTextInput=function(u){this.keyBinding.onTextInput(u)};this.onCommandKey=function(w,u,v){this.keyBinding.onCommandKey(w,u,v)};this.setOverwrite=function(u){this.session.setOverwrite(u)};this.getOverwrite=function(){return this.session.getOverwrite()};this.toggleOverwrite=function(){this.session.toggleOverwrite()};this.setScrollSpeed=function(u){this.setOption("scrollSpeed",u)};this.getScrollSpeed=function(){return this.getOption("scrollSpeed")};this.setDragDelay=function(u){this.setOption("dragDelay",u)};this.getDragDelay=function(){return this.getOption("dragDelay")};this.setSelectionStyle=function(u){this.setOption("selectionStyle",u)};this.getSelectionStyle=function(){return this.getOption("selectionStyle")};this.setHighlightActiveLine=function(u){this.setOption("highlightActiveLine",u)};this.getHighlightActiveLine=function(){return this.getOption("highlightActiveLine")};this.setHighlightGutterLine=function(u){this.setOption("highlightGutterLine",u)};this.getHighlightGutterLine=function(){return this.getOption("highlightGutterLine")};this.setHighlightSelectedWord=function(u){this.setOption("highlightSelectedWord",u)};this.getHighlightSelectedWord=function(){return this.$highlightSelectedWord};this.setAnimatedScroll=function(u){this.renderer.setAnimatedScroll(u)};this.getAnimatedScroll=function(){return this.renderer.getAnimatedScroll()};this.setShowInvisibles=function(u){this.renderer.setShowInvisibles(u)};this.getShowInvisibles=function(){return this.renderer.getShowInvisibles()};this.setDisplayIndentGuides=function(u){this.renderer.setDisplayIndentGuides(u)};this.getDisplayIndentGuides=function(){return this.renderer.getDisplayIndentGuides()};this.setShowPrintMargin=function(u){this.renderer.setShowPrintMargin(u)};this.getShowPrintMargin=function(){return this.renderer.getShowPrintMargin()};this.setPrintMarginColumn=function(u){this.renderer.setPrintMarginColumn(u)};this.getPrintMarginColumn=function(){return this.renderer.getPrintMarginColumn()};this.setReadOnly=function(u){this.setOption("readOnly",u)};this.getReadOnly=function(){return this.getOption("readOnly")};this.setBehavioursEnabled=function(u){this.setOption("behavioursEnabled",u)};this.getBehavioursEnabled=function(){return this.getOption("behavioursEnabled")};this.setWrapBehavioursEnabled=function(u){this.setOption("wrapBehavioursEnabled",u)};this.getWrapBehavioursEnabled=function(){return this.getOption("wrapBehavioursEnabled")};this.setShowFoldWidgets=function(u){this.setOption("showFoldWidgets",u)};this.getShowFoldWidgets=function(){return this.getOption("showFoldWidgets")};this.setFadeFoldWidgets=function(u){this.setOption("fadeFoldWidgets",u)};this.getFadeFoldWidgets=function(){return this.getOption("fadeFoldWidgets")};this.remove=function(w){if(this.selection.isEmpty()){if(w=="left"){this.selection.selectLeft()}else{this.selection.selectRight()}}var v=this.getSelectionRange();if(this.getBehavioursEnabled()){var y=this.session;var x=y.getState(v.start.row);var A=y.getMode().transformAction(x,"deletion",this,y,v);if(v.end.column===0){var z=y.getTextRange(v);if(z[z.length-1]=="\n"){var u=y.getLine(v.end.row);if(/^\s+$/.test(u)){v.end.column=u.length}}}if(A){v=A}}this.session.remove(v);this.clearSelection()};this.removeWordRight=function(){if(this.selection.isEmpty()){this.selection.selectWordRight()}this.session.remove(this.getSelectionRange());this.clearSelection()};this.removeWordLeft=function(){if(this.selection.isEmpty()){this.selection.selectWordLeft()}this.session.remove(this.getSelectionRange());this.clearSelection()};this.removeToLineStart=function(){if(this.selection.isEmpty()){this.selection.selectLineStart()}this.session.remove(this.getSelectionRange());this.clearSelection()};this.removeToLineEnd=function(){if(this.selection.isEmpty()){this.selection.selectLineEnd()}var u=this.getSelectionRange();if(u.start.column==u.end.column&&u.start.row==u.end.row){u.end.column=0;u.end.row++}this.session.remove(u);this.clearSelection()};this.splitLine=function(){if(!this.selection.isEmpty()){this.session.remove(this.getSelectionRange());this.clearSelection()}var u=this.getCursorPosition();this.insert("\n");this.moveCursorToPosition(u)};this.transposeLetters=function(){if(!this.selection.isEmpty()){return}var y=this.getCursorPosition();var w=y.column;if(w===0){return}var u=this.session.getLine(y.row);var x,v;if(w<u.length){x=u.charAt(w)+u.charAt(w-1);v=new p(y.row,w-1,y.row,w+1)}else{x=u.charAt(w-1)+u.charAt(w-2);v=new p(y.row,w-2,y.row,w)}this.session.replace(v,x);this.session.selection.moveToPosition(v.end)};this.toLowerCase=function(){var v=this.getSelectionRange();if(this.selection.isEmpty()){this.selection.selectWord()}var u=this.getSelectionRange();var w=this.session.getTextRange(u);this.session.replace(u,w.toLowerCase());this.selection.setSelectionRange(v)};this.toUpperCase=function(){var v=this.getSelectionRange();if(this.selection.isEmpty()){this.selection.selectWord()}var u=this.getSelectionRange();var w=this.session.getTextRange(u);this.session.replace(u,w.toUpperCase());this.selection.setSelectionRange(v)};this.indent=function(){var y=this.session;var v=this.getSelectionRange();if(v.start.row<v.end.row){var B=this.$getSelectedRows();y.indentRows(B.first,B.last,"\t");return}else{if(v.start.column<v.end.column){var A=y.getTextRange(v);if(!/^\s+$/.test(A)){var B=this.$getSelectedRows();y.indentRows(B.first,B.last,"\t");return}}}var D=y.getLine(v.start.row);var w=v.start;var C=y.getTabSize();var u=y.documentToScreenColumn(w.row,w.column);if(this.session.getUseSoftTabs()){var x=(C-u%C);var z=t.stringRepeat(" ",x)}else{var x=u%C;while(D[v.start.column-1]==" "&&x){v.start.column--;x--}this.selection.setSelectionRange(v);z="\t"}return this.insert(z)};this.blockIndent=function(){var u=this.$getSelectedRows();this.session.indentRows(u.first,u.last,"\t")};this.blockOutdent=function(){var u=this.session.getSelection();this.session.outdentRows(u.getRange())};this.sortLines=function(){var y=this.$getSelectedRows();var z=this.session;var w=[];for(var x=y.first;x<=y.last;x++){w.push(z.getLine(x))}w.sort(function(B,A){if(B.toLowerCase()<A.toLowerCase()){return -1}if(B.toLowerCase()>A.toLowerCase()){return 1}return 0});var v=new p(0,0,0,0);for(var x=y.first;x<=y.last;x++){var u=z.getLine(x);v.start.row=x;v.end.row=x;v.end.column=u.length;z.replace(v,w[x-y.first])}};this.toggleCommentLines=function(){var v=this.session.getState(this.getCursorPosition().row);var u=this.$getSelectedRows();this.session.getMode().toggleCommentLines(v,this.session,u.first,u.last)};this.toggleBlockComment=function(){var w=this.getCursorPosition();var v=this.session.getState(w.row);var u=this.getSelectionRange();this.session.getMode().toggleBlockComment(v,this.session,u,w)};this.getNumberAt=function(z,x){var v=/[\-]?[0-9]+(?:\.[0-9]+)?/g;v.lastIndex=0;var w=this.session.getLine(z);while(v.lastIndex<x){var u=v.exec(w);if(u.index<=x&&u.index+u[0].length>=x){var y={value:u[0],start:u.index,end:u.index+u[0].length};return y}}return null};this.modifyNumber=function(w){var E=this.selection.getCursor().row;var v=this.selection.getCursor().column;var D=new p(E,v-1,E,v);var z=this.session.getTextRange(D);if(!isNaN(parseFloat(z))&&isFinite(z)){var A=this.getNumberAt(E,v);if(A){var x=A.value.indexOf(".")>=0?A.start+A.value.indexOf(".")+1:A.end;var u=A.start+A.value.length-x;var C=parseFloat(A.value);C*=Math.pow(10,u);if(x!==A.end&&v<x){w*=Math.pow(10,A.end-v-1)}else{w*=Math.pow(10,A.end-v)}C+=w;C/=Math.pow(10,u);var y=C.toFixed(u);var B=new p(E,A.start,E,A.end);this.session.replace(B,y);this.moveCursorTo(E,Math.max(A.start+1,v+y.length-A.value.length))}}};this.removeLines=function(){var u=this.$getSelectedRows();this.session.removeFullLines(u.first,u.last);this.clearSelection()};this.duplicateSelection=function(){var y=this.selection;var z=this.session;var v=y.getRange();var w=y.isBackwards();if(v.isEmpty()){var A=v.start.row;z.duplicateLines(A,A)}else{var u=w?v.start:v.end;var x=z.insert(u,z.getTextRange(v),false);v.start=u;v.end=x;y.setSelectionRange(v,w)}};this.moveLinesDown=function(){this.$moveLines(1,false)};this.moveLinesUp=function(){this.$moveLines(-1,false)};this.moveText=function(u,v,w){return this.session.moveText(u,v,w)};this.copyLinesUp=function(){this.$moveLines(-1,true)};this.copyLinesDown=function(){this.$moveLines(1,true)};this.$moveLines=function(x,u){var I,E;var G=this.selection;if(!G.inMultiSelectMode||this.inVirtualSelectionMode){var C=G.toOrientedRange();I=this.$getSelectedRows(C);E=this.session.$moveLines(I.first,I.last,u?0:x);if(u&&x==-1){E=0}C.moveBy(E,0);G.fromOrientedRange(C)}else{var v=G.rangeList.ranges;G.rangeList.detach(this.session);this.inVirtualSelectionMode=true;var F=0;var D=0;var y=v.length;for(var A=0;A<y;A++){var z=A;v[A].moveBy(F,0);I=this.$getSelectedRows(v[A]);var B=I.first;var H=I.last;while(++A<y){if(D){v[A].moveBy(D,0)}var w=this.$getSelectedRows(v[A]);if(u&&w.first!=H){break}else{if(!u&&w.first>H+1){break}}H=w.last}A--;F=this.session.$moveLines(B,H,u?0:x);if(u&&x==-1){z=A+1}while(z<=A){v[z].moveBy(F,0);z++}if(!u){F=0}D+=F}G.fromOrientedRange(G.ranges[0]);G.rangeList.attach(this.session);this.inVirtualSelectionMode=false}};this.$getSelectedRows=function(u){u=(u||this.getSelectionRange()).collapseRows();return{first:this.session.getRowFoldStart(u.start.row),last:this.session.getRowFoldEnd(u.end.row)}};this.onCompositionStart=function(u){this.renderer.showComposition(this.getCursorPosition())};this.onCompositionUpdate=function(u){this.renderer.setCompositionText(u)};this.onCompositionEnd=function(){this.renderer.hideComposition()};this.getFirstVisibleRow=function(){return this.renderer.getFirstVisibleRow()};this.getLastVisibleRow=function(){return this.renderer.getLastVisibleRow()};this.isRowVisible=function(u){return(u>=this.getFirstVisibleRow()&&u<=this.getLastVisibleRow())};this.isRowFullyVisible=function(u){return(u>=this.renderer.getFirstFullyVisibleRow()&&u<=this.renderer.getLastFullyVisibleRow())};this.$getVisibleRowCount=function(){return this.renderer.getScrollBottomRow()-this.renderer.getScrollTopRow()+1};this.$moveByPage=function(w,u){var y=this.renderer;var v=this.renderer.layerConfig;var x=w*Math.floor(v.height/v.lineHeight);this.$blockScrolling++;if(u===true){this.selection.$moveSelection(function(){this.moveCursorBy(x,0)})}else{if(u===false){this.selection.moveCursorBy(x,0);this.selection.clearSelection()}}this.$blockScrolling--;var z=y.scrollTop;y.scrollBy(0,x*v.lineHeight);if(u!=null){y.scrollCursorIntoView(null,0.5)}y.animateScrolling(z)};this.selectPageDown=function(){this.$moveByPage(1,true)};this.selectPageUp=function(){this.$moveByPage(-1,true)};this.gotoPageDown=function(){this.$moveByPage(1,false)};this.gotoPageUp=function(){this.$moveByPage(-1,false)};this.scrollPageDown=function(){this.$moveByPage(1)};this.scrollPageUp=function(){this.$moveByPage(-1)};this.scrollToRow=function(u){this.renderer.scrollToRow(u)};this.scrollToLine=function(v,u,w,x){this.renderer.scrollToLine(v,u,w,x)};this.centerSelection=function(){var u=this.getSelectionRange();var v={row:Math.floor(u.start.row+(u.end.row-u.start.row)/2),column:Math.floor(u.start.column+(u.end.column-u.start.column)/2)};this.renderer.alignCursor(v,0.5)};this.getCursorPosition=function(){return this.selection.getCursor()};this.getCursorPositionScreen=function(){return this.session.documentToScreenPosition(this.getCursorPosition())};this.getSelectionRange=function(){return this.selection.getRange()};this.selectAll=function(){this.$blockScrolling+=1;this.selection.selectAll();this.$blockScrolling-=1};this.clearSelection=function(){this.selection.clearSelection()};this.moveCursorTo=function(v,u){this.selection.moveCursorTo(v,u)};this.moveCursorToPosition=function(u){this.selection.moveCursorToPosition(u)};this.jumpToMatching=function(D,E){var F=this.getCursorPosition();var B=new e(this.session,F.row,F.column);var u=B.getCurrentToken();var x=u||B.stepForward();if(!x){return}var v;var I=false;var z={};var y=F.column-x.start;var w;var G={")":"(","(":"(","]":"[","[":"[","{":"{","}":"{"};do{if(x.value.match(/[{}()\[\]]/g)){for(;y<x.value.length&&!I;y++){if(!G[x.value[y]]){continue}w=G[x.value[y]]+"."+x.type.replace("rparen","lparen");if(isNaN(z[w])){z[w]=0}switch(x.value[y]){case"(":case"[":case"{":z[w]++;break;case")":case"]":case"}":z[w]--;if(z[w]===-1){v="bracket";I=true}break}}}else{if(x&&x.type.indexOf("tag-name")!==-1){if(isNaN(z[x.value])){z[x.value]=0}if(u.value==="<"){z[x.value]++}else{if(u.value==="</"){z[x.value]--}}if(z[x.value]===-1){v="tag";I=true}}}if(!I){u=x;x=B.stepForward();y=0}}while(x&&!I);if(!v){return}var A,C;if(v==="bracket"){A=this.session.getBracketRange(F);if(!A){A=new p(B.getCurrentTokenRow(),B.getCurrentTokenColumn()+y-1,B.getCurrentTokenRow(),B.getCurrentTokenColumn()+y-1);C=A.start;if(E||C.row===F.row&&Math.abs(C.column-F.column)<2){A=this.session.getBracketRange(C)}}}else{if(v==="tag"){if(x&&x.type.indexOf("tag-name")!==-1){var H=x.value}else{return}A=new p(B.getCurrentTokenRow(),B.getCurrentTokenColumn()-2,B.getCurrentTokenRow(),B.getCurrentTokenColumn()-2);if(A.compare(F.row,F.column)===0){I=false;do{x=u;u=B.stepBackward();if(u){if(u.type.indexOf("tag-close")!==-1){A.setEnd(B.getCurrentTokenRow(),B.getCurrentTokenColumn()+1)}if(x.value===H&&x.type.indexOf("tag-name")!==-1){if(u.value==="<"){z[H]++}else{if(u.value==="</"){z[H]--}}if(z[H]===0){I=true}}}}while(u&&!I)}if(x&&x.type.indexOf("tag-name")){C=A.start;if(C.row==F.row&&Math.abs(C.column-F.column)<2){C=A.end}}}}C=A&&A.cursor||C;if(C){if(D){if(A&&E){this.selection.setRange(A)}else{if(A&&A.isEqual(this.getSelectionRange())){this.clearSelection()}else{this.selection.selectTo(C.row,C.column)}}}else{this.selection.moveTo(C.row,C.column)}}};this.gotoLine=function(u,w,v){this.selection.clearSelection();this.session.unfold({row:u-1,column:w||0});this.$blockScrolling+=1;this.exitMultiSelectMode&&this.exitMultiSelectMode();this.moveCursorTo(u-1,w||0);this.$blockScrolling-=1;if(!this.isRowFullyVisible(u-1)){this.scrollToLine(u-1,true,v)}};this.navigateTo=function(v,u){this.selection.moveTo(v,u)};this.navigateUp=function(v){if(this.selection.isMultiLine()&&!this.selection.isBackwards()){var u=this.selection.anchor.getPosition();return this.moveCursorToPosition(u)}this.selection.clearSelection();this.selection.moveCursorBy(-v||-1,0)};this.navigateDown=function(v){if(this.selection.isMultiLine()&&this.selection.isBackwards()){var u=this.selection.anchor.getPosition();return this.moveCursorToPosition(u)}this.selection.clearSelection();this.selection.moveCursorBy(v||1,0)};this.navigateLeft=function(v){if(!this.selection.isEmpty()){var u=this.getSelectionRange().start;this.moveCursorToPosition(u)}else{v=v||1;while(v--){this.selection.moveCursorLeft()}}this.clearSelection()};this.navigateRight=function(v){if(!this.selection.isEmpty()){var u=this.getSelectionRange().end;this.moveCursorToPosition(u)}else{v=v||1;while(v--){this.selection.moveCursorRight()}}this.clearSelection()};this.navigateLineStart=function(){this.selection.moveCursorLineStart();this.clearSelection()};this.navigateLineEnd=function(){this.selection.moveCursorLineEnd();this.clearSelection()};this.navigateFileEnd=function(){this.selection.moveCursorFileEnd();this.clearSelection()};this.navigateFileStart=function(){this.selection.moveCursorFileStart();this.clearSelection()};this.navigateWordRight=function(){this.selection.moveCursorWordRight();this.clearSelection()};this.navigateWordLeft=function(){this.selection.moveCursorWordLeft();this.clearSelection()};this.replace=function(w,v){if(v){this.$search.set(v)}var u=this.$search.find(this.session);var x=0;if(!u){return x}if(this.$tryReplace(u,w)){x=1}if(u!==null){this.selection.setSelectionRange(u);this.renderer.scrollSelectionIntoView(u.start,u.end)}return x};this.replaceAll=function(y,v){if(v){this.$search.set(v)}var u=this.$search.findAll(this.session);var z=0;if(!u.length){return z}this.$blockScrolling+=1;var x=this.getSelectionRange();this.selection.moveTo(0,0);for(var w=u.length-1;w>=0;--w){if(this.$tryReplace(u[w],y)){z++}}this.selection.setSelectionRange(x);this.$blockScrolling-=1;return z};this.$tryReplace=function(v,w){var u=this.session.getTextRange(v);w=this.$search.replace(u,w);if(w!==null){v.end=this.session.replace(v,w);return v}else{return null}};this.getLastSearchOptions=function(){return this.$search.getOptions()};this.find=function(y,x,v){if(!x){x={}}if(typeof y=="string"||y instanceof RegExp){x.needle=y}else{if(typeof y=="object"){o.mixin(x,y)}}var u=this.selection.getRange();if(x.needle==null){y=this.session.getTextRange(u)||this.$search.$options.needle;if(!y){u=this.session.getWordRange(u.start.row,u.start.column);y=this.session.getTextRange(u)}this.$search.set({needle:y})}this.$search.set(x);if(!x.start){this.$search.set({start:u})}var w=this.$search.find(this.session);if(x.preventScroll){return w}if(w){this.revealRange(w,v);return w}if(x.backwards){u.start=u.end}else{u.end=u.start}this.selection.setRange(u)};this.findNext=function(v,u){this.find({skipCurrent:true,backwards:false},v,u)};this.findPrevious=function(v,u){this.find(v,{skipCurrent:true,backwards:true},u)};this.revealRange=function(v,u){this.$blockScrolling+=1;this.session.unfold(v);this.selection.setSelectionRange(v);this.$blockScrolling-=1;var w=this.renderer.scrollTop;this.renderer.scrollSelectionIntoView(v.start,v.end,0.5);if(u!==false){this.renderer.animateScrolling(w)}};this.undo=function(){this.$blockScrolling++;this.session.getUndoManager().undo();this.$blockScrolling--;this.renderer.scrollCursorIntoView(null,0.5)};this.redo=function(){this.$blockScrolling++;this.session.getUndoManager().redo();this.$blockScrolling--;this.renderer.scrollCursorIntoView(null,0.5)};this.destroy=function(){this.renderer.destroy();this._signal("destroy",this);if(this.session){this.session.destroy()}};this.setAutoScrollEditorIntoView=function(w){if(!w){return}var y;var u=this;var x=false;if(!this.$scrollAnchor){this.$scrollAnchor=document.createElement("div")}var A=this.$scrollAnchor;A.style.cssText="position:absolute";this.container.insertBefore(A,this.container.firstChild);var B=this.on("changeSelection",function(){x=true});var z=this.renderer.on("beforeRender",function(){if(x){y=u.renderer.container.getBoundingClientRect()}});var v=this.renderer.on("afterRender",function(){if(x&&y&&(u.isFocused()||u.searchBox&&u.searchBox.isFocused())){var D=u.renderer;var F=D.$cursorLayer.$pixelPos;var C=D.layerConfig;var E=F.top-C.offset;if(F.top>=0&&E+y.top<0){x=true}else{if(F.top<C.height&&F.top+y.top+C.lineHeight>window.innerHeight){x=false}else{x=null}}if(x!=null){A.style.top=E+"px";A.style.left=F.left+"px";A.style.height=C.lineHeight+"px";A.scrollIntoView(x)}x=y=null}});this.setAutoScrollEditorIntoView=function(C){if(C){return}delete this.setAutoScrollEditorIntoView;this.off("changeSelection",B);this.renderer.off("afterRender",v);this.renderer.off("beforeRender",z)}};this.$resetCursorStyle=function(){var u=this.$cursorStyle||"ace";var v=this.renderer.$cursorLayer;if(!v){return}v.setSmoothBlinking(/smooth/.test(u));v.isBlinking=!this.$readOnly&&u!="wide";n.setCssClass(v.element,"ace_slim-cursors",/slim/.test(u))}}).call(l.prototype);r.defineOptions(l.prototype,"editor",{selectionStyle:{set:function(u){this.onSelectionChange();this._signal("changeSelectionStyle",{data:u})},initialValue:"line"},highlightActiveLine:{set:function(){this.$updateHighlightActiveLine()},initialValue:true},highlightSelectedWord:{set:function(u){this.$onSelectionChange()},initialValue:true},readOnly:{set:function(u){this.$resetCursorStyle()},initialValue:false},cursorStyle:{set:function(u){this.$resetCursorStyle()},values:["ace","slim","smooth","wide"],initialValue:"ace"},mergeUndoDeltas:{values:[false,true,"always"],initialValue:true},behavioursEnabled:{initialValue:true},wrapBehavioursEnabled:{initialValue:true},autoScrollEditorIntoView:{set:function(u){this.setAutoScrollEditorIntoView(u)}},keyboardHandler:{set:function(u){this.setKeyboardHandler(u)},get:function(){return this.keybindingId},handlesSet:true},hScrollBarAlwaysVisible:"renderer",vScrollBarAlwaysVisible:"renderer",highlightGutterLine:"renderer",animatedScroll:"renderer",showInvisibles:"renderer",showPrintMargin:"renderer",printMarginColumn:"renderer",printMargin:"renderer",fadeFoldWidgets:"renderer",showFoldWidgets:"renderer",showLineNumbers:"renderer",showGutter:"renderer",displayIndentGuides:"renderer",fontSize:"renderer",fontFamily:"renderer",maxLines:"renderer",minLines:"renderer",scrollPastEnd:"renderer",fixedWidthGutter:"renderer",theme:"renderer",scrollSpeed:"$mouseHandler",dragDelay:"$mouseHandler",dragEnabled:"$mouseHandler",focusTimout:"$mouseHandler",tooltipFollowsMouse:"$mouseHandler",firstLineNumber:"session",overwrite:"session",newLineMode:"session",useWorker:"session",useSoftTabs:"session",tabSize:"session",wrap:"session",indentedSoftWrap:"session",foldStyle:"session",mode:"session"});s.Editor=l});ace.define("ace/undomanager",["require","exports","module"],function(b,a,c){var d=function(){this.reset()};(function(){this.execute=function(h){var i=h.args[0];this.$doc=h.args[1];if(h.merge&&this.hasUndo()){this.dirtyCounter--;i=this.$undoStack.pop().concat(i)}this.$undoStack.push(i);this.$redoStack=[];if(this.dirtyCounter<0){this.dirtyCounter=NaN}this.dirtyCounter++};this.undo=function(h){var j=this.$undoStack.pop();var i=null;if(j){i=this.$doc.undoChanges(j,h);this.$redoStack.push(j);this.dirtyCounter--}return i};this.redo=function(h){var j=this.$redoStack.pop();var i=null;if(j){i=this.$doc.redoChanges(this.$deserializeDeltas(j),h);this.$undoStack.push(j);this.dirtyCounter++}return i};this.reset=function(){this.$undoStack=[];this.$redoStack=[];this.dirtyCounter=0};this.hasUndo=function(){return this.$undoStack.length>0};this.hasRedo=function(){return this.$redoStack.length>0};this.markClean=function(){this.dirtyCounter=0};this.isClean=function(){return this.dirtyCounter===0};this.$serializeDeltas=function(h){return f(h,e)};this.$deserializeDeltas=function(h){return f(h,g)};function e(h){return{action:h.action,start:h.start,end:h.end,lines:h.lines.length==1?null:h.lines,text:h.lines.length==1?h.lines[0]:null}}function g(h){return{action:h.action,start:h.start,end:h.end,lines:h.lines||[h.text]}}function f(q,n){var l=new Array(q.length);for(var m=0;m<q.length;m++){var k=q[m];var o={group:k.group,deltas:new Array(k.length)};for(var h=0;h<k.deltas.length;h++){var p=k.deltas[h];o.deltas[h]=n(p)}l[m]=o}return l}}).call(d.prototype);a.UndoManager=d});ace.define("ace/layer/gutter",["require","exports","module","ace/lib/dom","ace/lib/oop","ace/lib/lang","ace/lib/event_emitter"],function(b,a,c){var h=b("../lib/dom");var f=b("../lib/oop");var g=b("../lib/lang");var e=b("../lib/event_emitter").EventEmitter;var d=function(i){this.element=h.createElement("div");this.element.className="ace_layer ace_gutter-layer";i.appendChild(this.element);this.setShowFoldWidgets(this.$showFoldWidgets);this.gutterWidth=0;this.$annotations=[];this.$updateAnnotations=this.$updateAnnotations.bind(this);this.$cells=[]};(function(){f.implement(this,e);this.setSession=function(i){if(this.session){this.session.removeEventListener("change",this.$updateAnnotations)}this.session=i;if(i){i.on("change",this.$updateAnnotations)}};this.addGutterDecoration=function(j,i){if(window.console){console.warn&&console.warn("deprecated use session.addGutterDecoration")}this.session.addGutterDecoration(j,i)};this.removeGutterDecoration=function(j,i){if(window.console){console.warn&&console.warn("deprecated use session.removeGutterDecoration")}this.session.removeGutterDecoration(j,i)};this.setAnnotations=function(o){this.$annotations=[];for(var l=0;l<o.length;l++){var j=o[l];var p=j.row;var n=this.$annotations[p];if(!n){n=this.$annotations[p]={text:[]}}var k=j.text;k=k?g.escapeHTML(k):j.html||"";if(n.text.indexOf(k)===-1){n.text.push(k)}var m=j.type;if(m=="error"){n.className=" ace_error"}else{if(m=="warning"&&n.className!=" ace_error"){n.className=" ace_warning"}else{if(m=="info"&&(!n.className)){n.className=" ace_info"}}}}};this.$updateAnnotations=function(l){if(!this.$annotations.length){return}var k=l.start.row;var i=l.end.row-k;if(i===0){}else{if(l.action=="remove"){this.$annotations.splice(k,i+1,null)}else{var j=new Array(i+1);j.unshift(k,1);this.$annotations.splice.apply(this.$annotations,j)}}};this.update=function(C){var j=this.session;var i=C.firstRow;var y=Math.min(C.lastRow+C.gutterOffset,j.getLength()-1);var n=j.getNextFoldLine(i);var m=n?n.start.row:Infinity;var x=this.$showFoldWidgets&&j.foldWidgets;var t=j.$breakpoints;var o=j.$decorations;var A=j.$firstLineNumber;var s=0;var r=j.gutterRenderer||this.$renderer;var k=null;var q=-1;var p=i;while(true){if(p>m){p=n.end.row+1;n=j.getNextFoldLine(p,n);m=n?n.start.row:Infinity}if(p>y){while(this.$cells.length>q+1){k=this.$cells.pop();this.element.removeChild(k.element)}break}k=this.$cells[++q];if(!k){k={element:null,textNode:null,foldWidget:null};k.element=h.createElement("div");k.textNode=document.createTextNode("");k.element.appendChild(k.textNode);this.element.appendChild(k.element);this.$cells[q]=k}var l="ace_gutter-cell ";if(t[p]){l+=t[p]}if(o[p]){l+=o[p]}if(this.$annotations[p]){l+=this.$annotations[p].className}if(k.element.className!=l){k.element.className=l}var w=j.getRowLength(p)*C.lineHeight+"px";if(w!=k.element.style.height){k.element.style.height=w}if(x){var B=x[p];if(B==null){B=x[p]=j.getFoldWidget(p)}}if(B){if(!k.foldWidget){k.foldWidget=h.createElement("span");k.element.appendChild(k.foldWidget)}var l="ace_fold-widget ace_"+B;if(B=="start"&&p==m&&p<n.end.row){l+=" ace_closed"}else{l+=" ace_open"}if(k.foldWidget.className!=l){k.foldWidget.className=l}var w=C.lineHeight+"px";if(k.foldWidget.style.height!=w){k.foldWidget.style.height=w}}else{if(k.foldWidget){k.element.removeChild(k.foldWidget);k.foldWidget=null}}var u=s=r?r.getText(j,p):p+A;if(u!==k.textNode.data){k.textNode.data=u}p++}this.element.style.height=C.minHeight+"px";if(this.$fixedWidth||j.$useWrapMode){s=j.getLength()+A}var z=r?r.getWidth(j,s,C):s.toString().length*C.characterWidth;var v=this.$padding||this.$computePadding();z+=v.left+v.right;if(z!==this.gutterWidth&&!isNaN(z)){this.gutterWidth=z;this.element.style.width=Math.ceil(this.gutterWidth)+"px";this._emit("changeGutterWidth",z)}};this.$fixedWidth=false;this.$showLineNumbers=true;this.$renderer="";this.setShowLineNumbers=function(i){this.$renderer=!i&&{getWidth:function(){return""},getText:function(){return""}}};this.getShowLineNumbers=function(){return this.$showLineNumbers};this.$showFoldWidgets=true;this.setShowFoldWidgets=function(i){if(i){h.addCssClass(this.element,"ace_folding-enabled")}else{h.removeCssClass(this.element,"ace_folding-enabled")}this.$showFoldWidgets=i;this.$padding=null};this.getShowFoldWidgets=function(){return this.$showFoldWidgets};this.$computePadding=function(){if(!this.element.firstChild){return{left:0,right:0}}var i=h.computedStyle(this.element.firstChild);this.$padding={};this.$padding.left=parseInt(i.paddingLeft)+1||0;this.$padding.right=parseInt(i.paddingRight)||0;return this.$padding};this.getRegion=function(i){var k=this.$padding||this.$computePadding();var j=this.element.getBoundingClientRect();if(i.x<k.left+j.left){return"markers"}if(this.$showFoldWidgets&&i.x>j.right-k.right){return"foldWidgets"}}}).call(d.prototype);a.Gutter=d});ace.define("ace/layer/marker",["require","exports","module","ace/range","ace/lib/dom"],function(c,b,d){var e=c("../range").Range;var f=c("../lib/dom");var a=function(g){this.element=f.createElement("div");this.element.className="ace_layer ace_marker-layer";g.appendChild(this.element)};(function(){this.$padding=0;this.setPadding=function(h){this.$padding=h};this.setSession=function(h){this.session=h};this.setMarkers=function(h){this.markers=h};this.update=function(j){if(!j){return}this.config=j;var l=[];for(var k in this.markers){var h=this.markers[k];if(!h.range){h.update(l,this,this.session,j);continue}var i=h.range.clipRows(j.firstRow,j.lastRow);if(i.isEmpty()){continue}i=i.toScreenRange(this.session);if(h.renderer){var n=this.$getTop(i.start.row,j);var m=this.$padding+(this.session.$bidiHandler.isBidiRow(i.start.row)?this.session.$bidiHandler.getPosLeft(i.start.column):i.start.column*j.characterWidth);h.renderer(l,i,m,n,j)}else{if(h.type=="fullLine"){this.drawFullLineMarker(l,i,h.clazz,j)}else{if(h.type=="screenLine"){this.drawScreenLineMarker(l,i,h.clazz,j)}else{if(i.isMultiLine()){if(h.type=="text"){this.drawTextMarker(l,i,h.clazz,j)}else{this.drawMultiLineMarker(l,i,h.clazz,j)}}else{if(this.session.$bidiHandler.isBidiRow(i.start.row)){this.drawBidiSingleLineMarker(l,i,h.clazz+" ace_start"+" ace_br15",j)}else{this.drawSingleLineMarker(l,i,h.clazz+" ace_start"+" ace_br15",j)}}}}}}this.element.innerHTML=l.join("")};this.$getTop=function(i,h){return(i-h.firstRowScreen)*h.lineHeight};function g(h,j,i,k){return(h?1:0)|(j?2:0)|(i?4:0)|(k?8:0)}this.drawTextMarker=function(j,n,p,s,h){var q=this.session;var i=n.start.row;var l=n.end.row;var u=i;var k=0;var t=0;var m=q.getScreenLastRowColumn(u);var o=null;var r=new e(u,n.start.column,u,t);for(;u<=l;u++){r.start.row=r.end.row=u;r.start.column=u==i?n.start.column:q.getRowWrapIndent(u);r.end.column=m;k=t;t=m;m=u+1<l?q.getScreenLastRowColumn(u+1):u==l?0:n.end.column;o=p+(u==i?" ace_start":"")+" ace_br"+g(u==i||u==i+1&&n.start.column,k<t,t>m,u==l);if(this.session.$bidiHandler.isBidiRow(u)){this.drawBidiSingleLineMarker(j,r,o,s,u==l?0:1,h)}else{this.drawSingleLineMarker(j,r,o,s,u==l?0:1,h)}}};this.drawMultiLineMarker=function(j,n,o,l,h){var q=this.$padding;var r,p,m;h=h||"";if(this.session.$bidiHandler.isBidiRow(n.start.row)){var s=n.clone();s.end.row=s.start.row;s.end.column=this.session.getLine(s.start.row).length;this.drawBidiSingleLineMarker(j,s,o+" ace_br1 ace_start",l,null,h)}else{r=l.lineHeight;p=this.$getTop(n.start.row,l);m=q+n.start.column*l.characterWidth;j.push("<div class='",o," ace_br1 ace_start' style='","height:",r,"px;","right:0;","top:",p,"px;","left:",m,"px;",h,"'></div>")}if(this.session.$bidiHandler.isBidiRow(n.end.row)){var s=n.clone();s.start.row=s.end.row;s.start.column=0;this.drawBidiSingleLineMarker(j,s,o+" ace_br12",l,null,h)}else{var i=n.end.column*l.characterWidth;r=l.lineHeight;p=this.$getTop(n.end.row,l);j.push("<div class='",o," ace_br12' style='","height:",r,"px;","width:",i,"px;","top:",p,"px;","left:",q,"px;",h,"'></div>")}r=(n.end.row-n.start.row-1)*l.lineHeight;if(r<=0){return}p=this.$getTop(n.start.row+1,l);var k=(n.start.column?1:0)|(n.end.column?0:8);j.push("<div class='",o,(k?" ace_br"+k:""),"' style='","height:",r,"px;","right:0;","top:",p,"px;","left:",q,"px;",h,"'></div>")};this.drawSingleLineMarker=function(i,m,o,k,n,h){var q=k.lineHeight;var j=(m.end.column+(n||0)-m.start.column)*k.characterWidth;var p=this.$getTop(m.start.row,k);var l=this.$padding+m.start.column*k.characterWidth;i.push("<div class='",o,"' style='","height:",q,"px;","width:",j,"px;","top:",p,"px;","left:",l,"px;",h||"","'></div>")};this.drawBidiSingleLineMarker=function(i,l,n,k,m,h){var q=k.lineHeight,o=this.$getTop(l.start.row,k),p=this.$padding;var j=this.session.$bidiHandler.getSelections(l.start.column,l.end.column);j.forEach(function(r){i.push("<div class='",n,"' style='","height:",q,"px;","width:",r.width+(m||0),"px;","top:",o,"px;","left:",p+r.left,"px;",h||"","'></div>")})};this.drawFullLineMarker=function(l,i,k,j,n){var m=this.$getTop(i.start.row,j);var h=j.lineHeight;if(i.start.row!=i.end.row){h+=this.$getTop(i.end.row,j)-m}l.push("<div class='",k,"' style='","height:",h,"px;","top:",m,"px;","left:0;right:0;",n||"","'></div>")};this.drawScreenLineMarker=function(l,i,k,j,n){var m=this.$getTop(i.start.row,j);var h=j.lineHeight;l.push("<div class='",k,"' style='","height:",h,"px;","top:",m,"px;","left:0;right:0;",n||"","'></div>")}}).call(a.prototype);b.Marker=a});ace.define("ace/layer/text",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/lang","ace/lib/useragent","ace/lib/event_emitter"],function(e,g,b){var h=e("../lib/oop");var f=e("../lib/dom");var a=e("../lib/lang");var c=e("../lib/useragent");var i=e("../lib/event_emitter").EventEmitter;var d=function(j){this.element=f.createElement("div");this.element.className="ace_layer ace_text-layer";j.appendChild(this.element);this.$updateEolChar=this.$updateEolChar.bind(this)};(function(){h.implement(this,i);this.EOF_CHAR="\xB6";this.EOL_CHAR_LF="\xAC";this.EOL_CHAR_CRLF="\xa4";this.EOL_CHAR=this.EOL_CHAR_LF;this.TAB_CHAR="\u2014";this.SPACE_CHAR="\xB7";this.$padding=0;this.$updateEolChar=function(){var j=this.session.doc.getNewLineCharacter()=="\n"?this.EOL_CHAR_LF:this.EOL_CHAR_CRLF;if(this.EOL_CHAR!=j){this.EOL_CHAR=j;return true}};this.setPadding=function(j){this.$padding=j;this.element.style.padding="0 "+j+"px"};this.getLineHeight=function(){return this.$fontMetrics.$characterSize.height||0};this.getCharacterWidth=function(){return this.$fontMetrics.$characterSize.width||0};this.$setFontMetrics=function(j){this.$fontMetrics=j;this.$fontMetrics.on("changeCharacterSize",function(k){this._signal("changeCharacterSize",k)}.bind(this));this.$pollSizeChanges()};this.checkForSizeChanges=function(){this.$fontMetrics.checkForSizeChanges()};this.$pollSizeChanges=function(){return this.$pollSizeChangesTimer=this.$fontMetrics.$pollSizeChanges()};this.setSession=function(j){this.session=j;if(j){this.$computeTabString()}};this.showInvisibles=false;this.setShowInvisibles=function(j){if(this.showInvisibles==j){return false}this.showInvisibles=j;this.$computeTabString();return true};this.displayIndentGuides=true;this.setDisplayIndentGuides=function(j){if(this.displayIndentGuides==j){return false}this.displayIndentGuides=j;this.$computeTabString();return true};this.$tabStrings=[];this.onChangeTabSize=this.$computeTabString=function(){var o=this.session.getTabSize();this.tabSize=o;var j=this.$tabStrings=[0];for(var l=1;l<o+1;l++){if(this.showInvisibles){j.push("<span class='ace_invisible ace_invisible_tab'>"+a.stringRepeat(this.TAB_CHAR,l)+"</span>")}else{j.push(a.stringRepeat(" ",l))}}if(this.displayIndentGuides){this.$indentGuideRe=/\s\S| \t|\t |\s$/;var m="ace_indent-guide";var q="";var k="";if(this.showInvisibles){m+=" ace_invisible";q=" ace_invisible_space";k=" ace_invisible_tab";var p=a.stringRepeat(this.SPACE_CHAR,this.tabSize);var n=a.stringRepeat(this.TAB_CHAR,this.tabSize)}else{var p=a.stringRepeat(" ",this.tabSize);var n=p}this.$tabStrings[" "]="<span class='"+m+q+"'>"+p+"</span>";this.$tabStrings["\t"]="<span class='"+m+k+"'>"+n+"</span>"}};this.updateLines=function(k,m,u){if(this.config.lastRow!=k.lastRow||this.config.firstRow!=k.firstRow){this.scrollLines(k)}this.config=k;var p=Math.max(m,k.firstRow);var r=Math.min(u,k.lastRow);var s=this.element.childNodes;var j=0;for(var t=k.firstRow;t<p;t++){var q=this.session.getFoldLine(t);if(q){if(q.containsRow(p)){p=q.start.row;break}else{t=q.end.row}}j++}var t=p;var q=this.session.getNextFoldLine(t);var n=q?q.start.row:Infinity;while(true){if(t>n){t=q.end.row+1;q=this.session.getNextFoldLine(t,q);n=q?q.start.row:Infinity}if(t>r){break}var l=s[j++];if(l){var o=[];this.$renderLine(o,t,!this.$useLineGroups(),t==n?q:false);l.style.height=k.lineHeight*this.session.getRowLength(t)+"px";l.innerHTML=o.join("")}t++}};this.scrollLines=function(l){var j=this.config;this.config=l;if(!j||j.lastRow<l.firstRow){return this.update(l)}if(l.lastRow<j.firstRow){return this.update(l)}var m=this.element;if(j.firstRow<l.firstRow){for(var n=this.session.getFoldedRowCount(j.firstRow,l.firstRow-1);n>0;n--){m.removeChild(m.firstChild)}}if(j.lastRow>l.lastRow){for(var n=this.session.getFoldedRowCount(l.lastRow+1,j.lastRow);n>0;n--){m.removeChild(m.lastChild)}}if(l.firstRow<j.firstRow){var k=this.$renderLinesFragment(l,l.firstRow,j.firstRow-1);if(m.firstChild){m.insertBefore(k,m.firstChild)}else{m.appendChild(k)}}if(l.lastRow>j.lastRow){var k=this.$renderLinesFragment(l,j.lastRow+1,l.lastRow);m.appendChild(k)}};this.$renderLinesFragment=function(k,l,r){var o=this.element.ownerDocument.createDocumentFragment();var q=l;var p=this.session.getNextFoldLine(q);var m=p?p.start.row:Infinity;while(true){if(q>m){q=p.end.row+1;p=this.session.getNextFoldLine(q,p);m=p?p.start.row:Infinity}if(q>r){break}var j=f.createElement("div");var n=[];this.$renderLine(n,q,false,q==m?p:false);j.innerHTML=n.join("");if(this.$useLineGroups()){j.className="ace_line_group";o.appendChild(j);j.style.height=k.lineHeight*this.session.getRowLength(q)+"px"}else{while(j.firstChild){o.appendChild(j.firstChild)}}q++}return o};this.update=function(k){this.config=k;var l=[];var p=k.firstRow,m=k.lastRow;var o=p;var n=this.session.getNextFoldLine(o);var j=n?n.start.row:Infinity;while(true){if(o>j){o=n.end.row+1;n=this.session.getNextFoldLine(o,n);j=n?n.start.row:Infinity}if(o>m){break}if(this.$useLineGroups()){l.push("<div class='ace_line_group' style='height:",k.lineHeight*this.session.getRowLength(o),"px'>")}this.$renderLine(l,o,false,o==j?n:false);if(this.$useLineGroups()){l.push("</div>")}o++}this.element.innerHTML=l.join("")};this.$textToken={"text":true,"rparen":true,"lparen":true};this.$renderToken=function(l,q,p,s){var t=this;var j=/\t|&|<|>|( +)|([\x00-\x1f\x80-\xa0\xad\u1680\u180E\u2000-\u200f\u2028\u2029\u202F\u205F\u3000\uFEFF\uFFF9-\uFFFC])|[\u1100-\u115F\u11A3-\u11A7\u11FA-\u11FF\u2329-\u232A\u2E80-\u2E99\u2E9B-\u2EF3\u2F00-\u2FD5\u2FF0-\u2FFB\u3000-\u303E\u3041-\u3096\u3099-\u30FF\u3105-\u312D\u3131-\u318E\u3190-\u31BA\u31C0-\u31E3\u31F0-\u321E\u3220-\u3247\u3250-\u32FE\u3300-\u4DBF\u4E00-\uA48C\uA490-\uA4C6\uA960-\uA97C\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFAFF\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE66\uFE68-\uFE6B\uFF01-\uFF60\uFFE0-\uFFE6]|[\uD800-\uDBFF][\uDC00-\uDFFF]/g;var n=j;j=/\t|&|<|>|( +)|([\x00-\x1f\x80-\xa0\xad\u1680\u180E\u2000-\u200f\u2028\u2029\u202F\u205F\u3000\uFEFF\uFFF9-\uFFFC])|[\u1100-\u115F\u11A3-\u11A7\u11FA-\u11FF\u2329-\u232A\u2E80-\u2E99\u2E9B-\u2EF3\u2F00-\u2FD5\u2FF0-\u2FFB\u3000-\u303E\u3041-\u3096\u3099-\u30FF\u3105-\u312D\u3131-\u318E\u3190-\u31BA\u31C0-\u31E3\u31F0-\u321E\u3220-\u3247\u3250-\u32FE\u3300-\u4DBF\u4E00-\uA48C\uA490-\uA4C6\uA960-\uA97C\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFAFF\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE66\uFE68-\uFE6B\uFF01-\uFF60\uFFE0-\uFFE6]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\u1100-\uFFFF]/g;var r=function(B,w,v,x,u){if(w){return t.showInvisibles?"<span class='ace_invisible ace_invisible_space'>"+a.stringRepeat(t.SPACE_CHAR,B.length)+"</span>":B}else{if(B=="&"){return"&#38;"}else{if(B=="<"){return"&#60;"}else{if(B==">"){return"&#62;"}else{if(!B.match(n)&&B.match(j)){q+=1;return"<span class='ace_cjk' style='width:"+(t.config.characterWidth)+"px'>"+B+"</span>"}else{if(B=="\t"){var z=t.session.getScreenTabSize(q+x);q+=z-1;return t.$tabStrings[z]}else{if(B=="\u3000"){var A=t.showInvisibles?"ace_cjk ace_invisible ace_invisible_space":"ace_cjk";var y=t.showInvisibles?t.SPACE_CHAR:"";q+=1;return"<span class='"+A+"' style='width:"+(t.config.characterWidth*2)+"px'>"+y+"</span>"}else{if(v){return"<span class='ace_invisible ace_invisible_space ace_invalid'>"+t.SPACE_CHAR+"</span>"}else{q+=1;return"<span class='ace_cjk' style='width:"+(t.config.characterWidth*2)+"px'>"+B+"</span>"}}}}}}}}};var m=s.replace(j,r);if(!this.$textToken[p.type]){var o="ace_"+p.type.replace(/\./g," ace_");var k="";if(p.type=="fold"){k=" style='width:"+(p.value.length*this.config.characterWidth)+"px;' "}l.push("<span class='",o,"'",k,">",m,"</span>")}else{l.push(m)}return q+s.length};this.renderIndentGuide=function(l,k,j){var m=k.search(this.$indentGuideRe);if(m<=0||m>=j){return k}if(k[0]==" "){m-=m%this.tabSize;l.push(a.stringRepeat(this.$tabStrings[" "],m/this.tabSize));return k.substr(m)}else{if(k[0]=="\t"){l.push(a.stringRepeat(this.$tabStrings["\t"],m));return k.substr(m)}}return k};this.$renderWrappedLine=function(j,p,t,k){var q=0;var r=0;var l=t[0];var o=0;for(var n=0;n<p.length;n++){var m=p[n];var s=m.value;if(n==0&&this.displayIndentGuides){q=s.length;s=this.renderIndentGuide(j,s,l);if(!s){continue}q-=s.length}if(q+s.length<l){o=this.$renderToken(j,o,m,s);q+=s.length}else{while(q+s.length>=l){o=this.$renderToken(j,o,m,s.substring(0,l-q));s=s.substring(l-q);q=l;if(!k){j.push("</div>","<div class='ace_line' style='height:",this.config.lineHeight,"px'>")}j.push(a.stringRepeat("\xa0",t.indent));r++;o=0;l=t[r]||Number.MAX_VALUE}if(s.length!=0){q+=s.length;o=this.$renderToken(j,o,m,s)}}}};this.$renderSimpleLine=function(n,o){var l=0;var k=o[0];var m=k.value;if(this.displayIndentGuides){m=this.renderIndentGuide(n,m)}if(m){l=this.$renderToken(n,l,k,m)}for(var j=1;j<o.length;j++){k=o[j];m=k.value;l=this.$renderToken(n,l,k,m)}};this.$renderLine=function(k,o,j,n){if(!n&&n!=false){n=this.session.getFoldLine(o)}if(n){var m=this.$getFoldLineTokens(o,n)}else{var m=this.session.getTokens(o)}if(!j){k.push("<div class='ace_line' style='height:",this.config.lineHeight*(this.$useLineGroups()?1:this.session.getRowLength(o)),"px'>")}if(m.length){var l=this.session.getRowSplitData(o);if(l&&l.length){this.$renderWrappedLine(k,m,l,j)}else{this.$renderSimpleLine(k,m)}}if(this.showInvisibles){if(n){o=n.end.row}k.push("<span class='ace_invisible ace_invisible_eol'>",o==this.session.getLength()-1?this.EOF_CHAR:this.EOL_CHAR,"</span>")}if(!j){k.push("</div>")}};this.$getFoldLineTokens=function(n,m){var l=this.session;var j=[];function o(s,u,t){var p=0,q=0;while((q+s[p].value.length)<u){q+=s[p].value.length;p++;if(p==s.length){return}}if(q!=u){var r=s[p].value.substring(u-q);if(r.length>(t-u)){r=r.substring(0,t-u)}j.push({type:s[p].type,value:r});q=u+r.length;p+=1}while(q<t&&p<s.length){var r=s[p].value;if(r.length+q>t){j.push({type:s[p].type,value:r.substring(0,t-q)})}else{j.push(s[p])}q+=r.length;p+=1}}var k=l.getTokens(n);m.walk(function(t,s,r,q,p){if(t!=null){j.push({type:"fold",value:t})}else{if(p){k=l.getTokens(s)}if(k.length){o(k,q,r)}}},m.end.row,this.session.getLine(m.end.row).length);return j};this.$useLineGroups=function(){return this.session.getUseWrapMode()};this.destroy=function(){clearInterval(this.$pollSizeChangesTimer);if(this.$measureNode){this.$measureNode.parentNode.removeChild(this.$measureNode)}delete this.$measureNode}}).call(d.prototype);g.Text=d});ace.define("ace/layer/cursor",["require","exports","module","ace/lib/dom"],function(b,a,c){var f=b("../lib/dom");var e;var d=function(g){this.element=f.createElement("div");this.element.className="ace_layer ace_cursor-layer";g.appendChild(this.element);if(e===undefined){e=!("opacity" in this.element.style)}this.isVisible=false;this.isBlinking=true;this.blinkInterval=1000;this.smoothBlinking=false;this.cursors=[];this.cursor=this.addCursor();f.addCssClass(this.element,"ace_hidden-cursors");this.$updateCursors=(e?this.$updateVisibility:this.$updateOpacity).bind(this)};(function(){this.$updateVisibility=function(j){var h=this.cursors;for(var g=h.length;g--;){h[g].style.visibility=j?"":"hidden"}};this.$updateOpacity=function(j){var h=this.cursors;for(var g=h.length;g--;){h[g].style.opacity=j?"":"0"}};this.$padding=0;this.setPadding=function(g){this.$padding=g};this.setSession=function(g){this.session=g};this.setBlinking=function(g){if(g!=this.isBlinking){this.isBlinking=g;this.restartTimer()}};this.setBlinkInterval=function(g){if(g!=this.blinkInterval){this.blinkInterval=g;this.restartTimer()}};this.setSmoothBlinking=function(g){if(g!=this.smoothBlinking&&!e){this.smoothBlinking=g;f.setCssClass(this.element,"ace_smooth-blinking",g);this.$updateCursors(true);this.$updateCursors=(this.$updateOpacity).bind(this);this.restartTimer()}};this.addCursor=function(){var g=f.createElement("div");g.className="ace_cursor";this.element.appendChild(g);this.cursors.push(g);return g};this.removeCursor=function(){if(this.cursors.length>1){var g=this.cursors.pop();g.parentNode.removeChild(g);return g}};this.hideCursor=function(){this.isVisible=false;f.addCssClass(this.element,"ace_hidden-cursors");this.restartTimer()};this.showCursor=function(){this.isVisible=true;f.removeCssClass(this.element,"ace_hidden-cursors");this.restartTimer()};this.restartTimer=function(){var h=this.$updateCursors;clearInterval(this.intervalId);clearTimeout(this.timeoutId);if(this.smoothBlinking){f.removeCssClass(this.element,"ace_smooth-blinking")}h(true);if(!this.isBlinking||!this.blinkInterval||!this.isVisible){return}if(this.smoothBlinking){setTimeout(function(){f.addCssClass(this.element,"ace_smooth-blinking")}.bind(this))}var g=function(){this.timeoutId=setTimeout(function(){h(false)},0.6*this.blinkInterval)}.bind(this);this.intervalId=setInterval(function(){h(true);g()},this.blinkInterval);g()};this.getPixelPosition=function(g,h){if(!this.config||!this.session){return{left:0,top:0}}if(!g){g=this.session.selection.getCursor()}var k=this.session.documentToScreenPosition(g);var i=this.$padding+(this.session.$bidiHandler.isBidiRow(k.row,g.row)?this.session.$bidiHandler.getPosLeft(k.column):k.column*this.config.characterWidth);var j=(k.row-(h?this.config.firstRowScreen:0))*this.config.lineHeight;return{left:i,top:j}};this.update=function(h){this.config=h;var l=this.session.$selectionMarkers;var j=0,o=0;if(l===undefined||l.length===0){l=[{cursor:null}]}for(var j=0,p=l.length;j<p;j++){var m=this.getPixelPosition(l[j].cursor,true);if((m.top>h.height+h.offset||m.top<0)&&j>1){continue}var k=(this.cursors[o++]||this.addCursor()).style;if(!this.drawCursor){k.left=m.left+"px";k.top=m.top+"px";k.width=h.characterWidth+"px";k.height=h.lineHeight+"px"}else{this.drawCursor(k,m,h,l[j],this.session)}}while(this.cursors.length>o){this.removeCursor()}var g=this.session.getOverwrite();this.$setOverwrite(g);this.$pixelPos=m;this.restartTimer()};this.drawCursor=null;this.$setOverwrite=function(g){if(g!=this.overwrite){this.overwrite=g;if(g){f.addCssClass(this.element,"ace_overwrite-cursors")}else{f.removeCssClass(this.element,"ace_overwrite-cursors")}}};this.destroy=function(){clearInterval(this.intervalId);clearTimeout(this.timeoutId)}}).call(d.prototype);a.Cursor=d});ace.define("ace/scrollbar",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/event","ace/lib/event_emitter"],function(d,f,b){var h=d("./lib/oop");var e=d("./lib/dom");var a=d("./lib/event");var k=d("./lib/event_emitter").EventEmitter;var i=32768;var c=function(l){this.element=e.createElement("div");this.element.className="ace_scrollbar ace_scrollbar"+this.classSuffix;this.inner=e.createElement("div");this.inner.className="ace_scrollbar-inner";this.element.appendChild(this.inner);l.appendChild(this.element);this.setVisible(false);this.skipEvent=false;a.addListener(this.element,"scroll",this.onScroll.bind(this));a.addListener(this.element,"mousedown",a.preventDefault)};(function(){h.implement(this,k);this.setVisible=function(l){this.element.style.display=l?"":"none";this.isVisible=l;this.coeff=1}}).call(c.prototype);var g=function(l,m){c.call(this,l);this.scrollTop=0;this.scrollHeight=0;m.$scrollbarWidth=this.width=e.scrollbarWidth(l.ownerDocument);this.inner.style.width=this.element.style.width=(this.width||15)+5+"px";this.$minWidth=0};h.inherits(g,c);(function(){this.classSuffix="-v";this.onScroll=function(){if(!this.skipEvent){this.scrollTop=this.element.scrollTop;if(this.coeff!=1){var l=this.element.clientHeight/this.scrollHeight;this.scrollTop=this.scrollTop*(1-l)/(this.coeff-l)}this._emit("scroll",{data:this.scrollTop})}this.skipEvent=false};this.getWidth=function(){return Math.max(this.isVisible?this.width:0,this.$minWidth||0)};this.setHeight=function(l){this.element.style.height=l+"px"};this.setInnerHeight=this.setScrollHeight=function(l){this.scrollHeight=l;if(l>i){this.coeff=i/l;l=i}else{if(this.coeff!=1){this.coeff=1}}this.inner.style.height=l+"px"};this.setScrollTop=function(l){if(this.scrollTop!=l){this.skipEvent=true;this.scrollTop=l;this.element.scrollTop=l*this.coeff}}}).call(g.prototype);var j=function(l,m){c.call(this,l);this.scrollLeft=0;this.height=m.$scrollbarWidth;this.inner.style.height=this.element.style.height=(this.height||15)+5+"px"};h.inherits(j,c);(function(){this.classSuffix="-h";this.onScroll=function(){if(!this.skipEvent){this.scrollLeft=this.element.scrollLeft;this._emit("scroll",{data:this.scrollLeft})}this.skipEvent=false};this.getHeight=function(){return this.isVisible?this.height:0};this.setWidth=function(l){this.element.style.width=l+"px"};this.setInnerWidth=function(l){this.inner.style.width=l+"px"};this.setScrollWidth=function(l){this.inner.style.width=l+"px"};this.setScrollLeft=function(l){if(this.scrollLeft!=l){this.skipEvent=true;this.scrollLeft=this.element.scrollLeft=l}}}).call(j.prototype);f.ScrollBar=g;f.ScrollBarV=g;f.ScrollBarH=j;f.VScrollBar=g;f.HScrollBar=j});ace.define("ace/renderloop",["require","exports","module","ace/lib/event"],function(b,a,c){var d=b("./lib/event");var e=function(g,f){this.onRender=g;this.pending=false;this.changes=0;this.window=f||window};(function(){this.schedule=function(g){this.changes=this.changes|g;if(!this.pending&&this.changes){this.pending=true;var f=this;d.nextFrame(function(){f.pending=false;var h;while(h=f.changes){f.changes=0;f.onRender(h)}},this.window)}}}).call(e.prototype);a.RenderLoop=e});ace.define("ace/layer/font_metrics",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/lang","ace/lib/useragent","ace/lib/event_emitter"],function(d,f,b){var h=d("../lib/oop");var e=d("../lib/dom");var a=d("../lib/lang");var c=d("../lib/useragent");var j=d("../lib/event_emitter").EventEmitter;var i=0;var g=f.FontMetrics=function(k){this.el=e.createElement("div");this.$setMeasureNodeStyles(this.el.style,true);this.$main=e.createElement("div");this.$setMeasureNodeStyles(this.$main.style);this.$measureNode=e.createElement("div");this.$setMeasureNodeStyles(this.$measureNode.style);this.el.appendChild(this.$main);this.el.appendChild(this.$measureNode);k.appendChild(this.el);if(!i){this.$testFractionalRect()}this.$measureNode.innerHTML=a.stringRepeat("X",i);this.$characterSize={width:0,height:0};this.checkForSizeChanges()
 };(function(){h.implement(this,j);this.$characterSize={width:0,height:0};this.$testFractionalRect=function(){var l=e.createElement("div");this.$setMeasureNodeStyles(l.style);l.style.width="0.2px";document.documentElement.appendChild(l);var k=l.getBoundingClientRect().width;if(k>0&&k<1){i=50}else{i=100}l.parentNode.removeChild(l)};this.$setMeasureNodeStyles=function(l,k){l.width=l.height="auto";l.left=l.top="0px";l.visibility="hidden";l.position="absolute";l.whiteSpace="pre";if(c.isIE<8){l["font-family"]="inherit"}else{l.font="inherit"}l.overflow=k?"hidden":"visible"};this.checkForSizeChanges=function(){var l=this.$measureSizes();if(l&&(this.$characterSize.width!==l.width||this.$characterSize.height!==l.height)){this.$measureNode.style.fontWeight="bold";var k=this.$measureSizes();this.$measureNode.style.fontWeight="";this.$characterSize=l;this.charSizes=Object.create(null);this.allowBoldFonts=k&&k.width===l.width&&k.height===l.height;this._emit("changeCharacterSize",{data:l})}};this.$pollSizeChanges=function(){if(this.$pollSizeChangesTimer){return this.$pollSizeChangesTimer}var k=this;return this.$pollSizeChangesTimer=setInterval(function(){k.checkForSizeChanges()},500)};this.setPolling=function(k){if(k){this.$pollSizeChanges()}else{if(this.$pollSizeChangesTimer){clearInterval(this.$pollSizeChangesTimer);this.$pollSizeChangesTimer=0}}};this.$measureSizes=function(){if(i===50){var l=null;try{l=this.$measureNode.getBoundingClientRect()}catch(m){l={width:0,height:0}}var k={height:l.height,width:l.width/i}}else{var k={height:this.$measureNode.clientHeight,width:this.$measureNode.clientWidth/i}}if(k.width===0||k.height===0){return null}return k};this.$measureCharWidth=function(k){this.$main.innerHTML=a.stringRepeat(k,i);var l=this.$main.getBoundingClientRect();return l.width/i};this.getCharacterWidth=function(l){var k=this.charSizes[l];if(k===undefined){k=this.charSizes[l]=this.$measureCharWidth(l)/this.$characterSize.width}return k};this.destroy=function(){clearInterval(this.$pollSizeChangesTimer);if(this.el&&this.el.parentNode){this.el.parentNode.removeChild(this.el)}}}).call(g.prototype)});ace.define("ace/virtual_renderer",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/config","ace/lib/useragent","ace/layer/gutter","ace/layer/marker","ace/layer/text","ace/layer/cursor","ace/scrollbar","ace/scrollbar","ace/renderloop","ace/layer/font_metrics","ace/lib/event_emitter"],function(d,r,a){var n=d("./lib/oop");var m=d("./lib/dom");var q=d("./config");var j=d("./lib/useragent");var k=d("./layer/gutter").Gutter;var b=d("./layer/marker").Marker;var g=d("./layer/text").Text;var o=d("./layer/cursor").Cursor;var e=d("./scrollbar").HScrollBar;var h=d("./scrollbar").VScrollBar;var p=d("./renderloop").RenderLoop;var l=d("./layer/font_metrics").FontMetrics;var c=d("./lib/event_emitter").EventEmitter;var i='.ace_editor {position: relative;overflow: hidden;font: 12px/normal \'Monaco\', \'Menlo\', \'Ubuntu Mono\', \'Consolas\', \'source-code-pro\', monospace;direction: ltr;text-align: left;-webkit-tap-highlight-color: rgba(0, 0, 0, 0);}.ace_scroller {position: absolute;overflow: hidden;top: 0;bottom: 0;background-color: inherit;-ms-user-select: none;-moz-user-select: none;-webkit-user-select: none;user-select: none;cursor: text;}.ace_content {position: absolute;-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;min-width: 100%;}.ace_dragging .ace_scroller:before{position: absolute;top: 0;left: 0;right: 0;bottom: 0;content: \'\';background: rgba(250, 250, 250, 0.01);z-index: 1000;}.ace_dragging.ace_dark .ace_scroller:before{background: rgba(0, 0, 0, 0.01);}.ace_selecting, .ace_selecting * {cursor: text !important;}.ace_gutter {position: absolute;overflow : hidden;width: auto;top: 0;bottom: 0;left: 0;cursor: default;z-index: 4;-ms-user-select: none;-moz-user-select: none;-webkit-user-select: none;user-select: none;}.ace_gutter-active-line {position: absolute;left: 0;right: 0;}.ace_scroller.ace_scroll-left {box-shadow: 17px 0 16px -16px rgba(0, 0, 0, 0.4) inset;}.ace_gutter-cell {padding-left: 19px;padding-right: 6px;background-repeat: no-repeat;}.ace_gutter-cell.ace_error {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAABOFBMVEX/////////QRswFAb/Ui4wFAYwFAYwFAaWGAfDRymzOSH/PxswFAb/SiUwFAYwFAbUPRvjQiDllog5HhHdRybsTi3/Tyv9Tir+Syj/UC3////XurebMBIwFAb/RSHbPx/gUzfdwL3kzMivKBAwFAbbvbnhPx66NhowFAYwFAaZJg8wFAaxKBDZurf/RB6mMxb/SCMwFAYwFAbxQB3+RB4wFAb/Qhy4Oh+4QifbNRcwFAYwFAYwFAb/QRzdNhgwFAYwFAbav7v/Uy7oaE68MBK5LxLewr/r2NXewLswFAaxJw4wFAbkPRy2PyYwFAaxKhLm1tMwFAazPiQwFAaUGAb/QBrfOx3bvrv/VC/maE4wFAbRPBq6MRO8Qynew8Dp2tjfwb0wFAbx6eju5+by6uns4uH9/f36+vr/GkHjAAAAYnRSTlMAGt+64rnWu/bo8eAA4InH3+DwoN7j4eLi4xP99Nfg4+b+/u9B/eDs1MD1mO7+4PHg2MXa347g7vDizMLN4eG+Pv7i5evs/v79yu7S3/DV7/498Yv24eH+4ufQ3Ozu/v7+y13sRqwAAADLSURBVHjaZc/XDsFgGIBhtDrshlitmk2IrbHFqL2pvXf/+78DPokj7+Fz9qpU/9UXJIlhmPaTaQ6QPaz0mm+5gwkgovcV6GZzd5JtCQwgsxoHOvJO15kleRLAnMgHFIESUEPmawB9ngmelTtipwwfASilxOLyiV5UVUyVAfbG0cCPHig+GBkzAENHS0AstVF6bacZIOzgLmxsHbt2OecNgJC83JERmePUYq8ARGkJx6XtFsdddBQgZE2nPR6CICZhawjA4Fb/chv+399kfR+MMMDGOQAAAABJRU5ErkJggg==");background-repeat: no-repeat;background-position: 2px center;}.ace_gutter-cell.ace_warning {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAmVBMVEX///8AAAD///8AAAAAAABPSzb/5sAAAAB/blH/73z/ulkAAAAAAAD85pkAAAAAAAACAgP/vGz/rkDerGbGrV7/pkQICAf////e0IsAAAD/oED/qTvhrnUAAAD/yHD/njcAAADuv2r/nz//oTj/p064oGf/zHAAAAA9Nir/tFIAAAD/tlTiuWf/tkIAAACynXEAAAAAAAAtIRW7zBpBAAAAM3RSTlMAABR1m7RXO8Ln31Z36zT+neXe5OzooRDfn+TZ4p3h2hTf4t3k3ucyrN1K5+Xaks52Sfs9CXgrAAAAjklEQVR42o3PbQ+CIBQFYEwboPhSYgoYunIqqLn6/z8uYdH8Vmdnu9vz4WwXgN/xTPRD2+sgOcZjsge/whXZgUaYYvT8QnuJaUrjrHUQreGczuEafQCO/SJTufTbroWsPgsllVhq3wJEk2jUSzX3CUEDJC84707djRc5MTAQxoLgupWRwW6UB5fS++NV8AbOZgnsC7BpEAAAAABJRU5ErkJggg==");background-position: 2px center;}.ace_gutter-cell.ace_info {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAAAAAA6mKC9AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAAJ0Uk5TAAB2k804AAAAPklEQVQY02NgIB68QuO3tiLznjAwpKTgNyDbMegwisCHZUETUZV0ZqOquBpXj2rtnpSJT1AEnnRmL2OgGgAAIKkRQap2htgAAAAASUVORK5CYII=");background-position: 2px center;}.ace_dark .ace_gutter-cell.ace_info {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQBAMAAADt3eJSAAAAJFBMVEUAAAChoaGAgIAqKiq+vr6tra1ZWVmUlJSbm5s8PDxubm56enrdgzg3AAAAAXRSTlMAQObYZgAAAClJREFUeNpjYMAPdsMYHegyJZFQBlsUlMFVCWUYKkAZMxZAGdxlDMQBAG+TBP4B6RyJAAAAAElFTkSuQmCC");}.ace_scrollbar {position: absolute;right: 0;bottom: 0;z-index: 6;}.ace_scrollbar-inner {position: absolute;cursor: text;left: 0;top: 0;}.ace_scrollbar-v{overflow-x: hidden;overflow-y: scroll;top: 0;}.ace_scrollbar-h {overflow-x: scroll;overflow-y: hidden;left: 0;}.ace_print-margin {position: absolute;height: 100%;}.ace_text-input {position: absolute;z-index: 0;width: 0.5em;height: 1em;opacity: 0;background: transparent;-moz-appearance: none;appearance: none;border: none;resize: none;outline: none;overflow: hidden;font: inherit;padding: 0 1px;margin: 0 -1px;text-indent: -1em;-ms-user-select: text;-moz-user-select: text;-webkit-user-select: text;user-select: text;white-space: pre!important;}.ace_text-input.ace_composition {background: inherit;color: inherit;z-index: 1000;opacity: 1;text-indent: 0;}.ace_layer {z-index: 1;position: absolute;overflow: hidden;word-wrap: normal;white-space: pre;height: 100%;width: 100%;-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;pointer-events: none;}.ace_gutter-layer {position: relative;width: auto;text-align: right;pointer-events: auto;}.ace_text-layer {font: inherit !important;}.ace_cjk {display: inline-block;text-align: center;}.ace_cursor-layer {z-index: 4;}.ace_cursor {z-index: 4;position: absolute;-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;border-left: 2px solid;transform: translatez(0);}.ace_multiselect .ace_cursor {border-left-width: 1px;}.ace_slim-cursors .ace_cursor {border-left-width: 1px;}.ace_overwrite-cursors .ace_cursor {border-left-width: 0;border-bottom: 1px solid;}.ace_hidden-cursors .ace_cursor {opacity: 0.2;}.ace_smooth-blinking .ace_cursor {-webkit-transition: opacity 0.18s;transition: opacity 0.18s;}.ace_marker-layer .ace_step, .ace_marker-layer .ace_stack {position: absolute;z-index: 3;}.ace_marker-layer .ace_selection {position: absolute;z-index: 5;}.ace_marker-layer .ace_bracket {position: absolute;z-index: 6;}.ace_marker-layer .ace_active-line {position: absolute;z-index: 2;}.ace_marker-layer .ace_selected-word {position: absolute;z-index: 4;-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;}.ace_line .ace_fold {-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;display: inline-block;height: 11px;margin-top: -2px;vertical-align: middle;background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAJCAYAAADU6McMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJpJREFUeNpi/P//PwOlgAXGYGRklAVSokD8GmjwY1wasKljQpYACtpCFeADcHVQfQyMQAwzwAZI3wJKvCLkfKBaMSClBlR7BOQikCFGQEErIH0VqkabiGCAqwUadAzZJRxQr/0gwiXIal8zQQPnNVTgJ1TdawL0T5gBIP1MUJNhBv2HKoQHHjqNrA4WO4zY0glyNKLT2KIfIMAAQsdgGiXvgnYAAAAASUVORK5CYII="),url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAA3CAYAAADNNiA5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACJJREFUeNpi+P//fxgTAwPDBxDxD078RSX+YeEyDFMCIMAAI3INmXiwf2YAAAAASUVORK5CYII=");background-repeat: no-repeat, repeat-x;background-position: center center, top left;color: transparent;border: 1px solid black;border-radius: 2px;cursor: pointer;pointer-events: auto;}.ace_dark .ace_fold {}.ace_fold:hover{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAJCAYAAADU6McMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJpJREFUeNpi/P//PwOlgAXGYGRklAVSokD8GmjwY1wasKljQpYACtpCFeADcHVQfQyMQAwzwAZI3wJKvCLkfKBaMSClBlR7BOQikCFGQEErIH0VqkabiGCAqwUadAzZJRxQr/0gwiXIal8zQQPnNVTgJ1TdawL0T5gBIP1MUJNhBv2HKoQHHjqNrA4WO4zY0glyNKLT2KIfIMAAQsdgGiXvgnYAAAAASUVORK5CYII="),url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAA3CAYAAADNNiA5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACBJREFUeNpi+P//fz4TAwPDZxDxD5X4i5fLMEwJgAADAEPVDbjNw87ZAAAAAElFTkSuQmCC");}.ace_tooltip {background-color: #FFF;background-image: -webkit-linear-gradient(top, transparent, rgba(0, 0, 0, 0.1));background-image: linear-gradient(to bottom, transparent, rgba(0, 0, 0, 0.1));border: 1px solid gray;border-radius: 1px;box-shadow: 0 1px 2px rgba(0, 0, 0, 0.3);color: black;max-width: 100%;padding: 3px 4px;position: fixed;z-index: 999999;-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;cursor: default;white-space: pre;word-wrap: break-word;line-height: normal;font-style: normal;font-weight: normal;letter-spacing: normal;pointer-events: none;}.ace_folding-enabled > .ace_gutter-cell {padding-right: 13px;}.ace_fold-widget {-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;margin: 0 -12px 0 1px;display: none;width: 11px;vertical-align: top;background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAANElEQVR42mWKsQ0AMAzC8ixLlrzQjzmBiEjp0A6WwBCSPgKAXoLkqSot7nN3yMwR7pZ32NzpKkVoDBUxKAAAAABJRU5ErkJggg==");background-repeat: no-repeat;background-position: center;border-radius: 3px;border: 1px solid transparent;cursor: pointer;}.ace_folding-enabled .ace_fold-widget {display: inline-block;   }.ace_fold-widget.ace_end {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAANElEQVR42m3HwQkAMAhD0YzsRchFKI7sAikeWkrxwScEB0nh5e7KTPWimZki4tYfVbX+MNl4pyZXejUO1QAAAABJRU5ErkJggg==");}.ace_fold-widget.ace_closed {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAGCAYAAAAG5SQMAAAAOUlEQVR42jXKwQkAMAgDwKwqKD4EwQ26sSOkVWjgIIHAzPiCgaqiqnJHZnKICBERHN194O5b9vbLuAVRL+l0YWnZAAAAAElFTkSuQmCCXA==");}.ace_fold-widget:hover {border: 1px solid rgba(0, 0, 0, 0.3);background-color: rgba(255, 255, 255, 0.2);box-shadow: 0 1px 1px rgba(255, 255, 255, 0.7);}.ace_fold-widget:active {border: 1px solid rgba(0, 0, 0, 0.4);background-color: rgba(0, 0, 0, 0.05);box-shadow: 0 1px 1px rgba(255, 255, 255, 0.8);}.ace_dark .ace_fold-widget {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHklEQVQIW2P4//8/AzoGEQ7oGCaLLAhWiSwB146BAQCSTPYocqT0AAAAAElFTkSuQmCC");}.ace_dark .ace_fold-widget.ace_end {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAH0lEQVQIW2P4//8/AxQ7wNjIAjDMgC4AxjCVKBirIAAF0kz2rlhxpAAAAABJRU5ErkJggg==");}.ace_dark .ace_fold-widget.ace_closed {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAFCAYAAACAcVaiAAAAHElEQVQIW2P4//+/AxAzgDADlOOAznHAKgPWAwARji8UIDTfQQAAAABJRU5ErkJggg==");}.ace_dark .ace_fold-widget:hover {box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);background-color: rgba(255, 255, 255, 0.1);}.ace_dark .ace_fold-widget:active {box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);}.ace_fold-widget.ace_invalid {background-color: #FFB4B4;border-color: #DE5555;}.ace_fade-fold-widgets .ace_fold-widget {-webkit-transition: opacity 0.4s ease 0.05s;transition: opacity 0.4s ease 0.05s;opacity: 0;}.ace_fade-fold-widgets:hover .ace_fold-widget {-webkit-transition: opacity 0.05s ease 0.05s;transition: opacity 0.05s ease 0.05s;opacity:1;}.ace_underline {text-decoration: underline;}.ace_bold {font-weight: bold;}.ace_nobold .ace_bold {font-weight: normal;}.ace_italic {font-style: italic;}.ace_error-marker {background-color: rgba(255, 0, 0,0.2);position: absolute;z-index: 9;}.ace_highlight-marker {background-color: rgba(255, 255, 0,0.2);position: absolute;z-index: 8;}.ace_br1 {border-top-left-radius    : 3px;}.ace_br2 {border-top-right-radius   : 3px;}.ace_br3 {border-top-left-radius    : 3px; border-top-right-radius:    3px;}.ace_br4 {border-bottom-right-radius: 3px;}.ace_br5 {border-top-left-radius    : 3px; border-bottom-right-radius: 3px;}.ace_br6 {border-top-right-radius   : 3px; border-bottom-right-radius: 3px;}.ace_br7 {border-top-left-radius    : 3px; border-top-right-radius:    3px; border-bottom-right-radius: 3px;}.ace_br8 {border-bottom-left-radius : 3px;}.ace_br9 {border-top-left-radius    : 3px; border-bottom-left-radius:  3px;}.ace_br10{border-top-right-radius   : 3px; border-bottom-left-radius:  3px;}.ace_br11{border-top-left-radius    : 3px; border-top-right-radius:    3px; border-bottom-left-radius:  3px;}.ace_br12{border-bottom-right-radius: 3px; border-bottom-left-radius:  3px;}.ace_br13{border-top-left-radius    : 3px; border-bottom-right-radius: 3px; border-bottom-left-radius:  3px;}.ace_br14{border-top-right-radius   : 3px; border-bottom-right-radius: 3px; border-bottom-left-radius:  3px;}.ace_br15{border-top-left-radius    : 3px; border-top-right-radius:    3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;}.ace_text-input-ios {position: absolute !important;top: -100000px !important;left: -100000px !important;}';m.importCssString(i,"ace_editor.css");var f=function(t,v){var s=this;this.container=t||m.createElement("div");this.$keepTextAreaAtCursor=!j.isOldIE;m.addCssClass(this.container,"ace_editor");this.setTheme(v);this.$gutter=m.createElement("div");this.$gutter.className="ace_gutter";this.container.appendChild(this.$gutter);this.$gutter.setAttribute("aria-hidden",true);this.scroller=m.createElement("div");this.scroller.className="ace_scroller";this.container.appendChild(this.scroller);this.content=m.createElement("div");this.content.className="ace_content";this.scroller.appendChild(this.content);this.$gutterLayer=new k(this.$gutter);this.$gutterLayer.on("changeGutterWidth",this.onGutterResize.bind(this));this.$markerBack=new b(this.content);var u=this.$textLayer=new g(this.content);this.canvas=u.element;this.$markerFront=new b(this.content);this.$cursorLayer=new o(this.content);this.$horizScroll=false;this.$vScroll=false;this.scrollBar=this.scrollBarV=new h(this.container,this);this.scrollBarH=new e(this.container,this);this.scrollBarV.addEventListener("scroll",function(w){if(!s.$scrollAnimation){s.session.setScrollTop(w.data-s.scrollMargin.top)}});this.scrollBarH.addEventListener("scroll",function(w){if(!s.$scrollAnimation){s.session.setScrollLeft(w.data-s.scrollMargin.left)}});this.scrollTop=0;this.scrollLeft=0;this.cursorPos={row:0,column:0};this.$fontMetrics=new l(this.container);this.$textLayer.$setFontMetrics(this.$fontMetrics);this.$textLayer.addEventListener("changeCharacterSize",function(w){s.updateCharacterSize();s.onResize(true,s.gutterWidth,s.$size.width,s.$size.height);s._signal("changeCharacterSize",w)});this.$size={width:0,height:0,scrollerHeight:0,scrollerWidth:0,$dirty:true};this.layerConfig={width:1,padding:0,firstRow:0,firstRowScreen:0,lastRow:0,lineHeight:0,characterWidth:0,minHeight:1,maxHeight:1,offset:0,height:1,gutterOffset:1};this.scrollMargin={left:0,right:0,top:0,bottom:0,v:0,h:0};this.$loop=new p(this.$renderChanges.bind(this),this.container.ownerDocument.defaultView);this.$loop.schedule(this.CHANGE_FULL);this.updateCharacterSize();this.setPadding(4);q.resetOptions(this);q._emit("renderer",this)};(function(){this.CHANGE_CURSOR=1;this.CHANGE_MARKER=2;this.CHANGE_GUTTER=4;this.CHANGE_SCROLL=8;this.CHANGE_LINES=16;this.CHANGE_TEXT=32;this.CHANGE_SIZE=64;this.CHANGE_MARKER_BACK=128;this.CHANGE_MARKER_FRONT=256;this.CHANGE_FULL=512;this.CHANGE_H_SCROLL=1024;n.implement(this,c);this.updateCharacterSize=function(){if(this.$textLayer.allowBoldFonts!=this.$allowBoldFonts){this.$allowBoldFonts=this.$textLayer.allowBoldFonts;this.setStyle("ace_nobold",!this.$allowBoldFonts)}this.layerConfig.characterWidth=this.characterWidth=this.$textLayer.getCharacterWidth();this.layerConfig.lineHeight=this.lineHeight=this.$textLayer.getLineHeight();this.$updatePrintMargin()};this.setSession=function(s){if(this.session){this.session.doc.off("changeNewLineMode",this.onChangeNewLineMode)}this.session=s;if(s&&this.scrollMargin.top&&s.getScrollTop()<=0){s.setScrollTop(-this.scrollMargin.top)}this.$cursorLayer.setSession(s);this.$markerBack.setSession(s);this.$markerFront.setSession(s);this.$gutterLayer.setSession(s);this.$textLayer.setSession(s);if(!s){return}this.$loop.schedule(this.CHANGE_FULL);this.session.$setFontMetrics(this.$fontMetrics);this.scrollBarH.scrollLeft=this.scrollBarV.scrollTop=null;this.onChangeNewLineMode=this.onChangeNewLineMode.bind(this);this.onChangeNewLineMode();this.session.doc.on("changeNewLineMode",this.onChangeNewLineMode)};this.updateLines=function(u,s,t){if(s===undefined){s=Infinity}if(!this.$changedLines){this.$changedLines={firstRow:u,lastRow:s}}else{if(this.$changedLines.firstRow>u){this.$changedLines.firstRow=u}if(this.$changedLines.lastRow<s){this.$changedLines.lastRow=s}}if(this.$changedLines.lastRow<this.layerConfig.firstRow){if(t){this.$changedLines.lastRow=this.layerConfig.lastRow}else{return}}if(this.$changedLines.firstRow>this.layerConfig.lastRow){return}this.$loop.schedule(this.CHANGE_LINES)};this.onChangeNewLineMode=function(){this.$loop.schedule(this.CHANGE_TEXT);this.$textLayer.$updateEolChar();this.session.$bidiHandler.setEolChar(this.$textLayer.EOL_CHAR)};this.onChangeTabSize=function(){this.$loop.schedule(this.CHANGE_TEXT|this.CHANGE_MARKER);this.$textLayer.onChangeTabSize()};this.updateText=function(){this.$loop.schedule(this.CHANGE_TEXT)};this.updateFull=function(s){if(s){this.$renderChanges(this.CHANGE_FULL,true)}else{this.$loop.schedule(this.CHANGE_FULL)}};this.updateFontSize=function(){this.$textLayer.checkForSizeChanges()};this.$changes=0;this.$updateSizeAsync=function(){if(this.$loop.pending){this.$size.$dirty=true}else{this.onResize()}};this.onResize=function(x,t,w,s){if(this.resizing>2){return}else{if(this.resizing>0){this.resizing++}else{this.resizing=x?1:0}}var v=this.container;if(!s){s=v.clientHeight||v.scrollHeight}if(!w){w=v.clientWidth||v.scrollWidth}var u=this.$updateCachedSize(x,t,w,s);if(!this.$size.scrollerHeight||(!w&&!s)){return this.resizing=0}if(x){this.$gutterLayer.$padding=null}if(x){this.$renderChanges(u|this.$changes,true)}else{this.$loop.schedule(u|this.$changes)}if(this.resizing){this.resizing=0}this.scrollBarV.scrollLeft=this.scrollBarV.scrollTop=null};this.$updateCachedSize=function(y,u,w,s){s-=(this.$extraHeight||0);var v=0;var t=this.$size;var x={width:t.width,height:t.height,scrollerHeight:t.scrollerHeight,scrollerWidth:t.scrollerWidth};if(s&&(y||t.height!=s)){t.height=s;v|=this.CHANGE_SIZE;t.scrollerHeight=t.height;if(this.$horizScroll){t.scrollerHeight-=this.scrollBarH.getHeight()}this.scrollBarV.element.style.bottom=this.scrollBarH.getHeight()+"px";v=v|this.CHANGE_SCROLL}if(w&&(y||t.width!=w)){v|=this.CHANGE_SIZE;t.width=w;if(u==null){u=this.$showGutter?this.$gutter.offsetWidth:0}this.gutterWidth=u;this.scrollBarH.element.style.left=this.scroller.style.left=u+"px";t.scrollerWidth=Math.max(0,w-u-this.scrollBarV.getWidth());this.scrollBarH.element.style.right=this.scroller.style.right=this.scrollBarV.getWidth()+"px";this.scroller.style.bottom=this.scrollBarH.getHeight()+"px";if(this.session&&this.session.getUseWrapMode()&&this.adjustWrapLimit()||y){v|=this.CHANGE_FULL}}t.$dirty=!w||!s;if(v){this._signal("resize",x)}return v};this.onGutterResize=function(){var s=this.$showGutter?this.$gutter.offsetWidth:0;if(s!=this.gutterWidth){this.$changes|=this.$updateCachedSize(true,s,this.$size.width,this.$size.height)}if(this.session.getUseWrapMode()&&this.adjustWrapLimit()){this.$loop.schedule(this.CHANGE_FULL)}else{if(this.$size.$dirty){this.$loop.schedule(this.CHANGE_FULL)}else{this.$computeLayerConfig();this.$loop.schedule(this.CHANGE_MARKER)}}};this.adjustWrapLimit=function(){var t=this.$size.scrollerWidth-this.$padding*2;var s=Math.floor(t/this.characterWidth);return this.session.adjustWrapLimit(s,this.$showPrintMargin&&this.$printMarginColumn)};this.setAnimatedScroll=function(s){this.setOption("animatedScroll",s)};this.getAnimatedScroll=function(){return this.$animatedScroll};this.setShowInvisibles=function(s){this.setOption("showInvisibles",s);this.session.$bidiHandler.setShowInvisibles(s)};this.getShowInvisibles=function(){return this.getOption("showInvisibles")};this.getDisplayIndentGuides=function(){return this.getOption("displayIndentGuides")};this.setDisplayIndentGuides=function(s){this.setOption("displayIndentGuides",s)};this.setShowPrintMargin=function(s){this.setOption("showPrintMargin",s)};this.getShowPrintMargin=function(){return this.getOption("showPrintMargin")};this.setPrintMarginColumn=function(s){this.setOption("printMarginColumn",s)};this.getPrintMarginColumn=function(){return this.getOption("printMarginColumn")};this.getShowGutter=function(){return this.getOption("showGutter")};this.setShowGutter=function(s){return this.setOption("showGutter",s)};this.getFadeFoldWidgets=function(){return this.getOption("fadeFoldWidgets")};this.setFadeFoldWidgets=function(s){this.setOption("fadeFoldWidgets",s)};this.setHighlightGutterLine=function(s){this.setOption("highlightGutterLine",s)};this.getHighlightGutterLine=function(){return this.getOption("highlightGutterLine")};this.$updateGutterLineHighlight=function(){var u=this.$cursorLayer.$pixelPos;var s=this.layerConfig.lineHeight;if(this.session.getUseWrapMode()){var t=this.session.selection.getCursor();t.column=0;u=this.$cursorLayer.getPixelPosition(t,true);s*=this.session.getRowLength(t.row)}this.$gutterLineHighlight.style.top=u.top-this.layerConfig.offset+"px";this.$gutterLineHighlight.style.height=s+"px"};this.$updatePrintMargin=function(){if(!this.$showPrintMargin&&!this.$printMarginEl){return}if(!this.$printMarginEl){var t=m.createElement("div");t.className="ace_layer ace_print-margin-layer";this.$printMarginEl=m.createElement("div");this.$printMarginEl.className="ace_print-margin";t.appendChild(this.$printMarginEl);this.content.insertBefore(t,this.content.firstChild)}var s=this.$printMarginEl.style;s.left=((this.characterWidth*this.$printMarginColumn)+this.$padding)+"px";s.visibility=this.$showPrintMargin?"visible":"hidden";if(this.session&&this.session.$wrap==-1){this.adjustWrapLimit()}};this.getContainerElement=function(){return this.container};this.getMouseEventTarget=function(){return this.scroller};this.getTextAreaContainer=function(){return this.container};this.$moveTextAreaToCursor=function(){if(!this.$keepTextAreaAtCursor){return}var u=this.layerConfig;var y=this.$cursorLayer.$pixelPos.top;var s=this.$cursorLayer.$pixelPos.left;y-=u.offset;var x=this.textarea.style;var v=this.lineHeight;if(y<0||y>u.height-v){x.top=x.left="0";return}var t=this.characterWidth;if(this.$composition){var z=this.textarea.value.replace(/^\x01+/,"");t*=(this.session.$getStringScreenWidth(z)[0]+2);v+=2}s-=this.scrollLeft;if(s>this.$size.scrollerWidth-t){s=this.$size.scrollerWidth-t}s+=this.gutterWidth;x.height=v+"px";x.width=t+"px";x.left=Math.min(s,this.$size.scrollerWidth-t)+"px";x.top=Math.min(y,this.$size.height-v)+"px"};this.getFirstVisibleRow=function(){return this.layerConfig.firstRow};this.getFirstFullyVisibleRow=function(){return this.layerConfig.firstRow+(this.layerConfig.offset===0?0:1)};this.getLastFullyVisibleRow=function(){var s=this.layerConfig;var t=s.lastRow;var u=this.session.documentToScreenRow(t,0)*s.lineHeight;if(u-this.session.getScrollTop()>s.height-s.lineHeight){return t-1}return t};this.getLastVisibleRow=function(){return this.layerConfig.lastRow};this.$padding=null;this.setPadding=function(s){this.$padding=s;this.$textLayer.setPadding(s);this.$cursorLayer.setPadding(s);this.$markerFront.setPadding(s);this.$markerBack.setPadding(s);this.$loop.schedule(this.CHANGE_FULL);this.$updatePrintMargin()};this.setScrollMargin=function(v,s,u,t){var w=this.scrollMargin;w.top=v|0;w.bottom=s|0;w.right=t|0;w.left=u|0;w.v=w.top+w.bottom;w.h=w.left+w.right;if(w.top&&this.scrollTop<=0&&this.session){this.session.setScrollTop(-w.top)}this.updateFull()};this.getHScrollBarAlwaysVisible=function(){return this.$hScrollBarAlwaysVisible};this.setHScrollBarAlwaysVisible=function(s){this.setOption("hScrollBarAlwaysVisible",s)};this.getVScrollBarAlwaysVisible=function(){return this.$vScrollBarAlwaysVisible};this.setVScrollBarAlwaysVisible=function(s){this.setOption("vScrollBarAlwaysVisible",s)};this.$updateScrollBarV=function(){var s=this.layerConfig.maxHeight;var t=this.$size.scrollerHeight;if(!this.$maxLines&&this.$scrollPastEnd){s-=(t-this.lineHeight)*this.$scrollPastEnd;if(this.scrollTop>s-t){s=this.scrollTop+t;this.scrollBarV.scrollTop=null}}this.scrollBarV.setScrollHeight(s+this.scrollMargin.v);this.scrollBarV.setScrollTop(this.scrollTop+this.scrollMargin.top)};this.$updateScrollBarH=function(){this.scrollBarH.setScrollWidth(this.layerConfig.width+2*this.$padding+this.scrollMargin.h);this.scrollBarH.setScrollLeft(this.scrollLeft+this.scrollMargin.left)};this.$frozen=false;this.freeze=function(){this.$frozen=true};this.unfreeze=function(){this.$frozen=false};this.$renderChanges=function(u,v){if(this.$changes){u|=this.$changes;this.$changes=0}if((!this.session||!this.container.offsetWidth||this.$frozen)||(!u&&!v)){this.$changes|=u;return}if(this.$size.$dirty){this.$changes|=u;return this.onResize(true)}if(!this.lineHeight){this.$textLayer.checkForSizeChanges()}this._signal("beforeRender");if(this.session&&this.session.$bidiHandler){this.session.$bidiHandler.updateCharacterWidths(this.$fontMetrics)}var t=this.layerConfig;if(u&this.CHANGE_FULL||u&this.CHANGE_SIZE||u&this.CHANGE_TEXT||u&this.CHANGE_LINES||u&this.CHANGE_SCROLL||u&this.CHANGE_H_SCROLL){u|=this.$computeLayerConfig();if(t.firstRow!=this.layerConfig.firstRow&&t.firstRowScreen==this.layerConfig.firstRowScreen){var s=this.scrollTop+(t.firstRow-this.layerConfig.firstRow)*this.lineHeight;if(s>0){this.scrollTop=s;u=u|this.CHANGE_SCROLL;u|=this.$computeLayerConfig()}}t=this.layerConfig;this.$updateScrollBarV();if(u&this.CHANGE_H_SCROLL){this.$updateScrollBarH()}this.$gutterLayer.element.style.marginTop=(-t.offset)+"px";this.content.style.marginTop=(-t.offset)+"px";this.content.style.width=t.width+2*this.$padding+"px";this.content.style.height=t.minHeight+"px"}if(u&this.CHANGE_H_SCROLL){this.content.style.marginLeft=-this.scrollLeft+"px";this.scroller.className=this.scrollLeft<=0?"ace_scroller":"ace_scroller ace_scroll-left"}if(u&this.CHANGE_FULL){this.$textLayer.update(t);if(this.$showGutter){this.$gutterLayer.update(t)}this.$markerBack.update(t);this.$markerFront.update(t);this.$cursorLayer.update(t);this.$moveTextAreaToCursor();this.$highlightGutterLine&&this.$updateGutterLineHighlight();this._signal("afterRender");return}if(u&this.CHANGE_SCROLL){if(u&this.CHANGE_TEXT||u&this.CHANGE_LINES){this.$textLayer.update(t)}else{this.$textLayer.scrollLines(t)}if(this.$showGutter){this.$gutterLayer.update(t)}this.$markerBack.update(t);this.$markerFront.update(t);this.$cursorLayer.update(t);this.$highlightGutterLine&&this.$updateGutterLineHighlight();this.$moveTextAreaToCursor();this._signal("afterRender");return}if(u&this.CHANGE_TEXT){this.$textLayer.update(t);if(this.$showGutter){this.$gutterLayer.update(t)}}else{if(u&this.CHANGE_LINES){if(this.$updateLines()||(u&this.CHANGE_GUTTER)&&this.$showGutter){this.$gutterLayer.update(t)}}else{if(u&this.CHANGE_TEXT||u&this.CHANGE_GUTTER){if(this.$showGutter){this.$gutterLayer.update(t)}}}}if(u&this.CHANGE_CURSOR){this.$cursorLayer.update(t);this.$moveTextAreaToCursor();this.$highlightGutterLine&&this.$updateGutterLineHighlight()}if(u&(this.CHANGE_MARKER|this.CHANGE_MARKER_FRONT)){this.$markerFront.update(t)}if(u&(this.CHANGE_MARKER|this.CHANGE_MARKER_BACK)){this.$markerBack.update(t)}this._signal("afterRender")};this.$autosize=function(){var s=this.session.getScreenLength()*this.lineHeight;var x=this.$maxLines*this.lineHeight;var v=Math.min(x,Math.max((this.$minLines||1)*this.lineHeight,s))+this.scrollMargin.v+(this.$extraHeight||0);if(this.$horizScroll){v+=this.scrollBarH.getHeight()}if(this.$maxPixelHeight&&v>this.$maxPixelHeight){v=this.$maxPixelHeight}var u=s>x;if(v!=this.desiredHeight||this.$size.height!=this.desiredHeight||u!=this.$vScroll){if(u!=this.$vScroll){this.$vScroll=u;this.scrollBarV.setVisible(u)}var t=this.container.clientWidth;this.container.style.height=v+"px";this.$updateCachedSize(true,this.$gutterWidth,t,v);this.desiredHeight=v;this._signal("autosize")}};this.$computeLayerConfig=function(){var t=this.session;var F=this.$size;var J=F.height<=2*this.lineHeight;var u=this.session.getScreenLength();var G=u*this.lineHeight;var M=this.$getLongestLine();var x=!J&&(this.$hScrollBarAlwaysVisible||F.scrollerWidth-M-2*this.$padding<0);var N=this.$horizScroll!==x;if(N){this.$horizScroll=x;this.scrollBarH.setVisible(x)}var z=this.$vScroll;if(this.$maxLines&&this.lineHeight>1){this.$autosize()}var w=this.scrollTop%this.lineHeight;var y=F.scrollerHeight+this.lineHeight;var C=!this.$maxLines&&this.$scrollPastEnd?(F.scrollerHeight-this.lineHeight)*this.$scrollPastEnd:0;G+=C;var K=this.scrollMargin;this.session.setScrollTop(Math.max(-K.top,Math.min(this.scrollTop,G-F.scrollerHeight+K.bottom)));this.session.setScrollLeft(Math.max(-K.left,Math.min(this.scrollLeft,M+2*this.$padding-F.scrollerWidth+K.right)));var A=!J&&(this.$vScrollBarAlwaysVisible||F.scrollerHeight-G+C<0||this.scrollTop>K.top);var B=z!==A;if(B){this.$vScroll=A;this.scrollBarV.setVisible(A)}var H=Math.ceil(y/this.lineHeight)-1;var s=Math.max(0,Math.round((this.scrollTop-w)/this.lineHeight));var I=s+H;var D,E;var v=this.lineHeight;s=t.screenToDocumentRow(s,0);var L=t.getFoldLine(s);if(L){s=L.start.row}D=t.documentToScreenRow(s,0);E=t.getRowLength(s)*v;I=Math.min(t.screenToDocumentRow(I,0),t.getLength()-1);y=F.scrollerHeight+t.getRowLength(I)*v+E;w=this.scrollTop-D*v;var O=0;if(this.layerConfig.width!=M){O=this.CHANGE_H_SCROLL}if(N||B){O=this.$updateCachedSize(true,this.gutterWidth,F.width,F.height);this._signal("scrollbarVisibilityChanged");if(B){M=this.$getLongestLine()}}this.layerConfig={width:M,padding:this.$padding,firstRow:s,firstRowScreen:D,lastRow:I,lineHeight:v,characterWidth:this.characterWidth,minHeight:y,maxHeight:G,offset:w,gutterOffset:v?Math.max(0,Math.ceil((w+F.height-F.scrollerHeight)/v)):0,height:this.$size.scrollerHeight};return O};this.$updateLines=function(){if(!this.$changedLines){return}var u=this.$changedLines.firstRow;var t=this.$changedLines.lastRow;this.$changedLines=null;var s=this.layerConfig;if(u>s.lastRow+1){return}if(t<s.firstRow){return}if(t===Infinity){if(this.$showGutter){this.$gutterLayer.update(s)}this.$textLayer.update(s);return}this.$textLayer.updateLines(s,u,t);return true};this.$getLongestLine=function(){var s=this.session.getScreenWidth();if(this.showInvisibles&&!this.session.$useWrapMode){s+=1}return Math.max(this.$size.scrollerWidth-2*this.$padding,Math.round(s*this.characterWidth))};this.updateFrontMarkers=function(){this.$markerFront.setMarkers(this.session.getMarkers(true));this.$loop.schedule(this.CHANGE_MARKER_FRONT)};this.updateBackMarkers=function(){this.$markerBack.setMarkers(this.session.getMarkers());this.$loop.schedule(this.CHANGE_MARKER_BACK)};this.addGutterDecoration=function(t,s){this.$gutterLayer.addGutterDecoration(t,s)};this.removeGutterDecoration=function(t,s){this.$gutterLayer.removeGutterDecoration(t,s)};this.updateBreakpoints=function(s){this.$loop.schedule(this.CHANGE_GUTTER)};this.setAnnotations=function(s){this.$gutterLayer.setAnnotations(s);this.$loop.schedule(this.CHANGE_GUTTER)};this.updateCursor=function(){this.$loop.schedule(this.CHANGE_CURSOR)};this.hideCursor=function(){this.$cursorLayer.hideCursor()};this.showCursor=function(){this.$cursorLayer.showCursor()};this.scrollSelectionIntoView=function(t,s,u){this.scrollCursorIntoView(t,u);this.scrollCursorIntoView(s,u)};this.scrollCursorIntoView=function(B,x,w){if(this.$size.scrollerHeight===0){return}var z=this.$cursorLayer.getPixelPosition(B);var u=z.left;var A=z.top;var y=w&&w.top||0;var s=w&&w.bottom||0;var t=this.$scrollAnimation?this.session.getScrollTop():this.scrollTop;if(t+y>A){if(x&&t+y>A+this.lineHeight){A-=x*this.$size.scrollerHeight}if(A===0){A=-this.scrollMargin.top}this.session.setScrollTop(A)}else{if(t+this.$size.scrollerHeight-s<A+this.lineHeight){if(x&&t+this.$size.scrollerHeight-s<A-this.lineHeight){A+=x*this.$size.scrollerHeight}this.session.setScrollTop(A+this.lineHeight-this.$size.scrollerHeight)}}var v=this.scrollLeft;if(v>u){if(u<this.$padding+2*this.layerConfig.characterWidth){u=-this.scrollMargin.left}this.session.setScrollLeft(u)}else{if(v+this.$size.scrollerWidth<u+this.characterWidth){this.session.setScrollLeft(Math.round(u+this.characterWidth-this.$size.scrollerWidth))}else{if(v<=this.$padding&&u-v<this.characterWidth){this.session.setScrollLeft(0)}}}};this.getScrollTop=function(){return this.session.getScrollTop()};this.getScrollLeft=function(){return this.session.getScrollLeft()};this.getScrollTopRow=function(){return this.scrollTop/this.lineHeight};this.getScrollBottomRow=function(){return Math.max(0,Math.floor((this.scrollTop+this.$size.scrollerHeight)/this.lineHeight)-1)};this.scrollToRow=function(s){this.session.setScrollTop(s*this.lineHeight)};this.alignCursor=function(u,w){if(typeof u=="number"){u={row:u,column:0}}var v=this.$cursorLayer.getPixelPosition(u);var s=this.$size.scrollerHeight-this.lineHeight;var t=v.top-s*(w||0);this.session.setScrollTop(t);return t};this.STEPS=8;this.$calcSteps=function(x,t){var v=0;var s=this.STEPS;var u=[];var w=function(z,A,y){return y*(Math.pow(z-1,3)+1)+A};for(v=0;v<s;++v){u.push(w(v/this.STEPS,x,t-x))}return u};this.scrollToLine=function(t,s,u,y){var x=this.$cursorLayer.getPixelPosition({row:t,column:0});var w=x.top;if(s){w-=this.$size.scrollerHeight/2}var v=this.scrollTop;this.session.setScrollTop(w);if(u!==false){this.animateScrolling(v,y)}};this.animateScrolling=function(w,x){var t=this.scrollTop;if(!this.$animatedScroll){return}var s=this;if(w==t){return}if(this.$scrollAnimation){var v=this.$scrollAnimation.steps;if(v.length){w=v[0];if(w==t){return}}}var u=s.$calcSteps(w,t);this.$scrollAnimation={from:w,to:t,steps:u};clearInterval(this.$timer);s.session.setScrollTop(u.shift());s.session.$scrollTop=t;this.$timer=setInterval(function(){if(u.length){s.session.setScrollTop(u.shift());s.session.$scrollTop=t}else{if(t!=null){s.session.$scrollTop=-1;s.session.setScrollTop(t);t=null}else{s.$timer=clearInterval(s.$timer);s.$scrollAnimation=null;x&&x()}}},10)};this.scrollToY=function(s){if(this.scrollTop!==s){this.$loop.schedule(this.CHANGE_SCROLL);this.scrollTop=s}};this.scrollToX=function(s){if(this.scrollLeft!==s){this.scrollLeft=s}this.$loop.schedule(this.CHANGE_H_SCROLL)};this.scrollTo=function(s,t){this.session.setScrollTop(t);this.session.setScrollLeft(t)};this.scrollBy=function(t,s){s&&this.session.setScrollTop(this.session.getScrollTop()+s);t&&this.session.setScrollLeft(this.session.getScrollLeft()+t)};this.isScrollableBy=function(t,s){if(s<0&&this.session.getScrollTop()>=1-this.scrollMargin.top){return true}if(s>0&&this.session.getScrollTop()+this.$size.scrollerHeight-this.layerConfig.maxHeight<-1+this.scrollMargin.bottom){return true}if(t<0&&this.session.getScrollLeft()>=1-this.scrollMargin.left){return true}if(t>0&&this.session.getScrollLeft()+this.$size.scrollerWidth-this.layerConfig.width<-1+this.scrollMargin.right){return true}};this.pixelToScreenCoordinates=function(t,A){var v=this.scroller.getBoundingClientRect();var s=t+this.scrollLeft-v.left-this.$padding;var z=s/this.characterWidth;var w=Math.floor((A+this.scrollTop-v.top)/this.lineHeight);var u=Math.round(z);return{row:w,column:u,side:z-u>0?1:-1,offsetX:s}};this.screenToTextCoordinates=function(t,z){var v=this.scroller.getBoundingClientRect();var s=t+this.scrollLeft-v.left-this.$padding;var u=Math.round(s/this.characterWidth);var w=(z+this.scrollTop-v.top)/this.lineHeight;return this.session.screenToDocumentPosition(w,Math.max(u,0),s)};this.textToScreenCoordinates=function(v,u){var t=this.scroller.getBoundingClientRect();var z=this.session.documentToScreenPosition(v,u);var s=this.$padding+(this.session.$bidiHandler.isBidiRow(z.row,v)?this.session.$bidiHandler.getPosLeft(z.column):Math.round(z.column*this.characterWidth));var w=z.row*this.lineHeight;return{pageX:t.left+s-this.scrollLeft,pageY:t.top+w-this.scrollTop}};this.visualizeFocus=function(){m.addCssClass(this.container,"ace_focus")};this.visualizeBlur=function(){m.removeCssClass(this.container,"ace_focus")};this.showComposition=function(s){if(!this.$composition){this.$composition={keepTextAreaAtCursor:this.$keepTextAreaAtCursor,cssText:this.textarea.style.cssText}}this.$keepTextAreaAtCursor=true;m.addCssClass(this.textarea,"ace_composition");this.textarea.style.cssText="";this.$moveTextAreaToCursor()};this.setCompositionText=function(s){this.$moveTextAreaToCursor()};this.hideComposition=function(){if(!this.$composition){return}m.removeCssClass(this.textarea,"ace_composition");this.$keepTextAreaAtCursor=this.$composition.keepTextAreaAtCursor;this.textarea.style.cssText=this.$composition.cssText;this.$composition=null};this.setTheme=function(v,t){var s=this;this.$themeId=v;s._dispatchEvent("themeChange",{theme:v});if(!v||typeof v=="string"){var u=v||this.$options.theme.initialValue;q.loadModule(["theme",u],w)}else{w(v)}function w(x){if(s.$themeId!=v){return t&&t()}if(!x||!x.cssClass){throw new Error("couldn't load module "+v+" or it didn't call define")}m.importCssString(x.cssText,x.cssClass,s.container.ownerDocument);if(s.theme){m.removeCssClass(s.container,s.theme.cssClass)}var y="padding" in x?x.padding:"padding" in (s.theme||{})?4:s.$padding;if(s.$padding&&y!=s.$padding){s.setPadding(y)}s.$theme=x.cssClass;s.theme=x;m.addCssClass(s.container,x.cssClass);m.setCssClass(s.container,"ace_dark",x.isDark);if(s.$size){s.$size.width=0;s.$updateSizeAsync()}s._dispatchEvent("themeLoaded",{theme:x});t&&t()}};this.getTheme=function(){return this.$themeId};this.setStyle=function(t,s){m.setCssClass(this.container,t,s!==false)};this.unsetStyle=function(s){m.removeCssClass(this.container,s)};this.setCursorStyle=function(s){if(this.scroller.style.cursor!=s){this.scroller.style.cursor=s}};this.setMouseCursor=function(s){this.scroller.style.cursor=s};this.destroy=function(){this.$textLayer.destroy();this.$cursorLayer.destroy()}}).call(f.prototype);q.defineOptions(f.prototype,"renderer",{animatedScroll:{initialValue:false},showInvisibles:{set:function(s){if(this.$textLayer.setShowInvisibles(s)){this.$loop.schedule(this.CHANGE_TEXT)}},initialValue:false},showPrintMargin:{set:function(){this.$updatePrintMargin()},initialValue:true},printMarginColumn:{set:function(){this.$updatePrintMargin()},initialValue:80},printMargin:{set:function(s){if(typeof s=="number"){this.$printMarginColumn=s}this.$showPrintMargin=!!s;this.$updatePrintMargin()},get:function(){return this.$showPrintMargin&&this.$printMarginColumn}},showGutter:{set:function(s){this.$gutter.style.display=s?"block":"none";this.$loop.schedule(this.CHANGE_FULL);this.onGutterResize()},initialValue:true},fadeFoldWidgets:{set:function(s){m.setCssClass(this.$gutter,"ace_fade-fold-widgets",s)},initialValue:false},showFoldWidgets:{set:function(s){this.$gutterLayer.setShowFoldWidgets(s)},initialValue:true},showLineNumbers:{set:function(s){this.$gutterLayer.setShowLineNumbers(s);this.$loop.schedule(this.CHANGE_GUTTER)},initialValue:true},displayIndentGuides:{set:function(s){if(this.$textLayer.setDisplayIndentGuides(s)){this.$loop.schedule(this.CHANGE_TEXT)}},initialValue:true},highlightGutterLine:{set:function(s){if(!this.$gutterLineHighlight){this.$gutterLineHighlight=m.createElement("div");this.$gutterLineHighlight.className="ace_gutter-active-line";this.$gutter.appendChild(this.$gutterLineHighlight);return}this.$gutterLineHighlight.style.display=s?"":"none";if(this.$cursorLayer.$pixelPos){this.$updateGutterLineHighlight()}},initialValue:false,value:true},hScrollBarAlwaysVisible:{set:function(s){if(!this.$hScrollBarAlwaysVisible||!this.$horizScroll){this.$loop.schedule(this.CHANGE_SCROLL)}},initialValue:false},vScrollBarAlwaysVisible:{set:function(s){if(!this.$vScrollBarAlwaysVisible||!this.$vScroll){this.$loop.schedule(this.CHANGE_SCROLL)}},initialValue:false},fontSize:{set:function(s){if(typeof s=="number"){s=s+"px"}this.container.style.fontSize=s;this.updateFontSize()},initialValue:12},fontFamily:{set:function(s){this.container.style.fontFamily=s;this.updateFontSize()}},maxLines:{set:function(s){this.updateFull()}},minLines:{set:function(s){this.updateFull()}},maxPixelHeight:{set:function(s){this.updateFull()},initialValue:0},scrollPastEnd:{set:function(s){s=+s||0;if(this.$scrollPastEnd==s){return}this.$scrollPastEnd=s;this.$loop.schedule(this.CHANGE_SCROLL)},initialValue:0,handlesSet:true},fixedWidthGutter:{set:function(s){this.$gutterLayer.$fixedWidth=!!s;this.$loop.schedule(this.CHANGE_GUTTER)}},theme:{set:function(s){this.setTheme(s)},get:function(){return this.$themeId||this.theme},initialValue:"./theme/textmate",handlesSet:true}});r.VirtualRenderer=f});ace.define("ace/worker/worker_client",["require","exports","module","ace/lib/oop","ace/lib/net","ace/lib/event_emitter","ace/config"],function(d,e,b){var h=d("../lib/oop");var j=d("../lib/net");var k=d("../lib/event_emitter").EventEmitter;var c=d("../config");function f(n){var l="importScripts('"+j.qualifyURL(n)+"');";try{return new Blob([l],{"type":"application/javascript"})}catch(p){var o=window.BlobBuilder||window.WebKitBlobBuilder||window.MozBlobBuilder;var m=new o();m.append(l);return m.getBlob("application/javascript")}}function g(o){var m=f(o);var l=window.URL||window.webkitURL;var n=l.createObjectURL(m);return new Worker(n)}var a=function(o,n,r,p,l){this.$sendDeltaQueue=this.$sendDeltaQueue.bind(this);this.changeListener=this.changeListener.bind(this);this.onMessage=this.onMessage.bind(this);if(d.nameToUrl&&!d.toUrl){d.toUrl=d.nameToUrl}if(c.get("packaged")||!d.toUrl){p=p||c.moduleUrl(n,"worker")}else{var m=this.$normalizePath;p=p||m(d.toUrl("ace/worker/worker.js",null,"_"));var q={};o.forEach(function(s){q[s]=m(d.toUrl(s,null,"_").replace(/(\.js)?(\?.*)?$/,""))})}this.$worker=g(p);if(l){this.send("importScripts",l)}this.$worker.postMessage({init:true,tlns:q,module:n,classname:r});this.callbackId=1;this.callbacks={};this.$worker.onmessage=this.onMessage};(function(){h.implement(this,k);this.onMessage=function(l){var m=l.data;switch(m.type){case"event":this._signal(m.name,{data:m.data});break;case"call":var n=this.callbacks[m.id];if(n){n(m.data);delete this.callbacks[m.id]}break;case"error":this.reportError(m.data);break;case"log":window.console&&console.log&&console.log.apply(console,m.data);break}};this.reportError=function(l){window.console&&console.error&&console.error(l)};this.$normalizePath=function(l){return j.qualifyURL(l)};this.terminate=function(){this._signal("terminate",{});this.deltaQueue=null;this.$worker.terminate();this.$worker=null;if(this.$doc){this.$doc.off("change",this.changeListener)}this.$doc=null};this.send=function(m,l){this.$worker.postMessage({command:m,args:l})};this.call=function(m,l,o){if(o){var n=this.callbackId++;this.callbacks[n]=o;l.push(n)}this.send(m,l)};this.emit=function(m,n){try{this.$worker.postMessage({event:m,data:{data:n.data}})}catch(l){console.error(l.stack)}};this.attachToDocument=function(l){if(this.$doc){this.terminate()}this.$doc=l;this.call("setValue",[l.getValue()]);l.on("change",this.changeListener)};this.changeListener=function(l){if(!this.deltaQueue){this.deltaQueue=[];setTimeout(this.$sendDeltaQueue,0)}if(l.action=="insert"){this.deltaQueue.push(l.start,l.lines)}else{this.deltaQueue.push(l.start,l.end)}};this.$sendDeltaQueue=function(){var l=this.deltaQueue;if(!l){return}this.deltaQueue=null;if(l.length>50&&l.length>this.$doc.getLength()>>1){this.call("setValue",[this.$doc.getValue()])}else{this.emit("change",{data:l})}}}).call(a.prototype);var i=function(p,o,s){this.$sendDeltaQueue=this.$sendDeltaQueue.bind(this);this.changeListener=this.changeListener.bind(this);this.callbackId=1;this.callbacks={};this.messageBuffer=[];var m=null;var r=false;var n=Object.create(k);var l=this;this.$worker={};this.$worker.terminate=function(){};this.$worker.postMessage=function(t){l.messageBuffer.push(t);if(m){if(r){setTimeout(q)}else{q()}}};this.setEmitSync=function(t){r=t};var q=function(){var t=l.messageBuffer.shift();if(t.command){m[t.command].apply(m,t.args)}else{if(t.event){n._signal(t.event,t.data)}}};n.postMessage=function(t){l.onMessage({data:t})};n.callback=function(u,t){this.postMessage({type:"call",id:t,data:u})};n.emit=function(t,u){this.postMessage({type:"event",name:t,data:u})};c.loadModule(["worker",o],function(t){m=new t[s](n);while(l.messageBuffer.length){q()}})};i.prototype=a.prototype;e.UIWorkerClient=i;e.WorkerClient=a;e.createWorker=g});ace.define("ace/placeholder",["require","exports","module","ace/range","ace/lib/event_emitter","ace/lib/oop"],function(b,a,c){var f=b("./range").Range;var e=b("./lib/event_emitter").EventEmitter;var d=b("./lib/oop");var g=function(n,m,o,l,i,k){var h=this;this.length=m;this.session=n;this.doc=n.getDocument();this.mainClass=i;this.othersClass=k;this.$onUpdate=this.onUpdate.bind(this);this.doc.on("change",this.$onUpdate);this.$others=l;this.$onCursorChange=function(){setTimeout(function(){h.onCursorChange()})};this.$pos=o;var j=n.getUndoManager().$undoStack||n.getUndoManager().$undostack||{length:-1};this.$undoStackDepth=j.length;this.setup();n.selection.on("changeCursor",this.$onCursorChange)};(function(){d.implement(this,e);this.setup=function(){var h=this;var j=this.doc;var i=this.session;this.selectionBefore=i.selection.toJSON();if(i.selection.inMultiSelectMode){i.selection.toSingleRange()}this.pos=j.createAnchor(this.$pos.row,this.$pos.column);var k=this.pos;k.$insertRight=true;k.detach();k.markerId=i.addMarker(new f(k.row,k.column,k.row,k.column+this.length),this.mainClass,null,false);this.others=[];this.$others.forEach(function(l){var m=j.createAnchor(l.row,l.column);m.$insertRight=true;m.detach();h.others.push(m)});i.setUndoSelect(false)};this.showOtherMarkers=function(){if(this.othersActive){return}var i=this.session;var h=this;this.othersActive=true;this.others.forEach(function(j){j.markerId=i.addMarker(new f(j.row,j.column,j.row,j.column+h.length),h.othersClass,null,false)})};this.hideOtherMarkers=function(){if(!this.othersActive){return}this.othersActive=false;for(var h=0;h<this.others.length;h++){this.session.removeMarker(this.others[h].markerId)}};this.onUpdate=function(p){if(this.$updating){return this.updateAnchors(p)}var h=p;if(h.start.row!==h.end.row){return}if(h.start.row!==this.pos.row){return}this.$updating=true;var k=p.action==="insert"?h.end.column-h.start.column:h.start.column-h.end.column;var o=h.start.column>=this.pos.column&&h.start.column<=this.pos.column+this.length+1;var n=h.start.column-this.pos.column;this.updateAnchors(p);if(o){this.length+=k}if(o&&!this.session.$fromUndo){if(p.action==="insert"){for(var m=this.others.length-1;m>=0;m--){var j=this.others[m];var l={row:j.row,column:j.column+n};this.doc.insertMergedLines(l,p.lines)}}else{if(p.action==="remove"){for(var m=this.others.length-1;m>=0;m--){var j=this.others[m];var l={row:j.row,column:j.column+n};this.doc.remove(new f(l.row,l.column,l.row,l.column-k))}}}}this.$updating=false;this.updateMarkers()};this.updateAnchors=function(j){this.pos.onChange(j);for(var h=this.others.length;h--;){this.others[h].onChange(j)}this.updateMarkers()};this.updateMarkers=function(){if(this.$updating){return}var j=this;var l=this.session;var h=function(m,i){l.removeMarker(m.markerId);m.markerId=l.addMarker(new f(m.row,m.column,m.row,m.column+j.length),i,null,false)};h(this.pos,this.mainClass);for(var k=this.others.length;k--;){h(this.others[k],this.othersClass)}};this.onCursorChange=function(h){if(this.$updating||!this.session){return}var i=this.session.selection.getCursor();if(i.row===this.pos.row&&i.column>=this.pos.column&&i.column<=this.pos.column+this.length){this.showOtherMarkers();this._emit("cursorEnter",h)}else{this.hideOtherMarkers();
-this._emit("cursorLeave",h)}};this.detach=function(){this.session.removeMarker(this.pos&&this.pos.markerId);this.hideOtherMarkers();this.doc.removeEventListener("change",this.$onUpdate);this.session.selection.removeEventListener("changeCursor",this.$onCursorChange);this.session.setUndoSelect(true);this.session=null};this.cancel=function(){if(this.$undoStackDepth===-1){return}var k=this.session.getUndoManager();var h=(k.$undoStack||k.$undostack).length-this.$undoStackDepth;for(var j=0;j<h;j++){k.undo(true)}if(this.selectionBefore){this.session.selection.fromJSON(this.selectionBefore)}}}).call(g.prototype);a.PlaceHolder=g});ace.define("ace/mouse/multi_select_handler",["require","exports","module","ace/lib/event","ace/lib/useragent"],function(d,b,e){var f=d("../lib/event");var a=d("../lib/useragent");function c(i,h){return i.row==h.row&&i.column==h.column}function g(E){var F=E.domEvent;var H=F.altKey;var A=F.shiftKey;var u=F.ctrlKey;var w=E.getAccelKey();var h=E.getButton();if(h==1){h=0;H=true}if(u&&a.isMac){h=F.button}if(E.editor.inMultiSelectMode&&h==2){E.editor.textInput.onContextMenu(E.domEvent);return}if(!u&&!H&&!w){if(h===0&&E.editor.inMultiSelectMode){E.editor.exitMultiSelectMode()}return}if(h!==0){return}var n=E.editor;var I=n.selection;var G=n.inMultiSelectMode;var q=E.getDocumentPosition();var o=I.getCursor();var B=E.inSelection()||(I.isEmpty()&&c(q,o));var t=E.x,s=E.y;var p=function(J){t=J.clientX;s=J.clientY};var i=n.session;var m=n.renderer.pixelToScreenCoordinates(t,s);var y=m;var r;if(n.$mouseHandler.$enableJumpToDef){if(u&&H||w&&H){r=A?"block":"add"}else{if(H&&n.$blockSelectEnabled){r="block"}}}else{if(w&&!H){r="add";if(!G&&A){return}}else{if(H&&n.$blockSelectEnabled){r="block"}}}if(r&&a.isMac&&F.ctrlKey){n.$mouseHandler.cancelContextMenu()}if(r=="add"){if(!G&&B){return}if(!G){var z=I.toOrientedRange();n.addSelectionMarker(z)}var x=I.rangeList.rangeAtPoint(q);n.$blockScrolling++;n.inVirtualSelectionMode=true;if(A){x=null;z=I.ranges[0]||z;n.removeSelectionMarker(z)}n.once("mouseup",function(){var J=I.toOrientedRange();if(x&&J.isEmpty()&&c(x.cursor,J.cursor)){I.substractPoint(J.cursor)}else{if(A){I.substractPoint(z.cursor)}else{if(z){n.removeSelectionMarker(z);I.addRange(z)}}I.addRange(J)}n.$blockScrolling--;n.inVirtualSelectionMode=false})}else{if(r=="block"){E.stop();n.inVirtualSelectionMode=true;var l;var D=[];var k=function(){var K=n.renderer.pixelToScreenCoordinates(t,s);var J=i.screenToDocumentPosition(K.row,K.column,K.offsetX);if(c(y,K)&&c(J,I.lead)){return}y=K;n.$blockScrolling++;n.selection.moveToPosition(J);n.renderer.scrollCursorIntoView();n.removeSelectionMarkers(D);D=I.rectangularRangeBlock(y,m);if(n.$mouseHandler.$clickSelection&&D.length==1&&D[0].isEmpty()){D[0]=n.$mouseHandler.$clickSelection.clone()}D.forEach(n.addSelectionMarker,n);n.updateSelectionMarkers();n.$blockScrolling--};n.$blockScrolling++;if(G&&!w){I.toSingleRange()}else{if(!G&&w){l=I.toOrientedRange();n.addSelectionMarker(l)}}if(A){m=i.documentToScreenPosition(I.lead)}else{I.moveToPosition(q)}n.$blockScrolling--;y={row:-1,column:-1};var j=function(K){clearInterval(v);n.removeSelectionMarkers(D);if(!D.length){D=[I.toOrientedRange()]}n.$blockScrolling++;if(l){n.removeSelectionMarker(l);I.toSingleRange(l)}for(var J=0;J<D.length;J++){I.addRange(D[J])}n.inVirtualSelectionMode=false;n.$mouseHandler.$clickSelection=null;n.$blockScrolling--};var C=k;f.capture(n.container,p,j);var v=setInterval(function(){C()},20);return E.preventDefault()}}}b.onMouseDown=g});ace.define("ace/commands/multi_select_commands",["require","exports","module","ace/keyboard/hash_handler"],function(b,a,c){a.defaultCommands=[{name:"addCursorAbove",exec:function(e){e.selectMoreLines(-1)},bindKey:{win:"Ctrl-Alt-Up",mac:"Ctrl-Alt-Up"},scrollIntoView:"cursor",readOnly:true},{name:"addCursorBelow",exec:function(e){e.selectMoreLines(1)},bindKey:{win:"Ctrl-Alt-Down",mac:"Ctrl-Alt-Down"},scrollIntoView:"cursor",readOnly:true},{name:"addCursorAboveSkipCurrent",exec:function(e){e.selectMoreLines(-1,true)},bindKey:{win:"Ctrl-Alt-Shift-Up",mac:"Ctrl-Alt-Shift-Up"},scrollIntoView:"cursor",readOnly:true},{name:"addCursorBelowSkipCurrent",exec:function(e){e.selectMoreLines(1,true)},bindKey:{win:"Ctrl-Alt-Shift-Down",mac:"Ctrl-Alt-Shift-Down"},scrollIntoView:"cursor",readOnly:true},{name:"selectMoreBefore",exec:function(e){e.selectMore(-1)},bindKey:{win:"Ctrl-Alt-Left",mac:"Ctrl-Alt-Left"},scrollIntoView:"cursor",readOnly:true},{name:"selectMoreAfter",exec:function(e){e.selectMore(1)},bindKey:{win:"Ctrl-Alt-Right",mac:"Ctrl-Alt-Right"},scrollIntoView:"cursor",readOnly:true},{name:"selectNextBefore",exec:function(e){e.selectMore(-1,true)},bindKey:{win:"Ctrl-Alt-Shift-Left",mac:"Ctrl-Alt-Shift-Left"},scrollIntoView:"cursor",readOnly:true},{name:"selectNextAfter",exec:function(e){e.selectMore(1,true)},bindKey:{win:"Ctrl-Alt-Shift-Right",mac:"Ctrl-Alt-Shift-Right"},scrollIntoView:"cursor",readOnly:true},{name:"splitIntoLines",exec:function(e){e.multiSelect.splitIntoLines()},bindKey:{win:"Ctrl-Alt-L",mac:"Ctrl-Alt-L"},readOnly:true},{name:"alignCursors",exec:function(e){e.alignCursors()},bindKey:{win:"Ctrl-Alt-A",mac:"Ctrl-Alt-A"},scrollIntoView:"cursor"},{name:"findAll",exec:function(e){e.findAll()},bindKey:{win:"Ctrl-Alt-K",mac:"Ctrl-Alt-G"},scrollIntoView:"cursor",readOnly:true}];a.multiSelectCommands=[{name:"singleSelection",bindKey:"esc",exec:function(e){e.exitMultiSelectMode()},scrollIntoView:"cursor",readOnly:true,isAvailable:function(e){return e&&e.inMultiSelectMode}}];var d=b("../keyboard/hash_handler").HashHandler;a.keyboardHandler=new d(a.multiSelectCommands)});ace.define("ace/multi_select",["require","exports","module","ace/range_list","ace/range","ace/selection","ace/mouse/multi_select_handler","ace/lib/event","ace/lib/lang","ace/commands/multi_select_commands","ace/search","ace/edit_session","ace/editor","ace/config"],function(g,q,b){var n=g("./range_list").RangeList;var o=g("./range").Range;var c=g("./selection").Selection;var e=g("./mouse/multi_select_handler").onMouseDown;var m=g("./lib/event");var r=g("./lib/lang");var d=g("./commands/multi_select_commands");q.commands=d.defaultCommands.concat(d.multiSelectCommands);var f=g("./search").Search;var h=new f();function j(u,t,s){h.$options.wrap=true;h.$options.needle=t;h.$options.backwards=s==-1;return h.find(u)}var a=g("./edit_session").EditSession;(function(){this.getSelectionMarkers=function(){return this.$selectionMarkers}}).call(a.prototype);(function(){this.ranges=null;this.rangeList=null;this.addRange=function(t,s){if(!t){return}if(!this.inMultiSelectMode&&this.rangeCount===0){var v=this.toOrientedRange();this.rangeList.add(v);this.rangeList.add(t);if(this.rangeList.ranges.length!=2){this.rangeList.removeAll();return s||this.fromOrientedRange(t)}this.rangeList.removeAll();this.rangeList.add(v);this.$onAddRange(v)}if(!t.cursor){t.cursor=t.end}var u=this.rangeList.add(t);this.$onAddRange(t);if(u.length){this.$onRemoveRange(u)}if(this.rangeCount>1&&!this.inMultiSelectMode){this._signal("multiSelect");this.inMultiSelectMode=true;this.session.$undoSelect=false;this.rangeList.attach(this.session)}return s||this.fromOrientedRange(t)};this.toSingleRange=function(s){s=s||this.ranges[0];var t=this.rangeList.removeAll();if(t.length){this.$onRemoveRange(t)}s&&this.fromOrientedRange(s)};this.substractPoint=function(t){var s=this.rangeList.substractPoint(t);if(s){this.$onRemoveRange(s);return s[0]}};this.mergeOverlappingRanges=function(){var s=this.rangeList.merge();if(s.length){this.$onRemoveRange(s)}else{if(this.ranges[0]){this.fromOrientedRange(this.ranges[0])}}};this.$onAddRange=function(s){this.rangeCount=this.rangeList.ranges.length;this.ranges.unshift(s);this._signal("addRange",{range:s})};this.$onRemoveRange=function(u){this.rangeCount=this.rangeList.ranges.length;if(this.rangeCount==1&&this.inMultiSelectMode){var v=this.rangeList.ranges.pop();u.push(v);this.rangeCount=0}for(var t=u.length;t--;){var s=this.ranges.indexOf(u[t]);this.ranges.splice(s,1)}this._signal("removeRange",{ranges:u});if(this.rangeCount===0&&this.inMultiSelectMode){this.inMultiSelectMode=false;this._signal("singleSelect");this.session.$undoSelect=true;this.rangeList.detach(this.session)}v=v||this.ranges[0];if(v&&!v.isEqual(this.getRange())){this.fromOrientedRange(v)}};this.$initRangeList=function(){if(this.rangeList){return}this.rangeList=new n();this.ranges=[];this.rangeCount=0};this.getAllRanges=function(){return this.rangeCount?this.rangeList.ranges.concat():[this.getRange()]};this.splitIntoLines=function(){if(this.rangeCount>1){var t=this.rangeList.ranges;var z=t[t.length-1];var A=o.fromPoints(t[0].start,z.end);this.toSingleRange();this.setSelectionRange(A,z.cursor==z.start)}else{var A=this.getRange();var B=this.isBackwards();var C=A.start.row;var x=A.end.row;if(C==x){if(B){var u=A.end,w=A.start}else{var u=A.start,w=A.end}this.addRange(o.fromPoints(w,w));this.addRange(o.fromPoints(u,u));return}var v=[];var s=this.getLineRange(C,true);s.start.column=A.start.column;v.push(s);for(var y=C+1;y<x;y++){v.push(this.getLineRange(y,true))}s=this.getLineRange(x,true);s.end.column=A.end.column;v.push(s);v.forEach(this.addRange,this)}};this.toggleBlockSelection=function(){if(this.rangeCount>1){var s=this.rangeList.ranges;var w=s[s.length-1];var t=o.fromPoints(s[0].start,w.end);this.toSingleRange();this.setSelectionRange(t,w.cursor==w.start)}else{var v=this.session.documentToScreenPosition(this.selectionLead);var u=this.session.documentToScreenPosition(this.selectionAnchor);var x=this.rectangularRangeBlock(v,u);x.forEach(this.addRange,this)}};this.rectangularRangeBlock=function(B,w,t){var H=[];var C=B.column<w.column;if(C){var y=B.column;var v=w.column;var G=B.offsetX;var u=w.offsetX}else{var y=w.column;var v=B.column;var G=w.offsetX;var u=B.offsetX}var I=B.row<w.row;if(I){var s=B.row;var E=w.row}else{var s=w.row;var E=B.row}if(y<0){y=0}if(s<0){s=0}if(s==E){t=true}for(var A=s;A<=E;A++){var D=o.fromPoints(this.session.screenToDocumentPosition(A,y,G),this.session.screenToDocumentPosition(A,v,u));if(D.isEmpty()){if(J&&p(D.end,J)){break}var J=D.end}D.cursor=C?D.start:D.end;H.push(D)}if(I){H.reverse()}if(!t){var x=H.length-1;while(H[x].isEmpty()&&x>0){x--}if(x>0){var z=0;while(H[z].isEmpty()){z++}}for(var F=x;F>=z;F--){if(H[F].isEmpty()){H.splice(F,1)}}}return H}}).call(c.prototype);var l=g("./editor").Editor;(function(){this.updateSelectionMarkers=function(){this.renderer.updateCursor();this.renderer.updateBackMarkers()};this.addSelectionMarker=function(t){if(!t.cursor){t.cursor=t.end}var s=this.getSelectionStyle();t.marker=this.session.addMarker(t,"ace_selection",s);this.session.$selectionMarkers.push(t);this.session.selectionMarkerCount=this.session.$selectionMarkers.length;return t};this.removeSelectionMarker=function(s){if(!s.marker){return}this.session.removeMarker(s.marker);var t=this.session.$selectionMarkers.indexOf(s);if(t!=-1){this.session.$selectionMarkers.splice(t,1)}this.session.selectionMarkerCount=this.session.$selectionMarkers.length};this.removeSelectionMarkers=function(s){var u=this.session.$selectionMarkers;for(var w=s.length;w--;){var t=s[w];if(!t.marker){continue}this.session.removeMarker(t.marker);var v=u.indexOf(t);if(v!=-1){u.splice(v,1)}}this.session.selectionMarkerCount=u.length};this.$onAddRange=function(s){this.addSelectionMarker(s.range);this.renderer.updateCursor();this.renderer.updateBackMarkers()};this.$onRemoveRange=function(s){this.removeSelectionMarkers(s.ranges);this.renderer.updateCursor();this.renderer.updateBackMarkers()};this.$onMultiSelect=function(s){if(this.inMultiSelectMode){return}this.inMultiSelectMode=true;this.setStyle("ace_multiselect");this.keyBinding.addKeyboardHandler(d.keyboardHandler);this.commands.setDefaultHandler("exec",this.$onMultiSelectExec);this.renderer.updateCursor();this.renderer.updateBackMarkers()};this.$onSingleSelect=function(s){if(this.session.multiSelect.inVirtualMode){return}this.inMultiSelectMode=false;this.unsetStyle("ace_multiselect");this.keyBinding.removeKeyboardHandler(d.keyboardHandler);this.commands.removeDefaultHandler("exec",this.$onMultiSelectExec);this.renderer.updateCursor();this.renderer.updateBackMarkers();this._emit("changeSelection")};this.$onMultiSelectExec=function(u){var v=u.command;var t=u.editor;if(!t.multiSelect){return}if(!v.multiSelectAction){var s=v.exec(t,u.args||{});t.multiSelect.addRange(t.multiSelect.toOrientedRange());t.multiSelect.mergeOverlappingRanges()}else{if(v.multiSelectAction=="forEach"){s=t.forEachSelection(v,u.args)}else{if(v.multiSelectAction=="forEachLine"){s=t.forEachSelection(v,u.args,true)}else{if(v.multiSelectAction=="single"){t.exitMultiSelectMode();s=v.exec(t,u.args||{})}else{s=v.multiSelectAction(t,u.args||{})}}}}return s};this.forEachSelection=function(v,C,G){if(this.inVirtualSelectionMode){return}var z=G&&G.keepOrder;var B=G==true||G&&G.$byLines;var D=this.session;var E=this.selection;var w=E.rangeList;var t=(z?E:w).ranges;var F;if(!t.length){return v.exec?v.exec(this,C||{}):v(this,C||{})}var u=E._eventRegistry;E._eventRegistry={};var s=new c(D);this.inVirtualSelectionMode=true;for(var y=t.length;y--;){if(B){while(y>0&&t[y].start.row==t[y-1].end.row){y--}}s.fromOrientedRange(t[y]);s.index=y;this.selection=D.selection=s;var A=v.exec?v.exec(this,C||{}):v(this,C||{});if(!F&&A!==undefined){F=A}s.toOrientedRange(t[y])}s.detach();this.selection=D.selection=E;this.inVirtualSelectionMode=false;E._eventRegistry=u;E.mergeOverlappingRanges();var x=this.renderer.$scrollAnimation;this.onCursorChange();this.onSelectionChange();if(x&&x.from==x.to){this.renderer.animateScrolling(x.from)}return F};this.exitMultiSelectMode=function(){if(!this.inMultiSelectMode||this.inVirtualSelectionMode){return}this.multiSelect.toSingleRange()};this.getSelectedText=function(){var w="";if(this.inMultiSelectMode&&!this.inVirtualSelectionMode){var t=this.multiSelect.rangeList.ranges;var u=[];for(var v=0;v<t.length;v++){u.push(this.session.getTextRange(t[v]))}var s=this.session.getDocument().getNewLineCharacter();w=u.join(s);if(w.length==(u.length-1)*s.length){w=""}}else{if(!this.selection.isEmpty()){w=this.session.getTextRange(this.getSelectionRange())}}return w};this.$checkMultiselectChange=function(u,t){if(this.inMultiSelectMode&&!this.inVirtualSelectionMode){var s=this.multiSelect.ranges[0];if(this.multiSelect.isEmpty()&&t==this.multiSelect.anchor){return}var v=t==this.multiSelect.anchor?s.cursor==s.start?s.end:s.start:s.cursor;if(v.row!=t.row||this.session.$clipPositionToDocument(v.row,v.column).column!=t.column){this.multiSelect.toSingleRange(this.multiSelect.toOrientedRange())}}};this.findAll=function(y,v,t){v=v||{};v.needle=y||v.needle;if(v.needle==undefined){var u=this.selection.isEmpty()?this.selection.getWordRange():this.selection.getRange();v.needle=this.session.getTextRange(u)}this.$search.set(v);var s=this.$search.findAll(this.session);if(!s.length){return 0}this.$blockScrolling+=1;var x=this.multiSelect;if(!t){x.toSingleRange(s[0])}for(var w=s.length;w--;){x.addRange(s[w],true)}if(u&&x.rangeList.rangeAtPoint(u.start)){x.addRange(u,true)}this.$blockScrolling-=1;return s.length};this.selectMoreLines=function(t,A){var w=this.selection.toOrientedRange();var B=w.cursor==w.end;var z=this.session.documentToScreenPosition(w.cursor);if(this.selection.$desiredColumn){z.column=this.selection.$desiredColumn}var x=this.session.screenToDocumentPosition(z.row+t,z.column);if(!w.isEmpty()){var u=this.session.documentToScreenPosition(B?w.end:w.start);var v=this.session.screenToDocumentPosition(u.row+t,u.column)}else{var v=x}if(B){var y=o.fromPoints(x,v);y.cursor=y.start}else{var y=o.fromPoints(v,x);y.cursor=y.end}y.desiredColumn=z.column;if(!this.selection.inMultiSelectMode){this.selection.addRange(w)}else{if(A){var s=w.cursor}}this.selection.addRange(y);if(s){this.selection.substractPoint(s)}};this.transposeSelections=function(t){var y=this.session;var x=y.multiSelect;var w=x.ranges;for(var v=w.length;v--;){var s=w[v];if(s.isEmpty()){var u=y.getWordRange(s.start.row,s.start.column);s.start.row=u.start.row;s.start.column=u.start.column;s.end.row=u.end.row;s.end.column=u.end.column}}x.mergeOverlappingRanges();var z=[];for(var v=w.length;v--;){var s=w[v];z.unshift(y.getTextRange(s))}if(t<0){z.unshift(z.pop())}else{z.push(z.shift())}for(var v=w.length;v--;){var s=w[v];var u=s.clone();y.replace(s,z[v]);s.start.row=u.start.row;s.start.column=u.start.column}};this.selectMore=function(u,w,v){var z=this.session;var x=z.multiSelect;var s=x.toOrientedRange();if(s.isEmpty()){s=z.getWordRange(s.start.row,s.start.column);s.cursor=u==-1?s.start:s.end;this.multiSelect.addRange(s);if(v){return}}var y=z.getTextRange(s);var t=j(z,y,u);if(t){t.cursor=u==-1?t.start:t.end;this.$blockScrolling+=1;this.session.unfold(t);this.multiSelect.addRange(t);this.$blockScrolling-=1;this.renderer.scrollCursorIntoView(null,0.5)}if(w){this.multiSelect.substractPoint(s.cursor)}};this.alignCursors=function(){var z=this.session;var u=z.multiSelect;var t=u.ranges;var G=-1;var v=t.filter(function(H){if(H.cursor.row==G){return true}G=H.cursor.row});if(!t.length||v.length==t.length-1){var w=this.selection.getRange();var y=w.start.row,x=w.end.row;var B=y==x;if(B){var A=this.session.getLength();var F;do{F=this.session.getLine(x)}while(/[=:]/.test(F)&&++x<A);do{F=this.session.getLine(y)}while(/[=:]/.test(F)&&--y>0);if(y<0){y=0}if(x>=A){x=A-1}}var E=this.session.removeFullLines(y,x);E=this.$reAlignText(E,B);this.session.insert({row:y,column:0},E.join("\n")+"\n");if(!B){w.start.column=0;w.end.column=E[E.length-1].length}this.selection.setRange(w)}else{v.forEach(function(H){u.substractPoint(H.cursor)});var C=0;var D=Infinity;var s=t.map(function(J){var K=J.cursor;var H=z.getLine(K.row);var I=H.substr(K.column).search(/\S/g);if(I==-1){I=0}if(K.column>C){C=K.column}if(I<D){D=I}return I});t.forEach(function(J,I){var K=J.cursor;var H=C-K.column;var L=s[I]-D;if(H>L){z.insert(K,r.stringRepeat(" ",H-L))}else{z.remove(new o(K.row,K.column,K.row,K.column-H+L))}J.start.column=J.end.column=C;J.start.row=J.end.row=K.row;J.cursor=J.end});u.fromOrientedRange(t[0]);this.renderer.updateCursor();this.renderer.updateBackMarkers()}};this.$reAlignText=function(C,v){var s=true,u=true;var x,y,B;return C.map(function(E){var D=E.match(/(\s*)(.*?)(\s*)([=:].*)/);if(!D){return[E]}if(x==null){x=D[1].length;y=D[2].length;B=D[3].length;return D}if(x+y+B!=D[1].length+D[2].length+D[3].length){u=false}if(x!=D[1].length){s=false}if(x>D[1].length){x=D[1].length}if(y<D[2].length){y=D[2].length}if(B>D[3].length){B=D[3].length}return D}).map(v?t:s?u?A:t:w);function z(D){return r.stringRepeat(" ",D)}function t(D){return !D[2]?D[0]:z(x)+D[2]+z(y-D[2].length+B)+D[4].replace(/^([=:])\s+/,"$1 ")}function A(D){return !D[2]?D[0]:z(x+y-D[2].length)+D[2]+z(B," ")+D[4].replace(/^([=:])\s+/,"$1 ")}function w(D){return !D[2]?D[0]:z(x)+D[2]+z(B)+D[4].replace(/^([=:])\s+/,"$1 ")}}}).call(l.prototype);function p(t,s){return t.row==s.row&&t.column==s.column}q.onSessionChange=function(u){var t=u.session;if(t&&!t.multiSelect){t.$selectionMarkers=[];t.selection.$initRangeList();t.multiSelect=t.selection}this.multiSelect=t&&t.multiSelect;var s=u.oldSession;if(s){s.multiSelect.off("addRange",this.$onAddRange);s.multiSelect.off("removeRange",this.$onRemoveRange);s.multiSelect.off("multiSelect",this.$onMultiSelect);s.multiSelect.off("singleSelect",this.$onSingleSelect);s.multiSelect.lead.off("change",this.$checkMultiselectChange);s.multiSelect.anchor.off("change",this.$checkMultiselectChange)}if(t){t.multiSelect.on("addRange",this.$onAddRange);t.multiSelect.on("removeRange",this.$onRemoveRange);t.multiSelect.on("multiSelect",this.$onMultiSelect);t.multiSelect.on("singleSelect",this.$onSingleSelect);t.multiSelect.lead.on("change",this.$checkMultiselectChange);t.multiSelect.anchor.on("change",this.$checkMultiselectChange)}if(t&&this.inMultiSelectMode!=t.selection.inMultiSelectMode){if(t.selection.inMultiSelectMode){this.$onMultiSelect()}else{this.$onSingleSelect()}}};function k(s){if(s.$multiselectOnSessionChange){return}s.$onAddRange=s.$onAddRange.bind(s);s.$onRemoveRange=s.$onRemoveRange.bind(s);s.$onMultiSelect=s.$onMultiSelect.bind(s);s.$onSingleSelect=s.$onSingleSelect.bind(s);s.$multiselectOnSessionChange=q.onSessionChange.bind(s);s.$checkMultiselectChange=s.$checkMultiselectChange.bind(s);s.$multiselectOnSessionChange(s);s.on("changeSession",s.$multiselectOnSessionChange);s.on("mousedown",e);s.commands.addCommands(d.defaultCommands);i(s)}function i(t){var s=t.textInput.getElement();var v=false;m.addListener(s,"keydown",function(x){var w=x.keyCode==18&&!(x.ctrlKey||x.shiftKey||x.metaKey);if(t.$blockSelectEnabled&&w){if(!v){t.renderer.setMouseCursor("crosshair");v=true}}else{if(v){u()}}});m.addListener(s,"keyup",u);m.addListener(s,"blur",u);function u(w){if(v){t.renderer.setMouseCursor("");v=false}}}q.MultiSelect=k;g("./config").defineOptions(l.prototype,"editor",{enableMultiselect:{set:function(s){k(this);if(s){this.on("changeSession",this.$multiselectOnSessionChange);this.on("mousedown",e)}else{this.off("changeSession",this.$multiselectOnSessionChange);this.off("mousedown",e)}},value:true},enableBlockSelect:{set:function(s){this.$blockSelectEnabled=s},value:true}})});ace.define("ace/mode/folding/fold_mode",["require","exports","module","ace/range"],function(b,a,c){var e=b("../../range").Range;var d=a.FoldMode=function(){};(function(){this.foldingStartMarker=null;this.foldingStopMarker=null;this.getFoldWidget=function(h,g,i){var f=h.getLine(i);if(this.foldingStartMarker.test(f)){return"start"}if(g=="markbeginend"&&this.foldingStopMarker&&this.foldingStopMarker.test(f)){return"end"}return""};this.getFoldWidgetRange=function(g,f,h){return null};this.indentationBlock=function(l,p,g){var o=/\S/;var q=l.getLine(p);var j=q.search(o);if(j==-1){return}var h=g||q.length;var m=l.getLength();var n=p;var i=p;while(++p<m){var f=l.getLine(p).search(o);if(f==-1){continue}if(f<=j){break}i=p}if(i>n){var k=l.getLine(i).length;return new e(n,h,i,k)}};this.openingBracketBlock=function(j,l,k,h,f){var m={row:k,column:h+1};var g=j.$findClosingBracket(l,m,f);if(!g){return}var i=j.foldWidgets[g.row];if(i==null){i=j.getFoldWidget(g.row)}if(i=="start"&&g.row>m.row){g.row--;g.column=j.getLine(g.row).length}return e.fromPoints(m,g)};this.closingBracketBlock=function(i,k,j,h,f){var g={row:j,column:h};var l=i.$findOpeningBracket(k,g);if(!l){return}l.column++;g.column--;return e.fromPoints(l,g)}}).call(d.prototype)});ace.define("ace/theme/textmate",["require","exports","module","ace/lib/dom"],function(b,a,c){a.isDark=false;a.cssClass="ace-tm";a.cssText='.ace-tm .ace_gutter {background: #f0f0f0;color: #333;}.ace-tm .ace_print-margin {width: 1px;background: #e8e8e8;}.ace-tm .ace_fold {background-color: #6B72E6;}.ace-tm {background-color: #FFFFFF;color: black;}.ace-tm .ace_cursor {color: black;}.ace-tm .ace_invisible {color: rgb(191, 191, 191);}.ace-tm .ace_storage,.ace-tm .ace_keyword {color: blue;}.ace-tm .ace_constant {color: rgb(197, 6, 11);}.ace-tm .ace_constant.ace_buildin {color: rgb(88, 72, 246);}.ace-tm .ace_constant.ace_language {color: rgb(88, 92, 246);}.ace-tm .ace_constant.ace_library {color: rgb(6, 150, 14);}.ace-tm .ace_invalid {background-color: rgba(255, 0, 0, 0.1);color: red;}.ace-tm .ace_support.ace_function {color: rgb(60, 76, 114);}.ace-tm .ace_support.ace_constant {color: rgb(6, 150, 14);}.ace-tm .ace_support.ace_type,.ace-tm .ace_support.ace_class {color: rgb(109, 121, 222);}.ace-tm .ace_keyword.ace_operator {color: rgb(104, 118, 135);}.ace-tm .ace_string {color: rgb(3, 106, 7);}.ace-tm .ace_comment {color: rgb(76, 136, 107);}.ace-tm .ace_comment.ace_doc {color: rgb(0, 102, 255);}.ace-tm .ace_comment.ace_doc.ace_tag {color: rgb(128, 159, 191);}.ace-tm .ace_constant.ace_numeric {color: rgb(0, 0, 205);}.ace-tm .ace_variable {color: rgb(49, 132, 149);}.ace-tm .ace_xml-pe {color: rgb(104, 104, 91);}.ace-tm .ace_entity.ace_name.ace_function {color: #0000A2;}.ace-tm .ace_heading {color: rgb(12, 7, 255);}.ace-tm .ace_list {color:rgb(185, 6, 144);}.ace-tm .ace_meta.ace_tag {color:rgb(0, 22, 142);}.ace-tm .ace_string.ace_regex {color: rgb(255, 0, 0)}.ace-tm .ace_marker-layer .ace_selection {background: rgb(181, 213, 255);}.ace-tm.ace_multiselect .ace_selection.ace_start {box-shadow: 0 0 3px 0px white;}.ace-tm .ace_marker-layer .ace_step {background: rgb(252, 255, 0);}.ace-tm .ace_marker-layer .ace_stack {background: rgb(164, 229, 101);}.ace-tm .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid rgb(192, 192, 192);}.ace-tm .ace_marker-layer .ace_active-line {background: rgba(0, 0, 0, 0.07);}.ace-tm .ace_gutter-active-line {background-color : #dcdcdc;}.ace-tm .ace_marker-layer .ace_selected-word {background: rgb(250, 250, 255);border: 1px solid rgb(200, 200, 250);}.ace-tm .ace_indent-guide {background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==") right repeat-y;}';var d=b("../lib/dom");d.importCssString(a.cssText,a.cssClass)});ace.define("ace/line_widgets",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/range"],function(b,a,c){var d=b("./lib/oop");var g=b("./lib/dom");var f=b("./range").Range;function e(h){this.session=h;this.session.widgetManager=this;this.session.getRowLength=this.getRowLength;this.session.$getWidgetScreenLength=this.$getWidgetScreenLength;this.updateOnChange=this.updateOnChange.bind(this);this.renderWidgets=this.renderWidgets.bind(this);this.measureWidgets=this.measureWidgets.bind(this);this.session._changedWidgets=[];this.$onChangeEditor=this.$onChangeEditor.bind(this);this.session.on("change",this.updateOnChange);this.session.on("changeFold",this.updateOnFold);this.session.on("changeEditor",this.$onChangeEditor)}(function(){this.getRowLength=function(j){var i;if(this.lineWidgets){i=this.lineWidgets[j]&&this.lineWidgets[j].rowCount||0}else{i=0}if(!this.$useWrapMode||!this.$wrapData[j]){return 1+i}else{return this.$wrapData[j].length+1+i}};this.$getWidgetScreenLength=function(){var h=0;this.lineWidgets.forEach(function(i){if(i&&i.rowCount&&!i.hidden){h+=i.rowCount}});return h};this.$onChangeEditor=function(h){this.attach(h.editor)};this.attach=function(h){if(h&&h.widgetManager&&h.widgetManager!=this){h.widgetManager.detach()}if(this.editor==h){return}this.detach();this.editor=h;if(h){h.widgetManager=this;h.renderer.on("beforeRender",this.measureWidgets);h.renderer.on("afterRender",this.renderWidgets)}};this.detach=function(j){var i=this.editor;if(!i){return}this.editor=null;i.widgetManager=null;i.renderer.off("beforeRender",this.measureWidgets);i.renderer.off("afterRender",this.renderWidgets);var h=this.session.lineWidgets;h&&h.forEach(function(k){if(k&&k.el&&k.el.parentNode){k._inDocument=false;k.el.parentNode.removeChild(k.el)}})};this.updateOnFold=function(o,n){var m=n.lineWidgets;if(!m||!o.action){return}var j=o.data;var p=j.start.row;var h=j.end.row;var l=o.action=="add";for(var k=p+1;k<h;k++){if(m[k]){m[k].hidden=l}}if(m[h]){if(l){if(!m[p]){m[p]=m[h]}else{m[h].hidden=l}}else{if(m[p]==m[h]){m[p]=undefined}m[h].hidden=l}}};this.updateOnChange=function(m){var k=this.session.lineWidgets;if(!k){return}var i=m.start.row;var h=m.end.row-i;if(h===0){}else{if(m.action=="remove"){var l=k.splice(i+1,h);l.forEach(function(n){n&&this.removeLineWidget(n)},this);this.$updateRows()}else{var j=new Array(h);j.unshift(i,0);k.splice.apply(k,j);this.$updateRows()}}};this.$updateRows=function(){var h=this.session.lineWidgets;if(!h){return}var i=true;h.forEach(function(j,k){if(j){i=false;j.row=k;while(j.$oldWidget){j.$oldWidget.row=k;j=j.$oldWidget}}});if(i){this.session.lineWidgets=null}};this.addLineWidget=function(i){if(!this.session.lineWidgets){this.session.lineWidgets=new Array(this.session.getLength())}var h=this.session.lineWidgets[i.row];if(h){i.$oldWidget=h;if(h.el&&h.el.parentNode){h.el.parentNode.removeChild(h.el);h._inDocument=false}}this.session.lineWidgets[i.row]=i;i.session=this.session;var l=this.editor.renderer;if(i.html&&!i.el){i.el=g.createElement("div");i.el.innerHTML=i.html}if(i.el){g.addCssClass(i.el,"ace_lineWidgetContainer");i.el.style.position="absolute";i.el.style.zIndex=5;l.container.appendChild(i.el);i._inDocument=true}if(!i.coverGutter){i.el.style.zIndex=3}if(i.pixelHeight==null){i.pixelHeight=i.el.offsetHeight}if(i.rowCount==null){i.rowCount=i.pixelHeight/l.layerConfig.lineHeight}var j=this.session.getFoldAt(i.row,0);i.$fold=j;if(j){var k=this.session.lineWidgets;if(i.row==j.end.row&&!k[j.start.row]){k[j.start.row]=i}else{i.hidden=true}}this.session._emit("changeFold",{data:{start:{row:i.row}}});this.$updateRows();this.renderWidgets(null,l);this.onWidgetChanged(i);return i};this.removeLineWidget=function(i){i._inDocument=false;i.session=null;if(i.el&&i.el.parentNode){i.el.parentNode.removeChild(i.el)}if(i.editor&&i.editor.destroy){try{i.editor.destroy()}catch(j){}}if(this.session.lineWidgets){var h=this.session.lineWidgets[i.row];if(h==i){this.session.lineWidgets[i.row]=i.$oldWidget;if(i.$oldWidget){this.onWidgetChanged(i.$oldWidget)}}else{while(h){if(h.$oldWidget==i){h.$oldWidget=i.$oldWidget;break}h=h.$oldWidget}}}this.session._emit("changeFold",{data:{start:{row:i.row}}});this.$updateRows()};this.getWidgetsAtRow=function(k){var i=this.session.lineWidgets;var h=i&&i[k];var j=[];while(h){j.push(h);h=h.$oldWidget}return j};this.onWidgetChanged=function(h){this.session._changedWidgets.push(h);this.editor&&this.editor.renderer.updateFull()};this.measureWidgets=function(p,o){var k=this.session._changedWidgets;var l=o.layerConfig;if(!k||!k.length){return}var n=Infinity;for(var m=0;m<k.length;m++){var h=k[m];if(!h||!h.el){continue}if(h.session!=this.session){continue}if(!h._inDocument){if(this.session.lineWidgets[h.row]!=h){continue}h._inDocument=true;o.container.appendChild(h.el)}h.h=h.el.offsetHeight;if(!h.fixedWidth){h.w=h.el.offsetWidth;h.screenWidth=Math.ceil(h.w/l.characterWidth)}var j=h.h/l.lineHeight;if(h.coverLine){j-=this.session.getRowLineCount(h.row);if(j<0){j=0}}if(h.rowCount!=j){h.rowCount=j;if(h.row<n){n=h.row}}}if(n!=Infinity){this.session._emit("changeFold",{data:{start:{row:n}}});this.session.lineWidgetWidth=null}this.session._changedWidgets=[]};this.renderWidgets=function(m,n){var h=n.layerConfig;var o=this.session.lineWidgets;if(!o){return}var l=Math.min(this.firstRow,h.firstRow);var r=Math.max(this.lastRow,h.lastRow,o.length);while(l>0&&!o[l]){l--}this.firstRow=h.firstRow;this.lastRow=h.lastRow;n.$cursorLayer.config=h;for(var k=l;k<=r;k++){var q=o[k];if(!q||!q.el){continue}if(q.hidden){q.el.style.top=-100-(q.pixelHeight||0)+"px";continue}if(!q._inDocument){q._inDocument=true;n.container.appendChild(q.el)}var p=n.$cursorLayer.getPixelPosition({row:k,column:0},true).top;if(!q.coverLine){p+=h.lineHeight*this.session.getRowLineCount(q.row)}q.el.style.top=p-h.offset+"px";var j=q.coverGutter?0:n.gutterWidth;if(!q.fixedWidth){j-=n.scrollLeft}q.el.style.left=j+"px";if(q.fullWidth&&q.screenWidth){q.el.style.minWidth=h.width+2*h.padding+"px"}if(q.fixedWidth){q.el.style.right=n.scrollBar.getWidth()+"px"}else{q.el.style.right=""}}}}).call(e.prototype);a.LineWidgets=e});ace.define("ace/ext/error_marker",["require","exports","module","ace/line_widgets","ace/lib/dom","ace/range"],function(c,b,d){var f=c("../line_widgets").LineWidgets;var g=c("../lib/dom");var e=c("../range").Range;function h(o,l,i){var m=0;var k=o.length-1;while(m<=k){var j=(m+k)>>1;var n=i(l,o[j]);if(n>0){m=j+1}else{if(n<0){k=j-1}else{return j}}}return -(m+1)}function a(o,p,l){var n=o.getAnnotations().sort(e.comparePoints);if(!n.length){return}var m=h(n,{row:p,column:-1},e.comparePoints);if(m<0){m=-m-1}if(m>=n.length){m=l>0?0:n.length-1}else{if(m===0&&l<0){m=n.length-1}}var k=n[m];if(!k||!l){return}if(k.row===p){do{k=n[m+=l]}while(k&&k.row===p);if(!k){return n.slice()}}var j=[];p=k.row;do{j[l<0?"unshift":"push"](k);k=n[m+=l]}while(k&&k.row==p);return j.length&&j}b.showErrorMarker=function(p,k){var q=p.session;if(!q.widgetManager){q.widgetManager=new f(q);q.widgetManager.attach(p)}var r=p.getCursorPosition();var v=r.row;var m=q.widgetManager.getWidgetsAtRow(v).filter(function(x){return x.type=="errorMarker"})[0];if(m){m.destroy()}else{v-=k}var o=a(q,v,k);var u;if(o){var l=o[0];r.column=(l.pos&&typeof l.column!="number"?l.pos.sc:l.column)||0;r.row=l.row;u=p.renderer.$gutterLayer.$annotations[r.row]}else{if(m){return}else{u={text:["Looks good!"],className:"ace_ok"}}}p.session.unfold(r.row);p.selection.moveToPosition(r);var t={row:r.row,fixedWidth:true,coverGutter:true,el:g.createElement("div"),type:"errorMarker"};var i=t.el.appendChild(g.createElement("div"));var s=t.el.appendChild(g.createElement("div"));s.className="error_widget_arrow "+u.className;var j=p.renderer.$cursorLayer.getPixelPosition(r).left;s.style.left=j+p.renderer.gutterWidth-5+"px";t.el.className="error_widget_wrapper";i.className="error_widget "+u.className;i.innerHTML=u.text.join("<br>");i.appendChild(g.createElement("div"));var n=function(x,y,w){if(y===0&&(w==="esc"||w==="return")){t.destroy();return{command:"null"}}};t.destroy=function(){if(p.$mouseHandler.isMousePressed){return}p.keyBinding.removeKeyboardHandler(n);q.widgetManager.removeLineWidget(t);p.off("changeSelection",t.destroy);p.off("changeSession",t.destroy);p.off("mouseup",t.destroy);p.off("change",t.destroy)};p.keyBinding.addKeyboardHandler(n);p.on("changeSelection",t.destroy);p.on("changeSession",t.destroy);p.on("mouseup",t.destroy);p.on("change",t.destroy);p.session.widgetManager.addLineWidget(t);t.el.onmousedown=p.focus.bind(p);p.renderer.scrollCursorIntoView(null,0.5,{bottom:t.el.offsetHeight})};g.importCssString("    .error_widget_wrapper {        background: inherit;        color: inherit;        border:none    }    .error_widget {        border-top: solid 2px;        border-bottom: solid 2px;        margin: 5px 0;        padding: 10px 40px;        white-space: pre-wrap;    }    .error_widget.ace_error, .error_widget_arrow.ace_error{        border-color: #ff5a5a    }    .error_widget.ace_warning, .error_widget_arrow.ace_warning{        border-color: #F1D817    }    .error_widget.ace_info, .error_widget_arrow.ace_info{        border-color: #5a5a5a    }    .error_widget.ace_ok, .error_widget_arrow.ace_ok{        border-color: #5aaa5a    }    .error_widget_arrow {        position: absolute;        border: solid 5px;        border-top-color: transparent!important;        border-right-color: transparent!important;        border-left-color: transparent!important;        top: -5px;    }","")});ace.define("ace/ace",["require","exports","module","ace/lib/fixoldbrowsers","ace/lib/dom","ace/lib/event","ace/editor","ace/edit_session","ace/undomanager","ace/virtual_renderer","ace/worker/worker_client","ace/keyboard/hash_handler","ace/placeholder","ace/multi_select","ace/mode/folding/fold_mode","ace/theme/textmate","ace/ext/error_marker","ace/config"],function(e,h,d){e("./lib/fixoldbrowsers");var g=e("./lib/dom");var b=e("./lib/event");var i=e("./editor").Editor;var a=e("./edit_session").EditSession;var c=e("./undomanager").UndoManager;var f=e("./virtual_renderer").VirtualRenderer;e("./worker/worker_client");e("./keyboard/hash_handler");e("./placeholder");e("./multi_select");e("./mode/folding/fold_mode");e("./theme/textmate");e("./ext/error_marker");h.config=e("./config");h.require=e;if(typeof define==="function"){h.define=define}h.edit=function(m){if(typeof m=="string"){var j=m;m=document.getElementById(j);if(!m){throw new Error("ace.edit can't find div #"+j)}}if(m&&m.env&&m.env.editor instanceof i){return m.env.editor}var n="";if(m&&/input|textarea/i.test(m.tagName)){var p=m;n=p.value;m=g.createElement("pre");p.parentNode.replaceChild(m,p)}else{if(m){n=g.getInnerText(m);m.innerHTML=""}}var o=h.createEditSession(n);var l=new i(new f(m));l.setSession(o);var k={document:o,editor:l,onResize:l.resize.bind(l,null)};if(p){k.textarea=p}b.addListener(window,"resize",k.onResize);l.on("destroy",function(){b.removeListener(window,"resize",k.onResize);k.editor.container.env=null});l.container.env=l.env=k;return l};h.createEditSession=function(l,k){var j=new a(l,k);j.setUndoManager(new c());return j};h.EditSession=a;h.UndoManager=c;h.version="1.2.9"});(function(){ace.require(["ace/ace"],function(b){if(b){b.config.init(true);b.define=ace.define}if(!window.ace){window.ace=b}for(var c in b){if(b.hasOwnProperty(c)){window.ace[c]=b[c]}}})})();
\ No newline at end of file
+this._emit("cursorLeave",h)}};this.detach=function(){this.session.removeMarker(this.pos&&this.pos.markerId);this.hideOtherMarkers();this.doc.removeEventListener("change",this.$onUpdate);this.session.selection.removeEventListener("changeCursor",this.$onCursorChange);this.session.setUndoSelect(true);this.session=null};this.cancel=function(){if(this.$undoStackDepth===-1){return}var k=this.session.getUndoManager();var h=(k.$undoStack||k.$undostack).length-this.$undoStackDepth;for(var j=0;j<h;j++){k.undo(true)}if(this.selectionBefore){this.session.selection.fromJSON(this.selectionBefore)}}}).call(g.prototype);a.PlaceHolder=g});ace.define("ace/mouse/multi_select_handler",["require","exports","module","ace/lib/event","ace/lib/useragent"],function(d,b,e){var f=d("../lib/event");var a=d("../lib/useragent");function c(i,h){return i.row==h.row&&i.column==h.column}function g(E){var F=E.domEvent;var H=F.altKey;var A=F.shiftKey;var u=F.ctrlKey;var w=E.getAccelKey();var h=E.getButton();if(h==1){h=0;H=true}if(u&&a.isMac){h=F.button}if(E.editor.inMultiSelectMode&&h==2){E.editor.textInput.onContextMenu(E.domEvent);return}if(!u&&!H&&!w){if(h===0&&E.editor.inMultiSelectMode){E.editor.exitMultiSelectMode()}return}if(h!==0){return}var n=E.editor;var I=n.selection;var G=n.inMultiSelectMode;var q=E.getDocumentPosition();var o=I.getCursor();var B=E.inSelection()||(I.isEmpty()&&c(q,o));var t=E.x,s=E.y;var p=function(J){t=J.clientX;s=J.clientY};var i=n.session;var m=n.renderer.pixelToScreenCoordinates(t,s);var y=m;var r;if(n.$mouseHandler.$enableJumpToDef){if(u&&H||w&&H){r=A?"block":"add"}else{if(H&&n.$blockSelectEnabled){r="block"}}}else{if(w&&!H){r="add";if(!G&&A){return}}else{if(H&&n.$blockSelectEnabled){r="block"}}}if(r&&a.isMac&&F.ctrlKey){n.$mouseHandler.cancelContextMenu()}if(r=="add"){if(!G&&B){return}if(!G){var z=I.toOrientedRange();n.addSelectionMarker(z)}var x=I.rangeList.rangeAtPoint(q);n.$blockScrolling++;n.inVirtualSelectionMode=true;if(A){x=null;z=I.ranges[0]||z;n.removeSelectionMarker(z)}n.once("mouseup",function(){var J=I.toOrientedRange();if(x&&J.isEmpty()&&c(x.cursor,J.cursor)){I.substractPoint(J.cursor)}else{if(A){I.substractPoint(z.cursor)}else{if(z){n.removeSelectionMarker(z);I.addRange(z)}}I.addRange(J)}n.$blockScrolling--;n.inVirtualSelectionMode=false})}else{if(r=="block"){E.stop();n.inVirtualSelectionMode=true;var l;var D=[];var k=function(){var K=n.renderer.pixelToScreenCoordinates(t,s);var J=i.screenToDocumentPosition(K.row,K.column,K.offsetX);if(c(y,K)&&c(J,I.lead)){return}y=K;n.$blockScrolling++;n.selection.moveToPosition(J);n.renderer.scrollCursorIntoView();n.removeSelectionMarkers(D);D=I.rectangularRangeBlock(y,m);if(n.$mouseHandler.$clickSelection&&D.length==1&&D[0].isEmpty()){D[0]=n.$mouseHandler.$clickSelection.clone()}D.forEach(n.addSelectionMarker,n);n.updateSelectionMarkers();n.$blockScrolling--};n.$blockScrolling++;if(G&&!w){I.toSingleRange()}else{if(!G&&w){l=I.toOrientedRange();n.addSelectionMarker(l)}}if(A){m=i.documentToScreenPosition(I.lead)}else{I.moveToPosition(q)}n.$blockScrolling--;y={row:-1,column:-1};var j=function(K){clearInterval(v);n.removeSelectionMarkers(D);if(!D.length){D=[I.toOrientedRange()]}n.$blockScrolling++;if(l){n.removeSelectionMarker(l);I.toSingleRange(l)}for(var J=0;J<D.length;J++){I.addRange(D[J])}n.inVirtualSelectionMode=false;n.$mouseHandler.$clickSelection=null;n.$blockScrolling--};var C=k;f.capture(n.container,p,j);var v=setInterval(function(){C()},20);return E.preventDefault()}}}b.onMouseDown=g});ace.define("ace/commands/multi_select_commands",["require","exports","module","ace/keyboard/hash_handler"],function(b,a,c){a.defaultCommands=[{name:"addCursorAbove",exec:function(e){e.selectMoreLines(-1)},bindKey:{win:"Ctrl-Alt-Up",mac:"Ctrl-Alt-Up"},scrollIntoView:"cursor",readOnly:true},{name:"addCursorBelow",exec:function(e){e.selectMoreLines(1)},bindKey:{win:"Ctrl-Alt-Down",mac:"Ctrl-Alt-Down"},scrollIntoView:"cursor",readOnly:true},{name:"addCursorAboveSkipCurrent",exec:function(e){e.selectMoreLines(-1,true)},bindKey:{win:"Ctrl-Alt-Shift-Up",mac:"Ctrl-Alt-Shift-Up"},scrollIntoView:"cursor",readOnly:true},{name:"addCursorBelowSkipCurrent",exec:function(e){e.selectMoreLines(1,true)},bindKey:{win:"Ctrl-Alt-Shift-Down",mac:"Ctrl-Alt-Shift-Down"},scrollIntoView:"cursor",readOnly:true},{name:"selectMoreBefore",exec:function(e){e.selectMore(-1)},bindKey:{win:"Ctrl-Alt-Left",mac:"Ctrl-Alt-Left"},scrollIntoView:"cursor",readOnly:true},{name:"selectMoreAfter",exec:function(e){e.selectMore(1)},bindKey:{win:"Ctrl-Alt-Right",mac:"Ctrl-Alt-Right"},scrollIntoView:"cursor",readOnly:true},{name:"selectNextBefore",exec:function(e){e.selectMore(-1,true)},bindKey:{win:"Ctrl-Alt-Shift-Left",mac:"Ctrl-Alt-Shift-Left"},scrollIntoView:"cursor",readOnly:true},{name:"selectNextAfter",exec:function(e){e.selectMore(1,true)},bindKey:{win:"Ctrl-Alt-Shift-Right",mac:"Ctrl-Alt-Shift-Right"},scrollIntoView:"cursor",readOnly:true},{name:"splitIntoLines",exec:function(e){e.multiSelect.splitIntoLines()},bindKey:{win:"Ctrl-Alt-L",mac:"Ctrl-Alt-L"},readOnly:true},{name:"alignCursors",exec:function(e){e.alignCursors()},bindKey:{win:"Ctrl-Alt-A",mac:"Ctrl-Alt-A"},scrollIntoView:"cursor"},{name:"findAll",exec:function(e){e.findAll()},bindKey:{win:"Ctrl-Alt-K",mac:"Ctrl-Alt-G"},scrollIntoView:"cursor",readOnly:true}];a.multiSelectCommands=[{name:"singleSelection",bindKey:"esc",exec:function(e){e.exitMultiSelectMode()},scrollIntoView:"cursor",readOnly:true,isAvailable:function(e){return e&&e.inMultiSelectMode}}];var d=b("../keyboard/hash_handler").HashHandler;a.keyboardHandler=new d(a.multiSelectCommands)});ace.define("ace/multi_select",["require","exports","module","ace/range_list","ace/range","ace/selection","ace/mouse/multi_select_handler","ace/lib/event","ace/lib/lang","ace/commands/multi_select_commands","ace/search","ace/edit_session","ace/editor","ace/config"],function(g,q,b){var n=g("./range_list").RangeList;var o=g("./range").Range;var c=g("./selection").Selection;var e=g("./mouse/multi_select_handler").onMouseDown;var m=g("./lib/event");var r=g("./lib/lang");var d=g("./commands/multi_select_commands");q.commands=d.defaultCommands.concat(d.multiSelectCommands);var f=g("./search").Search;var h=new f();function j(u,t,s){h.$options.wrap=true;h.$options.needle=t;h.$options.backwards=s==-1;return h.find(u)}var a=g("./edit_session").EditSession;(function(){this.getSelectionMarkers=function(){return this.$selectionMarkers}}).call(a.prototype);(function(){this.ranges=null;this.rangeList=null;this.addRange=function(t,s){if(!t){return}if(!this.inMultiSelectMode&&this.rangeCount===0){var v=this.toOrientedRange();this.rangeList.add(v);this.rangeList.add(t);if(this.rangeList.ranges.length!=2){this.rangeList.removeAll();return s||this.fromOrientedRange(t)}this.rangeList.removeAll();this.rangeList.add(v);this.$onAddRange(v)}if(!t.cursor){t.cursor=t.end}var u=this.rangeList.add(t);this.$onAddRange(t);if(u.length){this.$onRemoveRange(u)}if(this.rangeCount>1&&!this.inMultiSelectMode){this._signal("multiSelect");this.inMultiSelectMode=true;this.session.$undoSelect=false;this.rangeList.attach(this.session)}return s||this.fromOrientedRange(t)};this.toSingleRange=function(s){s=s||this.ranges[0];var t=this.rangeList.removeAll();if(t.length){this.$onRemoveRange(t)}s&&this.fromOrientedRange(s)};this.substractPoint=function(t){var s=this.rangeList.substractPoint(t);if(s){this.$onRemoveRange(s);return s[0]}};this.mergeOverlappingRanges=function(){var s=this.rangeList.merge();if(s.length){this.$onRemoveRange(s)}else{if(this.ranges[0]){this.fromOrientedRange(this.ranges[0])}}};this.$onAddRange=function(s){this.rangeCount=this.rangeList.ranges.length;this.ranges.unshift(s);this._signal("addRange",{range:s})};this.$onRemoveRange=function(u){this.rangeCount=this.rangeList.ranges.length;if(this.rangeCount==1&&this.inMultiSelectMode){var v=this.rangeList.ranges.pop();u.push(v);this.rangeCount=0}for(var t=u.length;t--;){var s=this.ranges.indexOf(u[t]);this.ranges.splice(s,1)}this._signal("removeRange",{ranges:u});if(this.rangeCount===0&&this.inMultiSelectMode){this.inMultiSelectMode=false;this._signal("singleSelect");this.session.$undoSelect=true;this.rangeList.detach(this.session)}v=v||this.ranges[0];if(v&&!v.isEqual(this.getRange())){this.fromOrientedRange(v)}};this.$initRangeList=function(){if(this.rangeList){return}this.rangeList=new n();this.ranges=[];this.rangeCount=0};this.getAllRanges=function(){return this.rangeCount?this.rangeList.ranges.concat():[this.getRange()]};this.splitIntoLines=function(){if(this.rangeCount>1){var t=this.rangeList.ranges;var z=t[t.length-1];var A=o.fromPoints(t[0].start,z.end);this.toSingleRange();this.setSelectionRange(A,z.cursor==z.start)}else{var A=this.getRange();var B=this.isBackwards();var C=A.start.row;var x=A.end.row;if(C==x){if(B){var u=A.end,w=A.start}else{var u=A.start,w=A.end}this.addRange(o.fromPoints(w,w));this.addRange(o.fromPoints(u,u));return}var v=[];var s=this.getLineRange(C,true);s.start.column=A.start.column;v.push(s);for(var y=C+1;y<x;y++){v.push(this.getLineRange(y,true))}s=this.getLineRange(x,true);s.end.column=A.end.column;v.push(s);v.forEach(this.addRange,this)}};this.toggleBlockSelection=function(){if(this.rangeCount>1){var s=this.rangeList.ranges;var w=s[s.length-1];var t=o.fromPoints(s[0].start,w.end);this.toSingleRange();this.setSelectionRange(t,w.cursor==w.start)}else{var v=this.session.documentToScreenPosition(this.selectionLead);var u=this.session.documentToScreenPosition(this.selectionAnchor);var x=this.rectangularRangeBlock(v,u);x.forEach(this.addRange,this)}};this.rectangularRangeBlock=function(B,w,t){var H=[];var C=B.column<w.column;if(C){var y=B.column;var v=w.column;var G=B.offsetX;var u=w.offsetX}else{var y=w.column;var v=B.column;var G=w.offsetX;var u=B.offsetX}var I=B.row<w.row;if(I){var s=B.row;var E=w.row}else{var s=w.row;var E=B.row}if(y<0){y=0}if(s<0){s=0}if(s==E){t=true}for(var A=s;A<=E;A++){var D=o.fromPoints(this.session.screenToDocumentPosition(A,y,G),this.session.screenToDocumentPosition(A,v,u));if(D.isEmpty()){if(J&&p(D.end,J)){break}var J=D.end}D.cursor=C?D.start:D.end;H.push(D)}if(I){H.reverse()}if(!t){var x=H.length-1;while(H[x].isEmpty()&&x>0){x--}if(x>0){var z=0;while(H[z].isEmpty()){z++}}for(var F=x;F>=z;F--){if(H[F].isEmpty()){H.splice(F,1)}}}return H}}).call(c.prototype);var l=g("./editor").Editor;(function(){this.updateSelectionMarkers=function(){this.renderer.updateCursor();this.renderer.updateBackMarkers()};this.addSelectionMarker=function(t){if(!t.cursor){t.cursor=t.end}var s=this.getSelectionStyle();t.marker=this.session.addMarker(t,"ace_selection",s);this.session.$selectionMarkers.push(t);this.session.selectionMarkerCount=this.session.$selectionMarkers.length;return t};this.removeSelectionMarker=function(s){if(!s.marker){return}this.session.removeMarker(s.marker);var t=this.session.$selectionMarkers.indexOf(s);if(t!=-1){this.session.$selectionMarkers.splice(t,1)}this.session.selectionMarkerCount=this.session.$selectionMarkers.length};this.removeSelectionMarkers=function(s){var u=this.session.$selectionMarkers;for(var w=s.length;w--;){var t=s[w];if(!t.marker){continue}this.session.removeMarker(t.marker);var v=u.indexOf(t);if(v!=-1){u.splice(v,1)}}this.session.selectionMarkerCount=u.length};this.$onAddRange=function(s){this.addSelectionMarker(s.range);this.renderer.updateCursor();this.renderer.updateBackMarkers()};this.$onRemoveRange=function(s){this.removeSelectionMarkers(s.ranges);this.renderer.updateCursor();this.renderer.updateBackMarkers()};this.$onMultiSelect=function(s){if(this.inMultiSelectMode){return}this.inMultiSelectMode=true;this.setStyle("ace_multiselect");this.keyBinding.addKeyboardHandler(d.keyboardHandler);this.commands.setDefaultHandler("exec",this.$onMultiSelectExec);this.renderer.updateCursor();this.renderer.updateBackMarkers()};this.$onSingleSelect=function(s){if(this.session.multiSelect.inVirtualMode){return}this.inMultiSelectMode=false;this.unsetStyle("ace_multiselect");this.keyBinding.removeKeyboardHandler(d.keyboardHandler);this.commands.removeDefaultHandler("exec",this.$onMultiSelectExec);this.renderer.updateCursor();this.renderer.updateBackMarkers();this._emit("changeSelection")};this.$onMultiSelectExec=function(u){var v=u.command;var t=u.editor;if(!t.multiSelect){return}if(!v.multiSelectAction){var s=v.exec(t,u.args||{});t.multiSelect.addRange(t.multiSelect.toOrientedRange());t.multiSelect.mergeOverlappingRanges()}else{if(v.multiSelectAction=="forEach"){s=t.forEachSelection(v,u.args)}else{if(v.multiSelectAction=="forEachLine"){s=t.forEachSelection(v,u.args,true)}else{if(v.multiSelectAction=="single"){t.exitMultiSelectMode();s=v.exec(t,u.args||{})}else{s=v.multiSelectAction(t,u.args||{})}}}}return s};this.forEachSelection=function(v,C,G){if(this.inVirtualSelectionMode){return}var z=G&&G.keepOrder;var B=G==true||G&&G.$byLines;var D=this.session;var E=this.selection;var w=E.rangeList;var t=(z?E:w).ranges;var F;if(!t.length){return v.exec?v.exec(this,C||{}):v(this,C||{})}var u=E._eventRegistry;E._eventRegistry={};var s=new c(D);this.inVirtualSelectionMode=true;for(var y=t.length;y--;){if(B){while(y>0&&t[y].start.row==t[y-1].end.row){y--}}s.fromOrientedRange(t[y]);s.index=y;this.selection=D.selection=s;var A=v.exec?v.exec(this,C||{}):v(this,C||{});if(!F&&A!==undefined){F=A}s.toOrientedRange(t[y])}s.detach();this.selection=D.selection=E;this.inVirtualSelectionMode=false;E._eventRegistry=u;E.mergeOverlappingRanges();var x=this.renderer.$scrollAnimation;this.onCursorChange();this.onSelectionChange();if(x&&x.from==x.to){this.renderer.animateScrolling(x.from)}return F};this.exitMultiSelectMode=function(){if(!this.inMultiSelectMode||this.inVirtualSelectionMode){return}this.multiSelect.toSingleRange()};this.getSelectedText=function(){var w="";if(this.inMultiSelectMode&&!this.inVirtualSelectionMode){var t=this.multiSelect.rangeList.ranges;var u=[];for(var v=0;v<t.length;v++){u.push(this.session.getTextRange(t[v]))}var s=this.session.getDocument().getNewLineCharacter();w=u.join(s);if(w.length==(u.length-1)*s.length){w=""}}else{if(!this.selection.isEmpty()){w=this.session.getTextRange(this.getSelectionRange())}}return w};this.$checkMultiselectChange=function(u,t){if(this.inMultiSelectMode&&!this.inVirtualSelectionMode){var s=this.multiSelect.ranges[0];if(this.multiSelect.isEmpty()&&t==this.multiSelect.anchor){return}var v=t==this.multiSelect.anchor?s.cursor==s.start?s.end:s.start:s.cursor;if(v.row!=t.row||this.session.$clipPositionToDocument(v.row,v.column).column!=t.column){this.multiSelect.toSingleRange(this.multiSelect.toOrientedRange())}}};this.findAll=function(y,v,t){v=v||{};v.needle=y||v.needle;if(v.needle==undefined){var u=this.selection.isEmpty()?this.selection.getWordRange():this.selection.getRange();v.needle=this.session.getTextRange(u)}this.$search.set(v);var s=this.$search.findAll(this.session);if(!s.length){return 0}this.$blockScrolling+=1;var x=this.multiSelect;if(!t){x.toSingleRange(s[0])}for(var w=s.length;w--;){x.addRange(s[w],true)}if(u&&x.rangeList.rangeAtPoint(u.start)){x.addRange(u,true)}this.$blockScrolling-=1;return s.length};this.selectMoreLines=function(t,A){var w=this.selection.toOrientedRange();var B=w.cursor==w.end;var z=this.session.documentToScreenPosition(w.cursor);if(this.selection.$desiredColumn){z.column=this.selection.$desiredColumn}var x=this.session.screenToDocumentPosition(z.row+t,z.column);if(!w.isEmpty()){var u=this.session.documentToScreenPosition(B?w.end:w.start);var v=this.session.screenToDocumentPosition(u.row+t,u.column)}else{var v=x}if(B){var y=o.fromPoints(x,v);y.cursor=y.start}else{var y=o.fromPoints(v,x);y.cursor=y.end}y.desiredColumn=z.column;if(!this.selection.inMultiSelectMode){this.selection.addRange(w)}else{if(A){var s=w.cursor}}this.selection.addRange(y);if(s){this.selection.substractPoint(s)}};this.transposeSelections=function(t){var y=this.session;var x=y.multiSelect;var w=x.ranges;for(var v=w.length;v--;){var s=w[v];if(s.isEmpty()){var u=y.getWordRange(s.start.row,s.start.column);s.start.row=u.start.row;s.start.column=u.start.column;s.end.row=u.end.row;s.end.column=u.end.column}}x.mergeOverlappingRanges();var z=[];for(var v=w.length;v--;){var s=w[v];z.unshift(y.getTextRange(s))}if(t<0){z.unshift(z.pop())}else{z.push(z.shift())}for(var v=w.length;v--;){var s=w[v];var u=s.clone();y.replace(s,z[v]);s.start.row=u.start.row;s.start.column=u.start.column}};this.selectMore=function(u,w,v){var z=this.session;var x=z.multiSelect;var s=x.toOrientedRange();if(s.isEmpty()){s=z.getWordRange(s.start.row,s.start.column);s.cursor=u==-1?s.start:s.end;this.multiSelect.addRange(s);if(v){return}}var y=z.getTextRange(s);var t=j(z,y,u);if(t){t.cursor=u==-1?t.start:t.end;this.$blockScrolling+=1;this.session.unfold(t);this.multiSelect.addRange(t);this.$blockScrolling-=1;this.renderer.scrollCursorIntoView(null,0.5)}if(w){this.multiSelect.substractPoint(s.cursor)}};this.alignCursors=function(){var z=this.session;var u=z.multiSelect;var t=u.ranges;var G=-1;var v=t.filter(function(H){if(H.cursor.row==G){return true}G=H.cursor.row});if(!t.length||v.length==t.length-1){var w=this.selection.getRange();var y=w.start.row,x=w.end.row;var B=y==x;if(B){var A=this.session.getLength();var F;do{F=this.session.getLine(x)}while(/[=:]/.test(F)&&++x<A);do{F=this.session.getLine(y)}while(/[=:]/.test(F)&&--y>0);if(y<0){y=0}if(x>=A){x=A-1}}var E=this.session.removeFullLines(y,x);E=this.$reAlignText(E,B);this.session.insert({row:y,column:0},E.join("\n")+"\n");if(!B){w.start.column=0;w.end.column=E[E.length-1].length}this.selection.setRange(w)}else{v.forEach(function(H){u.substractPoint(H.cursor)});var C=0;var D=Infinity;var s=t.map(function(J){var K=J.cursor;var H=z.getLine(K.row);var I=H.substr(K.column).search(/\S/g);if(I==-1){I=0}if(K.column>C){C=K.column}if(I<D){D=I}return I});t.forEach(function(J,I){var K=J.cursor;var H=C-K.column;var L=s[I]-D;if(H>L){z.insert(K,r.stringRepeat(" ",H-L))}else{z.remove(new o(K.row,K.column,K.row,K.column-H+L))}J.start.column=J.end.column=C;J.start.row=J.end.row=K.row;J.cursor=J.end});u.fromOrientedRange(t[0]);this.renderer.updateCursor();this.renderer.updateBackMarkers()}};this.$reAlignText=function(C,v){var s=true,u=true;var x,y,B;return C.map(function(E){var D=E.match(/(\s*)(.*?)(\s*)([=:].*)/);if(!D){return[E]}if(x==null){x=D[1].length;y=D[2].length;B=D[3].length;return D}if(x+y+B!=D[1].length+D[2].length+D[3].length){u=false}if(x!=D[1].length){s=false}if(x>D[1].length){x=D[1].length}if(y<D[2].length){y=D[2].length}if(B>D[3].length){B=D[3].length}return D}).map(v?t:s?u?A:t:w);function z(D){return r.stringRepeat(" ",D)}function t(D){return !D[2]?D[0]:z(x)+D[2]+z(y-D[2].length+B)+D[4].replace(/^([=:])\s+/,"$1 ")}function A(D){return !D[2]?D[0]:z(x+y-D[2].length)+D[2]+z(B," ")+D[4].replace(/^([=:])\s+/,"$1 ")}function w(D){return !D[2]?D[0]:z(x)+D[2]+z(B)+D[4].replace(/^([=:])\s+/,"$1 ")}}}).call(l.prototype);function p(t,s){return t.row==s.row&&t.column==s.column}q.onSessionChange=function(u){var t=u.session;if(t&&!t.multiSelect){t.$selectionMarkers=[];t.selection.$initRangeList();t.multiSelect=t.selection}this.multiSelect=t&&t.multiSelect;var s=u.oldSession;if(s){s.multiSelect.off("addRange",this.$onAddRange);s.multiSelect.off("removeRange",this.$onRemoveRange);s.multiSelect.off("multiSelect",this.$onMultiSelect);s.multiSelect.off("singleSelect",this.$onSingleSelect);s.multiSelect.lead.off("change",this.$checkMultiselectChange);s.multiSelect.anchor.off("change",this.$checkMultiselectChange)}if(t){t.multiSelect.on("addRange",this.$onAddRange);t.multiSelect.on("removeRange",this.$onRemoveRange);t.multiSelect.on("multiSelect",this.$onMultiSelect);t.multiSelect.on("singleSelect",this.$onSingleSelect);t.multiSelect.lead.on("change",this.$checkMultiselectChange);t.multiSelect.anchor.on("change",this.$checkMultiselectChange)}if(t&&this.inMultiSelectMode!=t.selection.inMultiSelectMode){if(t.selection.inMultiSelectMode){this.$onMultiSelect()}else{this.$onSingleSelect()}}};function k(s){if(s.$multiselectOnSessionChange){return}s.$onAddRange=s.$onAddRange.bind(s);s.$onRemoveRange=s.$onRemoveRange.bind(s);s.$onMultiSelect=s.$onMultiSelect.bind(s);s.$onSingleSelect=s.$onSingleSelect.bind(s);s.$multiselectOnSessionChange=q.onSessionChange.bind(s);s.$checkMultiselectChange=s.$checkMultiselectChange.bind(s);s.$multiselectOnSessionChange(s);s.on("changeSession",s.$multiselectOnSessionChange);s.on("mousedown",e);s.commands.addCommands(d.defaultCommands);i(s)}function i(t){var s=t.textInput.getElement();var v=false;m.addListener(s,"keydown",function(x){var w=x.keyCode==18&&!(x.ctrlKey||x.shiftKey||x.metaKey);if(t.$blockSelectEnabled&&w){if(!v){t.renderer.setMouseCursor("crosshair");v=true}}else{if(v){u()}}});m.addListener(s,"keyup",u);m.addListener(s,"blur",u);function u(w){if(v){t.renderer.setMouseCursor("");v=false}}}q.MultiSelect=k;g("./config").defineOptions(l.prototype,"editor",{enableMultiselect:{set:function(s){k(this);if(s){this.on("changeSession",this.$multiselectOnSessionChange);this.on("mousedown",e)}else{this.off("changeSession",this.$multiselectOnSessionChange);this.off("mousedown",e)}},value:true},enableBlockSelect:{set:function(s){this.$blockSelectEnabled=s},value:true}})});ace.define("ace/mode/folding/fold_mode",["require","exports","module","ace/range"],function(b,a,c){var e=b("../../range").Range;var d=a.FoldMode=function(){};(function(){this.foldingStartMarker=null;this.foldingStopMarker=null;this.getFoldWidget=function(h,g,i){var f=h.getLine(i);if(this.foldingStartMarker.test(f)){return"start"}if(g=="markbeginend"&&this.foldingStopMarker&&this.foldingStopMarker.test(f)){return"end"}return""};this.getFoldWidgetRange=function(g,f,h){return null};this.indentationBlock=function(l,p,g){var o=/\S/;var q=l.getLine(p);var j=q.search(o);if(j==-1){return}var h=g||q.length;var m=l.getLength();var n=p;var i=p;while(++p<m){var f=l.getLine(p).search(o);if(f==-1){continue}if(f<=j){break}i=p}if(i>n){var k=l.getLine(i).length;return new e(n,h,i,k)}};this.openingBracketBlock=function(j,l,k,h,f){var m={row:k,column:h+1};var g=j.$findClosingBracket(l,m,f);if(!g){return}var i=j.foldWidgets[g.row];if(i==null){i=j.getFoldWidget(g.row)}if(i=="start"&&g.row>m.row){g.row--;g.column=j.getLine(g.row).length}return e.fromPoints(m,g)};this.closingBracketBlock=function(i,k,j,h,f){var g={row:j,column:h};var l=i.$findOpeningBracket(k,g);if(!l){return}l.column++;g.column--;return e.fromPoints(l,g)}}).call(d.prototype)});ace.define("ace/theme/textmate",["require","exports","module","ace/lib/dom"],function(b,a,c){a.isDark=false;a.cssClass="ace-tm";a.cssText='.ace-tm .ace_gutter {background: #f0f0f0;color: #333;}.ace-tm .ace_print-margin {width: 1px;background: #e8e8e8;}.ace-tm .ace_fold {background-color: #6B72E6;}.ace-tm {background-color: #FFFFFF;color: black;}.ace-tm .ace_cursor {color: black;}.ace-tm .ace_invisible {color: rgb(191, 191, 191);}.ace-tm .ace_storage,.ace-tm .ace_keyword {color: blue;}.ace-tm .ace_constant {color: rgb(197, 6, 11);}.ace-tm .ace_constant.ace_buildin {color: rgb(88, 72, 246);}.ace-tm .ace_constant.ace_language {color: rgb(88, 92, 246);}.ace-tm .ace_constant.ace_library {color: rgb(6, 150, 14);}.ace-tm .ace_invalid {background-color: rgba(255, 0, 0, 0.1);color: red;}.ace-tm .ace_support.ace_function {color: rgb(60, 76, 114);}.ace-tm .ace_support.ace_constant {color: rgb(6, 150, 14);}.ace-tm .ace_support.ace_type,.ace-tm .ace_support.ace_class {color: rgb(109, 121, 222);}.ace-tm .ace_keyword.ace_operator {color: rgb(104, 118, 135);}.ace-tm .ace_string {color: rgb(3, 106, 7);}.ace-tm .ace_comment {color: rgb(76, 136, 107);}.ace-tm .ace_comment.ace_doc {color: rgb(0, 102, 255);}.ace-tm .ace_comment.ace_doc.ace_tag {color: rgb(128, 159, 191);}.ace-tm .ace_constant.ace_numeric {color: rgb(0, 0, 205);}.ace-tm .ace_variable {color: rgb(49, 132, 149);}.ace-tm .ace_xml-pe {color: rgb(104, 104, 91);}.ace-tm .ace_entity.ace_name.ace_function {color: #0000A2;}.ace-tm .ace_heading {color: rgb(12, 7, 255);}.ace-tm .ace_list {color:rgb(185, 6, 144);}.ace-tm .ace_meta.ace_tag {color:rgb(0, 22, 142);}.ace-tm .ace_string.ace_regex {color: rgb(255, 0, 0)}.ace-tm .ace_marker-layer .ace_selection {background: rgb(181, 213, 255);}.ace-tm.ace_multiselect .ace_selection.ace_start {box-shadow: 0 0 3px 0px white;}.ace-tm .ace_marker-layer .ace_step {background: rgb(252, 255, 0);}.ace-tm .ace_marker-layer .ace_stack {background: rgb(164, 229, 101);}.ace-tm .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid rgb(192, 192, 192);}.ace-tm .ace_marker-layer .ace_active-line {background: rgba(0, 0, 0, 0.07);}.ace-tm .ace_gutter-active-line {background-color : #dcdcdc;}.ace-tm .ace_marker-layer .ace_selected-word {background: rgb(250, 250, 255);border: 1px solid rgb(200, 200, 250);}.ace-tm .ace_indent-guide {background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==") right repeat-y;}';var d=b("../lib/dom");d.importCssString(a.cssText,a.cssClass)});ace.define("ace/line_widgets",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/range"],function(b,a,c){var d=b("./lib/oop");var g=b("./lib/dom");var f=b("./range").Range;function e(h){this.session=h;this.session.widgetManager=this;this.session.getRowLength=this.getRowLength;this.session.$getWidgetScreenLength=this.$getWidgetScreenLength;this.updateOnChange=this.updateOnChange.bind(this);this.renderWidgets=this.renderWidgets.bind(this);this.measureWidgets=this.measureWidgets.bind(this);this.session._changedWidgets=[];this.$onChangeEditor=this.$onChangeEditor.bind(this);this.session.on("change",this.updateOnChange);this.session.on("changeFold",this.updateOnFold);this.session.on("changeEditor",this.$onChangeEditor)}(function(){this.getRowLength=function(j){var i;if(this.lineWidgets){i=this.lineWidgets[j]&&this.lineWidgets[j].rowCount||0}else{i=0}if(!this.$useWrapMode||!this.$wrapData[j]){return 1+i}else{return this.$wrapData[j].length+1+i}};this.$getWidgetScreenLength=function(){var h=0;this.lineWidgets.forEach(function(i){if(i&&i.rowCount&&!i.hidden){h+=i.rowCount}});return h};this.$onChangeEditor=function(h){this.attach(h.editor)};this.attach=function(h){if(h&&h.widgetManager&&h.widgetManager!=this){h.widgetManager.detach()}if(this.editor==h){return}this.detach();this.editor=h;if(h){h.widgetManager=this;h.renderer.on("beforeRender",this.measureWidgets);h.renderer.on("afterRender",this.renderWidgets)}};this.detach=function(j){var i=this.editor;if(!i){return}this.editor=null;i.widgetManager=null;i.renderer.off("beforeRender",this.measureWidgets);i.renderer.off("afterRender",this.renderWidgets);var h=this.session.lineWidgets;h&&h.forEach(function(k){if(k&&k.el&&k.el.parentNode){k._inDocument=false;k.el.parentNode.removeChild(k.el)}})};this.updateOnFold=function(o,n){var m=n.lineWidgets;if(!m||!o.action){return}var j=o.data;var p=j.start.row;var h=j.end.row;var l=o.action=="add";for(var k=p+1;k<h;k++){if(m[k]){m[k].hidden=l}}if(m[h]){if(l){if(!m[p]){m[p]=m[h]}else{m[h].hidden=l}}else{if(m[p]==m[h]){m[p]=undefined}m[h].hidden=l}}};this.updateOnChange=function(m){var k=this.session.lineWidgets;if(!k){return}var i=m.start.row;var h=m.end.row-i;if(h===0){}else{if(m.action=="remove"){var l=k.splice(i+1,h);l.forEach(function(n){n&&this.removeLineWidget(n)},this);this.$updateRows()}else{var j=new Array(h);j.unshift(i,0);k.splice.apply(k,j);this.$updateRows()}}};this.$updateRows=function(){var h=this.session.lineWidgets;if(!h){return}var i=true;h.forEach(function(j,k){if(j){i=false;j.row=k;while(j.$oldWidget){j.$oldWidget.row=k;j=j.$oldWidget}}});if(i){this.session.lineWidgets=null}};this.addLineWidget=function(i){if(!this.session.lineWidgets){this.session.lineWidgets=new Array(this.session.getLength())}var h=this.session.lineWidgets[i.row];if(h){i.$oldWidget=h;if(h.el&&h.el.parentNode){h.el.parentNode.removeChild(h.el);h._inDocument=false}}this.session.lineWidgets[i.row]=i;i.session=this.session;var l=this.editor.renderer;if(i.html&&!i.el){i.el=g.createElement("div");i.el.innerHTML=i.html}if(i.el){g.addCssClass(i.el,"ace_lineWidgetContainer");i.el.style.position="absolute";i.el.style.zIndex=5;l.container.appendChild(i.el);i._inDocument=true}if(!i.coverGutter){i.el.style.zIndex=3}if(i.pixelHeight==null){i.pixelHeight=i.el.offsetHeight}if(i.rowCount==null){i.rowCount=i.pixelHeight/l.layerConfig.lineHeight}var j=this.session.getFoldAt(i.row,0);i.$fold=j;if(j){var k=this.session.lineWidgets;if(i.row==j.end.row&&!k[j.start.row]){k[j.start.row]=i}else{i.hidden=true}}this.session._emit("changeFold",{data:{start:{row:i.row}}});this.$updateRows();this.renderWidgets(null,l);this.onWidgetChanged(i);return i};this.removeLineWidget=function(i){i._inDocument=false;i.session=null;if(i.el&&i.el.parentNode){i.el.parentNode.removeChild(i.el)}if(i.editor&&i.editor.destroy){try{i.editor.destroy()}catch(j){}}if(this.session.lineWidgets){var h=this.session.lineWidgets[i.row];if(h==i){this.session.lineWidgets[i.row]=i.$oldWidget;if(i.$oldWidget){this.onWidgetChanged(i.$oldWidget)}}else{while(h){if(h.$oldWidget==i){h.$oldWidget=i.$oldWidget;break}h=h.$oldWidget}}}this.session._emit("changeFold",{data:{start:{row:i.row}}});this.$updateRows()};this.getWidgetsAtRow=function(k){var i=this.session.lineWidgets;var h=i&&i[k];var j=[];while(h){j.push(h);h=h.$oldWidget}return j};this.onWidgetChanged=function(h){this.session._changedWidgets.push(h);this.editor&&this.editor.renderer.updateFull()};this.measureWidgets=function(p,o){var k=this.session._changedWidgets;var l=o.layerConfig;if(!k||!k.length){return}var n=Infinity;for(var m=0;m<k.length;m++){var h=k[m];if(!h||!h.el){continue}if(h.session!=this.session){continue}if(!h._inDocument){if(this.session.lineWidgets[h.row]!=h){continue}h._inDocument=true;o.container.appendChild(h.el)}h.h=h.el.offsetHeight;if(!h.fixedWidth){h.w=h.el.offsetWidth;h.screenWidth=Math.ceil(h.w/l.characterWidth)}var j=h.h/l.lineHeight;if(h.coverLine){j-=this.session.getRowLineCount(h.row);if(j<0){j=0}}if(h.rowCount!=j){h.rowCount=j;if(h.row<n){n=h.row}}}if(n!=Infinity){this.session._emit("changeFold",{data:{start:{row:n}}});this.session.lineWidgetWidth=null}this.session._changedWidgets=[]};this.renderWidgets=function(m,n){var h=n.layerConfig;var o=this.session.lineWidgets;if(!o){return}var l=Math.min(this.firstRow,h.firstRow);var r=Math.max(this.lastRow,h.lastRow,o.length);while(l>0&&!o[l]){l--}this.firstRow=h.firstRow;this.lastRow=h.lastRow;n.$cursorLayer.config=h;for(var k=l;k<=r;k++){var q=o[k];if(!q||!q.el){continue}if(q.hidden){q.el.style.top=-100-(q.pixelHeight||0)+"px";continue}if(!q._inDocument){q._inDocument=true;n.container.appendChild(q.el)}var p=n.$cursorLayer.getPixelPosition({row:k,column:0},true).top;if(!q.coverLine){p+=h.lineHeight*this.session.getRowLineCount(q.row)}q.el.style.top=p-h.offset+"px";var j=q.coverGutter?0:n.gutterWidth;if(!q.fixedWidth){j-=n.scrollLeft}q.el.style.left=j+"px";if(q.fullWidth&&q.screenWidth){q.el.style.minWidth=h.width+2*h.padding+"px"}if(q.fixedWidth){q.el.style.right=n.scrollBar.getWidth()+"px"}else{q.el.style.right=""}}}}).call(e.prototype);a.LineWidgets=e});ace.define("ace/ext/error_marker",["require","exports","module","ace/line_widgets","ace/lib/dom","ace/range"],function(c,b,d){var f=c("../line_widgets").LineWidgets;var g=c("../lib/dom");var e=c("../range").Range;function h(o,l,i){var m=0;var k=o.length-1;while(m<=k){var j=(m+k)>>1;var n=i(l,o[j]);if(n>0){m=j+1}else{if(n<0){k=j-1}else{return j}}}return -(m+1)}function a(o,p,l){var n=o.getAnnotations().sort(e.comparePoints);if(!n.length){return}var m=h(n,{row:p,column:-1},e.comparePoints);if(m<0){m=-m-1}if(m>=n.length){m=l>0?0:n.length-1}else{if(m===0&&l<0){m=n.length-1}}var k=n[m];if(!k||!l){return}if(k.row===p){do{k=n[m+=l]}while(k&&k.row===p);if(!k){return n.slice()}}var j=[];p=k.row;do{j[l<0?"unshift":"push"](k);k=n[m+=l]}while(k&&k.row==p);return j.length&&j}b.showErrorMarker=function(p,k){var q=p.session;if(!q.widgetManager){q.widgetManager=new f(q);q.widgetManager.attach(p)}var r=p.getCursorPosition();var v=r.row;var m=q.widgetManager.getWidgetsAtRow(v).filter(function(x){return x.type=="errorMarker"})[0];if(m){m.destroy()}else{v-=k}var o=a(q,v,k);var u;if(o){var l=o[0];r.column=(l.pos&&typeof l.column!="number"?l.pos.sc:l.column)||0;r.row=l.row;u=p.renderer.$gutterLayer.$annotations[r.row]}else{if(m){return}else{u={text:["Looks good!"],className:"ace_ok"}}}p.session.unfold(r.row);p.selection.moveToPosition(r);var t={row:r.row,fixedWidth:true,coverGutter:true,el:g.createElement("div"),type:"errorMarker"};var i=t.el.appendChild(g.createElement("div"));var s=t.el.appendChild(g.createElement("div"));s.className="error_widget_arrow "+u.className;var j=p.renderer.$cursorLayer.getPixelPosition(r).left;s.style.left=j+p.renderer.gutterWidth-5+"px";t.el.className="error_widget_wrapper";i.className="error_widget "+u.className;i.innerHTML=u.text.join("<br>");i.appendChild(g.createElement("div"));var n=function(x,y,w){if(y===0&&(w==="esc"||w==="return")){t.destroy();return{command:"null"}}};t.destroy=function(){if(p.$mouseHandler.isMousePressed){return}p.keyBinding.removeKeyboardHandler(n);q.widgetManager.removeLineWidget(t);p.off("changeSelection",t.destroy);p.off("changeSession",t.destroy);p.off("mouseup",t.destroy);p.off("change",t.destroy)};p.keyBinding.addKeyboardHandler(n);p.on("changeSelection",t.destroy);p.on("changeSession",t.destroy);p.on("mouseup",t.destroy);p.on("change",t.destroy);p.session.widgetManager.addLineWidget(t);t.el.onmousedown=p.focus.bind(p);p.renderer.scrollCursorIntoView(null,0.5,{bottom:t.el.offsetHeight})};g.importCssString("    .error_widget_wrapper {        background: inherit;        color: inherit;        border:none    }    .error_widget {        border-top: solid 2px;        border-bottom: solid 2px;        margin: 5px 0;        padding: 10px 40px;        white-space: pre-wrap;    }    .error_widget.ace_error, .error_widget_arrow.ace_error{        border-color: #ff5a5a    }    .error_widget.ace_warning, .error_widget_arrow.ace_warning{        border-color: #F1D817    }    .error_widget.ace_info, .error_widget_arrow.ace_info{        border-color: #5a5a5a    }    .error_widget.ace_ok, .error_widget_arrow.ace_ok{        border-color: #5aaa5a    }    .error_widget_arrow {        position: absolute;        border: solid 5px;        border-top-color: transparent!important;        border-right-color: transparent!important;        border-left-color: transparent!important;        top: -5px;    }","")});ace.define("ace/ace",["require","exports","module","ace/lib/fixoldbrowsers","ace/lib/dom","ace/lib/event","ace/editor","ace/edit_session","ace/undomanager","ace/virtual_renderer","ace/worker/worker_client","ace/keyboard/hash_handler","ace/placeholder","ace/multi_select","ace/mode/folding/fold_mode","ace/theme/textmate","ace/ext/error_marker","ace/config"],function(e,h,d){e("./lib/fixoldbrowsers");var g=e("./lib/dom");var b=e("./lib/event");var i=e("./editor").Editor;var a=e("./edit_session").EditSession;var c=e("./undomanager").UndoManager;var f=e("./virtual_renderer").VirtualRenderer;e("./worker/worker_client");e("./keyboard/hash_handler");e("./placeholder");e("./multi_select");e("./mode/folding/fold_mode");e("./theme/textmate");e("./ext/error_marker");h.config=e("./config");h.require=e;if(typeof define==="function"){h.define=define}h.edit=function(m){if(typeof m=="string"){var j=m;m=document.getElementById(j);if(!m){throw new Error("ace.edit can't find div #"+j)}}if(m&&m.env&&m.env.editor instanceof i){return m.env.editor}var n="";if(m&&/input|textarea/i.test(m.tagName)){var p=m;n=p.value;m=g.createElement("pre");p.parentNode.replaceChild(m,p)}else{if(m){n=g.getInnerText(m);m.innerHTML=""}}var o=h.createEditSession(n);var l=new i(new f(m));l.setSession(o);var k={document:o,editor:l,onResize:l.resize.bind(l,null)};if(p){k.textarea=p}b.addListener(window,"resize",k.onResize);l.on("destroy",function(){b.removeListener(window,"resize",k.onResize);k.editor.container.env=null});l.container.env=l.env=k;return l};h.createEditSession=function(l,k){var j=new a(l,k);j.setUndoManager(new c());return j};h.EditSession=a;h.UndoManager=c;h.version="1.2.9"});(function(){ace.require(["ace/ace"],function(b){if(b){b.config.init(true);b.define=ace.define}if(!window.ace){window.ace=b}for(var c in b){if(b.hasOwnProperty(c)){window.ace[c]=b[c]}}})})();