(function(){function e(r){var f=function(n,i){return t("",n,i)},u=i;r&&(i[r]||(i[r]={}),u=i[r]),u.define&&u.define.packaged||(n.original=u.define,u.define=n,u.define.packaged=!0),u.require&&u.require.packaged||(t.original=u.require,u.require=f,u.require.packaged=!0)}var u="ace",i=function(){return this}();if(u||typeof requirejs=="undefined"){var n=function(t,i,r){if(typeof t!="string"){n.original?n.original.apply(window,arguments):(console.error("dropping module because define wasn't a string."),console.trace());return}arguments.length==2&&(r=i),n.modules||(n.modules={},n.payloads={}),n.payloads[t]=r,n.modules[t]=null},t=function(n,i,r){var e,u,h,o,s;if(Object.prototype.toString.call(i)==="[object Array]"){for(e=[],u=0,h=i.length;u<h;++u){if(o=f(n,i[u]),!o&&t.original)return t.original.apply(window,arguments);e.push(o)}r&&r.apply(null,e)}else{if(typeof i=="string")return s=f(n,i),!s&&t.original?t.original.apply(window,arguments):(r&&r(),s);if(t.original)return t.original.apply(window,arguments)}},r=function(n,t){var i,u,f;if(t.indexOf("!")!==-1)return i=t.split("!"),r(n,i[0])+"!"+r(n,i[1]);if(t.charAt(0)==".")for(u=n.split("/").slice(0,-1).join("/"),t=u+"/"+t;t.indexOf(".")!==-1&&f!=t;)f=t,t=t.replace(/\/\.\//,"/").replace(/[^\/]+\/\.\.\//,"");return t},f=function(i,u){var f;if(u=r(i,u),f=n.modules[u],!f){if(f=n.payloads[u],typeof f=="function"){var e={},o={id:u,uri:"",exports:e,packaged:!0},s=function(n,i){return t(u,n,i)},h=f(s,e,o);e=h||o.exports,n.modules[u]=e,delete n.payloads[u]}f=n.modules[u]=e||f}return f};e(u)}})(),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/multi_select","ace/worker/worker_client","ace/keyboard/hash_handler","ace/placeholder","ace/mode/folding/fold_mode","ace/theme/textmate","ace/config"],function(n,t){n("./lib/fixoldbrowsers");var o=n("./lib/dom"),r=n("./lib/event"),u=n("./editor").Editor,f=n("./edit_session").EditSession,e=n("./undomanager").UndoManager,s=n("./virtual_renderer").VirtualRenderer,h=n("./multi_select").MultiSelect;n("./worker/worker_client"),n("./keyboard/hash_handler"),n("./placeholder"),n("./mode/folding/fold_mode"),n("./theme/textmate"),t.config=n("./config"),t.require=n,t.edit=function(n){var e,n,c,i,f;if(typeof n=="string"&&(e=n,n=document.getElementById(e),!n))throw"ace.edit can't find div #"+e;return n.env&&n.env.editor instanceof u?n.env.editor:(c=t.createEditSession(o.getInnerText(n)),n.innerHTML="",i=new u(new s(n)),new h(i),i.setSession(c),f={document:c,editor:i,onResize:i.resize.bind(i,null)},r.addListener(window,"resize",f.onResize),i.on("destroy",function(){r.removeListener(window,"resize",f.onResize)}),n.env=i.env=f,i)},t.createEditSession=function(n,t){var i=new f(n,t);return i.setUndoManager(new e),i},t.EditSession=f,t.UndoManager=e}),ace.define("ace/lib/fixoldbrowsers",["require","exports","module","ace/lib/regexp","ace/lib/es5-shim"],function(n){n("./regexp"),n("./es5-shim")}),ace.define("ace/lib/regexp",["require","exports","module"],function(){function e(n){return(n.global?"g":"")+(n.ignoreCase?"i":"")+(n.multiline?"m":"")+(n.extended?"x":"")+(n.sticky?"y":"")}function o(n,t,i){if(Array.prototype.indexOf)return n.indexOf(t,i);for(var r=i||0;r<n.length;r++)if(n[r]===t)return r;return-1}var r={exec:RegExp.prototype.exec,test:RegExp.prototype.test,match:String.prototype.match,replace:String.prototype.replace,split:String.prototype.split},f=r.exec.call(/()??/,"")[1]===undefined,u=function(){var n=/^/g;return r.test.call(n,""),!n.lastIndex}();u&&f||(RegExp.prototype.exec=function(n){var t=r.exec.apply(this,arguments),s,h,i;if(typeof n=="string"&&t){if(!f&&t.length>1&&o(t,"")>-1&&(h=RegExp(this.source,r.replace.call(e(this),"g","")),r.replace.call(n.slice(t.index),h,function(){for(var n=1;n<arguments.length-2;n++)arguments[n]===undefined&&(t[n]=undefined)})),this._xregexp&&this._xregexp.captureNames)for(i=1;i<t.length;i++)s=this._xregexp.captureNames[i-1],s&&(t[s]=t[i]);!u&&this.global&&!t[0].length&&this.lastIndex>t.index&&this.lastIndex--}return t},u||(RegExp.prototype.test=function(n){var t=r.exec.call(this,n);return t&&this.global&&!t[0].length&&this.lastIndex>t.index&&this.lastIndex--,!!t}))}),ace.define("ace/lib/es5-shim",["require","exports","module"],function(){function y(){}function d(n){try{return Object.defineProperty(n,"sentinel",{}),"sentinel"in n}catch(t){}}function g(n){return n=+n,n!==n?n=0:n!==0&&n!==1/0&&n!==-1/0&&(n=(n>0||-1)*Math.floor(Math.abs(n))),n}var it,b,e,rt,k,ut,ft,a,pt,s,st,ht,o;Function.prototype.bind||(Function.prototype.bind=function(n){var t=this,r,i;if(typeof t!="function")throw new TypeError("Function.prototype.bind called on incompatible "+t);return r=c.call(arguments,1),i=function(){if(this instanceof i){var u=t.apply(this,r.concat(c.call(arguments)));return Object(u)===u?u:this}return t.apply(n,r.concat(c.call(arguments)))},t.prototype&&(y.prototype=t.prototype,i.prototype=new y,y.prototype=null),i});var h=Function.prototype.call,ct=Array.prototype,u=Object.prototype,c=ct.slice,r=h.bind(u.toString),f=h.bind(u.hasOwnProperty),nt,tt,p,w,l;if((l=f(u,"__defineGetter__"))&&(nt=h.bind(u.__defineGetter__),tt=h.bind(u.__defineSetter__),p=h.bind(u.__lookupGetter__),w=h.bind(u.__lookupSetter__)),[1,2].splice(0).length!=2&&(function(){function i(n){var t=new Array(n+2);return t[0]=t[1]=0,t}var n=[],t;return n.splice.apply(n,i(20)),n.splice.apply(n,i(26)),t=n.length,n.splice(5,0,"XXX"),t+1==n.length,t+1==n.length?!0:void 0}()?(it=Array.prototype.splice,Array.prototype.splice=function(n,t){return arguments.length?it.apply(this,[n===void 0?0:n,t===void 0?this.length-n:t].concat(c.call(arguments,2))):[]}):Array.prototype.splice=function(n,t){var r=this.length,i;n>0?n>r&&(n=r):n==void 0?n=0:n<0&&(n=Math.max(r+n,0)),n+t<r||(t=r-n);var a=this.slice(n,n+t),e=c.call(arguments,2),f=e.length;if(n===r)f&&this.push.apply(this,e);else{var s=Math.min(t,r-n),u=n+s,o=u+f-s,l=r-u,h=r-s;if(o<u)for(i=0;i<l;++i)this[o+i]=this[u+i];else if(o>u)for(i=l;i--;)this[o+i]=this[u+i];if(f&&n===h)this.length=h,this.push.apply(this,e);else for(this.length=h+f,i=0;i<f;++i)this[n+i]=e[i]}return a}),Array.isArray||(Array.isArray=function(n){return r(n)=="[object Array]"}),b=Object("a"),e=b[0]!="a"||!(0 in b),Array.prototype.forEach||(Array.prototype.forEach=function(n){var u=o(this),i=e&&r(this)=="[object String]"?this.split(""):u,f=arguments[1],t=-1,s=i.length>>>0;if(r(n)!="[object Function]")throw new TypeError;while(++t<s)t in i&&n.call(f,i[t],t,u)}),Array.prototype.map||(Array.prototype.map=function(n){var u=o(this),i=e&&r(this)=="[object String]"?this.split(""):u,f=i.length>>>0,s=Array(f),h=arguments[1],t;if(r(n)!="[object Function]")throw new TypeError(n+" is not a function");for(t=0;t<f;t++)t in i&&(s[t]=n.call(h,i[t],t,u));return s}),Array.prototype.filter||(Array.prototype.filter=function(n){var f=o(this),i=e&&r(this)=="[object String]"?this.split(""):f,h=i.length>>>0,s=[],u,c=arguments[1],t;if(r(n)!="[object Function]")throw new TypeError(n+" is not a function");for(t=0;t<h;t++)t in i&&(u=i[t],n.call(c,u,t,f)&&s.push(u));return s}),Array.prototype.every||(Array.prototype.every=function(n){var u=o(this),i=e&&r(this)=="[object String]"?this.split(""):u,f=i.length>>>0,s=arguments[1],t;if(r(n)!="[object Function]")throw new TypeError(n+" is not a function");for(t=0;t<f;t++)if(t in i&&!n.call(s,i[t],t,u))return!1;return!0}),Array.prototype.some||(Array.prototype.some=function(n){var u=o(this),i=e&&r(this)=="[object String]"?this.split(""):u,f=i.length>>>0,s=arguments[1],t;if(r(n)!="[object Function]")throw new TypeError(n+" is not a function");for(t=0;t<f;t++)if(t in i&&n.call(s,i[t],t,u))return!0;return!1}),Array.prototype.reduce||(Array.prototype.reduce=function(n){var s=o(this),i=e&&r(this)=="[object String]"?this.split(""):s,f=i.length>>>0,t,u;if(r(n)!="[object Function]")throw new TypeError(n+" is not a function");if(!f&&arguments.length==1)throw new TypeError("reduce of empty array with no initial value");if(t=0,arguments.length>=2)u=arguments[1];else do{if(t in i){u=i[t++];break}if(++t>=f)throw new TypeError("reduce of empty array with no initial value");}while(1);for(;t<f;t++)t in i&&(u=n.call(void 0,u,i[t],t,s));return u}),Array.prototype.reduceRight||(Array.prototype.reduceRight=function(n){var f=o(this),u=e&&r(this)=="[object String]"?this.split(""):f,s=u.length>>>0,i,t;if(r(n)!="[object Function]")throw new TypeError(n+" is not a function");if(!s&&arguments.length==1)throw new TypeError("reduceRight of empty array with no initial value");if(t=s-1,arguments.length>=2)i=arguments[1];else do{if(t in u){i=u[t--];break}if(--t<0)throw new TypeError("reduceRight of empty array with no initial value");}while(1);do t in this&&(i=n.call(void 0,i,u[t],t,f));while(t--);return i}),Array.prototype.indexOf&&[0,1].indexOf(1,2)==-1||(Array.prototype.indexOf=function(n){var i=e&&r(this)=="[object String]"?this.split(""):o(this),u=i.length>>>0,t;if(!u)return-1;for(t=0,arguments.length>1&&(t=g(arguments[1])),t=t>=0?t:Math.max(0,u+t);t<u;t++)if(t in i&&i[t]===n)return t;return-1}),Array.prototype.lastIndexOf&&[0,1].lastIndexOf(0,-3)==-1||(Array.prototype.lastIndexOf=function(n){var i=e&&r(this)=="[object String]"?this.split(""):o(this),u=i.length>>>0,t;if(!u)return-1;for(t=u-1,arguments.length>1&&(t=Math.min(t,g(arguments[1]))),t=t>=0?t:u-Math.abs(t);t>=0;t--)if(t in i&&n===i[t])return t;return-1}),Object.getPrototypeOf||(Object.getPrototypeOf=function(n){return n.__proto__||(n.constructor?n.constructor.prototype:u)}),Object.getOwnPropertyDescriptor||(rt="Object.getOwnPropertyDescriptor called on a non-object: ",Object.getOwnPropertyDescriptor=function(n,t){var i,o,r,e;if(typeof n!="object"&&typeof n!="function"||n===null)throw new TypeError(rt+n);if(f(n,t))return(i={enumerable:!0,configurable:!0},l&&(o=n.__proto__,n.__proto__=u,r=p(n,t),e=w(n,t),n.__proto__=o,r||e))?(r&&(i.get=r),e&&(i.set=e),i):(i.value=n[t],i)}),Object.getOwnPropertyNames||(Object.getOwnPropertyNames=function(n){return Object.keys(n)}),Object.create||(k=Object.prototype.__proto__===null?function(){return{__proto__:null}}:function(){var n={},t;for(t in n)n[t]=null;return n.constructor=n.hasOwnProperty=n.propertyIsEnumerable=n.isPrototypeOf=n.toLocaleString=n.toString=n.valueOf=n.__proto__=null,n},Object.create=function(n,t){var i,r;if(n===null)i=k();else{if(typeof n!="object")throw new TypeError("typeof prototype["+typeof n+"] != 'object'");r=function(){},r.prototype=n,i=new r,i.__proto__=n}return t!==void 0&&Object.defineProperties(i,t),i}),Object.defineProperty&&(ut=d({}),ft=typeof document=="undefined"||d(document.createElement("div")),ut&&ft||(a=Object.defineProperty)),!Object.defineProperty||a){var lt="Property description must be an object: ",at="Object.defineProperty called on non-object: ",vt="getters & setters can not be defined on this javascript engine";Object.defineProperty=function(n,t,i){if(typeof n!="object"&&typeof n!="function"||n===null)throw new TypeError(at+n);if(typeof i!="object"&&typeof i!="function"||i===null)throw new TypeError(lt+i);if(a)try{return a.call(Object,n,t,i)}catch(e){}if(f(i,"value"))if(l&&(p(n,t)||w(n,t))){var r=n.__proto__;n.__proto__=u,delete n[t],n[t]=i.value,n.__proto__=r}else n[t]=i.value;else{if(!l)throw new TypeError(vt);f(i,"get")&&nt(n,t,i.get),f(i,"set")&&tt(n,t,i.set)}return n}}Object.defineProperties||(Object.defineProperties=function(n,t){for(var i in t)f(t,i)&&Object.defineProperty(n,i,t[i]);return n}),Object.seal||(Object.seal=function(n){return n}),Object.freeze||(Object.freeze=function(n){return n});try{Object.freeze(function(){})}catch(wt){Object.freeze=function(n){return function(t){return typeof t=="function"?t:n(t)}}(Object.freeze)}if(Object.preventExtensions||(Object.preventExtensions=function(n){return n}),Object.isSealed||(Object.isSealed=function(){return!1}),Object.isFrozen||(Object.isFrozen=function(){return!1}),Object.isExtensible||(Object.isExtensible=function(n){var t,i;if(Object(n)===n)throw new TypeError;for(t="";f(n,t);)t+="?";return n[t]=!0,i=f(n,t),delete n[t],i}),!Object.keys){var et=!0,ot=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],yt=ot.length;for(pt in{toString:null})et=!1;Object.keys=function v(n){var I,i,t,u,r;if(typeof n!="object"&&typeof n!="function"||n===null)throw new TypeError("Object.keys called on a non-object");v=[];for(i in n)f(n,i)&&v.push(i);if(et)for(t=0,u=yt;t<u;t++)r=ot[t],f(n,r)&&v.push(r);return v}}Date.now||(Date.now=function(){return+new Date}),s="\t\n\x0b\f\r   ᠎             　\u2028\u2029﻿",(!String.prototype.trim||s.trim())&&(s="["+s+"]",st=new RegExp("^"+s+s+"*"),ht=new RegExp(s+s+"*$"),String.prototype.trim=function(){return String(this).replace(st,"").replace(ht,"")}),o=function(n){if(n==null)throw new TypeError("can't convert "+n+" to object");return Object(n)}}),ace.define("ace/lib/dom",["require","exports","module"],function(n,t){if(typeof document!="undefined"){var r="http://www.w3.org/1999/xhtml";t.getDocumentHead=function(n){return n||(n=document),n.head||n.getElementsByTagName("head")[0]||n.documentElement},t.createElement=function(n,t){return document.createElementNS?document.createElementNS(t||r,n):document.createElement(n)},t.hasCssClass=function(n,t){var i=n.className.split(/\s+/g);return i.indexOf(t)!==-1},t.addCssClass=function(n,i){t.hasCssClass(n,i)||(n.className+=" "+i)},t.removeCssClass=function(n,t){for(var i=n.className.split(/\s+/g),r;;){if(r=i.indexOf(t),r==-1)break;i.splice(r,1)}n.className=i.join(" ")},t.toggleCssClass=function(n,t){for(var i=n.className.split(/\s+/g),r=!0,u;;){if(u=i.indexOf(t),u==-1)break;r=!1,i.splice(u,1)}return r&&i.push(t),n.className=i.join(" "),r},t.setCssClass=function(n,i,r){r?t.addCssClass(n,i):t.removeCssClass(n,i)},t.hasCssString=function(n,t){var r=0,i;if(t=t||document,t.createStyleSheet&&(i=t.styleSheets)){while(r<i.length)if(i[r++].owningElement.id===n)return!0}else if(i=t.getElementsByTagName("style"))while(r<i.length)if(i[r++].id===n)return!0;return!1},t.importCssString=function(n,i,u){if(u=u||document,i&&t.hasCssString(i,u))return null;var f;u.createStyleSheet?(f=u.createStyleSheet(),f.cssText=n,i&&(f.owningElement.id=i)):(f=u.createElementNS?u.createElementNS(r,"style"):u.createElement("style"),f.appendChild(u.createTextNode(n)),i&&(f.id=i),t.getDocumentHead(u).appendChild(f))},t.importCssStylsheet=function(n,i){if(i.createStyleSheet)i.createStyleSheet(n);else{var r=t.createElement("link");r.rel="stylesheet",r.href=n,t.getDocumentHead(i).appendChild(r)}},t.getInnerWidth=function(n){return parseInt(t.computedStyle(n,"paddingLeft"),10)+parseInt(t.computedStyle(n,"paddingRight"),10)+n.clientWidth},t.getInnerHeight=function(n){return parseInt(t.computedStyle(n,"paddingTop"),10)+parseInt(t.computedStyle(n,"paddingBottom"),10)+n.clientHeight},window.pageYOffset!==undefined?(t.getPageScrollTop=function(){return window.pageYOffset},t.getPageScrollLeft=function(){return window.pageXOffset}):(t.getPageScrollTop=function(){return document.body.scrollTop},t.getPageScrollLeft=function(){return document.body.scrollLeft}),t.computedStyle=window.getComputedStyle?function(n,t){return t?(window.getComputedStyle(n,"")||{})[t]||"":window.getComputedStyle(n,"")||{}}:function(n,t){return t?n.currentStyle[t]:n.currentStyle},t.scrollbarWidth=function(n){var r=t.createElement("ace_inner"),u,i,e,o,f;return r.style.width="100%",r.style.minWidth="0px",r.style.height="200px",r.style.display="block",u=t.createElement("ace_outer"),i=u.style,i.position="absolute",i.left="-10000px",i.overflow="hidden",i.width="200px",i.minWidth="0px",i.height="150px",i.display="block",u.appendChild(r),e=n.documentElement,e.appendChild(u),o=r.offsetWidth,i.overflow="scroll",f=r.offsetWidth,o==f&&(f=u.clientWidth),e.removeChild(u),o-f},t.setInnerHtml=function(n,t){var i=n.cloneNode(!1);return i.innerHTML=t,n.parentNode.replaceChild(i,n),i},"textContent"in document.documentElement?(t.setInnerText=function(n,t){n.textContent=t},t.getInnerText=function(n){return n.textContent}):(t.setInnerText=function(n,t){n.innerText=t},t.getInnerText=function(n){return n.innerText}),t.getParentWindow=function(n){return n.defaultView||n.parentWindow}}}),ace.define("ace/lib/event",["require","exports","module","ace/lib/keys","ace/lib/useragent","ace/lib/dom"],function(n,t){function e(n,t,i){var e=0;if(e=!r.isOpera||"KeyboardEvent"in window||!r.isMac?0|(t.ctrlKey?1:0)|(t.altKey?2:0)|(t.shiftKey?4:0)|(t.metaKey?8:0):0|(t.metaKey?1:0)|(t.altKey?2:0)|(t.shiftKey?4:0)|(t.ctrlKey?8:0),i in f.MODIFIER_KEYS){switch(f.MODIFIER_KEYS[i]){case"Alt":e=2;break;case"Shift":e=4;break;case"Ctrl":e=1;break;default:e=8}i=0}return(!r.isMac&&u[91]||u[92])&&(e|=8),e&8&&(i==91||i==93)&&(i=0),!!e||i in f.FUNCTION_KEYS||i in f.PRINTABLE_KEYS?n(t,e,i):!1}var f=n("./keys"),r=n("./useragent"),s=n("./dom"),u,o;t.addListener=function(n,t,i){if(n.addEventListener)return n.addEventListener(t,i,!1);if(n.attachEvent){var r=function(){i(window.event)};i._wrapper=r,n.attachEvent("on"+t,r)}},t.removeListener=function(n,t,i){if(n.removeEventListener)return n.removeEventListener(t,i,!1);n.detachEvent&&n.detachEvent("on"+t,i._wrapper||i)},t.stopEvent=function(n){return t.stopPropagation(n),t.preventDefault(n),!1},t.stopPropagation=function(n){n.stopPropagation?n.stopPropagation():n.cancelBubble=!0},t.preventDefault=function(n){n.preventDefault?n.preventDefault():n.returnValue=!1},t.getButton=function(n){return n.type=="dblclick"?0:n.type=="contextmenu"||n.ctrlKey&&r.isMac?2:n.preventDefault?n.button:{1:0,2:2,4:1}[n.button]},t.capture=document.documentElement.setCapture?function(n,i,r){function u(e){i(e),f||(f=!0,r(e)),t.removeListener(n,"mousemove",i),t.removeListener(n,"mouseup",u),t.removeListener(n,"losecapture",u),n.releaseCapture()}var f=!1;t.addListener(n,"mousemove",i),t.addListener(n,"mouseup",u),t.addListener(n,"losecapture",u),n.setCapture()}:function(n,t,i){function r(n){t&&t(n),i&&i(n),document.removeEventListener("mousemove",t,!0),document.removeEventListener("mouseup",r,!0),n.stopPropagation()}document.addEventListener("mousemove",t,!0),document.addEventListener("mouseup",r,!0)},t.addMouseWheelListener=function(n,i){var r=8,u=function(n){n.wheelDelta!==undefined?n.wheelDeltaX!==undefined?(n.wheelX=-n.wheelDeltaX/r,n.wheelY=-n.wheelDeltaY/r):(n.wheelX=0,n.wheelY=-n.wheelDelta/r):n.axis&&n.axis==n.HORIZONTAL_AXIS?(n.wheelX=(n.detail||0)*5,n.wheelY=0):(n.wheelX=0,n.wheelY=(n.detail||0)*5),i(n)};t.addListener(n,"DOMMouseScroll",u),t.addListener(n,"mousewheel",u)},t.addMultiMouseDownListener=function(n,i,u,f){var e=0,s,h,o,c={2:"dblclick",3:"tripleclick",4:"quadclick"};t.addListener(n,"mousedown",function(n){if(t.getButton(n)!=0)e=0;else{var r=Math.abs(n.clientX-s)>5||Math.abs(n.clientY-h)>5;(!o||r)&&(e=0),e+=1,o&&clearTimeout(o),o=setTimeout(function(){o=null},i[e-1]||600)}if(e==1&&(s=n.clientX,h=n.clientY),u[f]("mousedown",n),e>4)e=0;else if(e>1)return u[f](c[e],n)}),r.isOldIE&&t.addListener(n,"dblclick",function(n){e=2,o&&clearTimeout(o),o=setTimeout(function(){o=null},i[e-1]||600),u[f]("mousedown",n),u[f](c[e],n)})},u=Object.create(null),t.addCommandKeyListener=function(n,i){var f=t.addListener,s,o;!r.isOldGecko&&(!r.isOpera||"KeyboardEvent"in window)?(o=null,f(n,"keydown",function(n){u[n.keyCode]=!0;var t=e(i,n,n.keyCode);return o=n.defaultPrevented,t}),f(n,"keypress",function(n){o&&(n.ctrlKey||n.altKey||n.shiftKey||n.metaKey)&&(t.stopEvent(n),o=null)}),f(n,"keyup",function(n){u[n.keyCode]=null}),f(n,"focus",function(){u=Object.create(null)})):(s=null,f(n,"keydown",function(n){s=n.keyCode}),f(n,"keypress",function(n){return e(i,n,s)}))},window.postMessage&&!r.isOldIE&&(o=1,t.nextTick=function(n,i){i=i||window;var r="zero-timeout-message-"+o;t.addListener(i,"message",function u(f){f.data==r&&(t.stopPropagation(f),t.removeListener(i,"message",u),n())}),i.postMessage(r,"*")}),t.nextFrame=window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.msRequestAnimationFrame||window.oRequestAnimationFrame,t.nextFrame=t.nextFrame?t.nextFrame.bind(window):function(n){setTimeout(n,17)}}),ace.define("ace/lib/keys",["require","exports","module","ace/lib/oop"],function(n,t){var r=n("./oop"),u=function(){var n={MODIFIER_KEYS:{16:"Shift",17:"Ctrl",18:"Alt",224:"Meta"},KEY_MODS:{ctrl:1,alt:2,option:2,shift:4,meta:8,command:8,cmd:8},FUNCTION_KEYS:{8:"Backspace",9:"Tab",13:"Return",19:"Pause",27:"Esc",32:"Space",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"Left",38:"Up",39:"Right",40:"Down",44:"Print",45:"Insert",46:"Delete",96:"Numpad0",97:"Numpad1",98:"Numpad2",99:"Numpad3",100:"Numpad4",101:"Numpad5",102:"Numpad6",103:"Numpad7",104:"Numpad8",105:"Numpad9",112:"F1",113:"F2",114:"F3",115:"F4",116:"F5",117:"F6",118:"F7",119:"F8",120:"F9",121:"F10",122:"F11",123:"F12",144:"Numlock",145:"Scrolllock"},PRINTABLE_KEYS:{32:" ",48:"0",49:"1",50:"2",51:"3",52:"4",53:"5",54:"6",55:"7",56:"8",57:"9",59:";",61:"=",65:"a",66:"b",67:"c",68:"d",69:"e",70:"f",71:"g",72:"h",73:"i",74:"j",75:"k",76:"l",77:"m",78:"n",79:"o",80:"p",81:"q",82:"r",83:"s",84:"t",85:"u",86:"v",87:"w",88:"x",89:"y",90:"z",107:"+",109:"-",110:".",188:",",190:".",191:"/",192:"`",219:"[",220:"\\",221:"]",222:"'"}},t,i;for(t in n.FUNCTION_KEYS)i=n.FUNCTION_KEYS[t].toLowerCase(),n[i]=parseInt(t,10);return r.mixin(n,n.MODIFIER_KEYS),r.mixin(n,n.PRINTABLE_KEYS),r.mixin(n,n.FUNCTION_KEYS),n.enter=n["return"],n.escape=n.esc,n.del=n["delete"],n[173]="-",n}();r.mixin(t,u),t.keyCodeToString=function(n){return(u[n]||String.fromCharCode(n)).toLowerCase()}}),ace.define("ace/lib/oop",["require","exports","module"],function(n,t){t.inherits=function(){var n=function(){};return function(t,i){n.prototype=i.prototype,t.super_=i.prototype,t.prototype=new n,t.prototype.constructor=t}}(),t.mixin=function(n,t){for(var i in t)n[i]=t[i];return n},t.implement=function(n,i){t.mixin(n,i)}}),ace.define("ace/lib/useragent",["require","exports","module"],function(n,t){if(t.OS={LINUX:"LINUX",MAC:"MAC",WINDOWS:"WINDOWS"},t.getOS=function(){return t.isMac?t.OS.MAC:t.isLinux?t.OS.LINUX:t.OS.WINDOWS},typeof navigator=="object"){var u=(navigator.platform.match(/mac|win|linux/i)||["other"])[0].toLowerCase(),r=navigator.userAgent;t.isWin=u=="win",t.isMac=u=="mac",t.isLinux=u=="linux",t.isIE=(navigator.appName=="Microsoft Internet Explorer"||navigator.appName.indexOf("MSAppHost")>=0)&&parseFloat(navigator.userAgent.match(/MSIE ([0-9]+[\.0-9]+)/)[1]),t.isOldIE=t.isIE&&t.isIE<9,t.isGecko=t.isMozilla=window.controllers&&window.navigator.product==="Gecko",t.isOldGecko=t.isGecko&&parseInt((navigator.userAgent.match(/rv\:(\d+)/)||[])[1],10)<4,t.isOpera=window.opera&&Object.prototype.toString.call(window.opera)=="[object Opera]",t.isWebKit=parseFloat(r.split("WebKit/")[1])||undefined,t.isChrome=parseFloat(r.split(" Chrome/")[1])||undefined,t.isAIR=r.indexOf("AdobeAIR")>=0,t.isIPad=r.indexOf("iPad")>=0,t.isTouchPad=r.indexOf("TouchPad")>=0}}),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"],function(n,t){n("./lib/fixoldbrowsers");var e=n("./lib/oop"),o=n("./lib/dom"),s=n("./lib/lang"),h=n("./lib/useragent"),c=n("./keyboard/textinput").TextInput,l=n("./mouse/mouse_handler").MouseHandler,a=n("./mouse/fold_handler").FoldHandler,v=n("./keyboard/keybinding").KeyBinding,y=n("./edit_session").EditSession,p=n("./search").Search,r=n("./range").Range,w=n("./lib/event_emitter").EventEmitter,b=n("./commands/command_manager").CommandManager,k=n("./commands/default_commands").commands,u=n("./config"),f=function(n,t){var i=n.getContainerElement();this.container=i,this.renderer=n,this.commands=new b(h.isMac?"mac":"win",k),this.textInput=new c(n.getTextAreaContainer(),this),this.renderer.textarea=this.textInput.getElement(),this.keyBinding=new v(this),this.$mouseHandler=new l(this),new a(this),this.$blockScrolling=0,this.$search=(new p).set({wrap:!0}),this.setSession(t||new y("")),u.resetOptions(this),u._emit("editor",this)};(function(){e.implement(this,w),this.setKeyboardHandler=function(n){if(n)if(typeof n=="string"){this.$keybindingId=n;var t=this;u.loadModule(["keybinding",n],function(i){t.$keybindingId==n&&t.keyBinding.setKeyboardHandler(i&&i.handler)})}else delete this.$keybindingId,this.keyBinding.setKeyboardHandler(n);else this.keyBinding.setKeyboardHandler(null)},this.getKeyboardHandler=function(){return this.keyBinding.getKeyboardHandler()},this.setSession=function(n){var i,t;this.session!=n&&(this.session&&(i=this.session,this.session.removeEventListener("change",this.$onDocumentChange),this.session.removeEventListener("changeMode",this.$onChangeMode),this.session.removeEventListener("tokenizerUpdate",this.$onTokenizerUpdate),this.session.removeEventListener("changeTabSize",this.$onChangeTabSize),this.session.removeEventListener("changeWrapLimit",this.$onChangeWrapLimit),this.session.removeEventListener("changeWrapMode",this.$onChangeWrapMode),this.session.removeEventListener("onChangeFold",this.$onChangeFold),this.session.removeEventListener("changeFrontMarker",this.$onChangeFrontMarker),this.session.removeEventListener("changeBackMarker",this.$onChangeBackMarker),this.session.removeEventListener("changeBreakpoint",this.$onChangeBreakpoint),this.session.removeEventListener("changeAnnotation",this.$onChangeAnnotation),this.session.removeEventListener("changeOverwrite",this.$onCursorChange),this.session.removeEventListener("changeScrollTop",this.$onScrollTopChange),this.session.removeEventListener("changeScrollLeft",this.$onScrollLeftChange),t=this.session.getSelection(),t.removeEventListener("changeCursor",this.$onCursorChange),t.removeEventListener("changeSelection",this.$onSelectionChange)),this.session=n,this.$onDocumentChange=this.onDocumentChange.bind(this),n.addEventListener("change",this.$onDocumentChange),this.renderer.setSession(n),this.$onChangeMode=this.onChangeMode.bind(this),n.addEventListener("changeMode",this.$onChangeMode),this.$onTokenizerUpdate=this.onTokenizerUpdate.bind(this),n.addEventListener("tokenizerUpdate",this.$onTokenizerUpdate),this.$onChangeTabSize=this.renderer.onChangeTabSize.bind(this.renderer),n.addEventListener("changeTabSize",this.$onChangeTabSize),this.$onChangeWrapLimit=this.onChangeWrapLimit.bind(this),n.addEventListener("changeWrapLimit",this.$onChangeWrapLimit),this.$onChangeWrapMode=this.onChangeWrapMode.bind(this),n.addEventListener("changeWrapMode",this.$onChangeWrapMode),this.$onChangeFold=this.onChangeFold.bind(this),n.addEventListener("changeFold",this.$onChangeFold),this.$onChangeFrontMarker=this.onChangeFrontMarker.bind(this),this.session.addEventListener("changeFrontMarker",this.$onChangeFrontMarker),this.$onChangeBackMarker=this.onChangeBackMarker.bind(this),this.session.addEventListener("changeBackMarker",this.$onChangeBackMarker),this.$onChangeBreakpoint=this.onChangeBreakpoint.bind(this),this.session.addEventListener("changeBreakpoint",this.$onChangeBreakpoint),this.$onChangeAnnotation=this.onChangeAnnotation.bind(this),this.session.addEventListener("changeAnnotation",this.$onChangeAnnotation),this.$onCursorChange=this.onCursorChange.bind(this),this.session.addEventListener("changeOverwrite",this.$onCursorChange),this.$onScrollTopChange=this.onScrollTopChange.bind(this),this.session.addEventListener("changeScrollTop",this.$onScrollTopChange),this.$onScrollLeftChange=this.onScrollLeftChange.bind(this),this.session.addEventListener("changeScrollLeft",this.$onScrollLeftChange),this.selection=n.getSelection(),this.selection.addEventListener("changeCursor",this.$onCursorChange),this.$onSelectionChange=this.onSelectionChange.bind(this),this.selection.addEventListener("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(),this._emit("changeSession",{session:n,oldSession:i}))},this.getSession=function(){return this.session},this.setValue=function(n,t){return this.session.doc.setValue(n),t?t==1?this.navigateFileEnd():t==-1&&this.navigateFileStart():this.selectAll(),n},this.getValue=function(){return this.session.getValue()},this.getSelection=function(){return this.selection},this.resize=function(n){this.renderer.onResize(n)},this.setTheme=function(n){this.renderer.setTheme(n)},this.getTheme=function(){return this.renderer.getTheme()},this.setStyle=function(n){this.renderer.setStyle(n)},this.unsetStyle=function(n){this.renderer.unsetStyle(n)},this.getFontSize=function(){return this.getOption("fontSize")||o.computedStyle(this.container,"fontSize")},this.setFontSize=function(n){this.setOption("fontSize",n)},this.$highlightBrackets=function(){if(this.session.$bracketHighlight&&(this.session.removeMarker(this.session.$bracketHighlight),this.session.$bracketHighlight=null),!this.$highlightPending){var n=this;this.$highlightPending=!0,setTimeout(function(){var t,i;n.$highlightPending=!1,t=n.session.findMatchingBracket(n.getCursorPosition()),t?i=new r(t.row,t.column,t.row,t.column+1):n.session.$mode.getMatching&&(i=n.session.$mode.getMatching(n.session)),i&&(n.session.$bracketHighlight=n.session.addMarker(i,"ace_bracket","text"))},50)}},this.focus=function(){var n=this;setTimeout(function(){n.textInput.focus()}),this.textInput.focus()},this.isFocused=function(){return this.textInput.isFocused()},this.blur=function(){this.textInput.blur()},this.onFocus=function(){this.$isFocused||(this.$isFocused=!0,this.renderer.showCursor(),this.renderer.visualizeFocus(),this._emit("focus"))},this.onBlur=function(){this.$isFocused&&(this.$isFocused=!1,this.renderer.hideCursor(),this.renderer.visualizeBlur(),this._emit("blur"))},this.$cursorChange=function(){this.renderer.updateCursor()},this.onDocumentChange=function(n){var i=n.data,t=i.range,r;r=t.start.row==t.end.row&&i.action!="insertLines"&&i.action!="removeLines"?t.end.row:Infinity,this.renderer.updateLines(t.start.row,r),this._emit("change",n),this.$cursorChange()},this.onTokenizerUpdate=function(n){var t=n.data;this.renderer.updateLines(t.first,t.last)},this.onScrollTopChange=function(){this.renderer.scrollToY(this.session.getScrollTop())},this.onScrollLeftChange=function(){this.renderer.scrollToX(this.session.getScrollLeft())},this.onCursorChange=function(){this.$cursorChange(),this.$blockScrolling||this.renderer.scrollCursorIntoView(),this.$highlightBrackets(),this.$updateHighlightActiveLine(),this._emit("changeSelection")},this.$updateHighlightActiveLine=function(){var n=this.getSession(),t,i;this.$highlightActiveLine&&(this.$selectionStyle!="line"||!this.selection.isMultiLine())&&(t=this.getCursorPosition()),n.$highlightLineMarker&&!t?(n.removeMarker(n.$highlightLineMarker.id),n.$highlightLineMarker=null):!n.$highlightLineMarker&&t?(i=new r(t.row,t.column,t.row,Infinity),i.id=n.addMarker(i,"ace_active-line","screenLine"),n.$highlightLineMarker=i):t&&(n.$highlightLineMarker.start.row=t.row,n.$highlightLineMarker.end.row=t.row,n.$highlightLineMarker.start.column=t.column,n._emit("changeBackMarker"))},this.onSelectionChange=function(){var t=this.session,i,r,u;t.$selectionMarker&&t.removeMarker(t.$selectionMarker),t.$selectionMarker=null,this.selection.isEmpty()?this.$updateHighlightActiveLine():(i=this.selection.getRange(),r=this.getSelectionStyle(),t.$selectionMarker=t.addMarker(i,"ace_selection",r)),u=this.$highlightSelectedWord&&this.$getSelectionHighLightRegexp(),this.session.highlight(u),this._emit("changeSelection")},this.$getSelectionHighLightRegexp=function(){var o=this.session,n=this.getSelectionRange(),e;if(!n.isEmpty()&&!n.isMultiLine()){var r=n.start.column-1,u=n.end.column+1,i=o.getLine(n.start.row),f=i.length,t=i.substring(Math.max(r,0),Math.min(u,f));if((!(r>=0)||!/^[\w\d]/.test(t))&&(!(u<=f)||!/[\w\d]$/.test(t)))return(t=i.substring(n.start.column,n.end.column),!/^[\w\d]+$/.test(t))?void 0:e=this.$search.$assembleRegExp({wholeWord:!0,caseSensitive:!0,needle:t})}},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(n){this.renderer.updateText(),this._emit("changeMode",n)},this.onChangeWrapLimit=function(){this.renderer.updateFull()},this.onChangeWrapMode=function(){this.renderer.onResize(!0)},this.onChangeFold=function(){this.$updateHighlightActiveLine(),this.renderer.updateFull()},this.getCopyText=function(){var n="";return this.selection.isEmpty()||(n=this.session.getTextRange(this.getSelectionRange())),this._emit("copy",n),n},this.onCopy=function(){this.commands.exec("copy",this)},this.onCut=function(){this.commands.exec("cut",this)},this.onPaste=function(n){this.$readOnly||(this._emit("paste",n),this.insert(n))},this.execCommand=function(n,t){this.commands.exec(n,this,t)},this.insert=function(n){var i=this.session,s=i.getMode(),t=this.getCursorPosition(),u,a,b,p,h,c,o,l,e;this.getBehavioursEnabled()&&(u=s.transformAction(i.getState(t.row),"insertion",this,i,n),u&&(n=u.text)),n=n.replace("\t",this.session.getTabString()),this.selection.isEmpty()?this.session.getOverwrite()&&(a=new r.fromPoints(t,t),a.end.column+=n.length,this.session.remove(a)):(t=this.session.remove(this.getSelectionRange()),this.clearSelection()),this.clearSelection();var w=t.column,v=i.getState(t.row),f=i.getLine(t.row),k=s.checkOutdent(v,f,n),y=i.insert(t,n);if(u&&u.selection&&(u.selection.length==2?this.selection.setSelectionRange(new r(t.row,w+u.selection[0],t.row,w+u.selection[1])):this.selection.setSelectionRange(new r(t.row+u.selection[0],u.selection[1],t.row+u.selection[2],u.selection[3]))),i.getDocument().isNewLine(n)){for(b=s.getNextLineIndent(v,f.slice(0,t.column),i.getTabString()),this.moveCursorTo(t.row+1,0),p=i.getTabSize(),h=Number.MAX_VALUE,o=t.row+1;o<=y.row;++o){for(c=0,f=i.getLine(o),e=0;e<f.length;++e)if(f.charAt(e)=="\t")c+=p;else{if(f.charAt(e)!=" ")break;c+=1}/[^\s]/.test(f)&&(h=Math.min(c,h))}for(o=t.row+1;o<=y.row;++o){for(l=h,f=i.getLine(o),e=0;e<f.length&&l>0;++e)f.charAt(e)=="\t"?l-=p:f.charAt(e)==" "&&(l-=1);i.remove(new r(o,0,o,e))}i.indentRows(t.row+1,y.row,b)}k&&s.autoOutdent(v,i,t.row)},this.onTextInput=function(n){this.keyBinding.onTextInput(n)},this.onCommandKey=function(n,t,i){this.keyBinding.onCommandKey(n,t,i)},this.setOverwrite=function(n){this.session.setOverwrite(n)},this.getOverwrite=function(){return this.session.getOverwrite()},this.toggleOverwrite=function(){this.session.toggleOverwrite()},this.setScrollSpeed=function(n){this.setOption("scrollSpeed",n)},this.getScrollSpeed=function(){return this.getOption("scrollSpeed")},this.setDragDelay=function(n){this.setOption("dragDelay",n)},this.getDragDelay=function(){return this.getOption("dragDelay")},this.setSelectionStyle=function(n){this.setOption("selectionStyle",n)},this.getSelectionStyle=function(){return this.getOption("selectionStyle")},this.setHighlightActiveLine=function(n){this.setOption("highlightActiveLine",n)},this.getHighlightActiveLine=function(){return this.getOption("highlightActiveLine")},this.setHighlightGutterLine=function(n){this.setOption("highlightGutterLine",n)},this.getHighlightGutterLine=function(){return this.getOption("highlightGutterLine")},this.setHighlightSelectedWord=function(n){this.setOption("highlightSelectedWord",n)},this.getHighlightSelectedWord=function(){return this.$highlightSelectedWord},this.setAnimatedScroll=function(n){this.renderer.setAnimatedScroll(n)},this.getAnimatedScroll=function(){return this.renderer.getAnimatedScroll()},this.setShowInvisibles=function(n){this.renderer.setShowInvisibles(n)},this.getShowInvisibles=function(){return this.renderer.getShowInvisibles()},this.setDisplayIndentGuides=function(n){this.renderer.setDisplayIndentGuides(n)},this.getDisplayIndentGuides=function(){return this.renderer.getDisplayIndentGuides()},this.setShowPrintMargin=function(n){this.renderer.setShowPrintMargin(n)},this.getShowPrintMargin=function(){return this.renderer.getShowPrintMargin()},this.setPrintMarginColumn=function(n){this.renderer.setPrintMarginColumn(n)},this.getPrintMarginColumn=function(){return this.renderer.getPrintMarginColumn()},this.setReadOnly=function(n){this.setOption("readOnly",n)},this.getReadOnly=function(){return this.getOption("readOnly")},this.setBehavioursEnabled=function(n){this.setOption("behavioursEnabled",n)},this.getBehavioursEnabled=function(){return this.getOption("behavioursEnabled")},this.setWrapBehavioursEnabled=function(n){this.setOption("wrapBehavioursEnabled",n)},this.getWrapBehavioursEnabled=function(){return this.getOption("wrapBehavioursEnabled")},this.setShowFoldWidgets=function(n){this.setOption("showFoldWidgets",n)},this.getShowFoldWidgets=function(){return this.getOption("showFoldWidgets")},this.setFadeFoldWidgets=function(n){this.setOption("fadeFoldWidgets",n)},this.getFadeFoldWidgets=function(){return this.getOption("fadeFoldWidgets")},this.remove=function(n){var t;if(this.selection.isEmpty()&&(n=="left"?this.selection.selectLeft():this.selection.selectRight()),t=this.getSelectionRange(),this.getBehavioursEnabled()){var i=this.session,u=i.getState(t.start.row),r=i.getMode().transformAction(u,"deletion",this,i,t);r&&(t=r)}this.session.remove(t),this.clearSelection()},this.removeWordRight=function(){this.selection.isEmpty()&&this.selection.selectWordRight(),this.session.remove(this.getSelectionRange()),this.clearSelection()},this.removeWordLeft=function(){this.selection.isEmpty()&&this.selection.selectWordLeft(),this.session.remove(this.getSelectionRange()),this.clearSelection()},this.removeToLineStart=function(){this.selection.isEmpty()&&this.selection.selectLineStart(),this.session.remove(this.getSelectionRange()),this.clearSelection()},this.removeToLineEnd=function(){this.selection.isEmpty()&&this.selection.selectLineEnd();var n=this.getSelectionRange();n.start.column==n.end.column&&n.start.row==n.end.row&&(n.end.column=0,n.end.row++),this.session.remove(n),this.clearSelection()},this.splitLine=function(){this.selection.isEmpty()||(this.session.remove(this.getSelectionRange()),this.clearSelection());var n=this.getCursorPosition();this.insert("\n"),this.moveCursorToPosition(n)},this.transposeLetters=function(){var t,n,i,u,f;this.selection.isEmpty()&&(t=this.getCursorPosition(),n=t.column,n!==0)&&(i=this.session.getLine(t.row),n<i.length?(u=i.charAt(n)+i.charAt(n-1),f=new r(t.row,n-1,t.row,n+1)):(u=i.charAt(n-1)+i.charAt(n-2),f=new r(t.row,n-2,t.row,n)),this.session.replace(f,u))},this.toLowerCase=function(){var i=this.getSelectionRange(),n,t;this.selection.isEmpty()&&this.selection.selectWord(),n=this.getSelectionRange(),t=this.session.getTextRange(n),this.session.replace(n,t.toLowerCase()),this.selection.setSelectionRange(i)},this.toUpperCase=function(){var i=this.getSelectionRange(),n,t;this.selection.isEmpty()&&this.selection.selectWord(),n=this.getSelectionRange(),t=this.session.getTextRange(n),this.session.replace(n,t.toUpperCase()),this.selection.setSelectionRange(i)},this.indent=function(){var t=this.session,n=this.getSelectionRange(),i,r;if(!(n.start.row<n.end.row||n.start.column<n.end.column)){if(this.session.getUseSoftTabs()){var u=t.getTabSize(),f=this.getCursorPosition(),e=t.documentToScreenColumn(f.row,f.column),o=u-e%u;i=s.stringRepeat(" ",o)}else i="\t";return this.insert(i)}r=this.$getSelectedRows(),t.indentRows(r.first,r.last,"\t")},this.blockIndent=function(){var n=this.$getSelectedRows();this.session.indentRows(n.first,n.last,"\t")},this.blockOutdent=function(){var n=this.session.getSelection();this.session.outdentRows(n.getRange())},this.sortLines=function(){for(var t=this.$getSelectedRows(),u=this.session,f=[],i,e,n=t.first;n<=t.last;n++)f.push(u.getLine(n));for(f.sort(function(n,t){return n.toLowerCase()<t.toLowerCase()?-1:n.toLowerCase()>t.toLowerCase()?1:0}),i=new r(0,0,0,0),n=t.first;n<=t.last;n++)e=u.getLine(n),i.start.row=n,i.end.row=n,i.end.column=e.length,u.replace(i,f[n-t.first])},this.toggleCommentLines=function(){var t=this.session.getState(this.getCursorPosition().row),n=this.$getSelectedRows();this.session.getMode().toggleCommentLines(t,this.session,n.first,n.last)},this.toggleBlockComment=function(){var n=this.getCursorPosition(),t=this.session.getState(n.row),i=this.getSelectionRange();this.session.getMode().toggleBlockComment(t,this.session,i,n)},this.getNumberAt=function(n,t){var r=/[\-]?[0-9]+(?:\.[0-9]+)?/g,u,i,f;for(r.lastIndex=0,u=this.session.getLine(n);r.lastIndex<t;)if(i=r.exec(u),i.index<=t&&i.index+i[0].length>=t)return f={value:i[0],start:i.index,end:i.index+i[0].length};return null},this.modifyNumber=function(n){var u=this.selection.getCursor().row,i=this.selection.getCursor().column,l=new r(u,i-1,u,i),h=this.session.getTextRange(l),t,s,c;if(!isNaN(parseFloat(h))&&isFinite(h)&&(t=this.getNumberAt(u,i),t)){var e=t.value.indexOf(".")>=0?t.start+t.value.indexOf(".")+1:t.end,o=t.start+t.value.length-e,f=parseFloat(t.value);f*=Math.pow(10,o),n*=e!==t.end&&i<e?Math.pow(10,t.end-i-1):Math.pow(10,t.end-i),f+=n,f/=Math.pow(10,o),s=f.toFixed(o),c=new r(u,t.start,u,t.end),this.session.replace(c,s),this.moveCursorTo(u,Math.max(t.start+1,i+s.length-t.value.length))}},this.removeLines=function(){var n=this.$getSelectedRows(),t;t=n.first===0||n.last+1<this.session.getLength()?new r(n.first,0,n.last+1,0):new r(n.first-1,this.session.getLine(n.first-1).length,n.last,this.session.getLine(n.last).length),this.session.remove(t),this.clearSelection()},this.duplicateSelection=function(){var t=this.selection,i=this.session,n=t.getRange(),f=t.isBackwards(),r,u,e;n.isEmpty()?(r=n.start.row,i.duplicateLines(r,r)):(u=f?n.start:n.end,e=i.insert(u,i.getTextRange(n),!1),n.start=u,n.end=e,t.setSelectionRange(n,f))},this.moveLinesDown=function(){this.$moveLines(function(n,t){return this.session.moveLinesDown(n,t)})},this.moveLinesUp=function(){this.$moveLines(function(n,t){return this.session.moveLinesUp(n,t)})},this.moveText=function(n,t){return this.session.moveText(n,t)},this.copyLinesUp=function(){this.$moveLines(function(n,t){return this.session.duplicateLines(n,t),0})},this.copyLinesDown=function(){this.$moveLines(function(n,t){return this.session.duplicateLines(n,t)})},this.$moveLines=function(n){var t=this.selection,u,i,r,s;if(!t.inMultiSelectMode||this.inVirtualSelectionMode){var f=t.toOrientedRange(),r=this.$getSelectedRows(f),s=n.call(this,r.first,r.last);f.moveBy(s,0),t.fromOrientedRange(f)}else{for(u=t.rangeList.ranges,t.rangeList.detach(this.session),i=u.length;i--;){for(var e=i,r=u[i].collapseRows(),h=r.end.row,o=r.start.row;i--;){if(r=u[i].collapseRows(),!(o-r.end.row<=1))break;o=r.end.row}for(i++,s=n.call(this,o,h);e>=i;)u[e].moveBy(s,0),e--}t.fromOrientedRange(t.ranges[0]),t.rangeList.attach(this.session)}},this.$getSelectedRows=function(){var n=this.getSelectionRange().collapseRows();return{first:n.start.row,last:n.end.row}},this.onCompositionStart=function(){this.renderer.showComposition(this.getCursorPosition())},this.onCompositionUpdate=function(n){this.renderer.setCompositionText(n)},this.onCompositionEnd=function(){this.renderer.hideComposition()},this.getFirstVisibleRow=function(){return this.renderer.getFirstVisibleRow()},this.getLastVisibleRow=function(){return this.renderer.getLastVisibleRow()},this.isRowVisible=function(n){return n>=this.getFirstVisibleRow()&&n<=this.getLastVisibleRow()},this.isRowFullyVisible=function(n){return n>=this.renderer.getFirstFullyVisibleRow()&&n<=this.renderer.getLastFullyVisibleRow()},this.$getVisibleRowCount=function(){return this.renderer.getScrollBottomRow()-this.renderer.getScrollTopRow()+1},this.$moveByPage=function(n,t){var i=this.renderer,r=this.renderer.layerConfig,u=n*Math.floor(r.height/r.lineHeight),f;this.$blockScrolling++,t==1?this.selection.$moveSelection(function(){this.moveCursorBy(u,0)}):t==0&&(this.selection.moveCursorBy(u,0),this.selection.clearSelection()),this.$blockScrolling--,f=i.scrollTop,i.scrollBy(0,u*r.lineHeight),t!=null&&i.scrollCursorIntoView(null,.5),i.animateScrolling(f)},this.selectPageDown=function(){this.$moveByPage(1,!0)},this.selectPageUp=function(){this.$moveByPage(-1,!0)},this.gotoPageDown=function(){this.$moveByPage(1,!1)},this.gotoPageUp=function(){this.$moveByPage(-1,!1)},this.scrollPageDown=function(){this.$moveByPage(1)},this.scrollPageUp=function(){this.$moveByPage(-1)},this.scrollToRow=function(n){this.renderer.scrollToRow(n)},this.scrollToLine=function(n,t,i,r){this.renderer.scrollToLine(n,t,i,r)},this.centerSelection=function(){var n=this.getSelectionRange(),t={row:Math.floor(n.start.row+(n.end.row-n.start.row)/2),column:Math.floor(n.start.column+(n.end.column-n.start.column)/2)};this.renderer.alignCursor(t,.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(n,t){this.selection.moveCursorTo(n,t)},this.moveCursorToPosition=function(n){this.selection.moveCursorToPosition(n)},this.jumpToMatching=function(n){var r=this.getCursorPosition(),i=this.session.getBracketRange(r),t;if(!i){if(i=this.find({needle:/[{}()\[\]]/g,preventScroll:!0,start:{row:r.row,column:r.column-1}}),!i)return;t=i.start,t.row==r.row&&Math.abs(t.column-r.column)<2&&(i=this.session.getBracketRange(t))}t=i&&i.cursor||t,t&&(n?i&&i.isEqual(this.getSelectionRange())?this.clearSelection():this.selection.selectTo(t.row,t.column):(this.clearSelection(),this.moveCursorTo(t.row,t.column)))},this.gotoLine=function(n,t,i){this.selection.clearSelection(),this.session.unfold({row:n-1,column:t||0}),this.$blockScrolling+=1,this.exitMultiSelectMode&&this.exitMultiSelectMode(),this.moveCursorTo(n-1,t||0),this.$blockScrolling-=1,this.isRowFullyVisible(n-1)||this.scrollToLine(n-1,!0,i)},this.navigateTo=function(n,t){this.clearSelection(),this.moveCursorTo(n,t)},this.navigateUp=function(n){if(this.selection.isMultiLine()&&!this.selection.isBackwards()){var t=this.selection.anchor.getPosition();return this.moveCursorToPosition(t)}this.selection.clearSelection(),n=n||1,this.selection.moveCursorBy(-n,0)},this.navigateDown=function(n){if(this.selection.isMultiLine()&&this.selection.isBackwards()){var t=this.selection.anchor.getPosition();return this.moveCursorToPosition(t)}this.selection.clearSelection(),n=n||1,this.selection.moveCursorBy(n,0)},this.navigateLeft=function(n){if(this.selection.isEmpty())for(n=n||1;n--;)this.selection.moveCursorLeft();else{var t=this.getSelectionRange().start;this.moveCursorToPosition(t)}this.clearSelection()},this.navigateRight=function(n){if(this.selection.isEmpty())for(n=n||1;n--;)this.selection.moveCursorRight();else{var t=this.getSelectionRange().end;this.moveCursorToPosition(t)}this.clearSelection()},this.navigateLineStart=function(){this.selection.moveCursorLineStart(),this.clearSelection()},this.navigateLineEnd=function(){this.selection.moveCursorLineEnd(),this.clearSelection()},this.navigateFileEnd=function(){var n=this.renderer.scrollTop;this.selection.moveCursorFileEnd(),this.clearSelection(),this.renderer.animateScrolling(n)},this.navigateFileStart=function(){var n=this.renderer.scrollTop;this.selection.moveCursorFileStart(),this.clearSelection(),this.renderer.animateScrolling(n)},this.navigateWordRight=function(){this.selection.moveCursorWordRight(),this.clearSelection()},this.navigateWordLeft=function(){this.selection.moveCursorWordLeft(),this.clearSelection()},this.replace=function(n,t){t&&this.$search.set(t);var i=this.$search.find(this.session),r=0;return i?(this.$tryReplace(i,n)&&(r=1),i!==null&&(this.selection.setSelectionRange(i),this.renderer.scrollSelectionIntoView(i.start,i.end)),r):r},this.replaceAll=function(n,t){var i,r,f,u;if(t&&this.$search.set(t),i=this.$search.findAll(this.session),r=0,!i.length)return r;for(this.$blockScrolling+=1,f=this.getSelectionRange(),this.clearSelection(),this.selection.moveCursorTo(0,0),u=i.length-1;u>=0;--u)this.$tryReplace(i[u],n)&&r++;return this.selection.setSelectionRange(f),this.$blockScrolling-=1,r},this.$tryReplace=function(n,t){var i=this.session.getTextRange(n);return t=this.$search.replace(i,t),t!==null?(n.end=this.session.replace(n,t),n):null},this.getLastSearchOptions=function(){return this.$search.getOptions()},this.find=function(n,t,i){var r,u;if(t||(t={}),typeof n=="string"||n instanceof RegExp?t.needle=n:typeof n=="object"&&e.mixin(t,n),r=this.selection.getRange(),t.needle==null&&(n=this.session.getTextRange(r)||this.$search.$options.needle,n||(r=this.session.getWordRange(r.start.row,r.start.column),n=this.session.getTextRange(r)),this.$search.set({needle:n})),this.$search.set(t),t.start||this.$search.set({start:r}),u=this.$search.find(this.session),t.preventScroll)return u;if(u)return this.revealRange(u,i),u;t.backwards?r.start=r.end:r.end=r.start,this.selection.setRange(r)},this.findNext=function(n,t){this.find({skipCurrent:!0,backwards:!1},n,t)},this.findPrevious=function(n,t){this.find(n,{skipCurrent:!0,backwards:!0},t)},this.revealRange=function(n,t){this.$blockScrolling+=1,this.session.unfold(n),this.selection.setSelectionRange(n),this.$blockScrolling-=1;var i=this.renderer.scrollTop;this.renderer.scrollSelectionIntoView(n.start,n.end,.5),t!=0&&this.renderer.animateScrolling(i)},this.undo=function(){this.$blockScrolling++,this.session.getUndoManager().undo(),this.$blockScrolling--,this.renderer.scrollCursorIntoView(null,.5)},this.redo=function(){this.$blockScrolling++,this.session.getUndoManager().redo(),this.$blockScrolling--,this.renderer.scrollCursorIntoView(null,.5)},this.destroy=function(){this.renderer.destroy(),this._emit("destroy",this)},this.setAutoScrollEditorIntoView=function(n){var r,u,t,i;if(n!==!1){u=this,t=!1,this.$scrollAnchor||(this.$scrollAnchor=document.createElement("div")),i=this.$scrollAnchor,i.style.cssText="position:absolute",this.container.insertBefore(i,this.container.firstChild);var f=this.on("changeSelection",function(){t=!0}),e=this.renderer.on("beforeRender",function(){t&&(r=u.renderer.container.getBoundingClientRect())}),o=this.renderer.on("afterRender",function(){if(t&&r&&u.isFocused()){var e=u.renderer,n=e.$cursorLayer.$pixelPos,f=e.layerConfig,o=n.top-f.offset;t=n.top>=0&&o+r.top<0?!0:n.top<f.height&&n.top+r.top+f.lineHeight>window.innerHeight?!1:null,t!=null&&(i.style.top=o+"px",i.style.left=n.left+"px",i.style.height=f.lineHeight+"px",i.scrollIntoView(t)),t=r=null}});this.setAutoScrollEditorIntoView=function(n){n!==!0&&(delete this.setAutoScrollEditorIntoView,this.removeEventListener("changeSelection",f),this.renderer.removeEventListener("afterRender",o),this.renderer.removeEventListener("beforeRender",e))}}},this.$resetCursorStyle=function(){var t=this.$cursorStyle||"ace",n=this.renderer.$cursorLayer;n&&(n.setSmoothBlinking(t=="smooth"),n.isBlinking=!this.$readOnly&&t!="wide")}}).call(f.prototype),u.defineOptions(f.prototype,"editor",{selectionStyle:{set:function(n){this.onSelectionChange(),this._emit("changeSelectionStyle",{data:n})},initialValue:"line"},highlightActiveLine:{set:function(){this.$updateHighlightActiveLine()},initialValue:!0},highlightSelectedWord:{set:function(){this.$onSelectionChange()},initialValue:!0},readOnly:{set:function(){this.$resetCursorStyle()},initialValue:!1},cursorStyle:{set:function(){this.$resetCursorStyle()},values:["ace","slim","smooth","wide"],initialValue:"ace"},behavioursEnabled:{initialValue:!0},wrapBehavioursEnabled:{initialValue:!0},hScrollBarAlwaysVisible:"renderer",highlightGutterLine:"renderer",animatedScroll:"renderer",showInvisibles:"renderer",showPrintMargin:"renderer",printMarginColumn:"renderer",printMargin:"renderer",fadeFoldWidgets:"renderer",showFoldWidgets:"renderer",showGutter:"renderer",displayIndentGuides:"renderer",fontSize:"renderer",fontFamily:"renderer",scrollSpeed:"$mouseHandler",dragDelay:"$mouseHandler",focusTimout:"$mouseHandler",firstLineNumber:"session",overwrite:"session",newLineMode:"session",useWorker:"session",useSoftTabs:"session",tabSize:"session",wrap:"session",foldStyle:"session"}),t.Editor=f}),ace.define("ace/lib/lang",["require","exports","module"],function(n,t){t.stringReverse=function(n){return n.split("").reverse().join("")},t.stringRepeat=function(n,t){for(var i="";t>0;)t&1&&(i+=n),(t>>=1)&&(n+=n);return i};var r=/^\s\s*/,u=/\s\s*$/;t.stringTrimLeft=function(n){return n.replace(r,"")},t.stringTrimRight=function(n){return n.replace(u,"")},t.copyObject=function(n){var i={},t;for(t in n)i[t]=n[t];return i},t.copyArray=function(n){for(var i=[],t=0,r=n.length;t<r;t++)i[t]=n[t]&&typeof n[t]=="object"?this.copyObject(n[t]):n[t];return i},t.deepCopy=function(n){var i,t;if(typeof n!="object")return n;i=n.constructor();for(t in n)i[t]=typeof n[t]=="object"?this.deepCopy(n[t]):n[t];return i},t.arrayToMap=function(n){for(var i={},t=0;t<n.length;t++)i[n[t]]=1;return i},t.createMap=function(n){var i=Object.create(null),t;for(t in n)i[t]=n[t];return i},t.arrayRemove=function(n,t){for(var i=0;i<=n.length;i++)t===n[i]&&n.splice(i,1)},t.escapeRegExp=function(n){return n.replace(/([.*+?^${}()|[\]\/\\])/g,"\\$1")},t.escapeHTML=function(n){return n.replace(/&/g,"&#38;").replace(/"/g,"&#34;").replace(/'/g,"&#39;").replace(/</g,"&#60;")},t.getMatchOffsets=function(n,t){var i=[];return n.replace(t,function(n){i.push({offset:arguments[arguments.length-2],length:n.length})}),i},t.deferredCall=function(n){var i=null,r=function(){i=null,n()},t=function(n){return t.cancel(),i=setTimeout(r,n||0),t};return t.schedule=t,t.call=function(){return this.cancel(),n(),t},t.cancel=function(){return clearTimeout(i),i=null,t},t},t.delayedCall=function(n,t){var i=null,u=function(){i=null,n()},r=function(n){i&&clearTimeout(i),i=setTimeout(u,n||t)};return r.delay=r,r.schedule=function(n){i==null&&(i=setTimeout(u,n||0))},r.call=function(){this.cancel(),n()},r.cancel=function(){i&&clearTimeout(i),i=null},r.isPending=function(){return i},r}}),ace.define("ace/keyboard/textinput",["require","exports","module","ace/lib/event","ace/lib/useragent","ace/lib/dom","ace/lib/lang"],function(n,t){var r=n("../lib/event"),u=n("../lib/useragent"),e=n("../lib/dom"),f=n("../lib/lang"),o=u.isChrome<18,s=function(n,t){function h(n){if(!s){if(l)t=0,r=n?0:i.value.length-1;else var t=n?2:1,r=2;try{i.setSelectionRange(t,r)}catch(u){}}}function a(){s||(i.value=c,u.isWebKit&&et.schedule())}function g(){setTimeout(function(){y&&(i.style.cssText=y,y=""),t.renderer.$keepTextAreaAtCursor==null&&(t.renderer.$keepTextAreaAtCursor=!0,t.renderer.$moveTextAreaToCursor())},0)}var i=e.createElement("textarea"),v,ft,et,tt,st,ht,l;i.className="ace_text-input",u.isTouchPad&&i.setAttribute("x-palm-disable-auto-cap",!0),i.wrap="off",i.autocorrect="off",i.autocapitalize="off",i.spellcheck=!1,i.style.bottom="2000em",n.insertBefore(i,n.firstChild);var c="\x01\x01",p=!1,w=!1,nt=!1,s=!1,y="",b=!0;try{v=document.activeElement===i}catch(bt){}if(r.addListener(i,"blur",function(){t.onBlur(),v=!1}),r.addListener(i,"focus",function(){v=!0,t.onFocus(),h()}),this.focus=function(){i.focus()},this.blur=function(){i.blur()},this.isFocused=function(){return v},ft=f.delayedCall(function(){v&&h(b)}),et=f.delayedCall(function(){s||(i.value=c,v&&h())}),u.isWebKit||t.addEventListener("changeSelection",function(){t.selection.isEmpty()!=b&&(b=!b,ft.schedule())}),a(),v&&t.onFocus(),tt=function(n){return n.selectionStart===0&&n.selectionEnd===n.value.length},!i.setSelectionRange&&i.createTextRange&&(i.setSelectionRange=function(n,t){var i=this.createTextRange();i.collapse(!0),i.moveStart("character",n),i.moveEnd("character",t),i.select()},tt=function(n){try{var t=n.ownerDocument.selection.createRange()}catch(i){}return!t||t.parentElement()!=n?!1:t.text==n.value}),u.isOldIE){var it=!1,ot=function(n){if(!it){var t=i.value;if(!s&&t&&t!=c){if(n&&t==c[0])return yt.schedule();rt(t),it=!0,a(),it=!1}}},yt=f.delayedCall(ot);r.addListener(i,"propertychange",ot),st={13:1,27:1},r.addListener(i,"keyup",function(n){(s&&(!i.value||st[n.keyCode])&&setTimeout(d,0),(i.value.charCodeAt(0)||0)<129)||(s?ut():vt())})}ht=function(){p?p=!1:w?w=!1:tt(i)?(t.selectAll(),h()):l&&h(t.selection.isEmpty())},l=null,this.setInputHandler=function(n){l=n},this.getInputHandler=function(){return l};var k=!1,rt=function(n){l&&(n=l(n),l=null),nt?(h(),n&&t.onPaste(n),nt=!1):n==c[0]?k&&t.execCommand("del",{source:"ace"}):(n.substring(0,2)==c?n=n.substr(2):n[0]==c[0]?n=n.substr(1):n[n.length-1]==c[0]&&(n=n.slice(0,-1)),n[n.length-1]==c[0]&&(n=n.slice(0,-1)),n&&t.onTextInput(n)),k&&(k=!1)},pt=function(){if(!s){var t=i.value;rt(t),a()}},ct=function(n){var u=t.getCopyText(),f,e;if(!u){r.preventDefault(n);return}f=n.clipboardData||window.clipboardData,f&&!o&&(e=f.setData("Text",u),e&&(t.onCut(),r.preventDefault(n))),e||(p=!0,i.value=u,i.select(),setTimeout(function(){p=!1,a(),h(),t.onCut()}))},lt=function(n){var u=t.getCopyText(),f,e;if(!u){r.preventDefault(n);return}f=n.clipboardData||window.clipboardData,f&&!o&&(e=f.setData("Text",u),e&&(t.onCopy(),r.preventDefault(n))),e||(w=!0,i.value=u,i.select(),setTimeout(function(){w=!1,a(),h(),t.onCopy()}))},at=function(n){var e=n.clipboardData||window.clipboardData,f;e?(f=e.getData("Text"),f&&t.onPaste(f),u.isIE&&setTimeout(h),r.preventDefault(n)):(i.value="",nt=!0)};r.addCommandKeyListener(i,t.onCommandKey.bind(t)),r.addListener(i,"select",ht),r.addListener(i,"input",pt),r.addListener(i,"cut",ct),r.addListener(i,"copy",lt),r.addListener(i,"paste",at),(!("oncut"in i)||!("oncopy"in i)||!("onpaste"in i))&&r.addListener(n,"keydown",function(n){if((!u.isMac||n.metaKey)&&n.ctrlKey)switch(n.keyCode){case 67:lt(n);break;case 86:at(n);break;case 88:ct(n)}});var vt=function(){s||(s={},t.onCompositionStart(),setTimeout(ut,0),t.on("mousedown",d),t.selection.isEmpty()||(t.insert(""),t.session.markUndoGroup(),t.selection.clearSelection()),t.session.markUndoGroup())},ut=function(){if(s&&(t.onCompositionUpdate(i.value),s.lastValue&&t.undo(),s.lastValue=i.value.replace(/\x01/g,""),s.lastValue)){var n=t.selection.getRange();t.insert(s.lastValue),t.session.markUndoGroup(),s.range=t.selection.getRange(),t.selection.setRange(n),t.selection.clearSelection()}},d=function(n){var r=s,u;s=!1,u=setTimeout(function(){var n=i.value.replace(/\x01/g,"");s||(n==r.lastValue?a():!r.lastValue&&n&&(a(),rt(n)))}),l=function(n){return clearTimeout(u),n=n.replace(/\x01/g,""),n==r.lastValue?"":(r.lastValue&&t.undo(),n)},t.onCompositionEnd(),t.removeListener("mousedown",d),n.type=="compositionend"&&r.range&&t.selection.setRange(r.range)},wt=f.delayedCall(ut,50);r.addListener(i,"compositionstart",vt),r.addListener(i,u.isGecko?"text":"keyup",function(){wt.schedule()}),r.addListener(i,"compositionend",d),this.getElement=function(){return i},this.setReadOnly=function(n){i.readOnly=n},this.onContextMenu=function(n){k=!0,y||(y=i.style.cssText),i.style.cssText="z-index:100000;"+(u.isIE?"opacity:0.1;":""),h(t.selection.isEmpty()),t._emit("nativecontextmenu",{target:t});var f=t.container.getBoundingClientRect(),c=e.computedStyle(t.container),o=f.top+(parseInt(c.borderTopWidth)||0),l=f.left+(parseInt(f.borderLeftWidth)||0),a=f.bottom-o-i.clientHeight,s=function(n){i.style.left=n.clientX-l-2+"px",i.style.top=Math.min(n.clientY-o-2,a)+"px"};(s(n),n.type=="mousedown")&&(t.renderer.$keepTextAreaAtCursor&&(t.renderer.$keepTextAreaAtCursor=null),u.isWin&&r.capture(t.container,s,g))},this.onContextMenuClose=g,u.isGecko||r.addListener(i,"contextmenu",function(n){t.textInput.onContextMenu(n),g()})};t.TextInput=s}),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","ace/config"],function(n,t){var r=n("../lib/event"),e=n("../lib/useragent"),o=n("./default_handlers").DefaultHandlers,s=n("./default_gutter_handler").GutterHandler,u=n("./mouse_event").MouseEvent,h=n("./dragdrop").DragdropHandler,c=n("../config"),f=function(n){var i,t;this.editor=n,new o(this),new s(this),new h(this),r.addListener(n.container,"mousedown",function(t){return n.focus(),r.preventDefault(t)}),i=n.renderer.getMouseEventTarget(),r.addListener(i,"click",this.onMouseEvent.bind(this,"click")),r.addListener(i,"mousemove",this.onMouseMove.bind(this,"mousemove")),r.addMultiMouseDownListener(i,[300,300,250],this,"onMouseEvent"),r.addMouseWheelListener(n.container,this.onMouseWheel.bind(this,"mousewheel")),t=n.renderer.$gutter,r.addListener(t,"mousedown",this.onMouseEvent.bind(this,"guttermousedown")),r.addListener(t,"click",this.onMouseEvent.bind(this,"gutterclick")),r.addListener(t,"dblclick",this.onMouseEvent.bind(this,"gutterdblclick")),r.addListener(t,"mousemove",this.onMouseEvent.bind(this,"guttermousemove"))};(function(){this.onMouseEvent=function(n,t){this.editor._emit(n,new u(t,this.editor))},this.onMouseMove=function(n,t){var i=this.editor._eventRegistry&&this.editor._eventRegistry.mousemove;i&&i.length&&this.editor._emit(n,new u(t,this.editor))},this.onMouseWheel=function(n,t){var i=new u(t,this.editor);i.speed=this.$scrollSpeed*2,i.wheelX=t.wheelX,i.wheelY=t.wheelY,this.editor._emit(n,i)},this.setState=function(n){this.state=n},this.captureMouse=function(n,t){var u,s;t&&this.setState(t),this.x=n.x,this.y=n.y,this.isMousePressed=!0,u=this.editor.renderer,u.$keepTextAreaAtCursor&&(u.$keepTextAreaAtCursor=null);var i=this,h=function(n){i.x=n.clientX,i.y=n.clientY},f=function(n){clearInterval(s),o(),i[i.state+"End"]&&i[i.state+"End"](n),i.$clickSelection=null,u.$keepTextAreaAtCursor==null&&(u.$keepTextAreaAtCursor=!0,u.$moveTextAreaToCursor()),i.isMousePressed=!1,i.onMouseEvent("mouseup",n)},o=function(){i[i.state]&&i[i.state]()};if(e.isOldIE&&n.domEvent.type=="dblclick")return setTimeout(function(){f(n.domEvent)});r.capture(this.editor.container,h,f),s=setInterval(o,20)}}).call(f.prototype),c.defineOptions(f.prototype,"mouseHandler",{scrollSpeed:{initialValue:2},dragDelay:{initialValue:150},focusTimout:{initialValue:0}}),t.MouseHandler=f}),ace.define("ace/mouse/default_handlers",["require","exports","module","ace/lib/dom","ace/lib/useragent"],function(n,t){function r(n){var t,i;n.$clickSelection=null,t=n.editor,t.setDefaultHandler("mousedown",this.onMouseDown.bind(n)),t.setDefaultHandler("dblclick",this.onDoubleClick.bind(n)),t.setDefaultHandler("tripleclick",this.onTripleClick.bind(n)),t.setDefaultHandler("quadclick",this.onQuadClick.bind(n)),t.setDefaultHandler("mousewheel",this.onMouseWheel.bind(n)),i=["select","startSelect","drag","dragEnd","dragWait","dragWaitEnd","startDrag","focusWait"],i.forEach(function(t){n[t]=this[t]},this),n.selectByLines=this.extendSelectionBy.bind(n,"getLineRange"),n.selectByWords=this.extendSelectionBy.bind(n,"getWordRange")}function u(n,t,i,r){return Math.sqrt(Math.pow(i-n,2)+Math.pow(r-t,2))}function f(n,t){var i;return i=n.start.row==n.end.row?2*t.column-n.start.column-n.end.column:n.start.row!=n.end.row-1||n.start.column||n.end.column?2*t.row-n.start.row-n.end.row:t.column-4,i<0?{cursor:n.start,anchor:n.end}:{cursor:n.end,anchor:n.start}}var e=n("../lib/dom"),s=n("../lib/useragent"),o=0;(function(){this.onMouseDown=function(n){var i=n.inSelection(),r=n.getDocumentPosition(),t,u,f,e;if(this.mousedownEvent=n,t=this.editor,u=n.getButton(),u!==0){f=t.getSelectionRange(),e=f.isEmpty(),e&&(t.moveCursorToPosition(r),t.selection.clearSelection()),t.textInput.onContextMenu(n.domEvent);return}return i&&!t.isFocused()&&(t.focus(),this.$focusTimout&&!this.$clickSelection&&!t.inMultiSelectMode)?(this.setState("focusWait"),this.captureMouse(n),n.preventDefault()):(!i||this.$clickSelection||n.getShiftKey()||t.inMultiSelectMode?this.startSelect(r):i&&(this.mousedownEvent.time=+new Date,this.setState("dragWait")),this.captureMouse(n),n.preventDefault())},this.startSelect=function(n){n=n||this.editor.renderer.screenToTextCoordinates(this.x,this.y),this.mousedownEvent.getShiftKey()?this.editor.selection.selectToPosition(n):this.$clickSelection||(this.editor.moveCursorToPosition(n),this.editor.selection.clearSelection()),this.setState("select")},this.select=function(){var n,t=this.editor,i=t.renderer.screenToTextCoordinates(this.x,this.y),r,u;this.$clickSelection&&(r=this.$clickSelection.comparePoint(i),r==-1?n=this.$clickSelection.end:r==1?n=this.$clickSelection.start:(u=f(this.$clickSelection,i),i=u.cursor,n=u.anchor),t.selection.setSelectionAnchor(n.row,n.column)),t.selection.selectToPosition(i),t.renderer.scrollCursorIntoView()},this.extendSelectionBy=function(n){var r,u=this.editor,t=u.renderer.screenToTextCoordinates(this.x,this.y),i=u.selection[n](t.row,t.column),e,o,s;this.$clickSelection&&(e=this.$clickSelection.comparePoint(i.start),o=this.$clickSelection.comparePoint(i.end),e==-1&&o<=0?(r=this.$clickSelection.end,(i.end.row!=t.row||i.end.column!=t.column)&&(t=i.start)):o==1&&e>=0?(r=this.$clickSelection.start,(i.start.row!=t.row||i.start.column!=t.column)&&(t=i.end)):e==-1&&o==1?(t=i.end,r=i.start):(s=f(this.$clickSelection,t),t=s.cursor,r=s.anchor),u.selection.setSelectionAnchor(r.row,r.column)),u.selection.selectToPosition(t),u.renderer.scrollCursorIntoView()},this.startDrag=function(){var n=this.editor,t;this.setState("drag"),this.dragRange=n.getSelectionRange(),t=n.getSelectionStyle(),this.dragSelectionMarker=n.session.addMarker(this.dragRange,"ace_selection",t),n.clearSelection(),e.addCssClass(n.container,"ace_dragging"),this.$dragKeybinding||(this.$dragKeybinding={handleKeyboard:function(n,t,i){if(i=="esc")return{command:this.command}},command:{exec:function(n){var t=n.$mouseHandler;t.dragCursor=null,t.dragEnd(),t.startSelect()}}}),n.keyBinding.addKeyboardHandler(this.$dragKeybinding)},this.focusWait=function(){var n=u(this.mousedownEvent.x,this.mousedownEvent.y,this.x,this.y),t=+new Date;(n>o||t-this.mousedownEvent.time>this.$focusTimout)&&this.startSelect(this.mousedownEvent.getDocumentPosition())},this.dragWait=function(){var t=u(this.mousedownEvent.x,this.mousedownEvent.y,this.x,this.y),i=+new Date,r=this.editor;t>o?this.startSelect(this.mousedownEvent.getDocumentPosition()):i-this.mousedownEvent.time>r.$mouseHandler.$dragDelay&&this.startDrag()},this.dragWaitEnd=function(n){this.mousedownEvent.domEvent=n,this.startSelect()},this.drag=function(){var n=this.editor;this.dragCursor=n.renderer.screenToTextCoordinates(this.x,this.y),n.moveCursorToPosition(this.dragCursor),n.renderer.scrollCursorIntoView()},this.dragEnd=function(n){var t=this.editor,i=this.dragCursor,u=this.dragRange,f,r;if(e.removeCssClass(t.container,"ace_dragging"),t.session.removeMarker(this.dragSelectionMarker),t.keyBinding.removeKeyboardHandler(this.$dragKeybinding),i){if(t.clearSelection(),n&&(n.ctrlKey||n.altKey))f=t.session,r=u,r.end=f.insert(i,f.getTextRange(u)),r.start=i;else{if(u.contains(i.row,i.column))return;r=t.moveText(u,i)}r&&t.selection.setSelectionRange(r)}},this.onDoubleClick=function(n){var i=n.getDocumentPosition(),r=this.editor,u=r.session,t=u.getBracketRange(i);if(t){t.isEmpty()&&(t.start.column--,t.end.column++),this.$clickSelection=t,this.setState("select");return}this.$clickSelection=r.selection.getWordRange(i.row,i.column),this.setState("selectByWords")},this.onTripleClick=function(n){var t=n.getDocumentPosition(),i=this.editor;this.setState("selectByLines"),this.$clickSelection=i.selection.getLineRange(t.row)},this.onQuadClick=function(){var t=this.editor;t.selectAll(),this.$clickSelection=t.getSelectionRange(),this.setState("null")},this.onMouseWheel=function(n){if(!n.getShiftKey()&&!n.getAccelKey()){var t=n.domEvent.timeStamp,r=t-(this.$lastScrollTime||0),i=this.editor,u=i.renderer.isScrollableBy(n.wheelX*n.speed,n.wheelY*n.speed);if(u||r<200)return this.$lastScrollTime=t,i.renderer.scrollBy(n.wheelX*n.speed,n.wheelY*n.speed),n.stop()}}}).call(r.prototype),t.DefaultHandlers=r}),ace.define("ace/mouse/default_gutter_handler",["require","exports","module","ace/lib/dom","ace/lib/event"],function(n,t){function u(n){function l(){i=r.createElement("div"),i.className="ace_gutter-tooltip",i.style.display="none",t.container.appendChild(i)}function a(){var r,n,f,a,u;if((i||l(),r=o.getDocumentPosition().row,n=c.$annotations[r],!n)||(f=t.session.getLength(),r==f&&(a=t.renderer.pixelToScreenCoordinates(0,o.y).row,u=o.$pos,a>t.session.documentToScreenRow(u.row,u.column))))return e();s!=n&&(s=n.text.join("<br/>"),i.style.display="block",i.innerHTML=s,t.on("mousewheel",e),h(o))}function e(){u&&(u=clearTimeout(u)),s&&(i.style.display="none",s=null,t.removeEventListener("mousewheel",e))}function h(n){var r=t.renderer.$gutter.getBoundingClientRect();i.style.left=n.x+15+"px",n.y+3*t.renderer.lineHeight+15<r.bottom?(i.style.bottom="",i.style.top=n.y+15+"px"):(i.style.top="",i.style.bottom=r.bottom-n.y+5+"px")}var t=n.editor,c=t.renderer.$gutterLayer,u,o,i,s;n.editor.setDefaultHandler("guttermousedown",function(i){var u,r,f;if(t.isFocused()&&(u=c.getRegion(i),u!="foldWidgets")){if(r=i.getDocumentPosition().row,f=t.session.selection,i.getShiftKey())f.selectTo(r,0);else{if(i.domEvent.detail==2)return t.selectAll(),i.preventDefault();n.$clickSelection=t.selection.getLineRange(r)}return n.captureMouse(i,"selectByLines"),i.preventDefault()}}),n.editor.setDefaultHandler("guttermousemove",function(t){var i=t.domEvent.target||t.domEvent.srcElement;if(r.hasCssClass(i,"ace_fold-widget"))return e();(s&&h(t),o=t,u)||(u=setTimeout(function(){u=null,o&&!n.isMousePressed?a():e()},50))}),f.addListener(t.renderer.$gutter,"mouseout",function(){(o=null,s&&!u)&&(u=setTimeout(function(){u=null,e()},50))})}var r=n("../lib/dom"),f=n("../lib/event");t.GutterHandler=u}),ace.define("ace/mouse/mouse_event",["require","exports","module","ace/lib/event","ace/lib/useragent"],function(n,t){var r=n("../lib/event"),u=n("../lib/useragent"),f=t.MouseEvent=function(n,t){this.domEvent=n,this.editor=t,this.x=this.clientX=n.clientX,this.y=this.clientY=n.clientY,this.$pos=null,this.$inSelection=null,this.propagationStopped=!1,this.defaultPrevented=!1};(function(){this.stopPropagation=function(){r.stopPropagation(this.domEvent),this.propagationStopped=!0},this.preventDefault=function(){r.preventDefault(this.domEvent),this.defaultPrevented=!0},this.stop=function(){this.stopPropagation(),this.preventDefault()},this.getDocumentPosition=function(){return this.$pos?this.$pos:(this.$pos=this.editor.renderer.screenToTextCoordinates(this.clientX,this.clientY),this.$pos)},this.inSelection=function(){var n,t,i;return this.$inSelection!==null?this.$inSelection:(n=this.editor,n.getReadOnly()?this.$inSelection=!1:(t=n.getSelectionRange(),t.isEmpty()?this.$inSelection=!1:(i=this.getDocumentPosition(),this.$inSelection=t.contains(i.row,i.column))),this.$inSelection)},this.getButton=function(){return r.getButton(this.domEvent)},this.getShiftKey=function(){return this.domEvent.shiftKey},this.getAccelKey=u.isMac?function(){return this.domEvent.metaKey}:function(){return this.domEvent.ctrlKey}}).call(f.prototype)}),ace.define("ace/mouse/dragdrop",["require","exports","module","ace/lib/event"],function(n,t){var r=n("../lib/event"),u=function(n){function p(){f=t.selection.toOrientedRange(),i=t.session.addMarker(f,"ace_selection",t.getSelectionStyle()),t.clearSelection(),clearInterval(c),c=setInterval(y,20),e=0,r.addListener(document,"mousemove",l)}function h(){clearInterval(c),t.session.removeMarker(i),i=null,t.selection.fromOrientedRange(f),e=0,r.removeListener(document,"mousemove",l)}function l(){u==null&&(u=setTimeout(function(){u!=null&&i&&h()},20))}var t=n.editor,i,a,v,c,f,o,e=0,s=t.container,y,u;r.addListener(s,"dragenter",function(n){if(!t.getReadOnly()){var u=n.dataTransfer.types;if(!u||Array.prototype.indexOf.call(u,"text/plain")!==-1)return i||p(),e++,r.preventDefault(n)}}),r.addListener(s,"dragover",function(n){if(!t.getReadOnly()){var i=n.dataTransfer.types;if(!i||Array.prototype.indexOf.call(i,"text/plain")!==-1)return u!==null&&(u=null),a=n.clientX,v=n.clientY,r.preventDefault(n)}}),y=function(){o=t.renderer.screenToTextCoordinates(a,v),t.moveCursorToPosition(o),t.renderer.scrollCursorIntoView()},r.addListener(s,"dragleave",function(n){return e--,e<=0&&i?(h(),r.preventDefault(n)):void 0}),r.addListener(s,"drop",function(n){if(i)return f.end=t.session.insert(o,n.dataTransfer.getData("Text")),f.start=o,h(),t.focus(),r.preventDefault(n)}),u=null};t.DragdropHandler=u}),ace.define("ace/config",["require","exports","module","ace/lib/lang","ace/lib/oop","ace/lib/net","ace/lib/event_emitter"],function(n,t,i){"no use strict";function s(n){return n.replace(/-(.)/g,function(n,t){return t.toUpperCase()})}var h=n("./lib/lang"),f=n("./lib/oop"),c=n("./lib/net"),l=n("./lib/event_emitter").EventEmitter,e=function(){return this}(),r={packaged:!1,workerPath:null,modePath:null,themePath:null,basePath:"",suffix:".js",$moduleUrls:{}},o,u;t.get=function(n){if(!r.hasOwnProperty(n))throw new Error("Unknown config key: "+n);return r[n]},t.set=function(n,t){if(!r.hasOwnProperty(n))throw new Error("Unknown config key: "+n);r[n]=t},t.all=function(){return h.copyObject(r)},f.implement(t,l),t.moduleUrl=function(n,t){var i,f,u;return r.$moduleUrls[n]?r.$moduleUrls[n]:(i=n.split("/"),t=t||i[i.length-2]||"",f=i[i.length-1].replace(t,"").replace(/(^[\-_])|([\-_]$)/,""),!f&&i.length>1&&(f=i[i.length-2]),u=r[t+"Path"],u==null&&(u=r.basePath),u&&u.slice(-1)!="/"&&(u+="/"),u+t+"-"+f+this.get("suffix"))},t.setModuleUrl=function(n,t){return r.$moduleUrls[n]=t},t.$loading={},t.loadModule=function(i,r){var u,e,f;Array.isArray(i)&&(e=i[0],i=i[1]);try{u=n(i)}catch(o){}if(u&&!t.$loading[i])return r&&r(u);if(t.$loading[i]||(t.$loading[i]=[]),t.$loading[i].push(r),!(t.$loading[i].length>1)){if(f=function(){n([i],function(n){t._emit("load.module",{name:i,module:n});var r=t.$loading[i];t.$loading[i]=null,r.forEach(function(t){t&&t(n)})})},!t.get("packaged"))return f();c.loadScript(t.moduleUrl(i,e),f)}},t.init=function(){var f,o,v,y,h,b,c,p,l;if(r.packaged=n.packaged||i.packaged||e.define&&define.packaged,!e.document)return"";var u={},a="",w=document.getElementsByTagName("script");for(f=0;f<w.length;f++)if(o=w[f],v=o.src||o.getAttribute("src"),v){for(y=o.attributes,h=0,b=y.length;h<b;h++)c=y[h],c.name.indexOf("data-ace-")===0&&(u[s(c.name.replace(/^data-ace-/,""))]=c.value);p=v.match(/^(.*)\/ace(\-\w+)?\.js(\?|$)/),p&&(a=p[1])}a&&(u.base=u.base||a,u.packaged=!0),u.basePath=u.base,u.workerPath=u.workerPath||u.base,u.modePath=u.modePath||u.base,u.themePath=u.themePath||u.base,delete u.base;for(l in u)typeof u[l]!="undefined"&&t.set(l,u[l])},o={setOptions:function(n){Object.keys(n).forEach(function(t){this.setOption(t,n[t])},this)},getOptions:function(n){var t={};return n?Array.isArray(n)||(t=n,n=Object.keys(t)):n=Object.keys(this.$options),n.forEach(function(n){t[n]=this.getOption(n)},this),t},setOption:function(n,t){if(this["$"+n]!==t){var i=this.$options[n];if(!i)return undefined;if(i.forwardTo)return this[i.forwardTo]&&this[i.forwardTo].setOption(n,t);i.handlesSet||(this["$"+n]=t),i&&i.set&&i.set.call(this,t)}},getOption:function(n){var t=this.$options[n];return t?t.forwardTo?this[t.forwardTo]&&this[t.forwardTo].getOption(n):t&&t.get?t.get.call(this):this["$"+n]:undefined}},u={},t.defineOptions=function(n,t,i){return n.$options||(u[t]=n.$options={}),Object.keys(i).forEach(function(t){var r=i[t];typeof r=="string"&&(r={forwardTo:r}),r.name||(r.name=t),n.$options[r.name]=r,"initialValue"in r&&(n["$"+r.name]=r.initialValue)}),f.implement(n,o),this},t.resetOptions=function(n){Object.keys(n.$options).forEach(function(t){var i=n.$options[t];"value"in i&&n.setOption(t,i.value)})},t.setDefaultValue=function(n,i,r){var f=u[n]||(u[n]={});f[i]&&(f.forwardTo?t.setDefaultValue(f.forwardTo,i,r):f[i].value=r)},t.setDefaultValues=function(n,i){Object.keys(i).forEach(function(r){t.setDefaultValue(n,r,i[r])})}}),ace.define("ace/lib/net",["require","exports","module","ace/lib/dom"],function(n,t){var r=n("./dom");t.get=function(n,t){var i=new XMLHttpRequest;i.open("GET",n,!0),i.onreadystatechange=function(){i.readyState===4&&t(i.responseText)},i.send(null)},t.loadScript=function(n,t){var u=r.getDocumentHead(),i=document.createElement("script");i.src=n,u.appendChild(i),i.onload=i.onreadystatechange=function(n,r){(r||!i.readyState||i.readyState=="loaded"||i.readyState=="complete")&&(i=i.onload=i.onreadystatechange=null,r||t())}}}),ace.define("ace/lib/event_emitter",["require","exports","module"],function(n,t){var r={},u=function(){this.propagationStopped=!0},f=function(){this.defaultPrevented=!0};r._emit=r._dispatchEvent=function(n,t){var i,r,e;if(this._eventRegistry||(this._eventRegistry={}),this._defaultHandlers||(this._defaultHandlers={}),i=this._eventRegistry[n]||[],r=this._defaultHandlers[n],i.length||r){for(typeof t=="object"&&t||(t={}),t.type||(t.type=n),t.stopPropagation||(t.stopPropagation=u),t.preventDefault||(t.preventDefault=f),e=0;e<i.length;e++)if(i[e](t,this),t.propagationStopped)break;if(r&&!t.defaultPrevented)return r(t,this)}},r._signal=function(n,t){var r=(this._eventRegistry||{})[n],i;if(r)for(i=0;i<r.length;i++)r[i](t,this)},r.once=function(n,t){var i=this;t&&this.addEventListener(n,function r(){i.removeEventListener(n,r),t.apply(null,arguments)})},r.setDefaultHandler=function(n,t){var i=this._defaultHandlers,f,r,u;i||(i=this._defaultHandlers={_disabled_:{}}),i[n]&&(f=i[n],r=i._disabled_[n],r||(i._disabled_[n]=r=[]),r.push(f),u=r.indexOf(t),u!=-1&&r.splice(u,1)),i[n]=t},r.removeDefaultHandler=function(n,t){var r=this._defaultHandlers,i,f,u;r&&(i=r._disabled_[n],r[n]==t?(f=r[n],i&&this.setDefaultHandler(n,i.pop())):i&&(u=i.indexOf(t),u!=-1&&i.splice(u,1)))},r.on=r.addEventListener=function(n,t,i){this._eventRegistry=this._eventRegistry||{};var r=this._eventRegistry[n];return r||(r=this._eventRegistry[n]=[]),r.indexOf(t)==-1&&r[i?"unshift":"push"](t),t},r.off=r.removeListener=r.removeEventListener=function(n,t){var i,r;(this._eventRegistry=this._eventRegistry||{},i=this._eventRegistry[n],i)&&(r=i.indexOf(t),r!==-1&&i.splice(r,1))},r.removeAllListeners=function(n){this._eventRegistry&&(this._eventRegistry[n]=[])},t.EventEmitter=r}),ace.define("ace/mouse/fold_handler",["require","exports","module"],function(n,t){function r(n){n.on("click",function(t){var u=t.getDocumentPosition(),i=n.session,r=i.getFoldAt(u.row,u.column,1);r&&(t.getAccelKey()?i.removeFold(r):i.expandFold(r),t.stop())}),n.on("gutterclick",function(t){var u=n.renderer.$gutterLayer.getRegion(t),i,r;u=="foldWidgets"&&(i=t.getDocumentPosition().row,r=n.session,r.foldWidgets&&r.foldWidgets[i]&&n.session.onFoldWidgetClick(i,t),n.isFocused()||n.focus(),t.stop())}),n.on("gutterdblclick",function(t){var o=n.renderer.$gutterLayer.getRegion(t),u,f;if(o=="foldWidgets"){var u=t.getDocumentPosition().row,i=n.session,e=i.getParentFoldRangeData(u,!0),r=e.range||e.firstRange;r&&(u=r.start.row,f=i.getFoldAt(u,i.getLine(u).length,1),f?i.removeFold(f):(i.addFold("...",r),n.renderer.scrollCursorIntoView({row:r.start.row,column:0}))),t.stop()}})}t.FoldHandler=r}),ace.define("ace/keyboard/keybinding",["require","exports","module","ace/lib/keys","ace/lib/event"],function(n,t){var u=n("../lib/keys"),f=n("../lib/event"),r=function(n){this.$editor=n,this.$data={},this.$handlers=[],this.setDefaultHandler(n.commands)};(function(){this.setDefaultHandler=function(n){this.removeKeyboardHandler(this.$defaultHandler),this.$defaultHandler=n,this.addKeyboardHandler(n,0),this.$data={editor:this.$editor}},this.setKeyboardHandler=function(n){var t=this.$handlers;if(t[t.length-1]!=n){while(t[t.length-1]&&t[t.length-1]!=this.$defaultHandler)this.removeKeyboardHandler(t[t.length-1]);this.addKeyboardHandler(n,1)}},this.addKeyboardHandler=function(n,t){if(n){var i=this.$handlers.indexOf(n);i!=-1&&this.$handlers.splice(i,1),t==undefined?this.$handlers.push(n):this.$handlers.splice(t,0,n),i==-1&&n.attach&&n.attach(this.$editor)}},this.removeKeyboardHandler=function(n){var t=this.$handlers.indexOf(n);return t==-1?!1:(this.$handlers.splice(t,1),n.detach&&n.detach(this.$editor),!0)},this.getKeyboardHandler=function(){return this.$handlers[this.$handlers.length-1]},this.$callKeyboardHandlers=function(n,t,i,r){for(var u,e=!1,s=this.$editor.commands,o=this.$handlers.length;o--;)if((u=this.$handlers[o].handleKeyboard(this.$data,n,t,i,r),u&&u.command)&&(e=u.command=="null"?!0:s.exec(u.command,this.$editor,u.args,r),e&&r&&n!=-1&&u.passEvent!=1&&f.stopEvent(r),e))break;return e},this.onCommandKey=function(n,t,i){var r=u.keyCodeToString(i);this.$callKeyboardHandlers(t,r,i,n)},this.onTextInput=function(n){var t=this.$callKeyboardHandlers(-1,n);t||this.$editor.commands.exec("insertstring",this.$editor,n)}}).call(r.prototype),t.KeyBinding=r}),ace.define("ace/edit_session",["require","exports","module","ace/lib/oop","ace/lib/lang","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(n,t){var o=n("./lib/oop"),e=n("./lib/lang"),f=n("./config"),s=n("./lib/event_emitter").EventEmitter,h=n("./selection").Selection,c=n("./mode/text").Mode,r=n("./range").Range,l=n("./document").Document,a=n("./background_tokenizer").BackgroundTokenizer,v=n("./search_highlight").SearchHighlight,u=function(n,t){this.$breakpoints=[],this.$decorations=[],this.$frontMarkers={},this.$backMarkers={},this.$markerId=1,this.$undoSelect=!0,this.$foldData=[],this.$foldData.toString=function(){return this.join("\n")},this.on("changeFold",this.onChangeFold.bind(this)),this.$onChange=this.onChange.bind(this),typeof n=="object"&&n.getLine||(n=new l(n)),this.setDocument(n),this.selection=new h(this),f.resetOptions(this),this.setMode(t),f._emit("session",this)};(function(){function h(n){return n<4352?!1:n>=4352&&n<=4447||n>=4515&&n<=4519||n>=4602&&n<=4607||n>=9001&&n<=9002||n>=11904&&n<=11929||n>=11931&&n<=12019||n>=12032&&n<=12245||n>=12272&&n<=12283||n>=12288&&n<=12350||n>=12353&&n<=12438||n>=12441&&n<=12543||n>=12549&&n<=12589||n>=12593&&n<=12686||n>=12688&&n<=12730||n>=12736&&n<=12771||n>=12784&&n<=12830||n>=12832&&n<=12871||n>=12880&&n<=13054||n>=13056&&n<=19903||n>=19968&&n<=42124||n>=42128&&n<=42182||n>=43360&&n<=43388||n>=44032&&n<=55203||n>=55216&&n<=55238||n>=55243&&n<=55291||n>=63744&&n<=64255||n>=65040&&n<=65049||n>=65072&&n<=65106||n>=65108&&n<=65126||n>=65128&&n<=65131||n>=65281&&n<=65376||n>=65504&&n<=65510}o.implement(this,s),this.setDocument=function(n){this.doc&&this.doc.removeListener("change",this.$onChange),this.doc=n,n.on("change",this.$onChange),this.bgTokenizer&&this.bgTokenizer.setDocument(this.getDocument()),this.resetCaches()},this.getDocument=function(){return this.doc},this.$resetRowCache=function(n){if(!n){this.$docRowCache=[],this.$screenRowCache=[];return}var t=this.$docRowCache.length,i=this.$getRowCacheIndex(this.$docRowCache,n)+1;t>i&&(this.$docRowCache.splice(i,t),this.$screenRowCache.splice(i,t))},this.$getRowCacheIndex=function(n,t){for(var r=0,u=n.length-1,i,f;r<=u;)if(i=r+u>>1,f=n[i],t>f)r=i+1;else{if(!(t<f))return i;u=i-1}return r-1},this.resetCaches=function(){this.$modified=!0,this.$wrapData=[],this.$rowLengthCache=[],this.$resetRowCache(0),this.bgTokenizer&&this.bgTokenizer.start(0)},this.onChangeFold=function(n){var t=n.data;this.$resetRowCache(t.start.row)},this.onChange=function(n){var t=n.data,i;this.$modified=!0,this.$resetRowCache(t.range.start.row),i=this.$updateInternalDataOnChange(n),this.$fromUndo||!this.$undoManager||t.ignore||(this.$deltasDoc.push(t),i&&i.length!=0&&this.$deltasFold.push({action:"removeFolds",folds:i}),this.$informUndoManager.schedule()),this.bgTokenizer.$updateOnChange(t),this._emit("change",n)},this.setValue=function(n){this.doc.setValue(n),this.selection.moveCursorTo(0,0),this.selection.clearSelection(),this.$resetRowCache(0),this.$deltas=[],this.$deltasDoc=[],this.$deltasFold=[],this.getUndoManager().reset()},this.getValue=this.toString=function(){return this.doc.getValue()},this.getSelection=function(){return this.selection},this.getState=function(n){return this.bgTokenizer.getState(n)},this.getTokens=function(n){return this.bgTokenizer.getTokens(n)},this.getTokenAt=function(n,t){var u=this.bgTokenizer.getTokens(n),r,f=0,i;if(t==null)i=u.length-1,f=this.getLine(n).length;else for(i=0;i<u.length;i++)if(f+=u[i].value.length,f>=t)break;return r=u[i],r?(r.index=i,r.start=f-r.value.length,r):null},this.setUndoManager=function(n){if(this.$undoManager=n,this.$deltas=[],this.$deltasDoc=[],this.$deltasFold=[],this.$informUndoManager&&this.$informUndoManager.cancel(),n){var t=this;this.$syncInformUndoManager=function(){t.$informUndoManager.cancel(),t.$deltasFold.length&&(t.$deltas.push({group:"fold",deltas:t.$deltasFold}),t.$deltasFold=[]),t.$deltasDoc.length&&(t.$deltas.push({group:"doc",deltas:t.$deltasDoc}),t.$deltasDoc=[]),t.$deltas.length>0&&n.execute({action:"aceupdate",args:[t.$deltas,t]}),t.$deltas=[]},this.$informUndoManager=e.delayedCall(this.$syncInformUndoManager)}},this.markUndoGroup=function(){this.$syncInformUndoManager&&this.$syncInformUndoManager()},this.$defaultUndoManager={undo:function(){},redo:function(){},reset:function(){}},this.getUndoManager=function(){return this.$undoManager||this.$defaultUndoManager},this.getTabString=function(){return this.getUseSoftTabs()?e.stringRepeat(" ",this.getTabSize()):"\t"},this.setUseSoftTabs=function(n){this.setOption("useSoftTabs",n)},this.getUseSoftTabs=function(){return this.$useSoftTabs},this.setTabSize=function(n){this.setOption("tabSize",n)},this.getTabSize=function(){return this.$tabSize},this.isTabStop=function(n){return this.$useSoftTabs&&n.column%this.$tabSize==0},this.$overwrite=!1,this.setOverwrite=function(n){this.setOption("overwrite",n)},this.getOverwrite=function(){return this.$overwrite},this.toggleOverwrite=function(){this.setOverwrite(!this.$overwrite)},this.addGutterDecoration=function(n,t){this.$decorations[n]||(this.$decorations[n]=""),this.$decorations[n]+=" "+t,this._emit("changeBreakpoint",{})},this.removeGutterDecoration=function(n,t){this.$decorations[n]=(this.$decorations[n]||"").replace(" "+t,""),this._emit("changeBreakpoint",{})},this.getBreakpoints=function(){return this.$breakpoints},this.setBreakpoints=function(n){this.$breakpoints=[];for(var t=0;t<n.length;t++)this.$breakpoints[n[t]]="ace_breakpoint";this._emit("changeBreakpoint",{})},this.clearBreakpoints=function(){this.$breakpoints=[],this._emit("changeBreakpoint",{})},this.setBreakpoint=function(n,t){t===undefined&&(t="ace_breakpoint"),t?this.$breakpoints[n]=t:delete this.$breakpoints[n],this._emit("changeBreakpoint",{})},this.clearBreakpoint=function(n){delete this.$breakpoints[n],this._emit("changeBreakpoint",{})},this.addMarker=function(n,t,i,r){var u=this.$markerId++,f={range:n,type:i||"line",renderer:typeof i=="function"?i:null,clazz:t,inFront:!!r,id:u};return r?(this.$frontMarkers[u]=f,this._emit("changeFrontMarker")):(this.$backMarkers[u]=f,this._emit("changeBackMarker")),u},this.addDynamicMarker=function(n,t){if(n.update){var i=this.$markerId++;return n.id=i,n.inFront=!!t,t?(this.$frontMarkers[i]=n,this._emit("changeFrontMarker")):(this.$backMarkers[i]=n,this._emit("changeBackMarker")),n}},this.removeMarker=function(n){var t=this.$frontMarkers[n]||this.$backMarkers[n],i;t&&(i=t.inFront?this.$frontMarkers:this.$backMarkers,t&&(delete i[n],this._emit(t.inFront?"changeFrontMarker":"changeBackMarker")))},this.getMarkers=function(n){return n?this.$frontMarkers:this.$backMarkers},this.highlight=function(n){if(!this.$searchHighlight){var t=new v(null,"ace_selected-word","text");this.$searchHighlight=this.addDynamicMarker(t)}this.$searchHighlight.setRegexp(n)},this.highlightLines=function(n,t,i,u){typeof t!="number"&&(i=t,t=n),i||(i="ace_step");var f=new r(n,0,t,Infinity);return f.id=this.addMarker(f,i,"fullLine",u),f},this.setAnnotations=function(n){this.$annotations=n,this._emit("changeAnnotation",{})},this.getAnnotations=function(){return this.$annotations||[]},this.clearAnnotations=function(){this.setAnnotations([])},this.$detectNewLine=function(n){var t=n.match(/^.*?(\r?\n)/m);this.$autoNewLine=t?t[1]:"\n"},this.getWordRange=function(n,t){var u=this.getLine(n),o=!1,f,i,e;if(t>0&&(o=!!u.charAt(t-1).match(this.tokenRe)),o||(o=!!u.charAt(t).match(this.tokenRe)),f=o?this.tokenRe:/^\s+$/.test(u.slice(t-1,t+1))?/\s/:this.nonTokenRe,i=t,i>0){do i--;while(i>=0&&u.charAt(i).match(f));i++}for(e=t;e<u.length&&u.charAt(e).match(f);)e++;return new r(n,i,n,e)},this.getAWordRange=function(n,t){for(var i=this.getWordRange(n,t),r=this.getLine(i.end.row);r.charAt(i.end.column).match(/[ \t]/);)i.end.column+=1;return i},this.setNewLineMode=function(n){this.doc.setNewLineMode(n)},this.getNewLineMode=function(){return this.doc.getNewLineMode()},this.setUseWorker=function(n){this.setOption("useWorker",n)},this.getUseWorker=function(){return this.$useWorker},this.onReloadTokenizer=function(n){var t=n.data;this.bgTokenizer.start(t.first),this._emit("tokenizerUpdate",n)},this.$modes={},this.$mode=null,this.$modeId=null,this.setMode=function(n){if(n&&typeof n=="object"){if(n.getTokenizer)return this.$onChangeMode(n);var i=n,t=i.path}else t=n||"ace/mode/text";if(this.$modes["ace/mode/text"]||(this.$modes["ace/mode/text"]=new c),this.$modes[t]&&!i)return this.$onChangeMode(this.$modes[t]);this.$modeId=t,f.loadModule(["mode",t],function(n){if(this.$modeId===t){if(this.$modes[t]&&!i)return this.$onChangeMode(this.$modes[t]);n&&n.Mode&&(n=new n.Mode(i),i||(this.$modes[t]=n,n.$id=t),this.$onChangeMode(n))}}.bind(this)),this.$mode||this.$onChangeMode(this.$modes["ace/mode/text"],!0)},this.$onChangeMode=function(n,t){var i,r,u;this.$mode!==n&&(this.$mode=n,this.$stopWorker(),this.$useWorker&&this.$startWorker(),i=n.getTokenizer(),i.addEventListener!==undefined&&(r=this.onReloadTokenizer.bind(this),i.addEventListener("update",r)),this.bgTokenizer?this.bgTokenizer.setTokenizer(i):(this.bgTokenizer=new a(i),u=this,this.bgTokenizer.addEventListener("update",function(n){u._emit("tokenizerUpdate",n)})),this.bgTokenizer.setDocument(this.getDocument()),this.tokenRe=n.tokenRe,this.nonTokenRe=n.nonTokenRe,t||(this.$modeId=n.$id,this.$setFolding(n.foldingRules),this._emit("changeMode"),this.bgTokenizer.start(0)))},this.$stopWorker=function(){this.$worker&&this.$worker.terminate(),this.$worker=null},this.$startWorker=function(){if(typeof Worker=="undefined"||n.noWorker)this.$worker=null;else try{this.$worker=this.$mode.createWorker(this)}catch(t){console.log("Could not load worker"),console.log(t),this.$worker=null}},this.getMode=function(){return this.$mode},this.$scrollTop=0,this.setScrollTop=function(n){(n=Math.round(Math.max(0,n)),this.$scrollTop===n||isNaN(n))||(this.$scrollTop=n,this._signal("changeScrollTop",n))},this.getScrollTop=function(){return this.$scrollTop},this.$scrollLeft=0,this.setScrollLeft=function(n){(n=Math.round(Math.max(0,n)),this.$scrollLeft===n||isNaN(n))||(this.$scrollLeft=n,this._signal("changeScrollLeft",n))},this.getScrollLeft=function(){return this.$scrollLeft},this.getScreenWidth=function(){return this.$computeWidth(),this.screenWidth},this.$computeWidth=function(n){var t;if(this.$modified||n){if(this.$modified=!1,this.$useWrapMode)return this.screenWidth=this.$wrapLimit;var f=this.doc.getAllLines(),r=this.$rowLengthCache,u=0,e=0,i=this.$foldData[e],o=i?i.start.row:Infinity,s=f.length;for(t=0;t<s;t++){if(t>o){if(t=i.end.row+1,t>=s)break;i=this.$foldData[e++],o=i?i.start.row:Infinity}r[t]==null&&(r[t]=this.$getStringScreenWidth(f[t])[0]),r[t]>u&&(u=r[t])}this.screenWidth=u}},this.getLine=function(n){return this.doc.getLine(n)},this.getLines=function(n,t){return this.doc.getLines(n,t)},this.getLength=function(){return this.doc.getLength()},this.getTextRange=function(n){return this.doc.getTextRange(n||this.selection.getRange())},this.insert=function(n,t){return this.doc.insert(n,t)},this.remove=function(n){return this.doc.remove(n)},this.undoChanges=function(n,t){var i,u,r;if(n.length){for(this.$fromUndo=!0,i=null,u=n.length-1;u!=-1;u--)r=n[u],r.group=="doc"?(this.doc.revertDeltas(r.deltas),i=this.$getUndoSelection(r.deltas,!0,i)):r.deltas.forEach(function(n){this.addFolds(n.folds)},this);return this.$fromUndo=!1,i&&this.$undoSelect&&!t&&this.selection.setSelectionRange(i),i}},this.redoChanges=function(n,t){var i,r,u;if(n.length){for(this.$fromUndo=!0,i=null,r=0;r<n.length;r++)u=n[r],u.group=="doc"&&(this.doc.applyDeltas(u.deltas),i=this.$getUndoSelection(u.deltas,!1,i));return this.$fromUndo=!1,i&&this.$undoSelect&&!t&&this.selection.setSelectionRange(i),i}},this.setUndoSelect=function(n){this.$undoSelect=n},this.$getUndoSelection=function(n,t,i){function c(n){var i=n.action==="insertText"||n.action==="insertLines";return t?!i:i}var u=n[0],f,e,o=!1,s,h;for(c(u)?(f=u.range.clone(),o=!0):(f=r.fromPoints(u.range.start,u.range.start),o=!1),s=1;s<n.length;s++)u=n[s],c(u)?(e=u.range.start,f.compare(e.row,e.column)==-1&&f.setStart(u.range.start),e=u.range.end,f.compare(e.row,e.column)==1&&f.setEnd(u.range.end),o=!0):(e=u.range.start,f.compare(e.row,e.column)==-1&&(f=r.fromPoints(u.range.start,u.range.start)),o=!1);return i!=null&&(h=i.compareRange(f),h==1?f.setStart(i.start):h==-1&&f.setEnd(i.end)),f},this.replace=function(n,t){return this.doc.replace(n,t)},this.moveText=function(n,t,i){var c=this.getTextRange(n),s=this.getFoldsInRange(n),u=r.fromPoints(t,t),f,e;if(i||(this.remove(n),f=n.start.row-n.end.row,e=f?-n.end.column:n.start.column-n.end.column,e&&(u.start.row==n.end.row&&u.start.column>n.end.column&&(u.start.column+=e),u.end.row==n.end.row&&u.end.column>n.end.column&&(u.end.column+=e)),f&&u.start.row>=n.end.row&&(u.start.row+=f,u.end.row+=f)),this.insert(u.start,c),s.length){var o=n.start,h=u.start,f=h.row-o.row,e=h.column-o.column;this.addFolds(s.map(function(n){return n=n.clone(),n.start.row==o.row&&(n.start.column+=e),n.end.row==o.row&&(n.end.column+=e),n.start.row+=f,n.end.row+=f,n}))}return u},this.indentRows=function(n,t,i){i=i.replace(/\t/g,this.getTabString());for(var r=n;r<=t;r++)this.insert({row:r,column:0},i)},this.outdentRows=function(n){for(var e=n.collapseRows(),i=new r(0,0,0,0),o=this.getTabSize(),f,t,u=e.start.row;u<=e.end.row;++u){for(f=this.getLine(u),i.start.row=u,i.end.row=u,t=0;t<o;++t)if(f.charAt(t)!=" ")break;t<o&&f.charAt(t)=="\t"?(i.start.column=t,i.end.column=t+1):(i.start.column=0,i.end.column=t),this.remove(i)}},this.$moveLines=function(n,t,i){var f,u;if(n=this.getRowFoldStart(n),t=this.getRowFoldEnd(t),i<0){if(f=this.getRowFoldStart(n+i),f<0)return 0;u=f-n}else if(i>0){if(f=this.getRowFoldEnd(t+i),f>this.doc.getLength()-1)return 0;u=f-t}else n=this.$clipRowToDocument(n),t=this.$clipRowToDocument(t),u=t-n+1;var o=new r(n,0,t,Number.MAX_VALUE),e=this.getFoldsInRange(o).map(function(n){return n=n.clone(),n.start.row+=u,n.end.row+=u,n}),s=i==0?this.doc.getLines(n,t):this.doc.removeLines(n,t);return this.doc.insertLines(n+u,s),e.length&&this.addFolds(e),u},this.moveLinesUp=function(n,t){return this.$moveLines(n,t,-1)},this.moveLinesDown=function(n,t){return this.$moveLines(n,t,1)},this.duplicateLines=function(n,t){return this.$moveLines(n,t,0)},this.$clipRowToDocument=function(n){return Math.max(0,Math.min(n,this.doc.getLength()-1))},this.$clipColumnToRow=function(n,t){return t<0?0:Math.min(this.doc.getLine(n).length,t)},this.$clipPositionToDocument=function(n,t){if(t=Math.max(0,t),n<0)n=0,t=0;else{var i=this.doc.getLength();n>=i?(n=i-1,t=this.doc.getLine(i-1).length):t=Math.min(this.doc.getLine(n).length,t)}return{row:n,column:t}},this.$clipRangeToDocument=function(n){n.start.row<0?(n.start.row=0,n.start.column=0):n.start.column=this.$clipColumnToRow(n.start.row,n.start.column);var t=this.doc.getLength()-1;return n.end.row>t?(n.end.row=t,n.end.column=this.doc.getLine(t).length):n.end.column=this.$clipColumnToRow(n.end.row,n.end.column),n},this.$wrapLimit=80,this.$useWrapMode=!1,this.$wrapLimitRange={min:null,max:null},this.setUseWrapMode=function(n){var t,i;if(n!=this.$useWrapMode){if(this.$useWrapMode=n,this.$modified=!0,this.$resetRowCache(0),n){for(t=this.getLength(),this.$wrapData=[],i=0;i<t;i++)this.$wrapData.push([]);this.$updateWrapData(0,t-1)}this._emit("changeWrapMode")}},this.getUseWrapMode=function(){return this.$useWrapMode},this.setWrapLimitRange=function(n,t){(this.$wrapLimitRange.min!==n||this.$wrapLimitRange.max!==t)&&(this.$wrapLimitRange.min=n,this.$wrapLimitRange.max=t,this.$modified=!0,this._emit("changeWrapMode"))},this.adjustWrapLimit=function(n,t){var i=this.$wrapLimitRange,r;return i.max<0&&(i={min:t,max:t}),r=this.$constrainWrapLimit(n,i.min,i.max),r!=this.$wrapLimit&&r>1?(this.$wrapLimit=r,this.$modified=!0,this.$useWrapMode&&(this.$updateWrapData(0,this.getLength()-1),this.$resetRowCache(0),this._emit("changeWrapLimit")),!0):!1},this.$constrainWrapLimit=function(n,t,i){return t&&(n=Math.max(t,n)),i&&(n=Math.min(i,n)),n},this.getWrapLimit=function(){return this.$wrapLimit},this.setWrapLimit=function(n){this.setWrapLimitRange(n,n)},this.getWrapLimitRange=function(){return{min:this.$wrapLimitRange.min,max:this.$wrapLimitRange.max}},this.$updateInternalDataOnChange=function(n){var a=this.$useWrapMode,r,v=n.data.action,i=n.data.range.start.row,f=n.data.range.end.row,e=n.data.range.start,o=n.data.range.end,c=null,s,u,l,h,y,p,t;if(v.indexOf("Lines")!=-1?(f=v=="insertLines"?i+n.data.lines.length:i,r=n.data.lines?n.data.lines.length:f-i):r=f-i,this.$updating=!0,r!=0)if(v.indexOf("remove")!=-1){for(this[a?"$wrapData":"$rowLengthCache"].splice(i,r),s=this.$foldData,c=this.getFoldsInRange(n.data.range),this.removeFolds(c),t=this.getFoldLine(o.row),u=0,t&&(t.addRemoveChars(o.row,o.column,e.column-o.column),t.shiftRow(-r),l=this.getFoldLine(i),l&&l!==t&&(l.merge(t),t=l),u=s.indexOf(t)+1),u;u<s.length;u++)t=s[u],t.start.row>=o.row&&t.shiftRow(-r);f=i}else{if(a){for(h=[i,0],y=0;y<r;y++)h.push([]);this.$wrapData.splice.apply(this.$wrapData,h)}else h=Array(r),h.unshift(i,0),this.$rowLengthCache.splice.apply(this.$rowLengthCache,h);var s=this.$foldData,t=this.getFoldLine(i),u=0;for(t&&(p=t.range.compareInside(e.row,e.column),p==0?(t=t.split(e.row,e.column),t.shiftRow(r),t.addRemoveChars(f,0,o.column-e.column)):p==-1&&(t.addRemoveChars(i,0,o.column-e.column),t.shiftRow(r)),u=s.indexOf(t)+1),u;u<s.length;u++)t=s[u],t.start.row>=i&&t.shiftRow(r)}else r=Math.abs(n.data.range.start.column-n.data.range.end.column),v.indexOf("remove")!=-1&&(c=this.getFoldsInRange(n.data.range),this.removeFolds(c),r=-r),t=this.getFoldLine(i),t&&t.addRemoveChars(i,e.column,r);return a&&this.$wrapData.length!=this.doc.getLength()&&console.error("doc.getLength() and $wrapData.length have to be the same!"),this.$updating=!1,a?this.$updateWrapData(i,f):this.$updateRowLengthCache(i,f),c},this.$updateRowLengthCache=function(n,t){this.$rowLengthCache[n]=null,this.$rowLengthCache[t]=null},this.$updateWrapData=function(n,r){var h=this.doc.getAllLines(),c=this.getTabSize(),l=this.$wrapData,a=this.$wrapLimit,f,o,s=n;for(r=Math.min(r,h.length-1);s<=r;)if(o=this.getFoldLine(s,o),o){for(f=[],o.walk(function(n,i,r,e){var o,s;if(n!=null)for(o=this.$getDisplayTokens(n,f.length),o[0]=t,s=1;s<o.length;s++)o[s]=u;else o=this.$getDisplayTokens(h[i].substring(e,r),f.length);f=f.concat(o)}.bind(this),o.end.row,h[o.end.row].length+1);f.length!=0&&f[f.length-1]>=i;)f.pop();l[o.start.row]=this.$computeWrapSplits(f,a,c),s=o.end.row+1}else f=this.$getDisplayTokens(e.stringTrimRight(h[s])),l[s]=this.$computeWrapSplits(f,a,c),s++};var l=1,p=2,t=3,u=4,y=9,i=10,w=11,b=12;this.$computeWrapSplits=function(n,r){function o(t){var r=n.slice(e,t),i=r.length;r.join("").replace(/12/g,function(){i-=1}).replace(/2/g,function(){i-=1}),c+=i,h.push(c),e=t}var f,s;if(n.length==0)return[];for(var h=[],l=n.length,e=0,c=0;l-e>r;){if(f=e+r,n[f]>=i){while(n[f]>=i)f++;o(f);continue}if(n[f]==t||n[f]==u){for(f;f!=e-1;f--)if(n[f]==t)break;if(f>e){o(f);continue}for(f=e+r,f;f<n.length;f++)if(n[f]!=u)break;if(f==n.length)break;o(f);continue}for(s=Math.max(f-10,e-1);f>s&&n[f]<t;)f--;while(f>s&&n[f]==y)f--;if(f>s){o(++f);continue}f=e+r,o(f)}return h},this.$getDisplayTokens=function(n,t){var u=[],o,f,r,e;for(t=t||0,f=0;f<n.length;f++)if(r=n.charCodeAt(f),r==9)for(o=this.getScreenTabSize(u.length+t),u.push(w),e=1;e<o;e++)u.push(b);else r==32?u.push(i):r>39&&r<48||r>57&&r<64?u.push(y):r>=4352&&h(r)?u.push(l,p):u.push(l);return u},this.$getStringScreenWidth=function(n,t,i){if(t==0)return[0,0];t==null&&(t=Infinity),i=i||0;for(var u,r=0;r<n.length;r++)if(u=n.charCodeAt(r),i+=u==9?this.getScreenTabSize(i):u>=4352&&h(u)?2:1,i>t)break;return[i,r]},this.getRowLength=function(n){return!this.$useWrapMode||!this.$wrapData[n]?1:this.$wrapData[n].length+1},this.getScreenLastRowColumn=function(n){var t=this.screenToDocumentPosition(n,Number.MAX_VALUE);return this.documentToScreenColumn(t.row,t.column)},this.getDocumentLastRowColumn=function(n,t){var i=this.documentToScreenRow(n,t);return this.getScreenLastRowColumn(i)},this.getDocumentLastRowColumnPosition=function(n,t){var i=this.documentToScreenRow(n,t);return this.screenToDocumentPosition(i,Number.MAX_VALUE/10)},this.getRowSplitData=function(n){return this.$useWrapMode?this.$wrapData[n]:undefined},this.getScreenTabSize=function(n){return this.$tabSize-n%this.$tabSize},this.screenToDocumentRow=function(n,t){return this.screenToDocumentPosition(n,t).row},this.screenToDocumentColumn=function(n,t){return this.screenToDocumentPosition(n,t).column},this.screenToDocumentPosition=function(n,t){var y,e;if(n<0)return{row:0,column:0};var o,i=0,f=0,l,u=0,s=0,h=this.$screenRowCache,a=this.$getRowCacheIndex(h,n),v=h.length;if(v&&a>=0)var u=h[a],i=this.$docRowCache[a],y=n>h[v-1];else y=!v;for(var c=this.getLength()-1,r=this.getNextFoldLine(i),p=r?r.start.row:Infinity;u<=n;){if(s=this.getRowLength(i),u+s-1>=n||i>=c)break;u+=s,i++,i>p&&(i=r.end.row+1,r=this.getNextFoldLine(i,r),p=r?r.start.row:Infinity),y&&(this.$docRowCache.push(i),this.$screenRowCache.push(u))}if(r&&r.start.row<=i)o=this.getFoldDisplayLine(r),i=r.start.row;else{if(u+s<=n||i>c)return{row:c,column:this.getLine(c).length};o=this.getLine(i),r=null}return this.$useWrapMode&&(e=this.$wrapData[i],e&&(l=e[n-u],n>u&&e.length&&(f=e[n-u-1]||e[e.length-1],o=o.substring(f)))),f+=this.$getStringScreenWidth(o,t)[1],this.$useWrapMode&&f>=l&&(f=l-1),r?r.idxToPosition(f):{row:i,column:f}},this.documentToScreenPosition=function(n,t){var e,w,i,c,u,p,l;e=typeof t=="undefined"?this.$clipPositionToDocument(n.row,n.column):this.$clipPositionToDocument(n,t),n=e.row,t=e.column;var h=0,a=null,o=null;o=this.getFoldAt(n,t,1),o&&(n=o.start.row,t=o.start.column);var f,r=0,s=this.$docRowCache,v=this.$getRowCacheIndex(s,n),y=s.length;if(y&&v>=0)var r=s[v],h=this.$screenRowCache[v],w=n>s[y-1];else w=!y;for(i=this.getNextFoldLine(r),c=i?i.start.row:Infinity;r<n;){if(r>=c){if(f=i.end.row+1,f>n)break;i=this.getNextFoldLine(f,i),c=i?i.start.row:Infinity}else f=r+1;h+=this.getRowLength(r),r=f,w&&(this.$docRowCache.push(r),this.$screenRowCache.push(h))}if(u="",i&&r>=c?(u=this.getFoldDisplayLine(i,n,t),a=i.start.row):(u=this.getLine(n).substring(0,t),a=n),this.$useWrapMode){for(p=this.$wrapData[a],l=0;u.length>=p[l];)h++,l++;u=u.substring(p[l-1]||0,u.length)}return{row:h,column:this.$getStringScreenWidth(u)[0]}},this.documentToScreenColumn=function(n,t){return this.documentToScreenPosition(n,t).column},this.documentToScreenRow=function(n,t){return this.documentToScreenPosition(n,t).row},this.getScreenLength=function(){var r=0,n=null,u,t;if(this.$useWrapMode)for(var e=this.$wrapData.length,i=0,t=0,n=this.$foldData[t++],f=n?n.start.row:Infinity;i<e;)r+=this.$wrapData[i].length+1,i++,i>f&&(i=n.end.row+1,n=this.$foldData[t++],f=n?n.start.row:Infinity);else for(r=this.getLength(),u=this.$foldData,t=0;t<u.length;t++)n=u[t],r-=n.end.row-n.start.row;return r}}).call(u.prototype),n("./edit_session/folding").Folding.call(u.prototype),n("./edit_session/bracket_match").BracketMatch.call(u.prototype),f.defineOptions(u.prototype,"session",{wrap:{set:function(n){if(!n||n=="off"?n=!1:n=="free"?n=!0:n=="printMargin"?n=-1:typeof n=="string"&&(n=parseInt(n,10)||!1),this.$wrap!=n){if(n){var t=typeof n=="number"?n:null;this.setWrapLimitRange(t,t),this.setUseWrapMode(!0)}else this.setUseWrapMode(!1);this.$wrap=n}},get:function(){return this.getUseWrapMode()?this.getWrapLimitRange().min||"free":"off"},handlesSet:!0},firstLineNumber:{set:function(){this._emit("changeBreakpoint")},initialValue:1},useWorker:{set:function(n){this.$useWorker=n,this.$stopWorker(),n&&this.$startWorker()},initialValue:!0},useSoftTabs:{initialValue:!0},tabSize:{set:function(n){isNaN(n)||this.$tabSize===n||(this.$modified=!0,this.$rowLengthCache=[],this.$tabSize=n,this._emit("changeTabSize"))},initialValue:4,handlesSet:!0},overwrite:{set:function(){this._emit("changeOverwrite")},initialValue:!1},newLineMode:{set:function(n){this.doc.setNewLineMode(n)},get:function(){return this.doc.getNewLineMode()},handlesSet:!0}}),t.EditSession=u}),ace.define("ace/selection",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/lib/event_emitter","ace/range"],function(n,t){var e=n("./lib/oop"),u=n("./lib/lang"),o=n("./lib/event_emitter").EventEmitter,r=n("./range").Range,f=function(n){this.session=n,this.doc=n.getDocument(),this.clearSelection(),this.lead=this.selectionLead=this.doc.createAnchor(0,0),this.anchor=this.selectionAnchor=this.doc.createAnchor(0,0);var t=this;this.lead.on("change",function(n){t._emit("changeCursor"),t.$isEmpty||t._emit("changeSelection"),!t.$keepDesiredColumnOnChange&&n.old.column!=n.value.column&&(t.$desiredColumn=null)}),this.selectionAnchor.on("change",function(){t.$isEmpty||t._emit("changeSelection")})};(function(){e.implement(this,o),this.isEmpty=function(){return this.$isEmpty||this.anchor.row==this.lead.row&&this.anchor.column==this.lead.column},this.isMultiLine=function(){return this.isEmpty()?!1:this.getRange().isMultiLine()},this.getCursor=function(){return this.lead.getPosition()},this.setSelectionAnchor=function(n,t){this.anchor.setPosition(n,t),this.$isEmpty&&(this.$isEmpty=!1,this._emit("changeSelection"))},this.getSelectionAnchor=function(){return this.$isEmpty?this.getSelectionLead():this.anchor.getPosition()},this.getSelectionLead=function(){return this.lead.getPosition()},this.shiftSelection=function(n){if(this.$isEmpty){this.moveCursorTo(this.lead.row,this.lead.column+n);return}var t=this.getSelectionAnchor(),i=this.getSelectionLead(),r=this.isBackwards();r&&t.column===0||this.setSelectionAnchor(t.row,t.column+n),(r||i.column!==0)&&this.$moveSelection(function(){this.moveCursorTo(i.row,i.column+n)})},this.isBackwards=function(){var n=this.anchor,t=this.lead;return n.row>t.row||n.row==t.row&&n.column>t.column},this.getRange=function(){var t=this.anchor,n=this.lead;return this.isEmpty()?r.fromPoints(n,n):this.isBackwards()?r.fromPoints(n,t):r.fromPoints(t,n)},this.clearSelection=function(){this.$isEmpty||(this.$isEmpty=!0,this._emit("changeSelection"))},this.selectAll=function(){var n=this.doc.getLength()-1;this.setSelectionAnchor(0,0),this.moveCursorTo(n,this.doc.getLine(n).length)},this.setRange=this.setSelectionRange=function(n,t){t?(this.setSelectionAnchor(n.end.row,n.end.column),this.selectTo(n.start.row,n.start.column)):(this.setSelectionAnchor(n.start.row,n.start.column),this.selectTo(n.end.row,n.end.column)),this.$desiredColumn=null},this.$moveSelection=function(n){var t=this.lead;this.$isEmpty&&this.setSelectionAnchor(t.row,t.column),n.call(this)},this.selectTo=function(n,t){this.$moveSelection(function(){this.moveCursorTo(n,t)})},this.selectToPosition=function(n){this.$moveSelection(function(){this.moveCursorToPosition(n)})},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(n,t){if(typeof t=="undefined"){var i=n||this.lead;n=i.row,t=i.column}return this.session.getWordRange(n,t)},this.selectWord=function(){this.setSelectionRange(this.getWordRange())},this.selectAWord=function(){var n=this.getCursor(),t=this.session.getAWordRange(n.row,n.column);this.setSelectionRange(t)},this.getLineRange=function(n,t){var i=typeof n=="number"?n:this.lead.row,u,f=this.session.getFoldLine(i);return f?(i=f.start.row,u=f.end.row):u=i,t?new r(i,0,u,this.session.getLine(u).length):new r(i,0,u+1,0)},this.selectLine=function(){this.setSelectionRange(this.getLineRange())},this.moveCursorUp=function(){this.moveCursorBy(-1,0)},this.moveCursorDown=function(){this.moveCursorBy(1,0)},this.moveCursorLeft=function(){var n=this.lead.getPosition(),i,t;(i=this.session.getFoldAt(n.row,n.column,-1))?this.moveCursorTo(i.start.row,i.start.column):n.column==0?n.row>0&&this.moveCursorTo(n.row-1,this.doc.getLine(n.row-1).length):(t=this.session.getTabSize(),this.session.isTabStop(n)&&this.doc.getLine(n.row).slice(n.column-t,n.column).split(" ").length-1==t?this.moveCursorBy(0,-t):this.moveCursorBy(0,-1))},this.moveCursorRight=function(){var n=this.lead.getPosition(),i,t;(i=this.session.getFoldAt(n.row,n.column,1))?this.moveCursorTo(i.end.row,i.end.column):this.lead.column==this.doc.getLine(this.lead.row).length?this.lead.row<this.doc.getLength()-1&&this.moveCursorTo(this.lead.row+1,0):(t=this.session.getTabSize(),n=this.lead,this.session.isTabStop(n)&&this.doc.getLine(n.row).slice(n.column,n.column+t).split(" ").length-1==t?this.moveCursorBy(0,t):this.moveCursorBy(0,1))},this.moveCursorLineStart=function(){var t=this.lead.row,i=this.lead.column,u=this.session.documentToScreenRow(t,i),n=this.session.screenToDocumentPosition(u,0),f=this.session.getDisplayLine(t,null,n.row,n.column),r=f.match(/^\s*/);r[0].length==i||this.session.$useEmacsStyleLineStart||(n.column+=r[0].length),this.moveCursorToPosition(n)},this.moveCursorLineEnd=function(){var r=this.lead,n=this.session.getDocumentLastRowColumnPosition(r.row,r.column),t,i;this.lead.column==n.column&&(t=this.session.getLine(n.row),n.column==t.length&&(i=t.search(/\s+$/),i>0&&(n.column=i))),this.moveCursorTo(n.row,n.column)},this.moveCursorFileEnd=function(){var n=this.doc.getLength()-1,t=this.doc.getLine(n).length;this.moveCursorTo(n,t)},this.moveCursorFileStart=function(){this.moveCursorTo(0,0)},this.moveCursorLongWordRight=function(){var t=this.lead.row,n=this.lead.column,i=this.doc.getLine(t),u=i.substring(n),f,r;if(this.session.nonTokenRe.lastIndex=0,this.session.tokenRe.lastIndex=0,r=this.session.getFoldAt(t,n,1),r){this.moveCursorTo(r.end.row,r.end.column);return}if((f=this.session.nonTokenRe.exec(u))&&(n+=this.session.nonTokenRe.lastIndex,this.session.nonTokenRe.lastIndex=0,u=i.substring(n)),n>=i.length){this.moveCursorTo(t,i.length),this.moveCursorRight(),t<this.doc.getLength()-1&&this.moveCursorWordRight();return}(f=this.session.tokenRe.exec(u))&&(n+=this.session.tokenRe.lastIndex,this.session.tokenRe.lastIndex=0),this.moveCursorTo(t,n)},this.moveCursorLongWordLeft=function(){var t=this.lead.row,n=this.lead.column,f,r,i,e;if(f=this.session.getFoldAt(t,n,-1)){this.moveCursorTo(f.start.row,f.start.column);return}if(r=this.session.getFoldStringAt(t,n,-1),r==null&&(r=this.doc.getLine(t).substring(0,n)),i=u.stringReverse(r),this.session.nonTokenRe.lastIndex=0,this.session.tokenRe.lastIndex=0,(e=this.session.nonTokenRe.exec(i))&&(n-=this.session.nonTokenRe.lastIndex,i=i.slice(this.session.nonTokenRe.lastIndex),this.session.nonTokenRe.lastIndex=0),n<=0){this.moveCursorTo(t,0),this.moveCursorLeft(),t>0&&this.moveCursorWordLeft();return}(e=this.session.tokenRe.exec(i))&&(n-=this.session.tokenRe.lastIndex,this.session.tokenRe.lastIndex=0),this.moveCursorTo(t,n)},this.$shortWordEndIndex=function(n){var f,t=0,i,u=/\s/,r=this.session.tokenRe;if(r.lastIndex=0,f=this.session.tokenRe.exec(n))t=this.session.tokenRe.lastIndex;else{while((i=n[t])&&u.test(i))t++;if(t<=1)for(r.lastIndex=0;(i=n[t])&&!r.test(i);)if(r.lastIndex=0,t++,u.test(i)){if(t>2){t--;break}while((i=n[t])&&u.test(i))t++;if(t>2)break}}return r.lastIndex=0,t},this.moveCursorShortWordRight=function(){var n=this.lead.row,t=this.lead.column,u=this.doc.getLine(n),i=u.substring(t),r=this.session.getFoldAt(n,t,1),f,e;if(r)return this.moveCursorTo(r.end.row,r.end.column);if(t==u.length){f=this.doc.getLength();do n++,i=this.doc.getLine(n);while(n<f&&/^\s*$/.test(i));/^\s+/.test(i)||(i=""),t=0}e=this.$shortWordEndIndex(i),this.moveCursorTo(n,t+e)},this.moveCursorShortWordLeft=function(){var t=this.lead.row,i=this.lead.column,r,n,f,e;if(r=this.session.getFoldAt(t,i,-1))return this.moveCursorTo(r.start.row,r.start.column);if(n=this.session.getLine(t).substring(0,i),i==0){do t--,n=this.doc.getLine(t);while(t>0&&/^\s*$/.test(n));i=n.length,/\s+$/.test(n)||(n="")}return f=u.stringReverse(n),e=this.$shortWordEndIndex(f),this.moveCursorTo(t,i-e)},this.moveCursorWordRight=function(){this.session.$selectLongWords?this.moveCursorLongWordRight():this.moveCursorShortWordRight()},this.moveCursorWordLeft=function(){this.session.$selectLongWords?this.moveCursorLongWordLeft():this.moveCursorShortWordLeft()},this.moveCursorBy=function(n,t){var i=this.session.documentToScreenPosition(this.lead.row,this.lead.column),r;t===0&&(this.$desiredColumn?i.column=this.$desiredColumn:this.$desiredColumn=i.column),r=this.session.screenToDocumentPosition(i.row+n,i.column),this.moveCursorTo(r.row,r.column+t,t===0)},this.moveCursorToPosition=function(n){this.moveCursorTo(n.row,n.column)},this.moveCursorTo=function(n,t,i){var r=this.session.getFoldAt(n,t,1);r&&(n=r.start.row,t=r.start.column),this.$keepDesiredColumnOnChange=!0,this.lead.setPosition(n,t),this.$keepDesiredColumnOnChange=!1,i||(this.$desiredColumn=null)},this.moveCursorToScreen=function(n,t,i){var r=this.session.screenToDocumentPosition(n,t);this.moveCursorTo(r.row,r.column,i)},this.detach=function(){this.lead.detach(),this.anchor.detach(),this.session=this.doc=null},this.fromOrientedRange=function(n){this.setSelectionRange(n,n.cursor==n.start),this.$desiredColumn=n.desiredColumn||this.$desiredColumn},this.toOrientedRange=function(n){var t=this.getRange();return n?(n.start.column=t.start.column,n.start.row=t.start.row,n.end.column=t.end.column,n.end.row=t.end.row):n=t,n.cursor=this.isBackwards()?n.start:n.end,n.desiredColumn=this.$desiredColumn,n}}).call(f.prototype),t.Selection=f}),ace.define("ace/range",["require","exports","module"],function(n,t){var u=function(n,t){return n.row-t.row||n.column-t.column},r=function(n,t,i,r){this.start={row:n,column:t},this.end={row:i,column:r}};(function(){this.isEqual=function(n){return this.start.row===n.start.row&&this.end.row===n.end.row&&this.start.column===n.start.column&&this.end.column===n.end.column},this.toString=function(){return"Range: ["+this.start.row+"/"+this.start.column+"] -> ["+this.end.row+"/"+this.end.column+"]"},this.contains=function(n,t){return this.compare(n,t)==0},this.compareRange=function(n){var t,r=n.end,i=n.start;return t=this.compare(r.row,r.column),t==1?(t=this.compare(i.row,i.column),t==1?2:t==0?1:0):t==-1?-2:(t=this.compare(i.row,i.column),t==-1?-1:t==1?42:0)},this.comparePoint=function(n){return this.compare(n.row,n.column)},this.containsRange=function(n){return this.comparePoint(n.start)==0&&this.comparePoint(n.end)==0},this.intersects=function(n){var t=this.compareRange(n);return t==-1||t==0||t==1},this.isEnd=function(n,t){return this.end.row==n&&this.end.column==t},this.isStart=function(n,t){return this.start.row==n&&this.start.column==t},this.setStart=function(n,t){typeof n=="object"?(this.start.column=n.column,this.start.row=n.row):(this.start.row=n,this.start.column=t)},this.setEnd=function(n,t){typeof n=="object"?(this.end.column=n.column,this.end.row=n.row):(this.end.row=n,this.end.column=t)},this.inside=function(n,t){return this.compare(n,t)==0?this.isEnd(n,t)||this.isStart(n,t)?!1:!0:!1},this.insideStart=function(n,t){return this.compare(n,t)==0?this.isEnd(n,t)?!1:!0:!1},this.insideEnd=function(n,t){return this.compare(n,t)==0?this.isStart(n,t)?!1:!0:!1},this.compare=function(n,t){return!this.isMultiLine()&&n===this.start.row?t<this.start.column?-1:t>this.end.column?1:0:n<this.start.row?-1:n>this.end.row?1:this.start.row===n?t>=this.start.column?0:-1:this.end.row===n?t<=this.end.column?0:1:0},this.compareStart=function(n,t){return this.start.row==n&&this.start.column==t?-1:this.compare(n,t)},this.compareEnd=function(n,t){return this.end.row==n&&this.end.column==t?1:this.compare(n,t)},this.compareInside=function(n,t){return this.end.row==n&&this.end.column==t?1:this.start.row==n&&this.start.column==t?-1:this.compare(n,t)},this.clipRows=function(n,t){var i,u;return this.end.row>t?i={row:t+1,column:0}:this.end.row<n&&(i={row:n,column:0}),this.start.row>t?u={row:t+1,column:0}:this.start.row<n&&(u={row:n,column:0}),r.fromPoints(u||this.start,i||this.end)},this.extend=function(n,t){var i=this.compare(n,t),u,f;return i==0?this:(i==-1?u={row:n,column:t}:f={row:n,column:t},r.fromPoints(u||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 r.fromPoints(this.start,this.end)},this.collapseRows=function(){return this.end.column==0?new r(this.start.row,0,Math.max(this.start.row,this.end.row-1),0):new r(this.start.row,0,this.end.row,0)},this.toScreenRange=function(n){var t=n.documentToScreenPosition(this.start),i=n.documentToScreenPosition(this.end);return new r(t.row,t.column,i.row,i.column)},this.moveBy=function(n,t){this.start.row+=n,this.start.column+=t,this.end.row+=n,this.end.column+=t}}).call(r.prototype),r.fromPoints=function(n,t){return new r(n.row,n.column,t.row,t.column)},r.comparePoints=u,r.comparePoints=function(n,t){return n.row-t.row||n.column-t.column},t.Range=r}),ace.define("ace/mode/text",["require","exports","module","ace/tokenizer","ace/mode/text_highlight_rules","ace/mode/behaviour","ace/unicode","ace/lib/lang","ace/token_iterator","ace/range"],function(n,t){var s=n("../tokenizer").Tokenizer,h=n("./text_highlight_rules").TextHighlightRules,c=n("./behaviour").Behaviour,r=n("../unicode"),u=n("../lib/lang"),f=n("../token_iterator").TokenIterator,e=n("../range").Range,o=function(){this.$tokenizer=new s((new h).getRules()),this.$behaviour=new c};(function(){this.tokenRe=new RegExp("^["+r.packages.L+r.packages.Mn+r.packages.Mc+r.packages.Nd+r.packages.Pc+"\\$_]+","g"),this.nonTokenRe=new RegExp("^(?:[^"+r.packages.L+r.packages.Mn+r.packages.Mc+r.packages.Nd+r.packages.Pc+"\\$_]|s])+","g"),this.getTokenizer=function(){return this.$tokenizer},this.lineCommentStart="",this.blockComment="",this.toggleCommentLines=function(n,t,i,r){function v(n){for(var t=i;t<=r;t++)n(e.getLine(t),t)}var e=t.doc,a=!0,c=!0,f=Infinity,o=t.getTabSize(),y=!1,s,h,l;if(this.lineCommentStart){Array.isArray(this.lineCommentStart)?(s=this.lineCommentStart.map(u.escapeRegExp).join("|"),h=this.lineCommentStart[0]):(s=u.escapeRegExp(this.lineCommentStart),h=this.lineCommentStart),s=new RegExp("^(\\s*)(?:"+s+") ?"),y=t.getUseSoftTabs();var d=function(n,t){var r=n.match(s),u,i;r&&(u=r[1].length,i=r[0].length,b(n,u,i)||r[0][i-1]!=" "||i--,e.removeInLine(t,u,i))},g=h+" ",nt=function(n,t){(!a||/\S/.test(n))&&(b(n,f,f)?e.insertInLine({row:t,column:f},g):e.insertInLine({row:t,column:f},h))},w=function(n){return s.test(n)},b=function(n,t,i){for(var r=0;t--&&n.charAt(t)==" ";)r++;if(r%o!=0)return!1;for(r=0;n.charAt(i++)==" ";)r++;return o>2?r%o!=o-1:r%o==0}}else{if(!this.blockComment)return!1;var h=this.blockComment.start,p=this.blockComment.end,s=new RegExp("^(\\s*)(?:"+u.escapeRegExp(h)+")"),k=new RegExp("(?:"+u.escapeRegExp(p)+")\\s*$"),nt=function(n,t){w(n,t)||(!a||/\S/.test(n))&&(e.insertInLine({row:t,column:n.length},p),e.insertInLine({row:t,column:f},h))},d=function(n,t){var i;(i=n.match(k))&&e.removeInLine(t,n.length-i[0].length,n.length),(i=n.match(s))&&e.removeInLine(t,i[1].length,i[0].length)},w=function(n,i){var u,r;if(s.test(n))return!0;for(u=t.getTokens(i),r=0;r<u.length;r++)if(u[r].type==="comment")return!0}}l=Infinity,v(function(n,t){var i=n.search(/\S/);i!==-1?(i<f&&(f=i),c&&!w(n,t)&&(c=!1)):l>n.length&&(l=n.length)}),f==Infinity&&(f=l,a=!1,c=!1),y&&f%o!=0&&(f=Math.floor(f/o)*o),v(c?d:nt)},this.toggleBlockComment=function(n,t,i,r){var u=this.blockComment,p,w,s,o,h,c,l;if(u){!u.start&&u[0]&&(u=u[0]);var s=new f(t,r.row,r.column),o=s.getCurrentToken(),b=t.selection,a=t.selection.toOrientedRange(),v,y;if(o&&/comment/.test(o.type)){while(o&&/comment/.test(o.type)){if(h=o.value.indexOf(u.start),h!=-1){c=s.getCurrentTokenRow(),l=s.getCurrentTokenColumn()+h,p=new e(c,l,c,l+u.start.length);break}o=s.stepBackward()}for(s=new f(t,r.row,r.column),o=s.getCurrentToken();o&&/comment/.test(o.type);){if(h=o.value.indexOf(u.end),h!=-1){c=s.getCurrentTokenRow(),l=s.getCurrentTokenColumn()+h,w=new e(c,l,c,l+u.end.length);break}o=s.stepForward()}w&&t.remove(w),p&&(t.remove(p),v=p.start.row,y=-u.start.length)}else y=u.start.length,v=i.start.row,t.insert(i.end,u.end),t.insert(i.start,u.start);a.start.row==v&&(a.start.column+=y),a.end.row==v&&(a.end.column+=y),t.selection.fromOrientedRange(a)}},this.getNextLineIndent=function(n,t){return this.$getIndent(t)},this.checkOutdent=function(){return!1},this.autoOutdent=function(){},this.$getIndent=function(n){return n.match(/^\s*/)[0]},this.createWorker=function(){return null},this.createModeDelegates=function(n){var i,t;if(this.$embeds){for(this.$modes={},t=0;t<this.$embeds.length;t++)n[this.$embeds[t]]&&(this.$modes[this.$embeds[t]]=new n[this.$embeds[t]]);for(i=["toggleCommentLines","getNextLineIndent","checkOutdent","autoOutdent","transformAction"],t=0;t<i.length;t++)(function(n){var r=i[t],u=n[r];n[i[t]]=function(){return this.$delegator(r,arguments,u)}})(this)}},this.$delegator=function(n,t,i){var u=t[0],r,f,e,o;for(typeof u!="string"&&(u=u[0]),r=0;r<this.$embeds.length;r++)if(this.$modes[this.$embeds[r]]&&(f=u.split(this.$embeds[r]),!f[0]&&f[1]))return t[0]=f[1],e=this.$modes[this.$embeds[r]],e[n].apply(e,t);return o=i.apply(this,t),i?o:undefined},this.transformAction=function(n,t){var f,e,o;if(this.$behaviour){f=this.$behaviour.getBehaviours();for(e in f)if(f[e][t]&&(o=f[e][t].apply(this,arguments),o))return o}}}).call(o.prototype),t.Mode=o}),ace.define("ace/tokenizer",["require","exports","module"],function(n,t){var u=1e3,r=function(n){var f,r,t,u,i;this.states=n,this.regExps={},this.matchMappings={};for(f in this.states){var s=this.states[f],h=[],e=0,c=this.matchMappings[f]={defaultToken:"text"},o="g",l=[];for(r=0;r<s.length;r++)if(t=s[r],t.defaultToken&&(c.defaultToken=t.defaultToken),t.caseInsensitive&&(o="gi"),t.regex!=null){if(t.regex instanceof RegExp&&(t.regex=t.regex.toString().slice(1,-1)),u=t.regex,i=new RegExp("(?:("+u+")|(.))").exec("a").length-2,Array.isArray(t.token))if(t.token.length==1||i==1)t.token=t.token[0];else{if(i-1!=t.token.length)throw new Error("number of classes and regexp groups in '"+t.token+"'\n'"+t.regex+"' doesn't match\n"+(i-1)+"!="+t.token.length);t.tokenArray=t.token,t.token=null,t.onMatch=this.$arrayTokens}else typeof t.token!="function"||t.onMatch||(t.onMatch=i>1?this.$applyToken:t.token);i>1&&(/\\\d/.test(t.regex)?u=t.regex.replace(/\\([0-9]+)/g,function(n,t){return"\\"+(parseInt(t,10)+e+1)}):(i=1,u=this.removeCapturingGroups(t.regex)),!t.splitRegex&&typeof t.token!="string"&&l.push(t)),c[e]=r,e+=i,h.push(u),t.onMatch||(t.onMatch=null),t.__proto__=null}l.forEach(function(n){n.splitRegex=this.createSplitterRegexp(n.regex,o)},this),this.regExps[f]=new RegExp("("+h.join(")|(")+")|($)",o)}};(function(){this.$applyToken=function(n){var u=this.splitRegex.exec(n).slice(1),i=this.token.apply(this,u),r,t,f;if(typeof i=="string")return[{type:i,value:n}];for(r=[],t=0,f=i.length;t<f;t++)u[t]&&(r[r.length]={type:i[t],value:u[t]});return r},this.$arrayTokens=function(n){var i,r,u,t,f;if(!n)return[];if(i=this.splitRegex.exec(n),!i)return"text";for(r=[],u=this.tokenArray,t=0,f=u.length;t<f;t++)i[t+1]&&(r[r.length]={type:u[t],value:i[t+1]});return r},this.removeCapturingGroups=function(n){return n.replace(/\[(?:\\.|[^\]])*?\]|\\.|\(\?[:=!]|(\()/g,function(n,t){return t?"(?:":n})},this.createSplitterRegexp=function(n,t){if(n.indexOf("(?=")!=-1){var r=0,u=!1,i={};n.replace(/(\\.)|(\((?:\?[=!])?)|(\))|([\[\]])/g,function(n,t,f,e,o,s){return u?u=o!="]":o?u=!0:e?(r==i.stack&&(i.end=s+1,i.stack=-1),r--):f&&(r++,f.length!=1&&(i.stack=r,i.start=s)),n}),i.end!=null&&/^\)*$/.test(n.substr(i.end))&&(n=n.substring(0,i.start)+n.substr(i.end))}return new RegExp(n,(t||"").replace("g",""))},this.getLineTokens=function(n,t){var s,b,o;t&&typeof t!="string"?(s=t.slice(0),t=s[0]):s=[];var r=t||"start",y=this.states[r],w=this.matchMappings[r],a=this.regExps[r];a.lastIndex=0;for(var p,h=[],c=0,i={type:null,value:""};p=a.exec(n);){var f=w.defaultToken,e=null,l=p[0],v=a.lastIndex;for(v-l.length>c&&(b=n.substring(c,v-l.length),i.type==f?i.value+=b:(i.type&&h.push(i),i={type:f,value:b})),o=0;o<p.length-2;o++)if(p[o+1]!==undefined){e=y[w[o]],f=e.onMatch?e.onMatch(l,r,s):e.token,e.next&&(r=typeof e.next=="string"?e.next:e.next(r,s),y=this.states[r],y||(window.console&&console.error&&console.error(r,"doesn't exist"),r="start",y=this.states[r]),w=this.matchMappings[r],c=v,a=this.regExps[r],a.lastIndex=v);break}if(l)if(typeof f=="string")!!e&&e.merge===!1||i.type!==f?(i.type&&h.push(i),i={type:f,value:l}):i.value+=l;else if(f)for(i.type&&h.push(i),i={type:null,value:""},o=0;o<f.length;o++)h.push(f[o]);if(c==n.length)break;if(c=v,h.length>u){while(c<n.length)i.type&&h.push(i),i={value:n.substring(c,c+=2e3),type:"overflow"};r="start",s=[];break}}return i.type&&h.push(i),{tokens:h,state:s.length?s:r}}}).call(r.prototype),t.Tokenizer=r}),ace.define("ace/mode/text_highlight_rules",["require","exports","module","ace/lib/lang"],function(n,t){var u=n("../lib/lang"),r=function(){this.$rules={start:[{token:"empty_line",regex:"^$"},{defaultToken:"text"}]}};(function(){this.addRules=function(n,t){var f,r,u,i;for(f in n){for(r=n[f],u=0;u<r.length;u++)i=r[u],i.next&&(typeof i.next!="string"?i.nextState=t+i.nextState:i.next=t+i.next);this.$rules[t+f]=r}},this.getRules=function(){return this.$rules},this.embedRules=function(n,t,i,r,f){var o=(new n).getRules(),s,h,e;if(r)for(e=0;e<r.length;e++)r[e]=t+r[e];else{r=[];for(s in o)r.push(t+s)}if(this.addRules(o,t),i)for(h=Array.prototype[f?"push":"unshift"],e=0;e<r.length;e++)h.apply(this.$rules[r[e]],u.deepCopy(i));this.$embeds||(this.$embeds=[]),this.$embeds.push(t)},this.getEmbeds=function(){return this.$embeds};var n=function(n,t){return n!="start"&&t.unshift(this.nextState,n),this.nextState},t=function(n,t){return t[0]!==n?"start":(t.shift(),t.shift())};this.normalizeRules=function(){function r(f){var c=i[f],h,e,l,o,s,y,a,v;for(c.processed=!0,h=0;h<c.length;h++){if(e=c[h],!e.regex&&e.start&&(e.regex=e.start,e.next||(e.next=[]),e.next.push({defaultToken:e.token},{token:e.token+".end",regex:e.end||e.start,next:"pop"}),e.token=e.token+".start",e.push=!0),l=e.next||e.push,l&&Array.isArray(l)?(o=e.stateName,o||(o=e.token,typeof o!="string"&&(o=o[0]||""),i[o]&&(o+=u++)),i[o]=l,e.next=o,r(o)):l=="pop"&&(e.next=t),e.push&&(e.nextState=e.next||e.push,e.next=n,delete e.push),e.rules)for(s in e.rules)i[s]?i[s].push&&i[s].push.apply(i[s],e.rules[s]):i[s]=e.rules[s];e.include||typeof e=="string"?(y=e.include||e,a=i[y]):Array.isArray(e)&&(a=e),a&&(v=[h,1].concat(a),e.noEscape&&(v=v.filter(function(n){return!n.next})),c.splice.apply(c,v),h--,a=null),e.keywordMap&&(e.token=this.createKeywordMapper(e.keywordMap,e.defaultToken||"text",e.caseInsensitive),delete e.defaultToken)}}var u=0,i=this.$rules;Object.keys(i).forEach(r,this)},this.createKeywordMapper=function(n,t,i,r){var u=Object.create(null);return Object.keys(n).forEach(function(t){var f=n[t],e,o;for(i&&(f=f.toLowerCase()),e=f.split(r||"|"),o=e.length;o--;)u[e[o]]=t}),n=null,i?function(n){return u[n.toLowerCase()]||t}:function(n){return u[n]||t}},this.getKeywords=function(){return this.$keywords}}).call(r.prototype),t.TextHighlightRules=r}),ace.define("ace/mode/behaviour",["require","exports","module"],function(n,t){var r=function(){this.$behaviours={}};(function(){this.add=function(n,t,i){switch(undefined){case this.$behaviours:this.$behaviours={};case this.$behaviours[n]:this.$behaviours[n]={}}this.$behaviours[n][t]=i},this.addBehaviours=function(n){var t,i;for(t in n)for(i in n[t])this.add(t,i,n[t][i])},this.remove=function(n){this.$behaviours&&this.$behaviours[n]&&delete this.$behaviours[n]},this.inherit=function(n,t){var i;i=typeof n=="function"?(new n).getBehaviours(t):n.getBehaviours(t),this.addBehaviours(i)},this.getBehaviours=function(n){var i,t;if(!n)return this.$behaviours;for(i={},t=0;t<n.length;t++)this.$behaviours[n[t]]&&(i[n[t]]=this.$behaviours[n[t]]);return i}}).call(r.prototype),t.Behaviour=r}),ace.define("ace/unicode",["require","exports","module"],function(n,t){function r(n){var r=/\w{4}/g,i;for(i in n)t.packages[i]=n[i].replace(r,"\\u$&")}t.packages={},r({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"})}),ace.define("ace/token_iterator",["require","exports","module"],function(n,t){var r=function(n,t,i){this.$session=n,this.$row=t,this.$rowTokens=n.getTokens(t);var r=n.getTokenAt(t,i);this.$tokenIndex=r?r.index:-1};(function(){this.stepBackward=function(){for(this.$tokenIndex-=1;this.$tokenIndex<0;){if(this.$row-=1,this.$row<0)return this.$row=0,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;for(var n;this.$tokenIndex>=this.$rowTokens.length;){if(this.$row+=1,n||(n=this.$session.getLength()),this.$row>=n)return this.$row=n-1,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 i=this.$rowTokens,t=this.$tokenIndex,n=i[t].start;if(n!==undefined)return n;for(n=0;t>0;)t-=1,n+=i[t].value.length;return n}}).call(r.prototype),t.TokenIterator=r}),ace.define("ace/document",["require","exports","module","ace/lib/oop","ace/lib/event_emitter","ace/range","ace/anchor"],function(n,t){var f=n("./lib/oop"),e=n("./lib/event_emitter").EventEmitter,r=n("./range").Range,o=n("./anchor").Anchor,u=function(n){this.$lines=[],n.length==0?this.$lines=[""]:Array.isArray(n)?this._insertLines(0,n):this.insert({row:0,column:0},n)};(function(){f.implement(this,e),this.setValue=function(n){var t=this.getLength();this.remove(new r(0,0,t,this.getLine(t-1).length)),this.insert({row:0,column:0},n)},this.getValue=function(){return this.getAllLines().join(this.getNewLineCharacter())},this.createAnchor=function(n,t){return new o(this,n,t)},this.$split="aaa".split(/a/).length==0?function(n){return n.replace(/\r\n|\r/g,"\n").split("\n")}:function(n){return n.split(/\r\n|\r|\n/)},this.$detectNewLine=function(n){var t=n.match(/^.*?(\r\n|\r|\n)/m);this.$autoNewLine=t?t[1]:"\n"},this.getNewLineCharacter=function(){switch(this.$newLineMode){case"windows":return"\r\n";case"unix":return"\n";default:return this.$autoNewLine}},this.$autoNewLine="\n",this.$newLineMode="auto",this.setNewLineMode=function(n){this.$newLineMode!==n&&(this.$newLineMode=n)},this.getNewLineMode=function(){return this.$newLineMode},this.isNewLine=function(n){return n=="\r\n"||n=="\r"||n=="\n"},this.getLine=function(n){return this.$lines[n]||""},this.getLines=function(n,t){return this.$lines.slice(n,t+1)},this.getAllLines=function(){return this.getLines(0,this.getLength())},this.getLength=function(){return this.$lines.length},this.getTextRange=function(n){var t,i;return n.start.row==n.end.row?this.$lines[n.start.row].substring(n.start.column,n.end.column):(t=this.getLines(n.start.row,n.end.row),t[0]=(t[0]||"").substring(n.start.column),i=t.length-1,n.end.row-n.start.row==i&&(t[i]=t[i].substring(0,n.end.column)),t.join(this.getNewLineCharacter()))},this.$clipPosition=function(n){var t=this.getLength();return n.row>=t?(n.row=Math.max(0,t-1),n.column=this.getLine(t-1).length):n.row<0&&(n.row=0),n},this.insert=function(n,t){if(!t||t.length===0)return n;n=this.$clipPosition(n),this.getLength()<=1&&this.$detectNewLine(t);var i=this.$split(t),u=i.splice(0,1)[0],r=i.length==0?null:i.splice(i.length-1,1)[0];return n=this.insertInLine(n,u),r!==null&&(n=this.insertNewLine(n),n=this._insertLines(n.row,i),n=this.insertInLine(n,r||"")),n},this.insertLines=function(n,t){return n>=this.getLength()?this.insert({row:n,column:0},"\n"+t.join("\n")):this._insertLines(Math.max(n,0),t)},this._insertLines=function(n,t){var f,i,u,e;return t.length==0?{row:n,column:0}:(t.length>65535&&(f=this._insertLines(n,t.slice(65535)),t=t.slice(0,65535)),i=[n,0],i.push.apply(i,t),this.$lines.splice.apply(this.$lines,i),u=new r(n,0,n+t.length,0),e={action:"insertLines",range:u,lines:t},this._emit("change",{data:e}),f||u.end)},this.insertNewLine=function(n){var t,i,u;return n=this.$clipPosition(n),t=this.$lines[n.row]||"",this.$lines[n.row]=t.substring(0,n.column),this.$lines.splice(n.row+1,0,t.substring(n.column,t.length)),i={row:n.row+1,column:0},u={action:"insertText",range:r.fromPoints(n,i),text:this.getNewLineCharacter()},this._emit("change",{data:u}),i},this.insertInLine=function(n,t){var i,u,f;return t.length==0?n:(i=this.$lines[n.row]||"",this.$lines[n.row]=i.substring(0,n.column)+t+i.substring(n.column),u={row:n.row,column:n.column+t.length},f={action:"insertText",range:r.fromPoints(n,u),text:t},this._emit("change",{data:f}),u)},this.remove=function(n){var t,r,i,u;return(n.start=this.$clipPosition(n.start),n.end=this.$clipPosition(n.end),n.isEmpty())?n.start:(t=n.start.row,r=n.end.row,n.isMultiLine()?(i=n.start.column==0?t:t+1,u=r-1,n.end.column>0&&this.removeInLine(r,0,n.end.column),u>=i&&this._removeLines(i,u),i!=t&&(this.removeInLine(t,n.start.column,this.getLine(t).length),this.removeNewLine(n.start.row))):this.removeInLine(t,n.start.column,n.end.column),n.start)},this.removeInLine=function(n,t,i){var e;if(t!=i){var f=new r(n,t,n,i),u=this.getLine(n),o=u.substring(t,i),s=u.substring(0,t)+u.substring(i,u.length);return this.$lines.splice(n,1,s),e={action:"removeText",range:f,text:o},this._emit("change",{data:e}),f.start}},this.removeLines=function(n,t){return n<0||t>=this.getLength()?this.remove(new r(n,0,t+1,0)):this._removeLines(n,t)},this._removeLines=function(n,t){var u=new r(n,0,t+1,0),i=this.$lines.splice(n,t-n+1),f={action:"removeLines",range:u,nl:this.getNewLineCharacter(),lines:i};return this._emit("change",{data:f}),i},this.removeNewLine=function(n){var t=this.getLine(n),u=this.getLine(n+1),f=new r(n,t.length,n+1,0),e=t+u,i;this.$lines.splice(n,2,e),i={action:"removeText",range:f,text:this.getNewLineCharacter()},this._emit("change",{data:i})},this.replace=function(n,t){if(t.length==0&&n.isEmpty())return n.start;if(t==this.getTextRange(n))return n.end;if(this.remove(n),t)var i=this.insert(n.start,t);else i=n.start;return i},this.applyDeltas=function(n){for(var t,i,u=0;u<n.length;u++)t=n[u],i=r.fromPoints(t.range.start,t.range.end),t.action=="insertLines"?this.insertLines(i.start.row,t.lines):t.action=="insertText"?this.insert(i.start,t.text):t.action=="removeLines"?this._removeLines(i.start.row,i.end.row-1):t.action=="removeText"&&this.remove(i)},this.revertDeltas=function(n){for(var t,i,u=n.length-1;u>=0;u--)t=n[u],i=r.fromPoints(t.range.start,t.range.end),t.action=="insertLines"?this._removeLines(i.start.row,i.end.row-1):t.action=="insertText"?this.remove(i):t.action=="removeLines"?this._insertLines(i.start.row,t.lines):t.action=="removeText"&&this.insert(i.start,t.text)},this.indexToPosition=function(n,t){for(var r=this.$lines||this.getAllLines(),f=this.getNewLineCharacter().length,i=t||0,u=r.length;i<u;i++)if(n-=r[i].length+f,n<0)return{row:i,column:n+r[i].length+f};return{row:u-1,column:r[u-1].length}},this.positionToIndex=function(n,t){for(var r=this.$lines||this.getAllLines(),f=this.getNewLineCharacter().length,u=0,e=Math.min(n.row,r.length),i=t||0;i<e;++i)u+=r[i].length+f;return u+n.column}}).call(u.prototype),t.Document=u}),ace.define("ace/anchor",["require","exports","module","ace/lib/oop","ace/lib/event_emitter"],function(n,t){var r=n("./lib/oop"),u=n("./lib/event_emitter").EventEmitter,f=t.Anchor=function(n,t,i){this.document=n,typeof i=="undefined"?this.setPosition(t.row,t.column):this.setPosition(t,i),this.$onChange=this.onChange.bind(this),n.on("change",this.$onChange)};(function(){r.implement(this,u),this.getPosition=function(){return this.$clipPositionToDocument(this.row,this.column)},this.getDocument=function(){return this.document},this.onChange=function(n){var e=n.data,f=e.range;if((f.start.row!=f.end.row||f.start.row==this.row)&&!(f.start.row>this.row)&&(f.start.row!=this.row||!(f.start.column>this.column))){var i=this.row,u=this.column,t=f.start,r=f.end;e.action==="insertText"?t.row===i&&t.column<=u?t.row===r.row?u+=r.column-t.column:(u-=t.column,i+=r.row-t.row):t.row!==r.row&&t.row<i&&(i+=r.row-t.row):e.action==="insertLines"?t.row<=i&&(i+=r.row-t.row):e.action==="removeText"?t.row===i&&t.column<u?u=r.column>=u?t.column:Math.max(0,u-(r.column-t.column)):t.row!==r.row&&t.row<i?(r.row===i&&(u=Math.max(0,u-r.column)+t.column),i-=r.row-t.row):r.row===i&&(i-=r.row-t.row,u=Math.max(0,u-r.column)+t.column):e.action=="removeLines"&&t.row<=i&&(r.row<=i?i-=r.row-t.row:(i=t.row,u=0)),this.setPosition(i,u,!0)}},this.setPosition=function(n,t,i){var r,u;(r=i?{row:n,column:t}:this.$clipPositionToDocument(n,t),this.row!=r.row||this.column!=r.column)&&(u={row:this.row,column:this.column},this.row=r.row,this.column=r.column,this._emit("change",{old:u,value:r}))},this.detach=function(){this.document.removeEventListener("change",this.$onChange)},this.$clipPositionToDocument=function(n,t){var i={};return n>=this.document.getLength()?(i.row=Math.max(0,this.document.getLength()-1),i.column=this.document.getLine(i.row).length):n<0?(i.row=0,i.column=0):(i.row=n,i.column=Math.min(this.document.getLine(i.row).length,Math.max(0,t))),t<0&&(i.column=0),i}}).call(f.prototype)}),ace.define("ace/background_tokenizer",["require","exports","module","ace/lib/oop","ace/lib/event_emitter"],function(n,t){var u=n("./lib/oop"),f=n("./lib/event_emitter").EventEmitter,r=function(n){this.running=!1,this.lines=[],this.states=[],this.currentLine=0,this.tokenizer=n;var i=this;this.$worker=function(){if(i.running){for(var u=new Date,n=i.currentLine,f=i.doc,t=0,r=f.getLength();i.currentLine<r;){for(i.$tokenizeRow(i.currentLine);i.lines[i.currentLine];)i.currentLine++;if(t++,t%5==0&&new Date-u>20){i.fireUpdateEvent(n,i.currentLine-1),i.running=setTimeout(i.$worker,20);return}}i.running=!1,i.fireUpdateEvent(n,r-1)}}};(function(){u.implement(this,f),this.setTokenizer=function(n){this.tokenizer=n,this.lines=[],this.states=[],this.start(0)},this.setDocument=function(n){this.doc=n,this.lines=[],this.states=[],this.stop()},this.fireUpdateEvent=function(n,t){var i={first:n,last:t};this._emit("update",{data:i})},this.start=function(n){this.currentLine=Math.min(n||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.$updateOnChange=function(n){var u=n.range,t=u.start.row,i=u.end.row-t,r;i===0?this.lines[t]=null:n.action=="removeText"||n.action=="removeLines"?(this.lines.splice(t,i+1,null),this.states.splice(t,i+1,null)):(r=Array(i+1),r.unshift(t,1),this.lines.splice.apply(this.lines,r),this.states.splice.apply(this.states,r)),this.currentLine=Math.min(t,this.currentLine,this.doc.getLength()),this.stop(),this.running=setTimeout(this.$worker,700)},this.stop=function(){this.running&&clearTimeout(this.running),this.running=!1},this.getTokens=function(n){return this.lines[n]||this.$tokenizeRow(n)},this.getState=function(n){return this.currentLine==n&&this.$tokenizeRow(n),this.states[n]||"start"},this.$tokenizeRow=function(n){var i=this.doc.getLine(n),r=this.states[n-1],t=this.tokenizer.getLineTokens(i,r,n);return this.states[n]+""!=t.state+""?(this.states[n]=t.state,this.lines[n+1]=null,this.currentLine>n+1&&(this.currentLine=n+1)):this.currentLine==n&&(this.currentLine=n+1),this.lines[n]=t.tokens}}).call(r.prototype),t.BackgroundTokenizer=r}),ace.define("ace/search_highlight",["require","exports","module","ace/lib/lang","ace/lib/oop","ace/range"],function(n,t){var u=n("./lib/lang"),e=n("./lib/oop"),f=n("./range").Range,r=function(n,t,i){this.setRegexp(n),this.clazz=t,this.type=i||"text"};(function(){this.MAX_RANGES=500,this.setRegexp=function(n){this.regExp+""!=n+""&&(this.regExp=n,this.cache=[])},this.update=function(n,t,i,r){var h,c,o,e,s;if(this.regExp)for(h=r.firstRow,c=r.lastRow,o=h;o<=c;o++)for(e=this.cache[o],e==null&&(e=u.getMatchOffsets(i.getLine(o),this.regExp),e.length>this.MAX_RANGES&&(e=e.slice(0,this.MAX_RANGES)),e=e.map(function(n){return new f(o,n.offset,o,n.offset+n.length)}),this.cache[o]=e.length?e:""),s=e.length;s--;)t.drawSingleLineMarker(n,e[s].toScreenRange(i),this.clazz,r)}}).call(r.prototype),t.SearchHighlight=r}),ace.define("ace/edit_session/folding",["require","exports","module","ace/range","ace/edit_session/fold_line","ace/edit_session/fold","ace/token_iterator"],function(n,t){function o(){this.getFoldAt=function(n,t,i){var e=this.getFoldLine(n),f,u,r;if(!e)return null;for(f=e.folds,u=0;u<f.length;u++)if(r=f[u],r.range.contains(n,t)){if(i==1&&r.range.isEnd(n,t))continue;if(i==-1&&r.range.isStart(n,t))continue;return r}},this.getFoldsInRange=function(n){var o=n.start,s=n.end,u=this.$foldData,h=[],i,t,f,r,e;for(o.column+=1,s.column-=1,i=0;i<u.length;i++)if(t=u[i].range.compareRange(n),t!=2){if(t==-2)break;for(f=u[i].folds,r=0;r<f.length;r++){if(e=f[r],t=e.range.compareRange(n),t==-2)break;if(t!=2){if(t==42)break;h.push(e)}}}return o.column-=1,s.column+=1,h},this.getAllFolds=function(){function u(n){r.push(n)}for(var r=[],i=this.$foldData,t,n=0;n<i.length;n++)for(t=0;t<i[n].folds.length;t++)u(i[n].folds[t]);return r},this.getFoldStringAt=function(n,t,i,r){var u,f,e,o,s;if(r=r||this.getFoldLine(n),!r)return null;for(u={end:{column:0}},o=0;o<r.folds.length;o++){if(e=r.folds[o],s=e.range.compareEnd(n,t),s==-1){f=this.getLine(e.start.row).substring(u.end.column,e.start.column);break}if(s===0)return null;u=e}return f||(f=this.getLine(e.start.row).substring(u.end.column)),i==-1?f.substring(0,t-u.end.column):i==1?f.substring(t-u.end.column):f},this.getFoldLine=function(n,t){var u=this.$foldData,i=0,r;for(t&&(i=u.indexOf(t)),i==-1&&(i=0),i;i<u.length;i++){if(r=u[i],r.start.row<=n&&r.end.row>=n)return r;if(r.end.row>n)return null}return null},this.getNextFoldLine=function(n,t){var r=this.$foldData,i=0,u;for(t&&(i=r.indexOf(t)),i==-1&&(i=0),i;i<r.length;i++)if(u=r[i],u.end.row>=n)return u;return null},this.getFoldedRowCount=function(n,t){for(var e=this.$foldData,i=t-n+1,u=0;u<e.length;u++){var o=e[u],f=o.end.row,r=o.start.row;if(f>=t){r<t&&(r>=n?i-=t-r:i=0);break}f>=n&&(i-=r>=n?f-r:f-n+1)}return i},this.$addFoldLine=function(n){return this.$foldData.push(n),this.$foldData.sort(function(n,t){return n.start.row-t.start.row}),n},this.addFold=function(n,t){var v=this.$foldData,y=!1,i,e,c,l,s,r,a;n instanceof f?i=n:(i=new f(t,n),i.collapseChildren=t.collapseChildren),this.$clipRangeToDocument(i.range);var h=i.start.row,p=i.start.column,o=i.end.row,w=i.end.column;if(h==o&&w-p<2)throw"The range has to be at least 2 characters width";if(e=this.getFoldAt(h,p,1),c=this.getFoldAt(o,w,-1),e&&c==e)return e.addSubFold(i);if(e&&!e.range.isStart(h,p)||c&&!c.range.isEnd(o,w))throw"A fold can't intersect already existing fold"+i.range+e.range;for(l=this.getFoldsInRange(i.range),l.length>0&&(this.removeFolds(l),l.forEach(function(n){i.addSubFold(n)})),s=0;s<v.length;s++){if(r=v[s],o==r.start.row){r.addFold(i),y=!0;break}if(h==r.end.row){if(r.addFold(i),y=!0,!i.sameRow&&(a=v[s+1],a&&a.start.row==o)){r.merge(a);break}break}if(o<=r.start.row)break}return y||(r=this.$addFoldLine(new u(this.$foldData,i))),this.$useWrapMode?this.$updateWrapData(r.start.row,r.start.row):this.$updateRowLengthCache(r.start.row,r.start.row),this.$modified=!0,this._emit("changeFold",{data:i,action:"add"}),i},this.addFolds=function(n){n.forEach(function(n){this.addFold(n)},this)},this.removeFold=function(n){var i=n.foldLine,u=i.start.row,f=i.end.row,e=this.$foldData,t=i.folds,r;t.length==1?e.splice(e.indexOf(i),1):i.range.isEnd(n.end.row,n.end.column)?(t.pop(),i.end.row=t[t.length-1].end.row,i.end.column=t[t.length-1].end.column):i.range.isStart(n.start.row,n.start.column)?(t.shift(),i.start.row=t[0].start.row,i.start.column=t[0].start.column):n.sameRow?t.splice(t.indexOf(n),1):(r=i.split(n.start.row,n.start.column),t=r.folds,t.shift(),r.start.row=t[0].start.row,r.start.column=t[0].start.column),this.$updating||(this.$useWrapMode?this.$updateWrapData(u,f):this.$updateRowLengthCache(u,f)),this.$modified=!0,this._emit("changeFold",{data:n,action:"remove"})},this.removeFolds=function(n){for(var i=[],t=0;t<n.length;t++)i.push(n[t]);i.forEach(function(n){this.removeFold(n)},this),this.$modified=!0},this.expandFold=function(n){this.removeFold(n),n.subFolds.forEach(function(t){n.restoreRange(t),this.addFold(t)},this),n.collapseChildren>0&&this.foldAll(n.start.row+1,n.end.row,n.collapseChildren-1),n.subFolds=[]},this.expandFolds=function(n){n.forEach(function(n){this.expandFold(n)},this)},this.unfold=function(n,t){var i,u;if(n==null?(i=new r(0,0,this.getLength(),0),t=!0):i=typeof n=="number"?new r(n,0,n,this.getLine(n).length):"row"in n?r.fromPoints(n,n):n,u=this.getFoldsInRange(i),t)this.removeFolds(u);else while(u.length)this.expandFolds(u),u=this.getFoldsInRange(i)},this.isRowFolded=function(n,t){return!!this.getFoldLine(n,t)},this.getRowFoldEnd=function(n,t){var i=this.getFoldLine(n,t);return i?i.end.row:n},this.getRowFoldStart=function(n,t){var i=this.getFoldLine(n,t);return i?i.start.row:n},this.getFoldDisplayLine=function(n,t,i,r,u){r==null&&(r=n.start.row,u=0),t==null&&(t=n.end.row,i=this.getLine(t).length);var e=this.doc,f="";return n.walk(function(n,t,i,o){if(!(t<r)){if(t==r){if(i<u)return;o=Math.max(u,o)}f+=n!=null?n:e.getLine(t).substring(o,i)}},t,i),f},this.getDisplayLine=function(n,t,i,r){var f=this.getFoldLine(n),u;return f?this.getFoldDisplayLine(f,n,t,i,r):(u=this.doc.getLine(n),u.substring(r||0,t||u.length))},this.$cloneFoldData=function(){var n=[];return n=this.$foldData.map(function(t){var i=t.folds.map(function(n){return n.clone()});return new u(n,i)}),n},this.toggleFold=function(n){var o=this.selection,t=o.getRange(),i,r,u,e,f;if(t.isEmpty()){if(u=t.start,i=this.getFoldAt(u.row,u.column),i){this.expandFold(i);return}(r=this.findMatchingBracket(u))?t.comparePoint(r)==1?t.end=r:(t.start=r,t.start.column++,t.end.column--):(r=this.findMatchingBracket({row:u.row,column:u.column+1}))?(t.comparePoint(r)==1?t.end=r:t.start=r,t.start.column++):t=this.getCommentFoldRange(u.row,u.column)||t}else{if(e=this.getFoldsInRange(t),n&&e.length){this.expandFolds(e);return}e.length==1&&(i=e[0])}if(i||(i=this.getFoldAt(t.start.row,t.start.column)),i&&i.range.toString()==t.toString()){this.expandFold(i);return}if(f="...",!t.isMultiLine()){if(f=this.getTextRange(t),f.length<4)return;f=f.trim().substring(0,2)+".."}this.addFold(f,t)},this.getCommentFoldRange=function(n,t,i){var f=new e(this,n,t),u=f.getCurrentToken(),o,s;if(u&&/^comment|string/.test(u.type)){if(o=new r,s=new RegExp(u.type.replace(/\..*/,"\\.")),i!=1){do u=f.stepBackward();while(u&&s.test(u.type));f.stepForward()}if(o.start.row=f.getCurrentTokenRow(),o.start.column=f.getCurrentTokenColumn()+2,f=new e(this,n,t),i!=-1){do u=f.stepForward();while(u&&s.test(u.type));u=f.stepBackward()}else u=f.getCurrentToken();return o.end.row=f.getCurrentTokenRow(),o.end.column=f.getCurrentTokenColumn()+u.value.length-2,o}},this.foldAll=function(n,t,i){var f,r,u,e;for(i==undefined&&(i=1e5),f=this.foldWidgets,t=t||this.getLength(),r=n||0;r<t;r++)if(f[r]==null&&(f[r]=this.getFoldWidget(r)),f[r]=="start"){if(u=this.getFoldWidgetRange(r),u&&u.end.row<=t)try{e=this.addFold("...",u),e.collapseChildren=i}catch(o){}r=u.end.row}},this.$foldStyles={manual:1,markbegin:1,markbeginend:1},this.$foldStyle="markbegin",this.setFoldStyle=function(n){if(!this.$foldStyles[n])throw new Error("invalid fold style: "+n+"["+Object.keys(this.$foldStyles).join(", ")+"]");if(this.$foldStyle!=n){this.$foldStyle=n,n=="manual"&&this.unfold();var t=this.$foldMode;this.$setFolding(null),this.$setFolding(t)}},this.$setFolding=function(n){if(this.$foldMode!=n){if(this.$foldMode=n,this.removeListener("change",this.$updateFoldWidgets),this._emit("changeAnnotation"),!n||this.$foldStyle=="manual"){this.foldWidgets=null;return}this.foldWidgets=[],this.getFoldWidget=n.getFoldWidget.bind(n,this,this.$foldStyle),this.getFoldWidgetRange=n.getFoldWidgetRange.bind(n,this,this.$foldStyle),this.$updateFoldWidgets=this.updateFoldWidgets.bind(this),this.on("change",this.$updateFoldWidgets)}},this.getParentFoldRangeData=function(n,t){var u=this.foldWidgets,i,e,f,r;if(!u||t&&u[n])return{};for(i=n-1;i>=0;){if(f=u[i],f==null&&(f=u[i]=this.getFoldWidget(i)),f=="start"&&(r=this.getFoldWidgetRange(i),e||(e=r),r&&r.end.row>=n))break;i--}return{range:i!==-1&&r,firstRange:e}},this.onFoldWidgetClick=function(n,t){var c=this.getFoldWidget(n),l=this.getLine(n),i,f,h,e;t=t.domEvent;var o=t.shiftKey,u=t.ctrlKey||t.metaKey,a=t.altKey,s=c==="end"?-1:1,r=this.getFoldAt(n,s===-1?0:l.length,s);if(r){o||u?this.removeFold(r):this.expandFold(r);return}if(i=this.getFoldWidgetRange(n),i&&!i.isMultiLine()&&(r=this.getFoldAt(i.start.row,i.start.column,1),r&&i.isEqual(r.range))){this.removeFold(r);return}a?(f=this.getParentFoldRangeData(n),f.range&&(h=f.range.start.row+1,e=f.range.end.row),this.foldAll(h,e,u?1e4:0)):o?(e=i?i.end.row:this.getLength(),this.foldAll(n+1,i.end.row,u?1e4:0)):i&&(u&&(i.collapseChildren=1e4),this.addFold("...",i)),i||((t.target||t.srcElement).className+=" ace_invalid")},this.updateFoldWidgets=function(n){var i=n.data,f=i.range,t=f.start.row,r=f.end.row-t,u;r===0?this.foldWidgets[t]=null:i.action=="removeText"||i.action=="removeLines"?this.foldWidgets.splice(t,r+1,null):(u=Array(r+1),u.unshift(t,1),this.foldWidgets.splice.apply(this.foldWidgets,u))}}var r=n("../range").Range,u=n("./fold_line").FoldLine,f=n("./fold").Fold,e=n("../token_iterator").TokenIterator;t.Folding=o}),ace.define("ace/edit_session/fold_line",["require","exports","module","ace/range"],function(n,t){function r(n,t){this.foldData=n,Array.isArray(t)?this.folds=t:t=this.folds=[t];var i=t[t.length-1];this.range=new u(t[0].start.row,t[0].start.column,i.end.row,i.end.column),this.start=this.range.start,this.end=this.range.end,this.folds.forEach(function(n){n.setFoldLine(this)},this)}var u=n("../range").Range;(function(){this.shiftRow=function(n){this.start.row+=n,this.end.row+=n,this.folds.forEach(function(t){t.start.row+=n,t.end.row+=n})},this.addFold=function(n){if(n.sameRow){if(n.start.row<this.startRow||n.endRow>this.endRow)throw"Can't add a fold to this FoldLine as it has no connection";this.folds.push(n),this.folds.sort(function(n,t){return-n.range.compareEnd(t.start.row,t.start.column)}),this.range.compareEnd(n.start.row,n.start.column)>0?(this.end.row=n.end.row,this.end.column=n.end.column):this.range.compareStart(n.end.row,n.end.column)<0&&(this.start.row=n.start.row,this.start.column=n.start.column)}else if(n.start.row==this.end.row)this.folds.push(n),this.end.row=n.end.row,this.end.column=n.end.column;else{if(n.end.row!=this.start.row)throw"Trying to add fold to FoldRow that doesn't have a matching row";this.folds.unshift(n),this.start.row=n.start.row,this.start.column=n.start.column}n.foldLine=this},this.containsRow=function(n){return n>=this.start.row&&n<=this.end.row},this.walk=function(n,t,i){var u=0,h=this.folds,r,s,f,e=!0,o;for(t==null&&(t=this.end.row,i=this.end.column),o=0;o<h.length;o++){if(r=h[o],s=r.range.compareStart(t,i),s==-1){n(null,t,i,u,e);return}if(f=n(null,r.start.row,r.start.column,u,e),f=!f&&n(r.placeholder,r.start.row,r.start.column,u),f||s==0)return;e=!r.sameRow,u=r.end.column}n(null,t,i,u,e)},this.getNextFoldTo=function(n,t){for(var i,u,r=0;r<this.folds.length;r++){if(i=this.folds[r],u=i.range.compareEnd(n,t),u==-1)return{fold:i,kind:"after"};if(u==0)return{fold:i,kind:"inside"}}return null},this.addRemoveChars=function(n,t,i){var e=this.getNextFoldTo(n,t),r,f,u;if(e)if(r=e.fold,e.kind=="inside"&&r.start.column!=t&&r.start.row!=n)window.console&&window.console.log(n,t,r);else if(r.start.row==n){for(f=this.folds,u=f.indexOf(r),u==0&&(this.start.column+=i),u;u<f.length;u++){if(r=f[u],r.start.column+=i,!r.sameRow)return;r.end.column+=i}this.end.column+=i}},this.split=function(n,t){var s=this.getNextFoldTo(n,t).fold,i=this.folds,f=this.foldData,u,e,o;return s?(u=i.indexOf(s),e=i[u-1],this.end.row=e.end.row,this.end.column=e.end.column,i=i.splice(u,i.length-u),o=new r(f,i),f.splice(f.indexOf(this)+1,0,o),o):null},this.merge=function(n){for(var r=n.folds,i,t=0;t<r.length;t++)this.addFold(r[t]);i=this.foldData,i.splice(i.indexOf(n),1)},this.toString=function(){var n=[this.range.toString()+": ["];return this.folds.forEach(function(t){n.push("  "+t.toString())}),n.push("]"),n.join("\n")},this.idxToPosition=function(n){for(var r=0,t,i=0;i<this.folds.length;i++){if(t=this.folds[i],n-=t.start.column-r,n<0)return{row:t.start.row,column:t.start.column+n};if(n-=t.placeholder.length,n<0)return t.start;r=t.end.column}return{row:this.end.row,column:this.end.column+n}}}).call(r.prototype),t.FoldLine=r}),ace.define("ace/edit_session/fold",["require","exports","module","ace/range","ace/range_list","ace/lib/oop"],function(n,t){function u(n,t){n.row-=t.row,n.row==0&&(n.column-=t.column)}function e(n,t){u(n.start,t),u(n.end,t)}function f(n,t){n.row==0&&(n.column+=t.column),n.row+=t.row}function o(n,t){f(n.start,t),f(n.end,t)}var c=n("../range").Range,s=n("../range_list").RangeList,h=n("../lib/oop"),r=t.Fold=function(n,t){this.foldLine=null,this.placeholder=t,this.range=n,this.start=n.start,this.end=n.end,this.sameRow=n.start.row==n.end.row,this.subFolds=this.ranges=[]};h.inherits(r,s),function(){this.toString=function(){return'"'+this.placeholder+'" '+this.range.toString()},this.setFoldLine=function(n){this.foldLine=n,this.subFolds.forEach(function(t){t.setFoldLine(n)})},this.clone=function(){var t=this.range.clone(),n=new r(t,this.placeholder);return this.subFolds.forEach(function(t){n.subFolds.push(t.clone())}),n.collapseChildren=this.collapseChildren,n},this.addSubFold=function(n){var t,o,u,f,r,i,s,h;if(!this.range.isEqual(n)){if(!this.range.containsRange(n))throw"A fold can't intersect already existing fold"+n.range+this.range;for(e(n,this.start),u=n.start.row,f=n.start.column,t=0,i=-1;t<this.subFolds.length;t++)if(i=this.subFolds[t].range.compare(u,f),i!=1)break;if(o=this.subFolds[t],i==0)return o.addSubFold(n);for(u=n.range.end.row,f=n.range.end.column,r=t,i=-1;r<this.subFolds.length;r++)if(i=this.subFolds[r].range.compare(u,f),i!=1)break;if(s=this.subFolds[r],i==0)throw"A fold can't intersect already existing fold"+n.range+this.range;return h=this.subFolds.splice(t,r-t,n),n.setFoldLine(this.foldLine),n}},this.restoreRange=function(n){return o(n,this.start)}}.call(r.prototype)}),ace.define("ace/range_list",["require","exports","module","ace/range"],function(n,t){var f=n("./range").Range,r=f.comparePoints,u=function(){this.ranges=[]};(function(){this.comparePoints=r,this.pointIndex=function(n,t,i){for(var s=this.ranges,e,o,f,u=i||0;u<s.length;u++)if(e=s[u],o=r(n,e.end),!(o>0))return f=r(n,e.start),o===0?t&&f!==0?-u-2:u:f>0||f===0&&!t?u:-u-1;return-u-1},this.add=function(n){var r=!n.isEmpty(),t=this.pointIndex(n.start,r),i;return t<0&&(t=-t-1),i=this.pointIndex(n.end,r,t),i<0?i=-i-1:i++,this.ranges.splice(t,i-t,n)},this.addList=function(n){for(var t=[],i=n.length;i--;)t.push.call(t,this.add(n[i]));return t},this.substractPoint=function(n){var t=this.pointIndex(n);if(t>=0)return this.ranges.splice(t,1)},this.merge=function(){var e=[],t=this.ranges,n,i,u,f;for(t=t.sort(function(n,t){return r(n.start,t.start)}),n=t[0],u=1;u<t.length;u++)(i=n,n=t[u],f=r(i.end,n.start),f<0)||(f!=0||i.isEmpty()||n.isEmpty())&&(r(i.end,n.end)<0&&(i.end.row=n.end.row,i.end.column=n.end.column),t.splice(u,1),e.push(n),n=i,u--);return this.ranges=t,e},this.contains=function(n,t){return this.pointIndex({row:n,column:t})>=0},this.containsPoint=function(n){return this.pointIndex(n)>=0},this.rangeAtPoint=function(n){var t=this.pointIndex(n);if(t>=0)return this.ranges[t]},this.clipRows=function(n,t){var u=this.ranges,i,r,e,f;if(u[0].start.row>t||u[u.length-1].start.row<n)return[];for(i=this.pointIndex({row:n,column:0}),i<0&&(i=-i-1),r=this.pointIndex({row:t,column:0},i),r<0&&(r=-r-1),e=[],f=i;f<r;f++)e.push(u[f]);return e},this.removeAll=function(){return this.ranges.splice(0,this.ranges.length)},this.attach=function(n){this.session&&this.detach(),this.session=n,this.onChange=this.$onChange.bind(this),this.session.on("change",this.onChange)},this.detach=function(){this.session&&(this.session.removeListener("change",this.onChange),this.session=null)},this.$onChange=function(n){var o=n.data.range,s,r,i,e,t;n.data.action[0]=="i"?(r=o.start,s=o.end):(s=o.start,r=o.end);var u=r.row,l=s.row,f=l-u,h=-r.column+s.column,c=this.ranges;for(i=0,e=c.length;i<e;i++)if(t=c[i],!(t.end.row<u)){if(t.start.row>u)break;t.start.row==u&&t.start.column>=r.column&&(t.start.column+=h,t.start.row+=f),t.end.row==u&&t.end.column>=r.column&&(t.end.column==r.column&&h>0&&i<e-1&&t.end.column>t.start.column&&t.end.column==c[i+1].start.column&&(t.end.column-=h),t.end.column+=h,t.end.row+=f)}if(f!=0&&i<e)for(;i<e;i++)t=c[i],t.start.row+=f,t.end.row+=f}}).call(u.prototype),t.RangeList=u}),ace.define("ace/edit_session/bracket_match",["require","exports","module","ace/token_iterator","ace/range"],function(n,t){function f(){this.findMatchingBracket=function(n,t){var r,i;return n.column==0?null:(r=t||this.getLine(n.row).charAt(n.column-1),r=="")?null:(i=r.match(/([\(\[\{])|([\)\]\}])/),i?i[1]?this.$findClosingBracket(i[1],n):this.$findOpeningBracket(i[2],n):null)},this.getBracketRange=function(n){var o=this.getLine(n.row),e=!0,t,f=o.charAt(n.column-1),i=f&&f.match(/([\(\[\{])|([\)\]\}])/),r;if(i||(f=o.charAt(n.column),n={row:n.row,column:n.column+1},i=f&&f.match(/([\(\[\{])|([\)\]\}])/),e=!1),!i)return null;if(i[1]){if(r=this.$findClosingBracket(i[1],n),!r)return null;t=u.fromPoints(n,r),e||(t.end.column++,t.start.column--),t.cursor=t.end}else{if(r=this.$findOpeningBracket(i[2],n),!r)return null;t=u.fromPoints(r,n),e||(t.start.column++,t.end.column--),t.cursor=t.start}return t},this.$brackets={")":"(","(":")","]":"[","[":"]","{":"}","}":"{"},this.$findOpeningBracket=function(n,t,i){var c=this.$brackets[n],s=1,f=new r(this,t.row,t.column),u=f.getCurrentToken(),e,o,h;if(u||(u=f.stepForward()),u){for(i||(i=new RegExp("(\\.?"+u.type.replace(".","\\.").replace("rparen",".paren")+")+")),e=t.column-f.getCurrentTokenColumn()-2,o=u.value;;){while(e>=0){if(h=o.charAt(e),h==c){if(s-=1,s==0)return{row:f.getCurrentTokenRow(),column:e+f.getCurrentTokenColumn()}}else h==n&&(s+=1);e-=1}do u=f.stepBackward();while(u&&!i.test(u.type));if(u==null)break;o=u.value,e=o.length-1}return null}},this.$findClosingBracket=function(n,t,i){var l=this.$brackets[n],o=1,f=new r(this,t.row,t.column),u=f.getCurrentToken(),e,s,c,h;if(u||(u=f.stepForward()),u){for(i||(i=new RegExp("(\\.?"+u.type.replace(".","\\.").replace("lparen",".paren")+")+")),e=t.column-f.getCurrentTokenColumn();;){for(s=u.value,c=s.length;e<c;){if(h=s.charAt(e),h==l){if(o-=1,o==0)return{row:f.getCurrentTokenRow(),column:e+f.getCurrentTokenColumn()}}else h==n&&(o+=1);e+=1}do u=f.stepForward();while(u&&!i.test(u.type));if(u==null)break;e=0}return null}}}var r=n("../token_iterator").TokenIterator,u=n("../range").Range;t.BracketMatch=f}),ace.define("ace/search",["require","exports","module","ace/lib/lang","ace/lib/oop","ace/range"],function(n,t){var r=n("./lib/lang"),e=n("./lib/oop"),u=n("./range").Range,f=function(){this.$options={}};(function(){this.set=function(n){return e.mixin(this.$options,n),this},this.getOptions=function(){return r.copyObject(this.$options)},this.setOptions=function(n){this.$options=n},this.find=function(n){var i=this.$matchIterator(n,this.$options),t;return i?(t=null,i.forEach(function(n,i,r){if(n.start)t=n;else{var f=n.offset+(r||0);t=new u(i,f,i,f+n.length)}return!0}),t):!1},this.findAll=function(n){var l=this.$options,c,y,o,t,v,i,a;if(!l.needle)return[];this.$assembleRegExp(l);var e=l.range,s=e?n.getLines(e.start.row,e.end.row):n.doc.getAllLines(),f=[],h=l.re;if(l.$isMultiLine)for(c=h.length,y=s.length-c,o=h.offset||0;o<=y;o++){for(i=0;i<c;i++)if(s[o+i].search(h[i])==-1)break;var p=s[o],w=s[o+c-1],b=p.match(h[0])[0].length,k=w.match(h[c-1])[0].length;f.push(new u(o,p.length-b,o+c-1,k))}else for(t=0;t<s.length;t++)for(v=r.getMatchOffsets(s[t],h),i=0;i<v.length;i++)a=v[i],f.push(new u(t,a.offset,t,a.offset+a.length));if(e){for(var d=e.start.column,g=e.start.column,t=0,i=f.length-1;t<i&&f[t].start.column<d&&f[t].start.row==e.start.row;)t++;while(t<i&&f[i].end.column>g&&f[i].end.row==e.end.row)i--;for(f=f.slice(t,i+1),t=0,i=f.length;t<i;t++)f[t].start.row+=e.start.row,f[t].end.row+=e.start.row}return f},this.replace=function(n,t){var u=this.$options,f=this.$assembleRegExp(u),e,i,r;if(u.$isMultiLine)return t;if(f){if(e=f.exec(n),!e||e[0].length!=n.length)return null;if(t=n.replace(f,t),u.preserveCase){for(t=t.split(""),i=Math.min(n.length,n.length);i--;)r=n[i],t[i]=r&&r.toLowerCase()!=r?t[i].toUpperCase():t[i].toLowerCase();t=t.join("")}return t}},this.$matchIterator=function(n,t){var i=this.$assembleRegExp(t),s,f,h,e,o;return i?(s=this,h=t.backwards,t.$isMultiLine?(e=i.length,o=function(t,r,o){var c=t.search(i[0]),s,l,h;if(c!=-1){for(s=1;s<e;s++)if(t=n.getLine(r+s),t.search(i[s])==-1)return;return l=t.match(i[e-1])[0].length,h=new u(r,c,r+e-1,l),i.offset==1?(h.start.row--,h.start.column=Number.MAX_VALUE):o&&(h.start.column+=o),f(h)?!0:void 0}}):o=h?function(n,t,u){for(var o=r.getMatchOffsets(n,i),e=o.length-1;e>=0;e--)if(f(o[e],t,u))return!0}:function(n,t,u){for(var o=r.getMatchOffsets(n,i),e=0;e<o.length;e++)if(f(o[e],t,u))return!0},{forEach:function(i){f=i,s.$lineIterator(n,t).forEach(o)}}):!1},this.$assembleRegExp=function(n,t){var i,u,f;if(n.needle instanceof RegExp)return n.re=n.needle;if(i=n.needle,!n.needle)return n.re=!1;if(n.regExp||(i=r.escapeRegExp(i)),n.wholeWord&&(i="\\b"+i+"\\b"),u=n.caseSensitive?"g":"gi",n.$isMultiLine=!t&&/[\n\r]/.test(i),n.$isMultiLine)return n.re=this.$assembleMultilineRegExp(i,u);try{f=new RegExp(i,u)}catch(e){f=!1}return n.re=f},this.$assembleMultilineRegExp=function(n,t){for(var u=n.replace(/\r\n|\r|\n/g,"$\n^").split("\n"),i=[],r=0;r<u.length;r++)try{i.push(new RegExp(u[r],t))}catch(f){return!1}return u[0]==""?(i.shift(),i.offset=1):i.offset=0,i},this.$lineIterator=function(n,t){var e=t.backwards==1,o=t.skipCurrent!=0,r=t.range,i=t.start;i||(i=r?r[e?"end":"start"]:n.selection.getRange()),i.start&&(i=i[o!=e?"end":"start"]);var u=r?r.start.row:0,f=r?r.end.row:n.getLength()-1,s=e?function(r){var e=i.row,o=n.getLine(e).substring(0,i.column);if(!r(o,e)){for(e--;e>=u;e--)if(r(n.getLine(e),e))return;if(t.wrap!=0)for(e=f,u=i.row;e>=u;e--)if(r(n.getLine(e),e))return}}:function(r){var e=i.row,o=n.getLine(e).substr(i.column);if(!r(o,e,i.column)){for(e+=1;e<=f;e++)if(r(n.getLine(e),e))return;if(t.wrap!=0)for(e=u,f=i.row;e<=f;e++)if(r(n.getLine(e),e))return}};return{forEach:s}}}).call(f.prototype),t.Search=f}),ace.define("ace/commands/command_manager",["require","exports","module","ace/lib/oop","ace/keyboard/hash_handler","ace/lib/event_emitter"],function(n,t){var u=n("../lib/oop"),f=n("../keyboard/hash_handler").HashHandler,e=n("../lib/event_emitter").EventEmitter,r=function(n,t){this.platform=n,this.commands=this.byName={},this.commmandKeyBinding={},this.addCommands(t),this.setDefaultHandler("exec",function(n){return n.command.exec(n.editor,n.args||{})})};u.inherits(r,f),function(){u.implement(this,e),this.exec=function(n,t,i){if((typeof n=="string"&&(n=this.commands[n]),!n)||t&&t.$readOnly&&!n.readOnly)return!1;var r={editor:t,command:n,args:i},u=this._emit("exec",r);return this._signal("afterExec",r),u===!1?!1:!0},this.toggleRecording=function(n){if(!this.$inReplay)return n&&n._emit("changeStatus"),this.recording?(this.macro.pop(),this.removeEventListener("exec",this.$addCommandToMacro),this.macro.length||(this.macro=this.oldMacro),this.recording=!1):(this.$addCommandToMacro||(this.$addCommandToMacro=function(n){this.macro.push([n.command,n.args])}.bind(this)),this.oldMacro=this.macro,this.macro=[],this.on("exec",this.$addCommandToMacro),this.recording=!0)},this.replay=function(n){if(!this.$inReplay&&this.macro){if(this.recording)return this.toggleRecording(n);try{this.$inReplay=!0,this.macro.forEach(function(t){typeof t=="string"?this.exec(t,n):this.exec(t[0],n,t[1])},this)}finally{this.$inReplay=!1}}},this.trimMacro=function(n){return n.map(function(n){return typeof n[0]!="string"&&(n[0]=n[0].name),n[1]||(n=n[0]),n})}}.call(r.prototype),t.CommandManager=r}),ace.define("ace/keyboard/hash_handler",["require","exports","module","ace/lib/keys","ace/lib/useragent"],function(n,t){function u(n,t){this.platform=t||(f.isMac?"mac":"win"),this.commands={},this.commmandKeyBinding={},this.addCommands(n)}var r=n("../lib/keys"),f=n("../lib/useragent");(function(){this.addCommand=function(n){this.commands[n.name]&&this.removeCommand(n),this.commands[n.name]=n,n.bindKey&&this._buildKeyHash(n)},this.removeCommand=function(n){var u=typeof n=="string"?n:n.name,t,i,r;n=this.commands[u],delete this.commands[u],t=this.commmandKeyBinding;for(i in t)for(r in t[i])t[i][r]==n&&delete t[i][r]},this.bindKey=function(n,t){if(n){if(typeof t=="function"){this.addCommand({exec:t,bindKey:n,name:t.name||n});return}var i=this.commmandKeyBinding;n.split("|").forEach(function(n){var r=this.parseKeys(n,t),u=r.hashId;(i[u]||(i[u]={}))[r.key]=t},this)}},this.addCommands=function(n){n&&Object.keys(n).forEach(function(t){var i=n[t];if(typeof i=="string")return this.bindKey(i,t);typeof i=="function"&&(i={exec:i}),i.name||(i.name=t),this.addCommand(i)},this)},this.removeCommands=function(n){Object.keys(n).forEach(function(t){this.removeCommand(n[t])},this)},this.bindKeys=function(n){Object.keys(n).forEach(function(t){this.bindKey(t,n[t])},this)},this._buildKeyHash=function(n){var t=n.bindKey,i;t&&(i=typeof t=="string"?t:t[this.platform],this.bindKey(i,n))},this.parseKeys=function(n){var f,u,e;n.indexOf(" ")!=-1&&(n=n.split(/\s+/).pop());var t=n.toLowerCase().split(/[\-\+]([\-\+])?/).filter(function(n){return n}),i=t.pop(),o=r[i];if(r.FUNCTION_KEYS[o])i=r.FUNCTION_KEYS[o].toLowerCase();else{if(!t.length)return{key:i,hashId:-1};if(t.length==1&&t[0]=="shift")return{key:i.toUpperCase(),hashId:-1}}for(f=0,u=t.length;u--;){if(e=r.KEY_MODS[t[u]],e==null)return typeof console!="undefined"&&console.error("invalid modifier "+t[u]+" in "+n),!1;f|=e}return{key:i,hashId:f}},this.findKeyCommand=function(n,t){var i=this.commmandKeyBinding;return i[n]&&i[n][t]},this.handleKeyboard=function(n,t,i){return{command:this.findKeyCommand(t,i)}}}).call(u.prototype),t.HashHandler=u}),ace.define("ace/commands/default_commands",["require","exports","module","ace/lib/lang","ace/config"],function(n,t){function r(n,t){return{win:n,mac:t}}var f=n("../lib/lang"),u=n("../config");t.commands=[{name:"showSettingsMenu",bindKey:r("Ctrl-,","Command-,"),exec:function(n){u.loadModule("ace/ext/settings_menu",function(t){t.init(n),n.showSettingsMenu()})},readOnly:!0},{name:"selectall",bindKey:r("Ctrl-A","Command-A"),exec:function(n){n.selectAll()},readOnly:!0},{name:"centerselection",bindKey:r(null,"Ctrl-L"),exec:function(n){n.centerSelection()},readOnly:!0},{name:"gotoline",bindKey:r("Ctrl-L","Command-L"),exec:function(n){var t=parseInt(prompt("Enter line number:"),10);isNaN(t)||n.gotoLine(t)},readOnly:!0},{name:"fold",bindKey:r("Alt-L|Ctrl-F1","Command-Alt-L|Command-F1"),exec:function(n){n.session.toggleFold(!1)},readOnly:!0},{name:"unfold",bindKey:r("Alt-Shift-L|Ctrl-Shift-F1","Command-Alt-Shift-L|Command-Shift-F1"),exec:function(n){n.session.toggleFold(!0)},readOnly:!0},{name:"foldall",bindKey:r("Alt-0","Command-Option-0"),exec:function(n){n.session.foldAll()},readOnly:!0},{name:"unfoldall",bindKey:r("Alt-Shift-0","Command-Option-Shift-0"),exec:function(n){n.session.unfold()},readOnly:!0},{name:"findnext",bindKey:r("Ctrl-K","Command-G"),exec:function(n){n.findNext()},readOnly:!0},{name:"findprevious",bindKey:r("Ctrl-Shift-K","Command-Shift-G"),exec:function(n){n.findPrevious()},readOnly:!0},{name:"find",bindKey:r("Ctrl-F","Command-F"),exec:function(n){u.loadModule("ace/ext/searchbox",function(t){t.Search(n)})},readOnly:!0},{name:"overwrite",bindKey:"Insert",exec:function(n){n.toggleOverwrite()},readOnly:!0},{name:"selecttostart",bindKey:r("Ctrl-Shift-Home","Command-Shift-Up"),exec:function(n){n.getSelection().selectFileStart()},multiSelectAction:"forEach",readOnly:!0},{name:"gotostart",bindKey:r("Ctrl-Home","Command-Home|Command-Up"),exec:function(n){n.navigateFileStart()},multiSelectAction:"forEach",readOnly:!0},{name:"selectup",bindKey:r("Shift-Up","Shift-Up"),exec:function(n){n.getSelection().selectUp()},multiSelectAction:"forEach",readOnly:!0},{name:"golineup",bindKey:r("Up","Up|Ctrl-P"),exec:function(n,t){n.navigateUp(t.times)},multiSelectAction:"forEach",readOnly:!0},{name:"selecttoend",bindKey:r("Ctrl-Shift-End","Command-Shift-Down"),exec:function(n){n.getSelection().selectFileEnd()},multiSelectAction:"forEach",readOnly:!0},{name:"gotoend",bindKey:r("Ctrl-End","Command-End|Command-Down"),exec:function(n){n.navigateFileEnd()},multiSelectAction:"forEach",readOnly:!0},{name:"selectdown",bindKey:r("Shift-Down","Shift-Down"),exec:function(n){n.getSelection().selectDown()},multiSelectAction:"forEach",readOnly:!0},{name:"golinedown",bindKey:r("Down","Down|Ctrl-N"),exec:function(n,t){n.navigateDown(t.times)},multiSelectAction:"forEach",readOnly:!0},{name:"selectwordleft",bindKey:r("Ctrl-Shift-Left","Option-Shift-Left"),exec:function(n){n.getSelection().selectWordLeft()},multiSelectAction:"forEach",readOnly:!0},{name:"gotowordleft",bindKey:r("Ctrl-Left","Option-Left"),exec:function(n){n.navigateWordLeft()},multiSelectAction:"forEach",readOnly:!0},{name:"selecttolinestart",bindKey:r("Alt-Shift-Left","Command-Shift-Left"),exec:function(n){n.getSelection().selectLineStart()},multiSelectAction:"forEach",readOnly:!0},{name:"gotolinestart",bindKey:r("Alt-Left|Home","Command-Left|Home|Ctrl-A"),exec:function(n){n.navigateLineStart()},multiSelectAction:"forEach",readOnly:!0},{name:"selectleft",bindKey:r("Shift-Left","Shift-Left"),exec:function(n){n.getSelection().selectLeft()},multiSelectAction:"forEach",readOnly:!0},{name:"gotoleft",bindKey:r("Left","Left|Ctrl-B"),exec:function(n,t){n.navigateLeft(t.times)},multiSelectAction:"forEach",readOnly:!0},{name:"selectwordright",bindKey:r("Ctrl-Shift-Right","Option-Shift-Right"),exec:function(n){n.getSelection().selectWordRight()},multiSelectAction:"forEach",readOnly:!0},{name:"gotowordright",bindKey:r("Ctrl-Right","Option-Right"),exec:function(n){n.navigateWordRight()},multiSelectAction:"forEach",readOnly:!0},{name:"selecttolineend",bindKey:r("Alt-Shift-Right","Command-Shift-Right"),exec:function(n){n.getSelection().selectLineEnd()},multiSelectAction:"forEach",readOnly:!0},{name:"gotolineend",bindKey:r("Alt-Right|End","Command-Right|End|Ctrl-E"),exec:function(n){n.navigateLineEnd()},multiSelectAction:"forEach",readOnly:!0},{name:"selectright",bindKey:r("Shift-Right","Shift-Right"),exec:function(n){n.getSelection().selectRight()},multiSelectAction:"forEach",readOnly:!0},{name:"gotoright",bindKey:r("Right","Right|Ctrl-F"),exec:function(n,t){n.navigateRight(t.times)},multiSelectAction:"forEach",readOnly:!0},{name:"selectpagedown",bindKey:"Shift-PageDown",exec:function(n){n.selectPageDown()},readOnly:!0},{name:"pagedown",bindKey:r(null,"Option-PageDown"),exec:function(n){n.scrollPageDown()},readOnly:!0},{name:"gotopagedown",bindKey:r("PageDown","PageDown|Ctrl-V"),exec:function(n){n.gotoPageDown()},readOnly:!0},{name:"selectpageup",bindKey:"Shift-PageUp",exec:function(n){n.selectPageUp()},readOnly:!0},{name:"pageup",bindKey:r(null,"Option-PageUp"),exec:function(n){n.scrollPageUp()},readOnly:!0},{name:"gotopageup",bindKey:"PageUp",exec:function(n){n.gotoPageUp()},readOnly:!0},{name:"scrollup",bindKey:r("Ctrl-Up",null),exec:function(n){n.renderer.scrollBy(0,-2*n.renderer.layerConfig.lineHeight)},readOnly:!0},{name:"scrolldown",bindKey:r("Ctrl-Down",null),exec:function(n){n.renderer.scrollBy(0,2*n.renderer.layerConfig.lineHeight)},readOnly:!0},{name:"selectlinestart",bindKey:"Shift-Home",exec:function(n){n.getSelection().selectLineStart()},multiSelectAction:"forEach",readOnly:!0},{name:"selectlineend",bindKey:"Shift-End",exec:function(n){n.getSelection().selectLineEnd()},multiSelectAction:"forEach",readOnly:!0},{name:"togglerecording",bindKey:r("Ctrl-Alt-E","Command-Option-E"),exec:function(n){n.commands.toggleRecording(n)},readOnly:!0},{name:"replaymacro",bindKey:r("Ctrl-Shift-E","Command-Shift-E"),exec:function(n){n.commands.replay(n)},readOnly:!0},{name:"jumptomatching",bindKey:r("Ctrl-P","Ctrl-Shift-P"),exec:function(n){n.jumpToMatching()},multiSelectAction:"forEach",readOnly:!0},{name:"selecttomatching",bindKey:r("Ctrl-Shift-P",null),exec:function(n){n.jumpToMatching(!0)},multiSelectAction:"forEach",readOnly:!0},{name:"cut",exec:function(n){var t=n.getSelectionRange();n._emit("cut",t),n.selection.isEmpty()||(n.session.remove(t),n.clearSelection())},multiSelectAction:"forEach"},{name:"removeline",bindKey:r("Ctrl-D","Command-D"),exec:function(n){n.removeLines()},multiSelectAction:"forEachLine"},{name:"duplicateSelection",bindKey:r("Ctrl-Shift-D","Command-Shift-D"),exec:function(n){n.duplicateSelection()},multiSelectAction:"forEach"},{name:"sortlines",bindKey:r("Ctrl-Alt-S","Command-Alt-S"),exec:function(n){n.sortLines()},multiSelectAction:"forEachLine"},{name:"togglecomment",bindKey:r("Ctrl-/","Command-/"),exec:function(n){n.toggleCommentLines()},multiSelectAction:"forEachLine"},{name:"toggleBlockComment",bindKey:r("Ctrl-Shift-/","Command-Shift-/"),exec:function(n){n.toggleBlockComment()},multiSelectAction:"forEach"},{name:"modifyNumberUp",bindKey:r("Ctrl-Shift-Up","Alt-Shift-Up"),exec:function(n){n.modifyNumber(1)},multiSelectAction:"forEach"},{name:"modifyNumberDown",bindKey:r("Ctrl-Shift-Down","Alt-Shift-Down"),exec:function(n){n.modifyNumber(-1)},multiSelectAction:"forEach"},{name:"replace",bindKey:r("Ctrl-H","Command-Option-F"),exec:function(n){u.loadModule("ace/ext/searchbox",function(t){t.Search(n,!0)})}},{name:"undo",bindKey:r("Ctrl-Z","Command-Z"),exec:function(n){n.undo()}},{name:"redo",bindKey:r("Ctrl-Shift-Z|Ctrl-Y","Command-Shift-Z|Command-Y"),exec:function(n){n.redo()}},{name:"copylinesup",bindKey:r("Alt-Shift-Up","Command-Option-Up"),exec:function(n){n.copyLinesUp()}},{name:"movelinesup",bindKey:r("Alt-Up","Option-Up"),exec:function(n){n.moveLinesUp()}},{name:"copylinesdown",bindKey:r("Alt-Shift-Down","Command-Option-Down"),exec:function(n){n.copyLinesDown()}},{name:"movelinesdown",bindKey:r("Alt-Down","Option-Down"),exec:function(n){n.moveLinesDown()}},{name:"del",bindKey:r("Delete","Delete|Ctrl-D"),exec:function(n){n.remove("right")},multiSelectAction:"forEach"},{name:"backspace",bindKey:r("Command-Backspace|Option-Backspace|Shift-Backspace|Backspace","Ctrl-Backspace|Command-Backspace|Shift-Backspace|Backspace|Ctrl-H"),exec:function(n){n.remove("left")},multiSelectAction:"forEach"},{name:"removetolinestart",bindKey:r("Alt-Backspace","Command-Backspace"),exec:function(n){n.removeToLineStart()},multiSelectAction:"forEach"},{name:"removetolineend",bindKey:r("Alt-Delete","Ctrl-K"),exec:function(n){n.removeToLineEnd()},multiSelectAction:"forEach"},{name:"removewordleft",bindKey:r("Ctrl-Backspace","Alt-Backspace|Ctrl-Alt-Backspace"),exec:function(n){n.removeWordLeft()},multiSelectAction:"forEach"},{name:"removewordright",bindKey:r("Ctrl-Delete","Alt-Delete"),exec:function(n){n.removeWordRight()},multiSelectAction:"forEach"},{name:"outdent",bindKey:r("Shift-Tab","Shift-Tab"),exec:function(n){n.blockOutdent()},multiSelectAction:"forEach"},{name:"indent",bindKey:r("Tab","Tab"),exec:function(n){n.indent()},multiSelectAction:"forEach"},{name:"blockoutdent",bindKey:r("Ctrl-[","Ctrl-["),exec:function(n){n.blockOutdent()},multiSelectAction:"forEachLine"},{name:"blockindent",bindKey:r("Ctrl-]","Ctrl-]"),exec:function(n){n.blockIndent()},multiSelectAction:"forEachLine"},{name:"insertstring",exec:function(n,t){n.insert(t)},multiSelectAction:"forEach"},{name:"inserttext",exec:function(n,t){n.insert(f.stringRepeat(t.text||"",t.times||1))},multiSelectAction:"forEach"},{name:"splitline",bindKey:r(null,"Ctrl-O"),exec:function(n){n.splitLine()},multiSelectAction:"forEach"},{name:"transposeletters",bindKey:r("Ctrl-T","Ctrl-T"),exec:function(n){n.transposeLetters()},multiSelectAction:function(n){n.transposeSelections(1)}},{name:"touppercase",bindKey:r("Ctrl-U","Ctrl-U"),exec:function(n){n.toUpperCase()},multiSelectAction:"forEach"},{name:"tolowercase",bindKey:r("Ctrl-Shift-U","Ctrl-Shift-U"),exec:function(n){n.toLowerCase()},multiSelectAction:"forEach"}]}),ace.define("ace/undomanager",["require","exports","module"],function(n,t){var r=function(){this.reset()};(function(){this.execute=function(n){var t=n.args[0];this.$doc=n.args[1],this.$undoStack.push(t),this.$redoStack=[],this.dirtyCounter<0&&(this.dirtyCounter=NaN),this.dirtyCounter++},this.undo=function(n){var t=this.$undoStack.pop(),i=null;return t&&(i=this.$doc.undoChanges(t,n),this.$redoStack.push(t),this.dirtyCounter--),i},this.redo=function(n){var t=this.$redoStack.pop(),i=null;return t&&(i=this.$doc.redoChanges(t,n),this.$undoStack.push(t),this.dirtyCounter++),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}}).call(r.prototype),t.UndoManager=r}),ace.define("ace/virtual_renderer",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/event","ace/lib/useragent","ace/config","ace/layer/gutter","ace/layer/marker","ace/layer/text","ace/layer/cursor","ace/scrollbar","ace/renderloop","ace/lib/event_emitter"],function(n,t){var o=n("./lib/oop"),r=n("./lib/dom"),s=n("./lib/event"),h=n("./lib/useragent"),u=n("./config"),c=n("./layer/gutter").Gutter,e=n("./layer/marker").Marker,l=n("./layer/text").Text,a=n("./layer/cursor").Cursor,v=n("./scrollbar").ScrollBar,y=n("./renderloop").RenderLoop,p=n("./lib/event_emitter").EventEmitter,w=".ace_editor {position: relative;overflow: hidden;font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', 'Consolas', 'source-code-pro', monospace;font-size: 12px;line-height: normal;color: black;}.ace_scroller {position: absolute;overflow: hidden;top: 0;bottom: 0;background-color: inherit;}.ace_content {position: absolute;-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;cursor: text;}.ace_gutter {position: absolute;overflow : hidden;width: auto;top: 0;bottom: 0;left: 0;cursor: default;z-index: 4;}.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,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QUM2OEZDQTQ4RTU0MTFFMUEzM0VFRTM2RUY1M0RBMjYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QUM2OEZDQTU4RTU0MTFFMUEzM0VFRTM2RUY1M0RBMjYiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpBQzY4RkNBMjhFNTQxMUUxQTMzRUVFMzZFRjUzREEyNiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpBQzY4RkNBMzhFNTQxMUUxQTMzRUVFMzZFRjUzREEyNiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PkgXxbAAAAJbSURBVHjapFNNaBNBFH4zs5vdZLP5sQmNpT82QY209heh1ioWisaDRcSKF0WKJ0GQnrzrxasHsR6EnlrwD0TagxJabaVEpFYxLWlLSS822tr87m66ccfd2GKyVhA6MMybgfe97/vmPUQphd0sZjto9XIn9OOsvlu2nkqRzVU+6vvlzPf8W6bk8dxQ0NPbxAALgCgg2JkaQuhzQau/El0zbmUA7U0Es8v2CiYmKQJHGO1QICCLoqilMhkmurDAyapKgqItezi/USRdJqEYY4D5jCy03ht2yMkkvL91jTTX10qzyyu2hruPRN7jgbH+EOsXcMLgYiThEgAMhABW85oqy1DXdRIdvP1AHJ2acQXvDIrVHcdQNrEKNYSVMSZGMjEzIIAwDXIo+6G/FxcGnzkC3T2oMhLjre49sBB+RRcHLqdafK6sYdE/GGBwU1VpFNj0aN8pJbe+BkZyevUrvLl6Xmm0W9IuTc0DxrDNAJd5oEvI/KRsNC3bQyNjPO9yQ1YHcfj2QvfQc/5TUhJTBc2iM0U7AWDQtc1nJHvD/cfO2s7jaGkiTEfa/Ep8coLu7zmNmh8+dc5lZDuUeFAGUNA/OY6JVaypQ0vjr7XYjUvJM37vt+j1vuTK5DgVfVUoTjVe+y3/LxMxY2GgU+CSLy4cpfsYorRXuXIOi0Vt40h67uZFTdIo6nLaZcwUJWAzwNS0tBnqqKzQDnjdG/iPyZxo46HaKUpbvYkj8qYRTZsBhge+JHhZyh0x9b95JqjVJkT084kZIPwu/mPWqPgfQ5jXh2+92Ay7HedfAgwA6KDWafb4w3cAAAAASUVORK5CYII=\");background-repeat: no-repeat;background-position: 2px center;}.ace_gutter-cell.ace_warning {background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QUM2OEZDQTg4RTU0MTFFMUEzM0VFRTM2RUY1M0RBMjYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QUM2OEZDQTk4RTU0MTFFMUEzM0VFRTM2RUY1M0RBMjYiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpBQzY4RkNBNjhFNTQxMUUxQTMzRUVFMzZFRjUzREEyNiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpBQzY4RkNBNzhFNTQxMUUxQTMzRUVFMzZFRjUzREEyNiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pgd7PfIAAAGmSURBVHjaYvr//z8DJZiJgUIANoCRkREb9gLiSVAaQx4OQM7AAkwd7XU2/v++/rOttdYGEB9dASEvOMydGKfH8Gv/p4XTkvRBfLxeQAP+1cUhXopyvzhP7P/IoSj7g7Mw09cNKO6J1QQ0L4gICPIv/veg/8W+JdFvQNLHVsW9/nmn9zk7B+cCkDwhL7gt6knSZnx9/LuCEOcvkIAMP+cvto9nfqyZmmUAksfnBUtbM60gX/3/kgyv3/xSFOL5DZT+L8vP+Yfh5cvfPvp/xUHyQHXGyAYwgpwBjZYFT3Y1OEl/OfCH4ffv3wzc4iwMvNIsDJ+f/mH4+vIPAxsb631WW0Yln6ZpQLXdMK/DXGDflh+sIv37EivD5x//Gb7+YWT4y86sl7BCCkSD+Z++/1dkvsFRl+HnD1Rvje4F8whjMXmGj58YGf5zsDMwcnAwfPvKcml62DsQDeaDxN+/Y0qwlpEHqrdB94IRNIDUgfgfKJChGK4OikEW3gTiXUB950ASLFAF54AC94A0G9QAfOnmF9DCDzABFqS08IHYDIScdijOjQABBgC+/9awBH96jwAAAABJRU5ErkJggg==\");background-position: 2px center;}.ace_gutter-cell.ace_info {background-image: url(\"data:image/gif;base64,R0lGODlhEAAQAMQAAAAAAEFBQVJSUl5eXmRkZGtra39/f4WFhYmJiZGRkaampry8vMPDw8zMzNXV1dzc3OTk5Orq6vDw8P///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAkAABQALAAAAAAQABAAAAUuICWOZGmeaBml5XGwFCQSBGyXRSAwtqQIiRuiwIM5BoYVbEFIyGCQoeJGrVptIQA7\");background-position: 2px center;}.ace_dark .ace_gutter-cell.ace_info {background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpGRTk5MTVGREIxNDkxMUUxOTc5Q0FFREQyMTNGMjBFQyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpGRTk5MTVGRUIxNDkxMUUxOTc5Q0FFREQyMTNGMjBFQyI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkZFOTkxNUZCQjE0OTExRTE5NzlDQUVERDIxM0YyMEVDIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkZFOTkxNUZDQjE0OTExRTE5NzlDQUVERDIxM0YyMEVDIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+SIDkjAAAAJ1JREFUeNpi/P//PwMlgImBQkB7A6qrq/+DMC55FkIGKCoq4pVnpFkgTp069f/+/fv/r1u37r+tre1/kg0A+ptn9uzZYLaRkRHpLvjw4cNXWVlZhufPnzOcO3eOdAO0tbVPAjHDmzdvGA4fPsxIsgGSkpJmv379Ynj37h2DjIyMCMkG3LhxQ/T27dsMampqDHZ2dq/pH41DxwCAAAMAFdc68dUsFZgAAAAASUVORK5CYII=\");}.ace_scrollbar {position: absolute;overflow-x: hidden;overflow-y: scroll;right: 0;top: 0;bottom: 0;}.ace_scrollbar-inner {position: absolute;width: 1px;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;}.ace_text-input.ace_composition {background: #f8f8f8;color: #111;z-index: 1000;opacity: 1;}.ace_layer {z-index: 1;position: absolute;overflow: hidden;white-space: nowrap;height: 100%;width: 100%;-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;/* setting pointer-events: auto; on node under the mouse, which changesduring scroll, will break mouse wheel scrolling in Safari */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;}.ace_hidden-cursors .ace_cursor {opacity: 0.2;}.ace_smooth-blinking .ace_cursor {-moz-transition: opacity 0.18s;-webkit-transition: opacity 0.18s;-o-transition: opacity 0.18s;-ms-transition: opacity 0.18s;transition: opacity 0.18s;}.ace_cursor[style*=\"opacity: 0\"]{-ms-filter: \"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)\";}.ace_editor.ace_multiselect .ace_cursor {border-left-width: 1px;}.ace_line {white-space: nowrap;}.ace_marker-layer .ace_step {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,%89PNG%0D%0A%1A%0A%00%00%00%0DIHDR%00%00%00%11%00%00%00%09%08%06%00%00%00%D4%E8%C7%0C%00%00%03%1EiCCPICC%20Profile%00%00x%01%85T%DFk%D3P%14%FE%DAe%9D%B0%E1%8B%3Ag%11%09%3Eh%91ndStC%9C%B6kW%BA%CDZ%EA6%B7!H%9B%A6m%5C%9A%C6%24%ED~%B0%07%D9%8Bo%3A%C5w%F1%07%3E%F9%07%0C%D9%83o%7B%92%0D%C6%14a%F8%AC%88%22L%F6%22%B3%9E%9B4M'S%03%B9%F7%BB%DF%F9%EE9'%E7%E4%5E%A0%F9qZ%D3%14%2F%0F%14USO%C5%C2%FC%C4%E4%14%DF%F2%01%5E%1CC%2B%FChM%8B%86%16J%26G%40%0F%D3%B2y%EF%B3%F3%0E%1E%C6lt%EEo%DF%AB%FEc%D5%9A%95%0C%11%F0%1C%20%BE%945%C4%22%E1Y%A0i%5C%D4t%13%E0%D6%89%EF%9D15%C2%CDLsX%A7%04%09%1Fg8oc%81%E1%8C%8D%23%96f45%40%9A%09%C2%07%C5B%3AK%B8%408%98i%E0%F3%0D%D8%CE%81%14%E4'%26%A9%92.%8B%3C%ABER%2F%E5dE%B2%0C%F6%F0%1Fs%83%F2_%B0%A8%94%E9%9B%AD%E7%10%8Dm%9A%19N%D1%7C%8A%DE%1F9%7Dp%8C%E6%00%D5%C1%3F_%18%BDA%B8%9DpX6%E3%A35~B%CD%24%AE%11%26%BD%E7%EEti%98%EDe%9A%97Y)%12%25%1C%24%BCbT%AE3li%E6%0B%03%89%9A%E6%D3%ED%F4P%92%B0%9F4%BF43Y%F3%E3%EDP%95%04%EB1%C5%F5%F6KF%F4%BA%BD%D7%DB%91%93%07%E35%3E%A7)%D6%7F%40%FE%BD%F7%F5r%8A%E5y%92%F0%EB%B4%1E%8D%D5%F4%5B%92%3AV%DB%DB%E4%CD%A6%23%C3%C4wQ%3F%03HB%82%8E%1Cd(%E0%91B%0Ca%9Ac%C4%AA%F8L%16%19%22J%A4%D2itTy%B28%D6%3B(%93%96%ED%1CGx%C9_%0E%B8%5E%16%F5%5B%B2%B8%F6%E0%FB%9E%DD%25%D7%8E%BC%15%85%C5%B7%A3%D8Q%ED%B5%81%E9%BA%B2%13%9A%1B%7Fua%A5%A3n%E17%B9%E5%9B%1Bm%AB%0B%08Q%FE%8A%E5%B1H%5Ee%CAO%82Q%D7u6%E6%90S%97%FCu%0B%CF2%94%EE%25v%12X%0C%BA%AC%F0%5E%F8*l%0AO%85%17%C2%97%BF%D4%C8%CE%DE%AD%11%CB%80q%2C%3E%AB%9ES%CD%C6%EC%25%D2L%D2%EBd%B8%BF%8A%F5B%C6%18%F9%901CZ%9D%BE%24M%9C%8A9%F2%DAP%0B'%06w%82%EB%E6%E2%5C%2F%D7%07%9E%BB%CC%5D%E1%FA%B9%08%AD.r%23%8E%C2%17%F5E%7C!%F0%BE3%BE%3E_%B7o%88a%A7%DB%BE%D3d%EB%A31Z%EB%BB%D3%91%BA%A2%B1z%94%8F%DB'%F6%3D%8E%AA%13%19%B2%B1%BE%B1~V%08%2B%B4%A2cjJ%B3tO%00%03%25mN%97%F3%05%93%EF%11%84%0B%7C%88%AE-%89%8F%ABbW%90O%2B%0Ao%99%0C%5E%97%0CI%AFH%D9.%B0%3B%8F%ED%03%B6S%D6%5D%E6i_s9%F3*p%E9%1B%FD%C3%EB.7U%06%5E%19%C0%D1s.%17%A03u%E4%09%B0%7C%5E%2C%EB%15%DB%1F%3C%9E%B7%80%91%3B%DBc%AD%3Dma%BA%8B%3EV%AB%DBt.%5B%1E%01%BB%0F%AB%D5%9F%CF%AA%D5%DD%E7%E4%7F%0Bx%A3%FC%06%A9%23%0A%D6%C2%A1_2%00%00%00%09pHYs%00%00%0B%13%00%00%0B%13%01%00%9A%9C%18%00%00%00%B5IDAT(%15%A5%91%3D%0E%02!%10%85ac%E1%05%D6%CE%D6%C6%CE%D2%E8%ED%CD%DE%C0%C6%D6N.%E0V%F8%3D%9Ca%891XH%C2%BE%D9y%3F%90!%E6%9C%C3%BFk%E5%011%C6-%F5%C8N%04%DF%BD%FF%89%DFt%83DN%60%3E%F3%AB%A0%DE%1A%5Dg%BE%10Q%97%1B%40%9C%A8o%10%8F%5E%828%B4%1B%60%87%F6%02%26%85%1Ch%1E%C1%2B%5Bk%FF%86%EE%B7j%09%9A%DA%9B%ACe%A3%F9%EC%DA!9%B4%D5%A6%81%86%86%98%CC%3C%5B%40%FA%81%B3%E9%CB%23%94%C16Azo%05%D4%E1%C1%95a%3B%8A'%A0%E8%CC%17%22%85%1D%BA%00%A2%FA%DC%0A%94%D1%D1%8D%8B%3A%84%17B%C7%60%1A%25Z%FC%8D%00%00%00%00IEND%AEB%60%82\"),url(\"data:image/png,%89PNG%0D%0A%1A%0A%00%00%00%0DIHDR%00%00%00%05%00%00%007%08%06%00%00%00%C4%DD%80C%00%00%03%1EiCCPICC%20Profile%00%00x%01%85T%DFk%D3P%14%FE%DAe%9D%B0%E1%8B%3Ag%11%09%3Eh%91ndStC%9C%B6kW%BA%CDZ%EA6%B7!H%9B%A6m%5C%9A%C6%24%ED~%B0%07%D9%8Bo%3A%C5w%F1%07%3E%F9%07%0C%D9%83o%7B%92%0D%C6%14a%F8%AC%88%22L%F6%22%B3%9E%9B4M'S%03%B9%F7%BB%DF%F9%EE9'%E7%E4%5E%A0%F9qZ%D3%14%2F%0F%14USO%C5%C2%FC%C4%E4%14%DF%F2%01%5E%1CC%2B%FChM%8B%86%16J%26G%40%0F%D3%B2y%EF%B3%F3%0E%1E%C6lt%EEo%DF%AB%FEc%D5%9A%95%0C%11%F0%1C%20%BE%945%C4%22%E1Y%A0i%5C%D4t%13%E0%D6%89%EF%9D15%C2%CDLsX%A7%04%09%1Fg8oc%81%E1%8C%8D%23%96f45%40%9A%09%C2%07%C5B%3AK%B8%408%98i%E0%F3%0D%D8%CE%81%14%E4'%26%A9%92.%8B%3C%ABER%2F%E5dE%B2%0C%F6%F0%1Fs%83%F2_%B0%A8%94%E9%9B%AD%E7%10%8Dm%9A%19N%D1%7C%8A%DE%1F9%7Dp%8C%E6%00%D5%C1%3F_%18%BDA%B8%9DpX6%E3%A35~B%CD%24%AE%11%26%BD%E7%EEti%98%EDe%9A%97Y)%12%25%1C%24%BCbT%AE3li%E6%0B%03%89%9A%E6%D3%ED%F4P%92%B0%9F4%BF43Y%F3%E3%EDP%95%04%EB1%C5%F5%F6KF%F4%BA%BD%D7%DB%91%93%07%E35%3E%A7)%D6%7F%40%FE%BD%F7%F5r%8A%E5y%92%F0%EB%B4%1E%8D%D5%F4%5B%92%3AV%DB%DB%E4%CD%A6%23%C3%C4wQ%3F%03HB%82%8E%1Cd(%E0%91B%0Ca%9Ac%C4%AA%F8L%16%19%22J%A4%D2itTy%B28%D6%3B(%93%96%ED%1CGx%C9_%0E%B8%5E%16%F5%5B%B2%B8%F6%E0%FB%9E%DD%25%D7%8E%BC%15%85%C5%B7%A3%D8Q%ED%B5%81%E9%BA%B2%13%9A%1B%7Fua%A5%A3n%E17%B9%E5%9B%1Bm%AB%0B%08Q%FE%8A%E5%B1H%5Ee%CAO%82Q%D7u6%E6%90S%97%FCu%0B%CF2%94%EE%25v%12X%0C%BA%AC%F0%5E%F8*l%0AO%85%17%C2%97%BF%D4%C8%CE%DE%AD%11%CB%80q%2C%3E%AB%9ES%CD%C6%EC%25%D2L%D2%EBd%B8%BF%8A%F5B%C6%18%F9%901CZ%9D%BE%24M%9C%8A9%F2%DAP%0B'%06w%82%EB%E6%E2%5C%2F%D7%07%9E%BB%CC%5D%E1%FA%B9%08%AD.r%23%8E%C2%17%F5E%7C!%F0%BE3%BE%3E_%B7o%88a%A7%DB%BE%D3d%EB%A31Z%EB%BB%D3%91%BA%A2%B1z%94%8F%DB'%F6%3D%8E%AA%13%19%B2%B1%BE%B1~V%08%2B%B4%A2cjJ%B3tO%00%03%25mN%97%F3%05%93%EF%11%84%0B%7C%88%AE-%89%8F%ABbW%90O%2B%0Ao%99%0C%5E%97%0CI%AFH%D9.%B0%3B%8F%ED%03%B6S%D6%5D%E6i_s9%F3*p%E9%1B%FD%C3%EB.7U%06%5E%19%C0%D1s.%17%A03u%E4%09%B0%7C%5E%2C%EB%15%DB%1F%3C%9E%B7%80%91%3B%DBc%AD%3Dma%BA%8B%3EV%AB%DBt.%5B%1E%01%BB%0F%AB%D5%9F%CF%AA%D5%DD%E7%E4%7F%0Bx%A3%FC%06%A9%23%0A%D6%C2%A1_2%00%00%00%09pHYs%00%00%0B%13%00%00%0B%13%01%00%9A%9C%18%00%00%00%3AIDAT8%11c%FC%FF%FF%7F%18%03%1A%60%01%F2%3F%A0%891%80%04%FF%11-%F8%17%9BJ%E2%05%B1ZD%81v%26t%E7%80%F8%A3%82h%A12%1A%20%A3%01%02%0F%01%BA%25%06%00%19%C0%0D%AEF%D5%3ES%00%00%00%00IEND%AEB%60%82\");background-repeat: no-repeat, repeat-x;background-position: center center, top left;color: transparent;border: 1px solid black;-moz-border-radius: 2px;-webkit-border-radius: 2px;border-radius: 2px;cursor: pointer;pointer-events: auto;}.ace_dark .ace_fold {}.ace_fold:hover{background-image:url(\"data:image/png,%89PNG%0D%0A%1A%0A%00%00%00%0DIHDR%00%00%00%11%00%00%00%09%08%06%00%00%00%D4%E8%C7%0C%00%00%03%1EiCCPICC%20Profile%00%00x%01%85T%DFk%D3P%14%FE%DAe%9D%B0%E1%8B%3Ag%11%09%3Eh%91ndStC%9C%B6kW%BA%CDZ%EA6%B7!H%9B%A6m%5C%9A%C6%24%ED~%B0%07%D9%8Bo%3A%C5w%F1%07%3E%F9%07%0C%D9%83o%7B%92%0D%C6%14a%F8%AC%88%22L%F6%22%B3%9E%9B4M'S%03%B9%F7%BB%DF%F9%EE9'%E7%E4%5E%A0%F9qZ%D3%14%2F%0F%14USO%C5%C2%FC%C4%E4%14%DF%F2%01%5E%1CC%2B%FChM%8B%86%16J%26G%40%0F%D3%B2y%EF%B3%F3%0E%1E%C6lt%EEo%DF%AB%FEc%D5%9A%95%0C%11%F0%1C%20%BE%945%C4%22%E1Y%A0i%5C%D4t%13%E0%D6%89%EF%9D15%C2%CDLsX%A7%04%09%1Fg8oc%81%E1%8C%8D%23%96f45%40%9A%09%C2%07%C5B%3AK%B8%408%98i%E0%F3%0D%D8%CE%81%14%E4'%26%A9%92.%8B%3C%ABER%2F%E5dE%B2%0C%F6%F0%1Fs%83%F2_%B0%A8%94%E9%9B%AD%E7%10%8Dm%9A%19N%D1%7C%8A%DE%1F9%7Dp%8C%E6%00%D5%C1%3F_%18%BDA%B8%9DpX6%E3%A35~B%CD%24%AE%11%26%BD%E7%EEti%98%EDe%9A%97Y)%12%25%1C%24%BCbT%AE3li%E6%0B%03%89%9A%E6%D3%ED%F4P%92%B0%9F4%BF43Y%F3%E3%EDP%95%04%EB1%C5%F5%F6KF%F4%BA%BD%D7%DB%91%93%07%E35%3E%A7)%D6%7F%40%FE%BD%F7%F5r%8A%E5y%92%F0%EB%B4%1E%8D%D5%F4%5B%92%3AV%DB%DB%E4%CD%A6%23%C3%C4wQ%3F%03HB%82%8E%1Cd(%E0%91B%0Ca%9Ac%C4%AA%F8L%16%19%22J%A4%D2itTy%B28%D6%3B(%93%96%ED%1CGx%C9_%0E%B8%5E%16%F5%5B%B2%B8%F6%E0%FB%9E%DD%25%D7%8E%BC%15%85%C5%B7%A3%D8Q%ED%B5%81%E9%BA%B2%13%9A%1B%7Fua%A5%A3n%E17%B9%E5%9B%1Bm%AB%0B%08Q%FE%8A%E5%B1H%5Ee%CAO%82Q%D7u6%E6%90S%97%FCu%0B%CF2%94%EE%25v%12X%0C%BA%AC%F0%5E%F8*l%0AO%85%17%C2%97%BF%D4%C8%CE%DE%AD%11%CB%80q%2C%3E%AB%9ES%CD%C6%EC%25%D2L%D2%EBd%B8%BF%8A%F5B%C6%18%F9%901CZ%9D%BE%24M%9C%8A9%F2%DAP%0B'%06w%82%EB%E6%E2%5C%2F%D7%07%9E%BB%CC%5D%E1%FA%B9%08%AD.r%23%8E%C2%17%F5E%7C!%F0%BE3%BE%3E_%B7o%88a%A7%DB%BE%D3d%EB%A31Z%EB%BB%D3%91%BA%A2%B1z%94%8F%DB'%F6%3D%8E%AA%13%19%B2%B1%BE%B1~V%08%2B%B4%A2cjJ%B3tO%00%03%25mN%97%F3%05%93%EF%11%84%0B%7C%88%AE-%89%8F%ABbW%90O%2B%0Ao%99%0C%5E%97%0CI%AFH%D9.%B0%3B%8F%ED%03%B6S%D6%5D%E6i_s9%F3*p%E9%1B%FD%C3%EB.7U%06%5E%19%C0%D1s.%17%A03u%E4%09%B0%7C%5E%2C%EB%15%DB%1F%3C%9E%B7%80%91%3B%DBc%AD%3Dma%BA%8B%3EV%AB%DBt.%5B%1E%01%BB%0F%AB%D5%9F%CF%AA%D5%DD%E7%E4%7F%0Bx%A3%FC%06%A9%23%0A%D6%C2%A1_2%00%00%00%09pHYs%00%00%0B%13%00%00%0B%13%01%00%9A%9C%18%00%00%00%B5IDAT(%15%A5%91%3D%0E%02!%10%85ac%E1%05%D6%CE%D6%C6%CE%D2%E8%ED%CD%DE%C0%C6%D6N.%E0V%F8%3D%9Ca%891XH%C2%BE%D9y%3F%90!%E6%9C%C3%BFk%E5%011%C6-%F5%C8N%04%DF%BD%FF%89%DFt%83DN%60%3E%F3%AB%A0%DE%1A%5Dg%BE%10Q%97%1B%40%9C%A8o%10%8F%5E%828%B4%1B%60%87%F6%02%26%85%1Ch%1E%C1%2B%5Bk%FF%86%EE%B7j%09%9A%DA%9B%ACe%A3%F9%EC%DA!9%B4%D5%A6%81%86%86%98%CC%3C%5B%40%FA%81%B3%E9%CB%23%94%C16Azo%05%D4%E1%C1%95a%3B%8A'%A0%E8%CC%17%22%85%1D%BA%00%A2%FA%DC%0A%94%D1%D1%8D%8B%3A%84%17B%C7%60%1A%25Z%FC%8D%00%00%00%00IEND%AEB%60%82\"),url(\"data:image/png,%89PNG%0D%0A%1A%0A%00%00%00%0DIHDR%00%00%00%05%00%00%007%08%06%00%00%00%C4%DD%80C%00%00%03%1EiCCPICC%20Profile%00%00x%01%85T%DFk%D3P%14%FE%DAe%9D%B0%E1%8B%3Ag%11%09%3Eh%91ndStC%9C%B6kW%BA%CDZ%EA6%B7!H%9B%A6m%5C%9A%C6%24%ED~%B0%07%D9%8Bo%3A%C5w%F1%07%3E%F9%07%0C%D9%83o%7B%92%0D%C6%14a%F8%AC%88%22L%F6%22%B3%9E%9B4M'S%03%B9%F7%BB%DF%F9%EE9'%E7%E4%5E%A0%F9qZ%D3%14%2F%0F%14USO%C5%C2%FC%C4%E4%14%DF%F2%01%5E%1CC%2B%FChM%8B%86%16J%26G%40%0F%D3%B2y%EF%B3%F3%0E%1E%C6lt%EEo%DF%AB%FEc%D5%9A%95%0C%11%F0%1C%20%BE%945%C4%22%E1Y%A0i%5C%D4t%13%E0%D6%89%EF%9D15%C2%CDLsX%A7%04%09%1Fg8oc%81%E1%8C%8D%23%96f45%40%9A%09%C2%07%C5B%3AK%B8%408%98i%E0%F3%0D%D8%CE%81%14%E4'%26%A9%92.%8B%3C%ABER%2F%E5dE%B2%0C%F6%F0%1Fs%83%F2_%B0%A8%94%E9%9B%AD%E7%10%8Dm%9A%19N%D1%7C%8A%DE%1F9%7Dp%8C%E6%00%D5%C1%3F_%18%BDA%B8%9DpX6%E3%A35~B%CD%24%AE%11%26%BD%E7%EEti%98%EDe%9A%97Y)%12%25%1C%24%BCbT%AE3li%E6%0B%03%89%9A%E6%D3%ED%F4P%92%B0%9F4%BF43Y%F3%E3%EDP%95%04%EB1%C5%F5%F6KF%F4%BA%BD%D7%DB%91%93%07%E35%3E%A7)%D6%7F%40%FE%BD%F7%F5r%8A%E5y%92%F0%EB%B4%1E%8D%D5%F4%5B%92%3AV%DB%DB%E4%CD%A6%23%C3%C4wQ%3F%03HB%82%8E%1Cd(%E0%91B%0Ca%9Ac%C4%AA%F8L%16%19%22J%A4%D2itTy%B28%D6%3B(%93%96%ED%1CGx%C9_%0E%B8%5E%16%F5%5B%B2%B8%F6%E0%FB%9E%DD%25%D7%8E%BC%15%85%C5%B7%A3%D8Q%ED%B5%81%E9%BA%B2%13%9A%1B%7Fua%A5%A3n%E17%B9%E5%9B%1Bm%AB%0B%08Q%FE%8A%E5%B1H%5Ee%CAO%82Q%D7u6%E6%90S%97%FCu%0B%CF2%94%EE%25v%12X%0C%BA%AC%F0%5E%F8*l%0AO%85%17%C2%97%BF%D4%C8%CE%DE%AD%11%CB%80q%2C%3E%AB%9ES%CD%C6%EC%25%D2L%D2%EBd%B8%BF%8A%F5B%C6%18%F9%901CZ%9D%BE%24M%9C%8A9%F2%DAP%0B'%06w%82%EB%E6%E2%5C%2F%D7%07%9E%BB%CC%5D%E1%FA%B9%08%AD.r%23%8E%C2%17%F5E%7C!%F0%BE3%BE%3E_%B7o%88a%A7%DB%BE%D3d%EB%A31Z%EB%BB%D3%91%BA%A2%B1z%94%8F%DB'%F6%3D%8E%AA%13%19%B2%B1%BE%B1~V%08%2B%B4%A2cjJ%B3tO%00%03%25mN%97%F3%05%93%EF%11%84%0B%7C%88%AE-%89%8F%ABbW%90O%2B%0Ao%99%0C%5E%97%0CI%AFH%D9.%B0%3B%8F%ED%03%B6S%D6%5D%E6i_s9%F3*p%E9%1B%FD%C3%EB.7U%06%5E%19%C0%D1s.%17%A03u%E4%09%B0%7C%5E%2C%EB%15%DB%1F%3C%9E%B7%80%91%3B%DBc%AD%3Dma%BA%8B%3EV%AB%DBt.%5B%1E%01%BB%0F%AB%D5%9F%CF%AA%D5%DD%E7%E4%7F%0Bx%A3%FC%06%A9%23%0A%D6%C2%A1_2%00%00%00%09pHYs%00%00%0B%13%00%00%0B%13%01%00%9A%9C%18%00%00%003IDAT8%11c%FC%FF%FF%7F%3E%03%1A%60%01%F2%3F%A3%891%80%04%FFQ%26%F8w%C0%B43%A1%DB%0C%E2%8F%0A%A2%85%CAh%80%8C%06%08%3C%04%E8%96%18%00%A3S%0D%CD%CF%D8%C1%9D%00%00%00%00IEND%AEB%60%82\");background-repeat: no-repeat, repeat-x;background-position: center center, top left;}.ace_editor.ace_dragging .ace_content {cursor: move;}.ace_gutter-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;display: inline-block;max-width: 500px;padding: 4px;position: fixed;z-index: 300;-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;cursor: default;white-space: pre-line;word-wrap: break-word;line-height: normal;font-style: normal;font-weight: normal;letter-spacing: normal;}.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,%89PNG%0D%0A%1A%0A%00%00%00%0DIHDR%00%00%00%05%00%00%00%05%08%06%00%00%00%8Do%26%E5%00%00%004IDATx%DAe%8A%B1%0D%000%0C%C2%F2%2CK%96%BC%D0%8F9%81%88H%E9%D0%0E%96%C0%10%92%3E%02%80%5E%82%E4%A9*-%EEsw%C8%CC%11%EE%96w%D8%DC%E9*Eh%0C%151(%00%00%00%00IEND%AEB%60%82\");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,%89PNG%0D%0A%1A%0A%00%00%00%0DIHDR%00%00%00%05%00%00%00%05%08%06%00%00%00%8Do%26%E5%00%00%004IDATx%DAm%C7%C1%09%000%08C%D1%8C%ECE%C8E(%8E%EC%02)%1EZJ%F1%C1'%04%07I%E1%E5%EE%CAL%F5%A2%99%99%22%E2%D6%1FU%B5%FE0%D9x%A7%26Wz5%0E%D5%00%00%00%00IEND%AEB%60%82\");}.ace_fold-widget.ace_closed {background-image: url(\"data:image/png,%89PNG%0D%0A%1A%0A%00%00%00%0DIHDR%00%00%00%03%00%00%00%06%08%06%00%00%00%06%E5%24%0C%00%00%009IDATx%DA5%CA%C1%09%000%08%03%C0%AC*(%3E%04%C1%0D%BA%B1%23%A4Uh%E0%20%81%C0%CC%F8%82%81%AA%A2%AArGfr%88%08%11%11%1C%DD%7D%E0%EE%5B%F6%F6%CB%B8%05Q%2F%E9tai%D9%00%00%00%00IEND%AEB%60%82\");}.ace_fold-widget:hover {border: 1px solid rgba(0, 0, 0, 0.3);background-color: rgba(255, 255, 255, 0.2);-moz-box-shadow: 0 1px 1px rgba(255, 255, 255, 0.7);-webkit-box-shadow: 0 1px 1px rgba(255, 255, 255, 0.7);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);-moz-box-shadow: 0 1px 1px rgba(255, 255, 255, 0.8);-webkit-box-shadow: 0 1px 1px rgba(255, 255, 255, 0.8);box-shadow: 0 1px 1px rgba(255, 255, 255, 0.8);}/*** Dark version for fold widgets*/.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 {-moz-box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);-webkit-box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);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 {-moz-transition: opacity 0.4s ease 0.05s;-webkit-transition: opacity 0.4s ease 0.05s;-o-transition: opacity 0.4s ease 0.05s;-ms-transition: opacity 0.4s ease 0.05s;transition: opacity 0.4s ease 0.05s;opacity: 0;}.ace_fade-fold-widgets:hover .ace_fold-widget {-moz-transition: opacity 0.05s ease 0.05s;-webkit-transition: opacity 0.05s ease 0.05s;-o-transition: opacity 0.05s ease 0.05s;-ms-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;}",f;r.importCssString(w,"ace_editor"),f=function(n,t){var i=this,f;this.container=n||r.createElement("div"),this.$keepTextAreaAtCursor=!h.isIE,r.addCssClass(this.container,"ace_editor"),this.setTheme(t),this.$gutter=r.createElement("div"),this.$gutter.className="ace_gutter",this.container.appendChild(this.$gutter),this.scroller=r.createElement("div"),this.scroller.className="ace_scroller",this.container.appendChild(this.scroller),this.content=r.createElement("div"),this.content.className="ace_content",this.scroller.appendChild(this.content),this.$gutterLayer=new c(this.$gutter),this.$gutterLayer.on("changeGutterWidth",this.onGutterResize.bind(this)),this.$markerBack=new e(this.content),f=this.$textLayer=new l(this.content),this.canvas=f.element,this.$markerFront=new e(this.content),this.$cursorLayer=new a(this.content),this.$horizScroll=!1,this.scrollBar=new v(this.container),this.scrollBar.addEventListener("scroll",function(n){i.$scrollAnimation||i.session.setScrollTop(n.data)}),this.scrollTop=0,this.scrollLeft=0,s.addListener(this.scroller,"scroll",function(){var n=i.scroller.scrollLeft;i.scrollLeft=n,i.session.setScrollLeft(n)}),this.cursorPos={row:0,column:0},this.$textLayer.addEventListener("changeCharacterSize",function(){i.updateCharacterSize(),i.onResize(!0)}),this.$size={width:0,height:0,scrollerHeight:0,scrollerWidth:0},this.layerConfig={width:1,padding:0,firstRow:0,firstRowScreen:0,lastRow:0,lineHeight:1,characterWidth:1,minHeight:1,maxHeight:1,offset:0,height:1},this.$loop=new y(this.$renderChanges.bind(this),this.container.ownerDocument.defaultView),this.$loop.schedule(this.CHANGE_FULL),this.updateCharacterSize(),this.setPadding(4),u.resetOptions(this),u._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,o.implement(this,p),this.updateCharacterSize=function(){this.$textLayer.allowBoldFonts!=this.$allowBoldFonts&&(this.$allowBoldFonts=this.$textLayer.allowBoldFonts,this.setStyle("ace_nobold",!this.$allowBoldFonts)),this.characterWidth=this.$textLayer.getCharacterWidth(),this.lineHeight=this.$textLayer.getLineHeight(),this.$updatePrintMargin()},this.setSession=function(n){this.session=n,this.scroller.className="ace_scroller",this.$cursorLayer.setSession(n),this.$markerBack.setSession(n),this.$markerFront.setSession(n),this.$gutterLayer.setSession(n),this.$textLayer.setSession(n),this.$loop.schedule(this.CHANGE_FULL)},this.updateLines=function(n,t){(t===undefined&&(t=Infinity),this.$changedLines?(this.$changedLines.firstRow>n&&(this.$changedLines.firstRow=n),this.$changedLines.lastRow<t&&(this.$changedLines.lastRow=t)):this.$changedLines={firstRow:n,lastRow:t},this.$changedLines.firstRow>this.layerConfig.lastRow||this.$changedLines.lastRow<this.layerConfig.firstRow)||this.$loop.schedule(this.CHANGE_LINES)},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(n){n?this.$renderChanges(this.CHANGE_FULL,!0):this.$loop.schedule(this.CHANGE_FULL)},this.updateFontSize=function(){this.$textLayer.checkForSizeChanges()},this.onResize=function(n,t,i,u){var e=0,f=this.$size,t;this.resizing>2||(this.resizing>1?this.resizing++:this.resizing=n?1:0,u||(u=r.getInnerHeight(this.container)),u&&(n||f.height!=u)&&(f.height=u,e=this.CHANGE_SIZE,f.scrollerHeight=this.scroller.clientHeight,(n||!f.scrollerHeight)&&(f.scrollerHeight=f.height,this.$horizScroll&&(f.scrollerHeight-=this.scrollBar.getWidth())),this.scrollBar.setHeight(f.scrollerHeight),this.session&&(this.session.setScrollTop(this.getScrollTop()),e|=this.CHANGE_FULL)),i||(i=r.getInnerWidth(this.container)),i&&(n||this.resizing>1||f.width!=i)&&(e=this.CHANGE_SIZE,f.width=i,t=this.$showGutter?this.$gutter.offsetWidth:0,this.scroller.style.left=t+"px",f.scrollerWidth=Math.max(0,i-t-this.scrollBar.getWidth()),this.scroller.style.right=this.scrollBar.getWidth()+"px",(this.session&&this.session.getUseWrapMode()&&this.adjustWrapLimit()||n)&&(e|=this.CHANGE_FULL)),this.$size.scrollerHeight)&&(n?this.$renderChanges(e,!0):this.$loop.schedule(e),n&&(this.$gutterLayer.$padding=null),n&&delete this.resizing)},this.onGutterResize=function(){var t=this.$size.width,n=this.$showGutter?this.$gutter.offsetWidth:0;this.scroller.style.left=n+"px",this.$size.scrollerWidth=Math.max(0,t-n-this.scrollBar.getWidth()),this.session.getUseWrapMode()&&this.adjustWrapLimit()?this.$loop.schedule(this.CHANGE_FULL):this.$loop.schedule(this.CHANGE_MARKER)},this.adjustWrapLimit=function(){var n=this.$size.scrollerWidth-this.$padding*2,t=Math.floor(n/this.characterWidth);return this.session.adjustWrapLimit(t,this.$showPrintMargin&&this.$printMarginColumn)},this.setAnimatedScroll=function(n){this.setOption("animatedScroll",n)},this.getAnimatedScroll=function(){return this.$animatedScroll},this.setShowInvisibles=function(n){this.setOption("showInvisibles",n)},this.getShowInvisibles=function(){return this.getOption("showInvisibles")},this.getDisplayIndentGuides=function(){return this.getOption("displayIndentGuides")},this.setDisplayIndentGuides=function(n){this.setOption("displayIndentGuides",n)},this.setShowPrintMargin=function(n){this.setOption("showPrintMargin",n)},this.getShowPrintMargin=function(){return this.getOption("showPrintMargin")},this.setPrintMarginColumn=function(n){this.setOption("printMarginColumn",n)},this.getPrintMarginColumn=function(){return this.getOption("printMarginColumn")},this.getShowGutter=function(){return this.getOption("showGutter")},this.setShowGutter=function(n){return this.setOption("showGutter",n)},this.getFadeFoldWidgets=function(){return this.getOption("fadeFoldWidgets")},this.setFadeFoldWidgets=function(n){this.setOption("fadeFoldWidgets",n)},this.setHighlightGutterLine=function(n){this.setOption("highlightGutterLine",n)},this.getHighlightGutterLine=function(){return this.getOption("highlightGutterLine")},this.$updateGutterLineHighlight=function(){var t=this.$cursorLayer.$pixelPos,i=this.layerConfig.lineHeight,n;this.session.getUseWrapMode()&&(n=this.session.selection.getCursor(),n.column=0,t=this.$cursorLayer.getPixelPosition(n,!0),i*=this.session.getRowLength(n.row)),this.$gutterLineHighlight.style.top=t.top-this.layerConfig.offset+"px",this.$gutterLineHighlight.style.height=i+"px"},this.$updatePrintMargin=function(){var n,t;(this.$showPrintMargin||this.$printMarginEl)&&(this.$printMarginEl||(n=r.createElement("div"),n.className="ace_layer ace_print-margin-layer",this.$printMarginEl=r.createElement("div"),this.$printMarginEl.className="ace_print-margin",n.appendChild(this.$printMarginEl),this.content.insertBefore(n,this.content.firstChild)),t=this.$printMarginEl.style,t.left=this.characterWidth*this.$printMarginColumn+this.$padding+"px",t.visibility=this.$showPrintMargin?"visible":"hidden",this.session&&this.session.$wrap==-1&&this.adjustWrapLimit())},this.getContainerElement=function(){return this.container},this.getMouseEventTarget=function(){return this.content},this.getTextAreaContainer=function(){return this.container},this.$moveTextAreaToCursor=function(){var r,n,f;if(this.$keepTextAreaAtCursor){var u=this.layerConfig,t=this.$cursorLayer.$pixelPos.top,i=this.$cursorLayer.$pixelPos.left;(t-=u.offset,r=this.lineHeight,t<0||t>u.height-r)||(n=this.characterWidth,this.$composition&&(f=this.textarea.value.replace(/^\x01+/,""),n*=this.session.$getStringScreenWidth(f)[0]+2,r+=2,t-=1),i-=this.scrollLeft,i>this.$size.scrollerWidth-n&&(i=this.$size.scrollerWidth-n),i-=this.scrollBar.width,this.textarea.style.height=r+"px",this.textarea.style.width=n+"px",this.textarea.style.right=Math.max(0,this.$size.scrollerWidth-i-n)+"px",this.textarea.style.bottom=Math.max(0,this.$size.height-t-r)+"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 n=Math.floor((this.layerConfig.height+this.layerConfig.offset)/this.layerConfig.lineHeight);return this.layerConfig.firstRow-1+n},this.getLastVisibleRow=function(){return this.layerConfig.lastRow},this.$padding=null,this.setPadding=function(n){this.$padding=n,this.$textLayer.setPadding(n),this.$cursorLayer.setPadding(n),this.$markerFront.setPadding(n),this.$markerBack.setPadding(n),this.$loop.schedule(this.CHANGE_FULL),this.$updatePrintMargin()},this.getHScrollBarAlwaysVisible=function(){return this.$hScrollBarAlwaysVisible},this.setHScrollBarAlwaysVisible=function(n){this.setOption("hScrollBarAlwaysVisible",n)},this.$updateScrollBar=function(){this.scrollBar.setInnerHeight(this.layerConfig.maxHeight),this.scrollBar.setScrollTop(this.scrollTop)},this.$renderChanges=function(n,t){if(t||n&&this.session&&this.container.offsetWidth){if(this._signal("beforeRender"),(n&this.CHANGE_FULL||n&this.CHANGE_SIZE||n&this.CHANGE_TEXT||n&this.CHANGE_LINES||n&this.CHANGE_SCROLL)&&this.$computeLayerConfig(),n&this.CHANGE_H_SCROLL){this.scroller.scrollLeft=this.scrollLeft;var i=this.scroller.scrollLeft;this.scrollLeft=i,this.session.setScrollLeft(i),this.scroller.className=this.scrollLeft==0?"ace_scroller":"ace_scroller ace_scroll-left"}if(n&this.CHANGE_FULL){this.$textLayer.checkForSizeChanges(),this.$updateScrollBar(),this.$textLayer.update(this.layerConfig),this.$showGutter&&this.$gutterLayer.update(this.layerConfig),this.$markerBack.update(this.layerConfig),this.$markerFront.update(this.layerConfig),this.$cursorLayer.update(this.layerConfig),this.$moveTextAreaToCursor(),this.$highlightGutterLine&&this.$updateGutterLineHighlight(),this._signal("afterRender");return}if(n&this.CHANGE_SCROLL){n&this.CHANGE_TEXT||n&this.CHANGE_LINES?this.$textLayer.update(this.layerConfig):this.$textLayer.scrollLines(this.layerConfig),this.$showGutter&&this.$gutterLayer.update(this.layerConfig),this.$markerBack.update(this.layerConfig),this.$markerFront.update(this.layerConfig),this.$cursorLayer.update(this.layerConfig),this.$highlightGutterLine&&this.$updateGutterLineHighlight(),this.$moveTextAreaToCursor(),this.$updateScrollBar(),this._signal("afterRender");return}n&this.CHANGE_TEXT?(this.$textLayer.update(this.layerConfig),this.$showGutter&&this.$gutterLayer.update(this.layerConfig)):n&this.CHANGE_LINES?(this.$updateLines()||n&this.CHANGE_GUTTER&&this.$showGutter)&&this.$gutterLayer.update(this.layerConfig):(n&this.CHANGE_TEXT||n&this.CHANGE_GUTTER)&&this.$showGutter&&this.$gutterLayer.update(this.layerConfig),n&this.CHANGE_CURSOR&&(this.$cursorLayer.update(this.layerConfig),this.$moveTextAreaToCursor(),this.$highlightGutterLine&&this.$updateGutterLineHighlight()),n&(this.CHANGE_MARKER|this.CHANGE_MARKER_FRONT)&&this.$markerFront.update(this.layerConfig),n&(this.CHANGE_MARKER|this.CHANGE_MARKER_BACK)&&this.$markerBack.update(this.layerConfig),n&this.CHANGE_SIZE&&this.$updateScrollBar(),this._signal("afterRender")}},this.$computeLayerConfig=function(){var s,c;if(!this.$size.scrollerHeight)return this.onResize(!0);var t=this.session,i=this.scrollTop%this.lineHeight,r=this.$size.scrollerHeight+this.lineHeight,o=this.$getLongestLine(),u=this.$hScrollBarAlwaysVisible||this.$size.scrollerWidth-o<0,l=this.$horizScroll!==u;this.$horizScroll=u,l&&(this.scroller.style.overflowX=u?"scroll":"hidden",u||this.session.setScrollLeft(0)),s=this.session.getScreenLength()*this.lineHeight,this.session.setScrollTop(Math.max(0,Math.min(this.scrollTop,s-this.$size.scrollerHeight)));var v=Math.ceil(r/this.lineHeight)-1,n=Math.max(0,Math.round((this.scrollTop-i)/this.lineHeight)),f=n+v,h,a,e=this.lineHeight;n=t.screenToDocumentRow(n,0),c=t.getFoldLine(n),c&&(n=c.start.row),h=t.documentToScreenRow(n,0),a=t.getRowLength(n)*e,f=Math.min(t.screenToDocumentRow(f,0),t.getLength()-1),r=this.$size.scrollerHeight+t.getRowLength(f)*e+a,i=this.scrollTop-h*e,this.layerConfig={width:o,padding:this.$padding,firstRow:n,firstRowScreen:h,lastRow:f,lineHeight:e,characterWidth:this.characterWidth,minHeight:r,maxHeight:s,offset:i,height:this.$size.scrollerHeight},this.$gutterLayer.element.style.marginTop=-i+"px",this.content.style.marginTop=-i+"px",this.content.style.width=o+2*this.$padding+"px",this.content.style.height=r+"px",l&&this.onResize(!0)},this.$updateLines=function(){var i=this.$changedLines.firstRow,t=this.$changedLines.lastRow,n;if((this.$changedLines=null,n=this.layerConfig,!(i>n.lastRow+1))&&!(t<n.firstRow)){if(t===Infinity){this.$showGutter&&this.$gutterLayer.update(n),this.$textLayer.update(n);return}return this.$textLayer.updateLines(n,i,t),!0}},this.$getLongestLine=function(){var n=this.session.getScreenWidth();return this.$textLayer.showInvisibles&&(n+=1),Math.max(this.$size.scrollerWidth-2*this.$padding,Math.round(n*this.characterWidth))},this.updateFrontMarkers=function(){this.$markerFront.setMarkers(this.session.getMarkers(!0)),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(n,t){this.$gutterLayer.addGutterDecoration(n,t)},this.removeGutterDecoration=function(n,t){this.$gutterLayer.removeGutterDecoration(n,t)},this.updateBreakpoints=function(){this.$loop.schedule(this.CHANGE_GUTTER)},this.setAnnotations=function(n){this.$gutterLayer.setAnnotations(n),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(n,t,i){this.scrollCursorIntoView(n,i),this.scrollCursorIntoView(t,i)},this.scrollCursorIntoView=function(n,t){var u;if(this.$size.scrollerHeight!==0){var f=this.$cursorLayer.getPixelPosition(n),i=f.left,r=f.top;this.scrollTop>r?(t&&(r-=t*this.$size.scrollerHeight),this.session.setScrollTop(r)):this.scrollTop+this.$size.scrollerHeight<r+this.lineHeight&&(t&&(r+=t*this.$size.scrollerHeight),this.session.setScrollTop(r+this.lineHeight-this.$size.scrollerHeight)),u=this.scrollLeft,u>i?(i<this.$padding+2*this.layerConfig.characterWidth&&(i=0),this.session.setScrollLeft(i)):u+this.$size.scrollerWidth<i+this.characterWidth&&this.session.setScrollLeft(Math.round(i+this.characterWidth-this.$size.scrollerWidth))}},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(n){this.session.setScrollTop(n*this.lineHeight)},this.alignCursor=function(n,t){typeof n=="number"&&(n={row:n,column:0});var r=this.$cursorLayer.getPixelPosition(n),u=this.$size.scrollerHeight-this.lineHeight,i=r.top-u*(t||0);return this.session.setScrollTop(i),i},this.STEPS=8,this.$calcSteps=function(n,t){for(var i=0,u=this.STEPS,r=[],f=function(n,t,i){return i*(Math.pow(n-1,3)+1)+t},i=0;i<u;++i)r.push(f(i/this.STEPS,n,t-n));return r},this.scrollToLine=function(n,t,i,r){var e=this.$cursorLayer.getPixelPosition({row:n,column:0}),u=e.top,f;t&&(u-=this.$size.scrollerHeight/2),f=this.scrollTop,this.session.setScrollTop(u),i!==!1&&this.animateScrolling(f,r)},this.animateScrolling=function(n,t){var r=this.scrollTop,i,u;this.$animatedScroll&&(i=this,u=i.$calcSteps(n,r),this.$scrollAnimation={from:n,to:r},clearInterval(this.$timer),i.session.setScrollTop(u.shift()),this.$timer=setInterval(function(){u.length?(i.session.setScrollTop(u.shift()),i.session.$scrollTop=r):r!=null?(i.session.$scrollTop=-1,i.session.setScrollTop(r),r=null):(i.$timer=clearInterval(i.$timer),i.$scrollAnimation=null,t&&t())},10))},this.scrollToY=function(n){this.scrollTop!==n&&(this.$loop.schedule(this.CHANGE_SCROLL),this.scrollTop=n)},this.scrollToX=function(n){n<0&&(n=0),this.scrollLeft!==n&&(this.scrollLeft=n),this.$loop.schedule(this.CHANGE_H_SCROLL)},this.scrollBy=function(n,t){t&&this.session.setScrollTop(this.session.getScrollTop()+t),n&&this.session.setScrollLeft(this.session.getScrollLeft()+n)},this.isScrollableBy=function(n,t){return t<0&&this.session.getScrollTop()>=1?!0:t>0&&this.session.getScrollTop()+this.$size.scrollerHeight-this.layerConfig.maxHeight<-1?!0:void 0},this.pixelToScreenCoordinates=function(n,t){var i=this.scroller.getBoundingClientRect(),r=(n+this.scrollLeft-i.left-this.$padding)/this.characterWidth,f=Math.floor((t+this.scrollTop-i.top)/this.lineHeight),u=Math.round(r);return{row:f,column:u,side:r-u>0?1:-1}},this.screenToTextCoordinates=function(n,t){var i=this.scroller.getBoundingClientRect(),r=Math.round((n+this.scrollLeft-i.left-this.$padding)/this.characterWidth),u=Math.floor((t+this.scrollTop-i.top)/this.lineHeight);return this.session.screenToDocumentPosition(u,Math.max(r,0))},this.textToScreenCoordinates=function(n,t){var i=this.scroller.getBoundingClientRect(),r=this.session.documentToScreenPosition(n,t),u=this.$padding+Math.round(r.column*this.characterWidth),f=r.row*this.lineHeight;return{pageX:i.left+u-this.scrollLeft,pageY:i.top+f-this.scrollTop}},this.visualizeFocus=function(){r.addCssClass(this.container,"ace_focus")},this.visualizeBlur=function(){r.removeCssClass(this.container,"ace_focus")},this.showComposition=function(){this.$composition||(this.$composition={keepTextAreaAtCursor:this.$keepTextAreaAtCursor,cssText:this.textarea.style.cssText}),this.$keepTextAreaAtCursor=!0,r.addCssClass(this.textarea,"ace_composition"),this.textarea.style.cssText="",this.$moveTextAreaToCursor()},this.setCompositionText=function(){this.$moveTextAreaToCursor()},this.hideComposition=function(){this.$composition&&(r.removeCssClass(this.textarea,"ace_composition"),this.$keepTextAreaAtCursor=this.$composition.keepTextAreaAtCursor,this.textarea.style.cssText=this.$composition.cssText,this.$composition=null)},this.setTheme=function(n){function i(i){if(t.$themeValue==n&&i.cssClass){r.importCssString(i.cssText,i.cssClass,t.container.ownerDocument),t.theme&&r.removeCssClass(t.container,t.theme.cssClass),t.$theme=i.cssClass,t.theme=i,r.addCssClass(t.container,i.cssClass),r.setCssClass(t.container,"ace_dark",i.isDark);var u=i.padding||4;t.$padding&&u!=t.$padding&&t.setPadding(u),t.$size&&(t.$size.width=0,t.onResize()),t._dispatchEvent("themeLoaded",{theme:i})}}var t=this,f;this.$themeValue=n,t._dispatchEvent("themeChange",{theme:n}),n&&typeof n!="string"?i(n):(f=n||"ace/theme/textmate",u.loadModule(["theme",f],i))},this.getTheme=function(){return this.$themeValue},this.setStyle=function(n,t){r.setCssClass(this.container,n,t!=0)},this.unsetStyle=function(n){r.removeCssClass(this.container,n)},this.destroy=function(){this.$textLayer.destroy(),this.$cursorLayer.destroy()}}.call(f.prototype),u.defineOptions(f.prototype,"renderer",{animatedScroll:{initialValue:!1},showInvisibles:{set:function(n){this.$textLayer.setShowInvisibles(n)&&this.$loop.schedule(this.CHANGE_TEXT)},initialValue:!1},showPrintMargin:{set:function(){this.$updatePrintMargin()},initialValue:!0},printMarginColumn:{set:function(){this.$updatePrintMargin()},initialValue:80},printMargin:{set:function(n){typeof n=="number"&&(this.$printMarginColumn=n),this.$showPrintMargin=!!n,this.$updatePrintMargin()},get:function(){return this.$showPrintMargin&&this.$printMarginColumn}},showGutter:{set:function(n){this.$gutter.style.display=n?"block":"none",this.onGutterResize()},initialValue:!0},fadeFoldWidgets:{set:function(n){r.setCssClass(this.$gutter,"ace_fade-fold-widgets",n)},initialValue:!1},showFoldWidgets:{set:function(n){this.$gutterLayer.setShowFoldWidgets(n)},initialValue:!0},displayIndentGuides:{set:function(n){this.$textLayer.setDisplayIndentGuides(n)&&this.$loop.schedule(this.CHANGE_TEXT)},initialValue:!0},highlightGutterLine:{set:function(n){if(!this.$gutterLineHighlight){this.$gutterLineHighlight=r.createElement("div"),this.$gutterLineHighlight.className="ace_gutter-active-line",this.$gutter.appendChild(this.$gutterLineHighlight);return}this.$gutterLineHighlight.style.display=n?"":"none",this.$cursorLayer.$pixelPos&&this.$updateGutterLineHighlight()},initialValue:!1,value:!0},hScrollBarAlwaysVisible:{set:function(n){this.$hScrollBarAlwaysVisible=n,this.$hScrollBarAlwaysVisible&&this.$horizScroll||this.$loop.schedule(this.CHANGE_SCROLL)},initialValue:!1},fontSize:{set:function(n){typeof n=="number"&&(n+="px"),this.container.style.fontSize=n,this.updateFontSize()},initialValue:12},fontFamily:{set:function(n){this.container.style.fontFamily=n,this.updateFontSize()}}}),t.VirtualRenderer=f}),ace.define("ace/layer/gutter",["require","exports","module","ace/lib/dom","ace/lib/oop","ace/lib/lang","ace/lib/event_emitter"],function(n,t){var r=n("../lib/dom"),f=n("../lib/oop"),e=n("../lib/lang"),o=n("../lib/event_emitter").EventEmitter,u=function(n){this.element=r.createElement("div"),this.element.className="ace_layer ace_gutter-layer",n.appendChild(this.element),this.setShowFoldWidgets(this.$showFoldWidgets),this.gutterWidth=0,this.$annotations=[],this.$updateAnnotations=this.$updateAnnotations.bind(this)};(function(){f.implement(this,o),this.setSession=function(n){this.session&&this.session.removeEventListener("change",this.$updateAnnotations),this.session=n,n.on("change",this.$updateAnnotations)},this.addGutterDecoration=function(n,t){window.console&&console.warn&&console.warn("deprecated use session.addGutterDecoration"),this.session.addGutterDecoration(n,t)},this.removeGutterDecoration=function(n,t){window.console&&console.warn&&console.warn("deprecated use session.removeGutterDecoration"),this.session.removeGutterDecoration(n,t)},this.setAnnotations=function(n){var t,o,r,i,f;for(this.$annotations=[],r=0;r<n.length;r++){var u=n[r],o=u.row,t=this.$annotations[o];t||(t=this.$annotations[o]={text:[]}),i=u.text,i=i?e.escapeHTML(i):u.html||"",t.text.indexOf(i)===-1&&t.text.push(i),f=u.type,f=="error"?t.className=" ace_error":f=="warning"&&t.className!=" ace_error"?t.className=" ace_warning":f=="info"&&!t.className&&(t.className=" ace_info")}},this.$updateAnnotations=function(n){var u;if(this.$annotations.length){var t=n.data,f=t.range,i=f.start.row,r=f.end.row-i;r!==0&&(t.action=="removeText"||t.action=="removeLines"?this.$annotations.splice(i,r+1,null):(u=Array(r+1),u.unshift(i,1),this.$annotations.splice.apply(this.$annotations,u)))}},this.update=function(n){for(var a={className:""},e=[],t=n.firstRow,v=n.lastRow,i=this.session.getNextFoldLine(t),o=i?i.start.row:Infinity,s=this.$showFoldWidgets&&this.session.foldWidgets,y=this.session.$breakpoints,p=this.session.$decorations,w=this.session.$firstLineNumber,h=0,l,u,f,c;;){if(t>o&&(t=i.end.row+1,i=this.session.getNextFoldLine(t,i),o=i?i.start.row:Infinity),t>v)break;l=this.$annotations[t]||a,e.push("<div class='ace_gutter-cell ",y[t]||"",p[t]||"",l.className,"' style='height:",this.session.getRowLength(t)*n.lineHeight,"px;'>",h=t+w),s&&(u=s[t],u==null&&(u=s[t]=this.session.getFoldWidget(t)),u&&e.push("<span class='ace_fold-widget ace_",u,u=="start"&&t==o&&t<i.end.row?" ace_closed":" ace_open","' style='height:",n.lineHeight,"px","'><\/span>")),e.push("<\/div>"),t++}this.element=r.setInnerHtml(this.element,e.join("")),this.element.style.height=n.minHeight+"px",this.session.$useWrapMode&&(h=this.session.getLength()),f=(""+h).length*n.characterWidth,c=this.$padding||this.$computePadding(),f+=c.left+c.right,f!==this.gutterWidth&&(this.gutterWidth=f,this.element.style.width=Math.ceil(this.gutterWidth)+"px",this._emit("changeGutterWidth",f))},this.$showFoldWidgets=!0,this.setShowFoldWidgets=function(n){n?r.addCssClass(this.element,"ace_folding-enabled"):r.removeCssClass(this.element,"ace_folding-enabled"),this.$showFoldWidgets=n,this.$padding=null},this.getShowFoldWidgets=function(){return this.$showFoldWidgets},this.$computePadding=function(){if(!this.element.firstChild)return{left:0,right:0};var n=r.computedStyle(this.element.firstChild);return this.$padding={},this.$padding.left=parseInt(n.paddingLeft)+1,this.$padding.right=parseInt(n.paddingRight),this.$padding},this.getRegion=function(n){var t=this.$padding||this.$computePadding(),i=this.element.getBoundingClientRect();return n.x<t.left+i.left?"markers":this.$showFoldWidgets&&n.x>i.right-t.right?"foldWidgets":void 0}}).call(u.prototype),t.Gutter=u}),ace.define("ace/layer/marker",["require","exports","module","ace/range","ace/lib/dom"],function(n,t){var r=n("../range").Range,u=n("../lib/dom"),f=function(n){this.element=u.createElement("div"),this.element.className="ace_layer ace_marker-layer",n.appendChild(this.element)};(function(){this.$padding=0,this.setPadding=function(n){this.$padding=n},this.setSession=function(n){this.session=n},this.setMarkers=function(n){this.markers=n},this.update=function(n){var n=n||this.config,r,f,t,i,e,o;if(n){this.config=n,r=[];for(f in this.markers){if(t=this.markers[f],!t.range){t.update(r,this,this.session,n);continue}(i=t.range.clipRows(n.firstRow,n.lastRow),i.isEmpty())||(i=i.toScreenRange(this.session),t.renderer?(e=this.$getTop(i.start.row,n),o=this.$padding+i.start.column*n.characterWidth,t.renderer(r,i,o,e,n)):t.type=="fullLine"?this.drawFullLineMarker(r,i,t.clazz,n):t.type=="screenLine"?this.drawScreenLineMarker(r,i,t.clazz,n):i.isMultiLine()?t.type=="text"?this.drawTextMarker(r,i,t.clazz,n):this.drawMultiLineMarker(r,i,t.clazz,n):this.drawSingleLineMarker(r,i,t.clazz+" ace_start",n))}this.element=u.setInnerHtml(this.element,r.join(""))}},this.$getTop=function(n,t){return(n-t.firstRowScreen)*t.lineHeight},this.drawTextMarker=function(n,t,i,u,f){var e=t.start.row,o=new r(e,t.start.column,e,this.session.getScreenLastRowColumn(e));for(this.drawSingleLineMarker(n,o,i+" ace_start",u,1,f),e=t.end.row,o=new r(e,0,e,t.end.column),this.drawSingleLineMarker(n,o,i,u,0,f),e=t.start.row+1;e<t.end.row;e++)o.start.row=e,o.end.row=e,o.end.column=this.session.getScreenLastRowColumn(e),this.drawSingleLineMarker(n,o,i,u,1,f)},this.drawMultiLineMarker=function(n,t,i,r,u){var o=this.$padding,f=r.lineHeight,e=this.$getTop(t.start.row,r),h=o+t.start.column*r.characterWidth,s;(u=u||"",n.push("<div class='",i," ace_start' style='","height:",f,"px;","right:0;","top:",e,"px;","left:",h,"px;",u,"'><\/div>"),e=this.$getTop(t.end.row,r),s=t.end.column*r.characterWidth,n.push("<div class='",i,"' style='","height:",f,"px;","width:",s,"px;","top:",e,"px;","left:",o,"px;",u,"'><\/div>"),f=(t.end.row-t.start.row-1)*r.lineHeight,f<0)||(e=this.$getTop(t.start.row+1,r),n.push("<div class='",i,"' style='","height:",f,"px;","right:0;","top:",e,"px;","left:",o,"px;",u,"'><\/div>"))},this.drawSingleLineMarker=function(n,t,i,r,u,f){var e=r.lineHeight,o=(t.end.column+(u||0)-t.start.column)*r.characterWidth,s=this.$getTop(t.start.row,r),h=this.$padding+t.start.column*r.characterWidth;n.push("<div class='",i,"' style='","height:",e,"px;","width:",o,"px;","top:",s,"px;","left:",h,"px;",f||"","'><\/div>")},this.drawFullLineMarker=function(n,t,i,r,u){var f=this.$getTop(t.start.row,r),e=r.lineHeight;t.start.row!=t.end.row&&(e+=this.$getTop(t.end.row,r)-f),n.push("<div class='",i,"' style='","height:",e,"px;","top:",f,"px;","left:0;right:0;",u||"","'><\/div>")},this.drawScreenLineMarker=function(n,t,i,r,u){var f=this.$getTop(t.start.row,r),e=r.lineHeight;n.push("<div class='",i,"' style='","height:",e,"px;","top:",f,"px;","left:0;right:0;",u||"","'><\/div>")}}).call(f.prototype),t.Marker=f}),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(n,t){var o=n("../lib/oop"),u=n("../lib/dom"),r=n("../lib/lang"),f=n("../lib/useragent"),s=n("../lib/event_emitter").EventEmitter,e=function(n){this.element=u.createElement("div"),this.element.className="ace_layer ace_text-layer",n.appendChild(this.element),this.$characterSize={width:0,height:0},this.checkForSizeChanges(),this.$pollSizeChanges()};(function(){o.implement(this,s),this.EOF_CHAR="¶",this.EOL_CHAR="¬",this.TAB_CHAR="→",this.SPACE_CHAR="·",this.$padding=0,this.setPadding=function(n){this.$padding=n,this.element.style.padding="0 "+n+"px"},this.getLineHeight=function(){return this.$characterSize.height||1},this.getCharacterWidth=function(){return this.$characterSize.width||1},this.checkForSizeChanges=function(){var n=this.$measureSizes(),t;n&&(this.$characterSize.width!==n.width||this.$characterSize.height!==n.height)&&(this.$measureNode.style.fontWeight="bold",t=this.$measureSizes(),this.$measureNode.style.fontWeight="",this.$characterSize=n,this.allowBoldFonts=t&&t.width===n.width&&t.height===n.height,this._emit("changeCharacterSize",{data:n}))},this.$pollSizeChanges=function(){var n=this;this.$pollSizeChangesTimer=setInterval(function(){n.checkForSizeChanges()},500)},this.$fontStyles={fontFamily:1,fontSize:1,fontWeight:1,fontStyle:1,lineHeight:1},this.$measureSizes=f.isIE||f.isOldGecko?function(){var e=1e3,t,i,n,s,o,f;if(!this.$measureNode)if(t=this.$measureNode=u.createElement("div"),n=t.style,n.width=n.height="auto",n.left=n.top=-e*40+"px",n.visibility="hidden",n.position="fixed",n.overflow="visible",n.whiteSpace="nowrap",t.innerHTML=r.stringRepeat("Xy",e),this.element.ownerDocument.body)this.element.ownerDocument.body.appendChild(t);else{for(i=this.element.parentNode;!u.hasCssClass(i,"ace_editor");)i=i.parentNode;i.appendChild(t)}if(!this.element.offsetWidth)return null;n=this.$measureNode.style,s=u.computedStyle(this.element);for(o in this.$fontStyles)n[o]=s[o];return f={height:this.$measureNode.offsetHeight,width:this.$measureNode.offsetWidth/(e*2)},f.width==0||f.height==0?null:f}:function(){var i,n,t,f,r;if(!this.$measureNode){for(i=this.$measureNode=u.createElement("div"),n=i.style,n.width=n.height="auto",n.left=n.top="-100px",n.visibility="hidden",n.position="fixed",n.overflow="visible",n.whiteSpace="nowrap",i.innerHTML="X",t=this.element.parentNode;t&&!u.hasCssClass(t,"ace_editor");)t=t.parentNode;if(!t)return this.$measureNode=null;t.appendChild(i)}return f=this.$measureNode.getBoundingClientRect(),r={height:f.height,width:f.width},r.width==0||r.height==0?null:r},this.setSession=function(n){this.session=n,this.$computeTabString()},this.showInvisibles=!1,this.setShowInvisibles=function(n){return this.showInvisibles==n?!1:(this.showInvisibles=n,this.$computeTabString(),!0)},this.displayIndentGuides=!0,this.setDisplayIndentGuides=function(n){return this.displayIndentGuides==n?!1:(this.displayIndentGuides=n,this.$computeTabString(),!0)},this.$tabStrings=[],this.onChangeTabSize=this.$computeTabString=function(){var e=this.session.getTabSize(),u,n,t,i,f;for(this.tabSize=e,u=this.$tabStrings=[0],n=1;n<e+1;n++)this.showInvisibles?u.push("<span class='ace_invisible'>"+this.TAB_CHAR+r.stringRepeat(" ",n-1)+"<\/span>"):u.push(r.stringRepeat(" ",n));this.displayIndentGuides&&(this.$indentGuideRe=/\s\S| \t|\t |\s$/,t="ace_indent-guide",this.showInvisibles?(t+=" ace_invisible",i=r.stringRepeat(this.SPACE_CHAR,this.tabSize),f=this.TAB_CHAR+r.stringRepeat(" ",this.tabSize-1)):(i=r.stringRepeat(" ",this.tabSize),f=i),this.$tabStrings[" "]="<span class='"+t+"'>"+i+"<\/span>",this.$tabStrings["\t"]="<span class='"+t+"'>"+f+"<\/span>")},this.updateLines=function(n,t,i){var r,f,s,h;(this.config.lastRow!=n.lastRow||this.config.firstRow!=n.firstRow)&&this.scrollLines(n),this.config=n;var e=Math.max(t,n.firstRow),l=Math.min(i,n.lastRow),a=this.element.childNodes,c=0;for(r=n.firstRow;r<e;r++){if(f=this.session.getFoldLine(r),f){if(f.containsRow(e)){e=f.start.row;break}r=f.end.row}c++}for(var r=e,f=this.session.getNextFoldLine(r),o=f?f.start.row:Infinity;;){if(r>o&&(r=f.end.row+1,f=this.session.getNextFoldLine(r,f),o=f?f.start.row:Infinity),r>l)break;s=a[c++],s&&(h=[],this.$renderLine(h,r,!this.$useLineGroups(),r==o?f:!1),u.setInnerHtml(s,h.join(""))),r++}},this.scrollLines=function(n){var t=this.config,i,r,u;if((this.config=n,!t||t.lastRow<n.firstRow)||n.lastRow<t.firstRow)return this.update(n);if(i=this.element,t.firstRow<n.firstRow)for(r=this.session.getFoldedRowCount(t.firstRow,n.firstRow-1);r>0;r--)i.removeChild(i.firstChild);if(t.lastRow>n.lastRow)for(r=this.session.getFoldedRowCount(n.lastRow+1,t.lastRow);r>0;r--)i.removeChild(i.lastChild);n.firstRow<t.firstRow&&(u=this.$renderLinesFragment(n,n.firstRow,t.firstRow-1),i.firstChild?i.insertBefore(u,i.firstChild):i.appendChild(u)),n.lastRow>t.lastRow&&(u=this.$renderLinesFragment(n,t.lastRow+1,n.lastRow),i.appendChild(u))},this.$renderLinesFragment=function(n,t,i){for(var o=this.element.ownerDocument.createDocumentFragment(),r=t,f=this.session.getNextFoldLine(r),s=f?f.start.row:Infinity,e,h,c;;){if(r>s&&(r=f.end.row+1,f=this.session.getNextFoldLine(r,f),s=f?f.start.row:Infinity),r>i)break;if(e=u.createElement("div"),h=[],this.$renderLine(h,r,!1,r==s?f:!1),e.innerHTML=h.join(""),this.$useLineGroups())e.className="ace_line_group",o.appendChild(e);else for(c=e.childNodes;c.length;)o.appendChild(c[0]);r++}return o},this.update=function(n){this.config=n;for(var r=[],e=n.firstRow,o=n.lastRow,t=e,i=this.session.getNextFoldLine(t),f=i?i.start.row:Infinity;;){if(t>f&&(t=i.end.row+1,i=this.session.getNextFoldLine(t,i),f=i?i.start.row:Infinity),t>o)break;this.$useLineGroups()&&r.push("<div class='ace_line_group'>"),this.$renderLine(r,t,!1,t==f?i:!1),this.$useLineGroups()&&r.push("<\/div>"),t++}this.element=u.setInnerHtml(this.element,r.join(""))},this.$textToken={text:!0,rparen:!0,lparen:!0},this.$renderToken=function(n,t,i,u){var f=this,h=/\t|&|<|( +)|([\x00-\x1f\x80-\xa0\u1680\u180E\u2000-\u200f\u2028\u2029\u202F\u205F\u3000\uFEFF])|[\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]/g,c=function(n,i,u,e){var s,h,c;return i?f.showInvisibles?"<span class='ace_invisible'>"+r.stringRepeat(f.SPACE_CHAR,n.length)+"<\/span>":r.stringRepeat(" ",n.length):n=="&"?"&#38;":n=="<"?"&#60;":n=="\t"?(s=f.session.getScreenTabSize(t+e),t+=s-1,f.$tabStrings[s]):n=="　"?(h=f.showInvisibles?"ace_cjk ace_invisible":"ace_cjk",c=f.showInvisibles?f.SPACE_CHAR:"",t+=1,"<span class='"+h+"' style='width:"+f.config.characterWidth*2+"px'>"+c+"<\/span>"):u?"<span class='ace_invisible ace_invalid'>"+f.SPACE_CHAR+"<\/span>":(t+=1,"<span class='ace_cjk' style='width:"+f.config.characterWidth*2+"px'>"+n+"<\/span>")},o=u.replace(h,c),s,e;return this.$textToken[i.type]?n.push(o):(s="ace_"+i.type.replace(/\./g," ace_"),e="",i.type=="fold"&&(e=" style='width:"+i.value.length*this.config.characterWidth+"px;' "),n.push("<span class='",s,"'",e,">",o,"<\/span>")),t+u.length},this.renderIndentGuide=function(n,t){var i=t.search(this.$indentGuideRe);return i<=0?t:t[0]==" "?(i-=i%this.tabSize,n.push(r.stringRepeat(this.$tabStrings[" "],i/this.tabSize)),t.substr(i)):t[0]=="\t"?(n.push(r.stringRepeat(this.$tabStrings["\t"],i)),t.substr(i)):t},this.$renderWrappedLine=function(n,t,i,r){for(var f=0,c=0,o=i[0],e=0,h,u,s=0;s<t.length;s++){if(h=t[s],u=h.value,s==0&&this.displayIndentGuides){if(f=u.length,u=this.renderIndentGuide(n,u),!u)continue;f-=u.length}if(f+u.length<o)e=this.$renderToken(n,e,h,u),f+=u.length;else{while(f+u.length>=o)e=this.$renderToken(n,e,h,u.substring(0,o-f)),u=u.substring(o-f),f=o,r||n.push("<\/div>","<div class='ace_line' style='height:",this.config.lineHeight,"px'>"),c++,e=0,o=i[c]||Number.MAX_VALUE;u.length!=0&&(f+=u.length,e=this.$renderToken(n,e,h,u))}}},this.$renderSimpleLine=function(n,t){var u=0,r=t[0],i=r.value,f;for(this.displayIndentGuides&&(i=this.renderIndentGuide(n,i)),i&&(u=this.$renderToken(n,u,r,i)),f=1;f<t.length;f++)r=t[f],i=r.value,u=this.$renderToken(n,u,r,i)},this.$renderLine=function(n,t,i,r){var u,f;r||r==0||(r=this.session.getFoldLine(t)),u=r?this.$getFoldLineTokens(t,r):this.session.getTokens(t),i||n.push("<div class='ace_line' style='height:",this.config.lineHeight,"px'>"),u.length&&(f=this.session.getRowSplitData(t),f&&f.length?this.$renderWrappedLine(n,u,f,i):this.$renderSimpleLine(n,u)),this.showInvisibles&&(r&&(t=r.end.row),n.push("<span class='ace_invisible'>",t==this.session.getLength()-1?this.EOF_CHAR:this.EOL_CHAR,"<\/span>")),i||n.push("<\/div>")},this.$getFoldLineTokens=function(n,t){function f(n,t,r){for(var u=0,e=0,f;e+n[u].value.length<t;)if(e+=n[u].value.length,u++,u==n.length)return;for(e!=t&&(f=n[u].value.substring(t-e),f.length>r-t&&(f=f.substring(0,r-t)),i.push({type:n[u].type,value:f}),e=t+f.length,u+=1);e<r&&u<n.length;)f=n[u].value,f.length+e>r?i.push({type:n[u].type,value:f.substring(0,r-e)}):i.push(n[u]),e+=f.length,u+=1}var u=this.session,i=[],r=u.getTokens(n);return t.walk(function(n,t,e,o,s){n!=null?i.push({type:"fold",value:n}):(s&&(r=u.getTokens(t)),r.length&&f(r,o,e))},t.end.row,this.session.getLine(t.end.row).length),i},this.$useLineGroups=function(){return this.session.getUseWrapMode()},this.destroy=function(){clearInterval(this.$pollSizeChangesTimer),this.$measureNode&&this.$measureNode.parentNode.removeChild(this.$measureNode),delete this.$measureNode}}).call(e.prototype),t.Text=e}),ace.define("ace/layer/cursor",["require","exports","module","ace/lib/dom"],function(n,t){var r=n("../lib/dom"),u=function(n){this.element=r.createElement("div"),this.element.className="ace_layer ace_cursor-layer",n.appendChild(this.element),this.isVisible=!1,this.isBlinking=!0,this.blinkInterval=1e3,this.smoothBlinking=!1,this.cursors=[],this.cursor=this.addCursor(),r.addCssClass(this.element,"ace_hidden-cursors")};(function(){this.$padding=0,this.setPadding=function(n){this.$padding=n},this.setSession=function(n){this.session=n},this.setBlinking=function(n){n!=this.isBlinking&&(this.isBlinking=n,this.restartTimer())},this.setBlinkInterval=function(n){n!=this.blinkInterval&&(this.blinkInterval=n,this.restartTimer())},this.setSmoothBlinking=function(n){n!=this.smoothBlinking&&(this.smoothBlinking=n,n?r.addCssClass(this.element,"ace_smooth-blinking"):r.removeCssClass(this.element,"ace_smooth-blinking"),this.restartTimer())},this.addCursor=function(){var n=r.createElement("div");return n.className="ace_cursor",this.element.appendChild(n),this.cursors.push(n),n},this.removeCursor=function(){if(this.cursors.length>1){var n=this.cursors.pop();return n.parentNode.removeChild(n),n}},this.hideCursor=function(){this.isVisible=!1,r.addCssClass(this.element,"ace_hidden-cursors"),this.restartTimer()},this.showCursor=function(){this.isVisible=!0,r.removeCssClass(this.element,"ace_hidden-cursors"),this.restartTimer()},this.restartTimer=function(){var n,t;for(clearInterval(this.intervalId),clearTimeout(this.timeoutId),this.smoothBlinking&&r.removeCssClass(this.element,"ace_smooth-blinking"),n=this.cursors.length;n--;)this.cursors[n].style.opacity="";this.isBlinking&&this.blinkInterval&&this.isVisible&&(this.smoothBlinking&&setTimeout(function(){r.addCssClass(this.element,"ace_smooth-blinking")}.bind(this)),t=function(){this.timeoutId=setTimeout(function(){for(var n=this.cursors.length;n--;)this.cursors[n].style.opacity=0}.bind(this),.6*this.blinkInterval)}.bind(this),this.intervalId=setInterval(function(){for(var n=this.cursors.length;n--;)this.cursors[n].style.opacity="";t()}.bind(this),this.blinkInterval),t())},this.getPixelPosition=function(n,t){if(!this.config||!this.session)return{left:0,top:0};n||(n=this.session.selection.getCursor());var i=this.session.documentToScreenPosition(n),r=this.$padding+i.column*this.config.characterWidth,u=(i.row-(t?this.config.firstRowScreen:0))*this.config.lineHeight;return{left:r,top:u}},this.update=function(n){var r,e,t,u,o;this.config=n;var i=this.session.$selectionMarkers,r=0,f=0;for((i===undefined||i.length===0)&&(i=[{cursor:null}]),r=0,e=i.length;r<e;r++)(t=this.getPixelPosition(i[r].cursor,!0),(t.top>n.height+n.offset||t.top<-n.offset)&&r>1)||(u=(this.cursors[f++]||this.addCursor()).style,u.left=t.left+"px",u.top=t.top+"px",u.width=n.characterWidth+"px",u.height=n.lineHeight+"px");while(this.cursors.length>f)this.removeCursor();o=this.session.getOverwrite(),this.$setOverwrite(o),this.$pixelPos=t,this.restartTimer()},this.$setOverwrite=function(n){n!=this.overwrite&&(this.overwrite=n,n?r.addCssClass(this.element,"ace_overwrite-cursors"):r.removeCssClass(this.element,"ace_overwrite-cursors"))},this.destroy=function(){clearInterval(this.intervalId),clearTimeout(this.timeoutId)}}).call(u.prototype),t.Cursor=u}),ace.define("ace/scrollbar",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/event","ace/lib/event_emitter"],function(n,t){var f=n("./lib/oop"),r=n("./lib/dom"),e=n("./lib/event"),o=n("./lib/event_emitter").EventEmitter,u=function(n){this.element=r.createElement("div"),this.element.className="ace_scrollbar",this.inner=r.createElement("div"),this.inner.className="ace_scrollbar-inner",this.element.appendChild(this.inner),n.appendChild(this.element),this.width=r.scrollbarWidth(n.ownerDocument),this.element.style.width=(this.width||15)+5+"px",e.addListener(this.element,"scroll",this.onScroll.bind(this))};(function(){f.implement(this,o),this.onScroll=function(){this.skipEvent||(this.scrollTop=this.element.scrollTop,this._emit("scroll",{data:this.scrollTop})),this.skipEvent=!1},this.getWidth=function(){return this.width},this.setHeight=function(n){this.element.style.height=n+"px"},this.setInnerHeight=function(n){this.inner.style.height=n+"px"},this.setScrollTop=function(n){this.scrollTop!=n&&(this.skipEvent=!0,this.scrollTop=this.element.scrollTop=n)}}).call(u.prototype),t.ScrollBar=u}),ace.define("ace/renderloop",["require","exports","module","ace/lib/event"],function(n,t){var u=n("./lib/event"),r=function(n,t){this.onRender=n,this.pending=!1,this.changes=0,this.window=t||window};(function(){this.schedule=function(n){if(this.changes=this.changes|n,!this.pending){this.pending=!0;var t=this;u.nextFrame(function(){t.pending=!1;for(var n;n=t.changes;)t.changes=0,t.onRender(n)},this.window)}}}).call(r.prototype),t.RenderLoop=r}),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"],function(n,t){function c(n,t,i){return f.$options.wrap=!0,f.$options.needle=t,f.$options.backwards=i==-1,f.find(n)}function l(n,t){return n.row==t.row&&n.column==t.column}function a(n){n.$onAddRange=n.$onAddRange.bind(n),n.$onRemoveRange=n.$onRemoveRange.bind(n),n.$onMultiSelect=n.$onMultiSelect.bind(n),n.$onSingleSelect=n.$onSingleSelect.bind(n),t.onSessionChange.call(n,n),n.on("changeSession",t.onSessionChange.bind(n)),n.on("mousedown",p),n.commands.addCommands(u.defaultCommands),v(n)}function v(n){function u(){t&&(r.style.cursor="",t=!1)}var i=n.textInput.getElement(),t=!1,r=n.renderer.content;e.addListener(i,"keydown",function(n){n.keyCode==18&&!(n.ctrlKey||n.shiftKey||n.metaKey)?t||(r.style.cursor="crosshair",t=!0):t&&(r.style.cursor="")}),e.addListener(i,"keyup",u),e.addListener(i,"blur",u)}var y=n("./range_list").RangeList,r=n("./range").Range,o=n("./selection").Selection,p=n("./mouse/multi_select_handler").onMouseDown,e=n("./lib/event"),s=n("./lib/lang"),u=n("./commands/multi_select_commands"),h;t.commands=u.defaultCommands.concat(u.multiSelectCommands);var w=n("./search").Search,f=new w,b=n("./edit_session").EditSession;(function(){this.getSelectionMarkers=function(){return this.$selectionMarkers}}).call(b.prototype),function(){this.ranges=null,this.rangeList=null,this.addRange=function(n,t){var i,r;if(n){if(!this.inMultiSelectMode&&this.rangeCount==0){if(i=this.toOrientedRange(),this.rangeList.add(i),this.rangeList.add(n),this.rangeList.ranges.length!=2)return this.rangeList.removeAll(),t||this.fromOrientedRange(n);this.rangeList.removeAll(),this.rangeList.add(i),this.$onAddRange(i)}return n.cursor||(n.cursor=n.end),r=this.rangeList.add(n),this.$onAddRange(n),r.length&&this.$onRemoveRange(r),this.rangeCount>1&&!this.inMultiSelectMode&&(this._emit("multiSelect"),this.inMultiSelectMode=!0,this.session.$undoSelect=!1,this.rangeList.attach(this.session)),t||this.fromOrientedRange(n)}},this.toSingleRange=function(n){n=n||this.ranges[0];var t=this.rangeList.removeAll();t.length&&this.$onRemoveRange(t),n&&this.fromOrientedRange(n)},this.substractPoint=function(n){var t=this.rangeList.substractPoint(n);if(t)return this.$onRemoveRange(t),t[0]},this.mergeOverlappingRanges=function(){var n=this.rangeList.merge();n.length?this.$onRemoveRange(n):this.ranges[0]&&this.fromOrientedRange(this.ranges[0])},this.$onAddRange=function(n){this.rangeCount=this.rangeList.ranges.length,this.ranges.unshift(n),this._emit("addRange",{range:n})},this.$onRemoveRange=function(n){var t,i,r;for(this.rangeCount=this.rangeList.ranges.length,this.rangeCount==1&&this.inMultiSelectMode&&(t=this.rangeList.ranges.pop(),n.push(t),this.rangeCount=0),i=n.length;i--;)r=this.ranges.indexOf(n[i]),this.ranges.splice(r,1);this._emit("removeRange",{ranges:n}),this.rangeCount==0&&this.inMultiSelectMode&&(this.inMultiSelectMode=!1,this._emit("singleSelect"),this.session.$undoSelect=!0,this.rangeList.detach(this.session)),t=t||this.ranges[0],t&&!t.isEqual(this.getRange())&&this.fromOrientedRange(t)},this.$initRangeList=function(){this.rangeList||(this.rangeList=new y,this.ranges=[],this.rangeCount=0)},this.getAllRanges=function(){return this.rangeList.ranges.concat()},this.splitIntoLines=function(){var u,f,i,t,e;if(this.rangeCount>1){var o=this.rangeList.ranges,s=o[o.length-1],n=r.fromPoints(o[0].start,s.end);this.toSingleRange(),this.setSelectionRange(n,s.cursor==s.start)}else{var n=this.getRange(),l=this.isBackwards(),h=n.start.row,c=n.end.row;if(h==c){l?(u=n.end,f=n.start):(u=n.start,f=n.end),this.addRange(r.fromPoints(f,f)),this.addRange(r.fromPoints(u,u));return}for(i=[],t=this.getLineRange(h,!0),t.start.column=n.start.column,i.push(t),e=h+1;e<c;e++)i.push(this.getLineRange(e,!0));t=this.getLineRange(c,!0),t.end.column=n.end.column,i.push(t),i.forEach(this.addRange,this)}},this.toggleBlockSelection=function(){if(this.rangeCount>1){var n=this.rangeList.ranges,t=n[n.length-1],i=r.fromPoints(n[0].start,t.end);this.toSingleRange(),this.setSelectionRange(i,t.cursor==t.start)}else{var u=this.session.documentToScreenPosition(this.selectionLead),f=this.session.documentToScreenPosition(this.selectionAnchor),e=this.rectangularRangeBlock(u,f);e.forEach(this.addRange,this)}},this.rectangularRangeBlock=function(n,t,i){var u=[],b=n.column<t.column,s,y,p,e,a,h,f,w,o,v,c;for(b?(s=n.column,y=t.column):(s=t.column,y=n.column),p=n.row<t.row,p?(e=n.row,a=t.row):(e=t.row,a=n.row),s<0&&(s=0),e<0&&(e=0),e==a&&(i=!0),h=e;h<=a;h++){if(f=r.fromPoints(this.session.screenToDocumentPosition(h,s),this.session.screenToDocumentPosition(h,y)),f.isEmpty()){if(w&&l(f.end,w))break;w=f.end}f.cursor=b?f.start:f.end,u.push(f)}if(p&&u.reverse(),!i){for(o=u.length-1;u[o].isEmpty()&&o>0;)o--;if(o>0)for(v=0;u[v].isEmpty();)v++;for(c=o;c>=v;c--)u[c].isEmpty()&&u.splice(c,1)}return u}}.call(o.prototype),h=n("./editor").Editor,function(){this.updateSelectionMarkers=function(){this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.addSelectionMarker=function(n){n.cursor||(n.cursor=n.end);var t=this.getSelectionStyle();return n.marker=this.session.addMarker(n,"ace_selection",t),this.session.$selectionMarkers.push(n),this.session.selectionMarkerCount=this.session.$selectionMarkers.length,n},this.removeSelectionMarker=function(n){if(n.marker){this.session.removeMarker(n.marker);var t=this.session.$selectionMarkers.indexOf(n);t!=-1&&this.session.$selectionMarkers.splice(t,1),this.session.selectionMarkerCount=this.session.$selectionMarkers.length}},this.removeSelectionMarkers=function(n){for(var i=this.session.$selectionMarkers,t,u,r=n.length;r--;)(t=n[r],t.marker)&&(this.session.removeMarker(t.marker),u=i.indexOf(t),u!=-1&&i.splice(u,1));this.session.selectionMarkerCount=i.length},this.$onAddRange=function(n){this.addSelectionMarker(n.range),this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.$onRemoveRange=function(n){this.removeSelectionMarkers(n.ranges),this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.$onMultiSelect=function(){this.inMultiSelectMode||(this.inMultiSelectMode=!0,this.setStyle("ace_multiselect"),this.keyBinding.addKeyboardHandler(u.keyboardHandler),this.commands.setDefaultHandler("exec",this.$onMultiSelectExec),this.renderer.updateCursor(),this.renderer.updateBackMarkers())},this.$onSingleSelect=function(){this.session.multiSelect.inVirtualMode||(this.inMultiSelectMode=!1,this.unsetStyle("ace_multiselect"),this.keyBinding.removeKeyboardHandler(u.keyboardHandler),this.commands.removeDefaultHandler("exec",this.$onMultiSelectExec),this.renderer.updateCursor(),this.renderer.updateBackMarkers())},this.$onMultiSelectExec=function(n){var i=n.command,t=n.editor,r;if(t.multiSelect)return i.multiSelectAction?i.multiSelectAction=="forEach"?r=t.forEachSelection(i,n.args):i.multiSelectAction=="forEachLine"?r=t.forEachSelection(i,n.args,!0):i.multiSelectAction=="single"?(t.exitMultiSelectMode(),r=i.exec(t,n.args||{})):r=i.multiSelectAction(t,n.args||{}):(r=i.exec(t,n.args||{}),t.multiSelect.addRange(t.multiSelect.toOrientedRange()),t.multiSelect.mergeOverlappingRanges()),r},this.forEachSelection=function(n,t,i){var e,r,l,s;if(!this.inVirtualSelectionMode){var h=this.session,u=this.selection,f=u.rangeList,c,a=u._eventRegistry;for(u._eventRegistry={},e=new o(h),this.inVirtualSelectionMode=!0,r=f.ranges.length;r--;){if(i)while(r>0&&f.ranges[r].start.row==f.ranges[r-1].end.row)r--;e.fromOrientedRange(f.ranges[r]),this.selection=h.selection=e,l=n.exec(this,t||{}),!c==undefined&&(c=l),e.toOrientedRange(f.ranges[r])}return e.detach(),this.selection=h.selection=u,this.inVirtualSelectionMode=!1,u._eventRegistry=a,u.mergeOverlappingRanges(),s=this.renderer.$scrollAnimation,this.onCursorChange(),this.onSelectionChange(),s&&s.from==s.to&&this.renderer.animateScrolling(s.from),c}},this.exitMultiSelectMode=function(){this.inMultiSelectMode&&!this.inVirtualSelectionMode&&this.multiSelect.toSingleRange()},this.getCopyText=function(){var n="",r,t,i,u;if(this.inMultiSelectMode&&!this.inVirtualSelectionMode){for(r=this.multiSelect.rangeList.ranges,t=[],i=0;i<r.length;i++)t.push(this.session.getTextRange(r[i]));u=this.session.getDocument().getNewLineCharacter(),n=t.join(u),n.length==(t.length-1)*u.length&&(n="")}else this.selection.isEmpty()||(n=this.session.getTextRange(this.getSelectionRange()));return this._signal("copy",n),n},this.onPaste=function(n){var t,i,r,u;if(!this.$readOnly){if(this._signal("paste",n),!this.inMultiSelectMode||this.inVirtualSelectionMode)return this.insert(n);if(t=n.split(/\r\n|\r|\n/),i=this.selection.rangeList.ranges,t.length>i.length||t.length<2||!t[1])return this.commands.exec("insertstring",this,n);for(r=i.length;r--;)u=i[r],u.isEmpty()||this.session.remove(u),this.session.insert(u.start,t[r])}},this.findAll=function(n,t,i){var r,u,f;if(t=t||{},t.needle=n||t.needle,this.$search.set(t),r=this.$search.findAll(this.session),!r.length)return 0;for(this.$blockScrolling+=1,u=this.multiSelect,i||u.toSingleRange(r[0]),f=r.length;f--;)u.addRange(r[f],!0);return this.$blockScrolling-=1,r.length},this.selectMoreLines=function(n,t){var i=this.selection.toOrientedRange(),c=i.cursor==i.end,f=this.session.documentToScreenPosition(i.cursor),e,s,o,u,h;this.selection.$desiredColumn&&(f.column=this.selection.$desiredColumn),e=this.session.screenToDocumentPosition(f.row+n,f.column),i.isEmpty()?o=e:(s=this.session.documentToScreenPosition(c?i.end:i.start),o=this.session.screenToDocumentPosition(s.row+n,s.column)),c?(u=r.fromPoints(e,o),u.cursor=u.start):(u=r.fromPoints(o,e),u.cursor=u.end),u.desiredColumn=f.column,this.selection.inMultiSelectMode?t&&(h=i.cursor):this.selection.addRange(i),this.selection.addRange(u),h&&this.selection.substractPoint(h)},this.transposeSelections=function(n){for(var e=this.session,o=e.multiSelect,f=o.ranges,u,t,r,i=f.length;i--;)t=f[i],t.isEmpty()&&(r=e.getWordRange(t.start.row,t.start.column),t.start.row=r.start.row,t.start.column=r.start.column,t.end.row=r.end.row,t.end.column=r.end.column);for(o.mergeOverlappingRanges(),u=[],i=f.length;i--;)t=f[i],u.unshift(e.getTextRange(t));for(n<0?u.unshift(u.pop()):u.push(u.shift()),i=f.length;i--;)t=f[i],r=t.clone(),e.replace(t,u[i]),t.start.row=r.start.row,t.start.column=r.start.column},this.selectMore=function(n,t){var u=this.session,e=u.multiSelect,i=e.toOrientedRange(),f,r;i.isEmpty()&&(i=u.getWordRange(i.start.row,i.start.column),i.cursor=i.end,this.multiSelect.addRange(i)),f=u.getTextRange(i),r=c(u,f,n),r&&(r.cursor=n==-1?r.start:r.end,this.multiSelect.addRange(r)),t&&this.multiSelect.substractPoint(i.cursor)},this.alignCursors=function(){var u=this.session,e=u.multiSelect,n=e.ranges,o,l;if(n.length){o=-1,l=n.filter(function(n){if(n.cursor.row==o)return!0;o=n.cursor.row}),e.$onRemoveRange(l);var f=0,h=Infinity,v=n.map(function(n){var i=n.cursor,r=u.getLine(i.row),t=r.substr(i.column).search(/\S/g);return t==-1&&(t=0),i.column>f&&(f=i.column),t<h&&(h=t),t});n.forEach(function(n,t){var i=n.cursor,e=f-i.column,o=v[t]-h;e>o?u.insert(i,s.stringRepeat(" ",e-o)):u.remove(new r(i.row,i.column,i.row,i.column-e+o)),n.start.column=n.end.column=f,n.start.row=n.end.row=i.row,n.cursor=n.end}),e.fromOrientedRange(n[0]),this.renderer.updateCursor(),this.renderer.updateBackMarkers()}else{var t=this.selection.getRange(),c=t.start.row,a=t.end.row,i=this.session.doc.removeLines(c,a);i=this.$reAlignText(i),this.session.doc.insertLines(c,i),t.start.column=0,t.end.column=i[i.length-1].length,this.selection.setRange(t)}},this.$reAlignText=function(n){function r(n){return s.stringRepeat(" ",n)}function o(n){return n[2]?r(t)+n[2]+r(u-n[2].length+i)+n[4].replace(/^([=:])\s+/,"$1 "):n[0]}function h(n){return n[2]?r(t+u-n[2].length)+n[2]+r(i," ")+n[4].replace(/^([=:])\s+/,"$1 "):n[0]}function c(n){return n[2]?r(t)+n[2]+r(i)+n[4].replace(/^([=:])\s+/,"$1 "):n[0]}var f=!0,e=!0,t,u,i;return n.map(function(n){var r=n.match(/(\s*)(.*?)(\s*)([=:].*)/);return r?t==null?(t=r[1].length,u=r[2].length,i=r[3].length,r):(t+u+i!=r[1].length+r[2].length+r[3].length&&(e=!1),t!=r[1].length&&(f=!1),t>r[1].length&&(t=r[1].length),u<r[2].length&&(u=r[2].length),i>r[3].length&&(i=r[3].length),r):[n]}).map(f?e?h:o:c)}}.call(h.prototype),t.onSessionChange=function(n){var t=n.session,i;t.multiSelect||(t.$selectionMarkers=[],t.selection.$initRangeList(),t.multiSelect=t.selection),this.multiSelect=t.multiSelect,i=n.oldSession,i&&(i.multiSelect.removeEventListener("addRange",this.$onAddRange),i.multiSelect.removeEventListener("removeRange",this.$onRemoveRange),i.multiSelect.removeEventListener("multiSelect",this.$onMultiSelect),i.multiSelect.removeEventListener("singleSelect",this.$onSingleSelect)),t.multiSelect.on("addRange",this.$onAddRange),t.multiSelect.on("removeRange",this.$onRemoveRange),t.multiSelect.on("multiSelect",this.$onMultiSelect),t.multiSelect.on("singleSelect",this.$onSingleSelect),this.inMultiSelectMode!=t.selection.inMultiSelectMode&&(t.selection.inMultiSelectMode?this.$onMultiSelect():this.$onSingleSelect())},t.MultiSelect=a}),ace.define("ace/mouse/multi_select_handler",["require","exports","module","ace/lib/event"],function(n,t){function r(n,t){return n.row==t.row&&n.column==t.column}function u(n){var b=n.domEvent,c=b.altKey,k=b.shiftKey,o=n.getAccelKey(),s=n.getButton(),e,w,u,nt,tt,it;if(n.editor.inMultiSelectMode&&s==2){n.editor.textInput.onContextMenu(n.domEvent);return}if(!o&&!c){s==0&&n.editor.inMultiSelectMode&&n.editor.exitMultiSelectMode();return}var t=n.editor,i=t.selection,h=t.inMultiSelectMode,l=n.getDocumentPosition(),rt=i.getCursor(),ut=n.inSelection()||i.isEmpty()&&r(l,rt),a=n.x,v=n.y,ft=function(n){a=n.clientX,v=n.clientY},d=function(){var n=t.renderer.pixelToScreenCoordinates(a,v),f=g.screenToDocumentPosition(n.row,n.column);r(p,n)&&r(f,i.selectionLead)||(p=n,t.selection.moveCursorToPosition(f),t.selection.clearSelection(),t.renderer.scrollCursorIntoView(),t.removeSelectionMarkers(u),u=i.rectangularRangeBlock(p,y),u.forEach(t.addSelectionMarker,t),t.updateSelectionMarkers())},g=t.session,y=t.renderer.pixelToScreenCoordinates(a,v),p=y;if(!o||k||c||s!=0){if(c&&s==0)return n.stop(),h&&!o?i.toSingleRange():!h&&o&&i.addRange(),u=[],k?(y=g.documentToScreenPosition(i.lead),d()):(i.moveCursorToPosition(l),i.clearSelection()),nt=function(){clearInterval(it),t.removeSelectionMarkers(u);for(var r=0;r<u.length;r++)i.addRange(u[r])},tt=d,f.capture(t.container,ft,nt),it=setInterval(function(){tt()},20),n.preventDefault()}else{if(!h&&ut)return;h||(e=i.toOrientedRange(),t.addSelectionMarker(e)),w=i.rangeList.rangeAtPoint(l);t.once("mouseup",function(){var n=i.toOrientedRange();w&&n.isEmpty()&&r(w.cursor,n.cursor)?i.substractPoint(n.cursor):(e&&(t.removeSelectionMarker(e),i.addRange(e)),i.addRange(n))})}}var f=n("../lib/event");t.onMouseDown=u}),ace.define("ace/commands/multi_select_commands",["require","exports","module","ace/keyboard/hash_handler"],function(n,t){t.defaultCommands=[{name:"addCursorAbove",exec:function(n){n.selectMoreLines(-1)},bindKey:{win:"Ctrl-Alt-Up",mac:"Ctrl-Alt-Up"},readonly:!0},{name:"addCursorBelow",exec:function(n){n.selectMoreLines(1)},bindKey:{win:"Ctrl-Alt-Down",mac:"Ctrl-Alt-Down"},readonly:!0},{name:"addCursorAboveSkipCurrent",exec:function(n){n.selectMoreLines(-1,!0)},bindKey:{win:"Ctrl-Alt-Shift-Up",mac:"Ctrl-Alt-Shift-Up"},readonly:!0},{name:"addCursorBelowSkipCurrent",exec:function(n){n.selectMoreLines(1,!0)},bindKey:{win:"Ctrl-Alt-Shift-Down",mac:"Ctrl-Alt-Shift-Down"},readonly:!0},{name:"selectMoreBefore",exec:function(n){n.selectMore(-1)},bindKey:{win:"Ctrl-Alt-Left",mac:"Ctrl-Alt-Left"},readonly:!0},{name:"selectMoreAfter",exec:function(n){n.selectMore(1)},bindKey:{win:"Ctrl-Alt-Right",mac:"Ctrl-Alt-Right"},readonly:!0},{name:"selectNextBefore",exec:function(n){n.selectMore(-1,!0)},bindKey:{win:"Ctrl-Alt-Shift-Left",mac:"Ctrl-Alt-Shift-Left"},readonly:!0},{name:"selectNextAfter",exec:function(n){n.selectMore(1,!0)},bindKey:{win:"Ctrl-Alt-Shift-Right",mac:"Ctrl-Alt-Shift-Right"},readonly:!0},{name:"splitIntoLines",exec:function(n){n.multiSelect.splitIntoLines()},bindKey:{win:"Ctrl-Alt-L",mac:"Ctrl-Alt-L"},readonly:!0},{name:"alignCursors",exec:function(n){n.alignCursors()},bindKey:{win:"Ctrl-Alt-A",mac:"Ctrl-Alt-A"}}],t.multiSelectCommands=[{name:"singleSelection",bindKey:"esc",exec:function(n){n.exitMultiSelectMode()},readonly:!0,isAvailable:function(n){return n&&n.inMultiSelectMode}}];var r=n("../keyboard/hash_handler").HashHandler;t.keyboardHandler=new r(t.multiSelectCommands)}),ace.define("ace/worker/worker_client",["require","exports","module","ace/lib/oop","ace/lib/event_emitter","ace/config"],function(n,t){var o=n("../lib/oop"),e=n("../lib/event_emitter").EventEmitter,r=n("../config"),u=function(t,i,u){var f,e,o;this.$sendDeltaQueue=this.$sendDeltaQueue.bind(this),this.changeListener=this.changeListener.bind(this),this.onMessage=this.onMessage.bind(this),this.onError=this.onError.bind(this),n.nameToUrl&&!n.toUrl&&(n.toUrl=n.nameToUrl),r.get("packaged")||!n.toUrl?f=r.moduleUrl(i,"worker"):(e=this.$normalizePath,f=e(n.toUrl("ace/worker/worker.js",null,"_")),o={},t.forEach(function(t){o[t]=e(n.toUrl(t,null,"_").replace(/(\.js)?(\?.*)?$/,""))})),this.$worker=new Worker(f),this.$worker.postMessage({init:!0,tlns:o,module:i,classname:u}),this.callbackId=1,this.callbacks={},this.$worker.onerror=this.onError,this.$worker.onmessage=this.onMessage},f;(function(){o.implement(this,e),this.onError=function(n){throw window.console&&console.log&&console.log(n),n;},this.onMessage=function(n){var t=n.data,i;switch(t.type){case"log":window.console&&console.log&&console.log.apply(console,t.data);break;case"event":this._emit(t.name,{data:t.data});break;case"call":i=this.callbacks[t.id],i&&(i(t.data),delete this.callbacks[t.id])}},this.$normalizePath=function(n){return location.host?(n=n.replace(/^[a-z]+:\/\/[^\/]+/,""),n=location.protocol+"//"+location.host+(n.charAt(0)=="/"?"":location.pathname.replace(/\/[^\/]*$/,""))+"/"+n.replace(/^[\/]+/,""),n):n},this.terminate=function(){this._emit("terminate",{}),this.$worker.terminate(),this.$worker=null,this.$doc.removeEventListener("change",this.changeListener),this.$doc=null},this.send=function(n,t){this.$worker.postMessage({command:n,args:t})},this.call=function(n,t,i){if(i){var r=this.callbackId++;this.callbacks[r]=i,t.push(r)}this.send(n,t)},this.emit=function(n,t){try{this.$worker.postMessage({event:n,data:{data:t.data}})}catch(i){}},this.attachToDocument=function(n){this.$doc&&this.terminate(),this.$doc=n,this.call("setValue",[n.getValue()]),n.on("change",this.changeListener)},this.changeListener=function(n){this.deltaQueue?this.deltaQueue.push(n.data):(this.deltaQueue=[n.data],setTimeout(this.$sendDeltaQueue,1))},this.$sendDeltaQueue=function(){var n=this.deltaQueue;n&&(this.deltaQueue=null,n.length>20&&n.length>this.$doc.getLength()>>1?this.call("setValue",[this.$doc.getValue()]):this.emit("change",{data:n}))}}).call(u.prototype),f=function(n,t,i){var s;this.$sendDeltaQueue=this.$sendDeltaQueue.bind(this),this.changeListener=this.changeListener.bind(this),this.callbackId=1,this.callbacks={},this.messageBuffer=[];var f=null,u=Object.create(e),o=this;this.$worker={},this.$worker.terminate=function(){},this.$worker.postMessage=function(n){o.messageBuffer.push(n),f&&setTimeout(s)},s=function(){var n=o.messageBuffer.shift();n.command?f[n.command].apply(f,n.args):n.event&&u._emit(n.event,n.data)},u.postMessage=function(n){o.onMessage({data:n})},u.callback=function(n,t){this.postMessage({type:"call",id:t,data:n})},u.emit=function(n,t){this.postMessage({type:"event",name:n,data:t})},r.loadModule(["worker",t],function(n){for(f=new n[i](u);o.messageBuffer.length;)s()})},f.prototype=u.prototype,t.UIWorkerClient=f,t.WorkerClient=u}),ace.define("ace/placeholder",["require","exports","module","ace/range","ace/lib/event_emitter","ace/lib/oop"],function(n,t){var r=n("./range").Range,f=n("./lib/event_emitter").EventEmitter,e=n("./lib/oop"),u=function(n,t,i,r,u,f){var o=this,e;this.length=t,this.session=n,this.doc=n.getDocument(),this.mainClass=u,this.othersClass=f,this.$onUpdate=this.onUpdate.bind(this),this.doc.on("change",this.$onUpdate),this.$others=r,this.$onCursorChange=function(){setTimeout(function(){o.onCursorChange()})},this.$pos=i,e=n.getUndoManager().$undoStack||n.getUndoManager().$undostack||{length:-1},this.$undoStackDepth=e.length,this.setup(),n.selection.on("changeCursor",this.$onCursorChange)};(function(){e.implement(this,f),this.setup=function(){var t=this,u=this.doc,i=this.session,n=this.$pos;this.pos=u.createAnchor(n.row,n.column),this.markerId=i.addMarker(new r(n.row,n.column,n.row,n.column+this.length),this.mainClass,null,!1),this.pos.on("change",function(n){i.removeMarker(t.markerId),t.markerId=i.addMarker(new r(n.value.row,n.value.column,n.value.row,n.value.column+t.length),t.mainClass,null,!1)}),this.others=[],this.$others.forEach(function(n){var i=u.createAnchor(n.row,n.column);t.others.push(i)}),i.setUndoSelect(!1)},this.showOtherMarkers=function(){if(!this.othersActive){var t=this.session,n=this;this.othersActive=!0,this.others.forEach(function(i){i.markerId=t.addMarker(new r(i.row,i.column,i.row,i.column+n.length),n.othersClass,null,!1),i.on("change",function(u){t.removeMarker(i.markerId),i.markerId=t.addMarker(new r(u.value.row,u.value.column,u.value.row,u.value.column+n.length),n.othersClass,null,!1)})})}},this.hideOtherMarkers=function(){if(this.othersActive){this.othersActive=!1;for(var n=0;n<this.others.length;n++)this.session.removeMarker(this.others[n].markerId)}},this.onUpdate=function(n){var o=n.data,t=o.range,f,s,u,e,i;if(t.start.row===t.end.row&&t.start.row===this.pos.row&&!this.$updating){if(this.$updating=!0,f=o.action==="insertText"?t.end.column-t.start.column:t.start.column-t.end.column,t.start.column>=this.pos.column&&t.start.column<=this.pos.column+this.length+1){if(s=t.start.column-this.pos.column,this.length+=f,!this.session.$fromUndo){if(o.action==="insertText")for(i=this.others.length-1;i>=0;i--)u=this.others[i],e={row:u.row,column:u.column+s},u.row===t.start.row&&t.start.column<u.column&&(e.column+=f),this.doc.insert(e,o.text);else if(o.action==="removeText")for(i=this.others.length-1;i>=0;i--)u=this.others[i],e={row:u.row,column:u.column+s},u.row===t.start.row&&t.start.column<u.column&&(e.column+=f),this.doc.remove(new r(e.row,e.column,e.row,e.column-f));t.start.column===this.pos.column&&o.action==="insertText"?setTimeout(function(){var i,n,r;for(this.pos.setPosition(this.pos.row,this.pos.column-f),i=0;i<this.others.length;i++)n=this.others[i],r={row:n.row,column:n.column-f},n.row===t.start.row&&t.start.column<n.column&&(r.column+=f),n.setPosition(r.row,r.column)}.bind(this),0):t.start.column===this.pos.column&&o.action==="removeText"&&setTimeout(function(){for(var n,i=0;i<this.others.length;i++)n=this.others[i],n.row===t.start.row&&t.start.column<n.column&&n.setPosition(n.row,n.column-f)}.bind(this),0)}for(this.pos._emit("change",{value:this.pos}),i=0;i<this.others.length;i++)this.others[i]._emit("change",{value:this.others[i]})}this.$updating=!1}},this.onCursorChange=function(n){if(!this.$updating){var t=this.session.selection.getCursor();t.row===this.pos.row&&t.column>=this.pos.column&&t.column<=this.pos.column+this.length?(this.showOtherMarkers(),this._emit("cursorEnter",n)):(this.hideOtherMarkers(),this._emit("cursorLeave",n))}},this.detach=function(){this.session.removeMarker(this.markerId),this.hideOtherMarkers(),this.doc.removeEventListener("change",this.$onUpdate),this.session.selection.removeEventListener("changeCursor",this.$onCursorChange),this.pos.detach();for(var n=0;n<this.others.length;n++)this.others[n].detach();this.session.setUndoSelect(!0)},this.cancel=function(){var n,i,t;if(this.$undoStackDepth===-1)throw Error("Canceling placeholders only supported with undo manager attached to session.");for(n=this.session.getUndoManager(),i=(n.$undoStack||n.$undostack).length-this.$undoStackDepth,t=0;t<i;t++)n.undo(!0)}}).call(u.prototype),t.PlaceHolder=u}),ace.define("ace/mode/folding/fold_mode",["require","exports","module","ace/range"],function(n,t){var r=n("../../range").Range,u=t.FoldMode=function(){};(function(){this.foldingStartMarker=null,this.foldingStopMarker=null,this.getFoldWidget=function(n,t,i){var r=n.getLine(i);return this.foldingStartMarker.test(r)?"start":t=="markbeginend"&&this.foldingStopMarker&&this.foldingStopMarker.test(r)?"end":""},this.getFoldWidgetRange=function(){return null},this.indentationBlock=function(n,t,i){var e=/\S/,o=n.getLine(t),s=o.search(e),f,c;if(s!=-1){for(var l=i||o.length,a=n.getLength(),h=t,u=t;++t<a;)if(f=n.getLine(t).search(e),f!=-1){if(f<=s)break;u=t}if(u>h)return c=n.getLine(u).length,new r(h,l,u,c)}},this.openingBracketBlock=function(n,t,i,u,f){var s={row:i,column:u+1},e=n.$findClosingBracket(t,s,f),o;if(e)return o=n.foldWidgets[e.row],o==null&&(o=this.getFoldWidget(n,e.row)),o=="start"&&e.row>s.row&&(e.row--,e.column=n.getLine(e.row).length),r.fromPoints(s,e)},this.closingBracketBlock=function(n,t,i,u){var e={row:i,column:u},o=n.$findOpeningBracket(t,e);if(o)return o.column++,e.column--,r.fromPoints(o,e)}}).call(u.prototype)}),ace.define("ace/theme/textmate",["require","exports","module","ace/lib/dom"],function(n,t){t.isDark=!1,t.cssClass="ace-tm",t.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;}.ace-tm .ace_cursor {border-left: 2px solid black;}.ace-tm .ace_overwrite-cursors .ace_cursor {border-left: 0px;border-bottom: 1px solid 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_markup.ace_heading {color: rgb(12, 7, 255);}.ace-tm .ace_markup.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;border-radius: 2px;}.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 r=n("../lib/dom");r.importCssString(t.cssText,t.cssClass)}),function(){ace.require(["ace/ace"],function(n){n&&n.config.init(),window.ace||(window.ace={});for(var t in n)n.hasOwnProperty(t)&&(ace[t]=n[t])})}(),angular.module("ui.ace",[]).constant("uiAceConfig",{}).directive("uiAce",["uiAceConfig",function(n){if(angular.isUndefined(window.ace))throw new Error("ui-ace need ace to work... (o rly?)");return{restrict:"EA",require:"?ngModel",link:function(t,i,r,u){var s,f,e,o,h;if(s=n.ace||{},f=angular.extend({},s,t.$eval(r.uiAce)),e=window.ace.edit(i[0]),o=e.getSession(),h=function(n){return function(i){var f=o.getValue();f===t.$eval(r.value)||t.$$phase||t.$root.$$phase||(angular.isDefined(u)&&t.$apply(function(){u.$setViewValue(f)}),angular.isDefined(n)&&t.$apply(function(){if(angular.isFunction(n))n(i,e);else throw new Error("ui-ace use a function as callback.");}))}},angular.isDefined(f.showGutter)&&e.renderer.setShowGutter(f.showGutter),angular.isDefined(f.useWrapMode)&&o.setUseWrapMode(f.useWrapMode),angular.isFunction(f.onLoad))f.onLoad(e);angular.isString(f.theme)&&e.setTheme("ace/theme/"+f.theme),angular.isString(f.mode)&&o.setMode("ace/mode/"+f.mode),r.$observe("readonly",function(n){e.setReadOnly(n==="true")}),angular.isDefined(u)&&(u.$formatters.push(function(n){if(angular.isUndefined(n)||n===null)return"";if(angular.isObject(n)||angular.isArray(n))throw new Error("ui-ace cannot use an object or an array as a model");return n}),u.$render=function(){o.setValue(u.$viewValue)});o.on("change",h(f.onChange));i.on("$destroy",function(){e.session.$stopWorker(),e.destroy()})}}}])