From fd07fdbb5269abd357eeeaf09947a9b0a1191516 Mon Sep 17 00:00:00 2001 From: Rohan Likhite Date: Mon, 2 Mar 2026 18:19:46 -0500 Subject: [PATCH] Introduce Basket Schema Validations We'd like to allow users to validate the contents of their baskets using JSON Schema. Here, a user can create a schema for their basket by including a "_schema" key in their payload. If this key is found and is valid, it will be used to validate the contents of the basket during a update (PUT) request. --- dist/src/app/components/basket.js | 13 +- dist/src/app/components/explorer.js | 16 + dist/src/app/components/explorerEmpty.js | 6 - dist/src/bundle.js | 6 +- dist/src/bundle.js.map | 2 +- dist/src/models/block.js | 38 + dist/src/models/publicBlock.js | 1 + package-lock.json | 850 +- package.json | 1 + src/app/components/basket.ts | 13 +- src/app/components/explorer.ts | 16 + src/app/components/explorerEmpty.ts | 6 - src/app/templates/explorer.html | 111 +- src/app/templates/explorerEmpty.html | 45 +- src/app/templates/features.html | 81 +- src/app/templates/login.html | 4 +- src/app/templates/modal.html | 2 +- src/models/block.ts | 38 + src/models/publicBlock.ts | 1 + tests/controllers/account.test.ts | 2 +- tests/controllers/block.test.ts | 48 + tests/controllers/publicBlock.test.ts | 40 +- yarn.lock | 15829 +++++++++++---------- 23 files changed, 9650 insertions(+), 7519 deletions(-) diff --git a/dist/src/app/components/basket.js b/dist/src/app/components/basket.js index 824a7ed..3174026 100644 --- a/dist/src/app/components/basket.js +++ b/dist/src/app/components/basket.js @@ -83,13 +83,20 @@ const basket = { }, save() { return __awaiter(this, void 0, void 0, function* () { - const { data } = yield axios({ + yield axios({ method: 'PUT', data: this.data, url: this.basketPath(), + }).then((response) => { + const { data } = response; + alert(`${this.name} contents updated!`); + this.data = data; + }).catch((axiosError) => { + const { data: _errorData } = axiosError.response; + const { error, details } = _errorData; + const _message = `${error} - ${details}`; + alert(_message); }); - alert(`${this.name} contents updated!`); - this.data = data; }); }, openShareModal() { diff --git a/dist/src/app/components/explorer.js b/dist/src/app/components/explorer.js index 60ee411..b240d35 100644 --- a/dist/src/app/components/explorer.js +++ b/dist/src/app/components/explorer.js @@ -10,6 +10,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge }; // External Files const axios = require('axios'); +const jsonEditor = require('vue-json-editor').default; // Configs const configs = require('../config.ts'); // Templates @@ -32,10 +33,22 @@ const explorer = { explorerOnboarding, basket, modal, + 'json-edit': jsonEditor, }, data() { return { basket: null, + schemaModalVisible: false, + schemaExample: { + _schema: { + toppings: { type: 'array' }, + size: { type: 'string' }, + price: { type: 'number' }, + }, + toppings: ['pepperoni', 'mushrooms', 'hot peppers'], + size: 'large', + price: 19.99, + }, }; }, computed: { @@ -129,6 +142,9 @@ const explorer = { this.viewBasket(name); } }, + toggleSchemaModal() { + this.schemaModalVisible = !this.schemaModalVisible; + }, }, }; module.exports = explorer; diff --git a/dist/src/app/components/explorerEmpty.js b/dist/src/app/components/explorerEmpty.js index f150b54..a949e23 100644 --- a/dist/src/app/components/explorerEmpty.js +++ b/dist/src/app/components/explorerEmpty.js @@ -3,7 +3,6 @@ const configs = require('../config.ts'); // Constants const API_PATH = configs.apiPath; -const DOCS_PATH = configs.docsPath; // Templates const explorerEmptyTemplate = require('../templates/explorerEmpty.html'); const explorerEmpty = { @@ -15,10 +14,5 @@ const explorerEmpty = { apiPath: API_PATH, }; }, - methods: { - showDocs() { - window.location.href = DOCS_PATH; - }, - }, }; module.exports = explorerEmpty; diff --git a/dist/src/bundle.js b/dist/src/bundle.js index 7a07419..57833ea 100644 --- a/dist/src/bundle.js +++ b/dist/src/bundle.js @@ -1,4 +1,4 @@ -!function(t){var e={};function l(i){if(e[i])return e[i].exports;var n=e[i]={i:i,l:!1,exports:{}};return t[i].call(n.exports,n,n.exports,l),n.l=!0,n.exports}l.m=t,l.c=e,l.d=function(t,e,i){l.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:i})},l.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},l.t=function(t,e){if(1&e&&(t=l(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var i=Object.create(null);if(l.r(i),Object.defineProperty(i,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var n in t)l.d(i,n,function(e){return t[e]}.bind(null,n));return i},l.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return l.d(e,"a",e),e},l.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},l.p="",l(l.s=23)}([function(t,e,l){"use strict";var i=l(11),n=Object.prototype.toString;function d(t){return"[object Array]"===n.call(t)}function a(t){return void 0===t}function s(t){return null!==t&&"object"==typeof t}function c(t){if("[object Object]"!==n.call(t))return!1;var e=Object.getPrototypeOf(t);return null===e||e===Object.prototype}function o(t){return"[object Function]"===n.call(t)}function b(t,e){if(null!=t)if("object"!=typeof t&&(t=[t]),d(t))for(var l=0,i=t.length;l=0&&r.splice(e,1)}function N(t){var e=document.createElement("style");return void 0===t.attrs.type&&(t.attrs.type="text/css"),y(e,t.attrs),W(t,e),e}function y(t,e){Object.keys(e).forEach((function(l){t.setAttribute(l,e[l])}))}function I(t,e){var l,i,n,d;if(e.transform&&t.css){if(!(d=e.transform(t.css)))return function(){};t.css=d}if(e.singleton){var a=b++;l=o||(o=N(e)),i=u.bind(null,l,a,!1),n=u.bind(null,l,a,!0)}else t.sourceMap&&"function"==typeof URL&&"function"==typeof URL.createObjectURL&&"function"==typeof URL.revokeObjectURL&&"function"==typeof Blob&&"function"==typeof btoa?(l=function(t){var e=document.createElement("link");return void 0===t.attrs.type&&(t.attrs.type="text/css"),t.attrs.rel="stylesheet",y(e,t.attrs),W(t,e),e}(e),i=p.bind(null,l,e),n=function(){h(l),l.href&&URL.revokeObjectURL(l.href)}):(l=N(e),i=V.bind(null,l),n=function(){h(l)});return i(t),function(e){if(e){if(e.css===t.css&&e.media===t.media&&e.sourceMap===t.sourceMap)return;i(t=e)}else n()}}t.exports=function(t,e){if("undefined"!=typeof DEBUG&&DEBUG&&"object"!=typeof document)throw new Error("The style-loader cannot be used in a non-browser environment");(e=e||{}).attrs="object"==typeof e.attrs?e.attrs:{},e.singleton||"boolean"==typeof e.singleton||(e.singleton=a()),e.insertInto||(e.insertInto="head"),e.insertAt||(e.insertAt="bottom");var l=g(t,e);return Z(l,e),function(t){for(var i=[],n=0;n=200&&t<300}};o.headers={common:{Accept:"application/json, text/plain, */*"}},i.forEach(["delete","get","head"],(function(t){o.headers[t]={}})),i.forEach(["post","put","patch"],(function(t){o.headers[t]=i.merge(a)})),t.exports=o}).call(this,l(9))},function(t,e){var l,i,n=t.exports={};function d(){throw new Error("setTimeout has not been defined")}function a(){throw new Error("clearTimeout has not been defined")}function s(t){if(l===setTimeout)return setTimeout(t,0);if((l===d||!l)&&setTimeout)return l=setTimeout,setTimeout(t,0);try{return l(t,0)}catch(e){try{return l.call(null,t,0)}catch(e){return l.call(this,t,0)}}}!function(){try{l="function"==typeof setTimeout?setTimeout:d}catch(t){l=d}try{i="function"==typeof clearTimeout?clearTimeout:a}catch(t){i=a}}();var c,o=[],b=!1,r=-1;function m(){b&&c&&(b=!1,c.length?o=c.concat(o):r=-1,o.length&&Z())}function Z(){if(!b){var t=s(m);b=!0;for(var e=o.length;e;){for(c=o,o=[];++r1)for(var l=1;l({}),methods:{close(){this.$emit("close")}}};t.exports=i},function(t,e,l){"use strict";const i={name:"banner",template:l(71),props:["promo"],data:()=>({visible:!0}),methods:{clickedCTA(){this.$emit("cta-clicked")},hide(){this.visible=!1}}};t.exports=i},function(module,exports,__webpack_require__){ +!function(t){var e={};function l(i){if(e[i])return e[i].exports;var n=e[i]={i:i,l:!1,exports:{}};return t[i].call(n.exports,n,n.exports,l),n.l=!0,n.exports}l.m=t,l.c=e,l.d=function(t,e,i){l.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:i})},l.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},l.t=function(t,e){if(1&e&&(t=l(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var i=Object.create(null);if(l.r(i),Object.defineProperty(i,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var n in t)l.d(i,n,function(e){return t[e]}.bind(null,n));return i},l.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return l.d(e,"a",e),e},l.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},l.p="",l(l.s=24)}([function(t,e,l){"use strict";var i=l(11),n=Object.prototype.toString;function a(t){return"[object Array]"===n.call(t)}function d(t){return void 0===t}function s(t){return null!==t&&"object"==typeof t}function c(t){if("[object Object]"!==n.call(t))return!1;var e=Object.getPrototypeOf(t);return null===e||e===Object.prototype}function o(t){return"[object Function]"===n.call(t)}function b(t,e){if(null!=t)if("object"!=typeof t&&(t=[t]),a(t))for(var l=0,i=t.length;l=0&&r.splice(e,1)}function N(t){var e=document.createElement("style");return void 0===t.attrs.type&&(t.attrs.type="text/css"),y(e,t.attrs),W(t,e),e}function y(t,e){Object.keys(e).forEach((function(l){t.setAttribute(l,e[l])}))}function I(t,e){var l,i,n,a;if(e.transform&&t.css){if(!(a=e.transform(t.css)))return function(){};t.css=a}if(e.singleton){var d=b++;l=o||(o=N(e)),i=u.bind(null,l,d,!1),n=u.bind(null,l,d,!0)}else t.sourceMap&&"function"==typeof URL&&"function"==typeof URL.createObjectURL&&"function"==typeof URL.revokeObjectURL&&"function"==typeof Blob&&"function"==typeof btoa?(l=function(t){var e=document.createElement("link");return void 0===t.attrs.type&&(t.attrs.type="text/css"),t.attrs.rel="stylesheet",y(e,t.attrs),W(t,e),e}(e),i=p.bind(null,l,e),n=function(){h(l),l.href&&URL.revokeObjectURL(l.href)}):(l=N(e),i=V.bind(null,l),n=function(){h(l)});return i(t),function(e){if(e){if(e.css===t.css&&e.media===t.media&&e.sourceMap===t.sourceMap)return;i(t=e)}else n()}}t.exports=function(t,e){if("undefined"!=typeof DEBUG&&DEBUG&&"object"!=typeof document)throw new Error("The style-loader cannot be used in a non-browser environment");(e=e||{}).attrs="object"==typeof e.attrs?e.attrs:{},e.singleton||"boolean"==typeof e.singleton||(e.singleton=d()),e.insertInto||(e.insertInto="head"),e.insertAt||(e.insertAt="bottom");var l=g(t,e);return Z(l,e),function(t){for(var i=[],n=0;n=200&&t<300}};o.headers={common:{Accept:"application/json, text/plain, */*"}},i.forEach(["delete","get","head"],(function(t){o.headers[t]={}})),i.forEach(["post","put","patch"],(function(t){o.headers[t]=i.merge(d)})),t.exports=o}).call(this,l(9))},function(t,e){var l,i,n=t.exports={};function a(){throw new Error("setTimeout has not been defined")}function d(){throw new Error("clearTimeout has not been defined")}function s(t){if(l===setTimeout)return setTimeout(t,0);if((l===a||!l)&&setTimeout)return l=setTimeout,setTimeout(t,0);try{return l(t,0)}catch(e){try{return l.call(null,t,0)}catch(e){return l.call(this,t,0)}}}!function(){try{l="function"==typeof setTimeout?setTimeout:a}catch(t){l=a}try{i="function"==typeof clearTimeout?clearTimeout:d}catch(t){i=d}}();var c,o=[],b=!1,r=-1;function m(){b&&c&&(b=!1,c.length?o=c.concat(o):r=-1,o.length&&Z())}function Z(){if(!b){var t=s(m);b=!0;for(var e=o.length;e;){for(c=o,o=[];++r1)for(var l=1;l({}),methods:{close(){this.$emit("close")}}};t.exports=i},function(t,e,l){"use strict";const i={name:"banner",template:l(72),props:["promo"],data:()=>({visible:!0}),methods:{clickedCTA(){this.$emit("cta-clicked")},hide(){this.visible=!1}}};t.exports=i},function(t,e,l){"use strict";l.r(e);var i=function(){var t=this,e=t.$createElement,l=t._self._c||e;return l("div",[l("div",{staticClass:"jsoneditor-vue"}),t._v(" "),!1!==t.showBtns?l("div",{staticClass:"jsoneditor-btns"},[l("button",{staticClass:"json-save-btn",attrs:{type:"button",disabled:t.error},on:{click:function(e){return t.onSave()}}},[t._v(t._s(t.locale[t.lang].save))])]):t._e()])};i._withStripped=!0;l(56);var n=l(23),a=l.n(n),d={props:{value:[String,Number,Object,Array],showBtns:[Boolean],expandedOnStart:{type:Boolean,default:!1},mode:{type:String,default:"tree"},modes:{type:Array,default:function(){return["tree","code","form","text","view"]}},lang:{type:String,default:"en"}},watch:{value:{immediate:!0,async handler(t){this.internalChange||(await this.setEditor(t),this.error=!1,this.expandAll())},deep:!0}},data(){return{editor:null,error:!1,json:this.value,internalChange:!1,expandedModes:["tree","view","form"],locale:{it:{save:"SALVA"},en:{save:"SAVE"},zh:{save:"保存"}}}},mounted(){let t=this,e={mode:this.mode,modes:this.modes,onChange(){try{let e=t.editor.get();t.json=e,t.error=!1,t.$emit("json-change",e),t.internalChange=!0,t.$emit("input",e),t.$nextTick((function(){t.internalChange=!1}))}catch(e){t.error=!0,t.$emit("has-error",e)}},onModeChange(){t.expandAll()}};this.editor=new a.a(this.$el.querySelector(".jsoneditor-vue"),e,this.json)},methods:{expandAll(){this.expandedOnStart&&this.expandedModes.includes(this.editor.getMode())&&this.editor.expandAll()},onSave(){this.$emit("json-save",this.json)},async setEditor(t){this.editor&&this.editor.set(t)}}};l(58);var s=function(t,e,l,i,n,a,d,s){var c,o="function"==typeof t?t.options:t;if(e&&(o.render=e,o.staticRenderFns=l,o._compiled=!0),i&&(o.functional=!0),a&&(o._scopeId="data-v-"+a),d?(c=function(t){(t=t||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(t=__VUE_SSR_CONTEXT__),n&&n.call(this,t),t&&t._registeredComponents&&t._registeredComponents.add(d)},o._ssrRegister=c):n&&(c=s?function(){n.call(this,(o.functional?this.parent:this).$root.$options.shadowRoot)}:n),c)if(o.functional){o._injectStyles=c;var b=o.render;o.render=function(t,e){return c.call(e),b(t,e)}}else{var r=o.beforeCreate;o.beforeCreate=r?[].concat(r,c):[c]}return{exports:t,options:o}}(d,i,[],!1,null,"551a97e0",null);s.options.__file="node_modules/vue-json-editor/vue-json-editor.vue";e.default=s.exports},function(module,exports,__webpack_require__){ /*! * jsoneditor.js * @@ -28,11 +28,11 @@ * @version 5.5.11 * @date 2017-01-06 */ -var factory;factory=function(){return function(t){var e={};function l(i){if(e[i])return e[i].exports;var n=e[i]={exports:{},id:i,loaded:!1};return t[i].call(n.exports,n,n.exports,l),n.loaded=!0,n.exports}return l.m=t,l.c=e,l.p="",l(0)}([function(t,e,l){"use strict";var i;try{i=l(1)}catch(t){}var n=l(51),d=l(62),a=l(54);function s(t,e,l){if(!(this instanceof s))throw new Error('JSONEditor constructor called without "new".');var i=a.getInternetExplorerVersion();if(-1!=i&&i<9)throw new Error("Unsupported browser, IE9 or newer required. Please install the newest version of your browser.");if(e&&(e.error&&(console.warn('Option "error" has been renamed to "onError"'),e.onError=e.error,delete e.error),e.change&&(console.warn('Option "change" has been renamed to "onChange"'),e.onChange=e.change,delete e.change),e.editable&&(console.warn('Option "editable" has been renamed to "onEditable"'),e.onEditable=e.editable,delete e.editable),e)){var n=["ace","theme","ajv","schema","onChange","onEditable","onError","onModeChange","escapeUnicode","history","search","mode","modes","name","indentation","sortObjectKeys"];Object.keys(e).forEach((function(t){-1===n.indexOf(t)&&console.warn('Unknown option "'+t+'". This option will be ignored')}))}arguments.length&&this._create(t,e,l)}s.modes={},s.prototype.DEBOUNCE_INTERVAL=150,s.prototype._create=function(t,e,l){this.container=t,this.options=e||{},this.json=l||{};var i=this.options.mode||"tree";this.setMode(i)},s.prototype.destroy=function(){},s.prototype.set=function(t){this.json=t},s.prototype.get=function(){return this.json},s.prototype.setText=function(t){this.json=a.parse(t)},s.prototype.getText=function(){return JSON.stringify(this.json)},s.prototype.setName=function(t){this.options||(this.options={}),this.options.name=t},s.prototype.getName=function(){return this.options&&this.options.name},s.prototype.setMode=function(t){var e,l,i=this.container,n=a.extend({},this.options),d=n.mode;n.mode=t;var c=s.modes[t];if(!c)throw new Error('Unknown mode "'+n.mode+'"');try{var o="text"==c.data;if(l=this.getName(),e=this[o?"getText":"get"](),this.destroy(),a.clear(this),a.extend(this,c.mixin),this.create(i,n),this.setName(l),this[o?"setText":"set"](e),"function"==typeof c.load)try{c.load.call(this)}catch(t){console.error(t)}if("function"==typeof n.onModeChange&&t!==d)try{n.onModeChange(t,d)}catch(t){console.error(t)}}catch(t){this._onError(t)}},s.prototype.getMode=function(){return this.options.mode},s.prototype._onError=function(t){if(!this.options||"function"!=typeof this.options.onError)throw t;this.options.onError(t)},s.prototype.setSchema=function(t){if(t){var e;try{e=this.options.ajv||i({allErrors:!0,verbose:!0})}catch(t){console.warn("Failed to create an instance of Ajv, JSON Schema validation is not available. Please use a JSONEditor bundle including Ajv, or pass an instance of Ajv as via the configuration option `ajv`.")}e&&(this.validateSchema=e.compile(t),this.options.schema=t,this.validate()),this.refresh()}else this.validateSchema=null,this.options.schema=null,this.validate(),this.refresh()},s.prototype.validate=function(){},s.prototype.refresh=function(){},s.registerMode=function(t){var e,l;if(a.isArray(t))for(e=0;e",'"',"`"," ","\r","\n","\t"]),c=["'"].concat(s),o=["%","/","?",";","#"].concat(c),b=["/","?","#"],r=/^[a-z0-9A-Z_-]{0,63}$/,m=/^([a-z0-9A-Z_-]{0,63})(.*)$/,Z={javascript:!0,"javascript:":!0},g={javascript:!0,"javascript:":!0},W={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,"http:":!0,"https:":!0,"ftp:":!0,"gopher:":!0,"file:":!0},h=l(7);function N(t,e,l){if(t&&I(t)&&t instanceof n)return t;var i=new n;return i.parse(t,e,l),i}function y(t){return"string"==typeof t}function I(t){return"object"==typeof t&&null!==t}function G(t){return null===t}n.prototype.parse=function(t,e,l){if(!y(t))throw new TypeError("Parameter 'url' must be a string, not "+typeof t);var n=t;n=n.trim();var a=d.exec(n);if(a){var s=(a=a[0]).toLowerCase();this.protocol=s,n=n.substr(a.length)}if(l||a||n.match(/^\/\/[^@\/]+@[^@\/]+/)){var N="//"===n.substr(0,2);!N||a&&g[a]||(n=n.substr(2),this.slashes=!0)}if(!g[a]&&(N||a&&!W[a])){for(var I,G,M=-1,u=0;u127?O+="x":O+=B[D];if(!O.match(r)){var X=Y.slice(0,u),T=Y.slice(u+1),z=B.match(m);z&&(X.push(z[1]),T.unshift(z[2])),T.length&&(n="/"+T.join(".")+n),this.hostname=X.join(".");break}}}if(this.hostname.length>255?this.hostname="":this.hostname=this.hostname.toLowerCase(),!p){var F=this.hostname.split("."),v=[];for(u=0;u0)&&l.host.split("@"))&&(l.auth=M.shift(),l.host=l.hostname=M.shift())),l.search=t.search,l.query=t.query,G(l.pathname)&&G(l.search)||(l.path=(l.pathname?l.pathname:"")+(l.search?l.search:"")),l.href=l.format(),l;if(!r.length)return l.pathname=null,l.search?l.path="/"+l.search:l.path=null,l.href=l.format(),l;for(var Z=r.slice(-1)[0],h=(l.host||t.host)&&("."===Z||".."===Z)||""===Z,N=0,I=r.length;I>=0;I--)"."==(Z=r[I])?r.splice(I,1):".."===Z?(r.splice(I,1),N++):N&&(r.splice(I,1),N--);if(!o&&!b)for(;N--;N)r.unshift("..");!o||""===r[0]||r[0]&&"/"===r[0].charAt(0)||r.unshift(""),h&&"/"!==r.join("/").substr(-1)&&r.push("");var M,u=""===r[0]||r[0]&&"/"===r[0].charAt(0);return m&&(l.hostname=l.host=u?"":r.length?r.shift():"",(M=!!(l.host&&l.host.indexOf("@")>0)&&l.host.split("@"))&&(l.auth=M.shift(),l.host=l.hostname=M.shift())),(o=o||l.host&&r.length)&&!u&&r.unshift(""),r.length?l.pathname=r.join("/"):(l.pathname=null,l.path=null),G(l.pathname)&&G(l.search)||(l.path=(l.pathname?l.pathname:"")+(l.search?l.search:"")),l.auth=t.auth||l.auth,l.slashes=l.slashes||t.slashes,l.href=l.format(),l},n.prototype.parseHost=function(){var t=this.host,e=a.exec(t);e&&(":"!==(e=e[0])&&(this.port=e.substr(1)),t=t.substr(0,t.length-e.length)),t&&(this.hostname=t)}},function(t,e,l){var i;(function(t,n){!function(d){"object"==typeof e&&e&&e.nodeType,"object"==typeof t&&t&&t.nodeType;var a="object"==typeof n&&n;a.global!==a&&a.window!==a&&a.self;var s,c=2147483647,o=/^xn--/,b=/[^\x20-\x7E]/,r=/[\x2E\u3002\uFF0E\uFF61]/g,m={overflow:"Overflow: input needs wider integers to process","not-basic":"Illegal input >= 0x80 (not a basic code point)","invalid-input":"Invalid input"},Z=Math.floor,g=String.fromCharCode;function W(t){throw RangeError(m[t])}function h(t,e){for(var l=t.length,i=[];l--;)i[l]=e(t[l]);return i}function N(t,e){var l=t.split("@"),i="";return l.length>1&&(i=l[0]+"@",t=l[1]),i+h((t=t.replace(r,".")).split("."),e).join(".")}function y(t){for(var e,l,i=[],n=0,d=t.length;n=55296&&e<=56319&&n65535&&(e+=g((t-=65536)>>>10&1023|55296),t=56320|1023&t),e+=g(t)})).join("")}function G(t,e){return t+22+75*(t<26)-((0!=e)<<5)}function M(t,e,l){var i=0;for(t=l?Z(t/700):t>>1,t+=Z(t/e);t>455;i+=36)t=Z(t/35);return Z(i+36*t/(t+38))}function u(t){var e,l,i,n,d,a,s,o,b,r,m,g=[],h=t.length,N=0,y=128,G=72;for((l=t.lastIndexOf("-"))<0&&(l=0),i=0;i=128&&W("not-basic"),g.push(t.charCodeAt(i));for(n=l>0?l+1:0;n=h&&W("invalid-input"),((o=(m=t.charCodeAt(n++))-48<10?m-22:m-65<26?m-65:m-97<26?m-97:36)>=36||o>Z((c-N)/a))&&W("overflow"),N+=o*a,!(o<(b=s<=G?1:s>=G+26?26:s-G));s+=36)a>Z(c/(r=36-b))&&W("overflow"),a*=r;G=M(N-d,e=g.length+1,0==d),Z(N/e)>c-y&&W("overflow"),y+=Z(N/e),N%=e,g.splice(N++,0,y)}return I(g)}function V(t){var e,l,i,n,d,a,s,o,b,r,m,h,N,I,u,V=[];for(h=(t=y(t)).length,e=128,l=0,d=72,a=0;a=e&&mZ((c-l)/(N=i+1))&&W("overflow"),l+=(s-e)*N,e=s,a=0;ac&&W("overflow"),m==e){for(o=l,b=36;!(o<(r=b<=d?1:b>=d+26?26:b-d));b+=36)u=o-r,I=36-r,V.push(g(G(r+u%I,0))),o=Z(u/I);V.push(g(G(o,0))),d=M(l,N,i==n),l=0,++i}++l,++e}return V.join("")}s={version:"1.3.2",ucs2:{decode:y,encode:I},decode:u,encode:V,toASCII:function(t){return N(t,(function(t){return b.test(t)?"xn--"+V(t):t}))},toUnicode:function(t){return N(t,(function(t){return o.test(t)?u(t.slice(4).toLowerCase()):t}))}},void 0===(i=function(){return s}.call(e,l,e,t))||(t.exports=i)}()}).call(e,l(6)(t),function(){return this}())},function(t,e){t.exports=function(t){return t.webpackPolyfill||(t.deprecate=function(){},t.paths=[],t.children=[],t.webpackPolyfill=1),t}},function(t,e,l){"use strict";e.decode=e.parse=l(8),e.encode=e.stringify=l(9)},function(t,e){"use strict";function l(t,e){return Object.prototype.hasOwnProperty.call(t,e)}t.exports=function(t,e,i,n){e=e||"&",i=i||"=";var d={};if("string"!=typeof t||0===t.length)return d;var a=/\+/g;t=t.split(e);var s=1e3;n&&"number"==typeof n.maxKeys&&(s=n.maxKeys);var c=t.length;s>0&&c>s&&(c=s);for(var o=0;o=0?(b=g.substr(0,W),r=g.substr(W+1)):(b=g,r=""),m=decodeURIComponent(b),Z=decodeURIComponent(r),l(d,m)?Array.isArray(d[m])?d[m].push(Z):d[m]=[d[m],Z]:d[m]=Z}return d}},function(t,e){"use strict";var l=function(t){switch(typeof t){case"string":return t;case"boolean":return t?"true":"false";case"number":return isFinite(t)?t:"";default:return""}};t.exports=function(t,e,i,n){return e=e||"&",i=i||"=",null===t&&(t=void 0),"object"==typeof t?Object.keys(t).map((function(n){var d=encodeURIComponent(l(n))+i;return Array.isArray(t[n])?t[n].map((function(t){return d+encodeURIComponent(l(t))})).join(e):d+encodeURIComponent(l(t[n]))})).join(e):n?encodeURIComponent(l(n))+i+encodeURIComponent(l(t)):""}},function(t,e){"use strict";t.exports=function t(e,l){if(e===l)return!0;var i,n=Array.isArray(e),d=Array.isArray(l);if(n&&d){if(e.length!=l.length)return!1;for(i=0;i=55296&&e<=56319&&n=e)throw new Error("Cannot access property/index "+n+" levels up, current level is "+e);return l[e-n]}if(n>e)throw new Error("Cannot access data "+n+" levels up, current level is "+e);var a="data"+(e-n||"");if(!d)return a;for(var s=a,o=d.split("/"),b=0;b="0"&&i<="9";)e+=i,c();if("."===i)for(e+=".";c()&&i>="0"&&i<="9";)e+=i;if("e"===i||"E"===i)for(e+=i,c(),"-"!==i&&"+"!==i||(e+=i,c());i>="0"&&i<="9";)e+=i,c();if(t=+e,isFinite(t))return t;s("Bad number")},b=function(){var t,e,l,n="";if('"'===i)for(;c();){if('"'===i)return c(),n;if("\\"===i)if(c(),"u"===i){for(l=0,e=0;e<4&&(t=parseInt(c(),16),isFinite(t));e+=1)l=16*l+t;n+=String.fromCharCode(l)}else{if("string"!=typeof a[i])break;n+=a[i]}else n+=i}s("Bad string")},r=function(){for(;i&&i<=" ";)c()};d=function(){switch(r(),i){case"{":return function(){var t,e={};if("{"===i){if(c("{"),r(),"}"===i)return c("}"),e;for(;i;){if(t=b(),r(),c(":"),Object.hasOwnProperty.call(e,t)&&s('Duplicate key "'+t+'"'),e[t]=d(),r(),"}"===i)return c("}"),e;c(","),r()}}s("Bad object")}();case"[":return function(){var t=[];if("["===i){if(c("["),r(),"]"===i)return c("]"),t;for(;i;){if(t.push(d()),r(),"]"===i)return c("]"),t;c(","),r()}}s("Bad array")}();case'"':return b();case"-":return o();default:return i>="0"&&i<="9"?o():function(){switch(i){case"t":return c("t"),c("r"),c("u"),c("e"),!0;case"f":return c("f"),c("a"),c("l"),c("s"),c("e"),!1;case"n":return c("n"),c("u"),c("l"),c("l"),null}s("Unexpected '"+i+"'")}()}},t.exports=function(t,e){var a;return n=t,l=0,i=" ",a=d(),r(),i&&s("Syntax error"),"function"==typeof e?function t(l,i){var n,d,a=l[i];if(a&&"object"==typeof a)for(n in a)Object.prototype.hasOwnProperty.call(a,n)&&(void 0!==(d=t(a,n))?a[n]=d:delete a[n]);return e.call(l,i,a)}({"":a},""):a}},function(t,e){var l,i,n,d=/[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,a={"\b":"\\b","\t":"\\t","\n":"\\n","\f":"\\f","\r":"\\r",'"':'\\"',"\\":"\\\\"};function s(t){return d.lastIndex=0,d.test(t)?'"'+t.replace(d,(function(t){var e=a[t];return"string"==typeof e?e:"\\u"+("0000"+t.charCodeAt(0).toString(16)).slice(-4)}))+'"':'"'+t+'"'}t.exports=function(t,e,d){var a;if(l="",i="","number"==typeof d)for(a=0;a2&&(e=l.call(arguments,1)),i(e)}))}))}function a(t){return Promise.all(t.map(n,this))}function s(t){for(var e=new t.constructor,l=Object.keys(t),i=[],d=0;d=1&&l<=12&&i>=1&&i<=d[l]}function g(t,e){var l=t.match(a);if(!l)return!1;var i=l[1],n=l[2],d=l[3],s=l[5];return i<=23&&n<=59&&d<=59&&(!e||s)}t.exports=m,m.fast={date:/^\d\d\d\d-[0-1]\d-[0-3]\d$/,time:/^[0-2]\d:[0-5]\d:[0-5]\d(?:\.\d+)?(?:z|[+-]\d\d:\d\d)?$/i,"date-time":/^\d\d\d\d-[0-1]\d-[0-3]\d[t\s][0-2]\d:[0-5]\d:[0-5]\d(?:\.\d+)?(?:z|[+-]\d\d:\d\d)$/i,uri:/^(?:[a-z][a-z0-9+-.]*)?(?:\:|\/)\/?[^\s]*$/i,email:/^[a-z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\.[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?)*$/i,hostname:s,ipv4:/^(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)$/,ipv6:/^\s*(?:(?:(?:[0-9a-f]{1,4}:){7}(?:[0-9a-f]{1,4}|:))|(?:(?:[0-9a-f]{1,4}:){6}(?::[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){5}(?:(?:(?::[0-9a-f]{1,4}){1,2})|:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){4}(?:(?:(?::[0-9a-f]{1,4}){1,3})|(?:(?::[0-9a-f]{1,4})?:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){3}(?:(?:(?::[0-9a-f]{1,4}){1,4})|(?:(?::[0-9a-f]{1,4}){0,2}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){2}(?:(?:(?::[0-9a-f]{1,4}){1,5})|(?:(?::[0-9a-f]{1,4}){0,3}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){1}(?:(?:(?::[0-9a-f]{1,4}){1,6})|(?:(?::[0-9a-f]{1,4}){0,4}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?::(?:(?:(?::[0-9a-f]{1,4}){1,7})|(?:(?::[0-9a-f]{1,4}){0,5}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(?:%.+)?\s*$/i,regex:N,uuid:o,"json-pointer":b,"relative-json-pointer":r},m.full={date:Z,time:g,"date-time":function(t){var e=t.split(W);return Z(e[0])&&g(e[1],!0)},uri:function(t){return h.test(t)&&c.test(t)},email:/^[a-z0-9!#$%&'*+\/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&''*+\/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/i,hostname:function(t){return t.length<=255&&s.test(t)},ipv4:/^(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)$/,ipv6:/^\s*(?:(?:(?:[0-9a-f]{1,4}:){7}(?:[0-9a-f]{1,4}|:))|(?:(?:[0-9a-f]{1,4}:){6}(?::[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){5}(?:(?:(?::[0-9a-f]{1,4}){1,2})|:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){4}(?:(?:(?::[0-9a-f]{1,4}){1,3})|(?:(?::[0-9a-f]{1,4})?:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){3}(?:(?:(?::[0-9a-f]{1,4}){1,4})|(?:(?::[0-9a-f]{1,4}){0,2}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){2}(?:(?:(?::[0-9a-f]{1,4}){1,5})|(?:(?::[0-9a-f]{1,4}){0,3}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){1}(?:(?:(?::[0-9a-f]{1,4}){1,6})|(?:(?::[0-9a-f]{1,4}){0,4}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?::(?:(?:(?::[0-9a-f]{1,4}){1,7})|(?:(?::[0-9a-f]{1,4}){0,5}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(?:%.+)?\s*$/i,regex:N,uuid:o,"json-pointer":b,"relative-json-pointer":r},m.compare={date:y,time:I,"date-time":function(t,e){if(t&&e){t=t.split(W),e=e.split(W);var l=y(t[0],e[0]);if(void 0!==l)return l||I(t[1],e[1])}}};var W=/t|\s/i,h=/\/|\:/;function N(t){try{return new RegExp(t),!0}catch(t){return!1}}function y(t,e){if(t&&e)return t>e?1:t(e=e[1]+e[2]+e[3]+(e[4]||""))?1:t "+u+") { ";var p=o+"["+u+"]";m.schema=M,m.schemaPath=a+"["+u+"]",m.errSchemaPath=s+"/"+u,m.errorPath=t.util.getPathExpr(t.errorPath,u,t.opts.jsonPointers,!0),m.dataPathArr[g]=u;var Y=t.validate(m);t.util.varOccurences(Y,W)<2?l+=" "+t.util.varReplace(Y,W,p)+" ":l+=" var "+W+" = "+p+"; "+Y+" ",l+=" } ",c&&(l+=" if (valid"+m.level+") { ",Z+="}")}"object"==typeof h&&t.util.schemaHasRules(h,t.RULES.all)&&(m.schema=h,m.schemaPath=t.schemaPath+".additionalItems",m.errSchemaPath=t.errSchemaPath+"/additionalItems",l+=" valid"+m.level+" = true; if ("+o+".length > "+d.length+") { for (var i"+i+" = "+d.length+"; i"+i+" < "+o+".length; i"+i+"++) { ",m.errorPath=t.util.getPathExpr(t.errorPath,"i"+i,t.opts.jsonPointers,!0),p=o+"[i"+i+"]",m.dataPathArr[g]="i"+i,Y=t.validate(m),t.util.varOccurences(Y,W)<2?l+=" "+t.util.varReplace(Y,W,p)+" ":l+=" var "+W+" = "+p+"; "+Y+" ",c&&(l+=" if (!valid"+m.level+") break; "),l+=" } } ",c&&(l+=" if (valid"+m.level+") { ",Z+="}"))}else t.util.schemaHasRules(d,t.RULES.all)&&(m.schema=d,m.schemaPath=a,m.errSchemaPath=s,l+=" for (var i"+i+" = 0; i"+i+" < "+o+".length; i"+i+"++) { ",m.errorPath=t.util.getPathExpr(t.errorPath,"i"+i,t.opts.jsonPointers,!0),p=o+"[i"+i+"]",m.dataPathArr[g]="i"+i,Y=t.validate(m),t.util.varOccurences(Y,W)<2?l+=" "+t.util.varReplace(Y,W,p)+" ":l+=" var "+W+" = "+p+"; "+Y+" ",c&&(l+=" if (!valid"+m.level+") break; "),l+=" } ",c&&(l+=" if (valid"+m.level+") { ",Z+="}"));return c&&(l+=" "+Z+" if ("+r+" == errors) {"),l=t.util.cleanUpCode(l)}},function(t,e){"use strict";t.exports=function(t,e){var l=" ",i=t.level,n=t.dataLevel,d=t.schema[e],a=t.schemaPath+"."+e,s=t.errSchemaPath+"/"+e,c=!t.opts.allErrors,o="data"+(n||""),b=t.opts.v5&&d.$data,r=b?t.util.getData(d.$data,n,t.dataPathArr):d;b&&(l+=" var schema"+i+" = "+r+"; ",r="schema"+i);var m,Z="maximum"==e,g=Z?"exclusiveMaximum":"exclusiveMinimum",W=t.schema[g],h=Z?"<":">",N=Z?">":"<";if(t.opts.v5&&W&&W.$data){var y=t.util.getData(W.$data,n,t.dataPathArr),I="exclusive"+i,G="' + "+(V="op"+i)+" + '";l+=" var schemaExcl"+i+" = "+y+"; ",l+=" var exclusive"+i+"; if (typeof "+(y="schemaExcl"+i)+" != 'boolean' && typeof "+y+" != 'undefined') { ";var M=g;(m=m||[]).push(l),l="",!1!==t.createErrors?(l+=" { keyword: '"+(M||"_exclusiveLimit")+"' , dataPath: (dataPath || '') + "+t.errorPath+' , schemaPath: "'+s+'" , params: {} ',!1!==t.opts.messages&&(l+=" , message: '"+g+" should be boolean' "),t.opts.verbose&&(l+=" , schema: validate.schema"+a+" , parentSchema: validate.schema"+t.schemaPath+" , data: "+o+" "),l+=" } "):l+=" {} ";var u=l;l=m.pop(),!t.compositeRule&&c?t.async?l+=" throw new ValidationError(["+u+"]); ":l+=" validate.errors = ["+u+"]; return false; ":l+=" var err = "+u+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",l+=" } else if( ",b&&(l+=" ("+r+" !== undefined && typeof "+r+" != 'number') || "),l+=" ((exclusive"+i+" = "+y+" === true) ? "+o+" "+N+"= "+r+" : "+o+" "+N+" "+r+")) { var op"+i+" = exclusive"+i+" ? '"+h+"' : '"+h+"=';"}else{G=h,(I=!0===W)||(G+="=");var V="'"+G+"'";l+=" if ( ",b&&(l+=" ("+r+" !== undefined && typeof "+r+" != 'number') || "),l+=" "+o+" "+N,I&&(l+="="),l+=" "+r+") {"}return M=e,(m=m||[]).push(l),l="",!1!==t.createErrors?(l+=" { keyword: '"+(M||"_limit")+"' , dataPath: (dataPath || '') + "+t.errorPath+' , schemaPath: "'+s+'" , params: { comparison: '+V+", limit: "+r+", exclusive: "+I+" } ",!1!==t.opts.messages&&(l+=" , message: 'should be "+G+" ",l+=b?"' + "+r:d+"'"),t.opts.verbose&&(l+=" , schema: ",l+=b?"validate.schema"+a:""+d,l+=" , parentSchema: validate.schema"+t.schemaPath+" , data: "+o+" "),l+=" } "):l+=" {} ",u=l,l=m.pop(),!t.compositeRule&&c?t.async?l+=" throw new ValidationError(["+u+"]); ":l+=" validate.errors = ["+u+"]; return false; ":l+=" var err = "+u+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",l+=" } ",c&&(l+=" else { "),l}},function(t,e){"use strict";t.exports=function(t,e){var l=" ",i=t.level,n=t.dataLevel,d=t.schema[e],a=t.schemaPath+"."+e,s=t.errSchemaPath+"/"+e,c=!t.opts.allErrors,o="data"+(n||""),b=t.opts.v5&&d.$data,r=b?t.util.getData(d.$data,n,t.dataPathArr):d;b&&(l+=" var schema"+i+" = "+r+"; ",r="schema"+i),l+="if ( ",b&&(l+=" ("+r+" !== undefined && typeof "+r+" != 'number') || "),l+=" "+o+".length "+("maxItems"==e?">":"<")+" "+r+") { ";var m=e,Z=Z||[];Z.push(l),l="",!1!==t.createErrors?(l+=" { keyword: '"+(m||"_limitItems")+"' , dataPath: (dataPath || '') + "+t.errorPath+' , schemaPath: "'+s+'" , params: { limit: '+r+" } ",!1!==t.opts.messages&&(l+=" , message: 'should NOT have ",l+="maxItems"==e?"more":"less",l+=" than ",l+=b?"' + "+r+" + '":""+d,l+=" items' "),t.opts.verbose&&(l+=" , schema: ",l+=b?"validate.schema"+a:""+d,l+=" , parentSchema: validate.schema"+t.schemaPath+" , data: "+o+" "),l+=" } "):l+=" {} ";var g=l;return l=Z.pop(),!t.compositeRule&&c?t.async?l+=" throw new ValidationError(["+g+"]); ":l+=" validate.errors = ["+g+"]; return false; ":l+=" var err = "+g+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",l+="} ",c&&(l+=" else { "),l}},function(t,e){"use strict";t.exports=function(t,e){var l=" ",i=t.level,n=t.dataLevel,d=t.schema[e],a=t.schemaPath+"."+e,s=t.errSchemaPath+"/"+e,c=!t.opts.allErrors,o="data"+(n||""),b=t.opts.v5&&d.$data,r=b?t.util.getData(d.$data,n,t.dataPathArr):d;b&&(l+=" var schema"+i+" = "+r+"; ",r="schema"+i);var m="maxLength"==e?">":"<";l+="if ( ",b&&(l+=" ("+r+" !== undefined && typeof "+r+" != 'number') || "),!1===t.opts.unicode?l+=" "+o+".length ":l+=" ucs2length("+o+") ",l+=" "+m+" "+r+") { ";var Z=e,g=g||[];g.push(l),l="",!1!==t.createErrors?(l+=" { keyword: '"+(Z||"_limitLength")+"' , dataPath: (dataPath || '') + "+t.errorPath+' , schemaPath: "'+s+'" , params: { limit: '+r+" } ",!1!==t.opts.messages&&(l+=" , message: 'should NOT be ",l+="maxLength"==e?"longer":"shorter",l+=" than ",l+=b?"' + "+r+" + '":""+d,l+=" characters' "),t.opts.verbose&&(l+=" , schema: ",l+=b?"validate.schema"+a:""+d,l+=" , parentSchema: validate.schema"+t.schemaPath+" , data: "+o+" "),l+=" } "):l+=" {} ";var W=l;return l=g.pop(),!t.compositeRule&&c?t.async?l+=" throw new ValidationError(["+W+"]); ":l+=" validate.errors = ["+W+"]; return false; ":l+=" var err = "+W+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",l+="} ",c&&(l+=" else { "),l}},function(t,e){"use strict";t.exports=function(t,e){var l=" ",i=t.level,n=t.dataLevel,d=t.schema[e],a=t.schemaPath+"."+e,s=t.errSchemaPath+"/"+e,c=!t.opts.allErrors,o="data"+(n||""),b=t.opts.v5&&d.$data,r=b?t.util.getData(d.$data,n,t.dataPathArr):d;b&&(l+=" var schema"+i+" = "+r+"; ",r="schema"+i),l+="if ( ",b&&(l+=" ("+r+" !== undefined && typeof "+r+" != 'number') || "),l+=" Object.keys("+o+").length "+("maxProperties"==e?">":"<")+" "+r+") { ";var m=e,Z=Z||[];Z.push(l),l="",!1!==t.createErrors?(l+=" { keyword: '"+(m||"_limitProperties")+"' , dataPath: (dataPath || '') + "+t.errorPath+' , schemaPath: "'+s+'" , params: { limit: '+r+" } ",!1!==t.opts.messages&&(l+=" , message: 'should NOT have ",l+="maxProperties"==e?"more":"less",l+=" than ",l+=b?"' + "+r+" + '":""+d,l+=" properties' "),t.opts.verbose&&(l+=" , schema: ",l+=b?"validate.schema"+a:""+d,l+=" , parentSchema: validate.schema"+t.schemaPath+" , data: "+o+" "),l+=" } "):l+=" {} ";var g=l;return l=Z.pop(),!t.compositeRule&&c?t.async?l+=" throw new ValidationError(["+g+"]); ":l+=" validate.errors = ["+g+"]; return false; ":l+=" var err = "+g+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",l+="} ",c&&(l+=" else { "),l}},function(t,e){"use strict";t.exports=function(t,e){var l=" ",i=t.level,n=t.dataLevel,d=t.schema[e],a=t.schemaPath+"."+e,s=t.errSchemaPath+"/"+e,c=!t.opts.allErrors,o="data"+(n||""),b=t.opts.v5&&d.$data,r=b?t.util.getData(d.$data,n,t.dataPathArr):d;b&&(l+=" var schema"+i+" = "+r+"; ",r="schema"+i),l+="var division"+i+";if (",b&&(l+=" "+r+" !== undefined && ( typeof "+r+" != 'number' || "),l+=" (division"+i+" = "+o+" / "+r+", ",t.opts.multipleOfPrecision?l+=" Math.abs(Math.round(division"+i+") - division"+i+") > 1e-"+t.opts.multipleOfPrecision+" ":l+=" division"+i+" !== parseInt(division"+i+") ",l+=" ) ",b&&(l+=" ) "),l+=" ) { ";var m=m||[];m.push(l),l="",!1!==t.createErrors?(l+=" { keyword: 'multipleOf' , dataPath: (dataPath || '') + "+t.errorPath+' , schemaPath: "'+s+'" , params: { multipleOf: '+r+" } ",!1!==t.opts.messages&&(l+=" , message: 'should be multiple of ",l+=b?"' + "+r:d+"'"),t.opts.verbose&&(l+=" , schema: ",l+=b?"validate.schema"+a:""+d,l+=" , parentSchema: validate.schema"+t.schemaPath+" , data: "+o+" "),l+=" } "):l+=" {} ";var Z=l;return l=m.pop(),!t.compositeRule&&c?t.async?l+=" throw new ValidationError(["+Z+"]); ":l+=" validate.errors = ["+Z+"]; return false; ":l+=" var err = "+Z+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",l+="} ",c&&(l+=" else { "),l}},function(t,e){"use strict";t.exports=function(t,e){var l=" ",i=t.level,n=t.dataLevel,d=t.schema[e],a=t.schemaPath+"."+e,s=t.errSchemaPath+"/"+e,c=!t.opts.allErrors,o="data"+(n||""),b="errs__"+i,r=t.util.copy(t);if(r.level++,t.util.schemaHasRules(d,t.RULES.all)){r.schema=d,r.schemaPath=a,r.errSchemaPath=s,l+=" var "+b+" = errors; ";var m,Z=t.compositeRule;t.compositeRule=r.compositeRule=!0,r.createErrors=!1,r.opts.allErrors&&(m=r.opts.allErrors,r.opts.allErrors=!1),l+=" "+t.validate(r)+" ",r.createErrors=!0,m&&(r.opts.allErrors=m),t.compositeRule=r.compositeRule=Z,l+=" if (valid"+r.level+") { ";var g=g||[];g.push(l),l="",!1!==t.createErrors?(l+=" { keyword: 'not' , dataPath: (dataPath || '') + "+t.errorPath+' , schemaPath: "'+s+'" , params: {} ',!1!==t.opts.messages&&(l+=" , message: 'should NOT be valid' "),t.opts.verbose&&(l+=" , schema: validate.schema"+a+" , parentSchema: validate.schema"+t.schemaPath+" , data: "+o+" "),l+=" } "):l+=" {} ";var W=l;l=g.pop(),!t.compositeRule&&c?t.async?l+=" throw new ValidationError(["+W+"]); ":l+=" validate.errors = ["+W+"]; return false; ":l+=" var err = "+W+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",l+=" } else { errors = "+b+"; if (vErrors !== null) { if ("+b+") vErrors.length = "+b+"; else vErrors = null; } ",t.opts.allErrors&&(l+=" } ")}else l+=" var err = ",!1!==t.createErrors?(l+=" { keyword: 'not' , dataPath: (dataPath || '') + "+t.errorPath+' , schemaPath: "'+s+'" , params: {} ',!1!==t.opts.messages&&(l+=" , message: 'should NOT be valid' "),t.opts.verbose&&(l+=" , schema: validate.schema"+a+" , parentSchema: validate.schema"+t.schemaPath+" , data: "+o+" "),l+=" } "):l+=" {} ",l+="; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",c&&(l+=" if (false) { ");return l}},function(t,e){"use strict";t.exports=function(t,e){var l=" ",i=t.level,n=t.dataLevel,d=t.schema[e],a=t.schemaPath+"."+e,s=t.errSchemaPath+"/"+e,c=!t.opts.allErrors,o="data"+(n||""),b="valid"+i,r="errs__"+i,m=t.util.copy(t),Z="";m.level++,l+="var "+r+" = errors;var prevValid"+i+" = false;var "+b+" = false; ";var g=t.compositeRule;t.compositeRule=m.compositeRule=!0;var W=d;if(W)for(var h,N=-1,y=W.length-1;N5)l+=" || validate.schema"+a+"[key"+i+"] ";else{var D=h;if(D)for(var U=-1,X=D.length-1;U= "+ot+"; ",s=t.errSchemaPath+"/patternGroups/minimum",l+=" if (!"+b+") { ",(gt=gt||[]).push(l),l="",!1!==t.createErrors?(l+=" { keyword: 'patternGroups' , dataPath: (dataPath || '') + "+t.errorPath+' , schemaPath: "'+s+"\" , params: { reason: '"+mt+"', limit: "+rt+", pattern: '"+t.util.escapeQuotes(dt)+"' } ",!1!==t.opts.messages&&(l+=" , message: 'should NOT have "+Zt+" than "+rt+' properties matching pattern "'+t.util.escapeQuotes(dt)+"\"' "),t.opts.verbose&&(l+=" , schema: validate.schema"+a+" , parentSchema: validate.schema"+t.schemaPath+" , data: "+o+" "),l+=" } "):l+=" {} ",k=l,l=gt.pop(),!t.compositeRule&&c?t.async?l+=" throw new ValidationError(["+k+"]); ":l+=" validate.errors = ["+k+"]; return false; ":l+=" var err = "+k+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",l+=" } ",void 0!==bt&&(l+=" else ")}var gt;if(void 0!==bt)rt=bt,mt="maximum",Zt="more",l+=" "+b+" = pgPropCount"+i+" <= "+bt+"; ",s=t.errSchemaPath+"/patternGroups/maximum",l+=" if (!"+b+") { ",(gt=gt||[]).push(l),l="",!1!==t.createErrors?(l+=" { keyword: 'patternGroups' , dataPath: (dataPath || '') + "+t.errorPath+' , schemaPath: "'+s+"\" , params: { reason: '"+mt+"', limit: "+rt+", pattern: '"+t.util.escapeQuotes(dt)+"' } ",!1!==t.opts.messages&&(l+=" , message: 'should NOT have "+Zt+" than "+rt+' properties matching pattern "'+t.util.escapeQuotes(dt)+"\"' "),t.opts.verbose&&(l+=" , schema: validate.schema"+a+" , parentSchema: validate.schema"+t.schemaPath+" , data: "+o+" "),l+=" } "):l+=" {} ",k=l,l=gt.pop(),!t.compositeRule&&c?t.async?l+=" throw new ValidationError(["+k+"]); ":l+=" validate.errors = ["+k+"]; return false; ":l+=" var err = "+k+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",l+=" } ";s=J,c&&(l+=" if ("+b+") { ",Z+="}")}}}}return c&&(l+=" "+Z+" if ("+r+" == errors) {"),l=t.util.cleanUpCode(l)}},function(t,e){"use strict";t.exports=function(t,e){var l=" ",i=t.level,n=t.dataLevel,d=t.schema[e],a=t.schemaPath+"."+e,s=t.errSchemaPath+"/"+e,c=!t.opts.allErrors,o="data"+(n||""),b="valid"+i,r=t.opts.v5&&d.$data,m=r?t.util.getData(d.$data,n,t.dataPathArr):d;if(r&&(l+=" var schema"+i+" = "+m+"; ",m="schema"+i),!r)if(d.length=t.opts.loopRequired;if(c)if(l+=" var missing"+i+"; ",I){r||(l+=" var schema"+i+" = validate.schema"+a+"; ");var G="' + "+(B="schema"+i+"["+(Y="i"+i)+"]")+" + '";t.opts._errorDataPathProperty&&(t.errorPath=t.util.getPathExpr(y,B,t.opts.jsonPointers)),l+=" var "+b+" = true; ",r&&(l+=" if (schema"+i+" === undefined) "+b+" = true; else if (!Array.isArray(schema"+i+")) "+b+" = false; else {"),l+=" for (var "+Y+" = 0; "+Y+" < schema"+i+".length; "+Y+"++) { "+b+" = "+o+"[schema"+i+"["+Y+"]] !== undefined; if (!"+b+") break; } ",r&&(l+=" } "),l+=" if (!"+b+") { ",(u=u||[]).push(l),l="",!1!==t.createErrors?(l+=" { keyword: 'required' , dataPath: (dataPath || '') + "+t.errorPath+' , schemaPath: "'+s+"\" , params: { missingProperty: '"+G+"' } ",!1!==t.opts.messages&&(l+=" , message: '",t.opts._errorDataPathProperty?l+="is a required property":l+="should have required property \\'"+G+"\\'",l+="' "),t.opts.verbose&&(l+=" , schema: validate.schema"+a+" , parentSchema: validate.schema"+t.schemaPath+" , data: "+o+" "),l+=" } "):l+=" {} ";var M=l;l=u.pop(),!t.compositeRule&&c?t.async?l+=" throw new ValidationError(["+M+"]); ":l+=" validate.errors = ["+M+"]; return false; ":l+=" var err = "+M+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",l+=" } else { "}else{l+=" if ( ";var u,V=Z;if(V)for(var p,Y=-1,R=V.length-1;Y 1) { var i = "+o+".length, j; outer: for (;i--;) { for (j = i; j--;) { if (equal("+o+"[i], "+o+"[j])) { "+b+" = false; break outer; } } } } ",r&&(l+=" } "),l+=" if (!"+b+") { ";var Z=Z||[];Z.push(l),l="",!1!==t.createErrors?(l+=" { keyword: 'uniqueItems' , dataPath: (dataPath || '') + "+t.errorPath+' , schemaPath: "'+s+'" , params: { i: i, j: j } ',!1!==t.opts.messages&&(l+=" , message: 'should NOT have duplicate items (items ## ' + j + ' and ' + i + ' are identical)' "),t.opts.verbose&&(l+=" , schema: ",l+=r?"validate.schema"+a:""+d,l+=" , parentSchema: validate.schema"+t.schemaPath+" , data: "+o+" "),l+=" } "):l+=" {} ";var g=l;l=Z.pop(),!t.compositeRule&&c?t.async?l+=" throw new ValidationError(["+g+"]); ":l+=" validate.errors = ["+g+"]; return false; ":l+=" var err = "+g+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",l+=" } ",c&&(l+=" else { ")}else c&&(l+=" if (true) { ");return l}},function(t,e,l){"use strict";var i="https://raw.githubusercontent.com/epoberezkin/ajv/master/lib/refs/json-schema-v5.json";function n(t){return{not:{items:{not:t}}}}t.exports={enable:function(t){var e={switch:l(44),constant:l(45),_formatLimit:l(46),patternRequired:l(47)};if(!1!==t._opts.meta){var d=l(48);t.addMetaSchema(d,i)}function a(l,i,n){var d={inline:n||e[l],statements:!0,errors:"full"};i&&(d.type=i),t.addKeyword(l,d)}a("constant"),t.addKeyword("contains",{type:"array",macro:n}),a("formatMaximum","string",e._formatLimit),a("formatMinimum","string",e._formatLimit),t.addKeyword("exclusiveFormatMaximum"),t.addKeyword("exclusiveFormatMinimum"),t.addKeyword("patternGroups"),a("patternRequired","object"),a("switch")},META_SCHEMA_ID:i}},function(t,e){"use strict";t.exports=function(t,e){var l=" ",i=t.level,n=t.dataLevel,d=t.schema[e],a=t.schemaPath+"."+e,s=t.errSchemaPath+"/"+e,c=!t.opts.allErrors,o="data"+(n||""),b="valid"+i,r="errs__"+i,m=t.util.copy(t),Z="";m.level++;var g,W="ifPassed"+t.level;l+="var "+W+";";var h=d;if(h)for(var N,y=-1,I=h.length-1;y",u="result"+i,V=t.opts.v5&&d.$data,p=V?t.util.getData(d.$data,n,t.dataPathArr):d;if(V&&(l+=" var schema"+i+" = "+p+"; ",p="schema"+i),G){var Y=t.util.getData(I.$data,n,t.dataPathArr),R="exclusive"+i,B="' + op"+i+" + '";l+=" var schemaExcl"+i+" = "+Y+"; ",l+=" if (typeof "+(Y="schemaExcl"+i)+" != 'boolean' && "+Y+" !== undefined) { "+b+" = false; ";var O=y;(h=h||[]).push(l),l="",!1!==t.createErrors?(l+=" { keyword: '"+(O||"_exclusiveFormatLimit")+"' , dataPath: (dataPath || '') + "+t.errorPath+' , schemaPath: "'+s+'" , params: {} ',!1!==t.opts.messages&&(l+=" , message: '"+y+" should be boolean' "),t.opts.verbose&&(l+=" , schema: validate.schema"+a+" , parentSchema: validate.schema"+t.schemaPath+" , data: "+o+" "),l+=" } "):l+=" {} ";var D=l;l=h.pop(),!t.compositeRule&&c?t.async?l+=" throw new ValidationError(["+D+"]); ":l+=" validate.errors = ["+D+"]; return false; ":l+=" var err = "+D+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",l+=" } ",c&&(Z+="}",l+=" else { "),V&&(l+=" if ("+p+" === undefined) "+b+" = true; else if (typeof "+p+" != 'string') "+b+" = false; else { ",Z+="}"),m&&(l+=" if (!"+W+") "+b+" = true; else { ",Z+="}"),l+=" var "+u+" = "+W+"("+o+", ",l+=V?""+p:""+t.util.toQuotedString(d),l+=" ); if ("+u+" === undefined) "+b+" = false; var exclusive"+i+" = "+Y+" === true; if ("+b+" === undefined) { "+b+" = exclusive"+i+" ? "+u+" "+M+" 0 : "+u+" "+M+"= 0; } if (!"+b+") var op"+i+" = exclusive"+i+" ? '"+M+"' : '"+M+"=';"}else B=M,(R=!0===I)||(B+="="),V&&(l+=" if ("+p+" === undefined) "+b+" = true; else if (typeof "+p+" != 'string') "+b+" = false; else { ",Z+="}"),m&&(l+=" if (!"+W+") "+b+" = true; else { ",Z+="}"),l+=" var "+u+" = "+W+"("+o+", ",l+=V?""+p:""+t.util.toQuotedString(d),l+=" ); if ("+u+" === undefined) "+b+" = false; if ("+b+" === undefined) "+b+" = "+u+" "+M,R||(l+="="),l+=" 0;";return l+=Z+"if (!"+b+") { ",O=e,(h=h||[]).push(l),l="",!1!==t.createErrors?(l+=" { keyword: '"+(O||"_formatLimit")+"' , dataPath: (dataPath || '') + "+t.errorPath+' , schemaPath: "'+s+'" , params: { limit: ',l+=V?""+p:""+t.util.toQuotedString(d),l+=" } ",!1!==t.opts.messages&&(l+=" , message: 'should be "+B+' "',l+=V?"' + "+p+" + '":""+t.util.escapeQuotes(d),l+="\"' "),t.opts.verbose&&(l+=" , schema: ",l+=V?"validate.schema"+a:""+t.util.toQuotedString(d),l+=" , parentSchema: validate.schema"+t.schemaPath+" , data: "+o+" "),l+=" } "):l+=" {} ",D=l,l=h.pop(),!t.compositeRule&&c?t.async?l+=" throw new ValidationError(["+D+"]); ":l+=" validate.errors = ["+D+"]; return false; ":l+=" var err = "+D+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",l+="}"}},function(t,e){"use strict";t.exports=function(t,e){var l=" ",i=t.level,n=t.dataLevel,d=t.schema[e],a=t.schemaPath+"."+e,s=t.errSchemaPath+"/"+e,c=!t.opts.allErrors,o="data"+(n||""),b="valid"+i,r="key"+i,m="patternMatched"+i,Z="";l+="var "+b+" = true;";var g=d;if(g)for(var W,h=-1,N=g.length-1;h0?this.autoScrollStep=(i+24-t)/3:t>d-24&&n+l.scrollTop3?(l.scrollTop+=n/3,i.animateCallback=e,i.animateTimeout=setTimeout(s,50)):(e&&e(!0),l.scrollTop=a,delete i.animateTimeout,delete i.animateCallback)};s()}else e&&e(!1)},_createFrame:function(){this.frame=document.createElement("div"),this.frame.className="jsoneditor jsoneditor-mode-"+this.options.mode,this.container.appendChild(this.frame);var t=this;function e(e){t._onEvent&&t._onEvent(e)}this.frame.onclick=function(t){var l=t.target;e(t),"BUTTON"==l.nodeName&&t.preventDefault()},this.frame.oninput=e,this.frame.onchange=e,this.frame.onkeydown=e,this.frame.onkeyup=e,this.frame.oncut=e,this.frame.onpaste=e,this.frame.onmousedown=e,this.frame.onmouseup=e,this.frame.onmouseover=e,this.frame.onmouseout=e,o.addEventListener(this.frame,"focus",e,!0),o.addEventListener(this.frame,"blur",e,!0),this.frame.onfocusin=e,this.frame.onfocusout=e,this.menu=document.createElement("div"),this.menu.className="jsoneditor-menu",this.frame.appendChild(this.menu);var l=document.createElement("button");l.type="button",l.className="jsoneditor-expand-all",l.title="Expand all fields",l.onclick=function(){t.expandAll()},this.menu.appendChild(l);var i=document.createElement("button");if(i.type="button",i.title="Collapse all fields",i.className="jsoneditor-collapse-all",i.onclick=function(){t.collapseAll()},this.menu.appendChild(i),this.history){var n=document.createElement("button");n.type="button",n.className="jsoneditor-undo jsoneditor-separator",n.title="Undo last action (Ctrl+Z)",n.onclick=function(){t._onUndo()},this.menu.appendChild(n),this.dom.undo=n;var a=document.createElement("button");a.type="button",a.className="jsoneditor-redo",a.title="Redo (Ctrl+Shift+Z)",a.onclick=function(){t._onRedo()},this.menu.appendChild(a),this.dom.redo=a,this.history.onChange=function(){n.disabled=!t.history.canUndo(),a.disabled=!t.history.canRedo()},this.history.onChange()}if(this.options&&this.options.modes&&this.options.modes.length){var s=this;this.modeSwitcher=new c(this.menu,this.options.modes,this.options.mode,(function(t){s.modeSwitcher.destroy(),s.setMode(t),s.modeSwitcher.focus()}))}this.options.search&&(this.searchBox=new d(this,this.menu))},_onUndo:function(){this.history&&(this.history.undo(),this._onChange())},_onRedo:function(){this.history&&(this.history.redo(),this._onChange())},_onEvent:function(t){"keydown"==t.type&&this._onKeyDown(t),"focus"==t.type&&(this.focusTarget=t.target),"mousedown"==t.type&&this._startDragDistance(t),"mousemove"!=t.type&&"mouseup"!=t.type&&"click"!=t.type||this._updateDragDistance(t);var e=s.getNodeFromTarget(t.target);if(e&&e.selected){if("click"==t.type){if(t.target==e.dom.menu)return void this.showContextMenu(t.target);t.hasMoved||this.deselect()}"mousedown"==t.type&&s.onDragStart(this.multiselection.nodes,t)}else"mousedown"==t.type&&(this.deselect(),e&&t.target==e.dom.drag?s.onDragStart(e,t):(!e||t.target!=e.dom.field&&t.target!=e.dom.value&&t.target!=e.dom.select)&&this._onMultiSelectStart(t));e&&e.onEvent(t)},_startDragDistance:function(t){this.dragDistanceEvent={initialTarget:t.target,initialPageX:t.pageX,initialPageY:t.pageY,dragDistance:0,hasMoved:!1}},_updateDragDistance:function(t){this.dragDistanceEvent||this._startDragDistance(t);var e=t.pageX-this.dragDistanceEvent.initialPageX,l=t.pageY-this.dragDistanceEvent.initialPageY;return this.dragDistanceEvent.dragDistance=Math.sqrt(e*e+l*l),this.dragDistanceEvent.hasMoved=this.dragDistanceEvent.hasMoved||this.dragDistanceEvent.dragDistance>10,t.dragDistance=this.dragDistanceEvent.dragDistance,t.hasMoved=this.dragDistanceEvent.hasMoved,t.dragDistance},_onMultiSelectStart:function(t){var e=s.getNodeFromTarget(t.target);if("tree"===this.options.mode&&void 0===this.options.onEditable){this.multiselection={start:e||null,end:null,nodes:[]},this._startDragDistance(t);var l=this;this.mousemove||(this.mousemove=o.addEventListener(window,"mousemove",(function(t){l._onMultiSelect(t)}))),this.mouseup||(this.mouseup=o.addEventListener(window,"mouseup",(function(t){l._onMultiSelectEnd(t)})))}},_onMultiSelect:function(t){if(t.preventDefault(),this._updateDragDistance(t),t.hasMoved){var e=s.getNodeFromTarget(t.target);e&&(null==this.multiselection.start&&(this.multiselection.start=e),this.multiselection.end=e),this.deselect();var l=this.multiselection.start,i=this.multiselection.end||this.multiselection.start;l&&i&&(this.multiselection.nodes=this._findTopLevelNodes(l,i),this.select(this.multiselection.nodes))}},_onMultiSelectEnd:function(t){this.multiselection.nodes[0]&&this.multiselection.nodes[0].dom.menu.focus(),this.multiselection.start=null,this.multiselection.end=null,this.mousemove&&(o.removeEventListener(window,"mousemove",this.mousemove),delete this.mousemove),this.mouseup&&(o.removeEventListener(window,"mouseup",this.mouseup),delete this.mouseup)},deselect:function(t){this.multiselection.nodes.forEach((function(t){t.setSelected(!1)})),this.multiselection.nodes=[],t&&(this.multiselection.start=null,this.multiselection.end=null)},select:function(t){if(!Array.isArray(t))return this.select([t]);if(t){this.deselect(),this.multiselection.nodes=t.slice(0);var e=t[0];t.forEach((function(t){t.setSelected(!0,t===e)}))}},_findTopLevelNodes:function(t,e){for(var l=t.getNodePath(),i=e.getNodePath(),n=0;n=0},i.prototype.canRedo=function(){return this.index=0;){var l=e[t];if(" "!==l&&"\n"!==l&&"\r"!==l&&"\t"!==l)return l;t--}return""}function s(){for(l+=2;l=0;s--){var c=a[s];!0===c.specified&&d.removeAttribute(c.name)}e.stripFormatting(d)}},e.setEndOfContentEditable=function(t){var e,l;document.createRange&&((e=document.createRange()).selectNodeContents(t),e.collapse(!1),(l=window.getSelection()).removeAllRanges(),l.addRange(e))},e.selectContentEditable=function(t){var e,l;t&&"DIV"==t.nodeName&&window.getSelection&&document.createRange&&((l=document.createRange()).selectNodeContents(t),(e=window.getSelection()).removeAllRanges(),e.addRange(l))},e.getSelection=function(){if(window.getSelection){var t=window.getSelection();if(t.getRangeAt&&t.rangeCount)return t.getRangeAt(0)}return null},e.setSelection=function(t){if(t&&window.getSelection){var e=window.getSelection();e.removeAllRanges(),e.addRange(t)}},e.getSelectionOffset=function(){var t=e.getSelection();return t&&"startOffset"in t&&"endOffset"in t&&t.startContainer&&t.startContainer==t.endContainer?{startOffset:t.startOffset,endOffset:t.endOffset,container:t.startContainer.parentNode}:null},e.setSelectionOffset=function(t){if(document.createRange&&window.getSelection&&window.getSelection()){var l=document.createRange();t.container.firstChild||t.container.appendChild(document.createTextNode("")),l.setStart(t.container.firstChild,t.startOffset),l.setEnd(t.container.firstChild,t.endOffset),e.setSelection(l)}},e.getInnerText=function(t,l){if(null==l&&(l={text:"",flush:function(){var t=this.text;return this.text="",t},set:function(t){this.text=t}}),t.nodeValue)return l.flush()+t.nodeValue;if(t.hasChildNodes()){for(var i=t.childNodes,n="",d=0,a=i.length;d5){var l=["("+(e.length-5)+" more...)"];(e=e.slice(0,5)).push(l)}t.message="should be equal to one of: "+e.join(", ")}}return"additionalProperties"===t.keyword&&(t.message="should NOT have additional property: "+t.params.additionalProperty),t},e.insideRect=function(t,e,l){var i=void 0!==l?l:0;return e.left-i>=t.left&&e.right+i<=t.right&&e.top-i>=t.top&&e.bottom+i<=t.bottom},e.debounce=function(t,e,l){var i;return function(){var n=this,d=arguments,a=function(){i=null,l||t.apply(n,d)},s=l&&!i;clearTimeout(i),i=setTimeout(a,e),s&&t.apply(n,d)}},e.textDiff=function(t,e){for(var l=e.length,i=0,n=t.length,d=e.length;e.charAt(i)===t.charAt(i)&&ii&&n>0;)d--,n--;return{start:i,end:d}}},function(t,e,l){var i,n,d=(i={trace:function(){},yy:{},symbols_:{error:2,JSONString:3,STRING:4,JSONNumber:5,NUMBER:6,JSONNullLiteral:7,NULL:8,JSONBooleanLiteral:9,TRUE:10,FALSE:11,JSONText:12,JSONValue:13,EOF:14,JSONObject:15,JSONArray:16,"{":17,"}":18,JSONMemberList:19,JSONMember:20,":":21,",":22,"[":23,"]":24,JSONElementList:25,$accept:0,$end:1},terminals_:{2:"error",4:"STRING",6:"NUMBER",8:"NULL",10:"TRUE",11:"FALSE",14:"EOF",17:"{",18:"}",21:":",22:",",23:"[",24:"]"},productions_:[0,[3,1],[5,1],[7,1],[9,1],[9,1],[12,2],[13,1],[13,1],[13,1],[13,1],[13,1],[13,1],[15,2],[15,3],[20,3],[19,1],[19,3],[16,2],[16,3],[25,1],[25,3]],performAction:function(t,e,l,i,n,d,a){var s=d.length-1;switch(n){case 1:this.$=t.replace(/\\(\\|")/g,"$1").replace(/\\n/g,"\n").replace(/\\r/g,"\r").replace(/\\t/g,"\t").replace(/\\v/g,"\v").replace(/\\f/g,"\f").replace(/\\b/g,"\b");break;case 2:this.$=Number(t);break;case 3:this.$=null;break;case 4:this.$=!0;break;case 5:this.$=!1;break;case 6:return this.$=d[s-1];case 13:this.$={};break;case 14:this.$=d[s-1];break;case 15:this.$=[d[s-2],d[s]];break;case 16:this.$={},this.$[d[s][0]]=d[s][1];break;case 17:this.$=d[s-2],d[s-2][d[s][0]]=d[s][1];break;case 18:this.$=[];break;case 19:this.$=d[s-1];break;case 20:this.$=[d[s]];break;case 21:this.$=d[s-2],d[s-2].push(d[s])}},table:[{3:5,4:[1,12],5:6,6:[1,13],7:3,8:[1,9],9:4,10:[1,10],11:[1,11],12:1,13:2,15:7,16:8,17:[1,14],23:[1,15]},{1:[3]},{14:[1,16]},{14:[2,7],18:[2,7],22:[2,7],24:[2,7]},{14:[2,8],18:[2,8],22:[2,8],24:[2,8]},{14:[2,9],18:[2,9],22:[2,9],24:[2,9]},{14:[2,10],18:[2,10],22:[2,10],24:[2,10]},{14:[2,11],18:[2,11],22:[2,11],24:[2,11]},{14:[2,12],18:[2,12],22:[2,12],24:[2,12]},{14:[2,3],18:[2,3],22:[2,3],24:[2,3]},{14:[2,4],18:[2,4],22:[2,4],24:[2,4]},{14:[2,5],18:[2,5],22:[2,5],24:[2,5]},{14:[2,1],18:[2,1],21:[2,1],22:[2,1],24:[2,1]},{14:[2,2],18:[2,2],22:[2,2],24:[2,2]},{3:20,4:[1,12],18:[1,17],19:18,20:19},{3:5,4:[1,12],5:6,6:[1,13],7:3,8:[1,9],9:4,10:[1,10],11:[1,11],13:23,15:7,16:8,17:[1,14],23:[1,15],24:[1,21],25:22},{1:[2,6]},{14:[2,13],18:[2,13],22:[2,13],24:[2,13]},{18:[1,24],22:[1,25]},{18:[2,16],22:[2,16]},{21:[1,26]},{14:[2,18],18:[2,18],22:[2,18],24:[2,18]},{22:[1,28],24:[1,27]},{22:[2,20],24:[2,20]},{14:[2,14],18:[2,14],22:[2,14],24:[2,14]},{3:20,4:[1,12],20:29},{3:5,4:[1,12],5:6,6:[1,13],7:3,8:[1,9],9:4,10:[1,10],11:[1,11],13:30,15:7,16:8,17:[1,14],23:[1,15]},{14:[2,19],18:[2,19],22:[2,19],24:[2,19]},{3:5,4:[1,12],5:6,6:[1,13],7:3,8:[1,9],9:4,10:[1,10],11:[1,11],13:31,15:7,16:8,17:[1,14],23:[1,15]},{18:[2,17],22:[2,17]},{18:[2,15],22:[2,15]},{22:[2,21],24:[2,21]}],defaultActions:{16:[2,6]},parseError:function(t,e){throw new Error(t)},parse:function(t){var e=this,l=[0],i=[null],n=[],d=this.table,a="",s=0,c=0,o=0;this.lexer.setInput(t),this.lexer.yy=this.yy,this.yy.lexer=this.lexer,void 0===this.lexer.yylloc&&(this.lexer.yylloc={});var b=this.lexer.yylloc;function r(){var t;return"number"!=typeof(t=e.lexer.lex()||1)&&(t=e.symbols_[t]||t),t}n.push(b),"function"==typeof this.yy.parseError&&(this.parseError=this.yy.parseError);for(var m,Z,g,W,h,N,y,I,G,M,u={};;){if(g=l[l.length-1],this.defaultActions[g]?W=this.defaultActions[g]:(null==m&&(m=r()),W=d[g]&&d[g][m]),void 0===W||!W.length||!W[0]){if(!o){for(N in G=[],d[g])this.terminals_[N]&&N>2&&G.push("'"+this.terminals_[N]+"'");var V="";V=this.lexer.showPosition?"Parse error on line "+(s+1)+":\n"+this.lexer.showPosition()+"\nExpecting "+G.join(", ")+", got '"+this.terminals_[m]+"'":"Parse error on line "+(s+1)+": Unexpected "+(1==m?"end of input":"'"+(this.terminals_[m]||m)+"'"),this.parseError(V,{text:this.lexer.match,token:this.terminals_[m]||m,line:this.lexer.yylineno,loc:b,expected:G})}if(3==o){if(1==m)throw new Error(V||"Parsing halted.");c=this.lexer.yyleng,a=this.lexer.yytext,s=this.lexer.yylineno,b=this.lexer.yylloc,m=r()}for(;!(2..toString()in d[g]);){if(0==g)throw new Error(V||"Parsing halted.");M=1,l.length=l.length-2*M,i.length=i.length-M,n.length=n.length-M,g=l[l.length-1]}Z=m,m=2,W=d[g=l[l.length-1]]&&d[g][2],o=3}if(W[0]instanceof Array&&W.length>1)throw new Error("Parse Error: multiple actions possible at state: "+g+", token: "+m);switch(W[0]){case 1:l.push(m),i.push(this.lexer.yytext),n.push(this.lexer.yylloc),l.push(W[1]),m=null,Z?(m=Z,Z=null):(c=this.lexer.yyleng,a=this.lexer.yytext,s=this.lexer.yylineno,b=this.lexer.yylloc,o>0&&o--);break;case 2:if(y=this.productions_[W[1]][1],u.$=i[i.length-y],u._$={first_line:n[n.length-(y||1)].first_line,last_line:n[n.length-1].last_line,first_column:n[n.length-(y||1)].first_column,last_column:n[n.length-1].last_column},void 0!==(h=this.performAction.call(u,a,c,s,this.yy,W[1],i,n)))return h;y&&(l=l.slice(0,-1*y*2),i=i.slice(0,-1*y),n=n.slice(0,-1*y)),l.push(this.productions_[W[1]][0]),i.push(u.$),n.push(u._$),I=d[l[l.length-2]][l[l.length-1]],l.push(I);break;case 3:return!0}}return!0}},n=function(){var t={EOF:1,parseError:function(t,e){if(!this.yy.parseError)throw new Error(t);this.yy.parseError(t,e)},setInput:function(t){return this._input=t,this._more=this._less=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this},input:function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.match+=t,this.matched+=t,t.match(/\n/)&&this.yylineno++,this._input=this._input.slice(1),t},unput:function(t){return this._input=t+this._input,this},more:function(){return this._more=!0,this},less:function(t){this._input=this.match.slice(t)+this._input},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},next:function(){if(this.done)return this.EOF;var t,e,l,i,n;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var d=this._currentRules(),a=0;ae[0].length)||(e=l,i=a,this.options.flex));a++);return e?((n=e[0].match(/\n.*/g))&&(this.yylineno+=n.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:n?n[n.length-1].length-1:this.yylloc.last_column+e[0].length},this.yytext+=e[0],this.match+=e[0],this.yyleng=this.yytext.length,this._more=!1,this._input=this._input.slice(e[0].length),this.matched+=e[0],t=this.performAction.call(this,this.yy,this,d[i],this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),t||void 0):""===this._input?this.EOF:void this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var t=this.next();return void 0!==t?t:this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){return this.conditionStack.pop()},_currentRules:function(){return this.conditions[this.conditionStack[this.conditionStack.length-1]].rules},topState:function(){return this.conditionStack[this.conditionStack.length-2]},pushState:function(t){this.begin(t)},options:{},performAction:function(t,e,l,i){switch(l){case 0:break;case 1:return 6;case 2:return e.yytext=e.yytext.substr(1,e.yyleng-2),4;case 3:return 17;case 4:return 18;case 5:return 23;case 6:return 24;case 7:return 22;case 8:return 21;case 9:return 10;case 10:return 11;case 11:return 8;case 12:return 14;case 13:return"INVALID"}},rules:[/^(?:\s+)/,/^(?:(-?([0-9]|[1-9][0-9]+))(\.[0-9]+)?([eE][-+]?[0-9]+)?\b)/,/^(?:"(?:\\[\\"bfnrt/]|\\u[a-fA-F0-9]{4}|[^\\\0-\x09\x0a-\x1f"])*")/,/^(?:\{)/,/^(?:\})/,/^(?:\[)/,/^(?:\])/,/^(?:,)/,/^(?::)/,/^(?:true\b)/,/^(?:false\b)/,/^(?:null\b)/,/^(?:$)/,/^(?:.)/],conditions:{INITIAL:{rules:[0,1,2,3,4,5,6,7,8,9,10,11,12,13],inclusive:!0}}};return t}(),i.lexer=n,i);e.parser=d,e.parse=d.parse.bind(d)},function(t,e){"use strict";function l(t,e){var l=this;this.editor=t,this.timeout=void 0,this.delay=200,this.lastText=void 0,this.dom={},this.dom.container=e;var i=document.createElement("table");this.dom.table=i,i.className="jsoneditor-search",e.appendChild(i);var n=document.createElement("tbody");this.dom.tbody=n,i.appendChild(n);var d=document.createElement("tr");n.appendChild(d);var a=document.createElement("td");d.appendChild(a);var s=document.createElement("div");this.dom.results=s,s.className="jsoneditor-results",a.appendChild(s),a=document.createElement("td"),d.appendChild(a);var c=document.createElement("div");this.dom.input=c,c.className="jsoneditor-frame",c.title="Search fields and values",a.appendChild(c);var o=document.createElement("table");c.appendChild(o);var b=document.createElement("tbody");o.appendChild(b),d=document.createElement("tr"),b.appendChild(d);var r=document.createElement("button");r.type="button",r.className="jsoneditor-refresh",(a=document.createElement("td")).appendChild(r),d.appendChild(a);var m=document.createElement("input");this.dom.search=m,m.oninput=function(t){l._onDelayedSearch(t)},m.onchange=function(t){l._onSearch()},m.onkeydown=function(t){l._onKeyDown(t)},m.onkeyup=function(t){l._onKeyUp(t)},r.onclick=function(t){m.select()},(a=document.createElement("td")).appendChild(m),d.appendChild(a);var Z=document.createElement("button");Z.type="button",Z.title="Next result (Enter)",Z.className="jsoneditor-next",Z.onclick=function(){l.next()},(a=document.createElement("td")).appendChild(Z),d.appendChild(a);var g=document.createElement("button");g.type="button",g.title="Previous result (Shift+Enter)",g.className="jsoneditor-previous",g.onclick=function(){l.previous()},(a=document.createElement("td")).appendChild(g),d.appendChild(a)}l.prototype.next=function(t){if(null!=this.results){var e=null!=this.resultIndex?this.resultIndex+1:0;e>this.results.length-1&&(e=0),this._setActiveResult(e,t)}},l.prototype.previous=function(t){if(null!=this.results){var e=this.results.length-1,l=null!=this.resultIndex?this.resultIndex-1:e;l<0&&(l=e),this._setActiveResult(l,t)}},l.prototype._setActiveResult=function(t,e){if(this.activeResult){var l=this.activeResult.node;"field"==this.activeResult.elem?delete l.searchFieldActive:delete l.searchValueActive,l.updateDom()}if(!this.results||!this.results[t])return this.resultIndex=void 0,void(this.activeResult=void 0);this.resultIndex=t;var i=this.results[this.resultIndex].node,n=this.results[this.resultIndex].elem;"field"==n?i.searchFieldActive=!0:i.searchValueActive=!0,this.activeResult=this.results[this.resultIndex],i.updateDom(),i.scrollTo((function(){e&&i.focus(n)}))},l.prototype._clearDelay=function(){null!=this.timeout&&(clearTimeout(this.timeout),delete this.timeout)},l.prototype._onDelayedSearch=function(t){this._clearDelay();var e=this;this.timeout=setTimeout((function(t){e._onSearch()}),this.delay)},l.prototype._onSearch=function(t){this._clearDelay();var e=this.dom.search.value,l=e.length>0?e:void 0;if(l!=this.lastText||t)if(this.lastText=l,this.results=this.editor.search(l),this._setActiveResult(void 0),null!=l){var i=this.results.length;switch(i){case 0:this.dom.results.innerHTML="no results";break;case 1:this.dom.results.innerHTML="1 result";break;default:this.dom.results.innerHTML=i+" results"}}else this.dom.results.innerHTML=""},l.prototype._onKeyDown=function(t){var e=t.which;27==e?(this.dom.search.value="",this._onSearch(),t.preventDefault(),t.stopPropagation()):13==e&&(t.ctrlKey?this._onSearch(!0):t.shiftKey?this.previous():this.next(),t.preventDefault(),t.stopPropagation())},l.prototype._onKeyUp=function(t){var e=t.keyCode;27!=e&&13!=e&&this._onDelayedSearch(t)},l.prototype.clear=function(){this.dom.search.value="",this._onSearch()},l.prototype.destroy=function(){this.editor=null,this.dom.container.removeChild(this.dom.table),this.dom=null,this.results=null,this.activeResult=null,this._clearDelay()},t.exports=l},function(t,e,l){"use strict";var i=l(54);function n(t,e){this.dom={};var l=this,i=this.dom;this.anchor=void 0,this.items=t,this.eventListeners={},this.selection=void 0,this.onClose=e?e.close:void 0;var n=document.createElement("div");n.className="jsoneditor-contextmenu-root",i.root=n;var d=document.createElement("div");d.className="jsoneditor-contextmenu",i.menu=d,n.appendChild(d);var a=document.createElement("ul");a.className="jsoneditor-menu",d.appendChild(a),i.list=a,i.items=[];var s=document.createElement("button");s.type="button",i.focusButton=s;var c=document.createElement("li");c.style.overflow="hidden",c.style.height="0",c.appendChild(s),a.appendChild(c),function t(e,i,n){n.forEach((function(n){if("separator"==n.type){var d=document.createElement("div");d.className="jsoneditor-separator",(s=document.createElement("li")).appendChild(d),e.appendChild(s)}else{var a={},s=document.createElement("li");e.appendChild(s);var c=document.createElement("button");if(c.type="button",c.className=n.className,a.button=c,n.title&&(c.title=n.title),n.click&&(c.onclick=function(t){t.preventDefault(),l.hide(),n.click()}),s.appendChild(c),n.submenu){var o,b=document.createElement("div");if(b.className="jsoneditor-icon",c.appendChild(b),c.appendChild(document.createTextNode(n.text)),n.click){c.className+=" jsoneditor-default";var r=document.createElement("button");r.type="button",a.buttonExpand=r,r.className="jsoneditor-expand",r.innerHTML='
',s.appendChild(r),n.submenuTitle&&(r.title=n.submenuTitle),o=r}else{var m=document.createElement("div");m.className="jsoneditor-expand",c.appendChild(m),o=c}o.onclick=function(t){t.preventDefault(),l._onExpandItem(a),o.focus()};var Z=[];a.subItems=Z;var g=document.createElement("ul");a.ul=g,g.className="jsoneditor-menu",g.style.height="0",s.appendChild(g),t(g,Z,n.submenu)}else c.innerHTML='
'+n.text;i.push(a)}}))}(a,this.dom.items,t),this.maxHeight=0,t.forEach((function(e){var i=24*(t.length+(e.submenu?e.submenu.length:0));l.maxHeight=Math.max(l.maxHeight,i)}))}n.prototype._getVisibleButtons=function(){var t=[],e=this;return this.dom.items.forEach((function(l){t.push(l.button),l.buttonExpand&&t.push(l.buttonExpand),l.subItems&&l==e.expandedItem&&l.subItems.forEach((function(e){t.push(e.button),e.buttonExpand&&t.push(e.buttonExpand)}))})),t},n.visibleMenu=void 0,n.prototype.show=function(t,e){this.hide();var l=!0;if(e){var d=t.getBoundingClientRect(),a=e.getBoundingClientRect();d.bottom+this.maxHeighta.top&&(l=!1)}if(l){var s=t.offsetHeight;this.dom.menu.style.left="0px",this.dom.menu.style.top=s+"px",this.dom.menu.style.bottom=""}else this.dom.menu.style.left="0px",this.dom.menu.style.top="",this.dom.menu.style.bottom="0px";var c=t.parentNode;c.insertBefore(this.dom.root,c.firstChild);var o=this,b=this.dom.list;this.eventListeners.mousedown=i.addEventListener(window,"mousedown",(function(t){var e=t.target;e==b||o._isChildOf(e,b)||(o.hide(),t.stopPropagation(),t.preventDefault())})),this.eventListeners.keydown=i.addEventListener(window,"keydown",(function(t){o._onKeyDown(t)})),this.selection=i.getSelection(),this.anchor=t,setTimeout((function(){o.dom.focusButton.focus()}),0),n.visibleMenu&&n.visibleMenu.hide(),n.visibleMenu=this},n.prototype.hide=function(){for(var t in this.dom.root.parentNode&&(this.dom.root.parentNode.removeChild(this.dom.root),this.onClose&&this.onClose()),this.eventListeners)if(this.eventListeners.hasOwnProperty(t)){var e=this.eventListeners[t];e&&i.removeEventListener(window,t,e),delete this.eventListeners[t]}n.visibleMenu==this&&(n.visibleMenu=void 0)},n.prototype._onExpandItem=function(t){var e=this,l=t==this.expandedItem,n=this.expandedItem;if(n&&(n.ul.style.height="0",n.ul.style.padding="",setTimeout((function(){e.expandedItem!=n&&(n.ul.style.display="",i.removeClassName(n.ul.parentNode,"jsoneditor-selected"))}),300),this.expandedItem=void 0),!l){var d=t.ul;d.style.display="block",d.clientHeight,setTimeout((function(){e.expandedItem==t&&(d.style.height=24*d.childNodes.length+"px",d.style.padding="5px 10px")}),0),i.addClassName(d.parentNode,"jsoneditor-selected"),this.expandedItem=t}},n.prototype._onKeyDown=function(t){var e,l,n,d,a=t.target,s=t.which,c=!1;27==s?(this.selection&&i.setSelection(this.selection),this.anchor&&this.anchor.focus(),this.hide(),c=!0):9==s?t.shiftKey?0==(l=(e=this._getVisibleButtons()).indexOf(a))&&(e[e.length-1].focus(),c=!0):(l=(e=this._getVisibleButtons()).indexOf(a))==e.length-1&&(e[0].focus(),c=!0):37==s?("jsoneditor-expand"==a.className&&(l=(e=this._getVisibleButtons()).indexOf(a),(n=e[l-1])&&n.focus()),c=!0):38==s?(l=(e=this._getVisibleButtons()).indexOf(a),(n=e[l-1])&&"jsoneditor-expand"==n.className&&(n=e[l-2]),n||(n=e[e.length-1]),n&&n.focus(),c=!0):39==s?(l=(e=this._getVisibleButtons()).indexOf(a),(d=e[l+1])&&"jsoneditor-expand"==d.className&&d.focus(),c=!0):40==s&&(l=(e=this._getVisibleButtons()).indexOf(a),(d=e[l+1])&&"jsoneditor-expand"==d.className&&(d=e[l+2]),d||(d=e[0]),d&&(d.focus(),c=!0),c=!0),c&&(t.stopPropagation(),t.preventDefault())},n.prototype._isChildOf=function(t,e){for(var l=t.parentNode;l;){if(l==e)return!0;l=l.parentNode}return!1},t.exports=n},function(t,e,l){"use strict";var i=l(59),n=l(57),d=l(60),a=l(54);function s(t,e){this.editor=t,this.dom={},this.expanded=!1,e&&e instanceof Object?(this.setField(e.field,e.fieldEditable),this.setValue(e.value,e.type)):(this.setField(""),this.setValue(null)),this._debouncedOnChangeValue=a.debounce(this._onChangeValue.bind(this),s.prototype.DEBOUNCE_INTERVAL),this._debouncedOnChangeField=a.debounce(this._onChangeField.bind(this),s.prototype.DEBOUNCE_INTERVAL)}s.prototype.DEBOUNCE_INTERVAL=150,s.prototype._updateEditability=function(){if(this.editable={field:!0,value:!0},this.editor&&(this.editable.field="tree"===this.editor.options.mode,this.editable.value="view"!==this.editor.options.mode,("tree"===this.editor.options.mode||"form"===this.editor.options.mode)&&"function"==typeof this.editor.options.onEditable)){var t=this.editor.options.onEditable({field:this.field,value:this.value,path:this.getPath()});"boolean"==typeof t?(this.editable.field=t,this.editable.value=t):("boolean"==typeof t.field&&(this.editable.field=t.field),"boolean"==typeof t.value&&(this.editable.value=t.value))}},s.prototype.getPath=function(){for(var t=this,e=[];t;){var l=t.parent?"array"!=t.parent.type?t.field:t.index:void 0;void 0!==l&&e.unshift(l),t=t.parent}return e},s.prototype.findNode=function(t){for(var e=a.parsePath(t),l=this;l&&e.length>0;){var i=e.shift();if("number"==typeof i){if("array"!==l.type)throw new Error("Cannot get child node at index "+i+": node is no array");l=l.childs[i]}else{if("object"!==l.type)throw new Error("Cannot get child node "+i+": node is no object");l=l.childs.filter((function(t){return t.field===i}))[0]}}return l},s.prototype.findParents=function(){for(var t=[],e=this.parent;e;)t.unshift(e),e=e.parent;return t},s.prototype.setError=function(t,e){this.getDom(),this.error=t;var l=this.dom.tdError;if(t){l||(l=document.createElement("td"),this.dom.tdError=l,this.dom.tdValue.parentNode.appendChild(l));var i=document.createElement("div");i.className="jsoneditor-popover jsoneditor-right",i.appendChild(document.createTextNode(t.message));var n=document.createElement("button");for(n.type="button",n.className="jsoneditor-schema-error",n.appendChild(i),n.onmouseover=n.onfocus=function(){for(var t=["right","above","below","left"],e=0;e0&&(t=this.childs.filter((function(t){return-1!==l.indexOf(t.field)})).map((function(t){return{node:t,error:{message:'duplicate key "'+t.field+'"'}}})))}if(this.childs)for(i=0;i0&&(t=t.concat(d))}return t},s.prototype.clearDom=function(){this.dom={}},s.prototype.getDom=function(){var t=this.dom;if(t.tr)return t.tr;if(this._updateEditability(),t.tr=document.createElement("tr"),t.tr.node=this,"tree"===this.editor.options.mode){var e=document.createElement("td");if(this.editable.field&&this.parent){var l=document.createElement("button");l.type="button",t.drag=l,l.className="jsoneditor-dragarea",l.title="Drag to move this field (Alt+Shift+Arrows)",e.appendChild(l)}t.tr.appendChild(e);var i=document.createElement("td"),n=document.createElement("button");n.type="button",t.menu=n,n.className="jsoneditor-contextmenu",n.title="Click to open the actions menu (Ctrl+M)",i.appendChild(t.menu),t.tr.appendChild(i)}var d=document.createElement("td");return t.tr.appendChild(d),t.tree=this._createDomTree(),d.appendChild(t.tree),this.updateDom({updateIndexes:!0}),t.tr},s.onDragStart=function(t,e){if(!Array.isArray(t))return s.onDragStart([t],e);if(0!==t.length){var l=t[0],i=t[t.length-1],n=s.getNodeFromTarget(e.target),d=i._nextSibling(),c=l.editor,o=a.getAbsoluteTop(n.dom.tr)-a.getAbsoluteTop(l.dom.tr);c.mousemove||(c.mousemove=a.addEventListener(window,"mousemove",(function(e){s.onDrag(t,e)}))),c.mouseup||(c.mouseup=a.addEventListener(window,"mouseup",(function(e){s.onDragEnd(t,e)}))),c.highlighter.lock(),c.drag={oldCursor:document.body.style.cursor,oldSelection:c.getSelection(),oldBeforeNode:d,mouseX:e.pageX,offsetY:o,level:l.getLevel()},document.body.style.cursor="move",e.preventDefault()}},s.onDrag=function(t,e){if(!Array.isArray(t))return s.onDrag([t],e);if(0!==t.length){var l,i,n,d,o,b,r,m,Z,g,W,h,N,y,I=t[0].editor,G=e.pageY-I.drag.offsetY,M=e.pageX,u=!1,V=t[0];if(l=V.dom.tr,Z=a.getAbsoluteTop(l),h=l.offsetHeight,G(g=(i=r.dom.tr)?a.getAbsoluteTop(i):0)+h&&(r=void 0),r&&(t.forEach((function(t){r.parent.moveBefore(t,r)})),u=!0)}else{var p=t[t.length-1];if(d=(o=p.expanded&&p.append?p.append.getDom():p.dom.tr)?o.nextSibling:void 0){W=a.getAbsoluteTop(d),n=d;do{m=s.getNodeFromTarget(n),n&&(N=n.nextSibling?a.getAbsoluteTop(n.nextSibling):0,y=n?N-W:0,m.parent.childs.length==t.length&&m.parent.childs[t.length-1]==p&&(Z+=27)),n=n.nextSibling}while(n&&G>Z+y);if(m&&m.parent){var Y=M-I.drag.mouseX,R=Math.round(Y/24/2),B=I.drag.level+R,O=m.getLevel();for(i=m.dom.tr.previousSibling;O0)return l[0].enum}return null},s._findSchema=function(t,e){for(var l=t,i=0;i0?this.editor.multiselection.nodes:[this],G=I[0],M=I[I.length-1];if(13==m){if(Z==this.dom.value)this.editable.value&&!t.ctrlKey||a.isUrl(this.value)&&(window.open(this.value,"_blank"),N=!0);else if(Z==this.dom.expand&&this._hasChilds()){var u=t.ctrlKey;this._onExpand(u),Z.focus(),N=!0}}else if(68==m)g&&y&&(s.onDuplicate(I),N=!0);else if(69==m)g&&(this._onExpand(W),Z.focus(),N=!0);else if(77==m&&y)g&&(this.showContextMenu(Z),N=!0);else if(46==m&&y)g&&(s.onRemove(I),N=!0);else if(45==m&&y)g&&!W?(this._onInsertBefore(),N=!0):g&&W&&(this._onInsertAfter(),N=!0);else if(35==m){if(h){var V=this._lastNode();V&&V.focus(s.focusElement||this._getElementName(Z)),N=!0}}else if(36==m){if(h){var p=this._firstNode();p&&p.focus(s.focusElement||this._getElementName(Z)),N=!0}}else if(37==m){if(h&&!W){var Y=this._previousElement(Z);Y&&this.focus(this._getElementName(Y)),N=!0}else if(h&&W&&y){if(M.expanded){var R=M.getAppend();i=R?R.nextSibling:void 0}else{var B=M.getDom();i=B.nextSibling}i&&(l=s.getNodeFromTarget(i),n=i.nextSibling,U=s.getNodeFromTarget(n),l&&l instanceof c&&1!=M.parent.childs.length&&U&&U.parent&&(d=this.editor.getSelection(),o=M._nextSibling(),I.forEach((function(t){U.parent.moveBefore(t,U)})),this.focus(s.focusElement||this._getElementName(Z)),this.editor._onAction("moveNodes",{nodes:I,oldBeforeNode:o,newBeforeNode:U,oldSelection:d,newSelection:this.editor.getSelection()})))}}else if(38==m)h&&!W?((e=this._previousNode())&&(this.editor.deselect(!0),e.focus(s.focusElement||this._getElementName(Z))),N=!0):!h&&g&&W&&y?((e=this._previousNode())&&((r=this.editor.multiselection).start=r.start||this,r.end=e,b=this.editor._findTopLevelNodes(r.start,r.end),this.editor.select(b),e.focus("field")),N=!0):h&&W&&y&&((e=G._previousNode())&&e.parent&&(d=this.editor.getSelection(),o=M._nextSibling(),I.forEach((function(t){e.parent.moveBefore(t,e)})),this.focus(s.focusElement||this._getElementName(Z)),this.editor._onAction("moveNodes",{nodes:I,oldBeforeNode:o,newBeforeNode:e,oldSelection:d,newSelection:this.editor.getSelection()})),N=!0);else if(39==m){if(h&&!W){var O=this._nextElement(Z);O&&this.focus(this._getElementName(O)),N=!0}else if(h&&W&&y){var D=(B=G.getDom()).previousSibling;D&&(e=s.getNodeFromTarget(D))&&e.parent&&e instanceof c&&!e.isVisible()&&(d=this.editor.getSelection(),o=M._nextSibling(),I.forEach((function(t){e.parent.moveBefore(t,e)})),this.focus(s.focusElement||this._getElementName(Z)),this.editor._onAction("moveNodes",{nodes:I,oldBeforeNode:o,newBeforeNode:e,oldSelection:d,newSelection:this.editor.getSelection()}))}}else if(40==m)if(h&&!W)(l=this._nextNode())&&(this.editor.deselect(!0),l.focus(s.focusElement||this._getElementName(Z))),N=!0;else if(!h&&g&&W&&y)(l=this._nextNode())&&((r=this.editor.multiselection).start=r.start||this,r.end=l,b=this.editor._findTopLevelNodes(r.start,r.end),this.editor.select(b),l.focus("field")),N=!0;else if(h&&W&&y){var U=(l=M.expanded?M.append?M.append._nextNode():void 0:M._nextNode())&&(l._nextNode()||l.parent.append);U&&U.parent&&(d=this.editor.getSelection(),o=M._nextSibling(),I.forEach((function(t){U.parent.moveBefore(t,U)})),this.focus(s.focusElement||this._getElementName(Z)),this.editor._onAction("moveNodes",{nodes:I,oldBeforeNode:o,newBeforeNode:U,oldSelection:d,newSelection:this.editor.getSelection()})),N=!0}N&&(t.preventDefault(),t.stopPropagation())},s.prototype._onExpand=function(t){if(t){var e=this.dom.tr.parentNode,l=e.parentNode,i=l.scrollTop;l.removeChild(e)}this.expanded?this.collapse(t):this.expand(t),t&&(l.appendChild(e),l.scrollTop=i)},s.onRemove=function(t){if(!Array.isArray(t))return s.onRemove([t]);if(t&&t.length>0){var e=t[0],l=e.parent,i=e.editor,n=e.getIndex();i.highlighter.unhighlight();var d=i.getSelection();s.blurNodes(t);var a=i.getSelection();t.forEach((function(t){t.parent._remove(t)})),i._onAction("removeNodes",{nodes:t.slice(0),parent:l,index:n,oldSelection:d,newSelection:a})}},s.onDuplicate=function(t){if(!Array.isArray(t))return s.onDuplicate([t]);if(t&&t.length>0){var e=t[t.length-1],l=e.parent,i=e.editor;i.deselect(i.multiselection.nodes);var n=i.getSelection(),d=e,a=t.map((function(t){var e=t.clone();return l.insertAfter(e,d),d=e,e}));1===t.length?a[0].focus():i.select(a);var c=i.getSelection();i._onAction("duplicateNodes",{afterNode:e,nodes:a,parent:l,oldSelection:n,newSelection:c})}},s.prototype._onInsertBefore=function(t,e,l){var i=this.editor.getSelection(),n=new s(this.editor,{field:null!=t?t:"",value:null!=e?e:"",type:l});n.expand(!0),this.parent.insertBefore(n,this),this.editor.highlighter.unhighlight(),n.focus("field");var d=this.editor.getSelection();this.editor._onAction("insertBeforeNodes",{nodes:[n],beforeNode:this,parent:this.parent,oldSelection:i,newSelection:d})},s.prototype._onInsertAfter=function(t,e,l){var i=this.editor.getSelection(),n=new s(this.editor,{field:null!=t?t:"",value:null!=e?e:"",type:l});n.expand(!0),this.parent.insertAfter(n,this),this.editor.highlighter.unhighlight(),n.focus("field");var d=this.editor.getSelection();this.editor._onAction("insertAfterNodes",{nodes:[n],afterNode:this,parent:this.parent,oldSelection:i,newSelection:d})},s.prototype._onAppend=function(t,e,l){var i=this.editor.getSelection(),n=new s(this.editor,{field:null!=t?t:"",value:null!=e?e:"",type:l});n.expand(!0),this.parent.appendChild(n),this.editor.highlighter.unhighlight(),n.focus("field");var d=this.editor.getSelection();this.editor._onAction("appendNodes",{nodes:[n],parent:this.parent,oldSelection:i,newSelection:d})},s.prototype._onChangeType=function(t){var e=this.type;if(t!=e){var l=this.editor.getSelection();this.changeType(t);var i=this.editor.getSelection();this.editor._onAction("changeType",{node:this,oldType:e,newType:t,oldSelection:l,newSelection:i})}},s.prototype.sort=function(t){if(this._hasChilds()){var e="desc"==t?-1:1,l="array"==this.type?"value":"field";this.hideChilds();var n=this.childs,d=this.sortOrder;this.childs=this.childs.concat(),this.childs.sort((function(t,n){return e*i(t[l],n[l])})),this.sortOrder=1==e?"asc":"desc",this.editor._onAction("sort",{node:this,oldChilds:n,oldSort:d,newChilds:this.childs,newSort:this.sortOrder}),this.showChilds()}},s.prototype.getAppend=function(){return this.append||(this.append=new c(this.editor),this.append.setParent(this)),this.append.getDom()},s.getNodeFromTarget=function(t){for(;t;){if(t.node)return t.node;t=t.parentNode}},s.blurNodes=function(t){if(Array.isArray(t)){var e=t[0],l=e.parent,i=e.getIndex();l.childs[i+t.length]?l.childs[i+t.length].focus():l.childs[i-1]?l.childs[i-1].focus():l.focus()}else s.blurNodes([t])},s.prototype._nextSibling=function(){var t=this.parent.childs.indexOf(this);return this.parent.childs[t+1]||this.parent.append},s.prototype._previousNode=function(){var t=null,e=this.getDom();if(e&&e.parentNode){var l=e;do{l=l.previousSibling,t=s.getNodeFromTarget(l)}while(l&&t instanceof c&&!t.isVisible())}return t},s.prototype._nextNode=function(){var t=null,e=this.getDom();if(e&&e.parentNode){var l=e;do{l=l.nextSibling,t=s.getNodeFromTarget(l)}while(l&&t instanceof c&&!t.isVisible())}return t},s.prototype._firstNode=function(){var t=null,e=this.getDom();if(e&&e.parentNode){var l=e.parentNode.firstChild;t=s.getNodeFromTarget(l)}return t},s.prototype._lastNode=function(){var t=null,e=this.getDom();if(e&&e.parentNode){var l=e.parentNode.lastChild;for(t=s.getNodeFromTarget(l);l&&t instanceof c&&!t.isVisible();)l=l.previousSibling,t=s.getNodeFromTarget(l)}return t},s.prototype._previousElement=function(t){var e=this.dom;switch(t){case e.value:if(this.fieldEditable)return e.field;case e.field:if(this._hasChilds())return e.expand;case e.expand:return e.menu;case e.menu:if(e.drag)return e.drag;default:return null}},s.prototype._nextElement=function(t){var e=this.dom;switch(t){case e.drag:return e.menu;case e.menu:if(this._hasChilds())return e.expand;case e.expand:if(this.fieldEditable)return e.field;case e.field:if(!this._hasChilds())return e.value;default:return null}},s.prototype._getElementName=function(t){var e=this.dom;for(var l in e)if(e.hasOwnProperty(l)&&e[l]==t)return l;return null},s.prototype._hasChilds=function(){return"array"==this.type||"object"==this.type},s.TYPE_TITLES={auto:'Field type "auto". The field type is automatically determined from the value and can be a string, number, boolean, or null.',object:'Field type "object". An object contains an unordered set of key/value pairs.',array:'Field type "array". An array contains an ordered collection of values.',string:'Field type "string". Field type is not determined from the value, but always returned as string.'},s.prototype.showContextMenu=function(t,e){var l=this,i=s.TYPE_TITLES,d=[];if(this.editable.value&&d.push({text:"Type",title:"Change the type of this field",className:"jsoneditor-type-"+this.type,submenu:[{text:"Auto",className:"jsoneditor-type-auto"+("auto"==this.type?" jsoneditor-selected":""),title:i.auto,click:function(){l._onChangeType("auto")}},{text:"Array",className:"jsoneditor-type-array"+("array"==this.type?" jsoneditor-selected":""),title:i.array,click:function(){l._onChangeType("array")}},{text:"Object",className:"jsoneditor-type-object"+("object"==this.type?" jsoneditor-selected":""),title:i.object,click:function(){l._onChangeType("object")}},{text:"String",className:"jsoneditor-type-string"+("string"==this.type?" jsoneditor-selected":""),title:i.string,click:function(){l._onChangeType("string")}}]}),this._hasChilds()){var a="asc"==this.sortOrder?"desc":"asc";d.push({text:"Sort",title:"Sort the childs of this "+this.type,className:"jsoneditor-sort-"+a,click:function(){l.sort(a)},submenu:[{text:"Ascending",className:"jsoneditor-sort-asc",title:"Sort the childs of this "+this.type+" in ascending order",click:function(){l.sort("asc")}},{text:"Descending",className:"jsoneditor-sort-desc",title:"Sort the childs of this "+this.type+" in descending order",click:function(){l.sort("desc")}}]})}if(this.parent&&this.parent._hasChilds()){d.length&&d.push({type:"separator"});var c=l.parent.childs;l==c[c.length-1]&&d.push({text:"Append",title:"Append a new field with type 'auto' after this field (Ctrl+Shift+Ins)",submenuTitle:"Select the type of the field to be appended",className:"jsoneditor-append",click:function(){l._onAppend("","","auto")},submenu:[{text:"Auto",className:"jsoneditor-type-auto",title:i.auto,click:function(){l._onAppend("","","auto")}},{text:"Array",className:"jsoneditor-type-array",title:i.array,click:function(){l._onAppend("",[])}},{text:"Object",className:"jsoneditor-type-object",title:i.object,click:function(){l._onAppend("",{})}},{text:"String",className:"jsoneditor-type-string",title:i.string,click:function(){l._onAppend("","","string")}}]}),d.push({text:"Insert",title:"Insert a new field with type 'auto' before this field (Ctrl+Ins)",submenuTitle:"Select the type of the field to be inserted",className:"jsoneditor-insert",click:function(){l._onInsertBefore("","","auto")},submenu:[{text:"Auto",className:"jsoneditor-type-auto",title:i.auto,click:function(){l._onInsertBefore("","","auto")}},{text:"Array",className:"jsoneditor-type-array",title:i.array,click:function(){l._onInsertBefore("",[])}},{text:"Object",className:"jsoneditor-type-object",title:i.object,click:function(){l._onInsertBefore("",{})}},{text:"String",className:"jsoneditor-type-string",title:i.string,click:function(){l._onInsertBefore("","","string")}}]}),this.editable.field&&(d.push({text:"Duplicate",title:"Duplicate this field (Ctrl+D)",className:"jsoneditor-duplicate",click:function(){s.onDuplicate(l)}}),d.push({text:"Remove",title:"Remove this field (Ctrl+Del)",className:"jsoneditor-remove",click:function(){s.onRemove(l)}}))}new n(d,{close:e}).show(t,this.editor.content)},s.prototype._getType=function(t){return t instanceof Array?"array":t instanceof Object?"object":"string"==typeof t&&"string"!=typeof this._stringCast(t)?"string":"auto"},s.prototype._stringCast=function(t){var e=t.toLowerCase(),l=Number(t),i=parseFloat(t);return""==t?"":"null"==e?null:"true"==e||"false"!=e&&(isNaN(l)||isNaN(i)?t:l)},s.prototype._escapeHTML=function(t){if("string"!=typeof t)return String(t);var e=String(t).replace(/&/g,"&").replace(//g,">").replace(/ /g,"  ").replace(/^ /," ").replace(/ $/," "),l=JSON.stringify(e),i=l.substring(1,l.length-1);return!0===this.editor.options.escapeUnicode&&(i=a.escapeUnicodeChars(i)),i},s.prototype._unescapeHTML=function(t){var e='"'+this._escapeJSON(t)+'"';return a.parse(e).replace(/</g,"<").replace(/>/g,">").replace(/ |\u00A0/g," ").replace(/&/g,"&")},s.prototype._escapeJSON=function(t){for(var e="",l=0;lh)return 1}for(var N=0,y=Math.max(Z.length,g.length);Nn)return 1}return 0}},function(t,e,l){"use strict";var i=l(54),n=l(57);t.exports=function(t){function e(t){this.editor=t,this.dom={}}return e.prototype=new t,e.prototype.getDom=function(){var t=this.dom;if(t.tr)return t.tr;this._updateEditability();var e=document.createElement("tr");if(e.node=this,t.tr=e,"tree"===this.editor.options.mode){t.tdDrag=document.createElement("td");var l=document.createElement("td");t.tdMenu=l;var i=document.createElement("button");i.type="button",i.className="jsoneditor-contextmenu",i.title="Click to open the actions menu (Ctrl+M)",t.menu=i,l.appendChild(t.menu)}var n=document.createElement("td"),d=document.createElement("div");return d.innerHTML="(empty)",d.className="jsoneditor-readonly",n.appendChild(d),t.td=n,t.text=d,this.updateDom(),e},e.prototype.updateDom=function(){var t=this.dom,e=t.td;e&&(e.style.paddingLeft=24*this.getLevel()+26+"px");var l=t.text;l&&(l.innerHTML="(empty "+this.parent.type+")");var i=t.tr;this.isVisible()?t.tr.firstChild||(t.tdDrag&&i.appendChild(t.tdDrag),t.tdMenu&&i.appendChild(t.tdMenu),i.appendChild(e)):t.tr.firstChild&&(t.tdDrag&&i.removeChild(t.tdDrag),t.tdMenu&&i.removeChild(t.tdMenu),i.removeChild(e))},e.prototype.isVisible=function(){return 0==this.parent.childs.length},e.prototype.showContextMenu=function(e,l){var i=this,d=t.TYPE_TITLES,a=[{text:"Append",title:"Append a new field with type 'auto' (Ctrl+Shift+Ins)",submenuTitle:"Select the type of the field to be appended",className:"jsoneditor-insert",click:function(){i._onAppend("","","auto")},submenu:[{text:"Auto",className:"jsoneditor-type-auto",title:d.auto,click:function(){i._onAppend("","","auto")}},{text:"Array",className:"jsoneditor-type-array",title:d.array,click:function(){i._onAppend("",[])}},{text:"Object",className:"jsoneditor-type-object",title:d.object,click:function(){i._onAppend("",{})}},{text:"String",className:"jsoneditor-type-string",title:d.string,click:function(){i._onAppend("","","string")}}]}];new n(a,{close:l}).show(e,this.editor.content)},e.prototype.onEvent=function(t){var e=t.type,l=t.target||t.srcElement,n=this.dom;if(l==n.menu&&("mouseover"==e?this.editor.highlighter.highlight(this.parent):"mouseout"==e&&this.editor.highlighter.unhighlight()),"click"==e&&l==n.menu){var d=this.editor.highlighter;d.highlight(this.parent),d.lock(),i.addClassName(n.menu,"jsoneditor-selected"),this.showContextMenu(n.menu,(function(){i.removeClassName(n.menu,"jsoneditor-selected"),d.unlock(),d.unhighlight()}))}"keydown"==e&&this.onKeyDown(t)},e}},function(t,e,l){"use strict";var i=l(57);function n(t,e,l,n){for(var d={code:{text:"Code",title:"Switch to code highlighter",click:function(){n("code")}},form:{text:"Form",title:"Switch to form editor",click:function(){n("form")}},text:{text:"Text",title:"Switch to plain text editor",click:function(){n("text")}},tree:{text:"Tree",title:"Switch to tree editor",click:function(){n("tree")}},view:{text:"View",title:"Switch to tree view",click:function(){n("view")}}},a=[],s=0;s0){if(l.length>3){l=l.slice(0,3);var i=this.validateSchema.errors.length-3;l.push("("+i+" more errors...)")}var n=document.createElement("div");n.innerHTML=''+l.map((function(t){return''+("string"==typeof t?'":"")+""})).join("")+"
'+t+"
"+t.dataPath+""+t.message+"
",this.dom.validationErrors=n,this.frame.appendChild(n);var a=n.clientHeight;this.content.style.marginBottom=-a+"px",this.content.style.paddingBottom=a+"px"}this.aceEditor&&this.aceEditor.resize(!1)}};t.exports=[{mode:"text",mixin:a,data:"text",load:a.format},{mode:"code",mixin:a,data:"text",load:a.format}]},function(t,e,l){var i=l(64);l(67),l(69),t.exports=i},function(t,e,l){!function(){var t=function(){return this}();t||"undefined"==typeof window||(t=window);var e=function(t,l,i){"string"==typeof t?(2==arguments.length&&(i=l),e.modules[t]||(e.payloads[t]=i,e.modules[t]=null)):e.original?e.original.apply(this,arguments):(console.error("dropping module because define wasn't a string."),console.trace())};e.modules={},e.payloads={};var l,i,n=function(t,e,l){if("string"==typeof e){var i=s(t,e);if(null!=i)return l&&l(),i}else if("[object Array]"===Object.prototype.toString.call(e)){for(var n=[],a=0,c=e.length;a1&&c(i,"")>-1&&(l=RegExp(this.source,n.replace.call(s(this),"g","")),n.replace.call(t.slice(i.index),l,(function(){for(var t=1;ti.index&&this.lastIndex--}return i},a||(RegExp.prototype.test=function(t){var e=n.exec.call(this,t);return e&&this.global&&!e[0].length&&this.lastIndex>e.index&&this.lastIndex--,!!e}))})),ace.define("ace/lib/es5-shim",["require","exports","module"],(function(t,e,l){function i(){}Function.prototype.bind||(Function.prototype.bind=function(t){var e=this;if("function"!=typeof e)throw new TypeError("Function.prototype.bind called on incompatible "+e);var l=m.call(arguments,1),n=function(){if(this instanceof n){var i=e.apply(this,l.concat(m.call(arguments)));return Object(i)===i?i:this}return e.apply(t,l.concat(m.call(arguments)))};return e.prototype&&(i.prototype=e.prototype,n.prototype=new i,i.prototype=null),n});var n,d,a,s,c,o=Function.prototype.call,b=Array.prototype,r=Object.prototype,m=b.slice,Z=o.bind(r.toString),g=o.bind(r.hasOwnProperty);if((c=g(r,"__defineGetter__"))&&(n=o.bind(r.__defineGetter__),d=o.bind(r.__defineSetter__),a=o.bind(r.__lookupGetter__),s=o.bind(r.__lookupSetter__)),2!=[1,2].splice(0).length)if(function(){function t(t){var e=new Array(t+2);return e[0]=e[1]=0,e}var e,l=[];if(l.splice.apply(l,t(20)),l.splice.apply(l,t(26)),e=l.length,l.splice(5,0,"XXX"),l.length,e+1==l.length)return!0}()){var W=Array.prototype.splice;Array.prototype.splice=function(t,e){return arguments.length?W.apply(this,[void 0===t?0:t,void 0===e?this.length-t:e].concat(m.call(arguments,2))):[]}}else Array.prototype.splice=function(t,e){var l=this.length;t>0?t>l&&(t=l):null==t?t=0:t<0&&(t=Math.max(l+t,0)),t+es)for(r=o;r--;)this[c+r]=this[s+r];if(d&&t===b)this.length=b,this.push.apply(this,n);else for(this.length=b+d,r=0;r>>0;if("[object Function]"!=Z(t))throw new TypeError;for(;++n>>0,n=Array(i),d=arguments[1];if("[object Function]"!=Z(t))throw new TypeError(t+" is not a function");for(var a=0;a>>0,d=[],a=arguments[1];if("[object Function]"!=Z(t))throw new TypeError(t+" is not a function");for(var s=0;s>>0,n=arguments[1];if("[object Function]"!=Z(t))throw new TypeError(t+" is not a function");for(var d=0;d>>0,n=arguments[1];if("[object Function]"!=Z(t))throw new TypeError(t+" is not a function");for(var d=0;d>>0;if("[object Function]"!=Z(t))throw new TypeError(t+" is not a function");if(!i&&1==arguments.length)throw new TypeError("reduce of empty array with no initial value");var n,d=0;if(arguments.length>=2)n=arguments[1];else for(;;){if(d in l){n=l[d++];break}if(++d>=i)throw new TypeError("reduce of empty array with no initial value")}for(;d>>0;if("[object Function]"!=Z(t))throw new TypeError(t+" is not a function");if(!i&&1==arguments.length)throw new TypeError("reduceRight of empty array with no initial value");var n,d=i-1;if(arguments.length>=2)n=arguments[1];else for(;;){if(d in l){n=l[d--];break}if(--d<0)throw new TypeError("reduceRight of empty array with no initial value")}do{d in this&&(n=t.call(void 0,n,l[d],d,e))}while(d--);return n}),Array.prototype.indexOf&&-1==[0,1].indexOf(1,2)||(Array.prototype.indexOf=function(t){var e=I&&"[object String]"==Z(this)?this.split(""):T(this),l=e.length>>>0;if(!l)return-1;var i=0;for(arguments.length>1&&(i=X(arguments[1])),i=i>=0?i:Math.max(0,l+i);i>>0;if(!l)return-1;var i=l-1;for(arguments.length>1&&(i=Math.min(i,X(arguments[1]))),i=i>=0?i:l-Math.abs(i);i>=0;i--)if(i in e&&t===e[i])return i;return-1}),Object.getPrototypeOf||(Object.getPrototypeOf=function(t){return t.__proto__||(t.constructor?t.constructor.prototype:r)}),Object.getOwnPropertyDescriptor||(Object.getOwnPropertyDescriptor=function(t,e){if("object"!=typeof t&&"function"!=typeof t||null===t)throw new TypeError("Object.getOwnPropertyDescriptor called on a non-object: "+t);if(g(t,e)){var l;if(l={enumerable:!0,configurable:!0},c){var i=t.__proto__;t.__proto__=r;var n=a(t,e),d=s(t,e);if(t.__proto__=i,n||d)return n&&(l.get=n),d&&(l.set=d),l}return l.value=t[e],l}}),Object.getOwnPropertyNames||(Object.getOwnPropertyNames=function(t){return Object.keys(t)}),Object.create||(h=null===Object.prototype.__proto__?function(){return{__proto__:null}}:function(){var t={};for(var e in t)t[e]=null;return t.constructor=t.hasOwnProperty=t.propertyIsEnumerable=t.isPrototypeOf=t.toLocaleString=t.toString=t.valueOf=t.__proto__=null,t},Object.create=function(t,e){var l;if(null===t)l=h();else{if("object"!=typeof t)throw new TypeError("typeof prototype["+typeof t+"] != 'object'");var i=function(){};i.prototype=t,(l=new i).__proto__=t}return void 0!==e&&Object.defineProperties(l,e),l}),Object.defineProperty){var M=G({}),u="undefined"==typeof document||G(document.createElement("div"));if(!M||!u)var V=Object.defineProperty}Object.defineProperty&&!V||(Object.defineProperty=function(t,e,l){if("object"!=typeof t&&"function"!=typeof t||null===t)throw new TypeError("Object.defineProperty called on non-object: "+t);if("object"!=typeof l&&"function"!=typeof l||null===l)throw new TypeError("Property description must be an object: "+l);if(V)try{return V.call(Object,t,e,l)}catch(t){}if(g(l,"value"))if(c&&(a(t,e)||s(t,e))){var i=t.__proto__;t.__proto__=r,delete t[e],t[e]=l.value,t.__proto__=i}else t[e]=l.value;else{if(!c)throw new TypeError("getters & setters can not be defined on this javascript engine");g(l,"get")&&n(t,e,l.get),g(l,"set")&&d(t,e,l.set)}return t}),Object.defineProperties||(Object.defineProperties=function(t,e){for(var l in e)g(e,l)&&Object.defineProperty(t,l,e[l]);return t}),Object.seal||(Object.seal=function(t){return t}),Object.freeze||(Object.freeze=function(t){return t});try{Object.freeze((function(){}))}catch(t){Object.freeze=(N=Object.freeze,function(t){return"function"==typeof t?t:N(t)})}if(Object.preventExtensions||(Object.preventExtensions=function(t){return t}),Object.isSealed||(Object.isSealed=function(t){return!1}),Object.isFrozen||(Object.isFrozen=function(t){return!1}),Object.isExtensible||(Object.isExtensible=function(t){if(Object(t)===t)throw new TypeError;for(var e="";g(t,e);)e+="?";t[e]=!0;var l=g(t,e);return delete t[e],l}),!Object.keys){var p=!0,Y=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],R=Y.length;for(var B in{toString:null})p=!1;Object.keys=function(t){if("object"!=typeof t&&"function"!=typeof t||null===t)throw new TypeError("Object.keys called on a non-object");var e=[];for(var l in t)g(t,l)&&e.push(l);if(p)for(var i=0,n=R;i0||-1)*Math.floor(Math.abs(t))),t}var T=function(t){if(null==t)throw new TypeError("can't convert "+t+" to object");return Object(t)}})),ace.define("ace/lib/fixoldbrowsers",["require","exports","module","ace/lib/regexp","ace/lib/es5-shim"],(function(t,e,l){"use strict";t("./regexp"),t("./es5-shim")})),ace.define("ace/lib/dom",["require","exports","module"],(function(t,e,l){"use strict";e.getDocumentHead=function(t){return t||(t=document),t.head||t.getElementsByTagName("head")[0]||t.documentElement},e.createElement=function(t,e){return document.createElementNS?document.createElementNS(e||"http://www.w3.org/1999/xhtml",t):document.createElement(t)},e.hasCssClass=function(t,e){return-1!==(t.className||"").split(/\s+/g).indexOf(e)},e.addCssClass=function(t,l){e.hasCssClass(t,l)||(t.className+=" "+l)},e.removeCssClass=function(t,e){for(var l=t.className.split(/\s+/g);;){var i=l.indexOf(e);if(-1==i)break;l.splice(i,1)}t.className=l.join(" ")},e.toggleCssClass=function(t,e){for(var l=t.className.split(/\s+/g),i=!0;;){var n=l.indexOf(e);if(-1==n)break;i=!1,l.splice(n,1)}return i&&l.push(e),t.className=l.join(" "),i},e.setCssClass=function(t,l,i){i?e.addCssClass(t,l):e.removeCssClass(t,l)},e.hasCssString=function(t,e){var l,i=0;if((e=e||document).createStyleSheet&&(l=e.styleSheets)){for(;i=0?parseFloat((n.match(/(?:MSIE |Trident\/[0-9]+[\.0-9]+;.*rv:)([0-9]+[\.0-9]+)/)||[])[1]):parseFloat((n.match(/(?:Trident\/[0-9]+[\.0-9]+;.*rv:)([0-9]+[\.0-9]+)/)||[])[1]),e.isOldIE=e.isIE&&e.isIE<9,e.isGecko=e.isMozilla=(window.Controllers||window.controllers)&&"Gecko"===window.navigator.product,e.isOldGecko=e.isGecko&&parseInt((n.match(/rv\:(\d+)/)||[])[1],10)<4,e.isOpera=window.opera&&"[object Opera]"==Object.prototype.toString.call(window.opera),e.isWebKit=parseFloat(n.split("WebKit/")[1])||void 0,e.isChrome=parseFloat(n.split(" Chrome/")[1])||void 0,e.isAIR=n.indexOf("AdobeAIR")>=0,e.isIPad=n.indexOf("iPad")>=0,e.isTouchPad=n.indexOf("TouchPad")>=0,e.isChromeOS=n.indexOf(" CrOS ")>=0}})),ace.define("ace/lib/event",["require","exports","module","ace/lib/keys","ace/lib/useragent"],(function(t,e,l){"use strict";var i=t("./keys"),n=t("./useragent"),d=null,a=0;e.addListener=function(t,e,l){if(t.addEventListener)return t.addEventListener(e,l,!1);if(t.attachEvent){var i=function(){l.call(t,window.event)};l._wrapper=i,t.attachEvent("on"+e,i)}},e.removeListener=function(t,e,l){if(t.removeEventListener)return t.removeEventListener(e,l,!1);t.detachEvent&&t.detachEvent("on"+e,l._wrapper||l)},e.stopEvent=function(t){return e.stopPropagation(t),e.preventDefault(t),!1},e.stopPropagation=function(t){t.stopPropagation?t.stopPropagation():t.cancelBubble=!0},e.preventDefault=function(t){t.preventDefault?t.preventDefault():t.returnValue=!1},e.getButton=function(t){return"dblclick"==t.type?0:"contextmenu"==t.type||n.isMac&&t.ctrlKey&&!t.altKey&&!t.shiftKey?2:t.preventDefault?t.button:{1:0,2:2,4:1}[t.button]},e.capture=function(t,l,i){function n(t){l&&l(t),i&&i(t),e.removeListener(document,"mousemove",l,!0),e.removeListener(document,"mouseup",n,!0),e.removeListener(document,"dragstart",n,!0)}return e.addListener(document,"mousemove",l,!0),e.addListener(document,"mouseup",n,!0),e.addListener(document,"dragstart",n,!0),n},e.addTouchMoveListener=function(t,l){var i,n;"ontouchmove"in t&&(e.addListener(t,"touchstart",(function(t){var e=t.changedTouches[0];i=e.clientX,n=e.clientY})),e.addListener(t,"touchmove",(function(t){var e=t.changedTouches[0];t.wheelX=-(e.clientX-i)/1,t.wheelY=-(e.clientY-n)/1,i=e.clientX,n=e.clientY,l(t)})))},e.addMouseWheelListener=function(t,l){"onmousewheel"in t?e.addListener(t,"mousewheel",(function(t){void 0!==t.wheelDeltaX?(t.wheelX=-t.wheelDeltaX/8,t.wheelY=-t.wheelDeltaY/8):(t.wheelX=0,t.wheelY=-t.wheelDelta/8),l(t)})):"onwheel"in t?e.addListener(t,"wheel",(function(t){switch(t.deltaMode){case t.DOM_DELTA_PIXEL:t.wheelX=.35*t.deltaX||0,t.wheelY=.35*t.deltaY||0;break;case t.DOM_DELTA_LINE:case t.DOM_DELTA_PAGE:t.wheelX=5*(t.deltaX||0),t.wheelY=5*(t.deltaY||0)}l(t)})):e.addListener(t,"DOMMouseScroll",(function(t){t.axis&&t.axis==t.HORIZONTAL_AXIS?(t.wheelX=5*(t.detail||0),t.wheelY=0):(t.wheelX=0,t.wheelY=5*(t.detail||0)),l(t)}))},e.addMultiMouseDownListener=function(t,l,i,d){var a,s,c,o=0,b={2:"dblclick",3:"tripleclick",4:"quadclick"};function r(t){if(0!==e.getButton(t)?o=0:t.detail>1?++o>4&&(o=1):o=1,n.isIE){var r=Math.abs(t.clientX-a)>5||Math.abs(t.clientY-s)>5;c&&!r||(o=1),c&&clearTimeout(c),c=setTimeout((function(){c=null}),l[o-1]||600),1==o&&(a=t.clientX,s=t.clientY)}if(t._clicks=o,i[d]("mousedown",t),o>4)o=0;else if(o>1)return i[d](b[o],t)}function m(t){o=2,c&&clearTimeout(c),c=setTimeout((function(){c=null}),l[o-1]||600),i[d]("mousedown",t),i[d](b[o],t)}Array.isArray(t)||(t=[t]),t.forEach((function(t){e.addListener(t,"mousedown",r),n.isOldIE&&e.addListener(t,"dblclick",m)}))};var s=n.isMac&&n.isOpera&&!("KeyboardEvent"in window)?function(t){return 0|(t.metaKey?1:0)|(t.altKey?2:0)|(t.shiftKey?4:0)|(t.ctrlKey?8:0)}:function(t){return 0|(t.ctrlKey?1:0)|(t.altKey?2:0)|(t.shiftKey?4:0)|(t.metaKey?8:0)};function c(t,e,l){var c=s(e);if(!n.isMac&&d){if(d.OSKey&&(c|=8),d.altGr){if(3==(3&c))return;d.altGr=0}if(18===l||17===l){var o="location"in e?e.location:e.keyLocation;17===l&&1===o?1==d[l]&&(a=e.timeStamp):18===l&&3===c&&2===o&&e.timeStamp-a<50&&(d.altGr=!0)}}if(l in i.MODIFIER_KEYS&&(l=-1),8&c&&l>=91&&l<=93&&(l=-1),c||13!==l||3!==(o="location"in e?e.location:e.keyLocation)||(t(e,c,-l),!e.defaultPrevented)){if(n.isChromeOS&&8&c){if(t(e,c,l),e.defaultPrevented)return;c&=-9}return!!(c||l in i.FUNCTION_KEYS||l in i.PRINTABLE_KEYS)&&t(e,c,l)}}function o(){(d=Object.create(null)).count=0,d.lastT=0}e.getModifierString=function(t){return i.KEY_MODS[s(t)]},e.addCommandKeyListener=function(t,l){var i=e.addListener;if(n.isOldGecko||n.isOpera&&!("KeyboardEvent"in window)){var a=null;i(t,"keydown",(function(t){a=t.keyCode})),i(t,"keypress",(function(t){return c(l,t,a)}))}else{var s=null;i(t,"keydown",(function(t){var e=t.keyCode;d[e]=(d[e]||0)+1,91==e||92==e?d.OSKey=!0:d.OSKey&&t.timeStamp-d.lastT>200&&1==d.count&&o(),1==d[e]&&d.count++,d.lastT=t.timeStamp;var i=c(l,t,e);return s=t.defaultPrevented,i})),i(t,"keypress",(function(t){s&&(t.ctrlKey||t.altKey||t.shiftKey||t.metaKey)&&(e.stopEvent(t),s=null)})),i(t,"keyup",(function(t){var e=t.keyCode;d[e]?d.count=Math.max(d.count-1,0):o(),91!=e&&92!=e||(d.OSKey=!1),d[e]=null})),d||(o(),i(window,"focus",o))}},"object"==typeof window&&window.postMessage&&!n.isOldIE&&(e.nextTick=function(t,l){l=l||window,e.addListener(l,"message",(function i(n){"zero-timeout-message-1"==n.data&&(e.stopPropagation(n),e.removeListener(l,"message",i),t())})),l.postMessage("zero-timeout-message-1","*")}),e.nextFrame="object"==typeof window&&(window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.msRequestAnimationFrame||window.oRequestAnimationFrame),e.nextFrame?e.nextFrame=e.nextFrame.bind(window):e.nextFrame=function(t){setTimeout(t,17)}})),ace.define("ace/lib/lang",["require","exports","module"],(function(t,e,l){"use strict";e.last=function(t){return t[t.length-1]},e.stringReverse=function(t){return t.split("").reverse().join("")},e.stringRepeat=function(t,e){for(var l="";e>0;)1&e&&(l+=t),(e>>=1)&&(t+=t);return l};var i=/^\s\s*/,n=/\s\s*$/;e.stringTrimLeft=function(t){return t.replace(i,"")},e.stringTrimRight=function(t){return t.replace(n,"")},e.copyObject=function(t){var e={};for(var l in t)e[l]=t[l];return e},e.copyArray=function(t){for(var e=[],l=0,i=t.length;l1),t.preventDefault()):(this.setState("focusWait"),void this.captureMouse(t))},this.startSelect=function(t,e){t=t||this.editor.renderer.screenToTextCoordinates(this.x,this.y);var l=this.editor;l.$blockScrolling++,this.mousedownEvent.getShiftKey()?l.selection.selectToPosition(t):e||l.selection.moveToPosition(t),e||this.select(),l.renderer.scroller.setCapture&&l.renderer.scroller.setCapture(),l.setStyle("ace_selecting"),this.setState("select"),l.$blockScrolling--},this.select=function(){var t,e=this.editor,l=e.renderer.screenToTextCoordinates(this.x,this.y);if(e.$blockScrolling++,this.$clickSelection){var i=this.$clickSelection.comparePoint(l);if(-1==i)t=this.$clickSelection.end;else if(1==i)t=this.$clickSelection.start;else{var d=n(this.$clickSelection,l);l=d.cursor,t=d.anchor}e.selection.setSelectionAnchor(t.row,t.column)}e.selection.selectToPosition(l),e.$blockScrolling--,e.renderer.scrollCursorIntoView()},this.extendSelectionBy=function(t){var e,l=this.editor,i=l.renderer.screenToTextCoordinates(this.x,this.y),d=l.selection[t](i.row,i.column);if(l.$blockScrolling++,this.$clickSelection){var a=this.$clickSelection.comparePoint(d.start),s=this.$clickSelection.comparePoint(d.end);if(-1==a&&s<=0)e=this.$clickSelection.end,d.end.row==i.row&&d.end.column==i.column||(i=d.start);else if(1==s&&a>=0)e=this.$clickSelection.start,d.start.row==i.row&&d.start.column==i.column||(i=d.end);else if(-1==a&&1==s)i=d.end,e=d.start;else{var c=n(this.$clickSelection,i);i=c.cursor,e=c.anchor}l.selection.setSelectionAnchor(e.row,e.column)}l.selection.selectToPosition(i),l.$blockScrolling--,l.renderer.scrollCursorIntoView()},this.selectEnd=this.selectAllEnd=this.selectByWordsEnd=this.selectByLinesEnd=function(){this.$clickSelection=null,this.editor.unsetStyle("ace_selecting"),this.editor.renderer.scroller.releaseCapture&&this.editor.renderer.scroller.releaseCapture()},this.focusWait=function(){var t,e,l,i,n=(t=this.mousedownEvent.x,e=this.mousedownEvent.y,l=this.x,i=this.y,Math.sqrt(Math.pow(l-t,2)+Math.pow(i-e,2))),d=Date.now();(n>0||d-this.mousedownEvent.time>this.$focusTimout)&&this.startSelect(this.mousedownEvent.getDocumentPosition())},this.onDoubleClick=function(t){var e=t.getDocumentPosition(),l=this.editor,i=l.session.getBracketRange(e);i?(i.isEmpty()&&(i.start.column--,i.end.column++),this.setState("select")):(i=l.selection.getWordRange(e.row,e.column),this.setState("selectByWords")),this.$clickSelection=i,this.select()},this.onTripleClick=function(t){var e=t.getDocumentPosition(),l=this.editor;this.setState("selectByLines");var i=l.getSelectionRange();i.isMultiLine()&&i.contains(e.row,e.column)?(this.$clickSelection=l.selection.getLineRange(i.start.row),this.$clickSelection.end=l.selection.getLineRange(i.end.row).end):this.$clickSelection=l.selection.getLineRange(e.row),this.select()},this.onQuadClick=function(t){var e=this.editor;e.selectAll(),this.$clickSelection=e.getSelectionRange(),this.setState("selectAll")},this.onMouseWheel=function(t){if(!t.getAccelKey()){t.getShiftKey()&&t.wheelY&&!t.wheelX&&(t.wheelX=t.wheelY,t.wheelY=0);var e=t.domEvent.timeStamp,l=e-(this.$lastScrollTime||0),i=this.editor;return i.renderer.isScrollableBy(t.wheelX*t.speed,t.wheelY*t.speed)||l<200?(this.$lastScrollTime=e,i.renderer.scrollBy(t.wheelX*t.speed,t.wheelY*t.speed),t.stop()):void 0}},this.onTouchMove=function(t){var e=t.domEvent.timeStamp,l=e-(this.$lastScrollTime||0),i=this.editor;if(i.renderer.isScrollableBy(t.wheelX*t.speed,t.wheelY*t.speed)||l<200)return this.$lastScrollTime=e,i.renderer.scrollBy(t.wheelX*t.speed,t.wheelY*t.speed),t.stop()}}.call(i.prototype),e.DefaultHandlers=i})),ace.define("ace/tooltip",["require","exports","module","ace/lib/oop","ace/lib/dom"],(function(t,e,l){"use strict";t("./lib/oop");var i=t("./lib/dom");function n(t){this.isOpen=!1,this.$element=null,this.$parentNode=t}(function(){this.$init=function(){return this.$element=i.createElement("div"),this.$element.className="ace_tooltip",this.$element.style.display="none",this.$parentNode.appendChild(this.$element),this.$element},this.getElement=function(){return this.$element||this.$init()},this.setText=function(t){i.setInnerText(this.getElement(),t)},this.setHtml=function(t){this.getElement().innerHTML=t},this.setPosition=function(t,e){this.getElement().style.left=t+"px",this.getElement().style.top=e+"px"},this.setClassName=function(t){i.addCssClass(this.getElement(),t)},this.show=function(t,e,l){null!=t&&this.setText(t),null!=e&&null!=l&&this.setPosition(e,l),this.isOpen||(this.getElement().style.display="block",this.isOpen=!0)},this.hide=function(){this.isOpen&&(this.getElement().style.display="none",this.isOpen=!1)},this.getHeight=function(){return this.getElement().offsetHeight},this.getWidth=function(){return this.getElement().offsetWidth}}).call(n.prototype),e.Tooltip=n})),ace.define("ace/mouse/default_gutter_handler",["require","exports","module","ace/lib/dom","ace/lib/oop","ace/lib/event","ace/tooltip"],(function(t,e,l){"use strict";var i=t("../lib/dom"),n=t("../lib/oop"),d=t("../lib/event"),a=t("../tooltip").Tooltip;function s(t){a.call(this,t)}n.inherits(s,a),function(){this.setPosition=function(t,e){var l=window.innerWidth||document.documentElement.clientWidth,i=window.innerHeight||document.documentElement.clientHeight,n=this.getWidth(),d=this.getHeight();(t+=15)+n>l&&(t-=t+n-l),(e+=15)+d>i&&(e-=20+d),a.prototype.setPosition.call(this,t,e)}}.call(s.prototype),e.GutterHandler=function(t){var e,l,n,a=t.editor,c=a.renderer.$gutterLayer,o=new s(a.container);function b(){e&&(e=clearTimeout(e)),n&&(o.hide(),n=null,a.removeEventListener("mousewheel",b))}function r(t){o.setPosition(t.x,t.y)}t.editor.setDefaultHandler("guttermousedown",(function(e){if(a.isFocused()&&0==e.getButton()&&"foldWidgets"!=c.getRegion(e)){var l=e.getDocumentPosition().row,i=a.session.selection;if(e.getShiftKey())i.selectTo(l,0);else{if(2==e.domEvent.detail)return a.selectAll(),e.preventDefault();t.$clickSelection=a.selection.getLineRange(l)}return t.setState("selectByLines"),t.captureMouse(e),e.preventDefault()}})),t.editor.setDefaultHandler("guttermousemove",(function(d){var s=d.domEvent.target||d.domEvent.srcElement;if(i.hasCssClass(s,"ace_fold-widget"))return b();n&&t.$tooltipFollowsMouse&&r(d),l=d,e||(e=setTimeout((function(){e=null,l&&!t.isMousePressed?function(){var e=l.getDocumentPosition().row,i=c.$annotations[e];if(!i)return b();if(e==a.session.getLength()){var d=a.renderer.pixelToScreenCoordinates(0,l.y).row,s=l.$pos;if(d>a.session.documentToScreenRow(s.row,s.column))return b()}if(n!=i)if(n=i.text.join("
"),o.setHtml(n),o.show(),a.on("mousewheel",b),t.$tooltipFollowsMouse)r(l);else{var m=l.domEvent.target.getBoundingClientRect(),Z=o.getElement().style;Z.left=m.right+"px",Z.top=m.bottom+"px"}}():b()}),50))})),d.addListener(a.renderer.$gutter,"mouseout",(function(t){l=null,n&&!e&&(e=setTimeout((function(){e=null,b()}),50))})),a.on("changeSession",b)}})),ace.define("ace/mouse/mouse_event",["require","exports","module","ace/lib/event","ace/lib/useragent"],(function(t,e,l){"use strict";var i=t("../lib/event"),n=t("../lib/useragent"),d=e.MouseEvent=function(t,e){this.domEvent=t,this.editor=e,this.x=this.clientX=t.clientX,this.y=this.clientY=t.clientY,this.$pos=null,this.$inSelection=null,this.propagationStopped=!1,this.defaultPrevented=!1};(function(){this.stopPropagation=function(){i.stopPropagation(this.domEvent),this.propagationStopped=!0},this.preventDefault=function(){i.preventDefault(this.domEvent),this.defaultPrevented=!0},this.stop=function(){this.stopPropagation(),this.preventDefault()},this.getDocumentPosition=function(){return this.$pos||(this.$pos=this.editor.renderer.screenToTextCoordinates(this.clientX,this.clientY)),this.$pos},this.inSelection=function(){if(null!==this.$inSelection)return this.$inSelection;var t=this.editor.getSelectionRange();if(t.isEmpty())this.$inSelection=!1;else{var e=this.getDocumentPosition();this.$inSelection=t.contains(e.row,e.column)}return this.$inSelection},this.getButton=function(){return i.getButton(this.domEvent)},this.getShiftKey=function(){return this.domEvent.shiftKey},this.getAccelKey=n.isMac?function(){return this.domEvent.metaKey}:function(){return this.domEvent.ctrlKey}}).call(d.prototype)})),ace.define("ace/mouse/dragdrop_handler",["require","exports","module","ace/lib/dom","ace/lib/event","ace/lib/useragent"],(function(t,e,l){"use strict";var i=t("../lib/dom"),n=t("../lib/event"),d=t("../lib/useragent");function a(t){var e=t.editor,l=i.createElement("img");l.src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==",d.isOpera&&(l.style.cssText="width:1px;height:1px;position:fixed;top:0;left:0;z-index:2147483647;opacity:0;"),["dragWait","dragWaitEnd","startDrag","dragReadyEnd","onMouseDrag"].forEach((function(e){t[e]=this[e]}),this),e.addEventListener("mousedown",this.onMouseDown.bind(t));var a,c,o,b,r,m,Z,g,W,h,N,y=e.container,I=0;function G(){var t=m;(function(t,l){var i=Date.now(),n=!l||t.row!=l.row,d=!l||t.column!=l.column;!h||n||d?(e.$blockScrolling+=1,e.moveCursorToPosition(t),e.$blockScrolling-=1,h=i,N={x:c,y:o}):s(N.x,N.y,c,o)>5?h=null:i-h>=200&&(e.renderer.scrollCursorIntoView(),h=null)})(m=e.renderer.screenToTextCoordinates(c,o),t),function(t,l){var i=Date.now(),n=e.renderer.layerConfig.lineHeight,d=e.renderer.layerConfig.characterWidth,a=e.renderer.scroller.getBoundingClientRect(),s={x:{left:c-a.left,right:a.right-c},y:{top:o-a.top,bottom:a.bottom-o}},b=Math.min(s.x.left,s.x.right),r=Math.min(s.y.top,s.y.bottom),m={row:t.row,column:t.column};b/d<=2&&(m.column+=s.x.left=200&&e.renderer.scrollCursorIntoView(m):W=i:W=null}(m,t)}function M(){r=e.selection.toOrientedRange(),a=e.session.addMarker(r,"ace_selection",e.getSelectionStyle()),e.clearSelection(),e.isFocused()&&e.renderer.$cursorLayer.setBlinking(!1),clearInterval(b),G(),b=setInterval(G,20),I=0,n.addListener(document,"mousemove",p)}function u(){clearInterval(b),e.session.removeMarker(a),a=null,e.$blockScrolling+=1,e.selection.fromOrientedRange(r),e.$blockScrolling-=1,e.isFocused()&&!g&&e.renderer.$cursorLayer.setBlinking(!e.getReadOnly()),r=null,m=null,I=0,W=null,h=null,n.removeListener(document,"mousemove",p)}this.onDragStart=function(t){if(this.cancelDrag||!y.draggable){var i=this;return setTimeout((function(){i.startSelect(),i.captureMouse(t)}),0),t.preventDefault()}r=e.getSelectionRange();var n=t.dataTransfer;n.effectAllowed=e.getReadOnly()?"copy":"copyMove",d.isOpera&&(e.container.appendChild(l),l.scrollTop=0),n.setDragImage&&n.setDragImage(l,0,0),d.isOpera&&e.container.removeChild(l),n.clearData(),n.setData("Text",e.session.getTextRange()),g=!0,this.setState("drag")},this.onDragEnd=function(t){if(y.draggable=!1,g=!1,this.setState(null),!e.getReadOnly()){var l=t.dataTransfer.dropEffect;Z||"move"!=l||e.session.remove(e.getSelectionRange()),e.renderer.$cursorLayer.setBlinking(!0)}this.editor.unsetStyle("ace_dragging"),this.editor.renderer.setCursorStyle("")},this.onDragEnter=function(t){if(!e.getReadOnly()&&Y(t.dataTransfer))return c=t.clientX,o=t.clientY,a||M(),I++,t.dataTransfer.dropEffect=Z=R(t),n.preventDefault(t)},this.onDragOver=function(t){if(!e.getReadOnly()&&Y(t.dataTransfer))return c=t.clientX,o=t.clientY,a||(M(),I++),null!==V&&(V=null),t.dataTransfer.dropEffect=Z=R(t),n.preventDefault(t)},this.onDragLeave=function(t){if(--I<=0&&a)return u(),Z=null,n.preventDefault(t)},this.onDrop=function(t){if(m){var l=t.dataTransfer;if(g)switch(Z){case"move":r=r.contains(m.row,m.column)?{start:m,end:m}:e.moveText(r,m);break;case"copy":r=e.moveText(r,m,!0)}else{var i=l.getData("Text");r={start:m,end:e.session.insert(m,i)},e.focus(),Z=null}return u(),n.preventDefault(t)}},n.addListener(y,"dragstart",this.onDragStart.bind(t)),n.addListener(y,"dragend",this.onDragEnd.bind(t)),n.addListener(y,"dragenter",this.onDragEnter.bind(t)),n.addListener(y,"dragover",this.onDragOver.bind(t)),n.addListener(y,"dragleave",this.onDragLeave.bind(t)),n.addListener(y,"drop",this.onDrop.bind(t));var V=null;function p(){null==V&&(V=setTimeout((function(){null!=V&&a&&u()}),20))}function Y(t){var e=t.types;return!e||Array.prototype.some.call(e,(function(t){return"text/plain"==t||"Text"==t}))}function R(t){var e=["copy","copymove","all","uninitialized"],l=d.isMac?t.altKey:t.ctrlKey,i="uninitialized";try{i=t.dataTransfer.effectAllowed.toLowerCase()}catch(t){}var n="none";return l&&e.indexOf(i)>=0?n="copy":["move","copymove","linkmove","all","uninitialized"].indexOf(i)>=0?n="move":e.indexOf(i)>=0&&(n="copy"),n}}function s(t,e,l,i){return Math.sqrt(Math.pow(l-t,2)+Math.pow(i-e,2))}(function(){this.dragWait=function(){Date.now()-this.mousedownEvent.time>this.editor.getDragDelay()&&this.startDrag()},this.dragWaitEnd=function(){this.editor.container.draggable=!1,this.startSelect(this.mousedownEvent.getDocumentPosition()),this.selectEnd()},this.dragReadyEnd=function(t){this.editor.renderer.$cursorLayer.setBlinking(!this.editor.getReadOnly()),this.editor.unsetStyle("ace_dragging"),this.editor.renderer.setCursorStyle(""),this.dragWaitEnd()},this.startDrag=function(){this.cancelDrag=!1;var t=this.editor;t.container.draggable=!0,t.renderer.$cursorLayer.setBlinking(!1),t.setStyle("ace_dragging");var e=d.isWin?"default":"move";t.renderer.setCursorStyle(e),this.setState("dragReady")},this.onMouseDrag=function(t){var e=this.editor.container;d.isIE&&"dragReady"==this.state&&s(this.mousedownEvent.x,this.mousedownEvent.y,this.x,this.y)>3&&e.dragDrop(),"dragWait"===this.state&&s(this.mousedownEvent.x,this.mousedownEvent.y,this.x,this.y)>0&&(e.draggable=!1,this.startSelect(this.mousedownEvent.getDocumentPosition()))},this.onMouseDown=function(t){if(this.$dragEnabled){this.mousedownEvent=t;var e=this.editor,l=t.inSelection(),i=t.getButton();if(1===(t.domEvent.detail||1)&&0===i&&l){if(t.editor.inMultiSelectMode&&(t.getAccelKey()||t.getShiftKey()))return;this.mousedownEvent.time=Date.now();var n=t.domEvent.target||t.domEvent.srcElement;"unselectable"in n&&(n.unselectable="on"),e.getDragDelay()?(d.isWebKit&&(this.cancelDrag=!0,e.container.draggable=!0),this.setState("dragWait")):this.startDrag(),this.captureMouse(t,this.onMouseDrag.bind(this)),t.defaultPrevented=!0}}}}).call(a.prototype),e.DragdropHandler=a})),ace.define("ace/lib/net",["require","exports","module","ace/lib/dom"],(function(t,e,l){"use strict";var i=t("./dom");e.get=function(t,e){var l=new XMLHttpRequest;l.open("GET",t,!0),l.onreadystatechange=function(){4===l.readyState&&e(l.responseText)},l.send(null)},e.loadScript=function(t,e){var l=i.getDocumentHead(),n=document.createElement("script");n.src=t,l.appendChild(n),n.onload=n.onreadystatechange=function(t,l){!l&&n.readyState&&"loaded"!=n.readyState&&"complete"!=n.readyState||(n=n.onload=n.onreadystatechange=null,l||e())}},e.qualifyURL=function(t){var e=document.createElement("a");return e.href=t,e.href}})),ace.define("ace/lib/event_emitter",["require","exports","module"],(function(t,e,l){"use strict";var i={},n=function(){this.propagationStopped=!0},d=function(){this.defaultPrevented=!0};i._emit=i._dispatchEvent=function(t,e){this._eventRegistry||(this._eventRegistry={}),this._defaultHandlers||(this._defaultHandlers={});var l=this._eventRegistry[t]||[],i=this._defaultHandlers[t];if(l.length||i){"object"==typeof e&&e||(e={}),e.type||(e.type=t),e.stopPropagation||(e.stopPropagation=n),e.preventDefault||(e.preventDefault=d),l=l.slice();for(var a=0;a1&&(n=l[l.length-2]);var a=c[e+"Path"];return null==a?a=c.basePath:"/"==i&&(e=i=""),a&&"/"!=a.slice(-1)&&(a+="/"),a+e+i+n+this.get("suffix")},e.setModuleUrl=function(t,e){return c.$moduleUrls[t]=e},e.$loading={},e.loadModule=function(l,i){var n,a;Array.isArray(l)&&(a=l[0],l=l[1]);try{n=t(l)}catch(t){}if(n&&!e.$loading[l])return i&&i(n);if(e.$loading[l]||(e.$loading[l]=[]),e.$loading[l].push(i),!(e.$loading[l].length>1)){var s=function(){t([l],(function(t){e._emit("load.module",{name:l,module:t});var i=e.$loading[l];e.$loading[l]=null,i.forEach((function(e){e&&e(t)}))}))};if(!e.get("packaged"))return s();d.loadScript(e.moduleUrl(l,a),s)}},o(!0),e.init=o})),ace.define("ace/mouse/mouse_handler",["require","exports","module","ace/lib/event","ace/lib/useragent","ace/mouse/default_handlers","ace/mouse/default_gutter_handler","ace/mouse/mouse_event","ace/mouse/dragdrop_handler","ace/config"],(function(t,e,l){"use strict";var i=t("../lib/event"),n=t("../lib/useragent"),d=t("./default_handlers").DefaultHandlers,a=t("./default_gutter_handler").GutterHandler,s=t("./mouse_event").MouseEvent,c=t("./dragdrop_handler").DragdropHandler,o=t("../config"),b=function(t){var e=this;this.editor=t,new d(this),new a(this),new c(this);var l=function(e){(!document.hasFocus||!document.hasFocus()||!t.isFocused()&&document.activeElement==(t.textInput&&t.textInput.getElement()))&&window.focus(),t.focus()},s=t.renderer.getMouseEventTarget();i.addListener(s,"click",this.onMouseEvent.bind(this,"click")),i.addListener(s,"mousemove",this.onMouseMove.bind(this,"mousemove")),i.addMultiMouseDownListener([s,t.renderer.scrollBarV&&t.renderer.scrollBarV.inner,t.renderer.scrollBarH&&t.renderer.scrollBarH.inner,t.textInput&&t.textInput.getElement()].filter(Boolean),[400,300,250],this,"onMouseEvent"),i.addMouseWheelListener(t.container,this.onMouseWheel.bind(this,"mousewheel")),i.addTouchMoveListener(t.container,this.onTouchMove.bind(this,"touchmove"));var o=t.renderer.$gutter;i.addListener(o,"mousedown",this.onMouseEvent.bind(this,"guttermousedown")),i.addListener(o,"click",this.onMouseEvent.bind(this,"gutterclick")),i.addListener(o,"dblclick",this.onMouseEvent.bind(this,"gutterdblclick")),i.addListener(o,"mousemove",this.onMouseEvent.bind(this,"guttermousemove")),i.addListener(s,"mousedown",l),i.addListener(o,"mousedown",l),n.isIE&&t.renderer.scrollBarV&&(i.addListener(t.renderer.scrollBarV.element,"mousedown",l),i.addListener(t.renderer.scrollBarH.element,"mousedown",l)),t.on("mousemove",(function(l){if(!e.state&&!e.$dragDelay&&e.$dragEnabled){var i=t.renderer.screenToTextCoordinates(l.x,l.y),n=t.session.selection.getRange(),d=t.renderer;!n.isEmpty()&&n.insideStart(i.row,i.column)?d.setCursorStyle("default"):d.setCursorStyle("")}}))};(function(){this.onMouseEvent=function(t,e){this.editor._emit(t,new s(e,this.editor))},this.onMouseMove=function(t,e){var l=this.editor._eventRegistry&&this.editor._eventRegistry.mousemove;l&&l.length&&this.editor._emit(t,new s(e,this.editor))},this.onMouseWheel=function(t,e){var l=new s(e,this.editor);l.speed=2*this.$scrollSpeed,l.wheelX=e.wheelX,l.wheelY=e.wheelY,this.editor._emit(t,l)},this.onTouchMove=function(t,e){var l=new s(e,this.editor);l.speed=1,l.wheelX=e.wheelX,l.wheelY=e.wheelY,this.editor._emit(t,l)},this.setState=function(t){this.state=t},this.captureMouse=function(t,e){this.x=t.x,this.y=t.y,this.isMousePressed=!0;var l=this.editor.renderer;l.$keepTextAreaAtCursor&&(l.$keepTextAreaAtCursor=null);var d=this,a=function(t){if(t){if(n.isWebKit&&!t.which&&d.releaseMouse)return d.releaseMouse();d.x=t.clientX,d.y=t.clientY,e&&e(t),d.mouseEvent=new s(t,d.editor),d.$mouseMoved=!0}},c=function(t){clearInterval(b),o(),d[d.state+"End"]&&d[d.state+"End"](t),d.state="",null==l.$keepTextAreaAtCursor&&(l.$keepTextAreaAtCursor=!0,l.$moveTextAreaToCursor()),d.isMousePressed=!1,d.$onCaptureMouseMove=d.releaseMouse=null,t&&d.onMouseEvent("mouseup",t)},o=function(){d[d.state]&&d[d.state](),d.$mouseMoved=!1};if(n.isOldIE&&"dblclick"==t.domEvent.type)return setTimeout((function(){c(t)}));d.$onCaptureMouseMove=a,d.releaseMouse=i.capture(this.editor.container,a,c);var b=setInterval(o,20)},this.releaseMouse=null,this.cancelContextMenu=function(){var t=function(e){e&&e.domEvent&&"contextmenu"!=e.domEvent.type||(this.editor.off("nativecontextmenu",t),e&&e.domEvent&&i.stopEvent(e.domEvent))}.bind(this);setTimeout(t,10),this.editor.on("nativecontextmenu",t)}}).call(b.prototype),o.defineOptions(b.prototype,"mouseHandler",{scrollSpeed:{initialValue:2},dragDelay:{initialValue:n.isMac?150:0},dragEnabled:{initialValue:!0},focusTimout:{initialValue:0},tooltipFollowsMouse:{initialValue:!0}}),e.MouseHandler=b})),ace.define("ace/mouse/fold_handler",["require","exports","module"],(function(t,e,l){"use strict";e.FoldHandler=function(t){t.on("click",(function(e){var l=e.getDocumentPosition(),i=t.session,n=i.getFoldAt(l.row,l.column,1);n&&(e.getAccelKey()?i.removeFold(n):i.expandFold(n),e.stop())})),t.on("gutterclick",(function(e){if("foldWidgets"==t.renderer.$gutterLayer.getRegion(e)){var l=e.getDocumentPosition().row,i=t.session;i.foldWidgets&&i.foldWidgets[l]&&t.session.onFoldWidgetClick(l,e),t.isFocused()||t.focus(),e.stop()}})),t.on("gutterdblclick",(function(e){if("foldWidgets"==t.renderer.$gutterLayer.getRegion(e)){var l=e.getDocumentPosition().row,i=t.session,n=i.getParentFoldRangeData(l,!0),d=n.range||n.firstRange;if(d){l=d.start.row;var a=i.getFoldAt(l,i.getLine(l).length,1);a?i.removeFold(a):(i.addFold("...",d),t.renderer.scrollCursorIntoView({row:d.start.row,column:0}))}e.stop()}}))}})),ace.define("ace/keyboard/keybinding",["require","exports","module","ace/lib/keys","ace/lib/event"],(function(t,e,l){"use strict";var i=t("../lib/keys"),n=t("../lib/event"),d=function(t){this.$editor=t,this.$data={editor:t},this.$handlers=[],this.setDefaultHandler(t.commands)};(function(){this.setDefaultHandler=function(t){this.removeKeyboardHandler(this.$defaultHandler),this.$defaultHandler=t,this.addKeyboardHandler(t,0)},this.setKeyboardHandler=function(t){var e=this.$handlers;if(e[e.length-1]!=t){for(;e[e.length-1]&&e[e.length-1]!=this.$defaultHandler;)this.removeKeyboardHandler(e[e.length-1]);this.addKeyboardHandler(t,1)}},this.addKeyboardHandler=function(t,e){if(t){"function"!=typeof t||t.handleKeyboard||(t.handleKeyboard=t);var l=this.$handlers.indexOf(t);-1!=l&&this.$handlers.splice(l,1),null==e?this.$handlers.push(t):this.$handlers.splice(e,0,t),-1==l&&t.attach&&t.attach(this.$editor)}},this.removeKeyboardHandler=function(t){var e=this.$handlers.indexOf(t);return-1!=e&&(this.$handlers.splice(e,1),t.detach&&t.detach(this.$editor),!0)},this.getKeyboardHandler=function(){return this.$handlers[this.$handlers.length-1]},this.getStatusText=function(){var t=this.$data,e=t.editor;return this.$handlers.map((function(l){return l.getStatusText&&l.getStatusText(e,t)||""})).filter(Boolean).join(" ")},this.$callKeyboardHandlers=function(t,e,l,i){for(var d,a=!1,s=this.$editor.commands,c=this.$handlers.length;c--&&!((d=this.$handlers[c].handleKeyboard(this.$data,t,e,l,i))&&d.command&&((a="null"==d.command||s.exec(d.command,this.$editor,d.args,i))&&i&&-1!=t&&1!=d.passEvent&&1!=d.command.passEvent&&n.stopEvent(i),a)););return a||-1!=t||(d={command:"insertstring"},a=s.exec("insertstring",this.$editor,e)),a&&this.$editor._signal("keyboardActivity",d),a},this.onCommandKey=function(t,e,l){var n=i.keyCodeToString(l);this.$callKeyboardHandlers(e,n,l,t)},this.onTextInput=function(t){this.$callKeyboardHandlers(-1,t)}}).call(d.prototype),e.KeyBinding=d})),ace.define("ace/range",["require","exports","module"],(function(t,e,l){"use strict";var i=function(t,e,l,i){this.start={row:t,column:e},this.end={row:l,column:i}};(function(){this.isEqual=function(t){return this.start.row===t.start.row&&this.end.row===t.end.row&&this.start.column===t.start.column&&this.end.column===t.end.column},this.toString=function(){return"Range: ["+this.start.row+"/"+this.start.column+"] -> ["+this.end.row+"/"+this.end.column+"]"},this.contains=function(t,e){return 0==this.compare(t,e)},this.compareRange=function(t){var e,l=t.end,i=t.start;return 1==(e=this.compare(l.row,l.column))?1==(e=this.compare(i.row,i.column))?2:0==e?1:0:-1==e?-2:-1==(e=this.compare(i.row,i.column))?-1:1==e?42:0},this.comparePoint=function(t){return this.compare(t.row,t.column)},this.containsRange=function(t){return 0==this.comparePoint(t.start)&&0==this.comparePoint(t.end)},this.intersects=function(t){var e=this.compareRange(t);return-1==e||0==e||1==e},this.isEnd=function(t,e){return this.end.row==t&&this.end.column==e},this.isStart=function(t,e){return this.start.row==t&&this.start.column==e},this.setStart=function(t,e){"object"==typeof t?(this.start.column=t.column,this.start.row=t.row):(this.start.row=t,this.start.column=e)},this.setEnd=function(t,e){"object"==typeof t?(this.end.column=t.column,this.end.row=t.row):(this.end.row=t,this.end.column=e)},this.inside=function(t,e){return 0==this.compare(t,e)&&!this.isEnd(t,e)&&!this.isStart(t,e)},this.insideStart=function(t,e){return 0==this.compare(t,e)&&!this.isEnd(t,e)},this.insideEnd=function(t,e){return 0==this.compare(t,e)&&!this.isStart(t,e)},this.compare=function(t,e){return this.isMultiLine()||t!==this.start.row?tthis.end.row?1:this.start.row===t?e>=this.start.column?0:-1:this.end.row===t?e<=this.end.column?0:1:0:ethis.end.column?1:0},this.compareStart=function(t,e){return this.start.row==t&&this.start.column==e?-1:this.compare(t,e)},this.compareEnd=function(t,e){return this.end.row==t&&this.end.column==e?1:this.compare(t,e)},this.compareInside=function(t,e){return this.end.row==t&&this.end.column==e?1:this.start.row==t&&this.start.column==e?-1:this.compare(t,e)},this.clipRows=function(t,e){if(this.end.row>e)var l={row:e+1,column:0};else this.end.rowe)var n={row:e+1,column:0};else this.start.rowe.row||t.row==e.row&&t.column>e.column},this.getRange=function(){var t=this.anchor,e=this.lead;return this.isEmpty()?a.fromPoints(e,e):this.isBackwards()?a.fromPoints(e,t):a.fromPoints(t,e)},this.clearSelection=function(){this.$isEmpty||(this.$isEmpty=!0,this._emit("changeSelection"))},this.selectAll=function(){var t=this.doc.getLength()-1;this.setSelectionAnchor(0,0),this.moveCursorTo(t,this.doc.getLine(t).length)},this.setRange=this.setSelectionRange=function(t,e){e?(this.setSelectionAnchor(t.end.row,t.end.column),this.selectTo(t.start.row,t.start.column)):(this.setSelectionAnchor(t.start.row,t.start.column),this.selectTo(t.end.row,t.end.column)),this.getRange().isEmpty()&&(this.$isEmpty=!0),this.$desiredColumn=null},this.$moveSelection=function(t){var e=this.lead;this.$isEmpty&&this.setSelectionAnchor(e.row,e.column),t.call(this)},this.selectTo=function(t,e){this.$moveSelection((function(){this.moveCursorTo(t,e)}))},this.selectToPosition=function(t){this.$moveSelection((function(){this.moveCursorToPosition(t)}))},this.moveTo=function(t,e){this.clearSelection(),this.moveCursorTo(t,e)},this.moveToPosition=function(t){this.clearSelection(),this.moveCursorToPosition(t)},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(t,e){if(void 0===e){var l=t||this.lead;t=l.row,e=l.column}return this.session.getWordRange(t,e)},this.selectWord=function(){this.setSelectionRange(this.getWordRange())},this.selectAWord=function(){var t=this.getCursor(),e=this.session.getAWordRange(t.row,t.column);this.setSelectionRange(e)},this.getLineRange=function(t,e){var l,i="number"==typeof t?t:this.lead.row,n=this.session.getFoldLine(i);return n?(i=n.start.row,l=n.end.row):l=i,!0===e?new a(i,0,l,this.session.getLine(l).length):new a(i,0,l+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 t,e=this.lead.getPosition();if(t=this.session.getFoldAt(e.row,e.column,-1))this.moveCursorTo(t.start.row,t.start.column);else if(0===e.column)e.row>0&&this.moveCursorTo(e.row-1,this.doc.getLine(e.row-1).length);else{var l=this.session.getTabSize();this.session.isTabStop(e)&&this.doc.getLine(e.row).slice(e.column-l,e.column).split(" ").length-1==l?this.moveCursorBy(0,-l):this.moveCursorBy(0,-1)}},this.moveCursorRight=function(){var t,e=this.lead.getPosition();if(t=this.session.getFoldAt(e.row,e.column,1))this.moveCursorTo(t.end.row,t.end.column);else if(this.lead.column==this.doc.getLine(this.lead.row).length)this.lead.row0&&(e.column=i)}}this.moveCursorTo(e.row,e.column)},this.moveCursorFileEnd=function(){var t=this.doc.getLength()-1,e=this.doc.getLine(t).length;this.moveCursorTo(t,e)},this.moveCursorFileStart=function(){this.moveCursorTo(0,0)},this.moveCursorLongWordRight=function(){var t=this.lead.row,e=this.lead.column,l=this.doc.getLine(t),i=l.substring(e);this.session.nonTokenRe.lastIndex=0,this.session.tokenRe.lastIndex=0;var n=this.session.getFoldAt(t,e,1);if(n)this.moveCursorTo(n.end.row,n.end.column);else{if(this.session.nonTokenRe.exec(i)&&(e+=this.session.nonTokenRe.lastIndex,this.session.nonTokenRe.lastIndex=0,i=l.substring(e)),e>=l.length)return this.moveCursorTo(t,l.length),this.moveCursorRight(),void(t0&&this.moveCursorWordLeft());this.session.tokenRe.exec(d)&&(l-=this.session.tokenRe.lastIndex,this.session.tokenRe.lastIndex=0),this.moveCursorTo(e,l)}},this.$shortWordEndIndex=function(t){var e,l=0,i=/\s/,n=this.session.tokenRe;if(n.lastIndex=0,this.session.tokenRe.exec(t))l=this.session.tokenRe.lastIndex;else{for(;(e=t[l])&&i.test(e);)l++;if(l<1)for(n.lastIndex=0;(e=t[l])&&!n.test(e);)if(n.lastIndex=0,l++,i.test(e)){if(l>2){l--;break}for(;(e=t[l])&&i.test(e);)l++;if(l>2)break}}return n.lastIndex=0,l},this.moveCursorShortWordRight=function(){var t=this.lead.row,e=this.lead.column,l=this.doc.getLine(t),i=l.substring(e),n=this.session.getFoldAt(t,e,1);if(n)return this.moveCursorTo(n.end.row,n.end.column);if(e==l.length){var d=this.doc.getLength();do{t++,i=this.doc.getLine(t)}while(t0&&/^\s*$/.test(i));l=i.length,/\s+$/.test(i)||(i="")}var d=n.stringReverse(i),a=this.$shortWordEndIndex(d);return this.moveCursorTo(e,l-a)},this.moveCursorWordRight=function(){this.session.$selectLongWords?this.moveCursorLongWordRight():this.moveCursorShortWordRight()},this.moveCursorWordLeft=function(){this.session.$selectLongWords?this.moveCursorLongWordLeft():this.moveCursorShortWordLeft()},this.moveCursorBy=function(t,e){var l=this.session.documentToScreenPosition(this.lead.row,this.lead.column);0===e&&(this.$desiredColumn?l.column=this.$desiredColumn:this.$desiredColumn=l.column);var i=this.session.screenToDocumentPosition(l.row+t,l.column);0!==t&&0===e&&i.row===this.lead.row&&i.column===this.lead.column&&this.session.lineWidgets&&this.session.lineWidgets[i.row]&&(i.row>0||t>0)&&i.row++,this.moveCursorTo(i.row,i.column+e,0===e)},this.moveCursorToPosition=function(t){this.moveCursorTo(t.row,t.column)},this.moveCursorTo=function(t,e,l){var i=this.session.getFoldAt(t,e,1);i&&(t=i.start.row,e=i.start.column),this.$keepDesiredColumnOnChange=!0,this.lead.setPosition(t,e),this.$keepDesiredColumnOnChange=!1,l||(this.$desiredColumn=null)},this.moveCursorToScreen=function(t,e,l){var i=this.session.screenToDocumentPosition(t,e);this.moveCursorTo(i.row,i.column,l)},this.detach=function(){this.lead.detach(),this.anchor.detach(),this.session=this.doc=null},this.fromOrientedRange=function(t){this.setSelectionRange(t,t.cursor==t.start),this.$desiredColumn=t.desiredColumn||this.$desiredColumn},this.toOrientedRange=function(t){var e=this.getRange();return t?(t.start.column=e.start.column,t.start.row=e.start.row,t.end.column=e.end.column,t.end.row=e.end.row):t=e,t.cursor=this.isBackwards()?t.start:t.end,t.desiredColumn=this.$desiredColumn,t},this.getRangeOfMovements=function(t){var e=this.getCursor();try{t(this);var l=this.getCursor();return a.fromPoints(e,l)}catch(t){return a.fromPoints(e,e)}finally{this.moveCursorToPosition(e)}},this.toJSON=function(){if(this.rangeCount)var t=this.ranges.map((function(t){var e=t.clone();return e.isBackwards=t.cursor==t.start,e}));else(t=this.getRange()).isBackwards=this.isBackwards();return t},this.fromJSON=function(t){if(null==t.start){if(this.rangeList){this.toSingleRange(t[0]);for(var e=t.length;e--;){var l=a.fromPoints(t[e].start,t[e].end);t[e].isBackwards&&(l.cursor=l.start),this.addRange(l,!0)}return}t=t[0]}this.rangeList&&this.toSingleRange(t),this.setSelectionRange(t,t.isBackwards)},this.isEqual=function(t){if((t.length||this.rangeCount)&&t.length!=this.rangeCount)return!1;if(!t.length||!this.ranges)return this.getRange().isEqual(t);for(var e=this.ranges.length;e--;)if(!this.ranges[e].isEqual(t[e]))return!1;return!0}}).call(s.prototype),e.Selection=s})),ace.define("ace/tokenizer",["require","exports","module","ace/config"],(function(t,e,l){"use strict";var i=t("./config"),n=2e3,d=function(t){for(var e in this.states=t,this.regExps={},this.matchMappings={},this.states){for(var l=this.states[e],i=[],n=0,d=this.matchMappings[e]={defaultToken:"text"},a="g",s=[],c=0;c1?this.$applyToken:o.token),r>1&&(/\\\d/.test(o.regex)?b=o.regex.replace(/\\([0-9]+)/g,(function(t,e){return"\\"+(parseInt(e,10)+n+1)})):(r=1,b=this.removeCapturingGroups(o.regex)),o.splitRegex||"string"==typeof o.token||s.push(o)),d[n]=c,n+=r,i.push(b),o.onMatch||(o.onMatch=null)}}i.length||(d[0]=0,i.push("$")),s.forEach((function(t){t.splitRegex=this.createSplitterRegexp(t.regex,a)}),this),this.regExps[e]=new RegExp("("+i.join(")|(")+")|($)",a)}};(function(){this.$setMaxTokenCount=function(t){n=0|t},this.$applyToken=function(t){var e=this.splitRegex.exec(t).slice(1),l=this.token.apply(this,e);if("string"==typeof l)return[{type:l,value:t}];for(var i=[],n=0,d=l.length;nb){var N=t.substring(b,h-W.length);m.type==Z?m.value+=N:(m.type&&o.push(m),m={type:Z,value:N})}for(var y=0;yn){for(r>2*t.length&&this.reportError("infinite loop with in ace tokenizer",{startState:e,line:t});b1&&l[0]!==i&&l.unshift("#tmp",i),{tokens:o,state:l.length?l:i}},this.reportError=i.reportError}).call(d.prototype),e.Tokenizer=d})),ace.define("ace/mode/text_highlight_rules",["require","exports","module","ace/lib/lang"],(function(t,e,l){"use strict";var i=t("../lib/lang"),n=function(){this.$rules={start:[{token:"empty_line",regex:"^$"},{defaultToken:"text"}]}};(function(){this.addRules=function(t,e){if(e)for(var l in t){for(var i=t[l],n=0;n=this.$rowTokens.length;){if(this.$row+=1,t||(t=this.$session.getLength()),this.$row>=t)return this.$row=t-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 t=this.$rowTokens,e=this.$tokenIndex,l=t[e].start;if(void 0!==l)return l;for(l=0;e>0;)l+=t[e-=1].value.length;return l},this.getCurrentTokenPosition=function(){return{row:this.$row,column:this.getCurrentTokenColumn()}}}).call(i.prototype),e.TokenIterator=i})),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(t,e,l){"use strict";var i=t("../tokenizer").Tokenizer,n=t("./text_highlight_rules").TextHighlightRules,d=t("./behaviour").Behaviour,a=t("../unicode"),s=t("../lib/lang"),c=t("../token_iterator").TokenIterator,o=t("../range").Range,b=function(){this.HighlightRules=n,this.$behaviour=new d};(function(){this.tokenRe=new RegExp("^["+a.packages.L+a.packages.Mn+a.packages.Mc+a.packages.Nd+a.packages.Pc+"\\$_]+","g"),this.nonTokenRe=new RegExp("^(?:[^"+a.packages.L+a.packages.Mn+a.packages.Mc+a.packages.Nd+a.packages.Pc+"\\$_]|\\s])+","g"),this.getTokenizer=function(){return this.$tokenizer||(this.$highlightRules=this.$highlightRules||new this.HighlightRules,this.$tokenizer=new i(this.$highlightRules.getRules())),this.$tokenizer},this.lineCommentStart="",this.blockComment="",this.toggleCommentLines=function(t,e,l,i){var n=e.doc,d=!0,a=!0,c=1/0,o=e.getTabSize(),b=!1;if(this.lineCommentStart){Array.isArray(this.lineCommentStart)?(W=this.lineCommentStart.map(s.escapeRegExp).join("|"),Z=this.lineCommentStart[0]):(W=s.escapeRegExp(this.lineCommentStart),Z=this.lineCommentStart),W=new RegExp("^(\\s*)(?:"+W+") ?"),b=e.getUseSoftTabs(),y=function(t,e){var l=t.match(W);if(l){var i=l[1].length,d=l[0].length;m(t,i,d)||" "!=l[0][d-1]||d--,n.removeInLine(e,i,d)}};var r=Z+" ",m=(N=function(t,e){d&&!/\S/.test(t)||(m(t,c,c)?n.insertInLine({row:e,column:c},r):n.insertInLine({row:e,column:c},Z))},I=function(t,e){return W.test(t)},function(t,e,l){for(var i=0;e--&&" "==t.charAt(e);)i++;if(i%o!=0)return!1;for(i=0;" "==t.charAt(l++);)i++;return o>2?i%o!=o-1:i%o==0})}else{if(!this.blockComment)return!1;var Z=this.blockComment.start,g=this.blockComment.end,W=new RegExp("^(\\s*)(?:"+s.escapeRegExp(Z)+")"),h=new RegExp("(?:"+s.escapeRegExp(g)+")\\s*$"),N=function(t,e){I(t,e)||d&&!/\S/.test(t)||(n.insertInLine({row:e,column:t.length},g),n.insertInLine({row:e,column:c},Z))},y=function(t,e){var l;(l=t.match(h))&&n.removeInLine(e,t.length-l[0].length,t.length),(l=t.match(W))&&n.removeInLine(e,l[1].length,l[0].length)},I=function(t,l){if(W.test(t))return!0;for(var i=e.getTokens(l),n=0;nt.length&&(M=t.length)})),c==1/0&&(c=M,d=!1,a=!1),b&&c%o!=0&&(c=Math.floor(c/o)*o),G(a?y:N)},this.toggleBlockComment=function(t,e,l,i){var n=this.blockComment;if(n){!n.start&&n[0]&&(n=n[0]);var d,a,s=(W=new c(e,i.row,i.column)).getCurrentToken(),b=(e.selection,e.selection.toOrientedRange());if(s&&/comment/.test(s.type)){for(var r,m;s&&/comment/.test(s.type);){if(-1!=(h=s.value.indexOf(n.start))){var Z=W.getCurrentTokenRow(),g=W.getCurrentTokenColumn()+h;r=new o(Z,g,Z,g+n.start.length);break}s=W.stepBackward()}var W;for(s=(W=new c(e,i.row,i.column)).getCurrentToken();s&&/comment/.test(s.type);){var h;if(-1!=(h=s.value.indexOf(n.end))){Z=W.getCurrentTokenRow(),g=W.getCurrentTokenColumn()+h,m=new o(Z,g,Z,g+n.end.length);break}s=W.stepForward()}m&&e.remove(m),r&&(e.remove(r),d=r.start.row,a=-n.start.length)}else a=n.start.length,d=l.start.row,e.insert(l.end,n.end),e.insert(l.start,n.start);b.start.row==d&&(b.start.column+=a),b.end.row==d&&(b.end.column+=a),e.selection.fromOrientedRange(b)}},this.getNextLineIndent=function(t,e,l){return this.$getIndent(e)},this.checkOutdent=function(t,e,l){return!1},this.autoOutdent=function(t,e,l){},this.$getIndent=function(t){return t.match(/^\s*/)[0]},this.createWorker=function(t){return null},this.createModeDelegates=function(t){for(var e in this.$embeds=[],this.$modes={},t)t[e]&&(this.$embeds.push(e),this.$modes[e]=new t[e]);var l=["toggleBlockComment","toggleCommentLines","getNextLineIndent","checkOutdent","autoOutdent","transformAction","getCompletions"];for(e=0;ethis.row)){var l=function(e,l,i){var n="insert"==e.action,d=(n?1:-1)*(e.end.row-e.start.row),a=(n?1:-1)*(e.end.column-e.start.column),s=e.start,c=n?s:e.end;return t(l,s,i)?{row:l.row,column:l.column}:t(c,l,!i)?{row:l.row+d,column:l.column+(l.row==c.row?a:0)}:{row:s.row,column:s.column}}(e,{row:this.row,column:this.column},this.$insertRight);this.setPosition(l.row,l.column,!0)}},this.setPosition=function(t,e,l){var i;if(i=l?{row:t,column:e}:this.$clipPositionToDocument(t,e),this.row!=i.row||this.column!=i.column){var n={row:this.row,column:this.column};this.row=i.row,this.column=i.column,this._signal("change",{old:n,value:i})}},this.detach=function(){this.document.removeEventListener("change",this.$onChange)},this.attach=function(t){this.document=t||this.document,this.document.on("change",this.$onChange)},this.$clipPositionToDocument=function(t,e){var l={};return t>=this.document.getLength()?(l.row=Math.max(0,this.document.getLength()-1),l.column=this.document.getLine(l.row).length):t<0?(l.row=0,l.column=0):(l.row=t,l.column=Math.min(this.document.getLine(l.row).length,Math.max(0,e))),e<0&&(l.column=0),l}}).call(d.prototype)})),ace.define("ace/document",["require","exports","module","ace/lib/oop","ace/apply_delta","ace/lib/event_emitter","ace/range","ace/anchor"],(function(t,e,l){"use strict";var i=t("./lib/oop"),n=t("./apply_delta").applyDelta,d=t("./lib/event_emitter").EventEmitter,a=t("./range").Range,s=t("./anchor").Anchor,c=function(t){this.$lines=[""],0===t.length?this.$lines=[""]:Array.isArray(t)?this.insertMergedLines({row:0,column:0},t):this.insert({row:0,column:0},t)};(function(){i.implement(this,d),this.setValue=function(t){var e=this.getLength()-1;this.remove(new a(0,0,e,this.getLine(e).length)),this.insert({row:0,column:0},t)},this.getValue=function(){return this.getAllLines().join(this.getNewLineCharacter())},this.createAnchor=function(t,e){return new s(this,t,e)},0==="aaa".split(/a/).length?this.$split=function(t){return t.replace(/\r\n|\r/g,"\n").split("\n")}:this.$split=function(t){return t.split(/\r\n|\r|\n/)},this.$detectNewLine=function(t){var e=t.match(/^.*?(\r\n|\r|\n)/m);this.$autoNewLine=e?e[1]:"\n",this._signal("changeNewLineMode")},this.getNewLineCharacter=function(){switch(this.$newLineMode){case"windows":return"\r\n";case"unix":return"\n";default:return this.$autoNewLine||"\n"}},this.$autoNewLine="",this.$newLineMode="auto",this.setNewLineMode=function(t){this.$newLineMode!==t&&(this.$newLineMode=t,this._signal("changeNewLineMode"))},this.getNewLineMode=function(){return this.$newLineMode},this.isNewLine=function(t){return"\r\n"==t||"\r"==t||"\n"==t},this.getLine=function(t){return this.$lines[t]||""},this.getLines=function(t,e){return this.$lines.slice(t,e+1)},this.getAllLines=function(){return this.getLines(0,this.getLength())},this.getLength=function(){return this.$lines.length},this.getTextRange=function(t){return this.getLinesForRange(t).join(this.getNewLineCharacter())},this.getLinesForRange=function(t){var e;if(t.start.row===t.end.row)e=[this.getLine(t.start.row).substring(t.start.column,t.end.column)];else{(e=this.getLines(t.start.row,t.end.row))[0]=(e[0]||"").substring(t.start.column);var l=e.length-1;t.end.row-t.start.row==l&&(e[l]=e[l].substring(0,t.end.column))}return e},this.insertLines=function(t,e){return console.warn("Use of document.insertLines is deprecated. Use the insertFullLines method instead."),this.insertFullLines(t,e)},this.removeLines=function(t,e){return console.warn("Use of document.removeLines is deprecated. Use the removeFullLines method instead."),this.removeFullLines(t,e)},this.insertNewLine=function(t){return console.warn("Use of document.insertNewLine is deprecated. Use insertMergedLines(position, ['', '']) instead."),this.insertMergedLines(t,["",""])},this.insert=function(t,e){return this.getLength()<=1&&this.$detectNewLine(e),this.insertMergedLines(t,this.$split(e))},this.insertInLine=function(t,e){var l=this.clippedPos(t.row,t.column),i=this.pos(t.row,t.column+e.length);return this.applyDelta({start:l,end:i,action:"insert",lines:[e]},!0),this.clonePos(i)},this.clippedPos=function(t,e){var l=this.getLength();void 0===t?t=l:t<0?t=0:t>=l&&(t=l-1,e=void 0);var i=this.getLine(t);return null==e&&(e=i.length),{row:t,column:e=Math.min(Math.max(e,0),i.length)}},this.clonePos=function(t){return{row:t.row,column:t.column}},this.pos=function(t,e){return{row:t,column:e}},this.$clipPosition=function(t){var e=this.getLength();return t.row>=e?(t.row=Math.max(0,e-1),t.column=this.getLine(e-1).length):(t.row=Math.max(0,t.row),t.column=Math.min(Math.max(t.column,0),this.getLine(t.row).length)),t},this.insertFullLines=function(t,e){var l=0;(t=Math.min(Math.max(t,0),this.getLength()))0,i=e=0&&this.applyDelta({start:this.pos(t,this.getLine(t).length),end:this.pos(t+1,0),action:"remove",lines:["",""]})},this.replace=function(t,e){return t instanceof a||(t=a.fromPoints(t.start,t.end)),0===e.length&&t.isEmpty()?t.start:e==this.getTextRange(t)?t.end:(this.remove(t),e?this.insert(t.start,e):t.start)},this.applyDeltas=function(t){for(var e=0;e=0;e--)this.revertDelta(t[e])},this.applyDelta=function(t,e){var l="insert"==t.action;(l?t.lines.length<=1&&!t.lines[0]:!a.comparePoints(t.start,t.end))||(l&&t.lines.length>2e4&&this.$splitAndapplyLargeDelta(t,2e4),n(this.$lines,t,e),this._signal("change",t))},this.$splitAndapplyLargeDelta=function(t,e){for(var l=t.lines,i=l.length,n=t.start.row,d=t.start.column,a=0,s=0;;){a=s,s+=e-1;var c=l.slice(a,s);if(s>i){t.lines=c,t.start.row=n+a,t.start.column=d;break}c.push(""),this.applyDelta({start:this.pos(n+a,d),end:this.pos(n+s,d=0),action:t.action,lines:c},!0)}},this.revertDelta=function(t){this.applyDelta({start:this.clonePos(t.start),end:this.clonePos(t.end),action:"insert"==t.action?"remove":"insert",lines:t.lines.slice()})},this.indexToPosition=function(t,e){for(var l=this.$lines||this.getAllLines(),i=this.getNewLineCharacter().length,n=e||0,d=l.length;n20){l.running=setTimeout(l.$worker,20);break}}l.currentLine=e,d<=i&&l.fireUpdateEvent(d,i)}}};(function(){i.implement(this,n),this.setTokenizer=function(t){this.tokenizer=t,this.lines=[],this.states=[],this.start(0)},this.setDocument=function(t){this.doc=t,this.lines=[],this.states=[],this.stop()},this.fireUpdateEvent=function(t,e){var l={first:t,last:e};this._signal("update",{data:l})},this.start=function(t){this.currentLine=Math.min(t||0,this.currentLine,this.doc.getLength()),this.lines.splice(this.currentLine,this.lines.length),this.states.splice(this.currentLine,this.states.length),this.stop(),this.running=setTimeout(this.$worker,700)},this.scheduleStart=function(){this.running||(this.running=setTimeout(this.$worker,700))},this.$updateOnChange=function(t){var e=t.start.row,l=t.end.row-e;if(0===l)this.lines[e]=null;else if("remove"==t.action)this.lines.splice(e,l+1,null),this.states.splice(e,l+1,null);else{var i=Array(l+1);i.unshift(e,1),this.lines.splice.apply(this.lines,i),this.states.splice.apply(this.states,i)}this.currentLine=Math.min(e,this.currentLine,this.doc.getLength()),this.stop()},this.stop=function(){this.running&&clearTimeout(this.running),this.running=!1},this.getTokens=function(t){return this.lines[t]||this.$tokenizeRow(t)},this.getState=function(t){return this.currentLine==t&&this.$tokenizeRow(t),this.states[t]||"start"},this.$tokenizeRow=function(t){var e=this.doc.getLine(t),l=this.states[t-1],i=this.tokenizer.getLineTokens(e,l,t);return this.states[t]+""!=i.state+""?(this.states[t]=i.state,this.lines[t+1]=null,this.currentLine>t+1&&(this.currentLine=t+1)):this.currentLine==t&&(this.currentLine=t+1),this.lines[t]=i.tokens}}).call(d.prototype),e.BackgroundTokenizer=d})),ace.define("ace/search_highlight",["require","exports","module","ace/lib/lang","ace/lib/oop","ace/range"],(function(t,e,l){"use strict";var i=t("./lib/lang"),n=(t("./lib/oop"),t("./range").Range),d=function(t,e,l){this.setRegexp(t),this.clazz=e,this.type=l||"text"};(function(){this.MAX_RANGES=500,this.setRegexp=function(t){this.regExp+""!=t+""&&(this.regExp=t,this.cache=[])},this.update=function(t,e,l,d){if(this.regExp)for(var a=d.firstRow,s=d.lastRow,c=a;c<=s;c++){var o=this.cache[c];null==o&&((o=i.getMatchOffsets(l.getLine(c),this.regExp)).length>this.MAX_RANGES&&(o=o.slice(0,this.MAX_RANGES)),o=o.map((function(t){return new n(c,t.offset,c,t.offset+t.length)})),this.cache[c]=o.length?o:"");for(var b=o.length;b--;)e.drawSingleLineMarker(t,o[b].toScreenRange(l),this.clazz,d)}}}).call(d.prototype),e.SearchHighlight=d})),ace.define("ace/edit_session/fold_line",["require","exports","module","ace/range"],(function(t,e,l){"use strict";var i=t("../range").Range;function n(t,e){this.foldData=t,Array.isArray(e)?this.folds=e:e=this.folds=[e];var l=e[e.length-1];this.range=new i(e[0].start.row,e[0].start.column,l.end.row,l.end.column),this.start=this.range.start,this.end=this.range.end,this.folds.forEach((function(t){t.setFoldLine(this)}),this)}(function(){this.shiftRow=function(t){this.start.row+=t,this.end.row+=t,this.folds.forEach((function(e){e.start.row+=t,e.end.row+=t}))},this.addFold=function(t){if(t.sameRow){if(t.start.rowthis.endRow)throw new Error("Can't add a fold to this FoldLine as it has no connection");this.folds.push(t),this.folds.sort((function(t,e){return-t.range.compareEnd(e.start.row,e.start.column)})),this.range.compareEnd(t.start.row,t.start.column)>0?(this.end.row=t.end.row,this.end.column=t.end.column):this.range.compareStart(t.end.row,t.end.column)<0&&(this.start.row=t.start.row,this.start.column=t.start.column)}else if(t.start.row==this.end.row)this.folds.push(t),this.end.row=t.end.row,this.end.column=t.end.column;else{if(t.end.row!=this.start.row)throw new Error("Trying to add fold to FoldRow that doesn't have a matching row");this.folds.unshift(t),this.start.row=t.start.row,this.start.column=t.start.column}t.foldLine=this},this.containsRow=function(t){return t>=this.start.row&&t<=this.end.row},this.walk=function(t,e,l){var i,n,d=0,a=this.folds,s=!0;null==e&&(e=this.end.row,l=this.end.column);for(var c=0;c0)){var c=i(t,a.start);return 0===s?e&&0!==c?-d-2:d:c>0||0===c&&!e?d:-d-1}}return-d-1},this.add=function(t){var e=!t.isEmpty(),l=this.pointIndex(t.start,e);l<0&&(l=-l-1);var i=this.pointIndex(t.end,e,l);return i<0?i=-i-1:i++,this.ranges.splice(l,i-l,t)},this.addList=function(t){for(var e=[],l=t.length;l--;)e.push.apply(e,this.add(t[l]));return e},this.substractPoint=function(t){var e=this.pointIndex(t);if(e>=0)return this.ranges.splice(e,1)},this.merge=function(){for(var t,e=[],l=this.ranges,n=(l=l.sort((function(t,e){return i(t.start,e.start)})))[0],d=1;d=0},this.containsPoint=function(t){return this.pointIndex(t)>=0},this.rangeAtPoint=function(t){var e=this.pointIndex(t);if(e>=0)return this.ranges[e]},this.clipRows=function(t,e){var l=this.ranges;if(l[0].start.row>e||l[l.length-1].start.rowi)break;if(o.start.row==i&&o.start.column>=e.column&&(o.start.column==e.column&&this.$insertRight||(o.start.column+=d,o.start.row+=n)),o.end.row==i&&o.end.column>=e.column){if(o.end.column==e.column&&this.$insertRight)continue;o.end.column==e.column&&d>0&&so.start.column&&o.end.column==a[s+1].start.column&&(o.end.column-=d),o.end.column+=d,o.end.row+=n}}if(0!=n&&s=t)return n;if(n.end.row>t)return null}return null},this.getNextFoldLine=function(t,e){var l=this.$foldData,i=0;for(e&&(i=l.indexOf(e)),-1==i&&(i=0);i=t)return n}return null},this.getFoldedRowCount=function(t,e){for(var l=this.$foldData,i=e-t+1,n=0;n=e){s=t?i-=e-s:i=0);break}a>=t&&(i-=s>=t?a-s:a-t+1)}return i},this.$addFoldLine=function(t){return this.$foldData.push(t),this.$foldData.sort((function(t,e){return t.start.row-e.start.row})),t},this.addFold=function(t,e){var l,i=this.$foldData,a=!1;t instanceof d?l=t:(l=new d(e,t)).collapseChildren=e.collapseChildren,this.$clipRangeToDocument(l.range);var s=l.start.row,c=l.start.column,o=l.end.row,b=l.end.column;if(!(s0&&(this.removeFolds(Z),Z.forEach((function(t){l.addSubFold(t)})));for(var g=0;g0&&this.foldAll(t.start.row+1,t.end.row,t.collapseChildren-1),t.subFolds=[]},this.expandFolds=function(t){t.forEach((function(t){this.expandFold(t)}),this)},this.unfold=function(t,e){var l,n;if(null==t?(l=new i(0,0,this.getLength(),0),e=!0):l="number"==typeof t?new i(t,0,t,this.getLine(t).length):"row"in t?i.fromPoints(t,t):t,n=this.getFoldsInRangeList(l),e)this.removeFolds(n);else for(var d=n;d.length;)this.expandFolds(d),d=this.getFoldsInRangeList(l);if(n.length)return n},this.isRowFolded=function(t,e){return!!this.getFoldLine(t,e)},this.getRowFoldEnd=function(t,e){var l=this.getFoldLine(t,e);return l?l.end.row:t},this.getRowFoldStart=function(t,e){var l=this.getFoldLine(t,e);return l?l.start.row:t},this.getFoldDisplayLine=function(t,e,l,i,n){null==i&&(i=t.start.row),null==n&&(n=0),null==e&&(e=t.end.row),null==l&&(l=this.getLine(e).length);var d=this.doc,a="";return t.walk((function(t,e,l,s){if(!(e=t){n=d.end.row;try{var a=this.addFold("...",d);a&&(a.collapseChildren=l)}catch(t){}}}}},this.$foldStyles={manual:1,markbegin:1,markbeginend:1},this.$foldStyle="markbegin",this.setFoldStyle=function(t){if(!this.$foldStyles[t])throw new Error("invalid fold style: "+t+"["+Object.keys(this.$foldStyles).join(", ")+"]");if(this.$foldStyle!=t){this.$foldStyle=t,"manual"==t&&this.unfold();var e=this.$foldMode;this.$setFolding(null),this.$setFolding(e)}},this.$setFolding=function(t){this.$foldMode!=t&&(this.$foldMode=t,this.off("change",this.$updateFoldWidgets),this.off("tokenizerUpdate",this.$tokenizerUpdateFoldWidgets),this._signal("changeAnnotation"),t&&"manual"!=this.$foldStyle?(this.foldWidgets=[],this.getFoldWidget=t.getFoldWidget.bind(t,this,this.$foldStyle),this.getFoldWidgetRange=t.getFoldWidgetRange.bind(t,this,this.$foldStyle),this.$updateFoldWidgets=this.updateFoldWidgets.bind(this),this.$tokenizerUpdateFoldWidgets=this.tokenizerUpdateFoldWidgets.bind(this),this.on("change",this.$updateFoldWidgets),this.on("tokenizerUpdate",this.$tokenizerUpdateFoldWidgets)):this.foldWidgets=null)},this.getParentFoldRangeData=function(t,e){var l=this.foldWidgets;if(!l||e&&l[t])return{};for(var i,n=t-1;n>=0;){var d=l[n];if(null==d&&(d=l[n]=this.getFoldWidget(n)),"start"==d){var a=this.getFoldWidgetRange(n);if(i||(i=a),a&&a.end.row>=t)break}n--}return{range:-1!==n&&a,firstRange:i}},this.onFoldWidgetClick=function(t,e){var l={children:(e=e.domEvent).shiftKey,all:e.ctrlKey||e.metaKey,siblings:e.altKey};if(!this.$toggleFoldWidget(t,l)){var i=e.target||e.srcElement;i&&/ace_fold-widget/.test(i.className)&&(i.className+=" ace_invalid")}},this.$toggleFoldWidget=function(t,e){if(this.getFoldWidget){var l=this.getFoldWidget(t),i=this.getLine(t),n="end"===l?-1:1,d=this.getFoldAt(t,-1===n?0:i.length,n);if(d)e.children||e.all?this.removeFold(d):this.expandFold(d);else{var a=this.getFoldWidgetRange(t,!0);if(!a||a.isMultiLine()||!(d=this.getFoldAt(a.start.row,a.start.column,1))||!a.isEqual(d.range)){if(e.siblings){var s=this.getParentFoldRangeData(t);if(s.range)var c=s.range.start.row+1,o=s.range.end.row;this.foldAll(c,o,e.all?1e4:0)}else e.children?(o=a?a.end.row:this.getLength(),this.foldAll(t+1,o,e.all?1e4:0)):a&&(e.all&&(a.collapseChildren=1e4),this.addFold("...",a));return a}this.removeFold(d)}}},this.toggleFoldWidget=function(t){var e=this.selection.getCursor().row;e=this.getRowFoldStart(e);var l=this.$toggleFoldWidget(e,{});if(!l){var i=this.getParentFoldRangeData(e,!0);if(l=i.range||i.firstRange){e=l.start.row;var n=this.getFoldAt(e,this.getLine(e).length,1);n?this.removeFold(n):this.addFold("...",l)}}},this.updateFoldWidgets=function(t){var e=t.start.row,l=t.end.row-e;if(0===l)this.foldWidgets[e]=null;else if("remove"==t.action)this.foldWidgets.splice(e,l+1,null);else{var i=Array(l+1);i.unshift(e,1),this.foldWidgets.splice.apply(this.foldWidgets,i)}},this.tokenizerUpdateFoldWidgets=function(t){var e=t.data;e.first!=e.last&&this.foldWidgets.length>e.first&&this.foldWidgets.splice(e.first,this.foldWidgets.length)}}})),ace.define("ace/edit_session/bracket_match",["require","exports","module","ace/token_iterator","ace/range"],(function(t,e,l){"use strict";var i=t("../token_iterator").TokenIterator,n=t("../range").Range;e.BracketMatch=function(){this.findMatchingBracket=function(t,e){if(0==t.column)return null;var l=e||this.getLine(t.row).charAt(t.column-1);if(""==l)return null;var i=l.match(/([\(\[\{])|([\)\]\}])/);return i?i[1]?this.$findClosingBracket(i[1],t):this.$findOpeningBracket(i[2],t):null},this.getBracketRange=function(t){var e,l=this.getLine(t.row),i=!0,d=l.charAt(t.column-1),a=d&&d.match(/([\(\[\{])|([\)\]\}])/);if(a||(d=l.charAt(t.column),t={row:t.row,column:t.column+1},a=d&&d.match(/([\(\[\{])|([\)\]\}])/),i=!1),!a)return null;if(a[1]){if(!(s=this.$findClosingBracket(a[1],t)))return null;e=n.fromPoints(t,s),i||(e.end.column++,e.start.column--),e.cursor=e.end}else{var s;if(!(s=this.$findOpeningBracket(a[2],t)))return null;e=n.fromPoints(s,t),i||(e.start.column++,e.end.column--),e.cursor=e.start}return e},this.$brackets={")":"(","(":")","]":"[","[":"]","{":"}","}":"{"},this.$findOpeningBracket=function(t,e,l){var n=this.$brackets[t],d=1,a=new i(this,e.row,e.column),s=a.getCurrentToken();if(s||(s=a.stepForward()),s){l||(l=new RegExp("(\\.?"+s.type.replace(".","\\.").replace("rparen",".paren").replace(/\b(?:end)\b/,"(?:start|begin|end)")+")+"));for(var c=e.column-a.getCurrentTokenColumn()-2,o=s.value;;){for(;c>=0;){var b=o.charAt(c);if(b==n){if(0==(d-=1))return{row:a.getCurrentTokenRow(),column:c+a.getCurrentTokenColumn()}}else b==t&&(d+=1);c-=1}do{s=a.stepBackward()}while(s&&!l.test(s.type));if(null==s)break;c=(o=s.value).length-1}return null}},this.$findClosingBracket=function(t,e,l){var n=this.$brackets[t],d=1,a=new i(this,e.row,e.column),s=a.getCurrentToken();if(s||(s=a.stepForward()),s){l||(l=new RegExp("(\\.?"+s.type.replace(".","\\.").replace("lparen",".paren").replace(/\b(?:start|begin)\b/,"(?:start|begin|end)")+")+"));for(var c=e.column-a.getCurrentTokenColumn();;){for(var o=s.value,b=o.length;cl&&(this.$docRowCache.splice(l,e),this.$screenRowCache.splice(l,e))},this.$getRowCacheIndex=function(t,e){for(var l=0,i=t.length-1;l<=i;){var n=l+i>>1,d=t[n];if(e>d)l=n+1;else{if(!(e=e);d++);return(l=i[d])?(l.index=d,l.start=n-l.value.length,l):null},this.setUndoManager=function(t){if(this.$undoManager=t,this.$deltas=[],this.$deltasDoc=[],this.$deltasFold=[],this.$informUndoManager&&this.$informUndoManager.cancel(),t){var e=this;this.$syncInformUndoManager=function(){e.$informUndoManager.cancel(),e.$deltasFold.length&&(e.$deltas.push({group:"fold",deltas:e.$deltasFold}),e.$deltasFold=[]),e.$deltasDoc.length&&(e.$deltas.push({group:"doc",deltas:e.$deltasDoc}),e.$deltasDoc=[]),e.$deltas.length>0&&t.execute({action:"aceupdate",args:[e.$deltas,e],merge:e.mergeUndoDeltas}),e.mergeUndoDeltas=!1,e.$deltas=[]},this.$informUndoManager=n.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()?n.stringRepeat(" ",this.getTabSize()):"\t"},this.setUseSoftTabs=function(t){this.setOption("useSoftTabs",t)},this.getUseSoftTabs=function(){return this.$useSoftTabs&&!this.$mode.$indentWithTabs},this.setTabSize=function(t){this.setOption("tabSize",t)},this.getTabSize=function(){return this.$tabSize},this.isTabStop=function(t){return this.$useSoftTabs&&t.column%this.$tabSize==0},this.$overwrite=!1,this.setOverwrite=function(t){this.setOption("overwrite",t)},this.getOverwrite=function(){return this.$overwrite},this.toggleOverwrite=function(){this.setOverwrite(!this.$overwrite)},this.addGutterDecoration=function(t,e){this.$decorations[t]||(this.$decorations[t]=""),this.$decorations[t]+=" "+e,this._signal("changeBreakpoint",{})},this.removeGutterDecoration=function(t,e){this.$decorations[t]=(this.$decorations[t]||"").replace(" "+e,""),this._signal("changeBreakpoint",{})},this.getBreakpoints=function(){return this.$breakpoints},this.setBreakpoints=function(t){this.$breakpoints=[];for(var e=0;e0&&(i=!!l.charAt(e-1).match(this.tokenRe)),i||(i=!!l.charAt(e).match(this.tokenRe)),i)var n=this.tokenRe;else n=/^\s+$/.test(l.slice(e-1,e+1))?/\s/:this.nonTokenRe;var d=e;if(d>0){do{d--}while(d>=0&&l.charAt(d).match(n));d++}for(var a=e;at&&(t=e.screenWidth)})),this.lineWidgetWidth=t},this.$computeWidth=function(t){if(this.$modified||t){if(this.$modified=!1,this.$useWrapMode)return this.screenWidth=this.$wrapLimit;for(var e=this.doc.getAllLines(),l=this.$rowLengthCache,i=0,n=0,d=this.$foldData[n],a=d?d.start.row:1/0,s=e.length,c=0;ca){if((c=d.end.row+1)>=s)break;a=(d=this.$foldData[n++])?d.start.row:1/0}null==l[c]&&(l[c]=this.$getStringScreenWidth(e[c])[0]),l[c]>i&&(i=l[c])}this.screenWidth=i}},this.getLine=function(t){return this.doc.getLine(t)},this.getLines=function(t,e){return this.doc.getLines(t,e)},this.getLength=function(){return this.doc.getLength()},this.getTextRange=function(t){return this.doc.getTextRange(t||this.selection.getRange())},this.insert=function(t,e){return this.doc.insert(t,e)},this.remove=function(t){return this.doc.remove(t)},this.removeFullLines=function(t,e){return this.doc.removeFullLines(t,e)},this.undoChanges=function(t,e){if(t.length){this.$fromUndo=!0;for(var l=null,i=t.length-1;-1!=i;i--){var n=t[i];"doc"==n.group?(this.doc.revertDeltas(n.deltas),l=this.$getUndoSelection(n.deltas,!0,l)):n.deltas.forEach((function(t){this.addFolds(t.folds)}),this)}return this.$fromUndo=!1,l&&this.$undoSelect&&!e&&this.selection.setSelectionRange(l),l}},this.redoChanges=function(t,e){if(t.length){this.$fromUndo=!0;for(var l=null,i=0;it.end.column&&(d.start.column+=b),d.end.row==t.end.row&&d.end.column>t.end.column&&(d.end.column+=b)),a&&d.start.row>=t.end.row&&(d.start.row+=a,d.end.row+=a)}if(d.end=this.insert(d.start,i),n.length){var s=t.start,c=d.start,b=(a=c.row-s.row,c.column-s.column);this.addFolds(n.map((function(t){return(t=t.clone()).start.row==s.row&&(t.start.column+=b),t.end.row==s.row&&(t.end.column+=b),t.start.row+=a,t.end.row+=a,t})))}return d},this.indentRows=function(t,e,l){l=l.replace(/\t/g,this.getTabString());for(var i=t;i<=e;i++)this.doc.insertInLine({row:i,column:0},l)},this.outdentRows=function(t){for(var e=t.collapseRows(),l=new o(0,0,0,0),i=this.getTabSize(),n=e.start.row;n<=e.end.row;++n){var d=this.getLine(n);l.start.row=n,l.end.row=n;for(var a=0;a0){var n;if((n=this.getRowFoldEnd(e+l))>this.doc.getLength()-1)return 0;i=n-e}else t=this.$clipRowToDocument(t),i=(e=this.$clipRowToDocument(e))-t+1;var d=new o(t,0,e,Number.MAX_VALUE),a=this.getFoldsInRange(d).map((function(t){return(t=t.clone()).start.row+=i,t.end.row+=i,t})),s=0==l?this.doc.getLines(t,e):this.doc.removeFullLines(t,e);return this.doc.insertFullLines(t+i,s),a.length&&this.addFolds(a),i},this.moveLinesUp=function(t,e){return this.$moveLines(t,e,-1)},this.moveLinesDown=function(t,e){return this.$moveLines(t,e,1)},this.duplicateLines=function(t,e){return this.$moveLines(t,e,0)},this.$clipRowToDocument=function(t){return Math.max(0,Math.min(t,this.doc.getLength()-1))},this.$clipColumnToRow=function(t,e){return e<0?0:Math.min(this.doc.getLine(t).length,e)},this.$clipPositionToDocument=function(t,e){if(e=Math.max(0,e),t<0)t=0,e=0;else{var l=this.doc.getLength();t>=l?(t=l-1,e=this.doc.getLine(l-1).length):e=Math.min(this.doc.getLine(t).length,e)}return{row:t,column:e}},this.$clipRangeToDocument=function(t){t.start.row<0?(t.start.row=0,t.start.column=0):t.start.column=this.$clipColumnToRow(t.start.row,t.start.column);var e=this.doc.getLength()-1;return t.end.row>e?(t.end.row=e,t.end.column=this.doc.getLine(e).length):t.end.column=this.$clipColumnToRow(t.end.row,t.end.column),t},this.$wrapLimit=80,this.$useWrapMode=!1,this.$wrapLimitRange={min:null,max:null},this.setUseWrapMode=function(t){if(t!=this.$useWrapMode){if(this.$useWrapMode=t,this.$modified=!0,this.$resetRowCache(0),t){var e=this.getLength();this.$wrapData=Array(e),this.$updateWrapData(0,e-1)}this._signal("changeWrapMode")}},this.getUseWrapMode=function(){return this.$useWrapMode},this.setWrapLimitRange=function(t,e){this.$wrapLimitRange.min===t&&this.$wrapLimitRange.max===e||(this.$wrapLimitRange={min:t,max:e},this.$modified=!0,this.$useWrapMode&&this._signal("changeWrapMode"))},this.adjustWrapLimit=function(t,e){var l=this.$wrapLimitRange;l.max<0&&(l={min:e,max:e});var i=this.$constrainWrapLimit(t,l.min,l.max);return i!=this.$wrapLimit&&i>1&&(this.$wrapLimit=i,this.$modified=!0,this.$useWrapMode&&(this.$updateWrapData(0,this.getLength()-1),this.$resetRowCache(0),this._signal("changeWrapLimit")),!0)},this.$constrainWrapLimit=function(t,e,l){return e&&(t=Math.max(e,t)),l&&(t=Math.min(l,t)),t},this.getWrapLimit=function(){return this.$wrapLimit},this.setWrapLimit=function(t){this.setWrapLimitRange(t,t)},this.getWrapLimitRange=function(){return{min:this.$wrapLimitRange.min,max:this.$wrapLimitRange.max}},this.$updateInternalDataOnChange=function(t){var e=this.$useWrapMode,l=t.action,i=t.start,n=t.end,d=i.row,a=n.row,s=a-d,c=null;if(this.$updating=!0,0!=s)if("remove"===l){this[e?"$wrapData":"$rowLengthCache"].splice(d,s);var o=this.$foldData;c=this.getFoldsInRange(t),this.removeFolds(c);var b=0;if(W=this.getFoldLine(n.row)){W.addRemoveChars(n.row,n.column,i.column-n.column),W.shiftRow(-s);var r=this.getFoldLine(d);r&&r!==W&&(r.merge(W),W=r),b=o.indexOf(W)+1}for(;b=n.row&&W.shiftRow(-s);a=d}else{var m=Array(s);m.unshift(d,0);var Z=e?this.$wrapData:this.$rowLengthCache;if(Z.splice.apply(Z,m),o=this.$foldData,b=0,W=this.getFoldLine(d)){var g=W.range.compareInside(i.row,i.column);0==g?(W=W.split(i.row,i.column))&&(W.shiftRow(s),W.addRemoveChars(a,0,n.column-i.column)):-1==g&&(W.addRemoveChars(d,0,n.column-i.column),W.shiftRow(s)),b=o.indexOf(W)+1}for(;b=d&&W.shiftRow(s)}}else s=Math.abs(t.start.column-t.end.column),"remove"===l&&(c=this.getFoldsInRange(t),this.removeFolds(c),s=-s),(W=this.getFoldLine(d))&&W.addRemoveChars(d,i.column,s);return e&&this.$wrapData.length!=this.doc.getLength()&&console.error("doc.getLength() and $wrapData.length have to be the same!"),this.$updating=!1,e?this.$updateWrapData(d,a):this.$updateRowLengthCache(d,a),c},this.$updateRowLengthCache=function(t,e,l){this.$rowLengthCache[t]=null,this.$rowLengthCache[e]=null},this.$updateWrapData=function(l,i){var n,d,a=this.doc.getAllLines(),s=this.getTabSize(),c=this.$wrapData,o=this.$wrapLimit,b=l;for(i=Math.min(i,a.length-1);b<=i;)(d=this.getFoldLine(b,d))?(n=[],d.walk(function(l,i,d,s){var c;if(null!=l){(c=this.$getDisplayTokens(l,n.length))[0]=t;for(var o=1;o=4352&&t<=4447||t>=4515&&t<=4519||t>=4602&&t<=4607||t>=9001&&t<=9002||t>=11904&&t<=11929||t>=11931&&t<=12019||t>=12032&&t<=12245||t>=12272&&t<=12283||t>=12288&&t<=12350||t>=12353&&t<=12438||t>=12441&&t<=12543||t>=12549&&t<=12589||t>=12593&&t<=12686||t>=12688&&t<=12730||t>=12736&&t<=12771||t>=12784&&t<=12830||t>=12832&&t<=12871||t>=12880&&t<=13054||t>=13056&&t<=19903||t>=19968&&t<=42124||t>=42128&&t<=42182||t>=43360&&t<=43388||t>=44032&&t<=55203||t>=55216&&t<=55238||t>=55243&&t<=55291||t>=63744&&t<=64255||t>=65040&&t<=65049||t>=65072&&t<=65106||t>=65108&&t<=65126||t>=65128&&t<=65131||t>=65281&&t<=65376||t>=65504&&t<=65510)}this.$computeWrapSplits=function(l,i,n){if(0==l.length)return[];var d=[],a=l.length,s=0,c=0,o=this.$wrapAsCode,b=this.$indentedSoftWrap,r=i<=Math.max(2*n,8)||!1===b?0:Math.floor(i/2);function m(t){var e=l.slice(s,t),i=e.length;e.join("").replace(/12/g,(function(){i-=1})).replace(/2/g,(function(){i-=1})),d.length||(Z=function(){var t=0;if(0===r)return t;if(b)for(var e=0;ei-Z;){var g=s+i-Z;if(l[g-1]>=10&&l[g]>=10)m(g);else if(l[g]!=t&&l[g]!=e){for(var W=Math.max(g-(i-(i>>2)),s-1);g>W&&l[g]W&&l[g]W&&9==l[g];)g--}else for(;g>W&&l[g]<10;)g--;g>W?m(++g):(2==l[g=s+i]&&g--,m(g-Z))}else{for(;g!=s-1&&l[g]!=t;g--);if(g>s){m(g);continue}for(g=s+i;g39&&a<48||a>57&&a<64?n.push(9):a>=4352&&l(a)?n.push(1,2):n.push(1)}return n},this.$getStringScreenWidth=function(t,e,i){if(0==e)return[0,0];var n,d;for(null==e&&(e=1/0),i=i||0,d=0;d=4352&&l(n)?i+=2:i+=1,!(i>e));d++);return[i,d]},this.lineWidgets=null,this.getRowLength=function(t){if(this.lineWidgets)var e=this.lineWidgets[t]&&this.lineWidgets[t].rowCount||0;else e=0;return this.$useWrapMode&&this.$wrapData[t]?this.$wrapData[t].length+1+e:1+e},this.getRowLineCount=function(t){return this.$useWrapMode&&this.$wrapData[t]?this.$wrapData[t].length+1:1},this.getRowWrapIndent=function(t){if(this.$useWrapMode){var e=this.screenToDocumentPosition(t,Number.MAX_VALUE),l=this.$wrapData[e.row];return l.length&&l[0]=0){a=c[o],n=this.$docRowCache[o];var r=t>c[b-1]}else r=!b;for(var m=this.getLength()-1,Z=this.getNextFoldLine(n),g=Z?Z.start.row:1/0;a<=t&&!(a+(s=this.getRowLength(n))>t||n>=m);)a+=s,++n>g&&(n=Z.end.row+1,g=(Z=this.getNextFoldLine(n,Z))?Z.start.row:1/0),r&&(this.$docRowCache.push(n),this.$screenRowCache.push(a));if(Z&&Z.start.row<=n)l=this.getFoldDisplayLine(Z),n=Z.start.row;else{if(a+s<=t||n>m)return{row:m,column:this.getLine(m).length};l=this.getLine(n),Z=null}var W=0;if(this.$useWrapMode){var h=this.$wrapData[n];if(h){var N=Math.floor(t-a);i=h[N],N>0&&h.length&&(W=h.indent,d=h[N-1]||h[h.length-1],l=l.substring(d))}}return d+=this.$getStringScreenWidth(l,e-W)[1],this.$useWrapMode&&d>=i&&(d=i-1),Z?Z.idxToPosition(d):{row:n,column:d}},this.documentToScreenPosition=function(t,e){if(void 0===e)var l=this.$clipPositionToDocument(t.row,t.column);else l=this.$clipPositionToDocument(t,e);t=l.row,e=l.column;var i,n=0,d=null;(i=this.getFoldAt(t,e,1))&&(t=i.start.row,e=i.start.column);var a,s=0,c=this.$docRowCache,o=this.$getRowCacheIndex(c,t),b=c.length;if(b&&o>=0){s=c[o],n=this.$screenRowCache[o];var r=t>c[b-1]}else r=!b;for(var m=this.getNextFoldLine(s),Z=m?m.start.row:1/0;s=Z){if((a=m.end.row+1)>t)break;Z=(m=this.getNextFoldLine(a,m))?m.start.row:1/0}else a=s+1;n+=this.getRowLength(s),s=a,r&&(this.$docRowCache.push(s),this.$screenRowCache.push(n))}var g="";m&&s>=Z?(g=this.getFoldDisplayLine(m,t,e),d=m.start.row):(g=this.getLine(t).substring(0,e),d=t);var W=0;if(this.$useWrapMode){var h=this.$wrapData[d];if(h){for(var N=0;g.length>=h[N];)n++,N++;g=g.substring(h[N-1]||0,g.length),W=N>0?h.indent:0}}return{row:n,column:W+this.$getStringScreenWidth(g)[0]}},this.documentToScreenColumn=function(t,e){return this.documentToScreenPosition(t,e).column},this.documentToScreenRow=function(t,e){return this.documentToScreenPosition(t,e).row},this.getScreenLength=function(){var t=0,e=null;if(this.$useWrapMode)for(var l=this.$wrapData.length,i=0,n=(s=0,(e=this.$foldData[s++])?e.start.row:1/0);in&&(i=e.end.row+1,n=(e=this.$foldData[s++])?e.start.row:1/0)}else{t=this.getLength();for(var a=this.$foldData,s=0;sl);d++);return[i,d]})},this.destroy=function(){this.bgTokenizer&&(this.bgTokenizer.setDocument(null),this.bgTokenizer=null),this.$stopWorker()}}).call(Z.prototype),t("./edit_session/folding").Folding.call(Z.prototype),t("./edit_session/bracket_match").BracketMatch.call(Z.prototype),d.defineOptions(Z.prototype,"session",{wrap:{set:function(t){if(t&&"off"!=t?"free"==t?t=!0:"printMargin"==t?t=-1:"string"==typeof t&&(t=parseInt(t,10)||!1):t=!1,this.$wrap!=t)if(this.$wrap=t,t){var e="number"==typeof t?t:null;this.setWrapLimitRange(e,e),this.setUseWrapMode(!0)}else this.setUseWrapMode(!1)},get:function(){return this.getUseWrapMode()?-1==this.$wrap?"printMargin":this.getWrapLimitRange().min?this.$wrap:"free":"off"},handlesSet:!0},wrapMethod:{set:function(t){(t="auto"==t?"text"!=this.$mode.type:"text"!=t)!=this.$wrapAsCode&&(this.$wrapAsCode=t,this.$useWrapMode&&(this.$modified=!0,this.$resetRowCache(0),this.$updateWrapData(0,this.getLength()-1)))},initialValue:"auto"},indentedSoftWrap:{initialValue:!0},firstLineNumber:{set:function(){this._signal("changeBreakpoint")},initialValue:1},useWorker:{set:function(t){this.$useWorker=t,this.$stopWorker(),t&&this.$startWorker()},initialValue:!0},useSoftTabs:{initialValue:!0},tabSize:{set:function(t){isNaN(t)||this.$tabSize===t||(this.$modified=!0,this.$rowLengthCache=[],this.$tabSize=t,this._signal("changeTabSize"))},initialValue:4,handlesSet:!0},overwrite:{set:function(t){this._signal("changeOverwrite")},initialValue:!1},newLineMode:{set:function(t){this.doc.setNewLineMode(t)},get:function(){return this.doc.getNewLineMode()},handlesSet:!0},mode:{set:function(t){this.setMode(t)},get:function(){return this.$modeId}}}),e.EditSession=Z})),ace.define("ace/search",["require","exports","module","ace/lib/lang","ace/lib/oop","ace/range"],(function(t,e,l){"use strict";var i=t("./lib/lang"),n=t("./lib/oop"),d=t("./range").Range,a=function(){this.$options={}};(function(){this.set=function(t){return n.mixin(this.$options,t),this},this.getOptions=function(){return i.copyObject(this.$options)},this.setOptions=function(t){this.$options=t},this.find=function(t){var e=this.$options,l=this.$matchIterator(t,e);if(!l)return!1;var i=null;return l.forEach((function(t,l,n){if(t.start)i=t;else{var a=t.offset+(n||0);if(i=new d(l,a,l,a+t.length),!t.length&&e.start&&e.start.start&&0!=e.skipCurrent&&i.isEqual(e.start))return i=null,!1}return!0})),i},this.findAll=function(t){var e=this.$options;if(!e.needle)return[];this.$assembleRegExp(e);var l=e.range,n=l?t.getLines(l.start.row,l.end.row):t.doc.getAllLines(),a=[],s=e.re;if(e.$isMultiLine){var c,o=s.length,b=n.length-o;t:for(var r=s.offset||0;r<=b;r++){for(var m=0;mW||(a.push(c=new d(r,W,r+o-1,h)),o>2&&(r=r+o-2))}}else for(var N=0;NM&&a[m].end.row==l.end.row;)m--;for(a=a.slice(N,m+1),N=0,m=a.length;N=0;s--)if(l(a[s],e,d))return!0}:function(t,e,d){for(var a=i.getMatchOffsets(t,n),s=0;s=a;i--)if(l(t.getLine(i),i))return;if(0!=e.wrap)for(i=s,a=d.row;i>=a;i--)if(l(t.getLine(i),i))return}}:function(l){var i=d.row;if(!l(t.getLine(i).substr(d.column),i,d.column)){for(i+=1;i<=s;i++)if(l(t.getLine(i),i))return;if(0!=e.wrap)for(i=a,s=d.row;i<=s;i++)if(l(t.getLine(i),i))return}}}}}).call(a.prototype),e.Search=a})),ace.define("ace/keyboard/hash_handler",["require","exports","module","ace/lib/keys","ace/lib/useragent"],(function(t,e,l){"use strict";var i=t("../lib/keys"),n=t("../lib/useragent"),d=i.KEY_MODS;function a(t,e){this.platform=e||(n.isMac?"mac":"win"),this.commands={},this.commandKeyBinding={},this.addCommands(t),this.$singleCommand=!0}function s(t,e){a.call(this,t,e),this.$singleCommand=!1}s.prototype=a.prototype,function(){function t(t){return"object"==typeof t&&t.bindKey&&t.bindKey.position||0}this.addCommand=function(t){this.commands[t.name]&&this.removeCommand(t),this.commands[t.name]=t,t.bindKey&&this._buildKeyHash(t)},this.removeCommand=function(t,e){var l=t&&("string"==typeof t?t:t.name);t=this.commands[l],e||delete this.commands[l];var i=this.commandKeyBinding;for(var n in i){var d=i[n];if(d==t)delete i[n];else if(Array.isArray(d)){var a=d.indexOf(t);-1!=a&&(d.splice(a,1),1==d.length&&(i[n]=d[0]))}}},this.bindKey=function(t,e,l){if("object"==typeof t&&t&&(null==l&&(l=t.position),t=t[this.platform]),t)return"function"==typeof e?this.addCommand({exec:e,bindKey:t,name:e.name||t}):void t.split("|").forEach((function(t){var i="";if(-1!=t.indexOf(" ")){var n=t.split(/\s+/);t=n.pop(),n.forEach((function(t){var e=this.parseKeys(t),l=d[e.hashId]+e.key;i+=(i?" ":"")+l,this._addCommandToBinding(i,"chainKeys")}),this),i+=" "}var a=this.parseKeys(t),s=d[a.hashId]+a.key;this._addCommandToBinding(i+s,e,l)}),this)},this._addCommandToBinding=function(e,l,i){var n,d=this.commandKeyBinding;if(l)if(!d[e]||this.$singleCommand)d[e]=l;else{Array.isArray(d[e])?-1!=(n=d[e].indexOf(l))&&d[e].splice(n,1):d[e]=[d[e]],"number"!=typeof i&&(i=i||l.isDefault?-100:t(l));var a=d[e];for(n=0;ni);n++);a.splice(n,0,l)}else delete d[e]},this.addCommands=function(t){t&&Object.keys(t).forEach((function(e){var l=t[e];if(l){if("string"==typeof l)return this.bindKey(l,e);"function"==typeof l&&(l={exec:l}),"object"==typeof l&&(l.name||(l.name=e),this.addCommand(l))}}),this)},this.removeCommands=function(t){Object.keys(t).forEach((function(e){this.removeCommand(t[e])}),this)},this.bindKeys=function(t){Object.keys(t).forEach((function(e){this.bindKey(e,t[e])}),this)},this._buildKeyHash=function(t){this.bindKey(t.bindKey,t)},this.parseKeys=function(t){var e=t.toLowerCase().split(/[\-\+]([\-\+])?/).filter((function(t){return t})),l=e.pop(),n=i[l];if(i.FUNCTION_KEYS[n])l=i.FUNCTION_KEYS[n].toLowerCase();else{if(!e.length)return{key:l,hashId:-1};if(1==e.length&&"shift"==e[0])return{key:l.toUpperCase(),hashId:-1}}for(var d=0,a=e.length;a--;){var s=i.KEY_MODS[e[a]];if(null==s)return"undefined"!=typeof console&&console.error("invalid modifier "+e[a]+" in "+t),!1;d|=s}return{key:l,hashId:d}},this.findKeyCommand=function(t,e){var l=d[t]+e;return this.commandKeyBinding[l]},this.handleKeyboard=function(t,e,l,i){if(!(i<0)){var n=d[e]+l,a=this.commandKeyBinding[n];return t.$keyChain&&(t.$keyChain+=" "+n,a=this.commandKeyBinding[t.$keyChain]||a),!a||"chainKeys"!=a&&"chainKeys"!=a[a.length-1]?(t.$keyChain&&(e&&4!=e||1!=l.length?(-1==e||i>0)&&(t.$keyChain=""):t.$keyChain=t.$keyChain.slice(0,-n.length-1)),{command:a}):(t.$keyChain=t.$keyChain||n,{command:"null"})}},this.getStatusText=function(t,e){return e.$keyChain||""}}.call(a.prototype),e.HashHandler=a,e.MultiHashHandler=s})),ace.define("ace/commands/command_manager",["require","exports","module","ace/lib/oop","ace/keyboard/hash_handler","ace/lib/event_emitter"],(function(t,e,l){"use strict";var i=t("../lib/oop"),n=t("../keyboard/hash_handler").MultiHashHandler,d=t("../lib/event_emitter").EventEmitter,a=function(t,e){n.call(this,e,t),this.byName=this.commands,this.setDefaultHandler("exec",(function(t){return t.command.exec(t.editor,t.args||{})}))};i.inherits(a,n),function(){i.implement(this,d),this.exec=function(t,e,l){if(Array.isArray(t)){for(var i=t.length;i--;)if(this.exec(t[i],e,l))return!0;return!1}if("string"==typeof t&&(t=this.commands[t]),!t)return!1;if(e&&e.$readOnly&&!t.readOnly)return!1;var n={editor:e,command:t,args:l};return n.returnValue=this._emit("exec",n),this._signal("afterExec",n),!1!==n.returnValue},this.toggleRecording=function(t){if(!this.$inReplay)return t&&t._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(t){this.macro.push([t.command,t.args])}.bind(this)),this.oldMacro=this.macro,this.macro=[],this.on("exec",this.$addCommandToMacro),this.recording=!0)},this.replay=function(t){if(!this.$inReplay&&this.macro){if(this.recording)return this.toggleRecording(t);try{this.$inReplay=!0,this.macro.forEach((function(e){"string"==typeof e?this.exec(e,t):this.exec(e[0],t,e[1])}),this)}finally{this.$inReplay=!1}}},this.trimMacro=function(t){return t.map((function(t){return"string"!=typeof t[0]&&(t[0]=t[0].name),t[1]||(t=t[0]),t}))}}.call(a.prototype),e.CommandManager=a})),ace.define("ace/commands/default_commands",["require","exports","module","ace/lib/lang","ace/config","ace/range"],(function(t,e,l){"use strict";var i=t("../lib/lang"),n=t("../config"),d=t("../range").Range;function a(t,e){return{win:t,mac:e}}e.commands=[{name:"showSettingsMenu",bindKey:a("Ctrl-,","Command-,"),exec:function(t){n.loadModule("ace/ext/settings_menu",(function(e){e.init(t),t.showSettingsMenu()}))},readOnly:!0},{name:"goToNextError",bindKey:a("Alt-E","Ctrl-E"),exec:function(t){n.loadModule("ace/ext/error_marker",(function(e){e.showErrorMarker(t,1)}))},scrollIntoView:"animate",readOnly:!0},{name:"goToPreviousError",bindKey:a("Alt-Shift-E","Ctrl-Shift-E"),exec:function(t){n.loadModule("ace/ext/error_marker",(function(e){e.showErrorMarker(t,-1)}))},scrollIntoView:"animate",readOnly:!0},{name:"selectall",bindKey:a("Ctrl-A","Command-A"),exec:function(t){t.selectAll()},readOnly:!0},{name:"centerselection",bindKey:a(null,"Ctrl-L"),exec:function(t){t.centerSelection()},readOnly:!0},{name:"gotoline",bindKey:a("Ctrl-L","Command-L"),exec:function(t){var e=parseInt(prompt("Enter line number:"),10);isNaN(e)||t.gotoLine(e)},readOnly:!0},{name:"fold",bindKey:a("Alt-L|Ctrl-F1","Command-Alt-L|Command-F1"),exec:function(t){t.session.toggleFold(!1)},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"unfold",bindKey:a("Alt-Shift-L|Ctrl-Shift-F1","Command-Alt-Shift-L|Command-Shift-F1"),exec:function(t){t.session.toggleFold(!0)},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"toggleFoldWidget",bindKey:a("F2","F2"),exec:function(t){t.session.toggleFoldWidget()},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"toggleParentFoldWidget",bindKey:a("Alt-F2","Alt-F2"),exec:function(t){t.session.toggleFoldWidget(!0)},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"foldall",bindKey:a(null,"Ctrl-Command-Option-0"),exec:function(t){t.session.foldAll()},scrollIntoView:"center",readOnly:!0},{name:"foldOther",bindKey:a("Alt-0","Command-Option-0"),exec:function(t){t.session.foldAll(),t.session.unfold(t.selection.getAllRanges())},scrollIntoView:"center",readOnly:!0},{name:"unfoldall",bindKey:a("Alt-Shift-0","Command-Option-Shift-0"),exec:function(t){t.session.unfold()},scrollIntoView:"center",readOnly:!0},{name:"findnext",bindKey:a("Ctrl-K","Command-G"),exec:function(t){t.findNext()},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"findprevious",bindKey:a("Ctrl-Shift-K","Command-Shift-G"),exec:function(t){t.findPrevious()},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"selectOrFindNext",bindKey:a("Alt-K","Ctrl-G"),exec:function(t){t.selection.isEmpty()?t.selection.selectWord():t.findNext()},readOnly:!0},{name:"selectOrFindPrevious",bindKey:a("Alt-Shift-K","Ctrl-Shift-G"),exec:function(t){t.selection.isEmpty()?t.selection.selectWord():t.findPrevious()},readOnly:!0},{name:"find",bindKey:a("Ctrl-F","Command-F"),exec:function(t){n.loadModule("ace/ext/searchbox",(function(e){e.Search(t)}))},readOnly:!0},{name:"overwrite",bindKey:"Insert",exec:function(t){t.toggleOverwrite()},readOnly:!0},{name:"selecttostart",bindKey:a("Ctrl-Shift-Home","Command-Shift-Up"),exec:function(t){t.getSelection().selectFileStart()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"gotostart",bindKey:a("Ctrl-Home","Command-Home|Command-Up"),exec:function(t){t.navigateFileStart()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"selectup",bindKey:a("Shift-Up","Shift-Up"),exec:function(t){t.getSelection().selectUp()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"golineup",bindKey:a("Up","Up|Ctrl-P"),exec:function(t,e){t.navigateUp(e.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selecttoend",bindKey:a("Ctrl-Shift-End","Command-Shift-Down"),exec:function(t){t.getSelection().selectFileEnd()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"gotoend",bindKey:a("Ctrl-End","Command-End|Command-Down"),exec:function(t){t.navigateFileEnd()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"selectdown",bindKey:a("Shift-Down","Shift-Down"),exec:function(t){t.getSelection().selectDown()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"golinedown",bindKey:a("Down","Down|Ctrl-N"),exec:function(t,e){t.navigateDown(e.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectwordleft",bindKey:a("Ctrl-Shift-Left","Option-Shift-Left"),exec:function(t){t.getSelection().selectWordLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotowordleft",bindKey:a("Ctrl-Left","Option-Left"),exec:function(t){t.navigateWordLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selecttolinestart",bindKey:a("Alt-Shift-Left","Command-Shift-Left"),exec:function(t){t.getSelection().selectLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotolinestart",bindKey:a("Alt-Left|Home","Command-Left|Home|Ctrl-A"),exec:function(t){t.navigateLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectleft",bindKey:a("Shift-Left","Shift-Left"),exec:function(t){t.getSelection().selectLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotoleft",bindKey:a("Left","Left|Ctrl-B"),exec:function(t,e){t.navigateLeft(e.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectwordright",bindKey:a("Ctrl-Shift-Right","Option-Shift-Right"),exec:function(t){t.getSelection().selectWordRight()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotowordright",bindKey:a("Ctrl-Right","Option-Right"),exec:function(t){t.navigateWordRight()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selecttolineend",bindKey:a("Alt-Shift-Right","Command-Shift-Right"),exec:function(t){t.getSelection().selectLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotolineend",bindKey:a("Alt-Right|End","Command-Right|End|Ctrl-E"),exec:function(t){t.navigateLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectright",bindKey:a("Shift-Right","Shift-Right"),exec:function(t){t.getSelection().selectRight()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotoright",bindKey:a("Right","Right|Ctrl-F"),exec:function(t,e){t.navigateRight(e.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectpagedown",bindKey:"Shift-PageDown",exec:function(t){t.selectPageDown()},readOnly:!0},{name:"pagedown",bindKey:a(null,"Option-PageDown"),exec:function(t){t.scrollPageDown()},readOnly:!0},{name:"gotopagedown",bindKey:a("PageDown","PageDown|Ctrl-V"),exec:function(t){t.gotoPageDown()},readOnly:!0},{name:"selectpageup",bindKey:"Shift-PageUp",exec:function(t){t.selectPageUp()},readOnly:!0},{name:"pageup",bindKey:a(null,"Option-PageUp"),exec:function(t){t.scrollPageUp()},readOnly:!0},{name:"gotopageup",bindKey:"PageUp",exec:function(t){t.gotoPageUp()},readOnly:!0},{name:"scrollup",bindKey:a("Ctrl-Up",null),exec:function(t){t.renderer.scrollBy(0,-2*t.renderer.layerConfig.lineHeight)},readOnly:!0},{name:"scrolldown",bindKey:a("Ctrl-Down",null),exec:function(t){t.renderer.scrollBy(0,2*t.renderer.layerConfig.lineHeight)},readOnly:!0},{name:"selectlinestart",bindKey:"Shift-Home",exec:function(t){t.getSelection().selectLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectlineend",bindKey:"Shift-End",exec:function(t){t.getSelection().selectLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"togglerecording",bindKey:a("Ctrl-Alt-E","Command-Option-E"),exec:function(t){t.commands.toggleRecording(t)},readOnly:!0},{name:"replaymacro",bindKey:a("Ctrl-Shift-E","Command-Shift-E"),exec:function(t){t.commands.replay(t)},readOnly:!0},{name:"jumptomatching",bindKey:a("Ctrl-P","Ctrl-P"),exec:function(t){t.jumpToMatching()},multiSelectAction:"forEach",scrollIntoView:"animate",readOnly:!0},{name:"selecttomatching",bindKey:a("Ctrl-Shift-P","Ctrl-Shift-P"),exec:function(t){t.jumpToMatching(!0)},multiSelectAction:"forEach",scrollIntoView:"animate",readOnly:!0},{name:"expandToMatching",bindKey:a("Ctrl-Shift-M","Ctrl-Shift-M"),exec:function(t){t.jumpToMatching(!0,!0)},multiSelectAction:"forEach",scrollIntoView:"animate",readOnly:!0},{name:"passKeysToBrowser",bindKey:a(null,null),exec:function(){},passEvent:!0,readOnly:!0},{name:"copy",exec:function(t){},readOnly:!0},{name:"cut",exec:function(t){var e=t.getSelectionRange();t._emit("cut",e),t.selection.isEmpty()||(t.session.remove(e),t.clearSelection())},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"paste",exec:function(t,e){t.$handlePaste(e)},scrollIntoView:"cursor"},{name:"removeline",bindKey:a("Ctrl-D","Command-D"),exec:function(t){t.removeLines()},scrollIntoView:"cursor",multiSelectAction:"forEachLine"},{name:"duplicateSelection",bindKey:a("Ctrl-Shift-D","Command-Shift-D"),exec:function(t){t.duplicateSelection()},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"sortlines",bindKey:a("Ctrl-Alt-S","Command-Alt-S"),exec:function(t){t.sortLines()},scrollIntoView:"selection",multiSelectAction:"forEachLine"},{name:"togglecomment",bindKey:a("Ctrl-/","Command-/"),exec:function(t){t.toggleCommentLines()},multiSelectAction:"forEachLine",scrollIntoView:"selectionPart"},{name:"toggleBlockComment",bindKey:a("Ctrl-Shift-/","Command-Shift-/"),exec:function(t){t.toggleBlockComment()},multiSelectAction:"forEach",scrollIntoView:"selectionPart"},{name:"modifyNumberUp",bindKey:a("Ctrl-Shift-Up","Alt-Shift-Up"),exec:function(t){t.modifyNumber(1)},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"modifyNumberDown",bindKey:a("Ctrl-Shift-Down","Alt-Shift-Down"),exec:function(t){t.modifyNumber(-1)},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"replace",bindKey:a("Ctrl-H","Command-Option-F"),exec:function(t){n.loadModule("ace/ext/searchbox",(function(e){e.Search(t,!0)}))}},{name:"undo",bindKey:a("Ctrl-Z","Command-Z"),exec:function(t){t.undo()}},{name:"redo",bindKey:a("Ctrl-Shift-Z|Ctrl-Y","Command-Shift-Z|Command-Y"),exec:function(t){t.redo()}},{name:"copylinesup",bindKey:a("Alt-Shift-Up","Command-Option-Up"),exec:function(t){t.copyLinesUp()},scrollIntoView:"cursor"},{name:"movelinesup",bindKey:a("Alt-Up","Option-Up"),exec:function(t){t.moveLinesUp()},scrollIntoView:"cursor"},{name:"copylinesdown",bindKey:a("Alt-Shift-Down","Command-Option-Down"),exec:function(t){t.copyLinesDown()},scrollIntoView:"cursor"},{name:"movelinesdown",bindKey:a("Alt-Down","Option-Down"),exec:function(t){t.moveLinesDown()},scrollIntoView:"cursor"},{name:"del",bindKey:a("Delete","Delete|Ctrl-D|Shift-Delete"),exec:function(t){t.remove("right")},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"backspace",bindKey:a("Shift-Backspace|Backspace","Ctrl-Backspace|Shift-Backspace|Backspace|Ctrl-H"),exec:function(t){t.remove("left")},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"cut_or_delete",bindKey:a("Shift-Delete",null),exec:function(t){if(!t.selection.isEmpty())return!1;t.remove("left")},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removetolinestart",bindKey:a("Alt-Backspace","Command-Backspace"),exec:function(t){t.removeToLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removetolineend",bindKey:a("Alt-Delete","Ctrl-K"),exec:function(t){t.removeToLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removewordleft",bindKey:a("Ctrl-Backspace","Alt-Backspace|Ctrl-Alt-Backspace"),exec:function(t){t.removeWordLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removewordright",bindKey:a("Ctrl-Delete","Alt-Delete"),exec:function(t){t.removeWordRight()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"outdent",bindKey:a("Shift-Tab","Shift-Tab"),exec:function(t){t.blockOutdent()},multiSelectAction:"forEach",scrollIntoView:"selectionPart"},{name:"indent",bindKey:a("Tab","Tab"),exec:function(t){t.indent()},multiSelectAction:"forEach",scrollIntoView:"selectionPart"},{name:"blockoutdent",bindKey:a("Ctrl-[","Ctrl-["),exec:function(t){t.blockOutdent()},multiSelectAction:"forEachLine",scrollIntoView:"selectionPart"},{name:"blockindent",bindKey:a("Ctrl-]","Ctrl-]"),exec:function(t){t.blockIndent()},multiSelectAction:"forEachLine",scrollIntoView:"selectionPart"},{name:"insertstring",exec:function(t,e){t.insert(e)},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"inserttext",exec:function(t,e){t.insert(i.stringRepeat(e.text||"",e.times||1))},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"splitline",bindKey:a(null,"Ctrl-O"),exec:function(t){t.splitLine()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"transposeletters",bindKey:a("Ctrl-T","Ctrl-T"),exec:function(t){t.transposeLetters()},multiSelectAction:function(t){t.transposeSelections(1)},scrollIntoView:"cursor"},{name:"touppercase",bindKey:a("Ctrl-U","Ctrl-U"),exec:function(t){t.toUpperCase()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"tolowercase",bindKey:a("Ctrl-Shift-U","Ctrl-Shift-U"),exec:function(t){t.toLowerCase()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"expandtoline",bindKey:a("Ctrl-Shift-L","Command-Shift-L"),exec:function(t){var e=t.selection.getRange();e.start.column=e.end.column=0,e.end.row++,t.selection.setRange(e,!1)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"joinlines",bindKey:a(null,null),exec:function(t){for(var e=t.selection.isBackwards(),l=e?t.selection.getSelectionLead():t.selection.getSelectionAnchor(),n=e?t.selection.getSelectionAnchor():t.selection.getSelectionLead(),a=t.session.doc.getLine(l.row).length,s=t.session.doc.getTextRange(t.selection.getRange()).replace(/\n\s*/," ").length,c=t.session.doc.getLine(l.row),o=l.row+1;o<=n.row+1;o++){var b=i.stringTrimLeft(i.stringTrimRight(t.session.doc.getLine(o)));0!==b.length&&(b=" "+b),c+=b}n.row+10?(t.selection.moveCursorTo(l.row,l.column),t.selection.selectTo(l.row,l.column+s)):(a=t.session.doc.getLine(l.row).length>a?a+1:a,t.selection.moveCursorTo(l.row,a))},multiSelectAction:"forEach",readOnly:!0},{name:"invertSelection",bindKey:a(null,null),exec:function(t){var e=t.session.doc.getLength()-1,l=t.session.doc.getLine(e).length,i=t.selection.rangeList.ranges,n=[];i.length<1&&(i=[t.selection.getRange()]);for(var a=0;a0&&this.$blockScrolling--;var l=e&&e.scrollIntoView;if(l){switch(l){case"center-animate":l="animate";case"center":this.renderer.scrollCursorIntoView(null,.5);break;case"animate":case"cursor":this.renderer.scrollCursorIntoView();break;case"selectionPart":var i=this.selection.getRange(),n=this.renderer.layerConfig;(i.start.row>=n.lastRow||i.end.row<=n.firstRow)&&this.renderer.scrollSelectionIntoView(this.selection.anchor,this.selection.lead)}"animate"==l&&this.renderer.animateScrolling(this.curOp.scrollTop)}this.prevOp=this.curOp,this.curOp=null}},this.$mergeableCommands=["backspace","del","insertstring"],this.$historyTracker=function(t){if(this.$mergeUndoDeltas){var e=this.prevOp,l=this.$mergeableCommands,i=e.command&&t.command.name==e.command.name;if("insertstring"==t.command.name){var n=t.args;void 0===this.mergeNextCommand&&(this.mergeNextCommand=!0),i=i&&this.mergeNextCommand&&(!/\s/.test(n)||/\s/.test(e.args)),this.mergeNextCommand=!0}else i=i&&-1!==l.indexOf(t.command.name);"always"!=this.$mergeUndoDeltas&&Date.now()-this.sequenceStartTime>2e3&&(i=!1),i?this.session.mergeUndoDeltas=!0:-1!==l.indexOf(t.command.name)&&(this.sequenceStartTime=Date.now())}},this.setKeyboardHandler=function(t,e){if(t&&"string"==typeof t){this.$keybindingId=t;var l=this;N.loadModule(["keybinding",t],(function(i){l.$keybindingId==t&&l.keyBinding.setKeyboardHandler(i&&i.handler),e&&e()}))}else this.$keybindingId=null,this.keyBinding.setKeyboardHandler(t),e&&e()},this.getKeyboardHandler=function(){return this.keyBinding.getKeyboardHandler()},this.setSession=function(t){if(this.session!=t){this.curOp&&this.endOperation(),this.curOp={};var e=this.session;if(e){this.session.off("change",this.$onDocumentChange),this.session.off("changeMode",this.$onChangeMode),this.session.off("tokenizerUpdate",this.$onTokenizerUpdate),this.session.off("changeTabSize",this.$onChangeTabSize),this.session.off("changeWrapLimit",this.$onChangeWrapLimit),this.session.off("changeWrapMode",this.$onChangeWrapMode),this.session.off("changeFold",this.$onChangeFold),this.session.off("changeFrontMarker",this.$onChangeFrontMarker),this.session.off("changeBackMarker",this.$onChangeBackMarker),this.session.off("changeBreakpoint",this.$onChangeBreakpoint),this.session.off("changeAnnotation",this.$onChangeAnnotation),this.session.off("changeOverwrite",this.$onCursorChange),this.session.off("changeScrollTop",this.$onScrollTopChange),this.session.off("changeScrollLeft",this.$onScrollLeftChange);var l=this.session.getSelection();l.off("changeCursor",this.$onCursorChange),l.off("changeSelection",this.$onSelectionChange)}this.session=t,t?(this.$onDocumentChange=this.onDocumentChange.bind(this),t.on("change",this.$onDocumentChange),this.renderer.setSession(t),this.$onChangeMode=this.onChangeMode.bind(this),t.on("changeMode",this.$onChangeMode),this.$onTokenizerUpdate=this.onTokenizerUpdate.bind(this),t.on("tokenizerUpdate",this.$onTokenizerUpdate),this.$onChangeTabSize=this.renderer.onChangeTabSize.bind(this.renderer),t.on("changeTabSize",this.$onChangeTabSize),this.$onChangeWrapLimit=this.onChangeWrapLimit.bind(this),t.on("changeWrapLimit",this.$onChangeWrapLimit),this.$onChangeWrapMode=this.onChangeWrapMode.bind(this),t.on("changeWrapMode",this.$onChangeWrapMode),this.$onChangeFold=this.onChangeFold.bind(this),t.on("changeFold",this.$onChangeFold),this.$onChangeFrontMarker=this.onChangeFrontMarker.bind(this),this.session.on("changeFrontMarker",this.$onChangeFrontMarker),this.$onChangeBackMarker=this.onChangeBackMarker.bind(this),this.session.on("changeBackMarker",this.$onChangeBackMarker),this.$onChangeBreakpoint=this.onChangeBreakpoint.bind(this),this.session.on("changeBreakpoint",this.$onChangeBreakpoint),this.$onChangeAnnotation=this.onChangeAnnotation.bind(this),this.session.on("changeAnnotation",this.$onChangeAnnotation),this.$onCursorChange=this.onCursorChange.bind(this),this.session.on("changeOverwrite",this.$onCursorChange),this.$onScrollTopChange=this.onScrollTopChange.bind(this),this.session.on("changeScrollTop",this.$onScrollTopChange),this.$onScrollLeftChange=this.onScrollLeftChange.bind(this),this.session.on("changeScrollLeft",this.$onScrollLeftChange),this.selection=t.getSelection(),this.selection.on("changeCursor",this.$onCursorChange),this.$onSelectionChange=this.onSelectionChange.bind(this),this.selection.on("changeSelection",this.$onSelectionChange),this.onChangeMode(),this.$blockScrolling+=1,this.onCursorChange(),this.$blockScrolling-=1,this.onScrollTopChange(),this.onScrollLeftChange(),this.onSelectionChange(),this.onChangeFrontMarker(),this.onChangeBackMarker(),this.onChangeBreakpoint(),this.onChangeAnnotation(),this.session.getUseWrapMode()&&this.renderer.adjustWrapLimit(),this.renderer.updateFull()):(this.selection=null,this.renderer.setSession(t)),this._signal("changeSession",{session:t,oldSession:e}),this.curOp=null,e&&e._signal("changeEditor",{oldEditor:this}),t&&t._signal("changeEditor",{editor:this})}},this.getSession=function(){return this.session},this.setValue=function(t,e){return this.session.doc.setValue(t),e?1==e?this.navigateFileEnd():-1==e&&this.navigateFileStart():this.selectAll(),t},this.getValue=function(){return this.session.getValue()},this.getSelection=function(){return this.selection},this.resize=function(t){this.renderer.onResize(t)},this.setTheme=function(t,e){this.renderer.setTheme(t,e)},this.getTheme=function(){return this.renderer.getTheme()},this.setStyle=function(t){this.renderer.setStyle(t)},this.unsetStyle=function(t){this.renderer.unsetStyle(t)},this.getFontSize=function(){return this.getOption("fontSize")||n.computedStyle(this.container,"fontSize")},this.setFontSize=function(t){this.setOption("fontSize",t)},this.$highlightBrackets=function(){if(this.session.$bracketHighlight&&(this.session.removeMarker(this.session.$bracketHighlight),this.session.$bracketHighlight=null),!this.$highlightPending){var t=this;this.$highlightPending=!0,setTimeout((function(){t.$highlightPending=!1;var e=t.session;if(e&&e.bgTokenizer){var l=e.findMatchingBracket(t.getCursorPosition());if(l)var i=new Z(l.row,l.column,l.row,l.column+1);else e.$mode.getMatching&&(i=e.$mode.getMatching(t.session));i&&(e.$bracketHighlight=e.addMarker(i,"ace_bracket","text"))}}),50)}},this.$highlightTags=function(){if(!this.$highlightTagPending){var t=this;this.$highlightTagPending=!0,setTimeout((function(){t.$highlightTagPending=!1;var e=t.session;if(e&&e.bgTokenizer){var l=t.getCursorPosition(),i=new y(t.session,l.row,l.column),n=i.getCurrentToken();if(!n||!/\b(?:tag-open|tag-name)/.test(n.type))return e.removeMarker(e.$tagHighlight),void(e.$tagHighlight=null);if(-1==n.type.indexOf("tag-open")||(n=i.stepForward())){var d=n.value,a=0,s=i.stepBackward();if("<"==s.value)do{s=n,(n=i.stepForward())&&n.value===d&&-1!==n.type.indexOf("tag-name")&&("<"===s.value?a++:"=0);else{do{n=s,s=i.stepBackward(),n&&n.value===d&&-1!==n.type.indexOf("tag-name")&&("<"===s.value?a++:"1||(t=!1)),e.$highlightLineMarker&&!t)e.removeMarker(e.$highlightLineMarker.id),e.$highlightLineMarker=null;else if(!e.$highlightLineMarker&&t){var l=new Z(t.row,t.column,t.row,1/0);l.id=e.addMarker(l,"ace_active-line","screenLine"),e.$highlightLineMarker=l}else t&&(e.$highlightLineMarker.start.row=t.row,e.$highlightLineMarker.end.row=t.row,e.$highlightLineMarker.start.column=t.column,e._signal("changeBackMarker"))},this.onSelectionChange=function(t){var e=this.session;if(e.$selectionMarker&&e.removeMarker(e.$selectionMarker),e.$selectionMarker=null,this.selection.isEmpty())this.$updateHighlightActiveLine();else{var l=this.selection.getRange(),i=this.getSelectionStyle();e.$selectionMarker=e.addMarker(l,"ace_selection",i)}var n=this.$highlightSelectedWord&&this.$getSelectionHighLightRegexp();this.session.highlight(n),this._signal("changeSelection")},this.$getSelectionHighLightRegexp=function(){var t=this.session,e=this.getSelectionRange();if(!e.isEmpty()&&!e.isMultiLine()){var l=e.start.column-1,i=e.end.column+1,n=t.getLine(e.start.row),d=n.length,a=n.substring(Math.max(l,0),Math.min(i,d));if(!(l>=0&&/^[\w\d]/.test(a)||i<=d&&/[\w\d]$/.test(a))&&(a=n.substring(e.start.column,e.end.column),/^[\w\d]+$/.test(a)))return this.$search.$assembleRegExp({wholeWord:!0,caseSensitive:!0,needle:a})}},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(t){this.renderer.updateText(),this._emit("changeMode",t)},this.onChangeWrapLimit=function(){this.renderer.updateFull()},this.onChangeWrapMode=function(){this.renderer.onResize(!0)},this.onChangeFold=function(){this.$updateHighlightActiveLine(),this.renderer.updateFull()},this.getSelectedText=function(){return this.session.getTextRange(this.getSelectionRange())},this.getCopyText=function(){var t=this.getSelectedText();return this._signal("copy",t),t},this.onCopy=function(){this.commands.exec("copy",this)},this.onCut=function(){this.commands.exec("cut",this)},this.onPaste=function(t,e){var l={text:t,event:e};this.commands.exec("paste",this,l)},this.$handlePaste=function(t){"string"==typeof t&&(t={text:t}),this._signal("paste",t);var e=t.text;if(!this.inMultiSelectMode||this.inVirtualSelectionMode)this.insert(e);else{var l=e.split(/\r\n|\r|\n/),i=this.selection.rangeList.ranges;if(l.length>i.length||l.length<2||!l[1])return this.commands.exec("insertstring",this,e);for(var n=i.length;n--;){var d=i[n];d.isEmpty()||this.session.remove(d),this.session.insert(d.start,l[n])}}},this.execCommand=function(t,e){return this.commands.exec(t,this,e)},this.insert=function(t,e){var l=this.session,i=l.getMode(),n=this.getCursorPosition();if(this.getBehavioursEnabled()&&!e){var d=i.transformAction(l.getState(n.row),"insertion",this,l,t);d&&(t!==d.text&&(this.session.mergeUndoDeltas=!1,this.$mergeNextCommand=!1),t=d.text)}if("\t"==t&&(t=this.session.getTabString()),this.selection.isEmpty())this.session.getOverwrite()&&((a=new Z.fromPoints(n,n)).end.column+=t.length,this.session.remove(a));else{var a=this.getSelectionRange();n=this.session.remove(a),this.clearSelection()}if("\n"==t||"\r\n"==t){var s=l.getLine(n.row);if(n.column>s.search(/\S|$/)){var c=s.substr(n.column).search(/\S|$/);l.doc.removeInLine(n.row,n.column,n.column+c)}}this.clearSelection();var o=n.column,b=l.getState(n.row),r=(s=l.getLine(n.row),i.checkOutdent(b,s,t));if(l.insert(n,t),d&&d.selection&&(2==d.selection.length?this.selection.setSelectionRange(new Z(n.row,o+d.selection[0],n.row,o+d.selection[1])):this.selection.setSelectionRange(new Z(n.row+d.selection[0],d.selection[1],n.row+d.selection[2],d.selection[3]))),l.getDocument().isNewLine(t)){var m=i.getNextLineIndent(b,s.slice(0,n.column),l.getTabString());l.insert({row:n.row+1,column:0},m)}r&&i.autoOutdent(b,l,n.row)},this.onTextInput=function(t){this.keyBinding.onTextInput(t)},this.onCommandKey=function(t,e,l){this.keyBinding.onCommandKey(t,e,l)},this.setOverwrite=function(t){this.session.setOverwrite(t)},this.getOverwrite=function(){return this.session.getOverwrite()},this.toggleOverwrite=function(){this.session.toggleOverwrite()},this.setScrollSpeed=function(t){this.setOption("scrollSpeed",t)},this.getScrollSpeed=function(){return this.getOption("scrollSpeed")},this.setDragDelay=function(t){this.setOption("dragDelay",t)},this.getDragDelay=function(){return this.getOption("dragDelay")},this.setSelectionStyle=function(t){this.setOption("selectionStyle",t)},this.getSelectionStyle=function(){return this.getOption("selectionStyle")},this.setHighlightActiveLine=function(t){this.setOption("highlightActiveLine",t)},this.getHighlightActiveLine=function(){return this.getOption("highlightActiveLine")},this.setHighlightGutterLine=function(t){this.setOption("highlightGutterLine",t)},this.getHighlightGutterLine=function(){return this.getOption("highlightGutterLine")},this.setHighlightSelectedWord=function(t){this.setOption("highlightSelectedWord",t)},this.getHighlightSelectedWord=function(){return this.$highlightSelectedWord},this.setAnimatedScroll=function(t){this.renderer.setAnimatedScroll(t)},this.getAnimatedScroll=function(){return this.renderer.getAnimatedScroll()},this.setShowInvisibles=function(t){this.renderer.setShowInvisibles(t)},this.getShowInvisibles=function(){return this.renderer.getShowInvisibles()},this.setDisplayIndentGuides=function(t){this.renderer.setDisplayIndentGuides(t)},this.getDisplayIndentGuides=function(){return this.renderer.getDisplayIndentGuides()},this.setShowPrintMargin=function(t){this.renderer.setShowPrintMargin(t)},this.getShowPrintMargin=function(){return this.renderer.getShowPrintMargin()},this.setPrintMarginColumn=function(t){this.renderer.setPrintMarginColumn(t)},this.getPrintMarginColumn=function(){return this.renderer.getPrintMarginColumn()},this.setReadOnly=function(t){this.setOption("readOnly",t)},this.getReadOnly=function(){return this.getOption("readOnly")},this.setBehavioursEnabled=function(t){this.setOption("behavioursEnabled",t)},this.getBehavioursEnabled=function(){return this.getOption("behavioursEnabled")},this.setWrapBehavioursEnabled=function(t){this.setOption("wrapBehavioursEnabled",t)},this.getWrapBehavioursEnabled=function(){return this.getOption("wrapBehavioursEnabled")},this.setShowFoldWidgets=function(t){this.setOption("showFoldWidgets",t)},this.getShowFoldWidgets=function(){return this.getOption("showFoldWidgets")},this.setFadeFoldWidgets=function(t){this.setOption("fadeFoldWidgets",t)},this.getFadeFoldWidgets=function(){return this.getOption("fadeFoldWidgets")},this.remove=function(t){this.selection.isEmpty()&&("left"==t?this.selection.selectLeft():this.selection.selectRight());var e=this.getSelectionRange();if(this.getBehavioursEnabled()){var l=this.session,i=l.getState(e.start.row),n=l.getMode().transformAction(i,"deletion",this,l,e);if(0===e.end.column){var d=l.getTextRange(e);if("\n"==d[d.length-1]){var a=l.getLine(e.end.row);/^\s+$/.test(a)&&(e.end.column=a.length)}}n&&(e=n)}this.session.remove(e),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 t=this.getSelectionRange();t.start.column==t.end.column&&t.start.row==t.end.row&&(t.end.column=0,t.end.row++),this.session.remove(t),this.clearSelection()},this.splitLine=function(){this.selection.isEmpty()||(this.session.remove(this.getSelectionRange()),this.clearSelection());var t=this.getCursorPosition();this.insert("\n"),this.moveCursorToPosition(t)},this.transposeLetters=function(){if(this.selection.isEmpty()){var t=this.getCursorPosition(),e=t.column;if(0!==e){var l,i,n=this.session.getLine(t.row);ee.toLowerCase()?1:0}));for(var i=new Z(0,0,0,0),n=t.first;n<=t.last;n++){var d=e.getLine(n);i.start.row=n,i.end.row=n,i.end.column=d.length,e.replace(i,l[n-t.first])}},this.toggleCommentLines=function(){var t=this.session.getState(this.getCursorPosition().row),e=this.$getSelectedRows();this.session.getMode().toggleCommentLines(t,this.session,e.first,e.last)},this.toggleBlockComment=function(){var t=this.getCursorPosition(),e=this.session.getState(t.row),l=this.getSelectionRange();this.session.getMode().toggleBlockComment(e,this.session,l,t)},this.getNumberAt=function(t,e){var l=/[\-]?[0-9]+(?:\.[0-9]+)?/g;l.lastIndex=0;for(var i=this.session.getLine(t);l.lastIndex=e)return{value:n[0],start:n.index,end:n.index+n[0].length}}return null},this.modifyNumber=function(t){var e=this.selection.getCursor().row,l=this.selection.getCursor().column,i=new Z(e,l-1,e,l),n=this.session.getTextRange(i);if(!isNaN(parseFloat(n))&&isFinite(n)){var d=this.getNumberAt(e,l);if(d){var a=d.value.indexOf(".")>=0?d.start+d.value.indexOf(".")+1:d.end,s=d.start+d.value.length-a,c=parseFloat(d.value);c*=Math.pow(10,s),a!==d.end&&lZ+1)break;Z=g.last}for(b--,s=this.session.$moveLines(m,Z,e?0:t),e&&-1==t&&(r=b+1);r<=b;)a[r].moveBy(s,0),r++;e||(s=0),c+=s}n.fromOrientedRange(n.ranges[0]),n.rangeList.attach(this.session),this.inVirtualSelectionMode=!1}},this.$getSelectedRows=function(t){return t=(t||this.getSelectionRange()).collapseRows(),{first:this.session.getRowFoldStart(t.start.row),last:this.session.getRowFoldEnd(t.end.row)}},this.onCompositionStart=function(t){this.renderer.showComposition(this.getCursorPosition())},this.onCompositionUpdate=function(t){this.renderer.setCompositionText(t)},this.onCompositionEnd=function(){this.renderer.hideComposition()},this.getFirstVisibleRow=function(){return this.renderer.getFirstVisibleRow()},this.getLastVisibleRow=function(){return this.renderer.getLastVisibleRow()},this.isRowVisible=function(t){return t>=this.getFirstVisibleRow()&&t<=this.getLastVisibleRow()},this.isRowFullyVisible=function(t){return t>=this.renderer.getFirstFullyVisibleRow()&&t<=this.renderer.getLastFullyVisibleRow()},this.$getVisibleRowCount=function(){return this.renderer.getScrollBottomRow()-this.renderer.getScrollTopRow()+1},this.$moveByPage=function(t,e){var l=this.renderer,i=this.renderer.layerConfig,n=t*Math.floor(i.height/i.lineHeight);this.$blockScrolling++,!0===e?this.selection.$moveSelection((function(){this.moveCursorBy(n,0)})):!1===e&&(this.selection.moveCursorBy(n,0),this.selection.clearSelection()),this.$blockScrolling--;var d=l.scrollTop;l.scrollBy(0,n*i.lineHeight),null!=e&&l.scrollCursorIntoView(null,.5),l.animateScrolling(d)},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(t){this.renderer.scrollToRow(t)},this.scrollToLine=function(t,e,l,i){this.renderer.scrollToLine(t,e,l,i)},this.centerSelection=function(){var t=this.getSelectionRange(),e={row:Math.floor(t.start.row+(t.end.row-t.start.row)/2),column:Math.floor(t.start.column+(t.end.column-t.start.column)/2)};this.renderer.alignCursor(e,.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(t,e){this.selection.moveCursorTo(t,e)},this.moveCursorToPosition=function(t){this.selection.moveCursorToPosition(t)},this.jumpToMatching=function(t,e){var l=this.getCursorPosition(),i=new y(this.session,l.row,l.column),n=i.getCurrentToken(),d=n||i.stepForward();if(d){var a,s,c=!1,o={},b=l.column-d.start,r={")":"(","(":"(","]":"[","[":"[","{":"{","}":"{"};do{if(d.value.match(/[{}()\[\]]/g)){for(;b=0;--d)this.$tryReplace(l[d],t)&&i++;return this.selection.setSelectionRange(n),this.$blockScrolling-=1,i},this.$tryReplace=function(t,e){var l=this.session.getTextRange(t);return null!==(e=this.$search.replace(l,e))?(t.end=this.session.replace(t,e),t):null},this.getLastSearchOptions=function(){return this.$search.getOptions()},this.find=function(t,e,l){e||(e={}),"string"==typeof t||t instanceof RegExp?e.needle=t:"object"==typeof t&&i.mixin(e,t);var n=this.selection.getRange();null==e.needle&&((t=this.session.getTextRange(n)||this.$search.$options.needle)||(n=this.session.getWordRange(n.start.row,n.start.column),t=this.session.getTextRange(n)),this.$search.set({needle:t})),this.$search.set(e),e.start||this.$search.set({start:n});var d=this.$search.find(this.session);return e.preventScroll?d:d?(this.revealRange(d,l),d):(e.backwards?n.start=n.end:n.end=n.start,void this.selection.setRange(n))},this.findNext=function(t,e){this.find({skipCurrent:!0,backwards:!1},t,e)},this.findPrevious=function(t,e){this.find(t,{skipCurrent:!0,backwards:!0},e)},this.revealRange=function(t,e){this.$blockScrolling+=1,this.session.unfold(t),this.selection.setSelectionRange(t),this.$blockScrolling-=1;var l=this.renderer.scrollTop;this.renderer.scrollSelectionIntoView(t.start,t.end,.5),!1!==e&&this.renderer.animateScrolling(l)},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._signal("destroy",this),this.session&&this.session.destroy()},this.setAutoScrollEditorIntoView=function(t){if(t){var e,l=this,i=!1;this.$scrollAnchor||(this.$scrollAnchor=document.createElement("div"));var n=this.$scrollAnchor;n.style.cssText="position:absolute",this.container.insertBefore(n,this.container.firstChild);var d=this.on("changeSelection",(function(){i=!0})),a=this.renderer.on("beforeRender",(function(){i&&(e=l.renderer.container.getBoundingClientRect())})),s=this.renderer.on("afterRender",(function(){if(i&&e&&(l.isFocused()||l.searchBox&&l.searchBox.isFocused())){var t=l.renderer,d=t.$cursorLayer.$pixelPos,a=t.layerConfig,s=d.top-a.offset;null!=(i=d.top>=0&&s+e.top<0||!(d.topwindow.innerHeight)&&null)&&(n.style.top=s+"px",n.style.left=d.left+"px",n.style.height=a.lineHeight+"px",n.scrollIntoView(i)),i=e=null}}));this.setAutoScrollEditorIntoView=function(t){t||(delete this.setAutoScrollEditorIntoView,this.off("changeSelection",d),this.renderer.off("afterRender",s),this.renderer.off("beforeRender",a))}}},this.$resetCursorStyle=function(){var t=this.$cursorStyle||"ace",e=this.renderer.$cursorLayer;e&&(e.setSmoothBlinking(/smooth/.test(t)),e.isBlinking=!this.$readOnly&&"wide"!=t,n.setCssClass(e.element,"ace_slim-cursors",/slim/.test(t)))}}).call(I.prototype),N.defineOptions(I.prototype,"editor",{selectionStyle:{set:function(t){this.onSelectionChange(),this._signal("changeSelectionStyle",{data:t})},initialValue:"line"},highlightActiveLine:{set:function(){this.$updateHighlightActiveLine()},initialValue:!0},highlightSelectedWord:{set:function(t){this.$onSelectionChange()},initialValue:!0},readOnly:{set:function(t){this.$resetCursorStyle()},initialValue:!1},cursorStyle:{set:function(t){this.$resetCursorStyle()},values:["ace","slim","smooth","wide"],initialValue:"ace"},mergeUndoDeltas:{values:[!1,!0,"always"],initialValue:!0},behavioursEnabled:{initialValue:!0},wrapBehavioursEnabled:{initialValue:!0},autoScrollEditorIntoView:{set:function(t){this.setAutoScrollEditorIntoView(t)}},keyboardHandler:{set:function(t){this.setKeyboardHandler(t)},get:function(){return this.keybindingId},handlesSet:!0},hScrollBarAlwaysVisible:"renderer",vScrollBarAlwaysVisible:"renderer",highlightGutterLine:"renderer",animatedScroll:"renderer",showInvisibles:"renderer",showPrintMargin:"renderer",printMarginColumn:"renderer",printMargin:"renderer",fadeFoldWidgets:"renderer",showFoldWidgets:"renderer",showLineNumbers:"renderer",showGutter:"renderer",displayIndentGuides:"renderer",fontSize:"renderer",fontFamily:"renderer",maxLines:"renderer",minLines:"renderer",scrollPastEnd:"renderer",fixedWidthGutter:"renderer",theme:"renderer",scrollSpeed:"$mouseHandler",dragDelay:"$mouseHandler",dragEnabled:"$mouseHandler",focusTimout:"$mouseHandler",tooltipFollowsMouse:"$mouseHandler",firstLineNumber:"session",overwrite:"session",newLineMode:"session",useWorker:"session",useSoftTabs:"session",tabSize:"session",wrap:"session",indentedSoftWrap:"session",foldStyle:"session",mode:"session"}),e.Editor=I})),ace.define("ace/undomanager",["require","exports","module"],(function(t,e,l){"use strict";var i=function(){this.reset()};(function(){function t(t){return{action:t.action,start:t.start,end:t.end,lines:1==t.lines.length?null:t.lines,text:1==t.lines.length?t.lines[0]:null}}function e(t){return{action:t.action,start:t.start,end:t.end,lines:t.lines||[t.text]}}function l(t,e){for(var l=new Array(t.length),i=0;i0},this.hasRedo=function(){return this.$redoStack.length>0},this.markClean=function(){this.dirtyCounter=0},this.isClean=function(){return 0===this.dirtyCounter},this.$serializeDeltas=function(e){return l(e,t)},this.$deserializeDeltas=function(t){return l(t,e)}}).call(i.prototype),e.UndoManager=i})),ace.define("ace/layer/gutter",["require","exports","module","ace/lib/dom","ace/lib/oop","ace/lib/lang","ace/lib/event_emitter"],(function(t,e,l){"use strict";var i=t("../lib/dom"),n=t("../lib/oop"),d=t("../lib/lang"),a=t("../lib/event_emitter").EventEmitter,s=function(t){this.element=i.createElement("div"),this.element.className="ace_layer ace_gutter-layer",t.appendChild(this.element),this.setShowFoldWidgets(this.$showFoldWidgets),this.gutterWidth=0,this.$annotations=[],this.$updateAnnotations=this.$updateAnnotations.bind(this),this.$cells=[]};(function(){n.implement(this,a),this.setSession=function(t){this.session&&this.session.removeEventListener("change",this.$updateAnnotations),this.session=t,t&&t.on("change",this.$updateAnnotations)},this.addGutterDecoration=function(t,e){window.console&&console.warn&&console.warn("deprecated use session.addGutterDecoration"),this.session.addGutterDecoration(t,e)},this.removeGutterDecoration=function(t,e){window.console&&console.warn&&console.warn("deprecated use session.removeGutterDecoration"),this.session.removeGutterDecoration(t,e)},this.setAnnotations=function(t){this.$annotations=[];for(var e=0;ea&&(W=d.end.row+1,a=(d=e.getNextFoldLine(W,d))?d.start.row:1/0),W>n){for(;this.$cells.length>g+1;)Z=this.$cells.pop(),this.element.removeChild(Z.element);break}(Z=this.$cells[++g])||((Z={element:null,textNode:null,foldWidget:null}).element=i.createElement("div"),Z.textNode=document.createTextNode(""),Z.element.appendChild(Z.textNode),this.element.appendChild(Z.element),this.$cells[g]=Z);var h="ace_gutter-cell ";if(c[W]&&(h+=c[W]),o[W]&&(h+=o[W]),this.$annotations[W]&&(h+=this.$annotations[W].className),Z.element.className!=h&&(Z.element.className=h),(y=e.getRowLength(W)*t.lineHeight+"px")!=Z.element.style.height&&(Z.element.style.height=y),s){var N=s[W];null==N&&(N=s[W]=e.getFoldWidget(W))}if(N){Z.foldWidget||(Z.foldWidget=i.createElement("span"),Z.element.appendChild(Z.foldWidget)),h="ace_fold-widget ace_"+N,"start"==N&&W==a&&Wl.right-e.right?"foldWidgets":void 0}}).call(s.prototype),e.Gutter=s})),ace.define("ace/layer/marker",["require","exports","module","ace/range","ace/lib/dom"],(function(t,e,l){"use strict";var i=t("../range").Range,n=t("../lib/dom"),d=function(t){this.element=n.createElement("div"),this.element.className="ace_layer ace_marker-layer",t.appendChild(this.element)};(function(){this.$padding=0,this.setPadding=function(t){this.$padding=t},this.setSession=function(t){this.session=t},this.setMarkers=function(t){this.markers=t},this.update=function(t){if(t=t||this.config){this.config=t;var e=[];for(var l in this.markers){var i=this.markers[l];if(i.range){var n=i.range.clipRows(t.firstRow,t.lastRow);if(!n.isEmpty())if(n=n.toScreenRange(this.session),i.renderer){var d=this.$getTop(n.start.row,t),a=this.$padding+n.start.column*t.characterWidth;i.renderer(e,n,a,d,t)}else"fullLine"==i.type?this.drawFullLineMarker(e,n,i.clazz,t):"screenLine"==i.type?this.drawScreenLineMarker(e,n,i.clazz,t):n.isMultiLine()?"text"==i.type?this.drawTextMarker(e,n,i.clazz,t):this.drawMultiLineMarker(e,n,i.clazz,t):this.drawSingleLineMarker(e,n,i.clazz+" ace_start ace_br15",t)}else i.update(e,this,this.session,t)}this.element.innerHTML=e.join("")}},this.$getTop=function(t,e){return(t-e.firstRowScreen)*e.lineHeight},this.drawTextMarker=function(t,e,l,n,d){for(var a=this.session,s=e.start.row,c=e.end.row,o=s,b=0,r=0,m=a.getScreenLastRowColumn(o),Z=new i(o,e.start.column,o,r);o<=c;o++)Z.start.row=Z.end.row=o,Z.start.column=o==s?e.start.column:a.getRowWrapIndent(o),Z.end.column=m,b=r,r=m,m=o+1m?4:0)|(o==c?8:0)),n,o==c?0:1,d)},this.drawMultiLineMarker=function(t,e,l,i,n){var d=this.$padding,a=i.lineHeight,s=this.$getTop(e.start.row,i),c=d+e.start.column*i.characterWidth;n=n||"",t.push("
"),s=this.$getTop(e.end.row,i);var o=e.end.column*i.characterWidth;if(t.push("
"),!((a=(e.end.row-e.start.row-1)*i.lineHeight)<=0)){s=this.$getTop(e.start.row+1,i);var b=(e.start.column?1:0)|(e.end.column?0:8);t.push("
")}},this.drawSingleLineMarker=function(t,e,l,i,n,d){var a=i.lineHeight,s=(e.end.column+(n||0)-e.start.column)*i.characterWidth,c=this.$getTop(e.start.row,i),o=this.$padding+e.start.column*i.characterWidth;t.push("
")},this.drawFullLineMarker=function(t,e,l,i,n){var d=this.$getTop(e.start.row,i),a=i.lineHeight;e.start.row!=e.end.row&&(a+=this.$getTop(e.end.row,i)-d),t.push("
")},this.drawScreenLineMarker=function(t,e,l,i,n){var d=this.$getTop(e.start.row,i),a=i.lineHeight;t.push("
")}}).call(d.prototype),e.Marker=d})),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(t,e,l){"use strict";var i=t("../lib/oop"),n=t("../lib/dom"),d=t("../lib/lang"),a=(t("../lib/useragent"),t("../lib/event_emitter").EventEmitter),s=function(t){this.element=n.createElement("div"),this.element.className="ace_layer ace_text-layer",t.appendChild(this.element),this.$updateEolChar=this.$updateEolChar.bind(this)};(function(){i.implement(this,a),this.EOF_CHAR="¶",this.EOL_CHAR_LF="¬",this.EOL_CHAR_CRLF="¤",this.EOL_CHAR=this.EOL_CHAR_LF,this.TAB_CHAR="—",this.SPACE_CHAR="·",this.$padding=0,this.$updateEolChar=function(){var t="\n"==this.session.doc.getNewLineCharacter()?this.EOL_CHAR_LF:this.EOL_CHAR_CRLF;if(this.EOL_CHAR!=t)return this.EOL_CHAR=t,!0},this.setPadding=function(t){this.$padding=t,this.element.style.padding="0 "+t+"px"},this.getLineHeight=function(){return this.$fontMetrics.$characterSize.height||0},this.getCharacterWidth=function(){return this.$fontMetrics.$characterSize.width||0},this.$setFontMetrics=function(t){this.$fontMetrics=t,this.$fontMetrics.on("changeCharacterSize",function(t){this._signal("changeCharacterSize",t)}.bind(this)),this.$pollSizeChanges()},this.checkForSizeChanges=function(){this.$fontMetrics.checkForSizeChanges()},this.$pollSizeChanges=function(){return this.$pollSizeChangesTimer=this.$fontMetrics.$pollSizeChanges()},this.setSession=function(t){this.session=t,t&&this.$computeTabString()},this.showInvisibles=!1,this.setShowInvisibles=function(t){return this.showInvisibles!=t&&(this.showInvisibles=t,this.$computeTabString(),!0)},this.displayIndentGuides=!0,this.setDisplayIndentGuides=function(t){return this.displayIndentGuides!=t&&(this.displayIndentGuides=t,this.$computeTabString(),!0)},this.$tabStrings=[],this.onChangeTabSize=this.$computeTabString=function(){var t=this.session.getTabSize();this.tabSize=t;for(var e=this.$tabStrings=[0],l=1;l"+d.stringRepeat(this.TAB_CHAR,l)+""):e.push(d.stringRepeat(" ",l));if(this.displayIndentGuides){this.$indentGuideRe=/\s\S| \t|\t |\s$/;var i="ace_indent-guide",n="",a="";if(this.showInvisibles){i+=" ace_invisible",n=" ace_invisible_space",a=" ace_invisible_tab";var s=d.stringRepeat(this.SPACE_CHAR,this.tabSize),c=d.stringRepeat(this.TAB_CHAR,this.tabSize)}else c=s=d.stringRepeat(" ",this.tabSize);this.$tabStrings[" "]=""+s+"",this.$tabStrings["\t"]=""+c+""}},this.updateLines=function(t,e,l){this.config.lastRow==t.lastRow&&this.config.firstRow==t.firstRow||this.scrollLines(t),this.config=t;for(var i=Math.max(e,t.firstRow),n=Math.min(l,t.lastRow),d=this.element.childNodes,a=0,s=t.firstRow;so&&(s=c.end.row+1,o=(c=this.session.getNextFoldLine(s,c))?c.start.row:1/0),!(s>n);){var b=d[a++];if(b){var r=[];this.$renderLine(r,s,!this.$useLineGroups(),s==o&&c),b.style.height=t.lineHeight*this.session.getRowLength(s)+"px",b.innerHTML=r.join("")}s++}},this.scrollLines=function(t){var e=this.config;if(this.config=t,!e||e.lastRow0;i--)l.removeChild(l.firstChild);if(e.lastRow>t.lastRow)for(i=this.session.getFoldedRowCount(t.lastRow+1,e.lastRow);i>0;i--)l.removeChild(l.lastChild);if(t.firstRowe.lastRow&&(n=this.$renderLinesFragment(t,e.lastRow+1,t.lastRow),l.appendChild(n))},this.$renderLinesFragment=function(t,e,l){for(var i=this.element.ownerDocument.createDocumentFragment(),d=e,a=this.session.getNextFoldLine(d),s=a?a.start.row:1/0;d>s&&(d=a.end.row+1,s=(a=this.session.getNextFoldLine(d,a))?a.start.row:1/0),!(d>l);){var c=n.createElement("div"),o=[];if(this.$renderLine(o,d,!1,d==s&&a),c.innerHTML=o.join(""),this.$useLineGroups())c.className="ace_line_group",i.appendChild(c),c.style.height=t.lineHeight*this.session.getRowLength(d)+"px";else for(;c.firstChild;)i.appendChild(c.firstChild);d++}return i},this.update=function(t){this.config=t;for(var e=[],l=t.firstRow,i=t.lastRow,n=l,d=this.session.getNextFoldLine(n),a=d?d.start.row:1/0;n>a&&(n=d.end.row+1,a=(d=this.session.getNextFoldLine(n,d))?d.start.row:1/0),!(n>i);)this.$useLineGroups()&&e.push("
"),this.$renderLine(e,n,!1,n==a&&d),this.$useLineGroups()&&e.push("
"),n++;this.element.innerHTML=e.join("")},this.$textToken={text:!0,rparen:!0,lparen:!0},this.$renderToken=function(t,e,l,i){var n=this,a=i.replace(/\t|&|<|>|( +)|([\x00-\x1f\x80-\xa0\xad\u1680\u180E\u2000-\u200f\u2028\u2029\u202F\u205F\u3000\uFEFF\uFFF9-\uFFFC])|[\u1100-\u115F\u11A3-\u11A7\u11FA-\u11FF\u2329-\u232A\u2E80-\u2E99\u2E9B-\u2EF3\u2F00-\u2FD5\u2FF0-\u2FFB\u3000-\u303E\u3041-\u3096\u3099-\u30FF\u3105-\u312D\u3131-\u318E\u3190-\u31BA\u31C0-\u31E3\u31F0-\u321E\u3220-\u3247\u3250-\u32FE\u3300-\u4DBF\u4E00-\uA48C\uA490-\uA4C6\uA960-\uA97C\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFAFF\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE66\uFE68-\uFE6B\uFF01-\uFF60\uFFE0-\uFFE6]/g,(function(t,l,i,a,s){if(l)return n.showInvisibles?""+d.stringRepeat(n.SPACE_CHAR,t.length)+"":t;if("&"==t)return"&";if("<"==t)return"<";if(">"==t)return">";if("\t"==t){var c=n.session.getScreenTabSize(e+a);return e+=c-1,n.$tabStrings[c]}if(" "==t){var o=n.showInvisibles?"ace_cjk ace_invisible ace_invisible_space":"ace_cjk",b=n.showInvisibles?n.SPACE_CHAR:"";return e+=1,""+b+""}return i?""+n.SPACE_CHAR+"":(e+=1,""+t+"")}));if(this.$textToken[l.type])t.push(a);else{var s="ace_"+l.type.replace(/\./g," ace_"),c="";"fold"==l.type&&(c=" style='width:"+l.value.length*this.config.characterWidth+"px;' "),t.push("",a,"")}return e+i.length},this.renderIndentGuide=function(t,e,l){var i=e.search(this.$indentGuideRe);return i<=0||i>=l?e:" "==e[0]?(i-=i%this.tabSize,t.push(d.stringRepeat(this.$tabStrings[" "],i/this.tabSize)),e.substr(i)):"\t"==e[0]?(t.push(d.stringRepeat(this.$tabStrings["\t"],i)),e.substr(i)):e},this.$renderWrappedLine=function(t,e,l,i){for(var n=0,a=0,s=l[0],c=0,o=0;o=s;)c=this.$renderToken(t,c,b,r.substring(0,s-n)),r=r.substring(s-n),n=s,i||t.push("","
"),t.push(d.stringRepeat(" ",l.indent)),c=0,s=l[++a]||Number.MAX_VALUE;0!=r.length&&(n+=r.length,c=this.$renderToken(t,c,b,r))}}},this.$renderSimpleLine=function(t,e){var l=0,i=e[0],n=i.value;this.displayIndentGuides&&(n=this.renderIndentGuide(t,n)),n&&(l=this.$renderToken(t,l,i,n));for(var d=1;d"),n.length){var d=this.session.getRowSplitData(e);d&&d.length?this.$renderWrappedLine(t,n,d,l):this.$renderSimpleLine(t,n)}this.showInvisibles&&(i&&(e=i.end.row),t.push("",e==this.session.getLength()-1?this.EOF_CHAR:this.EOL_CHAR,"")),l||t.push("
")},this.$getFoldLineTokens=function(t,e){var l=this.session,i=[],n=l.getTokens(t);return e.walk((function(t,e,d,a,s){null!=t?i.push({type:"fold",value:t}):(s&&(n=l.getTokens(e)),n.length&&function(t,e,l){for(var n=0,d=0;d+t[n].value.lengthl-e&&(a=a.substring(0,l-e)),i.push({type:t[n].type,value:a}),d=e+a.length,n+=1);dl?i.push({type:t[n].type,value:a.substring(0,l-d)}):i.push(t[n]),d+=a.length,n+=1}}(n,a,d))}),e.end.row,this.session.getLine(e.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(s.prototype),e.Text=s})),ace.define("ace/layer/cursor",["require","exports","module","ace/lib/dom"],(function(t,e,l){"use strict";var i,n=t("../lib/dom"),d=function(t){this.element=n.createElement("div"),this.element.className="ace_layer ace_cursor-layer",t.appendChild(this.element),void 0===i&&(i=!("opacity"in this.element.style)),this.isVisible=!1,this.isBlinking=!0,this.blinkInterval=1e3,this.smoothBlinking=!1,this.cursors=[],this.cursor=this.addCursor(),n.addCssClass(this.element,"ace_hidden-cursors"),this.$updateCursors=(i?this.$updateVisibility:this.$updateOpacity).bind(this)};(function(){this.$updateVisibility=function(t){for(var e=this.cursors,l=e.length;l--;)e[l].style.visibility=t?"":"hidden"},this.$updateOpacity=function(t){for(var e=this.cursors,l=e.length;l--;)e[l].style.opacity=t?"":"0"},this.$padding=0,this.setPadding=function(t){this.$padding=t},this.setSession=function(t){this.session=t},this.setBlinking=function(t){t!=this.isBlinking&&(this.isBlinking=t,this.restartTimer())},this.setBlinkInterval=function(t){t!=this.blinkInterval&&(this.blinkInterval=t,this.restartTimer())},this.setSmoothBlinking=function(t){t==this.smoothBlinking||i||(this.smoothBlinking=t,n.setCssClass(this.element,"ace_smooth-blinking",t),this.$updateCursors(!0),this.$updateCursors=this.$updateOpacity.bind(this),this.restartTimer())},this.addCursor=function(){var t=n.createElement("div");return t.className="ace_cursor",this.element.appendChild(t),this.cursors.push(t),t},this.removeCursor=function(){if(this.cursors.length>1){var t=this.cursors.pop();return t.parentNode.removeChild(t),t}},this.hideCursor=function(){this.isVisible=!1,n.addCssClass(this.element,"ace_hidden-cursors"),this.restartTimer()},this.showCursor=function(){this.isVisible=!0,n.removeCssClass(this.element,"ace_hidden-cursors"),this.restartTimer()},this.restartTimer=function(){var t=this.$updateCursors;if(clearInterval(this.intervalId),clearTimeout(this.timeoutId),this.smoothBlinking&&n.removeCssClass(this.element,"ace_smooth-blinking"),t(!0),this.isBlinking&&this.blinkInterval&&this.isVisible){this.smoothBlinking&&setTimeout(function(){n.addCssClass(this.element,"ace_smooth-blinking")}.bind(this));var e=function(){this.timeoutId=setTimeout((function(){t(!1)}),.6*this.blinkInterval)}.bind(this);this.intervalId=setInterval((function(){t(!0),e()}),this.blinkInterval),e()}},this.getPixelPosition=function(t,e){if(!this.config||!this.session)return{left:0,top:0};t||(t=this.session.selection.getCursor());var l=this.session.documentToScreenPosition(t);return{left:this.$padding+l.column*this.config.characterWidth,top:(l.row-(e?this.config.firstRowScreen:0))*this.config.lineHeight}},this.update=function(t){this.config=t;var e=this.session.$selectionMarkers,l=0,i=0;void 0!==e&&0!==e.length||(e=[{cursor:null}]),l=0;for(var n=e.length;lt.height+t.offset||d.top<0)&&l>1)){var a=(this.cursors[i++]||this.addCursor()).style;this.drawCursor?this.drawCursor(a,d,t,e[l],this.session):(a.left=d.left+"px",a.top=d.top+"px",a.width=t.characterWidth+"px",a.height=t.lineHeight+"px")}}for(;this.cursors.length>i;)this.removeCursor();var s=this.session.getOverwrite();this.$setOverwrite(s),this.$pixelPos=d,this.restartTimer()},this.drawCursor=null,this.$setOverwrite=function(t){t!=this.overwrite&&(this.overwrite=t,t?n.addCssClass(this.element,"ace_overwrite-cursors"):n.removeCssClass(this.element,"ace_overwrite-cursors"))},this.destroy=function(){clearInterval(this.intervalId),clearTimeout(this.timeoutId)}}).call(d.prototype),e.Cursor=d})),ace.define("ace/scrollbar",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/event","ace/lib/event_emitter"],(function(t,e,l){"use strict";var i=t("./lib/oop"),n=t("./lib/dom"),d=t("./lib/event"),a=t("./lib/event_emitter").EventEmitter,s=function(t){this.element=n.createElement("div"),this.element.className="ace_scrollbar ace_scrollbar"+this.classSuffix,this.inner=n.createElement("div"),this.inner.className="ace_scrollbar-inner",this.element.appendChild(this.inner),t.appendChild(this.element),this.setVisible(!1),this.skipEvent=!1,d.addListener(this.element,"scroll",this.onScroll.bind(this)),d.addListener(this.element,"mousedown",d.preventDefault)};(function(){i.implement(this,a),this.setVisible=function(t){this.element.style.display=t?"":"none",this.isVisible=t}}).call(s.prototype);var c=function(t,e){s.call(this,t),this.scrollTop=0,e.$scrollbarWidth=this.width=n.scrollbarWidth(t.ownerDocument),this.inner.style.width=this.element.style.width=(this.width||15)+5+"px"};i.inherits(c,s),function(){this.classSuffix="-v",this.onScroll=function(){this.skipEvent||(this.scrollTop=this.element.scrollTop,this._emit("scroll",{data:this.scrollTop})),this.skipEvent=!1},this.getWidth=function(){return this.isVisible?this.width:0},this.setHeight=function(t){this.element.style.height=t+"px"},this.setInnerHeight=function(t){this.inner.style.height=t+"px"},this.setScrollHeight=function(t){this.inner.style.height=t+"px"},this.setScrollTop=function(t){this.scrollTop!=t&&(this.skipEvent=!0,this.scrollTop=this.element.scrollTop=t)}}.call(c.prototype);var o=function(t,e){s.call(this,t),this.scrollLeft=0,this.height=e.$scrollbarWidth,this.inner.style.height=this.element.style.height=(this.height||15)+5+"px"};i.inherits(o,s),function(){this.classSuffix="-h",this.onScroll=function(){this.skipEvent||(this.scrollLeft=this.element.scrollLeft,this._emit("scroll",{data:this.scrollLeft})),this.skipEvent=!1},this.getHeight=function(){return this.isVisible?this.height:0},this.setWidth=function(t){this.element.style.width=t+"px"},this.setInnerWidth=function(t){this.inner.style.width=t+"px"},this.setScrollWidth=function(t){this.inner.style.width=t+"px"},this.setScrollLeft=function(t){this.scrollLeft!=t&&(this.skipEvent=!0,this.scrollLeft=this.element.scrollLeft=t)}}.call(o.prototype),e.ScrollBar=c,e.ScrollBarV=c,e.ScrollBarH=o,e.VScrollBar=c,e.HScrollBar=o})),ace.define("ace/renderloop",["require","exports","module","ace/lib/event"],(function(t,e,l){"use strict";var i=t("./lib/event"),n=function(t,e){this.onRender=t,this.pending=!1,this.changes=0,this.window=e||window};(function(){this.schedule=function(t){if(this.changes=this.changes|t,!this.pending&&this.changes){this.pending=!0;var e=this;i.nextFrame((function(){var t;for(e.pending=!1;t=e.changes;)e.changes=0,e.onRender(t)}),this.window)}}}).call(n.prototype),e.RenderLoop=n})),ace.define("ace/layer/font_metrics",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/lang","ace/lib/useragent","ace/lib/event_emitter"],(function(t,e,l){var i=t("../lib/oop"),n=t("../lib/dom"),d=t("../lib/lang"),a=t("../lib/useragent"),s=t("../lib/event_emitter").EventEmitter,c=0,o=e.FontMetrics=function(t){this.el=n.createElement("div"),this.$setMeasureNodeStyles(this.el.style,!0),this.$main=n.createElement("div"),this.$setMeasureNodeStyles(this.$main.style),this.$measureNode=n.createElement("div"),this.$setMeasureNodeStyles(this.$measureNode.style),this.el.appendChild(this.$main),this.el.appendChild(this.$measureNode),t.appendChild(this.el),c||this.$testFractionalRect(),this.$measureNode.innerHTML=d.stringRepeat("X",c),this.$characterSize={width:0,height:0},this.checkForSizeChanges()};(function(){i.implement(this,s),this.$characterSize={width:0,height:0},this.$testFractionalRect=function(){var t=n.createElement("div");this.$setMeasureNodeStyles(t.style),t.style.width="0.2px",document.documentElement.appendChild(t);var e=t.getBoundingClientRect().width;c=e>0&&e<1?50:100,t.parentNode.removeChild(t)},this.$setMeasureNodeStyles=function(t,e){t.width=t.height="auto",t.left=t.top="0px",t.visibility="hidden",t.position="absolute",t.whiteSpace="pre",a.isIE<8?t["font-family"]="inherit":t.font="inherit",t.overflow=e?"hidden":"visible"},this.checkForSizeChanges=function(){var t=this.$measureSizes();if(t&&(this.$characterSize.width!==t.width||this.$characterSize.height!==t.height)){this.$measureNode.style.fontWeight="bold";var e=this.$measureSizes();this.$measureNode.style.fontWeight="",this.$characterSize=t,this.charSizes=Object.create(null),this.allowBoldFonts=e&&e.width===t.width&&e.height===t.height,this._emit("changeCharacterSize",{data:t})}},this.$pollSizeChanges=function(){if(this.$pollSizeChangesTimer)return this.$pollSizeChangesTimer;var t=this;return this.$pollSizeChangesTimer=setInterval((function(){t.checkForSizeChanges()}),500)},this.setPolling=function(t){t?this.$pollSizeChanges():this.$pollSizeChangesTimer&&(clearInterval(this.$pollSizeChangesTimer),this.$pollSizeChangesTimer=0)},this.$measureSizes=function(){if(50===c){var t=null;try{t=this.$measureNode.getBoundingClientRect()}catch(e){t={width:0,height:0}}var e={height:t.height,width:t.width/c}}else e={height:this.$measureNode.clientHeight,width:this.$measureNode.clientWidth/c};return 0===e.width||0===e.height?null:e},this.$measureCharWidth=function(t){return this.$main.innerHTML=d.stringRepeat(t,c),this.$main.getBoundingClientRect().width/c},this.getCharacterWidth=function(t){var e=this.charSizes[t];return void 0===e&&(e=this.charSizes[t]=this.$measureCharWidth(t)/this.$characterSize.width),e},this.destroy=function(){clearInterval(this.$pollSizeChangesTimer),this.el&&this.el.parentNode&&this.el.parentNode.removeChild(this.el)}}).call(o.prototype)})),ace.define("ace/virtual_renderer",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/config","ace/lib/useragent","ace/layer/gutter","ace/layer/marker","ace/layer/text","ace/layer/cursor","ace/scrollbar","ace/scrollbar","ace/renderloop","ace/layer/font_metrics","ace/lib/event_emitter"],(function(t,e,l){"use strict";var i=t("./lib/oop"),n=t("./lib/dom"),d=t("./config"),a=t("./lib/useragent"),s=t("./layer/gutter").Gutter,c=t("./layer/marker").Marker,o=t("./layer/text").Text,b=t("./layer/cursor").Cursor,r=t("./scrollbar").HScrollBar,m=t("./scrollbar").VScrollBar,Z=t("./renderloop").RenderLoop,g=t("./layer/font_metrics").FontMetrics,W=t("./lib/event_emitter").EventEmitter;n.importCssString('.ace_editor {\tposition: relative;\toverflow: hidden;\tfont: 12px/normal \'Monaco\', \'Menlo\', \'Ubuntu Mono\', \'Consolas\', \'source-code-pro\', monospace;\tdirection: ltr;\t}\t.ace_scroller {\tposition: absolute;\toverflow: hidden;\ttop: 0;\tbottom: 0;\tbackground-color: inherit;\t-ms-user-select: none;\t-moz-user-select: none;\t-webkit-user-select: none;\tuser-select: none;\tcursor: text;\t}\t.ace_content {\tposition: absolute;\t-moz-box-sizing: border-box;\t-webkit-box-sizing: border-box;\tbox-sizing: border-box;\tmin-width: 100%;\t}\t.ace_dragging .ace_scroller:before{\tposition: absolute;\ttop: 0;\tleft: 0;\tright: 0;\tbottom: 0;\tcontent: \'\';\tbackground: rgba(250, 250, 250, 0.01);\tz-index: 1000;\t}\t.ace_dragging.ace_dark .ace_scroller:before{\tbackground: rgba(0, 0, 0, 0.01);\t}\t.ace_selecting, .ace_selecting * {\tcursor: text !important;\t}\t.ace_gutter {\tposition: absolute;\toverflow : hidden;\twidth: auto;\ttop: 0;\tbottom: 0;\tleft: 0;\tcursor: default;\tz-index: 4;\t-ms-user-select: none;\t-moz-user-select: none;\t-webkit-user-select: none;\tuser-select: none;\t}\t.ace_gutter-active-line {\tposition: absolute;\tleft: 0;\tright: 0;\t}\t.ace_scroller.ace_scroll-left {\tbox-shadow: 17px 0 16px -16px rgba(0, 0, 0, 0.4) inset;\t}\t.ace_gutter-cell {\tpadding-left: 19px;\tpadding-right: 6px;\tbackground-repeat: no-repeat;\t}\t.ace_gutter-cell.ace_error {\tbackground-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAABOFBMVEX/////////QRswFAb/Ui4wFAYwFAYwFAaWGAfDRymzOSH/PxswFAb/SiUwFAYwFAbUPRvjQiDllog5HhHdRybsTi3/Tyv9Tir+Syj/UC3////XurebMBIwFAb/RSHbPx/gUzfdwL3kzMivKBAwFAbbvbnhPx66NhowFAYwFAaZJg8wFAaxKBDZurf/RB6mMxb/SCMwFAYwFAbxQB3+RB4wFAb/Qhy4Oh+4QifbNRcwFAYwFAYwFAb/QRzdNhgwFAYwFAbav7v/Uy7oaE68MBK5LxLewr/r2NXewLswFAaxJw4wFAbkPRy2PyYwFAaxKhLm1tMwFAazPiQwFAaUGAb/QBrfOx3bvrv/VC/maE4wFAbRPBq6MRO8Qynew8Dp2tjfwb0wFAbx6eju5+by6uns4uH9/f36+vr/GkHjAAAAYnRSTlMAGt+64rnWu/bo8eAA4InH3+DwoN7j4eLi4xP99Nfg4+b+/u9B/eDs1MD1mO7+4PHg2MXa347g7vDizMLN4eG+Pv7i5evs/v79yu7S3/DV7/498Yv24eH+4ufQ3Ozu/v7+y13sRqwAAADLSURBVHjaZc/XDsFgGIBhtDrshlitmk2IrbHFqL2pvXf/+78DPokj7+Fz9qpU/9UXJIlhmPaTaQ6QPaz0mm+5gwkgovcV6GZzd5JtCQwgsxoHOvJO15kleRLAnMgHFIESUEPmawB9ngmelTtipwwfASilxOLyiV5UVUyVAfbG0cCPHig+GBkzAENHS0AstVF6bacZIOzgLmxsHbt2OecNgJC83JERmePUYq8ARGkJx6XtFsdddBQgZE2nPR6CICZhawjA4Fb/chv+399kfR+MMMDGOQAAAABJRU5ErkJggg==");\tbackground-repeat: no-repeat;\tbackground-position: 2px center;\t}\t.ace_gutter-cell.ace_warning {\tbackground-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAmVBMVEX///8AAAD///8AAAAAAABPSzb/5sAAAAB/blH/73z/ulkAAAAAAAD85pkAAAAAAAACAgP/vGz/rkDerGbGrV7/pkQICAf////e0IsAAAD/oED/qTvhrnUAAAD/yHD/njcAAADuv2r/nz//oTj/p064oGf/zHAAAAA9Nir/tFIAAAD/tlTiuWf/tkIAAACynXEAAAAAAAAtIRW7zBpBAAAAM3RSTlMAABR1m7RXO8Ln31Z36zT+neXe5OzooRDfn+TZ4p3h2hTf4t3k3ucyrN1K5+Xaks52Sfs9CXgrAAAAjklEQVR42o3PbQ+CIBQFYEwboPhSYgoYunIqqLn6/z8uYdH8Vmdnu9vz4WwXgN/xTPRD2+sgOcZjsge/whXZgUaYYvT8QnuJaUrjrHUQreGczuEafQCO/SJTufTbroWsPgsllVhq3wJEk2jUSzX3CUEDJC84707djRc5MTAQxoLgupWRwW6UB5fS++NV8AbOZgnsC7BpEAAAAABJRU5ErkJggg==");\tbackground-position: 2px center;\t}\t.ace_gutter-cell.ace_info {\tbackground-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAAAAAA6mKC9AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAAJ0Uk5TAAB2k804AAAAPklEQVQY02NgIB68QuO3tiLznjAwpKTgNyDbMegwisCHZUETUZV0ZqOquBpXj2rtnpSJT1AEnnRmL2OgGgAAIKkRQap2htgAAAAASUVORK5CYII=");\tbackground-position: 2px center;\t}\t.ace_dark .ace_gutter-cell.ace_info {\tbackground-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQBAMAAADt3eJSAAAAJFBMVEUAAAChoaGAgIAqKiq+vr6tra1ZWVmUlJSbm5s8PDxubm56enrdgzg3AAAAAXRSTlMAQObYZgAAAClJREFUeNpjYMAPdsMYHegyJZFQBlsUlMFVCWUYKkAZMxZAGdxlDMQBAG+TBP4B6RyJAAAAAElFTkSuQmCC");\t}\t.ace_scrollbar {\tposition: absolute;\tright: 0;\tbottom: 0;\tz-index: 6;\t}\t.ace_scrollbar-inner {\tposition: absolute;\tcursor: text;\tleft: 0;\ttop: 0;\t}\t.ace_scrollbar-v{\toverflow-x: hidden;\toverflow-y: scroll;\ttop: 0;\t}\t.ace_scrollbar-h {\toverflow-x: scroll;\toverflow-y: hidden;\tleft: 0;\t}\t.ace_print-margin {\tposition: absolute;\theight: 100%;\t}\t.ace_text-input {\tposition: absolute;\tz-index: 0;\twidth: 0.5em;\theight: 1em;\topacity: 0;\tbackground: transparent;\t-moz-appearance: none;\tappearance: none;\tborder: none;\tresize: none;\toutline: none;\toverflow: hidden;\tfont: inherit;\tpadding: 0 1px;\tmargin: 0 -1px;\ttext-indent: -1em;\t-ms-user-select: text;\t-moz-user-select: text;\t-webkit-user-select: text;\tuser-select: text;\twhite-space: pre!important;\t}\t.ace_text-input.ace_composition {\tbackground: inherit;\tcolor: inherit;\tz-index: 1000;\topacity: 1;\ttext-indent: 0;\t}\t.ace_layer {\tz-index: 1;\tposition: absolute;\toverflow: hidden;\tword-wrap: normal;\twhite-space: pre;\theight: 100%;\twidth: 100%;\t-moz-box-sizing: border-box;\t-webkit-box-sizing: border-box;\tbox-sizing: border-box;\tpointer-events: none;\t}\t.ace_gutter-layer {\tposition: relative;\twidth: auto;\ttext-align: right;\tpointer-events: auto;\t}\t.ace_text-layer {\tfont: inherit !important;\t}\t.ace_cjk {\tdisplay: inline-block;\ttext-align: center;\t}\t.ace_cursor-layer {\tz-index: 4;\t}\t.ace_cursor {\tz-index: 4;\tposition: absolute;\t-moz-box-sizing: border-box;\t-webkit-box-sizing: border-box;\tbox-sizing: border-box;\tborder-left: 2px solid;\ttransform: translatez(0);\t}\t.ace_slim-cursors .ace_cursor {\tborder-left-width: 1px;\t}\t.ace_overwrite-cursors .ace_cursor {\tborder-left-width: 0;\tborder-bottom: 1px solid;\t}\t.ace_hidden-cursors .ace_cursor {\topacity: 0.2;\t}\t.ace_smooth-blinking .ace_cursor {\t-webkit-transition: opacity 0.18s;\ttransition: opacity 0.18s;\t}\t.ace_editor.ace_multiselect .ace_cursor {\tborder-left-width: 1px;\t}\t.ace_marker-layer .ace_step, .ace_marker-layer .ace_stack {\tposition: absolute;\tz-index: 3;\t}\t.ace_marker-layer .ace_selection {\tposition: absolute;\tz-index: 5;\t}\t.ace_marker-layer .ace_bracket {\tposition: absolute;\tz-index: 6;\t}\t.ace_marker-layer .ace_active-line {\tposition: absolute;\tz-index: 2;\t}\t.ace_marker-layer .ace_selected-word {\tposition: absolute;\tz-index: 4;\t-moz-box-sizing: border-box;\t-webkit-box-sizing: border-box;\tbox-sizing: border-box;\t}\t.ace_line .ace_fold {\t-moz-box-sizing: border-box;\t-webkit-box-sizing: border-box;\tbox-sizing: border-box;\tdisplay: inline-block;\theight: 11px;\tmargin-top: -2px;\tvertical-align: middle;\tbackground-image:\turl("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAJCAYAAADU6McMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJpJREFUeNpi/P//PwOlgAXGYGRklAVSokD8GmjwY1wasKljQpYACtpCFeADcHVQfQyMQAwzwAZI3wJKvCLkfKBaMSClBlR7BOQikCFGQEErIH0VqkabiGCAqwUadAzZJRxQr/0gwiXIal8zQQPnNVTgJ1TdawL0T5gBIP1MUJNhBv2HKoQHHjqNrA4WO4zY0glyNKLT2KIfIMAAQsdgGiXvgnYAAAAASUVORK5CYII="),\turl("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAA3CAYAAADNNiA5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACJJREFUeNpi+P//fxgTAwPDBxDxD078RSX+YeEyDFMCIMAAI3INmXiwf2YAAAAASUVORK5CYII=");\tbackground-repeat: no-repeat, repeat-x;\tbackground-position: center center, top left;\tcolor: transparent;\tborder: 1px solid black;\tborder-radius: 2px;\tcursor: pointer;\tpointer-events: auto;\t}\t.ace_dark .ace_fold {\t}\t.ace_fold:hover{\tbackground-image:\turl("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAJCAYAAADU6McMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJpJREFUeNpi/P//PwOlgAXGYGRklAVSokD8GmjwY1wasKljQpYACtpCFeADcHVQfQyMQAwzwAZI3wJKvCLkfKBaMSClBlR7BOQikCFGQEErIH0VqkabiGCAqwUadAzZJRxQr/0gwiXIal8zQQPnNVTgJ1TdawL0T5gBIP1MUJNhBv2HKoQHHjqNrA4WO4zY0glyNKLT2KIfIMAAQsdgGiXvgnYAAAAASUVORK5CYII="),\turl("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAA3CAYAAADNNiA5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACBJREFUeNpi+P//fz4TAwPDZxDxD5X4i5fLMEwJgAADAEPVDbjNw87ZAAAAAElFTkSuQmCC");\t}\t.ace_tooltip {\tbackground-color: #FFF;\tbackground-image: -webkit-linear-gradient(top, transparent, rgba(0, 0, 0, 0.1));\tbackground-image: linear-gradient(to bottom, transparent, rgba(0, 0, 0, 0.1));\tborder: 1px solid gray;\tborder-radius: 1px;\tbox-shadow: 0 1px 2px rgba(0, 0, 0, 0.3);\tcolor: black;\tmax-width: 100%;\tpadding: 3px 4px;\tposition: fixed;\tz-index: 999999;\t-moz-box-sizing: border-box;\t-webkit-box-sizing: border-box;\tbox-sizing: border-box;\tcursor: default;\twhite-space: pre;\tword-wrap: break-word;\tline-height: normal;\tfont-style: normal;\tfont-weight: normal;\tletter-spacing: normal;\tpointer-events: none;\t}\t.ace_folding-enabled > .ace_gutter-cell {\tpadding-right: 13px;\t}\t.ace_fold-widget {\t-moz-box-sizing: border-box;\t-webkit-box-sizing: border-box;\tbox-sizing: border-box;\tmargin: 0 -12px 0 1px;\tdisplay: none;\twidth: 11px;\tvertical-align: top;\tbackground-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAANElEQVR42mWKsQ0AMAzC8ixLlrzQjzmBiEjp0A6WwBCSPgKAXoLkqSot7nN3yMwR7pZ32NzpKkVoDBUxKAAAAABJRU5ErkJggg==");\tbackground-repeat: no-repeat;\tbackground-position: center;\tborder-radius: 3px;\tborder: 1px solid transparent;\tcursor: pointer;\t}\t.ace_folding-enabled .ace_fold-widget {\tdisplay: inline-block; \t}\t.ace_fold-widget.ace_end {\tbackground-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAANElEQVR42m3HwQkAMAhD0YzsRchFKI7sAikeWkrxwScEB0nh5e7KTPWimZki4tYfVbX+MNl4pyZXejUO1QAAAABJRU5ErkJggg==");\t}\t.ace_fold-widget.ace_closed {\tbackground-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAGCAYAAAAG5SQMAAAAOUlEQVR42jXKwQkAMAgDwKwqKD4EwQ26sSOkVWjgIIHAzPiCgaqiqnJHZnKICBERHN194O5b9vbLuAVRL+l0YWnZAAAAAElFTkSuQmCCXA==");\t}\t.ace_fold-widget:hover {\tborder: 1px solid rgba(0, 0, 0, 0.3);\tbackground-color: rgba(255, 255, 255, 0.2);\tbox-shadow: 0 1px 1px rgba(255, 255, 255, 0.7);\t}\t.ace_fold-widget:active {\tborder: 1px solid rgba(0, 0, 0, 0.4);\tbackground-color: rgba(0, 0, 0, 0.05);\tbox-shadow: 0 1px 1px rgba(255, 255, 255, 0.8);\t}\t.ace_dark .ace_fold-widget {\tbackground-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHklEQVQIW2P4//8/AzoGEQ7oGCaLLAhWiSwB146BAQCSTPYocqT0AAAAAElFTkSuQmCC");\t}\t.ace_dark .ace_fold-widget.ace_end {\tbackground-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAH0lEQVQIW2P4//8/AxQ7wNjIAjDMgC4AxjCVKBirIAAF0kz2rlhxpAAAAABJRU5ErkJggg==");\t}\t.ace_dark .ace_fold-widget.ace_closed {\tbackground-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAFCAYAAACAcVaiAAAAHElEQVQIW2P4//+/AxAzgDADlOOAznHAKgPWAwARji8UIDTfQQAAAABJRU5ErkJggg==");\t}\t.ace_dark .ace_fold-widget:hover {\tbox-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);\tbackground-color: rgba(255, 255, 255, 0.1);\t}\t.ace_dark .ace_fold-widget:active {\tbox-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);\t}\t.ace_fold-widget.ace_invalid {\tbackground-color: #FFB4B4;\tborder-color: #DE5555;\t}\t.ace_fade-fold-widgets .ace_fold-widget {\t-webkit-transition: opacity 0.4s ease 0.05s;\ttransition: opacity 0.4s ease 0.05s;\topacity: 0;\t}\t.ace_fade-fold-widgets:hover .ace_fold-widget {\t-webkit-transition: opacity 0.05s ease 0.05s;\ttransition: opacity 0.05s ease 0.05s;\topacity:1;\t}\t.ace_underline {\ttext-decoration: underline;\t}\t.ace_bold {\tfont-weight: bold;\t}\t.ace_nobold .ace_bold {\tfont-weight: normal;\t}\t.ace_italic {\tfont-style: italic;\t}\t.ace_error-marker {\tbackground-color: rgba(255, 0, 0,0.2);\tposition: absolute;\tz-index: 9;\t}\t.ace_highlight-marker {\tbackground-color: rgba(255, 255, 0,0.2);\tposition: absolute;\tz-index: 8;\t}\t.ace_br1 {border-top-left-radius : 3px;}\t.ace_br2 {border-top-right-radius : 3px;}\t.ace_br3 {border-top-left-radius : 3px; border-top-right-radius: 3px;}\t.ace_br4 {border-bottom-right-radius: 3px;}\t.ace_br5 {border-top-left-radius : 3px; border-bottom-right-radius: 3px;}\t.ace_br6 {border-top-right-radius : 3px; border-bottom-right-radius: 3px;}\t.ace_br7 {border-top-left-radius : 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px;}\t.ace_br8 {border-bottom-left-radius : 3px;}\t.ace_br9 {border-top-left-radius : 3px; border-bottom-left-radius: 3px;}\t.ace_br10{border-top-right-radius : 3px; border-bottom-left-radius: 3px;}\t.ace_br11{border-top-left-radius : 3px; border-top-right-radius: 3px; border-bottom-left-radius: 3px;}\t.ace_br12{border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;}\t.ace_br13{border-top-left-radius : 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;}\t.ace_br14{border-top-right-radius : 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;}\t.ace_br15{border-top-left-radius : 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;}\t',"ace_editor.css");var h=function(t,e){var l=this;this.container=t||n.createElement("div"),this.$keepTextAreaAtCursor=!a.isOldIE,n.addCssClass(this.container,"ace_editor"),this.setTheme(e),this.$gutter=n.createElement("div"),this.$gutter.className="ace_gutter",this.container.appendChild(this.$gutter),this.scroller=n.createElement("div"),this.scroller.className="ace_scroller",this.container.appendChild(this.scroller),this.content=n.createElement("div"),this.content.className="ace_content",this.scroller.appendChild(this.content),this.$gutterLayer=new s(this.$gutter),this.$gutterLayer.on("changeGutterWidth",this.onGutterResize.bind(this)),this.$markerBack=new c(this.content);var i=this.$textLayer=new o(this.content);this.canvas=i.element,this.$markerFront=new c(this.content),this.$cursorLayer=new b(this.content),this.$horizScroll=!1,this.$vScroll=!1,this.scrollBar=this.scrollBarV=new m(this.container,this),this.scrollBarH=new r(this.container,this),this.scrollBarV.addEventListener("scroll",(function(t){l.$scrollAnimation||l.session.setScrollTop(t.data-l.scrollMargin.top)})),this.scrollBarH.addEventListener("scroll",(function(t){l.$scrollAnimation||l.session.setScrollLeft(t.data-l.scrollMargin.left)})),this.scrollTop=0,this.scrollLeft=0,this.cursorPos={row:0,column:0},this.$fontMetrics=new g(this.container),this.$textLayer.$setFontMetrics(this.$fontMetrics),this.$textLayer.addEventListener("changeCharacterSize",(function(t){l.updateCharacterSize(),l.onResize(!0,l.gutterWidth,l.$size.width,l.$size.height),l._signal("changeCharacterSize",t)})),this.$size={width:0,height:0,scrollerHeight:0,scrollerWidth:0,$dirty:!0},this.layerConfig={width:1,padding:0,firstRow:0,firstRowScreen:0,lastRow:0,lineHeight:0,characterWidth:0,minHeight:1,maxHeight:1,offset:0,height:1,gutterOffset:1},this.scrollMargin={left:0,right:0,top:0,bottom:0,v:0,h:0},this.$loop=new Z(this.$renderChanges.bind(this),this.container.ownerDocument.defaultView),this.$loop.schedule(this.CHANGE_FULL),this.updateCharacterSize(),this.setPadding(4),d.resetOptions(this),d._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,i.implement(this,W),this.updateCharacterSize=function(){this.$textLayer.allowBoldFonts!=this.$allowBoldFonts&&(this.$allowBoldFonts=this.$textLayer.allowBoldFonts,this.setStyle("ace_nobold",!this.$allowBoldFonts)),this.layerConfig.characterWidth=this.characterWidth=this.$textLayer.getCharacterWidth(),this.layerConfig.lineHeight=this.lineHeight=this.$textLayer.getLineHeight(),this.$updatePrintMargin()},this.setSession=function(t){this.session&&this.session.doc.off("changeNewLineMode",this.onChangeNewLineMode),this.session=t,t&&this.scrollMargin.top&&t.getScrollTop()<=0&&t.setScrollTop(-this.scrollMargin.top),this.$cursorLayer.setSession(t),this.$markerBack.setSession(t),this.$markerFront.setSession(t),this.$gutterLayer.setSession(t),this.$textLayer.setSession(t),t&&(this.$loop.schedule(this.CHANGE_FULL),this.session.$setFontMetrics(this.$fontMetrics),this.onChangeNewLineMode=this.onChangeNewLineMode.bind(this),this.onChangeNewLineMode(),this.session.doc.on("changeNewLineMode",this.onChangeNewLineMode))},this.updateLines=function(t,e,l){if(void 0===e&&(e=1/0),this.$changedLines?(this.$changedLines.firstRow>t&&(this.$changedLines.firstRow=t),this.$changedLines.lastRowthis.layerConfig.lastRow||this.$loop.schedule(this.CHANGE_LINES)},this.onChangeNewLineMode=function(){this.$loop.schedule(this.CHANGE_TEXT),this.$textLayer.$updateEolChar()},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(t){t?this.$renderChanges(this.CHANGE_FULL,!0):this.$loop.schedule(this.CHANGE_FULL)},this.updateFontSize=function(){this.$textLayer.checkForSizeChanges()},this.$changes=0,this.$updateSizeAsync=function(){this.$loop.pending?this.$size.$dirty=!0:this.onResize()},this.onResize=function(t,e,l,i){if(!(this.resizing>2)){this.resizing>0?this.resizing++:this.resizing=t?1:0;var n=this.container;i||(i=n.clientHeight||n.scrollHeight),l||(l=n.clientWidth||n.scrollWidth);var d=this.$updateCachedSize(t,e,l,i);if(!this.$size.scrollerHeight||!l&&!i)return this.resizing=0;t&&(this.$gutterLayer.$padding=null),t?this.$renderChanges(d|this.$changes,!0):this.$loop.schedule(d|this.$changes),this.resizing&&(this.resizing=0),this.scrollBarV.scrollLeft=this.scrollBarV.scrollTop=null}},this.$updateCachedSize=function(t,e,l,i){i-=this.$extraHeight||0;var n=0,d=this.$size,a={width:d.width,height:d.height,scrollerHeight:d.scrollerHeight,scrollerWidth:d.scrollerWidth};return i&&(t||d.height!=i)&&(d.height=i,n|=this.CHANGE_SIZE,d.scrollerHeight=d.height,this.$horizScroll&&(d.scrollerHeight-=this.scrollBarH.getHeight()),this.scrollBarV.element.style.bottom=this.scrollBarH.getHeight()+"px",n|=this.CHANGE_SCROLL),l&&(t||d.width!=l)&&(n|=this.CHANGE_SIZE,d.width=l,null==e&&(e=this.$showGutter?this.$gutter.offsetWidth:0),this.gutterWidth=e,this.scrollBarH.element.style.left=this.scroller.style.left=e+"px",d.scrollerWidth=Math.max(0,l-e-this.scrollBarV.getWidth()),this.scrollBarH.element.style.right=this.scroller.style.right=this.scrollBarV.getWidth()+"px",this.scroller.style.bottom=this.scrollBarH.getHeight()+"px",(this.session&&this.session.getUseWrapMode()&&this.adjustWrapLimit()||t)&&(n|=this.CHANGE_FULL)),d.$dirty=!l||!i,n&&this._signal("resize",a),n},this.onGutterResize=function(){var t=this.$showGutter?this.$gutter.offsetWidth:0;t!=this.gutterWidth&&(this.$changes|=this.$updateCachedSize(!0,t,this.$size.width,this.$size.height)),this.session.getUseWrapMode()&&this.adjustWrapLimit()||this.$size.$dirty?this.$loop.schedule(this.CHANGE_FULL):(this.$computeLayerConfig(),this.$loop.schedule(this.CHANGE_MARKER))},this.adjustWrapLimit=function(){var t=this.$size.scrollerWidth-2*this.$padding,e=Math.floor(t/this.characterWidth);return this.session.adjustWrapLimit(e,this.$showPrintMargin&&this.$printMarginColumn)},this.setAnimatedScroll=function(t){this.setOption("animatedScroll",t)},this.getAnimatedScroll=function(){return this.$animatedScroll},this.setShowInvisibles=function(t){this.setOption("showInvisibles",t)},this.getShowInvisibles=function(){return this.getOption("showInvisibles")},this.getDisplayIndentGuides=function(){return this.getOption("displayIndentGuides")},this.setDisplayIndentGuides=function(t){this.setOption("displayIndentGuides",t)},this.setShowPrintMargin=function(t){this.setOption("showPrintMargin",t)},this.getShowPrintMargin=function(){return this.getOption("showPrintMargin")},this.setPrintMarginColumn=function(t){this.setOption("printMarginColumn",t)},this.getPrintMarginColumn=function(){return this.getOption("printMarginColumn")},this.getShowGutter=function(){return this.getOption("showGutter")},this.setShowGutter=function(t){return this.setOption("showGutter",t)},this.getFadeFoldWidgets=function(){return this.getOption("fadeFoldWidgets")},this.setFadeFoldWidgets=function(t){this.setOption("fadeFoldWidgets",t)},this.setHighlightGutterLine=function(t){this.setOption("highlightGutterLine",t)},this.getHighlightGutterLine=function(){return this.getOption("highlightGutterLine")},this.$updateGutterLineHighlight=function(){var t=this.$cursorLayer.$pixelPos,e=this.layerConfig.lineHeight;if(this.session.getUseWrapMode()){var l=this.session.selection.getCursor();l.column=0,t=this.$cursorLayer.getPixelPosition(l,!0),e*=this.session.getRowLength(l.row)}this.$gutterLineHighlight.style.top=t.top-this.layerConfig.offset+"px",this.$gutterLineHighlight.style.height=e+"px"},this.$updatePrintMargin=function(){if(this.$showPrintMargin||this.$printMarginEl){if(!this.$printMarginEl){var t=n.createElement("div");t.className="ace_layer ace_print-margin-layer",this.$printMarginEl=n.createElement("div"),this.$printMarginEl.className="ace_print-margin",t.appendChild(this.$printMarginEl),this.content.insertBefore(t,this.content.firstChild)}var e=this.$printMarginEl.style;e.left=this.characterWidth*this.$printMarginColumn+this.$padding+"px",e.visibility=this.$showPrintMargin?"visible":"hidden",this.session&&-1==this.session.$wrap&&this.adjustWrapLimit()}},this.getContainerElement=function(){return this.container},this.getMouseEventTarget=function(){return this.scroller},this.getTextAreaContainer=function(){return this.container},this.$moveTextAreaToCursor=function(){if(this.$keepTextAreaAtCursor){var t=this.layerConfig,e=this.$cursorLayer.$pixelPos.top,l=this.$cursorLayer.$pixelPos.left;e-=t.offset;var i=this.textarea.style,n=this.lineHeight;if(e<0||e>t.height-n)i.top=i.left="0";else{var d=this.characterWidth;if(this.$composition){var a=this.textarea.value.replace(/^\x01+/,"");d*=this.session.$getStringScreenWidth(a)[0]+2,n+=2}(l-=this.scrollLeft)>this.$size.scrollerWidth-d&&(l=this.$size.scrollerWidth-d),l+=this.gutterWidth,i.height=n+"px",i.width=d+"px",i.left=Math.min(l,this.$size.scrollerWidth-d)+"px",i.top=Math.min(e,this.$size.height-n)+"px"}}},this.getFirstVisibleRow=function(){return this.layerConfig.firstRow},this.getFirstFullyVisibleRow=function(){return this.layerConfig.firstRow+(0===this.layerConfig.offset?0:1)},this.getLastFullyVisibleRow=function(){var t=this.layerConfig,e=t.lastRow;return this.session.documentToScreenRow(e,0)*t.lineHeight-this.session.getScrollTop()>t.height-t.lineHeight?e-1:e},this.getLastVisibleRow=function(){return this.layerConfig.lastRow},this.$padding=null,this.setPadding=function(t){this.$padding=t,this.$textLayer.setPadding(t),this.$cursorLayer.setPadding(t),this.$markerFront.setPadding(t),this.$markerBack.setPadding(t),this.$loop.schedule(this.CHANGE_FULL),this.$updatePrintMargin()},this.setScrollMargin=function(t,e,l,i){var n=this.scrollMargin;n.top=0|t,n.bottom=0|e,n.right=0|i,n.left=0|l,n.v=n.top+n.bottom,n.h=n.left+n.right,n.top&&this.scrollTop<=0&&this.session&&this.session.setScrollTop(-n.top),this.updateFull()},this.getHScrollBarAlwaysVisible=function(){return this.$hScrollBarAlwaysVisible},this.setHScrollBarAlwaysVisible=function(t){this.setOption("hScrollBarAlwaysVisible",t)},this.getVScrollBarAlwaysVisible=function(){return this.$vScrollBarAlwaysVisible},this.setVScrollBarAlwaysVisible=function(t){this.setOption("vScrollBarAlwaysVisible",t)},this.$updateScrollBarV=function(){var t=this.layerConfig.maxHeight,e=this.$size.scrollerHeight;!this.$maxLines&&this.$scrollPastEnd&&(t-=(e-this.lineHeight)*this.$scrollPastEnd,this.scrollTop>t-e&&(t=this.scrollTop+e,this.scrollBarV.scrollTop=null)),this.scrollBarV.setScrollHeight(t+this.scrollMargin.v),this.scrollBarV.setScrollTop(this.scrollTop+this.scrollMargin.top)},this.$updateScrollBarH=function(){this.scrollBarH.setScrollWidth(this.layerConfig.width+2*this.$padding+this.scrollMargin.h),this.scrollBarH.setScrollLeft(this.scrollLeft+this.scrollMargin.left)},this.$frozen=!1,this.freeze=function(){this.$frozen=!0},this.unfreeze=function(){this.$frozen=!1},this.$renderChanges=function(t,e){if(this.$changes&&(t|=this.$changes,this.$changes=0),this.session&&this.container.offsetWidth&&!this.$frozen&&(t||e)){if(this.$size.$dirty)return this.$changes|=t,this.onResize(!0);this.lineHeight||this.$textLayer.checkForSizeChanges(),this._signal("beforeRender");var l=this.layerConfig;if(t&this.CHANGE_FULL||t&this.CHANGE_SIZE||t&this.CHANGE_TEXT||t&this.CHANGE_LINES||t&this.CHANGE_SCROLL||t&this.CHANGE_H_SCROLL){if(t|=this.$computeLayerConfig(),l.firstRow!=this.layerConfig.firstRow&&l.firstRowScreen==this.layerConfig.firstRowScreen){var i=this.scrollTop+(l.firstRow-this.layerConfig.firstRow)*this.lineHeight;i>0&&(this.scrollTop=i,t|=this.CHANGE_SCROLL,t|=this.$computeLayerConfig())}l=this.layerConfig,this.$updateScrollBarV(),t&this.CHANGE_H_SCROLL&&this.$updateScrollBarH(),this.$gutterLayer.element.style.marginTop=-l.offset+"px",this.content.style.marginTop=-l.offset+"px",this.content.style.width=l.width+2*this.$padding+"px",this.content.style.height=l.minHeight+"px"}if(t&this.CHANGE_H_SCROLL&&(this.content.style.marginLeft=-this.scrollLeft+"px",this.scroller.className=this.scrollLeft<=0?"ace_scroller":"ace_scroller ace_scroll-left"),t&this.CHANGE_FULL)return this.$textLayer.update(l),this.$showGutter&&this.$gutterLayer.update(l),this.$markerBack.update(l),this.$markerFront.update(l),this.$cursorLayer.update(l),this.$moveTextAreaToCursor(),this.$highlightGutterLine&&this.$updateGutterLineHighlight(),void this._signal("afterRender");if(t&this.CHANGE_SCROLL)return t&this.CHANGE_TEXT||t&this.CHANGE_LINES?this.$textLayer.update(l):this.$textLayer.scrollLines(l),this.$showGutter&&this.$gutterLayer.update(l),this.$markerBack.update(l),this.$markerFront.update(l),this.$cursorLayer.update(l),this.$highlightGutterLine&&this.$updateGutterLineHighlight(),this.$moveTextAreaToCursor(),void this._signal("afterRender");t&this.CHANGE_TEXT?(this.$textLayer.update(l),this.$showGutter&&this.$gutterLayer.update(l)):t&this.CHANGE_LINES?(this.$updateLines()||t&this.CHANGE_GUTTER&&this.$showGutter)&&this.$gutterLayer.update(l):(t&this.CHANGE_TEXT||t&this.CHANGE_GUTTER)&&this.$showGutter&&this.$gutterLayer.update(l),t&this.CHANGE_CURSOR&&(this.$cursorLayer.update(l),this.$moveTextAreaToCursor(),this.$highlightGutterLine&&this.$updateGutterLineHighlight()),t&(this.CHANGE_MARKER|this.CHANGE_MARKER_FRONT)&&this.$markerFront.update(l),t&(this.CHANGE_MARKER|this.CHANGE_MARKER_BACK)&&this.$markerBack.update(l),this._signal("afterRender")}else this.$changes|=t},this.$autosize=function(){var t=this.session.getScreenLength()*this.lineHeight,e=this.$maxLines*this.lineHeight,l=Math.max((this.$minLines||1)*this.lineHeight,Math.min(e,t))+this.scrollMargin.v+(this.$extraHeight||0);this.$horizScroll&&(l+=this.scrollBarH.getHeight());var i=t>e;if(l!=this.desiredHeight||this.$size.height!=this.desiredHeight||i!=this.$vScroll){i!=this.$vScroll&&(this.$vScroll=i,this.scrollBarV.setVisible(i));var n=this.container.clientWidth;this.container.style.height=l+"px",this.$updateCachedSize(!0,this.$gutterWidth,n,l),this.desiredHeight=l,this._signal("autosize")}},this.$computeLayerConfig=function(){var t=this.session,e=this.$size,l=e.height<=2*this.lineHeight,i=this.session.getScreenLength()*this.lineHeight,n=this.$getLongestLine(),d=!l&&(this.$hScrollBarAlwaysVisible||e.scrollerWidth-n-2*this.$padding<0),a=this.$horizScroll!==d;a&&(this.$horizScroll=d,this.scrollBarH.setVisible(d));var s=this.$vScroll;this.$maxLines&&this.lineHeight>1&&this.$autosize();var c=this.scrollTop%this.lineHeight,o=e.scrollerHeight+this.lineHeight,b=!this.$maxLines&&this.$scrollPastEnd?(e.scrollerHeight-this.lineHeight)*this.$scrollPastEnd:0;i+=b;var r=this.scrollMargin;this.session.setScrollTop(Math.max(-r.top,Math.min(this.scrollTop,i-e.scrollerHeight+r.bottom))),this.session.setScrollLeft(Math.max(-r.left,Math.min(this.scrollLeft,n+2*this.$padding-e.scrollerWidth+r.right)));var m=!l&&(this.$vScrollBarAlwaysVisible||e.scrollerHeight-i+b<0||this.scrollTop>r.top),Z=s!==m;Z&&(this.$vScroll=m,this.scrollBarV.setVisible(m));var g,W,h=Math.ceil(o/this.lineHeight)-1,N=Math.max(0,Math.round((this.scrollTop-c)/this.lineHeight)),y=N+h,I=this.lineHeight;N=t.screenToDocumentRow(N,0);var G=t.getFoldLine(N);G&&(N=G.start.row),g=t.documentToScreenRow(N,0),W=t.getRowLength(N)*I,y=Math.min(t.screenToDocumentRow(y,0),t.getLength()-1),o=e.scrollerHeight+t.getRowLength(y)*I+W,c=this.scrollTop-g*I;var M=0;return this.layerConfig.width!=n&&(M=this.CHANGE_H_SCROLL),(a||Z)&&(M=this.$updateCachedSize(!0,this.gutterWidth,e.width,e.height),this._signal("scrollbarVisibilityChanged"),Z&&(n=this.$getLongestLine())),this.layerConfig={width:n,padding:this.$padding,firstRow:N,firstRowScreen:g,lastRow:y,lineHeight:I,characterWidth:this.characterWidth,minHeight:o,maxHeight:i,offset:c,gutterOffset:Math.max(0,Math.ceil((c+e.height-e.scrollerHeight)/I)),height:this.$size.scrollerHeight},M},this.$updateLines=function(){var t=this.$changedLines.firstRow,e=this.$changedLines.lastRow;this.$changedLines=null;var l=this.layerConfig;if(!(t>l.lastRow+1||ed?(e&&c+a>d+this.lineHeight&&(d-=e*this.$size.scrollerHeight),0===d&&(d=-this.scrollMargin.top),this.session.setScrollTop(d)):c+this.$size.scrollerHeight-sn?(n=1-this.scrollMargin.top||e>0&&this.session.getScrollTop()+this.$size.scrollerHeight-this.layerConfig.maxHeight<-1+this.scrollMargin.bottom||t<0&&this.session.getScrollLeft()>=1-this.scrollMargin.left||t>0&&this.session.getScrollLeft()+this.$size.scrollerWidth-this.layerConfig.width<-1+this.scrollMargin.right||void 0},this.pixelToScreenCoordinates=function(t,e){var l=this.scroller.getBoundingClientRect(),i=(t+this.scrollLeft-l.left-this.$padding)/this.characterWidth,n=Math.floor((e+this.scrollTop-l.top)/this.lineHeight),d=Math.round(i);return{row:n,column:d,side:i-d>0?1:-1}},this.screenToTextCoordinates=function(t,e){var l=this.scroller.getBoundingClientRect(),i=Math.round((t+this.scrollLeft-l.left-this.$padding)/this.characterWidth),n=(e+this.scrollTop-l.top)/this.lineHeight;return this.session.screenToDocumentPosition(n,Math.max(i,0))},this.textToScreenCoordinates=function(t,e){var l=this.scroller.getBoundingClientRect(),i=this.session.documentToScreenPosition(t,e),n=this.$padding+Math.round(i.column*this.characterWidth),d=i.row*this.lineHeight;return{pageX:l.left+n-this.scrollLeft,pageY:l.top+d-this.scrollTop}},this.visualizeFocus=function(){n.addCssClass(this.container,"ace_focus")},this.visualizeBlur=function(){n.removeCssClass(this.container,"ace_focus")},this.showComposition=function(t){this.$composition||(this.$composition={keepTextAreaAtCursor:this.$keepTextAreaAtCursor,cssText:this.textarea.style.cssText}),this.$keepTextAreaAtCursor=!0,n.addCssClass(this.textarea,"ace_composition"),this.textarea.style.cssText="",this.$moveTextAreaToCursor()},this.setCompositionText=function(t){this.$moveTextAreaToCursor()},this.hideComposition=function(){this.$composition&&(n.removeCssClass(this.textarea,"ace_composition"),this.$keepTextAreaAtCursor=this.$composition.keepTextAreaAtCursor,this.textarea.style.cssText=this.$composition.cssText,this.$composition=null)},this.setTheme=function(t,e){var l=this;if(this.$themeId=t,l._dispatchEvent("themeChange",{theme:t}),t&&"string"!=typeof t)a(t);else{var i=t||this.$options.theme.initialValue;d.loadModule(["theme",i],a)}function a(i){if(l.$themeId!=t)return e&&e();if(i.cssClass){n.importCssString(i.cssText,i.cssClass,l.container.ownerDocument),l.theme&&n.removeCssClass(l.container,l.theme.cssClass);var d="padding"in i?i.padding:"padding"in(l.theme||{})?4:l.$padding;l.$padding&&d!=l.$padding&&l.setPadding(d),l.$theme=i.cssClass,l.theme=i,n.addCssClass(l.container,i.cssClass),n.setCssClass(l.container,"ace_dark",i.isDark),l.$size&&(l.$size.width=0,l.$updateSizeAsync()),l._dispatchEvent("themeLoaded",{theme:i}),e&&e()}}},this.getTheme=function(){return this.$themeId},this.setStyle=function(t,e){n.setCssClass(this.container,t,!1!==e)},this.unsetStyle=function(t){n.removeCssClass(this.container,t)},this.setCursorStyle=function(t){this.scroller.style.cursor!=t&&(this.scroller.style.cursor=t)},this.setMouseCursor=function(t){this.scroller.style.cursor=t},this.destroy=function(){this.$textLayer.destroy(),this.$cursorLayer.destroy()}}).call(h.prototype),d.defineOptions(h.prototype,"renderer",{animatedScroll:{initialValue:!1},showInvisibles:{set:function(t){this.$textLayer.setShowInvisibles(t)&&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(t){"number"==typeof t&&(this.$printMarginColumn=t),this.$showPrintMargin=!!t,this.$updatePrintMargin()},get:function(){return this.$showPrintMargin&&this.$printMarginColumn}},showGutter:{set:function(t){this.$gutter.style.display=t?"block":"none",this.$loop.schedule(this.CHANGE_FULL),this.onGutterResize()},initialValue:!0},fadeFoldWidgets:{set:function(t){n.setCssClass(this.$gutter,"ace_fade-fold-widgets",t)},initialValue:!1},showFoldWidgets:{set:function(t){this.$gutterLayer.setShowFoldWidgets(t)},initialValue:!0},showLineNumbers:{set:function(t){this.$gutterLayer.setShowLineNumbers(t),this.$loop.schedule(this.CHANGE_GUTTER)},initialValue:!0},displayIndentGuides:{set:function(t){this.$textLayer.setDisplayIndentGuides(t)&&this.$loop.schedule(this.CHANGE_TEXT)},initialValue:!0},highlightGutterLine:{set:function(t){if(!this.$gutterLineHighlight)return this.$gutterLineHighlight=n.createElement("div"),this.$gutterLineHighlight.className="ace_gutter-active-line",void this.$gutter.appendChild(this.$gutterLineHighlight);this.$gutterLineHighlight.style.display=t?"":"none",this.$cursorLayer.$pixelPos&&this.$updateGutterLineHighlight()},initialValue:!1,value:!0},hScrollBarAlwaysVisible:{set:function(t){this.$hScrollBarAlwaysVisible&&this.$horizScroll||this.$loop.schedule(this.CHANGE_SCROLL)},initialValue:!1},vScrollBarAlwaysVisible:{set:function(t){this.$vScrollBarAlwaysVisible&&this.$vScroll||this.$loop.schedule(this.CHANGE_SCROLL)},initialValue:!1},fontSize:{set:function(t){"number"==typeof t&&(t+="px"),this.container.style.fontSize=t,this.updateFontSize()},initialValue:12},fontFamily:{set:function(t){this.container.style.fontFamily=t,this.updateFontSize()}},maxLines:{set:function(t){this.updateFull()}},minLines:{set:function(t){this.updateFull()}},scrollPastEnd:{set:function(t){t=+t||0,this.$scrollPastEnd!=t&&(this.$scrollPastEnd=t,this.$loop.schedule(this.CHANGE_SCROLL))},initialValue:0,handlesSet:!0},fixedWidthGutter:{set:function(t){this.$gutterLayer.$fixedWidth=!!t,this.$loop.schedule(this.CHANGE_GUTTER)}},theme:{set:function(t){this.setTheme(t)},get:function(){return this.$themeId||this.theme},initialValue:"./theme/textmate",handlesSet:!0}}),e.VirtualRenderer=h})),ace.define("ace/worker/worker_client",["require","exports","module","ace/lib/oop","ace/lib/net","ace/lib/event_emitter","ace/config"],(function(t,e,i){"use strict";var n=t("../lib/oop"),d=t("../lib/net"),a=t("../lib/event_emitter").EventEmitter,s=t("../config"),c=function(e,i,n,d){if(this.$sendDeltaQueue=this.$sendDeltaQueue.bind(this),this.changeListener=this.changeListener.bind(this),this.onMessage=this.onMessage.bind(this),t.nameToUrl&&!t.toUrl&&(t.toUrl=t.nameToUrl),s.get("packaged")||!t.toUrl)d=d||s.moduleUrl(i.id,"worker");else{var a=this.$normalizePath;d=d||a(t.toUrl("ace/worker/worker.js",null,"_"));var c={};e.forEach((function(e){c[e]=a(t.toUrl(e,null,"_").replace(/(\.js)?(\?.*)?$/,""))}))}try{var o=i.src,b=new(l(66))([o],{type:"application/javascript"}),r=(window.URL||window.webkitURL).createObjectURL(b);this.$worker=new Worker(r)}catch(t){if(!(t instanceof window.DOMException))throw t;b=this.$workerBlob(d);var m=window.URL||window.webkitURL,Z=m.createObjectURL(b);this.$worker=new Worker(Z),m.revokeObjectURL(Z)}this.$worker.postMessage({init:!0,tlns:c,module:i.id,classname:n}),this.callbackId=1,this.callbacks={},this.$worker.onmessage=this.onMessage};(function(){n.implement(this,a),this.onMessage=function(t){var e=t.data;switch(e.type){case"event":this._signal(e.name,{data:e.data});break;case"call":var l=this.callbacks[e.id];l&&(l(e.data),delete this.callbacks[e.id]);break;case"error":this.reportError(e.data);break;case"log":window.console&&console.log&&console.log.apply(console,e.data)}},this.reportError=function(t){window.console&&console.error&&console.error(t)},this.$normalizePath=function(t){return d.qualifyURL(t)},this.terminate=function(){this._signal("terminate",{}),this.deltaQueue=null,this.$worker.terminate(),this.$worker=null,this.$doc&&this.$doc.off("change",this.changeListener),this.$doc=null},this.send=function(t,e){this.$worker.postMessage({command:t,args:e})},this.call=function(t,e,l){if(l){var i=this.callbackId++;this.callbacks[i]=l,e.push(i)}this.send(t,e)},this.emit=function(t,e){try{this.$worker.postMessage({event:t,data:{data:e.data}})}catch(t){console.error(t.stack)}},this.attachToDocument=function(t){this.$doc&&this.terminate(),this.$doc=t,this.call("setValue",[t.getValue()]),t.on("change",this.changeListener)},this.changeListener=function(t){this.deltaQueue||(this.deltaQueue=[],setTimeout(this.$sendDeltaQueue,0)),"insert"==t.action?this.deltaQueue.push(t.start,t.lines):this.deltaQueue.push(t.start,t.end)},this.$sendDeltaQueue=function(){var t=this.deltaQueue;t&&(this.deltaQueue=null,t.length>50&&t.length>this.$doc.getLength()>>1?this.call("setValue",[this.$doc.getValue()]):this.emit("change",{data:t}))},this.$workerBlob=function(t){var e="importScripts('"+d.qualifyURL(t)+"');";try{return new Blob([e],{type:"application/javascript"})}catch(t){var l=new(window.BlobBuilder||window.WebKitBlobBuilder||window.MozBlobBuilder);return l.append(e),l.getBlob("application/javascript")}}}).call(c.prototype);var o=function(t,e,l){this.$sendDeltaQueue=this.$sendDeltaQueue.bind(this),this.changeListener=this.changeListener.bind(this),this.callbackId=1,this.callbacks={},this.messageBuffer=[];var i=null,n=!1,d=Object.create(a),c=this;this.$worker={},this.$worker.terminate=function(){},this.$worker.postMessage=function(t){c.messageBuffer.push(t),i&&(n?setTimeout(o):o())},this.setEmitSync=function(t){n=t};var o=function(){var t=c.messageBuffer.shift();t.command?i[t.command].apply(i,t.args):t.event&&d._signal(t.event,t.data)};d.postMessage=function(t){c.onMessage({data:t})},d.callback=function(t,e){this.postMessage({type:"call",id:e,data:t})},d.emit=function(t,e){this.postMessage({type:"event",name:t,data:e})},s.loadModule(["worker",e],(function(t){for(i=new t[l](d);c.messageBuffer.length;)o()}))};o.prototype=c.prototype,e.UIWorkerClient=o,e.WorkerClient=c})),ace.define("ace/placeholder",["require","exports","module","ace/range","ace/lib/event_emitter","ace/lib/oop"],(function(t,e,l){"use strict";var i=t("./range").Range,n=t("./lib/event_emitter").EventEmitter,d=t("./lib/oop"),a=function(t,e,l,i,n,d){var a=this;this.length=e,this.session=t,this.doc=t.getDocument(),this.mainClass=n,this.othersClass=d,this.$onUpdate=this.onUpdate.bind(this),this.doc.on("change",this.$onUpdate),this.$others=i,this.$onCursorChange=function(){setTimeout((function(){a.onCursorChange()}))},this.$pos=l;var s=t.getUndoManager().$undoStack||t.getUndoManager().$undostack||{length:-1};this.$undoStackDepth=s.length,this.setup(),t.selection.on("changeCursor",this.$onCursorChange)};(function(){d.implement(this,n),this.setup=function(){var t=this,e=this.doc,l=this.session;this.selectionBefore=l.selection.toJSON(),l.selection.inMultiSelectMode&&l.selection.toSingleRange(),this.pos=e.createAnchor(this.$pos.row,this.$pos.column);var n=this.pos;n.$insertRight=!0,n.detach(),n.markerId=l.addMarker(new i(n.row,n.column,n.row,n.column+this.length),this.mainClass,null,!1),this.others=[],this.$others.forEach((function(l){var i=e.createAnchor(l.row,l.column);i.$insertRight=!0,i.detach(),t.others.push(i)})),l.setUndoSelect(!1)},this.showOtherMarkers=function(){if(!this.othersActive){var t=this.session,e=this;this.othersActive=!0,this.others.forEach((function(l){l.markerId=t.addMarker(new i(l.row,l.column,l.row,l.column+e.length),e.othersClass,null,!1)}))}},this.hideOtherMarkers=function(){if(this.othersActive){this.othersActive=!1;for(var t=0;t=this.pos.column&&e.start.column<=this.pos.column+this.length+1,d=e.start.column-this.pos.column;if(this.updateAnchors(t),n&&(this.length+=l),n&&!this.session.$fromUndo)if("insert"===t.action)for(var a=this.others.length-1;a>=0;a--){var s={row:(c=this.others[a]).row,column:c.column+d};this.doc.insertMergedLines(s,t.lines)}else if("remove"===t.action)for(a=this.others.length-1;a>=0;a--){var c;s={row:(c=this.others[a]).row,column:c.column+d},this.doc.remove(new i(s.row,s.column,s.row,s.column-l))}this.$updating=!1,this.updateMarkers()}},this.updateAnchors=function(t){this.pos.onChange(t);for(var e=this.others.length;e--;)this.others[e].onChange(t);this.updateMarkers()},this.updateMarkers=function(){if(!this.$updating){var t=this,e=this.session,l=function(l,n){e.removeMarker(l.markerId),l.markerId=e.addMarker(new i(l.row,l.column,l.row,l.column+t.length),n,null,!1)};l(this.pos,this.mainClass);for(var n=this.others.length;n--;)l(this.others[n],this.othersClass)}},this.onCursorChange=function(t){if(!this.$updating&&this.session){var e=this.session.selection.getCursor();e.row===this.pos.row&&e.column>=this.pos.column&&e.column<=this.pos.column+this.length?(this.showOtherMarkers(),this._emit("cursorEnter",t)):(this.hideOtherMarkers(),this._emit("cursorLeave",t))}},this.detach=function(){this.session.removeMarker(this.pos&&this.pos.markerId),this.hideOtherMarkers(),this.doc.removeEventListener("change",this.$onUpdate),this.session.selection.removeEventListener("changeCursor",this.$onCursorChange),this.session.setUndoSelect(!0),this.session=null},this.cancel=function(){if(-1!==this.$undoStackDepth){for(var t=this.session.getUndoManager(),e=(t.$undoStack||t.$undostack).length-this.$undoStackDepth,l=0;l1&&!this.inMultiSelectMode&&(this._signal("multiSelect"),this.inMultiSelectMode=!0,this.session.$undoSelect=!1,this.rangeList.attach(this.session)),e||this.fromOrientedRange(t)}},this.toSingleRange=function(t){t=t||this.ranges[0];var e=this.rangeList.removeAll();e.length&&this.$onRemoveRange(e),t&&this.fromOrientedRange(t)},this.substractPoint=function(t){var e=this.rangeList.substractPoint(t);if(e)return this.$onRemoveRange(e),e[0]},this.mergeOverlappingRanges=function(){var t=this.rangeList.merge();t.length?this.$onRemoveRange(t):this.ranges[0]&&this.fromOrientedRange(this.ranges[0])},this.$onAddRange=function(t){this.rangeCount=this.rangeList.ranges.length,this.ranges.unshift(t),this._signal("addRange",{range:t})},this.$onRemoveRange=function(t){if(this.rangeCount=this.rangeList.ranges.length,1==this.rangeCount&&this.inMultiSelectMode){var e=this.rangeList.ranges.pop();t.push(e),this.rangeCount=0}for(var l=t.length;l--;){var i=this.ranges.indexOf(t[l]);this.ranges.splice(i,1)}this._signal("removeRange",{ranges:t}),0===this.rangeCount&&this.inMultiSelectMode&&(this.inMultiSelectMode=!1,this._signal("singleSelect"),this.session.$undoSelect=!0,this.rangeList.detach(this.session)),(e=e||this.ranges[0])&&!e.isEqual(this.getRange())&&this.fromOrientedRange(e)},this.$initRangeList=function(){this.rangeList||(this.rangeList=new i,this.ranges=[],this.rangeCount=0)},this.getAllRanges=function(){return this.rangeCount?this.rangeList.ranges.concat():[this.getRange()]},this.splitIntoLines=function(){if(this.rangeCount>1){var t=this.rangeList.ranges,e=t[t.length-1],l=n.fromPoints(t[0].start,e.end);this.toSingleRange(),this.setSelectionRange(l,e.cursor==e.start)}else{l=this.getRange();var i=this.isBackwards(),d=l.start.row,a=l.end.row;if(d==a){if(i)var s=l.end,c=l.start;else s=l.start,c=l.end;return this.addRange(n.fromPoints(c,c)),void this.addRange(n.fromPoints(s,s))}var o=[],b=this.getLineRange(d,!0);b.start.column=l.start.column,o.push(b);for(var r=d+1;r1){var t=this.rangeList.ranges,e=t[t.length-1],l=n.fromPoints(t[0].start,e.end);this.toSingleRange(),this.setSelectionRange(l,e.cursor==e.start)}else{var i=this.session.documentToScreenPosition(this.selectionLead),d=this.session.documentToScreenPosition(this.selectionAnchor);this.rectangularRangeBlock(i,d).forEach(this.addRange,this)}},this.rectangularRangeBlock=function(t,e,l){var i=[],d=t.column0;)h--;if(h>0)for(var N=0;i[N].isEmpty();)N++;for(var y=h;y>=N;y--)i[y].isEmpty()&&i.splice(y,1)}return i}}.call(d.prototype);var m=t("./editor").Editor;function Z(t){t.$multiselectOnSessionChange||(t.$onAddRange=t.$onAddRange.bind(t),t.$onRemoveRange=t.$onRemoveRange.bind(t),t.$onMultiSelect=t.$onMultiSelect.bind(t),t.$onSingleSelect=t.$onSingleSelect.bind(t),t.$multiselectOnSessionChange=e.onSessionChange.bind(t),t.$checkMultiselectChange=t.$checkMultiselectChange.bind(t),t.$multiselectOnSessionChange(t),t.on("changeSession",t.$multiselectOnSessionChange),t.on("mousedown",a),t.commands.addCommands(o.defaultCommands),function(t){var e=t.textInput.getElement(),l=!1;function i(e){l&&(t.renderer.setMouseCursor(""),l=!1)}s.addListener(e,"keydown",(function(e){var n=18==e.keyCode&&!(e.ctrlKey||e.shiftKey||e.metaKey);t.$blockSelectEnabled&&n?l||(t.renderer.setMouseCursor("crosshair"),l=!0):l&&i()})),s.addListener(e,"keyup",i),s.addListener(e,"blur",i)}(t))}(function(){this.updateSelectionMarkers=function(){this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.addSelectionMarker=function(t){t.cursor||(t.cursor=t.end);var e=this.getSelectionStyle();return t.marker=this.session.addMarker(t,"ace_selection",e),this.session.$selectionMarkers.push(t),this.session.selectionMarkerCount=this.session.$selectionMarkers.length,t},this.removeSelectionMarker=function(t){if(t.marker){this.session.removeMarker(t.marker);var e=this.session.$selectionMarkers.indexOf(t);-1!=e&&this.session.$selectionMarkers.splice(e,1),this.session.selectionMarkerCount=this.session.$selectionMarkers.length}},this.removeSelectionMarkers=function(t){for(var e=this.session.$selectionMarkers,l=t.length;l--;){var i=t[l];if(i.marker){this.session.removeMarker(i.marker);var n=e.indexOf(i);-1!=n&&e.splice(n,1)}}this.session.selectionMarkerCount=e.length},this.$onAddRange=function(t){this.addSelectionMarker(t.range),this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.$onRemoveRange=function(t){this.removeSelectionMarkers(t.ranges),this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.$onMultiSelect=function(t){this.inMultiSelectMode||(this.inMultiSelectMode=!0,this.setStyle("ace_multiselect"),this.keyBinding.addKeyboardHandler(o.keyboardHandler),this.commands.setDefaultHandler("exec",this.$onMultiSelectExec),this.renderer.updateCursor(),this.renderer.updateBackMarkers())},this.$onSingleSelect=function(t){this.session.multiSelect.inVirtualMode||(this.inMultiSelectMode=!1,this.unsetStyle("ace_multiselect"),this.keyBinding.removeKeyboardHandler(o.keyboardHandler),this.commands.removeDefaultHandler("exec",this.$onMultiSelectExec),this.renderer.updateCursor(),this.renderer.updateBackMarkers(),this._emit("changeSelection"))},this.$onMultiSelectExec=function(t){var e=t.command,l=t.editor;if(l.multiSelect){if(e.multiSelectAction)"forEach"==e.multiSelectAction?i=l.forEachSelection(e,t.args):"forEachLine"==e.multiSelectAction?i=l.forEachSelection(e,t.args,!0):"single"==e.multiSelectAction?(l.exitMultiSelectMode(),i=e.exec(l,t.args||{})):i=e.multiSelectAction(l,t.args||{});else{var i=e.exec(l,t.args||{});l.multiSelect.addRange(l.multiSelect.toOrientedRange()),l.multiSelect.mergeOverlappingRanges()}return i}},this.forEachSelection=function(t,e,l){if(!this.inVirtualSelectionMode){var i,n=l&&l.keepOrder,a=1==l||l&&l.$byLines,s=this.session,c=this.selection,o=c.rangeList,b=(n?c:o).ranges;if(!b.length)return t.exec?t.exec(this,e||{}):t(this,e||{});var r=c._eventRegistry;c._eventRegistry={};var m=new d(s);this.inVirtualSelectionMode=!0;for(var Z=b.length;Z--;){if(a)for(;Z>0&&b[Z].start.row==b[Z-1].end.row;)Z--;m.fromOrientedRange(b[Z]),m.index=Z,this.selection=s.selection=m;var g=t.exec?t.exec(this,e||{}):t(this,e||{});i||void 0===g||(i=g),m.toOrientedRange(b[Z])}m.detach(),this.selection=s.selection=c,this.inVirtualSelectionMode=!1,c._eventRegistry=r,c.mergeOverlappingRanges();var W=this.renderer.$scrollAnimation;return this.onCursorChange(),this.onSelectionChange(),W&&W.from==W.to&&this.renderer.animateScrolling(W.from),i}},this.exitMultiSelectMode=function(){this.inMultiSelectMode&&!this.inVirtualSelectionMode&&this.multiSelect.toSingleRange()},this.getSelectedText=function(){var t="";if(this.inMultiSelectMode&&!this.inVirtualSelectionMode){for(var e=this.multiSelect.rangeList.ranges,l=[],i=0;ia&&(a=l.column),ib?t.insert(i,c.stringRepeat(" ",d-b)):t.remove(new n(i.row,i.column,i.row,i.column-d+b)),e.start.column=e.end.column=a,e.start.row=e.end.row=i.row,e.cursor=e.end})),e.fromOrientedRange(l[0]),this.renderer.updateCursor(),this.renderer.updateBackMarkers()}else{var b=this.selection.getRange(),r=b.start.row,m=b.end.row,Z=r==m;if(Z){var g,W=this.session.getLength();do{g=this.session.getLine(m)}while(/[=:]/.test(g)&&++m0);r<0&&(r=0),m>=W&&(m=W-1)}var h=this.session.removeFullLines(r,m);h=this.$reAlignText(h,Z),this.session.insert({row:r,column:0},h.join("\n")+"\n"),Z||(b.start.column=0,b.end.column=h[h.length-1].length),this.selection.setRange(b)}},this.$reAlignText=function(t,e){var l,i,n,d=!0,a=!0;return t.map((function(t){var e=t.match(/(\s*)(.*?)(\s*)([=:].*)/);return e?null==l?(l=e[1].length,i=e[2].length,n=e[3].length,e):(l+i+n!=e[1].length+e[2].length+e[3].length&&(a=!1),l!=e[1].length&&(d=!1),l>e[1].length&&(l=e[1].length),ie[3].length&&(n=e[3].length),e):[t]})).map(e?o:d?a?function(t){return t[2]?s(l+i-t[2].length)+t[2]+s(n)+t[4].replace(/^([=:])\s+/,"$1 "):t[0]}:o:function(t){return t[2]?s(l)+t[2]+s(n)+t[4].replace(/^([=:])\s+/,"$1 "):t[0]});function s(t){return c.stringRepeat(" ",t)}function o(t){return t[2]?s(l)+t[2]+s(i-t[2].length+n)+t[4].replace(/^([=:])\s+/,"$1 "):t[0]}}}).call(m.prototype),e.onSessionChange=function(t){var e=t.session;e&&!e.multiSelect&&(e.$selectionMarkers=[],e.selection.$initRangeList(),e.multiSelect=e.selection),this.multiSelect=e&&e.multiSelect;var l=t.oldSession;l&&(l.multiSelect.off("addRange",this.$onAddRange),l.multiSelect.off("removeRange",this.$onRemoveRange),l.multiSelect.off("multiSelect",this.$onMultiSelect),l.multiSelect.off("singleSelect",this.$onSingleSelect),l.multiSelect.lead.off("change",this.$checkMultiselectChange),l.multiSelect.anchor.off("change",this.$checkMultiselectChange)),e&&(e.multiSelect.on("addRange",this.$onAddRange),e.multiSelect.on("removeRange",this.$onRemoveRange),e.multiSelect.on("multiSelect",this.$onMultiSelect),e.multiSelect.on("singleSelect",this.$onSingleSelect),e.multiSelect.lead.on("change",this.$checkMultiselectChange),e.multiSelect.anchor.on("change",this.$checkMultiselectChange)),e&&this.inMultiSelectMode!=e.selection.inMultiSelectMode&&(e.selection.inMultiSelectMode?this.$onMultiSelect():this.$onSingleSelect())},e.MultiSelect=Z,t("./config").defineOptions(m.prototype,"editor",{enableMultiselect:{set:function(t){Z(this),t?(this.on("changeSession",this.$multiselectOnSessionChange),this.on("mousedown",a)):(this.off("changeSession",this.$multiselectOnSessionChange),this.off("mousedown",a))},value:!0},enableBlockSelect:{set:function(t){this.$blockSelectEnabled=t},value:!0}})})),ace.define("ace/mode/folding/fold_mode",["require","exports","module","ace/range"],(function(t,e,l){"use strict";var i=t("../../range").Range,n=e.FoldMode=function(){};(function(){this.foldingStartMarker=null,this.foldingStopMarker=null,this.getFoldWidget=function(t,e,l){var i=t.getLine(l);return this.foldingStartMarker.test(i)?"start":"markbeginend"==e&&this.foldingStopMarker&&this.foldingStopMarker.test(i)?"end":""},this.getFoldWidgetRange=function(t,e,l){return null},this.indentationBlock=function(t,e,l){var n=/\S/,d=t.getLine(e),a=d.search(n);if(-1!=a){for(var s=l||d.length,c=t.getLength(),o=e,b=e;++eo){var m=t.getLine(b).length;return new i(o,s,b,m)}}},this.openingBracketBlock=function(t,e,l,n,d){var a={row:l,column:n+1},s=t.$findClosingBracket(e,a,d);if(s){var c=t.foldWidgets[s.row];return null==c&&(c=t.getFoldWidget(s.row)),"start"==c&&s.row>a.row&&(s.row--,s.column=t.getLine(s.row).length),i.fromPoints(a,s)}},this.closingBracketBlock=function(t,e,l,n,d){var a={row:l,column:n},s=t.$findOpeningBracket(e,a);if(s)return s.column++,a.column--,i.fromPoints(s,a)}}).call(n.prototype)})),ace.define("ace/theme/textmate",["require","exports","module","ace/lib/dom"],(function(t,e,l){"use strict";e.isDark=!1,e.cssClass="ace-tm",e.cssText='.ace-tm .ace_gutter {\tbackground: #f0f0f0;\tcolor: #333;\t}\t.ace-tm .ace_print-margin {\twidth: 1px;\tbackground: #e8e8e8;\t}\t.ace-tm .ace_fold {\tbackground-color: #6B72E6;\t}\t.ace-tm {\tbackground-color: #FFFFFF;\tcolor: black;\t}\t.ace-tm .ace_cursor {\tcolor: black;\t}\t.ace-tm .ace_invisible {\tcolor: rgb(191, 191, 191);\t}\t.ace-tm .ace_storage,\t.ace-tm .ace_keyword {\tcolor: blue;\t}\t.ace-tm .ace_constant {\tcolor: rgb(197, 6, 11);\t}\t.ace-tm .ace_constant.ace_buildin {\tcolor: rgb(88, 72, 246);\t}\t.ace-tm .ace_constant.ace_language {\tcolor: rgb(88, 92, 246);\t}\t.ace-tm .ace_constant.ace_library {\tcolor: rgb(6, 150, 14);\t}\t.ace-tm .ace_invalid {\tbackground-color: rgba(255, 0, 0, 0.1);\tcolor: red;\t}\t.ace-tm .ace_support.ace_function {\tcolor: rgb(60, 76, 114);\t}\t.ace-tm .ace_support.ace_constant {\tcolor: rgb(6, 150, 14);\t}\t.ace-tm .ace_support.ace_type,\t.ace-tm .ace_support.ace_class {\tcolor: rgb(109, 121, 222);\t}\t.ace-tm .ace_keyword.ace_operator {\tcolor: rgb(104, 118, 135);\t}\t.ace-tm .ace_string {\tcolor: rgb(3, 106, 7);\t}\t.ace-tm .ace_comment {\tcolor: rgb(76, 136, 107);\t}\t.ace-tm .ace_comment.ace_doc {\tcolor: rgb(0, 102, 255);\t}\t.ace-tm .ace_comment.ace_doc.ace_tag {\tcolor: rgb(128, 159, 191);\t}\t.ace-tm .ace_constant.ace_numeric {\tcolor: rgb(0, 0, 205);\t}\t.ace-tm .ace_variable {\tcolor: rgb(49, 132, 149);\t}\t.ace-tm .ace_xml-pe {\tcolor: rgb(104, 104, 91);\t}\t.ace-tm .ace_entity.ace_name.ace_function {\tcolor: #0000A2;\t}\t.ace-tm .ace_heading {\tcolor: rgb(12, 7, 255);\t}\t.ace-tm .ace_list {\tcolor:rgb(185, 6, 144);\t}\t.ace-tm .ace_meta.ace_tag {\tcolor:rgb(0, 22, 142);\t}\t.ace-tm .ace_string.ace_regex {\tcolor: rgb(255, 0, 0)\t}\t.ace-tm .ace_marker-layer .ace_selection {\tbackground: rgb(181, 213, 255);\t}\t.ace-tm.ace_multiselect .ace_selection.ace_start {\tbox-shadow: 0 0 3px 0px white;\t}\t.ace-tm .ace_marker-layer .ace_step {\tbackground: rgb(252, 255, 0);\t}\t.ace-tm .ace_marker-layer .ace_stack {\tbackground: rgb(164, 229, 101);\t}\t.ace-tm .ace_marker-layer .ace_bracket {\tmargin: -1px 0 0 -1px;\tborder: 1px solid rgb(192, 192, 192);\t}\t.ace-tm .ace_marker-layer .ace_active-line {\tbackground: rgba(0, 0, 0, 0.07);\t}\t.ace-tm .ace_gutter-active-line {\tbackground-color : #dcdcdc;\t}\t.ace-tm .ace_marker-layer .ace_selected-word {\tbackground: rgb(250, 250, 255);\tborder: 1px solid rgb(200, 200, 250);\t}\t.ace-tm .ace_indent-guide {\tbackground: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==") right repeat-y;\t}\t',t("../lib/dom").importCssString(e.cssText,e.cssClass)})),ace.define("ace/line_widgets",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/range"],(function(t,e,l){"use strict";t("./lib/oop");var i=t("./lib/dom");function n(t){this.session=t,this.session.widgetManager=this,this.session.getRowLength=this.getRowLength,this.session.$getWidgetScreenLength=this.$getWidgetScreenLength,this.updateOnChange=this.updateOnChange.bind(this),this.renderWidgets=this.renderWidgets.bind(this),this.measureWidgets=this.measureWidgets.bind(this),this.session._changedWidgets=[],this.$onChangeEditor=this.$onChangeEditor.bind(this),this.session.on("change",this.updateOnChange),this.session.on("changeFold",this.updateOnFold),this.session.on("changeEditor",this.$onChangeEditor)}t("./range").Range,function(){this.getRowLength=function(t){var e;return e=this.lineWidgets&&this.lineWidgets[t]&&this.lineWidgets[t].rowCount||0,this.$useWrapMode&&this.$wrapData[t]?this.$wrapData[t].length+1+e:1+e},this.$getWidgetScreenLength=function(){var t=0;return this.lineWidgets.forEach((function(e){e&&e.rowCount&&!e.hidden&&(t+=e.rowCount)})),t},this.$onChangeEditor=function(t){this.attach(t.editor)},this.attach=function(t){t&&t.widgetManager&&t.widgetManager!=this&&t.widgetManager.detach(),this.editor!=t&&(this.detach(),this.editor=t,t&&(t.widgetManager=this,t.renderer.on("beforeRender",this.measureWidgets),t.renderer.on("afterRender",this.renderWidgets)))},this.detach=function(t){var e=this.editor;if(e){this.editor=null,e.widgetManager=null,e.renderer.off("beforeRender",this.measureWidgets),e.renderer.off("afterRender",this.renderWidgets);var l=this.session.lineWidgets;l&&l.forEach((function(t){t&&t.el&&t.el.parentNode&&(t._inDocument=!1,t.el.parentNode.removeChild(t.el))}))}},this.updateOnFold=function(t,e){var l=e.lineWidgets;if(l&&t.action){for(var i=t.data,n=i.start.row,d=i.end.row,a="add"==t.action,s=n+1;s0&&!i[n];)n--;this.firstRow=l.firstRow,this.lastRow=l.lastRow,e.$cursorLayer.config=l;for(var a=n;a<=d;a++){var s=i[a];if(s&&s.el)if(s.hidden)s.el.style.top=-100-(s.pixelHeight||0)+"px";else{s._inDocument||(s._inDocument=!0,e.container.appendChild(s.el));var c=e.$cursorLayer.getPixelPosition({row:a,column:0},!0).top;s.coverLine||(c+=l.lineHeight*this.session.getRowLineCount(s.row)),s.el.style.top=c-l.offset+"px";var o=s.coverGutter?0:e.gutterWidth;s.fixedWidth||(o-=e.scrollLeft),s.el.style.left=o+"px",s.fullWidth&&s.screenWidth&&(s.el.style.minWidth=l.width+2*l.padding+"px"),s.fixedWidth?s.el.style.right=e.scrollBar.getWidth()+"px":s.el.style.right=""}}}}}.call(n.prototype),e.LineWidgets=n})),ace.define("ace/ext/error_marker",["require","exports","module","ace/line_widgets","ace/lib/dom","ace/range"],(function(t,e,l){"use strict";var i=t("../line_widgets").LineWidgets,n=t("../lib/dom"),d=t("../range").Range;e.showErrorMarker=function(t,e){var l=t.session;l.widgetManager||(l.widgetManager=new i(l),l.widgetManager.attach(t));var a=t.getCursorPosition(),s=a.row,c=l.widgetManager.getWidgetsAtRow(s).filter((function(t){return"errorMarker"==t.type}))[0];c?c.destroy():s-=e;var o,b=function(t,e,l){var i=t.getAnnotations().sort(d.comparePoints);if(i.length){var n=function(t,e,l){for(var i=0,n=t.length-1;i<=n;){var d=i+n>>1,a=l(e,t[d]);if(a>0)i=d+1;else{if(!(a<0))return d;n=d-1}}return-(i+1)}(i,{row:e,column:-1},d.comparePoints);n<0&&(n=-n-1),n>=i.length?n=l>0?0:i.length-1:0===n&&l<0&&(n=i.length-1);var a=i[n];if(a&&l){if(a.row===e){do{a=i[n+=l]}while(a&&a.row===e);if(!a)return i.slice()}var s=[];e=a.row;do{s[l<0?"unshift":"push"](a),a=i[n+=l]}while(a&&a.row==e);return s.length&&s}}}(l,s,e);if(b){var r=b[0];a.column=(r.pos&&"number"!=typeof r.column?r.pos.sc:r.column)||0,a.row=r.row,o=t.renderer.$gutterLayer.$annotations[a.row]}else{if(c)return;o={text:["Looks good!"],className:"ace_ok"}}t.session.unfold(a.row),t.selection.moveToPosition(a);var m={row:a.row,fixedWidth:!0,coverGutter:!0,el:n.createElement("div"),type:"errorMarker"},Z=m.el.appendChild(n.createElement("div")),g=m.el.appendChild(n.createElement("div"));g.className="error_widget_arrow "+o.className;var W=t.renderer.$cursorLayer.getPixelPosition(a).left;g.style.left=W+t.renderer.gutterWidth-5+"px",m.el.className="error_widget_wrapper",Z.className="error_widget "+o.className,Z.innerHTML=o.text.join("
"),Z.appendChild(n.createElement("div"));var h=function(t,e,l){if(0===e&&("esc"===l||"return"===l))return m.destroy(),{command:"null"}};m.destroy=function(){t.$mouseHandler.isMousePressed||(t.keyBinding.removeKeyboardHandler(h),l.widgetManager.removeLineWidget(m),t.off("changeSelection",m.destroy),t.off("changeSession",m.destroy),t.off("mouseup",m.destroy),t.off("change",m.destroy))},t.keyBinding.addKeyboardHandler(h),t.on("changeSelection",m.destroy),t.on("changeSession",m.destroy),t.on("mouseup",m.destroy),t.on("change",m.destroy),t.session.widgetManager.addLineWidget(m),m.el.onmousedown=t.focus.bind(t),t.renderer.scrollCursorIntoView(null,.5,{bottom:m.el.offsetHeight})},n.importCssString("\t .error_widget_wrapper {\t background: inherit;\t color: inherit;\t border:none\t }\t .error_widget {\t border-top: solid 2px;\t border-bottom: solid 2px;\t margin: 5px 0;\t padding: 10px 40px;\t white-space: pre-wrap;\t }\t .error_widget.ace_error, .error_widget_arrow.ace_error{\t border-color: #ff5a5a\t }\t .error_widget.ace_warning, .error_widget_arrow.ace_warning{\t border-color: #F1D817\t }\t .error_widget.ace_info, .error_widget_arrow.ace_info{\t border-color: #5a5a5a\t }\t .error_widget.ace_ok, .error_widget_arrow.ace_ok{\t border-color: #5aaa5a\t }\t .error_widget_arrow {\t position: absolute;\t border: solid 5px;\t border-top-color: transparent!important;\t border-right-color: transparent!important;\t border-left-color: transparent!important;\t top: -5px;\t }\t","")})),ace.define("ace/ace",["require","exports","module","ace/lib/fixoldbrowsers","ace/lib/dom","ace/lib/event","ace/editor","ace/edit_session","ace/undomanager","ace/virtual_renderer","ace/worker/worker_client","ace/keyboard/hash_handler","ace/placeholder","ace/multi_select","ace/mode/folding/fold_mode","ace/theme/textmate","ace/ext/error_marker","ace/config"],(function(t,e,l){"use strict";t("./lib/fixoldbrowsers");var i=t("./lib/dom"),n=t("./lib/event"),d=t("./editor").Editor,a=t("./edit_session").EditSession,s=t("./undomanager").UndoManager,c=t("./virtual_renderer").VirtualRenderer;t("./worker/worker_client"),t("./keyboard/hash_handler"),t("./placeholder"),t("./multi_select"),t("./mode/folding/fold_mode"),t("./theme/textmate"),t("./ext/error_marker"),e.config=t("./config"),e.acequire=t,e.edit=function(t){if("string"==typeof t){var l=t;if(!(t=document.getElementById(l)))throw new Error("ace.edit can't find div #"+l)}if(t&&t.env&&t.env.editor instanceof d)return t.env.editor;var a="";if(t&&/input|textarea/i.test(t.tagName)){var s=t;a=s.value,t=i.createElement("pre"),s.parentNode.replaceChild(t,s)}else t&&(a=i.getInnerText(t),t.innerHTML="");var o=e.createEditSession(a),b=new d(new c(t));b.setSession(o);var r={document:o,editor:b,onResize:b.resize.bind(b,null)};return s&&(r.textarea=s),n.addListener(window,"resize",r.onResize),b.on("destroy",(function(){n.removeListener(window,"resize",r.onResize),r.editor.container.env=null})),b.container.env=b.env=r,b},e.createEditSession=function(t,e){var l=new a(t,e);return l.setUndoManager(new s),l},e.EditSession=a,e.UndoManager=s,e.version="1.2.3"})),ace.acequire(["ace/ace"],(function(t){for(var e in t&&t.config.init(!0),window.ace||(window.ace=t),t)t.hasOwnProperty(e)&&(window.ace[e]=t[e])})),t.exports=window.ace.acequire("ace/ace")},function(t,e){t.exports=function(){throw new Error("define cannot be used indirect")}},function(t,e){(function(e){t.exports=function(){if(e.Blob)try{return new Blob(["asdf"],{type:"text/plain"}),Blob}catch(t){}var t=e.WebKitBlobBuilder||e.MozBlobBuilder||e.MSBlobBuilder;return function(e,l){var i=new t,n=l.endings,d=l.type;if(n)for(var a=0,s=e.length;a-1},Z.recordAutoInsert=function(t,e,l){var n=t.getCursorPosition(),d=e.doc.getLine(n.row);this.isAutoInsertedClosing(n,d,i.autoInsertedLineEnd[0])||(i.autoInsertedBrackets=0),i.autoInsertedRow=n.row,i.autoInsertedLineEnd=l+d.substr(n.column),i.autoInsertedBrackets++},Z.recordMaybeInsert=function(t,e,l){var n=t.getCursorPosition(),d=e.doc.getLine(n.row);this.isMaybeInsertedClosing(n,d)||(i.maybeInsertedBrackets=0),i.maybeInsertedRow=n.row,i.maybeInsertedLineStart=d.substr(0,n.column)+l,i.maybeInsertedLineEnd=d.substr(n.column),i.maybeInsertedBrackets++},Z.isAutoInsertedClosing=function(t,e,l){return i.autoInsertedBrackets>0&&t.row===i.autoInsertedRow&&l===i.autoInsertedLineEnd[0]&&e.substr(t.column)===i.autoInsertedLineEnd},Z.isMaybeInsertedClosing=function(t,e){return i.maybeInsertedBrackets>0&&t.row===i.maybeInsertedRow&&e.substr(t.column)===i.maybeInsertedLineEnd&&e.substr(0,t.column)==i.maybeInsertedLineStart},Z.popAutoInsertedClosing=function(){i.autoInsertedLineEnd=i.autoInsertedLineEnd.substr(1),i.autoInsertedBrackets--},Z.clearMaybeInsertedClosing=function(){i&&(i.maybeInsertedBrackets=0,i.maybeInsertedRow=-1)},n.inherits(Z,d),e.CstyleBehaviour=Z})),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],(function(t,e,l){"use strict";var i=t("../../lib/oop"),n=t("../../range").Range,d=t("./fold_mode").FoldMode,a=e.FoldMode=function(t){t&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+t.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+t.end)))};i.inherits(a,d),function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(t,e,l){var i=t.getLine(l);if(this.singleLineBlockCommentRe.test(i)&&!this.startRegionRe.test(i)&&!this.tripleStarBlockCommentRe.test(i))return"";var n=this._getFoldWidgetBase(t,e,l);return!n&&this.startRegionRe.test(i)?"start":n},this.getFoldWidgetRange=function(t,e,l,i){var n,d=t.getLine(l);if(this.startRegionRe.test(d))return this.getCommentRegionBlock(t,d,l);if(n=d.match(this.foldingStartMarker)){var a=n.index;if(n[1])return this.openingBracketBlock(t,n[1],l,a);var s=t.getCommentFoldRange(l,a+n[0].length,1);return s&&!s.isMultiLine()&&(i?s=this.getSectionRange(t,l):"all"!=e&&(s=null)),s}return"markbegin"!==e&&(n=d.match(this.foldingStopMarker))?(a=n.index+n[0].length,n[1]?this.closingBracketBlock(t,n[1],l,a):t.getCommentFoldRange(l,a,-1)):void 0},this.getSectionRange=function(t,e){for(var l=t.getLine(e),i=l.search(/\S/),d=e,a=l.length,s=e+=1,c=t.getLength();++eo)break;var b=this.getFoldWidgetRange(t,"all",e);if(b){if(b.start.row<=d)break;if(b.isMultiLine())e=b.end.row;else if(i==o)break}s=e}}return new n(d,a,s,t.getLine(s).length)},this.getCommentRegionBlock=function(t,e,l){for(var i=e.search(/\s*$/),d=t.getLength(),a=l,s=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,c=1;++la)return new n(a,i,l,e.length)}}.call(a.prototype)})),ace.define("ace/mode/json",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/json_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle","ace/worker/worker_client"],(function(t,e,i){"use strict";var n=t("../lib/oop"),d=t("./text").Mode,a=t("./json_highlight_rules").JsonHighlightRules,s=t("./matching_brace_outdent").MatchingBraceOutdent,c=t("./behaviour/cstyle").CstyleBehaviour,o=t("./folding/cstyle").FoldMode,b=t("../worker/worker_client").WorkerClient,r=function(){this.HighlightRules=a,this.$outdent=new s,this.$behaviour=new c,this.foldingRules=new o};n.inherits(r,d),function(){this.getNextLineIndent=function(t,e,l){var i=this.$getIndent(e);return"start"==t&&e.match(/^.*[\{\(\[]\s*$/)&&(i+=l),i},this.checkOutdent=function(t,e,l){return this.$outdent.checkOutdent(e,l)},this.autoOutdent=function(t,e,l){this.$outdent.autoOutdent(e,l)},this.createWorker=function(t){var e=new b(["ace"],l(68),"JsonWorker");return e.attachToDocument(t.getDocument()),e.on("annotate",(function(e){t.setAnnotations(e.data)})),e.on("terminate",(function(){t.clearAnnotations()})),e},this.$id="ace/mode/json"}.call(r.prototype),e.Mode=r}))},function(t,e){t.exports.id="ace/mode/json_worker",t.exports.src='"no use strict";(function(window){function resolveModuleId(id,paths){for(var testPath=id,tail="";testPath;){var alias=paths[testPath];if("string"==typeof alias)return alias+tail;if(alias)return alias.location.replace(/\\/*$/,"/")+(tail||alias.main||alias.name);if(alias===!1)return"";var i=testPath.lastIndexOf("/");if(-1===i)break;tail=testPath.substr(i)+tail,testPath=testPath.slice(0,i)}return id}if(!(void 0!==window.window&&window.document||window.acequire&&window.define)){window.console||(window.console=function(){var msgs=Array.prototype.slice.call(arguments,0);postMessage({type:"log",data:msgs})},window.console.error=window.console.warn=window.console.log=window.console.trace=window.console),window.window=window,window.ace=window,window.onerror=function(message,file,line,col,err){postMessage({type:"error",data:{message:message,data:err.data,file:file,line:line,col:col,stack:err.stack}})},window.normalizeModule=function(parentId,moduleName){if(-1!==moduleName.indexOf("!")){var chunks=moduleName.split("!");return window.normalizeModule(parentId,chunks[0])+"!"+window.normalizeModule(parentId,chunks[1])}if("."==moduleName.charAt(0)){var base=parentId.split("/").slice(0,-1).join("/");for(moduleName=(base?base+"/":"")+moduleName;-1!==moduleName.indexOf(".")&&previous!=moduleName;){var previous=moduleName;moduleName=moduleName.replace(/^\\.\\//,"").replace(/\\/\\.\\//,"/").replace(/[^\\/]+\\/\\.\\.\\//,"")}}return moduleName},window.acequire=function acequire(parentId,id){if(id||(id=parentId,parentId=null),!id.charAt)throw Error("worker.js acequire() accepts only (parentId, id) as arguments");id=window.normalizeModule(parentId,id);var module=window.acequire.modules[id];if(module)return module.initialized||(module.initialized=!0,module.exports=module.factory().exports),module.exports;if(!window.acequire.tlns)return console.log("unable to load "+id);var path=resolveModuleId(id,window.acequire.tlns);return".js"!=path.slice(-3)&&(path+=".js"),window.acequire.id=id,window.acequire.modules[id]={},importScripts(path),window.acequire(parentId,id)},window.acequire.modules={},window.acequire.tlns={},window.define=function(id,deps,factory){if(2==arguments.length?(factory=deps,"string"!=typeof id&&(deps=id,id=window.acequire.id)):1==arguments.length&&(factory=id,deps=[],id=window.acequire.id),"function"!=typeof factory)return window.acequire.modules[id]={exports:factory,initialized:!0},void 0;deps.length||(deps=["require","exports","module"]);var req=function(childId){return window.acequire(id,childId)};window.acequire.modules[id]={exports:{},factory:function(){var module=this,returnExports=factory.apply(this,deps.map(function(dep){switch(dep){case"require":return req;case"exports":return module.exports;case"module":return module;default:return req(dep)}}));return returnExports&&(module.exports=returnExports),module}}},window.define.amd={},acequire.tlns={},window.initBaseUrls=function(topLevelNamespaces){for(var i in topLevelNamespaces)acequire.tlns[i]=topLevelNamespaces[i]},window.initSender=function(){var EventEmitter=window.acequire("ace/lib/event_emitter").EventEmitter,oop=window.acequire("ace/lib/oop"),Sender=function(){};return function(){oop.implement(this,EventEmitter),this.callback=function(data,callbackId){postMessage({type:"call",id:callbackId,data:data})},this.emit=function(name,data){postMessage({type:"event",name:name,data:data})}}.call(Sender.prototype),new Sender};var main=window.main=null,sender=window.sender=null;window.onmessage=function(e){var msg=e.data;if(msg.event&&sender)sender._signal(msg.event,msg.data);else if(msg.command)if(main[msg.command])main[msg.command].apply(main,msg.args);else{if(!window[msg.command])throw Error("Unknown command:"+msg.command);window[msg.command].apply(window,msg.args)}else if(msg.init){window.initBaseUrls(msg.tlns),acequire("ace/lib/es5-shim"),sender=window.sender=window.initSender();var clazz=acequire(msg.module)[msg.classname];main=window.main=new clazz(sender)}}}})(this),ace.define("ace/lib/oop",["require","exports","module"],function(acequire,exports){"use strict";exports.inherits=function(ctor,superCtor){ctor.super_=superCtor,ctor.prototype=Object.create(superCtor.prototype,{constructor:{value:ctor,enumerable:!1,writable:!0,configurable:!0}})},exports.mixin=function(obj,mixin){for(var key in mixin)obj[key]=mixin[key];return obj},exports.implement=function(proto,mixin){exports.mixin(proto,mixin)}}),ace.define("ace/range",["require","exports","module"],function(acequire,exports){"use strict";var comparePoints=function(p1,p2){return p1.row-p2.row||p1.column-p2.column},Range=function(startRow,startColumn,endRow,endColumn){this.start={row:startRow,column:startColumn},this.end={row:endRow,column:endColumn}};(function(){this.isEqual=function(range){return this.start.row===range.start.row&&this.end.row===range.end.row&&this.start.column===range.start.column&&this.end.column===range.end.column},this.toString=function(){return"Range: ["+this.start.row+"/"+this.start.column+"] -> ["+this.end.row+"/"+this.end.column+"]"},this.contains=function(row,column){return 0==this.compare(row,column)},this.compareRange=function(range){var cmp,end=range.end,start=range.start;return cmp=this.compare(end.row,end.column),1==cmp?(cmp=this.compare(start.row,start.column),1==cmp?2:0==cmp?1:0):-1==cmp?-2:(cmp=this.compare(start.row,start.column),-1==cmp?-1:1==cmp?42:0)},this.comparePoint=function(p){return this.compare(p.row,p.column)},this.containsRange=function(range){return 0==this.comparePoint(range.start)&&0==this.comparePoint(range.end)},this.intersects=function(range){var cmp=this.compareRange(range);return-1==cmp||0==cmp||1==cmp},this.isEnd=function(row,column){return this.end.row==row&&this.end.column==column},this.isStart=function(row,column){return this.start.row==row&&this.start.column==column},this.setStart=function(row,column){"object"==typeof row?(this.start.column=row.column,this.start.row=row.row):(this.start.row=row,this.start.column=column)},this.setEnd=function(row,column){"object"==typeof row?(this.end.column=row.column,this.end.row=row.row):(this.end.row=row,this.end.column=column)},this.inside=function(row,column){return 0==this.compare(row,column)?this.isEnd(row,column)||this.isStart(row,column)?!1:!0:!1},this.insideStart=function(row,column){return 0==this.compare(row,column)?this.isEnd(row,column)?!1:!0:!1},this.insideEnd=function(row,column){return 0==this.compare(row,column)?this.isStart(row,column)?!1:!0:!1},this.compare=function(row,column){return this.isMultiLine()||row!==this.start.row?this.start.row>row?-1:row>this.end.row?1:this.start.row===row?column>=this.start.column?0:-1:this.end.row===row?this.end.column>=column?0:1:0:this.start.column>column?-1:column>this.end.column?1:0},this.compareStart=function(row,column){return this.start.row==row&&this.start.column==column?-1:this.compare(row,column)},this.compareEnd=function(row,column){return this.end.row==row&&this.end.column==column?1:this.compare(row,column)},this.compareInside=function(row,column){return this.end.row==row&&this.end.column==column?1:this.start.row==row&&this.start.column==column?-1:this.compare(row,column)},this.clipRows=function(firstRow,lastRow){if(this.end.row>lastRow)var end={row:lastRow+1,column:0};else if(firstRow>this.end.row)var end={row:firstRow,column:0};if(this.start.row>lastRow)var start={row:lastRow+1,column:0};else if(firstRow>this.start.row)var start={row:firstRow,column:0};return Range.fromPoints(start||this.start,end||this.end)},this.extend=function(row,column){var cmp=this.compare(row,column);if(0==cmp)return this;if(-1==cmp)var start={row:row,column:column};else var end={row:row,column:column};return Range.fromPoints(start||this.start,end||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 Range.fromPoints(this.start,this.end)},this.collapseRows=function(){return 0==this.end.column?new Range(this.start.row,0,Math.max(this.start.row,this.end.row-1),0):new Range(this.start.row,0,this.end.row,0)},this.toScreenRange=function(session){var screenPosStart=session.documentToScreenPosition(this.start),screenPosEnd=session.documentToScreenPosition(this.end);return new Range(screenPosStart.row,screenPosStart.column,screenPosEnd.row,screenPosEnd.column)},this.moveBy=function(row,column){this.start.row+=row,this.start.column+=column,this.end.row+=row,this.end.column+=column}}).call(Range.prototype),Range.fromPoints=function(start,end){return new Range(start.row,start.column,end.row,end.column)},Range.comparePoints=comparePoints,Range.comparePoints=function(p1,p2){return p1.row-p2.row||p1.column-p2.column},exports.Range=Range}),ace.define("ace/apply_delta",["require","exports","module"],function(acequire,exports){"use strict";exports.applyDelta=function(docLines,delta){var row=delta.start.row,startColumn=delta.start.column,line=docLines[row]||"";switch(delta.action){case"insert":var lines=delta.lines;if(1===lines.length)docLines[row]=line.substring(0,startColumn)+delta.lines[0]+line.substring(startColumn);else{var args=[row,1].concat(delta.lines);docLines.splice.apply(docLines,args),docLines[row]=line.substring(0,startColumn)+docLines[row],docLines[row+delta.lines.length-1]+=line.substring(startColumn)}break;case"remove":var endColumn=delta.end.column,endRow=delta.end.row;row===endRow?docLines[row]=line.substring(0,startColumn)+line.substring(endColumn):docLines.splice(row,endRow-row+1,line.substring(0,startColumn)+docLines[endRow].substring(endColumn))}}}),ace.define("ace/lib/event_emitter",["require","exports","module"],function(acequire,exports){"use strict";var EventEmitter={},stopPropagation=function(){this.propagationStopped=!0},preventDefault=function(){this.defaultPrevented=!0};EventEmitter._emit=EventEmitter._dispatchEvent=function(eventName,e){this._eventRegistry||(this._eventRegistry={}),this._defaultHandlers||(this._defaultHandlers={});var listeners=this._eventRegistry[eventName]||[],defaultHandler=this._defaultHandlers[eventName];if(listeners.length||defaultHandler){"object"==typeof e&&e||(e={}),e.type||(e.type=eventName),e.stopPropagation||(e.stopPropagation=stopPropagation),e.preventDefault||(e.preventDefault=preventDefault),listeners=listeners.slice();for(var i=0;listeners.length>i&&(listeners[i](e,this),!e.propagationStopped);i++);return defaultHandler&&!e.defaultPrevented?defaultHandler(e,this):void 0}},EventEmitter._signal=function(eventName,e){var listeners=(this._eventRegistry||{})[eventName];if(listeners){listeners=listeners.slice();for(var i=0;listeners.length>i;i++)listeners[i](e,this)}},EventEmitter.once=function(eventName,callback){var _self=this;callback&&this.addEventListener(eventName,function newCallback(){_self.removeEventListener(eventName,newCallback),callback.apply(null,arguments)})},EventEmitter.setDefaultHandler=function(eventName,callback){var handlers=this._defaultHandlers;if(handlers||(handlers=this._defaultHandlers={_disabled_:{}}),handlers[eventName]){var old=handlers[eventName],disabled=handlers._disabled_[eventName];disabled||(handlers._disabled_[eventName]=disabled=[]),disabled.push(old);var i=disabled.indexOf(callback);-1!=i&&disabled.splice(i,1)}handlers[eventName]=callback},EventEmitter.removeDefaultHandler=function(eventName,callback){var handlers=this._defaultHandlers;if(handlers){var disabled=handlers._disabled_[eventName];if(handlers[eventName]==callback)handlers[eventName],disabled&&this.setDefaultHandler(eventName,disabled.pop());else if(disabled){var i=disabled.indexOf(callback);-1!=i&&disabled.splice(i,1)}}},EventEmitter.on=EventEmitter.addEventListener=function(eventName,callback,capturing){this._eventRegistry=this._eventRegistry||{};var listeners=this._eventRegistry[eventName];return listeners||(listeners=this._eventRegistry[eventName]=[]),-1==listeners.indexOf(callback)&&listeners[capturing?"unshift":"push"](callback),callback},EventEmitter.off=EventEmitter.removeListener=EventEmitter.removeEventListener=function(eventName,callback){this._eventRegistry=this._eventRegistry||{};var listeners=this._eventRegistry[eventName];if(listeners){var index=listeners.indexOf(callback);-1!==index&&listeners.splice(index,1)}},EventEmitter.removeAllListeners=function(eventName){this._eventRegistry&&(this._eventRegistry[eventName]=[])},exports.EventEmitter=EventEmitter}),ace.define("ace/anchor",["require","exports","module","ace/lib/oop","ace/lib/event_emitter"],function(acequire,exports){"use strict";var oop=acequire("./lib/oop"),EventEmitter=acequire("./lib/event_emitter").EventEmitter,Anchor=exports.Anchor=function(doc,row,column){this.$onChange=this.onChange.bind(this),this.attach(doc),column===void 0?this.setPosition(row.row,row.column):this.setPosition(row,column)};(function(){function $pointsInOrder(point1,point2,equalPointsInOrder){var bColIsAfter=equalPointsInOrder?point1.column<=point2.column:point1.columnthis.row)){var point=$getTransformedPoint(delta,{row:this.row,column:this.column},this.$insertRight);this.setPosition(point.row,point.column,!0)}},this.setPosition=function(row,column,noClip){var pos;if(pos=noClip?{row:row,column:column}:this.$clipPositionToDocument(row,column),this.row!=pos.row||this.column!=pos.column){var old={row:this.row,column:this.column};this.row=pos.row,this.column=pos.column,this._signal("change",{old:old,value:pos})}},this.detach=function(){this.document.removeEventListener("change",this.$onChange)},this.attach=function(doc){this.document=doc||this.document,this.document.on("change",this.$onChange)},this.$clipPositionToDocument=function(row,column){var pos={};return row>=this.document.getLength()?(pos.row=Math.max(0,this.document.getLength()-1),pos.column=this.document.getLine(pos.row).length):0>row?(pos.row=0,pos.column=0):(pos.row=row,pos.column=Math.min(this.document.getLine(pos.row).length,Math.max(0,column))),0>column&&(pos.column=0),pos}}).call(Anchor.prototype)}),ace.define("ace/document",["require","exports","module","ace/lib/oop","ace/apply_delta","ace/lib/event_emitter","ace/range","ace/anchor"],function(acequire,exports){"use strict";var oop=acequire("./lib/oop"),applyDelta=acequire("./apply_delta").applyDelta,EventEmitter=acequire("./lib/event_emitter").EventEmitter,Range=acequire("./range").Range,Anchor=acequire("./anchor").Anchor,Document=function(textOrLines){this.$lines=[""],0===textOrLines.length?this.$lines=[""]:Array.isArray(textOrLines)?this.insertMergedLines({row:0,column:0},textOrLines):this.insert({row:0,column:0},textOrLines)};(function(){oop.implement(this,EventEmitter),this.setValue=function(text){var len=this.getLength()-1;this.remove(new Range(0,0,len,this.getLine(len).length)),this.insert({row:0,column:0},text)},this.getValue=function(){return this.getAllLines().join(this.getNewLineCharacter())},this.createAnchor=function(row,column){return new Anchor(this,row,column)},this.$split=0==="aaa".split(/a/).length?function(text){return text.replace(/\\r\\n|\\r/g,"\\n").split("\\n")}:function(text){return text.split(/\\r\\n|\\r|\\n/)},this.$detectNewLine=function(text){var match=text.match(/^.*?(\\r\\n|\\r|\\n)/m);this.$autoNewLine=match?match[1]:"\\n",this._signal("changeNewLineMode")},this.getNewLineCharacter=function(){switch(this.$newLineMode){case"windows":return"\\r\\n";case"unix":return"\\n";default:return this.$autoNewLine||"\\n"}},this.$autoNewLine="",this.$newLineMode="auto",this.setNewLineMode=function(newLineMode){this.$newLineMode!==newLineMode&&(this.$newLineMode=newLineMode,this._signal("changeNewLineMode"))},this.getNewLineMode=function(){return this.$newLineMode},this.isNewLine=function(text){return"\\r\\n"==text||"\\r"==text||"\\n"==text},this.getLine=function(row){return this.$lines[row]||""},this.getLines=function(firstRow,lastRow){return this.$lines.slice(firstRow,lastRow+1)},this.getAllLines=function(){return this.getLines(0,this.getLength())},this.getLength=function(){return this.$lines.length},this.getTextRange=function(range){return this.getLinesForRange(range).join(this.getNewLineCharacter())},this.getLinesForRange=function(range){var lines;if(range.start.row===range.end.row)lines=[this.getLine(range.start.row).substring(range.start.column,range.end.column)];else{lines=this.getLines(range.start.row,range.end.row),lines[0]=(lines[0]||"").substring(range.start.column);var l=lines.length-1;range.end.row-range.start.row==l&&(lines[l]=lines[l].substring(0,range.end.column))}return lines},this.insertLines=function(row,lines){return console.warn("Use of document.insertLines is deprecated. Use the insertFullLines method instead."),this.insertFullLines(row,lines)},this.removeLines=function(firstRow,lastRow){return console.warn("Use of document.removeLines is deprecated. Use the removeFullLines method instead."),this.removeFullLines(firstRow,lastRow)},this.insertNewLine=function(position){return console.warn("Use of document.insertNewLine is deprecated. Use insertMergedLines(position, [\'\', \'\']) instead."),this.insertMergedLines(position,["",""])},this.insert=function(position,text){return 1>=this.getLength()&&this.$detectNewLine(text),this.insertMergedLines(position,this.$split(text))},this.insertInLine=function(position,text){var start=this.clippedPos(position.row,position.column),end=this.pos(position.row,position.column+text.length);return this.applyDelta({start:start,end:end,action:"insert",lines:[text]},!0),this.clonePos(end)},this.clippedPos=function(row,column){var length=this.getLength();void 0===row?row=length:0>row?row=0:row>=length&&(row=length-1,column=void 0);var line=this.getLine(row);return void 0==column&&(column=line.length),column=Math.min(Math.max(column,0),line.length),{row:row,column:column}},this.clonePos=function(pos){return{row:pos.row,column:pos.column}},this.pos=function(row,column){return{row:row,column:column}},this.$clipPosition=function(position){var length=this.getLength();return position.row>=length?(position.row=Math.max(0,length-1),position.column=this.getLine(length-1).length):(position.row=Math.max(0,position.row),position.column=Math.min(Math.max(position.column,0),this.getLine(position.row).length)),position},this.insertFullLines=function(row,lines){row=Math.min(Math.max(row,0),this.getLength());var column=0;this.getLength()>row?(lines=lines.concat([""]),column=0):(lines=[""].concat(lines),row--,column=this.$lines[row].length),this.insertMergedLines({row:row,column:column},lines)},this.insertMergedLines=function(position,lines){var start=this.clippedPos(position.row,position.column),end={row:start.row+lines.length-1,column:(1==lines.length?start.column:0)+lines[lines.length-1].length};return this.applyDelta({start:start,end:end,action:"insert",lines:lines}),this.clonePos(end)},this.remove=function(range){var start=this.clippedPos(range.start.row,range.start.column),end=this.clippedPos(range.end.row,range.end.column);return this.applyDelta({start:start,end:end,action:"remove",lines:this.getLinesForRange({start:start,end:end})}),this.clonePos(start)},this.removeInLine=function(row,startColumn,endColumn){var start=this.clippedPos(row,startColumn),end=this.clippedPos(row,endColumn);return this.applyDelta({start:start,end:end,action:"remove",lines:this.getLinesForRange({start:start,end:end})},!0),this.clonePos(start)},this.removeFullLines=function(firstRow,lastRow){firstRow=Math.min(Math.max(0,firstRow),this.getLength()-1),lastRow=Math.min(Math.max(0,lastRow),this.getLength()-1);var deleteFirstNewLine=lastRow==this.getLength()-1&&firstRow>0,deleteLastNewLine=this.getLength()-1>lastRow,startRow=deleteFirstNewLine?firstRow-1:firstRow,startCol=deleteFirstNewLine?this.getLine(startRow).length:0,endRow=deleteLastNewLine?lastRow+1:lastRow,endCol=deleteLastNewLine?0:this.getLine(endRow).length,range=new Range(startRow,startCol,endRow,endCol),deletedLines=this.$lines.slice(firstRow,lastRow+1);return this.applyDelta({start:range.start,end:range.end,action:"remove",lines:this.getLinesForRange(range)}),deletedLines},this.removeNewLine=function(row){this.getLength()-1>row&&row>=0&&this.applyDelta({start:this.pos(row,this.getLine(row).length),end:this.pos(row+1,0),action:"remove",lines:["",""]})},this.replace=function(range,text){if(range instanceof Range||(range=Range.fromPoints(range.start,range.end)),0===text.length&&range.isEmpty())return range.start;if(text==this.getTextRange(range))return range.end;this.remove(range);var end;return end=text?this.insert(range.start,text):range.start},this.applyDeltas=function(deltas){for(var i=0;deltas.length>i;i++)this.applyDelta(deltas[i])},this.revertDeltas=function(deltas){for(var i=deltas.length-1;i>=0;i--)this.revertDelta(deltas[i])},this.applyDelta=function(delta,doNotValidate){var isInsert="insert"==delta.action;(isInsert?1>=delta.lines.length&&!delta.lines[0]:!Range.comparePoints(delta.start,delta.end))||(isInsert&&delta.lines.length>2e4&&this.$splitAndapplyLargeDelta(delta,2e4),applyDelta(this.$lines,delta,doNotValidate),this._signal("change",delta))},this.$splitAndapplyLargeDelta=function(delta,MAX){for(var lines=delta.lines,l=lines.length,row=delta.start.row,column=delta.start.column,from=0,to=0;;){from=to,to+=MAX-1;var chunk=lines.slice(from,to);if(to>l){delta.lines=chunk,delta.start.row=row+from,delta.start.column=column;break}chunk.push(""),this.applyDelta({start:this.pos(row+from,column),end:this.pos(row+to,column=0),action:delta.action,lines:chunk},!0)}},this.revertDelta=function(delta){this.applyDelta({start:this.clonePos(delta.start),end:this.clonePos(delta.end),action:"insert"==delta.action?"remove":"insert",lines:delta.lines.slice()})},this.indexToPosition=function(index,startRow){for(var lines=this.$lines||this.getAllLines(),newlineLength=this.getNewLineCharacter().length,i=startRow||0,l=lines.length;l>i;i++)if(index-=lines[i].length+newlineLength,0>index)return{row:i,column:index+lines[i].length+newlineLength};return{row:l-1,column:lines[l-1].length}},this.positionToIndex=function(pos,startRow){for(var lines=this.$lines||this.getAllLines(),newlineLength=this.getNewLineCharacter().length,index=0,row=Math.min(pos.row,lines.length),i=startRow||0;row>i;++i)index+=lines[i].length+newlineLength;return index+pos.column}}).call(Document.prototype),exports.Document=Document}),ace.define("ace/lib/lang",["require","exports","module"],function(acequire,exports){"use strict";exports.last=function(a){return a[a.length-1]},exports.stringReverse=function(string){return string.split("").reverse().join("")},exports.stringRepeat=function(string,count){for(var result="";count>0;)1&count&&(result+=string),(count>>=1)&&(string+=string);return result};var trimBeginRegexp=/^\\s\\s*/,trimEndRegexp=/\\s\\s*$/;exports.stringTrimLeft=function(string){return string.replace(trimBeginRegexp,"")},exports.stringTrimRight=function(string){return string.replace(trimEndRegexp,"")},exports.copyObject=function(obj){var copy={};for(var key in obj)copy[key]=obj[key];return copy},exports.copyArray=function(array){for(var copy=[],i=0,l=array.length;l>i;i++)copy[i]=array[i]&&"object"==typeof array[i]?this.copyObject(array[i]):array[i];return copy},exports.deepCopy=function deepCopy(obj){if("object"!=typeof obj||!obj)return obj;var copy;if(Array.isArray(obj)){copy=[];for(var key=0;obj.length>key;key++)copy[key]=deepCopy(obj[key]);return copy}var cons=obj.constructor;if(cons===RegExp)return obj;copy=cons();for(var key in obj)copy[key]=deepCopy(obj[key]);return copy},exports.arrayToMap=function(arr){for(var map={},i=0;arr.length>i;i++)map[arr[i]]=1;return map},exports.createMap=function(props){var map=Object.create(null);for(var i in props)map[i]=props[i];return map},exports.arrayRemove=function(array,value){for(var i=0;array.length>=i;i++)value===array[i]&&array.splice(i,1)},exports.escapeRegExp=function(str){return str.replace(/([.*+?^${}()|[\\]\\/\\\\])/g,"\\\\$1")},exports.escapeHTML=function(str){return str.replace(/&/g,"&").replace(/"/g,""").replace(/\'/g,"'").replace(/i;i+=2){if(Array.isArray(data[i+1]))var d={action:"insert",start:data[i],lines:data[i+1]};else var d={action:"remove",start:data[i],end:data[i+1]};doc.applyDelta(d,!0)}return _self.$timeout?deferredUpdate.schedule(_self.$timeout):(_self.onUpdate(),void 0)})};(function(){this.$timeout=500,this.setTimeout=function(timeout){this.$timeout=timeout},this.setValue=function(value){this.doc.setValue(value),this.deferredUpdate.schedule(this.$timeout)},this.getValue=function(callbackId){this.sender.callback(this.doc.getValue(),callbackId)},this.onUpdate=function(){},this.isPending=function(){return this.deferredUpdate.isPending()}}).call(Mirror.prototype)}),ace.define("ace/mode/json/json_parse",["require","exports","module"],function(){"use strict";var at,ch,text,value,escapee={\'"\':\'"\',"\\\\":"\\\\","/":"/",b:"\\b",f:"\\f",n:"\\n",r:"\\r",t:"\t"},error=function(m){throw{name:"SyntaxError",message:m,at:at,text:text}},next=function(c){return c&&c!==ch&&error("Expected \'"+c+"\' instead of \'"+ch+"\'"),ch=text.charAt(at),at+=1,ch},number=function(){var number,string="";for("-"===ch&&(string="-",next("-"));ch>="0"&&"9">=ch;)string+=ch,next();if("."===ch)for(string+=".";next()&&ch>="0"&&"9">=ch;)string+=ch;if("e"===ch||"E"===ch)for(string+=ch,next(),("-"===ch||"+"===ch)&&(string+=ch,next());ch>="0"&&"9">=ch;)string+=ch,next();return number=+string,isNaN(number)?(error("Bad number"),void 0):number},string=function(){var hex,i,uffff,string="";if(\'"\'===ch)for(;next();){if(\'"\'===ch)return next(),string;if("\\\\"===ch)if(next(),"u"===ch){for(uffff=0,i=0;4>i&&(hex=parseInt(next(),16),isFinite(hex));i+=1)uffff=16*uffff+hex;string+=String.fromCharCode(uffff)}else{if("string"!=typeof escapee[ch])break;string+=escapee[ch]}else string+=ch}error("Bad string")},white=function(){for(;ch&&" ">=ch;)next()},word=function(){switch(ch){case"t":return next("t"),next("r"),next("u"),next("e"),!0;case"f":return next("f"),next("a"),next("l"),next("s"),next("e"),!1;case"n":return next("n"),next("u"),next("l"),next("l"),null}error("Unexpected \'"+ch+"\'")},array=function(){var array=[];if("["===ch){if(next("["),white(),"]"===ch)return next("]"),array;for(;ch;){if(array.push(value()),white(),"]"===ch)return next("]"),array;next(","),white()}}error("Bad array")},object=function(){var key,object={};if("{"===ch){if(next("{"),white(),"}"===ch)return next("}"),object;for(;ch;){if(key=string(),white(),next(":"),Object.hasOwnProperty.call(object,key)&&error(\'Duplicate key "\'+key+\'"\'),object[key]=value(),white(),"}"===ch)return next("}"),object;next(","),white()}}error("Bad object")};return value=function(){switch(white(),ch){case"{":return object();case"[":return array();case\'"\':return string();case"-":return number();default:return ch>="0"&&"9">=ch?number():word()}},function(source,reviver){var result;return text=source,at=0,ch=" ",result=value(),white(),ch&&error("Syntax error"),"function"==typeof reviver?function walk(holder,key){var k,v,value=holder[key];if(value&&"object"==typeof value)for(k in value)Object.hasOwnProperty.call(value,k)&&(v=walk(value,k),void 0!==v?value[k]=v:delete value[k]);return reviver.call(holder,key,value)}({"":result},""):result}}),ace.define("ace/mode/json_worker",["require","exports","module","ace/lib/oop","ace/worker/mirror","ace/mode/json/json_parse"],function(acequire,exports){"use strict";var oop=acequire("../lib/oop"),Mirror=acequire("../worker/mirror").Mirror,parse=acequire("./json/json_parse"),JsonWorker=exports.JsonWorker=function(sender){Mirror.call(this,sender),this.setTimeout(200)};oop.inherits(JsonWorker,Mirror),function(){this.onUpdate=function(){var value=this.doc.getValue(),errors=[];try{value&&parse(value)}catch(e){var pos=this.doc.indexToPosition(e.at-1);errors.push({row:pos.row,column:pos.column,text:e.message,type:"error"})}this.sender.emit("annotate",errors)}}.call(JsonWorker.prototype)}),ace.define("ace/lib/es5-shim",["require","exports","module"],function(){function Empty(){}function doesDefinePropertyWork(object){try{return Object.defineProperty(object,"sentinel",{}),"sentinel"in object}catch(exception){}}function toInteger(n){return n=+n,n!==n?n=0:0!==n&&n!==1/0&&n!==-(1/0)&&(n=(n>0||-1)*Math.floor(Math.abs(n))),n}Function.prototype.bind||(Function.prototype.bind=function(that){var target=this;if("function"!=typeof target)throw new TypeError("Function.prototype.bind called on incompatible "+target);var args=slice.call(arguments,1),bound=function(){if(this instanceof bound){var result=target.apply(this,args.concat(slice.call(arguments)));return Object(result)===result?result:this}return target.apply(that,args.concat(slice.call(arguments)))};return target.prototype&&(Empty.prototype=target.prototype,bound.prototype=new Empty,Empty.prototype=null),bound});var defineGetter,defineSetter,lookupGetter,lookupSetter,supportsAccessors,call=Function.prototype.call,prototypeOfArray=Array.prototype,prototypeOfObject=Object.prototype,slice=prototypeOfArray.slice,_toString=call.bind(prototypeOfObject.toString),owns=call.bind(prototypeOfObject.hasOwnProperty);if((supportsAccessors=owns(prototypeOfObject,"__defineGetter__"))&&(defineGetter=call.bind(prototypeOfObject.__defineGetter__),defineSetter=call.bind(prototypeOfObject.__defineSetter__),lookupGetter=call.bind(prototypeOfObject.__lookupGetter__),lookupSetter=call.bind(prototypeOfObject.__lookupSetter__)),2!=[1,2].splice(0).length)if(function(){function makeArray(l){var a=Array(l+2);return a[0]=a[1]=0,a}var lengthBefore,array=[];return array.splice.apply(array,makeArray(20)),array.splice.apply(array,makeArray(26)),lengthBefore=array.length,array.splice(5,0,"XXX"),lengthBefore+1==array.length,lengthBefore+1==array.length?!0:void 0\n}()){var array_splice=Array.prototype.splice;Array.prototype.splice=function(start,deleteCount){return arguments.length?array_splice.apply(this,[void 0===start?0:start,void 0===deleteCount?this.length-start:deleteCount].concat(slice.call(arguments,2))):[]}}else Array.prototype.splice=function(pos,removeCount){var length=this.length;pos>0?pos>length&&(pos=length):void 0==pos?pos=0:0>pos&&(pos=Math.max(length+pos,0)),length>pos+removeCount||(removeCount=length-pos);var removed=this.slice(pos,pos+removeCount),insert=slice.call(arguments,2),add=insert.length;if(pos===length)add&&this.push.apply(this,insert);else{var remove=Math.min(removeCount,length-pos),tailOldPos=pos+remove,tailNewPos=tailOldPos+add-remove,tailCount=length-tailOldPos,lengthAfterRemove=length-remove;if(tailOldPos>tailNewPos)for(var i=0;tailCount>i;++i)this[tailNewPos+i]=this[tailOldPos+i];else if(tailNewPos>tailOldPos)for(i=tailCount;i--;)this[tailNewPos+i]=this[tailOldPos+i];if(add&&pos===lengthAfterRemove)this.length=lengthAfterRemove,this.push.apply(this,insert);else for(this.length=lengthAfterRemove+add,i=0;add>i;++i)this[pos+i]=insert[i]}return removed};Array.isArray||(Array.isArray=function(obj){return"[object Array]"==_toString(obj)});var boxedString=Object("a"),splitString="a"!=boxedString[0]||!(0 in boxedString);if(Array.prototype.forEach||(Array.prototype.forEach=function(fun){var object=toObject(this),self=splitString&&"[object String]"==_toString(this)?this.split(""):object,thisp=arguments[1],i=-1,length=self.length>>>0;if("[object Function]"!=_toString(fun))throw new TypeError;for(;length>++i;)i in self&&fun.call(thisp,self[i],i,object)}),Array.prototype.map||(Array.prototype.map=function(fun){var object=toObject(this),self=splitString&&"[object String]"==_toString(this)?this.split(""):object,length=self.length>>>0,result=Array(length),thisp=arguments[1];if("[object Function]"!=_toString(fun))throw new TypeError(fun+" is not a function");for(var i=0;length>i;i++)i in self&&(result[i]=fun.call(thisp,self[i],i,object));return result}),Array.prototype.filter||(Array.prototype.filter=function(fun){var value,object=toObject(this),self=splitString&&"[object String]"==_toString(this)?this.split(""):object,length=self.length>>>0,result=[],thisp=arguments[1];if("[object Function]"!=_toString(fun))throw new TypeError(fun+" is not a function");for(var i=0;length>i;i++)i in self&&(value=self[i],fun.call(thisp,value,i,object)&&result.push(value));return result}),Array.prototype.every||(Array.prototype.every=function(fun){var object=toObject(this),self=splitString&&"[object String]"==_toString(this)?this.split(""):object,length=self.length>>>0,thisp=arguments[1];if("[object Function]"!=_toString(fun))throw new TypeError(fun+" is not a function");for(var i=0;length>i;i++)if(i in self&&!fun.call(thisp,self[i],i,object))return!1;return!0}),Array.prototype.some||(Array.prototype.some=function(fun){var object=toObject(this),self=splitString&&"[object String]"==_toString(this)?this.split(""):object,length=self.length>>>0,thisp=arguments[1];if("[object Function]"!=_toString(fun))throw new TypeError(fun+" is not a function");for(var i=0;length>i;i++)if(i in self&&fun.call(thisp,self[i],i,object))return!0;return!1}),Array.prototype.reduce||(Array.prototype.reduce=function(fun){var object=toObject(this),self=splitString&&"[object String]"==_toString(this)?this.split(""):object,length=self.length>>>0;if("[object Function]"!=_toString(fun))throw new TypeError(fun+" is not a function");if(!length&&1==arguments.length)throw new TypeError("reduce of empty array with no initial value");var result,i=0;if(arguments.length>=2)result=arguments[1];else for(;;){if(i in self){result=self[i++];break}if(++i>=length)throw new TypeError("reduce of empty array with no initial value")}for(;length>i;i++)i in self&&(result=fun.call(void 0,result,self[i],i,object));return result}),Array.prototype.reduceRight||(Array.prototype.reduceRight=function(fun){var object=toObject(this),self=splitString&&"[object String]"==_toString(this)?this.split(""):object,length=self.length>>>0;if("[object Function]"!=_toString(fun))throw new TypeError(fun+" is not a function");if(!length&&1==arguments.length)throw new TypeError("reduceRight of empty array with no initial value");var result,i=length-1;if(arguments.length>=2)result=arguments[1];else for(;;){if(i in self){result=self[i--];break}if(0>--i)throw new TypeError("reduceRight of empty array with no initial value")}do i in this&&(result=fun.call(void 0,result,self[i],i,object));while(i--);return result}),Array.prototype.indexOf&&-1==[0,1].indexOf(1,2)||(Array.prototype.indexOf=function(sought){var self=splitString&&"[object String]"==_toString(this)?this.split(""):toObject(this),length=self.length>>>0;if(!length)return-1;var i=0;for(arguments.length>1&&(i=toInteger(arguments[1])),i=i>=0?i:Math.max(0,length+i);length>i;i++)if(i in self&&self[i]===sought)return i;return-1}),Array.prototype.lastIndexOf&&-1==[0,1].lastIndexOf(0,-3)||(Array.prototype.lastIndexOf=function(sought){var self=splitString&&"[object String]"==_toString(this)?this.split(""):toObject(this),length=self.length>>>0;if(!length)return-1;var i=length-1;for(arguments.length>1&&(i=Math.min(i,toInteger(arguments[1]))),i=i>=0?i:length-Math.abs(i);i>=0;i--)if(i in self&&sought===self[i])return i;return-1}),Object.getPrototypeOf||(Object.getPrototypeOf=function(object){return object.__proto__||(object.constructor?object.constructor.prototype:prototypeOfObject)}),!Object.getOwnPropertyDescriptor){var ERR_NON_OBJECT="Object.getOwnPropertyDescriptor called on a non-object: ";Object.getOwnPropertyDescriptor=function(object,property){if("object"!=typeof object&&"function"!=typeof object||null===object)throw new TypeError(ERR_NON_OBJECT+object);if(owns(object,property)){var descriptor,getter,setter;if(descriptor={enumerable:!0,configurable:!0},supportsAccessors){var prototype=object.__proto__;object.__proto__=prototypeOfObject;var getter=lookupGetter(object,property),setter=lookupSetter(object,property);if(object.__proto__=prototype,getter||setter)return getter&&(descriptor.get=getter),setter&&(descriptor.set=setter),descriptor}return descriptor.value=object[property],descriptor}}}if(Object.getOwnPropertyNames||(Object.getOwnPropertyNames=function(object){return Object.keys(object)}),!Object.create){var createEmpty;createEmpty=null===Object.prototype.__proto__?function(){return{__proto__:null}}:function(){var empty={};for(var i in empty)empty[i]=null;return empty.constructor=empty.hasOwnProperty=empty.propertyIsEnumerable=empty.isPrototypeOf=empty.toLocaleString=empty.toString=empty.valueOf=empty.__proto__=null,empty},Object.create=function(prototype,properties){var object;if(null===prototype)object=createEmpty();else{if("object"!=typeof prototype)throw new TypeError("typeof prototype["+typeof prototype+"] != \'object\'");var Type=function(){};Type.prototype=prototype,object=new Type,object.__proto__=prototype}return void 0!==properties&&Object.defineProperties(object,properties),object}}if(Object.defineProperty){var definePropertyWorksOnObject=doesDefinePropertyWork({}),definePropertyWorksOnDom="undefined"==typeof document||doesDefinePropertyWork(document.createElement("div"));if(!definePropertyWorksOnObject||!definePropertyWorksOnDom)var definePropertyFallback=Object.defineProperty}if(!Object.defineProperty||definePropertyFallback){var ERR_NON_OBJECT_DESCRIPTOR="Property description must be an object: ",ERR_NON_OBJECT_TARGET="Object.defineProperty called on non-object: ",ERR_ACCESSORS_NOT_SUPPORTED="getters & setters can not be defined on this javascript engine";Object.defineProperty=function(object,property,descriptor){if("object"!=typeof object&&"function"!=typeof object||null===object)throw new TypeError(ERR_NON_OBJECT_TARGET+object);if("object"!=typeof descriptor&&"function"!=typeof descriptor||null===descriptor)throw new TypeError(ERR_NON_OBJECT_DESCRIPTOR+descriptor);if(definePropertyFallback)try{return definePropertyFallback.call(Object,object,property,descriptor)}catch(exception){}if(owns(descriptor,"value"))if(supportsAccessors&&(lookupGetter(object,property)||lookupSetter(object,property))){var prototype=object.__proto__;object.__proto__=prototypeOfObject,delete object[property],object[property]=descriptor.value,object.__proto__=prototype}else object[property]=descriptor.value;else{if(!supportsAccessors)throw new TypeError(ERR_ACCESSORS_NOT_SUPPORTED);owns(descriptor,"get")&&defineGetter(object,property,descriptor.get),owns(descriptor,"set")&&defineSetter(object,property,descriptor.set)}return object}}Object.defineProperties||(Object.defineProperties=function(object,properties){for(var property in properties)owns(properties,property)&&Object.defineProperty(object,property,properties[property]);return object}),Object.seal||(Object.seal=function(object){return object}),Object.freeze||(Object.freeze=function(object){return object});try{Object.freeze(function(){})}catch(exception){Object.freeze=function(freezeObject){return function(object){return"function"==typeof object?object:freezeObject(object)}}(Object.freeze)}if(Object.preventExtensions||(Object.preventExtensions=function(object){return object}),Object.isSealed||(Object.isSealed=function(){return!1}),Object.isFrozen||(Object.isFrozen=function(){return!1}),Object.isExtensible||(Object.isExtensible=function(object){if(Object(object)===object)throw new TypeError;for(var name="";owns(object,name);)name+="?";object[name]=!0;var returnValue=owns(object,name);return delete object[name],returnValue}),!Object.keys){var hasDontEnumBug=!0,dontEnums=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],dontEnumsLength=dontEnums.length;for(var key in{toString:null})hasDontEnumBug=!1;Object.keys=function(object){if("object"!=typeof object&&"function"!=typeof object||null===object)throw new TypeError("Object.keys called on a non-object");var keys=[];for(var name in object)owns(object,name)&&keys.push(name);if(hasDontEnumBug)for(var i=0,ii=dontEnumsLength;ii>i;i++){var dontEnum=dontEnums[i];owns(object,dontEnum)&&keys.push(dontEnum)}return keys}}Date.now||(Date.now=function(){return(new Date).getTime()});var ws="\t\\n\v\\f\\r   ᠎              \\u2028\\u2029\ufeff";if(!String.prototype.trim||ws.trim()){ws="["+ws+"]";var trimBeginRegexp=RegExp("^"+ws+ws+"*"),trimEndRegexp=RegExp(ws+ws+"*$");String.prototype.trim=function(){return(this+"").replace(trimBeginRegexp,"").replace(trimEndRegexp,"")}}var toObject=function(o){if(null==o)throw new TypeError("can\'t convert "+o+" to object");return Object(o)}});'},function(t,e){ace.define("ace/ext/searchbox",["require","exports","module","ace/lib/dom","ace/lib/lang","ace/lib/event","ace/keyboard/hash_handler","ace/lib/keys"],(function(t,e,l){"use strict";var i=t("../lib/dom"),n=t("../lib/lang"),d=t("../lib/event"),a=t("../keyboard/hash_handler").HashHandler,s=t("../lib/keys");i.importCssString("\t.ace_search {\tbackground-color: #ddd;\tborder: 1px solid #cbcbcb;\tborder-top: 0 none;\tmax-width: 325px;\toverflow: hidden;\tmargin: 0;\tpadding: 4px;\tpadding-right: 6px;\tpadding-bottom: 0;\tposition: absolute;\ttop: 0px;\tz-index: 99;\twhite-space: normal;\t}\t.ace_search.left {\tborder-left: 0 none;\tborder-radius: 0px 0px 5px 0px;\tleft: 0;\t}\t.ace_search.right {\tborder-radius: 0px 0px 0px 5px;\tborder-right: 0 none;\tright: 0;\t}\t.ace_search_form, .ace_replace_form {\tborder-radius: 3px;\tborder: 1px solid #cbcbcb;\tfloat: left;\tmargin-bottom: 4px;\toverflow: hidden;\t}\t.ace_search_form.ace_nomatch {\toutline: 1px solid red;\t}\t.ace_search_field {\tbackground-color: white;\tborder-right: 1px solid #cbcbcb;\tborder: 0 none;\t-webkit-box-sizing: border-box;\t-moz-box-sizing: border-box;\tbox-sizing: border-box;\tfloat: left;\theight: 22px;\toutline: 0;\tpadding: 0 7px;\twidth: 214px;\tmargin: 0;\t}\t.ace_searchbtn,\t.ace_replacebtn {\tbackground: #fff;\tborder: 0 none;\tborder-left: 1px solid #dcdcdc;\tcursor: pointer;\tfloat: left;\theight: 22px;\tmargin: 0;\tposition: relative;\t}\t.ace_searchbtn:last-child,\t.ace_replacebtn:last-child {\tborder-top-right-radius: 3px;\tborder-bottom-right-radius: 3px;\t}\t.ace_searchbtn:disabled {\tbackground: none;\tcursor: default;\t}\t.ace_searchbtn {\tbackground-position: 50% 50%;\tbackground-repeat: no-repeat;\twidth: 27px;\t}\t.ace_searchbtn.prev {\tbackground-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAFCAYAAAB4ka1VAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADFJREFUeNpiSU1NZUAC/6E0I0yACYskCpsJiySKIiY0SUZk40FyTEgCjGgKwTRAgAEAQJUIPCE+qfkAAAAASUVORK5CYII=); \t}\t.ace_searchbtn.next {\tbackground-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAFCAYAAAB4ka1VAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADRJREFUeNpiTE1NZQCC/0DMyIAKwGJMUAYDEo3M/s+EpvM/mkKwCQxYjIeLMaELoLMBAgwAU7UJObTKsvAAAAAASUVORK5CYII=); \t}\t.ace_searchbtn_close {\tbackground: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAcCAYAAABRVo5BAAAAZ0lEQVR42u2SUQrAMAhDvazn8OjZBilCkYVVxiis8H4CT0VrAJb4WHT3C5xU2a2IQZXJjiQIRMdkEoJ5Q2yMqpfDIo+XY4k6h+YXOyKqTIj5REaxloNAd0xiKmAtsTHqW8sR2W5f7gCu5nWFUpVjZwAAAABJRU5ErkJggg==) no-repeat 50% 0;\tborder-radius: 50%;\tborder: 0 none;\tcolor: #656565;\tcursor: pointer;\tfloat: right;\tfont: 16px/16px Arial;\theight: 14px;\tmargin: 5px 1px 9px 5px;\tpadding: 0;\ttext-align: center;\twidth: 14px;\t}\t.ace_searchbtn_close:hover {\tbackground-color: #656565;\tbackground-position: 50% 100%;\tcolor: white;\t}\t.ace_replacebtn.prev {\twidth: 54px\t}\t.ace_replacebtn.next {\twidth: 27px\t}\t.ace_button {\tmargin-left: 2px;\tcursor: pointer;\t-webkit-user-select: none;\t-moz-user-select: none;\t-o-user-select: none;\t-ms-user-select: none;\tuser-select: none;\toverflow: hidden;\topacity: 0.7;\tborder: 1px solid rgba(100,100,100,0.23);\tpadding: 1px;\t-moz-box-sizing: border-box;\tbox-sizing: border-box;\tcolor: black;\t}\t.ace_button:hover {\tbackground-color: #eee;\topacity:1;\t}\t.ace_button:active {\tbackground-color: #ddd;\t}\t.ace_button.checked {\tborder-color: #3399ff;\topacity:1;\t}\t.ace_search_options{\tmargin-bottom: 3px;\ttext-align: right;\t-webkit-user-select: none;\t-moz-user-select: none;\t-o-user-select: none;\t-ms-user-select: none;\tuser-select: none;\t}","ace_searchbox");var c=''.replace(/>\s+/g,">"),o=function(t,e,l){var n=i.createElement("div");n.innerHTML=c,this.element=n.firstChild,this.$init(),this.setEditor(t)};(function(){this.setEditor=function(t){t.searchBox=this,t.container.appendChild(this.element),this.editor=t},this.$initElements=function(t){this.searchBox=t.querySelector(".ace_search_form"),this.replaceBox=t.querySelector(".ace_replace_form"),this.searchOptions=t.querySelector(".ace_search_options"),this.regExpOption=t.querySelector("[action=toggleRegexpMode]"),this.caseSensitiveOption=t.querySelector("[action=toggleCaseSensitive]"),this.wholeWordOption=t.querySelector("[action=toggleWholeWords]"),this.searchInput=this.searchBox.querySelector(".ace_search_field"),this.replaceInput=this.replaceBox.querySelector(".ace_search_field")},this.$init=function(){var t=this.element;this.$initElements(t);var e=this;d.addListener(t,"mousedown",(function(t){setTimeout((function(){e.activeInput.focus()}),0),d.stopPropagation(t)})),d.addListener(t,"click",(function(t){var l=(t.target||t.srcElement).getAttribute("action");l&&e[l]?e[l]():e.$searchBarKb.commands[l]&&e.$searchBarKb.commands[l].exec(e),d.stopPropagation(t)})),d.addCommandKeyListener(t,(function(t,l,i){var n=s.keyCodeToString(i),a=e.$searchBarKb.findKeyCommand(l,n);a&&a.exec&&(a.exec(e),d.stopEvent(t))})),this.$onChange=n.delayedCall((function(){e.find(!1,!1)})),d.addListener(this.searchInput,"input",(function(){e.$onChange.schedule(20)})),d.addListener(this.searchInput,"focus",(function(){e.activeInput=e.searchInput,e.searchInput.value&&e.highlight()})),d.addListener(this.replaceInput,"focus",(function(){e.activeInput=e.replaceInput,e.searchInput.value&&e.highlight()}))},this.$closeSearchBarKb=new a([{bindKey:"Esc",name:"closeSearchBar",exec:function(t){t.searchBox.hide()}}]),this.$searchBarKb=new a,this.$searchBarKb.bindKeys({"Ctrl-f|Command-f":function(t){var e=t.isReplace=!t.isReplace;t.replaceBox.style.display=e?"":"none",t.searchInput.focus()},"Ctrl-H|Command-Option-F":function(t){t.replaceBox.style.display="",t.replaceInput.focus()},"Ctrl-G|Command-G":function(t){t.findNext()},"Ctrl-Shift-G|Command-Shift-G":function(t){t.findPrev()},esc:function(t){setTimeout((function(){t.hide()}))},Return:function(t){t.activeInput==t.replaceInput&&t.replace(),t.findNext()},"Shift-Return":function(t){t.activeInput==t.replaceInput&&t.replace(),t.findPrev()},"Alt-Return":function(t){t.activeInput==t.replaceInput&&t.replaceAll(),t.findAll()},Tab:function(t){(t.activeInput==t.replaceInput?t.searchInput:t.replaceInput).focus()}}),this.$searchBarKb.addCommands([{name:"toggleRegexpMode",bindKey:{win:"Alt-R|Alt-/",mac:"Ctrl-Alt-R|Ctrl-Alt-/"},exec:function(t){t.regExpOption.checked=!t.regExpOption.checked,t.$syncOptions()}},{name:"toggleCaseSensitive",bindKey:{win:"Alt-C|Alt-I",mac:"Ctrl-Alt-R|Ctrl-Alt-I"},exec:function(t){t.caseSensitiveOption.checked=!t.caseSensitiveOption.checked,t.$syncOptions()}},{name:"toggleWholeWords",bindKey:{win:"Alt-B|Alt-W",mac:"Ctrl-Alt-B|Ctrl-Alt-W"},exec:function(t){t.wholeWordOption.checked=!t.wholeWordOption.checked,t.$syncOptions()}}]),this.$syncOptions=function(){i.setCssClass(this.regExpOption,"checked",this.regExpOption.checked),i.setCssClass(this.wholeWordOption,"checked",this.wholeWordOption.checked),i.setCssClass(this.caseSensitiveOption,"checked",this.caseSensitiveOption.checked),this.find(!1,!1)},this.highlight=function(t){this.editor.session.highlight(t||this.editor.$search.$options.re),this.editor.renderer.updateBackMarkers()},this.find=function(t,e,l){var n=!this.editor.find(this.searchInput.value,{skipCurrent:t,backwards:e,wrap:!0,regExp:this.regExpOption.checked,caseSensitive:this.caseSensitiveOption.checked,wholeWord:this.wholeWordOption.checked,preventScroll:l})&&this.searchInput.value;i.setCssClass(this.searchBox,"ace_nomatch",n),this.editor._emit("findSearchBox",{match:!n}),this.highlight()},this.findNext=function(){this.find(!0,!1)},this.findPrev=function(){this.find(!0,!0)},this.findAll=function(){var t=!this.editor.findAll(this.searchInput.value,{regExp:this.regExpOption.checked,caseSensitive:this.caseSensitiveOption.checked,wholeWord:this.wholeWordOption.checked})&&this.searchInput.value;i.setCssClass(this.searchBox,"ace_nomatch",t),this.editor._emit("findSearchBox",{match:!t}),this.highlight(),this.hide()},this.replace=function(){this.editor.getReadOnly()||this.editor.replace(this.replaceInput.value)},this.replaceAndFindNext=function(){this.editor.getReadOnly()||(this.editor.replace(this.replaceInput.value),this.findNext())},this.replaceAll=function(){this.editor.getReadOnly()||this.editor.replaceAll(this.replaceInput.value)},this.hide=function(){this.element.style.display="none",this.editor.keyBinding.removeKeyboardHandler(this.$closeSearchBarKb),this.editor.focus()},this.show=function(t,e){this.element.style.display="",this.replaceBox.style.display=e?"":"none",this.isReplace=e,t&&(this.searchInput.value=t),this.find(!1,!1,!0),this.searchInput.focus(),this.searchInput.select(),this.editor.keyBinding.addKeyboardHandler(this.$closeSearchBarKb)},this.isFocused=function(){var t=document.activeElement;return t==this.searchInput||t==this.replaceInput}}).call(o.prototype),e.SearchBox=o,e.Search=function(t,e){(t.searchBox||new o(t)).show(t.session.getTextRange(),e)}})),ace.acequire(["ace/ext/searchbox"],(function(){}))},function(t,e){ace.define("ace/theme/jsoneditor",["require","exports","module","ace/lib/dom"],(function(t,e,l){e.isDark=!1,e.cssClass="ace-jsoneditor",e.cssText='.ace-jsoneditor .ace_gutter {\tbackground: #ebebeb;\tcolor: #333\t}\t\t.ace-jsoneditor.ace_editor {\tfont-family: droid sans mono, consolas, monospace, courier new, courier, sans-serif;\tline-height: 1.3;\t}\t.ace-jsoneditor .ace_print-margin {\twidth: 1px;\tbackground: #e8e8e8\t}\t.ace-jsoneditor .ace_scroller {\tbackground-color: #FFFFFF\t}\t.ace-jsoneditor .ace_text-layer {\tcolor: gray\t}\t.ace-jsoneditor .ace_variable {\tcolor: #1a1a1a\t}\t.ace-jsoneditor .ace_cursor {\tborder-left: 2px solid #000000\t}\t.ace-jsoneditor .ace_overwrite-cursors .ace_cursor {\tborder-left: 0px;\tborder-bottom: 1px solid #000000\t}\t.ace-jsoneditor .ace_marker-layer .ace_selection {\tbackground: lightgray\t}\t.ace-jsoneditor.ace_multiselect .ace_selection.ace_start {\tbox-shadow: 0 0 3px 0px #FFFFFF;\tborder-radius: 2px\t}\t.ace-jsoneditor .ace_marker-layer .ace_step {\tbackground: rgb(255, 255, 0)\t}\t.ace-jsoneditor .ace_marker-layer .ace_bracket {\tmargin: -1px 0 0 -1px;\tborder: 1px solid #BFBFBF\t}\t.ace-jsoneditor .ace_marker-layer .ace_active-line {\tbackground: #FFFBD1\t}\t.ace-jsoneditor .ace_gutter-active-line {\tbackground-color : #dcdcdc\t}\t.ace-jsoneditor .ace_marker-layer .ace_selected-word {\tborder: 1px solid lightgray\t}\t.ace-jsoneditor .ace_invisible {\tcolor: #BFBFBF\t}\t.ace-jsoneditor .ace_keyword,\t.ace-jsoneditor .ace_meta,\t.ace-jsoneditor .ace_support.ace_constant.ace_property-value {\tcolor: #AF956F\t}\t.ace-jsoneditor .ace_keyword.ace_operator {\tcolor: #484848\t}\t.ace-jsoneditor .ace_keyword.ace_other.ace_unit {\tcolor: #96DC5F\t}\t.ace-jsoneditor .ace_constant.ace_language {\tcolor: darkorange\t}\t.ace-jsoneditor .ace_constant.ace_numeric {\tcolor: red\t}\t.ace-jsoneditor .ace_constant.ace_character.ace_entity {\tcolor: #BF78CC\t}\t.ace-jsoneditor .ace_invalid {\tcolor: #FFFFFF;\tbackground-color: #FF002A;\t}\t.ace-jsoneditor .ace_fold {\tbackground-color: #AF956F;\tborder-color: #000000\t}\t.ace-jsoneditor .ace_storage,\t.ace-jsoneditor .ace_support.ace_class,\t.ace-jsoneditor .ace_support.ace_function,\t.ace-jsoneditor .ace_support.ace_other,\t.ace-jsoneditor .ace_support.ace_type {\tcolor: #C52727\t}\t.ace-jsoneditor .ace_string {\tcolor: green\t}\t.ace-jsoneditor .ace_comment {\tcolor: #BCC8BA\t}\t.ace-jsoneditor .ace_entity.ace_name.ace_tag,\t.ace-jsoneditor .ace_entity.ace_other.ace_attribute-name {\tcolor: #606060\t}\t.ace-jsoneditor .ace_markup.ace_underline {\ttext-decoration: underline\t}\t.ace-jsoneditor .ace_indent-guide {\tbackground: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==") right repeat-y\t}',t("../lib/dom").importCssString(e.cssText,e.cssClass)}))}])},module.exports=factory()},function(t,e,l){"use strict";const i=l(24);l(27);const{IView:n}=l(2),d=new i({el:".app",components:{mainContent:l(32),topbar:l(94),bottomBar:l(98)},data:()=>({view:n.home}),methods:{changeView(t){this.view=n[t]},checkIfInView(){if(window.location.search){const t=decodeURIComponent(window.location.search.match(/(\?|&)show\=([^&]*)/)[2]);n[t]&&(this.view=n[t])}}},created(){this.checkIfInView()}});t.exports=d},function(t,e,l){(function(e,l){ +var factory;factory=function(){return function(t){var e={};function l(i){if(e[i])return e[i].exports;var n=e[i]={exports:{},id:i,loaded:!1};return t[i].call(n.exports,n,n.exports,l),n.loaded=!0,n.exports}return l.m=t,l.c=e,l.p="",l(0)}([function(t,e,l){"use strict";var i;try{i=l(1)}catch(t){}var n=l(51),a=l(62),d=l(54);function s(t,e,l){if(!(this instanceof s))throw new Error('JSONEditor constructor called without "new".');var i=d.getInternetExplorerVersion();if(-1!=i&&i<9)throw new Error("Unsupported browser, IE9 or newer required. Please install the newest version of your browser.");if(e&&(e.error&&(console.warn('Option "error" has been renamed to "onError"'),e.onError=e.error,delete e.error),e.change&&(console.warn('Option "change" has been renamed to "onChange"'),e.onChange=e.change,delete e.change),e.editable&&(console.warn('Option "editable" has been renamed to "onEditable"'),e.onEditable=e.editable,delete e.editable),e)){var n=["ace","theme","ajv","schema","onChange","onEditable","onError","onModeChange","escapeUnicode","history","search","mode","modes","name","indentation","sortObjectKeys"];Object.keys(e).forEach((function(t){-1===n.indexOf(t)&&console.warn('Unknown option "'+t+'". This option will be ignored')}))}arguments.length&&this._create(t,e,l)}s.modes={},s.prototype.DEBOUNCE_INTERVAL=150,s.prototype._create=function(t,e,l){this.container=t,this.options=e||{},this.json=l||{};var i=this.options.mode||"tree";this.setMode(i)},s.prototype.destroy=function(){},s.prototype.set=function(t){this.json=t},s.prototype.get=function(){return this.json},s.prototype.setText=function(t){this.json=d.parse(t)},s.prototype.getText=function(){return JSON.stringify(this.json)},s.prototype.setName=function(t){this.options||(this.options={}),this.options.name=t},s.prototype.getName=function(){return this.options&&this.options.name},s.prototype.setMode=function(t){var e,l,i=this.container,n=d.extend({},this.options),a=n.mode;n.mode=t;var c=s.modes[t];if(!c)throw new Error('Unknown mode "'+n.mode+'"');try{var o="text"==c.data;if(l=this.getName(),e=this[o?"getText":"get"](),this.destroy(),d.clear(this),d.extend(this,c.mixin),this.create(i,n),this.setName(l),this[o?"setText":"set"](e),"function"==typeof c.load)try{c.load.call(this)}catch(t){console.error(t)}if("function"==typeof n.onModeChange&&t!==a)try{n.onModeChange(t,a)}catch(t){console.error(t)}}catch(t){this._onError(t)}},s.prototype.getMode=function(){return this.options.mode},s.prototype._onError=function(t){if(!this.options||"function"!=typeof this.options.onError)throw t;this.options.onError(t)},s.prototype.setSchema=function(t){if(t){var e;try{e=this.options.ajv||i({allErrors:!0,verbose:!0})}catch(t){console.warn("Failed to create an instance of Ajv, JSON Schema validation is not available. Please use a JSONEditor bundle including Ajv, or pass an instance of Ajv as via the configuration option `ajv`.")}e&&(this.validateSchema=e.compile(t),this.options.schema=t,this.validate()),this.refresh()}else this.validateSchema=null,this.options.schema=null,this.validate(),this.refresh()},s.prototype.validate=function(){},s.prototype.refresh=function(){},s.registerMode=function(t){var e,l;if(d.isArray(t))for(e=0;e",'"',"`"," ","\r","\n","\t"]),c=["'"].concat(s),o=["%","/","?",";","#"].concat(c),b=["/","?","#"],r=/^[a-z0-9A-Z_-]{0,63}$/,m=/^([a-z0-9A-Z_-]{0,63})(.*)$/,Z={javascript:!0,"javascript:":!0},g={javascript:!0,"javascript:":!0},W={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,"http:":!0,"https:":!0,"ftp:":!0,"gopher:":!0,"file:":!0},h=l(7);function N(t,e,l){if(t&&I(t)&&t instanceof n)return t;var i=new n;return i.parse(t,e,l),i}function y(t){return"string"==typeof t}function I(t){return"object"==typeof t&&null!==t}function G(t){return null===t}n.prototype.parse=function(t,e,l){if(!y(t))throw new TypeError("Parameter 'url' must be a string, not "+typeof t);var n=t;n=n.trim();var d=a.exec(n);if(d){var s=(d=d[0]).toLowerCase();this.protocol=s,n=n.substr(d.length)}if(l||d||n.match(/^\/\/[^@\/]+@[^@\/]+/)){var N="//"===n.substr(0,2);!N||d&&g[d]||(n=n.substr(2),this.slashes=!0)}if(!g[d]&&(N||d&&!W[d])){for(var I,G,M=-1,u=0;u127?O+="x":O+=B[D];if(!O.match(r)){var T=Y.slice(0,u),X=Y.slice(u+1),z=B.match(m);z&&(T.push(z[1]),X.unshift(z[2])),X.length&&(n="/"+X.join(".")+n),this.hostname=T.join(".");break}}}if(this.hostname.length>255?this.hostname="":this.hostname=this.hostname.toLowerCase(),!p){var F=this.hostname.split("."),v=[];for(u=0;u0)&&l.host.split("@"))&&(l.auth=M.shift(),l.host=l.hostname=M.shift())),l.search=t.search,l.query=t.query,G(l.pathname)&&G(l.search)||(l.path=(l.pathname?l.pathname:"")+(l.search?l.search:"")),l.href=l.format(),l;if(!r.length)return l.pathname=null,l.search?l.path="/"+l.search:l.path=null,l.href=l.format(),l;for(var Z=r.slice(-1)[0],h=(l.host||t.host)&&("."===Z||".."===Z)||""===Z,N=0,I=r.length;I>=0;I--)"."==(Z=r[I])?r.splice(I,1):".."===Z?(r.splice(I,1),N++):N&&(r.splice(I,1),N--);if(!o&&!b)for(;N--;N)r.unshift("..");!o||""===r[0]||r[0]&&"/"===r[0].charAt(0)||r.unshift(""),h&&"/"!==r.join("/").substr(-1)&&r.push("");var M,u=""===r[0]||r[0]&&"/"===r[0].charAt(0);return m&&(l.hostname=l.host=u?"":r.length?r.shift():"",(M=!!(l.host&&l.host.indexOf("@")>0)&&l.host.split("@"))&&(l.auth=M.shift(),l.host=l.hostname=M.shift())),(o=o||l.host&&r.length)&&!u&&r.unshift(""),r.length?l.pathname=r.join("/"):(l.pathname=null,l.path=null),G(l.pathname)&&G(l.search)||(l.path=(l.pathname?l.pathname:"")+(l.search?l.search:"")),l.auth=t.auth||l.auth,l.slashes=l.slashes||t.slashes,l.href=l.format(),l},n.prototype.parseHost=function(){var t=this.host,e=d.exec(t);e&&(":"!==(e=e[0])&&(this.port=e.substr(1)),t=t.substr(0,t.length-e.length)),t&&(this.hostname=t)}},function(t,e,l){var i;(function(t,n){!function(a){"object"==typeof e&&e&&e.nodeType,"object"==typeof t&&t&&t.nodeType;var d="object"==typeof n&&n;d.global!==d&&d.window!==d&&d.self;var s,c=2147483647,o=/^xn--/,b=/[^\x20-\x7E]/,r=/[\x2E\u3002\uFF0E\uFF61]/g,m={overflow:"Overflow: input needs wider integers to process","not-basic":"Illegal input >= 0x80 (not a basic code point)","invalid-input":"Invalid input"},Z=Math.floor,g=String.fromCharCode;function W(t){throw RangeError(m[t])}function h(t,e){for(var l=t.length,i=[];l--;)i[l]=e(t[l]);return i}function N(t,e){var l=t.split("@"),i="";return l.length>1&&(i=l[0]+"@",t=l[1]),i+h((t=t.replace(r,".")).split("."),e).join(".")}function y(t){for(var e,l,i=[],n=0,a=t.length;n=55296&&e<=56319&&n65535&&(e+=g((t-=65536)>>>10&1023|55296),t=56320|1023&t),e+=g(t)})).join("")}function G(t,e){return t+22+75*(t<26)-((0!=e)<<5)}function M(t,e,l){var i=0;for(t=l?Z(t/700):t>>1,t+=Z(t/e);t>455;i+=36)t=Z(t/35);return Z(i+36*t/(t+38))}function u(t){var e,l,i,n,a,d,s,o,b,r,m,g=[],h=t.length,N=0,y=128,G=72;for((l=t.lastIndexOf("-"))<0&&(l=0),i=0;i=128&&W("not-basic"),g.push(t.charCodeAt(i));for(n=l>0?l+1:0;n=h&&W("invalid-input"),((o=(m=t.charCodeAt(n++))-48<10?m-22:m-65<26?m-65:m-97<26?m-97:36)>=36||o>Z((c-N)/d))&&W("overflow"),N+=o*d,!(o<(b=s<=G?1:s>=G+26?26:s-G));s+=36)d>Z(c/(r=36-b))&&W("overflow"),d*=r;G=M(N-a,e=g.length+1,0==a),Z(N/e)>c-y&&W("overflow"),y+=Z(N/e),N%=e,g.splice(N++,0,y)}return I(g)}function V(t){var e,l,i,n,a,d,s,o,b,r,m,h,N,I,u,V=[];for(h=(t=y(t)).length,e=128,l=0,a=72,d=0;d=e&&mZ((c-l)/(N=i+1))&&W("overflow"),l+=(s-e)*N,e=s,d=0;dc&&W("overflow"),m==e){for(o=l,b=36;!(o<(r=b<=a?1:b>=a+26?26:b-a));b+=36)u=o-r,I=36-r,V.push(g(G(r+u%I,0))),o=Z(u/I);V.push(g(G(o,0))),a=M(l,N,i==n),l=0,++i}++l,++e}return V.join("")}s={version:"1.3.2",ucs2:{decode:y,encode:I},decode:u,encode:V,toASCII:function(t){return N(t,(function(t){return b.test(t)?"xn--"+V(t):t}))},toUnicode:function(t){return N(t,(function(t){return o.test(t)?u(t.slice(4).toLowerCase()):t}))}},void 0===(i=function(){return s}.call(e,l,e,t))||(t.exports=i)}()}).call(e,l(6)(t),function(){return this}())},function(t,e){t.exports=function(t){return t.webpackPolyfill||(t.deprecate=function(){},t.paths=[],t.children=[],t.webpackPolyfill=1),t}},function(t,e,l){"use strict";e.decode=e.parse=l(8),e.encode=e.stringify=l(9)},function(t,e){"use strict";function l(t,e){return Object.prototype.hasOwnProperty.call(t,e)}t.exports=function(t,e,i,n){e=e||"&",i=i||"=";var a={};if("string"!=typeof t||0===t.length)return a;var d=/\+/g;t=t.split(e);var s=1e3;n&&"number"==typeof n.maxKeys&&(s=n.maxKeys);var c=t.length;s>0&&c>s&&(c=s);for(var o=0;o=0?(b=g.substr(0,W),r=g.substr(W+1)):(b=g,r=""),m=decodeURIComponent(b),Z=decodeURIComponent(r),l(a,m)?Array.isArray(a[m])?a[m].push(Z):a[m]=[a[m],Z]:a[m]=Z}return a}},function(t,e){"use strict";var l=function(t){switch(typeof t){case"string":return t;case"boolean":return t?"true":"false";case"number":return isFinite(t)?t:"";default:return""}};t.exports=function(t,e,i,n){return e=e||"&",i=i||"=",null===t&&(t=void 0),"object"==typeof t?Object.keys(t).map((function(n){var a=encodeURIComponent(l(n))+i;return Array.isArray(t[n])?t[n].map((function(t){return a+encodeURIComponent(l(t))})).join(e):a+encodeURIComponent(l(t[n]))})).join(e):n?encodeURIComponent(l(n))+i+encodeURIComponent(l(t)):""}},function(t,e){"use strict";t.exports=function t(e,l){if(e===l)return!0;var i,n=Array.isArray(e),a=Array.isArray(l);if(n&&a){if(e.length!=l.length)return!1;for(i=0;i=55296&&e<=56319&&n=e)throw new Error("Cannot access property/index "+n+" levels up, current level is "+e);return l[e-n]}if(n>e)throw new Error("Cannot access data "+n+" levels up, current level is "+e);var d="data"+(e-n||"");if(!a)return d;for(var s=d,o=a.split("/"),b=0;b="0"&&i<="9";)e+=i,c();if("."===i)for(e+=".";c()&&i>="0"&&i<="9";)e+=i;if("e"===i||"E"===i)for(e+=i,c(),"-"!==i&&"+"!==i||(e+=i,c());i>="0"&&i<="9";)e+=i,c();if(t=+e,isFinite(t))return t;s("Bad number")},b=function(){var t,e,l,n="";if('"'===i)for(;c();){if('"'===i)return c(),n;if("\\"===i)if(c(),"u"===i){for(l=0,e=0;e<4&&(t=parseInt(c(),16),isFinite(t));e+=1)l=16*l+t;n+=String.fromCharCode(l)}else{if("string"!=typeof d[i])break;n+=d[i]}else n+=i}s("Bad string")},r=function(){for(;i&&i<=" ";)c()};a=function(){switch(r(),i){case"{":return function(){var t,e={};if("{"===i){if(c("{"),r(),"}"===i)return c("}"),e;for(;i;){if(t=b(),r(),c(":"),Object.hasOwnProperty.call(e,t)&&s('Duplicate key "'+t+'"'),e[t]=a(),r(),"}"===i)return c("}"),e;c(","),r()}}s("Bad object")}();case"[":return function(){var t=[];if("["===i){if(c("["),r(),"]"===i)return c("]"),t;for(;i;){if(t.push(a()),r(),"]"===i)return c("]"),t;c(","),r()}}s("Bad array")}();case'"':return b();case"-":return o();default:return i>="0"&&i<="9"?o():function(){switch(i){case"t":return c("t"),c("r"),c("u"),c("e"),!0;case"f":return c("f"),c("a"),c("l"),c("s"),c("e"),!1;case"n":return c("n"),c("u"),c("l"),c("l"),null}s("Unexpected '"+i+"'")}()}},t.exports=function(t,e){var d;return n=t,l=0,i=" ",d=a(),r(),i&&s("Syntax error"),"function"==typeof e?function t(l,i){var n,a,d=l[i];if(d&&"object"==typeof d)for(n in d)Object.prototype.hasOwnProperty.call(d,n)&&(void 0!==(a=t(d,n))?d[n]=a:delete d[n]);return e.call(l,i,d)}({"":d},""):d}},function(t,e){var l,i,n,a=/[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,d={"\b":"\\b","\t":"\\t","\n":"\\n","\f":"\\f","\r":"\\r",'"':'\\"',"\\":"\\\\"};function s(t){return a.lastIndex=0,a.test(t)?'"'+t.replace(a,(function(t){var e=d[t];return"string"==typeof e?e:"\\u"+("0000"+t.charCodeAt(0).toString(16)).slice(-4)}))+'"':'"'+t+'"'}t.exports=function(t,e,a){var d;if(l="",i="","number"==typeof a)for(d=0;d2&&(e=l.call(arguments,1)),i(e)}))}))}function d(t){return Promise.all(t.map(n,this))}function s(t){for(var e=new t.constructor,l=Object.keys(t),i=[],a=0;a=1&&l<=12&&i>=1&&i<=a[l]}function g(t,e){var l=t.match(d);if(!l)return!1;var i=l[1],n=l[2],a=l[3],s=l[5];return i<=23&&n<=59&&a<=59&&(!e||s)}t.exports=m,m.fast={date:/^\d\d\d\d-[0-1]\d-[0-3]\d$/,time:/^[0-2]\d:[0-5]\d:[0-5]\d(?:\.\d+)?(?:z|[+-]\d\d:\d\d)?$/i,"date-time":/^\d\d\d\d-[0-1]\d-[0-3]\d[t\s][0-2]\d:[0-5]\d:[0-5]\d(?:\.\d+)?(?:z|[+-]\d\d:\d\d)$/i,uri:/^(?:[a-z][a-z0-9+-.]*)?(?:\:|\/)\/?[^\s]*$/i,email:/^[a-z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\.[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?)*$/i,hostname:s,ipv4:/^(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)$/,ipv6:/^\s*(?:(?:(?:[0-9a-f]{1,4}:){7}(?:[0-9a-f]{1,4}|:))|(?:(?:[0-9a-f]{1,4}:){6}(?::[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){5}(?:(?:(?::[0-9a-f]{1,4}){1,2})|:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){4}(?:(?:(?::[0-9a-f]{1,4}){1,3})|(?:(?::[0-9a-f]{1,4})?:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){3}(?:(?:(?::[0-9a-f]{1,4}){1,4})|(?:(?::[0-9a-f]{1,4}){0,2}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){2}(?:(?:(?::[0-9a-f]{1,4}){1,5})|(?:(?::[0-9a-f]{1,4}){0,3}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){1}(?:(?:(?::[0-9a-f]{1,4}){1,6})|(?:(?::[0-9a-f]{1,4}){0,4}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?::(?:(?:(?::[0-9a-f]{1,4}){1,7})|(?:(?::[0-9a-f]{1,4}){0,5}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(?:%.+)?\s*$/i,regex:N,uuid:o,"json-pointer":b,"relative-json-pointer":r},m.full={date:Z,time:g,"date-time":function(t){var e=t.split(W);return Z(e[0])&&g(e[1],!0)},uri:function(t){return h.test(t)&&c.test(t)},email:/^[a-z0-9!#$%&'*+\/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&''*+\/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/i,hostname:function(t){return t.length<=255&&s.test(t)},ipv4:/^(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)$/,ipv6:/^\s*(?:(?:(?:[0-9a-f]{1,4}:){7}(?:[0-9a-f]{1,4}|:))|(?:(?:[0-9a-f]{1,4}:){6}(?::[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){5}(?:(?:(?::[0-9a-f]{1,4}){1,2})|:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){4}(?:(?:(?::[0-9a-f]{1,4}){1,3})|(?:(?::[0-9a-f]{1,4})?:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){3}(?:(?:(?::[0-9a-f]{1,4}){1,4})|(?:(?::[0-9a-f]{1,4}){0,2}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){2}(?:(?:(?::[0-9a-f]{1,4}){1,5})|(?:(?::[0-9a-f]{1,4}){0,3}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){1}(?:(?:(?::[0-9a-f]{1,4}){1,6})|(?:(?::[0-9a-f]{1,4}){0,4}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?::(?:(?:(?::[0-9a-f]{1,4}){1,7})|(?:(?::[0-9a-f]{1,4}){0,5}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(?:%.+)?\s*$/i,regex:N,uuid:o,"json-pointer":b,"relative-json-pointer":r},m.compare={date:y,time:I,"date-time":function(t,e){if(t&&e){t=t.split(W),e=e.split(W);var l=y(t[0],e[0]);if(void 0!==l)return l||I(t[1],e[1])}}};var W=/t|\s/i,h=/\/|\:/;function N(t){try{return new RegExp(t),!0}catch(t){return!1}}function y(t,e){if(t&&e)return t>e?1:t(e=e[1]+e[2]+e[3]+(e[4]||""))?1:t "+u+") { ";var p=o+"["+u+"]";m.schema=M,m.schemaPath=d+"["+u+"]",m.errSchemaPath=s+"/"+u,m.errorPath=t.util.getPathExpr(t.errorPath,u,t.opts.jsonPointers,!0),m.dataPathArr[g]=u;var Y=t.validate(m);t.util.varOccurences(Y,W)<2?l+=" "+t.util.varReplace(Y,W,p)+" ":l+=" var "+W+" = "+p+"; "+Y+" ",l+=" } ",c&&(l+=" if (valid"+m.level+") { ",Z+="}")}"object"==typeof h&&t.util.schemaHasRules(h,t.RULES.all)&&(m.schema=h,m.schemaPath=t.schemaPath+".additionalItems",m.errSchemaPath=t.errSchemaPath+"/additionalItems",l+=" valid"+m.level+" = true; if ("+o+".length > "+a.length+") { for (var i"+i+" = "+a.length+"; i"+i+" < "+o+".length; i"+i+"++) { ",m.errorPath=t.util.getPathExpr(t.errorPath,"i"+i,t.opts.jsonPointers,!0),p=o+"[i"+i+"]",m.dataPathArr[g]="i"+i,Y=t.validate(m),t.util.varOccurences(Y,W)<2?l+=" "+t.util.varReplace(Y,W,p)+" ":l+=" var "+W+" = "+p+"; "+Y+" ",c&&(l+=" if (!valid"+m.level+") break; "),l+=" } } ",c&&(l+=" if (valid"+m.level+") { ",Z+="}"))}else t.util.schemaHasRules(a,t.RULES.all)&&(m.schema=a,m.schemaPath=d,m.errSchemaPath=s,l+=" for (var i"+i+" = 0; i"+i+" < "+o+".length; i"+i+"++) { ",m.errorPath=t.util.getPathExpr(t.errorPath,"i"+i,t.opts.jsonPointers,!0),p=o+"[i"+i+"]",m.dataPathArr[g]="i"+i,Y=t.validate(m),t.util.varOccurences(Y,W)<2?l+=" "+t.util.varReplace(Y,W,p)+" ":l+=" var "+W+" = "+p+"; "+Y+" ",c&&(l+=" if (!valid"+m.level+") break; "),l+=" } ",c&&(l+=" if (valid"+m.level+") { ",Z+="}"));return c&&(l+=" "+Z+" if ("+r+" == errors) {"),l=t.util.cleanUpCode(l)}},function(t,e){"use strict";t.exports=function(t,e){var l=" ",i=t.level,n=t.dataLevel,a=t.schema[e],d=t.schemaPath+"."+e,s=t.errSchemaPath+"/"+e,c=!t.opts.allErrors,o="data"+(n||""),b=t.opts.v5&&a.$data,r=b?t.util.getData(a.$data,n,t.dataPathArr):a;b&&(l+=" var schema"+i+" = "+r+"; ",r="schema"+i);var m,Z="maximum"==e,g=Z?"exclusiveMaximum":"exclusiveMinimum",W=t.schema[g],h=Z?"<":">",N=Z?">":"<";if(t.opts.v5&&W&&W.$data){var y=t.util.getData(W.$data,n,t.dataPathArr),I="exclusive"+i,G="' + "+(V="op"+i)+" + '";l+=" var schemaExcl"+i+" = "+y+"; ",l+=" var exclusive"+i+"; if (typeof "+(y="schemaExcl"+i)+" != 'boolean' && typeof "+y+" != 'undefined') { ";var M=g;(m=m||[]).push(l),l="",!1!==t.createErrors?(l+=" { keyword: '"+(M||"_exclusiveLimit")+"' , dataPath: (dataPath || '') + "+t.errorPath+' , schemaPath: "'+s+'" , params: {} ',!1!==t.opts.messages&&(l+=" , message: '"+g+" should be boolean' "),t.opts.verbose&&(l+=" , schema: validate.schema"+d+" , parentSchema: validate.schema"+t.schemaPath+" , data: "+o+" "),l+=" } "):l+=" {} ";var u=l;l=m.pop(),!t.compositeRule&&c?t.async?l+=" throw new ValidationError(["+u+"]); ":l+=" validate.errors = ["+u+"]; return false; ":l+=" var err = "+u+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",l+=" } else if( ",b&&(l+=" ("+r+" !== undefined && typeof "+r+" != 'number') || "),l+=" ((exclusive"+i+" = "+y+" === true) ? "+o+" "+N+"= "+r+" : "+o+" "+N+" "+r+")) { var op"+i+" = exclusive"+i+" ? '"+h+"' : '"+h+"=';"}else{G=h,(I=!0===W)||(G+="=");var V="'"+G+"'";l+=" if ( ",b&&(l+=" ("+r+" !== undefined && typeof "+r+" != 'number') || "),l+=" "+o+" "+N,I&&(l+="="),l+=" "+r+") {"}return M=e,(m=m||[]).push(l),l="",!1!==t.createErrors?(l+=" { keyword: '"+(M||"_limit")+"' , dataPath: (dataPath || '') + "+t.errorPath+' , schemaPath: "'+s+'" , params: { comparison: '+V+", limit: "+r+", exclusive: "+I+" } ",!1!==t.opts.messages&&(l+=" , message: 'should be "+G+" ",l+=b?"' + "+r:a+"'"),t.opts.verbose&&(l+=" , schema: ",l+=b?"validate.schema"+d:""+a,l+=" , parentSchema: validate.schema"+t.schemaPath+" , data: "+o+" "),l+=" } "):l+=" {} ",u=l,l=m.pop(),!t.compositeRule&&c?t.async?l+=" throw new ValidationError(["+u+"]); ":l+=" validate.errors = ["+u+"]; return false; ":l+=" var err = "+u+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",l+=" } ",c&&(l+=" else { "),l}},function(t,e){"use strict";t.exports=function(t,e){var l=" ",i=t.level,n=t.dataLevel,a=t.schema[e],d=t.schemaPath+"."+e,s=t.errSchemaPath+"/"+e,c=!t.opts.allErrors,o="data"+(n||""),b=t.opts.v5&&a.$data,r=b?t.util.getData(a.$data,n,t.dataPathArr):a;b&&(l+=" var schema"+i+" = "+r+"; ",r="schema"+i),l+="if ( ",b&&(l+=" ("+r+" !== undefined && typeof "+r+" != 'number') || "),l+=" "+o+".length "+("maxItems"==e?">":"<")+" "+r+") { ";var m=e,Z=Z||[];Z.push(l),l="",!1!==t.createErrors?(l+=" { keyword: '"+(m||"_limitItems")+"' , dataPath: (dataPath || '') + "+t.errorPath+' , schemaPath: "'+s+'" , params: { limit: '+r+" } ",!1!==t.opts.messages&&(l+=" , message: 'should NOT have ",l+="maxItems"==e?"more":"less",l+=" than ",l+=b?"' + "+r+" + '":""+a,l+=" items' "),t.opts.verbose&&(l+=" , schema: ",l+=b?"validate.schema"+d:""+a,l+=" , parentSchema: validate.schema"+t.schemaPath+" , data: "+o+" "),l+=" } "):l+=" {} ";var g=l;return l=Z.pop(),!t.compositeRule&&c?t.async?l+=" throw new ValidationError(["+g+"]); ":l+=" validate.errors = ["+g+"]; return false; ":l+=" var err = "+g+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",l+="} ",c&&(l+=" else { "),l}},function(t,e){"use strict";t.exports=function(t,e){var l=" ",i=t.level,n=t.dataLevel,a=t.schema[e],d=t.schemaPath+"."+e,s=t.errSchemaPath+"/"+e,c=!t.opts.allErrors,o="data"+(n||""),b=t.opts.v5&&a.$data,r=b?t.util.getData(a.$data,n,t.dataPathArr):a;b&&(l+=" var schema"+i+" = "+r+"; ",r="schema"+i);var m="maxLength"==e?">":"<";l+="if ( ",b&&(l+=" ("+r+" !== undefined && typeof "+r+" != 'number') || "),!1===t.opts.unicode?l+=" "+o+".length ":l+=" ucs2length("+o+") ",l+=" "+m+" "+r+") { ";var Z=e,g=g||[];g.push(l),l="",!1!==t.createErrors?(l+=" { keyword: '"+(Z||"_limitLength")+"' , dataPath: (dataPath || '') + "+t.errorPath+' , schemaPath: "'+s+'" , params: { limit: '+r+" } ",!1!==t.opts.messages&&(l+=" , message: 'should NOT be ",l+="maxLength"==e?"longer":"shorter",l+=" than ",l+=b?"' + "+r+" + '":""+a,l+=" characters' "),t.opts.verbose&&(l+=" , schema: ",l+=b?"validate.schema"+d:""+a,l+=" , parentSchema: validate.schema"+t.schemaPath+" , data: "+o+" "),l+=" } "):l+=" {} ";var W=l;return l=g.pop(),!t.compositeRule&&c?t.async?l+=" throw new ValidationError(["+W+"]); ":l+=" validate.errors = ["+W+"]; return false; ":l+=" var err = "+W+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",l+="} ",c&&(l+=" else { "),l}},function(t,e){"use strict";t.exports=function(t,e){var l=" ",i=t.level,n=t.dataLevel,a=t.schema[e],d=t.schemaPath+"."+e,s=t.errSchemaPath+"/"+e,c=!t.opts.allErrors,o="data"+(n||""),b=t.opts.v5&&a.$data,r=b?t.util.getData(a.$data,n,t.dataPathArr):a;b&&(l+=" var schema"+i+" = "+r+"; ",r="schema"+i),l+="if ( ",b&&(l+=" ("+r+" !== undefined && typeof "+r+" != 'number') || "),l+=" Object.keys("+o+").length "+("maxProperties"==e?">":"<")+" "+r+") { ";var m=e,Z=Z||[];Z.push(l),l="",!1!==t.createErrors?(l+=" { keyword: '"+(m||"_limitProperties")+"' , dataPath: (dataPath || '') + "+t.errorPath+' , schemaPath: "'+s+'" , params: { limit: '+r+" } ",!1!==t.opts.messages&&(l+=" , message: 'should NOT have ",l+="maxProperties"==e?"more":"less",l+=" than ",l+=b?"' + "+r+" + '":""+a,l+=" properties' "),t.opts.verbose&&(l+=" , schema: ",l+=b?"validate.schema"+d:""+a,l+=" , parentSchema: validate.schema"+t.schemaPath+" , data: "+o+" "),l+=" } "):l+=" {} ";var g=l;return l=Z.pop(),!t.compositeRule&&c?t.async?l+=" throw new ValidationError(["+g+"]); ":l+=" validate.errors = ["+g+"]; return false; ":l+=" var err = "+g+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",l+="} ",c&&(l+=" else { "),l}},function(t,e){"use strict";t.exports=function(t,e){var l=" ",i=t.level,n=t.dataLevel,a=t.schema[e],d=t.schemaPath+"."+e,s=t.errSchemaPath+"/"+e,c=!t.opts.allErrors,o="data"+(n||""),b=t.opts.v5&&a.$data,r=b?t.util.getData(a.$data,n,t.dataPathArr):a;b&&(l+=" var schema"+i+" = "+r+"; ",r="schema"+i),l+="var division"+i+";if (",b&&(l+=" "+r+" !== undefined && ( typeof "+r+" != 'number' || "),l+=" (division"+i+" = "+o+" / "+r+", ",t.opts.multipleOfPrecision?l+=" Math.abs(Math.round(division"+i+") - division"+i+") > 1e-"+t.opts.multipleOfPrecision+" ":l+=" division"+i+" !== parseInt(division"+i+") ",l+=" ) ",b&&(l+=" ) "),l+=" ) { ";var m=m||[];m.push(l),l="",!1!==t.createErrors?(l+=" { keyword: 'multipleOf' , dataPath: (dataPath || '') + "+t.errorPath+' , schemaPath: "'+s+'" , params: { multipleOf: '+r+" } ",!1!==t.opts.messages&&(l+=" , message: 'should be multiple of ",l+=b?"' + "+r:a+"'"),t.opts.verbose&&(l+=" , schema: ",l+=b?"validate.schema"+d:""+a,l+=" , parentSchema: validate.schema"+t.schemaPath+" , data: "+o+" "),l+=" } "):l+=" {} ";var Z=l;return l=m.pop(),!t.compositeRule&&c?t.async?l+=" throw new ValidationError(["+Z+"]); ":l+=" validate.errors = ["+Z+"]; return false; ":l+=" var err = "+Z+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",l+="} ",c&&(l+=" else { "),l}},function(t,e){"use strict";t.exports=function(t,e){var l=" ",i=t.level,n=t.dataLevel,a=t.schema[e],d=t.schemaPath+"."+e,s=t.errSchemaPath+"/"+e,c=!t.opts.allErrors,o="data"+(n||""),b="errs__"+i,r=t.util.copy(t);if(r.level++,t.util.schemaHasRules(a,t.RULES.all)){r.schema=a,r.schemaPath=d,r.errSchemaPath=s,l+=" var "+b+" = errors; ";var m,Z=t.compositeRule;t.compositeRule=r.compositeRule=!0,r.createErrors=!1,r.opts.allErrors&&(m=r.opts.allErrors,r.opts.allErrors=!1),l+=" "+t.validate(r)+" ",r.createErrors=!0,m&&(r.opts.allErrors=m),t.compositeRule=r.compositeRule=Z,l+=" if (valid"+r.level+") { ";var g=g||[];g.push(l),l="",!1!==t.createErrors?(l+=" { keyword: 'not' , dataPath: (dataPath || '') + "+t.errorPath+' , schemaPath: "'+s+'" , params: {} ',!1!==t.opts.messages&&(l+=" , message: 'should NOT be valid' "),t.opts.verbose&&(l+=" , schema: validate.schema"+d+" , parentSchema: validate.schema"+t.schemaPath+" , data: "+o+" "),l+=" } "):l+=" {} ";var W=l;l=g.pop(),!t.compositeRule&&c?t.async?l+=" throw new ValidationError(["+W+"]); ":l+=" validate.errors = ["+W+"]; return false; ":l+=" var err = "+W+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",l+=" } else { errors = "+b+"; if (vErrors !== null) { if ("+b+") vErrors.length = "+b+"; else vErrors = null; } ",t.opts.allErrors&&(l+=" } ")}else l+=" var err = ",!1!==t.createErrors?(l+=" { keyword: 'not' , dataPath: (dataPath || '') + "+t.errorPath+' , schemaPath: "'+s+'" , params: {} ',!1!==t.opts.messages&&(l+=" , message: 'should NOT be valid' "),t.opts.verbose&&(l+=" , schema: validate.schema"+d+" , parentSchema: validate.schema"+t.schemaPath+" , data: "+o+" "),l+=" } "):l+=" {} ",l+="; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",c&&(l+=" if (false) { ");return l}},function(t,e){"use strict";t.exports=function(t,e){var l=" ",i=t.level,n=t.dataLevel,a=t.schema[e],d=t.schemaPath+"."+e,s=t.errSchemaPath+"/"+e,c=!t.opts.allErrors,o="data"+(n||""),b="valid"+i,r="errs__"+i,m=t.util.copy(t),Z="";m.level++,l+="var "+r+" = errors;var prevValid"+i+" = false;var "+b+" = false; ";var g=t.compositeRule;t.compositeRule=m.compositeRule=!0;var W=a;if(W)for(var h,N=-1,y=W.length-1;N5)l+=" || validate.schema"+d+"[key"+i+"] ";else{var D=h;if(D)for(var U=-1,T=D.length-1;U= "+ot+"; ",s=t.errSchemaPath+"/patternGroups/minimum",l+=" if (!"+b+") { ",(gt=gt||[]).push(l),l="",!1!==t.createErrors?(l+=" { keyword: 'patternGroups' , dataPath: (dataPath || '') + "+t.errorPath+' , schemaPath: "'+s+"\" , params: { reason: '"+mt+"', limit: "+rt+", pattern: '"+t.util.escapeQuotes(at)+"' } ",!1!==t.opts.messages&&(l+=" , message: 'should NOT have "+Zt+" than "+rt+' properties matching pattern "'+t.util.escapeQuotes(at)+"\"' "),t.opts.verbose&&(l+=" , schema: validate.schema"+d+" , parentSchema: validate.schema"+t.schemaPath+" , data: "+o+" "),l+=" } "):l+=" {} ",k=l,l=gt.pop(),!t.compositeRule&&c?t.async?l+=" throw new ValidationError(["+k+"]); ":l+=" validate.errors = ["+k+"]; return false; ":l+=" var err = "+k+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",l+=" } ",void 0!==bt&&(l+=" else ")}var gt;if(void 0!==bt)rt=bt,mt="maximum",Zt="more",l+=" "+b+" = pgPropCount"+i+" <= "+bt+"; ",s=t.errSchemaPath+"/patternGroups/maximum",l+=" if (!"+b+") { ",(gt=gt||[]).push(l),l="",!1!==t.createErrors?(l+=" { keyword: 'patternGroups' , dataPath: (dataPath || '') + "+t.errorPath+' , schemaPath: "'+s+"\" , params: { reason: '"+mt+"', limit: "+rt+", pattern: '"+t.util.escapeQuotes(at)+"' } ",!1!==t.opts.messages&&(l+=" , message: 'should NOT have "+Zt+" than "+rt+' properties matching pattern "'+t.util.escapeQuotes(at)+"\"' "),t.opts.verbose&&(l+=" , schema: validate.schema"+d+" , parentSchema: validate.schema"+t.schemaPath+" , data: "+o+" "),l+=" } "):l+=" {} ",k=l,l=gt.pop(),!t.compositeRule&&c?t.async?l+=" throw new ValidationError(["+k+"]); ":l+=" validate.errors = ["+k+"]; return false; ":l+=" var err = "+k+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",l+=" } ";s=J,c&&(l+=" if ("+b+") { ",Z+="}")}}}}return c&&(l+=" "+Z+" if ("+r+" == errors) {"),l=t.util.cleanUpCode(l)}},function(t,e){"use strict";t.exports=function(t,e){var l=" ",i=t.level,n=t.dataLevel,a=t.schema[e],d=t.schemaPath+"."+e,s=t.errSchemaPath+"/"+e,c=!t.opts.allErrors,o="data"+(n||""),b="valid"+i,r=t.opts.v5&&a.$data,m=r?t.util.getData(a.$data,n,t.dataPathArr):a;if(r&&(l+=" var schema"+i+" = "+m+"; ",m="schema"+i),!r)if(a.length=t.opts.loopRequired;if(c)if(l+=" var missing"+i+"; ",I){r||(l+=" var schema"+i+" = validate.schema"+d+"; ");var G="' + "+(B="schema"+i+"["+(Y="i"+i)+"]")+" + '";t.opts._errorDataPathProperty&&(t.errorPath=t.util.getPathExpr(y,B,t.opts.jsonPointers)),l+=" var "+b+" = true; ",r&&(l+=" if (schema"+i+" === undefined) "+b+" = true; else if (!Array.isArray(schema"+i+")) "+b+" = false; else {"),l+=" for (var "+Y+" = 0; "+Y+" < schema"+i+".length; "+Y+"++) { "+b+" = "+o+"[schema"+i+"["+Y+"]] !== undefined; if (!"+b+") break; } ",r&&(l+=" } "),l+=" if (!"+b+") { ",(u=u||[]).push(l),l="",!1!==t.createErrors?(l+=" { keyword: 'required' , dataPath: (dataPath || '') + "+t.errorPath+' , schemaPath: "'+s+"\" , params: { missingProperty: '"+G+"' } ",!1!==t.opts.messages&&(l+=" , message: '",t.opts._errorDataPathProperty?l+="is a required property":l+="should have required property \\'"+G+"\\'",l+="' "),t.opts.verbose&&(l+=" , schema: validate.schema"+d+" , parentSchema: validate.schema"+t.schemaPath+" , data: "+o+" "),l+=" } "):l+=" {} ";var M=l;l=u.pop(),!t.compositeRule&&c?t.async?l+=" throw new ValidationError(["+M+"]); ":l+=" validate.errors = ["+M+"]; return false; ":l+=" var err = "+M+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",l+=" } else { "}else{l+=" if ( ";var u,V=Z;if(V)for(var p,Y=-1,R=V.length-1;Y 1) { var i = "+o+".length, j; outer: for (;i--;) { for (j = i; j--;) { if (equal("+o+"[i], "+o+"[j])) { "+b+" = false; break outer; } } } } ",r&&(l+=" } "),l+=" if (!"+b+") { ";var Z=Z||[];Z.push(l),l="",!1!==t.createErrors?(l+=" { keyword: 'uniqueItems' , dataPath: (dataPath || '') + "+t.errorPath+' , schemaPath: "'+s+'" , params: { i: i, j: j } ',!1!==t.opts.messages&&(l+=" , message: 'should NOT have duplicate items (items ## ' + j + ' and ' + i + ' are identical)' "),t.opts.verbose&&(l+=" , schema: ",l+=r?"validate.schema"+d:""+a,l+=" , parentSchema: validate.schema"+t.schemaPath+" , data: "+o+" "),l+=" } "):l+=" {} ";var g=l;l=Z.pop(),!t.compositeRule&&c?t.async?l+=" throw new ValidationError(["+g+"]); ":l+=" validate.errors = ["+g+"]; return false; ":l+=" var err = "+g+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",l+=" } ",c&&(l+=" else { ")}else c&&(l+=" if (true) { ");return l}},function(t,e,l){"use strict";var i="https://raw.githubusercontent.com/epoberezkin/ajv/master/lib/refs/json-schema-v5.json";function n(t){return{not:{items:{not:t}}}}t.exports={enable:function(t){var e={switch:l(44),constant:l(45),_formatLimit:l(46),patternRequired:l(47)};if(!1!==t._opts.meta){var a=l(48);t.addMetaSchema(a,i)}function d(l,i,n){var a={inline:n||e[l],statements:!0,errors:"full"};i&&(a.type=i),t.addKeyword(l,a)}d("constant"),t.addKeyword("contains",{type:"array",macro:n}),d("formatMaximum","string",e._formatLimit),d("formatMinimum","string",e._formatLimit),t.addKeyword("exclusiveFormatMaximum"),t.addKeyword("exclusiveFormatMinimum"),t.addKeyword("patternGroups"),d("patternRequired","object"),d("switch")},META_SCHEMA_ID:i}},function(t,e){"use strict";t.exports=function(t,e){var l=" ",i=t.level,n=t.dataLevel,a=t.schema[e],d=t.schemaPath+"."+e,s=t.errSchemaPath+"/"+e,c=!t.opts.allErrors,o="data"+(n||""),b="valid"+i,r="errs__"+i,m=t.util.copy(t),Z="";m.level++;var g,W="ifPassed"+t.level;l+="var "+W+";";var h=a;if(h)for(var N,y=-1,I=h.length-1;y",u="result"+i,V=t.opts.v5&&a.$data,p=V?t.util.getData(a.$data,n,t.dataPathArr):a;if(V&&(l+=" var schema"+i+" = "+p+"; ",p="schema"+i),G){var Y=t.util.getData(I.$data,n,t.dataPathArr),R="exclusive"+i,B="' + op"+i+" + '";l+=" var schemaExcl"+i+" = "+Y+"; ",l+=" if (typeof "+(Y="schemaExcl"+i)+" != 'boolean' && "+Y+" !== undefined) { "+b+" = false; ";var O=y;(h=h||[]).push(l),l="",!1!==t.createErrors?(l+=" { keyword: '"+(O||"_exclusiveFormatLimit")+"' , dataPath: (dataPath || '') + "+t.errorPath+' , schemaPath: "'+s+'" , params: {} ',!1!==t.opts.messages&&(l+=" , message: '"+y+" should be boolean' "),t.opts.verbose&&(l+=" , schema: validate.schema"+d+" , parentSchema: validate.schema"+t.schemaPath+" , data: "+o+" "),l+=" } "):l+=" {} ";var D=l;l=h.pop(),!t.compositeRule&&c?t.async?l+=" throw new ValidationError(["+D+"]); ":l+=" validate.errors = ["+D+"]; return false; ":l+=" var err = "+D+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",l+=" } ",c&&(Z+="}",l+=" else { "),V&&(l+=" if ("+p+" === undefined) "+b+" = true; else if (typeof "+p+" != 'string') "+b+" = false; else { ",Z+="}"),m&&(l+=" if (!"+W+") "+b+" = true; else { ",Z+="}"),l+=" var "+u+" = "+W+"("+o+", ",l+=V?""+p:""+t.util.toQuotedString(a),l+=" ); if ("+u+" === undefined) "+b+" = false; var exclusive"+i+" = "+Y+" === true; if ("+b+" === undefined) { "+b+" = exclusive"+i+" ? "+u+" "+M+" 0 : "+u+" "+M+"= 0; } if (!"+b+") var op"+i+" = exclusive"+i+" ? '"+M+"' : '"+M+"=';"}else B=M,(R=!0===I)||(B+="="),V&&(l+=" if ("+p+" === undefined) "+b+" = true; else if (typeof "+p+" != 'string') "+b+" = false; else { ",Z+="}"),m&&(l+=" if (!"+W+") "+b+" = true; else { ",Z+="}"),l+=" var "+u+" = "+W+"("+o+", ",l+=V?""+p:""+t.util.toQuotedString(a),l+=" ); if ("+u+" === undefined) "+b+" = false; if ("+b+" === undefined) "+b+" = "+u+" "+M,R||(l+="="),l+=" 0;";return l+=Z+"if (!"+b+") { ",O=e,(h=h||[]).push(l),l="",!1!==t.createErrors?(l+=" { keyword: '"+(O||"_formatLimit")+"' , dataPath: (dataPath || '') + "+t.errorPath+' , schemaPath: "'+s+'" , params: { limit: ',l+=V?""+p:""+t.util.toQuotedString(a),l+=" } ",!1!==t.opts.messages&&(l+=" , message: 'should be "+B+' "',l+=V?"' + "+p+" + '":""+t.util.escapeQuotes(a),l+="\"' "),t.opts.verbose&&(l+=" , schema: ",l+=V?"validate.schema"+d:""+t.util.toQuotedString(a),l+=" , parentSchema: validate.schema"+t.schemaPath+" , data: "+o+" "),l+=" } "):l+=" {} ",D=l,l=h.pop(),!t.compositeRule&&c?t.async?l+=" throw new ValidationError(["+D+"]); ":l+=" validate.errors = ["+D+"]; return false; ":l+=" var err = "+D+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",l+="}"}},function(t,e){"use strict";t.exports=function(t,e){var l=" ",i=t.level,n=t.dataLevel,a=t.schema[e],d=t.schemaPath+"."+e,s=t.errSchemaPath+"/"+e,c=!t.opts.allErrors,o="data"+(n||""),b="valid"+i,r="key"+i,m="patternMatched"+i,Z="";l+="var "+b+" = true;";var g=a;if(g)for(var W,h=-1,N=g.length-1;h0?this.autoScrollStep=(i+24-t)/3:t>a-24&&n+l.scrollTop3?(l.scrollTop+=n/3,i.animateCallback=e,i.animateTimeout=setTimeout(s,50)):(e&&e(!0),l.scrollTop=d,delete i.animateTimeout,delete i.animateCallback)};s()}else e&&e(!1)},_createFrame:function(){this.frame=document.createElement("div"),this.frame.className="jsoneditor jsoneditor-mode-"+this.options.mode,this.container.appendChild(this.frame);var t=this;function e(e){t._onEvent&&t._onEvent(e)}this.frame.onclick=function(t){var l=t.target;e(t),"BUTTON"==l.nodeName&&t.preventDefault()},this.frame.oninput=e,this.frame.onchange=e,this.frame.onkeydown=e,this.frame.onkeyup=e,this.frame.oncut=e,this.frame.onpaste=e,this.frame.onmousedown=e,this.frame.onmouseup=e,this.frame.onmouseover=e,this.frame.onmouseout=e,o.addEventListener(this.frame,"focus",e,!0),o.addEventListener(this.frame,"blur",e,!0),this.frame.onfocusin=e,this.frame.onfocusout=e,this.menu=document.createElement("div"),this.menu.className="jsoneditor-menu",this.frame.appendChild(this.menu);var l=document.createElement("button");l.type="button",l.className="jsoneditor-expand-all",l.title="Expand all fields",l.onclick=function(){t.expandAll()},this.menu.appendChild(l);var i=document.createElement("button");if(i.type="button",i.title="Collapse all fields",i.className="jsoneditor-collapse-all",i.onclick=function(){t.collapseAll()},this.menu.appendChild(i),this.history){var n=document.createElement("button");n.type="button",n.className="jsoneditor-undo jsoneditor-separator",n.title="Undo last action (Ctrl+Z)",n.onclick=function(){t._onUndo()},this.menu.appendChild(n),this.dom.undo=n;var d=document.createElement("button");d.type="button",d.className="jsoneditor-redo",d.title="Redo (Ctrl+Shift+Z)",d.onclick=function(){t._onRedo()},this.menu.appendChild(d),this.dom.redo=d,this.history.onChange=function(){n.disabled=!t.history.canUndo(),d.disabled=!t.history.canRedo()},this.history.onChange()}if(this.options&&this.options.modes&&this.options.modes.length){var s=this;this.modeSwitcher=new c(this.menu,this.options.modes,this.options.mode,(function(t){s.modeSwitcher.destroy(),s.setMode(t),s.modeSwitcher.focus()}))}this.options.search&&(this.searchBox=new a(this,this.menu))},_onUndo:function(){this.history&&(this.history.undo(),this._onChange())},_onRedo:function(){this.history&&(this.history.redo(),this._onChange())},_onEvent:function(t){"keydown"==t.type&&this._onKeyDown(t),"focus"==t.type&&(this.focusTarget=t.target),"mousedown"==t.type&&this._startDragDistance(t),"mousemove"!=t.type&&"mouseup"!=t.type&&"click"!=t.type||this._updateDragDistance(t);var e=s.getNodeFromTarget(t.target);if(e&&e.selected){if("click"==t.type){if(t.target==e.dom.menu)return void this.showContextMenu(t.target);t.hasMoved||this.deselect()}"mousedown"==t.type&&s.onDragStart(this.multiselection.nodes,t)}else"mousedown"==t.type&&(this.deselect(),e&&t.target==e.dom.drag?s.onDragStart(e,t):(!e||t.target!=e.dom.field&&t.target!=e.dom.value&&t.target!=e.dom.select)&&this._onMultiSelectStart(t));e&&e.onEvent(t)},_startDragDistance:function(t){this.dragDistanceEvent={initialTarget:t.target,initialPageX:t.pageX,initialPageY:t.pageY,dragDistance:0,hasMoved:!1}},_updateDragDistance:function(t){this.dragDistanceEvent||this._startDragDistance(t);var e=t.pageX-this.dragDistanceEvent.initialPageX,l=t.pageY-this.dragDistanceEvent.initialPageY;return this.dragDistanceEvent.dragDistance=Math.sqrt(e*e+l*l),this.dragDistanceEvent.hasMoved=this.dragDistanceEvent.hasMoved||this.dragDistanceEvent.dragDistance>10,t.dragDistance=this.dragDistanceEvent.dragDistance,t.hasMoved=this.dragDistanceEvent.hasMoved,t.dragDistance},_onMultiSelectStart:function(t){var e=s.getNodeFromTarget(t.target);if("tree"===this.options.mode&&void 0===this.options.onEditable){this.multiselection={start:e||null,end:null,nodes:[]},this._startDragDistance(t);var l=this;this.mousemove||(this.mousemove=o.addEventListener(window,"mousemove",(function(t){l._onMultiSelect(t)}))),this.mouseup||(this.mouseup=o.addEventListener(window,"mouseup",(function(t){l._onMultiSelectEnd(t)})))}},_onMultiSelect:function(t){if(t.preventDefault(),this._updateDragDistance(t),t.hasMoved){var e=s.getNodeFromTarget(t.target);e&&(null==this.multiselection.start&&(this.multiselection.start=e),this.multiselection.end=e),this.deselect();var l=this.multiselection.start,i=this.multiselection.end||this.multiselection.start;l&&i&&(this.multiselection.nodes=this._findTopLevelNodes(l,i),this.select(this.multiselection.nodes))}},_onMultiSelectEnd:function(t){this.multiselection.nodes[0]&&this.multiselection.nodes[0].dom.menu.focus(),this.multiselection.start=null,this.multiselection.end=null,this.mousemove&&(o.removeEventListener(window,"mousemove",this.mousemove),delete this.mousemove),this.mouseup&&(o.removeEventListener(window,"mouseup",this.mouseup),delete this.mouseup)},deselect:function(t){this.multiselection.nodes.forEach((function(t){t.setSelected(!1)})),this.multiselection.nodes=[],t&&(this.multiselection.start=null,this.multiselection.end=null)},select:function(t){if(!Array.isArray(t))return this.select([t]);if(t){this.deselect(),this.multiselection.nodes=t.slice(0);var e=t[0];t.forEach((function(t){t.setSelected(!0,t===e)}))}},_findTopLevelNodes:function(t,e){for(var l=t.getNodePath(),i=e.getNodePath(),n=0;n=0},i.prototype.canRedo=function(){return this.index=0;){var l=e[t];if(" "!==l&&"\n"!==l&&"\r"!==l&&"\t"!==l)return l;t--}return""}function s(){for(l+=2;l=0;s--){var c=d[s];!0===c.specified&&a.removeAttribute(c.name)}e.stripFormatting(a)}},e.setEndOfContentEditable=function(t){var e,l;document.createRange&&((e=document.createRange()).selectNodeContents(t),e.collapse(!1),(l=window.getSelection()).removeAllRanges(),l.addRange(e))},e.selectContentEditable=function(t){var e,l;t&&"DIV"==t.nodeName&&window.getSelection&&document.createRange&&((l=document.createRange()).selectNodeContents(t),(e=window.getSelection()).removeAllRanges(),e.addRange(l))},e.getSelection=function(){if(window.getSelection){var t=window.getSelection();if(t.getRangeAt&&t.rangeCount)return t.getRangeAt(0)}return null},e.setSelection=function(t){if(t&&window.getSelection){var e=window.getSelection();e.removeAllRanges(),e.addRange(t)}},e.getSelectionOffset=function(){var t=e.getSelection();return t&&"startOffset"in t&&"endOffset"in t&&t.startContainer&&t.startContainer==t.endContainer?{startOffset:t.startOffset,endOffset:t.endOffset,container:t.startContainer.parentNode}:null},e.setSelectionOffset=function(t){if(document.createRange&&window.getSelection&&window.getSelection()){var l=document.createRange();t.container.firstChild||t.container.appendChild(document.createTextNode("")),l.setStart(t.container.firstChild,t.startOffset),l.setEnd(t.container.firstChild,t.endOffset),e.setSelection(l)}},e.getInnerText=function(t,l){if(null==l&&(l={text:"",flush:function(){var t=this.text;return this.text="",t},set:function(t){this.text=t}}),t.nodeValue)return l.flush()+t.nodeValue;if(t.hasChildNodes()){for(var i=t.childNodes,n="",a=0,d=i.length;a5){var l=["("+(e.length-5)+" more...)"];(e=e.slice(0,5)).push(l)}t.message="should be equal to one of: "+e.join(", ")}}return"additionalProperties"===t.keyword&&(t.message="should NOT have additional property: "+t.params.additionalProperty),t},e.insideRect=function(t,e,l){var i=void 0!==l?l:0;return e.left-i>=t.left&&e.right+i<=t.right&&e.top-i>=t.top&&e.bottom+i<=t.bottom},e.debounce=function(t,e,l){var i;return function(){var n=this,a=arguments,d=function(){i=null,l||t.apply(n,a)},s=l&&!i;clearTimeout(i),i=setTimeout(d,e),s&&t.apply(n,a)}},e.textDiff=function(t,e){for(var l=e.length,i=0,n=t.length,a=e.length;e.charAt(i)===t.charAt(i)&&ii&&n>0;)a--,n--;return{start:i,end:a}}},function(t,e,l){var i,n,a=(i={trace:function(){},yy:{},symbols_:{error:2,JSONString:3,STRING:4,JSONNumber:5,NUMBER:6,JSONNullLiteral:7,NULL:8,JSONBooleanLiteral:9,TRUE:10,FALSE:11,JSONText:12,JSONValue:13,EOF:14,JSONObject:15,JSONArray:16,"{":17,"}":18,JSONMemberList:19,JSONMember:20,":":21,",":22,"[":23,"]":24,JSONElementList:25,$accept:0,$end:1},terminals_:{2:"error",4:"STRING",6:"NUMBER",8:"NULL",10:"TRUE",11:"FALSE",14:"EOF",17:"{",18:"}",21:":",22:",",23:"[",24:"]"},productions_:[0,[3,1],[5,1],[7,1],[9,1],[9,1],[12,2],[13,1],[13,1],[13,1],[13,1],[13,1],[13,1],[15,2],[15,3],[20,3],[19,1],[19,3],[16,2],[16,3],[25,1],[25,3]],performAction:function(t,e,l,i,n,a,d){var s=a.length-1;switch(n){case 1:this.$=t.replace(/\\(\\|")/g,"$1").replace(/\\n/g,"\n").replace(/\\r/g,"\r").replace(/\\t/g,"\t").replace(/\\v/g,"\v").replace(/\\f/g,"\f").replace(/\\b/g,"\b");break;case 2:this.$=Number(t);break;case 3:this.$=null;break;case 4:this.$=!0;break;case 5:this.$=!1;break;case 6:return this.$=a[s-1];case 13:this.$={};break;case 14:this.$=a[s-1];break;case 15:this.$=[a[s-2],a[s]];break;case 16:this.$={},this.$[a[s][0]]=a[s][1];break;case 17:this.$=a[s-2],a[s-2][a[s][0]]=a[s][1];break;case 18:this.$=[];break;case 19:this.$=a[s-1];break;case 20:this.$=[a[s]];break;case 21:this.$=a[s-2],a[s-2].push(a[s])}},table:[{3:5,4:[1,12],5:6,6:[1,13],7:3,8:[1,9],9:4,10:[1,10],11:[1,11],12:1,13:2,15:7,16:8,17:[1,14],23:[1,15]},{1:[3]},{14:[1,16]},{14:[2,7],18:[2,7],22:[2,7],24:[2,7]},{14:[2,8],18:[2,8],22:[2,8],24:[2,8]},{14:[2,9],18:[2,9],22:[2,9],24:[2,9]},{14:[2,10],18:[2,10],22:[2,10],24:[2,10]},{14:[2,11],18:[2,11],22:[2,11],24:[2,11]},{14:[2,12],18:[2,12],22:[2,12],24:[2,12]},{14:[2,3],18:[2,3],22:[2,3],24:[2,3]},{14:[2,4],18:[2,4],22:[2,4],24:[2,4]},{14:[2,5],18:[2,5],22:[2,5],24:[2,5]},{14:[2,1],18:[2,1],21:[2,1],22:[2,1],24:[2,1]},{14:[2,2],18:[2,2],22:[2,2],24:[2,2]},{3:20,4:[1,12],18:[1,17],19:18,20:19},{3:5,4:[1,12],5:6,6:[1,13],7:3,8:[1,9],9:4,10:[1,10],11:[1,11],13:23,15:7,16:8,17:[1,14],23:[1,15],24:[1,21],25:22},{1:[2,6]},{14:[2,13],18:[2,13],22:[2,13],24:[2,13]},{18:[1,24],22:[1,25]},{18:[2,16],22:[2,16]},{21:[1,26]},{14:[2,18],18:[2,18],22:[2,18],24:[2,18]},{22:[1,28],24:[1,27]},{22:[2,20],24:[2,20]},{14:[2,14],18:[2,14],22:[2,14],24:[2,14]},{3:20,4:[1,12],20:29},{3:5,4:[1,12],5:6,6:[1,13],7:3,8:[1,9],9:4,10:[1,10],11:[1,11],13:30,15:7,16:8,17:[1,14],23:[1,15]},{14:[2,19],18:[2,19],22:[2,19],24:[2,19]},{3:5,4:[1,12],5:6,6:[1,13],7:3,8:[1,9],9:4,10:[1,10],11:[1,11],13:31,15:7,16:8,17:[1,14],23:[1,15]},{18:[2,17],22:[2,17]},{18:[2,15],22:[2,15]},{22:[2,21],24:[2,21]}],defaultActions:{16:[2,6]},parseError:function(t,e){throw new Error(t)},parse:function(t){var e=this,l=[0],i=[null],n=[],a=this.table,d="",s=0,c=0,o=0;this.lexer.setInput(t),this.lexer.yy=this.yy,this.yy.lexer=this.lexer,void 0===this.lexer.yylloc&&(this.lexer.yylloc={});var b=this.lexer.yylloc;function r(){var t;return"number"!=typeof(t=e.lexer.lex()||1)&&(t=e.symbols_[t]||t),t}n.push(b),"function"==typeof this.yy.parseError&&(this.parseError=this.yy.parseError);for(var m,Z,g,W,h,N,y,I,G,M,u={};;){if(g=l[l.length-1],this.defaultActions[g]?W=this.defaultActions[g]:(null==m&&(m=r()),W=a[g]&&a[g][m]),void 0===W||!W.length||!W[0]){if(!o){for(N in G=[],a[g])this.terminals_[N]&&N>2&&G.push("'"+this.terminals_[N]+"'");var V="";V=this.lexer.showPosition?"Parse error on line "+(s+1)+":\n"+this.lexer.showPosition()+"\nExpecting "+G.join(", ")+", got '"+this.terminals_[m]+"'":"Parse error on line "+(s+1)+": Unexpected "+(1==m?"end of input":"'"+(this.terminals_[m]||m)+"'"),this.parseError(V,{text:this.lexer.match,token:this.terminals_[m]||m,line:this.lexer.yylineno,loc:b,expected:G})}if(3==o){if(1==m)throw new Error(V||"Parsing halted.");c=this.lexer.yyleng,d=this.lexer.yytext,s=this.lexer.yylineno,b=this.lexer.yylloc,m=r()}for(;!(2..toString()in a[g]);){if(0==g)throw new Error(V||"Parsing halted.");M=1,l.length=l.length-2*M,i.length=i.length-M,n.length=n.length-M,g=l[l.length-1]}Z=m,m=2,W=a[g=l[l.length-1]]&&a[g][2],o=3}if(W[0]instanceof Array&&W.length>1)throw new Error("Parse Error: multiple actions possible at state: "+g+", token: "+m);switch(W[0]){case 1:l.push(m),i.push(this.lexer.yytext),n.push(this.lexer.yylloc),l.push(W[1]),m=null,Z?(m=Z,Z=null):(c=this.lexer.yyleng,d=this.lexer.yytext,s=this.lexer.yylineno,b=this.lexer.yylloc,o>0&&o--);break;case 2:if(y=this.productions_[W[1]][1],u.$=i[i.length-y],u._$={first_line:n[n.length-(y||1)].first_line,last_line:n[n.length-1].last_line,first_column:n[n.length-(y||1)].first_column,last_column:n[n.length-1].last_column},void 0!==(h=this.performAction.call(u,d,c,s,this.yy,W[1],i,n)))return h;y&&(l=l.slice(0,-1*y*2),i=i.slice(0,-1*y),n=n.slice(0,-1*y)),l.push(this.productions_[W[1]][0]),i.push(u.$),n.push(u._$),I=a[l[l.length-2]][l[l.length-1]],l.push(I);break;case 3:return!0}}return!0}},n=function(){var t={EOF:1,parseError:function(t,e){if(!this.yy.parseError)throw new Error(t);this.yy.parseError(t,e)},setInput:function(t){return this._input=t,this._more=this._less=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this},input:function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.match+=t,this.matched+=t,t.match(/\n/)&&this.yylineno++,this._input=this._input.slice(1),t},unput:function(t){return this._input=t+this._input,this},more:function(){return this._more=!0,this},less:function(t){this._input=this.match.slice(t)+this._input},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},next:function(){if(this.done)return this.EOF;var t,e,l,i,n;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var a=this._currentRules(),d=0;de[0].length)||(e=l,i=d,this.options.flex));d++);return e?((n=e[0].match(/\n.*/g))&&(this.yylineno+=n.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:n?n[n.length-1].length-1:this.yylloc.last_column+e[0].length},this.yytext+=e[0],this.match+=e[0],this.yyleng=this.yytext.length,this._more=!1,this._input=this._input.slice(e[0].length),this.matched+=e[0],t=this.performAction.call(this,this.yy,this,a[i],this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),t||void 0):""===this._input?this.EOF:void this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var t=this.next();return void 0!==t?t:this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){return this.conditionStack.pop()},_currentRules:function(){return this.conditions[this.conditionStack[this.conditionStack.length-1]].rules},topState:function(){return this.conditionStack[this.conditionStack.length-2]},pushState:function(t){this.begin(t)},options:{},performAction:function(t,e,l,i){switch(l){case 0:break;case 1:return 6;case 2:return e.yytext=e.yytext.substr(1,e.yyleng-2),4;case 3:return 17;case 4:return 18;case 5:return 23;case 6:return 24;case 7:return 22;case 8:return 21;case 9:return 10;case 10:return 11;case 11:return 8;case 12:return 14;case 13:return"INVALID"}},rules:[/^(?:\s+)/,/^(?:(-?([0-9]|[1-9][0-9]+))(\.[0-9]+)?([eE][-+]?[0-9]+)?\b)/,/^(?:"(?:\\[\\"bfnrt/]|\\u[a-fA-F0-9]{4}|[^\\\0-\x09\x0a-\x1f"])*")/,/^(?:\{)/,/^(?:\})/,/^(?:\[)/,/^(?:\])/,/^(?:,)/,/^(?::)/,/^(?:true\b)/,/^(?:false\b)/,/^(?:null\b)/,/^(?:$)/,/^(?:.)/],conditions:{INITIAL:{rules:[0,1,2,3,4,5,6,7,8,9,10,11,12,13],inclusive:!0}}};return t}(),i.lexer=n,i);e.parser=a,e.parse=a.parse.bind(a)},function(t,e){"use strict";function l(t,e){var l=this;this.editor=t,this.timeout=void 0,this.delay=200,this.lastText=void 0,this.dom={},this.dom.container=e;var i=document.createElement("table");this.dom.table=i,i.className="jsoneditor-search",e.appendChild(i);var n=document.createElement("tbody");this.dom.tbody=n,i.appendChild(n);var a=document.createElement("tr");n.appendChild(a);var d=document.createElement("td");a.appendChild(d);var s=document.createElement("div");this.dom.results=s,s.className="jsoneditor-results",d.appendChild(s),d=document.createElement("td"),a.appendChild(d);var c=document.createElement("div");this.dom.input=c,c.className="jsoneditor-frame",c.title="Search fields and values",d.appendChild(c);var o=document.createElement("table");c.appendChild(o);var b=document.createElement("tbody");o.appendChild(b),a=document.createElement("tr"),b.appendChild(a);var r=document.createElement("button");r.type="button",r.className="jsoneditor-refresh",(d=document.createElement("td")).appendChild(r),a.appendChild(d);var m=document.createElement("input");this.dom.search=m,m.oninput=function(t){l._onDelayedSearch(t)},m.onchange=function(t){l._onSearch()},m.onkeydown=function(t){l._onKeyDown(t)},m.onkeyup=function(t){l._onKeyUp(t)},r.onclick=function(t){m.select()},(d=document.createElement("td")).appendChild(m),a.appendChild(d);var Z=document.createElement("button");Z.type="button",Z.title="Next result (Enter)",Z.className="jsoneditor-next",Z.onclick=function(){l.next()},(d=document.createElement("td")).appendChild(Z),a.appendChild(d);var g=document.createElement("button");g.type="button",g.title="Previous result (Shift+Enter)",g.className="jsoneditor-previous",g.onclick=function(){l.previous()},(d=document.createElement("td")).appendChild(g),a.appendChild(d)}l.prototype.next=function(t){if(null!=this.results){var e=null!=this.resultIndex?this.resultIndex+1:0;e>this.results.length-1&&(e=0),this._setActiveResult(e,t)}},l.prototype.previous=function(t){if(null!=this.results){var e=this.results.length-1,l=null!=this.resultIndex?this.resultIndex-1:e;l<0&&(l=e),this._setActiveResult(l,t)}},l.prototype._setActiveResult=function(t,e){if(this.activeResult){var l=this.activeResult.node;"field"==this.activeResult.elem?delete l.searchFieldActive:delete l.searchValueActive,l.updateDom()}if(!this.results||!this.results[t])return this.resultIndex=void 0,void(this.activeResult=void 0);this.resultIndex=t;var i=this.results[this.resultIndex].node,n=this.results[this.resultIndex].elem;"field"==n?i.searchFieldActive=!0:i.searchValueActive=!0,this.activeResult=this.results[this.resultIndex],i.updateDom(),i.scrollTo((function(){e&&i.focus(n)}))},l.prototype._clearDelay=function(){null!=this.timeout&&(clearTimeout(this.timeout),delete this.timeout)},l.prototype._onDelayedSearch=function(t){this._clearDelay();var e=this;this.timeout=setTimeout((function(t){e._onSearch()}),this.delay)},l.prototype._onSearch=function(t){this._clearDelay();var e=this.dom.search.value,l=e.length>0?e:void 0;if(l!=this.lastText||t)if(this.lastText=l,this.results=this.editor.search(l),this._setActiveResult(void 0),null!=l){var i=this.results.length;switch(i){case 0:this.dom.results.innerHTML="no results";break;case 1:this.dom.results.innerHTML="1 result";break;default:this.dom.results.innerHTML=i+" results"}}else this.dom.results.innerHTML=""},l.prototype._onKeyDown=function(t){var e=t.which;27==e?(this.dom.search.value="",this._onSearch(),t.preventDefault(),t.stopPropagation()):13==e&&(t.ctrlKey?this._onSearch(!0):t.shiftKey?this.previous():this.next(),t.preventDefault(),t.stopPropagation())},l.prototype._onKeyUp=function(t){var e=t.keyCode;27!=e&&13!=e&&this._onDelayedSearch(t)},l.prototype.clear=function(){this.dom.search.value="",this._onSearch()},l.prototype.destroy=function(){this.editor=null,this.dom.container.removeChild(this.dom.table),this.dom=null,this.results=null,this.activeResult=null,this._clearDelay()},t.exports=l},function(t,e,l){"use strict";var i=l(54);function n(t,e){this.dom={};var l=this,i=this.dom;this.anchor=void 0,this.items=t,this.eventListeners={},this.selection=void 0,this.onClose=e?e.close:void 0;var n=document.createElement("div");n.className="jsoneditor-contextmenu-root",i.root=n;var a=document.createElement("div");a.className="jsoneditor-contextmenu",i.menu=a,n.appendChild(a);var d=document.createElement("ul");d.className="jsoneditor-menu",a.appendChild(d),i.list=d,i.items=[];var s=document.createElement("button");s.type="button",i.focusButton=s;var c=document.createElement("li");c.style.overflow="hidden",c.style.height="0",c.appendChild(s),d.appendChild(c),function t(e,i,n){n.forEach((function(n){if("separator"==n.type){var a=document.createElement("div");a.className="jsoneditor-separator",(s=document.createElement("li")).appendChild(a),e.appendChild(s)}else{var d={},s=document.createElement("li");e.appendChild(s);var c=document.createElement("button");if(c.type="button",c.className=n.className,d.button=c,n.title&&(c.title=n.title),n.click&&(c.onclick=function(t){t.preventDefault(),l.hide(),n.click()}),s.appendChild(c),n.submenu){var o,b=document.createElement("div");if(b.className="jsoneditor-icon",c.appendChild(b),c.appendChild(document.createTextNode(n.text)),n.click){c.className+=" jsoneditor-default";var r=document.createElement("button");r.type="button",d.buttonExpand=r,r.className="jsoneditor-expand",r.innerHTML='
',s.appendChild(r),n.submenuTitle&&(r.title=n.submenuTitle),o=r}else{var m=document.createElement("div");m.className="jsoneditor-expand",c.appendChild(m),o=c}o.onclick=function(t){t.preventDefault(),l._onExpandItem(d),o.focus()};var Z=[];d.subItems=Z;var g=document.createElement("ul");d.ul=g,g.className="jsoneditor-menu",g.style.height="0",s.appendChild(g),t(g,Z,n.submenu)}else c.innerHTML='
'+n.text;i.push(d)}}))}(d,this.dom.items,t),this.maxHeight=0,t.forEach((function(e){var i=24*(t.length+(e.submenu?e.submenu.length:0));l.maxHeight=Math.max(l.maxHeight,i)}))}n.prototype._getVisibleButtons=function(){var t=[],e=this;return this.dom.items.forEach((function(l){t.push(l.button),l.buttonExpand&&t.push(l.buttonExpand),l.subItems&&l==e.expandedItem&&l.subItems.forEach((function(e){t.push(e.button),e.buttonExpand&&t.push(e.buttonExpand)}))})),t},n.visibleMenu=void 0,n.prototype.show=function(t,e){this.hide();var l=!0;if(e){var a=t.getBoundingClientRect(),d=e.getBoundingClientRect();a.bottom+this.maxHeightd.top&&(l=!1)}if(l){var s=t.offsetHeight;this.dom.menu.style.left="0px",this.dom.menu.style.top=s+"px",this.dom.menu.style.bottom=""}else this.dom.menu.style.left="0px",this.dom.menu.style.top="",this.dom.menu.style.bottom="0px";var c=t.parentNode;c.insertBefore(this.dom.root,c.firstChild);var o=this,b=this.dom.list;this.eventListeners.mousedown=i.addEventListener(window,"mousedown",(function(t){var e=t.target;e==b||o._isChildOf(e,b)||(o.hide(),t.stopPropagation(),t.preventDefault())})),this.eventListeners.keydown=i.addEventListener(window,"keydown",(function(t){o._onKeyDown(t)})),this.selection=i.getSelection(),this.anchor=t,setTimeout((function(){o.dom.focusButton.focus()}),0),n.visibleMenu&&n.visibleMenu.hide(),n.visibleMenu=this},n.prototype.hide=function(){for(var t in this.dom.root.parentNode&&(this.dom.root.parentNode.removeChild(this.dom.root),this.onClose&&this.onClose()),this.eventListeners)if(this.eventListeners.hasOwnProperty(t)){var e=this.eventListeners[t];e&&i.removeEventListener(window,t,e),delete this.eventListeners[t]}n.visibleMenu==this&&(n.visibleMenu=void 0)},n.prototype._onExpandItem=function(t){var e=this,l=t==this.expandedItem,n=this.expandedItem;if(n&&(n.ul.style.height="0",n.ul.style.padding="",setTimeout((function(){e.expandedItem!=n&&(n.ul.style.display="",i.removeClassName(n.ul.parentNode,"jsoneditor-selected"))}),300),this.expandedItem=void 0),!l){var a=t.ul;a.style.display="block",a.clientHeight,setTimeout((function(){e.expandedItem==t&&(a.style.height=24*a.childNodes.length+"px",a.style.padding="5px 10px")}),0),i.addClassName(a.parentNode,"jsoneditor-selected"),this.expandedItem=t}},n.prototype._onKeyDown=function(t){var e,l,n,a,d=t.target,s=t.which,c=!1;27==s?(this.selection&&i.setSelection(this.selection),this.anchor&&this.anchor.focus(),this.hide(),c=!0):9==s?t.shiftKey?0==(l=(e=this._getVisibleButtons()).indexOf(d))&&(e[e.length-1].focus(),c=!0):(l=(e=this._getVisibleButtons()).indexOf(d))==e.length-1&&(e[0].focus(),c=!0):37==s?("jsoneditor-expand"==d.className&&(l=(e=this._getVisibleButtons()).indexOf(d),(n=e[l-1])&&n.focus()),c=!0):38==s?(l=(e=this._getVisibleButtons()).indexOf(d),(n=e[l-1])&&"jsoneditor-expand"==n.className&&(n=e[l-2]),n||(n=e[e.length-1]),n&&n.focus(),c=!0):39==s?(l=(e=this._getVisibleButtons()).indexOf(d),(a=e[l+1])&&"jsoneditor-expand"==a.className&&a.focus(),c=!0):40==s&&(l=(e=this._getVisibleButtons()).indexOf(d),(a=e[l+1])&&"jsoneditor-expand"==a.className&&(a=e[l+2]),a||(a=e[0]),a&&(a.focus(),c=!0),c=!0),c&&(t.stopPropagation(),t.preventDefault())},n.prototype._isChildOf=function(t,e){for(var l=t.parentNode;l;){if(l==e)return!0;l=l.parentNode}return!1},t.exports=n},function(t,e,l){"use strict";var i=l(59),n=l(57),a=l(60),d=l(54);function s(t,e){this.editor=t,this.dom={},this.expanded=!1,e&&e instanceof Object?(this.setField(e.field,e.fieldEditable),this.setValue(e.value,e.type)):(this.setField(""),this.setValue(null)),this._debouncedOnChangeValue=d.debounce(this._onChangeValue.bind(this),s.prototype.DEBOUNCE_INTERVAL),this._debouncedOnChangeField=d.debounce(this._onChangeField.bind(this),s.prototype.DEBOUNCE_INTERVAL)}s.prototype.DEBOUNCE_INTERVAL=150,s.prototype._updateEditability=function(){if(this.editable={field:!0,value:!0},this.editor&&(this.editable.field="tree"===this.editor.options.mode,this.editable.value="view"!==this.editor.options.mode,("tree"===this.editor.options.mode||"form"===this.editor.options.mode)&&"function"==typeof this.editor.options.onEditable)){var t=this.editor.options.onEditable({field:this.field,value:this.value,path:this.getPath()});"boolean"==typeof t?(this.editable.field=t,this.editable.value=t):("boolean"==typeof t.field&&(this.editable.field=t.field),"boolean"==typeof t.value&&(this.editable.value=t.value))}},s.prototype.getPath=function(){for(var t=this,e=[];t;){var l=t.parent?"array"!=t.parent.type?t.field:t.index:void 0;void 0!==l&&e.unshift(l),t=t.parent}return e},s.prototype.findNode=function(t){for(var e=d.parsePath(t),l=this;l&&e.length>0;){var i=e.shift();if("number"==typeof i){if("array"!==l.type)throw new Error("Cannot get child node at index "+i+": node is no array");l=l.childs[i]}else{if("object"!==l.type)throw new Error("Cannot get child node "+i+": node is no object");l=l.childs.filter((function(t){return t.field===i}))[0]}}return l},s.prototype.findParents=function(){for(var t=[],e=this.parent;e;)t.unshift(e),e=e.parent;return t},s.prototype.setError=function(t,e){this.getDom(),this.error=t;var l=this.dom.tdError;if(t){l||(l=document.createElement("td"),this.dom.tdError=l,this.dom.tdValue.parentNode.appendChild(l));var i=document.createElement("div");i.className="jsoneditor-popover jsoneditor-right",i.appendChild(document.createTextNode(t.message));var n=document.createElement("button");for(n.type="button",n.className="jsoneditor-schema-error",n.appendChild(i),n.onmouseover=n.onfocus=function(){for(var t=["right","above","below","left"],e=0;e0&&(t=this.childs.filter((function(t){return-1!==l.indexOf(t.field)})).map((function(t){return{node:t,error:{message:'duplicate key "'+t.field+'"'}}})))}if(this.childs)for(i=0;i0&&(t=t.concat(a))}return t},s.prototype.clearDom=function(){this.dom={}},s.prototype.getDom=function(){var t=this.dom;if(t.tr)return t.tr;if(this._updateEditability(),t.tr=document.createElement("tr"),t.tr.node=this,"tree"===this.editor.options.mode){var e=document.createElement("td");if(this.editable.field&&this.parent){var l=document.createElement("button");l.type="button",t.drag=l,l.className="jsoneditor-dragarea",l.title="Drag to move this field (Alt+Shift+Arrows)",e.appendChild(l)}t.tr.appendChild(e);var i=document.createElement("td"),n=document.createElement("button");n.type="button",t.menu=n,n.className="jsoneditor-contextmenu",n.title="Click to open the actions menu (Ctrl+M)",i.appendChild(t.menu),t.tr.appendChild(i)}var a=document.createElement("td");return t.tr.appendChild(a),t.tree=this._createDomTree(),a.appendChild(t.tree),this.updateDom({updateIndexes:!0}),t.tr},s.onDragStart=function(t,e){if(!Array.isArray(t))return s.onDragStart([t],e);if(0!==t.length){var l=t[0],i=t[t.length-1],n=s.getNodeFromTarget(e.target),a=i._nextSibling(),c=l.editor,o=d.getAbsoluteTop(n.dom.tr)-d.getAbsoluteTop(l.dom.tr);c.mousemove||(c.mousemove=d.addEventListener(window,"mousemove",(function(e){s.onDrag(t,e)}))),c.mouseup||(c.mouseup=d.addEventListener(window,"mouseup",(function(e){s.onDragEnd(t,e)}))),c.highlighter.lock(),c.drag={oldCursor:document.body.style.cursor,oldSelection:c.getSelection(),oldBeforeNode:a,mouseX:e.pageX,offsetY:o,level:l.getLevel()},document.body.style.cursor="move",e.preventDefault()}},s.onDrag=function(t,e){if(!Array.isArray(t))return s.onDrag([t],e);if(0!==t.length){var l,i,n,a,o,b,r,m,Z,g,W,h,N,y,I=t[0].editor,G=e.pageY-I.drag.offsetY,M=e.pageX,u=!1,V=t[0];if(l=V.dom.tr,Z=d.getAbsoluteTop(l),h=l.offsetHeight,G(g=(i=r.dom.tr)?d.getAbsoluteTop(i):0)+h&&(r=void 0),r&&(t.forEach((function(t){r.parent.moveBefore(t,r)})),u=!0)}else{var p=t[t.length-1];if(a=(o=p.expanded&&p.append?p.append.getDom():p.dom.tr)?o.nextSibling:void 0){W=d.getAbsoluteTop(a),n=a;do{m=s.getNodeFromTarget(n),n&&(N=n.nextSibling?d.getAbsoluteTop(n.nextSibling):0,y=n?N-W:0,m.parent.childs.length==t.length&&m.parent.childs[t.length-1]==p&&(Z+=27)),n=n.nextSibling}while(n&&G>Z+y);if(m&&m.parent){var Y=M-I.drag.mouseX,R=Math.round(Y/24/2),B=I.drag.level+R,O=m.getLevel();for(i=m.dom.tr.previousSibling;O0)return l[0].enum}return null},s._findSchema=function(t,e){for(var l=t,i=0;i0?this.editor.multiselection.nodes:[this],G=I[0],M=I[I.length-1];if(13==m){if(Z==this.dom.value)this.editable.value&&!t.ctrlKey||d.isUrl(this.value)&&(window.open(this.value,"_blank"),N=!0);else if(Z==this.dom.expand&&this._hasChilds()){var u=t.ctrlKey;this._onExpand(u),Z.focus(),N=!0}}else if(68==m)g&&y&&(s.onDuplicate(I),N=!0);else if(69==m)g&&(this._onExpand(W),Z.focus(),N=!0);else if(77==m&&y)g&&(this.showContextMenu(Z),N=!0);else if(46==m&&y)g&&(s.onRemove(I),N=!0);else if(45==m&&y)g&&!W?(this._onInsertBefore(),N=!0):g&&W&&(this._onInsertAfter(),N=!0);else if(35==m){if(h){var V=this._lastNode();V&&V.focus(s.focusElement||this._getElementName(Z)),N=!0}}else if(36==m){if(h){var p=this._firstNode();p&&p.focus(s.focusElement||this._getElementName(Z)),N=!0}}else if(37==m){if(h&&!W){var Y=this._previousElement(Z);Y&&this.focus(this._getElementName(Y)),N=!0}else if(h&&W&&y){if(M.expanded){var R=M.getAppend();i=R?R.nextSibling:void 0}else{var B=M.getDom();i=B.nextSibling}i&&(l=s.getNodeFromTarget(i),n=i.nextSibling,U=s.getNodeFromTarget(n),l&&l instanceof c&&1!=M.parent.childs.length&&U&&U.parent&&(a=this.editor.getSelection(),o=M._nextSibling(),I.forEach((function(t){U.parent.moveBefore(t,U)})),this.focus(s.focusElement||this._getElementName(Z)),this.editor._onAction("moveNodes",{nodes:I,oldBeforeNode:o,newBeforeNode:U,oldSelection:a,newSelection:this.editor.getSelection()})))}}else if(38==m)h&&!W?((e=this._previousNode())&&(this.editor.deselect(!0),e.focus(s.focusElement||this._getElementName(Z))),N=!0):!h&&g&&W&&y?((e=this._previousNode())&&((r=this.editor.multiselection).start=r.start||this,r.end=e,b=this.editor._findTopLevelNodes(r.start,r.end),this.editor.select(b),e.focus("field")),N=!0):h&&W&&y&&((e=G._previousNode())&&e.parent&&(a=this.editor.getSelection(),o=M._nextSibling(),I.forEach((function(t){e.parent.moveBefore(t,e)})),this.focus(s.focusElement||this._getElementName(Z)),this.editor._onAction("moveNodes",{nodes:I,oldBeforeNode:o,newBeforeNode:e,oldSelection:a,newSelection:this.editor.getSelection()})),N=!0);else if(39==m){if(h&&!W){var O=this._nextElement(Z);O&&this.focus(this._getElementName(O)),N=!0}else if(h&&W&&y){var D=(B=G.getDom()).previousSibling;D&&(e=s.getNodeFromTarget(D))&&e.parent&&e instanceof c&&!e.isVisible()&&(a=this.editor.getSelection(),o=M._nextSibling(),I.forEach((function(t){e.parent.moveBefore(t,e)})),this.focus(s.focusElement||this._getElementName(Z)),this.editor._onAction("moveNodes",{nodes:I,oldBeforeNode:o,newBeforeNode:e,oldSelection:a,newSelection:this.editor.getSelection()}))}}else if(40==m)if(h&&!W)(l=this._nextNode())&&(this.editor.deselect(!0),l.focus(s.focusElement||this._getElementName(Z))),N=!0;else if(!h&&g&&W&&y)(l=this._nextNode())&&((r=this.editor.multiselection).start=r.start||this,r.end=l,b=this.editor._findTopLevelNodes(r.start,r.end),this.editor.select(b),l.focus("field")),N=!0;else if(h&&W&&y){var U=(l=M.expanded?M.append?M.append._nextNode():void 0:M._nextNode())&&(l._nextNode()||l.parent.append);U&&U.parent&&(a=this.editor.getSelection(),o=M._nextSibling(),I.forEach((function(t){U.parent.moveBefore(t,U)})),this.focus(s.focusElement||this._getElementName(Z)),this.editor._onAction("moveNodes",{nodes:I,oldBeforeNode:o,newBeforeNode:U,oldSelection:a,newSelection:this.editor.getSelection()})),N=!0}N&&(t.preventDefault(),t.stopPropagation())},s.prototype._onExpand=function(t){if(t){var e=this.dom.tr.parentNode,l=e.parentNode,i=l.scrollTop;l.removeChild(e)}this.expanded?this.collapse(t):this.expand(t),t&&(l.appendChild(e),l.scrollTop=i)},s.onRemove=function(t){if(!Array.isArray(t))return s.onRemove([t]);if(t&&t.length>0){var e=t[0],l=e.parent,i=e.editor,n=e.getIndex();i.highlighter.unhighlight();var a=i.getSelection();s.blurNodes(t);var d=i.getSelection();t.forEach((function(t){t.parent._remove(t)})),i._onAction("removeNodes",{nodes:t.slice(0),parent:l,index:n,oldSelection:a,newSelection:d})}},s.onDuplicate=function(t){if(!Array.isArray(t))return s.onDuplicate([t]);if(t&&t.length>0){var e=t[t.length-1],l=e.parent,i=e.editor;i.deselect(i.multiselection.nodes);var n=i.getSelection(),a=e,d=t.map((function(t){var e=t.clone();return l.insertAfter(e,a),a=e,e}));1===t.length?d[0].focus():i.select(d);var c=i.getSelection();i._onAction("duplicateNodes",{afterNode:e,nodes:d,parent:l,oldSelection:n,newSelection:c})}},s.prototype._onInsertBefore=function(t,e,l){var i=this.editor.getSelection(),n=new s(this.editor,{field:null!=t?t:"",value:null!=e?e:"",type:l});n.expand(!0),this.parent.insertBefore(n,this),this.editor.highlighter.unhighlight(),n.focus("field");var a=this.editor.getSelection();this.editor._onAction("insertBeforeNodes",{nodes:[n],beforeNode:this,parent:this.parent,oldSelection:i,newSelection:a})},s.prototype._onInsertAfter=function(t,e,l){var i=this.editor.getSelection(),n=new s(this.editor,{field:null!=t?t:"",value:null!=e?e:"",type:l});n.expand(!0),this.parent.insertAfter(n,this),this.editor.highlighter.unhighlight(),n.focus("field");var a=this.editor.getSelection();this.editor._onAction("insertAfterNodes",{nodes:[n],afterNode:this,parent:this.parent,oldSelection:i,newSelection:a})},s.prototype._onAppend=function(t,e,l){var i=this.editor.getSelection(),n=new s(this.editor,{field:null!=t?t:"",value:null!=e?e:"",type:l});n.expand(!0),this.parent.appendChild(n),this.editor.highlighter.unhighlight(),n.focus("field");var a=this.editor.getSelection();this.editor._onAction("appendNodes",{nodes:[n],parent:this.parent,oldSelection:i,newSelection:a})},s.prototype._onChangeType=function(t){var e=this.type;if(t!=e){var l=this.editor.getSelection();this.changeType(t);var i=this.editor.getSelection();this.editor._onAction("changeType",{node:this,oldType:e,newType:t,oldSelection:l,newSelection:i})}},s.prototype.sort=function(t){if(this._hasChilds()){var e="desc"==t?-1:1,l="array"==this.type?"value":"field";this.hideChilds();var n=this.childs,a=this.sortOrder;this.childs=this.childs.concat(),this.childs.sort((function(t,n){return e*i(t[l],n[l])})),this.sortOrder=1==e?"asc":"desc",this.editor._onAction("sort",{node:this,oldChilds:n,oldSort:a,newChilds:this.childs,newSort:this.sortOrder}),this.showChilds()}},s.prototype.getAppend=function(){return this.append||(this.append=new c(this.editor),this.append.setParent(this)),this.append.getDom()},s.getNodeFromTarget=function(t){for(;t;){if(t.node)return t.node;t=t.parentNode}},s.blurNodes=function(t){if(Array.isArray(t)){var e=t[0],l=e.parent,i=e.getIndex();l.childs[i+t.length]?l.childs[i+t.length].focus():l.childs[i-1]?l.childs[i-1].focus():l.focus()}else s.blurNodes([t])},s.prototype._nextSibling=function(){var t=this.parent.childs.indexOf(this);return this.parent.childs[t+1]||this.parent.append},s.prototype._previousNode=function(){var t=null,e=this.getDom();if(e&&e.parentNode){var l=e;do{l=l.previousSibling,t=s.getNodeFromTarget(l)}while(l&&t instanceof c&&!t.isVisible())}return t},s.prototype._nextNode=function(){var t=null,e=this.getDom();if(e&&e.parentNode){var l=e;do{l=l.nextSibling,t=s.getNodeFromTarget(l)}while(l&&t instanceof c&&!t.isVisible())}return t},s.prototype._firstNode=function(){var t=null,e=this.getDom();if(e&&e.parentNode){var l=e.parentNode.firstChild;t=s.getNodeFromTarget(l)}return t},s.prototype._lastNode=function(){var t=null,e=this.getDom();if(e&&e.parentNode){var l=e.parentNode.lastChild;for(t=s.getNodeFromTarget(l);l&&t instanceof c&&!t.isVisible();)l=l.previousSibling,t=s.getNodeFromTarget(l)}return t},s.prototype._previousElement=function(t){var e=this.dom;switch(t){case e.value:if(this.fieldEditable)return e.field;case e.field:if(this._hasChilds())return e.expand;case e.expand:return e.menu;case e.menu:if(e.drag)return e.drag;default:return null}},s.prototype._nextElement=function(t){var e=this.dom;switch(t){case e.drag:return e.menu;case e.menu:if(this._hasChilds())return e.expand;case e.expand:if(this.fieldEditable)return e.field;case e.field:if(!this._hasChilds())return e.value;default:return null}},s.prototype._getElementName=function(t){var e=this.dom;for(var l in e)if(e.hasOwnProperty(l)&&e[l]==t)return l;return null},s.prototype._hasChilds=function(){return"array"==this.type||"object"==this.type},s.TYPE_TITLES={auto:'Field type "auto". The field type is automatically determined from the value and can be a string, number, boolean, or null.',object:'Field type "object". An object contains an unordered set of key/value pairs.',array:'Field type "array". An array contains an ordered collection of values.',string:'Field type "string". Field type is not determined from the value, but always returned as string.'},s.prototype.showContextMenu=function(t,e){var l=this,i=s.TYPE_TITLES,a=[];if(this.editable.value&&a.push({text:"Type",title:"Change the type of this field",className:"jsoneditor-type-"+this.type,submenu:[{text:"Auto",className:"jsoneditor-type-auto"+("auto"==this.type?" jsoneditor-selected":""),title:i.auto,click:function(){l._onChangeType("auto")}},{text:"Array",className:"jsoneditor-type-array"+("array"==this.type?" jsoneditor-selected":""),title:i.array,click:function(){l._onChangeType("array")}},{text:"Object",className:"jsoneditor-type-object"+("object"==this.type?" jsoneditor-selected":""),title:i.object,click:function(){l._onChangeType("object")}},{text:"String",className:"jsoneditor-type-string"+("string"==this.type?" jsoneditor-selected":""),title:i.string,click:function(){l._onChangeType("string")}}]}),this._hasChilds()){var d="asc"==this.sortOrder?"desc":"asc";a.push({text:"Sort",title:"Sort the childs of this "+this.type,className:"jsoneditor-sort-"+d,click:function(){l.sort(d)},submenu:[{text:"Ascending",className:"jsoneditor-sort-asc",title:"Sort the childs of this "+this.type+" in ascending order",click:function(){l.sort("asc")}},{text:"Descending",className:"jsoneditor-sort-desc",title:"Sort the childs of this "+this.type+" in descending order",click:function(){l.sort("desc")}}]})}if(this.parent&&this.parent._hasChilds()){a.length&&a.push({type:"separator"});var c=l.parent.childs;l==c[c.length-1]&&a.push({text:"Append",title:"Append a new field with type 'auto' after this field (Ctrl+Shift+Ins)",submenuTitle:"Select the type of the field to be appended",className:"jsoneditor-append",click:function(){l._onAppend("","","auto")},submenu:[{text:"Auto",className:"jsoneditor-type-auto",title:i.auto,click:function(){l._onAppend("","","auto")}},{text:"Array",className:"jsoneditor-type-array",title:i.array,click:function(){l._onAppend("",[])}},{text:"Object",className:"jsoneditor-type-object",title:i.object,click:function(){l._onAppend("",{})}},{text:"String",className:"jsoneditor-type-string",title:i.string,click:function(){l._onAppend("","","string")}}]}),a.push({text:"Insert",title:"Insert a new field with type 'auto' before this field (Ctrl+Ins)",submenuTitle:"Select the type of the field to be inserted",className:"jsoneditor-insert",click:function(){l._onInsertBefore("","","auto")},submenu:[{text:"Auto",className:"jsoneditor-type-auto",title:i.auto,click:function(){l._onInsertBefore("","","auto")}},{text:"Array",className:"jsoneditor-type-array",title:i.array,click:function(){l._onInsertBefore("",[])}},{text:"Object",className:"jsoneditor-type-object",title:i.object,click:function(){l._onInsertBefore("",{})}},{text:"String",className:"jsoneditor-type-string",title:i.string,click:function(){l._onInsertBefore("","","string")}}]}),this.editable.field&&(a.push({text:"Duplicate",title:"Duplicate this field (Ctrl+D)",className:"jsoneditor-duplicate",click:function(){s.onDuplicate(l)}}),a.push({text:"Remove",title:"Remove this field (Ctrl+Del)",className:"jsoneditor-remove",click:function(){s.onRemove(l)}}))}new n(a,{close:e}).show(t,this.editor.content)},s.prototype._getType=function(t){return t instanceof Array?"array":t instanceof Object?"object":"string"==typeof t&&"string"!=typeof this._stringCast(t)?"string":"auto"},s.prototype._stringCast=function(t){var e=t.toLowerCase(),l=Number(t),i=parseFloat(t);return""==t?"":"null"==e?null:"true"==e||"false"!=e&&(isNaN(l)||isNaN(i)?t:l)},s.prototype._escapeHTML=function(t){if("string"!=typeof t)return String(t);var e=String(t).replace(/&/g,"&").replace(//g,">").replace(/ /g,"  ").replace(/^ /," ").replace(/ $/," "),l=JSON.stringify(e),i=l.substring(1,l.length-1);return!0===this.editor.options.escapeUnicode&&(i=d.escapeUnicodeChars(i)),i},s.prototype._unescapeHTML=function(t){var e='"'+this._escapeJSON(t)+'"';return d.parse(e).replace(/</g,"<").replace(/>/g,">").replace(/ |\u00A0/g," ").replace(/&/g,"&")},s.prototype._escapeJSON=function(t){for(var e="",l=0;lh)return 1}for(var N=0,y=Math.max(Z.length,g.length);Nn)return 1}return 0}},function(t,e,l){"use strict";var i=l(54),n=l(57);t.exports=function(t){function e(t){this.editor=t,this.dom={}}return e.prototype=new t,e.prototype.getDom=function(){var t=this.dom;if(t.tr)return t.tr;this._updateEditability();var e=document.createElement("tr");if(e.node=this,t.tr=e,"tree"===this.editor.options.mode){t.tdDrag=document.createElement("td");var l=document.createElement("td");t.tdMenu=l;var i=document.createElement("button");i.type="button",i.className="jsoneditor-contextmenu",i.title="Click to open the actions menu (Ctrl+M)",t.menu=i,l.appendChild(t.menu)}var n=document.createElement("td"),a=document.createElement("div");return a.innerHTML="(empty)",a.className="jsoneditor-readonly",n.appendChild(a),t.td=n,t.text=a,this.updateDom(),e},e.prototype.updateDom=function(){var t=this.dom,e=t.td;e&&(e.style.paddingLeft=24*this.getLevel()+26+"px");var l=t.text;l&&(l.innerHTML="(empty "+this.parent.type+")");var i=t.tr;this.isVisible()?t.tr.firstChild||(t.tdDrag&&i.appendChild(t.tdDrag),t.tdMenu&&i.appendChild(t.tdMenu),i.appendChild(e)):t.tr.firstChild&&(t.tdDrag&&i.removeChild(t.tdDrag),t.tdMenu&&i.removeChild(t.tdMenu),i.removeChild(e))},e.prototype.isVisible=function(){return 0==this.parent.childs.length},e.prototype.showContextMenu=function(e,l){var i=this,a=t.TYPE_TITLES,d=[{text:"Append",title:"Append a new field with type 'auto' (Ctrl+Shift+Ins)",submenuTitle:"Select the type of the field to be appended",className:"jsoneditor-insert",click:function(){i._onAppend("","","auto")},submenu:[{text:"Auto",className:"jsoneditor-type-auto",title:a.auto,click:function(){i._onAppend("","","auto")}},{text:"Array",className:"jsoneditor-type-array",title:a.array,click:function(){i._onAppend("",[])}},{text:"Object",className:"jsoneditor-type-object",title:a.object,click:function(){i._onAppend("",{})}},{text:"String",className:"jsoneditor-type-string",title:a.string,click:function(){i._onAppend("","","string")}}]}];new n(d,{close:l}).show(e,this.editor.content)},e.prototype.onEvent=function(t){var e=t.type,l=t.target||t.srcElement,n=this.dom;if(l==n.menu&&("mouseover"==e?this.editor.highlighter.highlight(this.parent):"mouseout"==e&&this.editor.highlighter.unhighlight()),"click"==e&&l==n.menu){var a=this.editor.highlighter;a.highlight(this.parent),a.lock(),i.addClassName(n.menu,"jsoneditor-selected"),this.showContextMenu(n.menu,(function(){i.removeClassName(n.menu,"jsoneditor-selected"),a.unlock(),a.unhighlight()}))}"keydown"==e&&this.onKeyDown(t)},e}},function(t,e,l){"use strict";var i=l(57);function n(t,e,l,n){for(var a={code:{text:"Code",title:"Switch to code highlighter",click:function(){n("code")}},form:{text:"Form",title:"Switch to form editor",click:function(){n("form")}},text:{text:"Text",title:"Switch to plain text editor",click:function(){n("text")}},tree:{text:"Tree",title:"Switch to tree editor",click:function(){n("tree")}},view:{text:"View",title:"Switch to tree view",click:function(){n("view")}}},d=[],s=0;s0){if(l.length>3){l=l.slice(0,3);var i=this.validateSchema.errors.length-3;l.push("("+i+" more errors...)")}var n=document.createElement("div");n.innerHTML=''+l.map((function(t){return''+("string"==typeof t?'":"")+""})).join("")+"
'+t+"
"+t.dataPath+""+t.message+"
",this.dom.validationErrors=n,this.frame.appendChild(n);var d=n.clientHeight;this.content.style.marginBottom=-d+"px",this.content.style.paddingBottom=d+"px"}this.aceEditor&&this.aceEditor.resize(!1)}};t.exports=[{mode:"text",mixin:d,data:"text",load:d.format},{mode:"code",mixin:d,data:"text",load:d.format}]},function(t,e,l){var i=l(64);l(67),l(69),t.exports=i},function(t,e,l){!function(){var t=function(){return this}();t||"undefined"==typeof window||(t=window);var e=function(t,l,i){"string"==typeof t?(2==arguments.length&&(i=l),e.modules[t]||(e.payloads[t]=i,e.modules[t]=null)):e.original?e.original.apply(this,arguments):(console.error("dropping module because define wasn't a string."),console.trace())};e.modules={},e.payloads={};var l,i,n=function(t,e,l){if("string"==typeof e){var i=s(t,e);if(null!=i)return l&&l(),i}else if("[object Array]"===Object.prototype.toString.call(e)){for(var n=[],d=0,c=e.length;d1&&c(i,"")>-1&&(l=RegExp(this.source,n.replace.call(s(this),"g","")),n.replace.call(t.slice(i.index),l,(function(){for(var t=1;ti.index&&this.lastIndex--}return i},d||(RegExp.prototype.test=function(t){var e=n.exec.call(this,t);return e&&this.global&&!e[0].length&&this.lastIndex>e.index&&this.lastIndex--,!!e}))})),ace.define("ace/lib/es5-shim",["require","exports","module"],(function(t,e,l){function i(){}Function.prototype.bind||(Function.prototype.bind=function(t){var e=this;if("function"!=typeof e)throw new TypeError("Function.prototype.bind called on incompatible "+e);var l=m.call(arguments,1),n=function(){if(this instanceof n){var i=e.apply(this,l.concat(m.call(arguments)));return Object(i)===i?i:this}return e.apply(t,l.concat(m.call(arguments)))};return e.prototype&&(i.prototype=e.prototype,n.prototype=new i,i.prototype=null),n});var n,a,d,s,c,o=Function.prototype.call,b=Array.prototype,r=Object.prototype,m=b.slice,Z=o.bind(r.toString),g=o.bind(r.hasOwnProperty);if((c=g(r,"__defineGetter__"))&&(n=o.bind(r.__defineGetter__),a=o.bind(r.__defineSetter__),d=o.bind(r.__lookupGetter__),s=o.bind(r.__lookupSetter__)),2!=[1,2].splice(0).length)if(function(){function t(t){var e=new Array(t+2);return e[0]=e[1]=0,e}var e,l=[];if(l.splice.apply(l,t(20)),l.splice.apply(l,t(26)),e=l.length,l.splice(5,0,"XXX"),l.length,e+1==l.length)return!0}()){var W=Array.prototype.splice;Array.prototype.splice=function(t,e){return arguments.length?W.apply(this,[void 0===t?0:t,void 0===e?this.length-t:e].concat(m.call(arguments,2))):[]}}else Array.prototype.splice=function(t,e){var l=this.length;t>0?t>l&&(t=l):null==t?t=0:t<0&&(t=Math.max(l+t,0)),t+es)for(r=o;r--;)this[c+r]=this[s+r];if(a&&t===b)this.length=b,this.push.apply(this,n);else for(this.length=b+a,r=0;r>>0;if("[object Function]"!=Z(t))throw new TypeError;for(;++n>>0,n=Array(i),a=arguments[1];if("[object Function]"!=Z(t))throw new TypeError(t+" is not a function");for(var d=0;d>>0,a=[],d=arguments[1];if("[object Function]"!=Z(t))throw new TypeError(t+" is not a function");for(var s=0;s>>0,n=arguments[1];if("[object Function]"!=Z(t))throw new TypeError(t+" is not a function");for(var a=0;a>>0,n=arguments[1];if("[object Function]"!=Z(t))throw new TypeError(t+" is not a function");for(var a=0;a>>0;if("[object Function]"!=Z(t))throw new TypeError(t+" is not a function");if(!i&&1==arguments.length)throw new TypeError("reduce of empty array with no initial value");var n,a=0;if(arguments.length>=2)n=arguments[1];else for(;;){if(a in l){n=l[a++];break}if(++a>=i)throw new TypeError("reduce of empty array with no initial value")}for(;a>>0;if("[object Function]"!=Z(t))throw new TypeError(t+" is not a function");if(!i&&1==arguments.length)throw new TypeError("reduceRight of empty array with no initial value");var n,a=i-1;if(arguments.length>=2)n=arguments[1];else for(;;){if(a in l){n=l[a--];break}if(--a<0)throw new TypeError("reduceRight of empty array with no initial value")}do{a in this&&(n=t.call(void 0,n,l[a],a,e))}while(a--);return n}),Array.prototype.indexOf&&-1==[0,1].indexOf(1,2)||(Array.prototype.indexOf=function(t){var e=I&&"[object String]"==Z(this)?this.split(""):X(this),l=e.length>>>0;if(!l)return-1;var i=0;for(arguments.length>1&&(i=T(arguments[1])),i=i>=0?i:Math.max(0,l+i);i>>0;if(!l)return-1;var i=l-1;for(arguments.length>1&&(i=Math.min(i,T(arguments[1]))),i=i>=0?i:l-Math.abs(i);i>=0;i--)if(i in e&&t===e[i])return i;return-1}),Object.getPrototypeOf||(Object.getPrototypeOf=function(t){return t.__proto__||(t.constructor?t.constructor.prototype:r)}),Object.getOwnPropertyDescriptor||(Object.getOwnPropertyDescriptor=function(t,e){if("object"!=typeof t&&"function"!=typeof t||null===t)throw new TypeError("Object.getOwnPropertyDescriptor called on a non-object: "+t);if(g(t,e)){var l;if(l={enumerable:!0,configurable:!0},c){var i=t.__proto__;t.__proto__=r;var n=d(t,e),a=s(t,e);if(t.__proto__=i,n||a)return n&&(l.get=n),a&&(l.set=a),l}return l.value=t[e],l}}),Object.getOwnPropertyNames||(Object.getOwnPropertyNames=function(t){return Object.keys(t)}),Object.create||(h=null===Object.prototype.__proto__?function(){return{__proto__:null}}:function(){var t={};for(var e in t)t[e]=null;return t.constructor=t.hasOwnProperty=t.propertyIsEnumerable=t.isPrototypeOf=t.toLocaleString=t.toString=t.valueOf=t.__proto__=null,t},Object.create=function(t,e){var l;if(null===t)l=h();else{if("object"!=typeof t)throw new TypeError("typeof prototype["+typeof t+"] != 'object'");var i=function(){};i.prototype=t,(l=new i).__proto__=t}return void 0!==e&&Object.defineProperties(l,e),l}),Object.defineProperty){var M=G({}),u="undefined"==typeof document||G(document.createElement("div"));if(!M||!u)var V=Object.defineProperty}Object.defineProperty&&!V||(Object.defineProperty=function(t,e,l){if("object"!=typeof t&&"function"!=typeof t||null===t)throw new TypeError("Object.defineProperty called on non-object: "+t);if("object"!=typeof l&&"function"!=typeof l||null===l)throw new TypeError("Property description must be an object: "+l);if(V)try{return V.call(Object,t,e,l)}catch(t){}if(g(l,"value"))if(c&&(d(t,e)||s(t,e))){var i=t.__proto__;t.__proto__=r,delete t[e],t[e]=l.value,t.__proto__=i}else t[e]=l.value;else{if(!c)throw new TypeError("getters & setters can not be defined on this javascript engine");g(l,"get")&&n(t,e,l.get),g(l,"set")&&a(t,e,l.set)}return t}),Object.defineProperties||(Object.defineProperties=function(t,e){for(var l in e)g(e,l)&&Object.defineProperty(t,l,e[l]);return t}),Object.seal||(Object.seal=function(t){return t}),Object.freeze||(Object.freeze=function(t){return t});try{Object.freeze((function(){}))}catch(t){Object.freeze=(N=Object.freeze,function(t){return"function"==typeof t?t:N(t)})}if(Object.preventExtensions||(Object.preventExtensions=function(t){return t}),Object.isSealed||(Object.isSealed=function(t){return!1}),Object.isFrozen||(Object.isFrozen=function(t){return!1}),Object.isExtensible||(Object.isExtensible=function(t){if(Object(t)===t)throw new TypeError;for(var e="";g(t,e);)e+="?";t[e]=!0;var l=g(t,e);return delete t[e],l}),!Object.keys){var p=!0,Y=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],R=Y.length;for(var B in{toString:null})p=!1;Object.keys=function(t){if("object"!=typeof t&&"function"!=typeof t||null===t)throw new TypeError("Object.keys called on a non-object");var e=[];for(var l in t)g(t,l)&&e.push(l);if(p)for(var i=0,n=R;i0||-1)*Math.floor(Math.abs(t))),t}var X=function(t){if(null==t)throw new TypeError("can't convert "+t+" to object");return Object(t)}})),ace.define("ace/lib/fixoldbrowsers",["require","exports","module","ace/lib/regexp","ace/lib/es5-shim"],(function(t,e,l){"use strict";t("./regexp"),t("./es5-shim")})),ace.define("ace/lib/dom",["require","exports","module"],(function(t,e,l){"use strict";e.getDocumentHead=function(t){return t||(t=document),t.head||t.getElementsByTagName("head")[0]||t.documentElement},e.createElement=function(t,e){return document.createElementNS?document.createElementNS(e||"http://www.w3.org/1999/xhtml",t):document.createElement(t)},e.hasCssClass=function(t,e){return-1!==(t.className||"").split(/\s+/g).indexOf(e)},e.addCssClass=function(t,l){e.hasCssClass(t,l)||(t.className+=" "+l)},e.removeCssClass=function(t,e){for(var l=t.className.split(/\s+/g);;){var i=l.indexOf(e);if(-1==i)break;l.splice(i,1)}t.className=l.join(" ")},e.toggleCssClass=function(t,e){for(var l=t.className.split(/\s+/g),i=!0;;){var n=l.indexOf(e);if(-1==n)break;i=!1,l.splice(n,1)}return i&&l.push(e),t.className=l.join(" "),i},e.setCssClass=function(t,l,i){i?e.addCssClass(t,l):e.removeCssClass(t,l)},e.hasCssString=function(t,e){var l,i=0;if((e=e||document).createStyleSheet&&(l=e.styleSheets)){for(;i=0?parseFloat((n.match(/(?:MSIE |Trident\/[0-9]+[\.0-9]+;.*rv:)([0-9]+[\.0-9]+)/)||[])[1]):parseFloat((n.match(/(?:Trident\/[0-9]+[\.0-9]+;.*rv:)([0-9]+[\.0-9]+)/)||[])[1]),e.isOldIE=e.isIE&&e.isIE<9,e.isGecko=e.isMozilla=(window.Controllers||window.controllers)&&"Gecko"===window.navigator.product,e.isOldGecko=e.isGecko&&parseInt((n.match(/rv\:(\d+)/)||[])[1],10)<4,e.isOpera=window.opera&&"[object Opera]"==Object.prototype.toString.call(window.opera),e.isWebKit=parseFloat(n.split("WebKit/")[1])||void 0,e.isChrome=parseFloat(n.split(" Chrome/")[1])||void 0,e.isAIR=n.indexOf("AdobeAIR")>=0,e.isIPad=n.indexOf("iPad")>=0,e.isTouchPad=n.indexOf("TouchPad")>=0,e.isChromeOS=n.indexOf(" CrOS ")>=0}})),ace.define("ace/lib/event",["require","exports","module","ace/lib/keys","ace/lib/useragent"],(function(t,e,l){"use strict";var i=t("./keys"),n=t("./useragent"),a=null,d=0;e.addListener=function(t,e,l){if(t.addEventListener)return t.addEventListener(e,l,!1);if(t.attachEvent){var i=function(){l.call(t,window.event)};l._wrapper=i,t.attachEvent("on"+e,i)}},e.removeListener=function(t,e,l){if(t.removeEventListener)return t.removeEventListener(e,l,!1);t.detachEvent&&t.detachEvent("on"+e,l._wrapper||l)},e.stopEvent=function(t){return e.stopPropagation(t),e.preventDefault(t),!1},e.stopPropagation=function(t){t.stopPropagation?t.stopPropagation():t.cancelBubble=!0},e.preventDefault=function(t){t.preventDefault?t.preventDefault():t.returnValue=!1},e.getButton=function(t){return"dblclick"==t.type?0:"contextmenu"==t.type||n.isMac&&t.ctrlKey&&!t.altKey&&!t.shiftKey?2:t.preventDefault?t.button:{1:0,2:2,4:1}[t.button]},e.capture=function(t,l,i){function n(t){l&&l(t),i&&i(t),e.removeListener(document,"mousemove",l,!0),e.removeListener(document,"mouseup",n,!0),e.removeListener(document,"dragstart",n,!0)}return e.addListener(document,"mousemove",l,!0),e.addListener(document,"mouseup",n,!0),e.addListener(document,"dragstart",n,!0),n},e.addTouchMoveListener=function(t,l){var i,n;"ontouchmove"in t&&(e.addListener(t,"touchstart",(function(t){var e=t.changedTouches[0];i=e.clientX,n=e.clientY})),e.addListener(t,"touchmove",(function(t){var e=t.changedTouches[0];t.wheelX=-(e.clientX-i)/1,t.wheelY=-(e.clientY-n)/1,i=e.clientX,n=e.clientY,l(t)})))},e.addMouseWheelListener=function(t,l){"onmousewheel"in t?e.addListener(t,"mousewheel",(function(t){void 0!==t.wheelDeltaX?(t.wheelX=-t.wheelDeltaX/8,t.wheelY=-t.wheelDeltaY/8):(t.wheelX=0,t.wheelY=-t.wheelDelta/8),l(t)})):"onwheel"in t?e.addListener(t,"wheel",(function(t){switch(t.deltaMode){case t.DOM_DELTA_PIXEL:t.wheelX=.35*t.deltaX||0,t.wheelY=.35*t.deltaY||0;break;case t.DOM_DELTA_LINE:case t.DOM_DELTA_PAGE:t.wheelX=5*(t.deltaX||0),t.wheelY=5*(t.deltaY||0)}l(t)})):e.addListener(t,"DOMMouseScroll",(function(t){t.axis&&t.axis==t.HORIZONTAL_AXIS?(t.wheelX=5*(t.detail||0),t.wheelY=0):(t.wheelX=0,t.wheelY=5*(t.detail||0)),l(t)}))},e.addMultiMouseDownListener=function(t,l,i,a){var d,s,c,o=0,b={2:"dblclick",3:"tripleclick",4:"quadclick"};function r(t){if(0!==e.getButton(t)?o=0:t.detail>1?++o>4&&(o=1):o=1,n.isIE){var r=Math.abs(t.clientX-d)>5||Math.abs(t.clientY-s)>5;c&&!r||(o=1),c&&clearTimeout(c),c=setTimeout((function(){c=null}),l[o-1]||600),1==o&&(d=t.clientX,s=t.clientY)}if(t._clicks=o,i[a]("mousedown",t),o>4)o=0;else if(o>1)return i[a](b[o],t)}function m(t){o=2,c&&clearTimeout(c),c=setTimeout((function(){c=null}),l[o-1]||600),i[a]("mousedown",t),i[a](b[o],t)}Array.isArray(t)||(t=[t]),t.forEach((function(t){e.addListener(t,"mousedown",r),n.isOldIE&&e.addListener(t,"dblclick",m)}))};var s=n.isMac&&n.isOpera&&!("KeyboardEvent"in window)?function(t){return 0|(t.metaKey?1:0)|(t.altKey?2:0)|(t.shiftKey?4:0)|(t.ctrlKey?8:0)}:function(t){return 0|(t.ctrlKey?1:0)|(t.altKey?2:0)|(t.shiftKey?4:0)|(t.metaKey?8:0)};function c(t,e,l){var c=s(e);if(!n.isMac&&a){if(a.OSKey&&(c|=8),a.altGr){if(3==(3&c))return;a.altGr=0}if(18===l||17===l){var o="location"in e?e.location:e.keyLocation;17===l&&1===o?1==a[l]&&(d=e.timeStamp):18===l&&3===c&&2===o&&e.timeStamp-d<50&&(a.altGr=!0)}}if(l in i.MODIFIER_KEYS&&(l=-1),8&c&&l>=91&&l<=93&&(l=-1),c||13!==l||3!==(o="location"in e?e.location:e.keyLocation)||(t(e,c,-l),!e.defaultPrevented)){if(n.isChromeOS&&8&c){if(t(e,c,l),e.defaultPrevented)return;c&=-9}return!!(c||l in i.FUNCTION_KEYS||l in i.PRINTABLE_KEYS)&&t(e,c,l)}}function o(){(a=Object.create(null)).count=0,a.lastT=0}e.getModifierString=function(t){return i.KEY_MODS[s(t)]},e.addCommandKeyListener=function(t,l){var i=e.addListener;if(n.isOldGecko||n.isOpera&&!("KeyboardEvent"in window)){var d=null;i(t,"keydown",(function(t){d=t.keyCode})),i(t,"keypress",(function(t){return c(l,t,d)}))}else{var s=null;i(t,"keydown",(function(t){var e=t.keyCode;a[e]=(a[e]||0)+1,91==e||92==e?a.OSKey=!0:a.OSKey&&t.timeStamp-a.lastT>200&&1==a.count&&o(),1==a[e]&&a.count++,a.lastT=t.timeStamp;var i=c(l,t,e);return s=t.defaultPrevented,i})),i(t,"keypress",(function(t){s&&(t.ctrlKey||t.altKey||t.shiftKey||t.metaKey)&&(e.stopEvent(t),s=null)})),i(t,"keyup",(function(t){var e=t.keyCode;a[e]?a.count=Math.max(a.count-1,0):o(),91!=e&&92!=e||(a.OSKey=!1),a[e]=null})),a||(o(),i(window,"focus",o))}},"object"==typeof window&&window.postMessage&&!n.isOldIE&&(e.nextTick=function(t,l){l=l||window,e.addListener(l,"message",(function i(n){"zero-timeout-message-1"==n.data&&(e.stopPropagation(n),e.removeListener(l,"message",i),t())})),l.postMessage("zero-timeout-message-1","*")}),e.nextFrame="object"==typeof window&&(window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.msRequestAnimationFrame||window.oRequestAnimationFrame),e.nextFrame?e.nextFrame=e.nextFrame.bind(window):e.nextFrame=function(t){setTimeout(t,17)}})),ace.define("ace/lib/lang",["require","exports","module"],(function(t,e,l){"use strict";e.last=function(t){return t[t.length-1]},e.stringReverse=function(t){return t.split("").reverse().join("")},e.stringRepeat=function(t,e){for(var l="";e>0;)1&e&&(l+=t),(e>>=1)&&(t+=t);return l};var i=/^\s\s*/,n=/\s\s*$/;e.stringTrimLeft=function(t){return t.replace(i,"")},e.stringTrimRight=function(t){return t.replace(n,"")},e.copyObject=function(t){var e={};for(var l in t)e[l]=t[l];return e},e.copyArray=function(t){for(var e=[],l=0,i=t.length;l1),t.preventDefault()):(this.setState("focusWait"),void this.captureMouse(t))},this.startSelect=function(t,e){t=t||this.editor.renderer.screenToTextCoordinates(this.x,this.y);var l=this.editor;l.$blockScrolling++,this.mousedownEvent.getShiftKey()?l.selection.selectToPosition(t):e||l.selection.moveToPosition(t),e||this.select(),l.renderer.scroller.setCapture&&l.renderer.scroller.setCapture(),l.setStyle("ace_selecting"),this.setState("select"),l.$blockScrolling--},this.select=function(){var t,e=this.editor,l=e.renderer.screenToTextCoordinates(this.x,this.y);if(e.$blockScrolling++,this.$clickSelection){var i=this.$clickSelection.comparePoint(l);if(-1==i)t=this.$clickSelection.end;else if(1==i)t=this.$clickSelection.start;else{var a=n(this.$clickSelection,l);l=a.cursor,t=a.anchor}e.selection.setSelectionAnchor(t.row,t.column)}e.selection.selectToPosition(l),e.$blockScrolling--,e.renderer.scrollCursorIntoView()},this.extendSelectionBy=function(t){var e,l=this.editor,i=l.renderer.screenToTextCoordinates(this.x,this.y),a=l.selection[t](i.row,i.column);if(l.$blockScrolling++,this.$clickSelection){var d=this.$clickSelection.comparePoint(a.start),s=this.$clickSelection.comparePoint(a.end);if(-1==d&&s<=0)e=this.$clickSelection.end,a.end.row==i.row&&a.end.column==i.column||(i=a.start);else if(1==s&&d>=0)e=this.$clickSelection.start,a.start.row==i.row&&a.start.column==i.column||(i=a.end);else if(-1==d&&1==s)i=a.end,e=a.start;else{var c=n(this.$clickSelection,i);i=c.cursor,e=c.anchor}l.selection.setSelectionAnchor(e.row,e.column)}l.selection.selectToPosition(i),l.$blockScrolling--,l.renderer.scrollCursorIntoView()},this.selectEnd=this.selectAllEnd=this.selectByWordsEnd=this.selectByLinesEnd=function(){this.$clickSelection=null,this.editor.unsetStyle("ace_selecting"),this.editor.renderer.scroller.releaseCapture&&this.editor.renderer.scroller.releaseCapture()},this.focusWait=function(){var t,e,l,i,n=(t=this.mousedownEvent.x,e=this.mousedownEvent.y,l=this.x,i=this.y,Math.sqrt(Math.pow(l-t,2)+Math.pow(i-e,2))),a=Date.now();(n>0||a-this.mousedownEvent.time>this.$focusTimout)&&this.startSelect(this.mousedownEvent.getDocumentPosition())},this.onDoubleClick=function(t){var e=t.getDocumentPosition(),l=this.editor,i=l.session.getBracketRange(e);i?(i.isEmpty()&&(i.start.column--,i.end.column++),this.setState("select")):(i=l.selection.getWordRange(e.row,e.column),this.setState("selectByWords")),this.$clickSelection=i,this.select()},this.onTripleClick=function(t){var e=t.getDocumentPosition(),l=this.editor;this.setState("selectByLines");var i=l.getSelectionRange();i.isMultiLine()&&i.contains(e.row,e.column)?(this.$clickSelection=l.selection.getLineRange(i.start.row),this.$clickSelection.end=l.selection.getLineRange(i.end.row).end):this.$clickSelection=l.selection.getLineRange(e.row),this.select()},this.onQuadClick=function(t){var e=this.editor;e.selectAll(),this.$clickSelection=e.getSelectionRange(),this.setState("selectAll")},this.onMouseWheel=function(t){if(!t.getAccelKey()){t.getShiftKey()&&t.wheelY&&!t.wheelX&&(t.wheelX=t.wheelY,t.wheelY=0);var e=t.domEvent.timeStamp,l=e-(this.$lastScrollTime||0),i=this.editor;return i.renderer.isScrollableBy(t.wheelX*t.speed,t.wheelY*t.speed)||l<200?(this.$lastScrollTime=e,i.renderer.scrollBy(t.wheelX*t.speed,t.wheelY*t.speed),t.stop()):void 0}},this.onTouchMove=function(t){var e=t.domEvent.timeStamp,l=e-(this.$lastScrollTime||0),i=this.editor;if(i.renderer.isScrollableBy(t.wheelX*t.speed,t.wheelY*t.speed)||l<200)return this.$lastScrollTime=e,i.renderer.scrollBy(t.wheelX*t.speed,t.wheelY*t.speed),t.stop()}}.call(i.prototype),e.DefaultHandlers=i})),ace.define("ace/tooltip",["require","exports","module","ace/lib/oop","ace/lib/dom"],(function(t,e,l){"use strict";t("./lib/oop");var i=t("./lib/dom");function n(t){this.isOpen=!1,this.$element=null,this.$parentNode=t}(function(){this.$init=function(){return this.$element=i.createElement("div"),this.$element.className="ace_tooltip",this.$element.style.display="none",this.$parentNode.appendChild(this.$element),this.$element},this.getElement=function(){return this.$element||this.$init()},this.setText=function(t){i.setInnerText(this.getElement(),t)},this.setHtml=function(t){this.getElement().innerHTML=t},this.setPosition=function(t,e){this.getElement().style.left=t+"px",this.getElement().style.top=e+"px"},this.setClassName=function(t){i.addCssClass(this.getElement(),t)},this.show=function(t,e,l){null!=t&&this.setText(t),null!=e&&null!=l&&this.setPosition(e,l),this.isOpen||(this.getElement().style.display="block",this.isOpen=!0)},this.hide=function(){this.isOpen&&(this.getElement().style.display="none",this.isOpen=!1)},this.getHeight=function(){return this.getElement().offsetHeight},this.getWidth=function(){return this.getElement().offsetWidth}}).call(n.prototype),e.Tooltip=n})),ace.define("ace/mouse/default_gutter_handler",["require","exports","module","ace/lib/dom","ace/lib/oop","ace/lib/event","ace/tooltip"],(function(t,e,l){"use strict";var i=t("../lib/dom"),n=t("../lib/oop"),a=t("../lib/event"),d=t("../tooltip").Tooltip;function s(t){d.call(this,t)}n.inherits(s,d),function(){this.setPosition=function(t,e){var l=window.innerWidth||document.documentElement.clientWidth,i=window.innerHeight||document.documentElement.clientHeight,n=this.getWidth(),a=this.getHeight();(t+=15)+n>l&&(t-=t+n-l),(e+=15)+a>i&&(e-=20+a),d.prototype.setPosition.call(this,t,e)}}.call(s.prototype),e.GutterHandler=function(t){var e,l,n,d=t.editor,c=d.renderer.$gutterLayer,o=new s(d.container);function b(){e&&(e=clearTimeout(e)),n&&(o.hide(),n=null,d.removeEventListener("mousewheel",b))}function r(t){o.setPosition(t.x,t.y)}t.editor.setDefaultHandler("guttermousedown",(function(e){if(d.isFocused()&&0==e.getButton()&&"foldWidgets"!=c.getRegion(e)){var l=e.getDocumentPosition().row,i=d.session.selection;if(e.getShiftKey())i.selectTo(l,0);else{if(2==e.domEvent.detail)return d.selectAll(),e.preventDefault();t.$clickSelection=d.selection.getLineRange(l)}return t.setState("selectByLines"),t.captureMouse(e),e.preventDefault()}})),t.editor.setDefaultHandler("guttermousemove",(function(a){var s=a.domEvent.target||a.domEvent.srcElement;if(i.hasCssClass(s,"ace_fold-widget"))return b();n&&t.$tooltipFollowsMouse&&r(a),l=a,e||(e=setTimeout((function(){e=null,l&&!t.isMousePressed?function(){var e=l.getDocumentPosition().row,i=c.$annotations[e];if(!i)return b();if(e==d.session.getLength()){var a=d.renderer.pixelToScreenCoordinates(0,l.y).row,s=l.$pos;if(a>d.session.documentToScreenRow(s.row,s.column))return b()}if(n!=i)if(n=i.text.join("
"),o.setHtml(n),o.show(),d.on("mousewheel",b),t.$tooltipFollowsMouse)r(l);else{var m=l.domEvent.target.getBoundingClientRect(),Z=o.getElement().style;Z.left=m.right+"px",Z.top=m.bottom+"px"}}():b()}),50))})),a.addListener(d.renderer.$gutter,"mouseout",(function(t){l=null,n&&!e&&(e=setTimeout((function(){e=null,b()}),50))})),d.on("changeSession",b)}})),ace.define("ace/mouse/mouse_event",["require","exports","module","ace/lib/event","ace/lib/useragent"],(function(t,e,l){"use strict";var i=t("../lib/event"),n=t("../lib/useragent"),a=e.MouseEvent=function(t,e){this.domEvent=t,this.editor=e,this.x=this.clientX=t.clientX,this.y=this.clientY=t.clientY,this.$pos=null,this.$inSelection=null,this.propagationStopped=!1,this.defaultPrevented=!1};(function(){this.stopPropagation=function(){i.stopPropagation(this.domEvent),this.propagationStopped=!0},this.preventDefault=function(){i.preventDefault(this.domEvent),this.defaultPrevented=!0},this.stop=function(){this.stopPropagation(),this.preventDefault()},this.getDocumentPosition=function(){return this.$pos||(this.$pos=this.editor.renderer.screenToTextCoordinates(this.clientX,this.clientY)),this.$pos},this.inSelection=function(){if(null!==this.$inSelection)return this.$inSelection;var t=this.editor.getSelectionRange();if(t.isEmpty())this.$inSelection=!1;else{var e=this.getDocumentPosition();this.$inSelection=t.contains(e.row,e.column)}return this.$inSelection},this.getButton=function(){return i.getButton(this.domEvent)},this.getShiftKey=function(){return this.domEvent.shiftKey},this.getAccelKey=n.isMac?function(){return this.domEvent.metaKey}:function(){return this.domEvent.ctrlKey}}).call(a.prototype)})),ace.define("ace/mouse/dragdrop_handler",["require","exports","module","ace/lib/dom","ace/lib/event","ace/lib/useragent"],(function(t,e,l){"use strict";var i=t("../lib/dom"),n=t("../lib/event"),a=t("../lib/useragent");function d(t){var e=t.editor,l=i.createElement("img");l.src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==",a.isOpera&&(l.style.cssText="width:1px;height:1px;position:fixed;top:0;left:0;z-index:2147483647;opacity:0;"),["dragWait","dragWaitEnd","startDrag","dragReadyEnd","onMouseDrag"].forEach((function(e){t[e]=this[e]}),this),e.addEventListener("mousedown",this.onMouseDown.bind(t));var d,c,o,b,r,m,Z,g,W,h,N,y=e.container,I=0;function G(){var t=m;(function(t,l){var i=Date.now(),n=!l||t.row!=l.row,a=!l||t.column!=l.column;!h||n||a?(e.$blockScrolling+=1,e.moveCursorToPosition(t),e.$blockScrolling-=1,h=i,N={x:c,y:o}):s(N.x,N.y,c,o)>5?h=null:i-h>=200&&(e.renderer.scrollCursorIntoView(),h=null)})(m=e.renderer.screenToTextCoordinates(c,o),t),function(t,l){var i=Date.now(),n=e.renderer.layerConfig.lineHeight,a=e.renderer.layerConfig.characterWidth,d=e.renderer.scroller.getBoundingClientRect(),s={x:{left:c-d.left,right:d.right-c},y:{top:o-d.top,bottom:d.bottom-o}},b=Math.min(s.x.left,s.x.right),r=Math.min(s.y.top,s.y.bottom),m={row:t.row,column:t.column};b/a<=2&&(m.column+=s.x.left=200&&e.renderer.scrollCursorIntoView(m):W=i:W=null}(m,t)}function M(){r=e.selection.toOrientedRange(),d=e.session.addMarker(r,"ace_selection",e.getSelectionStyle()),e.clearSelection(),e.isFocused()&&e.renderer.$cursorLayer.setBlinking(!1),clearInterval(b),G(),b=setInterval(G,20),I=0,n.addListener(document,"mousemove",p)}function u(){clearInterval(b),e.session.removeMarker(d),d=null,e.$blockScrolling+=1,e.selection.fromOrientedRange(r),e.$blockScrolling-=1,e.isFocused()&&!g&&e.renderer.$cursorLayer.setBlinking(!e.getReadOnly()),r=null,m=null,I=0,W=null,h=null,n.removeListener(document,"mousemove",p)}this.onDragStart=function(t){if(this.cancelDrag||!y.draggable){var i=this;return setTimeout((function(){i.startSelect(),i.captureMouse(t)}),0),t.preventDefault()}r=e.getSelectionRange();var n=t.dataTransfer;n.effectAllowed=e.getReadOnly()?"copy":"copyMove",a.isOpera&&(e.container.appendChild(l),l.scrollTop=0),n.setDragImage&&n.setDragImage(l,0,0),a.isOpera&&e.container.removeChild(l),n.clearData(),n.setData("Text",e.session.getTextRange()),g=!0,this.setState("drag")},this.onDragEnd=function(t){if(y.draggable=!1,g=!1,this.setState(null),!e.getReadOnly()){var l=t.dataTransfer.dropEffect;Z||"move"!=l||e.session.remove(e.getSelectionRange()),e.renderer.$cursorLayer.setBlinking(!0)}this.editor.unsetStyle("ace_dragging"),this.editor.renderer.setCursorStyle("")},this.onDragEnter=function(t){if(!e.getReadOnly()&&Y(t.dataTransfer))return c=t.clientX,o=t.clientY,d||M(),I++,t.dataTransfer.dropEffect=Z=R(t),n.preventDefault(t)},this.onDragOver=function(t){if(!e.getReadOnly()&&Y(t.dataTransfer))return c=t.clientX,o=t.clientY,d||(M(),I++),null!==V&&(V=null),t.dataTransfer.dropEffect=Z=R(t),n.preventDefault(t)},this.onDragLeave=function(t){if(--I<=0&&d)return u(),Z=null,n.preventDefault(t)},this.onDrop=function(t){if(m){var l=t.dataTransfer;if(g)switch(Z){case"move":r=r.contains(m.row,m.column)?{start:m,end:m}:e.moveText(r,m);break;case"copy":r=e.moveText(r,m,!0)}else{var i=l.getData("Text");r={start:m,end:e.session.insert(m,i)},e.focus(),Z=null}return u(),n.preventDefault(t)}},n.addListener(y,"dragstart",this.onDragStart.bind(t)),n.addListener(y,"dragend",this.onDragEnd.bind(t)),n.addListener(y,"dragenter",this.onDragEnter.bind(t)),n.addListener(y,"dragover",this.onDragOver.bind(t)),n.addListener(y,"dragleave",this.onDragLeave.bind(t)),n.addListener(y,"drop",this.onDrop.bind(t));var V=null;function p(){null==V&&(V=setTimeout((function(){null!=V&&d&&u()}),20))}function Y(t){var e=t.types;return!e||Array.prototype.some.call(e,(function(t){return"text/plain"==t||"Text"==t}))}function R(t){var e=["copy","copymove","all","uninitialized"],l=a.isMac?t.altKey:t.ctrlKey,i="uninitialized";try{i=t.dataTransfer.effectAllowed.toLowerCase()}catch(t){}var n="none";return l&&e.indexOf(i)>=0?n="copy":["move","copymove","linkmove","all","uninitialized"].indexOf(i)>=0?n="move":e.indexOf(i)>=0&&(n="copy"),n}}function s(t,e,l,i){return Math.sqrt(Math.pow(l-t,2)+Math.pow(i-e,2))}(function(){this.dragWait=function(){Date.now()-this.mousedownEvent.time>this.editor.getDragDelay()&&this.startDrag()},this.dragWaitEnd=function(){this.editor.container.draggable=!1,this.startSelect(this.mousedownEvent.getDocumentPosition()),this.selectEnd()},this.dragReadyEnd=function(t){this.editor.renderer.$cursorLayer.setBlinking(!this.editor.getReadOnly()),this.editor.unsetStyle("ace_dragging"),this.editor.renderer.setCursorStyle(""),this.dragWaitEnd()},this.startDrag=function(){this.cancelDrag=!1;var t=this.editor;t.container.draggable=!0,t.renderer.$cursorLayer.setBlinking(!1),t.setStyle("ace_dragging");var e=a.isWin?"default":"move";t.renderer.setCursorStyle(e),this.setState("dragReady")},this.onMouseDrag=function(t){var e=this.editor.container;a.isIE&&"dragReady"==this.state&&s(this.mousedownEvent.x,this.mousedownEvent.y,this.x,this.y)>3&&e.dragDrop(),"dragWait"===this.state&&s(this.mousedownEvent.x,this.mousedownEvent.y,this.x,this.y)>0&&(e.draggable=!1,this.startSelect(this.mousedownEvent.getDocumentPosition()))},this.onMouseDown=function(t){if(this.$dragEnabled){this.mousedownEvent=t;var e=this.editor,l=t.inSelection(),i=t.getButton();if(1===(t.domEvent.detail||1)&&0===i&&l){if(t.editor.inMultiSelectMode&&(t.getAccelKey()||t.getShiftKey()))return;this.mousedownEvent.time=Date.now();var n=t.domEvent.target||t.domEvent.srcElement;"unselectable"in n&&(n.unselectable="on"),e.getDragDelay()?(a.isWebKit&&(this.cancelDrag=!0,e.container.draggable=!0),this.setState("dragWait")):this.startDrag(),this.captureMouse(t,this.onMouseDrag.bind(this)),t.defaultPrevented=!0}}}}).call(d.prototype),e.DragdropHandler=d})),ace.define("ace/lib/net",["require","exports","module","ace/lib/dom"],(function(t,e,l){"use strict";var i=t("./dom");e.get=function(t,e){var l=new XMLHttpRequest;l.open("GET",t,!0),l.onreadystatechange=function(){4===l.readyState&&e(l.responseText)},l.send(null)},e.loadScript=function(t,e){var l=i.getDocumentHead(),n=document.createElement("script");n.src=t,l.appendChild(n),n.onload=n.onreadystatechange=function(t,l){!l&&n.readyState&&"loaded"!=n.readyState&&"complete"!=n.readyState||(n=n.onload=n.onreadystatechange=null,l||e())}},e.qualifyURL=function(t){var e=document.createElement("a");return e.href=t,e.href}})),ace.define("ace/lib/event_emitter",["require","exports","module"],(function(t,e,l){"use strict";var i={},n=function(){this.propagationStopped=!0},a=function(){this.defaultPrevented=!0};i._emit=i._dispatchEvent=function(t,e){this._eventRegistry||(this._eventRegistry={}),this._defaultHandlers||(this._defaultHandlers={});var l=this._eventRegistry[t]||[],i=this._defaultHandlers[t];if(l.length||i){"object"==typeof e&&e||(e={}),e.type||(e.type=t),e.stopPropagation||(e.stopPropagation=n),e.preventDefault||(e.preventDefault=a),l=l.slice();for(var d=0;d1&&(n=l[l.length-2]);var d=c[e+"Path"];return null==d?d=c.basePath:"/"==i&&(e=i=""),d&&"/"!=d.slice(-1)&&(d+="/"),d+e+i+n+this.get("suffix")},e.setModuleUrl=function(t,e){return c.$moduleUrls[t]=e},e.$loading={},e.loadModule=function(l,i){var n,d;Array.isArray(l)&&(d=l[0],l=l[1]);try{n=t(l)}catch(t){}if(n&&!e.$loading[l])return i&&i(n);if(e.$loading[l]||(e.$loading[l]=[]),e.$loading[l].push(i),!(e.$loading[l].length>1)){var s=function(){t([l],(function(t){e._emit("load.module",{name:l,module:t});var i=e.$loading[l];e.$loading[l]=null,i.forEach((function(e){e&&e(t)}))}))};if(!e.get("packaged"))return s();a.loadScript(e.moduleUrl(l,d),s)}},o(!0),e.init=o})),ace.define("ace/mouse/mouse_handler",["require","exports","module","ace/lib/event","ace/lib/useragent","ace/mouse/default_handlers","ace/mouse/default_gutter_handler","ace/mouse/mouse_event","ace/mouse/dragdrop_handler","ace/config"],(function(t,e,l){"use strict";var i=t("../lib/event"),n=t("../lib/useragent"),a=t("./default_handlers").DefaultHandlers,d=t("./default_gutter_handler").GutterHandler,s=t("./mouse_event").MouseEvent,c=t("./dragdrop_handler").DragdropHandler,o=t("../config"),b=function(t){var e=this;this.editor=t,new a(this),new d(this),new c(this);var l=function(e){(!document.hasFocus||!document.hasFocus()||!t.isFocused()&&document.activeElement==(t.textInput&&t.textInput.getElement()))&&window.focus(),t.focus()},s=t.renderer.getMouseEventTarget();i.addListener(s,"click",this.onMouseEvent.bind(this,"click")),i.addListener(s,"mousemove",this.onMouseMove.bind(this,"mousemove")),i.addMultiMouseDownListener([s,t.renderer.scrollBarV&&t.renderer.scrollBarV.inner,t.renderer.scrollBarH&&t.renderer.scrollBarH.inner,t.textInput&&t.textInput.getElement()].filter(Boolean),[400,300,250],this,"onMouseEvent"),i.addMouseWheelListener(t.container,this.onMouseWheel.bind(this,"mousewheel")),i.addTouchMoveListener(t.container,this.onTouchMove.bind(this,"touchmove"));var o=t.renderer.$gutter;i.addListener(o,"mousedown",this.onMouseEvent.bind(this,"guttermousedown")),i.addListener(o,"click",this.onMouseEvent.bind(this,"gutterclick")),i.addListener(o,"dblclick",this.onMouseEvent.bind(this,"gutterdblclick")),i.addListener(o,"mousemove",this.onMouseEvent.bind(this,"guttermousemove")),i.addListener(s,"mousedown",l),i.addListener(o,"mousedown",l),n.isIE&&t.renderer.scrollBarV&&(i.addListener(t.renderer.scrollBarV.element,"mousedown",l),i.addListener(t.renderer.scrollBarH.element,"mousedown",l)),t.on("mousemove",(function(l){if(!e.state&&!e.$dragDelay&&e.$dragEnabled){var i=t.renderer.screenToTextCoordinates(l.x,l.y),n=t.session.selection.getRange(),a=t.renderer;!n.isEmpty()&&n.insideStart(i.row,i.column)?a.setCursorStyle("default"):a.setCursorStyle("")}}))};(function(){this.onMouseEvent=function(t,e){this.editor._emit(t,new s(e,this.editor))},this.onMouseMove=function(t,e){var l=this.editor._eventRegistry&&this.editor._eventRegistry.mousemove;l&&l.length&&this.editor._emit(t,new s(e,this.editor))},this.onMouseWheel=function(t,e){var l=new s(e,this.editor);l.speed=2*this.$scrollSpeed,l.wheelX=e.wheelX,l.wheelY=e.wheelY,this.editor._emit(t,l)},this.onTouchMove=function(t,e){var l=new s(e,this.editor);l.speed=1,l.wheelX=e.wheelX,l.wheelY=e.wheelY,this.editor._emit(t,l)},this.setState=function(t){this.state=t},this.captureMouse=function(t,e){this.x=t.x,this.y=t.y,this.isMousePressed=!0;var l=this.editor.renderer;l.$keepTextAreaAtCursor&&(l.$keepTextAreaAtCursor=null);var a=this,d=function(t){if(t){if(n.isWebKit&&!t.which&&a.releaseMouse)return a.releaseMouse();a.x=t.clientX,a.y=t.clientY,e&&e(t),a.mouseEvent=new s(t,a.editor),a.$mouseMoved=!0}},c=function(t){clearInterval(b),o(),a[a.state+"End"]&&a[a.state+"End"](t),a.state="",null==l.$keepTextAreaAtCursor&&(l.$keepTextAreaAtCursor=!0,l.$moveTextAreaToCursor()),a.isMousePressed=!1,a.$onCaptureMouseMove=a.releaseMouse=null,t&&a.onMouseEvent("mouseup",t)},o=function(){a[a.state]&&a[a.state](),a.$mouseMoved=!1};if(n.isOldIE&&"dblclick"==t.domEvent.type)return setTimeout((function(){c(t)}));a.$onCaptureMouseMove=d,a.releaseMouse=i.capture(this.editor.container,d,c);var b=setInterval(o,20)},this.releaseMouse=null,this.cancelContextMenu=function(){var t=function(e){e&&e.domEvent&&"contextmenu"!=e.domEvent.type||(this.editor.off("nativecontextmenu",t),e&&e.domEvent&&i.stopEvent(e.domEvent))}.bind(this);setTimeout(t,10),this.editor.on("nativecontextmenu",t)}}).call(b.prototype),o.defineOptions(b.prototype,"mouseHandler",{scrollSpeed:{initialValue:2},dragDelay:{initialValue:n.isMac?150:0},dragEnabled:{initialValue:!0},focusTimout:{initialValue:0},tooltipFollowsMouse:{initialValue:!0}}),e.MouseHandler=b})),ace.define("ace/mouse/fold_handler",["require","exports","module"],(function(t,e,l){"use strict";e.FoldHandler=function(t){t.on("click",(function(e){var l=e.getDocumentPosition(),i=t.session,n=i.getFoldAt(l.row,l.column,1);n&&(e.getAccelKey()?i.removeFold(n):i.expandFold(n),e.stop())})),t.on("gutterclick",(function(e){if("foldWidgets"==t.renderer.$gutterLayer.getRegion(e)){var l=e.getDocumentPosition().row,i=t.session;i.foldWidgets&&i.foldWidgets[l]&&t.session.onFoldWidgetClick(l,e),t.isFocused()||t.focus(),e.stop()}})),t.on("gutterdblclick",(function(e){if("foldWidgets"==t.renderer.$gutterLayer.getRegion(e)){var l=e.getDocumentPosition().row,i=t.session,n=i.getParentFoldRangeData(l,!0),a=n.range||n.firstRange;if(a){l=a.start.row;var d=i.getFoldAt(l,i.getLine(l).length,1);d?i.removeFold(d):(i.addFold("...",a),t.renderer.scrollCursorIntoView({row:a.start.row,column:0}))}e.stop()}}))}})),ace.define("ace/keyboard/keybinding",["require","exports","module","ace/lib/keys","ace/lib/event"],(function(t,e,l){"use strict";var i=t("../lib/keys"),n=t("../lib/event"),a=function(t){this.$editor=t,this.$data={editor:t},this.$handlers=[],this.setDefaultHandler(t.commands)};(function(){this.setDefaultHandler=function(t){this.removeKeyboardHandler(this.$defaultHandler),this.$defaultHandler=t,this.addKeyboardHandler(t,0)},this.setKeyboardHandler=function(t){var e=this.$handlers;if(e[e.length-1]!=t){for(;e[e.length-1]&&e[e.length-1]!=this.$defaultHandler;)this.removeKeyboardHandler(e[e.length-1]);this.addKeyboardHandler(t,1)}},this.addKeyboardHandler=function(t,e){if(t){"function"!=typeof t||t.handleKeyboard||(t.handleKeyboard=t);var l=this.$handlers.indexOf(t);-1!=l&&this.$handlers.splice(l,1),null==e?this.$handlers.push(t):this.$handlers.splice(e,0,t),-1==l&&t.attach&&t.attach(this.$editor)}},this.removeKeyboardHandler=function(t){var e=this.$handlers.indexOf(t);return-1!=e&&(this.$handlers.splice(e,1),t.detach&&t.detach(this.$editor),!0)},this.getKeyboardHandler=function(){return this.$handlers[this.$handlers.length-1]},this.getStatusText=function(){var t=this.$data,e=t.editor;return this.$handlers.map((function(l){return l.getStatusText&&l.getStatusText(e,t)||""})).filter(Boolean).join(" ")},this.$callKeyboardHandlers=function(t,e,l,i){for(var a,d=!1,s=this.$editor.commands,c=this.$handlers.length;c--&&!((a=this.$handlers[c].handleKeyboard(this.$data,t,e,l,i))&&a.command&&((d="null"==a.command||s.exec(a.command,this.$editor,a.args,i))&&i&&-1!=t&&1!=a.passEvent&&1!=a.command.passEvent&&n.stopEvent(i),d)););return d||-1!=t||(a={command:"insertstring"},d=s.exec("insertstring",this.$editor,e)),d&&this.$editor._signal("keyboardActivity",a),d},this.onCommandKey=function(t,e,l){var n=i.keyCodeToString(l);this.$callKeyboardHandlers(e,n,l,t)},this.onTextInput=function(t){this.$callKeyboardHandlers(-1,t)}}).call(a.prototype),e.KeyBinding=a})),ace.define("ace/range",["require","exports","module"],(function(t,e,l){"use strict";var i=function(t,e,l,i){this.start={row:t,column:e},this.end={row:l,column:i}};(function(){this.isEqual=function(t){return this.start.row===t.start.row&&this.end.row===t.end.row&&this.start.column===t.start.column&&this.end.column===t.end.column},this.toString=function(){return"Range: ["+this.start.row+"/"+this.start.column+"] -> ["+this.end.row+"/"+this.end.column+"]"},this.contains=function(t,e){return 0==this.compare(t,e)},this.compareRange=function(t){var e,l=t.end,i=t.start;return 1==(e=this.compare(l.row,l.column))?1==(e=this.compare(i.row,i.column))?2:0==e?1:0:-1==e?-2:-1==(e=this.compare(i.row,i.column))?-1:1==e?42:0},this.comparePoint=function(t){return this.compare(t.row,t.column)},this.containsRange=function(t){return 0==this.comparePoint(t.start)&&0==this.comparePoint(t.end)},this.intersects=function(t){var e=this.compareRange(t);return-1==e||0==e||1==e},this.isEnd=function(t,e){return this.end.row==t&&this.end.column==e},this.isStart=function(t,e){return this.start.row==t&&this.start.column==e},this.setStart=function(t,e){"object"==typeof t?(this.start.column=t.column,this.start.row=t.row):(this.start.row=t,this.start.column=e)},this.setEnd=function(t,e){"object"==typeof t?(this.end.column=t.column,this.end.row=t.row):(this.end.row=t,this.end.column=e)},this.inside=function(t,e){return 0==this.compare(t,e)&&!this.isEnd(t,e)&&!this.isStart(t,e)},this.insideStart=function(t,e){return 0==this.compare(t,e)&&!this.isEnd(t,e)},this.insideEnd=function(t,e){return 0==this.compare(t,e)&&!this.isStart(t,e)},this.compare=function(t,e){return this.isMultiLine()||t!==this.start.row?tthis.end.row?1:this.start.row===t?e>=this.start.column?0:-1:this.end.row===t?e<=this.end.column?0:1:0:ethis.end.column?1:0},this.compareStart=function(t,e){return this.start.row==t&&this.start.column==e?-1:this.compare(t,e)},this.compareEnd=function(t,e){return this.end.row==t&&this.end.column==e?1:this.compare(t,e)},this.compareInside=function(t,e){return this.end.row==t&&this.end.column==e?1:this.start.row==t&&this.start.column==e?-1:this.compare(t,e)},this.clipRows=function(t,e){if(this.end.row>e)var l={row:e+1,column:0};else this.end.rowe)var n={row:e+1,column:0};else this.start.rowe.row||t.row==e.row&&t.column>e.column},this.getRange=function(){var t=this.anchor,e=this.lead;return this.isEmpty()?d.fromPoints(e,e):this.isBackwards()?d.fromPoints(e,t):d.fromPoints(t,e)},this.clearSelection=function(){this.$isEmpty||(this.$isEmpty=!0,this._emit("changeSelection"))},this.selectAll=function(){var t=this.doc.getLength()-1;this.setSelectionAnchor(0,0),this.moveCursorTo(t,this.doc.getLine(t).length)},this.setRange=this.setSelectionRange=function(t,e){e?(this.setSelectionAnchor(t.end.row,t.end.column),this.selectTo(t.start.row,t.start.column)):(this.setSelectionAnchor(t.start.row,t.start.column),this.selectTo(t.end.row,t.end.column)),this.getRange().isEmpty()&&(this.$isEmpty=!0),this.$desiredColumn=null},this.$moveSelection=function(t){var e=this.lead;this.$isEmpty&&this.setSelectionAnchor(e.row,e.column),t.call(this)},this.selectTo=function(t,e){this.$moveSelection((function(){this.moveCursorTo(t,e)}))},this.selectToPosition=function(t){this.$moveSelection((function(){this.moveCursorToPosition(t)}))},this.moveTo=function(t,e){this.clearSelection(),this.moveCursorTo(t,e)},this.moveToPosition=function(t){this.clearSelection(),this.moveCursorToPosition(t)},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(t,e){if(void 0===e){var l=t||this.lead;t=l.row,e=l.column}return this.session.getWordRange(t,e)},this.selectWord=function(){this.setSelectionRange(this.getWordRange())},this.selectAWord=function(){var t=this.getCursor(),e=this.session.getAWordRange(t.row,t.column);this.setSelectionRange(e)},this.getLineRange=function(t,e){var l,i="number"==typeof t?t:this.lead.row,n=this.session.getFoldLine(i);return n?(i=n.start.row,l=n.end.row):l=i,!0===e?new d(i,0,l,this.session.getLine(l).length):new d(i,0,l+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 t,e=this.lead.getPosition();if(t=this.session.getFoldAt(e.row,e.column,-1))this.moveCursorTo(t.start.row,t.start.column);else if(0===e.column)e.row>0&&this.moveCursorTo(e.row-1,this.doc.getLine(e.row-1).length);else{var l=this.session.getTabSize();this.session.isTabStop(e)&&this.doc.getLine(e.row).slice(e.column-l,e.column).split(" ").length-1==l?this.moveCursorBy(0,-l):this.moveCursorBy(0,-1)}},this.moveCursorRight=function(){var t,e=this.lead.getPosition();if(t=this.session.getFoldAt(e.row,e.column,1))this.moveCursorTo(t.end.row,t.end.column);else if(this.lead.column==this.doc.getLine(this.lead.row).length)this.lead.row0&&(e.column=i)}}this.moveCursorTo(e.row,e.column)},this.moveCursorFileEnd=function(){var t=this.doc.getLength()-1,e=this.doc.getLine(t).length;this.moveCursorTo(t,e)},this.moveCursorFileStart=function(){this.moveCursorTo(0,0)},this.moveCursorLongWordRight=function(){var t=this.lead.row,e=this.lead.column,l=this.doc.getLine(t),i=l.substring(e);this.session.nonTokenRe.lastIndex=0,this.session.tokenRe.lastIndex=0;var n=this.session.getFoldAt(t,e,1);if(n)this.moveCursorTo(n.end.row,n.end.column);else{if(this.session.nonTokenRe.exec(i)&&(e+=this.session.nonTokenRe.lastIndex,this.session.nonTokenRe.lastIndex=0,i=l.substring(e)),e>=l.length)return this.moveCursorTo(t,l.length),this.moveCursorRight(),void(t0&&this.moveCursorWordLeft());this.session.tokenRe.exec(a)&&(l-=this.session.tokenRe.lastIndex,this.session.tokenRe.lastIndex=0),this.moveCursorTo(e,l)}},this.$shortWordEndIndex=function(t){var e,l=0,i=/\s/,n=this.session.tokenRe;if(n.lastIndex=0,this.session.tokenRe.exec(t))l=this.session.tokenRe.lastIndex;else{for(;(e=t[l])&&i.test(e);)l++;if(l<1)for(n.lastIndex=0;(e=t[l])&&!n.test(e);)if(n.lastIndex=0,l++,i.test(e)){if(l>2){l--;break}for(;(e=t[l])&&i.test(e);)l++;if(l>2)break}}return n.lastIndex=0,l},this.moveCursorShortWordRight=function(){var t=this.lead.row,e=this.lead.column,l=this.doc.getLine(t),i=l.substring(e),n=this.session.getFoldAt(t,e,1);if(n)return this.moveCursorTo(n.end.row,n.end.column);if(e==l.length){var a=this.doc.getLength();do{t++,i=this.doc.getLine(t)}while(t0&&/^\s*$/.test(i));l=i.length,/\s+$/.test(i)||(i="")}var a=n.stringReverse(i),d=this.$shortWordEndIndex(a);return this.moveCursorTo(e,l-d)},this.moveCursorWordRight=function(){this.session.$selectLongWords?this.moveCursorLongWordRight():this.moveCursorShortWordRight()},this.moveCursorWordLeft=function(){this.session.$selectLongWords?this.moveCursorLongWordLeft():this.moveCursorShortWordLeft()},this.moveCursorBy=function(t,e){var l=this.session.documentToScreenPosition(this.lead.row,this.lead.column);0===e&&(this.$desiredColumn?l.column=this.$desiredColumn:this.$desiredColumn=l.column);var i=this.session.screenToDocumentPosition(l.row+t,l.column);0!==t&&0===e&&i.row===this.lead.row&&i.column===this.lead.column&&this.session.lineWidgets&&this.session.lineWidgets[i.row]&&(i.row>0||t>0)&&i.row++,this.moveCursorTo(i.row,i.column+e,0===e)},this.moveCursorToPosition=function(t){this.moveCursorTo(t.row,t.column)},this.moveCursorTo=function(t,e,l){var i=this.session.getFoldAt(t,e,1);i&&(t=i.start.row,e=i.start.column),this.$keepDesiredColumnOnChange=!0,this.lead.setPosition(t,e),this.$keepDesiredColumnOnChange=!1,l||(this.$desiredColumn=null)},this.moveCursorToScreen=function(t,e,l){var i=this.session.screenToDocumentPosition(t,e);this.moveCursorTo(i.row,i.column,l)},this.detach=function(){this.lead.detach(),this.anchor.detach(),this.session=this.doc=null},this.fromOrientedRange=function(t){this.setSelectionRange(t,t.cursor==t.start),this.$desiredColumn=t.desiredColumn||this.$desiredColumn},this.toOrientedRange=function(t){var e=this.getRange();return t?(t.start.column=e.start.column,t.start.row=e.start.row,t.end.column=e.end.column,t.end.row=e.end.row):t=e,t.cursor=this.isBackwards()?t.start:t.end,t.desiredColumn=this.$desiredColumn,t},this.getRangeOfMovements=function(t){var e=this.getCursor();try{t(this);var l=this.getCursor();return d.fromPoints(e,l)}catch(t){return d.fromPoints(e,e)}finally{this.moveCursorToPosition(e)}},this.toJSON=function(){if(this.rangeCount)var t=this.ranges.map((function(t){var e=t.clone();return e.isBackwards=t.cursor==t.start,e}));else(t=this.getRange()).isBackwards=this.isBackwards();return t},this.fromJSON=function(t){if(null==t.start){if(this.rangeList){this.toSingleRange(t[0]);for(var e=t.length;e--;){var l=d.fromPoints(t[e].start,t[e].end);t[e].isBackwards&&(l.cursor=l.start),this.addRange(l,!0)}return}t=t[0]}this.rangeList&&this.toSingleRange(t),this.setSelectionRange(t,t.isBackwards)},this.isEqual=function(t){if((t.length||this.rangeCount)&&t.length!=this.rangeCount)return!1;if(!t.length||!this.ranges)return this.getRange().isEqual(t);for(var e=this.ranges.length;e--;)if(!this.ranges[e].isEqual(t[e]))return!1;return!0}}).call(s.prototype),e.Selection=s})),ace.define("ace/tokenizer",["require","exports","module","ace/config"],(function(t,e,l){"use strict";var i=t("./config"),n=2e3,a=function(t){for(var e in this.states=t,this.regExps={},this.matchMappings={},this.states){for(var l=this.states[e],i=[],n=0,a=this.matchMappings[e]={defaultToken:"text"},d="g",s=[],c=0;c1?this.$applyToken:o.token),r>1&&(/\\\d/.test(o.regex)?b=o.regex.replace(/\\([0-9]+)/g,(function(t,e){return"\\"+(parseInt(e,10)+n+1)})):(r=1,b=this.removeCapturingGroups(o.regex)),o.splitRegex||"string"==typeof o.token||s.push(o)),a[n]=c,n+=r,i.push(b),o.onMatch||(o.onMatch=null)}}i.length||(a[0]=0,i.push("$")),s.forEach((function(t){t.splitRegex=this.createSplitterRegexp(t.regex,d)}),this),this.regExps[e]=new RegExp("("+i.join(")|(")+")|($)",d)}};(function(){this.$setMaxTokenCount=function(t){n=0|t},this.$applyToken=function(t){var e=this.splitRegex.exec(t).slice(1),l=this.token.apply(this,e);if("string"==typeof l)return[{type:l,value:t}];for(var i=[],n=0,a=l.length;nb){var N=t.substring(b,h-W.length);m.type==Z?m.value+=N:(m.type&&o.push(m),m={type:Z,value:N})}for(var y=0;yn){for(r>2*t.length&&this.reportError("infinite loop with in ace tokenizer",{startState:e,line:t});b1&&l[0]!==i&&l.unshift("#tmp",i),{tokens:o,state:l.length?l:i}},this.reportError=i.reportError}).call(a.prototype),e.Tokenizer=a})),ace.define("ace/mode/text_highlight_rules",["require","exports","module","ace/lib/lang"],(function(t,e,l){"use strict";var i=t("../lib/lang"),n=function(){this.$rules={start:[{token:"empty_line",regex:"^$"},{defaultToken:"text"}]}};(function(){this.addRules=function(t,e){if(e)for(var l in t){for(var i=t[l],n=0;n=this.$rowTokens.length;){if(this.$row+=1,t||(t=this.$session.getLength()),this.$row>=t)return this.$row=t-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 t=this.$rowTokens,e=this.$tokenIndex,l=t[e].start;if(void 0!==l)return l;for(l=0;e>0;)l+=t[e-=1].value.length;return l},this.getCurrentTokenPosition=function(){return{row:this.$row,column:this.getCurrentTokenColumn()}}}).call(i.prototype),e.TokenIterator=i})),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(t,e,l){"use strict";var i=t("../tokenizer").Tokenizer,n=t("./text_highlight_rules").TextHighlightRules,a=t("./behaviour").Behaviour,d=t("../unicode"),s=t("../lib/lang"),c=t("../token_iterator").TokenIterator,o=t("../range").Range,b=function(){this.HighlightRules=n,this.$behaviour=new a};(function(){this.tokenRe=new RegExp("^["+d.packages.L+d.packages.Mn+d.packages.Mc+d.packages.Nd+d.packages.Pc+"\\$_]+","g"),this.nonTokenRe=new RegExp("^(?:[^"+d.packages.L+d.packages.Mn+d.packages.Mc+d.packages.Nd+d.packages.Pc+"\\$_]|\\s])+","g"),this.getTokenizer=function(){return this.$tokenizer||(this.$highlightRules=this.$highlightRules||new this.HighlightRules,this.$tokenizer=new i(this.$highlightRules.getRules())),this.$tokenizer},this.lineCommentStart="",this.blockComment="",this.toggleCommentLines=function(t,e,l,i){var n=e.doc,a=!0,d=!0,c=1/0,o=e.getTabSize(),b=!1;if(this.lineCommentStart){Array.isArray(this.lineCommentStart)?(W=this.lineCommentStart.map(s.escapeRegExp).join("|"),Z=this.lineCommentStart[0]):(W=s.escapeRegExp(this.lineCommentStart),Z=this.lineCommentStart),W=new RegExp("^(\\s*)(?:"+W+") ?"),b=e.getUseSoftTabs(),y=function(t,e){var l=t.match(W);if(l){var i=l[1].length,a=l[0].length;m(t,i,a)||" "!=l[0][a-1]||a--,n.removeInLine(e,i,a)}};var r=Z+" ",m=(N=function(t,e){a&&!/\S/.test(t)||(m(t,c,c)?n.insertInLine({row:e,column:c},r):n.insertInLine({row:e,column:c},Z))},I=function(t,e){return W.test(t)},function(t,e,l){for(var i=0;e--&&" "==t.charAt(e);)i++;if(i%o!=0)return!1;for(i=0;" "==t.charAt(l++);)i++;return o>2?i%o!=o-1:i%o==0})}else{if(!this.blockComment)return!1;var Z=this.blockComment.start,g=this.blockComment.end,W=new RegExp("^(\\s*)(?:"+s.escapeRegExp(Z)+")"),h=new RegExp("(?:"+s.escapeRegExp(g)+")\\s*$"),N=function(t,e){I(t,e)||a&&!/\S/.test(t)||(n.insertInLine({row:e,column:t.length},g),n.insertInLine({row:e,column:c},Z))},y=function(t,e){var l;(l=t.match(h))&&n.removeInLine(e,t.length-l[0].length,t.length),(l=t.match(W))&&n.removeInLine(e,l[1].length,l[0].length)},I=function(t,l){if(W.test(t))return!0;for(var i=e.getTokens(l),n=0;nt.length&&(M=t.length)})),c==1/0&&(c=M,a=!1,d=!1),b&&c%o!=0&&(c=Math.floor(c/o)*o),G(d?y:N)},this.toggleBlockComment=function(t,e,l,i){var n=this.blockComment;if(n){!n.start&&n[0]&&(n=n[0]);var a,d,s=(W=new c(e,i.row,i.column)).getCurrentToken(),b=(e.selection,e.selection.toOrientedRange());if(s&&/comment/.test(s.type)){for(var r,m;s&&/comment/.test(s.type);){if(-1!=(h=s.value.indexOf(n.start))){var Z=W.getCurrentTokenRow(),g=W.getCurrentTokenColumn()+h;r=new o(Z,g,Z,g+n.start.length);break}s=W.stepBackward()}var W;for(s=(W=new c(e,i.row,i.column)).getCurrentToken();s&&/comment/.test(s.type);){var h;if(-1!=(h=s.value.indexOf(n.end))){Z=W.getCurrentTokenRow(),g=W.getCurrentTokenColumn()+h,m=new o(Z,g,Z,g+n.end.length);break}s=W.stepForward()}m&&e.remove(m),r&&(e.remove(r),a=r.start.row,d=-n.start.length)}else d=n.start.length,a=l.start.row,e.insert(l.end,n.end),e.insert(l.start,n.start);b.start.row==a&&(b.start.column+=d),b.end.row==a&&(b.end.column+=d),e.selection.fromOrientedRange(b)}},this.getNextLineIndent=function(t,e,l){return this.$getIndent(e)},this.checkOutdent=function(t,e,l){return!1},this.autoOutdent=function(t,e,l){},this.$getIndent=function(t){return t.match(/^\s*/)[0]},this.createWorker=function(t){return null},this.createModeDelegates=function(t){for(var e in this.$embeds=[],this.$modes={},t)t[e]&&(this.$embeds.push(e),this.$modes[e]=new t[e]);var l=["toggleBlockComment","toggleCommentLines","getNextLineIndent","checkOutdent","autoOutdent","transformAction","getCompletions"];for(e=0;ethis.row)){var l=function(e,l,i){var n="insert"==e.action,a=(n?1:-1)*(e.end.row-e.start.row),d=(n?1:-1)*(e.end.column-e.start.column),s=e.start,c=n?s:e.end;return t(l,s,i)?{row:l.row,column:l.column}:t(c,l,!i)?{row:l.row+a,column:l.column+(l.row==c.row?d:0)}:{row:s.row,column:s.column}}(e,{row:this.row,column:this.column},this.$insertRight);this.setPosition(l.row,l.column,!0)}},this.setPosition=function(t,e,l){var i;if(i=l?{row:t,column:e}:this.$clipPositionToDocument(t,e),this.row!=i.row||this.column!=i.column){var n={row:this.row,column:this.column};this.row=i.row,this.column=i.column,this._signal("change",{old:n,value:i})}},this.detach=function(){this.document.removeEventListener("change",this.$onChange)},this.attach=function(t){this.document=t||this.document,this.document.on("change",this.$onChange)},this.$clipPositionToDocument=function(t,e){var l={};return t>=this.document.getLength()?(l.row=Math.max(0,this.document.getLength()-1),l.column=this.document.getLine(l.row).length):t<0?(l.row=0,l.column=0):(l.row=t,l.column=Math.min(this.document.getLine(l.row).length,Math.max(0,e))),e<0&&(l.column=0),l}}).call(a.prototype)})),ace.define("ace/document",["require","exports","module","ace/lib/oop","ace/apply_delta","ace/lib/event_emitter","ace/range","ace/anchor"],(function(t,e,l){"use strict";var i=t("./lib/oop"),n=t("./apply_delta").applyDelta,a=t("./lib/event_emitter").EventEmitter,d=t("./range").Range,s=t("./anchor").Anchor,c=function(t){this.$lines=[""],0===t.length?this.$lines=[""]:Array.isArray(t)?this.insertMergedLines({row:0,column:0},t):this.insert({row:0,column:0},t)};(function(){i.implement(this,a),this.setValue=function(t){var e=this.getLength()-1;this.remove(new d(0,0,e,this.getLine(e).length)),this.insert({row:0,column:0},t)},this.getValue=function(){return this.getAllLines().join(this.getNewLineCharacter())},this.createAnchor=function(t,e){return new s(this,t,e)},0==="aaa".split(/a/).length?this.$split=function(t){return t.replace(/\r\n|\r/g,"\n").split("\n")}:this.$split=function(t){return t.split(/\r\n|\r|\n/)},this.$detectNewLine=function(t){var e=t.match(/^.*?(\r\n|\r|\n)/m);this.$autoNewLine=e?e[1]:"\n",this._signal("changeNewLineMode")},this.getNewLineCharacter=function(){switch(this.$newLineMode){case"windows":return"\r\n";case"unix":return"\n";default:return this.$autoNewLine||"\n"}},this.$autoNewLine="",this.$newLineMode="auto",this.setNewLineMode=function(t){this.$newLineMode!==t&&(this.$newLineMode=t,this._signal("changeNewLineMode"))},this.getNewLineMode=function(){return this.$newLineMode},this.isNewLine=function(t){return"\r\n"==t||"\r"==t||"\n"==t},this.getLine=function(t){return this.$lines[t]||""},this.getLines=function(t,e){return this.$lines.slice(t,e+1)},this.getAllLines=function(){return this.getLines(0,this.getLength())},this.getLength=function(){return this.$lines.length},this.getTextRange=function(t){return this.getLinesForRange(t).join(this.getNewLineCharacter())},this.getLinesForRange=function(t){var e;if(t.start.row===t.end.row)e=[this.getLine(t.start.row).substring(t.start.column,t.end.column)];else{(e=this.getLines(t.start.row,t.end.row))[0]=(e[0]||"").substring(t.start.column);var l=e.length-1;t.end.row-t.start.row==l&&(e[l]=e[l].substring(0,t.end.column))}return e},this.insertLines=function(t,e){return console.warn("Use of document.insertLines is deprecated. Use the insertFullLines method instead."),this.insertFullLines(t,e)},this.removeLines=function(t,e){return console.warn("Use of document.removeLines is deprecated. Use the removeFullLines method instead."),this.removeFullLines(t,e)},this.insertNewLine=function(t){return console.warn("Use of document.insertNewLine is deprecated. Use insertMergedLines(position, ['', '']) instead."),this.insertMergedLines(t,["",""])},this.insert=function(t,e){return this.getLength()<=1&&this.$detectNewLine(e),this.insertMergedLines(t,this.$split(e))},this.insertInLine=function(t,e){var l=this.clippedPos(t.row,t.column),i=this.pos(t.row,t.column+e.length);return this.applyDelta({start:l,end:i,action:"insert",lines:[e]},!0),this.clonePos(i)},this.clippedPos=function(t,e){var l=this.getLength();void 0===t?t=l:t<0?t=0:t>=l&&(t=l-1,e=void 0);var i=this.getLine(t);return null==e&&(e=i.length),{row:t,column:e=Math.min(Math.max(e,0),i.length)}},this.clonePos=function(t){return{row:t.row,column:t.column}},this.pos=function(t,e){return{row:t,column:e}},this.$clipPosition=function(t){var e=this.getLength();return t.row>=e?(t.row=Math.max(0,e-1),t.column=this.getLine(e-1).length):(t.row=Math.max(0,t.row),t.column=Math.min(Math.max(t.column,0),this.getLine(t.row).length)),t},this.insertFullLines=function(t,e){var l=0;(t=Math.min(Math.max(t,0),this.getLength()))0,i=e=0&&this.applyDelta({start:this.pos(t,this.getLine(t).length),end:this.pos(t+1,0),action:"remove",lines:["",""]})},this.replace=function(t,e){return t instanceof d||(t=d.fromPoints(t.start,t.end)),0===e.length&&t.isEmpty()?t.start:e==this.getTextRange(t)?t.end:(this.remove(t),e?this.insert(t.start,e):t.start)},this.applyDeltas=function(t){for(var e=0;e=0;e--)this.revertDelta(t[e])},this.applyDelta=function(t,e){var l="insert"==t.action;(l?t.lines.length<=1&&!t.lines[0]:!d.comparePoints(t.start,t.end))||(l&&t.lines.length>2e4&&this.$splitAndapplyLargeDelta(t,2e4),n(this.$lines,t,e),this._signal("change",t))},this.$splitAndapplyLargeDelta=function(t,e){for(var l=t.lines,i=l.length,n=t.start.row,a=t.start.column,d=0,s=0;;){d=s,s+=e-1;var c=l.slice(d,s);if(s>i){t.lines=c,t.start.row=n+d,t.start.column=a;break}c.push(""),this.applyDelta({start:this.pos(n+d,a),end:this.pos(n+s,a=0),action:t.action,lines:c},!0)}},this.revertDelta=function(t){this.applyDelta({start:this.clonePos(t.start),end:this.clonePos(t.end),action:"insert"==t.action?"remove":"insert",lines:t.lines.slice()})},this.indexToPosition=function(t,e){for(var l=this.$lines||this.getAllLines(),i=this.getNewLineCharacter().length,n=e||0,a=l.length;n20){l.running=setTimeout(l.$worker,20);break}}l.currentLine=e,a<=i&&l.fireUpdateEvent(a,i)}}};(function(){i.implement(this,n),this.setTokenizer=function(t){this.tokenizer=t,this.lines=[],this.states=[],this.start(0)},this.setDocument=function(t){this.doc=t,this.lines=[],this.states=[],this.stop()},this.fireUpdateEvent=function(t,e){var l={first:t,last:e};this._signal("update",{data:l})},this.start=function(t){this.currentLine=Math.min(t||0,this.currentLine,this.doc.getLength()),this.lines.splice(this.currentLine,this.lines.length),this.states.splice(this.currentLine,this.states.length),this.stop(),this.running=setTimeout(this.$worker,700)},this.scheduleStart=function(){this.running||(this.running=setTimeout(this.$worker,700))},this.$updateOnChange=function(t){var e=t.start.row,l=t.end.row-e;if(0===l)this.lines[e]=null;else if("remove"==t.action)this.lines.splice(e,l+1,null),this.states.splice(e,l+1,null);else{var i=Array(l+1);i.unshift(e,1),this.lines.splice.apply(this.lines,i),this.states.splice.apply(this.states,i)}this.currentLine=Math.min(e,this.currentLine,this.doc.getLength()),this.stop()},this.stop=function(){this.running&&clearTimeout(this.running),this.running=!1},this.getTokens=function(t){return this.lines[t]||this.$tokenizeRow(t)},this.getState=function(t){return this.currentLine==t&&this.$tokenizeRow(t),this.states[t]||"start"},this.$tokenizeRow=function(t){var e=this.doc.getLine(t),l=this.states[t-1],i=this.tokenizer.getLineTokens(e,l,t);return this.states[t]+""!=i.state+""?(this.states[t]=i.state,this.lines[t+1]=null,this.currentLine>t+1&&(this.currentLine=t+1)):this.currentLine==t&&(this.currentLine=t+1),this.lines[t]=i.tokens}}).call(a.prototype),e.BackgroundTokenizer=a})),ace.define("ace/search_highlight",["require","exports","module","ace/lib/lang","ace/lib/oop","ace/range"],(function(t,e,l){"use strict";var i=t("./lib/lang"),n=(t("./lib/oop"),t("./range").Range),a=function(t,e,l){this.setRegexp(t),this.clazz=e,this.type=l||"text"};(function(){this.MAX_RANGES=500,this.setRegexp=function(t){this.regExp+""!=t+""&&(this.regExp=t,this.cache=[])},this.update=function(t,e,l,a){if(this.regExp)for(var d=a.firstRow,s=a.lastRow,c=d;c<=s;c++){var o=this.cache[c];null==o&&((o=i.getMatchOffsets(l.getLine(c),this.regExp)).length>this.MAX_RANGES&&(o=o.slice(0,this.MAX_RANGES)),o=o.map((function(t){return new n(c,t.offset,c,t.offset+t.length)})),this.cache[c]=o.length?o:"");for(var b=o.length;b--;)e.drawSingleLineMarker(t,o[b].toScreenRange(l),this.clazz,a)}}}).call(a.prototype),e.SearchHighlight=a})),ace.define("ace/edit_session/fold_line",["require","exports","module","ace/range"],(function(t,e,l){"use strict";var i=t("../range").Range;function n(t,e){this.foldData=t,Array.isArray(e)?this.folds=e:e=this.folds=[e];var l=e[e.length-1];this.range=new i(e[0].start.row,e[0].start.column,l.end.row,l.end.column),this.start=this.range.start,this.end=this.range.end,this.folds.forEach((function(t){t.setFoldLine(this)}),this)}(function(){this.shiftRow=function(t){this.start.row+=t,this.end.row+=t,this.folds.forEach((function(e){e.start.row+=t,e.end.row+=t}))},this.addFold=function(t){if(t.sameRow){if(t.start.rowthis.endRow)throw new Error("Can't add a fold to this FoldLine as it has no connection");this.folds.push(t),this.folds.sort((function(t,e){return-t.range.compareEnd(e.start.row,e.start.column)})),this.range.compareEnd(t.start.row,t.start.column)>0?(this.end.row=t.end.row,this.end.column=t.end.column):this.range.compareStart(t.end.row,t.end.column)<0&&(this.start.row=t.start.row,this.start.column=t.start.column)}else if(t.start.row==this.end.row)this.folds.push(t),this.end.row=t.end.row,this.end.column=t.end.column;else{if(t.end.row!=this.start.row)throw new Error("Trying to add fold to FoldRow that doesn't have a matching row");this.folds.unshift(t),this.start.row=t.start.row,this.start.column=t.start.column}t.foldLine=this},this.containsRow=function(t){return t>=this.start.row&&t<=this.end.row},this.walk=function(t,e,l){var i,n,a=0,d=this.folds,s=!0;null==e&&(e=this.end.row,l=this.end.column);for(var c=0;c0)){var c=i(t,d.start);return 0===s?e&&0!==c?-a-2:a:c>0||0===c&&!e?a:-a-1}}return-a-1},this.add=function(t){var e=!t.isEmpty(),l=this.pointIndex(t.start,e);l<0&&(l=-l-1);var i=this.pointIndex(t.end,e,l);return i<0?i=-i-1:i++,this.ranges.splice(l,i-l,t)},this.addList=function(t){for(var e=[],l=t.length;l--;)e.push.apply(e,this.add(t[l]));return e},this.substractPoint=function(t){var e=this.pointIndex(t);if(e>=0)return this.ranges.splice(e,1)},this.merge=function(){for(var t,e=[],l=this.ranges,n=(l=l.sort((function(t,e){return i(t.start,e.start)})))[0],a=1;a=0},this.containsPoint=function(t){return this.pointIndex(t)>=0},this.rangeAtPoint=function(t){var e=this.pointIndex(t);if(e>=0)return this.ranges[e]},this.clipRows=function(t,e){var l=this.ranges;if(l[0].start.row>e||l[l.length-1].start.rowi)break;if(o.start.row==i&&o.start.column>=e.column&&(o.start.column==e.column&&this.$insertRight||(o.start.column+=a,o.start.row+=n)),o.end.row==i&&o.end.column>=e.column){if(o.end.column==e.column&&this.$insertRight)continue;o.end.column==e.column&&a>0&&so.start.column&&o.end.column==d[s+1].start.column&&(o.end.column-=a),o.end.column+=a,o.end.row+=n}}if(0!=n&&s=t)return n;if(n.end.row>t)return null}return null},this.getNextFoldLine=function(t,e){var l=this.$foldData,i=0;for(e&&(i=l.indexOf(e)),-1==i&&(i=0);i=t)return n}return null},this.getFoldedRowCount=function(t,e){for(var l=this.$foldData,i=e-t+1,n=0;n=e){s=t?i-=e-s:i=0);break}d>=t&&(i-=s>=t?d-s:d-t+1)}return i},this.$addFoldLine=function(t){return this.$foldData.push(t),this.$foldData.sort((function(t,e){return t.start.row-e.start.row})),t},this.addFold=function(t,e){var l,i=this.$foldData,d=!1;t instanceof a?l=t:(l=new a(e,t)).collapseChildren=e.collapseChildren,this.$clipRangeToDocument(l.range);var s=l.start.row,c=l.start.column,o=l.end.row,b=l.end.column;if(!(s0&&(this.removeFolds(Z),Z.forEach((function(t){l.addSubFold(t)})));for(var g=0;g0&&this.foldAll(t.start.row+1,t.end.row,t.collapseChildren-1),t.subFolds=[]},this.expandFolds=function(t){t.forEach((function(t){this.expandFold(t)}),this)},this.unfold=function(t,e){var l,n;if(null==t?(l=new i(0,0,this.getLength(),0),e=!0):l="number"==typeof t?new i(t,0,t,this.getLine(t).length):"row"in t?i.fromPoints(t,t):t,n=this.getFoldsInRangeList(l),e)this.removeFolds(n);else for(var a=n;a.length;)this.expandFolds(a),a=this.getFoldsInRangeList(l);if(n.length)return n},this.isRowFolded=function(t,e){return!!this.getFoldLine(t,e)},this.getRowFoldEnd=function(t,e){var l=this.getFoldLine(t,e);return l?l.end.row:t},this.getRowFoldStart=function(t,e){var l=this.getFoldLine(t,e);return l?l.start.row:t},this.getFoldDisplayLine=function(t,e,l,i,n){null==i&&(i=t.start.row),null==n&&(n=0),null==e&&(e=t.end.row),null==l&&(l=this.getLine(e).length);var a=this.doc,d="";return t.walk((function(t,e,l,s){if(!(e=t){n=a.end.row;try{var d=this.addFold("...",a);d&&(d.collapseChildren=l)}catch(t){}}}}},this.$foldStyles={manual:1,markbegin:1,markbeginend:1},this.$foldStyle="markbegin",this.setFoldStyle=function(t){if(!this.$foldStyles[t])throw new Error("invalid fold style: "+t+"["+Object.keys(this.$foldStyles).join(", ")+"]");if(this.$foldStyle!=t){this.$foldStyle=t,"manual"==t&&this.unfold();var e=this.$foldMode;this.$setFolding(null),this.$setFolding(e)}},this.$setFolding=function(t){this.$foldMode!=t&&(this.$foldMode=t,this.off("change",this.$updateFoldWidgets),this.off("tokenizerUpdate",this.$tokenizerUpdateFoldWidgets),this._signal("changeAnnotation"),t&&"manual"!=this.$foldStyle?(this.foldWidgets=[],this.getFoldWidget=t.getFoldWidget.bind(t,this,this.$foldStyle),this.getFoldWidgetRange=t.getFoldWidgetRange.bind(t,this,this.$foldStyle),this.$updateFoldWidgets=this.updateFoldWidgets.bind(this),this.$tokenizerUpdateFoldWidgets=this.tokenizerUpdateFoldWidgets.bind(this),this.on("change",this.$updateFoldWidgets),this.on("tokenizerUpdate",this.$tokenizerUpdateFoldWidgets)):this.foldWidgets=null)},this.getParentFoldRangeData=function(t,e){var l=this.foldWidgets;if(!l||e&&l[t])return{};for(var i,n=t-1;n>=0;){var a=l[n];if(null==a&&(a=l[n]=this.getFoldWidget(n)),"start"==a){var d=this.getFoldWidgetRange(n);if(i||(i=d),d&&d.end.row>=t)break}n--}return{range:-1!==n&&d,firstRange:i}},this.onFoldWidgetClick=function(t,e){var l={children:(e=e.domEvent).shiftKey,all:e.ctrlKey||e.metaKey,siblings:e.altKey};if(!this.$toggleFoldWidget(t,l)){var i=e.target||e.srcElement;i&&/ace_fold-widget/.test(i.className)&&(i.className+=" ace_invalid")}},this.$toggleFoldWidget=function(t,e){if(this.getFoldWidget){var l=this.getFoldWidget(t),i=this.getLine(t),n="end"===l?-1:1,a=this.getFoldAt(t,-1===n?0:i.length,n);if(a)e.children||e.all?this.removeFold(a):this.expandFold(a);else{var d=this.getFoldWidgetRange(t,!0);if(!d||d.isMultiLine()||!(a=this.getFoldAt(d.start.row,d.start.column,1))||!d.isEqual(a.range)){if(e.siblings){var s=this.getParentFoldRangeData(t);if(s.range)var c=s.range.start.row+1,o=s.range.end.row;this.foldAll(c,o,e.all?1e4:0)}else e.children?(o=d?d.end.row:this.getLength(),this.foldAll(t+1,o,e.all?1e4:0)):d&&(e.all&&(d.collapseChildren=1e4),this.addFold("...",d));return d}this.removeFold(a)}}},this.toggleFoldWidget=function(t){var e=this.selection.getCursor().row;e=this.getRowFoldStart(e);var l=this.$toggleFoldWidget(e,{});if(!l){var i=this.getParentFoldRangeData(e,!0);if(l=i.range||i.firstRange){e=l.start.row;var n=this.getFoldAt(e,this.getLine(e).length,1);n?this.removeFold(n):this.addFold("...",l)}}},this.updateFoldWidgets=function(t){var e=t.start.row,l=t.end.row-e;if(0===l)this.foldWidgets[e]=null;else if("remove"==t.action)this.foldWidgets.splice(e,l+1,null);else{var i=Array(l+1);i.unshift(e,1),this.foldWidgets.splice.apply(this.foldWidgets,i)}},this.tokenizerUpdateFoldWidgets=function(t){var e=t.data;e.first!=e.last&&this.foldWidgets.length>e.first&&this.foldWidgets.splice(e.first,this.foldWidgets.length)}}})),ace.define("ace/edit_session/bracket_match",["require","exports","module","ace/token_iterator","ace/range"],(function(t,e,l){"use strict";var i=t("../token_iterator").TokenIterator,n=t("../range").Range;e.BracketMatch=function(){this.findMatchingBracket=function(t,e){if(0==t.column)return null;var l=e||this.getLine(t.row).charAt(t.column-1);if(""==l)return null;var i=l.match(/([\(\[\{])|([\)\]\}])/);return i?i[1]?this.$findClosingBracket(i[1],t):this.$findOpeningBracket(i[2],t):null},this.getBracketRange=function(t){var e,l=this.getLine(t.row),i=!0,a=l.charAt(t.column-1),d=a&&a.match(/([\(\[\{])|([\)\]\}])/);if(d||(a=l.charAt(t.column),t={row:t.row,column:t.column+1},d=a&&a.match(/([\(\[\{])|([\)\]\}])/),i=!1),!d)return null;if(d[1]){if(!(s=this.$findClosingBracket(d[1],t)))return null;e=n.fromPoints(t,s),i||(e.end.column++,e.start.column--),e.cursor=e.end}else{var s;if(!(s=this.$findOpeningBracket(d[2],t)))return null;e=n.fromPoints(s,t),i||(e.start.column++,e.end.column--),e.cursor=e.start}return e},this.$brackets={")":"(","(":")","]":"[","[":"]","{":"}","}":"{"},this.$findOpeningBracket=function(t,e,l){var n=this.$brackets[t],a=1,d=new i(this,e.row,e.column),s=d.getCurrentToken();if(s||(s=d.stepForward()),s){l||(l=new RegExp("(\\.?"+s.type.replace(".","\\.").replace("rparen",".paren").replace(/\b(?:end)\b/,"(?:start|begin|end)")+")+"));for(var c=e.column-d.getCurrentTokenColumn()-2,o=s.value;;){for(;c>=0;){var b=o.charAt(c);if(b==n){if(0==(a-=1))return{row:d.getCurrentTokenRow(),column:c+d.getCurrentTokenColumn()}}else b==t&&(a+=1);c-=1}do{s=d.stepBackward()}while(s&&!l.test(s.type));if(null==s)break;c=(o=s.value).length-1}return null}},this.$findClosingBracket=function(t,e,l){var n=this.$brackets[t],a=1,d=new i(this,e.row,e.column),s=d.getCurrentToken();if(s||(s=d.stepForward()),s){l||(l=new RegExp("(\\.?"+s.type.replace(".","\\.").replace("lparen",".paren").replace(/\b(?:start|begin)\b/,"(?:start|begin|end)")+")+"));for(var c=e.column-d.getCurrentTokenColumn();;){for(var o=s.value,b=o.length;cl&&(this.$docRowCache.splice(l,e),this.$screenRowCache.splice(l,e))},this.$getRowCacheIndex=function(t,e){for(var l=0,i=t.length-1;l<=i;){var n=l+i>>1,a=t[n];if(e>a)l=n+1;else{if(!(e=e);a++);return(l=i[a])?(l.index=a,l.start=n-l.value.length,l):null},this.setUndoManager=function(t){if(this.$undoManager=t,this.$deltas=[],this.$deltasDoc=[],this.$deltasFold=[],this.$informUndoManager&&this.$informUndoManager.cancel(),t){var e=this;this.$syncInformUndoManager=function(){e.$informUndoManager.cancel(),e.$deltasFold.length&&(e.$deltas.push({group:"fold",deltas:e.$deltasFold}),e.$deltasFold=[]),e.$deltasDoc.length&&(e.$deltas.push({group:"doc",deltas:e.$deltasDoc}),e.$deltasDoc=[]),e.$deltas.length>0&&t.execute({action:"aceupdate",args:[e.$deltas,e],merge:e.mergeUndoDeltas}),e.mergeUndoDeltas=!1,e.$deltas=[]},this.$informUndoManager=n.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()?n.stringRepeat(" ",this.getTabSize()):"\t"},this.setUseSoftTabs=function(t){this.setOption("useSoftTabs",t)},this.getUseSoftTabs=function(){return this.$useSoftTabs&&!this.$mode.$indentWithTabs},this.setTabSize=function(t){this.setOption("tabSize",t)},this.getTabSize=function(){return this.$tabSize},this.isTabStop=function(t){return this.$useSoftTabs&&t.column%this.$tabSize==0},this.$overwrite=!1,this.setOverwrite=function(t){this.setOption("overwrite",t)},this.getOverwrite=function(){return this.$overwrite},this.toggleOverwrite=function(){this.setOverwrite(!this.$overwrite)},this.addGutterDecoration=function(t,e){this.$decorations[t]||(this.$decorations[t]=""),this.$decorations[t]+=" "+e,this._signal("changeBreakpoint",{})},this.removeGutterDecoration=function(t,e){this.$decorations[t]=(this.$decorations[t]||"").replace(" "+e,""),this._signal("changeBreakpoint",{})},this.getBreakpoints=function(){return this.$breakpoints},this.setBreakpoints=function(t){this.$breakpoints=[];for(var e=0;e0&&(i=!!l.charAt(e-1).match(this.tokenRe)),i||(i=!!l.charAt(e).match(this.tokenRe)),i)var n=this.tokenRe;else n=/^\s+$/.test(l.slice(e-1,e+1))?/\s/:this.nonTokenRe;var a=e;if(a>0){do{a--}while(a>=0&&l.charAt(a).match(n));a++}for(var d=e;dt&&(t=e.screenWidth)})),this.lineWidgetWidth=t},this.$computeWidth=function(t){if(this.$modified||t){if(this.$modified=!1,this.$useWrapMode)return this.screenWidth=this.$wrapLimit;for(var e=this.doc.getAllLines(),l=this.$rowLengthCache,i=0,n=0,a=this.$foldData[n],d=a?a.start.row:1/0,s=e.length,c=0;cd){if((c=a.end.row+1)>=s)break;d=(a=this.$foldData[n++])?a.start.row:1/0}null==l[c]&&(l[c]=this.$getStringScreenWidth(e[c])[0]),l[c]>i&&(i=l[c])}this.screenWidth=i}},this.getLine=function(t){return this.doc.getLine(t)},this.getLines=function(t,e){return this.doc.getLines(t,e)},this.getLength=function(){return this.doc.getLength()},this.getTextRange=function(t){return this.doc.getTextRange(t||this.selection.getRange())},this.insert=function(t,e){return this.doc.insert(t,e)},this.remove=function(t){return this.doc.remove(t)},this.removeFullLines=function(t,e){return this.doc.removeFullLines(t,e)},this.undoChanges=function(t,e){if(t.length){this.$fromUndo=!0;for(var l=null,i=t.length-1;-1!=i;i--){var n=t[i];"doc"==n.group?(this.doc.revertDeltas(n.deltas),l=this.$getUndoSelection(n.deltas,!0,l)):n.deltas.forEach((function(t){this.addFolds(t.folds)}),this)}return this.$fromUndo=!1,l&&this.$undoSelect&&!e&&this.selection.setSelectionRange(l),l}},this.redoChanges=function(t,e){if(t.length){this.$fromUndo=!0;for(var l=null,i=0;it.end.column&&(a.start.column+=b),a.end.row==t.end.row&&a.end.column>t.end.column&&(a.end.column+=b)),d&&a.start.row>=t.end.row&&(a.start.row+=d,a.end.row+=d)}if(a.end=this.insert(a.start,i),n.length){var s=t.start,c=a.start,b=(d=c.row-s.row,c.column-s.column);this.addFolds(n.map((function(t){return(t=t.clone()).start.row==s.row&&(t.start.column+=b),t.end.row==s.row&&(t.end.column+=b),t.start.row+=d,t.end.row+=d,t})))}return a},this.indentRows=function(t,e,l){l=l.replace(/\t/g,this.getTabString());for(var i=t;i<=e;i++)this.doc.insertInLine({row:i,column:0},l)},this.outdentRows=function(t){for(var e=t.collapseRows(),l=new o(0,0,0,0),i=this.getTabSize(),n=e.start.row;n<=e.end.row;++n){var a=this.getLine(n);l.start.row=n,l.end.row=n;for(var d=0;d0){var n;if((n=this.getRowFoldEnd(e+l))>this.doc.getLength()-1)return 0;i=n-e}else t=this.$clipRowToDocument(t),i=(e=this.$clipRowToDocument(e))-t+1;var a=new o(t,0,e,Number.MAX_VALUE),d=this.getFoldsInRange(a).map((function(t){return(t=t.clone()).start.row+=i,t.end.row+=i,t})),s=0==l?this.doc.getLines(t,e):this.doc.removeFullLines(t,e);return this.doc.insertFullLines(t+i,s),d.length&&this.addFolds(d),i},this.moveLinesUp=function(t,e){return this.$moveLines(t,e,-1)},this.moveLinesDown=function(t,e){return this.$moveLines(t,e,1)},this.duplicateLines=function(t,e){return this.$moveLines(t,e,0)},this.$clipRowToDocument=function(t){return Math.max(0,Math.min(t,this.doc.getLength()-1))},this.$clipColumnToRow=function(t,e){return e<0?0:Math.min(this.doc.getLine(t).length,e)},this.$clipPositionToDocument=function(t,e){if(e=Math.max(0,e),t<0)t=0,e=0;else{var l=this.doc.getLength();t>=l?(t=l-1,e=this.doc.getLine(l-1).length):e=Math.min(this.doc.getLine(t).length,e)}return{row:t,column:e}},this.$clipRangeToDocument=function(t){t.start.row<0?(t.start.row=0,t.start.column=0):t.start.column=this.$clipColumnToRow(t.start.row,t.start.column);var e=this.doc.getLength()-1;return t.end.row>e?(t.end.row=e,t.end.column=this.doc.getLine(e).length):t.end.column=this.$clipColumnToRow(t.end.row,t.end.column),t},this.$wrapLimit=80,this.$useWrapMode=!1,this.$wrapLimitRange={min:null,max:null},this.setUseWrapMode=function(t){if(t!=this.$useWrapMode){if(this.$useWrapMode=t,this.$modified=!0,this.$resetRowCache(0),t){var e=this.getLength();this.$wrapData=Array(e),this.$updateWrapData(0,e-1)}this._signal("changeWrapMode")}},this.getUseWrapMode=function(){return this.$useWrapMode},this.setWrapLimitRange=function(t,e){this.$wrapLimitRange.min===t&&this.$wrapLimitRange.max===e||(this.$wrapLimitRange={min:t,max:e},this.$modified=!0,this.$useWrapMode&&this._signal("changeWrapMode"))},this.adjustWrapLimit=function(t,e){var l=this.$wrapLimitRange;l.max<0&&(l={min:e,max:e});var i=this.$constrainWrapLimit(t,l.min,l.max);return i!=this.$wrapLimit&&i>1&&(this.$wrapLimit=i,this.$modified=!0,this.$useWrapMode&&(this.$updateWrapData(0,this.getLength()-1),this.$resetRowCache(0),this._signal("changeWrapLimit")),!0)},this.$constrainWrapLimit=function(t,e,l){return e&&(t=Math.max(e,t)),l&&(t=Math.min(l,t)),t},this.getWrapLimit=function(){return this.$wrapLimit},this.setWrapLimit=function(t){this.setWrapLimitRange(t,t)},this.getWrapLimitRange=function(){return{min:this.$wrapLimitRange.min,max:this.$wrapLimitRange.max}},this.$updateInternalDataOnChange=function(t){var e=this.$useWrapMode,l=t.action,i=t.start,n=t.end,a=i.row,d=n.row,s=d-a,c=null;if(this.$updating=!0,0!=s)if("remove"===l){this[e?"$wrapData":"$rowLengthCache"].splice(a,s);var o=this.$foldData;c=this.getFoldsInRange(t),this.removeFolds(c);var b=0;if(W=this.getFoldLine(n.row)){W.addRemoveChars(n.row,n.column,i.column-n.column),W.shiftRow(-s);var r=this.getFoldLine(a);r&&r!==W&&(r.merge(W),W=r),b=o.indexOf(W)+1}for(;b=n.row&&W.shiftRow(-s);d=a}else{var m=Array(s);m.unshift(a,0);var Z=e?this.$wrapData:this.$rowLengthCache;if(Z.splice.apply(Z,m),o=this.$foldData,b=0,W=this.getFoldLine(a)){var g=W.range.compareInside(i.row,i.column);0==g?(W=W.split(i.row,i.column))&&(W.shiftRow(s),W.addRemoveChars(d,0,n.column-i.column)):-1==g&&(W.addRemoveChars(a,0,n.column-i.column),W.shiftRow(s)),b=o.indexOf(W)+1}for(;b=a&&W.shiftRow(s)}}else s=Math.abs(t.start.column-t.end.column),"remove"===l&&(c=this.getFoldsInRange(t),this.removeFolds(c),s=-s),(W=this.getFoldLine(a))&&W.addRemoveChars(a,i.column,s);return e&&this.$wrapData.length!=this.doc.getLength()&&console.error("doc.getLength() and $wrapData.length have to be the same!"),this.$updating=!1,e?this.$updateWrapData(a,d):this.$updateRowLengthCache(a,d),c},this.$updateRowLengthCache=function(t,e,l){this.$rowLengthCache[t]=null,this.$rowLengthCache[e]=null},this.$updateWrapData=function(l,i){var n,a,d=this.doc.getAllLines(),s=this.getTabSize(),c=this.$wrapData,o=this.$wrapLimit,b=l;for(i=Math.min(i,d.length-1);b<=i;)(a=this.getFoldLine(b,a))?(n=[],a.walk(function(l,i,a,s){var c;if(null!=l){(c=this.$getDisplayTokens(l,n.length))[0]=t;for(var o=1;o=4352&&t<=4447||t>=4515&&t<=4519||t>=4602&&t<=4607||t>=9001&&t<=9002||t>=11904&&t<=11929||t>=11931&&t<=12019||t>=12032&&t<=12245||t>=12272&&t<=12283||t>=12288&&t<=12350||t>=12353&&t<=12438||t>=12441&&t<=12543||t>=12549&&t<=12589||t>=12593&&t<=12686||t>=12688&&t<=12730||t>=12736&&t<=12771||t>=12784&&t<=12830||t>=12832&&t<=12871||t>=12880&&t<=13054||t>=13056&&t<=19903||t>=19968&&t<=42124||t>=42128&&t<=42182||t>=43360&&t<=43388||t>=44032&&t<=55203||t>=55216&&t<=55238||t>=55243&&t<=55291||t>=63744&&t<=64255||t>=65040&&t<=65049||t>=65072&&t<=65106||t>=65108&&t<=65126||t>=65128&&t<=65131||t>=65281&&t<=65376||t>=65504&&t<=65510)}this.$computeWrapSplits=function(l,i,n){if(0==l.length)return[];var a=[],d=l.length,s=0,c=0,o=this.$wrapAsCode,b=this.$indentedSoftWrap,r=i<=Math.max(2*n,8)||!1===b?0:Math.floor(i/2);function m(t){var e=l.slice(s,t),i=e.length;e.join("").replace(/12/g,(function(){i-=1})).replace(/2/g,(function(){i-=1})),a.length||(Z=function(){var t=0;if(0===r)return t;if(b)for(var e=0;ei-Z;){var g=s+i-Z;if(l[g-1]>=10&&l[g]>=10)m(g);else if(l[g]!=t&&l[g]!=e){for(var W=Math.max(g-(i-(i>>2)),s-1);g>W&&l[g]W&&l[g]W&&9==l[g];)g--}else for(;g>W&&l[g]<10;)g--;g>W?m(++g):(2==l[g=s+i]&&g--,m(g-Z))}else{for(;g!=s-1&&l[g]!=t;g--);if(g>s){m(g);continue}for(g=s+i;g39&&d<48||d>57&&d<64?n.push(9):d>=4352&&l(d)?n.push(1,2):n.push(1)}return n},this.$getStringScreenWidth=function(t,e,i){if(0==e)return[0,0];var n,a;for(null==e&&(e=1/0),i=i||0,a=0;a=4352&&l(n)?i+=2:i+=1,!(i>e));a++);return[i,a]},this.lineWidgets=null,this.getRowLength=function(t){if(this.lineWidgets)var e=this.lineWidgets[t]&&this.lineWidgets[t].rowCount||0;else e=0;return this.$useWrapMode&&this.$wrapData[t]?this.$wrapData[t].length+1+e:1+e},this.getRowLineCount=function(t){return this.$useWrapMode&&this.$wrapData[t]?this.$wrapData[t].length+1:1},this.getRowWrapIndent=function(t){if(this.$useWrapMode){var e=this.screenToDocumentPosition(t,Number.MAX_VALUE),l=this.$wrapData[e.row];return l.length&&l[0]=0){d=c[o],n=this.$docRowCache[o];var r=t>c[b-1]}else r=!b;for(var m=this.getLength()-1,Z=this.getNextFoldLine(n),g=Z?Z.start.row:1/0;d<=t&&!(d+(s=this.getRowLength(n))>t||n>=m);)d+=s,++n>g&&(n=Z.end.row+1,g=(Z=this.getNextFoldLine(n,Z))?Z.start.row:1/0),r&&(this.$docRowCache.push(n),this.$screenRowCache.push(d));if(Z&&Z.start.row<=n)l=this.getFoldDisplayLine(Z),n=Z.start.row;else{if(d+s<=t||n>m)return{row:m,column:this.getLine(m).length};l=this.getLine(n),Z=null}var W=0;if(this.$useWrapMode){var h=this.$wrapData[n];if(h){var N=Math.floor(t-d);i=h[N],N>0&&h.length&&(W=h.indent,a=h[N-1]||h[h.length-1],l=l.substring(a))}}return a+=this.$getStringScreenWidth(l,e-W)[1],this.$useWrapMode&&a>=i&&(a=i-1),Z?Z.idxToPosition(a):{row:n,column:a}},this.documentToScreenPosition=function(t,e){if(void 0===e)var l=this.$clipPositionToDocument(t.row,t.column);else l=this.$clipPositionToDocument(t,e);t=l.row,e=l.column;var i,n=0,a=null;(i=this.getFoldAt(t,e,1))&&(t=i.start.row,e=i.start.column);var d,s=0,c=this.$docRowCache,o=this.$getRowCacheIndex(c,t),b=c.length;if(b&&o>=0){s=c[o],n=this.$screenRowCache[o];var r=t>c[b-1]}else r=!b;for(var m=this.getNextFoldLine(s),Z=m?m.start.row:1/0;s=Z){if((d=m.end.row+1)>t)break;Z=(m=this.getNextFoldLine(d,m))?m.start.row:1/0}else d=s+1;n+=this.getRowLength(s),s=d,r&&(this.$docRowCache.push(s),this.$screenRowCache.push(n))}var g="";m&&s>=Z?(g=this.getFoldDisplayLine(m,t,e),a=m.start.row):(g=this.getLine(t).substring(0,e),a=t);var W=0;if(this.$useWrapMode){var h=this.$wrapData[a];if(h){for(var N=0;g.length>=h[N];)n++,N++;g=g.substring(h[N-1]||0,g.length),W=N>0?h.indent:0}}return{row:n,column:W+this.$getStringScreenWidth(g)[0]}},this.documentToScreenColumn=function(t,e){return this.documentToScreenPosition(t,e).column},this.documentToScreenRow=function(t,e){return this.documentToScreenPosition(t,e).row},this.getScreenLength=function(){var t=0,e=null;if(this.$useWrapMode)for(var l=this.$wrapData.length,i=0,n=(s=0,(e=this.$foldData[s++])?e.start.row:1/0);in&&(i=e.end.row+1,n=(e=this.$foldData[s++])?e.start.row:1/0)}else{t=this.getLength();for(var d=this.$foldData,s=0;sl);a++);return[i,a]})},this.destroy=function(){this.bgTokenizer&&(this.bgTokenizer.setDocument(null),this.bgTokenizer=null),this.$stopWorker()}}).call(Z.prototype),t("./edit_session/folding").Folding.call(Z.prototype),t("./edit_session/bracket_match").BracketMatch.call(Z.prototype),a.defineOptions(Z.prototype,"session",{wrap:{set:function(t){if(t&&"off"!=t?"free"==t?t=!0:"printMargin"==t?t=-1:"string"==typeof t&&(t=parseInt(t,10)||!1):t=!1,this.$wrap!=t)if(this.$wrap=t,t){var e="number"==typeof t?t:null;this.setWrapLimitRange(e,e),this.setUseWrapMode(!0)}else this.setUseWrapMode(!1)},get:function(){return this.getUseWrapMode()?-1==this.$wrap?"printMargin":this.getWrapLimitRange().min?this.$wrap:"free":"off"},handlesSet:!0},wrapMethod:{set:function(t){(t="auto"==t?"text"!=this.$mode.type:"text"!=t)!=this.$wrapAsCode&&(this.$wrapAsCode=t,this.$useWrapMode&&(this.$modified=!0,this.$resetRowCache(0),this.$updateWrapData(0,this.getLength()-1)))},initialValue:"auto"},indentedSoftWrap:{initialValue:!0},firstLineNumber:{set:function(){this._signal("changeBreakpoint")},initialValue:1},useWorker:{set:function(t){this.$useWorker=t,this.$stopWorker(),t&&this.$startWorker()},initialValue:!0},useSoftTabs:{initialValue:!0},tabSize:{set:function(t){isNaN(t)||this.$tabSize===t||(this.$modified=!0,this.$rowLengthCache=[],this.$tabSize=t,this._signal("changeTabSize"))},initialValue:4,handlesSet:!0},overwrite:{set:function(t){this._signal("changeOverwrite")},initialValue:!1},newLineMode:{set:function(t){this.doc.setNewLineMode(t)},get:function(){return this.doc.getNewLineMode()},handlesSet:!0},mode:{set:function(t){this.setMode(t)},get:function(){return this.$modeId}}}),e.EditSession=Z})),ace.define("ace/search",["require","exports","module","ace/lib/lang","ace/lib/oop","ace/range"],(function(t,e,l){"use strict";var i=t("./lib/lang"),n=t("./lib/oop"),a=t("./range").Range,d=function(){this.$options={}};(function(){this.set=function(t){return n.mixin(this.$options,t),this},this.getOptions=function(){return i.copyObject(this.$options)},this.setOptions=function(t){this.$options=t},this.find=function(t){var e=this.$options,l=this.$matchIterator(t,e);if(!l)return!1;var i=null;return l.forEach((function(t,l,n){if(t.start)i=t;else{var d=t.offset+(n||0);if(i=new a(l,d,l,d+t.length),!t.length&&e.start&&e.start.start&&0!=e.skipCurrent&&i.isEqual(e.start))return i=null,!1}return!0})),i},this.findAll=function(t){var e=this.$options;if(!e.needle)return[];this.$assembleRegExp(e);var l=e.range,n=l?t.getLines(l.start.row,l.end.row):t.doc.getAllLines(),d=[],s=e.re;if(e.$isMultiLine){var c,o=s.length,b=n.length-o;t:for(var r=s.offset||0;r<=b;r++){for(var m=0;mW||(d.push(c=new a(r,W,r+o-1,h)),o>2&&(r=r+o-2))}}else for(var N=0;NM&&d[m].end.row==l.end.row;)m--;for(d=d.slice(N,m+1),N=0,m=d.length;N=0;s--)if(l(d[s],e,a))return!0}:function(t,e,a){for(var d=i.getMatchOffsets(t,n),s=0;s=d;i--)if(l(t.getLine(i),i))return;if(0!=e.wrap)for(i=s,d=a.row;i>=d;i--)if(l(t.getLine(i),i))return}}:function(l){var i=a.row;if(!l(t.getLine(i).substr(a.column),i,a.column)){for(i+=1;i<=s;i++)if(l(t.getLine(i),i))return;if(0!=e.wrap)for(i=d,s=a.row;i<=s;i++)if(l(t.getLine(i),i))return}}}}}).call(d.prototype),e.Search=d})),ace.define("ace/keyboard/hash_handler",["require","exports","module","ace/lib/keys","ace/lib/useragent"],(function(t,e,l){"use strict";var i=t("../lib/keys"),n=t("../lib/useragent"),a=i.KEY_MODS;function d(t,e){this.platform=e||(n.isMac?"mac":"win"),this.commands={},this.commandKeyBinding={},this.addCommands(t),this.$singleCommand=!0}function s(t,e){d.call(this,t,e),this.$singleCommand=!1}s.prototype=d.prototype,function(){function t(t){return"object"==typeof t&&t.bindKey&&t.bindKey.position||0}this.addCommand=function(t){this.commands[t.name]&&this.removeCommand(t),this.commands[t.name]=t,t.bindKey&&this._buildKeyHash(t)},this.removeCommand=function(t,e){var l=t&&("string"==typeof t?t:t.name);t=this.commands[l],e||delete this.commands[l];var i=this.commandKeyBinding;for(var n in i){var a=i[n];if(a==t)delete i[n];else if(Array.isArray(a)){var d=a.indexOf(t);-1!=d&&(a.splice(d,1),1==a.length&&(i[n]=a[0]))}}},this.bindKey=function(t,e,l){if("object"==typeof t&&t&&(null==l&&(l=t.position),t=t[this.platform]),t)return"function"==typeof e?this.addCommand({exec:e,bindKey:t,name:e.name||t}):void t.split("|").forEach((function(t){var i="";if(-1!=t.indexOf(" ")){var n=t.split(/\s+/);t=n.pop(),n.forEach((function(t){var e=this.parseKeys(t),l=a[e.hashId]+e.key;i+=(i?" ":"")+l,this._addCommandToBinding(i,"chainKeys")}),this),i+=" "}var d=this.parseKeys(t),s=a[d.hashId]+d.key;this._addCommandToBinding(i+s,e,l)}),this)},this._addCommandToBinding=function(e,l,i){var n,a=this.commandKeyBinding;if(l)if(!a[e]||this.$singleCommand)a[e]=l;else{Array.isArray(a[e])?-1!=(n=a[e].indexOf(l))&&a[e].splice(n,1):a[e]=[a[e]],"number"!=typeof i&&(i=i||l.isDefault?-100:t(l));var d=a[e];for(n=0;ni);n++);d.splice(n,0,l)}else delete a[e]},this.addCommands=function(t){t&&Object.keys(t).forEach((function(e){var l=t[e];if(l){if("string"==typeof l)return this.bindKey(l,e);"function"==typeof l&&(l={exec:l}),"object"==typeof l&&(l.name||(l.name=e),this.addCommand(l))}}),this)},this.removeCommands=function(t){Object.keys(t).forEach((function(e){this.removeCommand(t[e])}),this)},this.bindKeys=function(t){Object.keys(t).forEach((function(e){this.bindKey(e,t[e])}),this)},this._buildKeyHash=function(t){this.bindKey(t.bindKey,t)},this.parseKeys=function(t){var e=t.toLowerCase().split(/[\-\+]([\-\+])?/).filter((function(t){return t})),l=e.pop(),n=i[l];if(i.FUNCTION_KEYS[n])l=i.FUNCTION_KEYS[n].toLowerCase();else{if(!e.length)return{key:l,hashId:-1};if(1==e.length&&"shift"==e[0])return{key:l.toUpperCase(),hashId:-1}}for(var a=0,d=e.length;d--;){var s=i.KEY_MODS[e[d]];if(null==s)return"undefined"!=typeof console&&console.error("invalid modifier "+e[d]+" in "+t),!1;a|=s}return{key:l,hashId:a}},this.findKeyCommand=function(t,e){var l=a[t]+e;return this.commandKeyBinding[l]},this.handleKeyboard=function(t,e,l,i){if(!(i<0)){var n=a[e]+l,d=this.commandKeyBinding[n];return t.$keyChain&&(t.$keyChain+=" "+n,d=this.commandKeyBinding[t.$keyChain]||d),!d||"chainKeys"!=d&&"chainKeys"!=d[d.length-1]?(t.$keyChain&&(e&&4!=e||1!=l.length?(-1==e||i>0)&&(t.$keyChain=""):t.$keyChain=t.$keyChain.slice(0,-n.length-1)),{command:d}):(t.$keyChain=t.$keyChain||n,{command:"null"})}},this.getStatusText=function(t,e){return e.$keyChain||""}}.call(d.prototype),e.HashHandler=d,e.MultiHashHandler=s})),ace.define("ace/commands/command_manager",["require","exports","module","ace/lib/oop","ace/keyboard/hash_handler","ace/lib/event_emitter"],(function(t,e,l){"use strict";var i=t("../lib/oop"),n=t("../keyboard/hash_handler").MultiHashHandler,a=t("../lib/event_emitter").EventEmitter,d=function(t,e){n.call(this,e,t),this.byName=this.commands,this.setDefaultHandler("exec",(function(t){return t.command.exec(t.editor,t.args||{})}))};i.inherits(d,n),function(){i.implement(this,a),this.exec=function(t,e,l){if(Array.isArray(t)){for(var i=t.length;i--;)if(this.exec(t[i],e,l))return!0;return!1}if("string"==typeof t&&(t=this.commands[t]),!t)return!1;if(e&&e.$readOnly&&!t.readOnly)return!1;var n={editor:e,command:t,args:l};return n.returnValue=this._emit("exec",n),this._signal("afterExec",n),!1!==n.returnValue},this.toggleRecording=function(t){if(!this.$inReplay)return t&&t._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(t){this.macro.push([t.command,t.args])}.bind(this)),this.oldMacro=this.macro,this.macro=[],this.on("exec",this.$addCommandToMacro),this.recording=!0)},this.replay=function(t){if(!this.$inReplay&&this.macro){if(this.recording)return this.toggleRecording(t);try{this.$inReplay=!0,this.macro.forEach((function(e){"string"==typeof e?this.exec(e,t):this.exec(e[0],t,e[1])}),this)}finally{this.$inReplay=!1}}},this.trimMacro=function(t){return t.map((function(t){return"string"!=typeof t[0]&&(t[0]=t[0].name),t[1]||(t=t[0]),t}))}}.call(d.prototype),e.CommandManager=d})),ace.define("ace/commands/default_commands",["require","exports","module","ace/lib/lang","ace/config","ace/range"],(function(t,e,l){"use strict";var i=t("../lib/lang"),n=t("../config"),a=t("../range").Range;function d(t,e){return{win:t,mac:e}}e.commands=[{name:"showSettingsMenu",bindKey:d("Ctrl-,","Command-,"),exec:function(t){n.loadModule("ace/ext/settings_menu",(function(e){e.init(t),t.showSettingsMenu()}))},readOnly:!0},{name:"goToNextError",bindKey:d("Alt-E","Ctrl-E"),exec:function(t){n.loadModule("ace/ext/error_marker",(function(e){e.showErrorMarker(t,1)}))},scrollIntoView:"animate",readOnly:!0},{name:"goToPreviousError",bindKey:d("Alt-Shift-E","Ctrl-Shift-E"),exec:function(t){n.loadModule("ace/ext/error_marker",(function(e){e.showErrorMarker(t,-1)}))},scrollIntoView:"animate",readOnly:!0},{name:"selectall",bindKey:d("Ctrl-A","Command-A"),exec:function(t){t.selectAll()},readOnly:!0},{name:"centerselection",bindKey:d(null,"Ctrl-L"),exec:function(t){t.centerSelection()},readOnly:!0},{name:"gotoline",bindKey:d("Ctrl-L","Command-L"),exec:function(t){var e=parseInt(prompt("Enter line number:"),10);isNaN(e)||t.gotoLine(e)},readOnly:!0},{name:"fold",bindKey:d("Alt-L|Ctrl-F1","Command-Alt-L|Command-F1"),exec:function(t){t.session.toggleFold(!1)},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"unfold",bindKey:d("Alt-Shift-L|Ctrl-Shift-F1","Command-Alt-Shift-L|Command-Shift-F1"),exec:function(t){t.session.toggleFold(!0)},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"toggleFoldWidget",bindKey:d("F2","F2"),exec:function(t){t.session.toggleFoldWidget()},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"toggleParentFoldWidget",bindKey:d("Alt-F2","Alt-F2"),exec:function(t){t.session.toggleFoldWidget(!0)},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"foldall",bindKey:d(null,"Ctrl-Command-Option-0"),exec:function(t){t.session.foldAll()},scrollIntoView:"center",readOnly:!0},{name:"foldOther",bindKey:d("Alt-0","Command-Option-0"),exec:function(t){t.session.foldAll(),t.session.unfold(t.selection.getAllRanges())},scrollIntoView:"center",readOnly:!0},{name:"unfoldall",bindKey:d("Alt-Shift-0","Command-Option-Shift-0"),exec:function(t){t.session.unfold()},scrollIntoView:"center",readOnly:!0},{name:"findnext",bindKey:d("Ctrl-K","Command-G"),exec:function(t){t.findNext()},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"findprevious",bindKey:d("Ctrl-Shift-K","Command-Shift-G"),exec:function(t){t.findPrevious()},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"selectOrFindNext",bindKey:d("Alt-K","Ctrl-G"),exec:function(t){t.selection.isEmpty()?t.selection.selectWord():t.findNext()},readOnly:!0},{name:"selectOrFindPrevious",bindKey:d("Alt-Shift-K","Ctrl-Shift-G"),exec:function(t){t.selection.isEmpty()?t.selection.selectWord():t.findPrevious()},readOnly:!0},{name:"find",bindKey:d("Ctrl-F","Command-F"),exec:function(t){n.loadModule("ace/ext/searchbox",(function(e){e.Search(t)}))},readOnly:!0},{name:"overwrite",bindKey:"Insert",exec:function(t){t.toggleOverwrite()},readOnly:!0},{name:"selecttostart",bindKey:d("Ctrl-Shift-Home","Command-Shift-Up"),exec:function(t){t.getSelection().selectFileStart()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"gotostart",bindKey:d("Ctrl-Home","Command-Home|Command-Up"),exec:function(t){t.navigateFileStart()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"selectup",bindKey:d("Shift-Up","Shift-Up"),exec:function(t){t.getSelection().selectUp()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"golineup",bindKey:d("Up","Up|Ctrl-P"),exec:function(t,e){t.navigateUp(e.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selecttoend",bindKey:d("Ctrl-Shift-End","Command-Shift-Down"),exec:function(t){t.getSelection().selectFileEnd()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"gotoend",bindKey:d("Ctrl-End","Command-End|Command-Down"),exec:function(t){t.navigateFileEnd()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"selectdown",bindKey:d("Shift-Down","Shift-Down"),exec:function(t){t.getSelection().selectDown()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"golinedown",bindKey:d("Down","Down|Ctrl-N"),exec:function(t,e){t.navigateDown(e.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectwordleft",bindKey:d("Ctrl-Shift-Left","Option-Shift-Left"),exec:function(t){t.getSelection().selectWordLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotowordleft",bindKey:d("Ctrl-Left","Option-Left"),exec:function(t){t.navigateWordLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selecttolinestart",bindKey:d("Alt-Shift-Left","Command-Shift-Left"),exec:function(t){t.getSelection().selectLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotolinestart",bindKey:d("Alt-Left|Home","Command-Left|Home|Ctrl-A"),exec:function(t){t.navigateLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectleft",bindKey:d("Shift-Left","Shift-Left"),exec:function(t){t.getSelection().selectLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotoleft",bindKey:d("Left","Left|Ctrl-B"),exec:function(t,e){t.navigateLeft(e.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectwordright",bindKey:d("Ctrl-Shift-Right","Option-Shift-Right"),exec:function(t){t.getSelection().selectWordRight()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotowordright",bindKey:d("Ctrl-Right","Option-Right"),exec:function(t){t.navigateWordRight()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selecttolineend",bindKey:d("Alt-Shift-Right","Command-Shift-Right"),exec:function(t){t.getSelection().selectLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotolineend",bindKey:d("Alt-Right|End","Command-Right|End|Ctrl-E"),exec:function(t){t.navigateLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectright",bindKey:d("Shift-Right","Shift-Right"),exec:function(t){t.getSelection().selectRight()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotoright",bindKey:d("Right","Right|Ctrl-F"),exec:function(t,e){t.navigateRight(e.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectpagedown",bindKey:"Shift-PageDown",exec:function(t){t.selectPageDown()},readOnly:!0},{name:"pagedown",bindKey:d(null,"Option-PageDown"),exec:function(t){t.scrollPageDown()},readOnly:!0},{name:"gotopagedown",bindKey:d("PageDown","PageDown|Ctrl-V"),exec:function(t){t.gotoPageDown()},readOnly:!0},{name:"selectpageup",bindKey:"Shift-PageUp",exec:function(t){t.selectPageUp()},readOnly:!0},{name:"pageup",bindKey:d(null,"Option-PageUp"),exec:function(t){t.scrollPageUp()},readOnly:!0},{name:"gotopageup",bindKey:"PageUp",exec:function(t){t.gotoPageUp()},readOnly:!0},{name:"scrollup",bindKey:d("Ctrl-Up",null),exec:function(t){t.renderer.scrollBy(0,-2*t.renderer.layerConfig.lineHeight)},readOnly:!0},{name:"scrolldown",bindKey:d("Ctrl-Down",null),exec:function(t){t.renderer.scrollBy(0,2*t.renderer.layerConfig.lineHeight)},readOnly:!0},{name:"selectlinestart",bindKey:"Shift-Home",exec:function(t){t.getSelection().selectLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectlineend",bindKey:"Shift-End",exec:function(t){t.getSelection().selectLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"togglerecording",bindKey:d("Ctrl-Alt-E","Command-Option-E"),exec:function(t){t.commands.toggleRecording(t)},readOnly:!0},{name:"replaymacro",bindKey:d("Ctrl-Shift-E","Command-Shift-E"),exec:function(t){t.commands.replay(t)},readOnly:!0},{name:"jumptomatching",bindKey:d("Ctrl-P","Ctrl-P"),exec:function(t){t.jumpToMatching()},multiSelectAction:"forEach",scrollIntoView:"animate",readOnly:!0},{name:"selecttomatching",bindKey:d("Ctrl-Shift-P","Ctrl-Shift-P"),exec:function(t){t.jumpToMatching(!0)},multiSelectAction:"forEach",scrollIntoView:"animate",readOnly:!0},{name:"expandToMatching",bindKey:d("Ctrl-Shift-M","Ctrl-Shift-M"),exec:function(t){t.jumpToMatching(!0,!0)},multiSelectAction:"forEach",scrollIntoView:"animate",readOnly:!0},{name:"passKeysToBrowser",bindKey:d(null,null),exec:function(){},passEvent:!0,readOnly:!0},{name:"copy",exec:function(t){},readOnly:!0},{name:"cut",exec:function(t){var e=t.getSelectionRange();t._emit("cut",e),t.selection.isEmpty()||(t.session.remove(e),t.clearSelection())},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"paste",exec:function(t,e){t.$handlePaste(e)},scrollIntoView:"cursor"},{name:"removeline",bindKey:d("Ctrl-D","Command-D"),exec:function(t){t.removeLines()},scrollIntoView:"cursor",multiSelectAction:"forEachLine"},{name:"duplicateSelection",bindKey:d("Ctrl-Shift-D","Command-Shift-D"),exec:function(t){t.duplicateSelection()},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"sortlines",bindKey:d("Ctrl-Alt-S","Command-Alt-S"),exec:function(t){t.sortLines()},scrollIntoView:"selection",multiSelectAction:"forEachLine"},{name:"togglecomment",bindKey:d("Ctrl-/","Command-/"),exec:function(t){t.toggleCommentLines()},multiSelectAction:"forEachLine",scrollIntoView:"selectionPart"},{name:"toggleBlockComment",bindKey:d("Ctrl-Shift-/","Command-Shift-/"),exec:function(t){t.toggleBlockComment()},multiSelectAction:"forEach",scrollIntoView:"selectionPart"},{name:"modifyNumberUp",bindKey:d("Ctrl-Shift-Up","Alt-Shift-Up"),exec:function(t){t.modifyNumber(1)},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"modifyNumberDown",bindKey:d("Ctrl-Shift-Down","Alt-Shift-Down"),exec:function(t){t.modifyNumber(-1)},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"replace",bindKey:d("Ctrl-H","Command-Option-F"),exec:function(t){n.loadModule("ace/ext/searchbox",(function(e){e.Search(t,!0)}))}},{name:"undo",bindKey:d("Ctrl-Z","Command-Z"),exec:function(t){t.undo()}},{name:"redo",bindKey:d("Ctrl-Shift-Z|Ctrl-Y","Command-Shift-Z|Command-Y"),exec:function(t){t.redo()}},{name:"copylinesup",bindKey:d("Alt-Shift-Up","Command-Option-Up"),exec:function(t){t.copyLinesUp()},scrollIntoView:"cursor"},{name:"movelinesup",bindKey:d("Alt-Up","Option-Up"),exec:function(t){t.moveLinesUp()},scrollIntoView:"cursor"},{name:"copylinesdown",bindKey:d("Alt-Shift-Down","Command-Option-Down"),exec:function(t){t.copyLinesDown()},scrollIntoView:"cursor"},{name:"movelinesdown",bindKey:d("Alt-Down","Option-Down"),exec:function(t){t.moveLinesDown()},scrollIntoView:"cursor"},{name:"del",bindKey:d("Delete","Delete|Ctrl-D|Shift-Delete"),exec:function(t){t.remove("right")},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"backspace",bindKey:d("Shift-Backspace|Backspace","Ctrl-Backspace|Shift-Backspace|Backspace|Ctrl-H"),exec:function(t){t.remove("left")},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"cut_or_delete",bindKey:d("Shift-Delete",null),exec:function(t){if(!t.selection.isEmpty())return!1;t.remove("left")},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removetolinestart",bindKey:d("Alt-Backspace","Command-Backspace"),exec:function(t){t.removeToLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removetolineend",bindKey:d("Alt-Delete","Ctrl-K"),exec:function(t){t.removeToLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removewordleft",bindKey:d("Ctrl-Backspace","Alt-Backspace|Ctrl-Alt-Backspace"),exec:function(t){t.removeWordLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removewordright",bindKey:d("Ctrl-Delete","Alt-Delete"),exec:function(t){t.removeWordRight()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"outdent",bindKey:d("Shift-Tab","Shift-Tab"),exec:function(t){t.blockOutdent()},multiSelectAction:"forEach",scrollIntoView:"selectionPart"},{name:"indent",bindKey:d("Tab","Tab"),exec:function(t){t.indent()},multiSelectAction:"forEach",scrollIntoView:"selectionPart"},{name:"blockoutdent",bindKey:d("Ctrl-[","Ctrl-["),exec:function(t){t.blockOutdent()},multiSelectAction:"forEachLine",scrollIntoView:"selectionPart"},{name:"blockindent",bindKey:d("Ctrl-]","Ctrl-]"),exec:function(t){t.blockIndent()},multiSelectAction:"forEachLine",scrollIntoView:"selectionPart"},{name:"insertstring",exec:function(t,e){t.insert(e)},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"inserttext",exec:function(t,e){t.insert(i.stringRepeat(e.text||"",e.times||1))},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"splitline",bindKey:d(null,"Ctrl-O"),exec:function(t){t.splitLine()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"transposeletters",bindKey:d("Ctrl-T","Ctrl-T"),exec:function(t){t.transposeLetters()},multiSelectAction:function(t){t.transposeSelections(1)},scrollIntoView:"cursor"},{name:"touppercase",bindKey:d("Ctrl-U","Ctrl-U"),exec:function(t){t.toUpperCase()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"tolowercase",bindKey:d("Ctrl-Shift-U","Ctrl-Shift-U"),exec:function(t){t.toLowerCase()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"expandtoline",bindKey:d("Ctrl-Shift-L","Command-Shift-L"),exec:function(t){var e=t.selection.getRange();e.start.column=e.end.column=0,e.end.row++,t.selection.setRange(e,!1)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"joinlines",bindKey:d(null,null),exec:function(t){for(var e=t.selection.isBackwards(),l=e?t.selection.getSelectionLead():t.selection.getSelectionAnchor(),n=e?t.selection.getSelectionAnchor():t.selection.getSelectionLead(),d=t.session.doc.getLine(l.row).length,s=t.session.doc.getTextRange(t.selection.getRange()).replace(/\n\s*/," ").length,c=t.session.doc.getLine(l.row),o=l.row+1;o<=n.row+1;o++){var b=i.stringTrimLeft(i.stringTrimRight(t.session.doc.getLine(o)));0!==b.length&&(b=" "+b),c+=b}n.row+10?(t.selection.moveCursorTo(l.row,l.column),t.selection.selectTo(l.row,l.column+s)):(d=t.session.doc.getLine(l.row).length>d?d+1:d,t.selection.moveCursorTo(l.row,d))},multiSelectAction:"forEach",readOnly:!0},{name:"invertSelection",bindKey:d(null,null),exec:function(t){var e=t.session.doc.getLength()-1,l=t.session.doc.getLine(e).length,i=t.selection.rangeList.ranges,n=[];i.length<1&&(i=[t.selection.getRange()]);for(var d=0;d0&&this.$blockScrolling--;var l=e&&e.scrollIntoView;if(l){switch(l){case"center-animate":l="animate";case"center":this.renderer.scrollCursorIntoView(null,.5);break;case"animate":case"cursor":this.renderer.scrollCursorIntoView();break;case"selectionPart":var i=this.selection.getRange(),n=this.renderer.layerConfig;(i.start.row>=n.lastRow||i.end.row<=n.firstRow)&&this.renderer.scrollSelectionIntoView(this.selection.anchor,this.selection.lead)}"animate"==l&&this.renderer.animateScrolling(this.curOp.scrollTop)}this.prevOp=this.curOp,this.curOp=null}},this.$mergeableCommands=["backspace","del","insertstring"],this.$historyTracker=function(t){if(this.$mergeUndoDeltas){var e=this.prevOp,l=this.$mergeableCommands,i=e.command&&t.command.name==e.command.name;if("insertstring"==t.command.name){var n=t.args;void 0===this.mergeNextCommand&&(this.mergeNextCommand=!0),i=i&&this.mergeNextCommand&&(!/\s/.test(n)||/\s/.test(e.args)),this.mergeNextCommand=!0}else i=i&&-1!==l.indexOf(t.command.name);"always"!=this.$mergeUndoDeltas&&Date.now()-this.sequenceStartTime>2e3&&(i=!1),i?this.session.mergeUndoDeltas=!0:-1!==l.indexOf(t.command.name)&&(this.sequenceStartTime=Date.now())}},this.setKeyboardHandler=function(t,e){if(t&&"string"==typeof t){this.$keybindingId=t;var l=this;N.loadModule(["keybinding",t],(function(i){l.$keybindingId==t&&l.keyBinding.setKeyboardHandler(i&&i.handler),e&&e()}))}else this.$keybindingId=null,this.keyBinding.setKeyboardHandler(t),e&&e()},this.getKeyboardHandler=function(){return this.keyBinding.getKeyboardHandler()},this.setSession=function(t){if(this.session!=t){this.curOp&&this.endOperation(),this.curOp={};var e=this.session;if(e){this.session.off("change",this.$onDocumentChange),this.session.off("changeMode",this.$onChangeMode),this.session.off("tokenizerUpdate",this.$onTokenizerUpdate),this.session.off("changeTabSize",this.$onChangeTabSize),this.session.off("changeWrapLimit",this.$onChangeWrapLimit),this.session.off("changeWrapMode",this.$onChangeWrapMode),this.session.off("changeFold",this.$onChangeFold),this.session.off("changeFrontMarker",this.$onChangeFrontMarker),this.session.off("changeBackMarker",this.$onChangeBackMarker),this.session.off("changeBreakpoint",this.$onChangeBreakpoint),this.session.off("changeAnnotation",this.$onChangeAnnotation),this.session.off("changeOverwrite",this.$onCursorChange),this.session.off("changeScrollTop",this.$onScrollTopChange),this.session.off("changeScrollLeft",this.$onScrollLeftChange);var l=this.session.getSelection();l.off("changeCursor",this.$onCursorChange),l.off("changeSelection",this.$onSelectionChange)}this.session=t,t?(this.$onDocumentChange=this.onDocumentChange.bind(this),t.on("change",this.$onDocumentChange),this.renderer.setSession(t),this.$onChangeMode=this.onChangeMode.bind(this),t.on("changeMode",this.$onChangeMode),this.$onTokenizerUpdate=this.onTokenizerUpdate.bind(this),t.on("tokenizerUpdate",this.$onTokenizerUpdate),this.$onChangeTabSize=this.renderer.onChangeTabSize.bind(this.renderer),t.on("changeTabSize",this.$onChangeTabSize),this.$onChangeWrapLimit=this.onChangeWrapLimit.bind(this),t.on("changeWrapLimit",this.$onChangeWrapLimit),this.$onChangeWrapMode=this.onChangeWrapMode.bind(this),t.on("changeWrapMode",this.$onChangeWrapMode),this.$onChangeFold=this.onChangeFold.bind(this),t.on("changeFold",this.$onChangeFold),this.$onChangeFrontMarker=this.onChangeFrontMarker.bind(this),this.session.on("changeFrontMarker",this.$onChangeFrontMarker),this.$onChangeBackMarker=this.onChangeBackMarker.bind(this),this.session.on("changeBackMarker",this.$onChangeBackMarker),this.$onChangeBreakpoint=this.onChangeBreakpoint.bind(this),this.session.on("changeBreakpoint",this.$onChangeBreakpoint),this.$onChangeAnnotation=this.onChangeAnnotation.bind(this),this.session.on("changeAnnotation",this.$onChangeAnnotation),this.$onCursorChange=this.onCursorChange.bind(this),this.session.on("changeOverwrite",this.$onCursorChange),this.$onScrollTopChange=this.onScrollTopChange.bind(this),this.session.on("changeScrollTop",this.$onScrollTopChange),this.$onScrollLeftChange=this.onScrollLeftChange.bind(this),this.session.on("changeScrollLeft",this.$onScrollLeftChange),this.selection=t.getSelection(),this.selection.on("changeCursor",this.$onCursorChange),this.$onSelectionChange=this.onSelectionChange.bind(this),this.selection.on("changeSelection",this.$onSelectionChange),this.onChangeMode(),this.$blockScrolling+=1,this.onCursorChange(),this.$blockScrolling-=1,this.onScrollTopChange(),this.onScrollLeftChange(),this.onSelectionChange(),this.onChangeFrontMarker(),this.onChangeBackMarker(),this.onChangeBreakpoint(),this.onChangeAnnotation(),this.session.getUseWrapMode()&&this.renderer.adjustWrapLimit(),this.renderer.updateFull()):(this.selection=null,this.renderer.setSession(t)),this._signal("changeSession",{session:t,oldSession:e}),this.curOp=null,e&&e._signal("changeEditor",{oldEditor:this}),t&&t._signal("changeEditor",{editor:this})}},this.getSession=function(){return this.session},this.setValue=function(t,e){return this.session.doc.setValue(t),e?1==e?this.navigateFileEnd():-1==e&&this.navigateFileStart():this.selectAll(),t},this.getValue=function(){return this.session.getValue()},this.getSelection=function(){return this.selection},this.resize=function(t){this.renderer.onResize(t)},this.setTheme=function(t,e){this.renderer.setTheme(t,e)},this.getTheme=function(){return this.renderer.getTheme()},this.setStyle=function(t){this.renderer.setStyle(t)},this.unsetStyle=function(t){this.renderer.unsetStyle(t)},this.getFontSize=function(){return this.getOption("fontSize")||n.computedStyle(this.container,"fontSize")},this.setFontSize=function(t){this.setOption("fontSize",t)},this.$highlightBrackets=function(){if(this.session.$bracketHighlight&&(this.session.removeMarker(this.session.$bracketHighlight),this.session.$bracketHighlight=null),!this.$highlightPending){var t=this;this.$highlightPending=!0,setTimeout((function(){t.$highlightPending=!1;var e=t.session;if(e&&e.bgTokenizer){var l=e.findMatchingBracket(t.getCursorPosition());if(l)var i=new Z(l.row,l.column,l.row,l.column+1);else e.$mode.getMatching&&(i=e.$mode.getMatching(t.session));i&&(e.$bracketHighlight=e.addMarker(i,"ace_bracket","text"))}}),50)}},this.$highlightTags=function(){if(!this.$highlightTagPending){var t=this;this.$highlightTagPending=!0,setTimeout((function(){t.$highlightTagPending=!1;var e=t.session;if(e&&e.bgTokenizer){var l=t.getCursorPosition(),i=new y(t.session,l.row,l.column),n=i.getCurrentToken();if(!n||!/\b(?:tag-open|tag-name)/.test(n.type))return e.removeMarker(e.$tagHighlight),void(e.$tagHighlight=null);if(-1==n.type.indexOf("tag-open")||(n=i.stepForward())){var a=n.value,d=0,s=i.stepBackward();if("<"==s.value)do{s=n,(n=i.stepForward())&&n.value===a&&-1!==n.type.indexOf("tag-name")&&("<"===s.value?d++:"=0);else{do{n=s,s=i.stepBackward(),n&&n.value===a&&-1!==n.type.indexOf("tag-name")&&("<"===s.value?d++:"1||(t=!1)),e.$highlightLineMarker&&!t)e.removeMarker(e.$highlightLineMarker.id),e.$highlightLineMarker=null;else if(!e.$highlightLineMarker&&t){var l=new Z(t.row,t.column,t.row,1/0);l.id=e.addMarker(l,"ace_active-line","screenLine"),e.$highlightLineMarker=l}else t&&(e.$highlightLineMarker.start.row=t.row,e.$highlightLineMarker.end.row=t.row,e.$highlightLineMarker.start.column=t.column,e._signal("changeBackMarker"))},this.onSelectionChange=function(t){var e=this.session;if(e.$selectionMarker&&e.removeMarker(e.$selectionMarker),e.$selectionMarker=null,this.selection.isEmpty())this.$updateHighlightActiveLine();else{var l=this.selection.getRange(),i=this.getSelectionStyle();e.$selectionMarker=e.addMarker(l,"ace_selection",i)}var n=this.$highlightSelectedWord&&this.$getSelectionHighLightRegexp();this.session.highlight(n),this._signal("changeSelection")},this.$getSelectionHighLightRegexp=function(){var t=this.session,e=this.getSelectionRange();if(!e.isEmpty()&&!e.isMultiLine()){var l=e.start.column-1,i=e.end.column+1,n=t.getLine(e.start.row),a=n.length,d=n.substring(Math.max(l,0),Math.min(i,a));if(!(l>=0&&/^[\w\d]/.test(d)||i<=a&&/[\w\d]$/.test(d))&&(d=n.substring(e.start.column,e.end.column),/^[\w\d]+$/.test(d)))return this.$search.$assembleRegExp({wholeWord:!0,caseSensitive:!0,needle:d})}},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(t){this.renderer.updateText(),this._emit("changeMode",t)},this.onChangeWrapLimit=function(){this.renderer.updateFull()},this.onChangeWrapMode=function(){this.renderer.onResize(!0)},this.onChangeFold=function(){this.$updateHighlightActiveLine(),this.renderer.updateFull()},this.getSelectedText=function(){return this.session.getTextRange(this.getSelectionRange())},this.getCopyText=function(){var t=this.getSelectedText();return this._signal("copy",t),t},this.onCopy=function(){this.commands.exec("copy",this)},this.onCut=function(){this.commands.exec("cut",this)},this.onPaste=function(t,e){var l={text:t,event:e};this.commands.exec("paste",this,l)},this.$handlePaste=function(t){"string"==typeof t&&(t={text:t}),this._signal("paste",t);var e=t.text;if(!this.inMultiSelectMode||this.inVirtualSelectionMode)this.insert(e);else{var l=e.split(/\r\n|\r|\n/),i=this.selection.rangeList.ranges;if(l.length>i.length||l.length<2||!l[1])return this.commands.exec("insertstring",this,e);for(var n=i.length;n--;){var a=i[n];a.isEmpty()||this.session.remove(a),this.session.insert(a.start,l[n])}}},this.execCommand=function(t,e){return this.commands.exec(t,this,e)},this.insert=function(t,e){var l=this.session,i=l.getMode(),n=this.getCursorPosition();if(this.getBehavioursEnabled()&&!e){var a=i.transformAction(l.getState(n.row),"insertion",this,l,t);a&&(t!==a.text&&(this.session.mergeUndoDeltas=!1,this.$mergeNextCommand=!1),t=a.text)}if("\t"==t&&(t=this.session.getTabString()),this.selection.isEmpty())this.session.getOverwrite()&&((d=new Z.fromPoints(n,n)).end.column+=t.length,this.session.remove(d));else{var d=this.getSelectionRange();n=this.session.remove(d),this.clearSelection()}if("\n"==t||"\r\n"==t){var s=l.getLine(n.row);if(n.column>s.search(/\S|$/)){var c=s.substr(n.column).search(/\S|$/);l.doc.removeInLine(n.row,n.column,n.column+c)}}this.clearSelection();var o=n.column,b=l.getState(n.row),r=(s=l.getLine(n.row),i.checkOutdent(b,s,t));if(l.insert(n,t),a&&a.selection&&(2==a.selection.length?this.selection.setSelectionRange(new Z(n.row,o+a.selection[0],n.row,o+a.selection[1])):this.selection.setSelectionRange(new Z(n.row+a.selection[0],a.selection[1],n.row+a.selection[2],a.selection[3]))),l.getDocument().isNewLine(t)){var m=i.getNextLineIndent(b,s.slice(0,n.column),l.getTabString());l.insert({row:n.row+1,column:0},m)}r&&i.autoOutdent(b,l,n.row)},this.onTextInput=function(t){this.keyBinding.onTextInput(t)},this.onCommandKey=function(t,e,l){this.keyBinding.onCommandKey(t,e,l)},this.setOverwrite=function(t){this.session.setOverwrite(t)},this.getOverwrite=function(){return this.session.getOverwrite()},this.toggleOverwrite=function(){this.session.toggleOverwrite()},this.setScrollSpeed=function(t){this.setOption("scrollSpeed",t)},this.getScrollSpeed=function(){return this.getOption("scrollSpeed")},this.setDragDelay=function(t){this.setOption("dragDelay",t)},this.getDragDelay=function(){return this.getOption("dragDelay")},this.setSelectionStyle=function(t){this.setOption("selectionStyle",t)},this.getSelectionStyle=function(){return this.getOption("selectionStyle")},this.setHighlightActiveLine=function(t){this.setOption("highlightActiveLine",t)},this.getHighlightActiveLine=function(){return this.getOption("highlightActiveLine")},this.setHighlightGutterLine=function(t){this.setOption("highlightGutterLine",t)},this.getHighlightGutterLine=function(){return this.getOption("highlightGutterLine")},this.setHighlightSelectedWord=function(t){this.setOption("highlightSelectedWord",t)},this.getHighlightSelectedWord=function(){return this.$highlightSelectedWord},this.setAnimatedScroll=function(t){this.renderer.setAnimatedScroll(t)},this.getAnimatedScroll=function(){return this.renderer.getAnimatedScroll()},this.setShowInvisibles=function(t){this.renderer.setShowInvisibles(t)},this.getShowInvisibles=function(){return this.renderer.getShowInvisibles()},this.setDisplayIndentGuides=function(t){this.renderer.setDisplayIndentGuides(t)},this.getDisplayIndentGuides=function(){return this.renderer.getDisplayIndentGuides()},this.setShowPrintMargin=function(t){this.renderer.setShowPrintMargin(t)},this.getShowPrintMargin=function(){return this.renderer.getShowPrintMargin()},this.setPrintMarginColumn=function(t){this.renderer.setPrintMarginColumn(t)},this.getPrintMarginColumn=function(){return this.renderer.getPrintMarginColumn()},this.setReadOnly=function(t){this.setOption("readOnly",t)},this.getReadOnly=function(){return this.getOption("readOnly")},this.setBehavioursEnabled=function(t){this.setOption("behavioursEnabled",t)},this.getBehavioursEnabled=function(){return this.getOption("behavioursEnabled")},this.setWrapBehavioursEnabled=function(t){this.setOption("wrapBehavioursEnabled",t)},this.getWrapBehavioursEnabled=function(){return this.getOption("wrapBehavioursEnabled")},this.setShowFoldWidgets=function(t){this.setOption("showFoldWidgets",t)},this.getShowFoldWidgets=function(){return this.getOption("showFoldWidgets")},this.setFadeFoldWidgets=function(t){this.setOption("fadeFoldWidgets",t)},this.getFadeFoldWidgets=function(){return this.getOption("fadeFoldWidgets")},this.remove=function(t){this.selection.isEmpty()&&("left"==t?this.selection.selectLeft():this.selection.selectRight());var e=this.getSelectionRange();if(this.getBehavioursEnabled()){var l=this.session,i=l.getState(e.start.row),n=l.getMode().transformAction(i,"deletion",this,l,e);if(0===e.end.column){var a=l.getTextRange(e);if("\n"==a[a.length-1]){var d=l.getLine(e.end.row);/^\s+$/.test(d)&&(e.end.column=d.length)}}n&&(e=n)}this.session.remove(e),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 t=this.getSelectionRange();t.start.column==t.end.column&&t.start.row==t.end.row&&(t.end.column=0,t.end.row++),this.session.remove(t),this.clearSelection()},this.splitLine=function(){this.selection.isEmpty()||(this.session.remove(this.getSelectionRange()),this.clearSelection());var t=this.getCursorPosition();this.insert("\n"),this.moveCursorToPosition(t)},this.transposeLetters=function(){if(this.selection.isEmpty()){var t=this.getCursorPosition(),e=t.column;if(0!==e){var l,i,n=this.session.getLine(t.row);ee.toLowerCase()?1:0}));for(var i=new Z(0,0,0,0),n=t.first;n<=t.last;n++){var a=e.getLine(n);i.start.row=n,i.end.row=n,i.end.column=a.length,e.replace(i,l[n-t.first])}},this.toggleCommentLines=function(){var t=this.session.getState(this.getCursorPosition().row),e=this.$getSelectedRows();this.session.getMode().toggleCommentLines(t,this.session,e.first,e.last)},this.toggleBlockComment=function(){var t=this.getCursorPosition(),e=this.session.getState(t.row),l=this.getSelectionRange();this.session.getMode().toggleBlockComment(e,this.session,l,t)},this.getNumberAt=function(t,e){var l=/[\-]?[0-9]+(?:\.[0-9]+)?/g;l.lastIndex=0;for(var i=this.session.getLine(t);l.lastIndex=e)return{value:n[0],start:n.index,end:n.index+n[0].length}}return null},this.modifyNumber=function(t){var e=this.selection.getCursor().row,l=this.selection.getCursor().column,i=new Z(e,l-1,e,l),n=this.session.getTextRange(i);if(!isNaN(parseFloat(n))&&isFinite(n)){var a=this.getNumberAt(e,l);if(a){var d=a.value.indexOf(".")>=0?a.start+a.value.indexOf(".")+1:a.end,s=a.start+a.value.length-d,c=parseFloat(a.value);c*=Math.pow(10,s),d!==a.end&&lZ+1)break;Z=g.last}for(b--,s=this.session.$moveLines(m,Z,e?0:t),e&&-1==t&&(r=b+1);r<=b;)d[r].moveBy(s,0),r++;e||(s=0),c+=s}n.fromOrientedRange(n.ranges[0]),n.rangeList.attach(this.session),this.inVirtualSelectionMode=!1}},this.$getSelectedRows=function(t){return t=(t||this.getSelectionRange()).collapseRows(),{first:this.session.getRowFoldStart(t.start.row),last:this.session.getRowFoldEnd(t.end.row)}},this.onCompositionStart=function(t){this.renderer.showComposition(this.getCursorPosition())},this.onCompositionUpdate=function(t){this.renderer.setCompositionText(t)},this.onCompositionEnd=function(){this.renderer.hideComposition()},this.getFirstVisibleRow=function(){return this.renderer.getFirstVisibleRow()},this.getLastVisibleRow=function(){return this.renderer.getLastVisibleRow()},this.isRowVisible=function(t){return t>=this.getFirstVisibleRow()&&t<=this.getLastVisibleRow()},this.isRowFullyVisible=function(t){return t>=this.renderer.getFirstFullyVisibleRow()&&t<=this.renderer.getLastFullyVisibleRow()},this.$getVisibleRowCount=function(){return this.renderer.getScrollBottomRow()-this.renderer.getScrollTopRow()+1},this.$moveByPage=function(t,e){var l=this.renderer,i=this.renderer.layerConfig,n=t*Math.floor(i.height/i.lineHeight);this.$blockScrolling++,!0===e?this.selection.$moveSelection((function(){this.moveCursorBy(n,0)})):!1===e&&(this.selection.moveCursorBy(n,0),this.selection.clearSelection()),this.$blockScrolling--;var a=l.scrollTop;l.scrollBy(0,n*i.lineHeight),null!=e&&l.scrollCursorIntoView(null,.5),l.animateScrolling(a)},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(t){this.renderer.scrollToRow(t)},this.scrollToLine=function(t,e,l,i){this.renderer.scrollToLine(t,e,l,i)},this.centerSelection=function(){var t=this.getSelectionRange(),e={row:Math.floor(t.start.row+(t.end.row-t.start.row)/2),column:Math.floor(t.start.column+(t.end.column-t.start.column)/2)};this.renderer.alignCursor(e,.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(t,e){this.selection.moveCursorTo(t,e)},this.moveCursorToPosition=function(t){this.selection.moveCursorToPosition(t)},this.jumpToMatching=function(t,e){var l=this.getCursorPosition(),i=new y(this.session,l.row,l.column),n=i.getCurrentToken(),a=n||i.stepForward();if(a){var d,s,c=!1,o={},b=l.column-a.start,r={")":"(","(":"(","]":"[","[":"[","{":"{","}":"{"};do{if(a.value.match(/[{}()\[\]]/g)){for(;b=0;--a)this.$tryReplace(l[a],t)&&i++;return this.selection.setSelectionRange(n),this.$blockScrolling-=1,i},this.$tryReplace=function(t,e){var l=this.session.getTextRange(t);return null!==(e=this.$search.replace(l,e))?(t.end=this.session.replace(t,e),t):null},this.getLastSearchOptions=function(){return this.$search.getOptions()},this.find=function(t,e,l){e||(e={}),"string"==typeof t||t instanceof RegExp?e.needle=t:"object"==typeof t&&i.mixin(e,t);var n=this.selection.getRange();null==e.needle&&((t=this.session.getTextRange(n)||this.$search.$options.needle)||(n=this.session.getWordRange(n.start.row,n.start.column),t=this.session.getTextRange(n)),this.$search.set({needle:t})),this.$search.set(e),e.start||this.$search.set({start:n});var a=this.$search.find(this.session);return e.preventScroll?a:a?(this.revealRange(a,l),a):(e.backwards?n.start=n.end:n.end=n.start,void this.selection.setRange(n))},this.findNext=function(t,e){this.find({skipCurrent:!0,backwards:!1},t,e)},this.findPrevious=function(t,e){this.find(t,{skipCurrent:!0,backwards:!0},e)},this.revealRange=function(t,e){this.$blockScrolling+=1,this.session.unfold(t),this.selection.setSelectionRange(t),this.$blockScrolling-=1;var l=this.renderer.scrollTop;this.renderer.scrollSelectionIntoView(t.start,t.end,.5),!1!==e&&this.renderer.animateScrolling(l)},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._signal("destroy",this),this.session&&this.session.destroy()},this.setAutoScrollEditorIntoView=function(t){if(t){var e,l=this,i=!1;this.$scrollAnchor||(this.$scrollAnchor=document.createElement("div"));var n=this.$scrollAnchor;n.style.cssText="position:absolute",this.container.insertBefore(n,this.container.firstChild);var a=this.on("changeSelection",(function(){i=!0})),d=this.renderer.on("beforeRender",(function(){i&&(e=l.renderer.container.getBoundingClientRect())})),s=this.renderer.on("afterRender",(function(){if(i&&e&&(l.isFocused()||l.searchBox&&l.searchBox.isFocused())){var t=l.renderer,a=t.$cursorLayer.$pixelPos,d=t.layerConfig,s=a.top-d.offset;null!=(i=a.top>=0&&s+e.top<0||!(a.topwindow.innerHeight)&&null)&&(n.style.top=s+"px",n.style.left=a.left+"px",n.style.height=d.lineHeight+"px",n.scrollIntoView(i)),i=e=null}}));this.setAutoScrollEditorIntoView=function(t){t||(delete this.setAutoScrollEditorIntoView,this.off("changeSelection",a),this.renderer.off("afterRender",s),this.renderer.off("beforeRender",d))}}},this.$resetCursorStyle=function(){var t=this.$cursorStyle||"ace",e=this.renderer.$cursorLayer;e&&(e.setSmoothBlinking(/smooth/.test(t)),e.isBlinking=!this.$readOnly&&"wide"!=t,n.setCssClass(e.element,"ace_slim-cursors",/slim/.test(t)))}}).call(I.prototype),N.defineOptions(I.prototype,"editor",{selectionStyle:{set:function(t){this.onSelectionChange(),this._signal("changeSelectionStyle",{data:t})},initialValue:"line"},highlightActiveLine:{set:function(){this.$updateHighlightActiveLine()},initialValue:!0},highlightSelectedWord:{set:function(t){this.$onSelectionChange()},initialValue:!0},readOnly:{set:function(t){this.$resetCursorStyle()},initialValue:!1},cursorStyle:{set:function(t){this.$resetCursorStyle()},values:["ace","slim","smooth","wide"],initialValue:"ace"},mergeUndoDeltas:{values:[!1,!0,"always"],initialValue:!0},behavioursEnabled:{initialValue:!0},wrapBehavioursEnabled:{initialValue:!0},autoScrollEditorIntoView:{set:function(t){this.setAutoScrollEditorIntoView(t)}},keyboardHandler:{set:function(t){this.setKeyboardHandler(t)},get:function(){return this.keybindingId},handlesSet:!0},hScrollBarAlwaysVisible:"renderer",vScrollBarAlwaysVisible:"renderer",highlightGutterLine:"renderer",animatedScroll:"renderer",showInvisibles:"renderer",showPrintMargin:"renderer",printMarginColumn:"renderer",printMargin:"renderer",fadeFoldWidgets:"renderer",showFoldWidgets:"renderer",showLineNumbers:"renderer",showGutter:"renderer",displayIndentGuides:"renderer",fontSize:"renderer",fontFamily:"renderer",maxLines:"renderer",minLines:"renderer",scrollPastEnd:"renderer",fixedWidthGutter:"renderer",theme:"renderer",scrollSpeed:"$mouseHandler",dragDelay:"$mouseHandler",dragEnabled:"$mouseHandler",focusTimout:"$mouseHandler",tooltipFollowsMouse:"$mouseHandler",firstLineNumber:"session",overwrite:"session",newLineMode:"session",useWorker:"session",useSoftTabs:"session",tabSize:"session",wrap:"session",indentedSoftWrap:"session",foldStyle:"session",mode:"session"}),e.Editor=I})),ace.define("ace/undomanager",["require","exports","module"],(function(t,e,l){"use strict";var i=function(){this.reset()};(function(){function t(t){return{action:t.action,start:t.start,end:t.end,lines:1==t.lines.length?null:t.lines,text:1==t.lines.length?t.lines[0]:null}}function e(t){return{action:t.action,start:t.start,end:t.end,lines:t.lines||[t.text]}}function l(t,e){for(var l=new Array(t.length),i=0;i0},this.hasRedo=function(){return this.$redoStack.length>0},this.markClean=function(){this.dirtyCounter=0},this.isClean=function(){return 0===this.dirtyCounter},this.$serializeDeltas=function(e){return l(e,t)},this.$deserializeDeltas=function(t){return l(t,e)}}).call(i.prototype),e.UndoManager=i})),ace.define("ace/layer/gutter",["require","exports","module","ace/lib/dom","ace/lib/oop","ace/lib/lang","ace/lib/event_emitter"],(function(t,e,l){"use strict";var i=t("../lib/dom"),n=t("../lib/oop"),a=t("../lib/lang"),d=t("../lib/event_emitter").EventEmitter,s=function(t){this.element=i.createElement("div"),this.element.className="ace_layer ace_gutter-layer",t.appendChild(this.element),this.setShowFoldWidgets(this.$showFoldWidgets),this.gutterWidth=0,this.$annotations=[],this.$updateAnnotations=this.$updateAnnotations.bind(this),this.$cells=[]};(function(){n.implement(this,d),this.setSession=function(t){this.session&&this.session.removeEventListener("change",this.$updateAnnotations),this.session=t,t&&t.on("change",this.$updateAnnotations)},this.addGutterDecoration=function(t,e){window.console&&console.warn&&console.warn("deprecated use session.addGutterDecoration"),this.session.addGutterDecoration(t,e)},this.removeGutterDecoration=function(t,e){window.console&&console.warn&&console.warn("deprecated use session.removeGutterDecoration"),this.session.removeGutterDecoration(t,e)},this.setAnnotations=function(t){this.$annotations=[];for(var e=0;ed&&(W=a.end.row+1,d=(a=e.getNextFoldLine(W,a))?a.start.row:1/0),W>n){for(;this.$cells.length>g+1;)Z=this.$cells.pop(),this.element.removeChild(Z.element);break}(Z=this.$cells[++g])||((Z={element:null,textNode:null,foldWidget:null}).element=i.createElement("div"),Z.textNode=document.createTextNode(""),Z.element.appendChild(Z.textNode),this.element.appendChild(Z.element),this.$cells[g]=Z);var h="ace_gutter-cell ";if(c[W]&&(h+=c[W]),o[W]&&(h+=o[W]),this.$annotations[W]&&(h+=this.$annotations[W].className),Z.element.className!=h&&(Z.element.className=h),(y=e.getRowLength(W)*t.lineHeight+"px")!=Z.element.style.height&&(Z.element.style.height=y),s){var N=s[W];null==N&&(N=s[W]=e.getFoldWidget(W))}if(N){Z.foldWidget||(Z.foldWidget=i.createElement("span"),Z.element.appendChild(Z.foldWidget)),h="ace_fold-widget ace_"+N,"start"==N&&W==d&&Wl.right-e.right?"foldWidgets":void 0}}).call(s.prototype),e.Gutter=s})),ace.define("ace/layer/marker",["require","exports","module","ace/range","ace/lib/dom"],(function(t,e,l){"use strict";var i=t("../range").Range,n=t("../lib/dom"),a=function(t){this.element=n.createElement("div"),this.element.className="ace_layer ace_marker-layer",t.appendChild(this.element)};(function(){this.$padding=0,this.setPadding=function(t){this.$padding=t},this.setSession=function(t){this.session=t},this.setMarkers=function(t){this.markers=t},this.update=function(t){if(t=t||this.config){this.config=t;var e=[];for(var l in this.markers){var i=this.markers[l];if(i.range){var n=i.range.clipRows(t.firstRow,t.lastRow);if(!n.isEmpty())if(n=n.toScreenRange(this.session),i.renderer){var a=this.$getTop(n.start.row,t),d=this.$padding+n.start.column*t.characterWidth;i.renderer(e,n,d,a,t)}else"fullLine"==i.type?this.drawFullLineMarker(e,n,i.clazz,t):"screenLine"==i.type?this.drawScreenLineMarker(e,n,i.clazz,t):n.isMultiLine()?"text"==i.type?this.drawTextMarker(e,n,i.clazz,t):this.drawMultiLineMarker(e,n,i.clazz,t):this.drawSingleLineMarker(e,n,i.clazz+" ace_start ace_br15",t)}else i.update(e,this,this.session,t)}this.element.innerHTML=e.join("")}},this.$getTop=function(t,e){return(t-e.firstRowScreen)*e.lineHeight},this.drawTextMarker=function(t,e,l,n,a){for(var d=this.session,s=e.start.row,c=e.end.row,o=s,b=0,r=0,m=d.getScreenLastRowColumn(o),Z=new i(o,e.start.column,o,r);o<=c;o++)Z.start.row=Z.end.row=o,Z.start.column=o==s?e.start.column:d.getRowWrapIndent(o),Z.end.column=m,b=r,r=m,m=o+1m?4:0)|(o==c?8:0)),n,o==c?0:1,a)},this.drawMultiLineMarker=function(t,e,l,i,n){var a=this.$padding,d=i.lineHeight,s=this.$getTop(e.start.row,i),c=a+e.start.column*i.characterWidth;n=n||"",t.push("
"),s=this.$getTop(e.end.row,i);var o=e.end.column*i.characterWidth;if(t.push("
"),!((d=(e.end.row-e.start.row-1)*i.lineHeight)<=0)){s=this.$getTop(e.start.row+1,i);var b=(e.start.column?1:0)|(e.end.column?0:8);t.push("
")}},this.drawSingleLineMarker=function(t,e,l,i,n,a){var d=i.lineHeight,s=(e.end.column+(n||0)-e.start.column)*i.characterWidth,c=this.$getTop(e.start.row,i),o=this.$padding+e.start.column*i.characterWidth;t.push("
")},this.drawFullLineMarker=function(t,e,l,i,n){var a=this.$getTop(e.start.row,i),d=i.lineHeight;e.start.row!=e.end.row&&(d+=this.$getTop(e.end.row,i)-a),t.push("
")},this.drawScreenLineMarker=function(t,e,l,i,n){var a=this.$getTop(e.start.row,i),d=i.lineHeight;t.push("
")}}).call(a.prototype),e.Marker=a})),ace.define("ace/layer/text",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/lang","ace/lib/useragent","ace/lib/event_emitter"],(function(t,e,l){"use strict";var i=t("../lib/oop"),n=t("../lib/dom"),a=t("../lib/lang"),d=(t("../lib/useragent"),t("../lib/event_emitter").EventEmitter),s=function(t){this.element=n.createElement("div"),this.element.className="ace_layer ace_text-layer",t.appendChild(this.element),this.$updateEolChar=this.$updateEolChar.bind(this)};(function(){i.implement(this,d),this.EOF_CHAR="¶",this.EOL_CHAR_LF="¬",this.EOL_CHAR_CRLF="¤",this.EOL_CHAR=this.EOL_CHAR_LF,this.TAB_CHAR="—",this.SPACE_CHAR="·",this.$padding=0,this.$updateEolChar=function(){var t="\n"==this.session.doc.getNewLineCharacter()?this.EOL_CHAR_LF:this.EOL_CHAR_CRLF;if(this.EOL_CHAR!=t)return this.EOL_CHAR=t,!0},this.setPadding=function(t){this.$padding=t,this.element.style.padding="0 "+t+"px"},this.getLineHeight=function(){return this.$fontMetrics.$characterSize.height||0},this.getCharacterWidth=function(){return this.$fontMetrics.$characterSize.width||0},this.$setFontMetrics=function(t){this.$fontMetrics=t,this.$fontMetrics.on("changeCharacterSize",function(t){this._signal("changeCharacterSize",t)}.bind(this)),this.$pollSizeChanges()},this.checkForSizeChanges=function(){this.$fontMetrics.checkForSizeChanges()},this.$pollSizeChanges=function(){return this.$pollSizeChangesTimer=this.$fontMetrics.$pollSizeChanges()},this.setSession=function(t){this.session=t,t&&this.$computeTabString()},this.showInvisibles=!1,this.setShowInvisibles=function(t){return this.showInvisibles!=t&&(this.showInvisibles=t,this.$computeTabString(),!0)},this.displayIndentGuides=!0,this.setDisplayIndentGuides=function(t){return this.displayIndentGuides!=t&&(this.displayIndentGuides=t,this.$computeTabString(),!0)},this.$tabStrings=[],this.onChangeTabSize=this.$computeTabString=function(){var t=this.session.getTabSize();this.tabSize=t;for(var e=this.$tabStrings=[0],l=1;l"+a.stringRepeat(this.TAB_CHAR,l)+""):e.push(a.stringRepeat(" ",l));if(this.displayIndentGuides){this.$indentGuideRe=/\s\S| \t|\t |\s$/;var i="ace_indent-guide",n="",d="";if(this.showInvisibles){i+=" ace_invisible",n=" ace_invisible_space",d=" ace_invisible_tab";var s=a.stringRepeat(this.SPACE_CHAR,this.tabSize),c=a.stringRepeat(this.TAB_CHAR,this.tabSize)}else c=s=a.stringRepeat(" ",this.tabSize);this.$tabStrings[" "]=""+s+"",this.$tabStrings["\t"]=""+c+""}},this.updateLines=function(t,e,l){this.config.lastRow==t.lastRow&&this.config.firstRow==t.firstRow||this.scrollLines(t),this.config=t;for(var i=Math.max(e,t.firstRow),n=Math.min(l,t.lastRow),a=this.element.childNodes,d=0,s=t.firstRow;so&&(s=c.end.row+1,o=(c=this.session.getNextFoldLine(s,c))?c.start.row:1/0),!(s>n);){var b=a[d++];if(b){var r=[];this.$renderLine(r,s,!this.$useLineGroups(),s==o&&c),b.style.height=t.lineHeight*this.session.getRowLength(s)+"px",b.innerHTML=r.join("")}s++}},this.scrollLines=function(t){var e=this.config;if(this.config=t,!e||e.lastRow0;i--)l.removeChild(l.firstChild);if(e.lastRow>t.lastRow)for(i=this.session.getFoldedRowCount(t.lastRow+1,e.lastRow);i>0;i--)l.removeChild(l.lastChild);if(t.firstRowe.lastRow&&(n=this.$renderLinesFragment(t,e.lastRow+1,t.lastRow),l.appendChild(n))},this.$renderLinesFragment=function(t,e,l){for(var i=this.element.ownerDocument.createDocumentFragment(),a=e,d=this.session.getNextFoldLine(a),s=d?d.start.row:1/0;a>s&&(a=d.end.row+1,s=(d=this.session.getNextFoldLine(a,d))?d.start.row:1/0),!(a>l);){var c=n.createElement("div"),o=[];if(this.$renderLine(o,a,!1,a==s&&d),c.innerHTML=o.join(""),this.$useLineGroups())c.className="ace_line_group",i.appendChild(c),c.style.height=t.lineHeight*this.session.getRowLength(a)+"px";else for(;c.firstChild;)i.appendChild(c.firstChild);a++}return i},this.update=function(t){this.config=t;for(var e=[],l=t.firstRow,i=t.lastRow,n=l,a=this.session.getNextFoldLine(n),d=a?a.start.row:1/0;n>d&&(n=a.end.row+1,d=(a=this.session.getNextFoldLine(n,a))?a.start.row:1/0),!(n>i);)this.$useLineGroups()&&e.push("
"),this.$renderLine(e,n,!1,n==d&&a),this.$useLineGroups()&&e.push("
"),n++;this.element.innerHTML=e.join("")},this.$textToken={text:!0,rparen:!0,lparen:!0},this.$renderToken=function(t,e,l,i){var n=this,d=i.replace(/\t|&|<|>|( +)|([\x00-\x1f\x80-\xa0\xad\u1680\u180E\u2000-\u200f\u2028\u2029\u202F\u205F\u3000\uFEFF\uFFF9-\uFFFC])|[\u1100-\u115F\u11A3-\u11A7\u11FA-\u11FF\u2329-\u232A\u2E80-\u2E99\u2E9B-\u2EF3\u2F00-\u2FD5\u2FF0-\u2FFB\u3000-\u303E\u3041-\u3096\u3099-\u30FF\u3105-\u312D\u3131-\u318E\u3190-\u31BA\u31C0-\u31E3\u31F0-\u321E\u3220-\u3247\u3250-\u32FE\u3300-\u4DBF\u4E00-\uA48C\uA490-\uA4C6\uA960-\uA97C\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFAFF\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE66\uFE68-\uFE6B\uFF01-\uFF60\uFFE0-\uFFE6]/g,(function(t,l,i,d,s){if(l)return n.showInvisibles?""+a.stringRepeat(n.SPACE_CHAR,t.length)+"":t;if("&"==t)return"&";if("<"==t)return"<";if(">"==t)return">";if("\t"==t){var c=n.session.getScreenTabSize(e+d);return e+=c-1,n.$tabStrings[c]}if(" "==t){var o=n.showInvisibles?"ace_cjk ace_invisible ace_invisible_space":"ace_cjk",b=n.showInvisibles?n.SPACE_CHAR:"";return e+=1,""+b+""}return i?""+n.SPACE_CHAR+"":(e+=1,""+t+"")}));if(this.$textToken[l.type])t.push(d);else{var s="ace_"+l.type.replace(/\./g," ace_"),c="";"fold"==l.type&&(c=" style='width:"+l.value.length*this.config.characterWidth+"px;' "),t.push("",d,"")}return e+i.length},this.renderIndentGuide=function(t,e,l){var i=e.search(this.$indentGuideRe);return i<=0||i>=l?e:" "==e[0]?(i-=i%this.tabSize,t.push(a.stringRepeat(this.$tabStrings[" "],i/this.tabSize)),e.substr(i)):"\t"==e[0]?(t.push(a.stringRepeat(this.$tabStrings["\t"],i)),e.substr(i)):e},this.$renderWrappedLine=function(t,e,l,i){for(var n=0,d=0,s=l[0],c=0,o=0;o=s;)c=this.$renderToken(t,c,b,r.substring(0,s-n)),r=r.substring(s-n),n=s,i||t.push("","
"),t.push(a.stringRepeat(" ",l.indent)),c=0,s=l[++d]||Number.MAX_VALUE;0!=r.length&&(n+=r.length,c=this.$renderToken(t,c,b,r))}}},this.$renderSimpleLine=function(t,e){var l=0,i=e[0],n=i.value;this.displayIndentGuides&&(n=this.renderIndentGuide(t,n)),n&&(l=this.$renderToken(t,l,i,n));for(var a=1;a"),n.length){var a=this.session.getRowSplitData(e);a&&a.length?this.$renderWrappedLine(t,n,a,l):this.$renderSimpleLine(t,n)}this.showInvisibles&&(i&&(e=i.end.row),t.push("",e==this.session.getLength()-1?this.EOF_CHAR:this.EOL_CHAR,"")),l||t.push("
")},this.$getFoldLineTokens=function(t,e){var l=this.session,i=[],n=l.getTokens(t);return e.walk((function(t,e,a,d,s){null!=t?i.push({type:"fold",value:t}):(s&&(n=l.getTokens(e)),n.length&&function(t,e,l){for(var n=0,a=0;a+t[n].value.lengthl-e&&(d=d.substring(0,l-e)),i.push({type:t[n].type,value:d}),a=e+d.length,n+=1);al?i.push({type:t[n].type,value:d.substring(0,l-a)}):i.push(t[n]),a+=d.length,n+=1}}(n,d,a))}),e.end.row,this.session.getLine(e.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(s.prototype),e.Text=s})),ace.define("ace/layer/cursor",["require","exports","module","ace/lib/dom"],(function(t,e,l){"use strict";var i,n=t("../lib/dom"),a=function(t){this.element=n.createElement("div"),this.element.className="ace_layer ace_cursor-layer",t.appendChild(this.element),void 0===i&&(i=!("opacity"in this.element.style)),this.isVisible=!1,this.isBlinking=!0,this.blinkInterval=1e3,this.smoothBlinking=!1,this.cursors=[],this.cursor=this.addCursor(),n.addCssClass(this.element,"ace_hidden-cursors"),this.$updateCursors=(i?this.$updateVisibility:this.$updateOpacity).bind(this)};(function(){this.$updateVisibility=function(t){for(var e=this.cursors,l=e.length;l--;)e[l].style.visibility=t?"":"hidden"},this.$updateOpacity=function(t){for(var e=this.cursors,l=e.length;l--;)e[l].style.opacity=t?"":"0"},this.$padding=0,this.setPadding=function(t){this.$padding=t},this.setSession=function(t){this.session=t},this.setBlinking=function(t){t!=this.isBlinking&&(this.isBlinking=t,this.restartTimer())},this.setBlinkInterval=function(t){t!=this.blinkInterval&&(this.blinkInterval=t,this.restartTimer())},this.setSmoothBlinking=function(t){t==this.smoothBlinking||i||(this.smoothBlinking=t,n.setCssClass(this.element,"ace_smooth-blinking",t),this.$updateCursors(!0),this.$updateCursors=this.$updateOpacity.bind(this),this.restartTimer())},this.addCursor=function(){var t=n.createElement("div");return t.className="ace_cursor",this.element.appendChild(t),this.cursors.push(t),t},this.removeCursor=function(){if(this.cursors.length>1){var t=this.cursors.pop();return t.parentNode.removeChild(t),t}},this.hideCursor=function(){this.isVisible=!1,n.addCssClass(this.element,"ace_hidden-cursors"),this.restartTimer()},this.showCursor=function(){this.isVisible=!0,n.removeCssClass(this.element,"ace_hidden-cursors"),this.restartTimer()},this.restartTimer=function(){var t=this.$updateCursors;if(clearInterval(this.intervalId),clearTimeout(this.timeoutId),this.smoothBlinking&&n.removeCssClass(this.element,"ace_smooth-blinking"),t(!0),this.isBlinking&&this.blinkInterval&&this.isVisible){this.smoothBlinking&&setTimeout(function(){n.addCssClass(this.element,"ace_smooth-blinking")}.bind(this));var e=function(){this.timeoutId=setTimeout((function(){t(!1)}),.6*this.blinkInterval)}.bind(this);this.intervalId=setInterval((function(){t(!0),e()}),this.blinkInterval),e()}},this.getPixelPosition=function(t,e){if(!this.config||!this.session)return{left:0,top:0};t||(t=this.session.selection.getCursor());var l=this.session.documentToScreenPosition(t);return{left:this.$padding+l.column*this.config.characterWidth,top:(l.row-(e?this.config.firstRowScreen:0))*this.config.lineHeight}},this.update=function(t){this.config=t;var e=this.session.$selectionMarkers,l=0,i=0;void 0!==e&&0!==e.length||(e=[{cursor:null}]),l=0;for(var n=e.length;lt.height+t.offset||a.top<0)&&l>1)){var d=(this.cursors[i++]||this.addCursor()).style;this.drawCursor?this.drawCursor(d,a,t,e[l],this.session):(d.left=a.left+"px",d.top=a.top+"px",d.width=t.characterWidth+"px",d.height=t.lineHeight+"px")}}for(;this.cursors.length>i;)this.removeCursor();var s=this.session.getOverwrite();this.$setOverwrite(s),this.$pixelPos=a,this.restartTimer()},this.drawCursor=null,this.$setOverwrite=function(t){t!=this.overwrite&&(this.overwrite=t,t?n.addCssClass(this.element,"ace_overwrite-cursors"):n.removeCssClass(this.element,"ace_overwrite-cursors"))},this.destroy=function(){clearInterval(this.intervalId),clearTimeout(this.timeoutId)}}).call(a.prototype),e.Cursor=a})),ace.define("ace/scrollbar",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/event","ace/lib/event_emitter"],(function(t,e,l){"use strict";var i=t("./lib/oop"),n=t("./lib/dom"),a=t("./lib/event"),d=t("./lib/event_emitter").EventEmitter,s=function(t){this.element=n.createElement("div"),this.element.className="ace_scrollbar ace_scrollbar"+this.classSuffix,this.inner=n.createElement("div"),this.inner.className="ace_scrollbar-inner",this.element.appendChild(this.inner),t.appendChild(this.element),this.setVisible(!1),this.skipEvent=!1,a.addListener(this.element,"scroll",this.onScroll.bind(this)),a.addListener(this.element,"mousedown",a.preventDefault)};(function(){i.implement(this,d),this.setVisible=function(t){this.element.style.display=t?"":"none",this.isVisible=t}}).call(s.prototype);var c=function(t,e){s.call(this,t),this.scrollTop=0,e.$scrollbarWidth=this.width=n.scrollbarWidth(t.ownerDocument),this.inner.style.width=this.element.style.width=(this.width||15)+5+"px"};i.inherits(c,s),function(){this.classSuffix="-v",this.onScroll=function(){this.skipEvent||(this.scrollTop=this.element.scrollTop,this._emit("scroll",{data:this.scrollTop})),this.skipEvent=!1},this.getWidth=function(){return this.isVisible?this.width:0},this.setHeight=function(t){this.element.style.height=t+"px"},this.setInnerHeight=function(t){this.inner.style.height=t+"px"},this.setScrollHeight=function(t){this.inner.style.height=t+"px"},this.setScrollTop=function(t){this.scrollTop!=t&&(this.skipEvent=!0,this.scrollTop=this.element.scrollTop=t)}}.call(c.prototype);var o=function(t,e){s.call(this,t),this.scrollLeft=0,this.height=e.$scrollbarWidth,this.inner.style.height=this.element.style.height=(this.height||15)+5+"px"};i.inherits(o,s),function(){this.classSuffix="-h",this.onScroll=function(){this.skipEvent||(this.scrollLeft=this.element.scrollLeft,this._emit("scroll",{data:this.scrollLeft})),this.skipEvent=!1},this.getHeight=function(){return this.isVisible?this.height:0},this.setWidth=function(t){this.element.style.width=t+"px"},this.setInnerWidth=function(t){this.inner.style.width=t+"px"},this.setScrollWidth=function(t){this.inner.style.width=t+"px"},this.setScrollLeft=function(t){this.scrollLeft!=t&&(this.skipEvent=!0,this.scrollLeft=this.element.scrollLeft=t)}}.call(o.prototype),e.ScrollBar=c,e.ScrollBarV=c,e.ScrollBarH=o,e.VScrollBar=c,e.HScrollBar=o})),ace.define("ace/renderloop",["require","exports","module","ace/lib/event"],(function(t,e,l){"use strict";var i=t("./lib/event"),n=function(t,e){this.onRender=t,this.pending=!1,this.changes=0,this.window=e||window};(function(){this.schedule=function(t){if(this.changes=this.changes|t,!this.pending&&this.changes){this.pending=!0;var e=this;i.nextFrame((function(){var t;for(e.pending=!1;t=e.changes;)e.changes=0,e.onRender(t)}),this.window)}}}).call(n.prototype),e.RenderLoop=n})),ace.define("ace/layer/font_metrics",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/lang","ace/lib/useragent","ace/lib/event_emitter"],(function(t,e,l){var i=t("../lib/oop"),n=t("../lib/dom"),a=t("../lib/lang"),d=t("../lib/useragent"),s=t("../lib/event_emitter").EventEmitter,c=0,o=e.FontMetrics=function(t){this.el=n.createElement("div"),this.$setMeasureNodeStyles(this.el.style,!0),this.$main=n.createElement("div"),this.$setMeasureNodeStyles(this.$main.style),this.$measureNode=n.createElement("div"),this.$setMeasureNodeStyles(this.$measureNode.style),this.el.appendChild(this.$main),this.el.appendChild(this.$measureNode),t.appendChild(this.el),c||this.$testFractionalRect(),this.$measureNode.innerHTML=a.stringRepeat("X",c),this.$characterSize={width:0,height:0},this.checkForSizeChanges()};(function(){i.implement(this,s),this.$characterSize={width:0,height:0},this.$testFractionalRect=function(){var t=n.createElement("div");this.$setMeasureNodeStyles(t.style),t.style.width="0.2px",document.documentElement.appendChild(t);var e=t.getBoundingClientRect().width;c=e>0&&e<1?50:100,t.parentNode.removeChild(t)},this.$setMeasureNodeStyles=function(t,e){t.width=t.height="auto",t.left=t.top="0px",t.visibility="hidden",t.position="absolute",t.whiteSpace="pre",d.isIE<8?t["font-family"]="inherit":t.font="inherit",t.overflow=e?"hidden":"visible"},this.checkForSizeChanges=function(){var t=this.$measureSizes();if(t&&(this.$characterSize.width!==t.width||this.$characterSize.height!==t.height)){this.$measureNode.style.fontWeight="bold";var e=this.$measureSizes();this.$measureNode.style.fontWeight="",this.$characterSize=t,this.charSizes=Object.create(null),this.allowBoldFonts=e&&e.width===t.width&&e.height===t.height,this._emit("changeCharacterSize",{data:t})}},this.$pollSizeChanges=function(){if(this.$pollSizeChangesTimer)return this.$pollSizeChangesTimer;var t=this;return this.$pollSizeChangesTimer=setInterval((function(){t.checkForSizeChanges()}),500)},this.setPolling=function(t){t?this.$pollSizeChanges():this.$pollSizeChangesTimer&&(clearInterval(this.$pollSizeChangesTimer),this.$pollSizeChangesTimer=0)},this.$measureSizes=function(){if(50===c){var t=null;try{t=this.$measureNode.getBoundingClientRect()}catch(e){t={width:0,height:0}}var e={height:t.height,width:t.width/c}}else e={height:this.$measureNode.clientHeight,width:this.$measureNode.clientWidth/c};return 0===e.width||0===e.height?null:e},this.$measureCharWidth=function(t){return this.$main.innerHTML=a.stringRepeat(t,c),this.$main.getBoundingClientRect().width/c},this.getCharacterWidth=function(t){var e=this.charSizes[t];return void 0===e&&(e=this.charSizes[t]=this.$measureCharWidth(t)/this.$characterSize.width),e},this.destroy=function(){clearInterval(this.$pollSizeChangesTimer),this.el&&this.el.parentNode&&this.el.parentNode.removeChild(this.el)}}).call(o.prototype)})),ace.define("ace/virtual_renderer",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/config","ace/lib/useragent","ace/layer/gutter","ace/layer/marker","ace/layer/text","ace/layer/cursor","ace/scrollbar","ace/scrollbar","ace/renderloop","ace/layer/font_metrics","ace/lib/event_emitter"],(function(t,e,l){"use strict";var i=t("./lib/oop"),n=t("./lib/dom"),a=t("./config"),d=t("./lib/useragent"),s=t("./layer/gutter").Gutter,c=t("./layer/marker").Marker,o=t("./layer/text").Text,b=t("./layer/cursor").Cursor,r=t("./scrollbar").HScrollBar,m=t("./scrollbar").VScrollBar,Z=t("./renderloop").RenderLoop,g=t("./layer/font_metrics").FontMetrics,W=t("./lib/event_emitter").EventEmitter;n.importCssString('.ace_editor {\tposition: relative;\toverflow: hidden;\tfont: 12px/normal \'Monaco\', \'Menlo\', \'Ubuntu Mono\', \'Consolas\', \'source-code-pro\', monospace;\tdirection: ltr;\t}\t.ace_scroller {\tposition: absolute;\toverflow: hidden;\ttop: 0;\tbottom: 0;\tbackground-color: inherit;\t-ms-user-select: none;\t-moz-user-select: none;\t-webkit-user-select: none;\tuser-select: none;\tcursor: text;\t}\t.ace_content {\tposition: absolute;\t-moz-box-sizing: border-box;\t-webkit-box-sizing: border-box;\tbox-sizing: border-box;\tmin-width: 100%;\t}\t.ace_dragging .ace_scroller:before{\tposition: absolute;\ttop: 0;\tleft: 0;\tright: 0;\tbottom: 0;\tcontent: \'\';\tbackground: rgba(250, 250, 250, 0.01);\tz-index: 1000;\t}\t.ace_dragging.ace_dark .ace_scroller:before{\tbackground: rgba(0, 0, 0, 0.01);\t}\t.ace_selecting, .ace_selecting * {\tcursor: text !important;\t}\t.ace_gutter {\tposition: absolute;\toverflow : hidden;\twidth: auto;\ttop: 0;\tbottom: 0;\tleft: 0;\tcursor: default;\tz-index: 4;\t-ms-user-select: none;\t-moz-user-select: none;\t-webkit-user-select: none;\tuser-select: none;\t}\t.ace_gutter-active-line {\tposition: absolute;\tleft: 0;\tright: 0;\t}\t.ace_scroller.ace_scroll-left {\tbox-shadow: 17px 0 16px -16px rgba(0, 0, 0, 0.4) inset;\t}\t.ace_gutter-cell {\tpadding-left: 19px;\tpadding-right: 6px;\tbackground-repeat: no-repeat;\t}\t.ace_gutter-cell.ace_error {\tbackground-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAABOFBMVEX/////////QRswFAb/Ui4wFAYwFAYwFAaWGAfDRymzOSH/PxswFAb/SiUwFAYwFAbUPRvjQiDllog5HhHdRybsTi3/Tyv9Tir+Syj/UC3////XurebMBIwFAb/RSHbPx/gUzfdwL3kzMivKBAwFAbbvbnhPx66NhowFAYwFAaZJg8wFAaxKBDZurf/RB6mMxb/SCMwFAYwFAbxQB3+RB4wFAb/Qhy4Oh+4QifbNRcwFAYwFAYwFAb/QRzdNhgwFAYwFAbav7v/Uy7oaE68MBK5LxLewr/r2NXewLswFAaxJw4wFAbkPRy2PyYwFAaxKhLm1tMwFAazPiQwFAaUGAb/QBrfOx3bvrv/VC/maE4wFAbRPBq6MRO8Qynew8Dp2tjfwb0wFAbx6eju5+by6uns4uH9/f36+vr/GkHjAAAAYnRSTlMAGt+64rnWu/bo8eAA4InH3+DwoN7j4eLi4xP99Nfg4+b+/u9B/eDs1MD1mO7+4PHg2MXa347g7vDizMLN4eG+Pv7i5evs/v79yu7S3/DV7/498Yv24eH+4ufQ3Ozu/v7+y13sRqwAAADLSURBVHjaZc/XDsFgGIBhtDrshlitmk2IrbHFqL2pvXf/+78DPokj7+Fz9qpU/9UXJIlhmPaTaQ6QPaz0mm+5gwkgovcV6GZzd5JtCQwgsxoHOvJO15kleRLAnMgHFIESUEPmawB9ngmelTtipwwfASilxOLyiV5UVUyVAfbG0cCPHig+GBkzAENHS0AstVF6bacZIOzgLmxsHbt2OecNgJC83JERmePUYq8ARGkJx6XtFsdddBQgZE2nPR6CICZhawjA4Fb/chv+399kfR+MMMDGOQAAAABJRU5ErkJggg==");\tbackground-repeat: no-repeat;\tbackground-position: 2px center;\t}\t.ace_gutter-cell.ace_warning {\tbackground-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAmVBMVEX///8AAAD///8AAAAAAABPSzb/5sAAAAB/blH/73z/ulkAAAAAAAD85pkAAAAAAAACAgP/vGz/rkDerGbGrV7/pkQICAf////e0IsAAAD/oED/qTvhrnUAAAD/yHD/njcAAADuv2r/nz//oTj/p064oGf/zHAAAAA9Nir/tFIAAAD/tlTiuWf/tkIAAACynXEAAAAAAAAtIRW7zBpBAAAAM3RSTlMAABR1m7RXO8Ln31Z36zT+neXe5OzooRDfn+TZ4p3h2hTf4t3k3ucyrN1K5+Xaks52Sfs9CXgrAAAAjklEQVR42o3PbQ+CIBQFYEwboPhSYgoYunIqqLn6/z8uYdH8Vmdnu9vz4WwXgN/xTPRD2+sgOcZjsge/whXZgUaYYvT8QnuJaUrjrHUQreGczuEafQCO/SJTufTbroWsPgsllVhq3wJEk2jUSzX3CUEDJC84707djRc5MTAQxoLgupWRwW6UB5fS++NV8AbOZgnsC7BpEAAAAABJRU5ErkJggg==");\tbackground-position: 2px center;\t}\t.ace_gutter-cell.ace_info {\tbackground-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAAAAAA6mKC9AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAAJ0Uk5TAAB2k804AAAAPklEQVQY02NgIB68QuO3tiLznjAwpKTgNyDbMegwisCHZUETUZV0ZqOquBpXj2rtnpSJT1AEnnRmL2OgGgAAIKkRQap2htgAAAAASUVORK5CYII=");\tbackground-position: 2px center;\t}\t.ace_dark .ace_gutter-cell.ace_info {\tbackground-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQBAMAAADt3eJSAAAAJFBMVEUAAAChoaGAgIAqKiq+vr6tra1ZWVmUlJSbm5s8PDxubm56enrdgzg3AAAAAXRSTlMAQObYZgAAAClJREFUeNpjYMAPdsMYHegyJZFQBlsUlMFVCWUYKkAZMxZAGdxlDMQBAG+TBP4B6RyJAAAAAElFTkSuQmCC");\t}\t.ace_scrollbar {\tposition: absolute;\tright: 0;\tbottom: 0;\tz-index: 6;\t}\t.ace_scrollbar-inner {\tposition: absolute;\tcursor: text;\tleft: 0;\ttop: 0;\t}\t.ace_scrollbar-v{\toverflow-x: hidden;\toverflow-y: scroll;\ttop: 0;\t}\t.ace_scrollbar-h {\toverflow-x: scroll;\toverflow-y: hidden;\tleft: 0;\t}\t.ace_print-margin {\tposition: absolute;\theight: 100%;\t}\t.ace_text-input {\tposition: absolute;\tz-index: 0;\twidth: 0.5em;\theight: 1em;\topacity: 0;\tbackground: transparent;\t-moz-appearance: none;\tappearance: none;\tborder: none;\tresize: none;\toutline: none;\toverflow: hidden;\tfont: inherit;\tpadding: 0 1px;\tmargin: 0 -1px;\ttext-indent: -1em;\t-ms-user-select: text;\t-moz-user-select: text;\t-webkit-user-select: text;\tuser-select: text;\twhite-space: pre!important;\t}\t.ace_text-input.ace_composition {\tbackground: inherit;\tcolor: inherit;\tz-index: 1000;\topacity: 1;\ttext-indent: 0;\t}\t.ace_layer {\tz-index: 1;\tposition: absolute;\toverflow: hidden;\tword-wrap: normal;\twhite-space: pre;\theight: 100%;\twidth: 100%;\t-moz-box-sizing: border-box;\t-webkit-box-sizing: border-box;\tbox-sizing: border-box;\tpointer-events: none;\t}\t.ace_gutter-layer {\tposition: relative;\twidth: auto;\ttext-align: right;\tpointer-events: auto;\t}\t.ace_text-layer {\tfont: inherit !important;\t}\t.ace_cjk {\tdisplay: inline-block;\ttext-align: center;\t}\t.ace_cursor-layer {\tz-index: 4;\t}\t.ace_cursor {\tz-index: 4;\tposition: absolute;\t-moz-box-sizing: border-box;\t-webkit-box-sizing: border-box;\tbox-sizing: border-box;\tborder-left: 2px solid;\ttransform: translatez(0);\t}\t.ace_slim-cursors .ace_cursor {\tborder-left-width: 1px;\t}\t.ace_overwrite-cursors .ace_cursor {\tborder-left-width: 0;\tborder-bottom: 1px solid;\t}\t.ace_hidden-cursors .ace_cursor {\topacity: 0.2;\t}\t.ace_smooth-blinking .ace_cursor {\t-webkit-transition: opacity 0.18s;\ttransition: opacity 0.18s;\t}\t.ace_editor.ace_multiselect .ace_cursor {\tborder-left-width: 1px;\t}\t.ace_marker-layer .ace_step, .ace_marker-layer .ace_stack {\tposition: absolute;\tz-index: 3;\t}\t.ace_marker-layer .ace_selection {\tposition: absolute;\tz-index: 5;\t}\t.ace_marker-layer .ace_bracket {\tposition: absolute;\tz-index: 6;\t}\t.ace_marker-layer .ace_active-line {\tposition: absolute;\tz-index: 2;\t}\t.ace_marker-layer .ace_selected-word {\tposition: absolute;\tz-index: 4;\t-moz-box-sizing: border-box;\t-webkit-box-sizing: border-box;\tbox-sizing: border-box;\t}\t.ace_line .ace_fold {\t-moz-box-sizing: border-box;\t-webkit-box-sizing: border-box;\tbox-sizing: border-box;\tdisplay: inline-block;\theight: 11px;\tmargin-top: -2px;\tvertical-align: middle;\tbackground-image:\turl("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAJCAYAAADU6McMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJpJREFUeNpi/P//PwOlgAXGYGRklAVSokD8GmjwY1wasKljQpYACtpCFeADcHVQfQyMQAwzwAZI3wJKvCLkfKBaMSClBlR7BOQikCFGQEErIH0VqkabiGCAqwUadAzZJRxQr/0gwiXIal8zQQPnNVTgJ1TdawL0T5gBIP1MUJNhBv2HKoQHHjqNrA4WO4zY0glyNKLT2KIfIMAAQsdgGiXvgnYAAAAASUVORK5CYII="),\turl("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAA3CAYAAADNNiA5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACJJREFUeNpi+P//fxgTAwPDBxDxD078RSX+YeEyDFMCIMAAI3INmXiwf2YAAAAASUVORK5CYII=");\tbackground-repeat: no-repeat, repeat-x;\tbackground-position: center center, top left;\tcolor: transparent;\tborder: 1px solid black;\tborder-radius: 2px;\tcursor: pointer;\tpointer-events: auto;\t}\t.ace_dark .ace_fold {\t}\t.ace_fold:hover{\tbackground-image:\turl("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAJCAYAAADU6McMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJpJREFUeNpi/P//PwOlgAXGYGRklAVSokD8GmjwY1wasKljQpYACtpCFeADcHVQfQyMQAwzwAZI3wJKvCLkfKBaMSClBlR7BOQikCFGQEErIH0VqkabiGCAqwUadAzZJRxQr/0gwiXIal8zQQPnNVTgJ1TdawL0T5gBIP1MUJNhBv2HKoQHHjqNrA4WO4zY0glyNKLT2KIfIMAAQsdgGiXvgnYAAAAASUVORK5CYII="),\turl("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAA3CAYAAADNNiA5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACBJREFUeNpi+P//fz4TAwPDZxDxD5X4i5fLMEwJgAADAEPVDbjNw87ZAAAAAElFTkSuQmCC");\t}\t.ace_tooltip {\tbackground-color: #FFF;\tbackground-image: -webkit-linear-gradient(top, transparent, rgba(0, 0, 0, 0.1));\tbackground-image: linear-gradient(to bottom, transparent, rgba(0, 0, 0, 0.1));\tborder: 1px solid gray;\tborder-radius: 1px;\tbox-shadow: 0 1px 2px rgba(0, 0, 0, 0.3);\tcolor: black;\tmax-width: 100%;\tpadding: 3px 4px;\tposition: fixed;\tz-index: 999999;\t-moz-box-sizing: border-box;\t-webkit-box-sizing: border-box;\tbox-sizing: border-box;\tcursor: default;\twhite-space: pre;\tword-wrap: break-word;\tline-height: normal;\tfont-style: normal;\tfont-weight: normal;\tletter-spacing: normal;\tpointer-events: none;\t}\t.ace_folding-enabled > .ace_gutter-cell {\tpadding-right: 13px;\t}\t.ace_fold-widget {\t-moz-box-sizing: border-box;\t-webkit-box-sizing: border-box;\tbox-sizing: border-box;\tmargin: 0 -12px 0 1px;\tdisplay: none;\twidth: 11px;\tvertical-align: top;\tbackground-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAANElEQVR42mWKsQ0AMAzC8ixLlrzQjzmBiEjp0A6WwBCSPgKAXoLkqSot7nN3yMwR7pZ32NzpKkVoDBUxKAAAAABJRU5ErkJggg==");\tbackground-repeat: no-repeat;\tbackground-position: center;\tborder-radius: 3px;\tborder: 1px solid transparent;\tcursor: pointer;\t}\t.ace_folding-enabled .ace_fold-widget {\tdisplay: inline-block; \t}\t.ace_fold-widget.ace_end {\tbackground-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAANElEQVR42m3HwQkAMAhD0YzsRchFKI7sAikeWkrxwScEB0nh5e7KTPWimZki4tYfVbX+MNl4pyZXejUO1QAAAABJRU5ErkJggg==");\t}\t.ace_fold-widget.ace_closed {\tbackground-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAGCAYAAAAG5SQMAAAAOUlEQVR42jXKwQkAMAgDwKwqKD4EwQ26sSOkVWjgIIHAzPiCgaqiqnJHZnKICBERHN194O5b9vbLuAVRL+l0YWnZAAAAAElFTkSuQmCCXA==");\t}\t.ace_fold-widget:hover {\tborder: 1px solid rgba(0, 0, 0, 0.3);\tbackground-color: rgba(255, 255, 255, 0.2);\tbox-shadow: 0 1px 1px rgba(255, 255, 255, 0.7);\t}\t.ace_fold-widget:active {\tborder: 1px solid rgba(0, 0, 0, 0.4);\tbackground-color: rgba(0, 0, 0, 0.05);\tbox-shadow: 0 1px 1px rgba(255, 255, 255, 0.8);\t}\t.ace_dark .ace_fold-widget {\tbackground-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHklEQVQIW2P4//8/AzoGEQ7oGCaLLAhWiSwB146BAQCSTPYocqT0AAAAAElFTkSuQmCC");\t}\t.ace_dark .ace_fold-widget.ace_end {\tbackground-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAH0lEQVQIW2P4//8/AxQ7wNjIAjDMgC4AxjCVKBirIAAF0kz2rlhxpAAAAABJRU5ErkJggg==");\t}\t.ace_dark .ace_fold-widget.ace_closed {\tbackground-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAFCAYAAACAcVaiAAAAHElEQVQIW2P4//+/AxAzgDADlOOAznHAKgPWAwARji8UIDTfQQAAAABJRU5ErkJggg==");\t}\t.ace_dark .ace_fold-widget:hover {\tbox-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);\tbackground-color: rgba(255, 255, 255, 0.1);\t}\t.ace_dark .ace_fold-widget:active {\tbox-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);\t}\t.ace_fold-widget.ace_invalid {\tbackground-color: #FFB4B4;\tborder-color: #DE5555;\t}\t.ace_fade-fold-widgets .ace_fold-widget {\t-webkit-transition: opacity 0.4s ease 0.05s;\ttransition: opacity 0.4s ease 0.05s;\topacity: 0;\t}\t.ace_fade-fold-widgets:hover .ace_fold-widget {\t-webkit-transition: opacity 0.05s ease 0.05s;\ttransition: opacity 0.05s ease 0.05s;\topacity:1;\t}\t.ace_underline {\ttext-decoration: underline;\t}\t.ace_bold {\tfont-weight: bold;\t}\t.ace_nobold .ace_bold {\tfont-weight: normal;\t}\t.ace_italic {\tfont-style: italic;\t}\t.ace_error-marker {\tbackground-color: rgba(255, 0, 0,0.2);\tposition: absolute;\tz-index: 9;\t}\t.ace_highlight-marker {\tbackground-color: rgba(255, 255, 0,0.2);\tposition: absolute;\tz-index: 8;\t}\t.ace_br1 {border-top-left-radius : 3px;}\t.ace_br2 {border-top-right-radius : 3px;}\t.ace_br3 {border-top-left-radius : 3px; border-top-right-radius: 3px;}\t.ace_br4 {border-bottom-right-radius: 3px;}\t.ace_br5 {border-top-left-radius : 3px; border-bottom-right-radius: 3px;}\t.ace_br6 {border-top-right-radius : 3px; border-bottom-right-radius: 3px;}\t.ace_br7 {border-top-left-radius : 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px;}\t.ace_br8 {border-bottom-left-radius : 3px;}\t.ace_br9 {border-top-left-radius : 3px; border-bottom-left-radius: 3px;}\t.ace_br10{border-top-right-radius : 3px; border-bottom-left-radius: 3px;}\t.ace_br11{border-top-left-radius : 3px; border-top-right-radius: 3px; border-bottom-left-radius: 3px;}\t.ace_br12{border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;}\t.ace_br13{border-top-left-radius : 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;}\t.ace_br14{border-top-right-radius : 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;}\t.ace_br15{border-top-left-radius : 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;}\t',"ace_editor.css");var h=function(t,e){var l=this;this.container=t||n.createElement("div"),this.$keepTextAreaAtCursor=!d.isOldIE,n.addCssClass(this.container,"ace_editor"),this.setTheme(e),this.$gutter=n.createElement("div"),this.$gutter.className="ace_gutter",this.container.appendChild(this.$gutter),this.scroller=n.createElement("div"),this.scroller.className="ace_scroller",this.container.appendChild(this.scroller),this.content=n.createElement("div"),this.content.className="ace_content",this.scroller.appendChild(this.content),this.$gutterLayer=new s(this.$gutter),this.$gutterLayer.on("changeGutterWidth",this.onGutterResize.bind(this)),this.$markerBack=new c(this.content);var i=this.$textLayer=new o(this.content);this.canvas=i.element,this.$markerFront=new c(this.content),this.$cursorLayer=new b(this.content),this.$horizScroll=!1,this.$vScroll=!1,this.scrollBar=this.scrollBarV=new m(this.container,this),this.scrollBarH=new r(this.container,this),this.scrollBarV.addEventListener("scroll",(function(t){l.$scrollAnimation||l.session.setScrollTop(t.data-l.scrollMargin.top)})),this.scrollBarH.addEventListener("scroll",(function(t){l.$scrollAnimation||l.session.setScrollLeft(t.data-l.scrollMargin.left)})),this.scrollTop=0,this.scrollLeft=0,this.cursorPos={row:0,column:0},this.$fontMetrics=new g(this.container),this.$textLayer.$setFontMetrics(this.$fontMetrics),this.$textLayer.addEventListener("changeCharacterSize",(function(t){l.updateCharacterSize(),l.onResize(!0,l.gutterWidth,l.$size.width,l.$size.height),l._signal("changeCharacterSize",t)})),this.$size={width:0,height:0,scrollerHeight:0,scrollerWidth:0,$dirty:!0},this.layerConfig={width:1,padding:0,firstRow:0,firstRowScreen:0,lastRow:0,lineHeight:0,characterWidth:0,minHeight:1,maxHeight:1,offset:0,height:1,gutterOffset:1},this.scrollMargin={left:0,right:0,top:0,bottom:0,v:0,h:0},this.$loop=new Z(this.$renderChanges.bind(this),this.container.ownerDocument.defaultView),this.$loop.schedule(this.CHANGE_FULL),this.updateCharacterSize(),this.setPadding(4),a.resetOptions(this),a._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,i.implement(this,W),this.updateCharacterSize=function(){this.$textLayer.allowBoldFonts!=this.$allowBoldFonts&&(this.$allowBoldFonts=this.$textLayer.allowBoldFonts,this.setStyle("ace_nobold",!this.$allowBoldFonts)),this.layerConfig.characterWidth=this.characterWidth=this.$textLayer.getCharacterWidth(),this.layerConfig.lineHeight=this.lineHeight=this.$textLayer.getLineHeight(),this.$updatePrintMargin()},this.setSession=function(t){this.session&&this.session.doc.off("changeNewLineMode",this.onChangeNewLineMode),this.session=t,t&&this.scrollMargin.top&&t.getScrollTop()<=0&&t.setScrollTop(-this.scrollMargin.top),this.$cursorLayer.setSession(t),this.$markerBack.setSession(t),this.$markerFront.setSession(t),this.$gutterLayer.setSession(t),this.$textLayer.setSession(t),t&&(this.$loop.schedule(this.CHANGE_FULL),this.session.$setFontMetrics(this.$fontMetrics),this.onChangeNewLineMode=this.onChangeNewLineMode.bind(this),this.onChangeNewLineMode(),this.session.doc.on("changeNewLineMode",this.onChangeNewLineMode))},this.updateLines=function(t,e,l){if(void 0===e&&(e=1/0),this.$changedLines?(this.$changedLines.firstRow>t&&(this.$changedLines.firstRow=t),this.$changedLines.lastRowthis.layerConfig.lastRow||this.$loop.schedule(this.CHANGE_LINES)},this.onChangeNewLineMode=function(){this.$loop.schedule(this.CHANGE_TEXT),this.$textLayer.$updateEolChar()},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(t){t?this.$renderChanges(this.CHANGE_FULL,!0):this.$loop.schedule(this.CHANGE_FULL)},this.updateFontSize=function(){this.$textLayer.checkForSizeChanges()},this.$changes=0,this.$updateSizeAsync=function(){this.$loop.pending?this.$size.$dirty=!0:this.onResize()},this.onResize=function(t,e,l,i){if(!(this.resizing>2)){this.resizing>0?this.resizing++:this.resizing=t?1:0;var n=this.container;i||(i=n.clientHeight||n.scrollHeight),l||(l=n.clientWidth||n.scrollWidth);var a=this.$updateCachedSize(t,e,l,i);if(!this.$size.scrollerHeight||!l&&!i)return this.resizing=0;t&&(this.$gutterLayer.$padding=null),t?this.$renderChanges(a|this.$changes,!0):this.$loop.schedule(a|this.$changes),this.resizing&&(this.resizing=0),this.scrollBarV.scrollLeft=this.scrollBarV.scrollTop=null}},this.$updateCachedSize=function(t,e,l,i){i-=this.$extraHeight||0;var n=0,a=this.$size,d={width:a.width,height:a.height,scrollerHeight:a.scrollerHeight,scrollerWidth:a.scrollerWidth};return i&&(t||a.height!=i)&&(a.height=i,n|=this.CHANGE_SIZE,a.scrollerHeight=a.height,this.$horizScroll&&(a.scrollerHeight-=this.scrollBarH.getHeight()),this.scrollBarV.element.style.bottom=this.scrollBarH.getHeight()+"px",n|=this.CHANGE_SCROLL),l&&(t||a.width!=l)&&(n|=this.CHANGE_SIZE,a.width=l,null==e&&(e=this.$showGutter?this.$gutter.offsetWidth:0),this.gutterWidth=e,this.scrollBarH.element.style.left=this.scroller.style.left=e+"px",a.scrollerWidth=Math.max(0,l-e-this.scrollBarV.getWidth()),this.scrollBarH.element.style.right=this.scroller.style.right=this.scrollBarV.getWidth()+"px",this.scroller.style.bottom=this.scrollBarH.getHeight()+"px",(this.session&&this.session.getUseWrapMode()&&this.adjustWrapLimit()||t)&&(n|=this.CHANGE_FULL)),a.$dirty=!l||!i,n&&this._signal("resize",d),n},this.onGutterResize=function(){var t=this.$showGutter?this.$gutter.offsetWidth:0;t!=this.gutterWidth&&(this.$changes|=this.$updateCachedSize(!0,t,this.$size.width,this.$size.height)),this.session.getUseWrapMode()&&this.adjustWrapLimit()||this.$size.$dirty?this.$loop.schedule(this.CHANGE_FULL):(this.$computeLayerConfig(),this.$loop.schedule(this.CHANGE_MARKER))},this.adjustWrapLimit=function(){var t=this.$size.scrollerWidth-2*this.$padding,e=Math.floor(t/this.characterWidth);return this.session.adjustWrapLimit(e,this.$showPrintMargin&&this.$printMarginColumn)},this.setAnimatedScroll=function(t){this.setOption("animatedScroll",t)},this.getAnimatedScroll=function(){return this.$animatedScroll},this.setShowInvisibles=function(t){this.setOption("showInvisibles",t)},this.getShowInvisibles=function(){return this.getOption("showInvisibles")},this.getDisplayIndentGuides=function(){return this.getOption("displayIndentGuides")},this.setDisplayIndentGuides=function(t){this.setOption("displayIndentGuides",t)},this.setShowPrintMargin=function(t){this.setOption("showPrintMargin",t)},this.getShowPrintMargin=function(){return this.getOption("showPrintMargin")},this.setPrintMarginColumn=function(t){this.setOption("printMarginColumn",t)},this.getPrintMarginColumn=function(){return this.getOption("printMarginColumn")},this.getShowGutter=function(){return this.getOption("showGutter")},this.setShowGutter=function(t){return this.setOption("showGutter",t)},this.getFadeFoldWidgets=function(){return this.getOption("fadeFoldWidgets")},this.setFadeFoldWidgets=function(t){this.setOption("fadeFoldWidgets",t)},this.setHighlightGutterLine=function(t){this.setOption("highlightGutterLine",t)},this.getHighlightGutterLine=function(){return this.getOption("highlightGutterLine")},this.$updateGutterLineHighlight=function(){var t=this.$cursorLayer.$pixelPos,e=this.layerConfig.lineHeight;if(this.session.getUseWrapMode()){var l=this.session.selection.getCursor();l.column=0,t=this.$cursorLayer.getPixelPosition(l,!0),e*=this.session.getRowLength(l.row)}this.$gutterLineHighlight.style.top=t.top-this.layerConfig.offset+"px",this.$gutterLineHighlight.style.height=e+"px"},this.$updatePrintMargin=function(){if(this.$showPrintMargin||this.$printMarginEl){if(!this.$printMarginEl){var t=n.createElement("div");t.className="ace_layer ace_print-margin-layer",this.$printMarginEl=n.createElement("div"),this.$printMarginEl.className="ace_print-margin",t.appendChild(this.$printMarginEl),this.content.insertBefore(t,this.content.firstChild)}var e=this.$printMarginEl.style;e.left=this.characterWidth*this.$printMarginColumn+this.$padding+"px",e.visibility=this.$showPrintMargin?"visible":"hidden",this.session&&-1==this.session.$wrap&&this.adjustWrapLimit()}},this.getContainerElement=function(){return this.container},this.getMouseEventTarget=function(){return this.scroller},this.getTextAreaContainer=function(){return this.container},this.$moveTextAreaToCursor=function(){if(this.$keepTextAreaAtCursor){var t=this.layerConfig,e=this.$cursorLayer.$pixelPos.top,l=this.$cursorLayer.$pixelPos.left;e-=t.offset;var i=this.textarea.style,n=this.lineHeight;if(e<0||e>t.height-n)i.top=i.left="0";else{var a=this.characterWidth;if(this.$composition){var d=this.textarea.value.replace(/^\x01+/,"");a*=this.session.$getStringScreenWidth(d)[0]+2,n+=2}(l-=this.scrollLeft)>this.$size.scrollerWidth-a&&(l=this.$size.scrollerWidth-a),l+=this.gutterWidth,i.height=n+"px",i.width=a+"px",i.left=Math.min(l,this.$size.scrollerWidth-a)+"px",i.top=Math.min(e,this.$size.height-n)+"px"}}},this.getFirstVisibleRow=function(){return this.layerConfig.firstRow},this.getFirstFullyVisibleRow=function(){return this.layerConfig.firstRow+(0===this.layerConfig.offset?0:1)},this.getLastFullyVisibleRow=function(){var t=this.layerConfig,e=t.lastRow;return this.session.documentToScreenRow(e,0)*t.lineHeight-this.session.getScrollTop()>t.height-t.lineHeight?e-1:e},this.getLastVisibleRow=function(){return this.layerConfig.lastRow},this.$padding=null,this.setPadding=function(t){this.$padding=t,this.$textLayer.setPadding(t),this.$cursorLayer.setPadding(t),this.$markerFront.setPadding(t),this.$markerBack.setPadding(t),this.$loop.schedule(this.CHANGE_FULL),this.$updatePrintMargin()},this.setScrollMargin=function(t,e,l,i){var n=this.scrollMargin;n.top=0|t,n.bottom=0|e,n.right=0|i,n.left=0|l,n.v=n.top+n.bottom,n.h=n.left+n.right,n.top&&this.scrollTop<=0&&this.session&&this.session.setScrollTop(-n.top),this.updateFull()},this.getHScrollBarAlwaysVisible=function(){return this.$hScrollBarAlwaysVisible},this.setHScrollBarAlwaysVisible=function(t){this.setOption("hScrollBarAlwaysVisible",t)},this.getVScrollBarAlwaysVisible=function(){return this.$vScrollBarAlwaysVisible},this.setVScrollBarAlwaysVisible=function(t){this.setOption("vScrollBarAlwaysVisible",t)},this.$updateScrollBarV=function(){var t=this.layerConfig.maxHeight,e=this.$size.scrollerHeight;!this.$maxLines&&this.$scrollPastEnd&&(t-=(e-this.lineHeight)*this.$scrollPastEnd,this.scrollTop>t-e&&(t=this.scrollTop+e,this.scrollBarV.scrollTop=null)),this.scrollBarV.setScrollHeight(t+this.scrollMargin.v),this.scrollBarV.setScrollTop(this.scrollTop+this.scrollMargin.top)},this.$updateScrollBarH=function(){this.scrollBarH.setScrollWidth(this.layerConfig.width+2*this.$padding+this.scrollMargin.h),this.scrollBarH.setScrollLeft(this.scrollLeft+this.scrollMargin.left)},this.$frozen=!1,this.freeze=function(){this.$frozen=!0},this.unfreeze=function(){this.$frozen=!1},this.$renderChanges=function(t,e){if(this.$changes&&(t|=this.$changes,this.$changes=0),this.session&&this.container.offsetWidth&&!this.$frozen&&(t||e)){if(this.$size.$dirty)return this.$changes|=t,this.onResize(!0);this.lineHeight||this.$textLayer.checkForSizeChanges(),this._signal("beforeRender");var l=this.layerConfig;if(t&this.CHANGE_FULL||t&this.CHANGE_SIZE||t&this.CHANGE_TEXT||t&this.CHANGE_LINES||t&this.CHANGE_SCROLL||t&this.CHANGE_H_SCROLL){if(t|=this.$computeLayerConfig(),l.firstRow!=this.layerConfig.firstRow&&l.firstRowScreen==this.layerConfig.firstRowScreen){var i=this.scrollTop+(l.firstRow-this.layerConfig.firstRow)*this.lineHeight;i>0&&(this.scrollTop=i,t|=this.CHANGE_SCROLL,t|=this.$computeLayerConfig())}l=this.layerConfig,this.$updateScrollBarV(),t&this.CHANGE_H_SCROLL&&this.$updateScrollBarH(),this.$gutterLayer.element.style.marginTop=-l.offset+"px",this.content.style.marginTop=-l.offset+"px",this.content.style.width=l.width+2*this.$padding+"px",this.content.style.height=l.minHeight+"px"}if(t&this.CHANGE_H_SCROLL&&(this.content.style.marginLeft=-this.scrollLeft+"px",this.scroller.className=this.scrollLeft<=0?"ace_scroller":"ace_scroller ace_scroll-left"),t&this.CHANGE_FULL)return this.$textLayer.update(l),this.$showGutter&&this.$gutterLayer.update(l),this.$markerBack.update(l),this.$markerFront.update(l),this.$cursorLayer.update(l),this.$moveTextAreaToCursor(),this.$highlightGutterLine&&this.$updateGutterLineHighlight(),void this._signal("afterRender");if(t&this.CHANGE_SCROLL)return t&this.CHANGE_TEXT||t&this.CHANGE_LINES?this.$textLayer.update(l):this.$textLayer.scrollLines(l),this.$showGutter&&this.$gutterLayer.update(l),this.$markerBack.update(l),this.$markerFront.update(l),this.$cursorLayer.update(l),this.$highlightGutterLine&&this.$updateGutterLineHighlight(),this.$moveTextAreaToCursor(),void this._signal("afterRender");t&this.CHANGE_TEXT?(this.$textLayer.update(l),this.$showGutter&&this.$gutterLayer.update(l)):t&this.CHANGE_LINES?(this.$updateLines()||t&this.CHANGE_GUTTER&&this.$showGutter)&&this.$gutterLayer.update(l):(t&this.CHANGE_TEXT||t&this.CHANGE_GUTTER)&&this.$showGutter&&this.$gutterLayer.update(l),t&this.CHANGE_CURSOR&&(this.$cursorLayer.update(l),this.$moveTextAreaToCursor(),this.$highlightGutterLine&&this.$updateGutterLineHighlight()),t&(this.CHANGE_MARKER|this.CHANGE_MARKER_FRONT)&&this.$markerFront.update(l),t&(this.CHANGE_MARKER|this.CHANGE_MARKER_BACK)&&this.$markerBack.update(l),this._signal("afterRender")}else this.$changes|=t},this.$autosize=function(){var t=this.session.getScreenLength()*this.lineHeight,e=this.$maxLines*this.lineHeight,l=Math.max((this.$minLines||1)*this.lineHeight,Math.min(e,t))+this.scrollMargin.v+(this.$extraHeight||0);this.$horizScroll&&(l+=this.scrollBarH.getHeight());var i=t>e;if(l!=this.desiredHeight||this.$size.height!=this.desiredHeight||i!=this.$vScroll){i!=this.$vScroll&&(this.$vScroll=i,this.scrollBarV.setVisible(i));var n=this.container.clientWidth;this.container.style.height=l+"px",this.$updateCachedSize(!0,this.$gutterWidth,n,l),this.desiredHeight=l,this._signal("autosize")}},this.$computeLayerConfig=function(){var t=this.session,e=this.$size,l=e.height<=2*this.lineHeight,i=this.session.getScreenLength()*this.lineHeight,n=this.$getLongestLine(),a=!l&&(this.$hScrollBarAlwaysVisible||e.scrollerWidth-n-2*this.$padding<0),d=this.$horizScroll!==a;d&&(this.$horizScroll=a,this.scrollBarH.setVisible(a));var s=this.$vScroll;this.$maxLines&&this.lineHeight>1&&this.$autosize();var c=this.scrollTop%this.lineHeight,o=e.scrollerHeight+this.lineHeight,b=!this.$maxLines&&this.$scrollPastEnd?(e.scrollerHeight-this.lineHeight)*this.$scrollPastEnd:0;i+=b;var r=this.scrollMargin;this.session.setScrollTop(Math.max(-r.top,Math.min(this.scrollTop,i-e.scrollerHeight+r.bottom))),this.session.setScrollLeft(Math.max(-r.left,Math.min(this.scrollLeft,n+2*this.$padding-e.scrollerWidth+r.right)));var m=!l&&(this.$vScrollBarAlwaysVisible||e.scrollerHeight-i+b<0||this.scrollTop>r.top),Z=s!==m;Z&&(this.$vScroll=m,this.scrollBarV.setVisible(m));var g,W,h=Math.ceil(o/this.lineHeight)-1,N=Math.max(0,Math.round((this.scrollTop-c)/this.lineHeight)),y=N+h,I=this.lineHeight;N=t.screenToDocumentRow(N,0);var G=t.getFoldLine(N);G&&(N=G.start.row),g=t.documentToScreenRow(N,0),W=t.getRowLength(N)*I,y=Math.min(t.screenToDocumentRow(y,0),t.getLength()-1),o=e.scrollerHeight+t.getRowLength(y)*I+W,c=this.scrollTop-g*I;var M=0;return this.layerConfig.width!=n&&(M=this.CHANGE_H_SCROLL),(d||Z)&&(M=this.$updateCachedSize(!0,this.gutterWidth,e.width,e.height),this._signal("scrollbarVisibilityChanged"),Z&&(n=this.$getLongestLine())),this.layerConfig={width:n,padding:this.$padding,firstRow:N,firstRowScreen:g,lastRow:y,lineHeight:I,characterWidth:this.characterWidth,minHeight:o,maxHeight:i,offset:c,gutterOffset:Math.max(0,Math.ceil((c+e.height-e.scrollerHeight)/I)),height:this.$size.scrollerHeight},M},this.$updateLines=function(){var t=this.$changedLines.firstRow,e=this.$changedLines.lastRow;this.$changedLines=null;var l=this.layerConfig;if(!(t>l.lastRow+1||ea?(e&&c+d>a+this.lineHeight&&(a-=e*this.$size.scrollerHeight),0===a&&(a=-this.scrollMargin.top),this.session.setScrollTop(a)):c+this.$size.scrollerHeight-sn?(n=1-this.scrollMargin.top||e>0&&this.session.getScrollTop()+this.$size.scrollerHeight-this.layerConfig.maxHeight<-1+this.scrollMargin.bottom||t<0&&this.session.getScrollLeft()>=1-this.scrollMargin.left||t>0&&this.session.getScrollLeft()+this.$size.scrollerWidth-this.layerConfig.width<-1+this.scrollMargin.right||void 0},this.pixelToScreenCoordinates=function(t,e){var l=this.scroller.getBoundingClientRect(),i=(t+this.scrollLeft-l.left-this.$padding)/this.characterWidth,n=Math.floor((e+this.scrollTop-l.top)/this.lineHeight),a=Math.round(i);return{row:n,column:a,side:i-a>0?1:-1}},this.screenToTextCoordinates=function(t,e){var l=this.scroller.getBoundingClientRect(),i=Math.round((t+this.scrollLeft-l.left-this.$padding)/this.characterWidth),n=(e+this.scrollTop-l.top)/this.lineHeight;return this.session.screenToDocumentPosition(n,Math.max(i,0))},this.textToScreenCoordinates=function(t,e){var l=this.scroller.getBoundingClientRect(),i=this.session.documentToScreenPosition(t,e),n=this.$padding+Math.round(i.column*this.characterWidth),a=i.row*this.lineHeight;return{pageX:l.left+n-this.scrollLeft,pageY:l.top+a-this.scrollTop}},this.visualizeFocus=function(){n.addCssClass(this.container,"ace_focus")},this.visualizeBlur=function(){n.removeCssClass(this.container,"ace_focus")},this.showComposition=function(t){this.$composition||(this.$composition={keepTextAreaAtCursor:this.$keepTextAreaAtCursor,cssText:this.textarea.style.cssText}),this.$keepTextAreaAtCursor=!0,n.addCssClass(this.textarea,"ace_composition"),this.textarea.style.cssText="",this.$moveTextAreaToCursor()},this.setCompositionText=function(t){this.$moveTextAreaToCursor()},this.hideComposition=function(){this.$composition&&(n.removeCssClass(this.textarea,"ace_composition"),this.$keepTextAreaAtCursor=this.$composition.keepTextAreaAtCursor,this.textarea.style.cssText=this.$composition.cssText,this.$composition=null)},this.setTheme=function(t,e){var l=this;if(this.$themeId=t,l._dispatchEvent("themeChange",{theme:t}),t&&"string"!=typeof t)d(t);else{var i=t||this.$options.theme.initialValue;a.loadModule(["theme",i],d)}function d(i){if(l.$themeId!=t)return e&&e();if(i.cssClass){n.importCssString(i.cssText,i.cssClass,l.container.ownerDocument),l.theme&&n.removeCssClass(l.container,l.theme.cssClass);var a="padding"in i?i.padding:"padding"in(l.theme||{})?4:l.$padding;l.$padding&&a!=l.$padding&&l.setPadding(a),l.$theme=i.cssClass,l.theme=i,n.addCssClass(l.container,i.cssClass),n.setCssClass(l.container,"ace_dark",i.isDark),l.$size&&(l.$size.width=0,l.$updateSizeAsync()),l._dispatchEvent("themeLoaded",{theme:i}),e&&e()}}},this.getTheme=function(){return this.$themeId},this.setStyle=function(t,e){n.setCssClass(this.container,t,!1!==e)},this.unsetStyle=function(t){n.removeCssClass(this.container,t)},this.setCursorStyle=function(t){this.scroller.style.cursor!=t&&(this.scroller.style.cursor=t)},this.setMouseCursor=function(t){this.scroller.style.cursor=t},this.destroy=function(){this.$textLayer.destroy(),this.$cursorLayer.destroy()}}).call(h.prototype),a.defineOptions(h.prototype,"renderer",{animatedScroll:{initialValue:!1},showInvisibles:{set:function(t){this.$textLayer.setShowInvisibles(t)&&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(t){"number"==typeof t&&(this.$printMarginColumn=t),this.$showPrintMargin=!!t,this.$updatePrintMargin()},get:function(){return this.$showPrintMargin&&this.$printMarginColumn}},showGutter:{set:function(t){this.$gutter.style.display=t?"block":"none",this.$loop.schedule(this.CHANGE_FULL),this.onGutterResize()},initialValue:!0},fadeFoldWidgets:{set:function(t){n.setCssClass(this.$gutter,"ace_fade-fold-widgets",t)},initialValue:!1},showFoldWidgets:{set:function(t){this.$gutterLayer.setShowFoldWidgets(t)},initialValue:!0},showLineNumbers:{set:function(t){this.$gutterLayer.setShowLineNumbers(t),this.$loop.schedule(this.CHANGE_GUTTER)},initialValue:!0},displayIndentGuides:{set:function(t){this.$textLayer.setDisplayIndentGuides(t)&&this.$loop.schedule(this.CHANGE_TEXT)},initialValue:!0},highlightGutterLine:{set:function(t){if(!this.$gutterLineHighlight)return this.$gutterLineHighlight=n.createElement("div"),this.$gutterLineHighlight.className="ace_gutter-active-line",void this.$gutter.appendChild(this.$gutterLineHighlight);this.$gutterLineHighlight.style.display=t?"":"none",this.$cursorLayer.$pixelPos&&this.$updateGutterLineHighlight()},initialValue:!1,value:!0},hScrollBarAlwaysVisible:{set:function(t){this.$hScrollBarAlwaysVisible&&this.$horizScroll||this.$loop.schedule(this.CHANGE_SCROLL)},initialValue:!1},vScrollBarAlwaysVisible:{set:function(t){this.$vScrollBarAlwaysVisible&&this.$vScroll||this.$loop.schedule(this.CHANGE_SCROLL)},initialValue:!1},fontSize:{set:function(t){"number"==typeof t&&(t+="px"),this.container.style.fontSize=t,this.updateFontSize()},initialValue:12},fontFamily:{set:function(t){this.container.style.fontFamily=t,this.updateFontSize()}},maxLines:{set:function(t){this.updateFull()}},minLines:{set:function(t){this.updateFull()}},scrollPastEnd:{set:function(t){t=+t||0,this.$scrollPastEnd!=t&&(this.$scrollPastEnd=t,this.$loop.schedule(this.CHANGE_SCROLL))},initialValue:0,handlesSet:!0},fixedWidthGutter:{set:function(t){this.$gutterLayer.$fixedWidth=!!t,this.$loop.schedule(this.CHANGE_GUTTER)}},theme:{set:function(t){this.setTheme(t)},get:function(){return this.$themeId||this.theme},initialValue:"./theme/textmate",handlesSet:!0}}),e.VirtualRenderer=h})),ace.define("ace/worker/worker_client",["require","exports","module","ace/lib/oop","ace/lib/net","ace/lib/event_emitter","ace/config"],(function(t,e,i){"use strict";var n=t("../lib/oop"),a=t("../lib/net"),d=t("../lib/event_emitter").EventEmitter,s=t("../config"),c=function(e,i,n,a){if(this.$sendDeltaQueue=this.$sendDeltaQueue.bind(this),this.changeListener=this.changeListener.bind(this),this.onMessage=this.onMessage.bind(this),t.nameToUrl&&!t.toUrl&&(t.toUrl=t.nameToUrl),s.get("packaged")||!t.toUrl)a=a||s.moduleUrl(i.id,"worker");else{var d=this.$normalizePath;a=a||d(t.toUrl("ace/worker/worker.js",null,"_"));var c={};e.forEach((function(e){c[e]=d(t.toUrl(e,null,"_").replace(/(\.js)?(\?.*)?$/,""))}))}try{var o=i.src,b=new(l(66))([o],{type:"application/javascript"}),r=(window.URL||window.webkitURL).createObjectURL(b);this.$worker=new Worker(r)}catch(t){if(!(t instanceof window.DOMException))throw t;b=this.$workerBlob(a);var m=window.URL||window.webkitURL,Z=m.createObjectURL(b);this.$worker=new Worker(Z),m.revokeObjectURL(Z)}this.$worker.postMessage({init:!0,tlns:c,module:i.id,classname:n}),this.callbackId=1,this.callbacks={},this.$worker.onmessage=this.onMessage};(function(){n.implement(this,d),this.onMessage=function(t){var e=t.data;switch(e.type){case"event":this._signal(e.name,{data:e.data});break;case"call":var l=this.callbacks[e.id];l&&(l(e.data),delete this.callbacks[e.id]);break;case"error":this.reportError(e.data);break;case"log":window.console&&console.log&&console.log.apply(console,e.data)}},this.reportError=function(t){window.console&&console.error&&console.error(t)},this.$normalizePath=function(t){return a.qualifyURL(t)},this.terminate=function(){this._signal("terminate",{}),this.deltaQueue=null,this.$worker.terminate(),this.$worker=null,this.$doc&&this.$doc.off("change",this.changeListener),this.$doc=null},this.send=function(t,e){this.$worker.postMessage({command:t,args:e})},this.call=function(t,e,l){if(l){var i=this.callbackId++;this.callbacks[i]=l,e.push(i)}this.send(t,e)},this.emit=function(t,e){try{this.$worker.postMessage({event:t,data:{data:e.data}})}catch(t){console.error(t.stack)}},this.attachToDocument=function(t){this.$doc&&this.terminate(),this.$doc=t,this.call("setValue",[t.getValue()]),t.on("change",this.changeListener)},this.changeListener=function(t){this.deltaQueue||(this.deltaQueue=[],setTimeout(this.$sendDeltaQueue,0)),"insert"==t.action?this.deltaQueue.push(t.start,t.lines):this.deltaQueue.push(t.start,t.end)},this.$sendDeltaQueue=function(){var t=this.deltaQueue;t&&(this.deltaQueue=null,t.length>50&&t.length>this.$doc.getLength()>>1?this.call("setValue",[this.$doc.getValue()]):this.emit("change",{data:t}))},this.$workerBlob=function(t){var e="importScripts('"+a.qualifyURL(t)+"');";try{return new Blob([e],{type:"application/javascript"})}catch(t){var l=new(window.BlobBuilder||window.WebKitBlobBuilder||window.MozBlobBuilder);return l.append(e),l.getBlob("application/javascript")}}}).call(c.prototype);var o=function(t,e,l){this.$sendDeltaQueue=this.$sendDeltaQueue.bind(this),this.changeListener=this.changeListener.bind(this),this.callbackId=1,this.callbacks={},this.messageBuffer=[];var i=null,n=!1,a=Object.create(d),c=this;this.$worker={},this.$worker.terminate=function(){},this.$worker.postMessage=function(t){c.messageBuffer.push(t),i&&(n?setTimeout(o):o())},this.setEmitSync=function(t){n=t};var o=function(){var t=c.messageBuffer.shift();t.command?i[t.command].apply(i,t.args):t.event&&a._signal(t.event,t.data)};a.postMessage=function(t){c.onMessage({data:t})},a.callback=function(t,e){this.postMessage({type:"call",id:e,data:t})},a.emit=function(t,e){this.postMessage({type:"event",name:t,data:e})},s.loadModule(["worker",e],(function(t){for(i=new t[l](a);c.messageBuffer.length;)o()}))};o.prototype=c.prototype,e.UIWorkerClient=o,e.WorkerClient=c})),ace.define("ace/placeholder",["require","exports","module","ace/range","ace/lib/event_emitter","ace/lib/oop"],(function(t,e,l){"use strict";var i=t("./range").Range,n=t("./lib/event_emitter").EventEmitter,a=t("./lib/oop"),d=function(t,e,l,i,n,a){var d=this;this.length=e,this.session=t,this.doc=t.getDocument(),this.mainClass=n,this.othersClass=a,this.$onUpdate=this.onUpdate.bind(this),this.doc.on("change",this.$onUpdate),this.$others=i,this.$onCursorChange=function(){setTimeout((function(){d.onCursorChange()}))},this.$pos=l;var s=t.getUndoManager().$undoStack||t.getUndoManager().$undostack||{length:-1};this.$undoStackDepth=s.length,this.setup(),t.selection.on("changeCursor",this.$onCursorChange)};(function(){a.implement(this,n),this.setup=function(){var t=this,e=this.doc,l=this.session;this.selectionBefore=l.selection.toJSON(),l.selection.inMultiSelectMode&&l.selection.toSingleRange(),this.pos=e.createAnchor(this.$pos.row,this.$pos.column);var n=this.pos;n.$insertRight=!0,n.detach(),n.markerId=l.addMarker(new i(n.row,n.column,n.row,n.column+this.length),this.mainClass,null,!1),this.others=[],this.$others.forEach((function(l){var i=e.createAnchor(l.row,l.column);i.$insertRight=!0,i.detach(),t.others.push(i)})),l.setUndoSelect(!1)},this.showOtherMarkers=function(){if(!this.othersActive){var t=this.session,e=this;this.othersActive=!0,this.others.forEach((function(l){l.markerId=t.addMarker(new i(l.row,l.column,l.row,l.column+e.length),e.othersClass,null,!1)}))}},this.hideOtherMarkers=function(){if(this.othersActive){this.othersActive=!1;for(var t=0;t=this.pos.column&&e.start.column<=this.pos.column+this.length+1,a=e.start.column-this.pos.column;if(this.updateAnchors(t),n&&(this.length+=l),n&&!this.session.$fromUndo)if("insert"===t.action)for(var d=this.others.length-1;d>=0;d--){var s={row:(c=this.others[d]).row,column:c.column+a};this.doc.insertMergedLines(s,t.lines)}else if("remove"===t.action)for(d=this.others.length-1;d>=0;d--){var c;s={row:(c=this.others[d]).row,column:c.column+a},this.doc.remove(new i(s.row,s.column,s.row,s.column-l))}this.$updating=!1,this.updateMarkers()}},this.updateAnchors=function(t){this.pos.onChange(t);for(var e=this.others.length;e--;)this.others[e].onChange(t);this.updateMarkers()},this.updateMarkers=function(){if(!this.$updating){var t=this,e=this.session,l=function(l,n){e.removeMarker(l.markerId),l.markerId=e.addMarker(new i(l.row,l.column,l.row,l.column+t.length),n,null,!1)};l(this.pos,this.mainClass);for(var n=this.others.length;n--;)l(this.others[n],this.othersClass)}},this.onCursorChange=function(t){if(!this.$updating&&this.session){var e=this.session.selection.getCursor();e.row===this.pos.row&&e.column>=this.pos.column&&e.column<=this.pos.column+this.length?(this.showOtherMarkers(),this._emit("cursorEnter",t)):(this.hideOtherMarkers(),this._emit("cursorLeave",t))}},this.detach=function(){this.session.removeMarker(this.pos&&this.pos.markerId),this.hideOtherMarkers(),this.doc.removeEventListener("change",this.$onUpdate),this.session.selection.removeEventListener("changeCursor",this.$onCursorChange),this.session.setUndoSelect(!0),this.session=null},this.cancel=function(){if(-1!==this.$undoStackDepth){for(var t=this.session.getUndoManager(),e=(t.$undoStack||t.$undostack).length-this.$undoStackDepth,l=0;l1&&!this.inMultiSelectMode&&(this._signal("multiSelect"),this.inMultiSelectMode=!0,this.session.$undoSelect=!1,this.rangeList.attach(this.session)),e||this.fromOrientedRange(t)}},this.toSingleRange=function(t){t=t||this.ranges[0];var e=this.rangeList.removeAll();e.length&&this.$onRemoveRange(e),t&&this.fromOrientedRange(t)},this.substractPoint=function(t){var e=this.rangeList.substractPoint(t);if(e)return this.$onRemoveRange(e),e[0]},this.mergeOverlappingRanges=function(){var t=this.rangeList.merge();t.length?this.$onRemoveRange(t):this.ranges[0]&&this.fromOrientedRange(this.ranges[0])},this.$onAddRange=function(t){this.rangeCount=this.rangeList.ranges.length,this.ranges.unshift(t),this._signal("addRange",{range:t})},this.$onRemoveRange=function(t){if(this.rangeCount=this.rangeList.ranges.length,1==this.rangeCount&&this.inMultiSelectMode){var e=this.rangeList.ranges.pop();t.push(e),this.rangeCount=0}for(var l=t.length;l--;){var i=this.ranges.indexOf(t[l]);this.ranges.splice(i,1)}this._signal("removeRange",{ranges:t}),0===this.rangeCount&&this.inMultiSelectMode&&(this.inMultiSelectMode=!1,this._signal("singleSelect"),this.session.$undoSelect=!0,this.rangeList.detach(this.session)),(e=e||this.ranges[0])&&!e.isEqual(this.getRange())&&this.fromOrientedRange(e)},this.$initRangeList=function(){this.rangeList||(this.rangeList=new i,this.ranges=[],this.rangeCount=0)},this.getAllRanges=function(){return this.rangeCount?this.rangeList.ranges.concat():[this.getRange()]},this.splitIntoLines=function(){if(this.rangeCount>1){var t=this.rangeList.ranges,e=t[t.length-1],l=n.fromPoints(t[0].start,e.end);this.toSingleRange(),this.setSelectionRange(l,e.cursor==e.start)}else{l=this.getRange();var i=this.isBackwards(),a=l.start.row,d=l.end.row;if(a==d){if(i)var s=l.end,c=l.start;else s=l.start,c=l.end;return this.addRange(n.fromPoints(c,c)),void this.addRange(n.fromPoints(s,s))}var o=[],b=this.getLineRange(a,!0);b.start.column=l.start.column,o.push(b);for(var r=a+1;r1){var t=this.rangeList.ranges,e=t[t.length-1],l=n.fromPoints(t[0].start,e.end);this.toSingleRange(),this.setSelectionRange(l,e.cursor==e.start)}else{var i=this.session.documentToScreenPosition(this.selectionLead),a=this.session.documentToScreenPosition(this.selectionAnchor);this.rectangularRangeBlock(i,a).forEach(this.addRange,this)}},this.rectangularRangeBlock=function(t,e,l){var i=[],a=t.column0;)h--;if(h>0)for(var N=0;i[N].isEmpty();)N++;for(var y=h;y>=N;y--)i[y].isEmpty()&&i.splice(y,1)}return i}}.call(a.prototype);var m=t("./editor").Editor;function Z(t){t.$multiselectOnSessionChange||(t.$onAddRange=t.$onAddRange.bind(t),t.$onRemoveRange=t.$onRemoveRange.bind(t),t.$onMultiSelect=t.$onMultiSelect.bind(t),t.$onSingleSelect=t.$onSingleSelect.bind(t),t.$multiselectOnSessionChange=e.onSessionChange.bind(t),t.$checkMultiselectChange=t.$checkMultiselectChange.bind(t),t.$multiselectOnSessionChange(t),t.on("changeSession",t.$multiselectOnSessionChange),t.on("mousedown",d),t.commands.addCommands(o.defaultCommands),function(t){var e=t.textInput.getElement(),l=!1;function i(e){l&&(t.renderer.setMouseCursor(""),l=!1)}s.addListener(e,"keydown",(function(e){var n=18==e.keyCode&&!(e.ctrlKey||e.shiftKey||e.metaKey);t.$blockSelectEnabled&&n?l||(t.renderer.setMouseCursor("crosshair"),l=!0):l&&i()})),s.addListener(e,"keyup",i),s.addListener(e,"blur",i)}(t))}(function(){this.updateSelectionMarkers=function(){this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.addSelectionMarker=function(t){t.cursor||(t.cursor=t.end);var e=this.getSelectionStyle();return t.marker=this.session.addMarker(t,"ace_selection",e),this.session.$selectionMarkers.push(t),this.session.selectionMarkerCount=this.session.$selectionMarkers.length,t},this.removeSelectionMarker=function(t){if(t.marker){this.session.removeMarker(t.marker);var e=this.session.$selectionMarkers.indexOf(t);-1!=e&&this.session.$selectionMarkers.splice(e,1),this.session.selectionMarkerCount=this.session.$selectionMarkers.length}},this.removeSelectionMarkers=function(t){for(var e=this.session.$selectionMarkers,l=t.length;l--;){var i=t[l];if(i.marker){this.session.removeMarker(i.marker);var n=e.indexOf(i);-1!=n&&e.splice(n,1)}}this.session.selectionMarkerCount=e.length},this.$onAddRange=function(t){this.addSelectionMarker(t.range),this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.$onRemoveRange=function(t){this.removeSelectionMarkers(t.ranges),this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.$onMultiSelect=function(t){this.inMultiSelectMode||(this.inMultiSelectMode=!0,this.setStyle("ace_multiselect"),this.keyBinding.addKeyboardHandler(o.keyboardHandler),this.commands.setDefaultHandler("exec",this.$onMultiSelectExec),this.renderer.updateCursor(),this.renderer.updateBackMarkers())},this.$onSingleSelect=function(t){this.session.multiSelect.inVirtualMode||(this.inMultiSelectMode=!1,this.unsetStyle("ace_multiselect"),this.keyBinding.removeKeyboardHandler(o.keyboardHandler),this.commands.removeDefaultHandler("exec",this.$onMultiSelectExec),this.renderer.updateCursor(),this.renderer.updateBackMarkers(),this._emit("changeSelection"))},this.$onMultiSelectExec=function(t){var e=t.command,l=t.editor;if(l.multiSelect){if(e.multiSelectAction)"forEach"==e.multiSelectAction?i=l.forEachSelection(e,t.args):"forEachLine"==e.multiSelectAction?i=l.forEachSelection(e,t.args,!0):"single"==e.multiSelectAction?(l.exitMultiSelectMode(),i=e.exec(l,t.args||{})):i=e.multiSelectAction(l,t.args||{});else{var i=e.exec(l,t.args||{});l.multiSelect.addRange(l.multiSelect.toOrientedRange()),l.multiSelect.mergeOverlappingRanges()}return i}},this.forEachSelection=function(t,e,l){if(!this.inVirtualSelectionMode){var i,n=l&&l.keepOrder,d=1==l||l&&l.$byLines,s=this.session,c=this.selection,o=c.rangeList,b=(n?c:o).ranges;if(!b.length)return t.exec?t.exec(this,e||{}):t(this,e||{});var r=c._eventRegistry;c._eventRegistry={};var m=new a(s);this.inVirtualSelectionMode=!0;for(var Z=b.length;Z--;){if(d)for(;Z>0&&b[Z].start.row==b[Z-1].end.row;)Z--;m.fromOrientedRange(b[Z]),m.index=Z,this.selection=s.selection=m;var g=t.exec?t.exec(this,e||{}):t(this,e||{});i||void 0===g||(i=g),m.toOrientedRange(b[Z])}m.detach(),this.selection=s.selection=c,this.inVirtualSelectionMode=!1,c._eventRegistry=r,c.mergeOverlappingRanges();var W=this.renderer.$scrollAnimation;return this.onCursorChange(),this.onSelectionChange(),W&&W.from==W.to&&this.renderer.animateScrolling(W.from),i}},this.exitMultiSelectMode=function(){this.inMultiSelectMode&&!this.inVirtualSelectionMode&&this.multiSelect.toSingleRange()},this.getSelectedText=function(){var t="";if(this.inMultiSelectMode&&!this.inVirtualSelectionMode){for(var e=this.multiSelect.rangeList.ranges,l=[],i=0;id&&(d=l.column),ib?t.insert(i,c.stringRepeat(" ",a-b)):t.remove(new n(i.row,i.column,i.row,i.column-a+b)),e.start.column=e.end.column=d,e.start.row=e.end.row=i.row,e.cursor=e.end})),e.fromOrientedRange(l[0]),this.renderer.updateCursor(),this.renderer.updateBackMarkers()}else{var b=this.selection.getRange(),r=b.start.row,m=b.end.row,Z=r==m;if(Z){var g,W=this.session.getLength();do{g=this.session.getLine(m)}while(/[=:]/.test(g)&&++m0);r<0&&(r=0),m>=W&&(m=W-1)}var h=this.session.removeFullLines(r,m);h=this.$reAlignText(h,Z),this.session.insert({row:r,column:0},h.join("\n")+"\n"),Z||(b.start.column=0,b.end.column=h[h.length-1].length),this.selection.setRange(b)}},this.$reAlignText=function(t,e){var l,i,n,a=!0,d=!0;return t.map((function(t){var e=t.match(/(\s*)(.*?)(\s*)([=:].*)/);return e?null==l?(l=e[1].length,i=e[2].length,n=e[3].length,e):(l+i+n!=e[1].length+e[2].length+e[3].length&&(d=!1),l!=e[1].length&&(a=!1),l>e[1].length&&(l=e[1].length),ie[3].length&&(n=e[3].length),e):[t]})).map(e?o:a?d?function(t){return t[2]?s(l+i-t[2].length)+t[2]+s(n)+t[4].replace(/^([=:])\s+/,"$1 "):t[0]}:o:function(t){return t[2]?s(l)+t[2]+s(n)+t[4].replace(/^([=:])\s+/,"$1 "):t[0]});function s(t){return c.stringRepeat(" ",t)}function o(t){return t[2]?s(l)+t[2]+s(i-t[2].length+n)+t[4].replace(/^([=:])\s+/,"$1 "):t[0]}}}).call(m.prototype),e.onSessionChange=function(t){var e=t.session;e&&!e.multiSelect&&(e.$selectionMarkers=[],e.selection.$initRangeList(),e.multiSelect=e.selection),this.multiSelect=e&&e.multiSelect;var l=t.oldSession;l&&(l.multiSelect.off("addRange",this.$onAddRange),l.multiSelect.off("removeRange",this.$onRemoveRange),l.multiSelect.off("multiSelect",this.$onMultiSelect),l.multiSelect.off("singleSelect",this.$onSingleSelect),l.multiSelect.lead.off("change",this.$checkMultiselectChange),l.multiSelect.anchor.off("change",this.$checkMultiselectChange)),e&&(e.multiSelect.on("addRange",this.$onAddRange),e.multiSelect.on("removeRange",this.$onRemoveRange),e.multiSelect.on("multiSelect",this.$onMultiSelect),e.multiSelect.on("singleSelect",this.$onSingleSelect),e.multiSelect.lead.on("change",this.$checkMultiselectChange),e.multiSelect.anchor.on("change",this.$checkMultiselectChange)),e&&this.inMultiSelectMode!=e.selection.inMultiSelectMode&&(e.selection.inMultiSelectMode?this.$onMultiSelect():this.$onSingleSelect())},e.MultiSelect=Z,t("./config").defineOptions(m.prototype,"editor",{enableMultiselect:{set:function(t){Z(this),t?(this.on("changeSession",this.$multiselectOnSessionChange),this.on("mousedown",d)):(this.off("changeSession",this.$multiselectOnSessionChange),this.off("mousedown",d))},value:!0},enableBlockSelect:{set:function(t){this.$blockSelectEnabled=t},value:!0}})})),ace.define("ace/mode/folding/fold_mode",["require","exports","module","ace/range"],(function(t,e,l){"use strict";var i=t("../../range").Range,n=e.FoldMode=function(){};(function(){this.foldingStartMarker=null,this.foldingStopMarker=null,this.getFoldWidget=function(t,e,l){var i=t.getLine(l);return this.foldingStartMarker.test(i)?"start":"markbeginend"==e&&this.foldingStopMarker&&this.foldingStopMarker.test(i)?"end":""},this.getFoldWidgetRange=function(t,e,l){return null},this.indentationBlock=function(t,e,l){var n=/\S/,a=t.getLine(e),d=a.search(n);if(-1!=d){for(var s=l||a.length,c=t.getLength(),o=e,b=e;++eo){var m=t.getLine(b).length;return new i(o,s,b,m)}}},this.openingBracketBlock=function(t,e,l,n,a){var d={row:l,column:n+1},s=t.$findClosingBracket(e,d,a);if(s){var c=t.foldWidgets[s.row];return null==c&&(c=t.getFoldWidget(s.row)),"start"==c&&s.row>d.row&&(s.row--,s.column=t.getLine(s.row).length),i.fromPoints(d,s)}},this.closingBracketBlock=function(t,e,l,n,a){var d={row:l,column:n},s=t.$findOpeningBracket(e,d);if(s)return s.column++,d.column--,i.fromPoints(s,d)}}).call(n.prototype)})),ace.define("ace/theme/textmate",["require","exports","module","ace/lib/dom"],(function(t,e,l){"use strict";e.isDark=!1,e.cssClass="ace-tm",e.cssText='.ace-tm .ace_gutter {\tbackground: #f0f0f0;\tcolor: #333;\t}\t.ace-tm .ace_print-margin {\twidth: 1px;\tbackground: #e8e8e8;\t}\t.ace-tm .ace_fold {\tbackground-color: #6B72E6;\t}\t.ace-tm {\tbackground-color: #FFFFFF;\tcolor: black;\t}\t.ace-tm .ace_cursor {\tcolor: black;\t}\t.ace-tm .ace_invisible {\tcolor: rgb(191, 191, 191);\t}\t.ace-tm .ace_storage,\t.ace-tm .ace_keyword {\tcolor: blue;\t}\t.ace-tm .ace_constant {\tcolor: rgb(197, 6, 11);\t}\t.ace-tm .ace_constant.ace_buildin {\tcolor: rgb(88, 72, 246);\t}\t.ace-tm .ace_constant.ace_language {\tcolor: rgb(88, 92, 246);\t}\t.ace-tm .ace_constant.ace_library {\tcolor: rgb(6, 150, 14);\t}\t.ace-tm .ace_invalid {\tbackground-color: rgba(255, 0, 0, 0.1);\tcolor: red;\t}\t.ace-tm .ace_support.ace_function {\tcolor: rgb(60, 76, 114);\t}\t.ace-tm .ace_support.ace_constant {\tcolor: rgb(6, 150, 14);\t}\t.ace-tm .ace_support.ace_type,\t.ace-tm .ace_support.ace_class {\tcolor: rgb(109, 121, 222);\t}\t.ace-tm .ace_keyword.ace_operator {\tcolor: rgb(104, 118, 135);\t}\t.ace-tm .ace_string {\tcolor: rgb(3, 106, 7);\t}\t.ace-tm .ace_comment {\tcolor: rgb(76, 136, 107);\t}\t.ace-tm .ace_comment.ace_doc {\tcolor: rgb(0, 102, 255);\t}\t.ace-tm .ace_comment.ace_doc.ace_tag {\tcolor: rgb(128, 159, 191);\t}\t.ace-tm .ace_constant.ace_numeric {\tcolor: rgb(0, 0, 205);\t}\t.ace-tm .ace_variable {\tcolor: rgb(49, 132, 149);\t}\t.ace-tm .ace_xml-pe {\tcolor: rgb(104, 104, 91);\t}\t.ace-tm .ace_entity.ace_name.ace_function {\tcolor: #0000A2;\t}\t.ace-tm .ace_heading {\tcolor: rgb(12, 7, 255);\t}\t.ace-tm .ace_list {\tcolor:rgb(185, 6, 144);\t}\t.ace-tm .ace_meta.ace_tag {\tcolor:rgb(0, 22, 142);\t}\t.ace-tm .ace_string.ace_regex {\tcolor: rgb(255, 0, 0)\t}\t.ace-tm .ace_marker-layer .ace_selection {\tbackground: rgb(181, 213, 255);\t}\t.ace-tm.ace_multiselect .ace_selection.ace_start {\tbox-shadow: 0 0 3px 0px white;\t}\t.ace-tm .ace_marker-layer .ace_step {\tbackground: rgb(252, 255, 0);\t}\t.ace-tm .ace_marker-layer .ace_stack {\tbackground: rgb(164, 229, 101);\t}\t.ace-tm .ace_marker-layer .ace_bracket {\tmargin: -1px 0 0 -1px;\tborder: 1px solid rgb(192, 192, 192);\t}\t.ace-tm .ace_marker-layer .ace_active-line {\tbackground: rgba(0, 0, 0, 0.07);\t}\t.ace-tm .ace_gutter-active-line {\tbackground-color : #dcdcdc;\t}\t.ace-tm .ace_marker-layer .ace_selected-word {\tbackground: rgb(250, 250, 255);\tborder: 1px solid rgb(200, 200, 250);\t}\t.ace-tm .ace_indent-guide {\tbackground: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==") right repeat-y;\t}\t',t("../lib/dom").importCssString(e.cssText,e.cssClass)})),ace.define("ace/line_widgets",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/range"],(function(t,e,l){"use strict";t("./lib/oop");var i=t("./lib/dom");function n(t){this.session=t,this.session.widgetManager=this,this.session.getRowLength=this.getRowLength,this.session.$getWidgetScreenLength=this.$getWidgetScreenLength,this.updateOnChange=this.updateOnChange.bind(this),this.renderWidgets=this.renderWidgets.bind(this),this.measureWidgets=this.measureWidgets.bind(this),this.session._changedWidgets=[],this.$onChangeEditor=this.$onChangeEditor.bind(this),this.session.on("change",this.updateOnChange),this.session.on("changeFold",this.updateOnFold),this.session.on("changeEditor",this.$onChangeEditor)}t("./range").Range,function(){this.getRowLength=function(t){var e;return e=this.lineWidgets&&this.lineWidgets[t]&&this.lineWidgets[t].rowCount||0,this.$useWrapMode&&this.$wrapData[t]?this.$wrapData[t].length+1+e:1+e},this.$getWidgetScreenLength=function(){var t=0;return this.lineWidgets.forEach((function(e){e&&e.rowCount&&!e.hidden&&(t+=e.rowCount)})),t},this.$onChangeEditor=function(t){this.attach(t.editor)},this.attach=function(t){t&&t.widgetManager&&t.widgetManager!=this&&t.widgetManager.detach(),this.editor!=t&&(this.detach(),this.editor=t,t&&(t.widgetManager=this,t.renderer.on("beforeRender",this.measureWidgets),t.renderer.on("afterRender",this.renderWidgets)))},this.detach=function(t){var e=this.editor;if(e){this.editor=null,e.widgetManager=null,e.renderer.off("beforeRender",this.measureWidgets),e.renderer.off("afterRender",this.renderWidgets);var l=this.session.lineWidgets;l&&l.forEach((function(t){t&&t.el&&t.el.parentNode&&(t._inDocument=!1,t.el.parentNode.removeChild(t.el))}))}},this.updateOnFold=function(t,e){var l=e.lineWidgets;if(l&&t.action){for(var i=t.data,n=i.start.row,a=i.end.row,d="add"==t.action,s=n+1;s0&&!i[n];)n--;this.firstRow=l.firstRow,this.lastRow=l.lastRow,e.$cursorLayer.config=l;for(var d=n;d<=a;d++){var s=i[d];if(s&&s.el)if(s.hidden)s.el.style.top=-100-(s.pixelHeight||0)+"px";else{s._inDocument||(s._inDocument=!0,e.container.appendChild(s.el));var c=e.$cursorLayer.getPixelPosition({row:d,column:0},!0).top;s.coverLine||(c+=l.lineHeight*this.session.getRowLineCount(s.row)),s.el.style.top=c-l.offset+"px";var o=s.coverGutter?0:e.gutterWidth;s.fixedWidth||(o-=e.scrollLeft),s.el.style.left=o+"px",s.fullWidth&&s.screenWidth&&(s.el.style.minWidth=l.width+2*l.padding+"px"),s.fixedWidth?s.el.style.right=e.scrollBar.getWidth()+"px":s.el.style.right=""}}}}}.call(n.prototype),e.LineWidgets=n})),ace.define("ace/ext/error_marker",["require","exports","module","ace/line_widgets","ace/lib/dom","ace/range"],(function(t,e,l){"use strict";var i=t("../line_widgets").LineWidgets,n=t("../lib/dom"),a=t("../range").Range;e.showErrorMarker=function(t,e){var l=t.session;l.widgetManager||(l.widgetManager=new i(l),l.widgetManager.attach(t));var d=t.getCursorPosition(),s=d.row,c=l.widgetManager.getWidgetsAtRow(s).filter((function(t){return"errorMarker"==t.type}))[0];c?c.destroy():s-=e;var o,b=function(t,e,l){var i=t.getAnnotations().sort(a.comparePoints);if(i.length){var n=function(t,e,l){for(var i=0,n=t.length-1;i<=n;){var a=i+n>>1,d=l(e,t[a]);if(d>0)i=a+1;else{if(!(d<0))return a;n=a-1}}return-(i+1)}(i,{row:e,column:-1},a.comparePoints);n<0&&(n=-n-1),n>=i.length?n=l>0?0:i.length-1:0===n&&l<0&&(n=i.length-1);var d=i[n];if(d&&l){if(d.row===e){do{d=i[n+=l]}while(d&&d.row===e);if(!d)return i.slice()}var s=[];e=d.row;do{s[l<0?"unshift":"push"](d),d=i[n+=l]}while(d&&d.row==e);return s.length&&s}}}(l,s,e);if(b){var r=b[0];d.column=(r.pos&&"number"!=typeof r.column?r.pos.sc:r.column)||0,d.row=r.row,o=t.renderer.$gutterLayer.$annotations[d.row]}else{if(c)return;o={text:["Looks good!"],className:"ace_ok"}}t.session.unfold(d.row),t.selection.moveToPosition(d);var m={row:d.row,fixedWidth:!0,coverGutter:!0,el:n.createElement("div"),type:"errorMarker"},Z=m.el.appendChild(n.createElement("div")),g=m.el.appendChild(n.createElement("div"));g.className="error_widget_arrow "+o.className;var W=t.renderer.$cursorLayer.getPixelPosition(d).left;g.style.left=W+t.renderer.gutterWidth-5+"px",m.el.className="error_widget_wrapper",Z.className="error_widget "+o.className,Z.innerHTML=o.text.join("
"),Z.appendChild(n.createElement("div"));var h=function(t,e,l){if(0===e&&("esc"===l||"return"===l))return m.destroy(),{command:"null"}};m.destroy=function(){t.$mouseHandler.isMousePressed||(t.keyBinding.removeKeyboardHandler(h),l.widgetManager.removeLineWidget(m),t.off("changeSelection",m.destroy),t.off("changeSession",m.destroy),t.off("mouseup",m.destroy),t.off("change",m.destroy))},t.keyBinding.addKeyboardHandler(h),t.on("changeSelection",m.destroy),t.on("changeSession",m.destroy),t.on("mouseup",m.destroy),t.on("change",m.destroy),t.session.widgetManager.addLineWidget(m),m.el.onmousedown=t.focus.bind(t),t.renderer.scrollCursorIntoView(null,.5,{bottom:m.el.offsetHeight})},n.importCssString("\t .error_widget_wrapper {\t background: inherit;\t color: inherit;\t border:none\t }\t .error_widget {\t border-top: solid 2px;\t border-bottom: solid 2px;\t margin: 5px 0;\t padding: 10px 40px;\t white-space: pre-wrap;\t }\t .error_widget.ace_error, .error_widget_arrow.ace_error{\t border-color: #ff5a5a\t }\t .error_widget.ace_warning, .error_widget_arrow.ace_warning{\t border-color: #F1D817\t }\t .error_widget.ace_info, .error_widget_arrow.ace_info{\t border-color: #5a5a5a\t }\t .error_widget.ace_ok, .error_widget_arrow.ace_ok{\t border-color: #5aaa5a\t }\t .error_widget_arrow {\t position: absolute;\t border: solid 5px;\t border-top-color: transparent!important;\t border-right-color: transparent!important;\t border-left-color: transparent!important;\t top: -5px;\t }\t","")})),ace.define("ace/ace",["require","exports","module","ace/lib/fixoldbrowsers","ace/lib/dom","ace/lib/event","ace/editor","ace/edit_session","ace/undomanager","ace/virtual_renderer","ace/worker/worker_client","ace/keyboard/hash_handler","ace/placeholder","ace/multi_select","ace/mode/folding/fold_mode","ace/theme/textmate","ace/ext/error_marker","ace/config"],(function(t,e,l){"use strict";t("./lib/fixoldbrowsers");var i=t("./lib/dom"),n=t("./lib/event"),a=t("./editor").Editor,d=t("./edit_session").EditSession,s=t("./undomanager").UndoManager,c=t("./virtual_renderer").VirtualRenderer;t("./worker/worker_client"),t("./keyboard/hash_handler"),t("./placeholder"),t("./multi_select"),t("./mode/folding/fold_mode"),t("./theme/textmate"),t("./ext/error_marker"),e.config=t("./config"),e.acequire=t,e.edit=function(t){if("string"==typeof t){var l=t;if(!(t=document.getElementById(l)))throw new Error("ace.edit can't find div #"+l)}if(t&&t.env&&t.env.editor instanceof a)return t.env.editor;var d="";if(t&&/input|textarea/i.test(t.tagName)){var s=t;d=s.value,t=i.createElement("pre"),s.parentNode.replaceChild(t,s)}else t&&(d=i.getInnerText(t),t.innerHTML="");var o=e.createEditSession(d),b=new a(new c(t));b.setSession(o);var r={document:o,editor:b,onResize:b.resize.bind(b,null)};return s&&(r.textarea=s),n.addListener(window,"resize",r.onResize),b.on("destroy",(function(){n.removeListener(window,"resize",r.onResize),r.editor.container.env=null})),b.container.env=b.env=r,b},e.createEditSession=function(t,e){var l=new d(t,e);return l.setUndoManager(new s),l},e.EditSession=d,e.UndoManager=s,e.version="1.2.3"})),ace.acequire(["ace/ace"],(function(t){for(var e in t&&t.config.init(!0),window.ace||(window.ace=t),t)t.hasOwnProperty(e)&&(window.ace[e]=t[e])})),t.exports=window.ace.acequire("ace/ace")},function(t,e){t.exports=function(){throw new Error("define cannot be used indirect")}},function(t,e){(function(e){t.exports=function(){if(e.Blob)try{return new Blob(["asdf"],{type:"text/plain"}),Blob}catch(t){}var t=e.WebKitBlobBuilder||e.MozBlobBuilder||e.MSBlobBuilder;return function(e,l){var i=new t,n=l.endings,a=l.type;if(n)for(var d=0,s=e.length;d-1},Z.recordAutoInsert=function(t,e,l){var n=t.getCursorPosition(),a=e.doc.getLine(n.row);this.isAutoInsertedClosing(n,a,i.autoInsertedLineEnd[0])||(i.autoInsertedBrackets=0),i.autoInsertedRow=n.row,i.autoInsertedLineEnd=l+a.substr(n.column),i.autoInsertedBrackets++},Z.recordMaybeInsert=function(t,e,l){var n=t.getCursorPosition(),a=e.doc.getLine(n.row);this.isMaybeInsertedClosing(n,a)||(i.maybeInsertedBrackets=0),i.maybeInsertedRow=n.row,i.maybeInsertedLineStart=a.substr(0,n.column)+l,i.maybeInsertedLineEnd=a.substr(n.column),i.maybeInsertedBrackets++},Z.isAutoInsertedClosing=function(t,e,l){return i.autoInsertedBrackets>0&&t.row===i.autoInsertedRow&&l===i.autoInsertedLineEnd[0]&&e.substr(t.column)===i.autoInsertedLineEnd},Z.isMaybeInsertedClosing=function(t,e){return i.maybeInsertedBrackets>0&&t.row===i.maybeInsertedRow&&e.substr(t.column)===i.maybeInsertedLineEnd&&e.substr(0,t.column)==i.maybeInsertedLineStart},Z.popAutoInsertedClosing=function(){i.autoInsertedLineEnd=i.autoInsertedLineEnd.substr(1),i.autoInsertedBrackets--},Z.clearMaybeInsertedClosing=function(){i&&(i.maybeInsertedBrackets=0,i.maybeInsertedRow=-1)},n.inherits(Z,a),e.CstyleBehaviour=Z})),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],(function(t,e,l){"use strict";var i=t("../../lib/oop"),n=t("../../range").Range,a=t("./fold_mode").FoldMode,d=e.FoldMode=function(t){t&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+t.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+t.end)))};i.inherits(d,a),function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(t,e,l){var i=t.getLine(l);if(this.singleLineBlockCommentRe.test(i)&&!this.startRegionRe.test(i)&&!this.tripleStarBlockCommentRe.test(i))return"";var n=this._getFoldWidgetBase(t,e,l);return!n&&this.startRegionRe.test(i)?"start":n},this.getFoldWidgetRange=function(t,e,l,i){var n,a=t.getLine(l);if(this.startRegionRe.test(a))return this.getCommentRegionBlock(t,a,l);if(n=a.match(this.foldingStartMarker)){var d=n.index;if(n[1])return this.openingBracketBlock(t,n[1],l,d);var s=t.getCommentFoldRange(l,d+n[0].length,1);return s&&!s.isMultiLine()&&(i?s=this.getSectionRange(t,l):"all"!=e&&(s=null)),s}return"markbegin"!==e&&(n=a.match(this.foldingStopMarker))?(d=n.index+n[0].length,n[1]?this.closingBracketBlock(t,n[1],l,d):t.getCommentFoldRange(l,d,-1)):void 0},this.getSectionRange=function(t,e){for(var l=t.getLine(e),i=l.search(/\S/),a=e,d=l.length,s=e+=1,c=t.getLength();++eo)break;var b=this.getFoldWidgetRange(t,"all",e);if(b){if(b.start.row<=a)break;if(b.isMultiLine())e=b.end.row;else if(i==o)break}s=e}}return new n(a,d,s,t.getLine(s).length)},this.getCommentRegionBlock=function(t,e,l){for(var i=e.search(/\s*$/),a=t.getLength(),d=l,s=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,c=1;++ld)return new n(d,i,l,e.length)}}.call(d.prototype)})),ace.define("ace/mode/json",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/json_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle","ace/worker/worker_client"],(function(t,e,i){"use strict";var n=t("../lib/oop"),a=t("./text").Mode,d=t("./json_highlight_rules").JsonHighlightRules,s=t("./matching_brace_outdent").MatchingBraceOutdent,c=t("./behaviour/cstyle").CstyleBehaviour,o=t("./folding/cstyle").FoldMode,b=t("../worker/worker_client").WorkerClient,r=function(){this.HighlightRules=d,this.$outdent=new s,this.$behaviour=new c,this.foldingRules=new o};n.inherits(r,a),function(){this.getNextLineIndent=function(t,e,l){var i=this.$getIndent(e);return"start"==t&&e.match(/^.*[\{\(\[]\s*$/)&&(i+=l),i},this.checkOutdent=function(t,e,l){return this.$outdent.checkOutdent(e,l)},this.autoOutdent=function(t,e,l){this.$outdent.autoOutdent(e,l)},this.createWorker=function(t){var e=new b(["ace"],l(68),"JsonWorker");return e.attachToDocument(t.getDocument()),e.on("annotate",(function(e){t.setAnnotations(e.data)})),e.on("terminate",(function(){t.clearAnnotations()})),e},this.$id="ace/mode/json"}.call(r.prototype),e.Mode=r}))},function(t,e){t.exports.id="ace/mode/json_worker",t.exports.src='"no use strict";(function(window){function resolveModuleId(id,paths){for(var testPath=id,tail="";testPath;){var alias=paths[testPath];if("string"==typeof alias)return alias+tail;if(alias)return alias.location.replace(/\\/*$/,"/")+(tail||alias.main||alias.name);if(alias===!1)return"";var i=testPath.lastIndexOf("/");if(-1===i)break;tail=testPath.substr(i)+tail,testPath=testPath.slice(0,i)}return id}if(!(void 0!==window.window&&window.document||window.acequire&&window.define)){window.console||(window.console=function(){var msgs=Array.prototype.slice.call(arguments,0);postMessage({type:"log",data:msgs})},window.console.error=window.console.warn=window.console.log=window.console.trace=window.console),window.window=window,window.ace=window,window.onerror=function(message,file,line,col,err){postMessage({type:"error",data:{message:message,data:err.data,file:file,line:line,col:col,stack:err.stack}})},window.normalizeModule=function(parentId,moduleName){if(-1!==moduleName.indexOf("!")){var chunks=moduleName.split("!");return window.normalizeModule(parentId,chunks[0])+"!"+window.normalizeModule(parentId,chunks[1])}if("."==moduleName.charAt(0)){var base=parentId.split("/").slice(0,-1).join("/");for(moduleName=(base?base+"/":"")+moduleName;-1!==moduleName.indexOf(".")&&previous!=moduleName;){var previous=moduleName;moduleName=moduleName.replace(/^\\.\\//,"").replace(/\\/\\.\\//,"/").replace(/[^\\/]+\\/\\.\\.\\//,"")}}return moduleName},window.acequire=function acequire(parentId,id){if(id||(id=parentId,parentId=null),!id.charAt)throw Error("worker.js acequire() accepts only (parentId, id) as arguments");id=window.normalizeModule(parentId,id);var module=window.acequire.modules[id];if(module)return module.initialized||(module.initialized=!0,module.exports=module.factory().exports),module.exports;if(!window.acequire.tlns)return console.log("unable to load "+id);var path=resolveModuleId(id,window.acequire.tlns);return".js"!=path.slice(-3)&&(path+=".js"),window.acequire.id=id,window.acequire.modules[id]={},importScripts(path),window.acequire(parentId,id)},window.acequire.modules={},window.acequire.tlns={},window.define=function(id,deps,factory){if(2==arguments.length?(factory=deps,"string"!=typeof id&&(deps=id,id=window.acequire.id)):1==arguments.length&&(factory=id,deps=[],id=window.acequire.id),"function"!=typeof factory)return window.acequire.modules[id]={exports:factory,initialized:!0},void 0;deps.length||(deps=["require","exports","module"]);var req=function(childId){return window.acequire(id,childId)};window.acequire.modules[id]={exports:{},factory:function(){var module=this,returnExports=factory.apply(this,deps.map(function(dep){switch(dep){case"require":return req;case"exports":return module.exports;case"module":return module;default:return req(dep)}}));return returnExports&&(module.exports=returnExports),module}}},window.define.amd={},acequire.tlns={},window.initBaseUrls=function(topLevelNamespaces){for(var i in topLevelNamespaces)acequire.tlns[i]=topLevelNamespaces[i]},window.initSender=function(){var EventEmitter=window.acequire("ace/lib/event_emitter").EventEmitter,oop=window.acequire("ace/lib/oop"),Sender=function(){};return function(){oop.implement(this,EventEmitter),this.callback=function(data,callbackId){postMessage({type:"call",id:callbackId,data:data})},this.emit=function(name,data){postMessage({type:"event",name:name,data:data})}}.call(Sender.prototype),new Sender};var main=window.main=null,sender=window.sender=null;window.onmessage=function(e){var msg=e.data;if(msg.event&&sender)sender._signal(msg.event,msg.data);else if(msg.command)if(main[msg.command])main[msg.command].apply(main,msg.args);else{if(!window[msg.command])throw Error("Unknown command:"+msg.command);window[msg.command].apply(window,msg.args)}else if(msg.init){window.initBaseUrls(msg.tlns),acequire("ace/lib/es5-shim"),sender=window.sender=window.initSender();var clazz=acequire(msg.module)[msg.classname];main=window.main=new clazz(sender)}}}})(this),ace.define("ace/lib/oop",["require","exports","module"],function(acequire,exports){"use strict";exports.inherits=function(ctor,superCtor){ctor.super_=superCtor,ctor.prototype=Object.create(superCtor.prototype,{constructor:{value:ctor,enumerable:!1,writable:!0,configurable:!0}})},exports.mixin=function(obj,mixin){for(var key in mixin)obj[key]=mixin[key];return obj},exports.implement=function(proto,mixin){exports.mixin(proto,mixin)}}),ace.define("ace/range",["require","exports","module"],function(acequire,exports){"use strict";var comparePoints=function(p1,p2){return p1.row-p2.row||p1.column-p2.column},Range=function(startRow,startColumn,endRow,endColumn){this.start={row:startRow,column:startColumn},this.end={row:endRow,column:endColumn}};(function(){this.isEqual=function(range){return this.start.row===range.start.row&&this.end.row===range.end.row&&this.start.column===range.start.column&&this.end.column===range.end.column},this.toString=function(){return"Range: ["+this.start.row+"/"+this.start.column+"] -> ["+this.end.row+"/"+this.end.column+"]"},this.contains=function(row,column){return 0==this.compare(row,column)},this.compareRange=function(range){var cmp,end=range.end,start=range.start;return cmp=this.compare(end.row,end.column),1==cmp?(cmp=this.compare(start.row,start.column),1==cmp?2:0==cmp?1:0):-1==cmp?-2:(cmp=this.compare(start.row,start.column),-1==cmp?-1:1==cmp?42:0)},this.comparePoint=function(p){return this.compare(p.row,p.column)},this.containsRange=function(range){return 0==this.comparePoint(range.start)&&0==this.comparePoint(range.end)},this.intersects=function(range){var cmp=this.compareRange(range);return-1==cmp||0==cmp||1==cmp},this.isEnd=function(row,column){return this.end.row==row&&this.end.column==column},this.isStart=function(row,column){return this.start.row==row&&this.start.column==column},this.setStart=function(row,column){"object"==typeof row?(this.start.column=row.column,this.start.row=row.row):(this.start.row=row,this.start.column=column)},this.setEnd=function(row,column){"object"==typeof row?(this.end.column=row.column,this.end.row=row.row):(this.end.row=row,this.end.column=column)},this.inside=function(row,column){return 0==this.compare(row,column)?this.isEnd(row,column)||this.isStart(row,column)?!1:!0:!1},this.insideStart=function(row,column){return 0==this.compare(row,column)?this.isEnd(row,column)?!1:!0:!1},this.insideEnd=function(row,column){return 0==this.compare(row,column)?this.isStart(row,column)?!1:!0:!1},this.compare=function(row,column){return this.isMultiLine()||row!==this.start.row?this.start.row>row?-1:row>this.end.row?1:this.start.row===row?column>=this.start.column?0:-1:this.end.row===row?this.end.column>=column?0:1:0:this.start.column>column?-1:column>this.end.column?1:0},this.compareStart=function(row,column){return this.start.row==row&&this.start.column==column?-1:this.compare(row,column)},this.compareEnd=function(row,column){return this.end.row==row&&this.end.column==column?1:this.compare(row,column)},this.compareInside=function(row,column){return this.end.row==row&&this.end.column==column?1:this.start.row==row&&this.start.column==column?-1:this.compare(row,column)},this.clipRows=function(firstRow,lastRow){if(this.end.row>lastRow)var end={row:lastRow+1,column:0};else if(firstRow>this.end.row)var end={row:firstRow,column:0};if(this.start.row>lastRow)var start={row:lastRow+1,column:0};else if(firstRow>this.start.row)var start={row:firstRow,column:0};return Range.fromPoints(start||this.start,end||this.end)},this.extend=function(row,column){var cmp=this.compare(row,column);if(0==cmp)return this;if(-1==cmp)var start={row:row,column:column};else var end={row:row,column:column};return Range.fromPoints(start||this.start,end||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 Range.fromPoints(this.start,this.end)},this.collapseRows=function(){return 0==this.end.column?new Range(this.start.row,0,Math.max(this.start.row,this.end.row-1),0):new Range(this.start.row,0,this.end.row,0)},this.toScreenRange=function(session){var screenPosStart=session.documentToScreenPosition(this.start),screenPosEnd=session.documentToScreenPosition(this.end);return new Range(screenPosStart.row,screenPosStart.column,screenPosEnd.row,screenPosEnd.column)},this.moveBy=function(row,column){this.start.row+=row,this.start.column+=column,this.end.row+=row,this.end.column+=column}}).call(Range.prototype),Range.fromPoints=function(start,end){return new Range(start.row,start.column,end.row,end.column)},Range.comparePoints=comparePoints,Range.comparePoints=function(p1,p2){return p1.row-p2.row||p1.column-p2.column},exports.Range=Range}),ace.define("ace/apply_delta",["require","exports","module"],function(acequire,exports){"use strict";exports.applyDelta=function(docLines,delta){var row=delta.start.row,startColumn=delta.start.column,line=docLines[row]||"";switch(delta.action){case"insert":var lines=delta.lines;if(1===lines.length)docLines[row]=line.substring(0,startColumn)+delta.lines[0]+line.substring(startColumn);else{var args=[row,1].concat(delta.lines);docLines.splice.apply(docLines,args),docLines[row]=line.substring(0,startColumn)+docLines[row],docLines[row+delta.lines.length-1]+=line.substring(startColumn)}break;case"remove":var endColumn=delta.end.column,endRow=delta.end.row;row===endRow?docLines[row]=line.substring(0,startColumn)+line.substring(endColumn):docLines.splice(row,endRow-row+1,line.substring(0,startColumn)+docLines[endRow].substring(endColumn))}}}),ace.define("ace/lib/event_emitter",["require","exports","module"],function(acequire,exports){"use strict";var EventEmitter={},stopPropagation=function(){this.propagationStopped=!0},preventDefault=function(){this.defaultPrevented=!0};EventEmitter._emit=EventEmitter._dispatchEvent=function(eventName,e){this._eventRegistry||(this._eventRegistry={}),this._defaultHandlers||(this._defaultHandlers={});var listeners=this._eventRegistry[eventName]||[],defaultHandler=this._defaultHandlers[eventName];if(listeners.length||defaultHandler){"object"==typeof e&&e||(e={}),e.type||(e.type=eventName),e.stopPropagation||(e.stopPropagation=stopPropagation),e.preventDefault||(e.preventDefault=preventDefault),listeners=listeners.slice();for(var i=0;listeners.length>i&&(listeners[i](e,this),!e.propagationStopped);i++);return defaultHandler&&!e.defaultPrevented?defaultHandler(e,this):void 0}},EventEmitter._signal=function(eventName,e){var listeners=(this._eventRegistry||{})[eventName];if(listeners){listeners=listeners.slice();for(var i=0;listeners.length>i;i++)listeners[i](e,this)}},EventEmitter.once=function(eventName,callback){var _self=this;callback&&this.addEventListener(eventName,function newCallback(){_self.removeEventListener(eventName,newCallback),callback.apply(null,arguments)})},EventEmitter.setDefaultHandler=function(eventName,callback){var handlers=this._defaultHandlers;if(handlers||(handlers=this._defaultHandlers={_disabled_:{}}),handlers[eventName]){var old=handlers[eventName],disabled=handlers._disabled_[eventName];disabled||(handlers._disabled_[eventName]=disabled=[]),disabled.push(old);var i=disabled.indexOf(callback);-1!=i&&disabled.splice(i,1)}handlers[eventName]=callback},EventEmitter.removeDefaultHandler=function(eventName,callback){var handlers=this._defaultHandlers;if(handlers){var disabled=handlers._disabled_[eventName];if(handlers[eventName]==callback)handlers[eventName],disabled&&this.setDefaultHandler(eventName,disabled.pop());else if(disabled){var i=disabled.indexOf(callback);-1!=i&&disabled.splice(i,1)}}},EventEmitter.on=EventEmitter.addEventListener=function(eventName,callback,capturing){this._eventRegistry=this._eventRegistry||{};var listeners=this._eventRegistry[eventName];return listeners||(listeners=this._eventRegistry[eventName]=[]),-1==listeners.indexOf(callback)&&listeners[capturing?"unshift":"push"](callback),callback},EventEmitter.off=EventEmitter.removeListener=EventEmitter.removeEventListener=function(eventName,callback){this._eventRegistry=this._eventRegistry||{};var listeners=this._eventRegistry[eventName];if(listeners){var index=listeners.indexOf(callback);-1!==index&&listeners.splice(index,1)}},EventEmitter.removeAllListeners=function(eventName){this._eventRegistry&&(this._eventRegistry[eventName]=[])},exports.EventEmitter=EventEmitter}),ace.define("ace/anchor",["require","exports","module","ace/lib/oop","ace/lib/event_emitter"],function(acequire,exports){"use strict";var oop=acequire("./lib/oop"),EventEmitter=acequire("./lib/event_emitter").EventEmitter,Anchor=exports.Anchor=function(doc,row,column){this.$onChange=this.onChange.bind(this),this.attach(doc),column===void 0?this.setPosition(row.row,row.column):this.setPosition(row,column)};(function(){function $pointsInOrder(point1,point2,equalPointsInOrder){var bColIsAfter=equalPointsInOrder?point1.column<=point2.column:point1.columnthis.row)){var point=$getTransformedPoint(delta,{row:this.row,column:this.column},this.$insertRight);this.setPosition(point.row,point.column,!0)}},this.setPosition=function(row,column,noClip){var pos;if(pos=noClip?{row:row,column:column}:this.$clipPositionToDocument(row,column),this.row!=pos.row||this.column!=pos.column){var old={row:this.row,column:this.column};this.row=pos.row,this.column=pos.column,this._signal("change",{old:old,value:pos})}},this.detach=function(){this.document.removeEventListener("change",this.$onChange)},this.attach=function(doc){this.document=doc||this.document,this.document.on("change",this.$onChange)},this.$clipPositionToDocument=function(row,column){var pos={};return row>=this.document.getLength()?(pos.row=Math.max(0,this.document.getLength()-1),pos.column=this.document.getLine(pos.row).length):0>row?(pos.row=0,pos.column=0):(pos.row=row,pos.column=Math.min(this.document.getLine(pos.row).length,Math.max(0,column))),0>column&&(pos.column=0),pos}}).call(Anchor.prototype)}),ace.define("ace/document",["require","exports","module","ace/lib/oop","ace/apply_delta","ace/lib/event_emitter","ace/range","ace/anchor"],function(acequire,exports){"use strict";var oop=acequire("./lib/oop"),applyDelta=acequire("./apply_delta").applyDelta,EventEmitter=acequire("./lib/event_emitter").EventEmitter,Range=acequire("./range").Range,Anchor=acequire("./anchor").Anchor,Document=function(textOrLines){this.$lines=[""],0===textOrLines.length?this.$lines=[""]:Array.isArray(textOrLines)?this.insertMergedLines({row:0,column:0},textOrLines):this.insert({row:0,column:0},textOrLines)};(function(){oop.implement(this,EventEmitter),this.setValue=function(text){var len=this.getLength()-1;this.remove(new Range(0,0,len,this.getLine(len).length)),this.insert({row:0,column:0},text)},this.getValue=function(){return this.getAllLines().join(this.getNewLineCharacter())},this.createAnchor=function(row,column){return new Anchor(this,row,column)},this.$split=0==="aaa".split(/a/).length?function(text){return text.replace(/\\r\\n|\\r/g,"\\n").split("\\n")}:function(text){return text.split(/\\r\\n|\\r|\\n/)},this.$detectNewLine=function(text){var match=text.match(/^.*?(\\r\\n|\\r|\\n)/m);this.$autoNewLine=match?match[1]:"\\n",this._signal("changeNewLineMode")},this.getNewLineCharacter=function(){switch(this.$newLineMode){case"windows":return"\\r\\n";case"unix":return"\\n";default:return this.$autoNewLine||"\\n"}},this.$autoNewLine="",this.$newLineMode="auto",this.setNewLineMode=function(newLineMode){this.$newLineMode!==newLineMode&&(this.$newLineMode=newLineMode,this._signal("changeNewLineMode"))},this.getNewLineMode=function(){return this.$newLineMode},this.isNewLine=function(text){return"\\r\\n"==text||"\\r"==text||"\\n"==text},this.getLine=function(row){return this.$lines[row]||""},this.getLines=function(firstRow,lastRow){return this.$lines.slice(firstRow,lastRow+1)},this.getAllLines=function(){return this.getLines(0,this.getLength())},this.getLength=function(){return this.$lines.length},this.getTextRange=function(range){return this.getLinesForRange(range).join(this.getNewLineCharacter())},this.getLinesForRange=function(range){var lines;if(range.start.row===range.end.row)lines=[this.getLine(range.start.row).substring(range.start.column,range.end.column)];else{lines=this.getLines(range.start.row,range.end.row),lines[0]=(lines[0]||"").substring(range.start.column);var l=lines.length-1;range.end.row-range.start.row==l&&(lines[l]=lines[l].substring(0,range.end.column))}return lines},this.insertLines=function(row,lines){return console.warn("Use of document.insertLines is deprecated. Use the insertFullLines method instead."),this.insertFullLines(row,lines)},this.removeLines=function(firstRow,lastRow){return console.warn("Use of document.removeLines is deprecated. Use the removeFullLines method instead."),this.removeFullLines(firstRow,lastRow)},this.insertNewLine=function(position){return console.warn("Use of document.insertNewLine is deprecated. Use insertMergedLines(position, [\'\', \'\']) instead."),this.insertMergedLines(position,["",""])},this.insert=function(position,text){return 1>=this.getLength()&&this.$detectNewLine(text),this.insertMergedLines(position,this.$split(text))},this.insertInLine=function(position,text){var start=this.clippedPos(position.row,position.column),end=this.pos(position.row,position.column+text.length);return this.applyDelta({start:start,end:end,action:"insert",lines:[text]},!0),this.clonePos(end)},this.clippedPos=function(row,column){var length=this.getLength();void 0===row?row=length:0>row?row=0:row>=length&&(row=length-1,column=void 0);var line=this.getLine(row);return void 0==column&&(column=line.length),column=Math.min(Math.max(column,0),line.length),{row:row,column:column}},this.clonePos=function(pos){return{row:pos.row,column:pos.column}},this.pos=function(row,column){return{row:row,column:column}},this.$clipPosition=function(position){var length=this.getLength();return position.row>=length?(position.row=Math.max(0,length-1),position.column=this.getLine(length-1).length):(position.row=Math.max(0,position.row),position.column=Math.min(Math.max(position.column,0),this.getLine(position.row).length)),position},this.insertFullLines=function(row,lines){row=Math.min(Math.max(row,0),this.getLength());var column=0;this.getLength()>row?(lines=lines.concat([""]),column=0):(lines=[""].concat(lines),row--,column=this.$lines[row].length),this.insertMergedLines({row:row,column:column},lines)},this.insertMergedLines=function(position,lines){var start=this.clippedPos(position.row,position.column),end={row:start.row+lines.length-1,column:(1==lines.length?start.column:0)+lines[lines.length-1].length};return this.applyDelta({start:start,end:end,action:"insert",lines:lines}),this.clonePos(end)},this.remove=function(range){var start=this.clippedPos(range.start.row,range.start.column),end=this.clippedPos(range.end.row,range.end.column);return this.applyDelta({start:start,end:end,action:"remove",lines:this.getLinesForRange({start:start,end:end})}),this.clonePos(start)},this.removeInLine=function(row,startColumn,endColumn){var start=this.clippedPos(row,startColumn),end=this.clippedPos(row,endColumn);return this.applyDelta({start:start,end:end,action:"remove",lines:this.getLinesForRange({start:start,end:end})},!0),this.clonePos(start)},this.removeFullLines=function(firstRow,lastRow){firstRow=Math.min(Math.max(0,firstRow),this.getLength()-1),lastRow=Math.min(Math.max(0,lastRow),this.getLength()-1);var deleteFirstNewLine=lastRow==this.getLength()-1&&firstRow>0,deleteLastNewLine=this.getLength()-1>lastRow,startRow=deleteFirstNewLine?firstRow-1:firstRow,startCol=deleteFirstNewLine?this.getLine(startRow).length:0,endRow=deleteLastNewLine?lastRow+1:lastRow,endCol=deleteLastNewLine?0:this.getLine(endRow).length,range=new Range(startRow,startCol,endRow,endCol),deletedLines=this.$lines.slice(firstRow,lastRow+1);return this.applyDelta({start:range.start,end:range.end,action:"remove",lines:this.getLinesForRange(range)}),deletedLines},this.removeNewLine=function(row){this.getLength()-1>row&&row>=0&&this.applyDelta({start:this.pos(row,this.getLine(row).length),end:this.pos(row+1,0),action:"remove",lines:["",""]})},this.replace=function(range,text){if(range instanceof Range||(range=Range.fromPoints(range.start,range.end)),0===text.length&&range.isEmpty())return range.start;if(text==this.getTextRange(range))return range.end;this.remove(range);var end;return end=text?this.insert(range.start,text):range.start},this.applyDeltas=function(deltas){for(var i=0;deltas.length>i;i++)this.applyDelta(deltas[i])},this.revertDeltas=function(deltas){for(var i=deltas.length-1;i>=0;i--)this.revertDelta(deltas[i])},this.applyDelta=function(delta,doNotValidate){var isInsert="insert"==delta.action;(isInsert?1>=delta.lines.length&&!delta.lines[0]:!Range.comparePoints(delta.start,delta.end))||(isInsert&&delta.lines.length>2e4&&this.$splitAndapplyLargeDelta(delta,2e4),applyDelta(this.$lines,delta,doNotValidate),this._signal("change",delta))},this.$splitAndapplyLargeDelta=function(delta,MAX){for(var lines=delta.lines,l=lines.length,row=delta.start.row,column=delta.start.column,from=0,to=0;;){from=to,to+=MAX-1;var chunk=lines.slice(from,to);if(to>l){delta.lines=chunk,delta.start.row=row+from,delta.start.column=column;break}chunk.push(""),this.applyDelta({start:this.pos(row+from,column),end:this.pos(row+to,column=0),action:delta.action,lines:chunk},!0)}},this.revertDelta=function(delta){this.applyDelta({start:this.clonePos(delta.start),end:this.clonePos(delta.end),action:"insert"==delta.action?"remove":"insert",lines:delta.lines.slice()})},this.indexToPosition=function(index,startRow){for(var lines=this.$lines||this.getAllLines(),newlineLength=this.getNewLineCharacter().length,i=startRow||0,l=lines.length;l>i;i++)if(index-=lines[i].length+newlineLength,0>index)return{row:i,column:index+lines[i].length+newlineLength};return{row:l-1,column:lines[l-1].length}},this.positionToIndex=function(pos,startRow){for(var lines=this.$lines||this.getAllLines(),newlineLength=this.getNewLineCharacter().length,index=0,row=Math.min(pos.row,lines.length),i=startRow||0;row>i;++i)index+=lines[i].length+newlineLength;return index+pos.column}}).call(Document.prototype),exports.Document=Document}),ace.define("ace/lib/lang",["require","exports","module"],function(acequire,exports){"use strict";exports.last=function(a){return a[a.length-1]},exports.stringReverse=function(string){return string.split("").reverse().join("")},exports.stringRepeat=function(string,count){for(var result="";count>0;)1&count&&(result+=string),(count>>=1)&&(string+=string);return result};var trimBeginRegexp=/^\\s\\s*/,trimEndRegexp=/\\s\\s*$/;exports.stringTrimLeft=function(string){return string.replace(trimBeginRegexp,"")},exports.stringTrimRight=function(string){return string.replace(trimEndRegexp,"")},exports.copyObject=function(obj){var copy={};for(var key in obj)copy[key]=obj[key];return copy},exports.copyArray=function(array){for(var copy=[],i=0,l=array.length;l>i;i++)copy[i]=array[i]&&"object"==typeof array[i]?this.copyObject(array[i]):array[i];return copy},exports.deepCopy=function deepCopy(obj){if("object"!=typeof obj||!obj)return obj;var copy;if(Array.isArray(obj)){copy=[];for(var key=0;obj.length>key;key++)copy[key]=deepCopy(obj[key]);return copy}var cons=obj.constructor;if(cons===RegExp)return obj;copy=cons();for(var key in obj)copy[key]=deepCopy(obj[key]);return copy},exports.arrayToMap=function(arr){for(var map={},i=0;arr.length>i;i++)map[arr[i]]=1;return map},exports.createMap=function(props){var map=Object.create(null);for(var i in props)map[i]=props[i];return map},exports.arrayRemove=function(array,value){for(var i=0;array.length>=i;i++)value===array[i]&&array.splice(i,1)},exports.escapeRegExp=function(str){return str.replace(/([.*+?^${}()|[\\]\\/\\\\])/g,"\\\\$1")},exports.escapeHTML=function(str){return str.replace(/&/g,"&").replace(/"/g,""").replace(/\'/g,"'").replace(/i;i+=2){if(Array.isArray(data[i+1]))var d={action:"insert",start:data[i],lines:data[i+1]};else var d={action:"remove",start:data[i],end:data[i+1]};doc.applyDelta(d,!0)}return _self.$timeout?deferredUpdate.schedule(_self.$timeout):(_self.onUpdate(),void 0)})};(function(){this.$timeout=500,this.setTimeout=function(timeout){this.$timeout=timeout},this.setValue=function(value){this.doc.setValue(value),this.deferredUpdate.schedule(this.$timeout)},this.getValue=function(callbackId){this.sender.callback(this.doc.getValue(),callbackId)},this.onUpdate=function(){},this.isPending=function(){return this.deferredUpdate.isPending()}}).call(Mirror.prototype)}),ace.define("ace/mode/json/json_parse",["require","exports","module"],function(){"use strict";var at,ch,text,value,escapee={\'"\':\'"\',"\\\\":"\\\\","/":"/",b:"\\b",f:"\\f",n:"\\n",r:"\\r",t:"\t"},error=function(m){throw{name:"SyntaxError",message:m,at:at,text:text}},next=function(c){return c&&c!==ch&&error("Expected \'"+c+"\' instead of \'"+ch+"\'"),ch=text.charAt(at),at+=1,ch},number=function(){var number,string="";for("-"===ch&&(string="-",next("-"));ch>="0"&&"9">=ch;)string+=ch,next();if("."===ch)for(string+=".";next()&&ch>="0"&&"9">=ch;)string+=ch;if("e"===ch||"E"===ch)for(string+=ch,next(),("-"===ch||"+"===ch)&&(string+=ch,next());ch>="0"&&"9">=ch;)string+=ch,next();return number=+string,isNaN(number)?(error("Bad number"),void 0):number},string=function(){var hex,i,uffff,string="";if(\'"\'===ch)for(;next();){if(\'"\'===ch)return next(),string;if("\\\\"===ch)if(next(),"u"===ch){for(uffff=0,i=0;4>i&&(hex=parseInt(next(),16),isFinite(hex));i+=1)uffff=16*uffff+hex;string+=String.fromCharCode(uffff)}else{if("string"!=typeof escapee[ch])break;string+=escapee[ch]}else string+=ch}error("Bad string")},white=function(){for(;ch&&" ">=ch;)next()},word=function(){switch(ch){case"t":return next("t"),next("r"),next("u"),next("e"),!0;case"f":return next("f"),next("a"),next("l"),next("s"),next("e"),!1;case"n":return next("n"),next("u"),next("l"),next("l"),null}error("Unexpected \'"+ch+"\'")},array=function(){var array=[];if("["===ch){if(next("["),white(),"]"===ch)return next("]"),array;for(;ch;){if(array.push(value()),white(),"]"===ch)return next("]"),array;next(","),white()}}error("Bad array")},object=function(){var key,object={};if("{"===ch){if(next("{"),white(),"}"===ch)return next("}"),object;for(;ch;){if(key=string(),white(),next(":"),Object.hasOwnProperty.call(object,key)&&error(\'Duplicate key "\'+key+\'"\'),object[key]=value(),white(),"}"===ch)return next("}"),object;next(","),white()}}error("Bad object")};return value=function(){switch(white(),ch){case"{":return object();case"[":return array();case\'"\':return string();case"-":return number();default:return ch>="0"&&"9">=ch?number():word()}},function(source,reviver){var result;return text=source,at=0,ch=" ",result=value(),white(),ch&&error("Syntax error"),"function"==typeof reviver?function walk(holder,key){var k,v,value=holder[key];if(value&&"object"==typeof value)for(k in value)Object.hasOwnProperty.call(value,k)&&(v=walk(value,k),void 0!==v?value[k]=v:delete value[k]);return reviver.call(holder,key,value)}({"":result},""):result}}),ace.define("ace/mode/json_worker",["require","exports","module","ace/lib/oop","ace/worker/mirror","ace/mode/json/json_parse"],function(acequire,exports){"use strict";var oop=acequire("../lib/oop"),Mirror=acequire("../worker/mirror").Mirror,parse=acequire("./json/json_parse"),JsonWorker=exports.JsonWorker=function(sender){Mirror.call(this,sender),this.setTimeout(200)};oop.inherits(JsonWorker,Mirror),function(){this.onUpdate=function(){var value=this.doc.getValue(),errors=[];try{value&&parse(value)}catch(e){var pos=this.doc.indexToPosition(e.at-1);errors.push({row:pos.row,column:pos.column,text:e.message,type:"error"})}this.sender.emit("annotate",errors)}}.call(JsonWorker.prototype)}),ace.define("ace/lib/es5-shim",["require","exports","module"],function(){function Empty(){}function doesDefinePropertyWork(object){try{return Object.defineProperty(object,"sentinel",{}),"sentinel"in object}catch(exception){}}function toInteger(n){return n=+n,n!==n?n=0:0!==n&&n!==1/0&&n!==-(1/0)&&(n=(n>0||-1)*Math.floor(Math.abs(n))),n}Function.prototype.bind||(Function.prototype.bind=function(that){var target=this;if("function"!=typeof target)throw new TypeError("Function.prototype.bind called on incompatible "+target);var args=slice.call(arguments,1),bound=function(){if(this instanceof bound){var result=target.apply(this,args.concat(slice.call(arguments)));return Object(result)===result?result:this}return target.apply(that,args.concat(slice.call(arguments)))};return target.prototype&&(Empty.prototype=target.prototype,bound.prototype=new Empty,Empty.prototype=null),bound});var defineGetter,defineSetter,lookupGetter,lookupSetter,supportsAccessors,call=Function.prototype.call,prototypeOfArray=Array.prototype,prototypeOfObject=Object.prototype,slice=prototypeOfArray.slice,_toString=call.bind(prototypeOfObject.toString),owns=call.bind(prototypeOfObject.hasOwnProperty);if((supportsAccessors=owns(prototypeOfObject,"__defineGetter__"))&&(defineGetter=call.bind(prototypeOfObject.__defineGetter__),defineSetter=call.bind(prototypeOfObject.__defineSetter__),lookupGetter=call.bind(prototypeOfObject.__lookupGetter__),lookupSetter=call.bind(prototypeOfObject.__lookupSetter__)),2!=[1,2].splice(0).length)if(function(){function makeArray(l){var a=Array(l+2);return a[0]=a[1]=0,a}var lengthBefore,array=[];return array.splice.apply(array,makeArray(20)),array.splice.apply(array,makeArray(26)),lengthBefore=array.length,array.splice(5,0,"XXX"),lengthBefore+1==array.length,lengthBefore+1==array.length?!0:void 0\n}()){var array_splice=Array.prototype.splice;Array.prototype.splice=function(start,deleteCount){return arguments.length?array_splice.apply(this,[void 0===start?0:start,void 0===deleteCount?this.length-start:deleteCount].concat(slice.call(arguments,2))):[]}}else Array.prototype.splice=function(pos,removeCount){var length=this.length;pos>0?pos>length&&(pos=length):void 0==pos?pos=0:0>pos&&(pos=Math.max(length+pos,0)),length>pos+removeCount||(removeCount=length-pos);var removed=this.slice(pos,pos+removeCount),insert=slice.call(arguments,2),add=insert.length;if(pos===length)add&&this.push.apply(this,insert);else{var remove=Math.min(removeCount,length-pos),tailOldPos=pos+remove,tailNewPos=tailOldPos+add-remove,tailCount=length-tailOldPos,lengthAfterRemove=length-remove;if(tailOldPos>tailNewPos)for(var i=0;tailCount>i;++i)this[tailNewPos+i]=this[tailOldPos+i];else if(tailNewPos>tailOldPos)for(i=tailCount;i--;)this[tailNewPos+i]=this[tailOldPos+i];if(add&&pos===lengthAfterRemove)this.length=lengthAfterRemove,this.push.apply(this,insert);else for(this.length=lengthAfterRemove+add,i=0;add>i;++i)this[pos+i]=insert[i]}return removed};Array.isArray||(Array.isArray=function(obj){return"[object Array]"==_toString(obj)});var boxedString=Object("a"),splitString="a"!=boxedString[0]||!(0 in boxedString);if(Array.prototype.forEach||(Array.prototype.forEach=function(fun){var object=toObject(this),self=splitString&&"[object String]"==_toString(this)?this.split(""):object,thisp=arguments[1],i=-1,length=self.length>>>0;if("[object Function]"!=_toString(fun))throw new TypeError;for(;length>++i;)i in self&&fun.call(thisp,self[i],i,object)}),Array.prototype.map||(Array.prototype.map=function(fun){var object=toObject(this),self=splitString&&"[object String]"==_toString(this)?this.split(""):object,length=self.length>>>0,result=Array(length),thisp=arguments[1];if("[object Function]"!=_toString(fun))throw new TypeError(fun+" is not a function");for(var i=0;length>i;i++)i in self&&(result[i]=fun.call(thisp,self[i],i,object));return result}),Array.prototype.filter||(Array.prototype.filter=function(fun){var value,object=toObject(this),self=splitString&&"[object String]"==_toString(this)?this.split(""):object,length=self.length>>>0,result=[],thisp=arguments[1];if("[object Function]"!=_toString(fun))throw new TypeError(fun+" is not a function");for(var i=0;length>i;i++)i in self&&(value=self[i],fun.call(thisp,value,i,object)&&result.push(value));return result}),Array.prototype.every||(Array.prototype.every=function(fun){var object=toObject(this),self=splitString&&"[object String]"==_toString(this)?this.split(""):object,length=self.length>>>0,thisp=arguments[1];if("[object Function]"!=_toString(fun))throw new TypeError(fun+" is not a function");for(var i=0;length>i;i++)if(i in self&&!fun.call(thisp,self[i],i,object))return!1;return!0}),Array.prototype.some||(Array.prototype.some=function(fun){var object=toObject(this),self=splitString&&"[object String]"==_toString(this)?this.split(""):object,length=self.length>>>0,thisp=arguments[1];if("[object Function]"!=_toString(fun))throw new TypeError(fun+" is not a function");for(var i=0;length>i;i++)if(i in self&&fun.call(thisp,self[i],i,object))return!0;return!1}),Array.prototype.reduce||(Array.prototype.reduce=function(fun){var object=toObject(this),self=splitString&&"[object String]"==_toString(this)?this.split(""):object,length=self.length>>>0;if("[object Function]"!=_toString(fun))throw new TypeError(fun+" is not a function");if(!length&&1==arguments.length)throw new TypeError("reduce of empty array with no initial value");var result,i=0;if(arguments.length>=2)result=arguments[1];else for(;;){if(i in self){result=self[i++];break}if(++i>=length)throw new TypeError("reduce of empty array with no initial value")}for(;length>i;i++)i in self&&(result=fun.call(void 0,result,self[i],i,object));return result}),Array.prototype.reduceRight||(Array.prototype.reduceRight=function(fun){var object=toObject(this),self=splitString&&"[object String]"==_toString(this)?this.split(""):object,length=self.length>>>0;if("[object Function]"!=_toString(fun))throw new TypeError(fun+" is not a function");if(!length&&1==arguments.length)throw new TypeError("reduceRight of empty array with no initial value");var result,i=length-1;if(arguments.length>=2)result=arguments[1];else for(;;){if(i in self){result=self[i--];break}if(0>--i)throw new TypeError("reduceRight of empty array with no initial value")}do i in this&&(result=fun.call(void 0,result,self[i],i,object));while(i--);return result}),Array.prototype.indexOf&&-1==[0,1].indexOf(1,2)||(Array.prototype.indexOf=function(sought){var self=splitString&&"[object String]"==_toString(this)?this.split(""):toObject(this),length=self.length>>>0;if(!length)return-1;var i=0;for(arguments.length>1&&(i=toInteger(arguments[1])),i=i>=0?i:Math.max(0,length+i);length>i;i++)if(i in self&&self[i]===sought)return i;return-1}),Array.prototype.lastIndexOf&&-1==[0,1].lastIndexOf(0,-3)||(Array.prototype.lastIndexOf=function(sought){var self=splitString&&"[object String]"==_toString(this)?this.split(""):toObject(this),length=self.length>>>0;if(!length)return-1;var i=length-1;for(arguments.length>1&&(i=Math.min(i,toInteger(arguments[1]))),i=i>=0?i:length-Math.abs(i);i>=0;i--)if(i in self&&sought===self[i])return i;return-1}),Object.getPrototypeOf||(Object.getPrototypeOf=function(object){return object.__proto__||(object.constructor?object.constructor.prototype:prototypeOfObject)}),!Object.getOwnPropertyDescriptor){var ERR_NON_OBJECT="Object.getOwnPropertyDescriptor called on a non-object: ";Object.getOwnPropertyDescriptor=function(object,property){if("object"!=typeof object&&"function"!=typeof object||null===object)throw new TypeError(ERR_NON_OBJECT+object);if(owns(object,property)){var descriptor,getter,setter;if(descriptor={enumerable:!0,configurable:!0},supportsAccessors){var prototype=object.__proto__;object.__proto__=prototypeOfObject;var getter=lookupGetter(object,property),setter=lookupSetter(object,property);if(object.__proto__=prototype,getter||setter)return getter&&(descriptor.get=getter),setter&&(descriptor.set=setter),descriptor}return descriptor.value=object[property],descriptor}}}if(Object.getOwnPropertyNames||(Object.getOwnPropertyNames=function(object){return Object.keys(object)}),!Object.create){var createEmpty;createEmpty=null===Object.prototype.__proto__?function(){return{__proto__:null}}:function(){var empty={};for(var i in empty)empty[i]=null;return empty.constructor=empty.hasOwnProperty=empty.propertyIsEnumerable=empty.isPrototypeOf=empty.toLocaleString=empty.toString=empty.valueOf=empty.__proto__=null,empty},Object.create=function(prototype,properties){var object;if(null===prototype)object=createEmpty();else{if("object"!=typeof prototype)throw new TypeError("typeof prototype["+typeof prototype+"] != \'object\'");var Type=function(){};Type.prototype=prototype,object=new Type,object.__proto__=prototype}return void 0!==properties&&Object.defineProperties(object,properties),object}}if(Object.defineProperty){var definePropertyWorksOnObject=doesDefinePropertyWork({}),definePropertyWorksOnDom="undefined"==typeof document||doesDefinePropertyWork(document.createElement("div"));if(!definePropertyWorksOnObject||!definePropertyWorksOnDom)var definePropertyFallback=Object.defineProperty}if(!Object.defineProperty||definePropertyFallback){var ERR_NON_OBJECT_DESCRIPTOR="Property description must be an object: ",ERR_NON_OBJECT_TARGET="Object.defineProperty called on non-object: ",ERR_ACCESSORS_NOT_SUPPORTED="getters & setters can not be defined on this javascript engine";Object.defineProperty=function(object,property,descriptor){if("object"!=typeof object&&"function"!=typeof object||null===object)throw new TypeError(ERR_NON_OBJECT_TARGET+object);if("object"!=typeof descriptor&&"function"!=typeof descriptor||null===descriptor)throw new TypeError(ERR_NON_OBJECT_DESCRIPTOR+descriptor);if(definePropertyFallback)try{return definePropertyFallback.call(Object,object,property,descriptor)}catch(exception){}if(owns(descriptor,"value"))if(supportsAccessors&&(lookupGetter(object,property)||lookupSetter(object,property))){var prototype=object.__proto__;object.__proto__=prototypeOfObject,delete object[property],object[property]=descriptor.value,object.__proto__=prototype}else object[property]=descriptor.value;else{if(!supportsAccessors)throw new TypeError(ERR_ACCESSORS_NOT_SUPPORTED);owns(descriptor,"get")&&defineGetter(object,property,descriptor.get),owns(descriptor,"set")&&defineSetter(object,property,descriptor.set)}return object}}Object.defineProperties||(Object.defineProperties=function(object,properties){for(var property in properties)owns(properties,property)&&Object.defineProperty(object,property,properties[property]);return object}),Object.seal||(Object.seal=function(object){return object}),Object.freeze||(Object.freeze=function(object){return object});try{Object.freeze(function(){})}catch(exception){Object.freeze=function(freezeObject){return function(object){return"function"==typeof object?object:freezeObject(object)}}(Object.freeze)}if(Object.preventExtensions||(Object.preventExtensions=function(object){return object}),Object.isSealed||(Object.isSealed=function(){return!1}),Object.isFrozen||(Object.isFrozen=function(){return!1}),Object.isExtensible||(Object.isExtensible=function(object){if(Object(object)===object)throw new TypeError;for(var name="";owns(object,name);)name+="?";object[name]=!0;var returnValue=owns(object,name);return delete object[name],returnValue}),!Object.keys){var hasDontEnumBug=!0,dontEnums=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],dontEnumsLength=dontEnums.length;for(var key in{toString:null})hasDontEnumBug=!1;Object.keys=function(object){if("object"!=typeof object&&"function"!=typeof object||null===object)throw new TypeError("Object.keys called on a non-object");var keys=[];for(var name in object)owns(object,name)&&keys.push(name);if(hasDontEnumBug)for(var i=0,ii=dontEnumsLength;ii>i;i++){var dontEnum=dontEnums[i];owns(object,dontEnum)&&keys.push(dontEnum)}return keys}}Date.now||(Date.now=function(){return(new Date).getTime()});var ws="\t\\n\v\\f\\r   ᠎              \\u2028\\u2029\ufeff";if(!String.prototype.trim||ws.trim()){ws="["+ws+"]";var trimBeginRegexp=RegExp("^"+ws+ws+"*"),trimEndRegexp=RegExp(ws+ws+"*$");String.prototype.trim=function(){return(this+"").replace(trimBeginRegexp,"").replace(trimEndRegexp,"")}}var toObject=function(o){if(null==o)throw new TypeError("can\'t convert "+o+" to object");return Object(o)}});'},function(t,e){ace.define("ace/ext/searchbox",["require","exports","module","ace/lib/dom","ace/lib/lang","ace/lib/event","ace/keyboard/hash_handler","ace/lib/keys"],(function(t,e,l){"use strict";var i=t("../lib/dom"),n=t("../lib/lang"),a=t("../lib/event"),d=t("../keyboard/hash_handler").HashHandler,s=t("../lib/keys");i.importCssString("\t.ace_search {\tbackground-color: #ddd;\tborder: 1px solid #cbcbcb;\tborder-top: 0 none;\tmax-width: 325px;\toverflow: hidden;\tmargin: 0;\tpadding: 4px;\tpadding-right: 6px;\tpadding-bottom: 0;\tposition: absolute;\ttop: 0px;\tz-index: 99;\twhite-space: normal;\t}\t.ace_search.left {\tborder-left: 0 none;\tborder-radius: 0px 0px 5px 0px;\tleft: 0;\t}\t.ace_search.right {\tborder-radius: 0px 0px 0px 5px;\tborder-right: 0 none;\tright: 0;\t}\t.ace_search_form, .ace_replace_form {\tborder-radius: 3px;\tborder: 1px solid #cbcbcb;\tfloat: left;\tmargin-bottom: 4px;\toverflow: hidden;\t}\t.ace_search_form.ace_nomatch {\toutline: 1px solid red;\t}\t.ace_search_field {\tbackground-color: white;\tborder-right: 1px solid #cbcbcb;\tborder: 0 none;\t-webkit-box-sizing: border-box;\t-moz-box-sizing: border-box;\tbox-sizing: border-box;\tfloat: left;\theight: 22px;\toutline: 0;\tpadding: 0 7px;\twidth: 214px;\tmargin: 0;\t}\t.ace_searchbtn,\t.ace_replacebtn {\tbackground: #fff;\tborder: 0 none;\tborder-left: 1px solid #dcdcdc;\tcursor: pointer;\tfloat: left;\theight: 22px;\tmargin: 0;\tposition: relative;\t}\t.ace_searchbtn:last-child,\t.ace_replacebtn:last-child {\tborder-top-right-radius: 3px;\tborder-bottom-right-radius: 3px;\t}\t.ace_searchbtn:disabled {\tbackground: none;\tcursor: default;\t}\t.ace_searchbtn {\tbackground-position: 50% 50%;\tbackground-repeat: no-repeat;\twidth: 27px;\t}\t.ace_searchbtn.prev {\tbackground-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAFCAYAAAB4ka1VAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADFJREFUeNpiSU1NZUAC/6E0I0yACYskCpsJiySKIiY0SUZk40FyTEgCjGgKwTRAgAEAQJUIPCE+qfkAAAAASUVORK5CYII=); \t}\t.ace_searchbtn.next {\tbackground-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAFCAYAAAB4ka1VAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADRJREFUeNpiTE1NZQCC/0DMyIAKwGJMUAYDEo3M/s+EpvM/mkKwCQxYjIeLMaELoLMBAgwAU7UJObTKsvAAAAAASUVORK5CYII=); \t}\t.ace_searchbtn_close {\tbackground: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAcCAYAAABRVo5BAAAAZ0lEQVR42u2SUQrAMAhDvazn8OjZBilCkYVVxiis8H4CT0VrAJb4WHT3C5xU2a2IQZXJjiQIRMdkEoJ5Q2yMqpfDIo+XY4k6h+YXOyKqTIj5REaxloNAd0xiKmAtsTHqW8sR2W5f7gCu5nWFUpVjZwAAAABJRU5ErkJggg==) no-repeat 50% 0;\tborder-radius: 50%;\tborder: 0 none;\tcolor: #656565;\tcursor: pointer;\tfloat: right;\tfont: 16px/16px Arial;\theight: 14px;\tmargin: 5px 1px 9px 5px;\tpadding: 0;\ttext-align: center;\twidth: 14px;\t}\t.ace_searchbtn_close:hover {\tbackground-color: #656565;\tbackground-position: 50% 100%;\tcolor: white;\t}\t.ace_replacebtn.prev {\twidth: 54px\t}\t.ace_replacebtn.next {\twidth: 27px\t}\t.ace_button {\tmargin-left: 2px;\tcursor: pointer;\t-webkit-user-select: none;\t-moz-user-select: none;\t-o-user-select: none;\t-ms-user-select: none;\tuser-select: none;\toverflow: hidden;\topacity: 0.7;\tborder: 1px solid rgba(100,100,100,0.23);\tpadding: 1px;\t-moz-box-sizing: border-box;\tbox-sizing: border-box;\tcolor: black;\t}\t.ace_button:hover {\tbackground-color: #eee;\topacity:1;\t}\t.ace_button:active {\tbackground-color: #ddd;\t}\t.ace_button.checked {\tborder-color: #3399ff;\topacity:1;\t}\t.ace_search_options{\tmargin-bottom: 3px;\ttext-align: right;\t-webkit-user-select: none;\t-moz-user-select: none;\t-o-user-select: none;\t-ms-user-select: none;\tuser-select: none;\t}","ace_searchbox");var c=''.replace(/>\s+/g,">"),o=function(t,e,l){var n=i.createElement("div");n.innerHTML=c,this.element=n.firstChild,this.$init(),this.setEditor(t)};(function(){this.setEditor=function(t){t.searchBox=this,t.container.appendChild(this.element),this.editor=t},this.$initElements=function(t){this.searchBox=t.querySelector(".ace_search_form"),this.replaceBox=t.querySelector(".ace_replace_form"),this.searchOptions=t.querySelector(".ace_search_options"),this.regExpOption=t.querySelector("[action=toggleRegexpMode]"),this.caseSensitiveOption=t.querySelector("[action=toggleCaseSensitive]"),this.wholeWordOption=t.querySelector("[action=toggleWholeWords]"),this.searchInput=this.searchBox.querySelector(".ace_search_field"),this.replaceInput=this.replaceBox.querySelector(".ace_search_field")},this.$init=function(){var t=this.element;this.$initElements(t);var e=this;a.addListener(t,"mousedown",(function(t){setTimeout((function(){e.activeInput.focus()}),0),a.stopPropagation(t)})),a.addListener(t,"click",(function(t){var l=(t.target||t.srcElement).getAttribute("action");l&&e[l]?e[l]():e.$searchBarKb.commands[l]&&e.$searchBarKb.commands[l].exec(e),a.stopPropagation(t)})),a.addCommandKeyListener(t,(function(t,l,i){var n=s.keyCodeToString(i),d=e.$searchBarKb.findKeyCommand(l,n);d&&d.exec&&(d.exec(e),a.stopEvent(t))})),this.$onChange=n.delayedCall((function(){e.find(!1,!1)})),a.addListener(this.searchInput,"input",(function(){e.$onChange.schedule(20)})),a.addListener(this.searchInput,"focus",(function(){e.activeInput=e.searchInput,e.searchInput.value&&e.highlight()})),a.addListener(this.replaceInput,"focus",(function(){e.activeInput=e.replaceInput,e.searchInput.value&&e.highlight()}))},this.$closeSearchBarKb=new d([{bindKey:"Esc",name:"closeSearchBar",exec:function(t){t.searchBox.hide()}}]),this.$searchBarKb=new d,this.$searchBarKb.bindKeys({"Ctrl-f|Command-f":function(t){var e=t.isReplace=!t.isReplace;t.replaceBox.style.display=e?"":"none",t.searchInput.focus()},"Ctrl-H|Command-Option-F":function(t){t.replaceBox.style.display="",t.replaceInput.focus()},"Ctrl-G|Command-G":function(t){t.findNext()},"Ctrl-Shift-G|Command-Shift-G":function(t){t.findPrev()},esc:function(t){setTimeout((function(){t.hide()}))},Return:function(t){t.activeInput==t.replaceInput&&t.replace(),t.findNext()},"Shift-Return":function(t){t.activeInput==t.replaceInput&&t.replace(),t.findPrev()},"Alt-Return":function(t){t.activeInput==t.replaceInput&&t.replaceAll(),t.findAll()},Tab:function(t){(t.activeInput==t.replaceInput?t.searchInput:t.replaceInput).focus()}}),this.$searchBarKb.addCommands([{name:"toggleRegexpMode",bindKey:{win:"Alt-R|Alt-/",mac:"Ctrl-Alt-R|Ctrl-Alt-/"},exec:function(t){t.regExpOption.checked=!t.regExpOption.checked,t.$syncOptions()}},{name:"toggleCaseSensitive",bindKey:{win:"Alt-C|Alt-I",mac:"Ctrl-Alt-R|Ctrl-Alt-I"},exec:function(t){t.caseSensitiveOption.checked=!t.caseSensitiveOption.checked,t.$syncOptions()}},{name:"toggleWholeWords",bindKey:{win:"Alt-B|Alt-W",mac:"Ctrl-Alt-B|Ctrl-Alt-W"},exec:function(t){t.wholeWordOption.checked=!t.wholeWordOption.checked,t.$syncOptions()}}]),this.$syncOptions=function(){i.setCssClass(this.regExpOption,"checked",this.regExpOption.checked),i.setCssClass(this.wholeWordOption,"checked",this.wholeWordOption.checked),i.setCssClass(this.caseSensitiveOption,"checked",this.caseSensitiveOption.checked),this.find(!1,!1)},this.highlight=function(t){this.editor.session.highlight(t||this.editor.$search.$options.re),this.editor.renderer.updateBackMarkers()},this.find=function(t,e,l){var n=!this.editor.find(this.searchInput.value,{skipCurrent:t,backwards:e,wrap:!0,regExp:this.regExpOption.checked,caseSensitive:this.caseSensitiveOption.checked,wholeWord:this.wholeWordOption.checked,preventScroll:l})&&this.searchInput.value;i.setCssClass(this.searchBox,"ace_nomatch",n),this.editor._emit("findSearchBox",{match:!n}),this.highlight()},this.findNext=function(){this.find(!0,!1)},this.findPrev=function(){this.find(!0,!0)},this.findAll=function(){var t=!this.editor.findAll(this.searchInput.value,{regExp:this.regExpOption.checked,caseSensitive:this.caseSensitiveOption.checked,wholeWord:this.wholeWordOption.checked})&&this.searchInput.value;i.setCssClass(this.searchBox,"ace_nomatch",t),this.editor._emit("findSearchBox",{match:!t}),this.highlight(),this.hide()},this.replace=function(){this.editor.getReadOnly()||this.editor.replace(this.replaceInput.value)},this.replaceAndFindNext=function(){this.editor.getReadOnly()||(this.editor.replace(this.replaceInput.value),this.findNext())},this.replaceAll=function(){this.editor.getReadOnly()||this.editor.replaceAll(this.replaceInput.value)},this.hide=function(){this.element.style.display="none",this.editor.keyBinding.removeKeyboardHandler(this.$closeSearchBarKb),this.editor.focus()},this.show=function(t,e){this.element.style.display="",this.replaceBox.style.display=e?"":"none",this.isReplace=e,t&&(this.searchInput.value=t),this.find(!1,!1,!0),this.searchInput.focus(),this.searchInput.select(),this.editor.keyBinding.addKeyboardHandler(this.$closeSearchBarKb)},this.isFocused=function(){var t=document.activeElement;return t==this.searchInput||t==this.replaceInput}}).call(o.prototype),e.SearchBox=o,e.Search=function(t,e){(t.searchBox||new o(t)).show(t.session.getTextRange(),e)}})),ace.acequire(["ace/ext/searchbox"],(function(){}))},function(t,e){ace.define("ace/theme/jsoneditor",["require","exports","module","ace/lib/dom"],(function(t,e,l){e.isDark=!1,e.cssClass="ace-jsoneditor",e.cssText='.ace-jsoneditor .ace_gutter {\tbackground: #ebebeb;\tcolor: #333\t}\t\t.ace-jsoneditor.ace_editor {\tfont-family: droid sans mono, consolas, monospace, courier new, courier, sans-serif;\tline-height: 1.3;\t}\t.ace-jsoneditor .ace_print-margin {\twidth: 1px;\tbackground: #e8e8e8\t}\t.ace-jsoneditor .ace_scroller {\tbackground-color: #FFFFFF\t}\t.ace-jsoneditor .ace_text-layer {\tcolor: gray\t}\t.ace-jsoneditor .ace_variable {\tcolor: #1a1a1a\t}\t.ace-jsoneditor .ace_cursor {\tborder-left: 2px solid #000000\t}\t.ace-jsoneditor .ace_overwrite-cursors .ace_cursor {\tborder-left: 0px;\tborder-bottom: 1px solid #000000\t}\t.ace-jsoneditor .ace_marker-layer .ace_selection {\tbackground: lightgray\t}\t.ace-jsoneditor.ace_multiselect .ace_selection.ace_start {\tbox-shadow: 0 0 3px 0px #FFFFFF;\tborder-radius: 2px\t}\t.ace-jsoneditor .ace_marker-layer .ace_step {\tbackground: rgb(255, 255, 0)\t}\t.ace-jsoneditor .ace_marker-layer .ace_bracket {\tmargin: -1px 0 0 -1px;\tborder: 1px solid #BFBFBF\t}\t.ace-jsoneditor .ace_marker-layer .ace_active-line {\tbackground: #FFFBD1\t}\t.ace-jsoneditor .ace_gutter-active-line {\tbackground-color : #dcdcdc\t}\t.ace-jsoneditor .ace_marker-layer .ace_selected-word {\tborder: 1px solid lightgray\t}\t.ace-jsoneditor .ace_invisible {\tcolor: #BFBFBF\t}\t.ace-jsoneditor .ace_keyword,\t.ace-jsoneditor .ace_meta,\t.ace-jsoneditor .ace_support.ace_constant.ace_property-value {\tcolor: #AF956F\t}\t.ace-jsoneditor .ace_keyword.ace_operator {\tcolor: #484848\t}\t.ace-jsoneditor .ace_keyword.ace_other.ace_unit {\tcolor: #96DC5F\t}\t.ace-jsoneditor .ace_constant.ace_language {\tcolor: darkorange\t}\t.ace-jsoneditor .ace_constant.ace_numeric {\tcolor: red\t}\t.ace-jsoneditor .ace_constant.ace_character.ace_entity {\tcolor: #BF78CC\t}\t.ace-jsoneditor .ace_invalid {\tcolor: #FFFFFF;\tbackground-color: #FF002A;\t}\t.ace-jsoneditor .ace_fold {\tbackground-color: #AF956F;\tborder-color: #000000\t}\t.ace-jsoneditor .ace_storage,\t.ace-jsoneditor .ace_support.ace_class,\t.ace-jsoneditor .ace_support.ace_function,\t.ace-jsoneditor .ace_support.ace_other,\t.ace-jsoneditor .ace_support.ace_type {\tcolor: #C52727\t}\t.ace-jsoneditor .ace_string {\tcolor: green\t}\t.ace-jsoneditor .ace_comment {\tcolor: #BCC8BA\t}\t.ace-jsoneditor .ace_entity.ace_name.ace_tag,\t.ace-jsoneditor .ace_entity.ace_other.ace_attribute-name {\tcolor: #606060\t}\t.ace-jsoneditor .ace_markup.ace_underline {\ttext-decoration: underline\t}\t.ace-jsoneditor .ace_indent-guide {\tbackground: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==") right repeat-y\t}',t("../lib/dom").importCssString(e.cssText,e.cssClass)}))}])},module.exports=factory()},function(t,e,l){"use strict";const i=l(25);l(28);const{IView:n}=l(2),a=new i({el:".app",components:{mainContent:l(33),topbar:l(95),bottomBar:l(99)},data:()=>({view:n.home}),methods:{changeView(t){this.view=n[t]},checkIfInView(){if(window.location.search){const t=decodeURIComponent(window.location.search.match(/(\?|&)show\=([^&]*)/)[2]);n[t]&&(this.view=n[t])}}},created(){this.checkIfInView()}});t.exports=a},function(t,e,l){(function(e,l){ /*! * Vue.js v2.6.14 * (c) 2014-2021 Evan You * Released under the MIT License. */ -t.exports=function(){"use strict";var t=Object.freeze({});function i(t){return null==t}function n(t){return null!=t}function d(t){return!0===t}function a(t){return"string"==typeof t||"number"==typeof t||"symbol"==typeof t||"boolean"==typeof t}function s(t){return null!==t&&"object"==typeof t}var c=Object.prototype.toString;function o(t){return"[object Object]"===c.call(t)}function b(t){var e=parseFloat(String(t));return e>=0&&Math.floor(e)===e&&isFinite(t)}function r(t){return n(t)&&"function"==typeof t.then&&"function"==typeof t.catch}function m(t){return null==t?"":Array.isArray(t)||o(t)&&t.toString===c?JSON.stringify(t,null,2):String(t)}function Z(t){var e=parseFloat(t);return isNaN(e)?t:e}function g(t,e){for(var l=Object.create(null),i=t.split(","),n=0;n-1)return t.splice(l,1)}}var y=Object.prototype.hasOwnProperty;function I(t,e){return y.call(t,e)}function G(t){var e=Object.create(null);return function(l){return e[l]||(e[l]=t(l))}}var M=/-(\w)/g,u=G((function(t){return t.replace(M,(function(t,e){return e?e.toUpperCase():""}))})),V=G((function(t){return t.charAt(0).toUpperCase()+t.slice(1)})),p=/\B([A-Z])/g,Y=G((function(t){return t.replace(p,"-$1").toLowerCase()})),R=Function.prototype.bind?function(t,e){return t.bind(e)}:function(t,e){function l(l){var i=arguments.length;return i?i>1?t.apply(e,arguments):t.call(e,l):t.call(e)}return l._length=t.length,l};function B(t,e){e=e||0;for(var l=t.length-e,i=new Array(l);l--;)i[l]=t[l+e];return i}function O(t,e){for(var l in e)t[l]=e[l];return t}function D(t){for(var e={},l=0;l0,$=f&&f.indexOf("edge/")>0,_=(f&&f.indexOf("android"),f&&/iphone|ipad|ipod|ios/.test(f)||"ios"===E),q=(f&&/chrome\/\d+/.test(f),f&&/phantomjs/.test(f),f&&f.match(/firefox\/(\d+)/)),tt={}.watch,et=!1;if(A)try{var lt={};Object.defineProperty(lt,"passive",{get:function(){et=!0}}),window.addEventListener("test-passive",null,lt)}catch(t){}var it=function(){return void 0===x&&(x=!A&&!S&&void 0!==e&&e.process&&"server"===e.process.env.VUE_ENV),x},nt=A&&window.__VUE_DEVTOOLS_GLOBAL_HOOK__;function dt(t){return"function"==typeof t&&/native code/.test(t.toString())}var at,st="undefined"!=typeof Symbol&&dt(Symbol)&&"undefined"!=typeof Reflect&&dt(Reflect.ownKeys);at="undefined"!=typeof Set&&dt(Set)?Set:function(){function t(){this.set=Object.create(null)}return t.prototype.has=function(t){return!0===this.set[t]},t.prototype.add=function(t){this.set[t]=!0},t.prototype.clear=function(){this.set=Object.create(null)},t}();var ct=U,ot=0,bt=function(){this.id=ot++,this.subs=[]};bt.prototype.addSub=function(t){this.subs.push(t)},bt.prototype.removeSub=function(t){N(this.subs,t)},bt.prototype.depend=function(){bt.target&&bt.target.addDep(this)},bt.prototype.notify=function(){for(var t=this.subs.slice(),e=0,l=t.length;e-1)if(d&&!I(n,"default"))a=!1;else if(""===a||a===Y(t)){var c=Ct(String,n.type);(c<0||s0&&(be((c=t(c,(l||"")+"_"+s))[0])&&be(b)&&(r[o]=Nt(b.text+c[0].text),c.shift()),r.push.apply(r,c)):a(c)?be(b)?r[o]=Nt(b.text+c):""!==c&&r.push(Nt(c)):be(c)&&be(b)?r[o]=Nt(b.text+c.text):(d(e._isVList)&&n(c.tag)&&i(c.key)&&n(l)&&(c.key="__vlist"+l+"_"+s+"__"),r.push(c)));return r}(t):void 0}function be(t){return n(t)&&n(t.text)&&!1===t.isComment}function re(t,e){if(t){for(var l=Object.create(null),i=st?Reflect.ownKeys(t):Object.keys(t),n=0;n0,a=e?!!e.$stable:!d,s=e&&e.$key;if(e){if(e._normalized)return e._normalized;if(a&&i&&i!==t&&s===i.$key&&!d&&!i.$hasNormal)return i;for(var c in n={},e)e[c]&&"$"!==c[0]&&(n[c]=he(l,c,e[c]))}else n={};for(var o in l)o in n||(n[o]=Ne(l,o));return e&&Object.isExtensible(e)&&(e._normalized=n),C(n,"$stable",a),C(n,"$key",s),C(n,"$hasNormal",d),n}function he(t,e,l){var i=function(){var t=arguments.length?l.apply(null,arguments):l({}),e=(t=t&&"object"==typeof t&&!Array.isArray(t)?[t]:oe(t))&&t[0];return t&&(!e||1===t.length&&e.isComment&&!ge(e))?void 0:t};return l.proxy&&Object.defineProperty(t,e,{get:i,enumerable:!0,configurable:!0}),i}function Ne(t,e){return function(){return t[e]}}function ye(t,e){var l,i,d,a,c;if(Array.isArray(t)||"string"==typeof t)for(l=new Array(t.length),i=0,d=t.length;idocument.createEvent("Event").timeStamp&&(sl=function(){return cl.now()})}function ol(){var t,e;for(al=sl(),nl=!0,tl.sort((function(t,e){return t.id-e.id})),dl=0;dldl&&tl[l].id>t.id;)l--;tl.splice(l+1,0,t)}else tl.push(t);il||(il=!0,ee(ol))}}(this)},rl.prototype.run=function(){if(this.active){var t=this.get();if(t!==this.value||s(t)||this.deep){var e=this.value;if(this.value=t,this.user){var l='callback for watcher "'+this.expression+'"';Qt(this.cb,this.vm,[t,e],this.vm,l)}else this.cb.call(this.vm,t,e)}}},rl.prototype.evaluate=function(){this.value=this.get(),this.dirty=!1},rl.prototype.depend=function(){for(var t=this.deps.length;t--;)this.deps[t].depend()},rl.prototype.teardown=function(){if(this.active){this.vm._isBeingDestroyed||N(this.vm._watchers,this);for(var t=this.deps.length;t--;)this.deps[t].removeSub(this);this.active=!1}};var ml={enumerable:!0,configurable:!0,get:U,set:U};function Zl(t,e,l){ml.get=function(){return this[e][l]},ml.set=function(t){this[e][l]=t},Object.defineProperty(t,l,ml)}var gl={lazy:!0};function Wl(t,e,l){var i=!it();"function"==typeof l?(ml.get=i?hl(e):Nl(l),ml.set=U):(ml.get=l.get?i&&!1!==l.cache?hl(e):Nl(l.get):U,ml.set=l.set||U),Object.defineProperty(t,e,ml)}function hl(t){return function(){var e=this._computedWatchers&&this._computedWatchers[t];if(e)return e.dirty&&e.evaluate(),bt.target&&e.depend(),e.value}}function Nl(t){return function(){return t.call(this,this)}}function yl(t,e,l,i){return o(l)&&(i=l,l=l.handler),"string"==typeof l&&(l=t[l]),t.$watch(e,l,i)}var Il=0;function Gl(t){var e=t.options;if(t.super){var l=Gl(t.super);if(l!==t.superOptions){t.superOptions=l;var i=function(t){var e,l=t.options,i=t.sealedOptions;for(var n in l)l[n]!==i[n]&&(e||(e={}),e[n]=l[n]);return e}(t);i&&O(t.extendOptions,i),(e=t.options=vt(l,t.extendOptions)).name&&(e.components[e.name]=t)}}return e}function Ml(t){this._init(t)}function ul(t){return t&&(t.Ctor.options.name||t.tag)}function Vl(t,e){return Array.isArray(t)?t.indexOf(e)>-1:"string"==typeof t?t.split(",").indexOf(e)>-1:(l=t,"[object RegExp]"===c.call(l)&&t.test(e));var l}function pl(t,e){var l=t.cache,i=t.keys,n=t._vnode;for(var d in l){var a=l[d];if(a){var s=a.name;s&&!e(s)&&Yl(l,d,i,n)}}}function Yl(t,e,l,i){var n=t[e];!n||i&&n.tag===i.tag||n.componentInstance.$destroy(),t[e]=null,N(l,e)}!function(e){e.prototype._init=function(e){var l=this;l._uid=Il++,l._isVue=!0,e&&e._isComponent?function(t,e){var l=t.$options=Object.create(t.constructor.options),i=e._parentVnode;l.parent=e.parent,l._parentVnode=i;var n=i.componentOptions;l.propsData=n.propsData,l._parentListeners=n.listeners,l._renderChildren=n.children,l._componentTag=n.tag,e.render&&(l.render=e.render,l.staticRenderFns=e.staticRenderFns)}(l,e):l.$options=vt(Gl(l.constructor),e||{},l),l._renderProxy=l,l._self=l,function(t){var e=t.$options,l=e.parent;if(l&&!e.abstract){for(;l.$options.abstract&&l.$parent;)l=l.$parent;l.$children.push(t)}t.$parent=l,t.$root=l?l.$root:t,t.$children=[],t.$refs={},t._watcher=null,t._inactive=null,t._directInactive=!1,t._isMounted=!1,t._isDestroyed=!1,t._isBeingDestroyed=!1}(l),function(t){t._events=Object.create(null),t._hasHookEvent=!1;var e=t.$options._parentListeners;e&&fe(t,e)}(l),function(e){e._vnode=null,e._staticTrees=null;var l=e.$options,i=e.$vnode=l._parentVnode,n=i&&i.context;e.$slots=me(l._renderChildren,n),e.$scopedSlots=t,e._c=function(t,l,i,n){return ke(e,t,l,i,n,!1)},e.$createElement=function(t,l,i,n){return ke(e,t,l,i,n,!0)};var d=i&&i.data;Rt(e,"$attrs",d&&d.attrs||t,null,!0),Rt(e,"$listeners",l._parentListeners||t,null,!0)}(l),qe(l,"beforeCreate"),function(t){var e=re(t.$options.inject,t);e&&(Vt(!1),Object.keys(e).forEach((function(l){Rt(t,l,e[l])})),Vt(!0))}(l),function(t){t._watchers=[];var e=t.$options;e.props&&function(t,e){var l=t.$options.propsData||{},i=t._props={},n=t.$options._propKeys=[];t.$parent&&Vt(!1);var d=function(d){n.push(d);var a=jt(d,e,l,t);Rt(i,d,a),d in t||Zl(t,"_props",d)};for(var a in e)d(a);Vt(!0)}(t,e.props),e.methods&&function(t,e){for(var l in t.$options.props,e)t[l]="function"!=typeof e[l]?U:R(e[l],t)}(t,e.methods),e.data?function(t){var e=t.$options.data;o(e=t._data="function"==typeof e?function(t,e){mt();try{return t.call(e,e)}catch(t){return xt(t,e,"data()"),{}}finally{Zt()}}(e,t):e||{})||(e={});for(var l,i=Object.keys(e),n=t.$options.props,d=(t.$options.methods,i.length);d--;){var a=i[d];n&&I(n,a)||36!==(l=(a+"").charCodeAt(0))&&95!==l&&Zl(t,"_data",a)}Yt(e,!0)}(t):Yt(t._data={},!0),e.computed&&function(t,e){var l=t._computedWatchers=Object.create(null),i=it();for(var n in e){var d=e[n],a="function"==typeof d?d:d.get;i||(l[n]=new rl(t,a||U,U,gl)),n in t||Wl(t,n,d)}}(t,e.computed),e.watch&&e.watch!==tt&&function(t,e){for(var l in e){var i=e[l];if(Array.isArray(i))for(var n=0;n1?B(e):e;for(var l=B(arguments,1),i='event handler for "'+t+'"',n=0,d=e.length;nparseInt(this.max)&&Yl(t,e[0],e,this._vnode),this.vnodeToCache=null}}},created:function(){this.cache=Object.create(null),this.keys=[]},destroyed:function(){for(var t in this.cache)Yl(this.cache,t,this.keys)},mounted:function(){var t=this;this.cacheVNode(),this.$watch("include",(function(e){pl(t,(function(t){return Vl(e,t)}))})),this.$watch("exclude",(function(e){pl(t,(function(t){return!Vl(e,t)}))}))},updated:function(){this.cacheVNode()},render:function(){var t=this.$slots.default,e=He(t),l=e&&e.componentOptions;if(l){var i=ul(l),n=this.include,d=this.exclude;if(n&&(!i||!Vl(n,i))||d&&i&&Vl(d,i))return e;var a=this.cache,s=this.keys,c=null==e.key?l.Ctor.cid+(l.tag?"::"+l.tag:""):e.key;a[c]?(e.componentInstance=a[c].componentInstance,N(s,c),s.push(c)):(this.vnodeToCache=e,this.keyToCache=c),e.data.keepAlive=!0}return e||t&&t[0]}}};!function(t){var e={get:function(){return J}};Object.defineProperty(t,"config",e),t.util={warn:ct,extend:O,mergeOptions:vt,defineReactive:Rt},t.set=Bt,t.delete=Ot,t.nextTick=ee,t.observable=function(t){return Yt(t),t},t.options=Object.create(null),j.forEach((function(e){t.options[e+"s"]=Object.create(null)})),t.options._base=t,O(t.options.components,Bl),function(t){t.use=function(t){var e=this._installedPlugins||(this._installedPlugins=[]);if(e.indexOf(t)>-1)return this;var l=B(arguments,1);return l.unshift(this),"function"==typeof t.install?t.install.apply(t,l):"function"==typeof t&&t.apply(null,l),e.push(t),this}}(t),function(t){t.mixin=function(t){return this.options=vt(this.options,t),this}}(t),function(t){t.cid=0;var e=1;t.extend=function(t){t=t||{};var l=this,i=l.cid,n=t._Ctor||(t._Ctor={});if(n[i])return n[i];var d=t.name||l.options.name,a=function(t){this._init(t)};return(a.prototype=Object.create(l.prototype)).constructor=a,a.cid=e++,a.options=vt(l.options,t),a.super=l,a.options.props&&function(t){var e=t.options.props;for(var l in e)Zl(t.prototype,"_props",l)}(a),a.options.computed&&function(t){var e=t.options.computed;for(var l in e)Wl(t.prototype,l,e[l])}(a),a.extend=l.extend,a.mixin=l.mixin,a.use=l.use,j.forEach((function(t){a[t]=l[t]})),d&&(a.options.components[d]=a),a.superOptions=l.options,a.extendOptions=t,a.sealedOptions=O({},a.options),n[i]=a,a}}(t),function(t){j.forEach((function(e){t[e]=function(t,l){return l?("component"===e&&o(l)&&(l.name=l.name||t,l=this.options._base.extend(l)),"directive"===e&&"function"==typeof l&&(l={bind:l,update:l}),this.options[e+"s"][t]=l,l):this.options[e+"s"][t]}}))}(t)}(Ml),Object.defineProperty(Ml.prototype,"$isServer",{get:it}),Object.defineProperty(Ml.prototype,"$ssrContext",{get:function(){return this.$vnode&&this.$vnode.ssrContext}}),Object.defineProperty(Ml,"FunctionalRenderContext",{value:ze}),Ml.version="2.6.14";var Ol=g("style,class"),Dl=g("input,textarea,option,select,progress"),Ul=function(t,e,l){return"value"===l&&Dl(t)&&"button"!==e||"selected"===l&&"option"===t||"checked"===l&&"input"===t||"muted"===l&&"video"===t},Xl=g("contenteditable,draggable,spellcheck"),Tl=g("events,caret,typing,plaintext-only"),zl=g("allowfullscreen,async,autofocus,autoplay,checked,compact,controls,declare,default,defaultchecked,defaultmuted,defaultselected,defer,disabled,enabled,formnovalidate,hidden,indeterminate,inert,ismap,itemscope,loop,multiple,muted,nohref,noresize,noshade,novalidate,nowrap,open,pauseonexit,readonly,required,reversed,scoped,seamless,selected,sortable,truespeed,typemustmatch,visible"),Fl="http://www.w3.org/1999/xlink",vl=function(t){return":"===t.charAt(5)&&"xlink"===t.slice(0,5)},wl=function(t){return vl(t)?t.slice(6,t.length):""},jl=function(t){return null==t||!1===t};function Ll(t,e){return{staticClass:Jl(t.staticClass,e.staticClass),class:n(t.class)?[t.class,e.class]:e.class}}function Jl(t,e){return t?e?t+" "+e:t:e||""}function kl(t){return Array.isArray(t)?function(t){for(var e,l="",i=0,d=t.length;i-1?ri(t,e,l):zl(e)?jl(l)?t.removeAttribute(e):(l="allowfullscreen"===e&&"EMBED"===t.tagName?"true":e,t.setAttribute(e,l)):Xl(e)?t.setAttribute(e,function(t,e){return jl(e)||"false"===e?"false":"contenteditable"===t&&Tl(e)?e:"true"}(e,l)):vl(e)?jl(l)?t.removeAttributeNS(Fl,wl(e)):t.setAttributeNS(Fl,e,l):ri(t,e,l)}function ri(t,e,l){if(jl(l))t.removeAttribute(e);else{if(K&&!P&&"TEXTAREA"===t.tagName&&"placeholder"===e&&""!==l&&!t.__ieph){var i=function(e){e.stopImmediatePropagation(),t.removeEventListener("input",i)};t.addEventListener("input",i),t.__ieph=!0}t.setAttribute(e,l)}}var mi={create:oi,update:oi};function Zi(t,e){var l=e.elm,d=e.data,a=t.data;if(!(i(d.staticClass)&&i(d.class)&&(i(a)||i(a.staticClass)&&i(a.class)))){var s=function(t){for(var e=t.data,l=t,i=t;n(i.componentInstance);)(i=i.componentInstance._vnode)&&i.data&&(e=Ll(i.data,e));for(;n(l=l.parent);)l&&l.data&&(e=Ll(e,l.data));return function(t,e){return n(t)||n(e)?Jl(t,kl(e)):""}(e.staticClass,e.class)}(e),c=l._transitionClasses;n(c)&&(s=Jl(s,kl(c))),s!==l._prevClass&&(l.setAttribute("class",s),l._prevClass=s)}}var gi,Wi,hi,Ni,yi,Ii,Gi={create:Zi,update:Zi},Mi=/[\w).+\-_$\]]/;function ui(t){var e,l,i,n,d,a=!1,s=!1,c=!1,o=!1,b=0,r=0,m=0,Z=0;for(i=0;i=0&&" "===(W=t.charAt(g));g--);W&&Mi.test(W)||(o=!0)}}else void 0===n?(Z=i+1,n=t.slice(0,i).trim()):h();function h(){(d||(d=[])).push(t.slice(Z,i).trim()),Z=i+1}if(void 0===n?n=t.slice(0,i).trim():0!==Z&&h(),d)for(i=0;i-1?{exp:t.slice(0,Ni),key:'"'+t.slice(Ni+1)+'"'}:{exp:t,key:null};for(Wi=t,Ni=yi=Ii=0;!Ji();)ki(hi=Li())?xi(hi):91===hi&&Ci(hi);return{exp:t.slice(0,yi),key:t.slice(yi+1,Ii)}}(t);return null===l.key?t+"="+e:"$set("+l.exp+", "+l.key+", "+e+")"}function Li(){return Wi.charCodeAt(++Ni)}function Ji(){return Ni>=gi}function ki(t){return 34===t||39===t}function Ci(t){var e=1;for(yi=Ni;!Ji();)if(ki(t=Li()))xi(t);else if(91===t&&e++,93===t&&e--,0===e){Ii=Ni;break}}function xi(t){for(var e=t;!Ji()&&(t=Li())!==e;);}var Qi,Hi="__r";function Ai(t,e,l){var i=Qi;return function n(){null!==e.apply(null,arguments)&&fi(t,n,l,i)}}var Si=Et&&!(q&&Number(q[1])<=53);function Ei(t,e,l,i){if(Si){var n=al,d=e;e=d._wrapper=function(t){if(t.target===t.currentTarget||t.timeStamp>=n||t.timeStamp<=0||t.target.ownerDocument!==document)return d.apply(this,arguments)}}Qi.addEventListener(t,e,et?{capture:l,passive:i}:l)}function fi(t,e,l,i){(i||Qi).removeEventListener(t,e._wrapper||e,l)}function Ki(t,e){if(!i(t.data.on)||!i(e.data.on)){var l=e.data.on||{},d=t.data.on||{};Qi=e.elm,function(t){if(n(t.__r)){var e=K?"change":"input";t[e]=[].concat(t.__r,t[e]||[]),delete t.__r}n(t.__c)&&(t.change=[].concat(t.__c,t.change||[]),delete t.__c)}(l),ae(l,d,Ei,fi,Ai,e.context),Qi=void 0}}var Pi,$i={create:Ki,update:Ki};function _i(t,e){if(!i(t.data.domProps)||!i(e.data.domProps)){var l,d,a=e.elm,s=t.data.domProps||{},c=e.data.domProps||{};for(l in n(c.__ob__)&&(c=e.data.domProps=O({},c)),s)l in c||(a[l]="");for(l in c){if(d=c[l],"textContent"===l||"innerHTML"===l){if(e.children&&(e.children.length=0),d===s[l])continue;1===a.childNodes.length&&a.removeChild(a.childNodes[0])}if("value"===l&&"PROGRESS"!==a.tagName){a._value=d;var o=i(d)?"":String(d);qi(a,o)&&(a.value=o)}else if("innerHTML"===l&&Ql(a.tagName)&&i(a.innerHTML)){(Pi=Pi||document.createElement("div")).innerHTML=""+d+"";for(var b=Pi.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}else if(d!==s[l])try{a[l]=d}catch(t){}}}}function qi(t,e){return!t.composing&&("OPTION"===t.tagName||function(t,e){var l=!0;try{l=document.activeElement!==t}catch(t){}return l&&t.value!==e}(t,e)||function(t,e){var l=t.value,i=t._vModifiers;if(n(i)){if(i.number)return Z(l)!==Z(e);if(i.trim)return l.trim()!==e.trim()}return l!==e}(t,e))}var tn={create:_i,update:_i},en=G((function(t){var e={},l=/:(.+)/;return t.split(/;(?![^(]*\))/g).forEach((function(t){if(t){var i=t.split(l);i.length>1&&(e[i[0].trim()]=i[1].trim())}})),e}));function ln(t){var e=nn(t.style);return t.staticStyle?O(t.staticStyle,e):e}function nn(t){return Array.isArray(t)?D(t):"string"==typeof t?en(t):t}var dn,an=/^--/,sn=/\s*!important$/,cn=function(t,e,l){if(an.test(e))t.style.setProperty(e,l);else if(sn.test(l))t.style.setProperty(Y(e),l.replace(sn,""),"important");else{var i=bn(e);if(Array.isArray(l))for(var n=0,d=l.length;n-1?e.split(Zn).forEach((function(e){return t.classList.add(e)})):t.classList.add(e);else{var l=" "+(t.getAttribute("class")||"")+" ";l.indexOf(" "+e+" ")<0&&t.setAttribute("class",(l+e).trim())}}function Wn(t,e){if(e&&(e=e.trim()))if(t.classList)e.indexOf(" ")>-1?e.split(Zn).forEach((function(e){return t.classList.remove(e)})):t.classList.remove(e),t.classList.length||t.removeAttribute("class");else{for(var l=" "+(t.getAttribute("class")||"")+" ",i=" "+e+" ";l.indexOf(i)>=0;)l=l.replace(i," ");(l=l.trim())?t.setAttribute("class",l):t.removeAttribute("class")}}function hn(t){if(t){if("object"==typeof t){var e={};return!1!==t.css&&O(e,Nn(t.name||"v")),O(e,t),e}return"string"==typeof t?Nn(t):void 0}}var Nn=G((function(t){return{enterClass:t+"-enter",enterToClass:t+"-enter-to",enterActiveClass:t+"-enter-active",leaveClass:t+"-leave",leaveToClass:t+"-leave-to",leaveActiveClass:t+"-leave-active"}})),yn=A&&!P,In="transition",Gn="animation",Mn="transition",un="transitionend",Vn="animation",pn="animationend";yn&&(void 0===window.ontransitionend&&void 0!==window.onwebkittransitionend&&(Mn="WebkitTransition",un="webkitTransitionEnd"),void 0===window.onanimationend&&void 0!==window.onwebkitanimationend&&(Vn="WebkitAnimation",pn="webkitAnimationEnd"));var Yn=A?window.requestAnimationFrame?window.requestAnimationFrame.bind(window):setTimeout:function(t){return t()};function Rn(t){Yn((function(){Yn(t)}))}function Bn(t,e){var l=t._transitionClasses||(t._transitionClasses=[]);l.indexOf(e)<0&&(l.push(e),gn(t,e))}function On(t,e){t._transitionClasses&&N(t._transitionClasses,e),Wn(t,e)}function Dn(t,e,l){var i=Xn(t,e),n=i.type,d=i.timeout,a=i.propCount;if(!n)return l();var s=n===In?un:pn,c=0,o=function(){t.removeEventListener(s,b),l()},b=function(e){e.target===t&&++c>=a&&o()};setTimeout((function(){c0&&(l=In,b=a,r=d.length):e===Gn?o>0&&(l=Gn,b=o,r=c.length):r=(l=(b=Math.max(a,o))>0?a>o?In:Gn:null)?l===In?d.length:c.length:0,{type:l,timeout:b,propCount:r,hasTransform:l===In&&Un.test(i[Mn+"Property"])}}function Tn(t,e){for(;t.length1}function Ln(t,e){!0!==e.data.show&&Fn(e)}var Jn=function(t){var e,l,s={},c=t.modules,o=t.nodeOps;for(e=0;eg?I(t,i(l[N+1])?null:l[N+1].elm,l,Z,N,d):Z>N&&M(e,m,g)}(m,W,N,l,b):n(N)?(n(t.text)&&o.setTextContent(m,""),I(m,null,N,0,N.length-1,l)):n(W)?M(W,0,W.length-1):n(t.text)&&o.setTextContent(m,""):t.text!==e.text&&o.setTextContent(m,e.text),n(g)&&n(Z=g.hook)&&n(Z=Z.postpatch)&&Z(t,e)}}}function Y(t,e,l){if(d(l)&&n(t.parent))t.parent.data.pendingInsert=e;else for(var i=0;i-1,a.selected!==d&&(a.selected=d);else if(z(Hn(a),i))return void(t.selectedIndex!==s&&(t.selectedIndex=s));n||(t.selectedIndex=-1)}}function Qn(t,e){return e.every((function(e){return!z(e,t)}))}function Hn(t){return"_value"in t?t._value:t.value}function An(t){t.target.composing=!0}function Sn(t){t.target.composing&&(t.target.composing=!1,En(t.target,"input"))}function En(t,e){var l=document.createEvent("HTMLEvents");l.initEvent(e,!0,!0),t.dispatchEvent(l)}function fn(t){return!t.componentInstance||t.data&&t.data.transition?t:fn(t.componentInstance._vnode)}var Kn={model:kn,show:{bind:function(t,e,l){var i=e.value,n=(l=fn(l)).data&&l.data.transition,d=t.__vOriginalDisplay="none"===t.style.display?"":t.style.display;i&&n?(l.data.show=!0,Fn(l,(function(){t.style.display=d}))):t.style.display=i?d:"none"},update:function(t,e,l){var i=e.value;!i!=!e.oldValue&&((l=fn(l)).data&&l.data.transition?(l.data.show=!0,i?Fn(l,(function(){t.style.display=t.__vOriginalDisplay})):vn(l,(function(){t.style.display="none"}))):t.style.display=i?t.__vOriginalDisplay:"none")},unbind:function(t,e,l,i,n){n||(t.style.display=t.__vOriginalDisplay)}}},Pn={name:String,appear:Boolean,css:Boolean,mode:String,type:String,enterClass:String,leaveClass:String,enterToClass:String,leaveToClass:String,enterActiveClass:String,leaveActiveClass:String,appearClass:String,appearActiveClass:String,appearToClass:String,duration:[Number,String,Object]};function $n(t){var e=t&&t.componentOptions;return e&&e.Ctor.options.abstract?$n(He(e.children)):t}function _n(t){var e={},l=t.$options;for(var i in l.propsData)e[i]=t[i];var n=l._parentListeners;for(var d in n)e[u(d)]=n[d];return e}function qn(t,e){if(/\d-keep-alive$/.test(e.tag))return t("keep-alive",{props:e.componentOptions.propsData})}var td=function(t){return t.tag||ge(t)},ed=function(t){return"show"===t.name},ld={name:"transition",props:Pn,abstract:!0,render:function(t){var e=this,l=this.$slots.default;if(l&&(l=l.filter(td)).length){var i=this.mode,n=l[0];if(function(t){for(;t=t.parent;)if(t.data.transition)return!0}(this.$vnode))return n;var d=$n(n);if(!d)return n;if(this._leaving)return qn(t,n);var s="__transition-"+this._uid+"-";d.key=null==d.key?d.isComment?s+"comment":s+d.tag:a(d.key)?0===String(d.key).indexOf(s)?d.key:s+d.key:d.key;var c=(d.data||(d.data={})).transition=_n(this),o=this._vnode,b=$n(o);if(d.data.directives&&d.data.directives.some(ed)&&(d.data.show=!0),b&&b.data&&!function(t,e){return e.key===t.key&&e.tag===t.tag}(d,b)&&!ge(b)&&(!b.componentInstance||!b.componentInstance._vnode.isComment)){var r=b.data.transition=O({},c);if("out-in"===i)return this._leaving=!0,se(r,"afterLeave",(function(){e._leaving=!1,e.$forceUpdate()})),qn(t,n);if("in-out"===i){if(ge(d))return o;var m,Z=function(){m()};se(c,"afterEnter",Z),se(c,"enterCancelled",Z),se(r,"delayLeave",(function(t){m=t}))}}return n}}},id=O({tag:String,moveClass:String},Pn);function nd(t){t.elm._moveCb&&t.elm._moveCb(),t.elm._enterCb&&t.elm._enterCb()}function dd(t){t.data.newPos=t.elm.getBoundingClientRect()}function ad(t){var e=t.data.pos,l=t.data.newPos,i=e.left-l.left,n=e.top-l.top;if(i||n){t.data.moved=!0;var d=t.elm.style;d.transform=d.WebkitTransform="translate("+i+"px,"+n+"px)",d.transitionDuration="0s"}}delete id.mode;var sd={Transition:ld,TransitionGroup:{props:id,beforeMount:function(){var t=this,e=this._update;this._update=function(l,i){var n=Pe(t);t.__patch__(t._vnode,t.kept,!1,!0),t._vnode=t.kept,n(),e.call(t,l,i)}},render:function(t){for(var e=this.tag||this.$vnode.data.tag||"span",l=Object.create(null),i=this.prevChildren=this.children,n=this.$slots.default||[],d=this.children=[],a=_n(this),s=0;s-1?Sl[t]=e.constructor===window.HTMLUnknownElement||e.constructor===window.HTMLElement:Sl[t]=/HTMLUnknownElement/.test(e.toString())},O(Ml.options.directives,Kn),O(Ml.options.components,sd),Ml.prototype.__patch__=A?Jn:U,Ml.prototype.$mount=function(t,e){return function(t,e,l){var i;return t.$el=e,t.$options.render||(t.$options.render=ht),qe(t,"beforeMount"),i=function(){t._update(t._render(),l)},new rl(t,i,U,{before:function(){t._isMounted&&!t._isDestroyed&&qe(t,"beforeUpdate")}},!0),l=!1,null==t.$vnode&&(t._isMounted=!0,qe(t,"mounted")),t}(this,t=t&&A?fl(t):void 0,e)},A&&setTimeout((function(){J.devtools&&nt&&nt.emit("init",Ml)}),0);var cd,od=/\{\{((?:.|\r?\n)+?)\}\}/g,bd=/[-.*+?^${}()|[\]\/\\]/g,rd=G((function(t){var e=t[0].replace(bd,"\\$&"),l=t[1].replace(bd,"\\$&");return new RegExp(e+"((?:.|\\n)+?)"+l,"g")})),md={staticKeys:["staticClass"],transformNode:function(t,e){e.warn;var l=zi(t,"class");l&&(t.staticClass=JSON.stringify(l));var i=Ti(t,"class",!1);i&&(t.classBinding=i)},genData:function(t){var e="";return t.staticClass&&(e+="staticClass:"+t.staticClass+","),t.classBinding&&(e+="class:"+t.classBinding+","),e}},Zd={staticKeys:["staticStyle"],transformNode:function(t,e){e.warn;var l=zi(t,"style");l&&(t.staticStyle=JSON.stringify(en(l)));var i=Ti(t,"style",!1);i&&(t.styleBinding=i)},genData:function(t){var e="";return t.staticStyle&&(e+="staticStyle:"+t.staticStyle+","),t.styleBinding&&(e+="style:("+t.styleBinding+"),"),e}},gd=g("area,base,br,col,embed,frame,hr,img,input,isindex,keygen,link,meta,param,source,track,wbr"),Wd=g("colgroup,dd,dt,li,options,p,td,tfoot,th,thead,tr,source"),hd=g("address,article,aside,base,blockquote,body,caption,col,colgroup,dd,details,dialog,div,dl,dt,fieldset,figcaption,figure,footer,form,h1,h2,h3,h4,h5,h6,head,header,hgroup,hr,html,legend,li,menuitem,meta,optgroup,option,param,rp,rt,source,style,summary,tbody,td,tfoot,th,thead,title,tr,track"),Nd=/^\s*([^\s"'<>\/=]+)(?:\s*(=)\s*(?:"([^"]*)"+|'([^']*)'+|([^\s"'=<>`]+)))?/,yd=/^\s*((?:v-[\w-]+:|@|:|#)\[[^=]+?\][^\s"'<>\/=]*)(?:\s*(=)\s*(?:"([^"]*)"+|'([^']*)'+|([^\s"'=<>`]+)))?/,Id="[a-zA-Z_][\\-\\.0-9_a-zA-Z"+k.source+"]*",Gd="((?:"+Id+"\\:)?"+Id+")",Md=new RegExp("^<"+Gd),ud=/^\s*(\/?)>/,Vd=new RegExp("^<\\/"+Gd+"[^>]*>"),pd=/^]+>/i,Yd=/^",""":'"',"&":"&"," ":"\n"," ":"\t","'":"'"},Ud=/&(?:lt|gt|quot|amp|#39);/g,Xd=/&(?:lt|gt|quot|amp|#39|#10|#9);/g,Td=g("pre,textarea",!0),zd=function(t,e){return t&&Td(t)&&"\n"===e[0]};function Fd(t,e){var l=e?Xd:Ud;return t.replace(l,(function(t){return Dd[t]}))}var vd,wd,jd,Ld,Jd,kd,Cd,xd,Qd=/^@|^v-on:/,Hd=/^v-|^@|^:|^#/,Ad=/([\s\S]*?)\s+(?:in|of)\s+([\s\S]*)/,Sd=/,([^,\}\]]*)(?:,([^,\}\]]*))?$/,Ed=/^\(|\)$/g,fd=/^\[.*\]$/,Kd=/:(.*)$/,Pd=/^:|^\.|^v-bind:/,$d=/\.[^.\]]+(?=[^\]]*$)/g,_d=/^v-slot(:|$)|^#/,qd=/[\r\n]/,ta=/[ \f\t\r\n]+/g,ea=G((function(t){return(cd=cd||document.createElement("div")).innerHTML=t,cd.textContent})),la="_empty_";function ia(t,e,l){return{type:1,tag:t,attrsList:e,attrsMap:oa(e),rawAttrsMap:{},parent:l,children:[]}}function na(t,e){var l,i;(i=Ti(l=t,"key"))&&(l.key=i),t.plain=!t.key&&!t.scopedSlots&&!t.attrsList.length,function(t){var e=Ti(t,"ref");e&&(t.ref=e,t.refInFor=function(t){for(var e=t;e;){if(void 0!==e.for)return!0;e=e.parent}return!1}(t))}(t),function(t){var e;"template"===t.tag?(e=zi(t,"scope"),t.slotScope=e||zi(t,"slot-scope")):(e=zi(t,"slot-scope"))&&(t.slotScope=e);var l=Ti(t,"slot");if(l&&(t.slotTarget='""'===l?'"default"':l,t.slotTargetDynamic=!(!t.attrsMap[":slot"]&&!t.attrsMap["v-bind:slot"]),"template"===t.tag||t.slotScope||Bi(t,"slot",l,function(t,e){return t.rawAttrsMap[":"+e]||t.rawAttrsMap["v-bind:"+e]||t.rawAttrsMap[e]}(t,"slot"))),"template"===t.tag){var i=Fi(t,_d);if(i){var n=sa(i),d=n.name,a=n.dynamic;t.slotTarget=d,t.slotTargetDynamic=a,t.slotScope=i.value||la}}else{var s=Fi(t,_d);if(s){var c=t.scopedSlots||(t.scopedSlots={}),o=sa(s),b=o.name,r=o.dynamic,m=c[b]=ia("template",[],t);m.slotTarget=b,m.slotTargetDynamic=r,m.children=t.children.filter((function(t){if(!t.slotScope)return t.parent=m,!0})),m.slotScope=s.value||la,t.children=[],t.plain=!1}}}(t),function(t){"slot"===t.tag&&(t.slotName=Ti(t,"name"))}(t),function(t){var e;(e=Ti(t,"is"))&&(t.component=e),null!=zi(t,"inline-template")&&(t.inlineTemplate=!0)}(t);for(var n=0;n-1"+("true"===d?":("+e+")":":_q("+e+","+d+")")),Xi(t,"change","var $$a="+e+",$$el=$event.target,$$c=$$el.checked?("+d+"):("+a+");if(Array.isArray($$a)){var $$v="+(i?"_n("+n+")":n)+",$$i=_i($$a,$$v);if($$el.checked){$$i<0&&("+ji(e,"$$a.concat([$$v])")+")}else{$$i>-1&&("+ji(e,"$$a.slice(0,$$i).concat($$a.slice($$i+1))")+")}}else{"+ji(e,"$$c")+"}",null,!0)}(t,i,n);else if("input"===d&&"radio"===a)!function(t,e,l){var i=l&&l.number,n=Ti(t,"value")||"null";Ri(t,"checked","_q("+e+","+(n=i?"_n("+n+")":n)+")"),Xi(t,"change",ji(e,n),null,!0)}(t,i,n);else if("input"===d||"textarea"===d)!function(t,e,l){var i=t.attrsMap.type,n=l||{},d=n.lazy,a=n.number,s=n.trim,c=!d&&"range"!==i,o=d?"change":"range"===i?Hi:"input",b="$event.target.value";s&&(b="$event.target.value.trim()"),a&&(b="_n("+b+")");var r=ji(e,b);c&&(r="if($event.target.composing)return;"+r),Ri(t,"value","("+e+")"),Xi(t,o,r,null,!0),(s||a)&&Xi(t,"blur","$forceUpdate()")}(t,i,n);else if(!J.isReservedTag(d))return wi(t,i,n),!1;return!0},text:function(t,e){e.value&&Ri(t,"textContent","_s("+e.value+")",e)},html:function(t,e){e.value&&Ri(t,"innerHTML","_s("+e.value+")",e)}},isPreTag:function(t){return"pre"===t},isUnaryTag:gd,mustUseProp:Ul,canBeLeftOpenTag:Wd,isReservedTag:Hl,getTagNamespace:Al,staticKeys:function(t){return t.reduce((function(t,e){return t.concat(e.staticKeys||[])}),[]).join(",")}(Wa)},Na=G((function(t){return g("type,tag,attrsList,attrsMap,plain,parent,children,attrs,start,end,rawAttrsMap"+(t?","+t:""))})),ya=/^([\w$_]+|\([^)]*?\))\s*=>|^function(?:\s+[\w$]+)?\s*\(/,Ia=/\([^)]*?\);*$/,Ga=/^[A-Za-z_$][\w$]*(?:\.[A-Za-z_$][\w$]*|\['[^']*?']|\["[^"]*?"]|\[\d+]|\[[A-Za-z_$][\w$]*])*$/,Ma={esc:27,tab:9,enter:13,space:32,up:38,left:37,right:39,down:40,delete:[8,46]},ua={esc:["Esc","Escape"],tab:"Tab",enter:"Enter",space:[" ","Spacebar"],up:["Up","ArrowUp"],left:["Left","ArrowLeft"],right:["Right","ArrowRight"],down:["Down","ArrowDown"],delete:["Backspace","Delete","Del"]},Va=function(t){return"if("+t+")return null;"},pa={stop:"$event.stopPropagation();",prevent:"$event.preventDefault();",self:Va("$event.target !== $event.currentTarget"),ctrl:Va("!$event.ctrlKey"),shift:Va("!$event.shiftKey"),alt:Va("!$event.altKey"),meta:Va("!$event.metaKey"),left:Va("'button' in $event && $event.button !== 0"),middle:Va("'button' in $event && $event.button !== 1"),right:Va("'button' in $event && $event.button !== 2")};function Ya(t,e){var l=e?"nativeOn:":"on:",i="",n="";for(var d in t){var a=Ra(t[d]);t[d]&&t[d].dynamic?n+=d+","+a+",":i+='"'+d+'":'+a+","}return i="{"+i.slice(0,-1)+"}",n?l+"_d("+i+",["+n.slice(0,-1)+"])":l+i}function Ra(t){if(!t)return"function(){}";if(Array.isArray(t))return"["+t.map((function(t){return Ra(t)})).join(",")+"]";var e=Ga.test(t.value),l=ya.test(t.value),i=Ga.test(t.value.replace(Ia,""));if(t.modifiers){var n="",d="",a=[];for(var s in t.modifiers)if(pa[s])d+=pa[s],Ma[s]&&a.push(s);else if("exact"===s){var c=t.modifiers;d+=Va(["ctrl","shift","alt","meta"].filter((function(t){return!c[t]})).map((function(t){return"$event."+t+"Key"})).join("||"))}else a.push(s);return a.length&&(n+=function(t){return"if(!$event.type.indexOf('key')&&"+t.map(Ba).join("&&")+")return null;"}(a)),d&&(n+=d),"function($event){"+n+(e?"return "+t.value+".apply(null, arguments)":l?"return ("+t.value+").apply(null, arguments)":i?"return "+t.value:t.value)+"}"}return e||l?t.value:"function($event){"+(i?"return "+t.value:t.value)+"}"}function Ba(t){var e=parseInt(t,10);if(e)return"$event.keyCode!=="+e;var l=Ma[t],i=ua[t];return"_k($event.keyCode,"+JSON.stringify(t)+","+JSON.stringify(l)+",$event.key,"+JSON.stringify(i)+")"}var Oa={on:function(t,e){t.wrapListeners=function(t){return"_g("+t+","+e.value+")"}},bind:function(t,e){t.wrapData=function(l){return"_b("+l+",'"+t.tag+"',"+e.value+","+(e.modifiers&&e.modifiers.prop?"true":"false")+(e.modifiers&&e.modifiers.sync?",true":"")+")"}},cloak:U},Da=function(t){this.options=t,this.warn=t.warn||pi,this.transforms=Yi(t.modules,"transformCode"),this.dataGenFns=Yi(t.modules,"genData"),this.directives=O(O({},Oa),t.directives);var e=t.isReservedTag||X;this.maybeComponent=function(t){return!!t.component||!e(t.tag)},this.onceId=0,this.staticRenderFns=[],this.pre=!1};function Ua(t,e){var l=new Da(e);return{render:"with(this){return "+(t?"script"===t.tag?"null":Xa(t,l):'_c("div")')+"}",staticRenderFns:l.staticRenderFns}}function Xa(t,e){if(t.parent&&(t.pre=t.pre||t.parent.pre),t.staticRoot&&!t.staticProcessed)return Ta(t,e);if(t.once&&!t.onceProcessed)return za(t,e);if(t.for&&!t.forProcessed)return va(t,e);if(t.if&&!t.ifProcessed)return Fa(t,e);if("template"!==t.tag||t.slotTarget||e.pre){if("slot"===t.tag)return function(t,e){var l=t.slotName||'"default"',i=Ja(t,e),n="_t("+l+(i?",function(){return "+i+"}":""),d=t.attrs||t.dynamicAttrs?xa((t.attrs||[]).concat(t.dynamicAttrs||[]).map((function(t){return{name:u(t.name),value:t.value,dynamic:t.dynamic}}))):null,a=t.attrsMap["v-bind"];return!d&&!a||i||(n+=",null"),d&&(n+=","+d),a&&(n+=(d?"":",null")+","+a),n+")"}(t,e);var l;if(t.component)l=function(t,e,l){var i=e.inlineTemplate?null:Ja(e,l,!0);return"_c("+t+","+wa(e,l)+(i?","+i:"")+")"}(t.component,t,e);else{var i;(!t.plain||t.pre&&e.maybeComponent(t))&&(i=wa(t,e));var n=t.inlineTemplate?null:Ja(t,e,!0);l="_c('"+t.tag+"'"+(i?","+i:"")+(n?","+n:"")+")"}for(var d=0;d>>0}(a):"")+")"}(t,t.scopedSlots,e)+","),t.model&&(l+="model:{value:"+t.model.value+",callback:"+t.model.callback+",expression:"+t.model.expression+"},"),t.inlineTemplate){var d=function(t,e){var l=t.children[0];if(l&&1===l.type){var i=Ua(l,e.options);return"inlineTemplate:{render:function(){"+i.render+"},staticRenderFns:["+i.staticRenderFns.map((function(t){return"function(){"+t+"}"})).join(",")+"]}"}}(t,e);d&&(l+=d+",")}return l=l.replace(/,$/,"")+"}",t.dynamicAttrs&&(l="_b("+l+',"'+t.tag+'",'+xa(t.dynamicAttrs)+")"),t.wrapData&&(l=t.wrapData(l)),t.wrapListeners&&(l=t.wrapListeners(l)),l}function ja(t){return 1===t.type&&("slot"===t.tag||t.children.some(ja))}function La(t,e){var l=t.attrsMap["slot-scope"];if(t.if&&!t.ifProcessed&&!l)return Fa(t,e,La,"null");if(t.for&&!t.forProcessed)return va(t,e,La);var i=t.slotScope===la?"":String(t.slotScope),n="function("+i+"){return "+("template"===t.tag?t.if&&l?"("+t.if+")?"+(Ja(t,e)||"undefined")+":undefined":Ja(t,e)||"undefined":Xa(t,e))+"}",d=i?"":",proxy:true";return"{key:"+(t.slotTarget||'"default"')+",fn:"+n+d+"}"}function Ja(t,e,l,i,n){var d=t.children;if(d.length){var a=d[0];if(1===d.length&&a.for&&"template"!==a.tag&&"slot"!==a.tag){var s=l?e.maybeComponent(a)?",1":",0":"";return""+(i||Xa)(a,e)+s}var c=l?function(t,e){for(var l=0,i=0;i]*>)","i")),m=t.replace(r,(function(t,l,i){return o=i.length,Bd(b)||"noscript"===b||(l=l.replace(//g,"$1").replace(//g,"$1")),zd(b,l)&&(l=l.slice(1)),e.chars&&e.chars(l),""}));c+=t.length-m.length,t=m,R(b,c-o,c)}else{var Z=t.indexOf("<");if(0===Z){if(Yd.test(t)){var g=t.indexOf("--\x3e");if(g>=0){e.shouldKeepComment&&e.comment(t.substring(4,g),c,c+g+3),V(g+3);continue}}if(Rd.test(t)){var W=t.indexOf("]>");if(W>=0){V(W+2);continue}}var h=t.match(pd);if(h){V(h[0].length);continue}var N=t.match(Vd);if(N){var y=c;V(N[0].length),R(N[1],y,c);continue}var I=p();if(I){Y(I),zd(I.tagName,t)&&V(1);continue}}var G=void 0,M=void 0,u=void 0;if(Z>=0){for(M=t.slice(Z);!(Vd.test(M)||Md.test(M)||Yd.test(M)||Rd.test(M)||(u=M.indexOf("<",1))<0);)Z+=u,M=t.slice(Z);G=t.substring(0,Z)}Z<0&&(G=t),G&&V(G.length),e.chars&&G&&e.chars(G,c-G.length,c)}if(t===l){e.chars&&e.chars(t);break}}function V(e){c+=e,t=t.substring(e)}function p(){var e=t.match(Md);if(e){var l,i,n={tagName:e[1],attrs:[],start:c};for(V(e[0].length);!(l=t.match(ud))&&(i=t.match(yd)||t.match(Nd));)i.start=c,V(i[0].length),i.end=c,n.attrs.push(i);if(l)return n.unarySlash=l[1],V(l[0].length),n.end=c,n}}function Y(t){var l=t.tagName,c=t.unarySlash;d&&("p"===i&&hd(l)&&R(i),s(l)&&i===l&&R(l));for(var o=a(l)||!!c,b=t.attrs.length,r=new Array(b),m=0;m=0&&n[a].lowerCasedTag!==s;a--);else a=0;if(a>=0){for(var o=n.length-1;o>=a;o--)e.end&&e.end(n[o].tag,l,d);n.length=a,i=a&&n[a-1].tag}else"br"===s?e.start&&e.start(t,[],!0,l,d):"p"===s&&(e.start&&e.start(t,[],!1,l,d),e.end&&e.end(t,l,d))}R()}(t,{warn:vd,expectHTML:e.expectHTML,isUnaryTag:e.isUnaryTag,canBeLeftOpenTag:e.canBeLeftOpenTag,shouldDecodeNewlines:e.shouldDecodeNewlines,shouldDecodeNewlinesForHref:e.shouldDecodeNewlinesForHref,shouldKeepComment:e.comments,outputSourceRange:e.outputSourceRange,start:function(t,d,a,b,r){var m=i&&i.ns||xd(t);K&&"svg"===m&&(d=function(t){for(var e=[],l=0;lc&&(s.push(d=t.slice(c,n)),a.push(JSON.stringify(d)));var o=ui(i[1].trim());a.push("_s("+o+")"),s.push({"@binding":o}),c=n+i[0].length}return c':'
',Ea.innerHTML.indexOf(" ")>0}var $a=!!A&&Pa(!1),_a=!!A&&Pa(!0),qa=G((function(t){var e=fl(t);return e&&e.innerHTML})),ts=Ml.prototype.$mount;return Ml.prototype.$mount=function(t,e){if((t=t&&fl(t))===document.body||t===document.documentElement)return this;var l=this.$options;if(!l.render){var i=l.template;if(i)if("string"==typeof i)"#"===i.charAt(0)&&(i=qa(i));else{if(!i.nodeType)return this;i=i.innerHTML}else t&&(i=function(t){if(t.outerHTML)return t.outerHTML;var e=document.createElement("div");return e.appendChild(t.cloneNode(!0)),e.innerHTML}(t));if(i){var n=Ka(i,{outputSourceRange:!1,shouldDecodeNewlines:$a,shouldDecodeNewlinesForHref:_a,delimiters:l.delimiters,comments:l.comments},this),d=n.render,a=n.staticRenderFns;l.render=d,l.staticRenderFns=a}}return ts.call(this,t,e)},Ml.compile=Ka,Ml}()}).call(this,l(5),l(25).setImmediate)},function(t,e,l){(function(t){var i=void 0!==t&&t||"undefined"!=typeof self&&self||window,n=Function.prototype.apply;function d(t,e){this._id=t,this._clearFn=e}e.setTimeout=function(){return new d(n.call(setTimeout,i,arguments),clearTimeout)},e.setInterval=function(){return new d(n.call(setInterval,i,arguments),clearInterval)},e.clearTimeout=e.clearInterval=function(t){t&&t.close()},d.prototype.unref=d.prototype.ref=function(){},d.prototype.close=function(){this._clearFn.call(i,this._id)},e.enroll=function(t,e){clearTimeout(t._idleTimeoutId),t._idleTimeout=e},e.unenroll=function(t){clearTimeout(t._idleTimeoutId),t._idleTimeout=-1},e._unrefActive=e.active=function(t){clearTimeout(t._idleTimeoutId);var e=t._idleTimeout;e>=0&&(t._idleTimeoutId=setTimeout((function(){t._onTimeout&&t._onTimeout()}),e))},l(26),e.setImmediate="undefined"!=typeof self&&self.setImmediate||void 0!==t&&t.setImmediate||this&&this.setImmediate,e.clearImmediate="undefined"!=typeof self&&self.clearImmediate||void 0!==t&&t.clearImmediate||this&&this.clearImmediate}).call(this,l(5))},function(t,e,l){(function(t,e){!function(t,l){"use strict";if(!t.setImmediate){var i,n,d,a,s,c=1,o={},b=!1,r=t.document,m=Object.getPrototypeOf&&Object.getPrototypeOf(t);m=m&&m.setTimeout?m:t,"[object process]"==={}.toString.call(t.process)?i=function(t){e.nextTick((function(){g(t)}))}:!function(){if(t.postMessage&&!t.importScripts){var e=!0,l=t.onmessage;return t.onmessage=function(){e=!1},t.postMessage("","*"),t.onmessage=l,e}}()?t.MessageChannel?((d=new MessageChannel).port1.onmessage=function(t){g(t.data)},i=function(t){d.port2.postMessage(t)}):r&&"onreadystatechange"in r.createElement("script")?(n=r.documentElement,i=function(t){var e=r.createElement("script");e.onreadystatechange=function(){g(t),e.onreadystatechange=null,n.removeChild(e),e=null},n.appendChild(e)}):i=function(t){setTimeout(g,0,t)}:(a="setImmediate$"+Math.random()+"$",s=function(e){e.source===t&&"string"==typeof e.data&&0===e.data.indexOf(a)&&g(+e.data.slice(a.length))},t.addEventListener?t.addEventListener("message",s,!1):t.attachEvent("onmessage",s),i=function(e){t.postMessage(a+e,"*")}),m.setImmediate=function(t){"function"!=typeof t&&(t=new Function(""+t));for(var e=new Array(arguments.length-1),l=0;l({pantryID:null}),methods:{changeView(t){this.$emit("change-view",t)},displayOnboarding(t){this.pantryID=t,this.$emit("change-view",n.created)}}};t.exports=d},function(t,e){t.exports='
\n \n\n \n\n \n\n \n\n \n\n \n
\n'},function(t,e,l){"use strict";var i=this&&this.__awaiter||function(t,e,l,i){return new(l||(l=Promise))((function(n,d){function a(t){try{c(i.next(t))}catch(t){d(t)}}function s(t){try{c(i.throw(t))}catch(t){d(t)}}function c(t){var e;t.done?n(t.value):(e=t.value,e instanceof l?e:new l((function(t){t(e)}))).then(a,s)}c((i=i.apply(t,e||[])).next())}))};const n=l(4),d=l(3).apiPath,a={name:"dashboard",template:l(53),props:["pantryID"],components:{explorer:l(54),login:l(69),banner:l(21)},data:()=>({signedIn:!1,id:null,pantry:null,promo:{emoji:"🔥",snippet:"Free Stickers?",title:"Fill out our user survey and get free Pantry stickers!"}}),methods:{login(t){return i(this,void 0,void 0,(function*(){try{yield this.fetchPantry(t),this.createSession(),this.signedIn=!0}catch(t){alert("Login Failed. Is your PantryID correct?")}}))},refresh(){return i(this,void 0,void 0,(function*(){yield this.fetchPantry(this.id)}))},fetchPantry(t){return i(this,void 0,void 0,(function*(){const{data:e}=yield n({method:"GET",url:`${d}/pantry/${t}`});this.id=t,this.pantry=Object.assign(Object.assign({},e),{id:this.id})}))},loadFromSession(){return i(this,void 0,void 0,(function*(){null!==sessionStorage.getItem("pantry-id")&&(yield this.login(sessionStorage.getItem("pantry-id")))}))},createSession(){sessionStorage.setItem("pantry-id",this.id)},urlPantryID:()=>window.location.search.match(/(\?|&)pantryid\=([^&]*)/),loadFromURL(){return i(this,void 0,void 0,(function*(){if(null===this.urlPantryID())return;const t=decodeURIComponent(this.urlPantryID()[2]);yield this.login(t)}))},bannerCTAClicked(){window.location.href="https://tally.so/r/m6yPAn"}},mounted(){this.loadFromSession(),this.loadFromURL()}};t.exports=a},function(t,e,l){"use strict";var i=l(0),n=l(11),d=l(36),a=l(17);function s(t){var e=new d(t),l=n(d.prototype.request,e);return i.extend(l,d.prototype,e),i.extend(l,e),l}var c=s(l(8));c.Axios=d,c.create=function(t){return s(a(c.defaults,t))},c.Cancel=l(18),c.CancelToken=l(50),c.isCancel=l(16),c.all=function(t){return Promise.all(t)},c.spread=l(51),c.isAxiosError=l(52),t.exports=c,t.exports.default=c},function(t,e,l){"use strict";var i=l(0),n=l(12),d=l(37),a=l(38),s=l(17),c=l(48),o=c.validators;function b(t){this.defaults=t,this.interceptors={request:new d,response:new d}}b.prototype.request=function(t){"string"==typeof t?(t=arguments[1]||{}).url=arguments[0]:t=t||{},(t=s(this.defaults,t)).method?t.method=t.method.toLowerCase():this.defaults.method?t.method=this.defaults.method.toLowerCase():t.method="get";var e=t.transitional;void 0!==e&&c.assertOptions(e,{silentJSONParsing:o.transitional(o.boolean,"1.0.0"),forcedJSONParsing:o.transitional(o.boolean,"1.0.0"),clarifyTimeoutError:o.transitional(o.boolean,"1.0.0")},!1);var l=[],i=!0;this.interceptors.request.forEach((function(e){"function"==typeof e.runWhen&&!1===e.runWhen(t)||(i=i&&e.synchronous,l.unshift(e.fulfilled,e.rejected))}));var n,d=[];if(this.interceptors.response.forEach((function(t){d.push(t.fulfilled,t.rejected)})),!i){var b=[a,void 0];for(Array.prototype.unshift.apply(b,l),b=b.concat(d),n=Promise.resolve(t);b.length;)n=n.then(b.shift(),b.shift());return n}for(var r=t;l.length;){var m=l.shift(),Z=l.shift();try{r=m(r)}catch(t){Z(t);break}}try{n=a(r)}catch(t){return Promise.reject(t)}for(;d.length;)n=n.then(d.shift(),d.shift());return n},b.prototype.getUri=function(t){return t=s(this.defaults,t),n(t.url,t.params,t.paramsSerializer).replace(/^\?/,"")},i.forEach(["delete","get","head","options"],(function(t){b.prototype[t]=function(e,l){return this.request(s(l||{},{method:t,url:e,data:(l||{}).data}))}})),i.forEach(["post","put","patch"],(function(t){b.prototype[t]=function(e,l,i){return this.request(s(i||{},{method:t,url:e,data:l}))}})),t.exports=b},function(t,e,l){"use strict";var i=l(0);function n(){this.handlers=[]}n.prototype.use=function(t,e,l){return this.handlers.push({fulfilled:t,rejected:e,synchronous:!!l&&l.synchronous,runWhen:l?l.runWhen:null}),this.handlers.length-1},n.prototype.eject=function(t){this.handlers[t]&&(this.handlers[t]=null)},n.prototype.forEach=function(t){i.forEach(this.handlers,(function(e){null!==e&&t(e)}))},t.exports=n},function(t,e,l){"use strict";var i=l(0),n=l(39),d=l(16),a=l(8);function s(t){t.cancelToken&&t.cancelToken.throwIfRequested()}t.exports=function(t){return s(t),t.headers=t.headers||{},t.data=n.call(t,t.data,t.headers,t.transformRequest),t.headers=i.merge(t.headers.common||{},t.headers[t.method]||{},t.headers),i.forEach(["delete","get","head","post","put","patch","common"],(function(e){delete t.headers[e]})),(t.adapter||a.adapter)(t).then((function(e){return s(t),e.data=n.call(t,e.data,e.headers,t.transformResponse),e}),(function(e){return d(e)||(s(t),e&&e.response&&(e.response.data=n.call(t,e.response.data,e.response.headers,t.transformResponse))),Promise.reject(e)}))}},function(t,e,l){"use strict";var i=l(0),n=l(8);t.exports=function(t,e,l){var d=this||n;return i.forEach(l,(function(l){t=l.call(d,t,e)})),t}},function(t,e,l){"use strict";var i=l(0);t.exports=function(t,e){i.forEach(t,(function(l,i){i!==e&&i.toUpperCase()===e.toUpperCase()&&(t[e]=l,delete t[i])}))}},function(t,e,l){"use strict";var i=l(15);t.exports=function(t,e,l){var n=l.config.validateStatus;l.status&&n&&!n(l.status)?e(i("Request failed with status code "+l.status,l.config,null,l.request,l)):t(l)}},function(t,e,l){"use strict";var i=l(0);t.exports=i.isStandardBrowserEnv()?{write:function(t,e,l,n,d,a){var s=[];s.push(t+"="+encodeURIComponent(e)),i.isNumber(l)&&s.push("expires="+new Date(l).toGMTString()),i.isString(n)&&s.push("path="+n),i.isString(d)&&s.push("domain="+d),!0===a&&s.push("secure"),document.cookie=s.join("; ")},read:function(t){var e=document.cookie.match(new RegExp("(^|;\\s*)("+t+")=([^;]*)"));return e?decodeURIComponent(e[3]):null},remove:function(t){this.write(t,"",Date.now()-864e5)}}:{write:function(){},read:function(){return null},remove:function(){}}},function(t,e,l){"use strict";var i=l(44),n=l(45);t.exports=function(t,e){return t&&!i(e)?n(t,e):e}},function(t,e,l){"use strict";t.exports=function(t){return/^([a-z][a-z\d\+\-\.]*:)?\/\//i.test(t)}},function(t,e,l){"use strict";t.exports=function(t,e){return e?t.replace(/\/+$/,"")+"/"+e.replace(/^\/+/,""):t}},function(t,e,l){"use strict";var i=l(0),n=["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"];t.exports=function(t){var e,l,d,a={};return t?(i.forEach(t.split("\n"),(function(t){if(d=t.indexOf(":"),e=i.trim(t.substr(0,d)).toLowerCase(),l=i.trim(t.substr(d+1)),e){if(a[e]&&n.indexOf(e)>=0)return;a[e]="set-cookie"===e?(a[e]?a[e]:[]).concat([l]):a[e]?a[e]+", "+l:l}})),a):a}},function(t,e,l){"use strict";var i=l(0);t.exports=i.isStandardBrowserEnv()?function(){var t,e=/(msie|trident)/i.test(navigator.userAgent),l=document.createElement("a");function n(t){var i=t;return e&&(l.setAttribute("href",i),i=l.href),l.setAttribute("href",i),{href:l.href,protocol:l.protocol?l.protocol.replace(/:$/,""):"",host:l.host,search:l.search?l.search.replace(/^\?/,""):"",hash:l.hash?l.hash.replace(/^#/,""):"",hostname:l.hostname,port:l.port,pathname:"/"===l.pathname.charAt(0)?l.pathname:"/"+l.pathname}}return t=n(window.location.href),function(e){var l=i.isString(e)?n(e):e;return l.protocol===t.protocol&&l.host===t.host}}():function(){return!0}},function(t,e,l){"use strict";var i=l(49),n={};["object","boolean","number","function","string","symbol"].forEach((function(t,e){n[t]=function(l){return typeof l===t||"a"+(e<1?"n ":" ")+t}}));var d={},a=i.version.split(".");function s(t,e){for(var l=e?e.split("."):a,i=t.split("."),n=0;n<3;n++){if(l[n]>i[n])return!0;if(l[n]0;){var d=i[n],a=e[d];if(a){var s=t[d],c=void 0===s||a(s,d,t);if(!0!==c)throw new TypeError("option "+d+" must be "+c)}else if(!0!==l)throw Error("Unknown option "+d)}},validators:n}},function(t){t.exports=JSON.parse('{"name":"axios","version":"0.21.4","description":"Promise based HTTP client for the browser and node.js","main":"index.js","scripts":{"test":"grunt test","start":"node ./sandbox/server.js","build":"NODE_ENV=production grunt build","preversion":"npm test","version":"npm run build && grunt version && git add -A dist && git add CHANGELOG.md bower.json package.json","postversion":"git push && git push --tags","examples":"node ./examples/server.js","coveralls":"cat coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js","fix":"eslint --fix lib/**/*.js"},"repository":{"type":"git","url":"https://github.com/axios/axios.git"},"keywords":["xhr","http","ajax","promise","node"],"author":"Matt Zabriskie","license":"MIT","bugs":{"url":"https://github.com/axios/axios/issues"},"homepage":"https://axios-http.com","devDependencies":{"coveralls":"^3.0.0","es6-promise":"^4.2.4","grunt":"^1.3.0","grunt-banner":"^0.6.0","grunt-cli":"^1.2.0","grunt-contrib-clean":"^1.1.0","grunt-contrib-watch":"^1.0.0","grunt-eslint":"^23.0.0","grunt-karma":"^4.0.0","grunt-mocha-test":"^0.13.3","grunt-ts":"^6.0.0-beta.19","grunt-webpack":"^4.0.2","istanbul-instrumenter-loader":"^1.0.0","jasmine-core":"^2.4.1","karma":"^6.3.2","karma-chrome-launcher":"^3.1.0","karma-firefox-launcher":"^2.1.0","karma-jasmine":"^1.1.1","karma-jasmine-ajax":"^0.1.13","karma-safari-launcher":"^1.0.0","karma-sauce-launcher":"^4.3.6","karma-sinon":"^1.0.5","karma-sourcemap-loader":"^0.3.8","karma-webpack":"^4.0.2","load-grunt-tasks":"^3.5.2","minimist":"^1.2.0","mocha":"^8.2.1","sinon":"^4.5.0","terser-webpack-plugin":"^4.2.3","typescript":"^4.0.5","url-search-params":"^0.10.0","webpack":"^4.44.2","webpack-dev-server":"^3.11.0"},"browser":{"./lib/adapters/http.js":"./lib/adapters/xhr.js"},"jsdelivr":"dist/axios.min.js","unpkg":"dist/axios.min.js","typings":"./index.d.ts","dependencies":{"follow-redirects":"^1.14.0"},"bundlesize":[{"path":"./dist/axios.min.js","threshold":"5kB"}]}')},function(t,e,l){"use strict";var i=l(18);function n(t){if("function"!=typeof t)throw new TypeError("executor must be a function.");var e;this.promise=new Promise((function(t){e=t}));var l=this;t((function(t){l.reason||(l.reason=new i(t),e(l.reason))}))}n.prototype.throwIfRequested=function(){if(this.reason)throw this.reason},n.source=function(){var t;return{token:new n((function(e){t=e})),cancel:t}},t.exports=n},function(t,e,l){"use strict";t.exports=function(t){return function(e){return t.apply(null,e)}}},function(t,e,l){"use strict";t.exports=function(t){return"object"==typeof t&&!0===t.isAxiosError}},function(t,e){t.exports='
\n
\n \n
\n
\n
\n \n \n
\n
\n
\n'},function(t,e,l){"use strict";var i=this&&this.__awaiter||function(t,e,l,i){return new(l||(l=Promise))((function(n,d){function a(t){try{c(i.next(t))}catch(t){d(t)}}function s(t){try{c(i.throw(t))}catch(t){d(t)}}function c(t){var e;t.done?n(t.value):(e=t.value,e instanceof l?e:new l((function(t){t(e)}))).then(a,s)}c((i=i.apply(t,e||[])).next())}))};const n=l(4),d=l(3),a=l(55),s=d.apiPath,c={name:"explorer",props:["pantry"],template:a,components:{changelog:l(56),explorerEmpty:l(58),explorerOnboarding:l(60),basket:l(62),modal:l(20)},data:()=>({basket:null}),computed:{errorsExist(){return this.pantry.errors&&this.pantry.errors.length>0},isPantryEmpty(){return this.pantry.baskets&&0===this.pantry.baskets.length},activeBasket(){return this.basket?this.basket.name:""}},methods:{daysToDeletion(t){const e=new Date;return e.setSeconds(t),this.getDiffOfDates(new Date,e)},getDiffOfDates(t,e){const l=Date.UTC(t.getFullYear(),t.getMonth(),t.getDate()),i=Date.UTC(e.getFullYear(),e.getMonth(),e.getDate());return Math.floor((i-l)/864e5)},refresh(){this.$emit("refresh"),this.basket=null},createBasket(){return i(this,void 0,void 0,(function*(){const t=Math.floor(100*Math.random()+1),e=prompt("What is the name of the new basket?","newBasket"+t);e&&(yield n({method:"POST",data:{key:"value"},url:`${s}/pantry/${this.pantry.id}/basket/${e}`}),this.refresh())}))},renamePantry(){return i(this,void 0,void 0,(function*(){const t=this.pantry.name,e=prompt("Pantry Name:",t);e&&(yield n({method:"PUT",data:{name:e},url:`${s}/pantry/${this.pantry.id}`}),this.refresh())}))},changePantryDescription(){return i(this,void 0,void 0,(function*(){const t=this.pantry.description,e=prompt("Pantry Description:",t);e&&(yield n({method:"PUT",data:{description:e},url:`${s}/pantry/${this.pantry.id}`}),this.refresh())}))},viewBasket(t){return i(this,void 0,void 0,(function*(){const{data:e}=yield n({method:"GET",url:`${s}/pantry/${this.pantry.id}/basket/${t}`});this.basket={data:e,name:t}}))},loadBasket(){if(this.pantry.baskets&&this.pantry.baskets.length>0){const{name:t}=this.pantry.baskets[0];this.viewBasket(t)}}}};t.exports=c},function(t,e){t.exports='
\n
\n
\n
\n \n {{ pantry.name }}\n \n \n {{ pantry.percentFull}}% Full\n \n
\n
\n \n
\n
\n
\n
\n \n \n \n
\n
\n'},function(t,e,l){"use strict";const i={name:"changelog",template:l(57),data:()=>({items:[{description:"Add Metadata to Baskets"},{description:"Introduce Public Basket Endpoints"},{description:"Performance Improvements"},{description:"Added Nushell client"}]}),methods:{}};t.exports=i},function(t,e){t.exports='
\n\t

\n\t\tChangelog\n\t

\n\t\n
\n'},function(t,e,l){"use strict";const i=l(3),n=i.apiPath,d=i.docsPath,a={name:"explorerEmpty",template:l(59),props:["pantryId"],data:()=>({apiPath:n}),methods:{showDocs(){window.location.href=d}}};t.exports=a},function(t,e){t.exports='
\n
\n
\n
\n

\n \n Welcome to Pantry\n \n \n Getting Started\n \n

\n\n

\n The API is organized around\n \n REST,\n \n and accepts JSON-encoded request bodies. To get started, create\n your first basket in your pantry by following our\n \n API documentation.\n \n

\n\n

\n If you\'re ok using the terminal, paste a snippet from\n below to create your first basket.\n

\n\n

\n Or, click on \'Create new basket\' from the sidebar on the left and use\n our dashboard to create one.\n

\n\n
\n

\n Curl\n

\n

\n Unix/Linux\n

\n
\n

\n curl -XPOST -H "Content-type: application/json" -d \'{\n "key": "value"\n }\' \'{{apiPath}}/pantry/{{this.pantryId}}/basket/testBasket\'\n

\n\n
\n

\n Powershell\n

\n

\n Windows\n

\n
\n\n

\n Invoke-WebRequest -Uri \'{{apiPath}}/pantry/{{this.pantryId}}/basket/testBasket\' -Method POST -ContentType \'application/json\' -Body \'{\n "key": "value" \n }\'\n

\n\n \n
\n
\n
\n
\n'},function(t,e,l){"use strict";const i={name:"explorerOnboarding",template:l(61),data:()=>({}),methods:{loadBasket(){this.$emit("load-basket")}}};t.exports=i},function(t,e){t.exports='
\n \n
\n'},function(t,e,l){"use strict";var i=this&&this.__awaiter||function(t,e,l,i){return new(l||(l=Promise))((function(n,d){function a(t){try{c(i.next(t))}catch(t){d(t)}}function s(t){try{c(i.throw(t))}catch(t){d(t)}}function c(t){var e;t.done?n(t.value):(e=t.value,e instanceof l?e:new l((function(t){t(e)}))).then(a,s)}c((i=i.apply(t,e||[])).next())}))};const n=l(4),d=l(100).default,a=l(3),s=l(67),c=l(20),o=a.apiPath,b={props:["pantryId","basket"],name:"basket",components:{modal:c,"json-edit":d},template:s,data:()=>({apiPath:o,shareModalVisible:!1,publicBasketPath:null}),computed:{name(){return this.basket.name},data:{get(){return this.basket.data},set(t){this.basket.data=t}}},methods:{copyPath(t){return i(this,void 0,void 0,(function*(){yield navigator.clipboard.writeText(t),alert("Saved to clipboard")}))},refreshDashboard(){this.$emit("update")},basketPath(){return`${o}/pantry/${this.pantryId}/basket/${this.name}`},getPublicBasket(){return i(this,void 0,void 0,(function*(){const{data:t}=yield n({method:"GET",url:this.basketPath()+"/public"});this.publicBasketPath=`${o}/public/${t}`}))},deleteBasket(){return i(this,void 0,void 0,(function*(){confirm(`Are you sure you'd like to delete ${this.name}?`)&&(yield n({method:"DELETE",url:this.basketPath()}),this.refreshDashboard())}))},save(){return i(this,void 0,void 0,(function*(){const{data:t}=yield n({method:"PUT",data:this.data,url:this.basketPath()});alert(this.name+" contents updated!"),this.data=t}))},openShareModal(){this.getPublicBasket(),this.shareModalVisible=!0},closeShareModal(){this.shareModalVisible=!1}}};t.exports=b},function(t,e,l){var i=l(64);"string"==typeof i&&(i=[[t.i,i,""]]);var n={hmr:!0,transform:void 0,insertInto:void 0};l(7)(i,n);i.locals&&(t.exports=i.locals)},function(t,e,l){var i=l(10);(t.exports=l(6)(!1)).push([t.i,'/* reset styling (prevent conflicts with bootstrap, materialize.css, etc.) */\r\n\r\ndiv.jsoneditor .jsoneditor-search input {\r\n height: auto;\r\n border: inherit;\r\n}\r\n\r\ndiv.jsoneditor .jsoneditor-search input:focus {\r\n border: none !important;\r\n box-shadow: none !important;\r\n}\r\n\r\ndiv.jsoneditor table {\r\n border-collapse: collapse;\r\n width: auto;\r\n}\r\n\r\ndiv.jsoneditor td,\r\ndiv.jsoneditor th {\r\n padding: 0;\r\n display: table-cell;\r\n text-align: left;\r\n vertical-align: inherit;\r\n border-radius: inherit;\r\n}\r\n\r\n\r\ndiv.jsoneditor-field,\r\ndiv.jsoneditor-value,\r\ndiv.jsoneditor-readonly {\r\n border: 1px solid transparent;\r\n min-height: 16px;\r\n min-width: 32px;\r\n padding: 2px;\r\n margin: 1px;\r\n word-wrap: break-word;\r\n float: left;\r\n}\r\n\r\n/* adjust margin of p elements inside editable divs, needed for Opera, IE */\r\n\r\ndiv.jsoneditor-field p,\r\ndiv.jsoneditor-value p {\r\n margin: 0;\r\n}\r\n\r\ndiv.jsoneditor-value {\r\n word-break: break-word;\r\n}\r\n\r\ndiv.jsoneditor-readonly {\r\n min-width: 16px;\r\n color: gray;\r\n}\r\n\r\ndiv.jsoneditor-empty {\r\n border-color: lightgray;\r\n border-style: dashed;\r\n border-radius: 2px;\r\n}\r\n\r\ndiv.jsoneditor-field.jsoneditor-empty::after,\r\ndiv.jsoneditor-value.jsoneditor-empty::after {\r\n pointer-events: none;\r\n color: lightgray;\r\n font-size: 8pt;\r\n}\r\n\r\ndiv.jsoneditor-field.jsoneditor-empty::after {\r\n content: "field";\r\n}\r\n\r\ndiv.jsoneditor-value.jsoneditor-empty::after {\r\n content: "value";\r\n}\r\n\r\ndiv.jsoneditor-value.jsoneditor-url,\r\na.jsoneditor-value.jsoneditor-url {\r\n color: green;\r\n text-decoration: underline;\r\n}\r\n\r\na.jsoneditor-value.jsoneditor-url {\r\n display: inline-block;\r\n padding: 2px;\r\n margin: 2px;\r\n}\r\n\r\na.jsoneditor-value.jsoneditor-url:hover,\r\na.jsoneditor-value.jsoneditor-url:focus {\r\n color: #ee422e;\r\n}\r\n\r\ndiv.jsoneditor td.jsoneditor-separator {\r\n padding: 3px 0;\r\n vertical-align: top;\r\n color: gray;\r\n}\r\n\r\ndiv.jsoneditor-field[contenteditable=true]:focus,\r\ndiv.jsoneditor-field[contenteditable=true]:hover,\r\ndiv.jsoneditor-value[contenteditable=true]:focus,\r\ndiv.jsoneditor-value[contenteditable=true]:hover,\r\ndiv.jsoneditor-field.jsoneditor-highlight,\r\ndiv.jsoneditor-value.jsoneditor-highlight {\r\n background-color: #FFFFAB;\r\n border: 1px solid yellow;\r\n border-radius: 2px;\r\n}\r\n\r\ndiv.jsoneditor-field.jsoneditor-highlight-active,\r\ndiv.jsoneditor-field.jsoneditor-highlight-active:focus,\r\ndiv.jsoneditor-field.jsoneditor-highlight-active:hover,\r\ndiv.jsoneditor-value.jsoneditor-highlight-active,\r\ndiv.jsoneditor-value.jsoneditor-highlight-active:focus,\r\ndiv.jsoneditor-value.jsoneditor-highlight-active:hover {\r\n background-color: #ffee00;\r\n border: 1px solid #ffc700;\r\n border-radius: 2px;\r\n}\r\n\r\ndiv.jsoneditor-value.jsoneditor-string {\r\n color: #008000;\r\n}\r\n\r\ndiv.jsoneditor-value.jsoneditor-object,\r\ndiv.jsoneditor-value.jsoneditor-array {\r\n min-width: 16px;\r\n color: #808080;\r\n}\r\n\r\ndiv.jsoneditor-value.jsoneditor-number {\r\n color: #ee422e;\r\n}\r\n\r\ndiv.jsoneditor-value.jsoneditor-boolean {\r\n color: #ff8c00;\r\n}\r\n\r\ndiv.jsoneditor-value.jsoneditor-null {\r\n color: #004ED0;\r\n}\r\n\r\ndiv.jsoneditor-value.jsoneditor-invalid {\r\n color: #000000;\r\n}\r\n\r\ndiv.jsoneditor-tree button {\r\n width: 24px;\r\n height: 24px;\r\n padding: 0;\r\n margin: 0;\r\n border: none;\r\n cursor: pointer;\r\n background: transparent url('+i(l(1))+");\r\n}\r\n\r\ndiv.jsoneditor-mode-view tr.jsoneditor-expandable td.jsoneditor-tree,\r\ndiv.jsoneditor-mode-form tr.jsoneditor-expandable td.jsoneditor-tree {\r\n cursor: pointer;\r\n}\r\n\r\ndiv.jsoneditor-tree button.jsoneditor-collapsed {\r\n background-position: 0 -48px;\r\n}\r\n\r\ndiv.jsoneditor-tree button.jsoneditor-expanded {\r\n background-position: 0 -72px;\r\n}\r\n\r\ndiv.jsoneditor-tree button.jsoneditor-contextmenu {\r\n background-position: -48px -72px;\r\n}\r\n\r\ndiv.jsoneditor-tree button.jsoneditor-contextmenu:hover,\r\ndiv.jsoneditor-tree button.jsoneditor-contextmenu:focus,\r\ndiv.jsoneditor-tree button.jsoneditor-contextmenu.jsoneditor-selected,\r\ntr.jsoneditor-selected.jsoneditor-first button.jsoneditor-contextmenu {\r\n background-position: -48px -48px;\r\n}\r\n\r\ndiv.jsoneditor-tree *:focus {\r\n outline: none;\r\n}\r\n\r\ndiv.jsoneditor-tree button:focus {\r\n /* TODO: nice outline for buttons with focus\r\n outline: #97B0F8 solid 2px;\r\n box-shadow: 0 0 8px #97B0F8;\r\n */\r\n background-color: #f5f5f5;\r\n outline: #e5e5e5 solid 1px;\r\n}\r\n\r\ndiv.jsoneditor-tree button.jsoneditor-invisible {\r\n visibility: hidden;\r\n background: none;\r\n}\r\n\r\ndiv.jsoneditor {\r\n color: #1A1A1A;\r\n border: 1px solid #3883fa;\r\n -moz-box-sizing: border-box;\r\n -webkit-box-sizing: border-box;\r\n box-sizing: border-box;\r\n width: 100%;\r\n height: 100%;\r\n overflow: hidden;\r\n position: relative;\r\n padding: 0;\r\n line-height: 100%;\r\n}\r\n\r\ndiv.jsoneditor-tree table.jsoneditor-tree {\r\n border-collapse: collapse;\r\n border-spacing: 0;\r\n width: 100%;\r\n margin: 0;\r\n}\r\n\r\ndiv.jsoneditor-outer {\r\n position: static;\r\n width: 100%;\r\n height: 100%;\r\n margin: -35px 0 0 0;\r\n padding: 35px 0 0 0;\r\n -moz-box-sizing: border-box;\r\n -webkit-box-sizing: border-box;\r\n box-sizing: border-box;\r\n}\r\n\r\ntextarea.jsoneditor-text,\r\n.ace-jsoneditor {\r\n min-height: 150px;\r\n}\r\n\r\ndiv.jsoneditor-tree {\r\n width: 100%;\r\n height: 100%;\r\n position: relative;\r\n overflow: auto;\r\n}\r\n\r\ntextarea.jsoneditor-text {\r\n width: 100%;\r\n height: 100%;\r\n margin: 0;\r\n -moz-box-sizing: border-box;\r\n -webkit-box-sizing: border-box;\r\n box-sizing: border-box;\r\n outline-width: 0;\r\n border: none;\r\n background-color: white;\r\n resize: none;\r\n}\r\n\r\ntr.jsoneditor-highlight,\r\ntr.jsoneditor-selected {\r\n background-color: #e6e6e6;\r\n}\r\n\r\ntr.jsoneditor-selected button.jsoneditor-dragarea,\r\ntr.jsoneditor-selected button.jsoneditor-contextmenu {\r\n visibility: hidden;\r\n}\r\n\r\ntr.jsoneditor-selected.jsoneditor-first button.jsoneditor-dragarea,\r\ntr.jsoneditor-selected.jsoneditor-first button.jsoneditor-contextmenu {\r\n visibility: visible;\r\n}\r\n\r\ndiv.jsoneditor-tree button.jsoneditor-dragarea {\r\n background: url("+i(l(1))+") -72px -72px;\r\n cursor: move;\r\n}\r\n\r\ndiv.jsoneditor-tree button.jsoneditor-dragarea:hover,\r\ndiv.jsoneditor-tree button.jsoneditor-dragarea:focus,\r\ntr.jsoneditor-selected.jsoneditor-first button.jsoneditor-dragarea {\r\n background-position: -72px -48px;\r\n}\r\n\r\ndiv.jsoneditor tr,\r\ndiv.jsoneditor th,\r\ndiv.jsoneditor td {\r\n padding: 0;\r\n margin: 0;\r\n}\r\n\r\ndiv.jsoneditor td {\r\n vertical-align: top;\r\n}\r\n\r\ndiv.jsoneditor td.jsoneditor-tree {\r\n vertical-align: top;\r\n}\r\n\r\ndiv.jsoneditor-field,\r\ndiv.jsoneditor-value,\r\ndiv.jsoneditor td,\r\ndiv.jsoneditor th,\r\ndiv.jsoneditor textarea,\r\n.jsoneditor-schema-error {\r\n font-family: droid sans mono, consolas, monospace, courier new, courier, sans-serif;\r\n font-size: 10pt;\r\n color: #1A1A1A;\r\n}\r\n\r\n/* popover */\r\n\r\n.jsoneditor-schema-error {\r\n cursor: default;\r\n display: inline-block;\r\n /*font-family: arial, sans-serif;*/\r\n height: 24px;\r\n line-height: 24px;\r\n position: relative;\r\n text-align: center;\r\n width: 24px;\r\n}\r\n\r\ndiv.jsoneditor-tree .jsoneditor-schema-error {\r\n width: 24px;\r\n height: 24px;\r\n padding: 0;\r\n margin: 0 4px 0 0;\r\n background: url("+i(l(1))+") -168px -48px;\r\n}\r\n\r\n.jsoneditor-schema-error .jsoneditor-popover {\r\n background-color: #4c4c4c;\r\n border-radius: 3px;\r\n box-shadow: 0 0 5px rgba(0,0,0,0.4);\r\n color: #fff;\r\n display: none;\r\n padding: 7px 10px;\r\n position: absolute;\r\n width: 200px;\r\n z-index: 4;\r\n}\r\n\r\n.jsoneditor-schema-error .jsoneditor-popover.jsoneditor-above {\r\n bottom: 32px;\r\n left: -98px;\r\n}\r\n\r\n.jsoneditor-schema-error .jsoneditor-popover.jsoneditor-below {\r\n top: 32px;\r\n left: -98px;\r\n}\r\n\r\n.jsoneditor-schema-error .jsoneditor-popover.jsoneditor-left {\r\n top: -7px;\r\n right: 32px;\r\n}\r\n\r\n.jsoneditor-schema-error .jsoneditor-popover.jsoneditor-right {\r\n top: -7px;\r\n left: 32px;\r\n}\r\n\r\n.jsoneditor-schema-error .jsoneditor-popover:before {\r\n border-right: 7px solid transparent;\r\n border-left: 7px solid transparent;\r\n content: '';\r\n display: block;\r\n left: 50%;\r\n margin-left: -7px;\r\n position: absolute;\r\n}\r\n\r\n.jsoneditor-schema-error .jsoneditor-popover.jsoneditor-above:before {\r\n border-top: 7px solid #4c4c4c;\r\n bottom: -7px;\r\n}\r\n\r\n.jsoneditor-schema-error .jsoneditor-popover.jsoneditor-below:before {\r\n border-bottom: 7px solid #4c4c4c;\r\n top: -7px;\r\n}\r\n\r\n.jsoneditor-schema-error .jsoneditor-popover.jsoneditor-left:before {\r\n border-left: 7px solid #4c4c4c;\r\n border-top: 7px solid transparent;\r\n border-bottom: 7px solid transparent;\r\n content: '';\r\n top: 19px;\r\n right: -14px;\r\n left: inherit;\r\n margin-left: inherit;\r\n margin-top: -7px;\r\n position: absolute;\r\n}\r\n\r\n.jsoneditor-schema-error .jsoneditor-popover.jsoneditor-right:before {\r\n border-right: 7px solid #4c4c4c;\r\n border-top: 7px solid transparent;\r\n border-bottom: 7px solid transparent;\r\n content: '';\r\n top: 19px;\r\n left: -14px;\r\n margin-left: inherit;\r\n margin-top: -7px;\r\n position: absolute;\r\n}\r\n\r\n.jsoneditor-schema-error:hover .jsoneditor-popover,\r\n.jsoneditor-schema-error:focus .jsoneditor-popover {\r\n display: block;\r\n -webkit-animation: fade-in .3s linear 1, move-up .3s linear 1;\r\n -moz-animation: fade-in .3s linear 1, move-up .3s linear 1;\r\n -ms-animation: fade-in .3s linear 1, move-up .3s linear 1;\r\n}\r\n\r\n@-webkit-keyframes fade-in {\r\n from {\r\n opacity: 0;\r\n }\r\n\r\n to {\r\n opacity: 1;\r\n }\r\n}\r\n\r\n@-moz-keyframes fade-in {\r\n from {\r\n opacity: 0;\r\n }\r\n\r\n to {\r\n opacity: 1;\r\n }\r\n}\r\n\r\n@-ms-keyframes fade-in {\r\n from {\r\n opacity: 0;\r\n }\r\n\r\n to {\r\n opacity: 1;\r\n }\r\n}\r\n\r\n/*@-webkit-keyframes move-up {*/\r\n\r\n/*from { bottom: 24px; }*/\r\n\r\n/*to { bottom: 32px; }*/\r\n\r\n/*}*/\r\n\r\n/*@-moz-keyframes move-up {*/\r\n\r\n/*from { bottom: 24px; }*/\r\n\r\n/*to { bottom: 32px; }*/\r\n\r\n/*}*/\r\n\r\n/*@-ms-keyframes move-up {*/\r\n\r\n/*from { bottom: 24px; }*/\r\n\r\n/*to { bottom: 32px; }*/\r\n\r\n/*}*/\r\n\r\n/* JSON schema errors displayed at the bottom of the editor in mode text and code */\r\n\r\n.jsoneditor .jsoneditor-text-errors {\r\n width: 100%;\r\n border-collapse: collapse;\r\n background-color: #ffef8b;\r\n border-top: 1px solid #ffd700;\r\n}\r\n\r\n.jsoneditor .jsoneditor-text-errors td {\r\n padding: 3px 6px;\r\n vertical-align: middle;\r\n}\r\n\r\n.jsoneditor-text-errors .jsoneditor-schema-error {\r\n border: none;\r\n width: 24px;\r\n height: 24px;\r\n padding: 0;\r\n margin: 0 4px 0 0;\r\n background: url("+i(l(1))+") -168px -48px;\r\n}\r\n/* ContextMenu - main menu */\r\n\r\ndiv.jsoneditor-contextmenu-root {\r\n position: relative;\r\n width: 0;\r\n height: 0;\r\n}\r\n\r\ndiv.jsoneditor-contextmenu {\r\n position: absolute;\r\n box-sizing: content-box;\r\n z-index: 99999;\r\n}\r\n\r\ndiv.jsoneditor-contextmenu ul,\r\ndiv.jsoneditor-contextmenu li {\r\n box-sizing: content-box;\r\n}\r\n\r\ndiv.jsoneditor-contextmenu ul {\r\n position: relative;\r\n left: 0;\r\n top: 0;\r\n width: 124px;\r\n background: white;\r\n border: 1px solid #d3d3d3;\r\n box-shadow: 2px 2px 12px rgba(128, 128, 128, 0.3);\r\n list-style: none;\r\n margin: 0;\r\n padding: 0;\r\n}\r\n\r\ndiv.jsoneditor-contextmenu ul li button {\r\n padding: 0;\r\n margin: 0;\r\n width: 124px;\r\n height: 24px;\r\n border: none;\r\n cursor: pointer;\r\n color: #4d4d4d;\r\n background: transparent;\r\n font-size: 10pt;\r\n font-family: arial, sans-serif;\r\n box-sizing: border-box;\r\n line-height: 26px;\r\n text-align: left;\r\n}\r\n\r\n/* Fix button padding in firefox */\r\n\r\ndiv.jsoneditor-contextmenu ul li button::-moz-focus-inner {\r\n padding: 0;\r\n border: 0;\r\n}\r\n\r\ndiv.jsoneditor-contextmenu ul li button:hover,\r\ndiv.jsoneditor-contextmenu ul li button:focus {\r\n color: #1a1a1a;\r\n background-color: #f5f5f5;\r\n outline: none;\r\n}\r\n\r\ndiv.jsoneditor-contextmenu ul li button.jsoneditor-default {\r\n width: 92px;\r\n}\r\n\r\ndiv.jsoneditor-contextmenu ul li button.jsoneditor-expand {\r\n float: right;\r\n width: 32px;\r\n height: 24px;\r\n border-left: 1px solid #e5e5e5;\r\n}\r\n\r\ndiv.jsoneditor-contextmenu div.jsoneditor-icon {\r\n float: left;\r\n width: 24px;\r\n height: 24px;\r\n border: none;\r\n padding: 0;\r\n margin: 0;\r\n background-image: url("+i(l(1))+");\r\n}\r\n\r\ndiv.jsoneditor-contextmenu ul li button div.jsoneditor-expand {\r\n float: right;\r\n width: 24px;\r\n height: 24px;\r\n padding: 0;\r\n margin: 0 4px 0 0;\r\n background: url("+i(l(1))+") 0 -72px;\r\n opacity: 0.4;\r\n}\r\n\r\ndiv.jsoneditor-contextmenu ul li button:hover div.jsoneditor-expand,\r\ndiv.jsoneditor-contextmenu ul li button:focus div.jsoneditor-expand,\r\ndiv.jsoneditor-contextmenu ul li.jsoneditor-selected div.jsoneditor-expand,\r\ndiv.jsoneditor-contextmenu ul li button.jsoneditor-expand:hover div.jsoneditor-expand,\r\ndiv.jsoneditor-contextmenu ul li button.jsoneditor-expand:focus div.jsoneditor-expand {\r\n opacity: 1;\r\n}\r\n\r\ndiv.jsoneditor-contextmenu div.jsoneditor-separator {\r\n height: 0;\r\n border-top: 1px solid #e5e5e5;\r\n padding-top: 5px;\r\n margin-top: 5px;\r\n}\r\n\r\ndiv.jsoneditor-contextmenu button.jsoneditor-remove > div.jsoneditor-icon {\r\n background-position: -24px -24px;\r\n}\r\n\r\ndiv.jsoneditor-contextmenu button.jsoneditor-remove:hover > div.jsoneditor-icon,\r\ndiv.jsoneditor-contextmenu button.jsoneditor-remove:focus > div.jsoneditor-icon {\r\n background-position: -24px 0;\r\n}\r\n\r\ndiv.jsoneditor-contextmenu button.jsoneditor-append > div.jsoneditor-icon {\r\n background-position: 0 -24px;\r\n}\r\n\r\ndiv.jsoneditor-contextmenu button.jsoneditor-append:hover > div.jsoneditor-icon,\r\ndiv.jsoneditor-contextmenu button.jsoneditor-append:focus > div.jsoneditor-icon {\r\n background-position: 0 0;\r\n}\r\n\r\ndiv.jsoneditor-contextmenu button.jsoneditor-insert > div.jsoneditor-icon {\r\n background-position: 0 -24px;\r\n}\r\n\r\ndiv.jsoneditor-contextmenu button.jsoneditor-insert:hover > div.jsoneditor-icon,\r\ndiv.jsoneditor-contextmenu button.jsoneditor-insert:focus > div.jsoneditor-icon {\r\n background-position: 0 0;\r\n}\r\n\r\ndiv.jsoneditor-contextmenu button.jsoneditor-duplicate > div.jsoneditor-icon {\r\n background-position: -48px -24px;\r\n}\r\n\r\ndiv.jsoneditor-contextmenu button.jsoneditor-duplicate:hover > div.jsoneditor-icon,\r\ndiv.jsoneditor-contextmenu button.jsoneditor-duplicate:focus > div.jsoneditor-icon {\r\n background-position: -48px 0;\r\n}\r\n\r\ndiv.jsoneditor-contextmenu button.jsoneditor-sort-asc > div.jsoneditor-icon {\r\n background-position: -168px -24px;\r\n}\r\n\r\ndiv.jsoneditor-contextmenu button.jsoneditor-sort-asc:hover > div.jsoneditor-icon,\r\ndiv.jsoneditor-contextmenu button.jsoneditor-sort-asc:focus > div.jsoneditor-icon {\r\n background-position: -168px 0;\r\n}\r\n\r\ndiv.jsoneditor-contextmenu button.jsoneditor-sort-desc > div.jsoneditor-icon {\r\n background-position: -192px -24px;\r\n}\r\n\r\ndiv.jsoneditor-contextmenu button.jsoneditor-sort-desc:hover > div.jsoneditor-icon,\r\ndiv.jsoneditor-contextmenu button.jsoneditor-sort-desc:focus > div.jsoneditor-icon {\r\n background-position: -192px 0;\r\n}\r\n\r\n/* ContextMenu - sub menu */\r\n\r\ndiv.jsoneditor-contextmenu ul li button.jsoneditor-selected,\r\ndiv.jsoneditor-contextmenu ul li button.jsoneditor-selected:hover,\r\ndiv.jsoneditor-contextmenu ul li button.jsoneditor-selected:focus {\r\n color: white;\r\n background-color: #ee422e;\r\n}\r\n\r\ndiv.jsoneditor-contextmenu ul li {\r\n overflow: hidden;\r\n}\r\n\r\ndiv.jsoneditor-contextmenu ul li ul {\r\n display: none;\r\n position: relative;\r\n left: -10px;\r\n top: 0;\r\n border: none;\r\n box-shadow: inset 0 0 10px rgba(128, 128, 128, 0.5);\r\n padding: 0 10px;\r\n /* TODO: transition is not supported on IE8-9 */\r\n -webkit-transition: all 0.3s ease-out;\r\n -moz-transition: all 0.3s ease-out;\r\n -o-transition: all 0.3s ease-out;\r\n transition: all 0.3s ease-out;\r\n}\r\n\r\n\r\n\r\ndiv.jsoneditor-contextmenu ul li ul li button {\r\n padding-left: 24px;\r\n animation: all ease-in-out 1s;\r\n}\r\n\r\ndiv.jsoneditor-contextmenu ul li ul li button:hover,\r\ndiv.jsoneditor-contextmenu ul li ul li button:focus {\r\n background-color: #f5f5f5;\r\n}\r\n\r\ndiv.jsoneditor-contextmenu button.jsoneditor-type-string > div.jsoneditor-icon {\r\n background-position: -144px -24px;\r\n}\r\n\r\ndiv.jsoneditor-contextmenu button.jsoneditor-type-string:hover > div.jsoneditor-icon,\r\ndiv.jsoneditor-contextmenu button.jsoneditor-type-string:focus > div.jsoneditor-icon,\r\ndiv.jsoneditor-contextmenu button.jsoneditor-type-string.jsoneditor-selected > div.jsoneditor-icon {\r\n background-position: -144px 0;\r\n}\r\n\r\ndiv.jsoneditor-contextmenu button.jsoneditor-type-auto > div.jsoneditor-icon {\r\n background-position: -120px -24px;\r\n}\r\n\r\ndiv.jsoneditor-contextmenu button.jsoneditor-type-auto:hover > div.jsoneditor-icon,\r\ndiv.jsoneditor-contextmenu button.jsoneditor-type-auto:focus > div.jsoneditor-icon,\r\ndiv.jsoneditor-contextmenu button.jsoneditor-type-auto.jsoneditor-selected > div.jsoneditor-icon {\r\n background-position: -120px 0;\r\n}\r\n\r\ndiv.jsoneditor-contextmenu button.jsoneditor-type-object > div.jsoneditor-icon {\r\n background-position: -72px -24px;\r\n}\r\n\r\ndiv.jsoneditor-contextmenu button.jsoneditor-type-object:hover > div.jsoneditor-icon,\r\ndiv.jsoneditor-contextmenu button.jsoneditor-type-object:focus > div.jsoneditor-icon,\r\ndiv.jsoneditor-contextmenu button.jsoneditor-type-object.jsoneditor-selected > div.jsoneditor-icon {\r\n background-position: -72px 0;\r\n}\r\n\r\ndiv.jsoneditor-contextmenu button.jsoneditor-type-array > div.jsoneditor-icon {\r\n background-position: -96px -24px;\r\n}\r\n\r\ndiv.jsoneditor-contextmenu button.jsoneditor-type-array:hover > div.jsoneditor-icon,\r\ndiv.jsoneditor-contextmenu button.jsoneditor-type-array:focus > div.jsoneditor-icon,\r\ndiv.jsoneditor-contextmenu button.jsoneditor-type-array.jsoneditor-selected > div.jsoneditor-icon {\r\n background-position: -96px 0;\r\n}\r\n\r\ndiv.jsoneditor-contextmenu button.jsoneditor-type-modes > div.jsoneditor-icon {\r\n background-image: none;\r\n width: 6px;\r\n}\r\ndiv.jsoneditor-menu {\r\n width: 100%;\r\n height: 35px;\r\n padding: 2px;\r\n margin: 0;\r\n -moz-box-sizing: border-box;\r\n -webkit-box-sizing: border-box;\r\n box-sizing: border-box;\r\n color: white;\r\n background-color: #3883fa;\r\n border-bottom: 1px solid #3883fa;\r\n}\r\n\r\ndiv.jsoneditor-menu > button,\r\ndiv.jsoneditor-menu > div.jsoneditor-modes > button {\r\n width: 26px;\r\n height: 26px;\r\n margin: 2px;\r\n padding: 0;\r\n border-radius: 2px;\r\n border: 1px solid transparent;\r\n background: transparent url("+i(l(1))+");\r\n color: white;\r\n opacity: 0.8;\r\n font-family: arial, sans-serif;\r\n font-size: 10pt;\r\n float: left;\r\n}\r\n\r\ndiv.jsoneditor-menu > button:hover,\r\ndiv.jsoneditor-menu > div.jsoneditor-modes > button:hover {\r\n background-color: rgba(255,255,255,0.2);\r\n border: 1px solid rgba(255,255,255,0.4);\r\n}\r\n\r\ndiv.jsoneditor-menu > button:focus,\r\ndiv.jsoneditor-menu > button:active,\r\ndiv.jsoneditor-menu > div.jsoneditor-modes > button:focus,\r\ndiv.jsoneditor-menu > div.jsoneditor-modes > button:active {\r\n background-color: rgba(255,255,255,0.3);\r\n}\r\n\r\ndiv.jsoneditor-menu > button:disabled,\r\ndiv.jsoneditor-menu > div.jsoneditor-modes > button:disabled {\r\n opacity: 0.5;\r\n}\r\n\r\ndiv.jsoneditor-menu > button.jsoneditor-collapse-all {\r\n background-position: 0 -96px;\r\n}\r\n\r\ndiv.jsoneditor-menu > button.jsoneditor-expand-all {\r\n background-position: 0 -120px;\r\n}\r\n\r\ndiv.jsoneditor-menu > button.jsoneditor-undo {\r\n background-position: -24px -96px;\r\n}\r\n\r\ndiv.jsoneditor-menu > button.jsoneditor-undo:disabled {\r\n background-position: -24px -120px;\r\n}\r\n\r\ndiv.jsoneditor-menu > button.jsoneditor-redo {\r\n background-position: -48px -96px;\r\n}\r\n\r\ndiv.jsoneditor-menu > button.jsoneditor-redo:disabled {\r\n background-position: -48px -120px;\r\n}\r\n\r\ndiv.jsoneditor-menu > button.jsoneditor-compact {\r\n background-position: -72px -96px;\r\n}\r\n\r\ndiv.jsoneditor-menu > button.jsoneditor-format {\r\n background-position: -72px -120px;\r\n}\r\n\r\ndiv.jsoneditor-menu > div.jsoneditor-modes {\r\n display: inline-block;\r\n float: left;\r\n}\r\n\r\ndiv.jsoneditor-menu > div.jsoneditor-modes > button {\r\n background-image: none;\r\n width: auto;\r\n padding-left: 6px;\r\n padding-right: 6px;\r\n}\r\n\r\ndiv.jsoneditor-menu > button.jsoneditor-separator,\r\ndiv.jsoneditor-menu > div.jsoneditor-modes > button.jsoneditor-separator {\r\n margin-left: 10px;\r\n}\r\n\r\ndiv.jsoneditor-menu a {\r\n font-family: arial, sans-serif;\r\n font-size: 10pt;\r\n color: white;\r\n opacity: 0.8;\r\n vertical-align: middle;\r\n}\r\n\r\ndiv.jsoneditor-menu a:hover {\r\n opacity: 1;\r\n}\r\n\r\ndiv.jsoneditor-menu a.jsoneditor-poweredBy {\r\n font-size: 8pt;\r\n position: absolute;\r\n right: 0;\r\n top: 0;\r\n padding: 10px;\r\n}\r\ntable.jsoneditor-search input,\r\ntable.jsoneditor-search div.jsoneditor-results {\r\n font-family: arial, sans-serif;\r\n font-size: 10pt;\r\n color: #1A1A1A;\r\n background: transparent;\r\n /* For Firefox */\r\n}\r\n\r\ntable.jsoneditor-search div.jsoneditor-results {\r\n color: white;\r\n padding-right: 5px;\r\n line-height: 24px;\r\n}\r\n\r\ntable.jsoneditor-search {\r\n position: absolute;\r\n right: 4px;\r\n top: 4px;\r\n border-collapse: collapse;\r\n border-spacing: 0;\r\n}\r\n\r\ntable.jsoneditor-search div.jsoneditor-frame {\r\n border: 1px solid transparent;\r\n background-color: white;\r\n padding: 0 2px;\r\n margin: 0;\r\n}\r\n\r\ntable.jsoneditor-search div.jsoneditor-frame table {\r\n border-collapse: collapse;\r\n}\r\n\r\ntable.jsoneditor-search input {\r\n width: 120px;\r\n border: none;\r\n outline: none;\r\n margin: 1px;\r\n line-height: 20px;\r\n}\r\n\r\ntable.jsoneditor-search button {\r\n width: 16px;\r\n height: 24px;\r\n padding: 0;\r\n margin: 0;\r\n border: none;\r\n background: url("+i(l(1))+");\r\n vertical-align: top;\r\n}\r\n\r\ntable.jsoneditor-search button:hover {\r\n background-color: transparent;\r\n}\r\n\r\ntable.jsoneditor-search button.jsoneditor-refresh {\r\n width: 18px;\r\n background-position: -99px -73px;\r\n}\r\n\r\ntable.jsoneditor-search button.jsoneditor-next {\r\n cursor: pointer;\r\n background-position: -124px -73px;\r\n}\r\n\r\ntable.jsoneditor-search button.jsoneditor-next:hover {\r\n background-position: -124px -49px;\r\n}\r\n\r\ntable.jsoneditor-search button.jsoneditor-previous {\r\n cursor: pointer;\r\n background-position: -148px -73px;\r\n margin-right: 2px;\r\n}\r\n\r\ntable.jsoneditor-search button.jsoneditor-previous:hover {\r\n background-position: -148px -49px;\r\n}",""])},function(t,e,l){"use strict";l(19)},function(t,e,l){(t.exports=l(6)(!1)).push([t.i,"\n.ace_line_group[data-v-551a97e0] {\n text-align: left;\n}\n.json-editor-container[data-v-551a97e0] {\n display: flex;\n width: 100%;\n}\n.json-editor-container .tree-mode[data-v-551a97e0] {\n width: 50%;\n}\n.json-editor-container .code-mode[data-v-551a97e0] {\n flex-grow: 1;\n}\n.jsoneditor-btns[data-v-551a97e0]{\n text-align: center;\n margin-top:10px;\n}\n.jsoneditor-vue .jsoneditor-outer[data-v-551a97e0]{\n min-height:150px;\n}\n.jsoneditor-vue div.jsoneditor-tree[data-v-551a97e0]{\n min-height: 350px;\n}\n.json-save-btn[data-v-551a97e0]{\n background-color: #20A0FF;\n border: none;\n color:#fff;\n padding:5px 10px;\n border-radius: 5px;\n cursor: pointer;\n}\n.json-save-btn[data-v-551a97e0]:focus{\n outline: none;\n}\n.json-save-btn[disabled][data-v-551a97e0]{\n background-color: #1D8CE0;\n cursor: not-allowed;\n}\ncode[data-v-551a97e0] {\n background-color: #f5f5f5;\n}\n",""])},function(t,e){t.exports='
\n
\n
\n
\n

\n {{ name }}\n

\n
\n \n \n
\n
\n
\n \n
\n
\n
\n \n
\n'},function(t,e){t.exports='\n
\n'},function(t,e,l){"use strict";const i={name:"login",template:l(70),data:()=>({id:null}),methods:{idInvalid(){return null===this.id},login(){this.$emit("login",this.id)}}};t.exports=i},function(t,e){t.exports='
\n

\n Login\n

\n
\n
\n
\n \n
\n \n
\n
\n\n
\n \n
\n
\n
\n
\n'},function(t,e){t.exports='
\n
\n
\n

\n \n {{ promo.emoji || \'👋 \'}}\n \n {{ promo.snippet }}\n \n \n \n \n

\n
\n
\n \n
\n
\n
\n'},function(t,e,l){"use strict";const i={name:"sdk",template:l(73),data:()=>({sdks:[{name:"pantry-node",platform:"Node.js",author:"Team Pantry",link:"https://github.com/imRohan/pantry-node",verified:!0},{name:"bash-client",platform:"Bash",author:"Team Pantry",link:"https://github.com/imRohan/Pantry/tree/master/client-libraries/Bash",verified:!0},{name:"pantryclient-esp",platform:"ESP32/ESP8266",author:"Zakrzewiaczek",link:"https://github.com/Zakrzewiaczek/pantryclient-esp",verified:!1},{name:"libPantryDotNet",platform:".Net",author:"Krutonium",link:"https://github.com/Krutonium/libPantryDotNet",verified:!1},{name:"pantry-cloud",platform:"Node.js",author:"rdarida",link:"https://github.com/rdarida/pantry-cloud",verified:!1},{name:"pantry_wrapper",platform:"Python",author:"alexmulligan",link:"https://github.com/alexmulligan/pantry_wrapper",verified:!1},{name:"pantry-nim",platform:"Nim",author:"Jake Leahy",link:"https://github.com/ire4ever1190/pantry-nim",verified:!1},{name:"JPantry",platform:"Java",author:"Magnus Gunnarsson",link:"https://github.com/EnderCrypt/JPantry",verified:!1},{name:"pantry-cloud",platform:"Python",author:"Sarvesh Kumar Dwivedi",link:"https://github.com/sarvesh4396/pantry-cloud",verified:!1},{name:"pantry-cloud",platform:"PHP",author:"Seba",link:"https://github.com/sebaOfficial/pantry-cloud/",verified:!1},{name:"pantry_client",platform:"GO",author:"Atoo35",link:"https://github.com/Atoo35/pantry_client/",verified:!1},{name:"pantry",platform:"Dart",author:"Georges",link:"https://github.com/georges-ph/pantry",verified:!1},{name:"pantry_client",platform:"Rust",author:"Atoo35",link:"https://github.com/Atoo35/pantry_client_rust/",verified:!1},{name:"UniPantry",platform:"Unity",author:"Dmitry Koleev",link:"https://github.com/dkoleev/UniPantry/",verified:!1},{name:"pantry",platform:"Common Lisp",author:"Aleksandar Simić",link:"https://github.com/dotemacs/pantry/",verified:!1},{name:"pantry",platform:"Nushell",author:"Shaoyan Ji",link:"https://gist.github.com/shaoyanji/dbc5d6e8fe8abb338226a28cd5f8d6cd",verified:!1}],defaultBadgeClasses:"flex-shrink-0 inline-block px-2 py-0.5\n text-xs font-medium\n rounded-full"}),methods:{getBadgeClass(t){var e;return null!==(e={"node.js":"bg-green-200",bash:"bg-gray-200",python:"bg-yellow-200",".net":"bg-blue-200",nim:"bg-yellow-400",java:"bg-red-400",dart:"bg-blue-500",nushell:"bg-green-200"}[t.trim().toLowerCase()])&&void 0!==e?e:"bg-gray-200"}}};t.exports=i},function(t,e){t.exports='
\n
\n
\n
\n
\n

\n \n Libraries and SDK\'s\n \n \n Developer Tools\n \n

\n

\n Pantry has official libraries which will be maintained and supported\n by the team going forward.\n\n There are also several third-party libraries built by kind\n developers (like yourself) that we\'d like to showcase.\n

\n\n \n
\n
\n
\n
\n
\n'},function(t,e,l){"use strict";var i=this&&this.__awaiter||function(t,e,l,i){return new(l||(l=Promise))((function(n,d){function a(t){try{c(i.next(t))}catch(t){d(t)}}function s(t){try{c(i.throw(t))}catch(t){d(t)}}function c(t){var e;t.done?n(t.value):(e=t.value,e instanceof l?e:new l((function(t){t(e)}))).then(a,s)}c((i=i.apply(t,e||[])).next())}))};const n=l(4),d=l(3),a=l(75),{IView:s}=l(2),c=l(76),o=l(78),b=l(80),r=l(82),m=l(84),Z=l(86),g=l(21),W=d.apiPath,h={name:"home",template:a,components:{initialSignup:c,finishSignup:o,features:b,example:r,stats:m,quote:Z,banner:g},data:()=>({email:null,name:null,finishOnboarding:!1,siteKey:"6Leqqt4aAAAAAFCxWwcRO3YB6zuKKR2CGm8ACRuJ",promo:{emoji:"💪",snippet:"Integrate Pantry using our SDK!",title:"Speed up your development by using one of our many SDKs!"}}),methods:{beginSignup(t){this.email=t,this.finishOnboarding=!0},beginRegistration(t){this.name=t,this.createNewPantry()},showReCaptcha(){window.grecaptcha.render("recaptcha",{sitekey:this.siteKey})},createNewPantry(){return i(this,void 0,void 0,(function*(){const t=window.grecaptcha.getResponse();this.accountCreationInProgress=!0;const{data:e}=yield n({method:"POST",data:{name:this.name,description:"defaultDescription",contactEmail:this.email,recaptchaResponse:t},url:W+"/pantry/create"});this.$emit("account-created",e)}))},bannerCTAClicked(){this.changeView(s.sdk)},changeView(t){this.$emit("change-view",t)}}};t.exports=h},function(t,e){t.exports='
\n \n
\n
\n
\n
\n
\n \n \n
\n
\n
\n \n
\n
\n \n \n \n \n
\n
\n'},function(t,e,l){"use strict";const i={name:"initialSignup",template:l(77),data:()=>({email:null}),methods:{showReCaptcha(){this.$emit("show-recaptcha")},storeEmail(){this.$emit("store-email",this.email)},signupValid(){return/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/.test(String(this.email).toLowerCase())}}};t.exports=i},function(t,e){t.exports='
\n

\n Free\n yourself from\n data storage\n woes.\n

\n

\n Focus your efforts on building your next project and leave the\n data storage to us. We help speed up your development time,\n letting you build awesome things fast!\n

\n
\n
\n
\n
\n \n \n
\n
\n \n
\n
\n

\n Sorry, but that email is invalid.\n

\n

\n Don\'t worry, we\'ll only contact you if it\'s important.\n

\n
\n
\n
\n'},function(t,e,l){"use strict";const i={name:"finishSignup",template:l(79),data:()=>({name:null}),methods:{storeName(){this.$emit("store-name",this.name)}}};t.exports=i},function(t,e){t.exports='
\n

\n Almost there, just\n \n one more step!\n \n

\n

\n Let\'s give your pantry a name! This could be the name of your project\n or anything that means something to you.\n

\n
\n
\n
\n
\n \n \n
\n
\n \n
\n
\n

\n Give your Pantry a creative name\n

\n
\n
\n
\n'},function(t,e,l){"use strict";const i={name:"features",template:l(81),data:()=>({}),methods:{},mounted(){}};t.exports=i},function(t,e){t.exports='
\n
\n

Effortless

\n

A better JSON storage solution

\n

\n CRUD your data on the cloud in just 2 minutes either by using our\n API or dashboard. Perfect for small projects and hackathons!\n

\n
\n\n
\n
\n
\n
\n
\n \n \n \n
\n

\n Simple API\n

\n
\n
\n We\'ve built a very straightforward and easy-to-use API which you can\n use to CRUD your Pantry\'s data. Simple and intuitive - that\'s the\n goal.\n
\n
\n\n
\n
\n
\n \n \n \n \n \n
\n

\n Generous Storage Limit\n

\n
\n
\n Each Pantry can hold over 100mb of data. That\'s a lot of JSON, and we\n think it\'s a great starting point for developers to build their\n projects.\n
\n
\n\n
\n
\n
\n \n
\n

\n Powerful Dashboard \n

\n
\n
\n We also offer a interactive dashboard which you can use to interact with\n your Pantry\'s baskets. This intuitive interface is especially helpful\n when debugging your application!\n
\n
\n\n
\n
\n
\n \n \n \n
\n

\n 100% Open Source\n

\n
\n
\n This project is open-source and supported by a wonderful group of\n developers who continue to improve the platform.\n
\n \n
\n
\n
\n
\n
\n
\n'},function(t,e,l){"use strict";const i=l(83),{IView:n}=l(2),d={name:"example",template:i,methods:{showSDK(){this.$emit("change-view",n.sdk)}}};t.exports=d},function(t,e){t.exports='
\n
\n
\n
\n
\n

\n Jump Right In\n

\n

\n Quickly add Pantry to your project using one of our\n easy-to-use client libraries.\n

\n
\n \n npm install pantry-node\n \n \n \n \n
\n
\n \n
\n
\n
\n
\n'},function(t,e,l){"use strict";const i={name:"stats",template:l(85),data:()=>({}),methods:{},mounted(){}};t.exports=i},function(t,e){t.exports='
\n
\n
\n

\n Trusted by developers from over 100 countries\n

\n

\n Here\'s a snapshot of what we\'ve accomplished in the last month\n

\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
Data Served
\n
23GB
\n
\n
\n
Active Projects
\n
1230+
\n
\n
\n
Requests Handled
\n
2.57M
\n
\n
\n
\n
\n
\n
\n
\n'},function(t,e,l){"use strict";const i={name:"quote",template:l(87),data:()=>({}),methods:{},mounted(){}};t.exports=i},function(t,e){t.exports='
\n
\n \n Workcation\n \n \n \n \n \n \n \n\n
\n
\n
\n

\n “\n If you have a simple application that needs a database - don\'t setup\n a database. Pantry let\'s you store 100mb of JSON, while attaching a\n CRUD interface to it. Kind of like TinyDB for Python.\n ”\n

\n
\n \n
\n
\n
\n

\n “\n I think Pantry is a great option for my project/for\n testing, I currently have a project with over 10,000 users alone!\n and I think Pantry is a nice way to get that sorted, it\'s free and\n uses basic JSON.\n ”\n

\n
\n
\n
\n
\n
\n SalmonStudios\n
\n\n \n\n
\n Game Studio\n
\n
\n
\n
\n
\n
\n
\n

\n “\n Pantry\'s simple design, and features have been instrumental in\n realizing [my] little project\n ”\n

\n
\n
\n
\n
\n
\n Somajit Dey\n
\n\n \n\n
\n Department of Physics, University of Calcutta\n
\n
\n
\n
\n
\n
\n
\n
\n'},function(t,e,l){"use strict";const i=l(89),{IView:n}=l(2),d={name:"onboarding",template:i,props:["pantryID"],data:()=>({}),methods:{getStarted(){this.$emit("change-view",n.dashboard)},createSession(){sessionStorage.setItem("pantry-id",this.pantryID)}},mounted(){this.createSession()}};t.exports=d},function(t,e){t.exports='
\n
\n
\n
\n
\n

\n \n Success!\n \n \n Save your PantryID\n \n

\n

\n Here is your PantryID! Think of this as your API key, and\n keep this safe as we won\'t be sharing it with you again. Once you\'ve \n saved it somewhere, hit the button below and we\'ll show you how to\n add items to your pantry.\n

\n\n

\n {{ pantryID }}\n

\n\n \n
\n
\n
\n
\n
\n'},function(t,e,l){"use strict";const i={name:"about",template:l(91),props:[],components:{faq:l(92)},data:()=>({questions:[{title:"What is Pantry?",answer:"Pantry is a free data storage service which allows users to manage\n a collection of JSON objects. It is great for small to medium sized projects,\n and can be interacted with through a RESTful API or via a dashboard."},{title:"What is a Basket?",answer:'A "Basket" is one JSON object. Each Pantry can have up to 100 baskets\n held within it, each with its own human-readable name.'},{title:"How is my data stored?",answer:"Every basket is encrypted using the AES-256 encryption scheme and is securely\n stored on our servers after being properly sanitized."},{title:"Who can access my Pantry & Baskets?",answer:'You can share direct links to your baskets (GET & POST), or\n a read-only (GET) "public". Public links are a great way to allow\n anyone to read the contents of a specific basket but not modify them.'},{title:"What are the limitations?",answer:"A Pantry can have up to 100 baskets (JSON objects), each with a max size\n of 1.44mb per basket. API requests are limited to 2 calls per second. That's it."},{title:"How long will my data be stored for?",answer:"Data is stored until you no longer need it. Users can choose to delete\n their data from Pantry at any time. However, inactive baskets will be removed after 30 days."}]}),methods:{}};t.exports=i},function(t,e){t.exports='
\n
\n
\n
\n
\n

\n \n Learn about Pantry\n \n \n Frequently Asked Questions\n \n

\n
\n \n
\n
\n
\n \n
\n'},function(t,e,l){"use strict";const i={name:"faq",template:l(93),props:["questions"],data:()=>({})};t.exports=i},function(t,e){t.exports='
\n
\n
\n

\n Contribute\n

\n

\n Pantry is open-source, and is maintained by\n \n Rohan Likhite.\n \n If you\'d like to help develop Pantry, or have an issue to report,\n please visit the\n \n GitHub repo\n .\n

\n

\n Sponsor\n

\n

\n To help with server costs, please consider sponsoring the project\n via\n \n GitHub Sponsors.\n \n

\n

\n Looking for more information?\n

\n

\n Can’t find the answer you’re looking for? Ask the developers directly\n by\n starting a \n discussion on GitHub.\n

\n
\n
\n
\n \n
\n
\n
\n
\n'},function(t,e,l){"use strict";const i=l(95),n=l(3),{IView:d}=l(2),a=l(96),s=n.docsPath,c={name:"topbar",template:i,props:["view"],components:{headerBar:a},methods:{showAbout(){this.$emit("change-view",d.about)},showDocs(){window.location.href=s},showDashboard(){this.$emit("change-view",d.dashboard)},goHome(){this.$emit("change-view",d.home)},showSDK(){this.$emit("change-view",d.sdk)},topbarClass(){return this.view!==d.home?"bg-orange-100 pb-52":""}}};t.exports=c},function(t,e){t.exports='
\n
\n \n
\n
\n\n'},function(t,e,l){"use strict";const i={name:"headerBar",template:l(97),props:["view"],data:()=>({}),methods:{}};t.exports=i},function(t,e){t.exports='\n'},function(t,e,l){"use strict";const i={name:"bottomBar",template:l(99),props:[],methods:{}};t.exports=i},function(t,e){t.exports='\n'},function(t,e,l){"use strict";l.r(e);var i=function(){var t=this,e=t.$createElement,l=t._self._c||e;return l("div",[l("div",{staticClass:"jsoneditor-vue"}),t._v(" "),!1!==t.showBtns?l("div",{staticClass:"jsoneditor-btns"},[l("button",{staticClass:"json-save-btn",attrs:{type:"button",disabled:t.error},on:{click:function(e){return t.onSave()}}},[t._v(t._s(t.locale[t.lang].save))])]):t._e()])};i._withStripped=!0;l(63);var n=l(22),d=l.n(n),a={props:{value:[String,Number,Object,Array],showBtns:[Boolean],expandedOnStart:{type:Boolean,default:!1},mode:{type:String,default:"tree"},modes:{type:Array,default:function(){return["tree","code","form","text","view"]}},lang:{type:String,default:"en"}},watch:{value:{immediate:!0,async handler(t){this.internalChange||(await this.setEditor(t),this.error=!1,this.expandAll())},deep:!0}},data(){return{editor:null,error:!1,json:this.value,internalChange:!1,expandedModes:["tree","view","form"],locale:{it:{save:"SALVA"},en:{save:"SAVE"},zh:{save:"保存"}}}},mounted(){let t=this,e={mode:this.mode,modes:this.modes,onChange(){try{let e=t.editor.get();t.json=e,t.error=!1,t.$emit("json-change",e),t.internalChange=!0,t.$emit("input",e),t.$nextTick((function(){t.internalChange=!1}))}catch(e){t.error=!0,t.$emit("has-error",e)}},onModeChange(){t.expandAll()}};this.editor=new d.a(this.$el.querySelector(".jsoneditor-vue"),e,this.json)},methods:{expandAll(){this.expandedOnStart&&this.expandedModes.includes(this.editor.getMode())&&this.editor.expandAll()},onSave(){this.$emit("json-save",this.json)},async setEditor(t){this.editor&&this.editor.set(t)}}};l(65);var s=function(t,e,l,i,n,d,a,s){var c,o="function"==typeof t?t.options:t;if(e&&(o.render=e,o.staticRenderFns=l,o._compiled=!0),i&&(o.functional=!0),d&&(o._scopeId="data-v-"+d),a?(c=function(t){(t=t||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(t=__VUE_SSR_CONTEXT__),n&&n.call(this,t),t&&t._registeredComponents&&t._registeredComponents.add(a)},o._ssrRegister=c):n&&(c=s?function(){n.call(this,(o.functional?this.parent:this).$root.$options.shadowRoot)}:n),c)if(o.functional){o._injectStyles=c;var b=o.render;o.render=function(t,e){return c.call(e),b(t,e)}}else{var r=o.beforeCreate;o.beforeCreate=r?[].concat(r,c):[c]}return{exports:t,options:o}}(a,i,[],!1,null,"551a97e0",null);s.options.__file="node_modules/vue-json-editor/vue-json-editor.vue";e.default=s.exports}]); +t.exports=function(){"use strict";var t=Object.freeze({});function i(t){return null==t}function n(t){return null!=t}function a(t){return!0===t}function d(t){return"string"==typeof t||"number"==typeof t||"symbol"==typeof t||"boolean"==typeof t}function s(t){return null!==t&&"object"==typeof t}var c=Object.prototype.toString;function o(t){return"[object Object]"===c.call(t)}function b(t){var e=parseFloat(String(t));return e>=0&&Math.floor(e)===e&&isFinite(t)}function r(t){return n(t)&&"function"==typeof t.then&&"function"==typeof t.catch}function m(t){return null==t?"":Array.isArray(t)||o(t)&&t.toString===c?JSON.stringify(t,null,2):String(t)}function Z(t){var e=parseFloat(t);return isNaN(e)?t:e}function g(t,e){for(var l=Object.create(null),i=t.split(","),n=0;n-1)return t.splice(l,1)}}var y=Object.prototype.hasOwnProperty;function I(t,e){return y.call(t,e)}function G(t){var e=Object.create(null);return function(l){return e[l]||(e[l]=t(l))}}var M=/-(\w)/g,u=G((function(t){return t.replace(M,(function(t,e){return e?e.toUpperCase():""}))})),V=G((function(t){return t.charAt(0).toUpperCase()+t.slice(1)})),p=/\B([A-Z])/g,Y=G((function(t){return t.replace(p,"-$1").toLowerCase()})),R=Function.prototype.bind?function(t,e){return t.bind(e)}:function(t,e){function l(l){var i=arguments.length;return i?i>1?t.apply(e,arguments):t.call(e,l):t.call(e)}return l._length=t.length,l};function B(t,e){e=e||0;for(var l=t.length-e,i=new Array(l);l--;)i[l]=t[l+e];return i}function O(t,e){for(var l in e)t[l]=e[l];return t}function D(t){for(var e={},l=0;l0,$=f&&f.indexOf("edge/")>0,_=(f&&f.indexOf("android"),f&&/iphone|ipad|ipod|ios/.test(f)||"ios"===E),q=(f&&/chrome\/\d+/.test(f),f&&/phantomjs/.test(f),f&&f.match(/firefox\/(\d+)/)),tt={}.watch,et=!1;if(A)try{var lt={};Object.defineProperty(lt,"passive",{get:function(){et=!0}}),window.addEventListener("test-passive",null,lt)}catch(t){}var it=function(){return void 0===x&&(x=!A&&!S&&void 0!==e&&e.process&&"server"===e.process.env.VUE_ENV),x},nt=A&&window.__VUE_DEVTOOLS_GLOBAL_HOOK__;function at(t){return"function"==typeof t&&/native code/.test(t.toString())}var dt,st="undefined"!=typeof Symbol&&at(Symbol)&&"undefined"!=typeof Reflect&&at(Reflect.ownKeys);dt="undefined"!=typeof Set&&at(Set)?Set:function(){function t(){this.set=Object.create(null)}return t.prototype.has=function(t){return!0===this.set[t]},t.prototype.add=function(t){this.set[t]=!0},t.prototype.clear=function(){this.set=Object.create(null)},t}();var ct=U,ot=0,bt=function(){this.id=ot++,this.subs=[]};bt.prototype.addSub=function(t){this.subs.push(t)},bt.prototype.removeSub=function(t){N(this.subs,t)},bt.prototype.depend=function(){bt.target&&bt.target.addDep(this)},bt.prototype.notify=function(){for(var t=this.subs.slice(),e=0,l=t.length;e-1)if(a&&!I(n,"default"))d=!1;else if(""===d||d===Y(t)){var c=Ct(String,n.type);(c<0||s0&&(be((c=t(c,(l||"")+"_"+s))[0])&&be(b)&&(r[o]=Nt(b.text+c[0].text),c.shift()),r.push.apply(r,c)):d(c)?be(b)?r[o]=Nt(b.text+c):""!==c&&r.push(Nt(c)):be(c)&&be(b)?r[o]=Nt(b.text+c.text):(a(e._isVList)&&n(c.tag)&&i(c.key)&&n(l)&&(c.key="__vlist"+l+"_"+s+"__"),r.push(c)));return r}(t):void 0}function be(t){return n(t)&&n(t.text)&&!1===t.isComment}function re(t,e){if(t){for(var l=Object.create(null),i=st?Reflect.ownKeys(t):Object.keys(t),n=0;n0,d=e?!!e.$stable:!a,s=e&&e.$key;if(e){if(e._normalized)return e._normalized;if(d&&i&&i!==t&&s===i.$key&&!a&&!i.$hasNormal)return i;for(var c in n={},e)e[c]&&"$"!==c[0]&&(n[c]=he(l,c,e[c]))}else n={};for(var o in l)o in n||(n[o]=Ne(l,o));return e&&Object.isExtensible(e)&&(e._normalized=n),C(n,"$stable",d),C(n,"$key",s),C(n,"$hasNormal",a),n}function he(t,e,l){var i=function(){var t=arguments.length?l.apply(null,arguments):l({}),e=(t=t&&"object"==typeof t&&!Array.isArray(t)?[t]:oe(t))&&t[0];return t&&(!e||1===t.length&&e.isComment&&!ge(e))?void 0:t};return l.proxy&&Object.defineProperty(t,e,{get:i,enumerable:!0,configurable:!0}),i}function Ne(t,e){return function(){return t[e]}}function ye(t,e){var l,i,a,d,c;if(Array.isArray(t)||"string"==typeof t)for(l=new Array(t.length),i=0,a=t.length;idocument.createEvent("Event").timeStamp&&(sl=function(){return cl.now()})}function ol(){var t,e;for(dl=sl(),nl=!0,tl.sort((function(t,e){return t.id-e.id})),al=0;alal&&tl[l].id>t.id;)l--;tl.splice(l+1,0,t)}else tl.push(t);il||(il=!0,ee(ol))}}(this)},rl.prototype.run=function(){if(this.active){var t=this.get();if(t!==this.value||s(t)||this.deep){var e=this.value;if(this.value=t,this.user){var l='callback for watcher "'+this.expression+'"';Qt(this.cb,this.vm,[t,e],this.vm,l)}else this.cb.call(this.vm,t,e)}}},rl.prototype.evaluate=function(){this.value=this.get(),this.dirty=!1},rl.prototype.depend=function(){for(var t=this.deps.length;t--;)this.deps[t].depend()},rl.prototype.teardown=function(){if(this.active){this.vm._isBeingDestroyed||N(this.vm._watchers,this);for(var t=this.deps.length;t--;)this.deps[t].removeSub(this);this.active=!1}};var ml={enumerable:!0,configurable:!0,get:U,set:U};function Zl(t,e,l){ml.get=function(){return this[e][l]},ml.set=function(t){this[e][l]=t},Object.defineProperty(t,l,ml)}var gl={lazy:!0};function Wl(t,e,l){var i=!it();"function"==typeof l?(ml.get=i?hl(e):Nl(l),ml.set=U):(ml.get=l.get?i&&!1!==l.cache?hl(e):Nl(l.get):U,ml.set=l.set||U),Object.defineProperty(t,e,ml)}function hl(t){return function(){var e=this._computedWatchers&&this._computedWatchers[t];if(e)return e.dirty&&e.evaluate(),bt.target&&e.depend(),e.value}}function Nl(t){return function(){return t.call(this,this)}}function yl(t,e,l,i){return o(l)&&(i=l,l=l.handler),"string"==typeof l&&(l=t[l]),t.$watch(e,l,i)}var Il=0;function Gl(t){var e=t.options;if(t.super){var l=Gl(t.super);if(l!==t.superOptions){t.superOptions=l;var i=function(t){var e,l=t.options,i=t.sealedOptions;for(var n in l)l[n]!==i[n]&&(e||(e={}),e[n]=l[n]);return e}(t);i&&O(t.extendOptions,i),(e=t.options=vt(l,t.extendOptions)).name&&(e.components[e.name]=t)}}return e}function Ml(t){this._init(t)}function ul(t){return t&&(t.Ctor.options.name||t.tag)}function Vl(t,e){return Array.isArray(t)?t.indexOf(e)>-1:"string"==typeof t?t.split(",").indexOf(e)>-1:(l=t,"[object RegExp]"===c.call(l)&&t.test(e));var l}function pl(t,e){var l=t.cache,i=t.keys,n=t._vnode;for(var a in l){var d=l[a];if(d){var s=d.name;s&&!e(s)&&Yl(l,a,i,n)}}}function Yl(t,e,l,i){var n=t[e];!n||i&&n.tag===i.tag||n.componentInstance.$destroy(),t[e]=null,N(l,e)}!function(e){e.prototype._init=function(e){var l=this;l._uid=Il++,l._isVue=!0,e&&e._isComponent?function(t,e){var l=t.$options=Object.create(t.constructor.options),i=e._parentVnode;l.parent=e.parent,l._parentVnode=i;var n=i.componentOptions;l.propsData=n.propsData,l._parentListeners=n.listeners,l._renderChildren=n.children,l._componentTag=n.tag,e.render&&(l.render=e.render,l.staticRenderFns=e.staticRenderFns)}(l,e):l.$options=vt(Gl(l.constructor),e||{},l),l._renderProxy=l,l._self=l,function(t){var e=t.$options,l=e.parent;if(l&&!e.abstract){for(;l.$options.abstract&&l.$parent;)l=l.$parent;l.$children.push(t)}t.$parent=l,t.$root=l?l.$root:t,t.$children=[],t.$refs={},t._watcher=null,t._inactive=null,t._directInactive=!1,t._isMounted=!1,t._isDestroyed=!1,t._isBeingDestroyed=!1}(l),function(t){t._events=Object.create(null),t._hasHookEvent=!1;var e=t.$options._parentListeners;e&&fe(t,e)}(l),function(e){e._vnode=null,e._staticTrees=null;var l=e.$options,i=e.$vnode=l._parentVnode,n=i&&i.context;e.$slots=me(l._renderChildren,n),e.$scopedSlots=t,e._c=function(t,l,i,n){return ke(e,t,l,i,n,!1)},e.$createElement=function(t,l,i,n){return ke(e,t,l,i,n,!0)};var a=i&&i.data;Rt(e,"$attrs",a&&a.attrs||t,null,!0),Rt(e,"$listeners",l._parentListeners||t,null,!0)}(l),qe(l,"beforeCreate"),function(t){var e=re(t.$options.inject,t);e&&(Vt(!1),Object.keys(e).forEach((function(l){Rt(t,l,e[l])})),Vt(!0))}(l),function(t){t._watchers=[];var e=t.$options;e.props&&function(t,e){var l=t.$options.propsData||{},i=t._props={},n=t.$options._propKeys=[];t.$parent&&Vt(!1);var a=function(a){n.push(a);var d=jt(a,e,l,t);Rt(i,a,d),a in t||Zl(t,"_props",a)};for(var d in e)a(d);Vt(!0)}(t,e.props),e.methods&&function(t,e){for(var l in t.$options.props,e)t[l]="function"!=typeof e[l]?U:R(e[l],t)}(t,e.methods),e.data?function(t){var e=t.$options.data;o(e=t._data="function"==typeof e?function(t,e){mt();try{return t.call(e,e)}catch(t){return xt(t,e,"data()"),{}}finally{Zt()}}(e,t):e||{})||(e={});for(var l,i=Object.keys(e),n=t.$options.props,a=(t.$options.methods,i.length);a--;){var d=i[a];n&&I(n,d)||36!==(l=(d+"").charCodeAt(0))&&95!==l&&Zl(t,"_data",d)}Yt(e,!0)}(t):Yt(t._data={},!0),e.computed&&function(t,e){var l=t._computedWatchers=Object.create(null),i=it();for(var n in e){var a=e[n],d="function"==typeof a?a:a.get;i||(l[n]=new rl(t,d||U,U,gl)),n in t||Wl(t,n,a)}}(t,e.computed),e.watch&&e.watch!==tt&&function(t,e){for(var l in e){var i=e[l];if(Array.isArray(i))for(var n=0;n1?B(e):e;for(var l=B(arguments,1),i='event handler for "'+t+'"',n=0,a=e.length;nparseInt(this.max)&&Yl(t,e[0],e,this._vnode),this.vnodeToCache=null}}},created:function(){this.cache=Object.create(null),this.keys=[]},destroyed:function(){for(var t in this.cache)Yl(this.cache,t,this.keys)},mounted:function(){var t=this;this.cacheVNode(),this.$watch("include",(function(e){pl(t,(function(t){return Vl(e,t)}))})),this.$watch("exclude",(function(e){pl(t,(function(t){return!Vl(e,t)}))}))},updated:function(){this.cacheVNode()},render:function(){var t=this.$slots.default,e=He(t),l=e&&e.componentOptions;if(l){var i=ul(l),n=this.include,a=this.exclude;if(n&&(!i||!Vl(n,i))||a&&i&&Vl(a,i))return e;var d=this.cache,s=this.keys,c=null==e.key?l.Ctor.cid+(l.tag?"::"+l.tag:""):e.key;d[c]?(e.componentInstance=d[c].componentInstance,N(s,c),s.push(c)):(this.vnodeToCache=e,this.keyToCache=c),e.data.keepAlive=!0}return e||t&&t[0]}}};!function(t){var e={get:function(){return J}};Object.defineProperty(t,"config",e),t.util={warn:ct,extend:O,mergeOptions:vt,defineReactive:Rt},t.set=Bt,t.delete=Ot,t.nextTick=ee,t.observable=function(t){return Yt(t),t},t.options=Object.create(null),j.forEach((function(e){t.options[e+"s"]=Object.create(null)})),t.options._base=t,O(t.options.components,Bl),function(t){t.use=function(t){var e=this._installedPlugins||(this._installedPlugins=[]);if(e.indexOf(t)>-1)return this;var l=B(arguments,1);return l.unshift(this),"function"==typeof t.install?t.install.apply(t,l):"function"==typeof t&&t.apply(null,l),e.push(t),this}}(t),function(t){t.mixin=function(t){return this.options=vt(this.options,t),this}}(t),function(t){t.cid=0;var e=1;t.extend=function(t){t=t||{};var l=this,i=l.cid,n=t._Ctor||(t._Ctor={});if(n[i])return n[i];var a=t.name||l.options.name,d=function(t){this._init(t)};return(d.prototype=Object.create(l.prototype)).constructor=d,d.cid=e++,d.options=vt(l.options,t),d.super=l,d.options.props&&function(t){var e=t.options.props;for(var l in e)Zl(t.prototype,"_props",l)}(d),d.options.computed&&function(t){var e=t.options.computed;for(var l in e)Wl(t.prototype,l,e[l])}(d),d.extend=l.extend,d.mixin=l.mixin,d.use=l.use,j.forEach((function(t){d[t]=l[t]})),a&&(d.options.components[a]=d),d.superOptions=l.options,d.extendOptions=t,d.sealedOptions=O({},d.options),n[i]=d,d}}(t),function(t){j.forEach((function(e){t[e]=function(t,l){return l?("component"===e&&o(l)&&(l.name=l.name||t,l=this.options._base.extend(l)),"directive"===e&&"function"==typeof l&&(l={bind:l,update:l}),this.options[e+"s"][t]=l,l):this.options[e+"s"][t]}}))}(t)}(Ml),Object.defineProperty(Ml.prototype,"$isServer",{get:it}),Object.defineProperty(Ml.prototype,"$ssrContext",{get:function(){return this.$vnode&&this.$vnode.ssrContext}}),Object.defineProperty(Ml,"FunctionalRenderContext",{value:ze}),Ml.version="2.6.14";var Ol=g("style,class"),Dl=g("input,textarea,option,select,progress"),Ul=function(t,e,l){return"value"===l&&Dl(t)&&"button"!==e||"selected"===l&&"option"===t||"checked"===l&&"input"===t||"muted"===l&&"video"===t},Tl=g("contenteditable,draggable,spellcheck"),Xl=g("events,caret,typing,plaintext-only"),zl=g("allowfullscreen,async,autofocus,autoplay,checked,compact,controls,declare,default,defaultchecked,defaultmuted,defaultselected,defer,disabled,enabled,formnovalidate,hidden,indeterminate,inert,ismap,itemscope,loop,multiple,muted,nohref,noresize,noshade,novalidate,nowrap,open,pauseonexit,readonly,required,reversed,scoped,seamless,selected,sortable,truespeed,typemustmatch,visible"),Fl="http://www.w3.org/1999/xlink",vl=function(t){return":"===t.charAt(5)&&"xlink"===t.slice(0,5)},wl=function(t){return vl(t)?t.slice(6,t.length):""},jl=function(t){return null==t||!1===t};function Ll(t,e){return{staticClass:Jl(t.staticClass,e.staticClass),class:n(t.class)?[t.class,e.class]:e.class}}function Jl(t,e){return t?e?t+" "+e:t:e||""}function kl(t){return Array.isArray(t)?function(t){for(var e,l="",i=0,a=t.length;i-1?ri(t,e,l):zl(e)?jl(l)?t.removeAttribute(e):(l="allowfullscreen"===e&&"EMBED"===t.tagName?"true":e,t.setAttribute(e,l)):Tl(e)?t.setAttribute(e,function(t,e){return jl(e)||"false"===e?"false":"contenteditable"===t&&Xl(e)?e:"true"}(e,l)):vl(e)?jl(l)?t.removeAttributeNS(Fl,wl(e)):t.setAttributeNS(Fl,e,l):ri(t,e,l)}function ri(t,e,l){if(jl(l))t.removeAttribute(e);else{if(K&&!P&&"TEXTAREA"===t.tagName&&"placeholder"===e&&""!==l&&!t.__ieph){var i=function(e){e.stopImmediatePropagation(),t.removeEventListener("input",i)};t.addEventListener("input",i),t.__ieph=!0}t.setAttribute(e,l)}}var mi={create:oi,update:oi};function Zi(t,e){var l=e.elm,a=e.data,d=t.data;if(!(i(a.staticClass)&&i(a.class)&&(i(d)||i(d.staticClass)&&i(d.class)))){var s=function(t){for(var e=t.data,l=t,i=t;n(i.componentInstance);)(i=i.componentInstance._vnode)&&i.data&&(e=Ll(i.data,e));for(;n(l=l.parent);)l&&l.data&&(e=Ll(e,l.data));return function(t,e){return n(t)||n(e)?Jl(t,kl(e)):""}(e.staticClass,e.class)}(e),c=l._transitionClasses;n(c)&&(s=Jl(s,kl(c))),s!==l._prevClass&&(l.setAttribute("class",s),l._prevClass=s)}}var gi,Wi,hi,Ni,yi,Ii,Gi={create:Zi,update:Zi},Mi=/[\w).+\-_$\]]/;function ui(t){var e,l,i,n,a,d=!1,s=!1,c=!1,o=!1,b=0,r=0,m=0,Z=0;for(i=0;i=0&&" "===(W=t.charAt(g));g--);W&&Mi.test(W)||(o=!0)}}else void 0===n?(Z=i+1,n=t.slice(0,i).trim()):h();function h(){(a||(a=[])).push(t.slice(Z,i).trim()),Z=i+1}if(void 0===n?n=t.slice(0,i).trim():0!==Z&&h(),a)for(i=0;i-1?{exp:t.slice(0,Ni),key:'"'+t.slice(Ni+1)+'"'}:{exp:t,key:null};for(Wi=t,Ni=yi=Ii=0;!Ji();)ki(hi=Li())?xi(hi):91===hi&&Ci(hi);return{exp:t.slice(0,yi),key:t.slice(yi+1,Ii)}}(t);return null===l.key?t+"="+e:"$set("+l.exp+", "+l.key+", "+e+")"}function Li(){return Wi.charCodeAt(++Ni)}function Ji(){return Ni>=gi}function ki(t){return 34===t||39===t}function Ci(t){var e=1;for(yi=Ni;!Ji();)if(ki(t=Li()))xi(t);else if(91===t&&e++,93===t&&e--,0===e){Ii=Ni;break}}function xi(t){for(var e=t;!Ji()&&(t=Li())!==e;);}var Qi,Hi="__r";function Ai(t,e,l){var i=Qi;return function n(){null!==e.apply(null,arguments)&&fi(t,n,l,i)}}var Si=Et&&!(q&&Number(q[1])<=53);function Ei(t,e,l,i){if(Si){var n=dl,a=e;e=a._wrapper=function(t){if(t.target===t.currentTarget||t.timeStamp>=n||t.timeStamp<=0||t.target.ownerDocument!==document)return a.apply(this,arguments)}}Qi.addEventListener(t,e,et?{capture:l,passive:i}:l)}function fi(t,e,l,i){(i||Qi).removeEventListener(t,e._wrapper||e,l)}function Ki(t,e){if(!i(t.data.on)||!i(e.data.on)){var l=e.data.on||{},a=t.data.on||{};Qi=e.elm,function(t){if(n(t.__r)){var e=K?"change":"input";t[e]=[].concat(t.__r,t[e]||[]),delete t.__r}n(t.__c)&&(t.change=[].concat(t.__c,t.change||[]),delete t.__c)}(l),de(l,a,Ei,fi,Ai,e.context),Qi=void 0}}var Pi,$i={create:Ki,update:Ki};function _i(t,e){if(!i(t.data.domProps)||!i(e.data.domProps)){var l,a,d=e.elm,s=t.data.domProps||{},c=e.data.domProps||{};for(l in n(c.__ob__)&&(c=e.data.domProps=O({},c)),s)l in c||(d[l]="");for(l in c){if(a=c[l],"textContent"===l||"innerHTML"===l){if(e.children&&(e.children.length=0),a===s[l])continue;1===d.childNodes.length&&d.removeChild(d.childNodes[0])}if("value"===l&&"PROGRESS"!==d.tagName){d._value=a;var o=i(a)?"":String(a);qi(d,o)&&(d.value=o)}else if("innerHTML"===l&&Ql(d.tagName)&&i(d.innerHTML)){(Pi=Pi||document.createElement("div")).innerHTML=""+a+"";for(var b=Pi.firstChild;d.firstChild;)d.removeChild(d.firstChild);for(;b.firstChild;)d.appendChild(b.firstChild)}else if(a!==s[l])try{d[l]=a}catch(t){}}}}function qi(t,e){return!t.composing&&("OPTION"===t.tagName||function(t,e){var l=!0;try{l=document.activeElement!==t}catch(t){}return l&&t.value!==e}(t,e)||function(t,e){var l=t.value,i=t._vModifiers;if(n(i)){if(i.number)return Z(l)!==Z(e);if(i.trim)return l.trim()!==e.trim()}return l!==e}(t,e))}var tn={create:_i,update:_i},en=G((function(t){var e={},l=/:(.+)/;return t.split(/;(?![^(]*\))/g).forEach((function(t){if(t){var i=t.split(l);i.length>1&&(e[i[0].trim()]=i[1].trim())}})),e}));function ln(t){var e=nn(t.style);return t.staticStyle?O(t.staticStyle,e):e}function nn(t){return Array.isArray(t)?D(t):"string"==typeof t?en(t):t}var an,dn=/^--/,sn=/\s*!important$/,cn=function(t,e,l){if(dn.test(e))t.style.setProperty(e,l);else if(sn.test(l))t.style.setProperty(Y(e),l.replace(sn,""),"important");else{var i=bn(e);if(Array.isArray(l))for(var n=0,a=l.length;n-1?e.split(Zn).forEach((function(e){return t.classList.add(e)})):t.classList.add(e);else{var l=" "+(t.getAttribute("class")||"")+" ";l.indexOf(" "+e+" ")<0&&t.setAttribute("class",(l+e).trim())}}function Wn(t,e){if(e&&(e=e.trim()))if(t.classList)e.indexOf(" ")>-1?e.split(Zn).forEach((function(e){return t.classList.remove(e)})):t.classList.remove(e),t.classList.length||t.removeAttribute("class");else{for(var l=" "+(t.getAttribute("class")||"")+" ",i=" "+e+" ";l.indexOf(i)>=0;)l=l.replace(i," ");(l=l.trim())?t.setAttribute("class",l):t.removeAttribute("class")}}function hn(t){if(t){if("object"==typeof t){var e={};return!1!==t.css&&O(e,Nn(t.name||"v")),O(e,t),e}return"string"==typeof t?Nn(t):void 0}}var Nn=G((function(t){return{enterClass:t+"-enter",enterToClass:t+"-enter-to",enterActiveClass:t+"-enter-active",leaveClass:t+"-leave",leaveToClass:t+"-leave-to",leaveActiveClass:t+"-leave-active"}})),yn=A&&!P,In="transition",Gn="animation",Mn="transition",un="transitionend",Vn="animation",pn="animationend";yn&&(void 0===window.ontransitionend&&void 0!==window.onwebkittransitionend&&(Mn="WebkitTransition",un="webkitTransitionEnd"),void 0===window.onanimationend&&void 0!==window.onwebkitanimationend&&(Vn="WebkitAnimation",pn="webkitAnimationEnd"));var Yn=A?window.requestAnimationFrame?window.requestAnimationFrame.bind(window):setTimeout:function(t){return t()};function Rn(t){Yn((function(){Yn(t)}))}function Bn(t,e){var l=t._transitionClasses||(t._transitionClasses=[]);l.indexOf(e)<0&&(l.push(e),gn(t,e))}function On(t,e){t._transitionClasses&&N(t._transitionClasses,e),Wn(t,e)}function Dn(t,e,l){var i=Tn(t,e),n=i.type,a=i.timeout,d=i.propCount;if(!n)return l();var s=n===In?un:pn,c=0,o=function(){t.removeEventListener(s,b),l()},b=function(e){e.target===t&&++c>=d&&o()};setTimeout((function(){c0&&(l=In,b=d,r=a.length):e===Gn?o>0&&(l=Gn,b=o,r=c.length):r=(l=(b=Math.max(d,o))>0?d>o?In:Gn:null)?l===In?a.length:c.length:0,{type:l,timeout:b,propCount:r,hasTransform:l===In&&Un.test(i[Mn+"Property"])}}function Xn(t,e){for(;t.length1}function Ln(t,e){!0!==e.data.show&&Fn(e)}var Jn=function(t){var e,l,s={},c=t.modules,o=t.nodeOps;for(e=0;eg?I(t,i(l[N+1])?null:l[N+1].elm,l,Z,N,a):Z>N&&M(e,m,g)}(m,W,N,l,b):n(N)?(n(t.text)&&o.setTextContent(m,""),I(m,null,N,0,N.length-1,l)):n(W)?M(W,0,W.length-1):n(t.text)&&o.setTextContent(m,""):t.text!==e.text&&o.setTextContent(m,e.text),n(g)&&n(Z=g.hook)&&n(Z=Z.postpatch)&&Z(t,e)}}}function Y(t,e,l){if(a(l)&&n(t.parent))t.parent.data.pendingInsert=e;else for(var i=0;i-1,d.selected!==a&&(d.selected=a);else if(z(Hn(d),i))return void(t.selectedIndex!==s&&(t.selectedIndex=s));n||(t.selectedIndex=-1)}}function Qn(t,e){return e.every((function(e){return!z(e,t)}))}function Hn(t){return"_value"in t?t._value:t.value}function An(t){t.target.composing=!0}function Sn(t){t.target.composing&&(t.target.composing=!1,En(t.target,"input"))}function En(t,e){var l=document.createEvent("HTMLEvents");l.initEvent(e,!0,!0),t.dispatchEvent(l)}function fn(t){return!t.componentInstance||t.data&&t.data.transition?t:fn(t.componentInstance._vnode)}var Kn={model:kn,show:{bind:function(t,e,l){var i=e.value,n=(l=fn(l)).data&&l.data.transition,a=t.__vOriginalDisplay="none"===t.style.display?"":t.style.display;i&&n?(l.data.show=!0,Fn(l,(function(){t.style.display=a}))):t.style.display=i?a:"none"},update:function(t,e,l){var i=e.value;!i!=!e.oldValue&&((l=fn(l)).data&&l.data.transition?(l.data.show=!0,i?Fn(l,(function(){t.style.display=t.__vOriginalDisplay})):vn(l,(function(){t.style.display="none"}))):t.style.display=i?t.__vOriginalDisplay:"none")},unbind:function(t,e,l,i,n){n||(t.style.display=t.__vOriginalDisplay)}}},Pn={name:String,appear:Boolean,css:Boolean,mode:String,type:String,enterClass:String,leaveClass:String,enterToClass:String,leaveToClass:String,enterActiveClass:String,leaveActiveClass:String,appearClass:String,appearActiveClass:String,appearToClass:String,duration:[Number,String,Object]};function $n(t){var e=t&&t.componentOptions;return e&&e.Ctor.options.abstract?$n(He(e.children)):t}function _n(t){var e={},l=t.$options;for(var i in l.propsData)e[i]=t[i];var n=l._parentListeners;for(var a in n)e[u(a)]=n[a];return e}function qn(t,e){if(/\d-keep-alive$/.test(e.tag))return t("keep-alive",{props:e.componentOptions.propsData})}var ta=function(t){return t.tag||ge(t)},ea=function(t){return"show"===t.name},la={name:"transition",props:Pn,abstract:!0,render:function(t){var e=this,l=this.$slots.default;if(l&&(l=l.filter(ta)).length){var i=this.mode,n=l[0];if(function(t){for(;t=t.parent;)if(t.data.transition)return!0}(this.$vnode))return n;var a=$n(n);if(!a)return n;if(this._leaving)return qn(t,n);var s="__transition-"+this._uid+"-";a.key=null==a.key?a.isComment?s+"comment":s+a.tag:d(a.key)?0===String(a.key).indexOf(s)?a.key:s+a.key:a.key;var c=(a.data||(a.data={})).transition=_n(this),o=this._vnode,b=$n(o);if(a.data.directives&&a.data.directives.some(ea)&&(a.data.show=!0),b&&b.data&&!function(t,e){return e.key===t.key&&e.tag===t.tag}(a,b)&&!ge(b)&&(!b.componentInstance||!b.componentInstance._vnode.isComment)){var r=b.data.transition=O({},c);if("out-in"===i)return this._leaving=!0,se(r,"afterLeave",(function(){e._leaving=!1,e.$forceUpdate()})),qn(t,n);if("in-out"===i){if(ge(a))return o;var m,Z=function(){m()};se(c,"afterEnter",Z),se(c,"enterCancelled",Z),se(r,"delayLeave",(function(t){m=t}))}}return n}}},ia=O({tag:String,moveClass:String},Pn);function na(t){t.elm._moveCb&&t.elm._moveCb(),t.elm._enterCb&&t.elm._enterCb()}function aa(t){t.data.newPos=t.elm.getBoundingClientRect()}function da(t){var e=t.data.pos,l=t.data.newPos,i=e.left-l.left,n=e.top-l.top;if(i||n){t.data.moved=!0;var a=t.elm.style;a.transform=a.WebkitTransform="translate("+i+"px,"+n+"px)",a.transitionDuration="0s"}}delete ia.mode;var sa={Transition:la,TransitionGroup:{props:ia,beforeMount:function(){var t=this,e=this._update;this._update=function(l,i){var n=Pe(t);t.__patch__(t._vnode,t.kept,!1,!0),t._vnode=t.kept,n(),e.call(t,l,i)}},render:function(t){for(var e=this.tag||this.$vnode.data.tag||"span",l=Object.create(null),i=this.prevChildren=this.children,n=this.$slots.default||[],a=this.children=[],d=_n(this),s=0;s-1?Sl[t]=e.constructor===window.HTMLUnknownElement||e.constructor===window.HTMLElement:Sl[t]=/HTMLUnknownElement/.test(e.toString())},O(Ml.options.directives,Kn),O(Ml.options.components,sa),Ml.prototype.__patch__=A?Jn:U,Ml.prototype.$mount=function(t,e){return function(t,e,l){var i;return t.$el=e,t.$options.render||(t.$options.render=ht),qe(t,"beforeMount"),i=function(){t._update(t._render(),l)},new rl(t,i,U,{before:function(){t._isMounted&&!t._isDestroyed&&qe(t,"beforeUpdate")}},!0),l=!1,null==t.$vnode&&(t._isMounted=!0,qe(t,"mounted")),t}(this,t=t&&A?fl(t):void 0,e)},A&&setTimeout((function(){J.devtools&&nt&&nt.emit("init",Ml)}),0);var ca,oa=/\{\{((?:.|\r?\n)+?)\}\}/g,ba=/[-.*+?^${}()|[\]\/\\]/g,ra=G((function(t){var e=t[0].replace(ba,"\\$&"),l=t[1].replace(ba,"\\$&");return new RegExp(e+"((?:.|\\n)+?)"+l,"g")})),ma={staticKeys:["staticClass"],transformNode:function(t,e){e.warn;var l=zi(t,"class");l&&(t.staticClass=JSON.stringify(l));var i=Xi(t,"class",!1);i&&(t.classBinding=i)},genData:function(t){var e="";return t.staticClass&&(e+="staticClass:"+t.staticClass+","),t.classBinding&&(e+="class:"+t.classBinding+","),e}},Za={staticKeys:["staticStyle"],transformNode:function(t,e){e.warn;var l=zi(t,"style");l&&(t.staticStyle=JSON.stringify(en(l)));var i=Xi(t,"style",!1);i&&(t.styleBinding=i)},genData:function(t){var e="";return t.staticStyle&&(e+="staticStyle:"+t.staticStyle+","),t.styleBinding&&(e+="style:("+t.styleBinding+"),"),e}},ga=g("area,base,br,col,embed,frame,hr,img,input,isindex,keygen,link,meta,param,source,track,wbr"),Wa=g("colgroup,dd,dt,li,options,p,td,tfoot,th,thead,tr,source"),ha=g("address,article,aside,base,blockquote,body,caption,col,colgroup,dd,details,dialog,div,dl,dt,fieldset,figcaption,figure,footer,form,h1,h2,h3,h4,h5,h6,head,header,hgroup,hr,html,legend,li,menuitem,meta,optgroup,option,param,rp,rt,source,style,summary,tbody,td,tfoot,th,thead,title,tr,track"),Na=/^\s*([^\s"'<>\/=]+)(?:\s*(=)\s*(?:"([^"]*)"+|'([^']*)'+|([^\s"'=<>`]+)))?/,ya=/^\s*((?:v-[\w-]+:|@|:|#)\[[^=]+?\][^\s"'<>\/=]*)(?:\s*(=)\s*(?:"([^"]*)"+|'([^']*)'+|([^\s"'=<>`]+)))?/,Ia="[a-zA-Z_][\\-\\.0-9_a-zA-Z"+k.source+"]*",Ga="((?:"+Ia+"\\:)?"+Ia+")",Ma=new RegExp("^<"+Ga),ua=/^\s*(\/?)>/,Va=new RegExp("^<\\/"+Ga+"[^>]*>"),pa=/^]+>/i,Ya=/^",""":'"',"&":"&"," ":"\n"," ":"\t","'":"'"},Ua=/&(?:lt|gt|quot|amp|#39);/g,Ta=/&(?:lt|gt|quot|amp|#39|#10|#9);/g,Xa=g("pre,textarea",!0),za=function(t,e){return t&&Xa(t)&&"\n"===e[0]};function Fa(t,e){var l=e?Ta:Ua;return t.replace(l,(function(t){return Da[t]}))}var va,wa,ja,La,Ja,ka,Ca,xa,Qa=/^@|^v-on:/,Ha=/^v-|^@|^:|^#/,Aa=/([\s\S]*?)\s+(?:in|of)\s+([\s\S]*)/,Sa=/,([^,\}\]]*)(?:,([^,\}\]]*))?$/,Ea=/^\(|\)$/g,fa=/^\[.*\]$/,Ka=/:(.*)$/,Pa=/^:|^\.|^v-bind:/,$a=/\.[^.\]]+(?=[^\]]*$)/g,_a=/^v-slot(:|$)|^#/,qa=/[\r\n]/,td=/[ \f\t\r\n]+/g,ed=G((function(t){return(ca=ca||document.createElement("div")).innerHTML=t,ca.textContent})),ld="_empty_";function id(t,e,l){return{type:1,tag:t,attrsList:e,attrsMap:od(e),rawAttrsMap:{},parent:l,children:[]}}function nd(t,e){var l,i;(i=Xi(l=t,"key"))&&(l.key=i),t.plain=!t.key&&!t.scopedSlots&&!t.attrsList.length,function(t){var e=Xi(t,"ref");e&&(t.ref=e,t.refInFor=function(t){for(var e=t;e;){if(void 0!==e.for)return!0;e=e.parent}return!1}(t))}(t),function(t){var e;"template"===t.tag?(e=zi(t,"scope"),t.slotScope=e||zi(t,"slot-scope")):(e=zi(t,"slot-scope"))&&(t.slotScope=e);var l=Xi(t,"slot");if(l&&(t.slotTarget='""'===l?'"default"':l,t.slotTargetDynamic=!(!t.attrsMap[":slot"]&&!t.attrsMap["v-bind:slot"]),"template"===t.tag||t.slotScope||Bi(t,"slot",l,function(t,e){return t.rawAttrsMap[":"+e]||t.rawAttrsMap["v-bind:"+e]||t.rawAttrsMap[e]}(t,"slot"))),"template"===t.tag){var i=Fi(t,_a);if(i){var n=sd(i),a=n.name,d=n.dynamic;t.slotTarget=a,t.slotTargetDynamic=d,t.slotScope=i.value||ld}}else{var s=Fi(t,_a);if(s){var c=t.scopedSlots||(t.scopedSlots={}),o=sd(s),b=o.name,r=o.dynamic,m=c[b]=id("template",[],t);m.slotTarget=b,m.slotTargetDynamic=r,m.children=t.children.filter((function(t){if(!t.slotScope)return t.parent=m,!0})),m.slotScope=s.value||ld,t.children=[],t.plain=!1}}}(t),function(t){"slot"===t.tag&&(t.slotName=Xi(t,"name"))}(t),function(t){var e;(e=Xi(t,"is"))&&(t.component=e),null!=zi(t,"inline-template")&&(t.inlineTemplate=!0)}(t);for(var n=0;n-1"+("true"===a?":("+e+")":":_q("+e+","+a+")")),Ti(t,"change","var $$a="+e+",$$el=$event.target,$$c=$$el.checked?("+a+"):("+d+");if(Array.isArray($$a)){var $$v="+(i?"_n("+n+")":n)+",$$i=_i($$a,$$v);if($$el.checked){$$i<0&&("+ji(e,"$$a.concat([$$v])")+")}else{$$i>-1&&("+ji(e,"$$a.slice(0,$$i).concat($$a.slice($$i+1))")+")}}else{"+ji(e,"$$c")+"}",null,!0)}(t,i,n);else if("input"===a&&"radio"===d)!function(t,e,l){var i=l&&l.number,n=Xi(t,"value")||"null";Ri(t,"checked","_q("+e+","+(n=i?"_n("+n+")":n)+")"),Ti(t,"change",ji(e,n),null,!0)}(t,i,n);else if("input"===a||"textarea"===a)!function(t,e,l){var i=t.attrsMap.type,n=l||{},a=n.lazy,d=n.number,s=n.trim,c=!a&&"range"!==i,o=a?"change":"range"===i?Hi:"input",b="$event.target.value";s&&(b="$event.target.value.trim()"),d&&(b="_n("+b+")");var r=ji(e,b);c&&(r="if($event.target.composing)return;"+r),Ri(t,"value","("+e+")"),Ti(t,o,r,null,!0),(s||d)&&Ti(t,"blur","$forceUpdate()")}(t,i,n);else if(!J.isReservedTag(a))return wi(t,i,n),!1;return!0},text:function(t,e){e.value&&Ri(t,"textContent","_s("+e.value+")",e)},html:function(t,e){e.value&&Ri(t,"innerHTML","_s("+e.value+")",e)}},isPreTag:function(t){return"pre"===t},isUnaryTag:ga,mustUseProp:Ul,canBeLeftOpenTag:Wa,isReservedTag:Hl,getTagNamespace:Al,staticKeys:function(t){return t.reduce((function(t,e){return t.concat(e.staticKeys||[])}),[]).join(",")}(Wd)},Nd=G((function(t){return g("type,tag,attrsList,attrsMap,plain,parent,children,attrs,start,end,rawAttrsMap"+(t?","+t:""))})),yd=/^([\w$_]+|\([^)]*?\))\s*=>|^function(?:\s+[\w$]+)?\s*\(/,Id=/\([^)]*?\);*$/,Gd=/^[A-Za-z_$][\w$]*(?:\.[A-Za-z_$][\w$]*|\['[^']*?']|\["[^"]*?"]|\[\d+]|\[[A-Za-z_$][\w$]*])*$/,Md={esc:27,tab:9,enter:13,space:32,up:38,left:37,right:39,down:40,delete:[8,46]},ud={esc:["Esc","Escape"],tab:"Tab",enter:"Enter",space:[" ","Spacebar"],up:["Up","ArrowUp"],left:["Left","ArrowLeft"],right:["Right","ArrowRight"],down:["Down","ArrowDown"],delete:["Backspace","Delete","Del"]},Vd=function(t){return"if("+t+")return null;"},pd={stop:"$event.stopPropagation();",prevent:"$event.preventDefault();",self:Vd("$event.target !== $event.currentTarget"),ctrl:Vd("!$event.ctrlKey"),shift:Vd("!$event.shiftKey"),alt:Vd("!$event.altKey"),meta:Vd("!$event.metaKey"),left:Vd("'button' in $event && $event.button !== 0"),middle:Vd("'button' in $event && $event.button !== 1"),right:Vd("'button' in $event && $event.button !== 2")};function Yd(t,e){var l=e?"nativeOn:":"on:",i="",n="";for(var a in t){var d=Rd(t[a]);t[a]&&t[a].dynamic?n+=a+","+d+",":i+='"'+a+'":'+d+","}return i="{"+i.slice(0,-1)+"}",n?l+"_d("+i+",["+n.slice(0,-1)+"])":l+i}function Rd(t){if(!t)return"function(){}";if(Array.isArray(t))return"["+t.map((function(t){return Rd(t)})).join(",")+"]";var e=Gd.test(t.value),l=yd.test(t.value),i=Gd.test(t.value.replace(Id,""));if(t.modifiers){var n="",a="",d=[];for(var s in t.modifiers)if(pd[s])a+=pd[s],Md[s]&&d.push(s);else if("exact"===s){var c=t.modifiers;a+=Vd(["ctrl","shift","alt","meta"].filter((function(t){return!c[t]})).map((function(t){return"$event."+t+"Key"})).join("||"))}else d.push(s);return d.length&&(n+=function(t){return"if(!$event.type.indexOf('key')&&"+t.map(Bd).join("&&")+")return null;"}(d)),a&&(n+=a),"function($event){"+n+(e?"return "+t.value+".apply(null, arguments)":l?"return ("+t.value+").apply(null, arguments)":i?"return "+t.value:t.value)+"}"}return e||l?t.value:"function($event){"+(i?"return "+t.value:t.value)+"}"}function Bd(t){var e=parseInt(t,10);if(e)return"$event.keyCode!=="+e;var l=Md[t],i=ud[t];return"_k($event.keyCode,"+JSON.stringify(t)+","+JSON.stringify(l)+",$event.key,"+JSON.stringify(i)+")"}var Od={on:function(t,e){t.wrapListeners=function(t){return"_g("+t+","+e.value+")"}},bind:function(t,e){t.wrapData=function(l){return"_b("+l+",'"+t.tag+"',"+e.value+","+(e.modifiers&&e.modifiers.prop?"true":"false")+(e.modifiers&&e.modifiers.sync?",true":"")+")"}},cloak:U},Dd=function(t){this.options=t,this.warn=t.warn||pi,this.transforms=Yi(t.modules,"transformCode"),this.dataGenFns=Yi(t.modules,"genData"),this.directives=O(O({},Od),t.directives);var e=t.isReservedTag||T;this.maybeComponent=function(t){return!!t.component||!e(t.tag)},this.onceId=0,this.staticRenderFns=[],this.pre=!1};function Ud(t,e){var l=new Dd(e);return{render:"with(this){return "+(t?"script"===t.tag?"null":Td(t,l):'_c("div")')+"}",staticRenderFns:l.staticRenderFns}}function Td(t,e){if(t.parent&&(t.pre=t.pre||t.parent.pre),t.staticRoot&&!t.staticProcessed)return Xd(t,e);if(t.once&&!t.onceProcessed)return zd(t,e);if(t.for&&!t.forProcessed)return vd(t,e);if(t.if&&!t.ifProcessed)return Fd(t,e);if("template"!==t.tag||t.slotTarget||e.pre){if("slot"===t.tag)return function(t,e){var l=t.slotName||'"default"',i=Jd(t,e),n="_t("+l+(i?",function(){return "+i+"}":""),a=t.attrs||t.dynamicAttrs?xd((t.attrs||[]).concat(t.dynamicAttrs||[]).map((function(t){return{name:u(t.name),value:t.value,dynamic:t.dynamic}}))):null,d=t.attrsMap["v-bind"];return!a&&!d||i||(n+=",null"),a&&(n+=","+a),d&&(n+=(a?"":",null")+","+d),n+")"}(t,e);var l;if(t.component)l=function(t,e,l){var i=e.inlineTemplate?null:Jd(e,l,!0);return"_c("+t+","+wd(e,l)+(i?","+i:"")+")"}(t.component,t,e);else{var i;(!t.plain||t.pre&&e.maybeComponent(t))&&(i=wd(t,e));var n=t.inlineTemplate?null:Jd(t,e,!0);l="_c('"+t.tag+"'"+(i?","+i:"")+(n?","+n:"")+")"}for(var a=0;a>>0}(d):"")+")"}(t,t.scopedSlots,e)+","),t.model&&(l+="model:{value:"+t.model.value+",callback:"+t.model.callback+",expression:"+t.model.expression+"},"),t.inlineTemplate){var a=function(t,e){var l=t.children[0];if(l&&1===l.type){var i=Ud(l,e.options);return"inlineTemplate:{render:function(){"+i.render+"},staticRenderFns:["+i.staticRenderFns.map((function(t){return"function(){"+t+"}"})).join(",")+"]}"}}(t,e);a&&(l+=a+",")}return l=l.replace(/,$/,"")+"}",t.dynamicAttrs&&(l="_b("+l+',"'+t.tag+'",'+xd(t.dynamicAttrs)+")"),t.wrapData&&(l=t.wrapData(l)),t.wrapListeners&&(l=t.wrapListeners(l)),l}function jd(t){return 1===t.type&&("slot"===t.tag||t.children.some(jd))}function Ld(t,e){var l=t.attrsMap["slot-scope"];if(t.if&&!t.ifProcessed&&!l)return Fd(t,e,Ld,"null");if(t.for&&!t.forProcessed)return vd(t,e,Ld);var i=t.slotScope===ld?"":String(t.slotScope),n="function("+i+"){return "+("template"===t.tag?t.if&&l?"("+t.if+")?"+(Jd(t,e)||"undefined")+":undefined":Jd(t,e)||"undefined":Td(t,e))+"}",a=i?"":",proxy:true";return"{key:"+(t.slotTarget||'"default"')+",fn:"+n+a+"}"}function Jd(t,e,l,i,n){var a=t.children;if(a.length){var d=a[0];if(1===a.length&&d.for&&"template"!==d.tag&&"slot"!==d.tag){var s=l?e.maybeComponent(d)?",1":",0":"";return""+(i||Td)(d,e)+s}var c=l?function(t,e){for(var l=0,i=0;i]*>)","i")),m=t.replace(r,(function(t,l,i){return o=i.length,Ba(b)||"noscript"===b||(l=l.replace(//g,"$1").replace(//g,"$1")),za(b,l)&&(l=l.slice(1)),e.chars&&e.chars(l),""}));c+=t.length-m.length,t=m,R(b,c-o,c)}else{var Z=t.indexOf("<");if(0===Z){if(Ya.test(t)){var g=t.indexOf("--\x3e");if(g>=0){e.shouldKeepComment&&e.comment(t.substring(4,g),c,c+g+3),V(g+3);continue}}if(Ra.test(t)){var W=t.indexOf("]>");if(W>=0){V(W+2);continue}}var h=t.match(pa);if(h){V(h[0].length);continue}var N=t.match(Va);if(N){var y=c;V(N[0].length),R(N[1],y,c);continue}var I=p();if(I){Y(I),za(I.tagName,t)&&V(1);continue}}var G=void 0,M=void 0,u=void 0;if(Z>=0){for(M=t.slice(Z);!(Va.test(M)||Ma.test(M)||Ya.test(M)||Ra.test(M)||(u=M.indexOf("<",1))<0);)Z+=u,M=t.slice(Z);G=t.substring(0,Z)}Z<0&&(G=t),G&&V(G.length),e.chars&&G&&e.chars(G,c-G.length,c)}if(t===l){e.chars&&e.chars(t);break}}function V(e){c+=e,t=t.substring(e)}function p(){var e=t.match(Ma);if(e){var l,i,n={tagName:e[1],attrs:[],start:c};for(V(e[0].length);!(l=t.match(ua))&&(i=t.match(ya)||t.match(Na));)i.start=c,V(i[0].length),i.end=c,n.attrs.push(i);if(l)return n.unarySlash=l[1],V(l[0].length),n.end=c,n}}function Y(t){var l=t.tagName,c=t.unarySlash;a&&("p"===i&&ha(l)&&R(i),s(l)&&i===l&&R(l));for(var o=d(l)||!!c,b=t.attrs.length,r=new Array(b),m=0;m=0&&n[d].lowerCasedTag!==s;d--);else d=0;if(d>=0){for(var o=n.length-1;o>=d;o--)e.end&&e.end(n[o].tag,l,a);n.length=d,i=d&&n[d-1].tag}else"br"===s?e.start&&e.start(t,[],!0,l,a):"p"===s&&(e.start&&e.start(t,[],!1,l,a),e.end&&e.end(t,l,a))}R()}(t,{warn:va,expectHTML:e.expectHTML,isUnaryTag:e.isUnaryTag,canBeLeftOpenTag:e.canBeLeftOpenTag,shouldDecodeNewlines:e.shouldDecodeNewlines,shouldDecodeNewlinesForHref:e.shouldDecodeNewlinesForHref,shouldKeepComment:e.comments,outputSourceRange:e.outputSourceRange,start:function(t,a,d,b,r){var m=i&&i.ns||xa(t);K&&"svg"===m&&(a=function(t){for(var e=[],l=0;lc&&(s.push(a=t.slice(c,n)),d.push(JSON.stringify(a)));var o=ui(i[1].trim());d.push("_s("+o+")"),s.push({"@binding":o}),c=n+i[0].length}return c':'
',Ed.innerHTML.indexOf(" ")>0}var $d=!!A&&Pd(!1),_d=!!A&&Pd(!0),qd=G((function(t){var e=fl(t);return e&&e.innerHTML})),ts=Ml.prototype.$mount;return Ml.prototype.$mount=function(t,e){if((t=t&&fl(t))===document.body||t===document.documentElement)return this;var l=this.$options;if(!l.render){var i=l.template;if(i)if("string"==typeof i)"#"===i.charAt(0)&&(i=qd(i));else{if(!i.nodeType)return this;i=i.innerHTML}else t&&(i=function(t){if(t.outerHTML)return t.outerHTML;var e=document.createElement("div");return e.appendChild(t.cloneNode(!0)),e.innerHTML}(t));if(i){var n=Kd(i,{outputSourceRange:!1,shouldDecodeNewlines:$d,shouldDecodeNewlinesForHref:_d,delimiters:l.delimiters,comments:l.comments},this),a=n.render,d=n.staticRenderFns;l.render=a,l.staticRenderFns=d}}return ts.call(this,t,e)},Ml.compile=Kd,Ml}()}).call(this,l(5),l(26).setImmediate)},function(t,e,l){(function(t){var i=void 0!==t&&t||"undefined"!=typeof self&&self||window,n=Function.prototype.apply;function a(t,e){this._id=t,this._clearFn=e}e.setTimeout=function(){return new a(n.call(setTimeout,i,arguments),clearTimeout)},e.setInterval=function(){return new a(n.call(setInterval,i,arguments),clearInterval)},e.clearTimeout=e.clearInterval=function(t){t&&t.close()},a.prototype.unref=a.prototype.ref=function(){},a.prototype.close=function(){this._clearFn.call(i,this._id)},e.enroll=function(t,e){clearTimeout(t._idleTimeoutId),t._idleTimeout=e},e.unenroll=function(t){clearTimeout(t._idleTimeoutId),t._idleTimeout=-1},e._unrefActive=e.active=function(t){clearTimeout(t._idleTimeoutId);var e=t._idleTimeout;e>=0&&(t._idleTimeoutId=setTimeout((function(){t._onTimeout&&t._onTimeout()}),e))},l(27),e.setImmediate="undefined"!=typeof self&&self.setImmediate||void 0!==t&&t.setImmediate||this&&this.setImmediate,e.clearImmediate="undefined"!=typeof self&&self.clearImmediate||void 0!==t&&t.clearImmediate||this&&this.clearImmediate}).call(this,l(5))},function(t,e,l){(function(t,e){!function(t,l){"use strict";if(!t.setImmediate){var i,n,a,d,s,c=1,o={},b=!1,r=t.document,m=Object.getPrototypeOf&&Object.getPrototypeOf(t);m=m&&m.setTimeout?m:t,"[object process]"==={}.toString.call(t.process)?i=function(t){e.nextTick((function(){g(t)}))}:!function(){if(t.postMessage&&!t.importScripts){var e=!0,l=t.onmessage;return t.onmessage=function(){e=!1},t.postMessage("","*"),t.onmessage=l,e}}()?t.MessageChannel?((a=new MessageChannel).port1.onmessage=function(t){g(t.data)},i=function(t){a.port2.postMessage(t)}):r&&"onreadystatechange"in r.createElement("script")?(n=r.documentElement,i=function(t){var e=r.createElement("script");e.onreadystatechange=function(){g(t),e.onreadystatechange=null,n.removeChild(e),e=null},n.appendChild(e)}):i=function(t){setTimeout(g,0,t)}:(d="setImmediate$"+Math.random()+"$",s=function(e){e.source===t&&"string"==typeof e.data&&0===e.data.indexOf(d)&&g(+e.data.slice(d.length))},t.addEventListener?t.addEventListener("message",s,!1):t.attachEvent("onmessage",s),i=function(e){t.postMessage(d+e,"*")}),m.setImmediate=function(t){"function"!=typeof t&&(t=new Function(""+t));for(var e=new Array(arguments.length-1),l=0;l({pantryID:null}),methods:{changeView(t){this.$emit("change-view",t)},displayOnboarding(t){this.pantryID=t,this.$emit("change-view",n.created)}}};t.exports=a},function(t,e){t.exports='
\n \n\n \n\n \n\n \n\n \n\n \n
\n'},function(t,e,l){"use strict";var i=this&&this.__awaiter||function(t,e,l,i){return new(l||(l=Promise))((function(n,a){function d(t){try{c(i.next(t))}catch(t){a(t)}}function s(t){try{c(i.throw(t))}catch(t){a(t)}}function c(t){var e;t.done?n(t.value):(e=t.value,e instanceof l?e:new l((function(t){t(e)}))).then(d,s)}c((i=i.apply(t,e||[])).next())}))};const n=l(4),a=l(3).apiPath,d={name:"dashboard",template:l(54),props:["pantryID"],components:{explorer:l(55),login:l(70),banner:l(21)},data:()=>({signedIn:!1,id:null,pantry:null,promo:{emoji:"🔥",snippet:"Free Stickers?",title:"Fill out our user survey and get free Pantry stickers!"}}),methods:{login(t){return i(this,void 0,void 0,(function*(){try{yield this.fetchPantry(t),this.createSession(),this.signedIn=!0}catch(t){alert("Login Failed. Is your PantryID correct?")}}))},refresh(){return i(this,void 0,void 0,(function*(){yield this.fetchPantry(this.id)}))},fetchPantry(t){return i(this,void 0,void 0,(function*(){const{data:e}=yield n({method:"GET",url:`${a}/pantry/${t}`});this.id=t,this.pantry=Object.assign(Object.assign({},e),{id:this.id})}))},loadFromSession(){return i(this,void 0,void 0,(function*(){null!==sessionStorage.getItem("pantry-id")&&(yield this.login(sessionStorage.getItem("pantry-id")))}))},createSession(){sessionStorage.setItem("pantry-id",this.id)},urlPantryID:()=>window.location.search.match(/(\?|&)pantryid\=([^&]*)/),loadFromURL(){return i(this,void 0,void 0,(function*(){if(null===this.urlPantryID())return;const t=decodeURIComponent(this.urlPantryID()[2]);yield this.login(t)}))},bannerCTAClicked(){window.location.href="https://tally.so/r/m6yPAn"}},mounted(){this.loadFromSession(),this.loadFromURL()}};t.exports=d},function(t,e,l){"use strict";var i=l(0),n=l(11),a=l(37),d=l(17);function s(t){var e=new a(t),l=n(a.prototype.request,e);return i.extend(l,a.prototype,e),i.extend(l,e),l}var c=s(l(8));c.Axios=a,c.create=function(t){return s(d(c.defaults,t))},c.Cancel=l(18),c.CancelToken=l(51),c.isCancel=l(16),c.all=function(t){return Promise.all(t)},c.spread=l(52),c.isAxiosError=l(53),t.exports=c,t.exports.default=c},function(t,e,l){"use strict";var i=l(0),n=l(12),a=l(38),d=l(39),s=l(17),c=l(49),o=c.validators;function b(t){this.defaults=t,this.interceptors={request:new a,response:new a}}b.prototype.request=function(t){"string"==typeof t?(t=arguments[1]||{}).url=arguments[0]:t=t||{},(t=s(this.defaults,t)).method?t.method=t.method.toLowerCase():this.defaults.method?t.method=this.defaults.method.toLowerCase():t.method="get";var e=t.transitional;void 0!==e&&c.assertOptions(e,{silentJSONParsing:o.transitional(o.boolean,"1.0.0"),forcedJSONParsing:o.transitional(o.boolean,"1.0.0"),clarifyTimeoutError:o.transitional(o.boolean,"1.0.0")},!1);var l=[],i=!0;this.interceptors.request.forEach((function(e){"function"==typeof e.runWhen&&!1===e.runWhen(t)||(i=i&&e.synchronous,l.unshift(e.fulfilled,e.rejected))}));var n,a=[];if(this.interceptors.response.forEach((function(t){a.push(t.fulfilled,t.rejected)})),!i){var b=[d,void 0];for(Array.prototype.unshift.apply(b,l),b=b.concat(a),n=Promise.resolve(t);b.length;)n=n.then(b.shift(),b.shift());return n}for(var r=t;l.length;){var m=l.shift(),Z=l.shift();try{r=m(r)}catch(t){Z(t);break}}try{n=d(r)}catch(t){return Promise.reject(t)}for(;a.length;)n=n.then(a.shift(),a.shift());return n},b.prototype.getUri=function(t){return t=s(this.defaults,t),n(t.url,t.params,t.paramsSerializer).replace(/^\?/,"")},i.forEach(["delete","get","head","options"],(function(t){b.prototype[t]=function(e,l){return this.request(s(l||{},{method:t,url:e,data:(l||{}).data}))}})),i.forEach(["post","put","patch"],(function(t){b.prototype[t]=function(e,l,i){return this.request(s(i||{},{method:t,url:e,data:l}))}})),t.exports=b},function(t,e,l){"use strict";var i=l(0);function n(){this.handlers=[]}n.prototype.use=function(t,e,l){return this.handlers.push({fulfilled:t,rejected:e,synchronous:!!l&&l.synchronous,runWhen:l?l.runWhen:null}),this.handlers.length-1},n.prototype.eject=function(t){this.handlers[t]&&(this.handlers[t]=null)},n.prototype.forEach=function(t){i.forEach(this.handlers,(function(e){null!==e&&t(e)}))},t.exports=n},function(t,e,l){"use strict";var i=l(0),n=l(40),a=l(16),d=l(8);function s(t){t.cancelToken&&t.cancelToken.throwIfRequested()}t.exports=function(t){return s(t),t.headers=t.headers||{},t.data=n.call(t,t.data,t.headers,t.transformRequest),t.headers=i.merge(t.headers.common||{},t.headers[t.method]||{},t.headers),i.forEach(["delete","get","head","post","put","patch","common"],(function(e){delete t.headers[e]})),(t.adapter||d.adapter)(t).then((function(e){return s(t),e.data=n.call(t,e.data,e.headers,t.transformResponse),e}),(function(e){return a(e)||(s(t),e&&e.response&&(e.response.data=n.call(t,e.response.data,e.response.headers,t.transformResponse))),Promise.reject(e)}))}},function(t,e,l){"use strict";var i=l(0),n=l(8);t.exports=function(t,e,l){var a=this||n;return i.forEach(l,(function(l){t=l.call(a,t,e)})),t}},function(t,e,l){"use strict";var i=l(0);t.exports=function(t,e){i.forEach(t,(function(l,i){i!==e&&i.toUpperCase()===e.toUpperCase()&&(t[e]=l,delete t[i])}))}},function(t,e,l){"use strict";var i=l(15);t.exports=function(t,e,l){var n=l.config.validateStatus;l.status&&n&&!n(l.status)?e(i("Request failed with status code "+l.status,l.config,null,l.request,l)):t(l)}},function(t,e,l){"use strict";var i=l(0);t.exports=i.isStandardBrowserEnv()?{write:function(t,e,l,n,a,d){var s=[];s.push(t+"="+encodeURIComponent(e)),i.isNumber(l)&&s.push("expires="+new Date(l).toGMTString()),i.isString(n)&&s.push("path="+n),i.isString(a)&&s.push("domain="+a),!0===d&&s.push("secure"),document.cookie=s.join("; ")},read:function(t){var e=document.cookie.match(new RegExp("(^|;\\s*)("+t+")=([^;]*)"));return e?decodeURIComponent(e[3]):null},remove:function(t){this.write(t,"",Date.now()-864e5)}}:{write:function(){},read:function(){return null},remove:function(){}}},function(t,e,l){"use strict";var i=l(45),n=l(46);t.exports=function(t,e){return t&&!i(e)?n(t,e):e}},function(t,e,l){"use strict";t.exports=function(t){return/^([a-z][a-z\d\+\-\.]*:)?\/\//i.test(t)}},function(t,e,l){"use strict";t.exports=function(t,e){return e?t.replace(/\/+$/,"")+"/"+e.replace(/^\/+/,""):t}},function(t,e,l){"use strict";var i=l(0),n=["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"];t.exports=function(t){var e,l,a,d={};return t?(i.forEach(t.split("\n"),(function(t){if(a=t.indexOf(":"),e=i.trim(t.substr(0,a)).toLowerCase(),l=i.trim(t.substr(a+1)),e){if(d[e]&&n.indexOf(e)>=0)return;d[e]="set-cookie"===e?(d[e]?d[e]:[]).concat([l]):d[e]?d[e]+", "+l:l}})),d):d}},function(t,e,l){"use strict";var i=l(0);t.exports=i.isStandardBrowserEnv()?function(){var t,e=/(msie|trident)/i.test(navigator.userAgent),l=document.createElement("a");function n(t){var i=t;return e&&(l.setAttribute("href",i),i=l.href),l.setAttribute("href",i),{href:l.href,protocol:l.protocol?l.protocol.replace(/:$/,""):"",host:l.host,search:l.search?l.search.replace(/^\?/,""):"",hash:l.hash?l.hash.replace(/^#/,""):"",hostname:l.hostname,port:l.port,pathname:"/"===l.pathname.charAt(0)?l.pathname:"/"+l.pathname}}return t=n(window.location.href),function(e){var l=i.isString(e)?n(e):e;return l.protocol===t.protocol&&l.host===t.host}}():function(){return!0}},function(t,e,l){"use strict";var i=l(50),n={};["object","boolean","number","function","string","symbol"].forEach((function(t,e){n[t]=function(l){return typeof l===t||"a"+(e<1?"n ":" ")+t}}));var a={},d=i.version.split(".");function s(t,e){for(var l=e?e.split("."):d,i=t.split("."),n=0;n<3;n++){if(l[n]>i[n])return!0;if(l[n]0;){var a=i[n],d=e[a];if(d){var s=t[a],c=void 0===s||d(s,a,t);if(!0!==c)throw new TypeError("option "+a+" must be "+c)}else if(!0!==l)throw Error("Unknown option "+a)}},validators:n}},function(t){t.exports=JSON.parse('{"name":"axios","version":"0.21.4","description":"Promise based HTTP client for the browser and node.js","main":"index.js","scripts":{"test":"grunt test","start":"node ./sandbox/server.js","build":"NODE_ENV=production grunt build","preversion":"npm test","version":"npm run build && grunt version && git add -A dist && git add CHANGELOG.md bower.json package.json","postversion":"git push && git push --tags","examples":"node ./examples/server.js","coveralls":"cat coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js","fix":"eslint --fix lib/**/*.js"},"repository":{"type":"git","url":"https://github.com/axios/axios.git"},"keywords":["xhr","http","ajax","promise","node"],"author":"Matt Zabriskie","license":"MIT","bugs":{"url":"https://github.com/axios/axios/issues"},"homepage":"https://axios-http.com","devDependencies":{"coveralls":"^3.0.0","es6-promise":"^4.2.4","grunt":"^1.3.0","grunt-banner":"^0.6.0","grunt-cli":"^1.2.0","grunt-contrib-clean":"^1.1.0","grunt-contrib-watch":"^1.0.0","grunt-eslint":"^23.0.0","grunt-karma":"^4.0.0","grunt-mocha-test":"^0.13.3","grunt-ts":"^6.0.0-beta.19","grunt-webpack":"^4.0.2","istanbul-instrumenter-loader":"^1.0.0","jasmine-core":"^2.4.1","karma":"^6.3.2","karma-chrome-launcher":"^3.1.0","karma-firefox-launcher":"^2.1.0","karma-jasmine":"^1.1.1","karma-jasmine-ajax":"^0.1.13","karma-safari-launcher":"^1.0.0","karma-sauce-launcher":"^4.3.6","karma-sinon":"^1.0.5","karma-sourcemap-loader":"^0.3.8","karma-webpack":"^4.0.2","load-grunt-tasks":"^3.5.2","minimist":"^1.2.0","mocha":"^8.2.1","sinon":"^4.5.0","terser-webpack-plugin":"^4.2.3","typescript":"^4.0.5","url-search-params":"^0.10.0","webpack":"^4.44.2","webpack-dev-server":"^3.11.0"},"browser":{"./lib/adapters/http.js":"./lib/adapters/xhr.js"},"jsdelivr":"dist/axios.min.js","unpkg":"dist/axios.min.js","typings":"./index.d.ts","dependencies":{"follow-redirects":"^1.14.0"},"bundlesize":[{"path":"./dist/axios.min.js","threshold":"5kB"}]}')},function(t,e,l){"use strict";var i=l(18);function n(t){if("function"!=typeof t)throw new TypeError("executor must be a function.");var e;this.promise=new Promise((function(t){e=t}));var l=this;t((function(t){l.reason||(l.reason=new i(t),e(l.reason))}))}n.prototype.throwIfRequested=function(){if(this.reason)throw this.reason},n.source=function(){var t;return{token:new n((function(e){t=e})),cancel:t}},t.exports=n},function(t,e,l){"use strict";t.exports=function(t){return function(e){return t.apply(null,e)}}},function(t,e,l){"use strict";t.exports=function(t){return"object"==typeof t&&!0===t.isAxiosError}},function(t,e){t.exports='
\n
\n \n
\n
\n
\n \n \n
\n
\n
\n'},function(t,e,l){"use strict";var i=this&&this.__awaiter||function(t,e,l,i){return new(l||(l=Promise))((function(n,a){function d(t){try{c(i.next(t))}catch(t){a(t)}}function s(t){try{c(i.throw(t))}catch(t){a(t)}}function c(t){var e;t.done?n(t.value):(e=t.value,e instanceof l?e:new l((function(t){t(e)}))).then(d,s)}c((i=i.apply(t,e||[])).next())}))};const n=l(4),a=l(22).default,d=l(3),s=l(60),c=d.apiPath,o={name:"explorer",props:["pantry"],template:s,components:{changelog:l(61),explorerEmpty:l(63),explorerOnboarding:l(65),basket:l(67),modal:l(20),"json-edit":a},data:()=>({basket:null,schemaModalVisible:!1,schemaExample:{_schema:{toppings:{type:"array"},size:{type:"string"},price:{type:"number"}},toppings:["pepperoni","mushrooms","hot peppers"],size:"large",price:19.99}}),computed:{errorsExist(){return this.pantry.errors&&this.pantry.errors.length>0},isPantryEmpty(){return this.pantry.baskets&&0===this.pantry.baskets.length},activeBasket(){return this.basket?this.basket.name:""}},methods:{daysToDeletion(t){const e=new Date;return e.setSeconds(t),this.getDiffOfDates(new Date,e)},getDiffOfDates(t,e){const l=Date.UTC(t.getFullYear(),t.getMonth(),t.getDate()),i=Date.UTC(e.getFullYear(),e.getMonth(),e.getDate());return Math.floor((i-l)/864e5)},refresh(){this.$emit("refresh"),this.basket=null},createBasket(){return i(this,void 0,void 0,(function*(){const t=Math.floor(100*Math.random()+1),e=prompt("What is the name of the new basket?","newBasket"+t);e&&(yield n({method:"POST",data:{key:"value"},url:`${c}/pantry/${this.pantry.id}/basket/${e}`}),this.refresh())}))},renamePantry(){return i(this,void 0,void 0,(function*(){const t=this.pantry.name,e=prompt("Pantry Name:",t);e&&(yield n({method:"PUT",data:{name:e},url:`${c}/pantry/${this.pantry.id}`}),this.refresh())}))},changePantryDescription(){return i(this,void 0,void 0,(function*(){const t=this.pantry.description,e=prompt("Pantry Description:",t);e&&(yield n({method:"PUT",data:{description:e},url:`${c}/pantry/${this.pantry.id}`}),this.refresh())}))},viewBasket(t){return i(this,void 0,void 0,(function*(){const{data:e}=yield n({method:"GET",url:`${c}/pantry/${this.pantry.id}/basket/${t}`});this.basket={data:e,name:t}}))},loadBasket(){if(this.pantry.baskets&&this.pantry.baskets.length>0){const{name:t}=this.pantry.baskets[0];this.viewBasket(t)}},toggleSchemaModal(){this.schemaModalVisible=!this.schemaModalVisible}}};t.exports=o},function(t,e,l){var i=l(57);"string"==typeof i&&(i=[[t.i,i,""]]);var n={hmr:!0,transform:void 0,insertInto:void 0};l(7)(i,n);i.locals&&(t.exports=i.locals)},function(t,e,l){var i=l(10);(t.exports=l(6)(!1)).push([t.i,'/* reset styling (prevent conflicts with bootstrap, materialize.css, etc.) */\r\n\r\ndiv.jsoneditor .jsoneditor-search input {\r\n height: auto;\r\n border: inherit;\r\n}\r\n\r\ndiv.jsoneditor .jsoneditor-search input:focus {\r\n border: none !important;\r\n box-shadow: none !important;\r\n}\r\n\r\ndiv.jsoneditor table {\r\n border-collapse: collapse;\r\n width: auto;\r\n}\r\n\r\ndiv.jsoneditor td,\r\ndiv.jsoneditor th {\r\n padding: 0;\r\n display: table-cell;\r\n text-align: left;\r\n vertical-align: inherit;\r\n border-radius: inherit;\r\n}\r\n\r\n\r\ndiv.jsoneditor-field,\r\ndiv.jsoneditor-value,\r\ndiv.jsoneditor-readonly {\r\n border: 1px solid transparent;\r\n min-height: 16px;\r\n min-width: 32px;\r\n padding: 2px;\r\n margin: 1px;\r\n word-wrap: break-word;\r\n float: left;\r\n}\r\n\r\n/* adjust margin of p elements inside editable divs, needed for Opera, IE */\r\n\r\ndiv.jsoneditor-field p,\r\ndiv.jsoneditor-value p {\r\n margin: 0;\r\n}\r\n\r\ndiv.jsoneditor-value {\r\n word-break: break-word;\r\n}\r\n\r\ndiv.jsoneditor-readonly {\r\n min-width: 16px;\r\n color: gray;\r\n}\r\n\r\ndiv.jsoneditor-empty {\r\n border-color: lightgray;\r\n border-style: dashed;\r\n border-radius: 2px;\r\n}\r\n\r\ndiv.jsoneditor-field.jsoneditor-empty::after,\r\ndiv.jsoneditor-value.jsoneditor-empty::after {\r\n pointer-events: none;\r\n color: lightgray;\r\n font-size: 8pt;\r\n}\r\n\r\ndiv.jsoneditor-field.jsoneditor-empty::after {\r\n content: "field";\r\n}\r\n\r\ndiv.jsoneditor-value.jsoneditor-empty::after {\r\n content: "value";\r\n}\r\n\r\ndiv.jsoneditor-value.jsoneditor-url,\r\na.jsoneditor-value.jsoneditor-url {\r\n color: green;\r\n text-decoration: underline;\r\n}\r\n\r\na.jsoneditor-value.jsoneditor-url {\r\n display: inline-block;\r\n padding: 2px;\r\n margin: 2px;\r\n}\r\n\r\na.jsoneditor-value.jsoneditor-url:hover,\r\na.jsoneditor-value.jsoneditor-url:focus {\r\n color: #ee422e;\r\n}\r\n\r\ndiv.jsoneditor td.jsoneditor-separator {\r\n padding: 3px 0;\r\n vertical-align: top;\r\n color: gray;\r\n}\r\n\r\ndiv.jsoneditor-field[contenteditable=true]:focus,\r\ndiv.jsoneditor-field[contenteditable=true]:hover,\r\ndiv.jsoneditor-value[contenteditable=true]:focus,\r\ndiv.jsoneditor-value[contenteditable=true]:hover,\r\ndiv.jsoneditor-field.jsoneditor-highlight,\r\ndiv.jsoneditor-value.jsoneditor-highlight {\r\n background-color: #FFFFAB;\r\n border: 1px solid yellow;\r\n border-radius: 2px;\r\n}\r\n\r\ndiv.jsoneditor-field.jsoneditor-highlight-active,\r\ndiv.jsoneditor-field.jsoneditor-highlight-active:focus,\r\ndiv.jsoneditor-field.jsoneditor-highlight-active:hover,\r\ndiv.jsoneditor-value.jsoneditor-highlight-active,\r\ndiv.jsoneditor-value.jsoneditor-highlight-active:focus,\r\ndiv.jsoneditor-value.jsoneditor-highlight-active:hover {\r\n background-color: #ffee00;\r\n border: 1px solid #ffc700;\r\n border-radius: 2px;\r\n}\r\n\r\ndiv.jsoneditor-value.jsoneditor-string {\r\n color: #008000;\r\n}\r\n\r\ndiv.jsoneditor-value.jsoneditor-object,\r\ndiv.jsoneditor-value.jsoneditor-array {\r\n min-width: 16px;\r\n color: #808080;\r\n}\r\n\r\ndiv.jsoneditor-value.jsoneditor-number {\r\n color: #ee422e;\r\n}\r\n\r\ndiv.jsoneditor-value.jsoneditor-boolean {\r\n color: #ff8c00;\r\n}\r\n\r\ndiv.jsoneditor-value.jsoneditor-null {\r\n color: #004ED0;\r\n}\r\n\r\ndiv.jsoneditor-value.jsoneditor-invalid {\r\n color: #000000;\r\n}\r\n\r\ndiv.jsoneditor-tree button {\r\n width: 24px;\r\n height: 24px;\r\n padding: 0;\r\n margin: 0;\r\n border: none;\r\n cursor: pointer;\r\n background: transparent url('+i(l(1))+");\r\n}\r\n\r\ndiv.jsoneditor-mode-view tr.jsoneditor-expandable td.jsoneditor-tree,\r\ndiv.jsoneditor-mode-form tr.jsoneditor-expandable td.jsoneditor-tree {\r\n cursor: pointer;\r\n}\r\n\r\ndiv.jsoneditor-tree button.jsoneditor-collapsed {\r\n background-position: 0 -48px;\r\n}\r\n\r\ndiv.jsoneditor-tree button.jsoneditor-expanded {\r\n background-position: 0 -72px;\r\n}\r\n\r\ndiv.jsoneditor-tree button.jsoneditor-contextmenu {\r\n background-position: -48px -72px;\r\n}\r\n\r\ndiv.jsoneditor-tree button.jsoneditor-contextmenu:hover,\r\ndiv.jsoneditor-tree button.jsoneditor-contextmenu:focus,\r\ndiv.jsoneditor-tree button.jsoneditor-contextmenu.jsoneditor-selected,\r\ntr.jsoneditor-selected.jsoneditor-first button.jsoneditor-contextmenu {\r\n background-position: -48px -48px;\r\n}\r\n\r\ndiv.jsoneditor-tree *:focus {\r\n outline: none;\r\n}\r\n\r\ndiv.jsoneditor-tree button:focus {\r\n /* TODO: nice outline for buttons with focus\r\n outline: #97B0F8 solid 2px;\r\n box-shadow: 0 0 8px #97B0F8;\r\n */\r\n background-color: #f5f5f5;\r\n outline: #e5e5e5 solid 1px;\r\n}\r\n\r\ndiv.jsoneditor-tree button.jsoneditor-invisible {\r\n visibility: hidden;\r\n background: none;\r\n}\r\n\r\ndiv.jsoneditor {\r\n color: #1A1A1A;\r\n border: 1px solid #3883fa;\r\n -moz-box-sizing: border-box;\r\n -webkit-box-sizing: border-box;\r\n box-sizing: border-box;\r\n width: 100%;\r\n height: 100%;\r\n overflow: hidden;\r\n position: relative;\r\n padding: 0;\r\n line-height: 100%;\r\n}\r\n\r\ndiv.jsoneditor-tree table.jsoneditor-tree {\r\n border-collapse: collapse;\r\n border-spacing: 0;\r\n width: 100%;\r\n margin: 0;\r\n}\r\n\r\ndiv.jsoneditor-outer {\r\n position: static;\r\n width: 100%;\r\n height: 100%;\r\n margin: -35px 0 0 0;\r\n padding: 35px 0 0 0;\r\n -moz-box-sizing: border-box;\r\n -webkit-box-sizing: border-box;\r\n box-sizing: border-box;\r\n}\r\n\r\ntextarea.jsoneditor-text,\r\n.ace-jsoneditor {\r\n min-height: 150px;\r\n}\r\n\r\ndiv.jsoneditor-tree {\r\n width: 100%;\r\n height: 100%;\r\n position: relative;\r\n overflow: auto;\r\n}\r\n\r\ntextarea.jsoneditor-text {\r\n width: 100%;\r\n height: 100%;\r\n margin: 0;\r\n -moz-box-sizing: border-box;\r\n -webkit-box-sizing: border-box;\r\n box-sizing: border-box;\r\n outline-width: 0;\r\n border: none;\r\n background-color: white;\r\n resize: none;\r\n}\r\n\r\ntr.jsoneditor-highlight,\r\ntr.jsoneditor-selected {\r\n background-color: #e6e6e6;\r\n}\r\n\r\ntr.jsoneditor-selected button.jsoneditor-dragarea,\r\ntr.jsoneditor-selected button.jsoneditor-contextmenu {\r\n visibility: hidden;\r\n}\r\n\r\ntr.jsoneditor-selected.jsoneditor-first button.jsoneditor-dragarea,\r\ntr.jsoneditor-selected.jsoneditor-first button.jsoneditor-contextmenu {\r\n visibility: visible;\r\n}\r\n\r\ndiv.jsoneditor-tree button.jsoneditor-dragarea {\r\n background: url("+i(l(1))+") -72px -72px;\r\n cursor: move;\r\n}\r\n\r\ndiv.jsoneditor-tree button.jsoneditor-dragarea:hover,\r\ndiv.jsoneditor-tree button.jsoneditor-dragarea:focus,\r\ntr.jsoneditor-selected.jsoneditor-first button.jsoneditor-dragarea {\r\n background-position: -72px -48px;\r\n}\r\n\r\ndiv.jsoneditor tr,\r\ndiv.jsoneditor th,\r\ndiv.jsoneditor td {\r\n padding: 0;\r\n margin: 0;\r\n}\r\n\r\ndiv.jsoneditor td {\r\n vertical-align: top;\r\n}\r\n\r\ndiv.jsoneditor td.jsoneditor-tree {\r\n vertical-align: top;\r\n}\r\n\r\ndiv.jsoneditor-field,\r\ndiv.jsoneditor-value,\r\ndiv.jsoneditor td,\r\ndiv.jsoneditor th,\r\ndiv.jsoneditor textarea,\r\n.jsoneditor-schema-error {\r\n font-family: droid sans mono, consolas, monospace, courier new, courier, sans-serif;\r\n font-size: 10pt;\r\n color: #1A1A1A;\r\n}\r\n\r\n/* popover */\r\n\r\n.jsoneditor-schema-error {\r\n cursor: default;\r\n display: inline-block;\r\n /*font-family: arial, sans-serif;*/\r\n height: 24px;\r\n line-height: 24px;\r\n position: relative;\r\n text-align: center;\r\n width: 24px;\r\n}\r\n\r\ndiv.jsoneditor-tree .jsoneditor-schema-error {\r\n width: 24px;\r\n height: 24px;\r\n padding: 0;\r\n margin: 0 4px 0 0;\r\n background: url("+i(l(1))+") -168px -48px;\r\n}\r\n\r\n.jsoneditor-schema-error .jsoneditor-popover {\r\n background-color: #4c4c4c;\r\n border-radius: 3px;\r\n box-shadow: 0 0 5px rgba(0,0,0,0.4);\r\n color: #fff;\r\n display: none;\r\n padding: 7px 10px;\r\n position: absolute;\r\n width: 200px;\r\n z-index: 4;\r\n}\r\n\r\n.jsoneditor-schema-error .jsoneditor-popover.jsoneditor-above {\r\n bottom: 32px;\r\n left: -98px;\r\n}\r\n\r\n.jsoneditor-schema-error .jsoneditor-popover.jsoneditor-below {\r\n top: 32px;\r\n left: -98px;\r\n}\r\n\r\n.jsoneditor-schema-error .jsoneditor-popover.jsoneditor-left {\r\n top: -7px;\r\n right: 32px;\r\n}\r\n\r\n.jsoneditor-schema-error .jsoneditor-popover.jsoneditor-right {\r\n top: -7px;\r\n left: 32px;\r\n}\r\n\r\n.jsoneditor-schema-error .jsoneditor-popover:before {\r\n border-right: 7px solid transparent;\r\n border-left: 7px solid transparent;\r\n content: '';\r\n display: block;\r\n left: 50%;\r\n margin-left: -7px;\r\n position: absolute;\r\n}\r\n\r\n.jsoneditor-schema-error .jsoneditor-popover.jsoneditor-above:before {\r\n border-top: 7px solid #4c4c4c;\r\n bottom: -7px;\r\n}\r\n\r\n.jsoneditor-schema-error .jsoneditor-popover.jsoneditor-below:before {\r\n border-bottom: 7px solid #4c4c4c;\r\n top: -7px;\r\n}\r\n\r\n.jsoneditor-schema-error .jsoneditor-popover.jsoneditor-left:before {\r\n border-left: 7px solid #4c4c4c;\r\n border-top: 7px solid transparent;\r\n border-bottom: 7px solid transparent;\r\n content: '';\r\n top: 19px;\r\n right: -14px;\r\n left: inherit;\r\n margin-left: inherit;\r\n margin-top: -7px;\r\n position: absolute;\r\n}\r\n\r\n.jsoneditor-schema-error .jsoneditor-popover.jsoneditor-right:before {\r\n border-right: 7px solid #4c4c4c;\r\n border-top: 7px solid transparent;\r\n border-bottom: 7px solid transparent;\r\n content: '';\r\n top: 19px;\r\n left: -14px;\r\n margin-left: inherit;\r\n margin-top: -7px;\r\n position: absolute;\r\n}\r\n\r\n.jsoneditor-schema-error:hover .jsoneditor-popover,\r\n.jsoneditor-schema-error:focus .jsoneditor-popover {\r\n display: block;\r\n -webkit-animation: fade-in .3s linear 1, move-up .3s linear 1;\r\n -moz-animation: fade-in .3s linear 1, move-up .3s linear 1;\r\n -ms-animation: fade-in .3s linear 1, move-up .3s linear 1;\r\n}\r\n\r\n@-webkit-keyframes fade-in {\r\n from {\r\n opacity: 0;\r\n }\r\n\r\n to {\r\n opacity: 1;\r\n }\r\n}\r\n\r\n@-moz-keyframes fade-in {\r\n from {\r\n opacity: 0;\r\n }\r\n\r\n to {\r\n opacity: 1;\r\n }\r\n}\r\n\r\n@-ms-keyframes fade-in {\r\n from {\r\n opacity: 0;\r\n }\r\n\r\n to {\r\n opacity: 1;\r\n }\r\n}\r\n\r\n/*@-webkit-keyframes move-up {*/\r\n\r\n/*from { bottom: 24px; }*/\r\n\r\n/*to { bottom: 32px; }*/\r\n\r\n/*}*/\r\n\r\n/*@-moz-keyframes move-up {*/\r\n\r\n/*from { bottom: 24px; }*/\r\n\r\n/*to { bottom: 32px; }*/\r\n\r\n/*}*/\r\n\r\n/*@-ms-keyframes move-up {*/\r\n\r\n/*from { bottom: 24px; }*/\r\n\r\n/*to { bottom: 32px; }*/\r\n\r\n/*}*/\r\n\r\n/* JSON schema errors displayed at the bottom of the editor in mode text and code */\r\n\r\n.jsoneditor .jsoneditor-text-errors {\r\n width: 100%;\r\n border-collapse: collapse;\r\n background-color: #ffef8b;\r\n border-top: 1px solid #ffd700;\r\n}\r\n\r\n.jsoneditor .jsoneditor-text-errors td {\r\n padding: 3px 6px;\r\n vertical-align: middle;\r\n}\r\n\r\n.jsoneditor-text-errors .jsoneditor-schema-error {\r\n border: none;\r\n width: 24px;\r\n height: 24px;\r\n padding: 0;\r\n margin: 0 4px 0 0;\r\n background: url("+i(l(1))+") -168px -48px;\r\n}\r\n/* ContextMenu - main menu */\r\n\r\ndiv.jsoneditor-contextmenu-root {\r\n position: relative;\r\n width: 0;\r\n height: 0;\r\n}\r\n\r\ndiv.jsoneditor-contextmenu {\r\n position: absolute;\r\n box-sizing: content-box;\r\n z-index: 99999;\r\n}\r\n\r\ndiv.jsoneditor-contextmenu ul,\r\ndiv.jsoneditor-contextmenu li {\r\n box-sizing: content-box;\r\n}\r\n\r\ndiv.jsoneditor-contextmenu ul {\r\n position: relative;\r\n left: 0;\r\n top: 0;\r\n width: 124px;\r\n background: white;\r\n border: 1px solid #d3d3d3;\r\n box-shadow: 2px 2px 12px rgba(128, 128, 128, 0.3);\r\n list-style: none;\r\n margin: 0;\r\n padding: 0;\r\n}\r\n\r\ndiv.jsoneditor-contextmenu ul li button {\r\n padding: 0;\r\n margin: 0;\r\n width: 124px;\r\n height: 24px;\r\n border: none;\r\n cursor: pointer;\r\n color: #4d4d4d;\r\n background: transparent;\r\n font-size: 10pt;\r\n font-family: arial, sans-serif;\r\n box-sizing: border-box;\r\n line-height: 26px;\r\n text-align: left;\r\n}\r\n\r\n/* Fix button padding in firefox */\r\n\r\ndiv.jsoneditor-contextmenu ul li button::-moz-focus-inner {\r\n padding: 0;\r\n border: 0;\r\n}\r\n\r\ndiv.jsoneditor-contextmenu ul li button:hover,\r\ndiv.jsoneditor-contextmenu ul li button:focus {\r\n color: #1a1a1a;\r\n background-color: #f5f5f5;\r\n outline: none;\r\n}\r\n\r\ndiv.jsoneditor-contextmenu ul li button.jsoneditor-default {\r\n width: 92px;\r\n}\r\n\r\ndiv.jsoneditor-contextmenu ul li button.jsoneditor-expand {\r\n float: right;\r\n width: 32px;\r\n height: 24px;\r\n border-left: 1px solid #e5e5e5;\r\n}\r\n\r\ndiv.jsoneditor-contextmenu div.jsoneditor-icon {\r\n float: left;\r\n width: 24px;\r\n height: 24px;\r\n border: none;\r\n padding: 0;\r\n margin: 0;\r\n background-image: url("+i(l(1))+");\r\n}\r\n\r\ndiv.jsoneditor-contextmenu ul li button div.jsoneditor-expand {\r\n float: right;\r\n width: 24px;\r\n height: 24px;\r\n padding: 0;\r\n margin: 0 4px 0 0;\r\n background: url("+i(l(1))+") 0 -72px;\r\n opacity: 0.4;\r\n}\r\n\r\ndiv.jsoneditor-contextmenu ul li button:hover div.jsoneditor-expand,\r\ndiv.jsoneditor-contextmenu ul li button:focus div.jsoneditor-expand,\r\ndiv.jsoneditor-contextmenu ul li.jsoneditor-selected div.jsoneditor-expand,\r\ndiv.jsoneditor-contextmenu ul li button.jsoneditor-expand:hover div.jsoneditor-expand,\r\ndiv.jsoneditor-contextmenu ul li button.jsoneditor-expand:focus div.jsoneditor-expand {\r\n opacity: 1;\r\n}\r\n\r\ndiv.jsoneditor-contextmenu div.jsoneditor-separator {\r\n height: 0;\r\n border-top: 1px solid #e5e5e5;\r\n padding-top: 5px;\r\n margin-top: 5px;\r\n}\r\n\r\ndiv.jsoneditor-contextmenu button.jsoneditor-remove > div.jsoneditor-icon {\r\n background-position: -24px -24px;\r\n}\r\n\r\ndiv.jsoneditor-contextmenu button.jsoneditor-remove:hover > div.jsoneditor-icon,\r\ndiv.jsoneditor-contextmenu button.jsoneditor-remove:focus > div.jsoneditor-icon {\r\n background-position: -24px 0;\r\n}\r\n\r\ndiv.jsoneditor-contextmenu button.jsoneditor-append > div.jsoneditor-icon {\r\n background-position: 0 -24px;\r\n}\r\n\r\ndiv.jsoneditor-contextmenu button.jsoneditor-append:hover > div.jsoneditor-icon,\r\ndiv.jsoneditor-contextmenu button.jsoneditor-append:focus > div.jsoneditor-icon {\r\n background-position: 0 0;\r\n}\r\n\r\ndiv.jsoneditor-contextmenu button.jsoneditor-insert > div.jsoneditor-icon {\r\n background-position: 0 -24px;\r\n}\r\n\r\ndiv.jsoneditor-contextmenu button.jsoneditor-insert:hover > div.jsoneditor-icon,\r\ndiv.jsoneditor-contextmenu button.jsoneditor-insert:focus > div.jsoneditor-icon {\r\n background-position: 0 0;\r\n}\r\n\r\ndiv.jsoneditor-contextmenu button.jsoneditor-duplicate > div.jsoneditor-icon {\r\n background-position: -48px -24px;\r\n}\r\n\r\ndiv.jsoneditor-contextmenu button.jsoneditor-duplicate:hover > div.jsoneditor-icon,\r\ndiv.jsoneditor-contextmenu button.jsoneditor-duplicate:focus > div.jsoneditor-icon {\r\n background-position: -48px 0;\r\n}\r\n\r\ndiv.jsoneditor-contextmenu button.jsoneditor-sort-asc > div.jsoneditor-icon {\r\n background-position: -168px -24px;\r\n}\r\n\r\ndiv.jsoneditor-contextmenu button.jsoneditor-sort-asc:hover > div.jsoneditor-icon,\r\ndiv.jsoneditor-contextmenu button.jsoneditor-sort-asc:focus > div.jsoneditor-icon {\r\n background-position: -168px 0;\r\n}\r\n\r\ndiv.jsoneditor-contextmenu button.jsoneditor-sort-desc > div.jsoneditor-icon {\r\n background-position: -192px -24px;\r\n}\r\n\r\ndiv.jsoneditor-contextmenu button.jsoneditor-sort-desc:hover > div.jsoneditor-icon,\r\ndiv.jsoneditor-contextmenu button.jsoneditor-sort-desc:focus > div.jsoneditor-icon {\r\n background-position: -192px 0;\r\n}\r\n\r\n/* ContextMenu - sub menu */\r\n\r\ndiv.jsoneditor-contextmenu ul li button.jsoneditor-selected,\r\ndiv.jsoneditor-contextmenu ul li button.jsoneditor-selected:hover,\r\ndiv.jsoneditor-contextmenu ul li button.jsoneditor-selected:focus {\r\n color: white;\r\n background-color: #ee422e;\r\n}\r\n\r\ndiv.jsoneditor-contextmenu ul li {\r\n overflow: hidden;\r\n}\r\n\r\ndiv.jsoneditor-contextmenu ul li ul {\r\n display: none;\r\n position: relative;\r\n left: -10px;\r\n top: 0;\r\n border: none;\r\n box-shadow: inset 0 0 10px rgba(128, 128, 128, 0.5);\r\n padding: 0 10px;\r\n /* TODO: transition is not supported on IE8-9 */\r\n -webkit-transition: all 0.3s ease-out;\r\n -moz-transition: all 0.3s ease-out;\r\n -o-transition: all 0.3s ease-out;\r\n transition: all 0.3s ease-out;\r\n}\r\n\r\n\r\n\r\ndiv.jsoneditor-contextmenu ul li ul li button {\r\n padding-left: 24px;\r\n animation: all ease-in-out 1s;\r\n}\r\n\r\ndiv.jsoneditor-contextmenu ul li ul li button:hover,\r\ndiv.jsoneditor-contextmenu ul li ul li button:focus {\r\n background-color: #f5f5f5;\r\n}\r\n\r\ndiv.jsoneditor-contextmenu button.jsoneditor-type-string > div.jsoneditor-icon {\r\n background-position: -144px -24px;\r\n}\r\n\r\ndiv.jsoneditor-contextmenu button.jsoneditor-type-string:hover > div.jsoneditor-icon,\r\ndiv.jsoneditor-contextmenu button.jsoneditor-type-string:focus > div.jsoneditor-icon,\r\ndiv.jsoneditor-contextmenu button.jsoneditor-type-string.jsoneditor-selected > div.jsoneditor-icon {\r\n background-position: -144px 0;\r\n}\r\n\r\ndiv.jsoneditor-contextmenu button.jsoneditor-type-auto > div.jsoneditor-icon {\r\n background-position: -120px -24px;\r\n}\r\n\r\ndiv.jsoneditor-contextmenu button.jsoneditor-type-auto:hover > div.jsoneditor-icon,\r\ndiv.jsoneditor-contextmenu button.jsoneditor-type-auto:focus > div.jsoneditor-icon,\r\ndiv.jsoneditor-contextmenu button.jsoneditor-type-auto.jsoneditor-selected > div.jsoneditor-icon {\r\n background-position: -120px 0;\r\n}\r\n\r\ndiv.jsoneditor-contextmenu button.jsoneditor-type-object > div.jsoneditor-icon {\r\n background-position: -72px -24px;\r\n}\r\n\r\ndiv.jsoneditor-contextmenu button.jsoneditor-type-object:hover > div.jsoneditor-icon,\r\ndiv.jsoneditor-contextmenu button.jsoneditor-type-object:focus > div.jsoneditor-icon,\r\ndiv.jsoneditor-contextmenu button.jsoneditor-type-object.jsoneditor-selected > div.jsoneditor-icon {\r\n background-position: -72px 0;\r\n}\r\n\r\ndiv.jsoneditor-contextmenu button.jsoneditor-type-array > div.jsoneditor-icon {\r\n background-position: -96px -24px;\r\n}\r\n\r\ndiv.jsoneditor-contextmenu button.jsoneditor-type-array:hover > div.jsoneditor-icon,\r\ndiv.jsoneditor-contextmenu button.jsoneditor-type-array:focus > div.jsoneditor-icon,\r\ndiv.jsoneditor-contextmenu button.jsoneditor-type-array.jsoneditor-selected > div.jsoneditor-icon {\r\n background-position: -96px 0;\r\n}\r\n\r\ndiv.jsoneditor-contextmenu button.jsoneditor-type-modes > div.jsoneditor-icon {\r\n background-image: none;\r\n width: 6px;\r\n}\r\ndiv.jsoneditor-menu {\r\n width: 100%;\r\n height: 35px;\r\n padding: 2px;\r\n margin: 0;\r\n -moz-box-sizing: border-box;\r\n -webkit-box-sizing: border-box;\r\n box-sizing: border-box;\r\n color: white;\r\n background-color: #3883fa;\r\n border-bottom: 1px solid #3883fa;\r\n}\r\n\r\ndiv.jsoneditor-menu > button,\r\ndiv.jsoneditor-menu > div.jsoneditor-modes > button {\r\n width: 26px;\r\n height: 26px;\r\n margin: 2px;\r\n padding: 0;\r\n border-radius: 2px;\r\n border: 1px solid transparent;\r\n background: transparent url("+i(l(1))+");\r\n color: white;\r\n opacity: 0.8;\r\n font-family: arial, sans-serif;\r\n font-size: 10pt;\r\n float: left;\r\n}\r\n\r\ndiv.jsoneditor-menu > button:hover,\r\ndiv.jsoneditor-menu > div.jsoneditor-modes > button:hover {\r\n background-color: rgba(255,255,255,0.2);\r\n border: 1px solid rgba(255,255,255,0.4);\r\n}\r\n\r\ndiv.jsoneditor-menu > button:focus,\r\ndiv.jsoneditor-menu > button:active,\r\ndiv.jsoneditor-menu > div.jsoneditor-modes > button:focus,\r\ndiv.jsoneditor-menu > div.jsoneditor-modes > button:active {\r\n background-color: rgba(255,255,255,0.3);\r\n}\r\n\r\ndiv.jsoneditor-menu > button:disabled,\r\ndiv.jsoneditor-menu > div.jsoneditor-modes > button:disabled {\r\n opacity: 0.5;\r\n}\r\n\r\ndiv.jsoneditor-menu > button.jsoneditor-collapse-all {\r\n background-position: 0 -96px;\r\n}\r\n\r\ndiv.jsoneditor-menu > button.jsoneditor-expand-all {\r\n background-position: 0 -120px;\r\n}\r\n\r\ndiv.jsoneditor-menu > button.jsoneditor-undo {\r\n background-position: -24px -96px;\r\n}\r\n\r\ndiv.jsoneditor-menu > button.jsoneditor-undo:disabled {\r\n background-position: -24px -120px;\r\n}\r\n\r\ndiv.jsoneditor-menu > button.jsoneditor-redo {\r\n background-position: -48px -96px;\r\n}\r\n\r\ndiv.jsoneditor-menu > button.jsoneditor-redo:disabled {\r\n background-position: -48px -120px;\r\n}\r\n\r\ndiv.jsoneditor-menu > button.jsoneditor-compact {\r\n background-position: -72px -96px;\r\n}\r\n\r\ndiv.jsoneditor-menu > button.jsoneditor-format {\r\n background-position: -72px -120px;\r\n}\r\n\r\ndiv.jsoneditor-menu > div.jsoneditor-modes {\r\n display: inline-block;\r\n float: left;\r\n}\r\n\r\ndiv.jsoneditor-menu > div.jsoneditor-modes > button {\r\n background-image: none;\r\n width: auto;\r\n padding-left: 6px;\r\n padding-right: 6px;\r\n}\r\n\r\ndiv.jsoneditor-menu > button.jsoneditor-separator,\r\ndiv.jsoneditor-menu > div.jsoneditor-modes > button.jsoneditor-separator {\r\n margin-left: 10px;\r\n}\r\n\r\ndiv.jsoneditor-menu a {\r\n font-family: arial, sans-serif;\r\n font-size: 10pt;\r\n color: white;\r\n opacity: 0.8;\r\n vertical-align: middle;\r\n}\r\n\r\ndiv.jsoneditor-menu a:hover {\r\n opacity: 1;\r\n}\r\n\r\ndiv.jsoneditor-menu a.jsoneditor-poweredBy {\r\n font-size: 8pt;\r\n position: absolute;\r\n right: 0;\r\n top: 0;\r\n padding: 10px;\r\n}\r\ntable.jsoneditor-search input,\r\ntable.jsoneditor-search div.jsoneditor-results {\r\n font-family: arial, sans-serif;\r\n font-size: 10pt;\r\n color: #1A1A1A;\r\n background: transparent;\r\n /* For Firefox */\r\n}\r\n\r\ntable.jsoneditor-search div.jsoneditor-results {\r\n color: white;\r\n padding-right: 5px;\r\n line-height: 24px;\r\n}\r\n\r\ntable.jsoneditor-search {\r\n position: absolute;\r\n right: 4px;\r\n top: 4px;\r\n border-collapse: collapse;\r\n border-spacing: 0;\r\n}\r\n\r\ntable.jsoneditor-search div.jsoneditor-frame {\r\n border: 1px solid transparent;\r\n background-color: white;\r\n padding: 0 2px;\r\n margin: 0;\r\n}\r\n\r\ntable.jsoneditor-search div.jsoneditor-frame table {\r\n border-collapse: collapse;\r\n}\r\n\r\ntable.jsoneditor-search input {\r\n width: 120px;\r\n border: none;\r\n outline: none;\r\n margin: 1px;\r\n line-height: 20px;\r\n}\r\n\r\ntable.jsoneditor-search button {\r\n width: 16px;\r\n height: 24px;\r\n padding: 0;\r\n margin: 0;\r\n border: none;\r\n background: url("+i(l(1))+");\r\n vertical-align: top;\r\n}\r\n\r\ntable.jsoneditor-search button:hover {\r\n background-color: transparent;\r\n}\r\n\r\ntable.jsoneditor-search button.jsoneditor-refresh {\r\n width: 18px;\r\n background-position: -99px -73px;\r\n}\r\n\r\ntable.jsoneditor-search button.jsoneditor-next {\r\n cursor: pointer;\r\n background-position: -124px -73px;\r\n}\r\n\r\ntable.jsoneditor-search button.jsoneditor-next:hover {\r\n background-position: -124px -49px;\r\n}\r\n\r\ntable.jsoneditor-search button.jsoneditor-previous {\r\n cursor: pointer;\r\n background-position: -148px -73px;\r\n margin-right: 2px;\r\n}\r\n\r\ntable.jsoneditor-search button.jsoneditor-previous:hover {\r\n background-position: -148px -49px;\r\n}",""])},function(t,e,l){"use strict";l(19)},function(t,e,l){(t.exports=l(6)(!1)).push([t.i,"\n.ace_line_group[data-v-551a97e0] {\n text-align: left;\n}\n.json-editor-container[data-v-551a97e0] {\n display: flex;\n width: 100%;\n}\n.json-editor-container .tree-mode[data-v-551a97e0] {\n width: 50%;\n}\n.json-editor-container .code-mode[data-v-551a97e0] {\n flex-grow: 1;\n}\n.jsoneditor-btns[data-v-551a97e0]{\n text-align: center;\n margin-top:10px;\n}\n.jsoneditor-vue .jsoneditor-outer[data-v-551a97e0]{\n min-height:150px;\n}\n.jsoneditor-vue div.jsoneditor-tree[data-v-551a97e0]{\n min-height: 350px;\n}\n.json-save-btn[data-v-551a97e0]{\n background-color: #20A0FF;\n border: none;\n color:#fff;\n padding:5px 10px;\n border-radius: 5px;\n cursor: pointer;\n}\n.json-save-btn[data-v-551a97e0]:focus{\n outline: none;\n}\n.json-save-btn[disabled][data-v-551a97e0]{\n background-color: #1D8CE0;\n cursor: not-allowed;\n}\ncode[data-v-551a97e0] {\n background-color: #f5f5f5;\n}\n",""])},function(t,e){t.exports='
\n
\n
\n
\n \n {{ pantry.name }}\n \n \n {{ pantry.percentFull}}% Full\n \n
\n
\n \n
\n
\n
\n
\n \n \n \n
\n \n
\n'},function(t,e,l){"use strict";const i={name:"changelog",template:l(62),data:()=>({items:[{description:"Add Metadata to Baskets"},{description:"Introduce Public Basket Endpoints"},{description:"Performance Improvements"},{description:"Added Nushell client"}]}),methods:{}};t.exports=i},function(t,e){t.exports='
\n\t

\n\t\tChangelog\n\t

\n\t\n
\n'},function(t,e,l){"use strict";const i=l(3).apiPath,n={name:"explorerEmpty",template:l(64),props:["pantryId"],data:()=>({apiPath:i})};t.exports=n},function(t,e){t.exports='
\n
\n
\n
\n

\n \n Welcome to Pantry\n \n \n Getting Started\n \n

\n\n

\n You can manage your data through our Web Dashboard or via the\n API. Every feature available in the dashboard is fully\n accessible through the API.\n

\n\n

\n Ready? Let’s create your first basket.\n

\n\n

\n The API is built on\n \n REST\n \n principles and accepts JSON-encoded request bodies. To get started, create\n your first basket in your pantry by following our\n \n API documentation.\n \n

\n\n

\n Alternatively, you can click on \'Create Basket\' from the sidebar\n to the left to create your first basket.\n

\n\n

\n TL;DR\n

\n\n

\n Paste a snippet from below to create your first basket using our API,\n and then\n \n read the docs.\n \n

\n\n
\n

\n Curl\n

\n

\n Unix/Linux\n

\n
\n

\n curl -XPOST -H "Content-type: application/json" -d \'{\n "key": "value"\n }\' \'{{apiPath}}/pantry/{{this.pantryId}}/basket/testBasket\'\n

\n\n
\n

\n Powershell\n

\n

\n Windows\n

\n
\n\n

\n Invoke-WebRequest -Uri \'{{apiPath}}/pantry/{{this.pantryId}}/basket/testBasket\' -Method POST -ContentType \'application/json\' -Body \'{\n "key": "value" \n }\'\n

\n\n \n
\n
\n
\n
\n'},function(t,e,l){"use strict";const i={name:"explorerOnboarding",template:l(66),data:()=>({}),methods:{loadBasket(){this.$emit("load-basket")}}};t.exports=i},function(t,e){t.exports='
\n \n
\n'},function(t,e,l){"use strict";var i=this&&this.__awaiter||function(t,e,l,i){return new(l||(l=Promise))((function(n,a){function d(t){try{c(i.next(t))}catch(t){a(t)}}function s(t){try{c(i.throw(t))}catch(t){a(t)}}function c(t){var e;t.done?n(t.value):(e=t.value,e instanceof l?e:new l((function(t){t(e)}))).then(d,s)}c((i=i.apply(t,e||[])).next())}))};const n=l(4),a=l(22).default,d=l(3),s=l(68),c=l(20),o=d.apiPath,b={props:["pantryId","basket"],name:"basket",components:{modal:c,"json-edit":a},template:s,data:()=>({apiPath:o,shareModalVisible:!1,publicBasketPath:null}),computed:{name(){return this.basket.name},data:{get(){return this.basket.data},set(t){this.basket.data=t}}},methods:{copyPath(t){return i(this,void 0,void 0,(function*(){yield navigator.clipboard.writeText(t),alert("Saved to clipboard")}))},refreshDashboard(){this.$emit("update")},basketPath(){return`${o}/pantry/${this.pantryId}/basket/${this.name}`},getPublicBasket(){return i(this,void 0,void 0,(function*(){const{data:t}=yield n({method:"GET",url:this.basketPath()+"/public"});this.publicBasketPath=`${o}/public/${t}`}))},deleteBasket(){return i(this,void 0,void 0,(function*(){confirm(`Are you sure you'd like to delete ${this.name}?`)&&(yield n({method:"DELETE",url:this.basketPath()}),this.refreshDashboard())}))},save(){return i(this,void 0,void 0,(function*(){yield n({method:"PUT",data:this.data,url:this.basketPath()}).then(t=>{const{data:e}=t;alert(this.name+" contents updated!"),this.data=e}).catch(t=>{const{data:e}=t.response,{error:l,details:i}=e;alert(`${l} - ${i}`)})}))},openShareModal(){this.getPublicBasket(),this.shareModalVisible=!0},closeShareModal(){this.shareModalVisible=!1}}};t.exports=b},function(t,e){t.exports='
\n
\n
\n
\n

\n {{ name }}\n

\n
\n \n \n
\n
\n
\n \n
\n
\n
\n \n
\n'},function(t,e){t.exports='\n
\n'},function(t,e,l){"use strict";const i={name:"login",template:l(71),data:()=>({id:null}),methods:{idInvalid(){return null===this.id},login(){this.$emit("login",this.id)}}};t.exports=i},function(t,e){t.exports='
\n

\n Login\n

\n
\n
\n
\n \n
\n \n
\n
\n\n
\n \n
\n
\n
\n
\n'},function(t,e){t.exports='
\n
\n
\n

\n \n {{ promo.emoji || \'👋 \'}}\n \n {{ promo.snippet }}\n \n \n \n \n

\n
\n
\n \n
\n
\n
\n'},function(t,e,l){"use strict";const i={name:"sdk",template:l(74),data:()=>({sdks:[{name:"pantry-node",platform:"Node.js",author:"Team Pantry",link:"https://github.com/imRohan/pantry-node",verified:!0},{name:"bash-client",platform:"Bash",author:"Team Pantry",link:"https://github.com/imRohan/Pantry/tree/master/client-libraries/Bash",verified:!0},{name:"pantryclient-esp",platform:"ESP32/ESP8266",author:"Zakrzewiaczek",link:"https://github.com/Zakrzewiaczek/pantryclient-esp",verified:!1},{name:"libPantryDotNet",platform:".Net",author:"Krutonium",link:"https://github.com/Krutonium/libPantryDotNet",verified:!1},{name:"pantry-cloud",platform:"Node.js",author:"rdarida",link:"https://github.com/rdarida/pantry-cloud",verified:!1},{name:"pantry_wrapper",platform:"Python",author:"alexmulligan",link:"https://github.com/alexmulligan/pantry_wrapper",verified:!1},{name:"pantry-nim",platform:"Nim",author:"Jake Leahy",link:"https://github.com/ire4ever1190/pantry-nim",verified:!1},{name:"JPantry",platform:"Java",author:"Magnus Gunnarsson",link:"https://github.com/EnderCrypt/JPantry",verified:!1},{name:"pantry-cloud",platform:"Python",author:"Sarvesh Kumar Dwivedi",link:"https://github.com/sarvesh4396/pantry-cloud",verified:!1},{name:"pantry-cloud",platform:"PHP",author:"Seba",link:"https://github.com/sebaOfficial/pantry-cloud/",verified:!1},{name:"pantry_client",platform:"GO",author:"Atoo35",link:"https://github.com/Atoo35/pantry_client/",verified:!1},{name:"pantry",platform:"Dart",author:"Georges",link:"https://github.com/georges-ph/pantry",verified:!1},{name:"pantry_client",platform:"Rust",author:"Atoo35",link:"https://github.com/Atoo35/pantry_client_rust/",verified:!1},{name:"UniPantry",platform:"Unity",author:"Dmitry Koleev",link:"https://github.com/dkoleev/UniPantry/",verified:!1},{name:"pantry",platform:"Common Lisp",author:"Aleksandar Simić",link:"https://github.com/dotemacs/pantry/",verified:!1},{name:"pantry",platform:"Nushell",author:"Shaoyan Ji",link:"https://gist.github.com/shaoyanji/dbc5d6e8fe8abb338226a28cd5f8d6cd",verified:!1}],defaultBadgeClasses:"flex-shrink-0 inline-block px-2 py-0.5\n text-xs font-medium\n rounded-full"}),methods:{getBadgeClass(t){var e;return null!==(e={"node.js":"bg-green-200",bash:"bg-gray-200",python:"bg-yellow-200",".net":"bg-blue-200",nim:"bg-yellow-400",java:"bg-red-400",dart:"bg-blue-500",nushell:"bg-green-200"}[t.trim().toLowerCase()])&&void 0!==e?e:"bg-gray-200"}}};t.exports=i},function(t,e){t.exports='
\n
\n
\n
\n
\n

\n \n Libraries and SDK\'s\n \n \n Developer Tools\n \n

\n

\n Pantry has official libraries which will be maintained and supported\n by the team going forward.\n\n There are also several third-party libraries built by kind\n developers (like yourself) that we\'d like to showcase.\n

\n\n \n
\n
\n
\n
\n
\n'},function(t,e,l){"use strict";var i=this&&this.__awaiter||function(t,e,l,i){return new(l||(l=Promise))((function(n,a){function d(t){try{c(i.next(t))}catch(t){a(t)}}function s(t){try{c(i.throw(t))}catch(t){a(t)}}function c(t){var e;t.done?n(t.value):(e=t.value,e instanceof l?e:new l((function(t){t(e)}))).then(d,s)}c((i=i.apply(t,e||[])).next())}))};const n=l(4),a=l(3),d=l(76),{IView:s}=l(2),c=l(77),o=l(79),b=l(81),r=l(83),m=l(85),Z=l(87),g=l(21),W=a.apiPath,h={name:"home",template:d,components:{initialSignup:c,finishSignup:o,features:b,example:r,stats:m,quote:Z,banner:g},data:()=>({email:null,name:null,finishOnboarding:!1,siteKey:"6Leqqt4aAAAAAFCxWwcRO3YB6zuKKR2CGm8ACRuJ",promo:{emoji:"💪",snippet:"Integrate Pantry using our SDK!",title:"Speed up your development by using one of our many SDKs!"}}),methods:{beginSignup(t){this.email=t,this.finishOnboarding=!0},beginRegistration(t){this.name=t,this.createNewPantry()},showReCaptcha(){window.grecaptcha.render("recaptcha",{sitekey:this.siteKey})},createNewPantry(){return i(this,void 0,void 0,(function*(){const t=window.grecaptcha.getResponse();this.accountCreationInProgress=!0;const{data:e}=yield n({method:"POST",data:{name:this.name,description:"defaultDescription",contactEmail:this.email,recaptchaResponse:t},url:W+"/pantry/create"});this.$emit("account-created",e)}))},bannerCTAClicked(){this.changeView(s.sdk)},changeView(t){this.$emit("change-view",t)}}};t.exports=h},function(t,e){t.exports='
\n \n
\n
\n
\n
\n
\n \n \n
\n
\n
\n \n
\n
\n \n \n \n \n
\n
\n'},function(t,e,l){"use strict";const i={name:"initialSignup",template:l(78),data:()=>({email:null}),methods:{showReCaptcha(){this.$emit("show-recaptcha")},storeEmail(){this.$emit("store-email",this.email)},signupValid(){return/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/.test(String(this.email).toLowerCase())}}};t.exports=i},function(t,e){t.exports='
\n

\n Free\n yourself from\n data storage\n woes.\n

\n

\n Focus your efforts on building your next project and leave the\n data storage to us. We help speed up your development time,\n letting you build awesome things fast!\n

\n
\n
\n
\n
\n \n \n
\n
\n \n
\n
\n

\n Sorry, but that email is invalid.\n

\n

\n Don\'t worry, we\'ll only contact you if it\'s important.\n

\n
\n
\n
\n'},function(t,e,l){"use strict";const i={name:"finishSignup",template:l(80),data:()=>({name:null}),methods:{storeName(){this.$emit("store-name",this.name)}}};t.exports=i},function(t,e){t.exports='
\n

\n Almost there, just\n \n one more step!\n \n

\n

\n Let\'s give your pantry a name! This could be the name of your project\n or anything that means something to you.\n

\n
\n
\n
\n
\n \n \n
\n
\n \n
\n
\n

\n Give your Pantry a creative name\n

\n
\n
\n
\n'},function(t,e,l){"use strict";const i={name:"features",template:l(82),data:()=>({}),methods:{},mounted(){}};t.exports=i},function(t,e){t.exports='
\n
\n

Effortless

\n

A better JSON storage solution

\n

\n CRUD your data on the cloud in just 2 minutes either by using our\n API or dashboard. Perfect for small projects and hackathons!\n

\n
\n\n
\n
\n
\n
\n
\n \n \n \n \n \n
\n

\n Generous Storage Limit\n

\n
\n
\n Your Pantry can have 100 baskets (JSON objects), each with a max size\n of 1.44mb. That\'s a lot of JSON, and we think it\'s a great starting\n point for developers.\n
\n
\n\n
\n
\n
\n \n \n \n
\n

\n Supports JSON Schema\n

\n
\n
\n Data integrity is the backbone of any good project. So stop worrying\n about malformed data breaking your frontend by enabling\n optional JSON schema validation for each of your baskets.\n
\n
\n\n
\n
\n
\n \n \n \n
\n

\n Simple API\n

\n
\n
\n We\'ve built a very straightforward and easy-to-use API which you can\n use to CRUD your Pantry\'s baskets. Simple and intuitive - that\'s the\n goal.\n
\n
\n\n
\n
\n
\n \n \n \n
\n

\n Generate Public URLS\n

\n
\n
\n Expose your data to users by using public urls. These are\n "share anywhere" read only paths that protect your Pantry\'s ID and\n Basket details.\n
\n
\n\n
\n
\n
\n \n
\n

\n Powerful Dashboard \n

\n
\n
\n We also offer a slick dashboard which you can use to interact with\n your Pantry\'s baskets. This intuitive interface is especially helpful\n when debugging your application.\n
\n
\n\n
\n
\n
\n \n \n \n
\n

\n 100% Open Source\n

\n
\n
\n This project is open-source and supported by a wonderful group of\n developers who continue to improve the platform.\n
\n \n
\n
\n
\n
\n
\n
\n'},function(t,e,l){"use strict";const i=l(84),{IView:n}=l(2),a={name:"example",template:i,methods:{showSDK(){this.$emit("change-view",n.sdk)}}};t.exports=a},function(t,e){t.exports='
\n
\n
\n
\n
\n

\n Jump Right In\n

\n

\n Quickly add Pantry to your project using one of our\n easy-to-use client libraries.\n

\n
\n \n npm install pantry-node\n \n \n \n \n
\n
\n \n
\n
\n
\n
\n'},function(t,e,l){"use strict";const i={name:"stats",template:l(86),data:()=>({}),methods:{},mounted(){}};t.exports=i},function(t,e){t.exports='
\n
\n
\n

\n Trusted by developers from over 100 countries\n

\n

\n Here\'s a snapshot of what we\'ve accomplished in the last month\n

\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
Data Served
\n
23GB
\n
\n
\n
Active Projects
\n
1230+
\n
\n
\n
Requests Handled
\n
2.57M
\n
\n
\n
\n
\n
\n
\n
\n'},function(t,e,l){"use strict";const i={name:"quote",template:l(88),data:()=>({}),methods:{},mounted(){}};t.exports=i},function(t,e){t.exports='
\n
\n \n Workcation\n \n \n \n \n \n \n \n\n
\n
\n
\n

\n “\n If you have a simple application that needs a database - don\'t setup\n a database. Pantry let\'s you store 100mb of JSON, while attaching a\n CRUD interface to it. Kind of like TinyDB for Python.\n ”\n

\n
\n \n
\n
\n
\n

\n “\n I think Pantry is a great option for my project/for\n testing, I currently have a project with over 10,000 users alone!\n and I think Pantry is a nice way to get that sorted, it\'s free and\n uses basic JSON.\n ”\n

\n
\n
\n
\n
\n
\n SalmonStudios\n
\n\n \n\n
\n Game Studio\n
\n
\n
\n
\n
\n
\n
\n

\n “\n Pantry\'s simple design, and features have been instrumental in\n realizing [my] little project\n ”\n

\n
\n
\n
\n
\n
\n Somajit Dey\n
\n\n \n\n
\n Department of Physics, University of Calcutta\n
\n
\n
\n
\n
\n
\n
\n
\n'},function(t,e,l){"use strict";const i=l(90),{IView:n}=l(2),a={name:"onboarding",template:i,props:["pantryID"],data:()=>({}),methods:{getStarted(){this.$emit("change-view",n.dashboard)},createSession(){sessionStorage.setItem("pantry-id",this.pantryID)}},mounted(){this.createSession()}};t.exports=a},function(t,e){t.exports='
\n
\n
\n
\n
\n

\n \n Success!\n \n \n Save your PantryID\n \n

\n

\n Here is your PantryID! Think of this as your API key, and\n keep this safe as we won\'t be sharing it with you again. Once you\'ve \n saved it somewhere, hit the button below and we\'ll show you how to\n add items to your pantry.\n

\n\n

\n {{ pantryID }}\n

\n\n \n
\n
\n
\n
\n
\n'},function(t,e,l){"use strict";const i={name:"about",template:l(92),props:[],components:{faq:l(93)},data:()=>({questions:[{title:"What is Pantry?",answer:"Pantry is a free data storage service which allows users to manage\n a collection of JSON objects. It is great for small to medium sized projects,\n and can be interacted with through a RESTful API or via a dashboard."},{title:"What is a Basket?",answer:'A "Basket" is one JSON object. Each Pantry can have up to 100 baskets\n held within it, each with its own human-readable name.'},{title:"How is my data stored?",answer:"Every basket is encrypted using the AES-256 encryption scheme and is securely\n stored on our servers after being properly sanitized."},{title:"Who can access my Pantry & Baskets?",answer:'You can share direct links to your baskets (GET & POST), or\n a read-only (GET) "public". Public links are a great way to allow\n anyone to read the contents of a specific basket but not modify them.'},{title:"What are the limitations?",answer:"A Pantry can have up to 100 baskets (JSON objects), each with a max size\n of 1.44mb per basket. API requests are limited to 2 calls per second. That's it."},{title:"How long will my data be stored for?",answer:"Data is stored until you no longer need it. Users can choose to delete\n their data from Pantry at any time. However, inactive baskets will be removed after 30 days."}]}),methods:{}};t.exports=i},function(t,e){t.exports='
\n
\n
\n
\n
\n

\n \n Learn about Pantry\n \n \n Frequently Asked Questions\n \n

\n
\n \n
\n
\n
\n \n
\n'},function(t,e,l){"use strict";const i={name:"faq",template:l(94),props:["questions"],data:()=>({})};t.exports=i},function(t,e){t.exports='
\n
\n
\n

\n Contribute\n

\n

\n Pantry is open-source, and is maintained by\n \n Rohan Likhite.\n \n If you\'d like to help develop Pantry, or have an issue to report,\n please visit the\n \n GitHub repo\n .\n

\n

\n Sponsor\n

\n

\n To help with server costs, please consider sponsoring the project\n via\n \n GitHub Sponsors.\n \n

\n

\n Looking for more information?\n

\n

\n Can’t find the answer you’re looking for? Ask the developers directly\n by\n starting a \n discussion on GitHub.\n

\n
\n
\n
\n \n
\n
\n
\n
\n'},function(t,e,l){"use strict";const i=l(96),n=l(3),{IView:a}=l(2),d=l(97),s=n.docsPath,c={name:"topbar",template:i,props:["view"],components:{headerBar:d},methods:{showAbout(){this.$emit("change-view",a.about)},showDocs(){window.location.href=s},showDashboard(){this.$emit("change-view",a.dashboard)},goHome(){this.$emit("change-view",a.home)},showSDK(){this.$emit("change-view",a.sdk)},topbarClass(){return this.view!==a.home?"bg-orange-100 pb-52":""}}};t.exports=c},function(t,e){t.exports='
\n
\n \n
\n
\n\n'},function(t,e,l){"use strict";const i={name:"headerBar",template:l(98),props:["view"],data:()=>({}),methods:{}};t.exports=i},function(t,e){t.exports='\n'},function(t,e,l){"use strict";const i={name:"bottomBar",template:l(100),props:[],methods:{}};t.exports=i},function(t,e){t.exports='\n'}]); //# sourceMappingURL=bundle.js.map \ No newline at end of file diff --git a/dist/src/bundle.js.map b/dist/src/bundle.js.map index f8aeaf1..3db9b30 100644 --- a/dist/src/bundle.js.map +++ b/dist/src/bundle.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./node_modules/axios/lib/utils.js","webpack:///./node_modules/vue-json-editor/assets/img/jsoneditor-icons.svg","webpack:///./src/interfaces/view.ts","webpack:///./src/app/config.ts","webpack:///./node_modules/axios/index.js","webpack:///(webpack)/buildin/global.js","webpack:///./node_modules/css-loader/lib/css-base.js","webpack:///./node_modules/style-loader/lib/addStyles.js","webpack:///./node_modules/axios/lib/defaults.js","webpack:///./node_modules/process/browser.js","webpack:///./node_modules/css-loader/lib/url/escape.js","webpack:///./node_modules/axios/lib/helpers/bind.js","webpack:///./node_modules/axios/lib/helpers/buildURL.js","webpack:///./node_modules/axios/lib/core/enhanceError.js","webpack:///./node_modules/axios/lib/adapters/xhr.js","webpack:///./node_modules/axios/lib/core/createError.js","webpack:///./node_modules/axios/lib/cancel/isCancel.js","webpack:///./node_modules/axios/lib/core/mergeConfig.js","webpack:///./node_modules/axios/lib/cancel/Cancel.js","webpack:///./node_modules/vue-json-editor/vue-json-editor.vue?f708","webpack:///./src/app/components/modal.ts","webpack:///./src/app/components/banner.ts","webpack:///./node_modules/vue-json-editor/assets/jsoneditor.js","webpack:///./src/app/index.ts","webpack:///./node_modules/vue/dist/vue.min.js","webpack:///./node_modules/timers-browserify/main.js","webpack:///./node_modules/setimmediate/setImmediate.js","webpack:///./src/app/scss/main.scss?e2bf","webpack:///./src/app/scss/main.scss","webpack:///./src/app/assets/MeditatingDoodle.svg","webpack:///./src/app/assets/example.svg","webpack:///./node_modules/style-loader/lib/urls.js","webpack:///./src/app/components/mainContent.ts","webpack:///./src/app/templates/mainContent.html","webpack:///./src/app/components/dashboard.ts","webpack:///./node_modules/axios/lib/axios.js","webpack:///./node_modules/axios/lib/core/Axios.js","webpack:///./node_modules/axios/lib/core/InterceptorManager.js","webpack:///./node_modules/axios/lib/core/dispatchRequest.js","webpack:///./node_modules/axios/lib/core/transformData.js","webpack:///./node_modules/axios/lib/helpers/normalizeHeaderName.js","webpack:///./node_modules/axios/lib/core/settle.js","webpack:///./node_modules/axios/lib/helpers/cookies.js","webpack:///./node_modules/axios/lib/core/buildFullPath.js","webpack:///./node_modules/axios/lib/helpers/isAbsoluteURL.js","webpack:///./node_modules/axios/lib/helpers/combineURLs.js","webpack:///./node_modules/axios/lib/helpers/parseHeaders.js","webpack:///./node_modules/axios/lib/helpers/isURLSameOrigin.js","webpack:///./node_modules/axios/lib/helpers/validator.js","webpack:///./node_modules/axios/lib/cancel/CancelToken.js","webpack:///./node_modules/axios/lib/helpers/spread.js","webpack:///./node_modules/axios/lib/helpers/isAxiosError.js","webpack:///./src/app/templates/dashboard.html","webpack:///./src/app/components/explorer.ts","webpack:///./src/app/templates/explorer.html","webpack:///./src/app/components/changelog.ts","webpack:///./src/app/templates/changelog.html","webpack:///./src/app/components/explorerEmpty.ts","webpack:///./src/app/templates/explorerEmpty.html","webpack:///./src/app/components/explorerOnboarding.ts","webpack:///./src/app/templates/explorerOnboarding.html","webpack:///./src/app/components/basket.ts","webpack:///./node_modules/vue-json-editor/assets/jsoneditor.css?d672","webpack:///./node_modules/vue-json-editor/assets/jsoneditor.css","webpack:///./node_modules/vue-json-editor/vue-json-editor.vue?4707","webpack:///./node_modules/vue-json-editor/vue-json-editor.vue?9e61","webpack:///./src/app/templates/basket.html","webpack:///./src/app/templates/modal.html","webpack:///./src/app/components/login.ts","webpack:///./src/app/templates/login.html","webpack:///./src/app/templates/banner.html","webpack:///./src/app/components/sdk.ts","webpack:///./src/app/templates/sdk.html","webpack:///./src/app/components/home.ts","webpack:///./src/app/templates/home.html","webpack:///./src/app/components/initialSignup.ts","webpack:///./src/app/templates/initialSignup.html","webpack:///./src/app/components/finishSignup.ts","webpack:///./src/app/templates/finishSignup.html","webpack:///./src/app/components/features.ts","webpack:///./src/app/templates/features.html","webpack:///./src/app/components/example.ts","webpack:///./src/app/templates/example.html","webpack:///./src/app/components/stats.ts","webpack:///./src/app/templates/stats.html","webpack:///./src/app/components/quote.ts","webpack:///./src/app/templates/quote.html","webpack:///./src/app/components/onboarding.ts","webpack:///./src/app/templates/onboarding.html","webpack:///./src/app/components/about.ts","webpack:///./src/app/templates/about.html","webpack:///./src/app/components/faq.ts","webpack:///./src/app/templates/faq.html","webpack:///./src/app/components/topbar.ts","webpack:///./src/app/templates/topbar.html","webpack:///./src/app/components/headerBar.ts","webpack:///./src/app/templates/headerBar.html","webpack:///./src/app/components/bottomBar.ts","webpack:///./src/app/templates/bottomBar.html","webpack:///./node_modules/vue-json-editor/vue-json-editor.vue?5343","webpack:///./node_modules/vue-json-editor/vue-json-editor.vue?fb06","webpack:///node_modules/vue-json-editor/vue-json-editor.vue","webpack:///./node_modules/vue-json-editor/vue-json-editor.vue","webpack:///./node_modules/vue-loader/lib/runtime/componentNormalizer.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","toString","isArray","val","isUndefined","isObject","isPlainObject","getPrototypeOf","isFunction","forEach","obj","fn","length","isArrayBuffer","isBuffer","constructor","isFormData","FormData","isArrayBufferView","ArrayBuffer","isView","buffer","isString","isNumber","isDate","isFile","isBlob","isStream","pipe","isURLSearchParams","URLSearchParams","isStandardBrowserEnv","navigator","product","window","document","merge","result","assignValue","slice","arguments","extend","a","b","thisArg","trim","str","replace","stripBOM","content","charCodeAt","IView","apiPath","docsPath","g","this","Function","e","useSourceMap","list","map","item","cssMapping","btoa","sourceMapping","sourceMap","unescape","encodeURIComponent","JSON","stringify","sourceURLs","sources","source","sourceRoot","concat","join","cssWithMappingToString","mediaQuery","alreadyImportedModules","id","push","memo","stylesInDom","isOldIE","all","atob","apply","getTarget","target","querySelector","getElement","styleTarget","HTMLIFrameElement","contentDocument","head","singleton","singletonCounter","stylesInsertedAtTop","fixUrls","addStylesToDom","styles","options","domStyle","refs","j","parts","addStyle","listToStyles","newStyles","base","part","css","media","insertStyleElement","style","insertInto","Error","lastStyleElementInsertedAtTop","insertAt","nextSibling","insertBefore","appendChild","firstChild","before","removeStyleElement","parentNode","removeChild","idx","indexOf","splice","createStyleElement","createElement","undefined","attrs","type","addAttrs","el","keys","setAttribute","update","remove","transform","styleIndex","applyToSingletonTag","URL","createObjectURL","revokeObjectURL","Blob","link","rel","createLinkElement","updateLink","href","applyToTag","newObj","DEBUG","newList","mayRemove","textStore","replaceText","index","replacement","filter","Boolean","styleSheet","cssText","cssNode","createTextNode","childNodes","autoFixUrls","convertToAbsoluteUrls","blob","oldSrc","utils","normalizeHeaderName","enhanceError","DEFAULT_CONTENT_TYPE","setContentTypeIfUnset","headers","adapter","defaults","transitional","silentJSONParsing","forcedJSONParsing","clarifyTimeoutError","XMLHttpRequest","process","transformRequest","data","rawValue","parser","encoder","parse","stringifySafely","transformResponse","strictJSONParsing","responseType","timeout","xsrfCookieName","xsrfHeaderName","maxContentLength","maxBodyLength","validateStatus","status","common","method","cachedSetTimeout","cachedClearTimeout","defaultSetTimout","defaultClearTimeout","runTimeout","fun","setTimeout","clearTimeout","currentQueue","queue","draining","queueIndex","cleanUpNextTick","drainQueue","len","run","marker","runClearTimeout","Item","array","noop","nextTick","args","Array","title","browser","env","argv","version","versions","on","addListener","once","off","removeListener","removeAllListeners","emit","prependListener","prependOnceListener","listeners","binding","cwd","chdir","dir","umask","url","test","encode","params","paramsSerializer","serializedParams","v","toISOString","hashmarkIndex","error","config","code","request","response","isAxiosError","toJSON","message","description","number","fileName","lineNumber","columnNumber","stack","settle","cookies","buildURL","buildFullPath","parseHeaders","isURLSameOrigin","createError","Promise","resolve","reject","requestData","requestHeaders","auth","username","password","Authorization","fullPath","baseURL","onloadend","responseHeaders","getAllResponseHeaders","responseText","statusText","open","toUpperCase","onreadystatechange","readyState","responseURL","onabort","onerror","ontimeout","timeoutErrorMessage","xsrfValue","withCredentials","read","toLowerCase","setRequestHeader","onDownloadProgress","addEventListener","onUploadProgress","upload","cancelToken","promise","then","cancel","abort","send","__CANCEL__","config1","config2","valueFromConfig2Keys","mergeDeepPropertiesKeys","defaultToConfig2Keys","directMergeKeys","getMergedValue","mergeDeepProperties","prop","axiosKeys","otherKeys","Cancel","locals","modal","template","methods","$emit","banner","props","visible","factory","loaded","Ajv","err","treemode","textmode","util","JSONEditor","container","json","ieVersion","getInternetExplorerVersion","console","warn","onError","change","onChange","editable","onEditable","VALID_OPTIONS","option","_create","modes","DEBOUNCE_INTERVAL","setMode","destroy","set","setText","jsonText","getText","setName","getName","oldMode","asText","clear","mixin","load","onModeChange","_onError","getMode","setSchema","schema","ajv","allErrors","verbose","validateSchema","compile","validate","refresh","registerMode","reserved","compileSchema","Cache","SchemaObject","stableStringify","formats","rules","v5","async","co","compileAsync","addKeyword","ValidationError","META_SCHEMA_ID","SCHEMA_URI_FORMAT","SCHEMA_URI_FORMAT_FUNC","META_IGNORE_OPTIONS","opts","self","schemaKeyRef","getSchema","schemaObj","_addSchema","_compile","valid","_opts","errors","addSchema","_skipValidation","_meta","checkUnique","normalizeId","_schemas","meta","addMetaSchema","skipValidation","throwOrLogError","$schema","defaultMeta","currentUriFormat","_formats","uri","errorsText","keyRef","_getSchemaObj","_refs","_removeAllSchemas","schemas","regex","_cache","del","jsonStr","shouldAddSchema","cached","addUsedSchema","localRefs","ids","put","root","compiling","callValidate","$async","currentOpts","_metaOpts","refVal","_validate","separator","dataVar","text","dataPath","addFormat","format","RegExp","copy","cache","_loadingSchemas","RULES","removeSchema","loopRequired","Infinity","transpile","setup","beautify","indent_size","errorDataPath","_errorDataPathProperty","metaOpts","getMetaSchemaOptions","optsSchemas","addInitialSchemas","addInitialFormats","enable","js_beautify","validateGenerator","baseId","patterns","patternsHash","defaultsHash","customRules","localCompile","_schema","_root","isRoot","sourceCode","isTop","schemaPath","errSchemaPath","errorPath","resolveRef","usePattern","useDefault","useCustomRule","vars","refValCode","patternCode","defaultCode","customRuleCode","validateCode","_transpileFunc","eval","ref","_refVal","refCode","refIndex","resolvedRef","rootRefId","addLocalRef","localSchema","inlineRef","inlineRefs","replaceLocalRef","refId","inline","regexStr","toQuotedString","valueStr","rule","parentSchema","it","definition","macro","keyword","arr","statement","ucs2length","equal","res","_resolve","refPath","_getFullPath","getFullPath","resolveRecursive","getJsonPointer","parsedRef","resolveUrl","_resolveIds","escapeFragment","PREVENT_SCOPE_CHANGE","toHash","hash","split","unescapeFragment","$ref","SIMPLE_INLINED","limit","checkNoRef","countKeys","count","normalize","protocol","host","path","TRAILING_SLASH_HASH","punycode","Url","slashes","port","hostname","search","query","pathname","urlParse","relative","resolveObject","protocolPattern","portPattern","unwise","autoEscape","nonHostChars","hostEndingChars","hostnamePartPattern","hostnamePartStart","unsafeProtocol","hostlessProtocol","slashedProtocol","querystring","parseQueryString","slashesDenoteHost","u","arg","isNull","TypeError","rest","proto","exec","lowerProto","substr","match","atSign","hostEnd","hec","lastIndexOf","decodeURIComponent","parseHost","ipv6Hostname","hostparts","newpart","k","validParts","notHost","bit","unshift","domainArray","newOut","h","ae","esc","escape","qm","charAt","relPath","shift","isSourceAbs","isRelAbs","mustEndAbs","removeAllDots","srcPath","psychotic","pop","authInHost","last","hasTrailingSlash","up","isAbsolute","__WEBPACK_AMD_DEFINE_RESULT__","global","nodeType","freeGlobal","maxInt","regexPunycode","regexNonASCII","regexSeparators","floor","Math","stringFromCharCode","String","fromCharCode","RangeError","mapDomain","string","ucs2decode","extra","output","counter","ucs2encode","digitToBasic","digit","flag","adapt","delta","numPoints","firstTime","baseMinusTMin","decode","input","out","basic","oldi","w","baseMinusT","codePoint","inputLength","bias","handledCPCount","basicLength","q","currentValue","handledCPCountPlusOne","qMinusT","webpackPolyfill","deprecate","paths","children","qs","sep","eq","regexp","maxKeys","kstr","vstr","x","stringifyPrimitive","isFinite","ks","arrA","arrB","checkDataType","dataType","negate","EQUAL","AND","OK","NOT","to","checkDataTypes","dataTypes","types","null","integer","coerceToTypes","COERCE_TO_TYPES","getProperty","escapeQuotes","pos","varOccurences","matches","varReplace","expr","cleanUpCode","EMPTY_ELSE","EMPTY_IF_NO_ELSE","EMPTY_IF_WITH_ELSE","cleanUpVarErrors","ERRORS_REGEXP","REMOVE_ERRORS_ASYNC","RETURN_ASYNC","REMOVE_ERRORS","schemaHasRules","getPathExpr","currentPath","jsonPointers","joinPaths","getPath","escapeJsonPointer","getData","$data","lvl","RELATIVE_JSON_POINTER","jsonPointer","segments","segment","unescapeJsonPointer","IDENTIFIER","SINGLE_QUOTE","cmp","space","f","cycles","replacer","node","aobj","bobj","seen","parent","level","indent","colonSeparator","objectKeys","sort","keyValue","has","at","ch","escapee","next","hex","uffff","parseInt","white","word","reviver","walk","holder","gap","rep","escapable","quote","lastIndex","partial","mind","setupAsync","ASYNC","checkGenerators","checkAsyncFunction","TRANSPILE","getNodent","getRegenerator","MODES","regenerator","nodent","required","check","runtime","regeneratorTranspile","log","dontInstallRequireHook","nodentTranspile","promises","sourcemap","callback","loadSchema","_compileAsync","firstCall","missingSchema","loadMissingSchema","deferCallback","missingRef","_callbacks","schemaLoaded","sch","$keyword","$top","$lvl","$dataLvl","dataLevel","rootId","$es7","yieldAwait","dataPathArr","$errorKeyword","$valid","$breakOnError","$closingBraces1","$closingBraces2","$typeSchema","$typeIsArray","coerceTypes","$coerceToTypes","$schemaPath","$errSchemaPath","$method","$dataType","$coerced","$bracesCoercion","arr1","$type","$i","l1","$$outStack","createErrors","messages","__err","compositeRule","arr2","$rulesGroup","i2","l2","$shouldUseGroup","useDefaults","properties","arr3","$propertyKey","i3","l3","$sch","default","$passData","items","arr4","l4","arr5","$rule","i5","l5","$shouldUseRule","custom","$ruleValidate","$ruleErrs","$errs","$ruleErr","$rDef","$asyncKeyword","$inline","$macro","statements","$it","$wasComposite","$code","passContext","def_callRuleValidate","def_customError","$typeChecked","additionalProperties","patternProperties","patternGroups","gen","ctx","onFulfilled","ret","onRejected","throw","done","toPromise","isPromise","displayName","isGenerator","isGeneratorFunction","thunkToPromise","arrayToPromise","objectToPromise","results","defer","wrap","createPromise","__generatorFunction__","validation","DATE","DAYS","TIME","HOSTNAME","URI","UUID","JSON_POINTER","formatDefs","fName","compare","date","month","day","time","full","hour","minute","second","timeZone","fast","email","ipv4","ipv6","uuid","dateTime","DATE_TIME_SEPARATOR","NOT_URI_FRAGMENT","compareDate","compareTime","dt1","dt2","d1","d2","t1","t2","ruleModules","keywords","group","allOf","anyOf","dependencies","enum","maximum","minimum","maxItems","minItems","maxLength","minLength","maxProperties","minProperties","multipleOf","not","oneOf","pattern","uniqueItems","$refCode","$refVal","$message","missingRefs","$error","__callValidate","$closingBraces","every","$schemaDeps","$propertyDeps","$property","$deps","$currentErrorPath","_$property","$prop","$propertyPath","$missingProperty","$isData","$schemaValue","$format","$isObject","$formatRef","$dataNxt","$nextData","$additionalItems","additionalItems","$currErrSchemaPath","$isMax","$exclusiveKeyword","$schemaExcl","$op","$notOp","$schemaValueExcl","$exclusive","$opStr","$opExpr","unicode","multipleOfPrecision","$allErrorsOption","$schemaKeys","$pProperties","$pPropertyKeys","$aProperties","$someProperties","$noAdditional","$additionalIsSchema","$removeAdditional","removeAdditional","$checkAdditional","$required","$requiredHash","$pgProperties","$pgPropertyKeys","i1","$pProperty","$pgProperty","$additionalProperty","$useDefaults","i4","$hasDefault","$useData","arr6","i6","l6","$pgSchema","$pgMin","$pgMax","$limit","$reason","$moreOrLess","$propertySch","$loopRequired","containsMacro","inlineFunctions","metaSchema","_addKeyword","inlineFunc","_formatLimit","$shouldContinue","$ifPassed","$caseIndex","if","continue","$schemaFormat","$isDataFormat","$compare","$isDataExcl","$result","$key","$matched","$missingPattern","_addRule","ruleGroup","rg","Highlighter","History","SearchBox","ContextMenu","Node","ModeSwitcher","dom","highlighter","selection","multiselection","nodes","errorNodes","focusTarget","_setOptions","history","_createFrame","_createTable","frame","_debouncedValidate","searchBox","modeSwitcher","debounce","table","field","_setRoot","expand","getNodeFromTarget","blur","getValue","updateField","focus","menu","collapse","tbody","getDom","action","add","_onChange","setError","duplicateErrors","schemaErrors","improveSchemaError","findNode","entry","reduce","findParents","child","updateDom","recurse","mouseY","me","top","getAbsoluteTop","height","clientHeight","bottom","scrollTop","autoScrollStep","scrollHeight","autoScrollTimer","setInterval","stopAutoScroll","select","range","setSelectionOffset","getSelectionOffset","nodeName","editor","animateTimeout","animateCallback","finalScrollTop","min","max","animate","diff","abs","className","onEvent","event","_onEvent","onclick","preventDefault","oninput","onchange","onkeydown","onkeyup","oncut","onpaste","onmousedown","onmouseup","onmouseover","onmouseout","onfocusin","onfocusout","expandAll","collapseAll","undo","_onUndo","redo","_onRedo","disabled","canUndo","canRedo","_onKeyDown","_startDragDistance","_updateDragDistance","selected","showContextMenu","hasMoved","deselect","onDragStart","drag","_onMultiSelectStart","dragDistanceEvent","initialTarget","initialPageX","pageX","initialPageY","pageY","dragDistance","diffX","diffY","sqrt","start","end","mousemove","_onMultiSelect","mouseup","_onMultiSelectEnd","_findTopLevelNodes","removeEventListener","clearStartAndEnd","setSelected","first","startPath","getNodePath","endPath","startChild","endChild","childs","startIndex","endIndex","firstIndex","keynum","which","keyCode","ctrlKey","shiftKey","handled","selectContentEditable","previous","stopPropagation","col","contentOuter","colgroupContent","width","anchor","onClose","click","onDuplicate","onRemove","close","show","locked","highlight","setHighlight","_cancelUnhighlight","unhighlight","unhighlightTimer","lock","unlock","actions","oldValue","newValue","updateValue","changeType","oldType","newType","beforeNode","afterNode","insertAfter","append","oldBeforeNode","moveBefore","newBeforeNode","hideChilds","oldSort","oldChilds","showChilds","newSort","newChilds","Date","oldSelection","setSelection","newSelection","jsonlint","jsonString","sanitize","jsString","chars","curr","lastNonWhitespace","pp","skipBlockComment","skipComment","parseString","parseKey","escapeUnicodeChars","Number","isUrlRegex","isUrl","getAbsoluteLeft","elem","getBoundingClientRect","left","pageXOffset","scrollLeft","pageYOffset","addClassName","classes","removeClassName","stripFormatting","divElement","iMax","removeAttribute","attributes","attribute","specified","setEndOfContentEditable","contentEditableElement","createRange","selectNodeContents","getSelection","removeAllRanges","addRange","sel","getRangeAt","rangeCount","startContainer","endContainer","startOffset","endOffset","setStart","setEnd","getInnerText","element","nodeValue","flush","hasChildNodes","innerText","prevChild","prevName","_ieVersion","rv","appName","ua","userAgent","parseFloat","$1","isFirefox","listener","useCapture","attachEvent","detachEvent","parsePath","jsonPath","remainder","SyntaxError","substring","enums","more","additionalProperty","insideRect","margin","_margin","right","func","wait","immediate","context","later","callNow","textDiff","oldText","newText","oldEnd","newEnd","lexer","trace","yy","symbols_","terminals_","2","4","6","8","10","11","14","17","18","21","22","23","24","productions_","performAction","yytext","yyleng","yylineno","yystate","$$","_$","$0","$","3","5","7","9","12","13","15","16","1","19","20","25","defaultActions","parseError","vstack","lstack","recovering","setInput","yylloc","yyloc","lex","token","symbol","preErrorSymbol","state","newState","expected","yyval","errStr","showPosition","line","loc","first_line","last_line","first_column","last_column","EOF","_input","_more","_less","matched","conditionStack","unput","less","pastInput","past","upcomingInput","pre","tempMatch","lines","_currentRules","flex","begin","condition","popState","conditions","topState","pushState","yy_","$avoiding_name_collisions","YY_START","delay","lastText","tr","td","divInput","tableInput","tbodySearch","refreshSearch","_onDelayedSearch","_onSearch","_onKeyUp","searchNext","searchPrevious","resultIndex","_setActiveResult","activeResult","prevNode","searchFieldActive","searchValueActive","scrollTo","_clearDelay","forceSearch","resultCount","innerHTML","eventListeners","focusButton","li","overflow","createMenuItems","domItems","domItem","button","hide","submenu","buttonSubmenu","divIcon","buttonExpand","submenuTitle","divExpand","_onExpandItem","domSubItems","subItems","ul","maxHeight","_getVisibleButtons","buttons","expandedItem","subItem","visibleMenu","contentWindow","showBelow","anchorRect","contentRect","anchorHeight","offsetHeight","mousedown","_isChildOf","keydown","alreadyVisible","padding","display","targetIndex","prevButton","nextButton","naturalSort","appendNodeFactory","expanded","setField","fieldEditable","setValue","_debouncedOnChangeValue","_onChangeValue","_debouncedOnChangeField","_onChangeField","_updateEditability","parents","tdError","tdValue","popover","onfocus","directions","direction","popoverRect","getIndex","setParent","previousField","getField","_getDomField","childValue","_getType","childField","sortObjectKeys","previousValue","_getDomValue","getLevel","clone","fieldInnerText","valueInnerText","cloneChilds","childClone","getAppend","nextTr","_hasChilds","newTr","appendTr","trTemp","AppendNode","moveTo","searchField","searchValue","_updateDomField","childResults","_updateDomValue","offsetTop","focusElement","elementName","editableDiv","containsNode","_move","clearDom","removedNode","_remove","lastTr","_stringCast","silent","_unescapeHTML","undoDiff","redoDiff","_onAction","domValue","classNames","checkbox","tdCheckbox","checked","getUTCMilliseconds","tdSelect","valueFieldHTML","visibility","domField","duplicateKeys","tdDrag","domDrag","tdMenu","tdField","tree","_createDomTree","firstNode","lastNode","draggedNode","_nextSibling","offsetY","onDrag","onDragEnd","oldCursor","body","cursor","mouseX","trThis","trPrev","trNext","trFirst","trLast","trRoot","nodePrev","nodeNext","topThis","topPrev","topFirst","heightThis","bottomNext","heightNext","moved","previousSibling","diffLevel","round","levelNext","some","startAutoScroll","_createDomField","isFirst","domTree","marginLeft","fieldText","contentEditable","spellcheck","_escapeHTML","_updateSchema","updateIndexes","_updateDomIndexes","_findSchema","_findEnum","composite","childSchema","_createDomValue","_createDomExpandButton","borderCollapse","tdExpand","tdSeparator","srcElement","expandable","_onExpand","offsetX","onKeyDown","nextNode","nextDom","nextDom2","altKey","selectedNodes","_onInsertBefore","_onInsertAfter","endNode","_lastNode","_getElementName","homeNode","_firstNode","prevElement","_previousElement","appendDom","nextNode2","_previousNode","nextElement","_nextElement","prevDom","isVisible","_nextNode","blurNodes","clones","newNode","_onAppend","_onChangeType","order","oldSortOrder","sortOrder","firstDom","lastDom","lastChild","TYPE_TITLES","titles","auto","lower","num","numFloat","isNaN","htmlEscaped","html","escapeUnicode","escapedText","_escapeJSON","escaped","oFxNcL","oFyNcL","re","sre","dre","hre","ore","insensitive","y","xN","yN","xD","yD","cLoc","numS","trAppend","tdAppend","domText","paddingLeft","current","onSwitch","availableModes","form","view","currentMode","currentTitle","box","position","ace","indentation","_ace","theme","aceEditor","textarea","clientWidth","buttonFormat","buttonCompact","compact","editorDom","edit","$blockScrolling","setTheme","setShowPrintMargin","setFontSize","getSession","setTabSize","setUseSoftTabs","setUseWrapMode","commands","bindKey","poweredBy","resize","originalOnChange","validationErrors","marginBottom","paddingBottom","doValidate","hidden","define","deps","payload","payloads","original","_acequire","parentId","lookup","dep","acequire","packagedModule","normalizeModule","moduleName","chunks","mod","packaged","real","compliantExecNpcg","compliantLastIndexIncrement","getNativeFlags","ignoreCase","multiline","extended","sticky","from","r2","_xregexp","captureNames","Empty","that","bound","defineGetter","defineSetter","lookupGetter","lookupSetter","supportsAccessors","prototypeOfArray","prototypeOfObject","_toString","owns","__defineGetter__","__defineSetter__","__lookupGetter__","__lookupSetter__","makeArray","lengthBefore","array_splice","deleteCount","removeCount","removed","insert","tailOldPos","tailNewPos","tailCount","lengthAfterRemove","createEmpty","freezeObject","boxedString","splitString","doesDefinePropertyWork","exception","toObject","thisp","reduceRight","sought","toInteger","__proto__","getOwnPropertyDescriptor","descriptor","configurable","setter","getOwnPropertyNames","empty","propertyIsEnumerable","isPrototypeOf","toLocaleString","valueOf","Type","defineProperties","definePropertyWorksOnObject","definePropertyWorksOnDom","definePropertyFallback","seal","freeze","preventExtensions","isSealed","isFrozen","isExtensible","returnValue","hasDontEnumBug","dontEnums","dontEnumsLength","ii","dontEnum","now","getTime","ws","trimBeginRegexp","trimEndRegexp","getDocumentHead","doc","getElementsByTagName","documentElement","tag","createElementNS","hasCssClass","addCssClass","removeCssClass","toggleCssClass","setCssClass","include","hasCssString","sheets","createStyleSheet","styleSheets","owningElement","importCssString","importCssStylsheet","getInnerWidth","computedStyle","getInnerHeight","scrollbarWidth","inner","minWidth","outer","noScrollbar","offsetWidth","withScrollbar","getPageScrollTop","getPageScrollLeft","getComputedStyle","currentStyle","setInnerHtml","innerHtml","cloneNode","replaceChild","setInnerText","textContent","getParentWindow","defaultView","parentWindow","inherits","ctor","superCtor","super_","writable","implement","oop","Keys","MODIFIER_KEYS","224","KEY_MODS","FUNCTION_KEYS","27","32","33","34","35","36","37","38","39","40","44","45","46","96","97","98","99","100","101","102","103","104","105","112","113","114","115","116","117","118","119","120","121","122","123","144","145","PRINTABLE_KEYS","48","49","50","51","52","53","54","55","56","57","59","61","65","66","67","68","69","70","71","72","73","74","75","76","77","78","79","80","81","82","83","84","85","86","87","88","89","90","107","109","110","186","187","188","189","190","191","192","219","220","221","222","111","106","enter","mods","pow","keyCodeToString","keyString","OS","LINUX","MAC","WINDOWS","getOS","isMac","isLinux","os","platform","isWin","isIE","isGecko","isMozilla","Controllers","controllers","isOldGecko","isOpera","opera","isWebKit","isChrome","isAIR","isIPad","isTouchPad","isChromeOS","useragent","pressedKeys","ts","wrapper","_wrapper","stopEvent","cancelBubble","getButton","capture","eventHandler","releaseCaptureHandler","onMouseUp","addTouchMoveListener","startx","starty","touchObj","changedTouches","clientX","clientY","wheelX","wheelY","addMouseWheelListener","wheelDeltaX","wheelDeltaY","wheelDelta","deltaMode","DOM_DELTA_PIXEL","deltaX","deltaY","DOM_DELTA_LINE","DOM_DELTA_PAGE","axis","HORIZONTAL_AXIS","detail","addMultiMouseDownListener","elements","timeouts","callbackName","startX","startY","timer","clicks","eventNames","onMousedown","isNewClick","_clicks","onDblclick","getModifierHash","metaKey","normalizeCommandKeys","hashId","OSKey","altGr","location","keyLocation","timeStamp","defaultPrevented","resetPressedKeys","lastT","getModifierString","addCommandKeyListener","lastKeyDownKeyCode","lastDefaultPrevented","postMessage","win","nextFrame","requestAnimationFrame","mozRequestAnimationFrame","webkitRequestAnimationFrame","msRequestAnimationFrame","oRequestAnimationFrame","stringReverse","reverse","stringRepeat","stringTrimLeft","stringTrimRight","copyObject","copyArray","deepCopy","cons","arrayToMap","createMap","arrayRemove","escapeRegExp","escapeHTML","getMatchOffsets","regExp","offset","deferredCall","fcn","deferred","schedule","isPending","delayedCall","defaultTimeout","_self","lang","BROKEN_SETDATA","USE_IE_MIME_TYPE","TextInput","opacity","copied","pasted","inComposition","tempStyle","isSelectionEmpty","isFocused","activeElement","onBlur","onFocus","resetSelection","syncSelection","syncValue","isEmpty","inputHandler","selectionStart","selectionEnd","setSelectionRange","resetValue","isAllSelected","createTextRange","moveStart","moveEnd","ownerDocument","parentElement","inPropertyChange","onPropertyChange","syncProperty","sendText","keytable","onCompositionEnd","onCompositionUpdate","onCompositionStart","setInputHandler","cb","getInputHandler","afterContextMenu","onPaste","execCommand","onTextInput","handleClipboardData","clipboardData","mime","setData","doCopy","isCut","getCopyText","onCut","onCopy","onCommandKey","selectAll","closeTimeout","$readOnly","session","markUndoGroup","clearSelection","lastValue","getRange","setRange","syncComposition","onContextMenuClose","renderer","$keepTextAreaAtCursor","$moveTextAreaToCursor","setReadOnly","readOnly","onContextMenu","_emit","domEvent","moveToMouse","bringToFront","rect","borderTopWidth","borderLeftWidth","maxTop","move","textInput","scroller","DefaultHandlers","mouseHandler","$clickSelection","setDefaultHandler","onMouseDown","onDoubleClick","onTripleClick","onQuadClick","onMouseWheel","onTouchMove","selectByLines","extendSelectionBy","selectByWords","calcRangeOrientation","row","column","ev","inSelection","getDocumentPosition","mousedownEvent","selectionEmpty","getSelectionRange","moveToPosition","$focusTimout","inMultiSelectMode","captureMouse","startSelect","setState","waitForClickSelection","screenToTextCoordinates","getShiftKey","selectToPosition","setCapture","setStyle","comparePoint","orientedRange","setSelectionAnchor","scrollCursorIntoView","unitName","cmpStart","cmpEnd","selectEnd","selectAllEnd","selectByWordsEnd","selectByLinesEnd","unsetStyle","releaseCapture","focusWait","ax","ay","bx","by","distance","getBracketRange","getWordRange","isMultiLine","contains","getLineRange","getAccelKey","dt","$lastScrollTime","isScrollableBy","speed","scrollBy","stop","Tooltip","isOpen","$element","$parentNode","$init","setHtml","setPosition","setClassName","getHeight","getWidth","GutterTooltip","windowWidth","innerWidth","windowHeight","innerHeight","GutterHandler","tooltipTimeout","mouseEvent","tooltipAnnotation","gutter","$gutterLayer","tooltip","hideTooltip","moveTooltip","getRegion","selectTo","$tooltipFollowsMouse","isMousePressed","annotation","$annotations","getLength","screenRow","pixelToScreenCoordinates","$pos","documentToScreenRow","showTooltip","$gutter","MouseEvent","$inSelection","propagationStopped","selectionRange","DragdropHandler","blankImage","src","dragSelectionMarker","timerId","dragCursor","dragOperation","isInternal","autoScrollStartTime","cursorMovedTime","cursorPointOnCaretMoved","mouseTarget","onDragInterval","prevCursor","vMovement","hMovement","moveCursorToPosition","calcDistance","lineHeight","layerConfig","characterWidth","editorRect","offsets","nearestXOffset","nearestYOffset","scrollCursor","vScroll","hScroll","autoScroll","addDragMarker","toOrientedRange","addMarker","getSelectionStyle","$cursorLayer","setBlinking","clearInterval","onMouseMove","clearDragMarker","removeMarker","fromOrientedRange","getReadOnly","cancelDrag","draggable","dataTransfer","effectAllowed","setDragImage","clearData","getTextRange","dropEffect","setCursorStyle","onDragEnter","canAccept","getDropEffect","onDragOver","onMouseMoveTimer","onDragLeave","onDrop","moveText","dropData","copyAllowed","copyModifierState","dragWait","getDragDelay","startDrag","dragWaitEnd","dragReadyEnd","cursorStyle","onMouseDrag","dragDrop","$dragEnabled","eventTarget","unselectable","xhr","loadScript","onload","_","isAbort","qualifyURL","EventEmitter","_dispatchEvent","eventName","_eventRegistry","_defaultHandlers","defaultHandler","_signal","newCallback","handlers","_disabled_","old","removeDefaultHandler","capturing","optionsProvider","setOptions","optList","setOption","getOptions","optionNames","$options","getOption","opt","forwardTo","handlesSet","reportError","msg","AppConfig","$defaultOptions","defineOptions","initialValue","resetOptions","setDefaultValue","setDefaultValues","optionHash","net","workerPath","modePath","themePath","basePath","suffix","$moduleUrls","init","scriptOptions","scriptUrl","currentScript","_currentScript","scripts","script","getAttribute","attr","m1","moduleUrl","component","setModuleUrl","subst","$loading","loadModule","onLoad","moduleType","afterLoad","DefaultGutterHandler","MouseHandler","focusEditor","hasFocus","getMouseEventTarget","onMouseEvent","scrollBarV","scrollBarH","gutterEl","$dragDelay","character","insideStart","$scrollSpeed","mouseMoveHandler","releaseMouse","$mouseMoved","onCaptureEnd","onCaptureInterval","$onCaptureMouseMove","cancelContextMenu","scrollSpeed","dragDelay","dragEnabled","focusTimout","tooltipFollowsMouse","FoldHandler","fold","getFoldAt","removeFold","expandFold","foldWidgets","onFoldWidgetClick","getParentFoldRangeData","firstRange","getLine","addFold","keyUtil","KeyBinding","$editor","$handlers","kb","removeKeyboardHandler","$defaultHandler","addKeyboardHandler","setKeyboardHandler","handleKeyboard","attach","detach","getKeyboardHandler","getStatusText","$callKeyboardHandlers","toExecute","success","command","passEvent","Range","startRow","startColumn","endRow","endColumn","isEqual","compareRange","containsRange","intersects","isEnd","isStart","inside","insideEnd","compareStart","compareEnd","compareInside","clipRows","firstRow","lastRow","fromPoints","collapseRows","toScreenRange","screenPosStart","documentToScreenPosition","screenPosEnd","moveBy","comparePoints","p1","p2","Selection","getDocument","lead","selectionLead","createAnchor","selectionAnchor","$isEmpty","$keepDesiredColumnOnChange","$desiredColumn","getCursor","getPosition","getSelectionAnchor","getSelectionLead","shiftSelection","columns","moveCursorTo","isBackwards","$moveSelection","mover","selectUp","moveCursorUp","selectDown","moveCursorDown","selectRight","moveCursorRight","selectLeft","moveCursorLeft","selectLineStart","moveCursorLineStart","selectLineEnd","moveCursorLineEnd","selectFileEnd","moveCursorFileEnd","selectFileStart","moveCursorFileStart","selectWordRight","moveCursorWordRight","selectWordLeft","moveCursorWordLeft","selectWord","selectAWord","getAWordRange","excludeLastChar","rowEnd","rowStart","foldLine","getFoldLine","selectLine","moveCursorBy","tabSize","getTabSize","isTabStop","firstColumnPosition","screenToDocumentPosition","leadingSpace","getDisplayLine","$useEmacsStyleLineStart","lineEnd","getDocumentLastRowColumnPosition","textEnd","moveCursorLongWordRight","rightOfCursor","nonTokenRe","tokenRe","moveCursorLongWordLeft","getFoldStringAt","leftOfCursor","$shortWordEndIndex","whitespaceRe","moveCursorShortWordRight","moveCursorShortWordLeft","$selectLongWords","rows","screenPos","docPos","lineWidgets","keepDesiredColumn","moveCursorToScreen","desiredColumn","getRangeOfMovements","ranges","r1","fromJSON","rangeList","toSingleRange","MAX_TOKEN_COUNT","Tokenizer","states","regExps","matchMappings","ruleRegExps","matchTotal","mapping","defaultToken","splitterRurles","caseInsensitive","adjustedregex","matchcount","groupCount","tokenArray","onMatch","$arrayTokens","$applyToken","removeCapturingGroups","splitRegex","createSplitterRegexp","$setMaxTokenCount","values","tokens","inChClass","lastCapture","parenOpen","parenClose","square","getLineTokens","startState","currentState","matchAttempts","skipped","TextHighlightRules","$rules","addRules","prefix","nextState","getRules","embedRules","HighlightRules","escapeRules","$embeds","getEmbeds","normalizeRules","processState","processed","stateName","includeName","toInsert","noEscape","keywordMap","createKeywordMapper","splitChar","$keywordList","getKeywords","$keywords","Behaviour","$behaviours","addBehaviours","behaviours","inherit","getBehaviours","packages","pack","addUnicodePackage","L","Ll","Lu","Lt","Lm","Lo","M","Mn","Mc","Me","N","Nd","Nl","No","P","Pd","Ps","Pe","Pi","Pf","Pc","Po","S","Sm","Sc","Sk","So","Z","Zs","Zl","Zp","C","Cc","Cf","Co","Cs","Cn","TokenIterator","initialRow","initialColumn","$session","$row","$rowTokens","getTokens","getTokenAt","$tokenIndex","stepBackward","stepForward","rowCount","getCurrentToken","getCurrentTokenRow","getCurrentTokenColumn","rowTokens","tokenIndex","getCurrentTokenPosition","Mode","$behaviour","getTokenizer","$tokenizer","$highlightRules","lineCommentStart","blockComment","toggleCommentLines","ignoreBlankLines","shouldRemove","minIndent","insertAtTabStop","regexpStart","getUseSoftTabs","uncomment","shouldInsertSpace","removeInLine","commentWithSpace","comment","insertInLine","testRemove","after","spaces","lineCommentEnd","regexpEnd","iter","minEmptyLength","toggleBlockComment","colDiff","iterator","initialRange","startRange","endRange","getNextLineIndent","tab","$getIndent","checkOutdent","autoOutdent","createWorker","createModeDelegates","$modes","delegations","scope","functionName","$delegator","transformAction","param","completionKeywords","ruleItr","aLength","$createKeywordList","getCompletions","score","$id","applyDelta","docLines","doNotValidate","Anchor","$onChange","$pointsInOrder","point1","point2","equalPointsInOrder","bColIsAfter","$clipPositionToDocument","$insertRight","point","moveIfEqual","deltaIsInsert","deltaRowShift","deltaColShift","deltaStart","deltaEnd","$getTransformedPoint","noClip","Document","textOrLines","$lines","insertMergedLines","getAllLines","getNewLineCharacter","$split","$detectNewLine","$autoNewLine","$newLineMode","setNewLineMode","newLineMode","getNewLineMode","isNewLine","getLines","getLinesForRange","insertLines","insertFullLines","removeLines","removeFullLines","insertNewLine","clippedPos","clonePos","$clipPosition","deleteFirstNewLine","deleteLastNewLine","startCol","endCol","deletedLines","removeNewLine","applyDeltas","deltas","revertDeltas","revertDelta","isInsert","$splitAndapplyLargeDelta","MAX","chunk","indexToPosition","newlineLength","positionToIndex","BackgroundTokenizer","tokenizer","running","currentLine","$worker","workerStart","endLine","startLine","processedLines","$tokenizeRow","fireUpdateEvent","setTokenizer","setDocument","scheduleStart","$updateOnChange","getState","SearchHighlight","clazz","setRegexp","MAX_RANGES","markerLayer","drawSingleLineMarker","FoldLine","foldData","folds","setFoldLine","shiftRow","sameRow","containsRow","lastEnd","isNewRow","placeholder","getNextFoldTo","kind","addRemoveChars","foldBefore","newFoldLine","foldLineNext","idxToPosition","lastFoldEndColumn","RangeList","pointIndex","excludeEdges","addList","substractPoint","containsPoint","rangeAtPoint","clipped","removeAll","lineDif","Fold","subFolds","consumePoint","restorePoint","subFold","collapseChildren","addSubFold","afterStart","restoreRange","Folding","side","getFoldsInRange","foldLines","$foldData","foundFolds","getFoldsInRangeList","getAllFolds","lastFold","docRow","startFoldLine","getNextFoldLine","getFoldedRowCount","$addFoldLine","added","$clipRangeToDocument","startFold","endFold","removeFolds","$useWrapMode","$updateWrapData","$updateRowLengthCache","$modified","addFolds","$updating","cloneFolds","foldAll","expandFolds","unfold","expandInner","isRowFolded","startFoldRow","getRowFoldEnd","getRowFoldStart","getFoldDisplayLine","textLine","lastColumn","$cloneFoldData","fd","toggleFold","tryToUnfold","bracketPos","findMatchingBracket","getCommentFoldRange","depth","getFoldWidget","getFoldWidgetRange","$foldStyles","$foldStyle","setFoldStyle","$foldMode","$setFolding","foldMode","$updateFoldWidgets","$tokenizerUpdateFoldWidgets","updateFoldWidgets","tokenizerUpdateFoldWidgets","ignoreCurrent","fw","siblings","$toggleFoldWidget","toggleFoldWidget","toggleParent","BracketMatch","chr","charBeforeCursor","$findClosingBracket","$findOpeningBracket","$brackets","bracket","typeRe","openBracket","valueIndex","closingBracket","valueLength","TextMode","EditSession","$breakpoints","$decorations","$frontMarkers","$backMarkers","$markerId","$undoSelect","onChangeFold","bgTokenizer","resetCaches","$resetRowCache","$docRowCache","$screenRowCache","$getRowCacheIndex","cacheArray","low","hi","mid","$wrapData","$rowLengthCache","removedFolds","$updateInternalDataOnChange","$fromUndo","$undoManager","ignore","$deltasDoc","$deltasFold","$informUndoManager","$deltas","setUndoManager","getUndoManager","reset","undoManager","$syncInformUndoManager","execute","mergeUndoDeltas","$defaultUndoManager","getTabString","$useSoftTabs","$mode","$indentWithTabs","$tabSize","$overwrite","setOverwrite","overwrite","getOverwrite","toggleOverwrite","addGutterDecoration","removeGutterDecoration","getBreakpoints","setBreakpoints","clearBreakpoints","setBreakpoint","clearBreakpoint","inFront","addDynamicMarker","markerId","markers","getMarkers","$searchHighlight","highlightLines","setAnnotations","annotations","getAnnotations","clearAnnotations","inToken","wordRange","setUseWorker","useWorker","getUseWorker","$useWorker","onReloadTokenizer","$modeId","$onChangeMode","$isPlaceholder","$stopWorker","$startWorker","attachToSession","wrapMethod","$wrapMethod","foldingRules","terminate","$scrollTop","setScrollTop","getScrollTop","$scrollLeft","setScrollLeft","getScrollLeft","getScreenWidth","$computeWidth","getLineWidgetMaxWidth","screenWidth","lineWidgetsWidth","lineWidgetWidth","force","$wrapLimit","longestScreenLine","foldIndex","foldStart","$getStringScreenWidth","undoChanges","dontSelect","lastUndoRange","$getUndoSelection","foldDelta","redoChanges","setUndoSelect","isUndo","fromRange","toPosition","toRange","rowDiff","collDiff","oldStart","newStart","indentRows","indentString","outdentRows","rowRange","deleteRange","size","$moveLines","$clipRowToDocument","MAX_VALUE","moveLinesUp","moveLinesDown","duplicateLines","$clipColumnToRow","$wrapLimitRange","useWrapMode","getUseWrapMode","setWrapLimitRange","adjustWrapLimit","desiredLimit","$printMargin","limits","wrapLimit","$constrainWrapLimit","getWrapLimit","setWrapLimit","getWrapLimitRange","foldLineBefore","wrapData","walkTokens","$getDisplayTokens","PLACEHOLDER_START","PLACEHOLDER_BODY","$computeWrapSplits","isFullWidth","splits","displayLength","lastSplit","lastDocSplit","isCode","$wrapAsCode","indentedSoftWrap","$indentedSoftWrap","maxIndent","addSplit","displayed","getWrapIndent","minSplit","getScreenTabSize","maxScreenColumn","screenColumn","getRowLength","getRowLineCount","getRowWrapIndent","getScreenLastRowColumn","documentToScreenColumn","getDocumentLastRowColumn","docColumn","getRowSplitData","screenToDocumentRow","screenToDocumentColumn","rowLength","rowCache","doCache","maxRow","wrapIndent","splitIndex","foldStartRow","wrapRow","screenRowOffset","getScreenLength","screenRows","$getWidgetScreenLength","$setFontMetrics","fm","$enableVarChar","getCharacterWidth","$wrap","firstLineNumber","useSoftTabs","Search","find","$matchIterator","skipCurrent","findAll","needle","$assembleRegExp","$isMultiLine","prevRange","preserveCase","matchIterator","backwards","lineIterator","$lineIterator","_callback","$disableFakeMultiline","wholeWord","modifier","caseSensitive","$assembleMultilineRegExp","HashHandler","commandKeyBinding","addCommands","$singleCommand","MultiHashHandler","addCommand","removeCommand","_buildKeyHash","keepCommand","ckb","keyId","cmdGroup","keyPart","chain","parseKeys","_addCommandToBinding","isDefault","removeCommands","bindKeys","keyList","findKeyCommand","$keyChain","CommandManager","byName","toggleRecording","$inReplay","recording","$addCommandToMacro","oldMacro","replay","trimMacro","mac","showSettingsMenu","showErrorMarker","scrollIntoView","centerSelection","prompt","gotoLine","multiSelectAction","getAllRanges","findNext","findPrevious","aceCommandGroup","navigateFileStart","navigateUp","times","navigateFileEnd","navigateDown","navigateWordLeft","navigateLineStart","navigateLeft","navigateWordRight","navigateLineEnd","navigateRight","selectPageDown","scrollPageDown","gotoPageDown","selectPageUp","scrollPageUp","gotoPageUp","jumpToMatching","$handlePaste","duplicateSelection","sortLines","modifyNumber","copyLinesUp","copyLinesDown","removeToLineStart","removeToLineEnd","removeWordLeft","removeWordRight","blockOutdent","blockIndent","splitLine","transposeLetters","transposeSelections","firstLineEndCol","selectedCount","insertLine","curLine","newRanges","exitMultiSelectMode","defaultCommands","Editor","getContainerElement","getTextAreaContainer","keyBinding","$mouseHandler","$search","$historyTracker","$initOperationListeners","_$emitInputEvent","setSession","selections","startOperation","endOperation","$opResetTimer","curOp","docChanged","selectionChanged","prevOp","commadEvent","previousCommand","scrollSelectionIntoView","animateScrolling","$mergeableCommands","$mergeUndoDeltas","prev","mergeableCommands","shouldMerge","mergeNextCommand","sequenceStartTime","keyboardHandler","$keybindingId","handler","oldSession","$onDocumentChange","$onTokenizerUpdate","$onChangeTabSize","$onChangeWrapLimit","$onChangeWrapMode","$onChangeFold","$onChangeFrontMarker","$onChangeBackMarker","$onChangeBreakpoint","$onChangeAnnotation","$onCursorChange","$onScrollTopChange","$onScrollLeftChange","$onSelectionChange","onDocumentChange","onChangeMode","onTokenizerUpdate","onChangeTabSize","onChangeWrapLimit","onChangeWrapMode","onChangeFrontMarker","onChangeBackMarker","onChangeBreakpoint","onChangeAnnotation","onCursorChange","onScrollTopChange","onScrollLeftChange","onSelectionChange","updateFull","oldEditor","cursorPos","onResize","getTheme","getFontSize","$highlightBrackets","$bracketHighlight","$highlightPending","getCursorPosition","getMatching","$highlightTags","$highlightTagPending","$tagHighlight","prevToken","$isFocused","showCursor","visualizeFocus","hideCursor","visualizeBlur","$cursorChange","updateCursor","updateLines","$updateHighlightActiveLine","scrollToY","scrollToX","$highlightActiveLine","$selectionStyle","$maxLines","$minLines","$highlightLineMarker","$selectionMarker","$highlightSelectedWord","$getSelectionHighLightRegexp","startOuter","endOuter","lineCols","updateFrontMarkers","updateBackMarkers","updateBreakpoints","updateText","getSelectedText","inVirtualSelectionMode","getBehavioursEnabled","$mergeNextCommand","lineState","shouldOutdent","lineIndent","setScrollSpeed","getScrollSpeed","setDragDelay","setSelectionStyle","setHighlightActiveLine","shouldHighlight","getHighlightActiveLine","setHighlightGutterLine","getHighlightGutterLine","setHighlightSelectedWord","getHighlightSelectedWord","setAnimatedScroll","shouldAnimate","getAnimatedScroll","setShowInvisibles","showInvisibles","getShowInvisibles","setDisplayIndentGuides","getDisplayIndentGuides","showPrintMargin","getShowPrintMargin","setPrintMarginColumn","getPrintMarginColumn","setBehavioursEnabled","enabled","setWrapBehavioursEnabled","getWrapBehavioursEnabled","setShowFoldWidgets","getShowFoldWidgets","setFadeFoldWidgets","fade","getFadeFoldWidgets","new_range","swap","originalRange","$getSelectedRows","getNumberAt","_numberRx","amount","charRange","nr","fp","decimals","nnr","toFixed","replaceRange","endPoint","totalDiff","rangeIndex","subRows","showComposition","setCompositionText","hideComposition","getFirstVisibleRow","getLastVisibleRow","isRowVisible","isRowFullyVisible","getFirstFullyVisibleRow","getLastFullyVisibleRow","$getVisibleRowCount","getScrollBottomRow","getScrollTopRow","$moveByPage","scrollToRow","scrollToLine","center","alignCursor","getCursorPositionScreen","matchType","bracketType","found","brackets","navigateTo","replaced","$tryReplace","replaceAll","getLastSearchOptions","newRange","preventScroll","revealRange","setAutoScrollEditorIntoView","shouldScroll","$scrollAnchor","scrollAnchor","onChangeSelection","onBeforeRender","onAfterRender","$pixelPos","$resetCursorStyle","$cursorStyle","cursorLayer","setSmoothBlinking","isBlinking","selectionStyle","highlightActiveLine","highlightSelectedWord","behavioursEnabled","wrapBehavioursEnabled","autoScrollEditorIntoView","keybindingId","hScrollBarAlwaysVisible","vScrollBarAlwaysVisible","highlightGutterLine","animatedScroll","printMarginColumn","printMargin","fadeFoldWidgets","showFoldWidgets","showLineNumbers","showGutter","displayIndentGuides","fontSize","fontFamily","maxLines","minLines","scrollPastEnd","fixedWidthGutter","foldStyle","UndoManager","$serializeDelta","$deserializeDelta","cloneDeltaSetsObj","deltaSets_old","fnGetModifiedDelta","deltaSets_new","deltaSet_old","deltaSet_new","delta_old","deltaSets","$doc","hasUndo","dirtyCounter","$undoStack","$redoStack","NaN","undoSelectionRange","redoSelectionRange","$deserializeDeltas","hasRedo","markClean","isClean","$serializeDeltas","Gutter","parentEl","$showFoldWidgets","gutterWidth","$updateAnnotations","$cells","rowInfo","annoText","gutterOffset","breakpoints","decorations","$firstLineNumber","lastLineNumber","gutterRenderer","$renderer","cell","textNode","foldWidget","minHeight","$fixedWidth","$padding","$computePadding","ceil","$showLineNumbers","setShowLineNumbers","getShowLineNumbers","paddingRight","Marker","setPadding","setMarkers","$getTop","drawFullLineMarker","drawScreenLineMarker","drawTextMarker","drawMultiLineMarker","firstRowScreen","stringBuilder","extraStyle","lineRange","radiusClass","extraLength","Text","$updateEolChar","EOF_CHAR","EOL_CHAR_LF","EOL_CHAR_CRLF","EOL_CHAR","TAB_CHAR","SPACE_CHAR","getLineHeight","$fontMetrics","$characterSize","measure","$pollSizeChanges","checkForSizeChanges","$pollSizeChangesTimer","$computeTabString","$tabStrings","tabStr","$indentGuideRe","spaceClass","tabClass","spaceContent","tabContent","scrollLines","lineElements","lineElementsIdx","lineElement","$renderLine","$useLineGroups","oldConfig","fragment","$renderLinesFragment","createDocumentFragment","$textToken","$renderToken","tabIdx","idx4","classToUse","renderIndentGuide","cols","$renderWrappedLine","onlyContents","splitChars","$renderSimpleLine","$getFoldLineTokens","renderTokens","addTokens","$measureNode","isIE8","Cursor","blinkInterval","smoothBlinking","cursors","addCursor","$updateCursors","$updateVisibility","$updateOpacity","blinking","restartTimer","setBlinkInterval","removeCursor","intervalId","timeoutId","blink","getPixelPosition","onScreen","$selectionMarkers","cursorIndex","pixelPos","drawCursor","$setOverwrite","ScrollBar","classSuffix","setVisible","skipEvent","onScroll","VScrollBar","$scrollbarWidth","setHeight","setInnerHeight","setScrollHeight","HScrollBar","setWidth","setInnerWidth","setScrollWidth","ScrollBarV","ScrollBarH","RenderLoop","onRender","pending","changes","CHAR_COUNT","FontMetrics","$setMeasureNodeStyles","$main","$testFractionalRect","whiteSpace","font","$measureSizes","fontWeight","boldSize","charSizes","allowBoldFonts","setPolling","$measureCharWidth","GutterLayer","MarkerLayer","TextLayer","CursorLayer","VirtualRenderer","onGutterResize","$markerBack","textLayer","$textLayer","canvas","$markerFront","$horizScroll","$vScroll","scrollBar","$scrollAnimation","scrollMargin","updateCharacterSize","$size","scrollerHeight","scrollerWidth","$dirty","$loop","$renderChanges","CHANGE_FULL","CHANGE_CURSOR","CHANGE_MARKER","CHANGE_GUTTER","CHANGE_SCROLL","CHANGE_LINES","CHANGE_TEXT","CHANGE_SIZE","CHANGE_MARKER_BACK","CHANGE_MARKER_FRONT","CHANGE_H_SCROLL","$allowBoldFonts","$updatePrintMargin","onChangeNewLineMode","$changedLines","updateFontSize","$changes","$updateSizeAsync","resizing","scrollWidth","$updateCachedSize","$extraHeight","oldSize","$showGutter","$computeLayerConfig","availableWidth","$showPrintMargin","$printMarginColumn","$animatedScroll","getShowGutter","setShowGutter","$updateGutterLineHighlight","$gutterLineHighlight","$printMarginEl","containerEl","posTop","posLeft","$composition","setScrollMargin","sm","getHScrollBarAlwaysVisible","$hScrollBarAlwaysVisible","setHScrollBarAlwaysVisible","alwaysVisible","getVScrollBarAlwaysVisible","$vScrollBarAlwaysVisible","setVScrollBarAlwaysVisible","$updateScrollBarV","$scrollPastEnd","$updateScrollBarH","$frozen","unfreeze","st","marginTop","$highlightGutterLine","$updateLines","$autosize","desiredHeight","$gutterWidth","hideScrollbars","longestLine","$getLongestLine","horizScroll","hScrollChanged","vScrollBefore","vScrollChanged","firstRowHeight","lineCount","charCount","$viewMargin","topMargin","bottomMargin","alignment","STEPS","$calcSteps","fromValue","toValue","x_min","steps","initialScroll","oldSteps","$timer","canvasPos","textToScreenCoordinates","keepTextAreaAtCursor","$themeId","cssClass","$theme","isDark","setMouseCursor","WorkerClient","topLevelNamespaces","classname","workerUrl","$sendDeltaQueue","changeListener","onMessage","nameToUrl","toUrl","normalizePath","$normalizePath","tlns","workerSrc","blobUrl","webkitURL","Worker","DOMException","$workerBlob","blobURL","callbackId","callbacks","onmessage","deltaQueue","cmd","ex","attachToDocument","blobBuilder","BlobBuilder","WebKitBlobBuilder","MozBlobBuilder","getBlob","UIWorkerClient","messageBuffer","main","emitSync","sender","processNext","setEmitSync","Main","PlaceHolder","others","mainClass","othersClass","$onUpdate","onUpdate","$others","undoStack","$undostack","$undoStackDepth","selectionBefore","other","showOtherMarkers","othersActive","hideOtherMarkers","updateAnchors","lengthDiff","inMainRange","distanceFromStart","newPos","otherPos","updateMarkers","updateMarker","undosRequired","isSamePoint","alt","ctrl","accel","selectionMode","isMultiSelect","screenAnchor","screenCursor","$enableJumpToDef","$blockSelectEnabled","addSelectionMarker","oldRange","removeSelectionMarker","tmpSel","rectSel","onSelectionInterval","newCursor","removeSelectionMarkers","rectangularRangeBlock","updateSelectionMarkers","selectMoreLines","selectMore","multiSelect","splitIntoLines","alignCursors","multiSelectCommands","isAvailable","getSelectionMarkers","$blockChangeEvents","$onAddRange","$onRemoveRange","mergeOverlappingRanges","lastRange","$initRangeList","toggleBlockSelection","includeEmptyLines","xBackwards","yBackwards","docEnd","MultiSelect","$multiselectOnSessionChange","$onMultiSelect","$onSingleSelect","onSessionChange","$checkMultiselectChange","altCursor","altDown","addAltCursorListeners","selectionMarkerCount","markerList","$onMultiSelectExec","inVirtualMode","forEachSelection","keepOrder","$byLines","reg","cmdResult","anim","buf","nl","additive","skip","screenLead","toRemove","tmp","words","stopAtFirst","sameRowRanges","maxCol","minSpace","spaceOffsets","spaceOffset","fr","lr","guessRange","$reAlignText","forceLeft","startW","textW","endW","isLeftAligned","isRightAligned","alignLeft","enableMultiselect","enableBlockSelect","FoldMode","foldingStartMarker","foldingStopMarker","indentationBlock","startLevel","openingBracketBlock","closingBracketBlock","LineWidgets","widgetManager","updateOnChange","renderWidgets","measureWidgets","_changedWidgets","$onChangeEditor","updateOnFold","_inDocument","removeLineWidget","$updateRows","noWidgets","$oldWidget","addLineWidget","zIndex","coverGutter","pixelHeight","$fold","onWidgetChanged","w1","getWidgetsAtRow","changedWidgets","fixedWidth","coverLine","fullWidth","oldWidget","gutterAnno","comparator","binarySearch","findAnnotations","sc","arrow","Renderer","_id","getElementById","tagName","oldNode","createEditSession","Builder","MSBlobBuilder","bag","builder","endings","get_blob","JsonHighlightRules","MatchingBraceOutdent","openBracePos","SAFE_INSERT_IN_TOKENS","SAFE_INSERT_BEFORE_TOKENS","contextCache","initContext","autoInsertedBrackets","autoInsertedRow","autoInsertedLineEnd","maybeInsertedBrackets","maybeInsertedRow","maybeInsertedLineStart","maybeInsertedLineEnd","getWrapped","opening","closing","CstyleBehaviour","isSaneInsertion","recordAutoInsert","recordMaybeInsert","isAutoInsertedClosing","popAutoInsertedClosing","isMaybeInsertedClosing","clearMaybeInsertedClosing","next_indent","leftChar","rightChar","rightToken","pair","stringBefore","stringAfter","wordRe","isWordBefore","isWordAfter","$matchTokenType","iterator2","BaseFoldMode","commentRegex","singleLineBlockCommentRe","tripleStarBlockCommentRe","startRegionRe","_getFoldWidgetBase","forceMultiline","getCommentRegionBlock","getSectionRange","startIndent","subRange","CStyleFoldMode","$outdent","worker","showReplaceForm","div","setEditor","$initElements","sb","replaceBox","searchOptions","regExpOption","caseSensitiveOption","wholeWordOption","searchInput","replaceInput","_this","activeInput","$searchBarKb","$closeSearchBarKb","isReplace","findPrev","$syncOptions","noMatch","replaceAndFindNext","vue","pantry","components","mainContent","topbar","bottomBar","home","_view","checkIfInView","catch","_length","A","O","T","E","D","I","F","optionMergeStrategies","productionTip","devtools","performance","errorHandler","warnHandler","ignoredElements","keyCodes","isReservedTag","isReservedAttr","isUnknownElement","getTagNamespace","parsePlatformTagName","mustUseProp","_lifecycleHooks","R","B","H","U","V","z","WXEnvironment","K","J","W","G","X","Y","watch","Q","ee","te","VUE_ENV","ne","__VUE_DEVTOOLS_GLOBAL_HOOK__","ie","oe","Reflect","ownKeys","Set","se","ce","subs","addSub","removeSub","depend","addDep","notify","ue","le","fe","pe","elm","fnContext","fnOptions","fnScopeId","componentOptions","componentInstance","raw","isStatic","isRootInsert","isComment","isCloned","isOnce","asyncFactory","asyncMeta","isAsyncPlaceholder","de","ve","he","ye","ge","__ob__","observeArray","_e","be","$e","we","vmCount","Ce","_isVue","xe","ke","Ae","Oe","Se","Te","Ne","Ee","inject","computed","provide","je","De","directives","_base","extends","mixins","Le","Ie","Re","propsData","_props","Fe","He","$parent","errorCaptured","Ue","Be","_handled","Ve","ze","Ke","Je","qe","We","Ze","MutationObserver","setImmediate","Ge","Xe","Ye","observe","characterData","Qe","et","tt","nt","passive","rt","fns","ot","hook","merged","ct","_isVList","ut","_provided","lt","slot","ft","pt","$stable","_normalized","$hasNormal","vt","ht","proxy","mt","yt","$scopedSlots","$slots","$createElement","gt","_t","bt","$t","domProps","wt","_staticTrees","xt","staticRenderFns","_renderProxy","Ct","kt","At","Ot","St","Tt","Nt","_o","_n","_s","_l","_q","_i","_m","_f","_k","_b","_v","_u","_g","_d","_p","Et","_original","_compiled","injections","slots","scopedSlots","_scopeId","_c","Ht","jt","Dt","_isDestroyed","keepAlive","prepatch","_isComponent","_parentVnode","inlineTemplate","render","Ctor","Zt","$mount","_renderChildren","$vnode","_vnode","$attrs","$listeners","_propKeys","_parentListeners","Wt","$forceUpdate","_isMounted","Qt","_inactive","tn","Yt","_directInactive","Xt","$children","$destroy","It","Mt","cid","errorComp","resolved","Ut","owners","loading","loadingComp","$on","Vt","wn","model","functional","nativeOn","abstract","_merged","Ft","is","class","Bt","zt","Kt","Jt","$off","qt","Gt","_hasHookEvent","en","nn","rn","an","sn","cn","un","createEvent","ln","vm","_watcher","pn","_watchers","deep","user","lazy","sync","active","dirty","newDeps","depIds","newDepIds","expression","cleanupDeps","evaluate","teardown","_isBeingDestroyed","dn","vn","mn","yn","gn","_computedWatchers","bn","$watch","$n","super","superOptions","sealedOptions","extendOptions","_init","kn","An","On","Sn","_uid","_componentTag","$root","$refs","_events","_data","hn","$set","$delete","$once","_update","$el","__patch__","__vue__","$nextTick","_render","Tn","Nn","KeepAlive","exclude","cacheVNode","vnodeToCache","keyToCache","created","destroyed","mounted","updated","mergeOptions","defineReactive","delete","observable","use","_installedPlugins","install","_Ctor","xn","ssrContext","En","jn","Dn","Ln","In","Fn","Pn","Rn","Hn","Bn","Vn","staticClass","zn","Kn","Jn","svg","math","qn","Wn","Zn","Gn","Xn","Yn","Qn","er","multiple","createComment","setTextContent","setStyleScope","refInFor","rr","ir","or","ar","sr","cr","oldArg","pr","def","componentUpdated","inserted","ur","modifiers","rawName","dr","vr","inheritAttrs","hr","removeAttributeNS","mr","setAttributeNS","__ieph","stopImmediatePropagation","yr","gr","Un","_transitionClasses","_prevClass","_r","br","$r","wr","Cr","xr","kr","Ar","Or","Sr","Tr","Nr","Er","Hr","dynamic","plain","jr","dynamicAttrs","Dr","attrsMap","attrsList","Lr","isDynamicArg","Ir","Mr","middle","native","nativeEvents","events","Fr","Pr","Rr","Br","Ur","exp","zr","Kr","Vr","qr","Jr","Wr","Zr","Xr","ei","Yr","Qr","currentTarget","ti","ni","ri","_value","oi","composing","_vModifiers","ai","si","ci","ui","staticStyle","fi","pi","di","setProperty","vi","mi","normalizedStyle","yi","gi","classList","bi","wi","enterClass","enterToClass","enterActiveClass","leaveClass","leaveToClass","leaveActiveClass","Ci","xi","ki","Ai","Oi","Si","Ti","ontransitionend","onwebkittransitionend","onanimationend","onwebkitanimationend","Ni","Ei","ji","Di","Li","Mi","propCount","Ii","Fi","hasTransform","Ri","_leaveCb","cancelled","transition","_enterCb","appearClass","appearToClass","appearActiveClass","beforeEnter","afterEnter","enterCancelled","beforeAppear","appear","afterAppear","appearCancelled","duration","Ui","_pending","Bi","Hi","beforeLeave","leave","afterLeave","leaveCancelled","delayLeave","Vi","zi","nodeOps","activate","pendingInsert","postpatch","hasAttribute","vmodel","Yi","Ki","_vOptions","Ji","Zi","Gi","Xi","Wi","qi","selectedIndex","initEvent","dispatchEvent","Qi","eo","__vOriginalDisplay","unbind","no","ro","io","oo","ao","so","_leaving","moveClass","uo","_moveCb","lo","fo","WebkitTransform","transitionDuration","po","Transition","TransitionGroup","beforeMount","kept","prevChildren","hasMove","_reflow","propertyName","_hasMove","HTMLUnknownElement","HTMLElement","go","vo","ho","mo","yo","staticKeys","transformNode","classBinding","genData","styleBinding","$o","wo","xo","ko","Ao","Oo","To","Eo","jo","Do","Io","Mo","Fo","Ro","Ho","Bo","Uo","Vo","zo","Ko","Jo","qo","Wo","Zo","Go","Xo","Yo","Qo","ea","ta","na","ra","ia","oa","aa","sa","ca","la","ya","rawAttrsMap","pa","for","slotScope","slotTarget","slotTargetDynamic","ha","slotName","hasBindings","ma","camel","da","alias","iterator1","va","ifConditions","ga","_a","ba","wa","Ca","$a","preTransformNode","block","else","elseif","xa","expectHTML","isPreTag","isUnaryTag","canBeLeftOpenTag","ka","Oa","Sa","Ta","Na","down","Ea","ja","Da","prevent","La","Ia","Ma","Fa","wrapListeners","cloak","Pa","transforms","dataGenFns","maybeComponent","onceId","Ra","Ha","staticRoot","staticProcessed","Ba","onceProcessed","Ua","forProcessed","za","ifProcessed","Va","Wa","Xa","Ka","staticInFor","Ja","qa","Za","Ga","Ya","Qa","es","delimiters","rs","preserveWhitespace","whitespace","forbidden","shouldKeepComment","unarySlash","shouldDecodeNewlinesForHref","shouldDecodeNewlines","lowerCasedTag","comments","outputSourceRange","fa","optimize","static","Aa","ast","tips","compileToFunctions","as","ss","cs","us","outerHTML","Timeout","clearFn","_clearFn","unref","enroll","msecs","_idleTimeoutId","_idleTimeout","unenroll","_unrefActive","_onTimeout","clearImmediate","registerImmediate","channel","messagePrefix","onGlobalMessage","nextHandle","tasksByHandle","currentlyRunningATask","attachTo","handle","runIfPresent","importScripts","postMessageIsAsynchronous","oldOnMessage","canUsePostMessage","MessageChannel","port1","port2","random","task","baseUrl","currentDir","fullMatch","origUrl","newUrl","unquotedOrigUrl","mainContentTemplate","dashboard","sdk","onboarding","about","pantryID","__awaiter","_arguments","generator","fulfilled","step","rejected","axios","API_PATH","explorer","login","signedIn","promo","emoji","snippet","fetchPantry","createSession","alert","pantryId","assign","sessionStorage","getItem","setItem","urlPantryID","_pantryId","loadFromSession","loadFromURL","Axios","mergeConfig","createInstance","defaultConfig","instance","instanceConfig","CancelToken","isCancel","spread","InterceptorManager","dispatchRequest","validator","validators","interceptors","assertOptions","boolean","requestInterceptorChain","synchronousRequestInterceptors","interceptor","runWhen","synchronous","responseInterceptorChain","newConfig","getUri","eject","transformData","throwIfCancellationRequested","throwIfRequested","reason","normalizedName","write","expires","domain","secure","cookie","toGMTString","isAbsoluteURL","combineURLs","requestedURL","relativeURL","ignoreDuplicateOf","parsed","originURL","msie","urlParsingNode","resolveURL","requestURL","pkg","thing","deprecatedWarnings","currentVerArr","isOlderVersion","thanVersion","pkgVersionArr","destVer","isDeprecated","formatMessage","desc","allowUnknown","executor","resolvePromise","configs","explorerTemplate","changelog","explorerEmpty","explorerOnboarding","basket","baskets","ttl","_expiryDate","setSeconds","getDiffOfDates","startUTC","UTC","getFullYear","getMonth","getDate","endUTC","_randomNumber","_name","_defaultPantryName","_namePantry","_defaultDesc","_description","viewBasket","DOCS_PATH","jsonEditor","basketTemplate","shareModalVisible","publicBasketPath","newData","clipboard","writeText","basketPath","confirm","refreshDashboard","getPublicBasket","sdks","author","verified","defaultBadgeClasses","homeTemplate","initialSignup","finishSignup","features","example","stats","finishOnboarding","siteKey","createNewPantry","grecaptcha","sitekey","_recaptchaResponse","getResponse","accountCreationInProgress","contactEmail","recaptchaResponse","changeView","exampleTemplate","onboardingTemplate","faq","questions","answer","topbarTemplate","headerBar","_vm","_h","showBtns","$event","onSave","locale","save","_withStripped","expandedOnStart","internalChange","expandedModes","zh","includes","scriptExports","functionalTemplate","injectStyles","scopeId","moduleIdentifier","shadowMode","__VUE_SSR_CONTEXT__","_registeredComponents","_ssrRegister","shadowRoot","_injectStyles","originalRender","existing","beforeCreate","__file"],"mappings":"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","file":"bundle.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 23);\n","'use strict';\n\nvar bind = require('./helpers/bind');\n\n// utils is a library of generic helper functions non-specific to axios\n\nvar toString = Object.prototype.toString;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Array, otherwise false\n */\nfunction isArray(val) {\n return toString.call(val) === '[object Array]';\n}\n\n/**\n * Determine if a value is undefined\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nfunction isUndefined(val) {\n return typeof val === 'undefined';\n}\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && typeof val.constructor.isBuffer === 'function' && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nfunction isArrayBuffer(val) {\n return toString.call(val) === '[object ArrayBuffer]';\n}\n\n/**\n * Determine if a value is a FormData\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nfunction isFormData(val) {\n return (typeof FormData !== 'undefined') && (val instanceof FormData);\n}\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n var result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (val.buffer instanceof ArrayBuffer);\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a String, otherwise false\n */\nfunction isString(val) {\n return typeof val === 'string';\n}\n\n/**\n * Determine if a value is a Number\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Number, otherwise false\n */\nfunction isNumber(val) {\n return typeof val === 'number';\n}\n\n/**\n * Determine if a value is an Object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Object, otherwise false\n */\nfunction isObject(val) {\n return val !== null && typeof val === 'object';\n}\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {Object} val The value to test\n * @return {boolean} True if value is a plain Object, otherwise false\n */\nfunction isPlainObject(val) {\n if (toString.call(val) !== '[object Object]') {\n return false;\n }\n\n var prototype = Object.getPrototypeOf(val);\n return prototype === null || prototype === Object.prototype;\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Date, otherwise false\n */\nfunction isDate(val) {\n return toString.call(val) === '[object Date]';\n}\n\n/**\n * Determine if a value is a File\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nfunction isFile(val) {\n return toString.call(val) === '[object File]';\n}\n\n/**\n * Determine if a value is a Blob\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nfunction isBlob(val) {\n return toString.call(val) === '[object Blob]';\n}\n\n/**\n * Determine if a value is a Function\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nfunction isFunction(val) {\n return toString.call(val) === '[object Function]';\n}\n\n/**\n * Determine if a value is a Stream\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nfunction isStream(val) {\n return isObject(val) && isFunction(val.pipe);\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nfunction isURLSearchParams(val) {\n return typeof URLSearchParams !== 'undefined' && val instanceof URLSearchParams;\n}\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n * @returns {String} The String freed of excess whitespace\n */\nfunction trim(str) {\n return str.trim ? str.trim() : str.replace(/^\\s+|\\s+$/g, '');\n}\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n */\nfunction isStandardBrowserEnv() {\n if (typeof navigator !== 'undefined' && (navigator.product === 'ReactNative' ||\n navigator.product === 'NativeScript' ||\n navigator.product === 'NS')) {\n return false;\n }\n return (\n typeof window !== 'undefined' &&\n typeof document !== 'undefined'\n );\n}\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n */\nfunction forEach(obj, fn) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (var i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n fn.call(null, obj[key], key, obj);\n }\n }\n }\n}\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n var result = {};\n function assignValue(val, key) {\n if (isPlainObject(result[key]) && isPlainObject(val)) {\n result[key] = merge(result[key], val);\n } else if (isPlainObject(val)) {\n result[key] = merge({}, val);\n } else if (isArray(val)) {\n result[key] = val.slice();\n } else {\n result[key] = val;\n }\n }\n\n for (var i = 0, l = arguments.length; i < l; i++) {\n forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n * @return {Object} The resulting value of object a\n */\nfunction extend(a, b, thisArg) {\n forEach(b, function assignValue(val, key) {\n if (thisArg && typeof val === 'function') {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n });\n return a;\n}\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n * @return {string} content value without BOM\n */\nfunction stripBOM(content) {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n}\n\nmodule.exports = {\n isArray: isArray,\n isArrayBuffer: isArrayBuffer,\n isBuffer: isBuffer,\n isFormData: isFormData,\n isArrayBufferView: isArrayBufferView,\n isString: isString,\n isNumber: isNumber,\n isObject: isObject,\n isPlainObject: isPlainObject,\n isUndefined: isUndefined,\n isDate: isDate,\n isFile: isFile,\n isBlob: isBlob,\n isFunction: isFunction,\n isStream: isStream,\n isURLSearchParams: isURLSearchParams,\n isStandardBrowserEnv: isStandardBrowserEnv,\n forEach: forEach,\n merge: merge,\n extend: extend,\n trim: trim,\n stripBOM: stripBOM\n};\n","module.exports = \"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+DQo8c3ZnDQogICB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iDQogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIg0KICAgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIg0KICAgeG1sbnM6c3ZnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyINCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyINCiAgIHhtbG5zOnNvZGlwb2RpPSJodHRwOi8vc29kaXBvZGkuc291cmNlZm9yZ2UubmV0L0RURC9zb2RpcG9kaS0wLmR0ZCINCiAgIHhtbG5zOmlua3NjYXBlPSJodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy9uYW1lc3BhY2VzL2lua3NjYXBlIg0KICAgd2lkdGg9IjIxNiINCiAgIGhlaWdodD0iMTQ0Ig0KICAgaWQ9InN2ZzQxMzYiDQogICB2ZXJzaW9uPSIxLjEiDQogICBpbmtzY2FwZTp2ZXJzaW9uPSIwLjkxIHIiDQogICBzb2RpcG9kaTpkb2NuYW1lPSJqc29uZWRpdG9yLWljb25zLnN2ZyI+DQogIDx0aXRsZQ0KICAgICBpZD0idGl0bGU2NTEyIj5KU09OIEVkaXRvciBJY29uczwvdGl0bGU+DQogIDxtZXRhZGF0YQ0KICAgICBpZD0ibWV0YWRhdGE0MTQ4Ij4NCiAgICA8cmRmOlJERj4NCiAgICAgIDxjYzpXb3JrDQogICAgICAgICByZGY6YWJvdXQ9IiI+DQogICAgICAgIDxkYzpmb3JtYXQ+aW1hZ2Uvc3ZnK3htbDwvZGM6Zm9ybWF0Pg0KICAgICAgICA8ZGM6dHlwZQ0KICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPg0KICAgICAgICA8ZGM6dGl0bGU+SlNPTiBFZGl0b3IgSWNvbnM8L2RjOnRpdGxlPg0KICAgICAgPC9jYzpXb3JrPg0KICAgIDwvcmRmOlJERj4NCiAgPC9tZXRhZGF0YT4NCiAgPGRlZnMNCiAgICAgaWQ9ImRlZnM0MTQ2IiAvPg0KICA8c29kaXBvZGk6bmFtZWR2aWV3DQogICAgIHBhZ2Vjb2xvcj0iI2ZmZmZmZiINCiAgICAgYm9yZGVyY29sb3I9IiM2NjY2NjYiDQogICAgIGJvcmRlcm9wYWNpdHk9IjEiDQogICAgIG9iamVjdHRvbGVyYW5jZT0iMTAiDQogICAgIGdyaWR0b2xlcmFuY2U9IjEwIg0KICAgICBndWlkZXRvbGVyYW5jZT0iMTAiDQogICAgIGlua3NjYXBlOnBhZ2VvcGFjaXR5PSIwIg0KICAgICBpbmtzY2FwZTpwYWdlc2hhZG93PSIyIg0KICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjE5MjAiDQogICAgIGlua3NjYXBlOndpbmRvdy1oZWlnaHQ9IjEwMjgiDQogICAgIGlkPSJuYW1lZHZpZXc0MTQ0Ig0KICAgICBzaG93Z3JpZD0idHJ1ZSINCiAgICAgaW5rc2NhcGU6em9vbT0iNCINCiAgICAgaW5rc2NhcGU6Y3g9Ijk3LjIxNzI0OCINCiAgICAgaW5rc2NhcGU6Y3k9IjU5Ljk1MDIyNyINCiAgICAgaW5rc2NhcGU6d2luZG93LXg9IjAiDQogICAgIGlua3NjYXBlOndpbmRvdy15PSIwIg0KICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIxIg0KICAgICBpbmtzY2FwZTpjdXJyZW50LWxheWVyPSJzdmc0MTM2Ig0KICAgICBzaG93Z3VpZGVzPSJmYWxzZSINCiAgICAgYm9yZGVybGF5ZXI9ImZhbHNlIg0KICAgICBpbmtzY2FwZTpzaG93cGFnZXNoYWRvdz0idHJ1ZSINCiAgICAgc2hvd2JvcmRlcj0idHJ1ZSI+DQogICAgPGlua3NjYXBlOmdyaWQNCiAgICAgICB0eXBlPSJ4eWdyaWQiDQogICAgICAgaWQ9ImdyaWQ0NjQwIg0KICAgICAgIGVtcHNwYWNpbmc9IjI0IiAvPg0KICA8L3NvZGlwb2RpOm5hbWVkdmlldz4NCiAgPCEtLSBDcmVhdGVkIHdpdGggU1ZHLWVkaXQgLSBodHRwOi8vc3ZnLWVkaXQuZ29vZ2xlY29kZS5jb20vIC0tPg0KICA8Zw0KICAgICBpZD0iZzQzOTQiPg0KICAgIDxyZWN0DQogICAgICAgeD0iNCINCiAgICAgICB5PSI0Ig0KICAgICAgIHdpZHRoPSIxNiINCiAgICAgICBoZWlnaHQ9IjE2Ig0KICAgICAgIGlkPSJzdmdfMSINCiAgICAgICBzdHlsZT0iZmlsbDojMWFhZTFjO2ZpbGwtb3BhY2l0eToxO3N0cm9rZTpub25lO3N0cm9rZS13aWR0aDowIiAvPg0KICAgIDxyZWN0DQogICAgICAgc3R5bGU9ImZpbGw6I2VjM2YyOTtmaWxsLW9wYWNpdHk6MC45NDExNzY0NztzdHJva2U6bm9uZTtzdHJva2Utd2lkdGg6MCINCiAgICAgICB4PSIyOC4wMDAwMDYiDQogICAgICAgeT0iMy45OTk5OTUiDQogICAgICAgd2lkdGg9IjE2Ig0KICAgICAgIGhlaWdodD0iMTYiDQogICAgICAgaWQ9InN2Z18xLTciIC8+DQogICAgPHJlY3QNCiAgICAgICBpZD0icmVjdDQxNjUiDQogICAgICAgaGVpZ2h0PSIxNiINCiAgICAgICB3aWR0aD0iMTYiDQogICAgICAgeT0iMy45OTk5OTUiDQogICAgICAgeD0iNTIuMDAwMDA0Ig0KICAgICAgIHN0eWxlPSJmaWxsOiM0YzRjNGM7ZmlsbC1vcGFjaXR5OjE7c3Ryb2tlOm5vbmU7c3Ryb2tlLXdpZHRoOjAiIC8+DQogICAgPHJlY3QNCiAgICAgICBzdHlsZT0iZmlsbDojNGM0YzRjO2ZpbGwtb3BhY2l0eToxO3N0cm9rZTpub25lO3N0cm9rZS13aWR0aDowIg0KICAgICAgIHg9IjE3Mi4wMDAwMiINCiAgICAgICB5PSIzLjk5OTk4NTIiDQogICAgICAgd2lkdGg9IjE2Ig0KICAgICAgIGhlaWdodD0iMTYiDQogICAgICAgaWQ9InJlY3Q0MTc1IiAvPg0KICAgIDxyZWN0DQogICAgICAgc3R5bGU9ImZpbGw6IzRjNGM0YztmaWxsLW9wYWNpdHk6MTtzdHJva2U6bm9uZTtzdHJva2Utd2lkdGg6MCINCiAgICAgICB4PSIxOTYiDQogICAgICAgeT0iMy45OTk5OTUiDQogICAgICAgd2lkdGg9IjE2Ig0KICAgICAgIGhlaWdodD0iMTYiDQogICAgICAgaWQ9InJlY3Q0MTc1LTMiIC8+DQogICAgPGcNCiAgICAgICBzdHlsZT0ic3Ryb2tlOm5vbmUiDQogICAgICAgaWQ9Imc0Mjk5Ij4NCiAgICAgIDxyZWN0DQogICAgICAgICBzdHlsZT0iZmlsbDojZmZmZmZmO2ZpbGwtb3BhY2l0eToxO3N0cm9rZTpub25lO3N0cm9rZS13aWR0aDowIg0KICAgICAgICAgaWQ9InN2Z18xLTEiDQogICAgICAgICBoZWlnaHQ9IjEuOTk5OTk4NiINCiAgICAgICAgIHdpZHRoPSI5Ljk5OTk5MjQiDQogICAgICAgICB5PSIxMC45OTk5OTgiDQogICAgICAgICB4PSI3LjAwMDAwNDgiIC8+DQogICAgICA8cmVjdA0KICAgICAgICAgc3R5bGU9ImZpbGw6I2ZmZmZmZjtmaWxsLW9wYWNpdHk6MTtzdHJva2U6bm9uZTtzdHJva2Utd2lkdGg6MCINCiAgICAgICAgIGlkPSJzdmdfMS0xLTEiDQogICAgICAgICBoZWlnaHQ9IjkuOTk5OTgzOCINCiAgICAgICAgIHdpZHRoPSIxLjk5OTk5NTUiDQogICAgICAgICB5PSI3LjAwMDAxMTQiDQogICAgICAgICB4PSIxMS4wMDAwMDUiIC8+DQogICAgPC9nPg0KICAgIDxnDQogICAgICAgc3R5bGU9InN0cm9rZTpub25lIg0KICAgICAgIHRyYW5zZm9ybT0ibWF0cml4KDAuNzA3MTA2NzgsLTAuNzA3MTA2NzgsMC43MDcxMDY3OCwwLjcwNzEwNjc4LDE5LjAyOTQzNSwxMi4wMDAwMDEpIg0KICAgICAgIGlkPSJnNDI5OS0zIj4NCiAgICAgIDxyZWN0DQogICAgICAgICBzdHlsZT0iZmlsbDojZmZmZmZmO2ZpbGwtb3BhY2l0eToxO3N0cm9rZTpub25lO3N0cm9rZS13aWR0aDowIg0KICAgICAgICAgaWQ9InN2Z18xLTEtMCINCiAgICAgICAgIGhlaWdodD0iMS45OTk5OTg2Ig0KICAgICAgICAgd2lkdGg9IjkuOTk5OTkyNCINCiAgICAgICAgIHk9IjEwLjk5OTk5OCINCiAgICAgICAgIHg9IjcuMDAwMDA0OCIgLz4NCiAgICAgIDxyZWN0DQogICAgICAgICBzdHlsZT0iZmlsbDojZmZmZmZmO2ZpbGwtb3BhY2l0eToxO3N0cm9rZTpub25lO3N0cm9rZS13aWR0aDowIg0KICAgICAgICAgaWQ9InN2Z18xLTEtMS05Ig0KICAgICAgICAgaGVpZ2h0PSI5Ljk5OTk4MzgiDQogICAgICAgICB3aWR0aD0iMS45OTk5OTU1Ig0KICAgICAgICAgeT0iNy4wMDAwMTE0Ig0KICAgICAgICAgeD0iMTEuMDAwMDA1IiAvPg0KICAgIDwvZz4NCiAgICA8cmVjdA0KICAgICAgIHN0eWxlPSJmaWxsOiNmZmZmZmY7ZmlsbC1vcGFjaXR5OjE7c3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjAiDQogICAgICAgeD0iNTUuMDAwMDA0Ig0KICAgICAgIHk9IjcuMDAwMDA0OCINCiAgICAgICB3aWR0aD0iNi45OTk5OTA5Ig0KICAgICAgIGhlaWdodD0iNi45OTk5OTA1Ig0KICAgICAgIGlkPSJzdmdfMS03LTUiIC8+DQogICAgPHJlY3QNCiAgICAgICBpZD0icmVjdDQzNTQiDQogICAgICAgaGVpZ2h0PSI2Ljk5OTk5MDUiDQogICAgICAgd2lkdGg9IjYuOTk5OTkwOSINCiAgICAgICB5PSIxMC4wMDAwMSINCiAgICAgICB4PSI1OCINCiAgICAgICBzdHlsZT0iZmlsbDojZmZmZmZmO2ZpbGwtb3BhY2l0eToxO3N0cm9rZTojNGM0YzRjO3N0cm9rZS13aWR0aDoyO3N0cm9rZS1taXRlcmxpbWl0OjQ7c3Ryb2tlLWRhc2hhcnJheTpub25lO3N0cm9rZS1vcGFjaXR5OjEiIC8+DQogICAgPHJlY3QNCiAgICAgICBzdHlsZT0iZmlsbDojZmZmZmZmO2ZpbGwtb3BhY2l0eToxO3N0cm9rZTojM2M4MGRmO3N0cm9rZS13aWR0aDowO3N0cm9rZS1taXRlcmxpbWl0OjQ7c3Ryb2tlLWRhc2hhcnJheTpub25lO3N0cm9rZS1vcGFjaXR5OjAuOTQxMTc2NDciDQogICAgICAgeD0iNTguMDAwMDA0Ig0KICAgICAgIHk9IjEwLjAwMDAwNSINCiAgICAgICB3aWR0aD0iNi45OTk5OTA5Ig0KICAgICAgIGhlaWdodD0iNi45OTk5OTA1Ig0KICAgICAgIGlkPSJzdmdfMS03LTUtNyIgLz4NCiAgICA8Zw0KICAgICAgIGlkPSJnNDM3OCI+DQogICAgICA8cmVjdA0KICAgICAgICAgaWQ9InN2Z18xLTctNS0zIg0KICAgICAgICAgaGVpZ2h0PSIxLjk5OTk5NjUiDQogICAgICAgICB3aWR0aD0iNy45OTk5OTA5Ig0KICAgICAgICAgeT0iMTAuOTk5OTk5Ig0KICAgICAgICAgeD0iMTk4Ig0KICAgICAgICAgc3R5bGU9ImZpbGw6I2ZmZmZmZjtmaWxsLW9wYWNpdHk6MTtzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MCIgLz4NCiAgICAgIDxyZWN0DQogICAgICAgICBzdHlsZT0iZmlsbDojZmZmZmZmO2ZpbGwtb3BhY2l0eToxO3N0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDowIg0KICAgICAgICAgeD0iMTk4Ig0KICAgICAgICAgeT0iNy4wMDAwMDA1Ig0KICAgICAgICAgd2lkdGg9IjExLjk5OTk5NSINCiAgICAgICAgIGhlaWdodD0iMS45OTk5OTQ2Ig0KICAgICAgICAgaWQ9InJlY3Q0Mzc0IiAvPg0KICAgICAgPHJlY3QNCiAgICAgICAgIHN0eWxlPSJmaWxsOiNmZmZmZmY7ZmlsbC1vcGFjaXR5OjE7c3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjAiDQogICAgICAgICB4PSIxOTgiDQogICAgICAgICB5PSIxNC45OTk5OTYiDQogICAgICAgICB3aWR0aD0iMy45OTk5OTI4Ig0KICAgICAgICAgaGVpZ2h0PSIxLjk5OTk5OTUiDQogICAgICAgICBpZD0icmVjdDQzNzYiIC8+DQogICAgPC9nPg0KICAgIDxnDQogICAgICAgaWQ9Imc0MzgzIg0KICAgICAgIHRyYW5zZm9ybT0ibWF0cml4KDEsMCwwLC0xLC0yMy45OTk5OTUsMjMuOTk5OTk1KSI+DQogICAgICA8cmVjdA0KICAgICAgICAgc3R5bGU9ImZpbGw6I2ZmZmZmZjtmaWxsLW9wYWNpdHk6MTtzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MCINCiAgICAgICAgIHg9IjE5OCINCiAgICAgICAgIHk9IjEwLjk5OTk5OSINCiAgICAgICAgIHdpZHRoPSI3Ljk5OTk5MDkiDQogICAgICAgICBoZWlnaHQ9IjEuOTk5OTk2NSINCiAgICAgICAgIGlkPSJyZWN0NDM4NSIgLz4NCiAgICAgIDxyZWN0DQogICAgICAgICBpZD0icmVjdDQzODciDQogICAgICAgICBoZWlnaHQ9IjEuOTk5OTk0NiINCiAgICAgICAgIHdpZHRoPSIxMS45OTk5OTUiDQogICAgICAgICB5PSI3LjAwMDAwMDUiDQogICAgICAgICB4PSIxOTgiDQogICAgICAgICBzdHlsZT0iZmlsbDojZmZmZmZmO2ZpbGwtb3BhY2l0eToxO3N0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDowIiAvPg0KICAgICAgPHJlY3QNCiAgICAgICAgIGlkPSJyZWN0NDM4OSINCiAgICAgICAgIGhlaWdodD0iMS45OTk5OTk1Ig0KICAgICAgICAgd2lkdGg9IjMuOTk5OTkyOCINCiAgICAgICAgIHk9IjE0Ljk5OTk5NiINCiAgICAgICAgIHg9IjE5OCINCiAgICAgICAgIHN0eWxlPSJmaWxsOiNmZmZmZmY7ZmlsbC1vcGFjaXR5OjE7c3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjAiIC8+DQogICAgPC9nPg0KICAgIDxyZWN0DQogICAgICAgeT0iMy45OTk5MTk5Ig0KICAgICAgIHg9Ijc2Ig0KICAgICAgIGhlaWdodD0iMTYiDQogICAgICAgd2lkdGg9IjE2Ig0KICAgICAgIGlkPSJyZWN0Mzc1NC00Ig0KICAgICAgIHN0eWxlPSJmaWxsOiM0YzRjNGM7ZmlsbC1vcGFjaXR5OjE7c3Ryb2tlOm5vbmUiIC8+DQogICAgPHBhdGgNCiAgICAgICBzb2RpcG9kaTpub2RldHlwZXM9ImNjY2NjY2NjIg0KICAgICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiDQogICAgICAgaWQ9InBhdGg0MzUxIg0KICAgICAgIGQ9Im0gODUuMTA0NDcsNi4wMTU3Mzg0IC0wLjAxNTYsMS40MDYzIGMgMy4wMjY2OSwtMC4yNDAyIDAuMzMwMDgsMy42NTA3OTk2IDIuNDg0MzgsNC41NzgwOTk2IC0yLjE4Njk0LDEuMDkzOCAwLjQ5MTkxLDQuOTA2OSAtMi40NTMxMyw0LjU3ODEgbCAtMC4wMTU2LDEuNDIxOSBjIDUuNzA4MjgsMC41NTkgMS4wMzI2NCwtNS4xMDA1IDQuNzAzMTMsLTUuMjY1NiBsIDAsLTEuNDA2MyBjIC0zLjYxMzAzLC0wLjAyNyAxLjExODkzLC01LjcwNjk5OTYgLTQuNzAzMTMsLTUuMzEyNDk5NiB6Ig0KICAgICAgIHN0eWxlPSJmaWxsOiNmZmZmZmY7ZmlsbC1vcGFjaXR5OjE7c3Ryb2tlOiNmZmZmZmY7c3Ryb2tlLXdpZHRoOjAuMjtzdHJva2UtbGluZWNhcDpidXR0O3N0cm9rZS1saW5lam9pbjptaXRlcjtzdHJva2UtbWl0ZXJsaW1pdDo0O3N0cm9rZS1kYXNoYXJyYXk6bm9uZTtzdHJva2Utb3BhY2l0eToxIiAvPg0KICAgIDxwYXRoDQogICAgICAgc29kaXBvZGk6bm9kZXR5cGVzPSJjY2NjY2NjYyINCiAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIg0KICAgICAgIGlkPSJwYXRoNDM1MS05Ig0KICAgICAgIGQ9Im0gODIuNzgxMjUsNS45OTg0Mzg0IDAuMDE1NiwxLjQwNjMgYyAtMy4wMjY2OCwtMC4yNDAyIC0wLjMzMDA3LDMuNjUwNjk5NiAtMi40ODQzNyw0LjU3ODA5OTYgMi4xODY5NCwxLjA5MzggLTAuNDkxOTIsNC45MDY5IDIuNDUzMTIsNC41NzgxIGwgMC4wMTU2LDEuNDIxOSBjIC01LjcwODI3LDAuNTU5IC0xLjAzMjYzLC01LjEwMDQgLTQuNzAzMTIsLTUuMjY1NiBsIDAsLTEuNDA2MyBjIDMuNjEzMDMsLTAuMDI3IC0xLjExODk0LC01LjcwNzA5OTYgNC43MDMxMiwtNS4zMTI0OTk2IHoiDQogICAgICAgc3R5bGU9ImZpbGw6I2ZmZmZmZjtmaWxsLW9wYWNpdHk6MTtzdHJva2U6I2ZmZmZmZjtzdHJva2Utd2lkdGg6MC4yO3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1taXRlcmxpbWl0OjQ7c3Ryb2tlLWRhc2hhcnJheTpub25lO3N0cm9rZS1vcGFjaXR5OjEiIC8+DQogICAgPHJlY3QNCiAgICAgICB5PSIzLjk5OTkxOTkiDQogICAgICAgeD0iMTAwIg0KICAgICAgIGhlaWdodD0iMTYiDQogICAgICAgd2lkdGg9IjE2Ig0KICAgICAgIGlkPSJyZWN0Mzc1NC0yNSINCiAgICAgICBzdHlsZT0iZmlsbDojNGM0YzRjO2ZpbGwtb3BhY2l0eToxO3N0cm9rZTpub25lIiAvPg0KICAgIDxwYXRoDQogICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCINCiAgICAgICBpZD0icGF0aDI5ODciDQogICAgICAgZD0ibSAxMDMuNzE5LDUuNjcxOTM4NCAwLDEyLjcxODc5OTYgMy4wMzEyNSwwIDAsLTEuNTMxMyAtMS4zNDM3NSwwIDAsLTkuNjI0OTk5NiAxLjM3NSwwIDAsLTEuNTYyNSB6Ig0KICAgICAgIHN0eWxlPSJmaWxsOiNmZmZmZmY7ZmlsbC1vcGFjaXR5OjE7c3Ryb2tlOm5vbmUiIC8+DQogICAgPHBhdGgNCiAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIg0KICAgICAgIGlkPSJwYXRoMjk4Ny0xIg0KICAgICAgIGQ9Im0gMTEyLjIxODUsNS42NzIxOTg0IDAsMTIuNzE4Nzk5NiAtMy4wMzEyNSwwIDAsLTEuNTMxMyAxLjM0Mzc1LDAgMCwtOS42MjQ5OTk2IC0xLjM3NSwwIDAsLTEuNTYyNSB6Ig0KICAgICAgIHN0eWxlPSJmaWxsOiNmZmZmZmY7ZmlsbC1vcGFjaXR5OjE7c3Ryb2tlOm5vbmUiIC8+DQogICAgPHJlY3QNCiAgICAgICB5PSIzLjk5OTkxOTkiDQogICAgICAgeD0iMTI0Ig0KICAgICAgIGhlaWdodD0iMTYiDQogICAgICAgd2lkdGg9IjE2Ig0KICAgICAgIGlkPSJyZWN0Mzc1NC03MyINCiAgICAgICBzdHlsZT0iZmlsbDojNGM0YzRjO2ZpbGwtb3BhY2l0eToxO3N0cm9rZTpub25lIiAvPg0KICAgIDxwYXRoDQogICAgICAgc29kaXBvZGk6bm9kZXR5cGVzPSJjY2NjY2NjY2MiDQogICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCINCiAgICAgICBpZD0icGF0aDM3ODAiDQogICAgICAgZD0ibSAxMjYuMjgyNCwxNy42MDI5MzggMS43ODk1NywwIDEuMTQxNDMsLTIuODY0MSA1LjY1MzY0LDAgMS4xNDg1NiwyLjg2NDEgMS43NjU2NSwwIC00Ljc4Njg3LC0xMS4xNjEwOTk2IC0xLjkxOTAzLDAgeiINCiAgICAgICBzdHlsZT0iZmlsbDojZmZmZmZmO2ZpbGwtb3BhY2l0eToxO3N0cm9rZTpub25lIiAvPg0KICAgIDxwYXRoDQogICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCINCiAgICAgICBpZD0icGF0aDM3ODIiDQogICAgICAgZD0ibSAxMjkuNzI3MDQsMTMuNDc4ODM4IDQuNjA4NTIsMC4wMSAtMi4zMDQyNiwtNS41NDk3OTk2IHoiDQogICAgICAgc3R5bGU9ImZpbGw6IzRjNGM0YztmaWxsLW9wYWNpdHk6MTtzdHJva2U6bm9uZSIgLz4NCiAgICA8cmVjdA0KICAgICAgIHk9IjMuOTk5OTE5OSINCiAgICAgICB4PSIxNDgiDQogICAgICAgaGVpZ2h0PSIxNiINCiAgICAgICB3aWR0aD0iMTYiDQogICAgICAgaWQ9InJlY3QzNzU0LTM1Ig0KICAgICAgIHN0eWxlPSJmaWxsOiM0YzRjNGM7ZmlsbC1vcGFjaXR5OjE7c3Ryb2tlOm5vbmUiIC8+DQogICAgPHBhdGgNCiAgICAgICBzb2RpcG9kaTpub2RldHlwZXM9ImNjY2NjY2MiDQogICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCINCiAgICAgICBpZD0icGF0aDUwMDgtMiINCiAgICAgICBkPSJtIDE1Ni40NzY1NSw1Ljg5MTczODQgMCwyLjE3OTcgMC40NjA5MywyLjM5ODM5OTYgMS44MjgxMywwIDAuMzk4NDQsLTIuMzk4Mzk5NiAwLC0yLjE3OTcgeiINCiAgICAgICBzdHlsZT0iZmlsbDojZmZmZmZmO2ZpbGwtb3BhY2l0eToxO3N0cm9rZTpub25lIiAvPg0KICAgIDxwYXRoDQogICAgICAgc29kaXBvZGk6bm9kZXR5cGVzPSJjY2NjY2NjIg0KICAgICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiDQogICAgICAgaWQ9InBhdGg1MDA4LTItOCINCiAgICAgICBkPSJtIDE1Mi41MTU2MSw1Ljg5MDYzODQgMCwyLjE3OTcgMC40NjA5NCwyLjM5ODM5OTYgMS44MjgxMiwwIDAuMzk4NDQsLTIuMzk4Mzk5NiAwLC0yLjE3OTcgeiINCiAgICAgICBzdHlsZT0iZmlsbDojZmZmZmZmO2ZpbGwtb3BhY2l0eToxO3N0cm9rZTpub25lIiAvPg0KICA8L2c+DQogIDxyZWN0DQogICAgIHg9IjQiDQogICAgIHk9IjI3Ljk5OTk5NCINCiAgICAgd2lkdGg9IjE2Ig0KICAgICBoZWlnaHQ9IjE2Ig0KICAgICBpZD0icmVjdDQ0MzIiDQogICAgIHN0eWxlPSJmaWxsOiNkM2QzZDM7ZmlsbC1vcGFjaXR5OjE7c3Ryb2tlOm5vbmU7c3Ryb2tlLXdpZHRoOjAiIC8+DQogIDxyZWN0DQogICAgIHN0eWxlPSJmaWxsOiNkM2QzZDM7ZmlsbC1vcGFjaXR5OjE7c3Ryb2tlOm5vbmU7c3Ryb2tlLXdpZHRoOjAiDQogICAgIHg9IjI4LjAwMDAwNiINCiAgICAgeT0iMjcuOTk5OTkiDQogICAgIHdpZHRoPSIxNiINCiAgICAgaGVpZ2h0PSIxNiINCiAgICAgaWQ9InJlY3Q0NDM0IiAvPg0KICA8cmVjdA0KICAgICBpZD0icmVjdDQ0MzYiDQogICAgIGhlaWdodD0iMTYiDQogICAgIHdpZHRoPSIxNiINCiAgICAgeT0iMjcuOTk5OTkiDQogICAgIHg9IjUyLjAwMDAwNCINCiAgICAgc3R5bGU9ImZpbGw6I2QzZDNkMztmaWxsLW9wYWNpdHk6MTtzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MCIgLz4NCiAgPHJlY3QNCiAgICAgc3R5bGU9ImZpbGw6I2QzZDNkMztzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MCINCiAgICAgeD0iMTcyLjAwMDAyIg0KICAgICB5PSIyNy45OTk5ODEiDQogICAgIHdpZHRoPSIxNiINCiAgICAgaGVpZ2h0PSIxNiINCiAgICAgaWQ9InJlY3Q0NDQ2IiAvPg0KICA8cmVjdA0KICAgICBzdHlsZT0iZmlsbDojZDNkM2QzO3N0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDowIg0KICAgICB4PSIxOTYiDQogICAgIHk9IjI3Ljk5OTk5Ig0KICAgICB3aWR0aD0iMTYiDQogICAgIGhlaWdodD0iMTYiDQogICAgIGlkPSJyZWN0NDQ0OCIgLz4NCiAgPGcNCiAgICAgaWQ9Imc0NDY2Ig0KICAgICBzdHlsZT0ic3Ryb2tlOm5vbmUiDQogICAgIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAsMjMuOTk5OTk1KSI+DQogICAgPHJlY3QNCiAgICAgICBzdHlsZT0iZmlsbDojZmZmZmZmO2ZpbGwtb3BhY2l0eToxO3N0cm9rZTpub25lO3N0cm9rZS13aWR0aDowIg0KICAgICAgIGlkPSJyZWN0NDQ2OCINCiAgICAgICBoZWlnaHQ9IjEuOTk5OTk4NiINCiAgICAgICB3aWR0aD0iOS45OTk5OTI0Ig0KICAgICAgIHk9IjEwLjk5OTk5OCINCiAgICAgICB4PSI3LjAwMDAwNDgiIC8+DQogICAgPHJlY3QNCiAgICAgICBzdHlsZT0iZmlsbDojZmZmZmZmO2ZpbGwtb3BhY2l0eToxO3N0cm9rZTpub25lO3N0cm9rZS13aWR0aDowIg0KICAgICAgIGlkPSJyZWN0NDQ3MCINCiAgICAgICBoZWlnaHQ9IjkuOTk5OTgzOCINCiAgICAgICB3aWR0aD0iMS45OTk5OTU1Ig0KICAgICAgIHk9IjcuMDAwMDExNCINCiAgICAgICB4PSIxMS4wMDAwMDUiIC8+DQogIDwvZz4NCiAgPGcNCiAgICAgdHJhbnNmb3JtPSJtYXRyaXgoMC43MDcxMDY3OCwtMC43MDcxMDY3OCwwLjcwNzEwNjc4LDAuNzA3MTA2NzgsMTkuMDI5NDM1LDM1Ljk5OTk5NikiDQogICAgIGlkPSJnNDQ3MiINCiAgICAgc3R5bGU9InN0cm9rZTpub25lIj4NCiAgICA8cmVjdA0KICAgICAgIHN0eWxlPSJmaWxsOiNmZmZmZmY7ZmlsbC1vcGFjaXR5OjE7c3Ryb2tlOm5vbmU7c3Ryb2tlLXdpZHRoOjAiDQogICAgICAgaWQ9InJlY3Q0NDc0Ig0KICAgICAgIGhlaWdodD0iMS45OTk5OTg2Ig0KICAgICAgIHdpZHRoPSI5Ljk5OTk5MjQiDQogICAgICAgeT0iMTAuOTk5OTk4Ig0KICAgICAgIHg9IjcuMDAwMDA0OCIgLz4NCiAgICA8cmVjdA0KICAgICAgIHN0eWxlPSJmaWxsOiNmZmZmZmY7ZmlsbC1vcGFjaXR5OjE7c3Ryb2tlOm5vbmU7c3Ryb2tlLXdpZHRoOjAiDQogICAgICAgaWQ9InJlY3Q0NDc2Ig0KICAgICAgIGhlaWdodD0iOS45OTk5ODM4Ig0KICAgICAgIHdpZHRoPSIxLjk5OTk5NTUiDQogICAgICAgeT0iNy4wMDAwMTE0Ig0KICAgICAgIHg9IjExLjAwMDAwNSIgLz4NCiAgPC9nPg0KICA8cmVjdA0KICAgICBzdHlsZT0iZmlsbDojZmZmZmZmO2ZpbGwtb3BhY2l0eToxO3N0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDowIg0KICAgICB4PSI1NS4wMDAwMDQiDQogICAgIHk9IjMxIg0KICAgICB3aWR0aD0iNi45OTk5OTA5Ig0KICAgICBoZWlnaHQ9IjYuOTk5OTkwNSINCiAgICAgaWQ9InJlY3Q0NDc4IiAvPg0KICA8cmVjdA0KICAgICBpZD0icmVjdDQ0ODAiDQogICAgIGhlaWdodD0iNi45OTk5OTA1Ig0KICAgICB3aWR0aD0iNi45OTk5OTA5Ig0KICAgICB5PSIzNC4wMDAwMDgiDQogICAgIHg9IjU4Ig0KICAgICBzdHlsZT0iZmlsbDojZmZmZmZmO2ZpbGwtb3BhY2l0eToxO3N0cm9rZTojZDNkM2QzO3N0cm9rZS13aWR0aDoyO3N0cm9rZS1taXRlcmxpbWl0OjQ7c3Ryb2tlLWRhc2hhcnJheTpub25lIiAvPg0KICA8cmVjdA0KICAgICBzdHlsZT0iZmlsbDojZmZmZmZmO2ZpbGwtb3BhY2l0eToxO3N0cm9rZTojZDNkM2QzO3N0cm9rZS13aWR0aDowO3N0cm9rZS1taXRlcmxpbWl0OjQ7c3Ryb2tlLWRhc2hhcnJheTpub25lIg0KICAgICB4PSI1OC4wMDAwMDQiDQogICAgIHk9IjM0LjAwMDAwNCINCiAgICAgd2lkdGg9IjYuOTk5OTkwOSINCiAgICAgaGVpZ2h0PSI2Ljk5OTk5MDUiDQogICAgIGlkPSJyZWN0NDQ4MiIgLz4NCiAgPGcNCiAgICAgaWQ9Imc0NDg0Ig0KICAgICB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwLDIzLjk5OTk5NSkiPg0KICAgIDxyZWN0DQogICAgICAgaWQ9InJlY3Q0NDg2Ig0KICAgICAgIGhlaWdodD0iMS45OTk5OTY1Ig0KICAgICAgIHdpZHRoPSI3Ljk5OTk5MDkiDQogICAgICAgeT0iMTAuOTk5OTk5Ig0KICAgICAgIHg9IjE5OCINCiAgICAgICBzdHlsZT0iZmlsbDojZmZmZmZmO2ZpbGwtb3BhY2l0eToxO3N0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDowIiAvPg0KICAgIDxyZWN0DQogICAgICAgc3R5bGU9ImZpbGw6I2ZmZmZmZjtmaWxsLW9wYWNpdHk6MTtzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MCINCiAgICAgICB4PSIxOTgiDQogICAgICAgeT0iNy4wMDAwMDA1Ig0KICAgICAgIHdpZHRoPSIxMS45OTk5OTUiDQogICAgICAgaGVpZ2h0PSIxLjk5OTk5NDYiDQogICAgICAgaWQ9InJlY3Q0NDg4IiAvPg0KICAgIDxyZWN0DQogICAgICAgc3R5bGU9ImZpbGw6I2ZmZmZmZjtmaWxsLW9wYWNpdHk6MTtzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MCINCiAgICAgICB4PSIxOTgiDQogICAgICAgeT0iMTQuOTk5OTk2Ig0KICAgICAgIHdpZHRoPSIzLjk5OTk5MjgiDQogICAgICAgaGVpZ2h0PSIxLjk5OTk5OTUiDQogICAgICAgaWQ9InJlY3Q0NDkwIiAvPg0KICA8L2c+DQogIDxnDQogICAgIGlkPSJnNDQ5MiINCiAgICAgdHJhbnNmb3JtPSJtYXRyaXgoMSwwLDAsLTEsLTIzLjk5OTk5NSw0Ny45OTk5OSkiPg0KICAgIDxyZWN0DQogICAgICAgc3R5bGU9ImZpbGw6I2ZmZmZmZjtmaWxsLW9wYWNpdHk6MTtzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MCINCiAgICAgICB4PSIxOTgiDQogICAgICAgeT0iMTAuOTk5OTk5Ig0KICAgICAgIHdpZHRoPSI3Ljk5OTk5MDkiDQogICAgICAgaGVpZ2h0PSIxLjk5OTk5NjUiDQogICAgICAgaWQ9InJlY3Q0NDk0IiAvPg0KICAgIDxyZWN0DQogICAgICAgaWQ9InJlY3Q0NDk2Ig0KICAgICAgIGhlaWdodD0iMS45OTk5OTQ2Ig0KICAgICAgIHdpZHRoPSIxMS45OTk5OTUiDQogICAgICAgeT0iNy4wMDAwMDA1Ig0KICAgICAgIHg9IjE5OCINCiAgICAgICBzdHlsZT0iZmlsbDojZmZmZmZmO2ZpbGwtb3BhY2l0eToxO3N0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDowIiAvPg0KICAgIDxyZWN0DQogICAgICAgaWQ9InJlY3Q0NDk4Ig0KICAgICAgIGhlaWdodD0iMS45OTk5OTk1Ig0KICAgICAgIHdpZHRoPSIzLjk5OTk5MjgiDQogICAgICAgeT0iMTQuOTk5OTk2Ig0KICAgICAgIHg9IjE5OCINCiAgICAgICBzdHlsZT0iZmlsbDojZmZmZmZmO2ZpbGwtb3BhY2l0eToxO3N0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDowIiAvPg0KICA8L2c+DQogIDxyZWN0DQogICAgIHN0eWxlPSJmaWxsOiNkM2QzZDM7ZmlsbC1vcGFjaXR5OjE7c3Ryb2tlOm5vbmUiDQogICAgIGlkPSJyZWN0Mzc1NC04Ig0KICAgICB3aWR0aD0iMTYiDQogICAgIGhlaWdodD0iMTYiDQogICAgIHg9Ijc2Ig0KICAgICB5PSIyNy45OTk5MiIgLz4NCiAgPHBhdGgNCiAgICAgc3R5bGU9ImZpbGw6I2ZmZmZmZjtmaWxsLW9wYWNpdHk6MTtzdHJva2U6I2ZmZmZmZjtzdHJva2Utd2lkdGg6MC4yO3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1taXRlcmxpbWl0OjQ7c3Ryb2tlLWRhc2hhcnJheTpub25lO3N0cm9rZS1vcGFjaXR5OjEiDQogICAgIGQ9Im0gODUuMTA0NDgsMzAuMDE1NTM3IC0wLjAxNTYsMS40MDYzIGMgMy4wMjY2OCwtMC4yNDAyIDAuMzMwMDcsMy42NTA4IDIuNDg0MzgsNC41NzgxIC0yLjE4Njk1LDEuMDkzOCAwLjQ5MTkxLDQuOTA2ODggLTIuNDUzMTMsNC41NzgwOCBsIC0wLjAxNTYsMS40MjE5IGMgNS43MDgyNywwLjU1OSAxLjAzMjYzLC01LjEwMDQ4IDQuNzAzMTMsLTUuMjY1NTggbCAwLC0xLjQwNjMgYyAtMy42MTMwNCwtMC4wMjcgMS4xMTg5MywtNS43MDcgLTQuNzAzMTMsLTUuMzEyNSB6Ig0KICAgICBpZD0icGF0aDQzNTEtMSINCiAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCINCiAgICAgc29kaXBvZGk6bm9kZXR5cGVzPSJjY2NjY2NjYyIgLz4NCiAgPHBhdGgNCiAgICAgc3R5bGU9ImZpbGw6I2ZmZmZmZjtmaWxsLW9wYWNpdHk6MTtzdHJva2U6I2ZmZmZmZjtzdHJva2Utd2lkdGg6MC4yO3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1taXRlcmxpbWl0OjQ7c3Ryb2tlLWRhc2hhcnJheTpub25lO3N0cm9rZS1vcGFjaXR5OjEiDQogICAgIGQ9Im0gODIuNzgxMjYsMjkuOTk4MjM3IDAuMDE1NiwxLjQwNjMgYyAtMy4wMjY2OCwtMC4yNDAyIC0wLjMzMDA4LDMuNjUwNyAtMi40ODQzOCw0LjU3ODEgMi4xODY5NCwxLjA5MzggLTAuNDkxOTEsNC45MDY4OCAyLjQ1MzEzLDQuNTc4MDggbCAwLjAxNTYsMS40MjE5IGMgLTUuNzA4MjgsMC41NTkgLTEuMDMyNjQsLTUuMTAwMzggLTQuNzAzMTMsLTUuMjY1NTggbCAwLC0xLjQwNjMgYyAzLjYxMzAzLC0wLjAyNyAtMS4xMTg5MywtNS43MDcxIDQuNzAzMTMsLTUuMzEyNSB6Ig0KICAgICBpZD0icGF0aDQzNTEtOS01Ig0KICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIg0KICAgICBzb2RpcG9kaTpub2RldHlwZXM9ImNjY2NjY2NjIiAvPg0KICA8cmVjdA0KICAgICBzdHlsZT0iZmlsbDojZDNkM2QzO2ZpbGwtb3BhY2l0eToxO3N0cm9rZTpub25lIg0KICAgICBpZD0icmVjdDM3NTQtNjUiDQogICAgIHdpZHRoPSIxNiINCiAgICAgaGVpZ2h0PSIxNiINCiAgICAgeD0iMTAwIg0KICAgICB5PSIyNy45OTk5MiIgLz4NCiAgPHBhdGgNCiAgICAgc3R5bGU9ImZpbGw6I2ZmZmZmZjtmaWxsLW9wYWNpdHk6MTtzdHJva2U6bm9uZSINCiAgICAgZD0ibSAxMDMuNzE5LDI5LjY3MTkzNyAwLDEyLjcxODc4IDMuMDMxMjUsMCAwLC0xLjUzMTMgLTEuMzQzNzUsMCAwLC05LjYyNDk4IDEuMzc1LDAgMCwtMS41NjI1IHoiDQogICAgIGlkPSJwYXRoMjk4Ny04Ig0KICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIiAvPg0KICA8cGF0aA0KICAgICBzdHlsZT0iZmlsbDojZmZmZmZmO2ZpbGwtb3BhY2l0eToxO3N0cm9rZTpub25lIg0KICAgICBkPSJtIDExMi4yMTg1LDI5LjY3MTkzNyAwLDEyLjcxODc4IC0zLjAzMTI1LDAgMCwtMS41MzEzIDEuMzQzNzUsMCAwLC05LjYyNDk4IC0xLjM3NSwwIDAsLTEuNTYyNSB6Ig0KICAgICBpZD0icGF0aDI5ODctMS05Ig0KICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIiAvPg0KICA8cmVjdA0KICAgICBzdHlsZT0iZmlsbDojZDNkM2QzO2ZpbGwtb3BhY2l0eToxO3N0cm9rZTpub25lIg0KICAgICBpZD0icmVjdDM3NTQtOTIiDQogICAgIHdpZHRoPSIxNiINCiAgICAgaGVpZ2h0PSIxNiINCiAgICAgeD0iMTI0Ig0KICAgICB5PSIyNy45OTk5MiIgLz4NCiAgPHBhdGgNCiAgICAgc3R5bGU9ImZpbGw6I2ZmZmZmZjtmaWxsLW9wYWNpdHk6MTtzdHJva2U6bm9uZSINCiAgICAgZD0ibSAxMjYuMjgyNCw0MS42MDI5MTcgMS43ODk1NywwIDEuMTQxNDMsLTIuODY0MDggNS42NTM2NCwwIDEuMTQ4NTYsMi44NjQwOCAxLjc2NTY1LDAgLTQuNzg2ODcsLTExLjE2MTA4IC0xLjkxOTAyLDAgeiINCiAgICAgaWQ9InBhdGgzNzgwLTkiDQogICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiDQogICAgIHNvZGlwb2RpOm5vZGV0eXBlcz0iY2NjY2NjY2NjIiAvPg0KICA8cGF0aA0KICAgICBzdHlsZT0iZmlsbDojZDNkM2QzO2ZpbGwtb3BhY2l0eToxO3N0cm9rZTpub25lIg0KICAgICBkPSJtIDEyOS43MjcwNCwzNy40Nzg4MzcgNC42MDg1MiwwLjAxIC0yLjMwNDI2LC01LjU0OTggeiINCiAgICAgaWQ9InBhdGgzNzgyLTIiDQogICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiIC8+DQogIDxyZWN0DQogICAgIHN0eWxlPSJmaWxsOiNkM2QzZDM7ZmlsbC1vcGFjaXR5OjE7c3Ryb2tlOm5vbmUiDQogICAgIGlkPSJyZWN0Mzc1NC00NyINCiAgICAgd2lkdGg9IjE2Ig0KICAgICBoZWlnaHQ9IjE2Ig0KICAgICB4PSIxNDgiDQogICAgIHk9IjI3Ljk5OTkyIiAvPg0KICA8cGF0aA0KICAgICBzdHlsZT0iZmlsbDojZmZmZmZmO2ZpbGwtb3BhY2l0eToxO3N0cm9rZTpub25lIg0KICAgICBkPSJtIDE1Ni40NzY1NiwyOS44OTE3MzcgMCwyLjE3OTcgMC40NjA5MywyLjM5ODQgMS44MjgxMywwIDAuMzk4NDQsLTIuMzk4NCAwLC0yLjE3OTcgeiINCiAgICAgaWQ9InBhdGg1MDA4LTItMSINCiAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCINCiAgICAgc29kaXBvZGk6bm9kZXR5cGVzPSJjY2NjY2NjIiAvPg0KICA8cGF0aA0KICAgICBzdHlsZT0iZmlsbDojZmZmZmZmO2ZpbGwtb3BhY2l0eToxO3N0cm9rZTpub25lIg0KICAgICBkPSJtIDE1Mi41MTU2MiwyOS44OTA2MzcgMCwyLjE3OTcgMC40NjA5NCwyLjM5ODQgMS44MjgxMiwwIDAuMzk4NDQsLTIuMzk4NCAwLC0yLjE3OTcgeiINCiAgICAgaWQ9InBhdGg1MDA4LTItOC04Ig0KICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIg0KICAgICBzb2RpcG9kaTpub2RldHlwZXM9ImNjY2NjY2MiIC8+DQogIDxyZWN0DQogICAgIGlkPSJzdmdfMS03LTIiDQogICAgIGhlaWdodD0iMS45OTk5OTYxIg0KICAgICB3aWR0aD0iMTEuOTk5OTk2Ig0KICAgICB5PSI2NCINCiAgICAgeD0iNTQiDQogICAgIHN0eWxlPSJmaWxsOiM0YzRjNGM7ZmlsbC1vcGFjaXR5OjAuOTg0MzEzNzM7c3Ryb2tlOm5vbmU7c3Ryb2tlLXdpZHRoOjAiIC8+DQogIDxyZWN0DQogICAgIGlkPSJzdmdfMS03LTItMiINCiAgICAgaGVpZ2h0PSIyLjk5OTk5MDUiDQogICAgIHdpZHRoPSIyLjk5OTk5MDciDQogICAgIHk9IjUyIg0KICAgICB4PSI4MC4wMDAwMDgiDQogICAgIHN0eWxlPSJmaWxsOiM0YzRjNGM7ZmlsbC1vcGFjaXR5OjAuOTg0MzEzNzM7c3Ryb2tlOm5vbmU7c3Ryb2tlLXdpZHRoOjAiIC8+DQogIDxyZWN0DQogICAgIHN0eWxlPSJmaWxsOiM0YzRjNGM7ZmlsbC1vcGFjaXR5OjAuOTg0MzEzNzM7c3Ryb2tlOm5vbmU7c3Ryb2tlLXdpZHRoOjAiDQogICAgIHg9Ijg1LjAwMDAwOCINCiAgICAgeT0iNTIiDQogICAgIHdpZHRoPSIyLjk5OTk5MDciDQogICAgIGhlaWdodD0iMi45OTk5OTA1Ig0KICAgICBpZD0icmVjdDQ1NjEiIC8+DQogIDxyZWN0DQogICAgIHN0eWxlPSJmaWxsOiM0YzRjNGM7ZmlsbC1vcGFjaXR5OjAuOTg0MzEzNzM7c3Ryb2tlOm5vbmU7c3Ryb2tlLXdpZHRoOjAiDQogICAgIHg9IjgwLjAwMDAwOCINCiAgICAgeT0iNTgiDQogICAgIHdpZHRoPSIyLjk5OTk5MDciDQogICAgIGhlaWdodD0iMi45OTk5OTA1Ig0KICAgICBpZD0icmVjdDQ1NjMiIC8+DQogIDxyZWN0DQogICAgIGlkPSJyZWN0NDU2NSINCiAgICAgaGVpZ2h0PSIyLjk5OTk5MDUiDQogICAgIHdpZHRoPSIyLjk5OTk5MDciDQogICAgIHk9IjU4Ig0KICAgICB4PSI4NS4wMDAwMDgiDQogICAgIHN0eWxlPSJmaWxsOiM0YzRjNGM7ZmlsbC1vcGFjaXR5OjAuOTg0MzEzNzM7c3Ryb2tlOm5vbmU7c3Ryb2tlLXdpZHRoOjAiIC8+DQogIDxyZWN0DQogICAgIGlkPSJyZWN0NDU2NyINCiAgICAgaGVpZ2h0PSIyLjk5OTk5MDUiDQogICAgIHdpZHRoPSIyLjk5OTk5MDciDQogICAgIHk9IjY0Ig0KICAgICB4PSI4MC4wMDAwMDgiDQogICAgIHN0eWxlPSJmaWxsOiM0YzRjNGM7ZmlsbC1vcGFjaXR5OjAuOTg0MzEzNzM7c3Ryb2tlOm5vbmU7c3Ryb2tlLXdpZHRoOjAiIC8+DQogIDxyZWN0DQogICAgIHN0eWxlPSJmaWxsOiM0YzRjNGM7ZmlsbC1vcGFjaXR5OjAuOTg0MzEzNzM7c3Ryb2tlOm5vbmU7c3Ryb2tlLXdpZHRoOjAiDQogICAgIHg9Ijg1LjAwMDAwOCINCiAgICAgeT0iNjQiDQogICAgIHdpZHRoPSIyLjk5OTk5MDciDQogICAgIGhlaWdodD0iMi45OTk5OTA1Ig0KICAgICBpZD0icmVjdDQ1NjkiIC8+DQogIDxjaXJjbGUNCiAgICAgc3R5bGU9Im9wYWNpdHk6MTtmaWxsOm5vbmU7ZmlsbC1vcGFjaXR5OjE7c3Ryb2tlOiM0YzRjNGM7c3Ryb2tlLXdpZHRoOjI7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kO3N0cm9rZS1taXRlcmxpbWl0OjQ7c3Ryb2tlLWRhc2hhcnJheTpub25lIg0KICAgICBpZD0icGF0aDQ1NzEiDQogICAgIGN4PSIxMTAuMDYwODEiDQogICAgIGN5PSI1Ny45MzkyMDkiDQogICAgIHI9IjQuNzQzODgzNiIgLz4NCiAgPHJlY3QNCiAgICAgc3R5bGU9ImZpbGw6IzRjNGM0YztmaWxsLW9wYWNpdHk6MC45ODQzMTM3MztzdHJva2U6bm9uZTtzdHJva2Utd2lkdGg6MCINCiAgICAgeD0iMTE2LjY0NTY2Ig0KICAgICB5PSItMzEuNzk3NTIiDQogICAgIHdpZHRoPSI0LjIyOTcxMyINCiAgICAgaGVpZ2h0PSI2LjQwNTM4ODQiDQogICAgIGlkPSJyZWN0NDU2My0yIg0KICAgICB0cmFuc2Zvcm09Im1hdHJpeCgwLjcwNzEwNjc4LDAuNzA3MTA2NzgsLTAuNzA3MTA2NzgsMC43MDcxMDY3OCwwLDApIiAvPg0KICA8cGF0aA0KICAgICBzdHlsZT0iZmlsbDojNGM0YzRjO2ZpbGwtb3BhY2l0eToxO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTpub25lO3N0cm9rZS13aWR0aDowO3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1taXRlcmxpbWl0OjQ7c3Ryb2tlLWRhc2hhcnJheTpub25lO3N0cm9rZS1vcGFjaXR5OjEiDQogICAgIGQ9Ik0gMTI1LDU2IDEzOC43NzAyNyw1Ni4wOTUgMTMyLDY0IFoiDQogICAgIGlkPSJwYXRoNDYxMyINCiAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCINCiAgICAgc29kaXBvZGk6bm9kZXR5cGVzPSJjY2NjIiAvPg0KICA8cGF0aA0KICAgICBzb2RpcG9kaTpub2RldHlwZXM9ImNjY2MiDQogICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiDQogICAgIGlkPSJwYXRoNDYxNSINCiAgICAgZD0iTSAxNDksNjQgMTYyLjc3MDI3LDYzLjkwNSAxNTYsNTYgWiINCiAgICAgc3R5bGU9ImZpbGw6IzRjNGM0YztmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6bm9uZTtzdHJva2Utd2lkdGg6MDtzdHJva2UtbGluZWNhcDpidXR0O3N0cm9rZS1saW5lam9pbjptaXRlcjtzdHJva2UtbWl0ZXJsaW1pdDo0O3N0cm9rZS1kYXNoYXJyYXk6bm9uZTtzdHJva2Utb3BhY2l0eToxIiAvPg0KICA8cmVjdA0KICAgICBzdHlsZT0iZmlsbDojNGM0YzRjO2ZpbGwtb3BhY2l0eTowLjk4NDMxMzczO3N0cm9rZTpub25lO3N0cm9rZS13aWR0aDowIg0KICAgICB4PSI1NCINCiAgICAgeT0iNTMiDQogICAgIHdpZHRoPSIxMS45OTk5OTYiDQogICAgIGhlaWdodD0iMS45OTk5OTYxIg0KICAgICBpZD0icmVjdDQ2MzgiIC8+DQogIDxyZWN0DQogICAgIGlkPSJzdmdfMS03LTItMjQiDQogICAgIGhlaWdodD0iMS45OTk5OTU3Ig0KICAgICB3aWR0aD0iMTIuOTk5OTkiDQogICAgIHk9Ii01NiINCiAgICAgeD0iNTMiDQogICAgIHN0eWxlPSJmaWxsOiM0YzRjNGM7ZmlsbC1vcGFjaXR5OjAuOTg0MzEzNzM7c3Ryb2tlOm5vbmU7c3Ryb2tlLXdpZHRoOjAiDQogICAgIHRyYW5zZm9ybT0ibWF0cml4KDAsMSwtMSwwLDAsMCkiIC8+DQogIDxyZWN0DQogICAgIHRyYW5zZm9ybT0ibWF0cml4KDAsMSwtMSwwLDAsMCkiDQogICAgIHN0eWxlPSJmaWxsOiM0YzRjNGM7ZmlsbC1vcGFjaXR5OjAuOTg0MzEzNzM7c3Ryb2tlOm5vbmU7c3Ryb2tlLXdpZHRoOjAiDQogICAgIHg9IjUzIg0KICAgICB5PSItNjYiDQogICAgIHdpZHRoPSIxMi45OTk5OSINCiAgICAgaGVpZ2h0PSIxLjk5OTk5NTciDQogICAgIGlkPSJyZWN0NDY1NyIgLz4NCiAgPHJlY3QNCiAgICAgaWQ9InJlY3Q0NjU5Ig0KICAgICBoZWlnaHQ9IjAuOTk5OTkyOTEiDQogICAgIHdpZHRoPSIxMS45OTk5OTkiDQogICAgIHk9IjU3Ig0KICAgICB4PSI1NCINCiAgICAgc3R5bGU9ImZpbGw6IzRjNGM0YztmaWxsLW9wYWNpdHk6MC45ODQzMTM3MztzdHJva2U6bm9uZTtzdHJva2Utd2lkdGg6MCIgLz4NCiAgPHJlY3QNCiAgICAgc3R5bGU9ImZpbGw6I2QzZDNkMztmaWxsLW9wYWNpdHk6MTtzdHJva2U6bm9uZTtzdHJva2Utd2lkdGg6MDtzdHJva2Utb3BhY2l0eToxIg0KICAgICB4PSI1NCINCiAgICAgeT0iODguMDAwMTIyIg0KICAgICB3aWR0aD0iMTEuOTk5OTk2Ig0KICAgICBoZWlnaHQ9IjEuOTk5OTk2MSINCiAgICAgaWQ9InJlY3Q0NjYxIiAvPg0KICA8cmVjdA0KICAgICBzdHlsZT0iZmlsbDojZDNkM2QzO2ZpbGwtb3BhY2l0eToxO3N0cm9rZTpub25lO3N0cm9rZS13aWR0aDowO3N0cm9rZS1vcGFjaXR5OjEiDQogICAgIHg9IjgwLjAwMDAwOCINCiAgICAgeT0iNzYuMDAwMTIyIg0KICAgICB3aWR0aD0iMi45OTk5OTA3Ig0KICAgICBoZWlnaHQ9IjIuOTk5OTkwNSINCiAgICAgaWQ9InJlY3Q0NjYzIiAvPg0KICA8cmVjdA0KICAgICBpZD0icmVjdDQ2NjUiDQogICAgIGhlaWdodD0iMi45OTk5OTA1Ig0KICAgICB3aWR0aD0iMi45OTk5OTA3Ig0KICAgICB5PSI3Ni4wMDAxMjIiDQogICAgIHg9Ijg1LjAwMDAwOCINCiAgICAgc3R5bGU9ImZpbGw6I2QzZDNkMztmaWxsLW9wYWNpdHk6MTtzdHJva2U6bm9uZTtzdHJva2Utd2lkdGg6MDtzdHJva2Utb3BhY2l0eToxIiAvPg0KICA8cmVjdA0KICAgICBpZD0icmVjdDQ2NjciDQogICAgIGhlaWdodD0iMi45OTk5OTA1Ig0KICAgICB3aWR0aD0iMi45OTk5OTA3Ig0KICAgICB5PSI4Mi4wMDAxMjIiDQogICAgIHg9IjgwLjAwMDAwOCINCiAgICAgc3R5bGU9ImZpbGw6I2QzZDNkMztmaWxsLW9wYWNpdHk6MTtzdHJva2U6bm9uZTtzdHJva2Utd2lkdGg6MDtzdHJva2Utb3BhY2l0eToxIiAvPg0KICA8cmVjdA0KICAgICBzdHlsZT0iZmlsbDojZDNkM2QzO2ZpbGwtb3BhY2l0eToxO3N0cm9rZTpub25lO3N0cm9rZS13aWR0aDowO3N0cm9rZS1vcGFjaXR5OjEiDQogICAgIHg9Ijg1LjAwMDAwOCINCiAgICAgeT0iODIuMDAwMTIyIg0KICAgICB3aWR0aD0iMi45OTk5OTA3Ig0KICAgICBoZWlnaHQ9IjIuOTk5OTkwNSINCiAgICAgaWQ9InJlY3Q0NjY5IiAvPg0KICA8cmVjdA0KICAgICBzdHlsZT0iZmlsbDojZDNkM2QzO2ZpbGwtb3BhY2l0eToxO3N0cm9rZTpub25lO3N0cm9rZS13aWR0aDowO3N0cm9rZS1vcGFjaXR5OjEiDQogICAgIHg9IjgwLjAwMDAwOCINCiAgICAgeT0iODguMDAwMTIyIg0KICAgICB3aWR0aD0iMi45OTk5OTA3Ig0KICAgICBoZWlnaHQ9IjIuOTk5OTkwNSINCiAgICAgaWQ9InJlY3Q0NjcxIiAvPg0KICA8cmVjdA0KICAgICBpZD0icmVjdDQ2NzMiDQogICAgIGhlaWdodD0iMi45OTk5OTA1Ig0KICAgICB3aWR0aD0iMi45OTk5OTA3Ig0KICAgICB5PSI4OC4wMDAxMjIiDQogICAgIHg9Ijg1LjAwMDAwOCINCiAgICAgc3R5bGU9ImZpbGw6I2QzZDNkMztmaWxsLW9wYWNpdHk6MTtzdHJva2U6bm9uZTtzdHJva2Utd2lkdGg6MDtzdHJva2Utb3BhY2l0eToxIiAvPg0KICA8Y2lyY2xlDQogICAgIHI9IjQuNzQzODgzNiINCiAgICAgY3k9IjgxLjkzOTMzMSINCiAgICAgY3g9IjExMC4wNjA4MSINCiAgICAgaWQ9ImNpcmNsZTQ2NzUiDQogICAgIHN0eWxlPSJvcGFjaXR5OjE7ZmlsbDpub25lO2ZpbGwtb3BhY2l0eToxO3N0cm9rZTojZDNkM2QzO3N0cm9rZS13aWR0aDoyO3N0cm9rZS1saW5lY2FwOnJvdW5kO3N0cm9rZS1saW5lam9pbjpyb3VuZDtzdHJva2UtbWl0ZXJsaW1pdDo0O3N0cm9rZS1kYXNoYXJyYXk6bm9uZTtzdHJva2Utb3BhY2l0eToxIiAvPg0KICA8cmVjdA0KICAgICB0cmFuc2Zvcm09Im1hdHJpeCgwLjcwNzEwNjc4LDAuNzA3MTA2NzgsLTAuNzA3MTA2NzgsMC43MDcxMDY3OCwwLDApIg0KICAgICBpZD0icmVjdDQ2NzciDQogICAgIGhlaWdodD0iNi40MDUzODg0Ig0KICAgICB3aWR0aD0iNC4yMjk3MTMiDQogICAgIHk9Ii0xNC44MjY4MTYiDQogICAgIHg9IjEzMy42MTYzIg0KICAgICBzdHlsZT0iZmlsbDojZDNkM2QzO2ZpbGwtb3BhY2l0eToxO3N0cm9rZTojZDNkM2QzO3N0cm9rZS13aWR0aDowO3N0cm9rZS1vcGFjaXR5OjEiIC8+DQogIDxwYXRoDQogICAgIHNvZGlwb2RpOm5vZGV0eXBlcz0iY2NjYyINCiAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCINCiAgICAgaWQ9InBhdGg0Njc5Ig0KICAgICBkPSJtIDEyNSw4MC4wMDAwMDUgMTMuNzcwMjcsMC4wOTQ5OSBMIDEzMiw4Ny45OTk5OTIgWiINCiAgICAgc3R5bGU9ImZpbGw6I2QzZDNkMztmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6I2QzZDNkMztzdHJva2Utd2lkdGg6MDtzdHJva2UtbGluZWNhcDpidXR0O3N0cm9rZS1saW5lam9pbjptaXRlcjtzdHJva2UtbWl0ZXJsaW1pdDo0O3N0cm9rZS1kYXNoYXJyYXk6bm9uZTtzdHJva2Utb3BhY2l0eToxIiAvPg0KICA8cGF0aA0KICAgICBzdHlsZT0iZmlsbDojZDNkM2QzO2ZpbGwtb3BhY2l0eToxO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTojZDNkM2QzO3N0cm9rZS13aWR0aDowO3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1taXRlcmxpbWl0OjQ7c3Ryb2tlLWRhc2hhcnJheTpub25lO3N0cm9rZS1vcGFjaXR5OjEiDQogICAgIGQ9Ik0gMTQ5LDg4LjAwMDIgMTYyLjc3MDI3LDg3LjkwNTIgMTU2LDgwLjAwMDIgWiINCiAgICAgaWQ9InBhdGg0NjgxIg0KICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIg0KICAgICBzb2RpcG9kaTpub2RldHlwZXM9ImNjY2MiIC8+DQogIDxyZWN0DQogICAgIGlkPSJyZWN0NDY4MyINCiAgICAgaGVpZ2h0PSIxLjk5OTk5NjEiDQogICAgIHdpZHRoPSIxMS45OTk5OTYiDQogICAgIHk9Ijc3LjAwMDEyMiINCiAgICAgeD0iNTQiDQogICAgIHN0eWxlPSJmaWxsOiNkM2QzZDM7ZmlsbC1vcGFjaXR5OjE7c3Ryb2tlOm5vbmU7c3Ryb2tlLXdpZHRoOjA7c3Ryb2tlLW9wYWNpdHk6MSIgLz4NCiAgPHJlY3QNCiAgICAgdHJhbnNmb3JtPSJtYXRyaXgoMCwxLC0xLDAsMCwwKSINCiAgICAgc3R5bGU9ImZpbGw6I2QzZDNkMztmaWxsLW9wYWNpdHk6MTtzdHJva2U6bm9uZTtzdHJva2Utd2lkdGg6MDtzdHJva2Utb3BhY2l0eToxIg0KICAgICB4PSI3Ny4wMDAxMjIiDQogICAgIHk9Ii01NiINCiAgICAgd2lkdGg9IjEyLjk5OTk5Ig0KICAgICBoZWlnaHQ9IjEuOTk5OTk1NyINCiAgICAgaWQ9InJlY3Q0Njg1IiAvPg0KICA8cmVjdA0KICAgICBpZD0icmVjdDQ2ODciDQogICAgIGhlaWdodD0iMS45OTk5OTU3Ig0KICAgICB3aWR0aD0iMTIuOTk5OTkiDQogICAgIHk9Ii02NiINCiAgICAgeD0iNzcuMDAwMTIyIg0KICAgICBzdHlsZT0iZmlsbDojZDNkM2QzO2ZpbGwtb3BhY2l0eToxO3N0cm9rZTpub25lO3N0cm9rZS13aWR0aDowO3N0cm9rZS1vcGFjaXR5OjEiDQogICAgIHRyYW5zZm9ybT0ibWF0cml4KDAsMSwtMSwwLDAsMCkiIC8+DQogIDxyZWN0DQogICAgIHN0eWxlPSJmaWxsOiNkM2QzZDM7ZmlsbC1vcGFjaXR5OjE7c3Ryb2tlOm5vbmU7c3Ryb2tlLXdpZHRoOjA7c3Ryb2tlLW9wYWNpdHk6MSINCiAgICAgeD0iNTQiDQogICAgIHk9IjgxLjAwMDEyMiINCiAgICAgd2lkdGg9IjExLjk5OTk5OSINCiAgICAgaGVpZ2h0PSIwLjk5OTk5MjkxIg0KICAgICBpZD0icmVjdDQ2ODkiIC8+DQogIDxyZWN0DQogICAgIGlkPSJyZWN0NDc2MS0xIg0KICAgICBoZWlnaHQ9IjEuOTk5OTk0NSINCiAgICAgd2lkdGg9IjE1Ljk5OTk5Ig0KICAgICB5PSIxMDEiDQogICAgIHg9Ijc2LjAwMDAwOCINCiAgICAgc3R5bGU9ImZpbGw6I2ZmZmZmZjtmaWxsLW9wYWNpdHk6MC44MDAwMDAwNztzdHJva2U6bm9uZTtzdHJva2Utd2lkdGg6MCIgLz4NCiAgPHJlY3QNCiAgICAgaWQ9InJlY3Q0NzYxLTAiDQogICAgIGhlaWdodD0iMS45OTk5OTQ1Ig0KICAgICB3aWR0aD0iMTUuOTk5OTkiDQogICAgIHk9IjEwNSINCiAgICAgeD0iNzYuMDAwMDA4Ig0KICAgICBzdHlsZT0iZmlsbDojZmZmZmZmO2ZpbGwtb3BhY2l0eTowLjgwMDAwMDA3O3N0cm9rZTpub25lO3N0cm9rZS13aWR0aDowIiAvPg0KICA8cmVjdA0KICAgICBpZD0icmVjdDQ3NjEtNyINCiAgICAgaGVpZ2h0PSIxLjk5OTk5NDUiDQogICAgIHdpZHRoPSI5Ig0KICAgICB5PSIxMDkiDQogICAgIHg9Ijc2LjAwMDAwOCINCiAgICAgc3R5bGU9ImZpbGw6I2ZmZmZmZjtmaWxsLW9wYWNpdHk6MC44MDAwMDAwNztzdHJva2U6bm9uZTtzdHJva2Utd2lkdGg6MCIgLz4NCiAgPHJlY3QNCiAgICAgaWQ9InJlY3Q0NzYxLTEtMSINCiAgICAgaGVpZ2h0PSIxLjk5OTk5NDUiDQogICAgIHdpZHRoPSIxMiINCiAgICAgeT0iMTI1Ig0KICAgICB4PSI3Ni4wMDAwMDgiDQogICAgIHN0eWxlPSJmaWxsOiNmZmZmZmY7ZmlsbC1vcGFjaXR5OjAuODAwMDAwMDc7c3Ryb2tlOm5vbmU7c3Ryb2tlLXdpZHRoOjAiIC8+DQogIDxyZWN0DQogICAgIGlkPSJyZWN0NDc2MS0xLTEtNCINCiAgICAgaGVpZ2h0PSIxLjk5OTk5NDUiDQogICAgIHdpZHRoPSIxMCINCiAgICAgeT0iMTM3Ig0KICAgICB4PSI3Ni4wMDAwMDgiDQogICAgIHN0eWxlPSJmaWxsOiNmZmZmZmY7ZmlsbC1vcGFjaXR5OjAuODAwMDAwMDc7c3Ryb2tlOm5vbmU7c3Ryb2tlLXdpZHRoOjAiIC8+DQogIDxyZWN0DQogICAgIGlkPSJyZWN0NDc2MS0xLTEtNC00Ig0KICAgICBoZWlnaHQ9IjEuOTk5OTk0NSINCiAgICAgd2lkdGg9IjEwIg0KICAgICB5PSIxMjkiDQogICAgIHg9IjgyIg0KICAgICBzdHlsZT0iZmlsbDojZmZmZmZmO2ZpbGwtb3BhY2l0eTowLjgwMDAwMDA3O3N0cm9rZTpub25lO3N0cm9rZS13aWR0aDowIiAvPg0KICA8cmVjdA0KICAgICBpZD0icmVjdDQ3NjEtMS0xLTQtNC0zIg0KICAgICBoZWlnaHQ9IjEuOTk5OTk0NSINCiAgICAgd2lkdGg9IjkiDQogICAgIHk9IjEzMyINCiAgICAgeD0iODIiDQogICAgIHN0eWxlPSJmaWxsOiNmZmZmZmY7ZmlsbC1vcGFjaXR5OjAuODAwMDAwMDc7c3Ryb2tlOm5vbmU7c3Ryb2tlLXdpZHRoOjAiIC8+DQogIDxwYXRoDQogICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiDQogICAgIHN0eWxlPSJjb2xvcjojMDAwMDAwO2ZvbnQtc3R5bGU6bm9ybWFsO2ZvbnQtdmFyaWFudDpub3JtYWw7Zm9udC13ZWlnaHQ6bm9ybWFsO2ZvbnQtc3RyZXRjaDpub3JtYWw7Zm9udC1zaXplOm1lZGl1bTtsaW5lLWhlaWdodDpub3JtYWw7Zm9udC1mYW1pbHk6c2Fucy1zZXJpZjt0ZXh0LWluZGVudDowO3RleHQtYWxpZ246c3RhcnQ7dGV4dC1kZWNvcmF0aW9uOm5vbmU7dGV4dC1kZWNvcmF0aW9uLWxpbmU6bm9uZTt0ZXh0LWRlY29yYXRpb24tc3R5bGU6c29saWQ7dGV4dC1kZWNvcmF0aW9uLWNvbG9yOiMwMDAwMDA7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO3dvcmQtc3BhY2luZzpub3JtYWw7dGV4dC10cmFuc2Zvcm06bm9uZTtkaXJlY3Rpb246bHRyO2Jsb2NrLXByb2dyZXNzaW9uOnRiO3dyaXRpbmctbW9kZTpsci10YjtiYXNlbGluZS1zaGlmdDpiYXNlbGluZTt0ZXh0LWFuY2hvcjpzdGFydDt3aGl0ZS1zcGFjZTpub3JtYWw7Y2xpcC1ydWxlOm5vbnplcm87ZGlzcGxheTppbmxpbmU7b3ZlcmZsb3c6dmlzaWJsZTt2aXNpYmlsaXR5OnZpc2libGU7b3BhY2l0eTowLjg7aXNvbGF0aW9uOmF1dG87bWl4LWJsZW5kLW1vZGU6bm9ybWFsO2NvbG9yLWludGVycG9sYXRpb246c1JHQjtjb2xvci1pbnRlcnBvbGF0aW9uLWZpbHRlcnM6bGluZWFyUkdCO3NvbGlkLWNvbG9yOiMwMDAwMDA7c29saWQtb3BhY2l0eToxO2ZpbGw6I2ZmZmZmZjtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6bm9uemVybztzdHJva2U6bm9uZTtzdHJva2Utd2lkdGg6Mi42NjE1Nzg2NjtzdHJva2UtbGluZWNhcDpidXR0O3N0cm9rZS1saW5lam9pbjptaXRlcjtzdHJva2UtbWl0ZXJsaW1pdDo0O3N0cm9rZS1kYXNoYXJyYXk6bm9uZTtzdHJva2UtZGFzaG9mZnNldDowO3N0cm9rZS1vcGFjaXR5OjE7Y29sb3ItcmVuZGVyaW5nOmF1dG87aW1hZ2UtcmVuZGVyaW5nOmF1dG87c2hhcGUtcmVuZGVyaW5nOmF1dG87dGV4dC1yZW5kZXJpbmc6YXV0bztlbmFibGUtYmFja2dyb3VuZDphY2N1bXVsYXRlIg0KICAgICBkPSJtIDM2LjM5ODQzOCwxMDAuMDI1NCBjIC0wLjQyMzM2MiwtMC4wMTMgLTAuODQ2ODQ3LDAuMDEgLTEuMjY1NjI2LDAuMDYyIC0xLjY1NjU2MiwwLjIxOTYgLTMuMjQ0NTY3LDAuOTczOSAtNC41MDc4MTIsMi4yMjY2IEwgMjksMTAwLjU5OTEgbCAtMi4zMjQyMTksNy43MTI5IDcuODI2MTcyLC0xLjkwNjIgLTEuODA0Njg3LC0xLjkwNjMgYyAxLjU5NzcwMiwtMS41MzA4IDQuMDQ4NzA2LC0xLjg0NTMgNS45ODQzNzUsLTAuNzIwNyAxLjk3MTE2MiwxLjE0NTIgMi44ODE5NTQsMy4zOTc1IDIuMzA4NTkzLDUuNTUwOCAtMC41NzMzNjEsMi4xNTMzIC0yLjUzMzg2NSwzLjY5NTMgLTQuODMwMDc4LDMuNjk1MyBsIDAsMy4wNzQyIGMgMy41NTA3NTYsMCA2LjcxMDQ0MiwtMi40MTEzIDcuNjUwMzkxLC01Ljk0MTQgMC45Mzk5NDksLTMuNTMwMSAtMC42MTg0NjMsLTcuMjczNiAtMy43MTA5MzgsLTkuMDcwMyAtMS4xNTk2NzgsLTAuNjczOCAtMi40MzEwODcsLTEuMDIzMSAtMy43MDExNzEsLTEuMDYyNSB6Ig0KICAgICBpZD0icGF0aDQxMzgiIC8+DQogIDxwYXRoDQogICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiDQogICAgIHN0eWxlPSJjb2xvcjojMDAwMDAwO2ZvbnQtc3R5bGU6bm9ybWFsO2ZvbnQtdmFyaWFudDpub3JtYWw7Zm9udC13ZWlnaHQ6bm9ybWFsO2ZvbnQtc3RyZXRjaDpub3JtYWw7Zm9udC1zaXplOm1lZGl1bTtsaW5lLWhlaWdodDpub3JtYWw7Zm9udC1mYW1pbHk6c2Fucy1zZXJpZjt0ZXh0LWluZGVudDowO3RleHQtYWxpZ246c3RhcnQ7dGV4dC1kZWNvcmF0aW9uOm5vbmU7dGV4dC1kZWNvcmF0aW9uLWxpbmU6bm9uZTt0ZXh0LWRlY29yYXRpb24tc3R5bGU6c29saWQ7dGV4dC1kZWNvcmF0aW9uLWNvbG9yOiMwMDAwMDA7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO3dvcmQtc3BhY2luZzpub3JtYWw7dGV4dC10cmFuc2Zvcm06bm9uZTtkaXJlY3Rpb246bHRyO2Jsb2NrLXByb2dyZXNzaW9uOnRiO3dyaXRpbmctbW9kZTpsci10YjtiYXNlbGluZS1zaGlmdDpiYXNlbGluZTt0ZXh0LWFuY2hvcjpzdGFydDt3aGl0ZS1zcGFjZTpub3JtYWw7Y2xpcC1ydWxlOm5vbnplcm87ZGlzcGxheTppbmxpbmU7b3ZlcmZsb3c6dmlzaWJsZTt2aXNpYmlsaXR5OnZpc2libGU7b3BhY2l0eTowLjg7aXNvbGF0aW9uOmF1dG87bWl4LWJsZW5kLW1vZGU6bm9ybWFsO2NvbG9yLWludGVycG9sYXRpb246c1JHQjtjb2xvci1pbnRlcnBvbGF0aW9uLWZpbHRlcnM6bGluZWFyUkdCO3NvbGlkLWNvbG9yOiMwMDAwMDA7c29saWQtb3BhY2l0eToxO2ZpbGw6I2ZmZmZmZjtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6bm9uemVybztzdHJva2U6bm9uZTtzdHJva2Utd2lkdGg6Mi42NjE1Nzg2NjtzdHJva2UtbGluZWNhcDpidXR0O3N0cm9rZS1saW5lam9pbjptaXRlcjtzdHJva2UtbWl0ZXJsaW1pdDo0O3N0cm9rZS1kYXNoYXJyYXk6bm9uZTtzdHJva2UtZGFzaG9mZnNldDowO3N0cm9rZS1vcGFjaXR5OjE7Y29sb3ItcmVuZGVyaW5nOmF1dG87aW1hZ2UtcmVuZGVyaW5nOmF1dG87c2hhcGUtcmVuZGVyaW5nOmF1dG87dGV4dC1yZW5kZXJpbmc6YXV0bztlbmFibGUtYmFja2dyb3VuZDphY2N1bXVsYXRlIg0KICAgICBkPSJtIDU5LjcyMjY1Niw5OS45NjI5IGMgLTEuMjcwMDg0LDAuMDM5IC0yLjU0MTQ5MywwLjM4ODcgLTMuNzAxMTcyLDEuMDYyNSAtMy4wOTI0NzUsMS43OTY3IC00LjY1MDg4Niw1LjU0MDIgLTMuNzEwOTM3LDkuMDcwMyAwLjkzOTk0OSwzLjUzMDEgNC4wOTc2OCw1Ljk0MTQgNy42NDg0MzcsNS45NDE0IGwgMCwtMy4wNzQyIGMgLTIuMjk2MjE0LDAgLTQuMjU2NzE3LC0xLjU0MiAtNC44MzAwNzgsLTMuNjk1MyAtMC41NzMzNjEsLTIuMTUzMyAwLjMzNzQzMiwtNC40MDU2IDIuMzA4NTk0LC01LjU1MDggMS45MzU3MzEsLTEuMTI0NiA0LjM4ODYzLC0wLjgxMDIgNS45ODYzMjYsMC43MjA3IGwgLTEuODA2NjM4LDEuOTA2MyA3LjgyODEyOCwxLjkwNjIgLTIuMzI0MjIsLTcuNzEyOSAtMS42MjY5NiwxLjcxNjggYyAtMS4yNjMzOCwtMS4yNTMxIC0yLjg0ODkxNywtMi4wMDg4IC00LjUwNTg1NSwtMi4yMjg1IC0wLjQxODc3OCwtMC4wNTUgLTAuODQyMjYzLC0wLjA3NiAtMS4yNjU2MjUsLTAuMDYyIHoiDQogICAgIGlkPSJwYXRoNDEzOC0xIiAvPg0KICA8cGF0aA0KICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIg0KICAgICBzdHlsZT0ib3BhY2l0eTowLjg7ZmlsbDojZmZmZmZmO2ZpbGwtb3BhY2l0eToxO3N0cm9rZTpub25lO3N0cm9rZS13aWR0aDoxLjk2NjtzdHJva2UtbWl0ZXJsaW1pdDo0O3N0cm9rZS1kYXNoYXJyYXk6bm9uZSINCiAgICAgZD0ibSAxMC41LDEwMCAwLDIgLTIuNDk5OTk5NiwwIEwgMTIsMTA3IGwgNCwtNSAtMi41LDAgMCwtMiAtMywwIHoiDQogICAgIGlkPSJwYXRoMzA1NS0wLTc3IiAvPg0KICA8cGF0aA0KICAgICBzdHlsZT0ib3BhY2l0eTowLjg7ZmlsbDpub25lO3N0cm9rZTojZmZmZmZmO3N0cm9rZS13aWR0aDoxLjk2NjtzdHJva2UtbGluZWNhcDpzcXVhcmU7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1taXRlcmxpbWl0OjQ7c3Ryb2tlLWRhc2hhcnJheTpub25lO3N0cm9rZS1vcGFjaXR5OjEiDQogICAgIGQ9Im0gNC45ODUwNTc0LDEwOC4wMTUgMTQuMDI5ODg1NiwtMC4wMyINCiAgICAgaWQ9InBhdGg1MjQ0LTUtMC01Ig0KICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIg0KICAgICBzb2RpcG9kaTpub2RldHlwZXM9ImNjIiAvPg0KICA8cGF0aA0KICAgICBzdHlsZT0ib3BhY2l0eTowLjg7ZmlsbDpub25lO3N0cm9rZTojZmZmZmZmO3N0cm9rZS13aWR0aDoxLjk2NjtzdHJva2UtbGluZWNhcDpzcXVhcmU7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1taXRlcmxpbWl0OjQ7c3Ryb2tlLWRhc2hhcnJheTpub25lO3N0cm9rZS1vcGFjaXR5OjEiDQogICAgIGQ9Im0gNC45ODQ5ODc0LDEzMi4wMTUgMTQuMDI5ODg2NiwtMC4wMyINCiAgICAgaWQ9InBhdGg1MjQ0LTUtMC01LTgiDQogICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiDQogICAgIHNvZGlwb2RpOm5vZGV0eXBlcz0iY2MiIC8+DQogIDxwYXRoDQogICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiDQogICAgIHN0eWxlPSJjb2xvcjojMDAwMDAwO2ZvbnQtc3R5bGU6bm9ybWFsO2ZvbnQtdmFyaWFudDpub3JtYWw7Zm9udC13ZWlnaHQ6bm9ybWFsO2ZvbnQtc3RyZXRjaDpub3JtYWw7Zm9udC1zaXplOm1lZGl1bTtsaW5lLWhlaWdodDpub3JtYWw7Zm9udC1mYW1pbHk6c2Fucy1zZXJpZjt0ZXh0LWluZGVudDowO3RleHQtYWxpZ246c3RhcnQ7dGV4dC1kZWNvcmF0aW9uOm5vbmU7dGV4dC1kZWNvcmF0aW9uLWxpbmU6bm9uZTt0ZXh0LWRlY29yYXRpb24tc3R5bGU6c29saWQ7dGV4dC1kZWNvcmF0aW9uLWNvbG9yOiMwMDAwMDA7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO3dvcmQtc3BhY2luZzpub3JtYWw7dGV4dC10cmFuc2Zvcm06bm9uZTtkaXJlY3Rpb246bHRyO2Jsb2NrLXByb2dyZXNzaW9uOnRiO3dyaXRpbmctbW9kZTpsci10YjtiYXNlbGluZS1zaGlmdDpiYXNlbGluZTt0ZXh0LWFuY2hvcjpzdGFydDt3aGl0ZS1zcGFjZTpub3JtYWw7Y2xpcC1ydWxlOm5vbnplcm87ZGlzcGxheTppbmxpbmU7b3ZlcmZsb3c6dmlzaWJsZTt2aXNpYmlsaXR5OnZpc2libGU7b3BhY2l0eTowLjQ7aXNvbGF0aW9uOmF1dG87bWl4LWJsZW5kLW1vZGU6bm9ybWFsO2NvbG9yLWludGVycG9sYXRpb246c1JHQjtjb2xvci1pbnRlcnBvbGF0aW9uLWZpbHRlcnM6bGluZWFyUkdCO3NvbGlkLWNvbG9yOiMwMDAwMDA7c29saWQtb3BhY2l0eToxO2ZpbGw6IzRkNGQ0ZDtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6bm9uemVybztzdHJva2U6bm9uZTtzdHJva2Utd2lkdGg6Mi42NjE1Nzg2NjtzdHJva2UtbGluZWNhcDpidXR0O3N0cm9rZS1saW5lam9pbjptaXRlcjtzdHJva2UtbWl0ZXJsaW1pdDo0O3N0cm9rZS1kYXNoYXJyYXk6bm9uZTtzdHJva2UtZGFzaG9mZnNldDowO3N0cm9rZS1vcGFjaXR5OjE7Y29sb3ItcmVuZGVyaW5nOmF1dG87aW1hZ2UtcmVuZGVyaW5nOmF1dG87c2hhcGUtcmVuZGVyaW5nOmF1dG87dGV4dC1yZW5kZXJpbmc6YXV0bztlbmFibGUtYmFja2dyb3VuZDphY2N1bXVsYXRlIg0KICAgICBkPSJtIDM2LjM5ODQzOCwxMjMuOTYyOSBjIC0wLjQyMzM2MiwtMC4wMTMgLTAuODQ2ODQ3LDAuMDEgLTEuMjY1NjI2LDAuMDYyIC0xLjY1NjU2MiwwLjIxOTYgLTMuMjQ0NTY3LDAuOTczOSAtNC41MDc4MTIsMi4yMjY2IEwgMjksMTI0LjUzNjYgbCAtMi4zMjQyMTksNy43MTI5IDcuODI2MTcyLC0xLjkwNjIgLTEuODA0Njg3LC0xLjkwNjMgYyAxLjU5NzcwMiwtMS41MzA4IDQuMDQ4NzA2LC0xLjg0NTMgNS45ODQzNzUsLTAuNzIwNyAxLjk3MTE2MiwxLjE0NTMgMi44ODE5NTQsMy4zOTc1IDIuMzA4NTkzLDUuNTUwOCAtMC41NzMzNjEsMi4xNTMzIC0yLjUzMzg2NCwzLjY5NTMgLTQuODMwMDc4LDMuNjk1MyBsIDAsMy4wNzQyIGMgMy41NTA3NTcsMCA2LjcxMDQ0MiwtMi40MDkzIDcuNjUwMzkxLC01LjkzOTQgMC45Mzk5NDksLTMuNTMwMSAtMC42MTg0NjMsLTcuMjc1NiAtMy43MTA5MzgsLTkuMDcyMyAtMS4xNTk2NzgsLTAuNjczNyAtMi40MzEwODcsLTEuMDIzMSAtMy43MDExNzEsLTEuMDYyNSB6Ig0KICAgICBpZD0icGF0aDQxMzgtMTIiIC8+DQogIDxwYXRoDQogICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiDQogICAgIHN0eWxlPSJjb2xvcjojMDAwMDAwO2ZvbnQtc3R5bGU6bm9ybWFsO2ZvbnQtdmFyaWFudDpub3JtYWw7Zm9udC13ZWlnaHQ6bm9ybWFsO2ZvbnQtc3RyZXRjaDpub3JtYWw7Zm9udC1zaXplOm1lZGl1bTtsaW5lLWhlaWdodDpub3JtYWw7Zm9udC1mYW1pbHk6c2Fucy1zZXJpZjt0ZXh0LWluZGVudDowO3RleHQtYWxpZ246c3RhcnQ7dGV4dC1kZWNvcmF0aW9uOm5vbmU7dGV4dC1kZWNvcmF0aW9uLWxpbmU6bm9uZTt0ZXh0LWRlY29yYXRpb24tc3R5bGU6c29saWQ7dGV4dC1kZWNvcmF0aW9uLWNvbG9yOiMwMDAwMDA7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO3dvcmQtc3BhY2luZzpub3JtYWw7dGV4dC10cmFuc2Zvcm06bm9uZTtkaXJlY3Rpb246bHRyO2Jsb2NrLXByb2dyZXNzaW9uOnRiO3dyaXRpbmctbW9kZTpsci10YjtiYXNlbGluZS1zaGlmdDpiYXNlbGluZTt0ZXh0LWFuY2hvcjpzdGFydDt3aGl0ZS1zcGFjZTpub3JtYWw7Y2xpcC1ydWxlOm5vbnplcm87ZGlzcGxheTppbmxpbmU7b3ZlcmZsb3c6dmlzaWJsZTt2aXNpYmlsaXR5OnZpc2libGU7b3BhY2l0eTowLjQ7aXNvbGF0aW9uOmF1dG87bWl4LWJsZW5kLW1vZGU6bm9ybWFsO2NvbG9yLWludGVycG9sYXRpb246c1JHQjtjb2xvci1pbnRlcnBvbGF0aW9uLWZpbHRlcnM6bGluZWFyUkdCO3NvbGlkLWNvbG9yOiMwMDAwMDA7c29saWQtb3BhY2l0eToxO2ZpbGw6IzRkNGQ0ZDtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6bm9uemVybztzdHJva2U6bm9uZTtzdHJva2Utd2lkdGg6Mi42NjE1Nzg2NjtzdHJva2UtbGluZWNhcDpidXR0O3N0cm9rZS1saW5lam9pbjptaXRlcjtzdHJva2UtbWl0ZXJsaW1pdDo0O3N0cm9rZS1kYXNoYXJyYXk6bm9uZTtzdHJva2UtZGFzaG9mZnNldDowO3N0cm9rZS1vcGFjaXR5OjE7Y29sb3ItcmVuZGVyaW5nOmF1dG87aW1hZ2UtcmVuZGVyaW5nOmF1dG87c2hhcGUtcmVuZGVyaW5nOmF1dG87dGV4dC1yZW5kZXJpbmc6YXV0bztlbmFibGUtYmFja2dyb3VuZDphY2N1bXVsYXRlIg0KICAgICBkPSJtIDU5LjcyMjY1NiwxMjMuOTYyOSBjIC0xLjI3MDA4NCwwLjAzOSAtMi41NDE0OTMsMC4zODg4IC0zLjcwMTE3MiwxLjA2MjUgLTMuMDkyNDc1LDEuNzk2NyAtNC42NTA4ODYsNS41NDIyIC0zLjcxMDkzNyw5LjA3MjMgMC45Mzk5NDksMy41MzAxIDQuMDk3NjgsNS45Mzk0IDcuNjQ4NDM3LDUuOTM5NCBsIDAsLTMuMDc0MiBjIC0yLjI5NjIxNCwwIC00LjI1NjcxNywtMS41NDIgLTQuODMwMDc4LC0zLjY5NTMgLTAuNTczMzYxLC0yLjE1MzMgMC4zMzc0MzIsLTQuNDA1NSAyLjMwODU5NCwtNS41NTA4IDEuOTM1NzMxLC0xLjEyNDYgNC4zODg2MywtMC44MTAyIDUuOTg2MzI2LDAuNzIwNyBsIC0xLjgwNjYzOCwxLjkwNjMgNy44MjgxMjgsMS45MDYyIC0yLjMyNDIyLC03LjcxMjkgLTEuNjI2OTYsMS43MTY4IGMgLTEuMjYzMzgsLTEuMjUzMSAtMi44NDg5MTcsLTIuMDA4OCAtNC41MDU4NTUsLTIuMjI4NSAtMC40MTg3NzgsLTAuMDU1IC0wLjg0MjI2MywtMC4wNzYgLTEuMjY1NjI1LC0wLjA2MiB6Ig0KICAgICBpZD0icGF0aDQxMzgtMS0zIiAvPg0KICA8cGF0aA0KICAgICBpZD0icGF0aDYxOTEiDQogICAgIGQ9Im0gMTAuNSwxMTYgMCwtMiAtMi40OTk5OTk2LDAgTCAxMiwxMDkgbCA0LDUgLTIuNSwwIDAsMiAtMywwIHoiDQogICAgIHN0eWxlPSJvcGFjaXR5OjAuODtmaWxsOiNmZmZmZmY7ZmlsbC1vcGFjaXR5OjE7c3Ryb2tlOm5vbmU7c3Ryb2tlLXdpZHRoOjEuOTY2O3N0cm9rZS1taXRlcmxpbWl0OjQ7c3Ryb2tlLWRhc2hhcnJheTpub25lIg0KICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIiAvPg0KICA8cGF0aA0KICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIg0KICAgICBzdHlsZT0ib3BhY2l0eTowLjg7ZmlsbDojZmZmZmZmO2ZpbGwtb3BhY2l0eToxO3N0cm9rZTpub25lO3N0cm9rZS13aWR0aDoxLjk2NjtzdHJva2UtbWl0ZXJsaW1pdDo0O3N0cm9rZS1kYXNoYXJyYXk6bm9uZSINCiAgICAgZD0ibSAxMC41LDEyOSAwLC0yIC0yLjQ5OTk5OTYsMCBMIDEyLDEyMiBsIDQsNSAtMi41LDAgMCwyIC0zLDAgeiINCiAgICAgaWQ9InBhdGg2MTkzIiAvPg0KICA8cGF0aA0KICAgICBpZD0icGF0aDYxOTUiDQogICAgIGQ9Im0gMTAuNSwxMzUgMCwyIC0yLjQ5OTk5OTYsMCBMIDEyLDE0MiBsIDQsLTUgLTIuNSwwIDAsLTIgLTMsMCB6Ig0KICAgICBzdHlsZT0ib3BhY2l0eTowLjg7ZmlsbDojZmZmZmZmO2ZpbGwtb3BhY2l0eToxO3N0cm9rZTpub25lO3N0cm9rZS13aWR0aDoxLjk2NjtzdHJva2UtbWl0ZXJsaW1pdDo0O3N0cm9rZS1kYXNoYXJyYXk6bm9uZSINCiAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIgLz4NCiAgPHBhdGgNCiAgICAgc29kaXBvZGk6dHlwZT0ic3RhciINCiAgICAgc3R5bGU9ImZpbGw6IzRkNGQ0ZDtmaWxsLW9wYWNpdHk6MC45MDE5NjA3ODtzdHJva2U6I2QzZDNkMztzdHJva2Utd2lkdGg6MDtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbGluZWpvaW46cm91bmQ7c3Ryb2tlLW1pdGVybGltaXQ6NDtzdHJva2UtZGFzaGFycmF5Om5vbmUiDQogICAgIGlkPSJwYXRoNDUwMCINCiAgICAgc29kaXBvZGk6c2lkZXM9IjMiDQogICAgIHNvZGlwb2RpOmN4PSIxMS41NTU4MSINCiAgICAgc29kaXBvZGk6Y3k9IjYwLjA3MzI0MiINCiAgICAgc29kaXBvZGk6cjE9IjUuMTExNjEwNCINCiAgICAgc29kaXBvZGk6cjI9IjIuNTU1ODA1MiINCiAgICAgc29kaXBvZGk6YXJnMT0iMCINCiAgICAgc29kaXBvZGk6YXJnMj0iMS4wNDcxOTc2Ig0KICAgICBpbmtzY2FwZTpmbGF0c2lkZWQ9ImZhbHNlIg0KICAgICBpbmtzY2FwZTpyb3VuZGVkPSIwIg0KICAgICBpbmtzY2FwZTpyYW5kb21pemVkPSIwIg0KICAgICBkPSJtIDE2LjY2NzQyLDYwLjA3MzI0MiAtMy44MzM3MDgsMi4yMTMzOTIgLTMuODMzNzA3MiwyLjIxMzM5MyAwLC00LjQyNjc4NSAwLC00LjQyNjc4NCAzLjgzMzcwODIsMi4yMTMzOTIgeiINCiAgICAgaW5rc2NhcGU6dHJhbnNmb3JtLWNlbnRlci14PSItMS4yNzc5MDI2IiAvPg0KICA8cGF0aA0KICAgICBpbmtzY2FwZTp0cmFuc2Zvcm0tY2VudGVyLXg9IjEuMjc3OTAyIg0KICAgICBkPSJtIC0zMS41MDAwMDQsNjAuMDczMjQyIC0zLjgzMzcwOCwyLjIxMzM5MiAtMy44MzM3MDcsMi4yMTMzOTMgMCwtNC40MjY3ODUgMCwtNC40MjY3ODQgMy44MzM3MDcsMi4yMTMzOTIgeiINCiAgICAgaW5rc2NhcGU6cmFuZG9taXplZD0iMCINCiAgICAgaW5rc2NhcGU6cm91bmRlZD0iMCINCiAgICAgaW5rc2NhcGU6ZmxhdHNpZGVkPSJmYWxzZSINCiAgICAgc29kaXBvZGk6YXJnMj0iMS4wNDcxOTc2Ig0KICAgICBzb2RpcG9kaTphcmcxPSIwIg0KICAgICBzb2RpcG9kaTpyMj0iMi41NTU4MDUyIg0KICAgICBzb2RpcG9kaTpyMT0iNS4xMTE2MTA0Ig0KICAgICBzb2RpcG9kaTpjeT0iNjAuMDczMjQyIg0KICAgICBzb2RpcG9kaTpjeD0iLTM2LjYxMTYxNCINCiAgICAgc29kaXBvZGk6c2lkZXM9IjMiDQogICAgIGlkPSJwYXRoNDUwMiINCiAgICAgc3R5bGU9ImZpbGw6IzRkNGQ0ZDtmaWxsLW9wYWNpdHk6MC45MDE5NjA3ODtzdHJva2U6I2QzZDNkMztzdHJva2Utd2lkdGg6MDtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbGluZWpvaW46cm91bmQ7c3Ryb2tlLW1pdGVybGltaXQ6NDtzdHJva2UtZGFzaGFycmF5Om5vbmUiDQogICAgIHNvZGlwb2RpOnR5cGU9InN0YXIiDQogICAgIHRyYW5zZm9ybT0ic2NhbGUoLTEsMSkiIC8+DQogIDxwYXRoDQogICAgIGQ9Im0gMTYuNjY3NDIsNjAuMDczMjEyIC0zLjgzMzcwOCwyLjIxMzM5MiAtMy44MzM3MDcyLDIuMjEzMzkyIDAsLTQuNDI2Nzg0IDAsLTQuNDI2Nzg1IDMuODMzNzA4MiwyLjIxMzM5MiB6Ig0KICAgICBpbmtzY2FwZTpyYW5kb21pemVkPSIwIg0KICAgICBpbmtzY2FwZTpyb3VuZGVkPSIwIg0KICAgICBpbmtzY2FwZTpmbGF0c2lkZWQ9ImZhbHNlIg0KICAgICBzb2RpcG9kaTphcmcyPSIxLjA0NzE5NzYiDQogICAgIHNvZGlwb2RpOmFyZzE9IjAiDQogICAgIHNvZGlwb2RpOnIyPSIyLjU1NTgwNTIiDQogICAgIHNvZGlwb2RpOnIxPSI1LjExMTYxMDQiDQogICAgIHNvZGlwb2RpOmN5PSI2MC4wNzMyMTIiDQogICAgIHNvZGlwb2RpOmN4PSIxMS41NTU4MSINCiAgICAgc29kaXBvZGk6c2lkZXM9IjMiDQogICAgIGlkPSJwYXRoNDUwNCINCiAgICAgc3R5bGU9ImZpbGw6IzRkNGQ0ZDtmaWxsLW9wYWNpdHk6MC45MDE5NjA3ODtzdHJva2U6I2QzZDNkMztzdHJva2Utd2lkdGg6MDtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbGluZWpvaW46cm91bmQ7c3Ryb2tlLW1pdGVybGltaXQ6NDtzdHJva2UtZGFzaGFycmF5Om5vbmUiDQogICAgIHNvZGlwb2RpOnR5cGU9InN0YXIiDQogICAgIHRyYW5zZm9ybT0ibWF0cml4KDAsMSwtMSwwLDcyLjAwNzQsNzEuNzg3NykiDQogICAgIGlua3NjYXBlOnRyYW5zZm9ybS1jZW50ZXIteT0iMS4yNzc5MDI5IiAvPg0KICA8cGF0aA0KICAgICBpbmtzY2FwZTp0cmFuc2Zvcm0tY2VudGVyLXk9Ii0xLjI3NzkwMjYiDQogICAgIHRyYW5zZm9ybT0ibWF0cml4KDAsLTEsLTEsMCw5Niw5NikiDQogICAgIHNvZGlwb2RpOnR5cGU9InN0YXIiDQogICAgIHN0eWxlPSJmaWxsOiM0ZDRkNGQ7ZmlsbC1vcGFjaXR5OjAuOTAxOTYwNzg7c3Ryb2tlOiNkM2QzZDM7c3Ryb2tlLXdpZHRoOjA7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kO3N0cm9rZS1taXRlcmxpbWl0OjQ7c3Ryb2tlLWRhc2hhcnJheTpub25lIg0KICAgICBpZD0icGF0aDQ1MDYiDQogICAgIHNvZGlwb2RpOnNpZGVzPSIzIg0KICAgICBzb2RpcG9kaTpjeD0iMTEuNTU1ODEiDQogICAgIHNvZGlwb2RpOmN5PSI2MC4wNzMyMTIiDQogICAgIHNvZGlwb2RpOnIxPSI1LjExMTYxMDQiDQogICAgIHNvZGlwb2RpOnIyPSIyLjU1NTgwNTIiDQogICAgIHNvZGlwb2RpOmFyZzE9IjAiDQogICAgIHNvZGlwb2RpOmFyZzI9IjEuMDQ3MTk3NiINCiAgICAgaW5rc2NhcGU6ZmxhdHNpZGVkPSJmYWxzZSINCiAgICAgaW5rc2NhcGU6cm91bmRlZD0iMCINCiAgICAgaW5rc2NhcGU6cmFuZG9taXplZD0iMCINCiAgICAgZD0ibSAxNi42Njc0Miw2MC4wNzMyMTIgLTMuODMzNzA4LDIuMjEzMzkyIC0zLjgzMzcwNzIsMi4yMTMzOTIgMCwtNC40MjY3ODQgMCwtNC40MjY3ODUgMy44MzM3MDgyLDIuMjEzMzkyIHoiIC8+DQogIDxwYXRoDQogICAgIHNvZGlwb2RpOm5vZGV0eXBlcz0iY2NjYyINCiAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCINCiAgICAgaWQ9InBhdGg0NjE1LTUiDQogICAgIGQ9Im0gMTcxLjgyNTc0LDY1LjE3NDE5MyAxNi4zNDg1NCwwIC04LjE3NDI3LC0xMy4zNDg0NTQgeiINCiAgICAgc3R5bGU9ImZpbGw6I2ZiYjkxNztmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6I2ZiYjkxNztzdHJva2Utd2lkdGg6MS42NTE2MTM5NTtzdHJva2UtbGluZWNhcDpidXR0O3N0cm9rZS1saW5lam9pbjpyb3VuZDtzdHJva2UtbWl0ZXJsaW1pdDo0O3N0cm9rZS1kYXNoYXJyYXk6bm9uZTtzdHJva2Utb3BhY2l0eToxIiAvPg0KICA8cGF0aA0KICAgICBzdHlsZT0ib3BhY2l0eToxO2ZpbGw6I2ZmZmZmZjtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6bm9uZTtzdHJva2Utd2lkdGg6MXB4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1vcGFjaXR5OjEiDQogICAgIGQ9Im0gMTc5LDU1IDAsNiAyLDAgMCwtNiINCiAgICAgaWQ9InBhdGg0MzAwIg0KICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIg0KICAgICBzb2RpcG9kaTpub2RldHlwZXM9ImNjY2MiIC8+DQogIDxwYXRoDQogICAgIHN0eWxlPSJvcGFjaXR5OjE7ZmlsbDojZmZmZmZmO2ZpbGwtb3BhY2l0eToxO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTpub25lO3N0cm9rZS13aWR0aDoxcHg7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2UtbGluZWpvaW46bWl0ZXI7c3Ryb2tlLW9wYWNpdHk6MSINCiAgICAgZD0ibSAxNzksNjIgMCwyIDIsMCAwLC0yIg0KICAgICBpZD0icGF0aDQzMDAtNiINCiAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCINCiAgICAgc29kaXBvZGk6bm9kZXR5cGVzPSJjY2NjIiAvPg0KPC9zdmc+DQo=\"","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.IView = void 0;\nvar IView;\n(function (IView) {\n IView[\"home\"] = \"home\";\n IView[\"created\"] = \"created\";\n IView[\"about\"] = \"about\";\n IView[\"dashboard\"] = \"dashboard\";\n IView[\"status\"] = \"status\";\n IView[\"sdk\"] = \"sdk\";\n})(IView = exports.IView || (exports.IView = {}));\n","\"use strict\";\nconst configs = {\n apiPath: 'https://getpantry.cloud/apiv1',\n docsPath: 'https://documenter.getpostman.com/view/3281832/SzmZeMLC',\n};\nmodule.exports = configs;\n","module.exports = require('./lib/axios');","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra\n*/\n// css base code, injected by the css-loader\nmodule.exports = function(useSourceMap) {\n\tvar list = [];\n\n\t// return the list of modules as css string\n\tlist.toString = function toString() {\n\t\treturn this.map(function (item) {\n\t\t\tvar content = cssWithMappingToString(item, useSourceMap);\n\t\t\tif(item[2]) {\n\t\t\t\treturn \"@media \" + item[2] + \"{\" + content + \"}\";\n\t\t\t} else {\n\t\t\t\treturn content;\n\t\t\t}\n\t\t}).join(\"\");\n\t};\n\n\t// import a list of modules into the list\n\tlist.i = function(modules, mediaQuery) {\n\t\tif(typeof modules === \"string\")\n\t\t\tmodules = [[null, modules, \"\"]];\n\t\tvar alreadyImportedModules = {};\n\t\tfor(var i = 0; i < this.length; i++) {\n\t\t\tvar id = this[i][0];\n\t\t\tif(typeof id === \"number\")\n\t\t\t\talreadyImportedModules[id] = true;\n\t\t}\n\t\tfor(i = 0; i < modules.length; i++) {\n\t\t\tvar item = modules[i];\n\t\t\t// skip already imported module\n\t\t\t// this implementation is not 100% perfect for weird media query combinations\n\t\t\t// when a module is imported multiple times with different media queries.\n\t\t\t// I hope this will never occur (Hey this way we have smaller bundles)\n\t\t\tif(typeof item[0] !== \"number\" || !alreadyImportedModules[item[0]]) {\n\t\t\t\tif(mediaQuery && !item[2]) {\n\t\t\t\t\titem[2] = mediaQuery;\n\t\t\t\t} else if(mediaQuery) {\n\t\t\t\t\titem[2] = \"(\" + item[2] + \") and (\" + mediaQuery + \")\";\n\t\t\t\t}\n\t\t\t\tlist.push(item);\n\t\t\t}\n\t\t}\n\t};\n\treturn list;\n};\n\nfunction cssWithMappingToString(item, useSourceMap) {\n\tvar content = item[1] || '';\n\tvar cssMapping = item[3];\n\tif (!cssMapping) {\n\t\treturn content;\n\t}\n\n\tif (useSourceMap && typeof btoa === 'function') {\n\t\tvar sourceMapping = toComment(cssMapping);\n\t\tvar sourceURLs = cssMapping.sources.map(function (source) {\n\t\t\treturn '/*# sourceURL=' + cssMapping.sourceRoot + source + ' */'\n\t\t});\n\n\t\treturn [content].concat(sourceURLs).concat([sourceMapping]).join('\\n');\n\t}\n\n\treturn [content].join('\\n');\n}\n\n// Adapted from convert-source-map (MIT)\nfunction toComment(sourceMap) {\n\t// eslint-disable-next-line no-undef\n\tvar base64 = btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap))));\n\tvar data = 'sourceMappingURL=data:application/json;charset=utf-8;base64,' + base64;\n\n\treturn '/*# ' + data + ' */';\n}\n","/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra\n*/\n\nvar stylesInDom = {};\n\nvar\tmemoize = function (fn) {\n\tvar memo;\n\n\treturn function () {\n\t\tif (typeof memo === \"undefined\") memo = fn.apply(this, arguments);\n\t\treturn memo;\n\t};\n};\n\nvar isOldIE = memoize(function () {\n\t// Test for IE <= 9 as proposed by Browserhacks\n\t// @see http://browserhacks.com/#hack-e71d8692f65334173fee715c222cb805\n\t// Tests for existence of standard globals is to allow style-loader\n\t// to operate correctly into non-standard environments\n\t// @see https://github.com/webpack-contrib/style-loader/issues/177\n\treturn window && document && document.all && !window.atob;\n});\n\nvar getTarget = function (target) {\n return document.querySelector(target);\n};\n\nvar getElement = (function (fn) {\n\tvar memo = {};\n\n\treturn function(target) {\n // If passing function in options, then use it for resolve \"head\" element.\n // Useful for Shadow Root style i.e\n // {\n // insertInto: function () { return document.querySelector(\"#foo\").shadowRoot }\n // }\n if (typeof target === 'function') {\n return target();\n }\n if (typeof memo[target] === \"undefined\") {\n\t\t\tvar styleTarget = getTarget.call(this, target);\n\t\t\t// Special case to return head of iframe instead of iframe itself\n\t\t\tif (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) {\n\t\t\t\ttry {\n\t\t\t\t\t// This will throw an exception if access to iframe is blocked\n\t\t\t\t\t// due to cross-origin restrictions\n\t\t\t\t\tstyleTarget = styleTarget.contentDocument.head;\n\t\t\t\t} catch(e) {\n\t\t\t\t\tstyleTarget = null;\n\t\t\t\t}\n\t\t\t}\n\t\t\tmemo[target] = styleTarget;\n\t\t}\n\t\treturn memo[target]\n\t};\n})();\n\nvar singleton = null;\nvar\tsingletonCounter = 0;\nvar\tstylesInsertedAtTop = [];\n\nvar\tfixUrls = require(\"./urls\");\n\nmodule.exports = function(list, options) {\n\tif (typeof DEBUG !== \"undefined\" && DEBUG) {\n\t\tif (typeof document !== \"object\") throw new Error(\"The style-loader cannot be used in a non-browser environment\");\n\t}\n\n\toptions = options || {};\n\n\toptions.attrs = typeof options.attrs === \"object\" ? options.attrs : {};\n\n\t// Force single-tag solution on IE6-9, which has a hard limit on the # of \r\n","import { render, staticRenderFns } from \"./vue-json-editor.vue?vue&type=template&id=551a97e0&scoped=true&\"\nimport script from \"./vue-json-editor.vue?vue&type=script&lang=js&\"\nexport * from \"./vue-json-editor.vue?vue&type=script&lang=js&\"\nimport style0 from \"./vue-json-editor.vue?vue&type=style&index=0&id=551a97e0&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"551a97e0\",\n null\n \n)\n\n/* hot reload */\nif (module.hot) {\n var api = require(\"/Users/rohanlikhite/Git/Pantry/node_modules/vue-hot-reload-api/dist/index.js\")\n api.install(require('vue'))\n if (api.compatible) {\n module.hot.accept()\n if (!api.isRecorded('551a97e0')) {\n api.createRecord('551a97e0', component.options)\n } else {\n api.reload('551a97e0', component.options)\n }\n module.hot.accept(\"./vue-json-editor.vue?vue&type=template&id=551a97e0&scoped=true&\", function () {\n api.rerender('551a97e0', {\n render: render,\n staticRenderFns: staticRenderFns\n })\n })\n }\n}\ncomponent.options.__file = \"node_modules/vue-json-editor/vue-json-editor.vue\"\nexport default component.exports","/* globals __VUE_SSR_CONTEXT__ */\n\n// IMPORTANT: Do NOT use ES2015 features in this file (except for modules).\n// This module is a runtime utility for cleaner component module output and will\n// be included in the final webpack user bundle.\n\nexport default function normalizeComponent (\n scriptExports,\n render,\n staticRenderFns,\n functionalTemplate,\n injectStyles,\n scopeId,\n moduleIdentifier, /* server only */\n shadowMode /* vue-cli only */\n) {\n // Vue.extend constructor export interop\n var options = typeof scriptExports === 'function'\n ? scriptExports.options\n : scriptExports\n\n // render functions\n if (render) {\n options.render = render\n options.staticRenderFns = staticRenderFns\n options._compiled = true\n }\n\n // functional template\n if (functionalTemplate) {\n options.functional = true\n }\n\n // scopedId\n if (scopeId) {\n options._scopeId = 'data-v-' + scopeId\n }\n\n var hook\n if (moduleIdentifier) { // server build\n hook = function (context) {\n // 2.3 injection\n context =\n context || // cached call\n (this.$vnode && this.$vnode.ssrContext) || // stateful\n (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n // 2.2 with runInNewContext: true\n if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n context = __VUE_SSR_CONTEXT__\n }\n // inject component styles\n if (injectStyles) {\n injectStyles.call(this, context)\n }\n // register component module identifier for async chunk inferrence\n if (context && context._registeredComponents) {\n context._registeredComponents.add(moduleIdentifier)\n }\n }\n // used by ssr in case component is cached and beforeCreate\n // never gets called\n options._ssrRegister = hook\n } else if (injectStyles) {\n hook = shadowMode\n ? function () {\n injectStyles.call(\n this,\n (options.functional ? this.parent : this).$root.$options.shadowRoot\n )\n }\n : injectStyles\n }\n\n if (hook) {\n if (options.functional) {\n // for template-only hot-reload because in that case the render fn doesn't\n // go through the normalizer\n options._injectStyles = hook\n // register for functional component in vue file\n var originalRender = options.render\n options.render = function renderWithStyleInjection (h, context) {\n hook.call(context)\n return originalRender(h, context)\n }\n } else {\n // inject component registration as beforeCreate hook\n var existing = options.beforeCreate\n options.beforeCreate = existing\n ? [].concat(existing, hook)\n : [hook]\n }\n }\n\n return {\n exports: scriptExports,\n options: options\n }\n}\n"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./node_modules/axios/lib/utils.js","webpack:///./node_modules/vue-json-editor/assets/img/jsoneditor-icons.svg","webpack:///./src/interfaces/view.ts","webpack:///./src/app/config.ts","webpack:///./node_modules/axios/index.js","webpack:///(webpack)/buildin/global.js","webpack:///./node_modules/css-loader/lib/css-base.js","webpack:///./node_modules/style-loader/lib/addStyles.js","webpack:///./node_modules/axios/lib/defaults.js","webpack:///./node_modules/process/browser.js","webpack:///./node_modules/css-loader/lib/url/escape.js","webpack:///./node_modules/axios/lib/helpers/bind.js","webpack:///./node_modules/axios/lib/helpers/buildURL.js","webpack:///./node_modules/axios/lib/core/enhanceError.js","webpack:///./node_modules/axios/lib/adapters/xhr.js","webpack:///./node_modules/axios/lib/core/createError.js","webpack:///./node_modules/axios/lib/cancel/isCancel.js","webpack:///./node_modules/axios/lib/core/mergeConfig.js","webpack:///./node_modules/axios/lib/cancel/Cancel.js","webpack:///./node_modules/vue-json-editor/vue-json-editor.vue?f708","webpack:///./src/app/components/modal.ts","webpack:///./src/app/components/banner.ts","webpack:///./node_modules/vue-json-editor/vue-json-editor.vue?5343","webpack:///./node_modules/vue-json-editor/vue-json-editor.vue?fb06","webpack:///node_modules/vue-json-editor/vue-json-editor.vue","webpack:///./node_modules/vue-json-editor/vue-json-editor.vue","webpack:///./node_modules/vue-loader/lib/runtime/componentNormalizer.js","webpack:///./node_modules/vue-json-editor/assets/jsoneditor.js","webpack:///./src/app/index.ts","webpack:///./node_modules/vue/dist/vue.min.js","webpack:///./node_modules/timers-browserify/main.js","webpack:///./node_modules/setimmediate/setImmediate.js","webpack:///./src/app/scss/main.scss?e2bf","webpack:///./src/app/scss/main.scss","webpack:///./src/app/assets/MeditatingDoodle.svg","webpack:///./src/app/assets/example.svg","webpack:///./node_modules/style-loader/lib/urls.js","webpack:///./src/app/components/mainContent.ts","webpack:///./src/app/templates/mainContent.html","webpack:///./src/app/components/dashboard.ts","webpack:///./node_modules/axios/lib/axios.js","webpack:///./node_modules/axios/lib/core/Axios.js","webpack:///./node_modules/axios/lib/core/InterceptorManager.js","webpack:///./node_modules/axios/lib/core/dispatchRequest.js","webpack:///./node_modules/axios/lib/core/transformData.js","webpack:///./node_modules/axios/lib/helpers/normalizeHeaderName.js","webpack:///./node_modules/axios/lib/core/settle.js","webpack:///./node_modules/axios/lib/helpers/cookies.js","webpack:///./node_modules/axios/lib/core/buildFullPath.js","webpack:///./node_modules/axios/lib/helpers/isAbsoluteURL.js","webpack:///./node_modules/axios/lib/helpers/combineURLs.js","webpack:///./node_modules/axios/lib/helpers/parseHeaders.js","webpack:///./node_modules/axios/lib/helpers/isURLSameOrigin.js","webpack:///./node_modules/axios/lib/helpers/validator.js","webpack:///./node_modules/axios/lib/cancel/CancelToken.js","webpack:///./node_modules/axios/lib/helpers/spread.js","webpack:///./node_modules/axios/lib/helpers/isAxiosError.js","webpack:///./src/app/templates/dashboard.html","webpack:///./src/app/components/explorer.ts","webpack:///./node_modules/vue-json-editor/assets/jsoneditor.css?d672","webpack:///./node_modules/vue-json-editor/assets/jsoneditor.css","webpack:///./node_modules/vue-json-editor/vue-json-editor.vue?4707","webpack:///./node_modules/vue-json-editor/vue-json-editor.vue?9e61","webpack:///./src/app/templates/explorer.html","webpack:///./src/app/components/changelog.ts","webpack:///./src/app/templates/changelog.html","webpack:///./src/app/components/explorerEmpty.ts","webpack:///./src/app/templates/explorerEmpty.html","webpack:///./src/app/components/explorerOnboarding.ts","webpack:///./src/app/templates/explorerOnboarding.html","webpack:///./src/app/components/basket.ts","webpack:///./src/app/templates/basket.html","webpack:///./src/app/templates/modal.html","webpack:///./src/app/components/login.ts","webpack:///./src/app/templates/login.html","webpack:///./src/app/templates/banner.html","webpack:///./src/app/components/sdk.ts","webpack:///./src/app/templates/sdk.html","webpack:///./src/app/components/home.ts","webpack:///./src/app/templates/home.html","webpack:///./src/app/components/initialSignup.ts","webpack:///./src/app/templates/initialSignup.html","webpack:///./src/app/components/finishSignup.ts","webpack:///./src/app/templates/finishSignup.html","webpack:///./src/app/components/features.ts","webpack:///./src/app/templates/features.html","webpack:///./src/app/components/example.ts","webpack:///./src/app/templates/example.html","webpack:///./src/app/components/stats.ts","webpack:///./src/app/templates/stats.html","webpack:///./src/app/components/quote.ts","webpack:///./src/app/templates/quote.html","webpack:///./src/app/components/onboarding.ts","webpack:///./src/app/templates/onboarding.html","webpack:///./src/app/components/about.ts","webpack:///./src/app/templates/about.html","webpack:///./src/app/components/faq.ts","webpack:///./src/app/templates/faq.html","webpack:///./src/app/components/topbar.ts","webpack:///./src/app/templates/topbar.html","webpack:///./src/app/components/headerBar.ts","webpack:///./src/app/templates/headerBar.html","webpack:///./src/app/components/bottomBar.ts","webpack:///./src/app/templates/bottomBar.html"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","toString","isArray","val","isUndefined","isObject","isPlainObject","getPrototypeOf","isFunction","forEach","obj","fn","length","isArrayBuffer","isBuffer","constructor","isFormData","FormData","isArrayBufferView","ArrayBuffer","isView","buffer","isString","isNumber","isDate","isFile","isBlob","isStream","pipe","isURLSearchParams","URLSearchParams","isStandardBrowserEnv","navigator","product","window","document","merge","result","assignValue","slice","arguments","extend","a","b","thisArg","trim","str","replace","stripBOM","content","charCodeAt","IView","apiPath","docsPath","g","this","Function","e","useSourceMap","list","map","item","cssMapping","btoa","sourceMapping","sourceMap","unescape","encodeURIComponent","JSON","stringify","sourceURLs","sources","source","sourceRoot","concat","join","cssWithMappingToString","mediaQuery","alreadyImportedModules","id","push","memo","stylesInDom","isOldIE","all","atob","apply","getTarget","target","querySelector","getElement","styleTarget","HTMLIFrameElement","contentDocument","head","singleton","singletonCounter","stylesInsertedAtTop","fixUrls","addStylesToDom","styles","options","domStyle","refs","j","parts","addStyle","listToStyles","newStyles","base","part","css","media","insertStyleElement","style","insertInto","Error","lastStyleElementInsertedAtTop","insertAt","nextSibling","insertBefore","appendChild","firstChild","before","removeStyleElement","parentNode","removeChild","idx","indexOf","splice","createStyleElement","createElement","undefined","attrs","type","addAttrs","el","keys","setAttribute","update","remove","transform","styleIndex","applyToSingletonTag","URL","createObjectURL","revokeObjectURL","Blob","link","rel","createLinkElement","updateLink","href","applyToTag","newObj","DEBUG","newList","mayRemove","textStore","replaceText","index","replacement","filter","Boolean","styleSheet","cssText","cssNode","createTextNode","childNodes","autoFixUrls","convertToAbsoluteUrls","blob","oldSrc","utils","normalizeHeaderName","enhanceError","DEFAULT_CONTENT_TYPE","setContentTypeIfUnset","headers","adapter","defaults","transitional","silentJSONParsing","forcedJSONParsing","clarifyTimeoutError","XMLHttpRequest","process","transformRequest","data","rawValue","parser","encoder","parse","stringifySafely","transformResponse","strictJSONParsing","responseType","timeout","xsrfCookieName","xsrfHeaderName","maxContentLength","maxBodyLength","validateStatus","status","common","method","cachedSetTimeout","cachedClearTimeout","defaultSetTimout","defaultClearTimeout","runTimeout","fun","setTimeout","clearTimeout","currentQueue","queue","draining","queueIndex","cleanUpNextTick","drainQueue","len","run","marker","runClearTimeout","Item","array","noop","nextTick","args","Array","title","browser","env","argv","version","versions","on","addListener","once","off","removeListener","removeAllListeners","emit","prependListener","prependOnceListener","listeners","binding","cwd","chdir","dir","umask","url","test","encode","params","paramsSerializer","serializedParams","v","toISOString","hashmarkIndex","error","config","code","request","response","isAxiosError","toJSON","message","description","number","fileName","lineNumber","columnNumber","stack","settle","cookies","buildURL","buildFullPath","parseHeaders","isURLSameOrigin","createError","Promise","resolve","reject","requestData","requestHeaders","auth","username","password","Authorization","fullPath","baseURL","onloadend","responseHeaders","getAllResponseHeaders","responseText","statusText","open","toUpperCase","onreadystatechange","readyState","responseURL","onabort","onerror","ontimeout","timeoutErrorMessage","xsrfValue","withCredentials","read","toLowerCase","setRequestHeader","onDownloadProgress","addEventListener","onUploadProgress","upload","cancelToken","promise","then","cancel","abort","send","__CANCEL__","config1","config2","valueFromConfig2Keys","mergeDeepPropertiesKeys","defaultToConfig2Keys","directMergeKeys","getMergedValue","mergeDeepProperties","prop","axiosKeys","otherKeys","Cancel","locals","modal","template","methods","$emit","banner","props","visible","render","_vm","_h","$createElement","_c","_self","staticClass","_v","showBtns","disabled","click","$event","onSave","_s","locale","lang","save","_e","_withStripped","String","Number","expandedOnStart","default","modes","watch","immediate","internalChange","setEditor","expandAll","deep","editor","json","expandedModes","it","en","zh","self","$nextTick","$el","includes","getMode","set","component","scriptExports","staticRenderFns","functionalTemplate","injectStyles","scopeId","moduleIdentifier","shadowMode","hook","_compiled","functional","_scopeId","context","$vnode","ssrContext","parent","__VUE_SSR_CONTEXT__","_registeredComponents","add","_ssrRegister","$root","$options","shadowRoot","_injectStyles","originalRender","h","existing","beforeCreate","__file","factory","loaded","Ajv","err","treemode","textmode","util","JSONEditor","container","ieVersion","getInternetExplorerVersion","console","warn","onError","change","onChange","editable","onEditable","VALID_OPTIONS","option","_create","DEBOUNCE_INTERVAL","setMode","destroy","setText","jsonText","getText","setName","getName","oldMode","asText","clear","mixin","load","onModeChange","_onError","setSchema","schema","ajv","allErrors","verbose","validateSchema","compile","validate","refresh","registerMode","reserved","compileSchema","Cache","SchemaObject","stableStringify","formats","rules","v5","async","co","compileAsync","addKeyword","ValidationError","META_SCHEMA_ID","SCHEMA_URI_FORMAT","SCHEMA_URI_FORMAT_FUNC","META_IGNORE_OPTIONS","opts","schemaKeyRef","getSchema","schemaObj","_addSchema","_compile","valid","_opts","errors","addSchema","_skipValidation","_meta","checkUnique","normalizeId","_schemas","meta","addMetaSchema","skipValidation","throwOrLogError","$schema","defaultMeta","currentUriFormat","_formats","uri","errorsText","keyRef","_getSchemaObj","_refs","_removeAllSchemas","schemas","regex","_cache","del","jsonStr","shouldAddSchema","cached","addUsedSchema","localRefs","ids","put","root","compiling","callValidate","$async","currentOpts","_metaOpts","refVal","_validate","separator","dataVar","text","dataPath","addFormat","format","RegExp","copy","cache","_loadingSchemas","RULES","removeSchema","loopRequired","Infinity","transpile","setup","beautify","indent_size","errorDataPath","_errorDataPathProperty","metaOpts","getMetaSchemaOptions","optsSchemas","addInitialSchemas","addInitialFormats","enable","js_beautify","validateGenerator","baseId","patterns","patternsHash","defaultsHash","customRules","localCompile","_schema","_root","isRoot","sourceCode","isTop","schemaPath","errSchemaPath","errorPath","resolveRef","usePattern","useDefault","useCustomRule","vars","refValCode","patternCode","defaultCode","customRuleCode","validateCode","_transpileFunc","eval","ref","_refVal","refCode","refIndex","resolvedRef","rootRefId","addLocalRef","localSchema","inlineRef","inlineRefs","replaceLocalRef","refId","inline","regexStr","toQuotedString","valueStr","rule","parentSchema","definition","macro","keyword","arr","statement","ucs2length","equal","res","_resolve","refPath","_getFullPath","getFullPath","resolveRecursive","getJsonPointer","parsedRef","resolveUrl","_resolveIds","escapeFragment","PREVENT_SCOPE_CHANGE","toHash","hash","split","unescapeFragment","$ref","SIMPLE_INLINED","limit","checkNoRef","countKeys","count","normalize","protocol","host","path","TRAILING_SLASH_HASH","punycode","Url","slashes","port","hostname","search","query","pathname","urlParse","relative","resolveObject","protocolPattern","portPattern","unwise","autoEscape","nonHostChars","hostEndingChars","hostnamePartPattern","hostnamePartStart","unsafeProtocol","hostlessProtocol","slashedProtocol","querystring","parseQueryString","slashesDenoteHost","u","arg","isNull","TypeError","rest","proto","exec","lowerProto","substr","match","atSign","hostEnd","hec","lastIndexOf","decodeURIComponent","parseHost","ipv6Hostname","hostparts","newpart","k","validParts","notHost","bit","unshift","domainArray","newOut","ae","esc","escape","qm","charAt","relPath","shift","isSourceAbs","isRelAbs","mustEndAbs","removeAllDots","srcPath","psychotic","pop","authInHost","last","hasTrailingSlash","up","isAbsolute","__WEBPACK_AMD_DEFINE_RESULT__","global","nodeType","freeGlobal","maxInt","regexPunycode","regexNonASCII","regexSeparators","floor","Math","stringFromCharCode","fromCharCode","RangeError","mapDomain","string","ucs2decode","extra","output","counter","ucs2encode","digitToBasic","digit","flag","adapt","delta","numPoints","firstTime","baseMinusTMin","decode","input","out","basic","oldi","w","baseMinusT","codePoint","inputLength","bias","handledCPCount","basicLength","q","currentValue","handledCPCountPlusOne","qMinusT","webpackPolyfill","deprecate","paths","children","qs","sep","eq","regexp","maxKeys","kstr","vstr","x","stringifyPrimitive","isFinite","ks","arrA","arrB","checkDataType","dataType","negate","EQUAL","AND","OK","NOT","to","checkDataTypes","dataTypes","types","null","integer","coerceToTypes","COERCE_TO_TYPES","getProperty","escapeQuotes","pos","varOccurences","matches","varReplace","expr","cleanUpCode","EMPTY_ELSE","EMPTY_IF_NO_ELSE","EMPTY_IF_WITH_ELSE","cleanUpVarErrors","ERRORS_REGEXP","REMOVE_ERRORS_ASYNC","RETURN_ASYNC","REMOVE_ERRORS","schemaHasRules","getPathExpr","currentPath","jsonPointers","joinPaths","getPath","escapeJsonPointer","getData","$data","lvl","RELATIVE_JSON_POINTER","jsonPointer","segments","segment","unescapeJsonPointer","IDENTIFIER","SINGLE_QUOTE","cmp","space","f","cycles","replacer","node","aobj","bobj","seen","level","indent","colonSeparator","objectKeys","sort","keyValue","has","at","ch","escapee","next","hex","uffff","parseInt","white","word","reviver","walk","holder","gap","rep","escapable","quote","lastIndex","partial","mind","setupAsync","ASYNC","checkGenerators","checkAsyncFunction","TRANSPILE","getNodent","getRegenerator","MODES","regenerator","nodent","required","check","runtime","regeneratorTranspile","log","dontInstallRequireHook","nodentTranspile","promises","sourcemap","callback","loadSchema","_compileAsync","firstCall","missingSchema","loadMissingSchema","deferCallback","missingRef","_callbacks","schemaLoaded","sch","$keyword","$top","$lvl","$dataLvl","dataLevel","rootId","$es7","yieldAwait","dataPathArr","$errorKeyword","$valid","$breakOnError","$closingBraces1","$closingBraces2","$typeSchema","$typeIsArray","coerceTypes","$coerceToTypes","$schemaPath","$errSchemaPath","$method","$dataType","$coerced","$bracesCoercion","arr1","$type","$i","l1","$$outStack","createErrors","messages","__err","compositeRule","arr2","$rulesGroup","i2","l2","$shouldUseGroup","useDefaults","properties","arr3","$propertyKey","i3","l3","$sch","$passData","items","arr4","l4","arr5","$rule","i5","l5","$shouldUseRule","custom","$ruleValidate","$ruleErrs","$errs","$ruleErr","$rDef","$asyncKeyword","$inline","$macro","statements","$it","$wasComposite","$code","passContext","def_callRuleValidate","def_customError","$typeChecked","additionalProperties","patternProperties","patternGroups","gen","ctx","onFulfilled","ret","onRejected","throw","done","toPromise","isPromise","displayName","isGenerator","isGeneratorFunction","thunkToPromise","arrayToPromise","objectToPromise","results","defer","wrap","createPromise","__generatorFunction__","validation","DATE","DAYS","TIME","HOSTNAME","URI","UUID","JSON_POINTER","formatDefs","fName","compare","date","month","day","time","full","hour","minute","second","timeZone","fast","email","ipv4","ipv6","uuid","dateTime","DATE_TIME_SEPARATOR","NOT_URI_FRAGMENT","compareDate","compareTime","dt1","dt2","d1","d2","t1","t2","ruleModules","keywords","group","allOf","anyOf","dependencies","enum","maximum","minimum","maxItems","minItems","maxLength","minLength","maxProperties","minProperties","multipleOf","not","oneOf","pattern","uniqueItems","$refCode","$refVal","$message","missingRefs","$error","__callValidate","$closingBraces","every","$schemaDeps","$propertyDeps","$property","$deps","$currentErrorPath","_$property","$prop","$propertyPath","$missingProperty","$isData","$schemaValue","$format","$isObject","$formatRef","$dataNxt","$nextData","$additionalItems","additionalItems","$currErrSchemaPath","$isMax","$exclusiveKeyword","$schemaExcl","$op","$notOp","$schemaValueExcl","$exclusive","$opStr","$opExpr","unicode","multipleOfPrecision","$allErrorsOption","$schemaKeys","$pProperties","$pPropertyKeys","$aProperties","$someProperties","$noAdditional","$additionalIsSchema","$removeAdditional","removeAdditional","$checkAdditional","$required","$requiredHash","$pgProperties","$pgPropertyKeys","i1","$pProperty","$pgProperty","$additionalProperty","$useDefaults","i4","$hasDefault","$useData","arr6","i6","l6","$pgSchema","$pgMin","$pgMax","$limit","$reason","$moreOrLess","$propertySch","$loopRequired","containsMacro","inlineFunctions","metaSchema","_addKeyword","inlineFunc","_formatLimit","$shouldContinue","$ifPassed","$caseIndex","if","continue","$schemaFormat","$isDataFormat","$compare","$isDataExcl","$result","$key","$matched","$missingPattern","_addRule","ruleGroup","rg","Highlighter","History","SearchBox","ContextMenu","Node","ModeSwitcher","dom","highlighter","selection","multiselection","nodes","errorNodes","focusTarget","_setOptions","history","_createFrame","_createTable","frame","_debouncedValidate","searchBox","modeSwitcher","debounce","table","field","_setRoot","expand","getNodeFromTarget","blur","getValue","updateField","focus","menu","collapse","tbody","getDom","action","_onChange","setError","duplicateErrors","schemaErrors","improveSchemaError","findNode","entry","reduce","findParents","child","updateDom","recurse","mouseY","me","top","getAbsoluteTop","height","clientHeight","bottom","scrollTop","autoScrollStep","scrollHeight","autoScrollTimer","setInterval","stopAutoScroll","select","range","setSelectionOffset","getSelectionOffset","nodeName","animateTimeout","animateCallback","finalScrollTop","min","max","animate","diff","abs","className","onEvent","event","_onEvent","onclick","preventDefault","oninput","onchange","onkeydown","onkeyup","oncut","onpaste","onmousedown","onmouseup","onmouseover","onmouseout","onfocusin","onfocusout","collapseAll","undo","_onUndo","redo","_onRedo","canUndo","canRedo","_onKeyDown","_startDragDistance","_updateDragDistance","selected","showContextMenu","hasMoved","deselect","onDragStart","drag","_onMultiSelectStart","dragDistanceEvent","initialTarget","initialPageX","pageX","initialPageY","pageY","dragDistance","diffX","diffY","sqrt","start","end","mousemove","_onMultiSelect","mouseup","_onMultiSelectEnd","_findTopLevelNodes","removeEventListener","clearStartAndEnd","setSelected","first","startPath","getNodePath","endPath","startChild","endChild","childs","startIndex","endIndex","firstIndex","keynum","which","keyCode","ctrlKey","shiftKey","handled","selectContentEditable","previous","stopPropagation","col","contentOuter","colgroupContent","width","anchor","onClose","onDuplicate","onRemove","close","show","locked","highlight","setHighlight","_cancelUnhighlight","unhighlight","unhighlightTimer","lock","unlock","actions","oldValue","newValue","updateValue","changeType","oldType","newType","beforeNode","afterNode","insertAfter","append","oldBeforeNode","moveBefore","newBeforeNode","hideChilds","oldSort","oldChilds","showChilds","newSort","newChilds","Date","oldSelection","setSelection","newSelection","jsonlint","jsonString","sanitize","jsString","chars","curr","lastNonWhitespace","pp","skipBlockComment","skipComment","parseString","parseKey","escapeUnicodeChars","isUrlRegex","isUrl","getAbsoluteLeft","elem","getBoundingClientRect","left","pageXOffset","scrollLeft","pageYOffset","addClassName","classes","removeClassName","stripFormatting","divElement","iMax","removeAttribute","attributes","attribute","specified","setEndOfContentEditable","contentEditableElement","createRange","selectNodeContents","getSelection","removeAllRanges","addRange","sel","getRangeAt","rangeCount","startContainer","endContainer","startOffset","endOffset","setStart","setEnd","getInnerText","element","nodeValue","flush","hasChildNodes","innerText","prevChild","prevName","_ieVersion","rv","appName","ua","userAgent","parseFloat","$1","isFirefox","listener","useCapture","attachEvent","detachEvent","parsePath","jsonPath","remainder","SyntaxError","substring","enums","more","additionalProperty","insideRect","margin","_margin","right","func","wait","later","callNow","textDiff","oldText","newText","oldEnd","newEnd","lexer","trace","yy","symbols_","terminals_","2","4","6","8","10","11","14","17","18","21","22","23","24","productions_","performAction","yytext","yyleng","yylineno","yystate","$$","_$","$0","$","3","5","7","9","12","13","15","16","1","19","20","25","defaultActions","parseError","vstack","lstack","recovering","setInput","yylloc","yyloc","lex","token","symbol","preErrorSymbol","state","newState","expected","yyval","errStr","showPosition","line","loc","first_line","last_line","first_column","last_column","EOF","_input","_more","_less","matched","conditionStack","unput","less","pastInput","past","upcomingInput","pre","tempMatch","lines","_currentRules","flex","begin","condition","popState","conditions","topState","pushState","yy_","$avoiding_name_collisions","YY_START","delay","lastText","tr","td","divInput","tableInput","tbodySearch","refreshSearch","_onDelayedSearch","_onSearch","_onKeyUp","searchNext","searchPrevious","resultIndex","_setActiveResult","activeResult","prevNode","searchFieldActive","searchValueActive","scrollTo","_clearDelay","forceSearch","resultCount","innerHTML","eventListeners","focusButton","li","overflow","createMenuItems","domItems","domItem","button","hide","submenu","buttonSubmenu","divIcon","buttonExpand","submenuTitle","divExpand","_onExpandItem","domSubItems","subItems","ul","maxHeight","_getVisibleButtons","buttons","expandedItem","subItem","visibleMenu","contentWindow","showBelow","anchorRect","contentRect","anchorHeight","offsetHeight","mousedown","_isChildOf","keydown","alreadyVisible","padding","display","targetIndex","prevButton","nextButton","naturalSort","appendNodeFactory","expanded","setField","fieldEditable","setValue","_debouncedOnChangeValue","_onChangeValue","_debouncedOnChangeField","_onChangeField","_updateEditability","parents","tdError","tdValue","popover","onfocus","directions","direction","popoverRect","getIndex","setParent","previousField","getField","_getDomField","childValue","_getType","childField","sortObjectKeys","previousValue","_getDomValue","getLevel","clone","fieldInnerText","valueInnerText","cloneChilds","childClone","getAppend","nextTr","_hasChilds","newTr","appendTr","trTemp","AppendNode","moveTo","searchField","searchValue","_updateDomField","childResults","_updateDomValue","offsetTop","focusElement","elementName","editableDiv","containsNode","_move","clearDom","removedNode","_remove","lastTr","_stringCast","silent","_unescapeHTML","undoDiff","redoDiff","_onAction","domValue","classNames","checkbox","tdCheckbox","checked","getUTCMilliseconds","tdSelect","valueFieldHTML","visibility","domField","duplicateKeys","tdDrag","domDrag","tdMenu","tdField","tree","_createDomTree","firstNode","lastNode","draggedNode","_nextSibling","offsetY","onDrag","onDragEnd","oldCursor","body","cursor","mouseX","trThis","trPrev","trNext","trFirst","trLast","trRoot","nodePrev","nodeNext","topThis","topPrev","topFirst","heightThis","bottomNext","heightNext","moved","previousSibling","diffLevel","round","levelNext","some","startAutoScroll","_createDomField","isFirst","domTree","marginLeft","fieldText","contentEditable","spellcheck","_escapeHTML","_updateSchema","updateIndexes","_updateDomIndexes","_findSchema","_findEnum","composite","childSchema","_createDomValue","_createDomExpandButton","borderCollapse","tdExpand","tdSeparator","srcElement","expandable","_onExpand","offsetX","onKeyDown","nextNode","nextDom","nextDom2","altKey","selectedNodes","_onInsertBefore","_onInsertAfter","endNode","_lastNode","_getElementName","homeNode","_firstNode","prevElement","_previousElement","appendDom","nextNode2","_previousNode","nextElement","_nextElement","prevDom","isVisible","_nextNode","blurNodes","clones","newNode","_onAppend","_onChangeType","order","oldSortOrder","sortOrder","firstDom","lastDom","lastChild","TYPE_TITLES","titles","auto","lower","num","numFloat","isNaN","htmlEscaped","html","escapeUnicode","escapedText","_escapeJSON","escaped","oFxNcL","oFyNcL","re","sre","dre","hre","ore","insensitive","y","xN","yN","xD","yD","cLoc","numS","trAppend","tdAppend","domText","paddingLeft","current","onSwitch","availableModes","form","view","currentMode","currentTitle","box","position","ace","indentation","_ace","theme","aceEditor","textarea","clientWidth","buttonFormat","buttonCompact","compact","editorDom","edit","$blockScrolling","setTheme","setShowPrintMargin","setFontSize","getSession","setTabSize","setUseSoftTabs","setUseWrapMode","commands","bindKey","poweredBy","resize","originalOnChange","validationErrors","marginBottom","paddingBottom","doValidate","hidden","define","deps","payload","payloads","original","_acequire","parentId","lookup","dep","acequire","packagedModule","normalizeModule","moduleName","chunks","mod","packaged","real","compliantExecNpcg","compliantLastIndexIncrement","getNativeFlags","ignoreCase","multiline","extended","sticky","from","r2","_xregexp","captureNames","Empty","that","bound","defineGetter","defineSetter","lookupGetter","lookupSetter","supportsAccessors","prototypeOfArray","prototypeOfObject","_toString","owns","__defineGetter__","__defineSetter__","__lookupGetter__","__lookupSetter__","makeArray","lengthBefore","array_splice","deleteCount","removeCount","removed","insert","tailOldPos","tailNewPos","tailCount","lengthAfterRemove","createEmpty","freezeObject","boxedString","splitString","doesDefinePropertyWork","exception","toObject","thisp","reduceRight","sought","toInteger","__proto__","getOwnPropertyDescriptor","descriptor","configurable","setter","getOwnPropertyNames","empty","propertyIsEnumerable","isPrototypeOf","toLocaleString","valueOf","Type","defineProperties","definePropertyWorksOnObject","definePropertyWorksOnDom","definePropertyFallback","seal","freeze","preventExtensions","isSealed","isFrozen","isExtensible","returnValue","hasDontEnumBug","dontEnums","dontEnumsLength","ii","dontEnum","now","getTime","ws","trimBeginRegexp","trimEndRegexp","getDocumentHead","doc","getElementsByTagName","documentElement","tag","createElementNS","hasCssClass","addCssClass","removeCssClass","toggleCssClass","setCssClass","include","hasCssString","sheets","createStyleSheet","styleSheets","owningElement","importCssString","importCssStylsheet","getInnerWidth","computedStyle","getInnerHeight","scrollbarWidth","inner","minWidth","outer","noScrollbar","offsetWidth","withScrollbar","getPageScrollTop","getPageScrollLeft","getComputedStyle","currentStyle","setInnerHtml","innerHtml","cloneNode","replaceChild","setInnerText","textContent","getParentWindow","defaultView","parentWindow","inherits","ctor","superCtor","super_","writable","implement","oop","Keys","MODIFIER_KEYS","224","KEY_MODS","FUNCTION_KEYS","27","32","33","34","35","36","37","38","39","40","44","45","46","96","97","98","99","100","101","102","103","104","105","112","113","114","115","116","117","118","119","120","121","122","123","144","145","PRINTABLE_KEYS","48","49","50","51","52","53","54","55","56","57","59","61","65","66","67","68","69","70","71","72","73","74","75","76","77","78","79","80","81","82","83","84","85","86","87","88","89","90","107","109","110","186","187","188","189","190","191","192","219","220","221","222","111","106","enter","mods","pow","keyCodeToString","keyString","OS","LINUX","MAC","WINDOWS","getOS","isMac","isLinux","os","platform","isWin","isIE","isGecko","isMozilla","Controllers","controllers","isOldGecko","isOpera","opera","isWebKit","isChrome","isAIR","isIPad","isTouchPad","isChromeOS","useragent","pressedKeys","ts","wrapper","_wrapper","stopEvent","cancelBubble","getButton","capture","eventHandler","releaseCaptureHandler","onMouseUp","addTouchMoveListener","startx","starty","touchObj","changedTouches","clientX","clientY","wheelX","wheelY","addMouseWheelListener","wheelDeltaX","wheelDeltaY","wheelDelta","deltaMode","DOM_DELTA_PIXEL","deltaX","deltaY","DOM_DELTA_LINE","DOM_DELTA_PAGE","axis","HORIZONTAL_AXIS","detail","addMultiMouseDownListener","elements","timeouts","callbackName","startX","startY","timer","clicks","eventNames","onMousedown","isNewClick","_clicks","onDblclick","getModifierHash","metaKey","normalizeCommandKeys","hashId","OSKey","altGr","location","keyLocation","timeStamp","defaultPrevented","resetPressedKeys","lastT","getModifierString","addCommandKeyListener","lastKeyDownKeyCode","lastDefaultPrevented","postMessage","win","nextFrame","requestAnimationFrame","mozRequestAnimationFrame","webkitRequestAnimationFrame","msRequestAnimationFrame","oRequestAnimationFrame","stringReverse","reverse","stringRepeat","stringTrimLeft","stringTrimRight","copyObject","copyArray","deepCopy","cons","arrayToMap","createMap","arrayRemove","escapeRegExp","escapeHTML","getMatchOffsets","regExp","offset","deferredCall","fcn","deferred","schedule","isPending","delayedCall","defaultTimeout","BROKEN_SETDATA","USE_IE_MIME_TYPE","TextInput","opacity","copied","pasted","inComposition","tempStyle","isSelectionEmpty","isFocused","activeElement","onBlur","onFocus","resetSelection","syncSelection","syncValue","isEmpty","inputHandler","selectionStart","selectionEnd","setSelectionRange","resetValue","isAllSelected","createTextRange","moveStart","moveEnd","ownerDocument","parentElement","inPropertyChange","onPropertyChange","syncProperty","sendText","keytable","onCompositionEnd","onCompositionUpdate","onCompositionStart","setInputHandler","cb","getInputHandler","afterContextMenu","onPaste","execCommand","onTextInput","handleClipboardData","clipboardData","mime","setData","doCopy","isCut","getCopyText","onCut","onCopy","onCommandKey","selectAll","closeTimeout","$readOnly","session","markUndoGroup","clearSelection","lastValue","getRange","setRange","syncComposition","onContextMenuClose","renderer","$keepTextAreaAtCursor","$moveTextAreaToCursor","setReadOnly","readOnly","onContextMenu","_emit","domEvent","moveToMouse","bringToFront","rect","borderTopWidth","borderLeftWidth","maxTop","move","textInput","scroller","DefaultHandlers","mouseHandler","$clickSelection","setDefaultHandler","onMouseDown","onDoubleClick","onTripleClick","onQuadClick","onMouseWheel","onTouchMove","selectByLines","extendSelectionBy","selectByWords","calcRangeOrientation","row","column","ev","inSelection","getDocumentPosition","mousedownEvent","selectionEmpty","getSelectionRange","moveToPosition","$focusTimout","inMultiSelectMode","captureMouse","startSelect","setState","waitForClickSelection","screenToTextCoordinates","getShiftKey","selectToPosition","setCapture","setStyle","comparePoint","orientedRange","setSelectionAnchor","scrollCursorIntoView","unitName","cmpStart","cmpEnd","selectEnd","selectAllEnd","selectByWordsEnd","selectByLinesEnd","unsetStyle","releaseCapture","focusWait","ax","ay","bx","by","distance","getBracketRange","getWordRange","isMultiLine","contains","getLineRange","getAccelKey","dt","$lastScrollTime","isScrollableBy","speed","scrollBy","stop","Tooltip","isOpen","$element","$parentNode","$init","setHtml","setPosition","setClassName","getHeight","getWidth","GutterTooltip","windowWidth","innerWidth","windowHeight","innerHeight","GutterHandler","tooltipTimeout","mouseEvent","tooltipAnnotation","gutter","$gutterLayer","tooltip","hideTooltip","moveTooltip","getRegion","selectTo","$tooltipFollowsMouse","isMousePressed","annotation","$annotations","getLength","screenRow","pixelToScreenCoordinates","$pos","documentToScreenRow","showTooltip","$gutter","MouseEvent","$inSelection","propagationStopped","selectionRange","DragdropHandler","blankImage","src","dragSelectionMarker","timerId","dragCursor","dragOperation","isInternal","autoScrollStartTime","cursorMovedTime","cursorPointOnCaretMoved","mouseTarget","onDragInterval","prevCursor","vMovement","hMovement","moveCursorToPosition","calcDistance","lineHeight","layerConfig","characterWidth","editorRect","offsets","nearestXOffset","nearestYOffset","scrollCursor","vScroll","hScroll","autoScroll","addDragMarker","toOrientedRange","addMarker","getSelectionStyle","$cursorLayer","setBlinking","clearInterval","onMouseMove","clearDragMarker","removeMarker","fromOrientedRange","getReadOnly","cancelDrag","draggable","dataTransfer","effectAllowed","setDragImage","clearData","getTextRange","dropEffect","setCursorStyle","onDragEnter","canAccept","getDropEffect","onDragOver","onMouseMoveTimer","onDragLeave","onDrop","moveText","dropData","copyAllowed","copyModifierState","dragWait","getDragDelay","startDrag","dragWaitEnd","dragReadyEnd","cursorStyle","onMouseDrag","dragDrop","$dragEnabled","eventTarget","unselectable","xhr","loadScript","onload","_","isAbort","qualifyURL","EventEmitter","_dispatchEvent","eventName","_eventRegistry","_defaultHandlers","defaultHandler","_signal","newCallback","handlers","_disabled_","old","removeDefaultHandler","capturing","optionsProvider","setOptions","optList","setOption","getOptions","optionNames","getOption","opt","forwardTo","handlesSet","reportError","msg","AppConfig","$defaultOptions","defineOptions","initialValue","resetOptions","setDefaultValue","setDefaultValues","optionHash","net","workerPath","modePath","themePath","basePath","suffix","$moduleUrls","init","scriptOptions","scriptUrl","currentScript","_currentScript","scripts","script","getAttribute","attr","m1","moduleUrl","setModuleUrl","subst","$loading","loadModule","onLoad","moduleType","afterLoad","DefaultGutterHandler","MouseHandler","focusEditor","hasFocus","getMouseEventTarget","onMouseEvent","scrollBarV","scrollBarH","gutterEl","$dragDelay","character","insideStart","$scrollSpeed","mouseMoveHandler","releaseMouse","$mouseMoved","onCaptureEnd","onCaptureInterval","$onCaptureMouseMove","cancelContextMenu","scrollSpeed","dragDelay","dragEnabled","focusTimout","tooltipFollowsMouse","FoldHandler","fold","getFoldAt","removeFold","expandFold","foldWidgets","onFoldWidgetClick","getParentFoldRangeData","firstRange","getLine","addFold","keyUtil","KeyBinding","$editor","$handlers","kb","removeKeyboardHandler","$defaultHandler","addKeyboardHandler","setKeyboardHandler","handleKeyboard","attach","detach","getKeyboardHandler","getStatusText","$callKeyboardHandlers","toExecute","success","command","passEvent","Range","startRow","startColumn","endRow","endColumn","isEqual","compareRange","containsRange","intersects","isEnd","isStart","inside","insideEnd","compareStart","compareEnd","compareInside","clipRows","firstRow","lastRow","fromPoints","collapseRows","toScreenRange","screenPosStart","documentToScreenPosition","screenPosEnd","moveBy","comparePoints","p1","p2","Selection","getDocument","lead","selectionLead","createAnchor","selectionAnchor","$isEmpty","$keepDesiredColumnOnChange","$desiredColumn","getCursor","getPosition","getSelectionAnchor","getSelectionLead","shiftSelection","columns","moveCursorTo","isBackwards","$moveSelection","mover","selectUp","moveCursorUp","selectDown","moveCursorDown","selectRight","moveCursorRight","selectLeft","moveCursorLeft","selectLineStart","moveCursorLineStart","selectLineEnd","moveCursorLineEnd","selectFileEnd","moveCursorFileEnd","selectFileStart","moveCursorFileStart","selectWordRight","moveCursorWordRight","selectWordLeft","moveCursorWordLeft","selectWord","selectAWord","getAWordRange","excludeLastChar","rowEnd","rowStart","foldLine","getFoldLine","selectLine","moveCursorBy","tabSize","getTabSize","isTabStop","firstColumnPosition","screenToDocumentPosition","leadingSpace","getDisplayLine","$useEmacsStyleLineStart","lineEnd","getDocumentLastRowColumnPosition","textEnd","moveCursorLongWordRight","rightOfCursor","nonTokenRe","tokenRe","moveCursorLongWordLeft","getFoldStringAt","leftOfCursor","$shortWordEndIndex","whitespaceRe","moveCursorShortWordRight","moveCursorShortWordLeft","$selectLongWords","rows","screenPos","docPos","lineWidgets","keepDesiredColumn","moveCursorToScreen","desiredColumn","getRangeOfMovements","ranges","r1","fromJSON","rangeList","toSingleRange","MAX_TOKEN_COUNT","Tokenizer","states","regExps","matchMappings","ruleRegExps","matchTotal","mapping","defaultToken","splitterRurles","caseInsensitive","adjustedregex","matchcount","groupCount","tokenArray","onMatch","$arrayTokens","$applyToken","removeCapturingGroups","splitRegex","createSplitterRegexp","$setMaxTokenCount","values","tokens","inChClass","lastCapture","parenOpen","parenClose","square","getLineTokens","startState","currentState","matchAttempts","skipped","TextHighlightRules","$rules","addRules","prefix","nextState","getRules","embedRules","HighlightRules","escapeRules","$embeds","getEmbeds","normalizeRules","processState","processed","stateName","includeName","toInsert","noEscape","keywordMap","createKeywordMapper","splitChar","$keywordList","getKeywords","$keywords","Behaviour","$behaviours","addBehaviours","behaviours","inherit","getBehaviours","packages","pack","addUnicodePackage","L","Ll","Lu","Lt","Lm","Lo","M","Mn","Mc","Me","N","Nd","Nl","No","P","Pd","Ps","Pe","Pi","Pf","Pc","Po","S","Sm","Sc","Sk","So","Z","Zs","Zl","Zp","C","Cc","Cf","Co","Cs","Cn","TokenIterator","initialRow","initialColumn","$session","$row","$rowTokens","getTokens","getTokenAt","$tokenIndex","stepBackward","stepForward","rowCount","getCurrentToken","getCurrentTokenRow","getCurrentTokenColumn","rowTokens","tokenIndex","getCurrentTokenPosition","Mode","$behaviour","getTokenizer","$tokenizer","$highlightRules","lineCommentStart","blockComment","toggleCommentLines","ignoreBlankLines","shouldRemove","minIndent","insertAtTabStop","regexpStart","getUseSoftTabs","uncomment","shouldInsertSpace","removeInLine","commentWithSpace","comment","insertInLine","testRemove","after","spaces","lineCommentEnd","regexpEnd","iter","minEmptyLength","toggleBlockComment","colDiff","iterator","initialRange","startRange","endRange","getNextLineIndent","tab","$getIndent","checkOutdent","autoOutdent","createWorker","createModeDelegates","$modes","delegations","scope","functionName","$delegator","transformAction","param","completionKeywords","ruleItr","aLength","$createKeywordList","getCompletions","score","$id","applyDelta","docLines","doNotValidate","Anchor","$onChange","$pointsInOrder","point1","point2","equalPointsInOrder","bColIsAfter","$clipPositionToDocument","$insertRight","point","moveIfEqual","deltaIsInsert","deltaRowShift","deltaColShift","deltaStart","deltaEnd","$getTransformedPoint","noClip","Document","textOrLines","$lines","insertMergedLines","getAllLines","getNewLineCharacter","$split","$detectNewLine","$autoNewLine","$newLineMode","setNewLineMode","newLineMode","getNewLineMode","isNewLine","getLines","getLinesForRange","insertLines","insertFullLines","removeLines","removeFullLines","insertNewLine","clippedPos","clonePos","$clipPosition","deleteFirstNewLine","deleteLastNewLine","startCol","endCol","deletedLines","removeNewLine","applyDeltas","deltas","revertDeltas","revertDelta","isInsert","$splitAndapplyLargeDelta","MAX","chunk","indexToPosition","newlineLength","positionToIndex","BackgroundTokenizer","tokenizer","running","currentLine","$worker","workerStart","endLine","startLine","processedLines","$tokenizeRow","fireUpdateEvent","setTokenizer","setDocument","scheduleStart","$updateOnChange","getState","SearchHighlight","clazz","setRegexp","MAX_RANGES","markerLayer","drawSingleLineMarker","FoldLine","foldData","folds","setFoldLine","shiftRow","sameRow","containsRow","lastEnd","isNewRow","placeholder","getNextFoldTo","kind","addRemoveChars","foldBefore","newFoldLine","foldLineNext","idxToPosition","lastFoldEndColumn","RangeList","pointIndex","excludeEdges","addList","substractPoint","containsPoint","rangeAtPoint","clipped","removeAll","lineDif","Fold","subFolds","consumePoint","restorePoint","subFold","collapseChildren","addSubFold","afterStart","restoreRange","Folding","side","getFoldsInRange","foldLines","$foldData","foundFolds","getFoldsInRangeList","getAllFolds","lastFold","docRow","startFoldLine","getNextFoldLine","getFoldedRowCount","$addFoldLine","added","$clipRangeToDocument","startFold","endFold","removeFolds","$useWrapMode","$updateWrapData","$updateRowLengthCache","$modified","addFolds","$updating","cloneFolds","foldAll","expandFolds","unfold","expandInner","isRowFolded","startFoldRow","getRowFoldEnd","getRowFoldStart","getFoldDisplayLine","textLine","lastColumn","$cloneFoldData","fd","toggleFold","tryToUnfold","bracketPos","findMatchingBracket","getCommentFoldRange","depth","getFoldWidget","getFoldWidgetRange","$foldStyles","$foldStyle","setFoldStyle","$foldMode","$setFolding","foldMode","$updateFoldWidgets","$tokenizerUpdateFoldWidgets","updateFoldWidgets","tokenizerUpdateFoldWidgets","ignoreCurrent","fw","siblings","$toggleFoldWidget","toggleFoldWidget","toggleParent","BracketMatch","chr","charBeforeCursor","$findClosingBracket","$findOpeningBracket","$brackets","bracket","typeRe","openBracket","valueIndex","closingBracket","valueLength","TextMode","EditSession","$breakpoints","$decorations","$frontMarkers","$backMarkers","$markerId","$undoSelect","onChangeFold","bgTokenizer","resetCaches","$resetRowCache","$docRowCache","$screenRowCache","$getRowCacheIndex","cacheArray","low","hi","mid","$wrapData","$rowLengthCache","removedFolds","$updateInternalDataOnChange","$fromUndo","$undoManager","ignore","$deltasDoc","$deltasFold","$informUndoManager","$deltas","setUndoManager","getUndoManager","reset","undoManager","$syncInformUndoManager","execute","mergeUndoDeltas","$defaultUndoManager","getTabString","$useSoftTabs","$mode","$indentWithTabs","$tabSize","$overwrite","setOverwrite","overwrite","getOverwrite","toggleOverwrite","addGutterDecoration","removeGutterDecoration","getBreakpoints","setBreakpoints","clearBreakpoints","setBreakpoint","clearBreakpoint","inFront","addDynamicMarker","markerId","markers","getMarkers","$searchHighlight","highlightLines","setAnnotations","annotations","getAnnotations","clearAnnotations","inToken","wordRange","setUseWorker","useWorker","getUseWorker","$useWorker","onReloadTokenizer","$modeId","$onChangeMode","$isPlaceholder","$stopWorker","$startWorker","attachToSession","wrapMethod","$wrapMethod","foldingRules","terminate","$scrollTop","setScrollTop","getScrollTop","$scrollLeft","setScrollLeft","getScrollLeft","getScreenWidth","$computeWidth","getLineWidgetMaxWidth","screenWidth","lineWidgetsWidth","lineWidgetWidth","force","$wrapLimit","longestScreenLine","foldIndex","foldStart","$getStringScreenWidth","undoChanges","dontSelect","lastUndoRange","$getUndoSelection","foldDelta","redoChanges","setUndoSelect","isUndo","fromRange","toPosition","toRange","rowDiff","collDiff","oldStart","newStart","indentRows","indentString","outdentRows","rowRange","deleteRange","size","$moveLines","$clipRowToDocument","MAX_VALUE","moveLinesUp","moveLinesDown","duplicateLines","$clipColumnToRow","$wrapLimitRange","useWrapMode","getUseWrapMode","setWrapLimitRange","adjustWrapLimit","desiredLimit","$printMargin","limits","wrapLimit","$constrainWrapLimit","getWrapLimit","setWrapLimit","getWrapLimitRange","foldLineBefore","wrapData","walkTokens","$getDisplayTokens","PLACEHOLDER_START","PLACEHOLDER_BODY","$computeWrapSplits","isFullWidth","splits","displayLength","lastSplit","lastDocSplit","isCode","$wrapAsCode","indentedSoftWrap","$indentedSoftWrap","maxIndent","addSplit","displayed","getWrapIndent","minSplit","getScreenTabSize","maxScreenColumn","screenColumn","getRowLength","getRowLineCount","getRowWrapIndent","getScreenLastRowColumn","documentToScreenColumn","getDocumentLastRowColumn","docColumn","getRowSplitData","screenToDocumentRow","screenToDocumentColumn","rowLength","rowCache","doCache","maxRow","wrapIndent","splitIndex","foldStartRow","wrapRow","screenRowOffset","getScreenLength","screenRows","$getWidgetScreenLength","$setFontMetrics","fm","$enableVarChar","getCharacterWidth","$wrap","firstLineNumber","useSoftTabs","Search","find","$matchIterator","skipCurrent","findAll","needle","$assembleRegExp","$isMultiLine","prevRange","preserveCase","matchIterator","backwards","lineIterator","$lineIterator","_callback","$disableFakeMultiline","wholeWord","modifier","caseSensitive","$assembleMultilineRegExp","HashHandler","commandKeyBinding","addCommands","$singleCommand","MultiHashHandler","addCommand","removeCommand","_buildKeyHash","keepCommand","ckb","keyId","cmdGroup","keyPart","chain","parseKeys","_addCommandToBinding","isDefault","removeCommands","bindKeys","keyList","findKeyCommand","$keyChain","CommandManager","byName","toggleRecording","$inReplay","recording","$addCommandToMacro","oldMacro","replay","trimMacro","mac","showSettingsMenu","showErrorMarker","scrollIntoView","centerSelection","prompt","gotoLine","multiSelectAction","getAllRanges","findNext","findPrevious","aceCommandGroup","navigateFileStart","navigateUp","times","navigateFileEnd","navigateDown","navigateWordLeft","navigateLineStart","navigateLeft","navigateWordRight","navigateLineEnd","navigateRight","selectPageDown","scrollPageDown","gotoPageDown","selectPageUp","scrollPageUp","gotoPageUp","jumpToMatching","$handlePaste","duplicateSelection","sortLines","modifyNumber","copyLinesUp","copyLinesDown","removeToLineStart","removeToLineEnd","removeWordLeft","removeWordRight","blockOutdent","blockIndent","splitLine","transposeLetters","transposeSelections","firstLineEndCol","selectedCount","insertLine","curLine","newRanges","exitMultiSelectMode","defaultCommands","Editor","getContainerElement","getTextAreaContainer","keyBinding","$mouseHandler","$search","$historyTracker","$initOperationListeners","_$emitInputEvent","setSession","selections","startOperation","endOperation","$opResetTimer","curOp","docChanged","selectionChanged","prevOp","commadEvent","previousCommand","scrollSelectionIntoView","animateScrolling","$mergeableCommands","$mergeUndoDeltas","prev","mergeableCommands","shouldMerge","mergeNextCommand","sequenceStartTime","keyboardHandler","$keybindingId","handler","oldSession","$onDocumentChange","$onTokenizerUpdate","$onChangeTabSize","$onChangeWrapLimit","$onChangeWrapMode","$onChangeFold","$onChangeFrontMarker","$onChangeBackMarker","$onChangeBreakpoint","$onChangeAnnotation","$onCursorChange","$onScrollTopChange","$onScrollLeftChange","$onSelectionChange","onDocumentChange","onChangeMode","onTokenizerUpdate","onChangeTabSize","onChangeWrapLimit","onChangeWrapMode","onChangeFrontMarker","onChangeBackMarker","onChangeBreakpoint","onChangeAnnotation","onCursorChange","onScrollTopChange","onScrollLeftChange","onSelectionChange","updateFull","oldEditor","cursorPos","onResize","getTheme","getFontSize","$highlightBrackets","$bracketHighlight","$highlightPending","getCursorPosition","getMatching","$highlightTags","$highlightTagPending","$tagHighlight","prevToken","$isFocused","showCursor","visualizeFocus","hideCursor","visualizeBlur","$cursorChange","updateCursor","updateLines","$updateHighlightActiveLine","scrollToY","scrollToX","$highlightActiveLine","$selectionStyle","$maxLines","$minLines","$highlightLineMarker","$selectionMarker","$highlightSelectedWord","$getSelectionHighLightRegexp","startOuter","endOuter","lineCols","updateFrontMarkers","updateBackMarkers","updateBreakpoints","updateText","getSelectedText","inVirtualSelectionMode","getBehavioursEnabled","$mergeNextCommand","lineState","shouldOutdent","lineIndent","setScrollSpeed","getScrollSpeed","setDragDelay","setSelectionStyle","setHighlightActiveLine","shouldHighlight","getHighlightActiveLine","setHighlightGutterLine","getHighlightGutterLine","setHighlightSelectedWord","getHighlightSelectedWord","setAnimatedScroll","shouldAnimate","getAnimatedScroll","setShowInvisibles","showInvisibles","getShowInvisibles","setDisplayIndentGuides","getDisplayIndentGuides","showPrintMargin","getShowPrintMargin","setPrintMarginColumn","getPrintMarginColumn","setBehavioursEnabled","enabled","setWrapBehavioursEnabled","getWrapBehavioursEnabled","setShowFoldWidgets","getShowFoldWidgets","setFadeFoldWidgets","fade","getFadeFoldWidgets","new_range","swap","originalRange","$getSelectedRows","getNumberAt","_numberRx","amount","charRange","nr","fp","decimals","nnr","toFixed","replaceRange","endPoint","totalDiff","rangeIndex","subRows","showComposition","setCompositionText","hideComposition","getFirstVisibleRow","getLastVisibleRow","isRowVisible","isRowFullyVisible","getFirstFullyVisibleRow","getLastFullyVisibleRow","$getVisibleRowCount","getScrollBottomRow","getScrollTopRow","$moveByPage","scrollToRow","scrollToLine","center","alignCursor","getCursorPositionScreen","matchType","bracketType","found","brackets","navigateTo","replaced","$tryReplace","replaceAll","getLastSearchOptions","newRange","preventScroll","revealRange","setAutoScrollEditorIntoView","shouldScroll","$scrollAnchor","scrollAnchor","onChangeSelection","onBeforeRender","onAfterRender","$pixelPos","$resetCursorStyle","$cursorStyle","cursorLayer","setSmoothBlinking","isBlinking","selectionStyle","highlightActiveLine","highlightSelectedWord","behavioursEnabled","wrapBehavioursEnabled","autoScrollEditorIntoView","keybindingId","hScrollBarAlwaysVisible","vScrollBarAlwaysVisible","highlightGutterLine","animatedScroll","printMarginColumn","printMargin","fadeFoldWidgets","showFoldWidgets","showLineNumbers","showGutter","displayIndentGuides","fontSize","fontFamily","maxLines","minLines","scrollPastEnd","fixedWidthGutter","foldStyle","UndoManager","$serializeDelta","$deserializeDelta","cloneDeltaSetsObj","deltaSets_old","fnGetModifiedDelta","deltaSets_new","deltaSet_old","deltaSet_new","delta_old","deltaSets","$doc","hasUndo","dirtyCounter","$undoStack","$redoStack","NaN","undoSelectionRange","redoSelectionRange","$deserializeDeltas","hasRedo","markClean","isClean","$serializeDeltas","Gutter","parentEl","$showFoldWidgets","gutterWidth","$updateAnnotations","$cells","rowInfo","annoText","gutterOffset","breakpoints","decorations","$firstLineNumber","lastLineNumber","gutterRenderer","$renderer","cell","textNode","foldWidget","minHeight","$fixedWidth","$padding","$computePadding","ceil","$showLineNumbers","setShowLineNumbers","getShowLineNumbers","paddingRight","Marker","setPadding","setMarkers","$getTop","drawFullLineMarker","drawScreenLineMarker","drawTextMarker","drawMultiLineMarker","firstRowScreen","stringBuilder","extraStyle","lineRange","radiusClass","extraLength","Text","$updateEolChar","EOF_CHAR","EOL_CHAR_LF","EOL_CHAR_CRLF","EOL_CHAR","TAB_CHAR","SPACE_CHAR","getLineHeight","$fontMetrics","$characterSize","measure","$pollSizeChanges","checkForSizeChanges","$pollSizeChangesTimer","$computeTabString","$tabStrings","tabStr","$indentGuideRe","spaceClass","tabClass","spaceContent","tabContent","scrollLines","lineElements","lineElementsIdx","lineElement","$renderLine","$useLineGroups","oldConfig","fragment","$renderLinesFragment","createDocumentFragment","$textToken","$renderToken","tabIdx","idx4","classToUse","renderIndentGuide","cols","$renderWrappedLine","onlyContents","splitChars","$renderSimpleLine","$getFoldLineTokens","renderTokens","addTokens","$measureNode","isIE8","Cursor","blinkInterval","smoothBlinking","cursors","addCursor","$updateCursors","$updateVisibility","$updateOpacity","blinking","restartTimer","setBlinkInterval","removeCursor","intervalId","timeoutId","blink","getPixelPosition","onScreen","$selectionMarkers","cursorIndex","pixelPos","drawCursor","$setOverwrite","ScrollBar","classSuffix","setVisible","skipEvent","onScroll","VScrollBar","$scrollbarWidth","setHeight","setInnerHeight","setScrollHeight","HScrollBar","setWidth","setInnerWidth","setScrollWidth","ScrollBarV","ScrollBarH","RenderLoop","onRender","pending","changes","CHAR_COUNT","FontMetrics","$setMeasureNodeStyles","$main","$testFractionalRect","whiteSpace","font","$measureSizes","fontWeight","boldSize","charSizes","allowBoldFonts","setPolling","$measureCharWidth","GutterLayer","MarkerLayer","TextLayer","CursorLayer","VirtualRenderer","onGutterResize","$markerBack","textLayer","$textLayer","canvas","$markerFront","$horizScroll","$vScroll","scrollBar","$scrollAnimation","scrollMargin","updateCharacterSize","$size","scrollerHeight","scrollerWidth","$dirty","$loop","$renderChanges","CHANGE_FULL","CHANGE_CURSOR","CHANGE_MARKER","CHANGE_GUTTER","CHANGE_SCROLL","CHANGE_LINES","CHANGE_TEXT","CHANGE_SIZE","CHANGE_MARKER_BACK","CHANGE_MARKER_FRONT","CHANGE_H_SCROLL","$allowBoldFonts","$updatePrintMargin","onChangeNewLineMode","$changedLines","updateFontSize","$changes","$updateSizeAsync","resizing","scrollWidth","$updateCachedSize","$extraHeight","oldSize","$showGutter","$computeLayerConfig","availableWidth","$showPrintMargin","$printMarginColumn","$animatedScroll","getShowGutter","setShowGutter","$updateGutterLineHighlight","$gutterLineHighlight","$printMarginEl","containerEl","posTop","posLeft","$composition","setScrollMargin","sm","getHScrollBarAlwaysVisible","$hScrollBarAlwaysVisible","setHScrollBarAlwaysVisible","alwaysVisible","getVScrollBarAlwaysVisible","$vScrollBarAlwaysVisible","setVScrollBarAlwaysVisible","$updateScrollBarV","$scrollPastEnd","$updateScrollBarH","$frozen","unfreeze","st","marginTop","$highlightGutterLine","$updateLines","$autosize","desiredHeight","$gutterWidth","hideScrollbars","longestLine","$getLongestLine","horizScroll","hScrollChanged","vScrollBefore","vScrollChanged","firstRowHeight","lineCount","charCount","$viewMargin","topMargin","bottomMargin","alignment","STEPS","$calcSteps","fromValue","toValue","x_min","steps","initialScroll","oldSteps","$timer","canvasPos","textToScreenCoordinates","keepTextAreaAtCursor","$themeId","cssClass","$theme","isDark","setMouseCursor","WorkerClient","topLevelNamespaces","classname","workerUrl","$sendDeltaQueue","changeListener","onMessage","nameToUrl","toUrl","normalizePath","$normalizePath","tlns","workerSrc","blobUrl","webkitURL","Worker","DOMException","$workerBlob","blobURL","callbackId","callbacks","onmessage","deltaQueue","cmd","ex","attachToDocument","blobBuilder","BlobBuilder","WebKitBlobBuilder","MozBlobBuilder","getBlob","UIWorkerClient","messageBuffer","main","emitSync","sender","processNext","setEmitSync","Main","PlaceHolder","others","mainClass","othersClass","$onUpdate","onUpdate","$others","undoStack","$undostack","$undoStackDepth","selectionBefore","other","showOtherMarkers","othersActive","hideOtherMarkers","updateAnchors","lengthDiff","inMainRange","distanceFromStart","newPos","otherPos","updateMarkers","updateMarker","undosRequired","isSamePoint","alt","ctrl","accel","selectionMode","isMultiSelect","screenAnchor","screenCursor","$enableJumpToDef","$blockSelectEnabled","addSelectionMarker","oldRange","removeSelectionMarker","tmpSel","rectSel","onSelectionInterval","newCursor","removeSelectionMarkers","rectangularRangeBlock","updateSelectionMarkers","selectMoreLines","selectMore","multiSelect","splitIntoLines","alignCursors","multiSelectCommands","isAvailable","getSelectionMarkers","$blockChangeEvents","$onAddRange","$onRemoveRange","mergeOverlappingRanges","lastRange","$initRangeList","toggleBlockSelection","includeEmptyLines","xBackwards","yBackwards","docEnd","MultiSelect","$multiselectOnSessionChange","$onMultiSelect","$onSingleSelect","onSessionChange","$checkMultiselectChange","altCursor","altDown","addAltCursorListeners","selectionMarkerCount","markerList","$onMultiSelectExec","inVirtualMode","forEachSelection","keepOrder","$byLines","reg","cmdResult","anim","buf","nl","additive","skip","screenLead","toRemove","tmp","words","stopAtFirst","sameRowRanges","maxCol","minSpace","spaceOffsets","spaceOffset","fr","lr","guessRange","$reAlignText","forceLeft","startW","textW","endW","isLeftAligned","isRightAligned","alignLeft","enableMultiselect","enableBlockSelect","FoldMode","foldingStartMarker","foldingStopMarker","indentationBlock","startLevel","openingBracketBlock","closingBracketBlock","LineWidgets","widgetManager","updateOnChange","renderWidgets","measureWidgets","_changedWidgets","$onChangeEditor","updateOnFold","_inDocument","removeLineWidget","$updateRows","noWidgets","$oldWidget","addLineWidget","zIndex","coverGutter","pixelHeight","$fold","onWidgetChanged","w1","getWidgetsAtRow","changedWidgets","fixedWidth","coverLine","fullWidth","oldWidget","gutterAnno","comparator","binarySearch","findAnnotations","sc","arrow","Renderer","_id","getElementById","tagName","oldNode","createEditSession","Builder","MSBlobBuilder","bag","builder","endings","get_blob","JsonHighlightRules","MatchingBraceOutdent","openBracePos","SAFE_INSERT_IN_TOKENS","SAFE_INSERT_BEFORE_TOKENS","contextCache","initContext","autoInsertedBrackets","autoInsertedRow","autoInsertedLineEnd","maybeInsertedBrackets","maybeInsertedRow","maybeInsertedLineStart","maybeInsertedLineEnd","getWrapped","opening","closing","CstyleBehaviour","isSaneInsertion","recordAutoInsert","recordMaybeInsert","isAutoInsertedClosing","popAutoInsertedClosing","isMaybeInsertedClosing","clearMaybeInsertedClosing","next_indent","leftChar","rightChar","rightToken","pair","stringBefore","stringAfter","wordRe","isWordBefore","isWordAfter","$matchTokenType","iterator2","BaseFoldMode","commentRegex","singleLineBlockCommentRe","tripleStarBlockCommentRe","startRegionRe","_getFoldWidgetBase","forceMultiline","getCommentRegionBlock","getSectionRange","startIndent","subRange","CStyleFoldMode","$outdent","worker","showReplaceForm","div","$initElements","sb","replaceBox","searchOptions","regExpOption","caseSensitiveOption","wholeWordOption","searchInput","replaceInput","_this","activeInput","$searchBarKb","$closeSearchBarKb","isReplace","findPrev","$syncOptions","noMatch","replaceAndFindNext","vue","pantry","components","mainContent","topbar","bottomBar","home","_view","checkIfInView","catch","_length","A","O","T","E","D","I","F","optionMergeStrategies","productionTip","devtools","performance","errorHandler","warnHandler","ignoredElements","keyCodes","isReservedTag","isReservedAttr","isUnknownElement","getTagNamespace","parsePlatformTagName","mustUseProp","_lifecycleHooks","R","B","H","U","V","z","WXEnvironment","K","J","W","G","X","Y","Q","ee","te","VUE_ENV","ne","__VUE_DEVTOOLS_GLOBAL_HOOK__","ie","oe","Reflect","ownKeys","Set","se","ce","subs","addSub","removeSub","depend","addDep","notify","ue","le","fe","pe","elm","fnContext","fnOptions","fnScopeId","componentOptions","componentInstance","raw","isStatic","isRootInsert","isComment","isCloned","isOnce","asyncFactory","asyncMeta","isAsyncPlaceholder","de","ve","he","ye","ge","__ob__","observeArray","be","$e","we","vmCount","Ce","_isVue","xe","ke","Ae","Oe","Se","Te","Ne","Ee","inject","computed","provide","je","De","directives","_base","extends","mixins","Le","Ie","Re","propsData","_props","Fe","He","$parent","errorCaptured","Ue","Be","_handled","Ve","ze","Ke","Je","qe","We","Ze","MutationObserver","setImmediate","Ge","Xe","Ye","observe","characterData","Qe","et","tt","nt","passive","rt","fns","ot","merged","ct","_isVList","ut","_provided","lt","slot","ft","pt","$stable","_normalized","$hasNormal","vt","ht","proxy","mt","yt","$scopedSlots","$slots","gt","_t","bt","$t","domProps","wt","_staticTrees","xt","_renderProxy","Ct","kt","At","Ot","St","Tt","Nt","_o","_n","_l","_q","_i","_m","_f","_k","_b","_u","_g","_d","_p","Et","_original","injections","slots","scopedSlots","Ht","jt","Dt","_isDestroyed","keepAlive","prepatch","_isComponent","_parentVnode","inlineTemplate","Ctor","Zt","$mount","_renderChildren","_vnode","$attrs","$listeners","_propKeys","_parentListeners","Wt","$forceUpdate","_isMounted","Qt","_inactive","tn","Yt","_directInactive","Xt","$children","$destroy","It","Mt","cid","errorComp","resolved","Ut","owners","loading","loadingComp","$on","Vt","wn","model","nativeOn","abstract","_merged","Ft","is","class","Bt","zt","Kt","Jt","$off","qt","Gt","_hasHookEvent","nn","rn","an","sn","cn","un","createEvent","ln","vm","_watcher","pn","_watchers","user","lazy","sync","active","dirty","newDeps","depIds","newDepIds","expression","cleanupDeps","evaluate","teardown","_isBeingDestroyed","dn","vn","mn","yn","gn","_computedWatchers","bn","$watch","$n","super","superOptions","sealedOptions","extendOptions","_init","kn","An","On","Sn","_uid","_componentTag","$refs","_events","_data","hn","$set","$delete","$once","_update","__patch__","__vue__","_render","Tn","Nn","KeepAlive","exclude","cacheVNode","vnodeToCache","keyToCache","created","destroyed","mounted","updated","mergeOptions","defineReactive","delete","observable","use","_installedPlugins","install","_Ctor","xn","En","jn","Dn","Ln","In","Fn","Pn","Rn","Hn","Bn","Vn","zn","Kn","Jn","svg","math","qn","Wn","Zn","Gn","Xn","Yn","Qn","er","multiple","createComment","setTextContent","setStyleScope","refInFor","rr","ir","or","ar","sr","cr","oldArg","pr","def","componentUpdated","inserted","ur","modifiers","rawName","dr","vr","inheritAttrs","hr","removeAttributeNS","mr","setAttributeNS","__ieph","stopImmediatePropagation","yr","gr","Un","_transitionClasses","_prevClass","_r","br","$r","wr","Cr","xr","kr","Ar","Or","Sr","Tr","Nr","Er","Hr","dynamic","plain","jr","dynamicAttrs","Dr","attrsMap","attrsList","Lr","isDynamicArg","Ir","Mr","middle","native","nativeEvents","events","Fr","Pr","Rr","Br","Ur","exp","zr","Kr","Vr","qr","Jr","Wr","Zr","Xr","ei","Yr","Qr","currentTarget","ti","ni","ri","_value","oi","composing","_vModifiers","ai","si","ci","ui","staticStyle","fi","pi","di","setProperty","vi","mi","normalizedStyle","yi","gi","classList","bi","wi","enterClass","enterToClass","enterActiveClass","leaveClass","leaveToClass","leaveActiveClass","Ci","xi","ki","Ai","Oi","Si","Ti","ontransitionend","onwebkittransitionend","onanimationend","onwebkitanimationend","Ni","Ei","ji","Di","Li","Mi","propCount","Ii","Fi","hasTransform","Ri","_leaveCb","cancelled","transition","_enterCb","appearClass","appearToClass","appearActiveClass","beforeEnter","afterEnter","enterCancelled","beforeAppear","appear","afterAppear","appearCancelled","duration","Ui","_pending","Bi","Hi","beforeLeave","leave","afterLeave","leaveCancelled","delayLeave","Vi","zi","nodeOps","activate","pendingInsert","postpatch","hasAttribute","vmodel","Yi","Ki","_vOptions","Ji","Zi","Gi","Xi","Wi","qi","selectedIndex","initEvent","dispatchEvent","Qi","eo","__vOriginalDisplay","unbind","no","ro","io","oo","ao","so","_leaving","moveClass","uo","_moveCb","lo","fo","WebkitTransform","transitionDuration","po","Transition","TransitionGroup","beforeMount","kept","prevChildren","hasMove","_reflow","propertyName","_hasMove","HTMLUnknownElement","HTMLElement","go","vo","ho","mo","yo","staticKeys","transformNode","classBinding","genData","styleBinding","$o","wo","xo","ko","Ao","Oo","To","Eo","jo","Do","Io","Mo","Fo","Ro","Ho","Bo","Uo","Vo","zo","Ko","Jo","qo","Wo","Zo","Go","Xo","Yo","Qo","ea","ta","na","ra","ia","oa","aa","sa","ca","la","ya","rawAttrsMap","pa","for","slotScope","slotTarget","slotTargetDynamic","ha","slotName","hasBindings","ma","camel","da","alias","iterator1","va","ifConditions","ga","_a","ba","wa","Ca","$a","preTransformNode","block","else","elseif","xa","expectHTML","isPreTag","isUnaryTag","canBeLeftOpenTag","ka","Oa","Sa","Ta","Na","down","Ea","ja","Da","prevent","La","Ia","Ma","Fa","wrapListeners","cloak","Pa","transforms","dataGenFns","maybeComponent","onceId","Ra","Ha","staticRoot","staticProcessed","Ba","onceProcessed","Ua","forProcessed","za","ifProcessed","Va","Wa","Xa","Ka","staticInFor","Ja","qa","Za","Ga","Ya","Qa","es","delimiters","rs","preserveWhitespace","whitespace","forbidden","shouldKeepComment","unarySlash","shouldDecodeNewlinesForHref","shouldDecodeNewlines","lowerCasedTag","comments","outputSourceRange","fa","optimize","static","Aa","ast","tips","compileToFunctions","as","ss","cs","us","outerHTML","Timeout","clearFn","_clearFn","unref","enroll","msecs","_idleTimeoutId","_idleTimeout","unenroll","_unrefActive","_onTimeout","clearImmediate","registerImmediate","channel","messagePrefix","onGlobalMessage","nextHandle","tasksByHandle","currentlyRunningATask","attachTo","handle","runIfPresent","importScripts","postMessageIsAsynchronous","oldOnMessage","canUsePostMessage","MessageChannel","port1","port2","random","task","baseUrl","currentDir","fullMatch","origUrl","newUrl","unquotedOrigUrl","mainContentTemplate","dashboard","sdk","onboarding","about","pantryID","__awaiter","_arguments","generator","fulfilled","step","rejected","axios","API_PATH","explorer","login","signedIn","promo","emoji","snippet","fetchPantry","createSession","alert","pantryId","assign","sessionStorage","getItem","setItem","urlPantryID","_pantryId","loadFromSession","loadFromURL","Axios","mergeConfig","createInstance","defaultConfig","instance","instanceConfig","CancelToken","isCancel","spread","InterceptorManager","dispatchRequest","validator","validators","interceptors","assertOptions","boolean","requestInterceptorChain","synchronousRequestInterceptors","interceptor","runWhen","synchronous","responseInterceptorChain","newConfig","getUri","eject","transformData","throwIfCancellationRequested","throwIfRequested","reason","normalizedName","write","expires","domain","secure","cookie","toGMTString","isAbsoluteURL","combineURLs","requestedURL","relativeURL","ignoreDuplicateOf","parsed","originURL","msie","urlParsingNode","resolveURL","requestURL","pkg","thing","deprecatedWarnings","currentVerArr","isOlderVersion","thanVersion","pkgVersionArr","destVer","isDeprecated","formatMessage","desc","allowUnknown","executor","resolvePromise","jsonEditor","configs","explorerTemplate","changelog","explorerEmpty","explorerOnboarding","basket","schemaModalVisible","schemaExample","toppings","price","baskets","ttl","_expiryDate","setSeconds","getDiffOfDates","startUTC","UTC","getFullYear","getMonth","getDate","endUTC","_randomNumber","_name","_defaultPantryName","_namePantry","_defaultDesc","_description","viewBasket","basketTemplate","shareModalVisible","publicBasketPath","newData","clipboard","writeText","basketPath","confirm","refreshDashboard","axiosError","_errorData","details","getPublicBasket","sdks","author","verified","defaultBadgeClasses","homeTemplate","initialSignup","finishSignup","features","example","stats","finishOnboarding","siteKey","createNewPantry","grecaptcha","sitekey","_recaptchaResponse","getResponse","accountCreationInProgress","contactEmail","recaptchaResponse","changeView","exampleTemplate","onboardingTemplate","faq","questions","answer","topbarTemplate","headerBar","DOCS_PATH"],"mappings":"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","file":"bundle.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 24);\n","'use strict';\n\nvar bind = require('./helpers/bind');\n\n// utils is a library of generic helper functions non-specific to axios\n\nvar toString = Object.prototype.toString;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Array, otherwise false\n */\nfunction isArray(val) {\n return toString.call(val) === '[object Array]';\n}\n\n/**\n * Determine if a value is undefined\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nfunction isUndefined(val) {\n return typeof val === 'undefined';\n}\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && typeof val.constructor.isBuffer === 'function' && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nfunction isArrayBuffer(val) {\n return toString.call(val) === '[object ArrayBuffer]';\n}\n\n/**\n * Determine if a value is a FormData\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nfunction isFormData(val) {\n return (typeof FormData !== 'undefined') && (val instanceof FormData);\n}\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n var result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (val.buffer instanceof ArrayBuffer);\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a String, otherwise false\n */\nfunction isString(val) {\n return typeof val === 'string';\n}\n\n/**\n * Determine if a value is a Number\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Number, otherwise false\n */\nfunction isNumber(val) {\n return typeof val === 'number';\n}\n\n/**\n * Determine if a value is an Object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Object, otherwise false\n */\nfunction isObject(val) {\n return val !== null && typeof val === 'object';\n}\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {Object} val The value to test\n * @return {boolean} True if value is a plain Object, otherwise false\n */\nfunction isPlainObject(val) {\n if (toString.call(val) !== '[object Object]') {\n return false;\n }\n\n var prototype = Object.getPrototypeOf(val);\n return prototype === null || prototype === Object.prototype;\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Date, otherwise false\n */\nfunction isDate(val) {\n return toString.call(val) === '[object Date]';\n}\n\n/**\n * Determine if a value is a File\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nfunction isFile(val) {\n return toString.call(val) === '[object File]';\n}\n\n/**\n * Determine if a value is a Blob\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nfunction isBlob(val) {\n return toString.call(val) === '[object Blob]';\n}\n\n/**\n * Determine if a value is a Function\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nfunction isFunction(val) {\n return toString.call(val) === '[object Function]';\n}\n\n/**\n * Determine if a value is a Stream\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nfunction isStream(val) {\n return isObject(val) && isFunction(val.pipe);\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nfunction isURLSearchParams(val) {\n return typeof URLSearchParams !== 'undefined' && val instanceof URLSearchParams;\n}\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n * @returns {String} The String freed of excess whitespace\n */\nfunction trim(str) {\n return str.trim ? str.trim() : str.replace(/^\\s+|\\s+$/g, '');\n}\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n */\nfunction isStandardBrowserEnv() {\n if (typeof navigator !== 'undefined' && (navigator.product === 'ReactNative' ||\n navigator.product === 'NativeScript' ||\n navigator.product === 'NS')) {\n return false;\n }\n return (\n typeof window !== 'undefined' &&\n typeof document !== 'undefined'\n );\n}\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n */\nfunction forEach(obj, fn) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (var i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n fn.call(null, obj[key], key, obj);\n }\n }\n }\n}\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n var result = {};\n function assignValue(val, key) {\n if (isPlainObject(result[key]) && isPlainObject(val)) {\n result[key] = merge(result[key], val);\n } else if (isPlainObject(val)) {\n result[key] = merge({}, val);\n } else if (isArray(val)) {\n result[key] = val.slice();\n } else {\n result[key] = val;\n }\n }\n\n for (var i = 0, l = arguments.length; i < l; i++) {\n forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n * @return {Object} The resulting value of object a\n */\nfunction extend(a, b, thisArg) {\n forEach(b, function assignValue(val, key) {\n if (thisArg && typeof val === 'function') {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n });\n return a;\n}\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n * @return {string} content value without BOM\n */\nfunction stripBOM(content) {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n}\n\nmodule.exports = {\n isArray: isArray,\n isArrayBuffer: isArrayBuffer,\n isBuffer: isBuffer,\n isFormData: isFormData,\n isArrayBufferView: isArrayBufferView,\n isString: isString,\n isNumber: isNumber,\n isObject: isObject,\n isPlainObject: isPlainObject,\n isUndefined: isUndefined,\n isDate: isDate,\n isFile: isFile,\n isBlob: isBlob,\n isFunction: isFunction,\n isStream: isStream,\n isURLSearchParams: isURLSearchParams,\n isStandardBrowserEnv: isStandardBrowserEnv,\n forEach: forEach,\n merge: merge,\n extend: extend,\n trim: trim,\n stripBOM: stripBOM\n};\n","module.exports = \"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+DQo8c3ZnDQogICB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iDQogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIg0KICAgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIg0KICAgeG1sbnM6c3ZnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyINCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyINCiAgIHhtbG5zOnNvZGlwb2RpPSJodHRwOi8vc29kaXBvZGkuc291cmNlZm9yZ2UubmV0L0RURC9zb2RpcG9kaS0wLmR0ZCINCiAgIHhtbG5zOmlua3NjYXBlPSJodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy9uYW1lc3BhY2VzL2lua3NjYXBlIg0KICAgd2lkdGg9IjIxNiINCiAgIGhlaWdodD0iMTQ0Ig0KICAgaWQ9InN2ZzQxMzYiDQogICB2ZXJzaW9uPSIxLjEiDQogICBpbmtzY2FwZTp2ZXJzaW9uPSIwLjkxIHIiDQogICBzb2RpcG9kaTpkb2NuYW1lPSJqc29uZWRpdG9yLWljb25zLnN2ZyI+DQogIDx0aXRsZQ0KICAgICBpZD0idGl0bGU2NTEyIj5KU09OIEVkaXRvciBJY29uczwvdGl0bGU+DQogIDxtZXRhZGF0YQ0KICAgICBpZD0ibWV0YWRhdGE0MTQ4Ij4NCiAgICA8cmRmOlJERj4NCiAgICAgIDxjYzpXb3JrDQogICAgICAgICByZGY6YWJvdXQ9IiI+DQogICAgICAgIDxkYzpmb3JtYXQ+aW1hZ2Uvc3ZnK3htbDwvZGM6Zm9ybWF0Pg0KICAgICAgICA8ZGM6dHlwZQ0KICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPg0KICAgICAgICA8ZGM6dGl0bGU+SlNPTiBFZGl0b3IgSWNvbnM8L2RjOnRpdGxlPg0KICAgICAgPC9jYzpXb3JrPg0KICAgIDwvcmRmOlJERj4NCiAgPC9tZXRhZGF0YT4NCiAgPGRlZnMNCiAgICAgaWQ9ImRlZnM0MTQ2IiAvPg0KICA8c29kaXBvZGk6bmFtZWR2aWV3DQogICAgIHBhZ2Vjb2xvcj0iI2ZmZmZmZiINCiAgICAgYm9yZGVyY29sb3I9IiM2NjY2NjYiDQogICAgIGJvcmRlcm9wYWNpdHk9IjEiDQogICAgIG9iamVjdHRvbGVyYW5jZT0iMTAiDQogICAgIGdyaWR0b2xlcmFuY2U9IjEwIg0KICAgICBndWlkZXRvbGVyYW5jZT0iMTAiDQogICAgIGlua3NjYXBlOnBhZ2VvcGFjaXR5PSIwIg0KICAgICBpbmtzY2FwZTpwYWdlc2hhZG93PSIyIg0KICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjE5MjAiDQogICAgIGlua3NjYXBlOndpbmRvdy1oZWlnaHQ9IjEwMjgiDQogICAgIGlkPSJuYW1lZHZpZXc0MTQ0Ig0KICAgICBzaG93Z3JpZD0idHJ1ZSINCiAgICAgaW5rc2NhcGU6em9vbT0iNCINCiAgICAgaW5rc2NhcGU6Y3g9Ijk3LjIxNzI0OCINCiAgICAgaW5rc2NhcGU6Y3k9IjU5Ljk1MDIyNyINCiAgICAgaW5rc2NhcGU6d2luZG93LXg9IjAiDQogICAgIGlua3NjYXBlOndpbmRvdy15PSIwIg0KICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIxIg0KICAgICBpbmtzY2FwZTpjdXJyZW50LWxheWVyPSJzdmc0MTM2Ig0KICAgICBzaG93Z3VpZGVzPSJmYWxzZSINCiAgICAgYm9yZGVybGF5ZXI9ImZhbHNlIg0KICAgICBpbmtzY2FwZTpzaG93cGFnZXNoYWRvdz0idHJ1ZSINCiAgICAgc2hvd2JvcmRlcj0idHJ1ZSI+DQogICAgPGlua3NjYXBlOmdyaWQNCiAgICAgICB0eXBlPSJ4eWdyaWQiDQogICAgICAgaWQ9ImdyaWQ0NjQwIg0KICAgICAgIGVtcHNwYWNpbmc9IjI0IiAvPg0KICA8L3NvZGlwb2RpOm5hbWVkdmlldz4NCiAgPCEtLSBDcmVhdGVkIHdpdGggU1ZHLWVkaXQgLSBodHRwOi8vc3ZnLWVkaXQuZ29vZ2xlY29kZS5jb20vIC0tPg0KICA8Zw0KICAgICBpZD0iZzQzOTQiPg0KICAgIDxyZWN0DQogICAgICAgeD0iNCINCiAgICAgICB5PSI0Ig0KICAgICAgIHdpZHRoPSIxNiINCiAgICAgICBoZWlnaHQ9IjE2Ig0KICAgICAgIGlkPSJzdmdfMSINCiAgICAgICBzdHlsZT0iZmlsbDojMWFhZTFjO2ZpbGwtb3BhY2l0eToxO3N0cm9rZTpub25lO3N0cm9rZS13aWR0aDowIiAvPg0KICAgIDxyZWN0DQogICAgICAgc3R5bGU9ImZpbGw6I2VjM2YyOTtmaWxsLW9wYWNpdHk6MC45NDExNzY0NztzdHJva2U6bm9uZTtzdHJva2Utd2lkdGg6MCINCiAgICAgICB4PSIyOC4wMDAwMDYiDQogICAgICAgeT0iMy45OTk5OTUiDQogICAgICAgd2lkdGg9IjE2Ig0KICAgICAgIGhlaWdodD0iMTYiDQogICAgICAgaWQ9InN2Z18xLTciIC8+DQogICAgPHJlY3QNCiAgICAgICBpZD0icmVjdDQxNjUiDQogICAgICAgaGVpZ2h0PSIxNiINCiAgICAgICB3aWR0aD0iMTYiDQogICAgICAgeT0iMy45OTk5OTUiDQogICAgICAgeD0iNTIuMDAwMDA0Ig0KICAgICAgIHN0eWxlPSJmaWxsOiM0YzRjNGM7ZmlsbC1vcGFjaXR5OjE7c3Ryb2tlOm5vbmU7c3Ryb2tlLXdpZHRoOjAiIC8+DQogICAgPHJlY3QNCiAgICAgICBzdHlsZT0iZmlsbDojNGM0YzRjO2ZpbGwtb3BhY2l0eToxO3N0cm9rZTpub25lO3N0cm9rZS13aWR0aDowIg0KICAgICAgIHg9IjE3Mi4wMDAwMiINCiAgICAgICB5PSIzLjk5OTk4NTIiDQogICAgICAgd2lkdGg9IjE2Ig0KICAgICAgIGhlaWdodD0iMTYiDQogICAgICAgaWQ9InJlY3Q0MTc1IiAvPg0KICAgIDxyZWN0DQogICAgICAgc3R5bGU9ImZpbGw6IzRjNGM0YztmaWxsLW9wYWNpdHk6MTtzdHJva2U6bm9uZTtzdHJva2Utd2lkdGg6MCINCiAgICAgICB4PSIxOTYiDQogICAgICAgeT0iMy45OTk5OTUiDQogICAgICAgd2lkdGg9IjE2Ig0KICAgICAgIGhlaWdodD0iMTYiDQogICAgICAgaWQ9InJlY3Q0MTc1LTMiIC8+DQogICAgPGcNCiAgICAgICBzdHlsZT0ic3Ryb2tlOm5vbmUiDQogICAgICAgaWQ9Imc0Mjk5Ij4NCiAgICAgIDxyZWN0DQogICAgICAgICBzdHlsZT0iZmlsbDojZmZmZmZmO2ZpbGwtb3BhY2l0eToxO3N0cm9rZTpub25lO3N0cm9rZS13aWR0aDowIg0KICAgICAgICAgaWQ9InN2Z18xLTEiDQogICAgICAgICBoZWlnaHQ9IjEuOTk5OTk4NiINCiAgICAgICAgIHdpZHRoPSI5Ljk5OTk5MjQiDQogICAgICAgICB5PSIxMC45OTk5OTgiDQogICAgICAgICB4PSI3LjAwMDAwNDgiIC8+DQogICAgICA8cmVjdA0KICAgICAgICAgc3R5bGU9ImZpbGw6I2ZmZmZmZjtmaWxsLW9wYWNpdHk6MTtzdHJva2U6bm9uZTtzdHJva2Utd2lkdGg6MCINCiAgICAgICAgIGlkPSJzdmdfMS0xLTEiDQogICAgICAgICBoZWlnaHQ9IjkuOTk5OTgzOCINCiAgICAgICAgIHdpZHRoPSIxLjk5OTk5NTUiDQogICAgICAgICB5PSI3LjAwMDAxMTQiDQogICAgICAgICB4PSIxMS4wMDAwMDUiIC8+DQogICAgPC9nPg0KICAgIDxnDQogICAgICAgc3R5bGU9InN0cm9rZTpub25lIg0KICAgICAgIHRyYW5zZm9ybT0ibWF0cml4KDAuNzA3MTA2NzgsLTAuNzA3MTA2NzgsMC43MDcxMDY3OCwwLjcwNzEwNjc4LDE5LjAyOTQzNSwxMi4wMDAwMDEpIg0KICAgICAgIGlkPSJnNDI5OS0zIj4NCiAgICAgIDxyZWN0DQogICAgICAgICBzdHlsZT0iZmlsbDojZmZmZmZmO2ZpbGwtb3BhY2l0eToxO3N0cm9rZTpub25lO3N0cm9rZS13aWR0aDowIg0KICAgICAgICAgaWQ9InN2Z18xLTEtMCINCiAgICAgICAgIGhlaWdodD0iMS45OTk5OTg2Ig0KICAgICAgICAgd2lkdGg9IjkuOTk5OTkyNCINCiAgICAgICAgIHk9IjEwLjk5OTk5OCINCiAgICAgICAgIHg9IjcuMDAwMDA0OCIgLz4NCiAgICAgIDxyZWN0DQogICAgICAgICBzdHlsZT0iZmlsbDojZmZmZmZmO2ZpbGwtb3BhY2l0eToxO3N0cm9rZTpub25lO3N0cm9rZS13aWR0aDowIg0KICAgICAgICAgaWQ9InN2Z18xLTEtMS05Ig0KICAgICAgICAgaGVpZ2h0PSI5Ljk5OTk4MzgiDQogICAgICAgICB3aWR0aD0iMS45OTk5OTU1Ig0KICAgICAgICAgeT0iNy4wMDAwMTE0Ig0KICAgICAgICAgeD0iMTEuMDAwMDA1IiAvPg0KICAgIDwvZz4NCiAgICA8cmVjdA0KICAgICAgIHN0eWxlPSJmaWxsOiNmZmZmZmY7ZmlsbC1vcGFjaXR5OjE7c3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjAiDQogICAgICAgeD0iNTUuMDAwMDA0Ig0KICAgICAgIHk9IjcuMDAwMDA0OCINCiAgICAgICB3aWR0aD0iNi45OTk5OTA5Ig0KICAgICAgIGhlaWdodD0iNi45OTk5OTA1Ig0KICAgICAgIGlkPSJzdmdfMS03LTUiIC8+DQogICAgPHJlY3QNCiAgICAgICBpZD0icmVjdDQzNTQiDQogICAgICAgaGVpZ2h0PSI2Ljk5OTk5MDUiDQogICAgICAgd2lkdGg9IjYuOTk5OTkwOSINCiAgICAgICB5PSIxMC4wMDAwMSINCiAgICAgICB4PSI1OCINCiAgICAgICBzdHlsZT0iZmlsbDojZmZmZmZmO2ZpbGwtb3BhY2l0eToxO3N0cm9rZTojNGM0YzRjO3N0cm9rZS13aWR0aDoyO3N0cm9rZS1taXRlcmxpbWl0OjQ7c3Ryb2tlLWRhc2hhcnJheTpub25lO3N0cm9rZS1vcGFjaXR5OjEiIC8+DQogICAgPHJlY3QNCiAgICAgICBzdHlsZT0iZmlsbDojZmZmZmZmO2ZpbGwtb3BhY2l0eToxO3N0cm9rZTojM2M4MGRmO3N0cm9rZS13aWR0aDowO3N0cm9rZS1taXRlcmxpbWl0OjQ7c3Ryb2tlLWRhc2hhcnJheTpub25lO3N0cm9rZS1vcGFjaXR5OjAuOTQxMTc2NDciDQogICAgICAgeD0iNTguMDAwMDA0Ig0KICAgICAgIHk9IjEwLjAwMDAwNSINCiAgICAgICB3aWR0aD0iNi45OTk5OTA5Ig0KICAgICAgIGhlaWdodD0iNi45OTk5OTA1Ig0KICAgICAgIGlkPSJzdmdfMS03LTUtNyIgLz4NCiAgICA8Zw0KICAgICAgIGlkPSJnNDM3OCI+DQogICAgICA8cmVjdA0KICAgICAgICAgaWQ9InN2Z18xLTctNS0zIg0KICAgICAgICAgaGVpZ2h0PSIxLjk5OTk5NjUiDQogICAgICAgICB3aWR0aD0iNy45OTk5OTA5Ig0KICAgICAgICAgeT0iMTAuOTk5OTk5Ig0KICAgICAgICAgeD0iMTk4Ig0KICAgICAgICAgc3R5bGU9ImZpbGw6I2ZmZmZmZjtmaWxsLW9wYWNpdHk6MTtzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MCIgLz4NCiAgICAgIDxyZWN0DQogICAgICAgICBzdHlsZT0iZmlsbDojZmZmZmZmO2ZpbGwtb3BhY2l0eToxO3N0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDowIg0KICAgICAgICAgeD0iMTk4Ig0KICAgICAgICAgeT0iNy4wMDAwMDA1Ig0KICAgICAgICAgd2lkdGg9IjExLjk5OTk5NSINCiAgICAgICAgIGhlaWdodD0iMS45OTk5OTQ2Ig0KICAgICAgICAgaWQ9InJlY3Q0Mzc0IiAvPg0KICAgICAgPHJlY3QNCiAgICAgICAgIHN0eWxlPSJmaWxsOiNmZmZmZmY7ZmlsbC1vcGFjaXR5OjE7c3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjAiDQogICAgICAgICB4PSIxOTgiDQogICAgICAgICB5PSIxNC45OTk5OTYiDQogICAgICAgICB3aWR0aD0iMy45OTk5OTI4Ig0KICAgICAgICAgaGVpZ2h0PSIxLjk5OTk5OTUiDQogICAgICAgICBpZD0icmVjdDQzNzYiIC8+DQogICAgPC9nPg0KICAgIDxnDQogICAgICAgaWQ9Imc0MzgzIg0KICAgICAgIHRyYW5zZm9ybT0ibWF0cml4KDEsMCwwLC0xLC0yMy45OTk5OTUsMjMuOTk5OTk1KSI+DQogICAgICA8cmVjdA0KICAgICAgICAgc3R5bGU9ImZpbGw6I2ZmZmZmZjtmaWxsLW9wYWNpdHk6MTtzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MCINCiAgICAgICAgIHg9IjE5OCINCiAgICAgICAgIHk9IjEwLjk5OTk5OSINCiAgICAgICAgIHdpZHRoPSI3Ljk5OTk5MDkiDQogICAgICAgICBoZWlnaHQ9IjEuOTk5OTk2NSINCiAgICAgICAgIGlkPSJyZWN0NDM4NSIgLz4NCiAgICAgIDxyZWN0DQogICAgICAgICBpZD0icmVjdDQzODciDQogICAgICAgICBoZWlnaHQ9IjEuOTk5OTk0NiINCiAgICAgICAgIHdpZHRoPSIxMS45OTk5OTUiDQogICAgICAgICB5PSI3LjAwMDAwMDUiDQogICAgICAgICB4PSIxOTgiDQogICAgICAgICBzdHlsZT0iZmlsbDojZmZmZmZmO2ZpbGwtb3BhY2l0eToxO3N0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDowIiAvPg0KICAgICAgPHJlY3QNCiAgICAgICAgIGlkPSJyZWN0NDM4OSINCiAgICAgICAgIGhlaWdodD0iMS45OTk5OTk1Ig0KICAgICAgICAgd2lkdGg9IjMuOTk5OTkyOCINCiAgICAgICAgIHk9IjE0Ljk5OTk5NiINCiAgICAgICAgIHg9IjE5OCINCiAgICAgICAgIHN0eWxlPSJmaWxsOiNmZmZmZmY7ZmlsbC1vcGFjaXR5OjE7c3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjAiIC8+DQogICAgPC9nPg0KICAgIDxyZWN0DQogICAgICAgeT0iMy45OTk5MTk5Ig0KICAgICAgIHg9Ijc2Ig0KICAgICAgIGhlaWdodD0iMTYiDQogICAgICAgd2lkdGg9IjE2Ig0KICAgICAgIGlkPSJyZWN0Mzc1NC00Ig0KICAgICAgIHN0eWxlPSJmaWxsOiM0YzRjNGM7ZmlsbC1vcGFjaXR5OjE7c3Ryb2tlOm5vbmUiIC8+DQogICAgPHBhdGgNCiAgICAgICBzb2RpcG9kaTpub2RldHlwZXM9ImNjY2NjY2NjIg0KICAgICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiDQogICAgICAgaWQ9InBhdGg0MzUxIg0KICAgICAgIGQ9Im0gODUuMTA0NDcsNi4wMTU3Mzg0IC0wLjAxNTYsMS40MDYzIGMgMy4wMjY2OSwtMC4yNDAyIDAuMzMwMDgsMy42NTA3OTk2IDIuNDg0MzgsNC41NzgwOTk2IC0yLjE4Njk0LDEuMDkzOCAwLjQ5MTkxLDQuOTA2OSAtMi40NTMxMyw0LjU3ODEgbCAtMC4wMTU2LDEuNDIxOSBjIDUuNzA4MjgsMC41NTkgMS4wMzI2NCwtNS4xMDA1IDQuNzAzMTMsLTUuMjY1NiBsIDAsLTEuNDA2MyBjIC0zLjYxMzAzLC0wLjAyNyAxLjExODkzLC01LjcwNjk5OTYgLTQuNzAzMTMsLTUuMzEyNDk5NiB6Ig0KICAgICAgIHN0eWxlPSJmaWxsOiNmZmZmZmY7ZmlsbC1vcGFjaXR5OjE7c3Ryb2tlOiNmZmZmZmY7c3Ryb2tlLXdpZHRoOjAuMjtzdHJva2UtbGluZWNhcDpidXR0O3N0cm9rZS1saW5lam9pbjptaXRlcjtzdHJva2UtbWl0ZXJsaW1pdDo0O3N0cm9rZS1kYXNoYXJyYXk6bm9uZTtzdHJva2Utb3BhY2l0eToxIiAvPg0KICAgIDxwYXRoDQogICAgICAgc29kaXBvZGk6bm9kZXR5cGVzPSJjY2NjY2NjYyINCiAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIg0KICAgICAgIGlkPSJwYXRoNDM1MS05Ig0KICAgICAgIGQ9Im0gODIuNzgxMjUsNS45OTg0Mzg0IDAuMDE1NiwxLjQwNjMgYyAtMy4wMjY2OCwtMC4yNDAyIC0wLjMzMDA3LDMuNjUwNjk5NiAtMi40ODQzNyw0LjU3ODA5OTYgMi4xODY5NCwxLjA5MzggLTAuNDkxOTIsNC45MDY5IDIuNDUzMTIsNC41NzgxIGwgMC4wMTU2LDEuNDIxOSBjIC01LjcwODI3LDAuNTU5IC0xLjAzMjYzLC01LjEwMDQgLTQuNzAzMTIsLTUuMjY1NiBsIDAsLTEuNDA2MyBjIDMuNjEzMDMsLTAuMDI3IC0xLjExODk0LC01LjcwNzA5OTYgNC43MDMxMiwtNS4zMTI0OTk2IHoiDQogICAgICAgc3R5bGU9ImZpbGw6I2ZmZmZmZjtmaWxsLW9wYWNpdHk6MTtzdHJva2U6I2ZmZmZmZjtzdHJva2Utd2lkdGg6MC4yO3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1taXRlcmxpbWl0OjQ7c3Ryb2tlLWRhc2hhcnJheTpub25lO3N0cm9rZS1vcGFjaXR5OjEiIC8+DQogICAgPHJlY3QNCiAgICAgICB5PSIzLjk5OTkxOTkiDQogICAgICAgeD0iMTAwIg0KICAgICAgIGhlaWdodD0iMTYiDQogICAgICAgd2lkdGg9IjE2Ig0KICAgICAgIGlkPSJyZWN0Mzc1NC0yNSINCiAgICAgICBzdHlsZT0iZmlsbDojNGM0YzRjO2ZpbGwtb3BhY2l0eToxO3N0cm9rZTpub25lIiAvPg0KICAgIDxwYXRoDQogICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCINCiAgICAgICBpZD0icGF0aDI5ODciDQogICAgICAgZD0ibSAxMDMuNzE5LDUuNjcxOTM4NCAwLDEyLjcxODc5OTYgMy4wMzEyNSwwIDAsLTEuNTMxMyAtMS4zNDM3NSwwIDAsLTkuNjI0OTk5NiAxLjM3NSwwIDAsLTEuNTYyNSB6Ig0KICAgICAgIHN0eWxlPSJmaWxsOiNmZmZmZmY7ZmlsbC1vcGFjaXR5OjE7c3Ryb2tlOm5vbmUiIC8+DQogICAgPHBhdGgNCiAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIg0KICAgICAgIGlkPSJwYXRoMjk4Ny0xIg0KICAgICAgIGQ9Im0gMTEyLjIxODUsNS42NzIxOTg0IDAsMTIuNzE4Nzk5NiAtMy4wMzEyNSwwIDAsLTEuNTMxMyAxLjM0Mzc1LDAgMCwtOS42MjQ5OTk2IC0xLjM3NSwwIDAsLTEuNTYyNSB6Ig0KICAgICAgIHN0eWxlPSJmaWxsOiNmZmZmZmY7ZmlsbC1vcGFjaXR5OjE7c3Ryb2tlOm5vbmUiIC8+DQogICAgPHJlY3QNCiAgICAgICB5PSIzLjk5OTkxOTkiDQogICAgICAgeD0iMTI0Ig0KICAgICAgIGhlaWdodD0iMTYiDQogICAgICAgd2lkdGg9IjE2Ig0KICAgICAgIGlkPSJyZWN0Mzc1NC03MyINCiAgICAgICBzdHlsZT0iZmlsbDojNGM0YzRjO2ZpbGwtb3BhY2l0eToxO3N0cm9rZTpub25lIiAvPg0KICAgIDxwYXRoDQogICAgICAgc29kaXBvZGk6bm9kZXR5cGVzPSJjY2NjY2NjY2MiDQogICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCINCiAgICAgICBpZD0icGF0aDM3ODAiDQogICAgICAgZD0ibSAxMjYuMjgyNCwxNy42MDI5MzggMS43ODk1NywwIDEuMTQxNDMsLTIuODY0MSA1LjY1MzY0LDAgMS4xNDg1NiwyLjg2NDEgMS43NjU2NSwwIC00Ljc4Njg3LC0xMS4xNjEwOTk2IC0xLjkxOTAzLDAgeiINCiAgICAgICBzdHlsZT0iZmlsbDojZmZmZmZmO2ZpbGwtb3BhY2l0eToxO3N0cm9rZTpub25lIiAvPg0KICAgIDxwYXRoDQogICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCINCiAgICAgICBpZD0icGF0aDM3ODIiDQogICAgICAgZD0ibSAxMjkuNzI3MDQsMTMuNDc4ODM4IDQuNjA4NTIsMC4wMSAtMi4zMDQyNiwtNS41NDk3OTk2IHoiDQogICAgICAgc3R5bGU9ImZpbGw6IzRjNGM0YztmaWxsLW9wYWNpdHk6MTtzdHJva2U6bm9uZSIgLz4NCiAgICA8cmVjdA0KICAgICAgIHk9IjMuOTk5OTE5OSINCiAgICAgICB4PSIxNDgiDQogICAgICAgaGVpZ2h0PSIxNiINCiAgICAgICB3aWR0aD0iMTYiDQogICAgICAgaWQ9InJlY3QzNzU0LTM1Ig0KICAgICAgIHN0eWxlPSJmaWxsOiM0YzRjNGM7ZmlsbC1vcGFjaXR5OjE7c3Ryb2tlOm5vbmUiIC8+DQogICAgPHBhdGgNCiAgICAgICBzb2RpcG9kaTpub2RldHlwZXM9ImNjY2NjY2MiDQogICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCINCiAgICAgICBpZD0icGF0aDUwMDgtMiINCiAgICAgICBkPSJtIDE1Ni40NzY1NSw1Ljg5MTczODQgMCwyLjE3OTcgMC40NjA5MywyLjM5ODM5OTYgMS44MjgxMywwIDAuMzk4NDQsLTIuMzk4Mzk5NiAwLC0yLjE3OTcgeiINCiAgICAgICBzdHlsZT0iZmlsbDojZmZmZmZmO2ZpbGwtb3BhY2l0eToxO3N0cm9rZTpub25lIiAvPg0KICAgIDxwYXRoDQogICAgICAgc29kaXBvZGk6bm9kZXR5cGVzPSJjY2NjY2NjIg0KICAgICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiDQogICAgICAgaWQ9InBhdGg1MDA4LTItOCINCiAgICAgICBkPSJtIDE1Mi41MTU2MSw1Ljg5MDYzODQgMCwyLjE3OTcgMC40NjA5NCwyLjM5ODM5OTYgMS44MjgxMiwwIDAuMzk4NDQsLTIuMzk4Mzk5NiAwLC0yLjE3OTcgeiINCiAgICAgICBzdHlsZT0iZmlsbDojZmZmZmZmO2ZpbGwtb3BhY2l0eToxO3N0cm9rZTpub25lIiAvPg0KICA8L2c+DQogIDxyZWN0DQogICAgIHg9IjQiDQogICAgIHk9IjI3Ljk5OTk5NCINCiAgICAgd2lkdGg9IjE2Ig0KICAgICBoZWlnaHQ9IjE2Ig0KICAgICBpZD0icmVjdDQ0MzIiDQogICAgIHN0eWxlPSJmaWxsOiNkM2QzZDM7ZmlsbC1vcGFjaXR5OjE7c3Ryb2tlOm5vbmU7c3Ryb2tlLXdpZHRoOjAiIC8+DQogIDxyZWN0DQogICAgIHN0eWxlPSJmaWxsOiNkM2QzZDM7ZmlsbC1vcGFjaXR5OjE7c3Ryb2tlOm5vbmU7c3Ryb2tlLXdpZHRoOjAiDQogICAgIHg9IjI4LjAwMDAwNiINCiAgICAgeT0iMjcuOTk5OTkiDQogICAgIHdpZHRoPSIxNiINCiAgICAgaGVpZ2h0PSIxNiINCiAgICAgaWQ9InJlY3Q0NDM0IiAvPg0KICA8cmVjdA0KICAgICBpZD0icmVjdDQ0MzYiDQogICAgIGhlaWdodD0iMTYiDQogICAgIHdpZHRoPSIxNiINCiAgICAgeT0iMjcuOTk5OTkiDQogICAgIHg9IjUyLjAwMDAwNCINCiAgICAgc3R5bGU9ImZpbGw6I2QzZDNkMztmaWxsLW9wYWNpdHk6MTtzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MCIgLz4NCiAgPHJlY3QNCiAgICAgc3R5bGU9ImZpbGw6I2QzZDNkMztzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MCINCiAgICAgeD0iMTcyLjAwMDAyIg0KICAgICB5PSIyNy45OTk5ODEiDQogICAgIHdpZHRoPSIxNiINCiAgICAgaGVpZ2h0PSIxNiINCiAgICAgaWQ9InJlY3Q0NDQ2IiAvPg0KICA8cmVjdA0KICAgICBzdHlsZT0iZmlsbDojZDNkM2QzO3N0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDowIg0KICAgICB4PSIxOTYiDQogICAgIHk9IjI3Ljk5OTk5Ig0KICAgICB3aWR0aD0iMTYiDQogICAgIGhlaWdodD0iMTYiDQogICAgIGlkPSJyZWN0NDQ0OCIgLz4NCiAgPGcNCiAgICAgaWQ9Imc0NDY2Ig0KICAgICBzdHlsZT0ic3Ryb2tlOm5vbmUiDQogICAgIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAsMjMuOTk5OTk1KSI+DQogICAgPHJlY3QNCiAgICAgICBzdHlsZT0iZmlsbDojZmZmZmZmO2ZpbGwtb3BhY2l0eToxO3N0cm9rZTpub25lO3N0cm9rZS13aWR0aDowIg0KICAgICAgIGlkPSJyZWN0NDQ2OCINCiAgICAgICBoZWlnaHQ9IjEuOTk5OTk4NiINCiAgICAgICB3aWR0aD0iOS45OTk5OTI0Ig0KICAgICAgIHk9IjEwLjk5OTk5OCINCiAgICAgICB4PSI3LjAwMDAwNDgiIC8+DQogICAgPHJlY3QNCiAgICAgICBzdHlsZT0iZmlsbDojZmZmZmZmO2ZpbGwtb3BhY2l0eToxO3N0cm9rZTpub25lO3N0cm9rZS13aWR0aDowIg0KICAgICAgIGlkPSJyZWN0NDQ3MCINCiAgICAgICBoZWlnaHQ9IjkuOTk5OTgzOCINCiAgICAgICB3aWR0aD0iMS45OTk5OTU1Ig0KICAgICAgIHk9IjcuMDAwMDExNCINCiAgICAgICB4PSIxMS4wMDAwMDUiIC8+DQogIDwvZz4NCiAgPGcNCiAgICAgdHJhbnNmb3JtPSJtYXRyaXgoMC43MDcxMDY3OCwtMC43MDcxMDY3OCwwLjcwNzEwNjc4LDAuNzA3MTA2NzgsMTkuMDI5NDM1LDM1Ljk5OTk5NikiDQogICAgIGlkPSJnNDQ3MiINCiAgICAgc3R5bGU9InN0cm9rZTpub25lIj4NCiAgICA8cmVjdA0KICAgICAgIHN0eWxlPSJmaWxsOiNmZmZmZmY7ZmlsbC1vcGFjaXR5OjE7c3Ryb2tlOm5vbmU7c3Ryb2tlLXdpZHRoOjAiDQogICAgICAgaWQ9InJlY3Q0NDc0Ig0KICAgICAgIGhlaWdodD0iMS45OTk5OTg2Ig0KICAgICAgIHdpZHRoPSI5Ljk5OTk5MjQiDQogICAgICAgeT0iMTAuOTk5OTk4Ig0KICAgICAgIHg9IjcuMDAwMDA0OCIgLz4NCiAgICA8cmVjdA0KICAgICAgIHN0eWxlPSJmaWxsOiNmZmZmZmY7ZmlsbC1vcGFjaXR5OjE7c3Ryb2tlOm5vbmU7c3Ryb2tlLXdpZHRoOjAiDQogICAgICAgaWQ9InJlY3Q0NDc2Ig0KICAgICAgIGhlaWdodD0iOS45OTk5ODM4Ig0KICAgICAgIHdpZHRoPSIxLjk5OTk5NTUiDQogICAgICAgeT0iNy4wMDAwMTE0Ig0KICAgICAgIHg9IjExLjAwMDAwNSIgLz4NCiAgPC9nPg0KICA8cmVjdA0KICAgICBzdHlsZT0iZmlsbDojZmZmZmZmO2ZpbGwtb3BhY2l0eToxO3N0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDowIg0KICAgICB4PSI1NS4wMDAwMDQiDQogICAgIHk9IjMxIg0KICAgICB3aWR0aD0iNi45OTk5OTA5Ig0KICAgICBoZWlnaHQ9IjYuOTk5OTkwNSINCiAgICAgaWQ9InJlY3Q0NDc4IiAvPg0KICA8cmVjdA0KICAgICBpZD0icmVjdDQ0ODAiDQogICAgIGhlaWdodD0iNi45OTk5OTA1Ig0KICAgICB3aWR0aD0iNi45OTk5OTA5Ig0KICAgICB5PSIzNC4wMDAwMDgiDQogICAgIHg9IjU4Ig0KICAgICBzdHlsZT0iZmlsbDojZmZmZmZmO2ZpbGwtb3BhY2l0eToxO3N0cm9rZTojZDNkM2QzO3N0cm9rZS13aWR0aDoyO3N0cm9rZS1taXRlcmxpbWl0OjQ7c3Ryb2tlLWRhc2hhcnJheTpub25lIiAvPg0KICA8cmVjdA0KICAgICBzdHlsZT0iZmlsbDojZmZmZmZmO2ZpbGwtb3BhY2l0eToxO3N0cm9rZTojZDNkM2QzO3N0cm9rZS13aWR0aDowO3N0cm9rZS1taXRlcmxpbWl0OjQ7c3Ryb2tlLWRhc2hhcnJheTpub25lIg0KICAgICB4PSI1OC4wMDAwMDQiDQogICAgIHk9IjM0LjAwMDAwNCINCiAgICAgd2lkdGg9IjYuOTk5OTkwOSINCiAgICAgaGVpZ2h0PSI2Ljk5OTk5MDUiDQogICAgIGlkPSJyZWN0NDQ4MiIgLz4NCiAgPGcNCiAgICAgaWQ9Imc0NDg0Ig0KICAgICB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwLDIzLjk5OTk5NSkiPg0KICAgIDxyZWN0DQogICAgICAgaWQ9InJlY3Q0NDg2Ig0KICAgICAgIGhlaWdodD0iMS45OTk5OTY1Ig0KICAgICAgIHdpZHRoPSI3Ljk5OTk5MDkiDQogICAgICAgeT0iMTAuOTk5OTk5Ig0KICAgICAgIHg9IjE5OCINCiAgICAgICBzdHlsZT0iZmlsbDojZmZmZmZmO2ZpbGwtb3BhY2l0eToxO3N0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDowIiAvPg0KICAgIDxyZWN0DQogICAgICAgc3R5bGU9ImZpbGw6I2ZmZmZmZjtmaWxsLW9wYWNpdHk6MTtzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MCINCiAgICAgICB4PSIxOTgiDQogICAgICAgeT0iNy4wMDAwMDA1Ig0KICAgICAgIHdpZHRoPSIxMS45OTk5OTUiDQogICAgICAgaGVpZ2h0PSIxLjk5OTk5NDYiDQogICAgICAgaWQ9InJlY3Q0NDg4IiAvPg0KICAgIDxyZWN0DQogICAgICAgc3R5bGU9ImZpbGw6I2ZmZmZmZjtmaWxsLW9wYWNpdHk6MTtzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MCINCiAgICAgICB4PSIxOTgiDQogICAgICAgeT0iMTQuOTk5OTk2Ig0KICAgICAgIHdpZHRoPSIzLjk5OTk5MjgiDQogICAgICAgaGVpZ2h0PSIxLjk5OTk5OTUiDQogICAgICAgaWQ9InJlY3Q0NDkwIiAvPg0KICA8L2c+DQogIDxnDQogICAgIGlkPSJnNDQ5MiINCiAgICAgdHJhbnNmb3JtPSJtYXRyaXgoMSwwLDAsLTEsLTIzLjk5OTk5NSw0Ny45OTk5OSkiPg0KICAgIDxyZWN0DQogICAgICAgc3R5bGU9ImZpbGw6I2ZmZmZmZjtmaWxsLW9wYWNpdHk6MTtzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MCINCiAgICAgICB4PSIxOTgiDQogICAgICAgeT0iMTAuOTk5OTk5Ig0KICAgICAgIHdpZHRoPSI3Ljk5OTk5MDkiDQogICAgICAgaGVpZ2h0PSIxLjk5OTk5NjUiDQogICAgICAgaWQ9InJlY3Q0NDk0IiAvPg0KICAgIDxyZWN0DQogICAgICAgaWQ9InJlY3Q0NDk2Ig0KICAgICAgIGhlaWdodD0iMS45OTk5OTQ2Ig0KICAgICAgIHdpZHRoPSIxMS45OTk5OTUiDQogICAgICAgeT0iNy4wMDAwMDA1Ig0KICAgICAgIHg9IjE5OCINCiAgICAgICBzdHlsZT0iZmlsbDojZmZmZmZmO2ZpbGwtb3BhY2l0eToxO3N0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDowIiAvPg0KICAgIDxyZWN0DQogICAgICAgaWQ9InJlY3Q0NDk4Ig0KICAgICAgIGhlaWdodD0iMS45OTk5OTk1Ig0KICAgICAgIHdpZHRoPSIzLjk5OTk5MjgiDQogICAgICAgeT0iMTQuOTk5OTk2Ig0KICAgICAgIHg9IjE5OCINCiAgICAgICBzdHlsZT0iZmlsbDojZmZmZmZmO2ZpbGwtb3BhY2l0eToxO3N0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDowIiAvPg0KICA8L2c+DQogIDxyZWN0DQogICAgIHN0eWxlPSJmaWxsOiNkM2QzZDM7ZmlsbC1vcGFjaXR5OjE7c3Ryb2tlOm5vbmUiDQogICAgIGlkPSJyZWN0Mzc1NC04Ig0KICAgICB3aWR0aD0iMTYiDQogICAgIGhlaWdodD0iMTYiDQogICAgIHg9Ijc2Ig0KICAgICB5PSIyNy45OTk5MiIgLz4NCiAgPHBhdGgNCiAgICAgc3R5bGU9ImZpbGw6I2ZmZmZmZjtmaWxsLW9wYWNpdHk6MTtzdHJva2U6I2ZmZmZmZjtzdHJva2Utd2lkdGg6MC4yO3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1taXRlcmxpbWl0OjQ7c3Ryb2tlLWRhc2hhcnJheTpub25lO3N0cm9rZS1vcGFjaXR5OjEiDQogICAgIGQ9Im0gODUuMTA0NDgsMzAuMDE1NTM3IC0wLjAxNTYsMS40MDYzIGMgMy4wMjY2OCwtMC4yNDAyIDAuMzMwMDcsMy42NTA4IDIuNDg0MzgsNC41NzgxIC0yLjE4Njk1LDEuMDkzOCAwLjQ5MTkxLDQuOTA2ODggLTIuNDUzMTMsNC41NzgwOCBsIC0wLjAxNTYsMS40MjE5IGMgNS43MDgyNywwLjU1OSAxLjAzMjYzLC01LjEwMDQ4IDQuNzAzMTMsLTUuMjY1NTggbCAwLC0xLjQwNjMgYyAtMy42MTMwNCwtMC4wMjcgMS4xMTg5MywtNS43MDcgLTQuNzAzMTMsLTUuMzEyNSB6Ig0KICAgICBpZD0icGF0aDQzNTEtMSINCiAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCINCiAgICAgc29kaXBvZGk6bm9kZXR5cGVzPSJjY2NjY2NjYyIgLz4NCiAgPHBhdGgNCiAgICAgc3R5bGU9ImZpbGw6I2ZmZmZmZjtmaWxsLW9wYWNpdHk6MTtzdHJva2U6I2ZmZmZmZjtzdHJva2Utd2lkdGg6MC4yO3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1taXRlcmxpbWl0OjQ7c3Ryb2tlLWRhc2hhcnJheTpub25lO3N0cm9rZS1vcGFjaXR5OjEiDQogICAgIGQ9Im0gODIuNzgxMjYsMjkuOTk4MjM3IDAuMDE1NiwxLjQwNjMgYyAtMy4wMjY2OCwtMC4yNDAyIC0wLjMzMDA4LDMuNjUwNyAtMi40ODQzOCw0LjU3ODEgMi4xODY5NCwxLjA5MzggLTAuNDkxOTEsNC45MDY4OCAyLjQ1MzEzLDQuNTc4MDggbCAwLjAxNTYsMS40MjE5IGMgLTUuNzA4MjgsMC41NTkgLTEuMDMyNjQsLTUuMTAwMzggLTQuNzAzMTMsLTUuMjY1NTggbCAwLC0xLjQwNjMgYyAzLjYxMzAzLC0wLjAyNyAtMS4xMTg5MywtNS43MDcxIDQuNzAzMTMsLTUuMzEyNSB6Ig0KICAgICBpZD0icGF0aDQzNTEtOS01Ig0KICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIg0KICAgICBzb2RpcG9kaTpub2RldHlwZXM9ImNjY2NjY2NjIiAvPg0KICA8cmVjdA0KICAgICBzdHlsZT0iZmlsbDojZDNkM2QzO2ZpbGwtb3BhY2l0eToxO3N0cm9rZTpub25lIg0KICAgICBpZD0icmVjdDM3NTQtNjUiDQogICAgIHdpZHRoPSIxNiINCiAgICAgaGVpZ2h0PSIxNiINCiAgICAgeD0iMTAwIg0KICAgICB5PSIyNy45OTk5MiIgLz4NCiAgPHBhdGgNCiAgICAgc3R5bGU9ImZpbGw6I2ZmZmZmZjtmaWxsLW9wYWNpdHk6MTtzdHJva2U6bm9uZSINCiAgICAgZD0ibSAxMDMuNzE5LDI5LjY3MTkzNyAwLDEyLjcxODc4IDMuMDMxMjUsMCAwLC0xLjUzMTMgLTEuMzQzNzUsMCAwLC05LjYyNDk4IDEuMzc1LDAgMCwtMS41NjI1IHoiDQogICAgIGlkPSJwYXRoMjk4Ny04Ig0KICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIiAvPg0KICA8cGF0aA0KICAgICBzdHlsZT0iZmlsbDojZmZmZmZmO2ZpbGwtb3BhY2l0eToxO3N0cm9rZTpub25lIg0KICAgICBkPSJtIDExMi4yMTg1LDI5LjY3MTkzNyAwLDEyLjcxODc4IC0zLjAzMTI1LDAgMCwtMS41MzEzIDEuMzQzNzUsMCAwLC05LjYyNDk4IC0xLjM3NSwwIDAsLTEuNTYyNSB6Ig0KICAgICBpZD0icGF0aDI5ODctMS05Ig0KICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIiAvPg0KICA8cmVjdA0KICAgICBzdHlsZT0iZmlsbDojZDNkM2QzO2ZpbGwtb3BhY2l0eToxO3N0cm9rZTpub25lIg0KICAgICBpZD0icmVjdDM3NTQtOTIiDQogICAgIHdpZHRoPSIxNiINCiAgICAgaGVpZ2h0PSIxNiINCiAgICAgeD0iMTI0Ig0KICAgICB5PSIyNy45OTk5MiIgLz4NCiAgPHBhdGgNCiAgICAgc3R5bGU9ImZpbGw6I2ZmZmZmZjtmaWxsLW9wYWNpdHk6MTtzdHJva2U6bm9uZSINCiAgICAgZD0ibSAxMjYuMjgyNCw0MS42MDI5MTcgMS43ODk1NywwIDEuMTQxNDMsLTIuODY0MDggNS42NTM2NCwwIDEuMTQ4NTYsMi44NjQwOCAxLjc2NTY1LDAgLTQuNzg2ODcsLTExLjE2MTA4IC0xLjkxOTAyLDAgeiINCiAgICAgaWQ9InBhdGgzNzgwLTkiDQogICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiDQogICAgIHNvZGlwb2RpOm5vZGV0eXBlcz0iY2NjY2NjY2NjIiAvPg0KICA8cGF0aA0KICAgICBzdHlsZT0iZmlsbDojZDNkM2QzO2ZpbGwtb3BhY2l0eToxO3N0cm9rZTpub25lIg0KICAgICBkPSJtIDEyOS43MjcwNCwzNy40Nzg4MzcgNC42MDg1MiwwLjAxIC0yLjMwNDI2LC01LjU0OTggeiINCiAgICAgaWQ9InBhdGgzNzgyLTIiDQogICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiIC8+DQogIDxyZWN0DQogICAgIHN0eWxlPSJmaWxsOiNkM2QzZDM7ZmlsbC1vcGFjaXR5OjE7c3Ryb2tlOm5vbmUiDQogICAgIGlkPSJyZWN0Mzc1NC00NyINCiAgICAgd2lkdGg9IjE2Ig0KICAgICBoZWlnaHQ9IjE2Ig0KICAgICB4PSIxNDgiDQogICAgIHk9IjI3Ljk5OTkyIiAvPg0KICA8cGF0aA0KICAgICBzdHlsZT0iZmlsbDojZmZmZmZmO2ZpbGwtb3BhY2l0eToxO3N0cm9rZTpub25lIg0KICAgICBkPSJtIDE1Ni40NzY1NiwyOS44OTE3MzcgMCwyLjE3OTcgMC40NjA5MywyLjM5ODQgMS44MjgxMywwIDAuMzk4NDQsLTIuMzk4NCAwLC0yLjE3OTcgeiINCiAgICAgaWQ9InBhdGg1MDA4LTItMSINCiAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCINCiAgICAgc29kaXBvZGk6bm9kZXR5cGVzPSJjY2NjY2NjIiAvPg0KICA8cGF0aA0KICAgICBzdHlsZT0iZmlsbDojZmZmZmZmO2ZpbGwtb3BhY2l0eToxO3N0cm9rZTpub25lIg0KICAgICBkPSJtIDE1Mi41MTU2MiwyOS44OTA2MzcgMCwyLjE3OTcgMC40NjA5NCwyLjM5ODQgMS44MjgxMiwwIDAuMzk4NDQsLTIuMzk4NCAwLC0yLjE3OTcgeiINCiAgICAgaWQ9InBhdGg1MDA4LTItOC04Ig0KICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIg0KICAgICBzb2RpcG9kaTpub2RldHlwZXM9ImNjY2NjY2MiIC8+DQogIDxyZWN0DQogICAgIGlkPSJzdmdfMS03LTIiDQogICAgIGhlaWdodD0iMS45OTk5OTYxIg0KICAgICB3aWR0aD0iMTEuOTk5OTk2Ig0KICAgICB5PSI2NCINCiAgICAgeD0iNTQiDQogICAgIHN0eWxlPSJmaWxsOiM0YzRjNGM7ZmlsbC1vcGFjaXR5OjAuOTg0MzEzNzM7c3Ryb2tlOm5vbmU7c3Ryb2tlLXdpZHRoOjAiIC8+DQogIDxyZWN0DQogICAgIGlkPSJzdmdfMS03LTItMiINCiAgICAgaGVpZ2h0PSIyLjk5OTk5MDUiDQogICAgIHdpZHRoPSIyLjk5OTk5MDciDQogICAgIHk9IjUyIg0KICAgICB4PSI4MC4wMDAwMDgiDQogICAgIHN0eWxlPSJmaWxsOiM0YzRjNGM7ZmlsbC1vcGFjaXR5OjAuOTg0MzEzNzM7c3Ryb2tlOm5vbmU7c3Ryb2tlLXdpZHRoOjAiIC8+DQogIDxyZWN0DQogICAgIHN0eWxlPSJmaWxsOiM0YzRjNGM7ZmlsbC1vcGFjaXR5OjAuOTg0MzEzNzM7c3Ryb2tlOm5vbmU7c3Ryb2tlLXdpZHRoOjAiDQogICAgIHg9Ijg1LjAwMDAwOCINCiAgICAgeT0iNTIiDQogICAgIHdpZHRoPSIyLjk5OTk5MDciDQogICAgIGhlaWdodD0iMi45OTk5OTA1Ig0KICAgICBpZD0icmVjdDQ1NjEiIC8+DQogIDxyZWN0DQogICAgIHN0eWxlPSJmaWxsOiM0YzRjNGM7ZmlsbC1vcGFjaXR5OjAuOTg0MzEzNzM7c3Ryb2tlOm5vbmU7c3Ryb2tlLXdpZHRoOjAiDQogICAgIHg9IjgwLjAwMDAwOCINCiAgICAgeT0iNTgiDQogICAgIHdpZHRoPSIyLjk5OTk5MDciDQogICAgIGhlaWdodD0iMi45OTk5OTA1Ig0KICAgICBpZD0icmVjdDQ1NjMiIC8+DQogIDxyZWN0DQogICAgIGlkPSJyZWN0NDU2NSINCiAgICAgaGVpZ2h0PSIyLjk5OTk5MDUiDQogICAgIHdpZHRoPSIyLjk5OTk5MDciDQogICAgIHk9IjU4Ig0KICAgICB4PSI4NS4wMDAwMDgiDQogICAgIHN0eWxlPSJmaWxsOiM0YzRjNGM7ZmlsbC1vcGFjaXR5OjAuOTg0MzEzNzM7c3Ryb2tlOm5vbmU7c3Ryb2tlLXdpZHRoOjAiIC8+DQogIDxyZWN0DQogICAgIGlkPSJyZWN0NDU2NyINCiAgICAgaGVpZ2h0PSIyLjk5OTk5MDUiDQogICAgIHdpZHRoPSIyLjk5OTk5MDciDQogICAgIHk9IjY0Ig0KICAgICB4PSI4MC4wMDAwMDgiDQogICAgIHN0eWxlPSJmaWxsOiM0YzRjNGM7ZmlsbC1vcGFjaXR5OjAuOTg0MzEzNzM7c3Ryb2tlOm5vbmU7c3Ryb2tlLXdpZHRoOjAiIC8+DQogIDxyZWN0DQogICAgIHN0eWxlPSJmaWxsOiM0YzRjNGM7ZmlsbC1vcGFjaXR5OjAuOTg0MzEzNzM7c3Ryb2tlOm5vbmU7c3Ryb2tlLXdpZHRoOjAiDQogICAgIHg9Ijg1LjAwMDAwOCINCiAgICAgeT0iNjQiDQogICAgIHdpZHRoPSIyLjk5OTk5MDciDQogICAgIGhlaWdodD0iMi45OTk5OTA1Ig0KICAgICBpZD0icmVjdDQ1NjkiIC8+DQogIDxjaXJjbGUNCiAgICAgc3R5bGU9Im9wYWNpdHk6MTtmaWxsOm5vbmU7ZmlsbC1vcGFjaXR5OjE7c3Ryb2tlOiM0YzRjNGM7c3Ryb2tlLXdpZHRoOjI7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kO3N0cm9rZS1taXRlcmxpbWl0OjQ7c3Ryb2tlLWRhc2hhcnJheTpub25lIg0KICAgICBpZD0icGF0aDQ1NzEiDQogICAgIGN4PSIxMTAuMDYwODEiDQogICAgIGN5PSI1Ny45MzkyMDkiDQogICAgIHI9IjQuNzQzODgzNiIgLz4NCiAgPHJlY3QNCiAgICAgc3R5bGU9ImZpbGw6IzRjNGM0YztmaWxsLW9wYWNpdHk6MC45ODQzMTM3MztzdHJva2U6bm9uZTtzdHJva2Utd2lkdGg6MCINCiAgICAgeD0iMTE2LjY0NTY2Ig0KICAgICB5PSItMzEuNzk3NTIiDQogICAgIHdpZHRoPSI0LjIyOTcxMyINCiAgICAgaGVpZ2h0PSI2LjQwNTM4ODQiDQogICAgIGlkPSJyZWN0NDU2My0yIg0KICAgICB0cmFuc2Zvcm09Im1hdHJpeCgwLjcwNzEwNjc4LDAuNzA3MTA2NzgsLTAuNzA3MTA2NzgsMC43MDcxMDY3OCwwLDApIiAvPg0KICA8cGF0aA0KICAgICBzdHlsZT0iZmlsbDojNGM0YzRjO2ZpbGwtb3BhY2l0eToxO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTpub25lO3N0cm9rZS13aWR0aDowO3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1taXRlcmxpbWl0OjQ7c3Ryb2tlLWRhc2hhcnJheTpub25lO3N0cm9rZS1vcGFjaXR5OjEiDQogICAgIGQ9Ik0gMTI1LDU2IDEzOC43NzAyNyw1Ni4wOTUgMTMyLDY0IFoiDQogICAgIGlkPSJwYXRoNDYxMyINCiAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCINCiAgICAgc29kaXBvZGk6bm9kZXR5cGVzPSJjY2NjIiAvPg0KICA8cGF0aA0KICAgICBzb2RpcG9kaTpub2RldHlwZXM9ImNjY2MiDQogICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiDQogICAgIGlkPSJwYXRoNDYxNSINCiAgICAgZD0iTSAxNDksNjQgMTYyLjc3MDI3LDYzLjkwNSAxNTYsNTYgWiINCiAgICAgc3R5bGU9ImZpbGw6IzRjNGM0YztmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6bm9uZTtzdHJva2Utd2lkdGg6MDtzdHJva2UtbGluZWNhcDpidXR0O3N0cm9rZS1saW5lam9pbjptaXRlcjtzdHJva2UtbWl0ZXJsaW1pdDo0O3N0cm9rZS1kYXNoYXJyYXk6bm9uZTtzdHJva2Utb3BhY2l0eToxIiAvPg0KICA8cmVjdA0KICAgICBzdHlsZT0iZmlsbDojNGM0YzRjO2ZpbGwtb3BhY2l0eTowLjk4NDMxMzczO3N0cm9rZTpub25lO3N0cm9rZS13aWR0aDowIg0KICAgICB4PSI1NCINCiAgICAgeT0iNTMiDQogICAgIHdpZHRoPSIxMS45OTk5OTYiDQogICAgIGhlaWdodD0iMS45OTk5OTYxIg0KICAgICBpZD0icmVjdDQ2MzgiIC8+DQogIDxyZWN0DQogICAgIGlkPSJzdmdfMS03LTItMjQiDQogICAgIGhlaWdodD0iMS45OTk5OTU3Ig0KICAgICB3aWR0aD0iMTIuOTk5OTkiDQogICAgIHk9Ii01NiINCiAgICAgeD0iNTMiDQogICAgIHN0eWxlPSJmaWxsOiM0YzRjNGM7ZmlsbC1vcGFjaXR5OjAuOTg0MzEzNzM7c3Ryb2tlOm5vbmU7c3Ryb2tlLXdpZHRoOjAiDQogICAgIHRyYW5zZm9ybT0ibWF0cml4KDAsMSwtMSwwLDAsMCkiIC8+DQogIDxyZWN0DQogICAgIHRyYW5zZm9ybT0ibWF0cml4KDAsMSwtMSwwLDAsMCkiDQogICAgIHN0eWxlPSJmaWxsOiM0YzRjNGM7ZmlsbC1vcGFjaXR5OjAuOTg0MzEzNzM7c3Ryb2tlOm5vbmU7c3Ryb2tlLXdpZHRoOjAiDQogICAgIHg9IjUzIg0KICAgICB5PSItNjYiDQogICAgIHdpZHRoPSIxMi45OTk5OSINCiAgICAgaGVpZ2h0PSIxLjk5OTk5NTciDQogICAgIGlkPSJyZWN0NDY1NyIgLz4NCiAgPHJlY3QNCiAgICAgaWQ9InJlY3Q0NjU5Ig0KICAgICBoZWlnaHQ9IjAuOTk5OTkyOTEiDQogICAgIHdpZHRoPSIxMS45OTk5OTkiDQogICAgIHk9IjU3Ig0KICAgICB4PSI1NCINCiAgICAgc3R5bGU9ImZpbGw6IzRjNGM0YztmaWxsLW9wYWNpdHk6MC45ODQzMTM3MztzdHJva2U6bm9uZTtzdHJva2Utd2lkdGg6MCIgLz4NCiAgPHJlY3QNCiAgICAgc3R5bGU9ImZpbGw6I2QzZDNkMztmaWxsLW9wYWNpdHk6MTtzdHJva2U6bm9uZTtzdHJva2Utd2lkdGg6MDtzdHJva2Utb3BhY2l0eToxIg0KICAgICB4PSI1NCINCiAgICAgeT0iODguMDAwMTIyIg0KICAgICB3aWR0aD0iMTEuOTk5OTk2Ig0KICAgICBoZWlnaHQ9IjEuOTk5OTk2MSINCiAgICAgaWQ9InJlY3Q0NjYxIiAvPg0KICA8cmVjdA0KICAgICBzdHlsZT0iZmlsbDojZDNkM2QzO2ZpbGwtb3BhY2l0eToxO3N0cm9rZTpub25lO3N0cm9rZS13aWR0aDowO3N0cm9rZS1vcGFjaXR5OjEiDQogICAgIHg9IjgwLjAwMDAwOCINCiAgICAgeT0iNzYuMDAwMTIyIg0KICAgICB3aWR0aD0iMi45OTk5OTA3Ig0KICAgICBoZWlnaHQ9IjIuOTk5OTkwNSINCiAgICAgaWQ9InJlY3Q0NjYzIiAvPg0KICA8cmVjdA0KICAgICBpZD0icmVjdDQ2NjUiDQogICAgIGhlaWdodD0iMi45OTk5OTA1Ig0KICAgICB3aWR0aD0iMi45OTk5OTA3Ig0KICAgICB5PSI3Ni4wMDAxMjIiDQogICAgIHg9Ijg1LjAwMDAwOCINCiAgICAgc3R5bGU9ImZpbGw6I2QzZDNkMztmaWxsLW9wYWNpdHk6MTtzdHJva2U6bm9uZTtzdHJva2Utd2lkdGg6MDtzdHJva2Utb3BhY2l0eToxIiAvPg0KICA8cmVjdA0KICAgICBpZD0icmVjdDQ2NjciDQogICAgIGhlaWdodD0iMi45OTk5OTA1Ig0KICAgICB3aWR0aD0iMi45OTk5OTA3Ig0KICAgICB5PSI4Mi4wMDAxMjIiDQogICAgIHg9IjgwLjAwMDAwOCINCiAgICAgc3R5bGU9ImZpbGw6I2QzZDNkMztmaWxsLW9wYWNpdHk6MTtzdHJva2U6bm9uZTtzdHJva2Utd2lkdGg6MDtzdHJva2Utb3BhY2l0eToxIiAvPg0KICA8cmVjdA0KICAgICBzdHlsZT0iZmlsbDojZDNkM2QzO2ZpbGwtb3BhY2l0eToxO3N0cm9rZTpub25lO3N0cm9rZS13aWR0aDowO3N0cm9rZS1vcGFjaXR5OjEiDQogICAgIHg9Ijg1LjAwMDAwOCINCiAgICAgeT0iODIuMDAwMTIyIg0KICAgICB3aWR0aD0iMi45OTk5OTA3Ig0KICAgICBoZWlnaHQ9IjIuOTk5OTkwNSINCiAgICAgaWQ9InJlY3Q0NjY5IiAvPg0KICA8cmVjdA0KICAgICBzdHlsZT0iZmlsbDojZDNkM2QzO2ZpbGwtb3BhY2l0eToxO3N0cm9rZTpub25lO3N0cm9rZS13aWR0aDowO3N0cm9rZS1vcGFjaXR5OjEiDQogICAgIHg9IjgwLjAwMDAwOCINCiAgICAgeT0iODguMDAwMTIyIg0KICAgICB3aWR0aD0iMi45OTk5OTA3Ig0KICAgICBoZWlnaHQ9IjIuOTk5OTkwNSINCiAgICAgaWQ9InJlY3Q0NjcxIiAvPg0KICA8cmVjdA0KICAgICBpZD0icmVjdDQ2NzMiDQogICAgIGhlaWdodD0iMi45OTk5OTA1Ig0KICAgICB3aWR0aD0iMi45OTk5OTA3Ig0KICAgICB5PSI4OC4wMDAxMjIiDQogICAgIHg9Ijg1LjAwMDAwOCINCiAgICAgc3R5bGU9ImZpbGw6I2QzZDNkMztmaWxsLW9wYWNpdHk6MTtzdHJva2U6bm9uZTtzdHJva2Utd2lkdGg6MDtzdHJva2Utb3BhY2l0eToxIiAvPg0KICA8Y2lyY2xlDQogICAgIHI9IjQuNzQzODgzNiINCiAgICAgY3k9IjgxLjkzOTMzMSINCiAgICAgY3g9IjExMC4wNjA4MSINCiAgICAgaWQ9ImNpcmNsZTQ2NzUiDQogICAgIHN0eWxlPSJvcGFjaXR5OjE7ZmlsbDpub25lO2ZpbGwtb3BhY2l0eToxO3N0cm9rZTojZDNkM2QzO3N0cm9rZS13aWR0aDoyO3N0cm9rZS1saW5lY2FwOnJvdW5kO3N0cm9rZS1saW5lam9pbjpyb3VuZDtzdHJva2UtbWl0ZXJsaW1pdDo0O3N0cm9rZS1kYXNoYXJyYXk6bm9uZTtzdHJva2Utb3BhY2l0eToxIiAvPg0KICA8cmVjdA0KICAgICB0cmFuc2Zvcm09Im1hdHJpeCgwLjcwNzEwNjc4LDAuNzA3MTA2NzgsLTAuNzA3MTA2NzgsMC43MDcxMDY3OCwwLDApIg0KICAgICBpZD0icmVjdDQ2NzciDQogICAgIGhlaWdodD0iNi40MDUzODg0Ig0KICAgICB3aWR0aD0iNC4yMjk3MTMiDQogICAgIHk9Ii0xNC44MjY4MTYiDQogICAgIHg9IjEzMy42MTYzIg0KICAgICBzdHlsZT0iZmlsbDojZDNkM2QzO2ZpbGwtb3BhY2l0eToxO3N0cm9rZTojZDNkM2QzO3N0cm9rZS13aWR0aDowO3N0cm9rZS1vcGFjaXR5OjEiIC8+DQogIDxwYXRoDQogICAgIHNvZGlwb2RpOm5vZGV0eXBlcz0iY2NjYyINCiAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCINCiAgICAgaWQ9InBhdGg0Njc5Ig0KICAgICBkPSJtIDEyNSw4MC4wMDAwMDUgMTMuNzcwMjcsMC4wOTQ5OSBMIDEzMiw4Ny45OTk5OTIgWiINCiAgICAgc3R5bGU9ImZpbGw6I2QzZDNkMztmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6I2QzZDNkMztzdHJva2Utd2lkdGg6MDtzdHJva2UtbGluZWNhcDpidXR0O3N0cm9rZS1saW5lam9pbjptaXRlcjtzdHJva2UtbWl0ZXJsaW1pdDo0O3N0cm9rZS1kYXNoYXJyYXk6bm9uZTtzdHJva2Utb3BhY2l0eToxIiAvPg0KICA8cGF0aA0KICAgICBzdHlsZT0iZmlsbDojZDNkM2QzO2ZpbGwtb3BhY2l0eToxO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTojZDNkM2QzO3N0cm9rZS13aWR0aDowO3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1taXRlcmxpbWl0OjQ7c3Ryb2tlLWRhc2hhcnJheTpub25lO3N0cm9rZS1vcGFjaXR5OjEiDQogICAgIGQ9Ik0gMTQ5LDg4LjAwMDIgMTYyLjc3MDI3LDg3LjkwNTIgMTU2LDgwLjAwMDIgWiINCiAgICAgaWQ9InBhdGg0NjgxIg0KICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIg0KICAgICBzb2RpcG9kaTpub2RldHlwZXM9ImNjY2MiIC8+DQogIDxyZWN0DQogICAgIGlkPSJyZWN0NDY4MyINCiAgICAgaGVpZ2h0PSIxLjk5OTk5NjEiDQogICAgIHdpZHRoPSIxMS45OTk5OTYiDQogICAgIHk9Ijc3LjAwMDEyMiINCiAgICAgeD0iNTQiDQogICAgIHN0eWxlPSJmaWxsOiNkM2QzZDM7ZmlsbC1vcGFjaXR5OjE7c3Ryb2tlOm5vbmU7c3Ryb2tlLXdpZHRoOjA7c3Ryb2tlLW9wYWNpdHk6MSIgLz4NCiAgPHJlY3QNCiAgICAgdHJhbnNmb3JtPSJtYXRyaXgoMCwxLC0xLDAsMCwwKSINCiAgICAgc3R5bGU9ImZpbGw6I2QzZDNkMztmaWxsLW9wYWNpdHk6MTtzdHJva2U6bm9uZTtzdHJva2Utd2lkdGg6MDtzdHJva2Utb3BhY2l0eToxIg0KICAgICB4PSI3Ny4wMDAxMjIiDQogICAgIHk9Ii01NiINCiAgICAgd2lkdGg9IjEyLjk5OTk5Ig0KICAgICBoZWlnaHQ9IjEuOTk5OTk1NyINCiAgICAgaWQ9InJlY3Q0Njg1IiAvPg0KICA8cmVjdA0KICAgICBpZD0icmVjdDQ2ODciDQogICAgIGhlaWdodD0iMS45OTk5OTU3Ig0KICAgICB3aWR0aD0iMTIuOTk5OTkiDQogICAgIHk9Ii02NiINCiAgICAgeD0iNzcuMDAwMTIyIg0KICAgICBzdHlsZT0iZmlsbDojZDNkM2QzO2ZpbGwtb3BhY2l0eToxO3N0cm9rZTpub25lO3N0cm9rZS13aWR0aDowO3N0cm9rZS1vcGFjaXR5OjEiDQogICAgIHRyYW5zZm9ybT0ibWF0cml4KDAsMSwtMSwwLDAsMCkiIC8+DQogIDxyZWN0DQogICAgIHN0eWxlPSJmaWxsOiNkM2QzZDM7ZmlsbC1vcGFjaXR5OjE7c3Ryb2tlOm5vbmU7c3Ryb2tlLXdpZHRoOjA7c3Ryb2tlLW9wYWNpdHk6MSINCiAgICAgeD0iNTQiDQogICAgIHk9IjgxLjAwMDEyMiINCiAgICAgd2lkdGg9IjExLjk5OTk5OSINCiAgICAgaGVpZ2h0PSIwLjk5OTk5MjkxIg0KICAgICBpZD0icmVjdDQ2ODkiIC8+DQogIDxyZWN0DQogICAgIGlkPSJyZWN0NDc2MS0xIg0KICAgICBoZWlnaHQ9IjEuOTk5OTk0NSINCiAgICAgd2lkdGg9IjE1Ljk5OTk5Ig0KICAgICB5PSIxMDEiDQogICAgIHg9Ijc2LjAwMDAwOCINCiAgICAgc3R5bGU9ImZpbGw6I2ZmZmZmZjtmaWxsLW9wYWNpdHk6MC44MDAwMDAwNztzdHJva2U6bm9uZTtzdHJva2Utd2lkdGg6MCIgLz4NCiAgPHJlY3QNCiAgICAgaWQ9InJlY3Q0NzYxLTAiDQogICAgIGhlaWdodD0iMS45OTk5OTQ1Ig0KICAgICB3aWR0aD0iMTUuOTk5OTkiDQogICAgIHk9IjEwNSINCiAgICAgeD0iNzYuMDAwMDA4Ig0KICAgICBzdHlsZT0iZmlsbDojZmZmZmZmO2ZpbGwtb3BhY2l0eTowLjgwMDAwMDA3O3N0cm9rZTpub25lO3N0cm9rZS13aWR0aDowIiAvPg0KICA8cmVjdA0KICAgICBpZD0icmVjdDQ3NjEtNyINCiAgICAgaGVpZ2h0PSIxLjk5OTk5NDUiDQogICAgIHdpZHRoPSI5Ig0KICAgICB5PSIxMDkiDQogICAgIHg9Ijc2LjAwMDAwOCINCiAgICAgc3R5bGU9ImZpbGw6I2ZmZmZmZjtmaWxsLW9wYWNpdHk6MC44MDAwMDAwNztzdHJva2U6bm9uZTtzdHJva2Utd2lkdGg6MCIgLz4NCiAgPHJlY3QNCiAgICAgaWQ9InJlY3Q0NzYxLTEtMSINCiAgICAgaGVpZ2h0PSIxLjk5OTk5NDUiDQogICAgIHdpZHRoPSIxMiINCiAgICAgeT0iMTI1Ig0KICAgICB4PSI3Ni4wMDAwMDgiDQogICAgIHN0eWxlPSJmaWxsOiNmZmZmZmY7ZmlsbC1vcGFjaXR5OjAuODAwMDAwMDc7c3Ryb2tlOm5vbmU7c3Ryb2tlLXdpZHRoOjAiIC8+DQogIDxyZWN0DQogICAgIGlkPSJyZWN0NDc2MS0xLTEtNCINCiAgICAgaGVpZ2h0PSIxLjk5OTk5NDUiDQogICAgIHdpZHRoPSIxMCINCiAgICAgeT0iMTM3Ig0KICAgICB4PSI3Ni4wMDAwMDgiDQogICAgIHN0eWxlPSJmaWxsOiNmZmZmZmY7ZmlsbC1vcGFjaXR5OjAuODAwMDAwMDc7c3Ryb2tlOm5vbmU7c3Ryb2tlLXdpZHRoOjAiIC8+DQogIDxyZWN0DQogICAgIGlkPSJyZWN0NDc2MS0xLTEtNC00Ig0KICAgICBoZWlnaHQ9IjEuOTk5OTk0NSINCiAgICAgd2lkdGg9IjEwIg0KICAgICB5PSIxMjkiDQogICAgIHg9IjgyIg0KICAgICBzdHlsZT0iZmlsbDojZmZmZmZmO2ZpbGwtb3BhY2l0eTowLjgwMDAwMDA3O3N0cm9rZTpub25lO3N0cm9rZS13aWR0aDowIiAvPg0KICA8cmVjdA0KICAgICBpZD0icmVjdDQ3NjEtMS0xLTQtNC0zIg0KICAgICBoZWlnaHQ9IjEuOTk5OTk0NSINCiAgICAgd2lkdGg9IjkiDQogICAgIHk9IjEzMyINCiAgICAgeD0iODIiDQogICAgIHN0eWxlPSJmaWxsOiNmZmZmZmY7ZmlsbC1vcGFjaXR5OjAuODAwMDAwMDc7c3Ryb2tlOm5vbmU7c3Ryb2tlLXdpZHRoOjAiIC8+DQogIDxwYXRoDQogICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiDQogICAgIHN0eWxlPSJjb2xvcjojMDAwMDAwO2ZvbnQtc3R5bGU6bm9ybWFsO2ZvbnQtdmFyaWFudDpub3JtYWw7Zm9udC13ZWlnaHQ6bm9ybWFsO2ZvbnQtc3RyZXRjaDpub3JtYWw7Zm9udC1zaXplOm1lZGl1bTtsaW5lLWhlaWdodDpub3JtYWw7Zm9udC1mYW1pbHk6c2Fucy1zZXJpZjt0ZXh0LWluZGVudDowO3RleHQtYWxpZ246c3RhcnQ7dGV4dC1kZWNvcmF0aW9uOm5vbmU7dGV4dC1kZWNvcmF0aW9uLWxpbmU6bm9uZTt0ZXh0LWRlY29yYXRpb24tc3R5bGU6c29saWQ7dGV4dC1kZWNvcmF0aW9uLWNvbG9yOiMwMDAwMDA7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO3dvcmQtc3BhY2luZzpub3JtYWw7dGV4dC10cmFuc2Zvcm06bm9uZTtkaXJlY3Rpb246bHRyO2Jsb2NrLXByb2dyZXNzaW9uOnRiO3dyaXRpbmctbW9kZTpsci10YjtiYXNlbGluZS1zaGlmdDpiYXNlbGluZTt0ZXh0LWFuY2hvcjpzdGFydDt3aGl0ZS1zcGFjZTpub3JtYWw7Y2xpcC1ydWxlOm5vbnplcm87ZGlzcGxheTppbmxpbmU7b3ZlcmZsb3c6dmlzaWJsZTt2aXNpYmlsaXR5OnZpc2libGU7b3BhY2l0eTowLjg7aXNvbGF0aW9uOmF1dG87bWl4LWJsZW5kLW1vZGU6bm9ybWFsO2NvbG9yLWludGVycG9sYXRpb246c1JHQjtjb2xvci1pbnRlcnBvbGF0aW9uLWZpbHRlcnM6bGluZWFyUkdCO3NvbGlkLWNvbG9yOiMwMDAwMDA7c29saWQtb3BhY2l0eToxO2ZpbGw6I2ZmZmZmZjtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6bm9uemVybztzdHJva2U6bm9uZTtzdHJva2Utd2lkdGg6Mi42NjE1Nzg2NjtzdHJva2UtbGluZWNhcDpidXR0O3N0cm9rZS1saW5lam9pbjptaXRlcjtzdHJva2UtbWl0ZXJsaW1pdDo0O3N0cm9rZS1kYXNoYXJyYXk6bm9uZTtzdHJva2UtZGFzaG9mZnNldDowO3N0cm9rZS1vcGFjaXR5OjE7Y29sb3ItcmVuZGVyaW5nOmF1dG87aW1hZ2UtcmVuZGVyaW5nOmF1dG87c2hhcGUtcmVuZGVyaW5nOmF1dG87dGV4dC1yZW5kZXJpbmc6YXV0bztlbmFibGUtYmFja2dyb3VuZDphY2N1bXVsYXRlIg0KICAgICBkPSJtIDM2LjM5ODQzOCwxMDAuMDI1NCBjIC0wLjQyMzM2MiwtMC4wMTMgLTAuODQ2ODQ3LDAuMDEgLTEuMjY1NjI2LDAuMDYyIC0xLjY1NjU2MiwwLjIxOTYgLTMuMjQ0NTY3LDAuOTczOSAtNC41MDc4MTIsMi4yMjY2IEwgMjksMTAwLjU5OTEgbCAtMi4zMjQyMTksNy43MTI5IDcuODI2MTcyLC0xLjkwNjIgLTEuODA0Njg3LC0xLjkwNjMgYyAxLjU5NzcwMiwtMS41MzA4IDQuMDQ4NzA2LC0xLjg0NTMgNS45ODQzNzUsLTAuNzIwNyAxLjk3MTE2MiwxLjE0NTIgMi44ODE5NTQsMy4zOTc1IDIuMzA4NTkzLDUuNTUwOCAtMC41NzMzNjEsMi4xNTMzIC0yLjUzMzg2NSwzLjY5NTMgLTQuODMwMDc4LDMuNjk1MyBsIDAsMy4wNzQyIGMgMy41NTA3NTYsMCA2LjcxMDQ0MiwtMi40MTEzIDcuNjUwMzkxLC01Ljk0MTQgMC45Mzk5NDksLTMuNTMwMSAtMC42MTg0NjMsLTcuMjczNiAtMy43MTA5MzgsLTkuMDcwMyAtMS4xNTk2NzgsLTAuNjczOCAtMi40MzEwODcsLTEuMDIzMSAtMy43MDExNzEsLTEuMDYyNSB6Ig0KICAgICBpZD0icGF0aDQxMzgiIC8+DQogIDxwYXRoDQogICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiDQogICAgIHN0eWxlPSJjb2xvcjojMDAwMDAwO2ZvbnQtc3R5bGU6bm9ybWFsO2ZvbnQtdmFyaWFudDpub3JtYWw7Zm9udC13ZWlnaHQ6bm9ybWFsO2ZvbnQtc3RyZXRjaDpub3JtYWw7Zm9udC1zaXplOm1lZGl1bTtsaW5lLWhlaWdodDpub3JtYWw7Zm9udC1mYW1pbHk6c2Fucy1zZXJpZjt0ZXh0LWluZGVudDowO3RleHQtYWxpZ246c3RhcnQ7dGV4dC1kZWNvcmF0aW9uOm5vbmU7dGV4dC1kZWNvcmF0aW9uLWxpbmU6bm9uZTt0ZXh0LWRlY29yYXRpb24tc3R5bGU6c29saWQ7dGV4dC1kZWNvcmF0aW9uLWNvbG9yOiMwMDAwMDA7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO3dvcmQtc3BhY2luZzpub3JtYWw7dGV4dC10cmFuc2Zvcm06bm9uZTtkaXJlY3Rpb246bHRyO2Jsb2NrLXByb2dyZXNzaW9uOnRiO3dyaXRpbmctbW9kZTpsci10YjtiYXNlbGluZS1zaGlmdDpiYXNlbGluZTt0ZXh0LWFuY2hvcjpzdGFydDt3aGl0ZS1zcGFjZTpub3JtYWw7Y2xpcC1ydWxlOm5vbnplcm87ZGlzcGxheTppbmxpbmU7b3ZlcmZsb3c6dmlzaWJsZTt2aXNpYmlsaXR5OnZpc2libGU7b3BhY2l0eTowLjg7aXNvbGF0aW9uOmF1dG87bWl4LWJsZW5kLW1vZGU6bm9ybWFsO2NvbG9yLWludGVycG9sYXRpb246c1JHQjtjb2xvci1pbnRlcnBvbGF0aW9uLWZpbHRlcnM6bGluZWFyUkdCO3NvbGlkLWNvbG9yOiMwMDAwMDA7c29saWQtb3BhY2l0eToxO2ZpbGw6I2ZmZmZmZjtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6bm9uemVybztzdHJva2U6bm9uZTtzdHJva2Utd2lkdGg6Mi42NjE1Nzg2NjtzdHJva2UtbGluZWNhcDpidXR0O3N0cm9rZS1saW5lam9pbjptaXRlcjtzdHJva2UtbWl0ZXJsaW1pdDo0O3N0cm9rZS1kYXNoYXJyYXk6bm9uZTtzdHJva2UtZGFzaG9mZnNldDowO3N0cm9rZS1vcGFjaXR5OjE7Y29sb3ItcmVuZGVyaW5nOmF1dG87aW1hZ2UtcmVuZGVyaW5nOmF1dG87c2hhcGUtcmVuZGVyaW5nOmF1dG87dGV4dC1yZW5kZXJpbmc6YXV0bztlbmFibGUtYmFja2dyb3VuZDphY2N1bXVsYXRlIg0KICAgICBkPSJtIDU5LjcyMjY1Niw5OS45NjI5IGMgLTEuMjcwMDg0LDAuMDM5IC0yLjU0MTQ5MywwLjM4ODcgLTMuNzAxMTcyLDEuMDYyNSAtMy4wOTI0NzUsMS43OTY3IC00LjY1MDg4Niw1LjU0MDIgLTMuNzEwOTM3LDkuMDcwMyAwLjkzOTk0OSwzLjUzMDEgNC4wOTc2OCw1Ljk0MTQgNy42NDg0MzcsNS45NDE0IGwgMCwtMy4wNzQyIGMgLTIuMjk2MjE0LDAgLTQuMjU2NzE3LC0xLjU0MiAtNC44MzAwNzgsLTMuNjk1MyAtMC41NzMzNjEsLTIuMTUzMyAwLjMzNzQzMiwtNC40MDU2IDIuMzA4NTk0LC01LjU1MDggMS45MzU3MzEsLTEuMTI0NiA0LjM4ODYzLC0wLjgxMDIgNS45ODYzMjYsMC43MjA3IGwgLTEuODA2NjM4LDEuOTA2MyA3LjgyODEyOCwxLjkwNjIgLTIuMzI0MjIsLTcuNzEyOSAtMS42MjY5NiwxLjcxNjggYyAtMS4yNjMzOCwtMS4yNTMxIC0yLjg0ODkxNywtMi4wMDg4IC00LjUwNTg1NSwtMi4yMjg1IC0wLjQxODc3OCwtMC4wNTUgLTAuODQyMjYzLC0wLjA3NiAtMS4yNjU2MjUsLTAuMDYyIHoiDQogICAgIGlkPSJwYXRoNDEzOC0xIiAvPg0KICA8cGF0aA0KICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIg0KICAgICBzdHlsZT0ib3BhY2l0eTowLjg7ZmlsbDojZmZmZmZmO2ZpbGwtb3BhY2l0eToxO3N0cm9rZTpub25lO3N0cm9rZS13aWR0aDoxLjk2NjtzdHJva2UtbWl0ZXJsaW1pdDo0O3N0cm9rZS1kYXNoYXJyYXk6bm9uZSINCiAgICAgZD0ibSAxMC41LDEwMCAwLDIgLTIuNDk5OTk5NiwwIEwgMTIsMTA3IGwgNCwtNSAtMi41LDAgMCwtMiAtMywwIHoiDQogICAgIGlkPSJwYXRoMzA1NS0wLTc3IiAvPg0KICA8cGF0aA0KICAgICBzdHlsZT0ib3BhY2l0eTowLjg7ZmlsbDpub25lO3N0cm9rZTojZmZmZmZmO3N0cm9rZS13aWR0aDoxLjk2NjtzdHJva2UtbGluZWNhcDpzcXVhcmU7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1taXRlcmxpbWl0OjQ7c3Ryb2tlLWRhc2hhcnJheTpub25lO3N0cm9rZS1vcGFjaXR5OjEiDQogICAgIGQ9Im0gNC45ODUwNTc0LDEwOC4wMTUgMTQuMDI5ODg1NiwtMC4wMyINCiAgICAgaWQ9InBhdGg1MjQ0LTUtMC01Ig0KICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIg0KICAgICBzb2RpcG9kaTpub2RldHlwZXM9ImNjIiAvPg0KICA8cGF0aA0KICAgICBzdHlsZT0ib3BhY2l0eTowLjg7ZmlsbDpub25lO3N0cm9rZTojZmZmZmZmO3N0cm9rZS13aWR0aDoxLjk2NjtzdHJva2UtbGluZWNhcDpzcXVhcmU7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1taXRlcmxpbWl0OjQ7c3Ryb2tlLWRhc2hhcnJheTpub25lO3N0cm9rZS1vcGFjaXR5OjEiDQogICAgIGQ9Im0gNC45ODQ5ODc0LDEzMi4wMTUgMTQuMDI5ODg2NiwtMC4wMyINCiAgICAgaWQ9InBhdGg1MjQ0LTUtMC01LTgiDQogICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiDQogICAgIHNvZGlwb2RpOm5vZGV0eXBlcz0iY2MiIC8+DQogIDxwYXRoDQogICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiDQogICAgIHN0eWxlPSJjb2xvcjojMDAwMDAwO2ZvbnQtc3R5bGU6bm9ybWFsO2ZvbnQtdmFyaWFudDpub3JtYWw7Zm9udC13ZWlnaHQ6bm9ybWFsO2ZvbnQtc3RyZXRjaDpub3JtYWw7Zm9udC1zaXplOm1lZGl1bTtsaW5lLWhlaWdodDpub3JtYWw7Zm9udC1mYW1pbHk6c2Fucy1zZXJpZjt0ZXh0LWluZGVudDowO3RleHQtYWxpZ246c3RhcnQ7dGV4dC1kZWNvcmF0aW9uOm5vbmU7dGV4dC1kZWNvcmF0aW9uLWxpbmU6bm9uZTt0ZXh0LWRlY29yYXRpb24tc3R5bGU6c29saWQ7dGV4dC1kZWNvcmF0aW9uLWNvbG9yOiMwMDAwMDA7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO3dvcmQtc3BhY2luZzpub3JtYWw7dGV4dC10cmFuc2Zvcm06bm9uZTtkaXJlY3Rpb246bHRyO2Jsb2NrLXByb2dyZXNzaW9uOnRiO3dyaXRpbmctbW9kZTpsci10YjtiYXNlbGluZS1zaGlmdDpiYXNlbGluZTt0ZXh0LWFuY2hvcjpzdGFydDt3aGl0ZS1zcGFjZTpub3JtYWw7Y2xpcC1ydWxlOm5vbnplcm87ZGlzcGxheTppbmxpbmU7b3ZlcmZsb3c6dmlzaWJsZTt2aXNpYmlsaXR5OnZpc2libGU7b3BhY2l0eTowLjQ7aXNvbGF0aW9uOmF1dG87bWl4LWJsZW5kLW1vZGU6bm9ybWFsO2NvbG9yLWludGVycG9sYXRpb246c1JHQjtjb2xvci1pbnRlcnBvbGF0aW9uLWZpbHRlcnM6bGluZWFyUkdCO3NvbGlkLWNvbG9yOiMwMDAwMDA7c29saWQtb3BhY2l0eToxO2ZpbGw6IzRkNGQ0ZDtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6bm9uemVybztzdHJva2U6bm9uZTtzdHJva2Utd2lkdGg6Mi42NjE1Nzg2NjtzdHJva2UtbGluZWNhcDpidXR0O3N0cm9rZS1saW5lam9pbjptaXRlcjtzdHJva2UtbWl0ZXJsaW1pdDo0O3N0cm9rZS1kYXNoYXJyYXk6bm9uZTtzdHJva2UtZGFzaG9mZnNldDowO3N0cm9rZS1vcGFjaXR5OjE7Y29sb3ItcmVuZGVyaW5nOmF1dG87aW1hZ2UtcmVuZGVyaW5nOmF1dG87c2hhcGUtcmVuZGVyaW5nOmF1dG87dGV4dC1yZW5kZXJpbmc6YXV0bztlbmFibGUtYmFja2dyb3VuZDphY2N1bXVsYXRlIg0KICAgICBkPSJtIDM2LjM5ODQzOCwxMjMuOTYyOSBjIC0wLjQyMzM2MiwtMC4wMTMgLTAuODQ2ODQ3LDAuMDEgLTEuMjY1NjI2LDAuMDYyIC0xLjY1NjU2MiwwLjIxOTYgLTMuMjQ0NTY3LDAuOTczOSAtNC41MDc4MTIsMi4yMjY2IEwgMjksMTI0LjUzNjYgbCAtMi4zMjQyMTksNy43MTI5IDcuODI2MTcyLC0xLjkwNjIgLTEuODA0Njg3LC0xLjkwNjMgYyAxLjU5NzcwMiwtMS41MzA4IDQuMDQ4NzA2LC0xLjg0NTMgNS45ODQzNzUsLTAuNzIwNyAxLjk3MTE2MiwxLjE0NTMgMi44ODE5NTQsMy4zOTc1IDIuMzA4NTkzLDUuNTUwOCAtMC41NzMzNjEsMi4xNTMzIC0yLjUzMzg2NCwzLjY5NTMgLTQuODMwMDc4LDMuNjk1MyBsIDAsMy4wNzQyIGMgMy41NTA3NTcsMCA2LjcxMDQ0MiwtMi40MDkzIDcuNjUwMzkxLC01LjkzOTQgMC45Mzk5NDksLTMuNTMwMSAtMC42MTg0NjMsLTcuMjc1NiAtMy43MTA5MzgsLTkuMDcyMyAtMS4xNTk2NzgsLTAuNjczNyAtMi40MzEwODcsLTEuMDIzMSAtMy43MDExNzEsLTEuMDYyNSB6Ig0KICAgICBpZD0icGF0aDQxMzgtMTIiIC8+DQogIDxwYXRoDQogICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiDQogICAgIHN0eWxlPSJjb2xvcjojMDAwMDAwO2ZvbnQtc3R5bGU6bm9ybWFsO2ZvbnQtdmFyaWFudDpub3JtYWw7Zm9udC13ZWlnaHQ6bm9ybWFsO2ZvbnQtc3RyZXRjaDpub3JtYWw7Zm9udC1zaXplOm1lZGl1bTtsaW5lLWhlaWdodDpub3JtYWw7Zm9udC1mYW1pbHk6c2Fucy1zZXJpZjt0ZXh0LWluZGVudDowO3RleHQtYWxpZ246c3RhcnQ7dGV4dC1kZWNvcmF0aW9uOm5vbmU7dGV4dC1kZWNvcmF0aW9uLWxpbmU6bm9uZTt0ZXh0LWRlY29yYXRpb24tc3R5bGU6c29saWQ7dGV4dC1kZWNvcmF0aW9uLWNvbG9yOiMwMDAwMDA7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO3dvcmQtc3BhY2luZzpub3JtYWw7dGV4dC10cmFuc2Zvcm06bm9uZTtkaXJlY3Rpb246bHRyO2Jsb2NrLXByb2dyZXNzaW9uOnRiO3dyaXRpbmctbW9kZTpsci10YjtiYXNlbGluZS1zaGlmdDpiYXNlbGluZTt0ZXh0LWFuY2hvcjpzdGFydDt3aGl0ZS1zcGFjZTpub3JtYWw7Y2xpcC1ydWxlOm5vbnplcm87ZGlzcGxheTppbmxpbmU7b3ZlcmZsb3c6dmlzaWJsZTt2aXNpYmlsaXR5OnZpc2libGU7b3BhY2l0eTowLjQ7aXNvbGF0aW9uOmF1dG87bWl4LWJsZW5kLW1vZGU6bm9ybWFsO2NvbG9yLWludGVycG9sYXRpb246c1JHQjtjb2xvci1pbnRlcnBvbGF0aW9uLWZpbHRlcnM6bGluZWFyUkdCO3NvbGlkLWNvbG9yOiMwMDAwMDA7c29saWQtb3BhY2l0eToxO2ZpbGw6IzRkNGQ0ZDtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6bm9uemVybztzdHJva2U6bm9uZTtzdHJva2Utd2lkdGg6Mi42NjE1Nzg2NjtzdHJva2UtbGluZWNhcDpidXR0O3N0cm9rZS1saW5lam9pbjptaXRlcjtzdHJva2UtbWl0ZXJsaW1pdDo0O3N0cm9rZS1kYXNoYXJyYXk6bm9uZTtzdHJva2UtZGFzaG9mZnNldDowO3N0cm9rZS1vcGFjaXR5OjE7Y29sb3ItcmVuZGVyaW5nOmF1dG87aW1hZ2UtcmVuZGVyaW5nOmF1dG87c2hhcGUtcmVuZGVyaW5nOmF1dG87dGV4dC1yZW5kZXJpbmc6YXV0bztlbmFibGUtYmFja2dyb3VuZDphY2N1bXVsYXRlIg0KICAgICBkPSJtIDU5LjcyMjY1NiwxMjMuOTYyOSBjIC0xLjI3MDA4NCwwLjAzOSAtMi41NDE0OTMsMC4zODg4IC0zLjcwMTE3MiwxLjA2MjUgLTMuMDkyNDc1LDEuNzk2NyAtNC42NTA4ODYsNS41NDIyIC0zLjcxMDkzNyw5LjA3MjMgMC45Mzk5NDksMy41MzAxIDQuMDk3NjgsNS45Mzk0IDcuNjQ4NDM3LDUuOTM5NCBsIDAsLTMuMDc0MiBjIC0yLjI5NjIxNCwwIC00LjI1NjcxNywtMS41NDIgLTQuODMwMDc4LC0zLjY5NTMgLTAuNTczMzYxLC0yLjE1MzMgMC4zMzc0MzIsLTQuNDA1NSAyLjMwODU5NCwtNS41NTA4IDEuOTM1NzMxLC0xLjEyNDYgNC4zODg2MywtMC44MTAyIDUuOTg2MzI2LDAuNzIwNyBsIC0xLjgwNjYzOCwxLjkwNjMgNy44MjgxMjgsMS45MDYyIC0yLjMyNDIyLC03LjcxMjkgLTEuNjI2OTYsMS43MTY4IGMgLTEuMjYzMzgsLTEuMjUzMSAtMi44NDg5MTcsLTIuMDA4OCAtNC41MDU4NTUsLTIuMjI4NSAtMC40MTg3NzgsLTAuMDU1IC0wLjg0MjI2MywtMC4wNzYgLTEuMjY1NjI1LC0wLjA2MiB6Ig0KICAgICBpZD0icGF0aDQxMzgtMS0zIiAvPg0KICA8cGF0aA0KICAgICBpZD0icGF0aDYxOTEiDQogICAgIGQ9Im0gMTAuNSwxMTYgMCwtMiAtMi40OTk5OTk2LDAgTCAxMiwxMDkgbCA0LDUgLTIuNSwwIDAsMiAtMywwIHoiDQogICAgIHN0eWxlPSJvcGFjaXR5OjAuODtmaWxsOiNmZmZmZmY7ZmlsbC1vcGFjaXR5OjE7c3Ryb2tlOm5vbmU7c3Ryb2tlLXdpZHRoOjEuOTY2O3N0cm9rZS1taXRlcmxpbWl0OjQ7c3Ryb2tlLWRhc2hhcnJheTpub25lIg0KICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIiAvPg0KICA8cGF0aA0KICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIg0KICAgICBzdHlsZT0ib3BhY2l0eTowLjg7ZmlsbDojZmZmZmZmO2ZpbGwtb3BhY2l0eToxO3N0cm9rZTpub25lO3N0cm9rZS13aWR0aDoxLjk2NjtzdHJva2UtbWl0ZXJsaW1pdDo0O3N0cm9rZS1kYXNoYXJyYXk6bm9uZSINCiAgICAgZD0ibSAxMC41LDEyOSAwLC0yIC0yLjQ5OTk5OTYsMCBMIDEyLDEyMiBsIDQsNSAtMi41LDAgMCwyIC0zLDAgeiINCiAgICAgaWQ9InBhdGg2MTkzIiAvPg0KICA8cGF0aA0KICAgICBpZD0icGF0aDYxOTUiDQogICAgIGQ9Im0gMTAuNSwxMzUgMCwyIC0yLjQ5OTk5OTYsMCBMIDEyLDE0MiBsIDQsLTUgLTIuNSwwIDAsLTIgLTMsMCB6Ig0KICAgICBzdHlsZT0ib3BhY2l0eTowLjg7ZmlsbDojZmZmZmZmO2ZpbGwtb3BhY2l0eToxO3N0cm9rZTpub25lO3N0cm9rZS13aWR0aDoxLjk2NjtzdHJva2UtbWl0ZXJsaW1pdDo0O3N0cm9rZS1kYXNoYXJyYXk6bm9uZSINCiAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIgLz4NCiAgPHBhdGgNCiAgICAgc29kaXBvZGk6dHlwZT0ic3RhciINCiAgICAgc3R5bGU9ImZpbGw6IzRkNGQ0ZDtmaWxsLW9wYWNpdHk6MC45MDE5NjA3ODtzdHJva2U6I2QzZDNkMztzdHJva2Utd2lkdGg6MDtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbGluZWpvaW46cm91bmQ7c3Ryb2tlLW1pdGVybGltaXQ6NDtzdHJva2UtZGFzaGFycmF5Om5vbmUiDQogICAgIGlkPSJwYXRoNDUwMCINCiAgICAgc29kaXBvZGk6c2lkZXM9IjMiDQogICAgIHNvZGlwb2RpOmN4PSIxMS41NTU4MSINCiAgICAgc29kaXBvZGk6Y3k9IjYwLjA3MzI0MiINCiAgICAgc29kaXBvZGk6cjE9IjUuMTExNjEwNCINCiAgICAgc29kaXBvZGk6cjI9IjIuNTU1ODA1MiINCiAgICAgc29kaXBvZGk6YXJnMT0iMCINCiAgICAgc29kaXBvZGk6YXJnMj0iMS4wNDcxOTc2Ig0KICAgICBpbmtzY2FwZTpmbGF0c2lkZWQ9ImZhbHNlIg0KICAgICBpbmtzY2FwZTpyb3VuZGVkPSIwIg0KICAgICBpbmtzY2FwZTpyYW5kb21pemVkPSIwIg0KICAgICBkPSJtIDE2LjY2NzQyLDYwLjA3MzI0MiAtMy44MzM3MDgsMi4yMTMzOTIgLTMuODMzNzA3MiwyLjIxMzM5MyAwLC00LjQyNjc4NSAwLC00LjQyNjc4NCAzLjgzMzcwODIsMi4yMTMzOTIgeiINCiAgICAgaW5rc2NhcGU6dHJhbnNmb3JtLWNlbnRlci14PSItMS4yNzc5MDI2IiAvPg0KICA8cGF0aA0KICAgICBpbmtzY2FwZTp0cmFuc2Zvcm0tY2VudGVyLXg9IjEuMjc3OTAyIg0KICAgICBkPSJtIC0zMS41MDAwMDQsNjAuMDczMjQyIC0zLjgzMzcwOCwyLjIxMzM5MiAtMy44MzM3MDcsMi4yMTMzOTMgMCwtNC40MjY3ODUgMCwtNC40MjY3ODQgMy44MzM3MDcsMi4yMTMzOTIgeiINCiAgICAgaW5rc2NhcGU6cmFuZG9taXplZD0iMCINCiAgICAgaW5rc2NhcGU6cm91bmRlZD0iMCINCiAgICAgaW5rc2NhcGU6ZmxhdHNpZGVkPSJmYWxzZSINCiAgICAgc29kaXBvZGk6YXJnMj0iMS4wNDcxOTc2Ig0KICAgICBzb2RpcG9kaTphcmcxPSIwIg0KICAgICBzb2RpcG9kaTpyMj0iMi41NTU4MDUyIg0KICAgICBzb2RpcG9kaTpyMT0iNS4xMTE2MTA0Ig0KICAgICBzb2RpcG9kaTpjeT0iNjAuMDczMjQyIg0KICAgICBzb2RpcG9kaTpjeD0iLTM2LjYxMTYxNCINCiAgICAgc29kaXBvZGk6c2lkZXM9IjMiDQogICAgIGlkPSJwYXRoNDUwMiINCiAgICAgc3R5bGU9ImZpbGw6IzRkNGQ0ZDtmaWxsLW9wYWNpdHk6MC45MDE5NjA3ODtzdHJva2U6I2QzZDNkMztzdHJva2Utd2lkdGg6MDtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbGluZWpvaW46cm91bmQ7c3Ryb2tlLW1pdGVybGltaXQ6NDtzdHJva2UtZGFzaGFycmF5Om5vbmUiDQogICAgIHNvZGlwb2RpOnR5cGU9InN0YXIiDQogICAgIHRyYW5zZm9ybT0ic2NhbGUoLTEsMSkiIC8+DQogIDxwYXRoDQogICAgIGQ9Im0gMTYuNjY3NDIsNjAuMDczMjEyIC0zLjgzMzcwOCwyLjIxMzM5MiAtMy44MzM3MDcyLDIuMjEzMzkyIDAsLTQuNDI2Nzg0IDAsLTQuNDI2Nzg1IDMuODMzNzA4MiwyLjIxMzM5MiB6Ig0KICAgICBpbmtzY2FwZTpyYW5kb21pemVkPSIwIg0KICAgICBpbmtzY2FwZTpyb3VuZGVkPSIwIg0KICAgICBpbmtzY2FwZTpmbGF0c2lkZWQ9ImZhbHNlIg0KICAgICBzb2RpcG9kaTphcmcyPSIxLjA0NzE5NzYiDQogICAgIHNvZGlwb2RpOmFyZzE9IjAiDQogICAgIHNvZGlwb2RpOnIyPSIyLjU1NTgwNTIiDQogICAgIHNvZGlwb2RpOnIxPSI1LjExMTYxMDQiDQogICAgIHNvZGlwb2RpOmN5PSI2MC4wNzMyMTIiDQogICAgIHNvZGlwb2RpOmN4PSIxMS41NTU4MSINCiAgICAgc29kaXBvZGk6c2lkZXM9IjMiDQogICAgIGlkPSJwYXRoNDUwNCINCiAgICAgc3R5bGU9ImZpbGw6IzRkNGQ0ZDtmaWxsLW9wYWNpdHk6MC45MDE5NjA3ODtzdHJva2U6I2QzZDNkMztzdHJva2Utd2lkdGg6MDtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbGluZWpvaW46cm91bmQ7c3Ryb2tlLW1pdGVybGltaXQ6NDtzdHJva2UtZGFzaGFycmF5Om5vbmUiDQogICAgIHNvZGlwb2RpOnR5cGU9InN0YXIiDQogICAgIHRyYW5zZm9ybT0ibWF0cml4KDAsMSwtMSwwLDcyLjAwNzQsNzEuNzg3NykiDQogICAgIGlua3NjYXBlOnRyYW5zZm9ybS1jZW50ZXIteT0iMS4yNzc5MDI5IiAvPg0KICA8cGF0aA0KICAgICBpbmtzY2FwZTp0cmFuc2Zvcm0tY2VudGVyLXk9Ii0xLjI3NzkwMjYiDQogICAgIHRyYW5zZm9ybT0ibWF0cml4KDAsLTEsLTEsMCw5Niw5NikiDQogICAgIHNvZGlwb2RpOnR5cGU9InN0YXIiDQogICAgIHN0eWxlPSJmaWxsOiM0ZDRkNGQ7ZmlsbC1vcGFjaXR5OjAuOTAxOTYwNzg7c3Ryb2tlOiNkM2QzZDM7c3Ryb2tlLXdpZHRoOjA7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kO3N0cm9rZS1taXRlcmxpbWl0OjQ7c3Ryb2tlLWRhc2hhcnJheTpub25lIg0KICAgICBpZD0icGF0aDQ1MDYiDQogICAgIHNvZGlwb2RpOnNpZGVzPSIzIg0KICAgICBzb2RpcG9kaTpjeD0iMTEuNTU1ODEiDQogICAgIHNvZGlwb2RpOmN5PSI2MC4wNzMyMTIiDQogICAgIHNvZGlwb2RpOnIxPSI1LjExMTYxMDQiDQogICAgIHNvZGlwb2RpOnIyPSIyLjU1NTgwNTIiDQogICAgIHNvZGlwb2RpOmFyZzE9IjAiDQogICAgIHNvZGlwb2RpOmFyZzI9IjEuMDQ3MTk3NiINCiAgICAgaW5rc2NhcGU6ZmxhdHNpZGVkPSJmYWxzZSINCiAgICAgaW5rc2NhcGU6cm91bmRlZD0iMCINCiAgICAgaW5rc2NhcGU6cmFuZG9taXplZD0iMCINCiAgICAgZD0ibSAxNi42Njc0Miw2MC4wNzMyMTIgLTMuODMzNzA4LDIuMjEzMzkyIC0zLjgzMzcwNzIsMi4yMTMzOTIgMCwtNC40MjY3ODQgMCwtNC40MjY3ODUgMy44MzM3MDgyLDIuMjEzMzkyIHoiIC8+DQogIDxwYXRoDQogICAgIHNvZGlwb2RpOm5vZGV0eXBlcz0iY2NjYyINCiAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCINCiAgICAgaWQ9InBhdGg0NjE1LTUiDQogICAgIGQ9Im0gMTcxLjgyNTc0LDY1LjE3NDE5MyAxNi4zNDg1NCwwIC04LjE3NDI3LC0xMy4zNDg0NTQgeiINCiAgICAgc3R5bGU9ImZpbGw6I2ZiYjkxNztmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6I2ZiYjkxNztzdHJva2Utd2lkdGg6MS42NTE2MTM5NTtzdHJva2UtbGluZWNhcDpidXR0O3N0cm9rZS1saW5lam9pbjpyb3VuZDtzdHJva2UtbWl0ZXJsaW1pdDo0O3N0cm9rZS1kYXNoYXJyYXk6bm9uZTtzdHJva2Utb3BhY2l0eToxIiAvPg0KICA8cGF0aA0KICAgICBzdHlsZT0ib3BhY2l0eToxO2ZpbGw6I2ZmZmZmZjtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6bm9uZTtzdHJva2Utd2lkdGg6MXB4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1vcGFjaXR5OjEiDQogICAgIGQ9Im0gMTc5LDU1IDAsNiAyLDAgMCwtNiINCiAgICAgaWQ9InBhdGg0MzAwIg0KICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIg0KICAgICBzb2RpcG9kaTpub2RldHlwZXM9ImNjY2MiIC8+DQogIDxwYXRoDQogICAgIHN0eWxlPSJvcGFjaXR5OjE7ZmlsbDojZmZmZmZmO2ZpbGwtb3BhY2l0eToxO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTpub25lO3N0cm9rZS13aWR0aDoxcHg7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2UtbGluZWpvaW46bWl0ZXI7c3Ryb2tlLW9wYWNpdHk6MSINCiAgICAgZD0ibSAxNzksNjIgMCwyIDIsMCAwLC0yIg0KICAgICBpZD0icGF0aDQzMDAtNiINCiAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCINCiAgICAgc29kaXBvZGk6bm9kZXR5cGVzPSJjY2NjIiAvPg0KPC9zdmc+DQo=\"","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.IView = void 0;\nvar IView;\n(function (IView) {\n IView[\"home\"] = \"home\";\n IView[\"created\"] = \"created\";\n IView[\"about\"] = \"about\";\n IView[\"dashboard\"] = \"dashboard\";\n IView[\"status\"] = \"status\";\n IView[\"sdk\"] = \"sdk\";\n})(IView = exports.IView || (exports.IView = {}));\n","\"use strict\";\nconst configs = {\n apiPath: 'https://getpantry.cloud/apiv1',\n docsPath: 'https://documenter.getpostman.com/view/3281832/SzmZeMLC',\n};\nmodule.exports = configs;\n","module.exports = require('./lib/axios');","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra\n*/\n// css base code, injected by the css-loader\nmodule.exports = function(useSourceMap) {\n\tvar list = [];\n\n\t// return the list of modules as css string\n\tlist.toString = function toString() {\n\t\treturn this.map(function (item) {\n\t\t\tvar content = cssWithMappingToString(item, useSourceMap);\n\t\t\tif(item[2]) {\n\t\t\t\treturn \"@media \" + item[2] + \"{\" + content + \"}\";\n\t\t\t} else {\n\t\t\t\treturn content;\n\t\t\t}\n\t\t}).join(\"\");\n\t};\n\n\t// import a list of modules into the list\n\tlist.i = function(modules, mediaQuery) {\n\t\tif(typeof modules === \"string\")\n\t\t\tmodules = [[null, modules, \"\"]];\n\t\tvar alreadyImportedModules = {};\n\t\tfor(var i = 0; i < this.length; i++) {\n\t\t\tvar id = this[i][0];\n\t\t\tif(typeof id === \"number\")\n\t\t\t\talreadyImportedModules[id] = true;\n\t\t}\n\t\tfor(i = 0; i < modules.length; i++) {\n\t\t\tvar item = modules[i];\n\t\t\t// skip already imported module\n\t\t\t// this implementation is not 100% perfect for weird media query combinations\n\t\t\t// when a module is imported multiple times with different media queries.\n\t\t\t// I hope this will never occur (Hey this way we have smaller bundles)\n\t\t\tif(typeof item[0] !== \"number\" || !alreadyImportedModules[item[0]]) {\n\t\t\t\tif(mediaQuery && !item[2]) {\n\t\t\t\t\titem[2] = mediaQuery;\n\t\t\t\t} else if(mediaQuery) {\n\t\t\t\t\titem[2] = \"(\" + item[2] + \") and (\" + mediaQuery + \")\";\n\t\t\t\t}\n\t\t\t\tlist.push(item);\n\t\t\t}\n\t\t}\n\t};\n\treturn list;\n};\n\nfunction cssWithMappingToString(item, useSourceMap) {\n\tvar content = item[1] || '';\n\tvar cssMapping = item[3];\n\tif (!cssMapping) {\n\t\treturn content;\n\t}\n\n\tif (useSourceMap && typeof btoa === 'function') {\n\t\tvar sourceMapping = toComment(cssMapping);\n\t\tvar sourceURLs = cssMapping.sources.map(function (source) {\n\t\t\treturn '/*# sourceURL=' + cssMapping.sourceRoot + source + ' */'\n\t\t});\n\n\t\treturn [content].concat(sourceURLs).concat([sourceMapping]).join('\\n');\n\t}\n\n\treturn [content].join('\\n');\n}\n\n// Adapted from convert-source-map (MIT)\nfunction toComment(sourceMap) {\n\t// eslint-disable-next-line no-undef\n\tvar base64 = btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap))));\n\tvar data = 'sourceMappingURL=data:application/json;charset=utf-8;base64,' + base64;\n\n\treturn '/*# ' + data + ' */';\n}\n","/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra\n*/\n\nvar stylesInDom = {};\n\nvar\tmemoize = function (fn) {\n\tvar memo;\n\n\treturn function () {\n\t\tif (typeof memo === \"undefined\") memo = fn.apply(this, arguments);\n\t\treturn memo;\n\t};\n};\n\nvar isOldIE = memoize(function () {\n\t// Test for IE <= 9 as proposed by Browserhacks\n\t// @see http://browserhacks.com/#hack-e71d8692f65334173fee715c222cb805\n\t// Tests for existence of standard globals is to allow style-loader\n\t// to operate correctly into non-standard environments\n\t// @see https://github.com/webpack-contrib/style-loader/issues/177\n\treturn window && document && document.all && !window.atob;\n});\n\nvar getTarget = function (target) {\n return document.querySelector(target);\n};\n\nvar getElement = (function (fn) {\n\tvar memo = {};\n\n\treturn function(target) {\n // If passing function in options, then use it for resolve \"head\" element.\n // Useful for Shadow Root style i.e\n // {\n // insertInto: function () { return document.querySelector(\"#foo\").shadowRoot }\n // }\n if (typeof target === 'function') {\n return target();\n }\n if (typeof memo[target] === \"undefined\") {\n\t\t\tvar styleTarget = getTarget.call(this, target);\n\t\t\t// Special case to return head of iframe instead of iframe itself\n\t\t\tif (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) {\n\t\t\t\ttry {\n\t\t\t\t\t// This will throw an exception if access to iframe is blocked\n\t\t\t\t\t// due to cross-origin restrictions\n\t\t\t\t\tstyleTarget = styleTarget.contentDocument.head;\n\t\t\t\t} catch(e) {\n\t\t\t\t\tstyleTarget = null;\n\t\t\t\t}\n\t\t\t}\n\t\t\tmemo[target] = styleTarget;\n\t\t}\n\t\treturn memo[target]\n\t};\n})();\n\nvar singleton = null;\nvar\tsingletonCounter = 0;\nvar\tstylesInsertedAtTop = [];\n\nvar\tfixUrls = require(\"./urls\");\n\nmodule.exports = function(list, options) {\n\tif (typeof DEBUG !== \"undefined\" && DEBUG) {\n\t\tif (typeof document !== \"object\") throw new Error(\"The style-loader cannot be used in a non-browser environment\");\n\t}\n\n\toptions = options || {};\n\n\toptions.attrs = typeof options.attrs === \"object\" ? options.attrs : {};\n\n\t// Force single-tag solution on IE6-9, which has a hard limit on the # of \r\n","import { render, staticRenderFns } from \"./vue-json-editor.vue?vue&type=template&id=551a97e0&scoped=true&\"\nimport script from \"./vue-json-editor.vue?vue&type=script&lang=js&\"\nexport * from \"./vue-json-editor.vue?vue&type=script&lang=js&\"\nimport style0 from \"./vue-json-editor.vue?vue&type=style&index=0&id=551a97e0&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"551a97e0\",\n null\n \n)\n\n/* hot reload */\nif (module.hot) {\n var api = require(\"/Users/rohanlikhite/Git/Pantry/node_modules/vue-hot-reload-api/dist/index.js\")\n api.install(require('vue'))\n if (api.compatible) {\n module.hot.accept()\n if (!api.isRecorded('551a97e0')) {\n api.createRecord('551a97e0', component.options)\n } else {\n api.reload('551a97e0', component.options)\n }\n module.hot.accept(\"./vue-json-editor.vue?vue&type=template&id=551a97e0&scoped=true&\", function () {\n api.rerender('551a97e0', {\n render: render,\n staticRenderFns: staticRenderFns\n })\n })\n }\n}\ncomponent.options.__file = \"node_modules/vue-json-editor/vue-json-editor.vue\"\nexport default component.exports","/* globals __VUE_SSR_CONTEXT__ */\n\n// IMPORTANT: Do NOT use ES2015 features in this file (except for modules).\n// This module is a runtime utility for cleaner component module output and will\n// be included in the final webpack user bundle.\n\nexport default function normalizeComponent (\n scriptExports,\n render,\n staticRenderFns,\n functionalTemplate,\n injectStyles,\n scopeId,\n moduleIdentifier, /* server only */\n shadowMode /* vue-cli only */\n) {\n // Vue.extend constructor export interop\n var options = typeof scriptExports === 'function'\n ? scriptExports.options\n : scriptExports\n\n // render functions\n if (render) {\n options.render = render\n options.staticRenderFns = staticRenderFns\n options._compiled = true\n }\n\n // functional template\n if (functionalTemplate) {\n options.functional = true\n }\n\n // scopedId\n if (scopeId) {\n options._scopeId = 'data-v-' + scopeId\n }\n\n var hook\n if (moduleIdentifier) { // server build\n hook = function (context) {\n // 2.3 injection\n context =\n context || // cached call\n (this.$vnode && this.$vnode.ssrContext) || // stateful\n (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n // 2.2 with runInNewContext: true\n if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n context = __VUE_SSR_CONTEXT__\n }\n // inject component styles\n if (injectStyles) {\n injectStyles.call(this, context)\n }\n // register component module identifier for async chunk inferrence\n if (context && context._registeredComponents) {\n context._registeredComponents.add(moduleIdentifier)\n }\n }\n // used by ssr in case component is cached and beforeCreate\n // never gets called\n options._ssrRegister = hook\n } else if (injectStyles) {\n hook = shadowMode\n ? function () {\n injectStyles.call(\n this,\n (options.functional ? this.parent : this).$root.$options.shadowRoot\n )\n }\n : injectStyles\n }\n\n if (hook) {\n if (options.functional) {\n // for template-only hot-reload because in that case the render fn doesn't\n // go through the normalizer\n options._injectStyles = hook\n // register for functional component in vue file\n var originalRender = options.render\n options.render = function renderWithStyleInjection (h, context) {\n hook.call(context)\n return originalRender(h, context)\n }\n } else {\n // inject component registration as beforeCreate hook\n var existing = options.beforeCreate\n options.beforeCreate = existing\n ? [].concat(existing, hook)\n : [hook]\n }\n }\n\n return {\n exports: scriptExports,\n options: options\n }\n}\n","/*!\r\n * jsoneditor.js\r\n *\r\n * @brief\r\n * JSONEditor is a web-based tool to view, edit, format, and validate JSON.\r\n * It has various modes such as a tree editor, a code editor, and a plain text\r\n * editor.\r\n *\r\n * Supported browsers: Chrome, Firefox, Safari, Opera, Internet Explorer 8+\r\n *\r\n * @license\r\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not\r\n * use this file except in compliance with the License. You may obtain a copy\r\n * of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\r\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the\r\n * License for the specific language governing permissions and limitations under\r\n * the License.\r\n *\r\n * Copyright (c) 2011-2017 Jos de Jong, http://jsoneditoronline.org\r\n *\r\n * @author Jos de Jong, \r\n * @version 5.5.11\r\n * @date 2017-01-06\r\n */\r\n(function webpackUniversalModuleDefinition(root, factory) {\r\n\tif(typeof exports === 'object' && typeof module === 'object')\r\n\t\tmodule.exports = factory();\r\n\telse if(typeof define === 'function' && define.amd)\r\n\t\tdefine([], factory);\r\n\telse if(typeof exports === 'object')\r\n\t\texports[\"JSONEditor\"] = factory();\r\n\telse\r\n\t\troot[\"JSONEditor\"] = factory();\r\n})(this, function() {\r\nreturn /******/ (function(modules) { // webpackBootstrap\r\n/******/ \t// The module cache\r\n/******/ \tvar installedModules = {};\r\n\r\n/******/ \t// The require function\r\n/******/ \tfunction __webpack_require__(moduleId) {\r\n\r\n/******/ \t\t// Check if module is in cache\r\n/******/ \t\tif(installedModules[moduleId])\r\n/******/ \t\t\treturn installedModules[moduleId].exports;\r\n\r\n/******/ \t\t// Create a new module (and put it into the cache)\r\n/******/ \t\tvar module = installedModules[moduleId] = {\r\n/******/ \t\t\texports: {},\r\n/******/ \t\t\tid: moduleId,\r\n/******/ \t\t\tloaded: false\r\n/******/ \t\t};\r\n\r\n/******/ \t\t// Execute the module function\r\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\r\n\r\n/******/ \t\t// Flag the module as loaded\r\n/******/ \t\tmodule.loaded = true;\r\n\r\n/******/ \t\t// Return the exports of the module\r\n/******/ \t\treturn module.exports;\r\n/******/ \t}\r\n\r\n\r\n/******/ \t// expose the modules object (__webpack_modules__)\r\n/******/ \t__webpack_require__.m = modules;\r\n\r\n/******/ \t// expose the module cache\r\n/******/ \t__webpack_require__.c = installedModules;\r\n\r\n/******/ \t// __webpack_public_path__\r\n/******/ \t__webpack_require__.p = \"\";\r\n\r\n/******/ \t// Load entry module and return exports\r\n/******/ \treturn __webpack_require__(0);\r\n/******/ })\r\n/************************************************************************/\r\n/******/ ([\r\n/* 0 */\r\n/***/ function(module, exports, __webpack_require__) {\r\n\r\n\t'use strict';\r\n\r\n\tvar Ajv;\r\n\ttry {\r\n\t Ajv = __webpack_require__(1);\r\n\t}\r\n\tcatch (err) {\r\n\t // no problem... when we need Ajv we will throw a neat exception\r\n\t}\r\n\r\n\tvar treemode = __webpack_require__(51);\r\n\tvar textmode = __webpack_require__(62);\r\n\tvar util = __webpack_require__(54);\r\n\r\n\t/**\r\n\t * @constructor JSONEditor\r\n\t * @param {Element} container Container element\r\n\t * @param {Object} [options] Object with options. available options:\r\n\t * {String} mode Editor mode. Available values:\r\n\t * 'tree' (default), 'view',\r\n\t * 'form', 'text', and 'code'.\r\n\t * {function} onChange Callback method, triggered\r\n\t * on change of contents\r\n\t * {function} onError Callback method, triggered\r\n\t * when an error occurs\r\n\t * {Boolean} search Enable search box.\r\n\t * True by default\r\n\t * Only applicable for modes\r\n\t * 'tree', 'view', and 'form'\r\n\t * {Boolean} history Enable history (undo/redo).\r\n\t * True by default\r\n\t * Only applicable for modes\r\n\t * 'tree', 'view', and 'form'\r\n\t * {String} name Field name for the root node.\r\n\t * Only applicable for modes\r\n\t * 'tree', 'view', and 'form'\r\n\t * {Number} indentation Number of indentation\r\n\t * spaces. 4 by default.\r\n\t * Only applicable for\r\n\t * modes 'text' and 'code'\r\n\t * {boolean} escapeUnicode If true, unicode\r\n\t * characters are escaped.\r\n\t * false by default.\r\n\t * {boolean} sortObjectKeys If true, object keys are\r\n\t * sorted before display.\r\n\t * false by default.\r\n\t * @param {Object | undefined} json JSON object\r\n\t */\r\n\tfunction JSONEditor (container, options, json) {\r\n\t if (!(this instanceof JSONEditor)) {\r\n\t throw new Error('JSONEditor constructor called without \"new\".');\r\n\t }\r\n\r\n\t // check for unsupported browser (IE8 and older)\r\n\t var ieVersion = util.getInternetExplorerVersion();\r\n\t if (ieVersion != -1 && ieVersion < 9) {\r\n\t throw new Error('Unsupported browser, IE9 or newer required. ' +\r\n\t 'Please install the newest version of your browser.');\r\n\t }\r\n\r\n\t if (options) {\r\n\t // check for deprecated options\r\n\t if (options.error) {\r\n\t console.warn('Option \"error\" has been renamed to \"onError\"');\r\n\t options.onError = options.error;\r\n\t delete options.error;\r\n\t }\r\n\t if (options.change) {\r\n\t console.warn('Option \"change\" has been renamed to \"onChange\"');\r\n\t options.onChange = options.change;\r\n\t delete options.change;\r\n\t }\r\n\t if (options.editable) {\r\n\t console.warn('Option \"editable\" has been renamed to \"onEditable\"');\r\n\t options.onEditable = options.editable;\r\n\t delete options.editable;\r\n\t }\r\n\r\n\t // validate options\r\n\t if (options) {\r\n\t var VALID_OPTIONS = [\r\n\t 'ace', 'theme',\r\n\t 'ajv', 'schema',\r\n\t 'onChange', 'onEditable', 'onError', 'onModeChange',\r\n\t 'escapeUnicode', 'history', 'search', 'mode', 'modes', 'name', 'indentation', 'sortObjectKeys'\r\n\t ];\r\n\r\n\t Object.keys(options).forEach(function (option) {\r\n\t if (VALID_OPTIONS.indexOf(option) === -1) {\r\n\t console.warn('Unknown option \"' + option + '\". This option will be ignored');\r\n\t }\r\n\t });\r\n\t }\r\n\t }\r\n\r\n\t if (arguments.length) {\r\n\t this._create(container, options, json);\r\n\t }\r\n\t}\r\n\r\n\t/**\r\n\t * Configuration for all registered modes. Example:\r\n\t * {\r\n\t * tree: {\r\n\t * mixin: TreeEditor,\r\n\t * data: 'json'\r\n\t * },\r\n\t * text: {\r\n\t * mixin: TextEditor,\r\n\t * data: 'text'\r\n\t * }\r\n\t * }\r\n\t *\r\n\t * @type { Object. }\r\n\t */\r\n\tJSONEditor.modes = {};\r\n\r\n\t// debounce interval for JSON schema vaidation in milliseconds\r\n\tJSONEditor.prototype.DEBOUNCE_INTERVAL = 150;\r\n\r\n\t/**\r\n\t * Create the JSONEditor\r\n\t * @param {Element} container Container element\r\n\t * @param {Object} [options] See description in constructor\r\n\t * @param {Object | undefined} json JSON object\r\n\t * @private\r\n\t */\r\n\tJSONEditor.prototype._create = function (container, options, json) {\r\n\t this.container = container;\r\n\t this.options = options || {};\r\n\t this.json = json || {};\r\n\r\n\t var mode = this.options.mode || 'tree';\r\n\t this.setMode(mode);\r\n\t};\r\n\r\n\t/**\r\n\t * Destroy the editor. Clean up DOM, event listeners, and web workers.\r\n\t */\r\n\tJSONEditor.prototype.destroy = function () {};\r\n\r\n\t/**\r\n\t * Set JSON object in editor\r\n\t * @param {Object | undefined} json JSON data\r\n\t */\r\n\tJSONEditor.prototype.set = function (json) {\r\n\t this.json = json;\r\n\t};\r\n\r\n\t/**\r\n\t * Get JSON from the editor\r\n\t * @returns {Object} json\r\n\t */\r\n\tJSONEditor.prototype.get = function () {\r\n\t return this.json;\r\n\t};\r\n\r\n\t/**\r\n\t * Set string containing JSON for the editor\r\n\t * @param {String | undefined} jsonText\r\n\t */\r\n\tJSONEditor.prototype.setText = function (jsonText) {\r\n\t this.json = util.parse(jsonText);\r\n\t};\r\n\r\n\t/**\r\n\t * Get stringified JSON contents from the editor\r\n\t * @returns {String} jsonText\r\n\t */\r\n\tJSONEditor.prototype.getText = function () {\r\n\t return JSON.stringify(this.json);\r\n\t};\r\n\r\n\t/**\r\n\t * Set a field name for the root node.\r\n\t * @param {String | undefined} name\r\n\t */\r\n\tJSONEditor.prototype.setName = function (name) {\r\n\t if (!this.options) {\r\n\t this.options = {};\r\n\t }\r\n\t this.options.name = name;\r\n\t};\r\n\r\n\t/**\r\n\t * Get the field name for the root node.\r\n\t * @return {String | undefined} name\r\n\t */\r\n\tJSONEditor.prototype.getName = function () {\r\n\t return this.options && this.options.name;\r\n\t};\r\n\r\n\t/**\r\n\t * Change the mode of the editor.\r\n\t * JSONEditor will be extended with all methods needed for the chosen mode.\r\n\t * @param {String} mode Available modes: 'tree' (default), 'view', 'form',\r\n\t * 'text', and 'code'.\r\n\t */\r\n\tJSONEditor.prototype.setMode = function (mode) {\r\n\t var container = this.container;\r\n\t var options = util.extend({}, this.options);\r\n\t var oldMode = options.mode;\r\n\t var data;\r\n\t var name;\r\n\r\n\t options.mode = mode;\r\n\t var config = JSONEditor.modes[mode];\r\n\t if (config) {\r\n\t try {\r\n\t var asText = (config.data == 'text');\r\n\t name = this.getName();\r\n\t data = this[asText ? 'getText' : 'get'](); // get text or json\r\n\r\n\t this.destroy();\r\n\t util.clear(this);\r\n\t util.extend(this, config.mixin);\r\n\t this.create(container, options);\r\n\r\n\t this.setName(name);\r\n\t this[asText ? 'setText' : 'set'](data); // set text or json\r\n\r\n\t if (typeof config.load === 'function') {\r\n\t try {\r\n\t config.load.call(this);\r\n\t }\r\n\t catch (err) {\r\n\t console.error(err);\r\n\t }\r\n\t }\r\n\r\n\t if (typeof options.onModeChange === 'function' && mode !== oldMode) {\r\n\t try {\r\n\t options.onModeChange(mode, oldMode);\r\n\t }\r\n\t catch (err) {\r\n\t console.error(err);\r\n\t }\r\n\t }\r\n\t }\r\n\t catch (err) {\r\n\t this._onError(err);\r\n\t }\r\n\t }\r\n\t else {\r\n\t throw new Error('Unknown mode \"' + options.mode + '\"');\r\n\t }\r\n\t};\r\n\r\n\t/**\r\n\t * Get the current mode\r\n\t * @return {string}\r\n\t */\r\n\tJSONEditor.prototype.getMode = function () {\r\n\t return this.options.mode;\r\n\t};\r\n\r\n\t/**\r\n\t * Throw an error. If an error callback is configured in options.error, this\r\n\t * callback will be invoked. Else, a regular error is thrown.\r\n\t * @param {Error} err\r\n\t * @private\r\n\t */\r\n\tJSONEditor.prototype._onError = function(err) {\r\n\t if (this.options && typeof this.options.onError === 'function') {\r\n\t this.options.onError(err);\r\n\t }\r\n\t else {\r\n\t throw err;\r\n\t }\r\n\t};\r\n\r\n\t/**\r\n\t * Set a JSON schema for validation of the JSON object.\r\n\t * To remove the schema, call JSONEditor.setSchema(null)\r\n\t * @param {Object | null} schema\r\n\t */\r\n\tJSONEditor.prototype.setSchema = function (schema) {\r\n\t // compile a JSON schema validator if a JSON schema is provided\r\n\t if (schema) {\r\n\t var ajv;\r\n\t try {\r\n\t // grab ajv from options if provided, else create a new instance\r\n\t ajv = this.options.ajv || Ajv({ allErrors: true, verbose: true });\r\n\r\n\t }\r\n\t catch (err) {\r\n\t console.warn('Failed to create an instance of Ajv, JSON Schema validation is not available. Please use a JSONEditor bundle including Ajv, or pass an instance of Ajv as via the configuration option `ajv`.');\r\n\t }\r\n\r\n\t if (ajv) {\r\n\t this.validateSchema = ajv.compile(schema);\r\n\r\n\t // add schema to the options, so that when switching to an other mode,\r\n\t // the set schema is not lost\r\n\t this.options.schema = schema;\r\n\r\n\t // validate now\r\n\t this.validate();\r\n\t }\r\n\r\n\t this.refresh(); // update DOM\r\n\t }\r\n\t else {\r\n\t // remove current schema\r\n\t this.validateSchema = null;\r\n\t this.options.schema = null;\r\n\t this.validate(); // to clear current error messages\r\n\t this.refresh(); // update DOM\r\n\t }\r\n\t};\r\n\r\n\t/**\r\n\t * Validate current JSON object against the configured JSON schema\r\n\t * Throws an exception when no JSON schema is configured\r\n\t */\r\n\tJSONEditor.prototype.validate = function () {\r\n\t // must be implemented by treemode and textmode\r\n\t};\r\n\r\n\t/**\r\n\t * Refresh the rendered contents\r\n\t */\r\n\tJSONEditor.prototype.refresh = function () {\r\n\t // can be implemented by treemode and textmode\r\n\t};\r\n\r\n\t/**\r\n\t * Register a plugin with one ore multiple modes for the JSON Editor.\r\n\t *\r\n\t * A mode is described as an object with properties:\r\n\t *\r\n\t * - `mode: String` The name of the mode.\r\n\t * - `mixin: Object` An object containing the mixin functions which\r\n\t * will be added to the JSONEditor. Must contain functions\r\n\t * create, get, getText, set, and setText. May have\r\n\t * additional functions.\r\n\t * When the JSONEditor switches to a mixin, all mixin\r\n\t * functions are added to the JSONEditor, and then\r\n\t * the function `create(container, options)` is executed.\r\n\t * - `data: 'text' | 'json'` The type of data that will be used to load the mixin.\r\n\t * - `[load: function]` An optional function called after the mixin\r\n\t * has been loaded.\r\n\t *\r\n\t * @param {Object | Array} mode A mode object or an array with multiple mode objects.\r\n\t */\r\n\tJSONEditor.registerMode = function (mode) {\r\n\t var i, prop;\r\n\r\n\t if (util.isArray(mode)) {\r\n\t // multiple modes\r\n\t for (i = 0; i < mode.length; i++) {\r\n\t JSONEditor.registerMode(mode[i]);\r\n\t }\r\n\t }\r\n\t else {\r\n\t // validate the new mode\r\n\t if (!('mode' in mode)) throw new Error('Property \"mode\" missing');\r\n\t if (!('mixin' in mode)) throw new Error('Property \"mixin\" missing');\r\n\t if (!('data' in mode)) throw new Error('Property \"data\" missing');\r\n\t var name = mode.mode;\r\n\t if (name in JSONEditor.modes) {\r\n\t throw new Error('Mode \"' + name + '\" already registered');\r\n\t }\r\n\r\n\t // validate the mixin\r\n\t if (typeof mode.mixin.create !== 'function') {\r\n\t throw new Error('Required function \"create\" missing on mixin');\r\n\t }\r\n\t var reserved = ['setMode', 'registerMode', 'modes'];\r\n\t for (i = 0; i < reserved.length; i++) {\r\n\t prop = reserved[i];\r\n\t if (prop in mode.mixin) {\r\n\t throw new Error('Reserved property \"' + prop + '\" not allowed in mixin');\r\n\t }\r\n\t }\r\n\r\n\t JSONEditor.modes[name] = mode;\r\n\t }\r\n\t};\r\n\r\n\t// register tree and text modes\r\n\tJSONEditor.registerMode(treemode);\r\n\tJSONEditor.registerMode(textmode);\r\n\r\n\tmodule.exports = JSONEditor;\r\n\r\n\r\n/***/ },\r\n/* 1 */\r\n/***/ function(module, exports, __webpack_require__) {\r\n\r\n\t'use strict';\r\n\r\n\tvar compileSchema = __webpack_require__(2)\r\n\t , resolve = __webpack_require__(3)\r\n\t , Cache = __webpack_require__(21)\r\n\t , SchemaObject = __webpack_require__(16)\r\n\t , stableStringify = __webpack_require__(12)\r\n\t , formats = __webpack_require__(22)\r\n\t , rules = __webpack_require__(23)\r\n\t , v5 = __webpack_require__(43)\r\n\t , util = __webpack_require__(11)\r\n\t , async = __webpack_require__(17)\r\n\t , co = __webpack_require__(19);\r\n\r\n\tmodule.exports = Ajv;\r\n\r\n\tAjv.prototype.compileAsync = async.compile;\r\n\tAjv.prototype.addKeyword = __webpack_require__(49);\r\n\tAjv.ValidationError = __webpack_require__(20);\r\n\r\n\tvar META_SCHEMA_ID = 'http://json-schema.org/draft-04/schema';\r\n\tvar SCHEMA_URI_FORMAT = /^(?:(?:[a-z][a-z0-9+-.]*:)?\\/\\/)?[^\\s]*$/i;\r\n\tfunction SCHEMA_URI_FORMAT_FUNC(str) {\r\n\t return SCHEMA_URI_FORMAT.test(str);\r\n\t}\r\n\r\n\tvar META_IGNORE_OPTIONS = [ 'removeAdditional', 'useDefaults', 'coerceTypes' ];\r\n\r\n\t/**\r\n\t * Creates validator instance.\r\n\t * Usage: `Ajv(opts)`\r\n\t * @param {Object} opts optional options\r\n\t * @return {Object} ajv instance\r\n\t */\r\n\tfunction Ajv(opts) {\r\n\t if (!(this instanceof Ajv)) return new Ajv(opts);\r\n\t var self = this;\r\n\r\n\t opts = this._opts = util.copy(opts) || {};\r\n\t this._schemas = {};\r\n\t this._refs = {};\r\n\t this._formats = formats(opts.format);\r\n\t this._cache = opts.cache || new Cache;\r\n\t this._loadingSchemas = {};\r\n\t this.RULES = rules();\r\n\r\n\t // this is done on purpose, so that methods are bound to the instance\r\n\t // (without using bind) so that they can be used without the instance\r\n\t this.validate = validate;\r\n\t this.compile = compile;\r\n\t this.addSchema = addSchema;\r\n\t this.addMetaSchema = addMetaSchema;\r\n\t this.validateSchema = validateSchema;\r\n\t this.getSchema = getSchema;\r\n\t this.removeSchema = removeSchema;\r\n\t this.addFormat = addFormat;\r\n\t this.errorsText = errorsText;\r\n\r\n\t this._addSchema = _addSchema;\r\n\t this._compile = _compile;\r\n\r\n\t opts.loopRequired = opts.loopRequired || Infinity;\r\n\t if (opts.async || opts.transpile) async.setup(opts);\r\n\t if (opts.beautify === true) opts.beautify = { indent_size: 2 };\r\n\t if (opts.errorDataPath == 'property') opts._errorDataPathProperty = true;\r\n\t this._metaOpts = getMetaSchemaOptions();\r\n\r\n\t addInitialSchemas();\r\n\t if (opts.formats) addInitialFormats();\r\n\t if (opts.v5) v5.enable(this);\r\n\t if (typeof opts.meta == 'object') addMetaSchema(opts.meta);\r\n\r\n\r\n\t /**\r\n\t * Validate data using schema\r\n\t * Schema will be compiled and cached (using serialized JSON as key. [json-stable-stringify](https://github.com/substack/json-stable-stringify) is used to serialize.\r\n\t * @param {String|Object} schemaKeyRef key, ref or schema object\r\n\t * @param {Any} data to be validated\r\n\t * @return {Boolean} validation result. Errors from the last validation will be available in `ajv.errors` (and also in compiled schema: `schema.errors`).\r\n\t */\r\n\t function validate(schemaKeyRef, data) {\r\n\t var v;\r\n\t if (typeof schemaKeyRef == 'string') {\r\n\t v = getSchema(schemaKeyRef);\r\n\t if (!v) throw new Error('no schema with key or ref \"' + schemaKeyRef + '\"');\r\n\t } else {\r\n\t var schemaObj = _addSchema(schemaKeyRef);\r\n\t v = schemaObj.validate || _compile(schemaObj);\r\n\t }\r\n\r\n\t var valid = v(data);\r\n\t if (v.async) return self._opts.async == '*' ? co(valid) : valid;\r\n\t self.errors = v.errors;\r\n\t return valid;\r\n\t }\r\n\r\n\r\n\t /**\r\n\t * Create validating function for passed schema.\r\n\t * @param {Object} schema schema object\r\n\t * @return {Function} validating function\r\n\t */\r\n\t function compile(schema) {\r\n\t var schemaObj = _addSchema(schema);\r\n\t return schemaObj.validate || _compile(schemaObj);\r\n\t }\r\n\r\n\r\n\t /**\r\n\t * Adds schema to the instance.\r\n\t * @param {Object|Array} schema schema or array of schemas. If array is passed, `key` and other parameters will be ignored.\r\n\t * @param {String} key Optional schema key. Can be passed to `validate` method instead of schema object or id/ref. One schema per instance can have empty `id` and `key`.\r\n\t * @param {Boolean} _skipValidation true to skip schema validation. Used internally, option validateSchema should be used instead.\r\n\t * @param {Boolean} _meta true if schema is a meta-schema. Used internally, addMetaSchema should be used instead.\r\n\t */\r\n\t function addSchema(schema, key, _skipValidation, _meta) {\r\n\t if (Array.isArray(schema)){\r\n\t for (var i=0; i} errors optional array of validation errors, if not passed errors from the instance are used.\r\n\t * @param {Object} options optional options with properties `separator` and `dataVar`.\r\n\t * @return {String} human readable string with all errors descriptions\r\n\t */\r\n\t function errorsText(errors, options) {\r\n\t errors = errors || self.errors;\r\n\t if (!errors) return 'No errors';\r\n\t options = options || {};\r\n\t var separator = options.separator === undefined ? ', ' : options.separator;\r\n\t var dataVar = options.dataVar === undefined ? 'data' : options.dataVar;\r\n\r\n\t var text = '';\r\n\t for (var i=0; i', '\"', '`', ' ', '\\r', '\\n', '\\t'],\r\n\r\n\t // RFC 2396: characters not allowed for various reasons.\r\n\t unwise = ['{', '}', '|', '\\\\', '^', '`'].concat(delims),\r\n\r\n\t // Allowed by RFCs, but cause of XSS attacks. Always escape these.\r\n\t autoEscape = ['\\''].concat(unwise),\r\n\t // Characters that are never ever allowed in a hostname.\r\n\t // Note that any invalid chars are also handled, but these\r\n\t // are the ones that are *expected* to be seen, so we fast-path\r\n\t // them.\r\n\t nonHostChars = ['%', '/', '?', ';', '#'].concat(autoEscape),\r\n\t hostEndingChars = ['/', '?', '#'],\r\n\t hostnameMaxLen = 255,\r\n\t hostnamePartPattern = /^[a-z0-9A-Z_-]{0,63}$/,\r\n\t hostnamePartStart = /^([a-z0-9A-Z_-]{0,63})(.*)$/,\r\n\t // protocols that can allow \"unsafe\" and \"unwise\" chars.\r\n\t unsafeProtocol = {\r\n\t 'javascript': true,\r\n\t 'javascript:': true\r\n\t },\r\n\t // protocols that never have a hostname.\r\n\t hostlessProtocol = {\r\n\t 'javascript': true,\r\n\t 'javascript:': true\r\n\t },\r\n\t // protocols that always contain a // bit.\r\n\t slashedProtocol = {\r\n\t 'http': true,\r\n\t 'https': true,\r\n\t 'ftp': true,\r\n\t 'gopher': true,\r\n\t 'file': true,\r\n\t 'http:': true,\r\n\t 'https:': true,\r\n\t 'ftp:': true,\r\n\t 'gopher:': true,\r\n\t 'file:': true\r\n\t },\r\n\t querystring = __webpack_require__(7);\r\n\r\n\tfunction urlParse(url, parseQueryString, slashesDenoteHost) {\r\n\t if (url && isObject(url) && url instanceof Url) return url;\r\n\r\n\t var u = new Url;\r\n\t u.parse(url, parseQueryString, slashesDenoteHost);\r\n\t return u;\r\n\t}\r\n\r\n\tUrl.prototype.parse = function(url, parseQueryString, slashesDenoteHost) {\r\n\t if (!isString(url)) {\r\n\t throw new TypeError(\"Parameter 'url' must be a string, not \" + typeof url);\r\n\t }\r\n\r\n\t var rest = url;\r\n\r\n\t // trim before proceeding.\r\n\t // This is to support parse stuff like \" http://foo.com \\n\"\r\n\t rest = rest.trim();\r\n\r\n\t var proto = protocolPattern.exec(rest);\r\n\t if (proto) {\r\n\t proto = proto[0];\r\n\t var lowerProto = proto.toLowerCase();\r\n\t this.protocol = lowerProto;\r\n\t rest = rest.substr(proto.length);\r\n\t }\r\n\r\n\t // figure out if it's got a host\r\n\t // user@server is *always* interpreted as a hostname, and url\r\n\t // resolution will treat //foo/bar as host=foo,path=bar because that's\r\n\t // how the browser resolves relative URLs.\r\n\t if (slashesDenoteHost || proto || rest.match(/^\\/\\/[^@\\/]+@[^@\\/]+/)) {\r\n\t var slashes = rest.substr(0, 2) === '//';\r\n\t if (slashes && !(proto && hostlessProtocol[proto])) {\r\n\t rest = rest.substr(2);\r\n\t this.slashes = true;\r\n\t }\r\n\t }\r\n\r\n\t if (!hostlessProtocol[proto] &&\r\n\t (slashes || (proto && !slashedProtocol[proto]))) {\r\n\r\n\t // there's a hostname.\r\n\t // the first instance of /, ?, ;, or # ends the host.\r\n\t //\r\n\t // If there is an @ in the hostname, then non-host chars *are* allowed\r\n\t // to the left of the last @ sign, unless some host-ending character\r\n\t // comes *before* the @-sign.\r\n\t // URLs are obnoxious.\r\n\t //\r\n\t // ex:\r\n\t // http://a@b@c/ => user:a@b host:c\r\n\t // http://a@b?@c => user:a host:c path:/?@c\r\n\r\n\t // v0.12 TODO(isaacs): This is not quite how Chrome does things.\r\n\t // Review our test case against browsers more comprehensively.\r\n\r\n\t // find the first instance of any hostEndingChars\r\n\t var hostEnd = -1;\r\n\t for (var i = 0; i < hostEndingChars.length; i++) {\r\n\t var hec = rest.indexOf(hostEndingChars[i]);\r\n\t if (hec !== -1 && (hostEnd === -1 || hec < hostEnd))\r\n\t hostEnd = hec;\r\n\t }\r\n\r\n\t // at this point, either we have an explicit point where the\r\n\t // auth portion cannot go past, or the last @ char is the decider.\r\n\t var auth, atSign;\r\n\t if (hostEnd === -1) {\r\n\t // atSign can be anywhere.\r\n\t atSign = rest.lastIndexOf('@');\r\n\t } else {\r\n\t // atSign must be in auth portion.\r\n\t // http://a@b/c@d => host:b auth:a path:/c@d\r\n\t atSign = rest.lastIndexOf('@', hostEnd);\r\n\t }\r\n\r\n\t // Now we have a portion which is definitely the auth.\r\n\t // Pull that off.\r\n\t if (atSign !== -1) {\r\n\t auth = rest.slice(0, atSign);\r\n\t rest = rest.slice(atSign + 1);\r\n\t this.auth = decodeURIComponent(auth);\r\n\t }\r\n\r\n\t // the host is the remaining to the left of the first non-host char\r\n\t hostEnd = -1;\r\n\t for (var i = 0; i < nonHostChars.length; i++) {\r\n\t var hec = rest.indexOf(nonHostChars[i]);\r\n\t if (hec !== -1 && (hostEnd === -1 || hec < hostEnd))\r\n\t hostEnd = hec;\r\n\t }\r\n\t // if we still have not hit it, then the entire thing is a host.\r\n\t if (hostEnd === -1)\r\n\t hostEnd = rest.length;\r\n\r\n\t this.host = rest.slice(0, hostEnd);\r\n\t rest = rest.slice(hostEnd);\r\n\r\n\t // pull out port.\r\n\t this.parseHost();\r\n\r\n\t // we've indicated that there is a hostname,\r\n\t // so even if it's empty, it has to be present.\r\n\t this.hostname = this.hostname || '';\r\n\r\n\t // if hostname begins with [ and ends with ]\r\n\t // assume that it's an IPv6 address.\r\n\t var ipv6Hostname = this.hostname[0] === '[' &&\r\n\t this.hostname[this.hostname.length - 1] === ']';\r\n\r\n\t // validate a little.\r\n\t if (!ipv6Hostname) {\r\n\t var hostparts = this.hostname.split(/\\./);\r\n\t for (var i = 0, l = hostparts.length; i < l; i++) {\r\n\t var part = hostparts[i];\r\n\t if (!part) continue;\r\n\t if (!part.match(hostnamePartPattern)) {\r\n\t var newpart = '';\r\n\t for (var j = 0, k = part.length; j < k; j++) {\r\n\t if (part.charCodeAt(j) > 127) {\r\n\t // we replace non-ASCII char with a temporary placeholder\r\n\t // we need this to make sure size of hostname is not\r\n\t // broken by replacing non-ASCII by nothing\r\n\t newpart += 'x';\r\n\t } else {\r\n\t newpart += part[j];\r\n\t }\r\n\t }\r\n\t // we test again with ASCII char only\r\n\t if (!newpart.match(hostnamePartPattern)) {\r\n\t var validParts = hostparts.slice(0, i);\r\n\t var notHost = hostparts.slice(i + 1);\r\n\t var bit = part.match(hostnamePartStart);\r\n\t if (bit) {\r\n\t validParts.push(bit[1]);\r\n\t notHost.unshift(bit[2]);\r\n\t }\r\n\t if (notHost.length) {\r\n\t rest = '/' + notHost.join('.') + rest;\r\n\t }\r\n\t this.hostname = validParts.join('.');\r\n\t break;\r\n\t }\r\n\t }\r\n\t }\r\n\t }\r\n\r\n\t if (this.hostname.length > hostnameMaxLen) {\r\n\t this.hostname = '';\r\n\t } else {\r\n\t // hostnames are always lower case.\r\n\t this.hostname = this.hostname.toLowerCase();\r\n\t }\r\n\r\n\t if (!ipv6Hostname) {\r\n\t // IDNA Support: Returns a puny coded representation of \"domain\".\r\n\t // It only converts the part of the domain name that\r\n\t // has non ASCII characters. I.e. it dosent matter if\r\n\t // you call it with a domain that already is in ASCII.\r\n\t var domainArray = this.hostname.split('.');\r\n\t var newOut = [];\r\n\t for (var i = 0; i < domainArray.length; ++i) {\r\n\t var s = domainArray[i];\r\n\t newOut.push(s.match(/[^A-Za-z0-9_-]/) ?\r\n\t 'xn--' + punycode.encode(s) : s);\r\n\t }\r\n\t this.hostname = newOut.join('.');\r\n\t }\r\n\r\n\t var p = this.port ? ':' + this.port : '';\r\n\t var h = this.hostname || '';\r\n\t this.host = h + p;\r\n\t this.href += this.host;\r\n\r\n\t // strip [ and ] from the hostname\r\n\t // the host field still retains them, though\r\n\t if (ipv6Hostname) {\r\n\t this.hostname = this.hostname.substr(1, this.hostname.length - 2);\r\n\t if (rest[0] !== '/') {\r\n\t rest = '/' + rest;\r\n\t }\r\n\t }\r\n\t }\r\n\r\n\t // now rest is set to the post-host stuff.\r\n\t // chop off any delim chars.\r\n\t if (!unsafeProtocol[lowerProto]) {\r\n\r\n\t // First, make 100% sure that any \"autoEscape\" chars get\r\n\t // escaped, even if encodeURIComponent doesn't think they\r\n\t // need to be.\r\n\t for (var i = 0, l = autoEscape.length; i < l; i++) {\r\n\t var ae = autoEscape[i];\r\n\t var esc = encodeURIComponent(ae);\r\n\t if (esc === ae) {\r\n\t esc = escape(ae);\r\n\t }\r\n\t rest = rest.split(ae).join(esc);\r\n\t }\r\n\t }\r\n\r\n\r\n\t // chop off from the tail first.\r\n\t var hash = rest.indexOf('#');\r\n\t if (hash !== -1) {\r\n\t // got a fragment string.\r\n\t this.hash = rest.substr(hash);\r\n\t rest = rest.slice(0, hash);\r\n\t }\r\n\t var qm = rest.indexOf('?');\r\n\t if (qm !== -1) {\r\n\t this.search = rest.substr(qm);\r\n\t this.query = rest.substr(qm + 1);\r\n\t if (parseQueryString) {\r\n\t this.query = querystring.parse(this.query);\r\n\t }\r\n\t rest = rest.slice(0, qm);\r\n\t } else if (parseQueryString) {\r\n\t // no query string, but parseQueryString still requested\r\n\t this.search = '';\r\n\t this.query = {};\r\n\t }\r\n\t if (rest) this.pathname = rest;\r\n\t if (slashedProtocol[lowerProto] &&\r\n\t this.hostname && !this.pathname) {\r\n\t this.pathname = '/';\r\n\t }\r\n\r\n\t //to support http.request\r\n\t if (this.pathname || this.search) {\r\n\t var p = this.pathname || '';\r\n\t var s = this.search || '';\r\n\t this.path = p + s;\r\n\t }\r\n\r\n\t // finally, reconstruct the href based on what has been validated.\r\n\t this.href = this.format();\r\n\t return this;\r\n\t};\r\n\r\n\t// format a parsed object into a url string\r\n\tfunction urlFormat(obj) {\r\n\t // ensure it's an object, and not a string url.\r\n\t // If it's an obj, this is a no-op.\r\n\t // this way, you can call url_format() on strings\r\n\t // to clean up potentially wonky urls.\r\n\t if (isString(obj)) obj = urlParse(obj);\r\n\t if (!(obj instanceof Url)) return Url.prototype.format.call(obj);\r\n\t return obj.format();\r\n\t}\r\n\r\n\tUrl.prototype.format = function() {\r\n\t var auth = this.auth || '';\r\n\t if (auth) {\r\n\t auth = encodeURIComponent(auth);\r\n\t auth = auth.replace(/%3A/i, ':');\r\n\t auth += '@';\r\n\t }\r\n\r\n\t var protocol = this.protocol || '',\r\n\t pathname = this.pathname || '',\r\n\t hash = this.hash || '',\r\n\t host = false,\r\n\t query = '';\r\n\r\n\t if (this.host) {\r\n\t host = auth + this.host;\r\n\t } else if (this.hostname) {\r\n\t host = auth + (this.hostname.indexOf(':') === -1 ?\r\n\t this.hostname :\r\n\t '[' + this.hostname + ']');\r\n\t if (this.port) {\r\n\t host += ':' + this.port;\r\n\t }\r\n\t }\r\n\r\n\t if (this.query &&\r\n\t isObject(this.query) &&\r\n\t Object.keys(this.query).length) {\r\n\t query = querystring.stringify(this.query);\r\n\t }\r\n\r\n\t var search = this.search || (query && ('?' + query)) || '';\r\n\r\n\t if (protocol && protocol.substr(-1) !== ':') protocol += ':';\r\n\r\n\t // only the slashedProtocols get the //. Not mailto:, xmpp:, etc.\r\n\t // unless they had them to begin with.\r\n\t if (this.slashes ||\r\n\t (!protocol || slashedProtocol[protocol]) && host !== false) {\r\n\t host = '//' + (host || '');\r\n\t if (pathname && pathname.charAt(0) !== '/') pathname = '/' + pathname;\r\n\t } else if (!host) {\r\n\t host = '';\r\n\t }\r\n\r\n\t if (hash && hash.charAt(0) !== '#') hash = '#' + hash;\r\n\t if (search && search.charAt(0) !== '?') search = '?' + search;\r\n\r\n\t pathname = pathname.replace(/[?#]/g, function(match) {\r\n\t return encodeURIComponent(match);\r\n\t });\r\n\t search = search.replace('#', '%23');\r\n\r\n\t return protocol + host + pathname + search + hash;\r\n\t};\r\n\r\n\tfunction urlResolve(source, relative) {\r\n\t return urlParse(source, false, true).resolve(relative);\r\n\t}\r\n\r\n\tUrl.prototype.resolve = function(relative) {\r\n\t return this.resolveObject(urlParse(relative, false, true)).format();\r\n\t};\r\n\r\n\tfunction urlResolveObject(source, relative) {\r\n\t if (!source) return relative;\r\n\t return urlParse(source, false, true).resolveObject(relative);\r\n\t}\r\n\r\n\tUrl.prototype.resolveObject = function(relative) {\r\n\t if (isString(relative)) {\r\n\t var rel = new Url();\r\n\t rel.parse(relative, false, true);\r\n\t relative = rel;\r\n\t }\r\n\r\n\t var result = new Url();\r\n\t Object.keys(this).forEach(function(k) {\r\n\t result[k] = this[k];\r\n\t }, this);\r\n\r\n\t // hash is always overridden, no matter what.\r\n\t // even href=\"\" will remove it.\r\n\t result.hash = relative.hash;\r\n\r\n\t // if the relative url is empty, then there's nothing left to do here.\r\n\t if (relative.href === '') {\r\n\t result.href = result.format();\r\n\t return result;\r\n\t }\r\n\r\n\t // hrefs like //foo/bar always cut to the protocol.\r\n\t if (relative.slashes && !relative.protocol) {\r\n\t // take everything except the protocol from relative\r\n\t Object.keys(relative).forEach(function(k) {\r\n\t if (k !== 'protocol')\r\n\t result[k] = relative[k];\r\n\t });\r\n\r\n\t //urlParse appends trailing / to urls like http://www.example.com\r\n\t if (slashedProtocol[result.protocol] &&\r\n\t result.hostname && !result.pathname) {\r\n\t result.path = result.pathname = '/';\r\n\t }\r\n\r\n\t result.href = result.format();\r\n\t return result;\r\n\t }\r\n\r\n\t if (relative.protocol && relative.protocol !== result.protocol) {\r\n\t // if it's a known url protocol, then changing\r\n\t // the protocol does weird things\r\n\t // first, if it's not file:, then we MUST have a host,\r\n\t // and if there was a path\r\n\t // to begin with, then we MUST have a path.\r\n\t // if it is file:, then the host is dropped,\r\n\t // because that's known to be hostless.\r\n\t // anything else is assumed to be absolute.\r\n\t if (!slashedProtocol[relative.protocol]) {\r\n\t Object.keys(relative).forEach(function(k) {\r\n\t result[k] = relative[k];\r\n\t });\r\n\t result.href = result.format();\r\n\t return result;\r\n\t }\r\n\r\n\t result.protocol = relative.protocol;\r\n\t if (!relative.host && !hostlessProtocol[relative.protocol]) {\r\n\t var relPath = (relative.pathname || '').split('/');\r\n\t while (relPath.length && !(relative.host = relPath.shift()));\r\n\t if (!relative.host) relative.host = '';\r\n\t if (!relative.hostname) relative.hostname = '';\r\n\t if (relPath[0] !== '') relPath.unshift('');\r\n\t if (relPath.length < 2) relPath.unshift('');\r\n\t result.pathname = relPath.join('/');\r\n\t } else {\r\n\t result.pathname = relative.pathname;\r\n\t }\r\n\t result.search = relative.search;\r\n\t result.query = relative.query;\r\n\t result.host = relative.host || '';\r\n\t result.auth = relative.auth;\r\n\t result.hostname = relative.hostname || relative.host;\r\n\t result.port = relative.port;\r\n\t // to support http.request\r\n\t if (result.pathname || result.search) {\r\n\t var p = result.pathname || '';\r\n\t var s = result.search || '';\r\n\t result.path = p + s;\r\n\t }\r\n\t result.slashes = result.slashes || relative.slashes;\r\n\t result.href = result.format();\r\n\t return result;\r\n\t }\r\n\r\n\t var isSourceAbs = (result.pathname && result.pathname.charAt(0) === '/'),\r\n\t isRelAbs = (\r\n\t relative.host ||\r\n\t relative.pathname && relative.pathname.charAt(0) === '/'\r\n\t ),\r\n\t mustEndAbs = (isRelAbs || isSourceAbs ||\r\n\t (result.host && relative.pathname)),\r\n\t removeAllDots = mustEndAbs,\r\n\t srcPath = result.pathname && result.pathname.split('/') || [],\r\n\t relPath = relative.pathname && relative.pathname.split('/') || [],\r\n\t psychotic = result.protocol && !slashedProtocol[result.protocol];\r\n\r\n\t // if the url is a non-slashed url, then relative\r\n\t // links like ../.. should be able\r\n\t // to crawl up to the hostname, as well. This is strange.\r\n\t // result.protocol has already been set by now.\r\n\t // Later on, put the first path part into the host field.\r\n\t if (psychotic) {\r\n\t result.hostname = '';\r\n\t result.port = null;\r\n\t if (result.host) {\r\n\t if (srcPath[0] === '') srcPath[0] = result.host;\r\n\t else srcPath.unshift(result.host);\r\n\t }\r\n\t result.host = '';\r\n\t if (relative.protocol) {\r\n\t relative.hostname = null;\r\n\t relative.port = null;\r\n\t if (relative.host) {\r\n\t if (relPath[0] === '') relPath[0] = relative.host;\r\n\t else relPath.unshift(relative.host);\r\n\t }\r\n\t relative.host = null;\r\n\t }\r\n\t mustEndAbs = mustEndAbs && (relPath[0] === '' || srcPath[0] === '');\r\n\t }\r\n\r\n\t if (isRelAbs) {\r\n\t // it's absolute.\r\n\t result.host = (relative.host || relative.host === '') ?\r\n\t relative.host : result.host;\r\n\t result.hostname = (relative.hostname || relative.hostname === '') ?\r\n\t relative.hostname : result.hostname;\r\n\t result.search = relative.search;\r\n\t result.query = relative.query;\r\n\t srcPath = relPath;\r\n\t // fall through to the dot-handling below.\r\n\t } else if (relPath.length) {\r\n\t // it's relative\r\n\t // throw away the existing file, and take the new path instead.\r\n\t if (!srcPath) srcPath = [];\r\n\t srcPath.pop();\r\n\t srcPath = srcPath.concat(relPath);\r\n\t result.search = relative.search;\r\n\t result.query = relative.query;\r\n\t } else if (!isNullOrUndefined(relative.search)) {\r\n\t // just pull out the search.\r\n\t // like href='?foo'.\r\n\t // Put this after the other two cases because it simplifies the booleans\r\n\t if (psychotic) {\r\n\t result.hostname = result.host = srcPath.shift();\r\n\t //occationaly the auth can get stuck only in host\r\n\t //this especialy happens in cases like\r\n\t //url.resolveObject('mailto:local1@domain1', 'local2@domain2')\r\n\t var authInHost = result.host && result.host.indexOf('@') > 0 ?\r\n\t result.host.split('@') : false;\r\n\t if (authInHost) {\r\n\t result.auth = authInHost.shift();\r\n\t result.host = result.hostname = authInHost.shift();\r\n\t }\r\n\t }\r\n\t result.search = relative.search;\r\n\t result.query = relative.query;\r\n\t //to support http.request\r\n\t if (!isNull(result.pathname) || !isNull(result.search)) {\r\n\t result.path = (result.pathname ? result.pathname : '') +\r\n\t (result.search ? result.search : '');\r\n\t }\r\n\t result.href = result.format();\r\n\t return result;\r\n\t }\r\n\r\n\t if (!srcPath.length) {\r\n\t // no path at all. easy.\r\n\t // we've already handled the other stuff above.\r\n\t result.pathname = null;\r\n\t //to support http.request\r\n\t if (result.search) {\r\n\t result.path = '/' + result.search;\r\n\t } else {\r\n\t result.path = null;\r\n\t }\r\n\t result.href = result.format();\r\n\t return result;\r\n\t }\r\n\r\n\t // if a url ENDs in . or .., then it must get a trailing slash.\r\n\t // however, if it ends in anything else non-slashy,\r\n\t // then it must NOT get a trailing slash.\r\n\t var last = srcPath.slice(-1)[0];\r\n\t var hasTrailingSlash = (\r\n\t (result.host || relative.host) && (last === '.' || last === '..') ||\r\n\t last === '');\r\n\r\n\t // strip single dots, resolve double dots to parent dir\r\n\t // if the path tries to go above the root, `up` ends up > 0\r\n\t var up = 0;\r\n\t for (var i = srcPath.length; i >= 0; i--) {\r\n\t last = srcPath[i];\r\n\t if (last == '.') {\r\n\t srcPath.splice(i, 1);\r\n\t } else if (last === '..') {\r\n\t srcPath.splice(i, 1);\r\n\t up++;\r\n\t } else if (up) {\r\n\t srcPath.splice(i, 1);\r\n\t up--;\r\n\t }\r\n\t }\r\n\r\n\t // if the path is allowed to go above the root, restore leading ..s\r\n\t if (!mustEndAbs && !removeAllDots) {\r\n\t for (; up--; up) {\r\n\t srcPath.unshift('..');\r\n\t }\r\n\t }\r\n\r\n\t if (mustEndAbs && srcPath[0] !== '' &&\r\n\t (!srcPath[0] || srcPath[0].charAt(0) !== '/')) {\r\n\t srcPath.unshift('');\r\n\t }\r\n\r\n\t if (hasTrailingSlash && (srcPath.join('/').substr(-1) !== '/')) {\r\n\t srcPath.push('');\r\n\t }\r\n\r\n\t var isAbsolute = srcPath[0] === '' ||\r\n\t (srcPath[0] && srcPath[0].charAt(0) === '/');\r\n\r\n\t // put the host back\r\n\t if (psychotic) {\r\n\t result.hostname = result.host = isAbsolute ? '' :\r\n\t srcPath.length ? srcPath.shift() : '';\r\n\t //occationaly the auth can get stuck only in host\r\n\t //this especialy happens in cases like\r\n\t //url.resolveObject('mailto:local1@domain1', 'local2@domain2')\r\n\t var authInHost = result.host && result.host.indexOf('@') > 0 ?\r\n\t result.host.split('@') : false;\r\n\t if (authInHost) {\r\n\t result.auth = authInHost.shift();\r\n\t result.host = result.hostname = authInHost.shift();\r\n\t }\r\n\t }\r\n\r\n\t mustEndAbs = mustEndAbs || (result.host && srcPath.length);\r\n\r\n\t if (mustEndAbs && !isAbsolute) {\r\n\t srcPath.unshift('');\r\n\t }\r\n\r\n\t if (!srcPath.length) {\r\n\t result.pathname = null;\r\n\t result.path = null;\r\n\t } else {\r\n\t result.pathname = srcPath.join('/');\r\n\t }\r\n\r\n\t //to support request.http\r\n\t if (!isNull(result.pathname) || !isNull(result.search)) {\r\n\t result.path = (result.pathname ? result.pathname : '') +\r\n\t (result.search ? result.search : '');\r\n\t }\r\n\t result.auth = relative.auth || result.auth;\r\n\t result.slashes = result.slashes || relative.slashes;\r\n\t result.href = result.format();\r\n\t return result;\r\n\t};\r\n\r\n\tUrl.prototype.parseHost = function() {\r\n\t var host = this.host;\r\n\t var port = portPattern.exec(host);\r\n\t if (port) {\r\n\t port = port[0];\r\n\t if (port !== ':') {\r\n\t this.port = port.substr(1);\r\n\t }\r\n\t host = host.substr(0, host.length - port.length);\r\n\t }\r\n\t if (host) this.hostname = host;\r\n\t};\r\n\r\n\tfunction isString(arg) {\r\n\t return typeof arg === \"string\";\r\n\t}\r\n\r\n\tfunction isObject(arg) {\r\n\t return typeof arg === 'object' && arg !== null;\r\n\t}\r\n\r\n\tfunction isNull(arg) {\r\n\t return arg === null;\r\n\t}\r\n\tfunction isNullOrUndefined(arg) {\r\n\t return arg == null;\r\n\t}\r\n\r\n\r\n/***/ },\r\n/* 5 */\r\n/***/ function(module, exports, __webpack_require__) {\r\n\r\n\tvar __WEBPACK_AMD_DEFINE_RESULT__;/* WEBPACK VAR INJECTION */(function(module, global) {/*! https://mths.be/punycode v1.3.2 by @mathias */\r\n\t;(function(root) {\r\n\r\n\t\t/** Detect free variables */\r\n\t\tvar freeExports = typeof exports == 'object' && exports &&\r\n\t\t\t!exports.nodeType && exports;\r\n\t\tvar freeModule = typeof module == 'object' && module &&\r\n\t\t\t!module.nodeType && module;\r\n\t\tvar freeGlobal = typeof global == 'object' && global;\r\n\t\tif (\r\n\t\t\tfreeGlobal.global === freeGlobal ||\r\n\t\t\tfreeGlobal.window === freeGlobal ||\r\n\t\t\tfreeGlobal.self === freeGlobal\r\n\t\t) {\r\n\t\t\troot = freeGlobal;\r\n\t\t}\r\n\r\n\t\t/**\r\n\t\t * The `punycode` object.\r\n\t\t * @name punycode\r\n\t\t * @type Object\r\n\t\t */\r\n\t\tvar punycode,\r\n\r\n\t\t/** Highest positive signed 32-bit float value */\r\n\t\tmaxInt = 2147483647, // aka. 0x7FFFFFFF or 2^31-1\r\n\r\n\t\t/** Bootstring parameters */\r\n\t\tbase = 36,\r\n\t\ttMin = 1,\r\n\t\ttMax = 26,\r\n\t\tskew = 38,\r\n\t\tdamp = 700,\r\n\t\tinitialBias = 72,\r\n\t\tinitialN = 128, // 0x80\r\n\t\tdelimiter = '-', // '\\x2D'\r\n\r\n\t\t/** Regular expressions */\r\n\t\tregexPunycode = /^xn--/,\r\n\t\tregexNonASCII = /[^\\x20-\\x7E]/, // unprintable ASCII chars + non-ASCII chars\r\n\t\tregexSeparators = /[\\x2E\\u3002\\uFF0E\\uFF61]/g, // RFC 3490 separators\r\n\r\n\t\t/** Error messages */\r\n\t\terrors = {\r\n\t\t\t'overflow': 'Overflow: input needs wider integers to process',\r\n\t\t\t'not-basic': 'Illegal input >= 0x80 (not a basic code point)',\r\n\t\t\t'invalid-input': 'Invalid input'\r\n\t\t},\r\n\r\n\t\t/** Convenience shortcuts */\r\n\t\tbaseMinusTMin = base - tMin,\r\n\t\tfloor = Math.floor,\r\n\t\tstringFromCharCode = String.fromCharCode,\r\n\r\n\t\t/** Temporary variable */\r\n\t\tkey;\r\n\r\n\t\t/*--------------------------------------------------------------------------*/\r\n\r\n\t\t/**\r\n\t\t * A generic error utility function.\r\n\t\t * @private\r\n\t\t * @param {String} type The error type.\r\n\t\t * @returns {Error} Throws a `RangeError` with the applicable error message.\r\n\t\t */\r\n\t\tfunction error(type) {\r\n\t\t\tthrow RangeError(errors[type]);\r\n\t\t}\r\n\r\n\t\t/**\r\n\t\t * A generic `Array#map` utility function.\r\n\t\t * @private\r\n\t\t * @param {Array} array The array to iterate over.\r\n\t\t * @param {Function} callback The function that gets called for every array\r\n\t\t * item.\r\n\t\t * @returns {Array} A new array of values returned by the callback function.\r\n\t\t */\r\n\t\tfunction map(array, fn) {\r\n\t\t\tvar length = array.length;\r\n\t\t\tvar result = [];\r\n\t\t\twhile (length--) {\r\n\t\t\t\tresult[length] = fn(array[length]);\r\n\t\t\t}\r\n\t\t\treturn result;\r\n\t\t}\r\n\r\n\t\t/**\r\n\t\t * A simple `Array#map`-like wrapper to work with domain name strings or email\r\n\t\t * addresses.\r\n\t\t * @private\r\n\t\t * @param {String} domain The domain name or email address.\r\n\t\t * @param {Function} callback The function that gets called for every\r\n\t\t * character.\r\n\t\t * @returns {Array} A new string of characters returned by the callback\r\n\t\t * function.\r\n\t\t */\r\n\t\tfunction mapDomain(string, fn) {\r\n\t\t\tvar parts = string.split('@');\r\n\t\t\tvar result = '';\r\n\t\t\tif (parts.length > 1) {\r\n\t\t\t\t// In email addresses, only the domain name should be punycoded. Leave\r\n\t\t\t\t// the local part (i.e. everything up to `@`) intact.\r\n\t\t\t\tresult = parts[0] + '@';\r\n\t\t\t\tstring = parts[1];\r\n\t\t\t}\r\n\t\t\t// Avoid `split(regex)` for IE8 compatibility. See #17.\r\n\t\t\tstring = string.replace(regexSeparators, '\\x2E');\r\n\t\t\tvar labels = string.split('.');\r\n\t\t\tvar encoded = map(labels, fn).join('.');\r\n\t\t\treturn result + encoded;\r\n\t\t}\r\n\r\n\t\t/**\r\n\t\t * Creates an array containing the numeric code points of each Unicode\r\n\t\t * character in the string. While JavaScript uses UCS-2 internally,\r\n\t\t * this function will convert a pair of surrogate halves (each of which\r\n\t\t * UCS-2 exposes as separate characters) into a single code point,\r\n\t\t * matching UTF-16.\r\n\t\t * @see `punycode.ucs2.encode`\r\n\t\t * @see \r\n\t\t * @memberOf punycode.ucs2\r\n\t\t * @name decode\r\n\t\t * @param {String} string The Unicode input string (UCS-2).\r\n\t\t * @returns {Array} The new array of code points.\r\n\t\t */\r\n\t\tfunction ucs2decode(string) {\r\n\t\t\tvar output = [],\r\n\t\t\t counter = 0,\r\n\t\t\t length = string.length,\r\n\t\t\t value,\r\n\t\t\t extra;\r\n\t\t\twhile (counter < length) {\r\n\t\t\t\tvalue = string.charCodeAt(counter++);\r\n\t\t\t\tif (value >= 0xD800 && value <= 0xDBFF && counter < length) {\r\n\t\t\t\t\t// high surrogate, and there is a next character\r\n\t\t\t\t\textra = string.charCodeAt(counter++);\r\n\t\t\t\t\tif ((extra & 0xFC00) == 0xDC00) { // low surrogate\r\n\t\t\t\t\t\toutput.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\t// unmatched surrogate; only append this code unit, in case the next\r\n\t\t\t\t\t\t// code unit is the high surrogate of a surrogate pair\r\n\t\t\t\t\t\toutput.push(value);\r\n\t\t\t\t\t\tcounter--;\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\toutput.push(value);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn output;\r\n\t\t}\r\n\r\n\t\t/**\r\n\t\t * Creates a string based on an array of numeric code points.\r\n\t\t * @see `punycode.ucs2.decode`\r\n\t\t * @memberOf punycode.ucs2\r\n\t\t * @name encode\r\n\t\t * @param {Array} codePoints The array of numeric code points.\r\n\t\t * @returns {String} The new Unicode string (UCS-2).\r\n\t\t */\r\n\t\tfunction ucs2encode(array) {\r\n\t\t\treturn map(array, function(value) {\r\n\t\t\t\tvar output = '';\r\n\t\t\t\tif (value > 0xFFFF) {\r\n\t\t\t\t\tvalue -= 0x10000;\r\n\t\t\t\t\toutput += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800);\r\n\t\t\t\t\tvalue = 0xDC00 | value & 0x3FF;\r\n\t\t\t\t}\r\n\t\t\t\toutput += stringFromCharCode(value);\r\n\t\t\t\treturn output;\r\n\t\t\t}).join('');\r\n\t\t}\r\n\r\n\t\t/**\r\n\t\t * Converts a basic code point into a digit/integer.\r\n\t\t * @see `digitToBasic()`\r\n\t\t * @private\r\n\t\t * @param {Number} codePoint The basic numeric code point value.\r\n\t\t * @returns {Number} The numeric value of a basic code point (for use in\r\n\t\t * representing integers) in the range `0` to `base - 1`, or `base` if\r\n\t\t * the code point does not represent a value.\r\n\t\t */\r\n\t\tfunction basicToDigit(codePoint) {\r\n\t\t\tif (codePoint - 48 < 10) {\r\n\t\t\t\treturn codePoint - 22;\r\n\t\t\t}\r\n\t\t\tif (codePoint - 65 < 26) {\r\n\t\t\t\treturn codePoint - 65;\r\n\t\t\t}\r\n\t\t\tif (codePoint - 97 < 26) {\r\n\t\t\t\treturn codePoint - 97;\r\n\t\t\t}\r\n\t\t\treturn base;\r\n\t\t}\r\n\r\n\t\t/**\r\n\t\t * Converts a digit/integer into a basic code point.\r\n\t\t * @see `basicToDigit()`\r\n\t\t * @private\r\n\t\t * @param {Number} digit The numeric value of a basic code point.\r\n\t\t * @returns {Number} The basic code point whose value (when used for\r\n\t\t * representing integers) is `digit`, which needs to be in the range\r\n\t\t * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is\r\n\t\t * used; else, the lowercase form is used. The behavior is undefined\r\n\t\t * if `flag` is non-zero and `digit` has no uppercase form.\r\n\t\t */\r\n\t\tfunction digitToBasic(digit, flag) {\r\n\t\t\t// 0..25 map to ASCII a..z or A..Z\r\n\t\t\t// 26..35 map to ASCII 0..9\r\n\t\t\treturn digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);\r\n\t\t}\r\n\r\n\t\t/**\r\n\t\t * Bias adaptation function as per section 3.4 of RFC 3492.\r\n\t\t * http://tools.ietf.org/html/rfc3492#section-3.4\r\n\t\t * @private\r\n\t\t */\r\n\t\tfunction adapt(delta, numPoints, firstTime) {\r\n\t\t\tvar k = 0;\r\n\t\t\tdelta = firstTime ? floor(delta / damp) : delta >> 1;\r\n\t\t\tdelta += floor(delta / numPoints);\r\n\t\t\tfor (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) {\r\n\t\t\t\tdelta = floor(delta / baseMinusTMin);\r\n\t\t\t}\r\n\t\t\treturn floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\r\n\t\t}\r\n\r\n\t\t/**\r\n\t\t * Converts a Punycode string of ASCII-only symbols to a string of Unicode\r\n\t\t * symbols.\r\n\t\t * @memberOf punycode\r\n\t\t * @param {String} input The Punycode string of ASCII-only symbols.\r\n\t\t * @returns {String} The resulting string of Unicode symbols.\r\n\t\t */\r\n\t\tfunction decode(input) {\r\n\t\t\t// Don't use UCS-2\r\n\t\t\tvar output = [],\r\n\t\t\t inputLength = input.length,\r\n\t\t\t out,\r\n\t\t\t i = 0,\r\n\t\t\t n = initialN,\r\n\t\t\t bias = initialBias,\r\n\t\t\t basic,\r\n\t\t\t j,\r\n\t\t\t index,\r\n\t\t\t oldi,\r\n\t\t\t w,\r\n\t\t\t k,\r\n\t\t\t digit,\r\n\t\t\t t,\r\n\t\t\t /** Cached calculation results */\r\n\t\t\t baseMinusT;\r\n\r\n\t\t\t// Handle the basic code points: let `basic` be the number of input code\r\n\t\t\t// points before the last delimiter, or `0` if there is none, then copy\r\n\t\t\t// the first basic code points to the output.\r\n\r\n\t\t\tbasic = input.lastIndexOf(delimiter);\r\n\t\t\tif (basic < 0) {\r\n\t\t\t\tbasic = 0;\r\n\t\t\t}\r\n\r\n\t\t\tfor (j = 0; j < basic; ++j) {\r\n\t\t\t\t// if it's not a basic code point\r\n\t\t\t\tif (input.charCodeAt(j) >= 0x80) {\r\n\t\t\t\t\terror('not-basic');\r\n\t\t\t\t}\r\n\t\t\t\toutput.push(input.charCodeAt(j));\r\n\t\t\t}\r\n\r\n\t\t\t// Main decoding loop: start just after the last delimiter if any basic code\r\n\t\t\t// points were copied; start at the beginning otherwise.\r\n\r\n\t\t\tfor (index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) {\r\n\r\n\t\t\t\t// `index` is the index of the next character to be consumed.\r\n\t\t\t\t// Decode a generalized variable-length integer into `delta`,\r\n\t\t\t\t// which gets added to `i`. The overflow checking is easier\r\n\t\t\t\t// if we increase `i` as we go, then subtract off its starting\r\n\t\t\t\t// value at the end to obtain `delta`.\r\n\t\t\t\tfor (oldi = i, w = 1, k = base; /* no condition */; k += base) {\r\n\r\n\t\t\t\t\tif (index >= inputLength) {\r\n\t\t\t\t\t\terror('invalid-input');\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tdigit = basicToDigit(input.charCodeAt(index++));\r\n\r\n\t\t\t\t\tif (digit >= base || digit > floor((maxInt - i) / w)) {\r\n\t\t\t\t\t\terror('overflow');\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\ti += digit * w;\r\n\t\t\t\t\tt = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\r\n\r\n\t\t\t\t\tif (digit < t) {\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tbaseMinusT = base - t;\r\n\t\t\t\t\tif (w > floor(maxInt / baseMinusT)) {\r\n\t\t\t\t\t\terror('overflow');\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tw *= baseMinusT;\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\tout = output.length + 1;\r\n\t\t\t\tbias = adapt(i - oldi, out, oldi == 0);\r\n\r\n\t\t\t\t// `i` was supposed to wrap around from `out` to `0`,\r\n\t\t\t\t// incrementing `n` each time, so we'll fix that now:\r\n\t\t\t\tif (floor(i / out) > maxInt - n) {\r\n\t\t\t\t\terror('overflow');\r\n\t\t\t\t}\r\n\r\n\t\t\t\tn += floor(i / out);\r\n\t\t\t\ti %= out;\r\n\r\n\t\t\t\t// Insert `n` at position `i` of the output\r\n\t\t\t\toutput.splice(i++, 0, n);\r\n\r\n\t\t\t}\r\n\r\n\t\t\treturn ucs2encode(output);\r\n\t\t}\r\n\r\n\t\t/**\r\n\t\t * Converts a string of Unicode symbols (e.g. a domain name label) to a\r\n\t\t * Punycode string of ASCII-only symbols.\r\n\t\t * @memberOf punycode\r\n\t\t * @param {String} input The string of Unicode symbols.\r\n\t\t * @returns {String} The resulting Punycode string of ASCII-only symbols.\r\n\t\t */\r\n\t\tfunction encode(input) {\r\n\t\t\tvar n,\r\n\t\t\t delta,\r\n\t\t\t handledCPCount,\r\n\t\t\t basicLength,\r\n\t\t\t bias,\r\n\t\t\t j,\r\n\t\t\t m,\r\n\t\t\t q,\r\n\t\t\t k,\r\n\t\t\t t,\r\n\t\t\t currentValue,\r\n\t\t\t output = [],\r\n\t\t\t /** `inputLength` will hold the number of code points in `input`. */\r\n\t\t\t inputLength,\r\n\t\t\t /** Cached calculation results */\r\n\t\t\t handledCPCountPlusOne,\r\n\t\t\t baseMinusT,\r\n\t\t\t qMinusT;\r\n\r\n\t\t\t// Convert the input in UCS-2 to Unicode\r\n\t\t\tinput = ucs2decode(input);\r\n\r\n\t\t\t// Cache the length\r\n\t\t\tinputLength = input.length;\r\n\r\n\t\t\t// Initialize the state\r\n\t\t\tn = initialN;\r\n\t\t\tdelta = 0;\r\n\t\t\tbias = initialBias;\r\n\r\n\t\t\t// Handle the basic code points\r\n\t\t\tfor (j = 0; j < inputLength; ++j) {\r\n\t\t\t\tcurrentValue = input[j];\r\n\t\t\t\tif (currentValue < 0x80) {\r\n\t\t\t\t\toutput.push(stringFromCharCode(currentValue));\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\thandledCPCount = basicLength = output.length;\r\n\r\n\t\t\t// `handledCPCount` is the number of code points that have been handled;\r\n\t\t\t// `basicLength` is the number of basic code points.\r\n\r\n\t\t\t// Finish the basic string - if it is not empty - with a delimiter\r\n\t\t\tif (basicLength) {\r\n\t\t\t\toutput.push(delimiter);\r\n\t\t\t}\r\n\r\n\t\t\t// Main encoding loop:\r\n\t\t\twhile (handledCPCount < inputLength) {\r\n\r\n\t\t\t\t// All non-basic code points < n have been handled already. Find the next\r\n\t\t\t\t// larger one:\r\n\t\t\t\tfor (m = maxInt, j = 0; j < inputLength; ++j) {\r\n\t\t\t\t\tcurrentValue = input[j];\r\n\t\t\t\t\tif (currentValue >= n && currentValue < m) {\r\n\t\t\t\t\t\tm = currentValue;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Increase `delta` enough to advance the decoder's state to ,\r\n\t\t\t\t// but guard against overflow\r\n\t\t\t\thandledCPCountPlusOne = handledCPCount + 1;\r\n\t\t\t\tif (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\r\n\t\t\t\t\terror('overflow');\r\n\t\t\t\t}\r\n\r\n\t\t\t\tdelta += (m - n) * handledCPCountPlusOne;\r\n\t\t\t\tn = m;\r\n\r\n\t\t\t\tfor (j = 0; j < inputLength; ++j) {\r\n\t\t\t\t\tcurrentValue = input[j];\r\n\r\n\t\t\t\t\tif (currentValue < n && ++delta > maxInt) {\r\n\t\t\t\t\t\terror('overflow');\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (currentValue == n) {\r\n\t\t\t\t\t\t// Represent delta as a generalized variable-length integer\r\n\t\t\t\t\t\tfor (q = delta, k = base; /* no condition */; k += base) {\r\n\t\t\t\t\t\t\tt = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\r\n\t\t\t\t\t\t\tif (q < t) {\r\n\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tqMinusT = q - t;\r\n\t\t\t\t\t\t\tbaseMinusT = base - t;\r\n\t\t\t\t\t\t\toutput.push(\r\n\t\t\t\t\t\t\t\tstringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0))\r\n\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t\tq = floor(qMinusT / baseMinusT);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\toutput.push(stringFromCharCode(digitToBasic(q, 0)));\r\n\t\t\t\t\t\tbias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\r\n\t\t\t\t\t\tdelta = 0;\r\n\t\t\t\t\t\t++handledCPCount;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t++delta;\r\n\t\t\t\t++n;\r\n\r\n\t\t\t}\r\n\t\t\treturn output.join('');\r\n\t\t}\r\n\r\n\t\t/**\r\n\t\t * Converts a Punycode string representing a domain name or an email address\r\n\t\t * to Unicode. Only the Punycoded parts of the input will be converted, i.e.\r\n\t\t * it doesn't matter if you call it on a string that has already been\r\n\t\t * converted to Unicode.\r\n\t\t * @memberOf punycode\r\n\t\t * @param {String} input The Punycoded domain name or email address to\r\n\t\t * convert to Unicode.\r\n\t\t * @returns {String} The Unicode representation of the given Punycode\r\n\t\t * string.\r\n\t\t */\r\n\t\tfunction toUnicode(input) {\r\n\t\t\treturn mapDomain(input, function(string) {\r\n\t\t\t\treturn regexPunycode.test(string)\r\n\t\t\t\t\t? decode(string.slice(4).toLowerCase())\r\n\t\t\t\t\t: string;\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\t/**\r\n\t\t * Converts a Unicode string representing a domain name or an email address to\r\n\t\t * Punycode. Only the non-ASCII parts of the domain name will be converted,\r\n\t\t * i.e. it doesn't matter if you call it with a domain that's already in\r\n\t\t * ASCII.\r\n\t\t * @memberOf punycode\r\n\t\t * @param {String} input The domain name or email address to convert, as a\r\n\t\t * Unicode string.\r\n\t\t * @returns {String} The Punycode representation of the given domain name or\r\n\t\t * email address.\r\n\t\t */\r\n\t\tfunction toASCII(input) {\r\n\t\t\treturn mapDomain(input, function(string) {\r\n\t\t\t\treturn regexNonASCII.test(string)\r\n\t\t\t\t\t? 'xn--' + encode(string)\r\n\t\t\t\t\t: string;\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\t/*--------------------------------------------------------------------------*/\r\n\r\n\t\t/** Define the public API */\r\n\t\tpunycode = {\r\n\t\t\t/**\r\n\t\t\t * A string representing the current Punycode.js version number.\r\n\t\t\t * @memberOf punycode\r\n\t\t\t * @type String\r\n\t\t\t */\r\n\t\t\t'version': '1.3.2',\r\n\t\t\t/**\r\n\t\t\t * An object of methods to convert from JavaScript's internal character\r\n\t\t\t * representation (UCS-2) to Unicode code points, and back.\r\n\t\t\t * @see \r\n\t\t\t * @memberOf punycode\r\n\t\t\t * @type Object\r\n\t\t\t */\r\n\t\t\t'ucs2': {\r\n\t\t\t\t'decode': ucs2decode,\r\n\t\t\t\t'encode': ucs2encode\r\n\t\t\t},\r\n\t\t\t'decode': decode,\r\n\t\t\t'encode': encode,\r\n\t\t\t'toASCII': toASCII,\r\n\t\t\t'toUnicode': toUnicode\r\n\t\t};\r\n\r\n\t\t/** Expose `punycode` */\r\n\t\t// Some AMD build optimizers, like r.js, check for specific condition patterns\r\n\t\t// like the following:\r\n\t\tif (\r\n\t\t\ttrue\r\n\t\t) {\r\n\t\t\t!(__WEBPACK_AMD_DEFINE_RESULT__ = function() {\r\n\t\t\t\treturn punycode;\r\n\t\t\t}.call(exports, __webpack_require__, exports, module), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\r\n\t\t} else if (freeExports && freeModule) {\r\n\t\t\tif (module.exports == freeExports) { // in Node.js or RingoJS v0.8.0+\r\n\t\t\t\tfreeModule.exports = punycode;\r\n\t\t\t} else { // in Narwhal or RingoJS v0.7.0-\r\n\t\t\t\tfor (key in punycode) {\r\n\t\t\t\t\tpunycode.hasOwnProperty(key) && (freeExports[key] = punycode[key]);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} else { // in Rhino or a web browser\r\n\t\t\troot.punycode = punycode;\r\n\t\t}\r\n\r\n\t}(this));\r\n\r\n\t/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(6)(module), (function() { return this; }())))\r\n\r\n/***/ },\r\n/* 6 */\r\n/***/ function(module, exports) {\r\n\r\n\tmodule.exports = function(module) {\r\n\t\tif(!module.webpackPolyfill) {\r\n\t\t\tmodule.deprecate = function() {};\r\n\t\t\tmodule.paths = [];\r\n\t\t\t// module.parent = undefined by default\r\n\t\t\tmodule.children = [];\r\n\t\t\tmodule.webpackPolyfill = 1;\r\n\t\t}\r\n\t\treturn module;\r\n\t}\r\n\r\n\r\n/***/ },\r\n/* 7 */\r\n/***/ function(module, exports, __webpack_require__) {\r\n\r\n\t'use strict';\r\n\r\n\texports.decode = exports.parse = __webpack_require__(8);\r\n\texports.encode = exports.stringify = __webpack_require__(9);\r\n\r\n\r\n/***/ },\r\n/* 8 */\r\n/***/ function(module, exports) {\r\n\r\n\t// Copyright Joyent, Inc. and other Node contributors.\r\n\t//\r\n\t// Permission is hereby granted, free of charge, to any person obtaining a\r\n\t// copy of this software and associated documentation files (the\r\n\t// \"Software\"), to deal in the Software without restriction, including\r\n\t// without limitation the rights to use, copy, modify, merge, publish,\r\n\t// distribute, sublicense, and/or sell copies of the Software, and to permit\r\n\t// persons to whom the Software is furnished to do so, subject to the\r\n\t// following conditions:\r\n\t//\r\n\t// The above copyright notice and this permission notice shall be included\r\n\t// in all copies or substantial portions of the Software.\r\n\t//\r\n\t// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\r\n\t// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\r\n\t// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\r\n\t// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\r\n\t// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\r\n\t// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\r\n\t// USE OR OTHER DEALINGS IN THE SOFTWARE.\r\n\r\n\t'use strict';\r\n\r\n\t// If obj.hasOwnProperty has been overridden, then calling\r\n\t// obj.hasOwnProperty(prop) will break.\r\n\t// See: https://github.com/joyent/node/issues/1707\r\n\tfunction hasOwnProperty(obj, prop) {\r\n\t return Object.prototype.hasOwnProperty.call(obj, prop);\r\n\t}\r\n\r\n\tmodule.exports = function(qs, sep, eq, options) {\r\n\t sep = sep || '&';\r\n\t eq = eq || '=';\r\n\t var obj = {};\r\n\r\n\t if (typeof qs !== 'string' || qs.length === 0) {\r\n\t return obj;\r\n\t }\r\n\r\n\t var regexp = /\\+/g;\r\n\t qs = qs.split(sep);\r\n\r\n\t var maxKeys = 1000;\r\n\t if (options && typeof options.maxKeys === 'number') {\r\n\t maxKeys = options.maxKeys;\r\n\t }\r\n\r\n\t var len = qs.length;\r\n\t // maxKeys <= 0 means that we should not limit keys count\r\n\t if (maxKeys > 0 && len > maxKeys) {\r\n\t len = maxKeys;\r\n\t }\r\n\r\n\t for (var i = 0; i < len; ++i) {\r\n\t var x = qs[i].replace(regexp, '%20'),\r\n\t idx = x.indexOf(eq),\r\n\t kstr, vstr, k, v;\r\n\r\n\t if (idx >= 0) {\r\n\t kstr = x.substr(0, idx);\r\n\t vstr = x.substr(idx + 1);\r\n\t } else {\r\n\t kstr = x;\r\n\t vstr = '';\r\n\t }\r\n\r\n\t k = decodeURIComponent(kstr);\r\n\t v = decodeURIComponent(vstr);\r\n\r\n\t if (!hasOwnProperty(obj, k)) {\r\n\t obj[k] = v;\r\n\t } else if (Array.isArray(obj[k])) {\r\n\t obj[k].push(v);\r\n\t } else {\r\n\t obj[k] = [obj[k], v];\r\n\t }\r\n\t }\r\n\r\n\t return obj;\r\n\t};\r\n\r\n\r\n/***/ },\r\n/* 9 */\r\n/***/ function(module, exports) {\r\n\r\n\t// Copyright Joyent, Inc. and other Node contributors.\r\n\t//\r\n\t// Permission is hereby granted, free of charge, to any person obtaining a\r\n\t// copy of this software and associated documentation files (the\r\n\t// \"Software\"), to deal in the Software without restriction, including\r\n\t// without limitation the rights to use, copy, modify, merge, publish,\r\n\t// distribute, sublicense, and/or sell copies of the Software, and to permit\r\n\t// persons to whom the Software is furnished to do so, subject to the\r\n\t// following conditions:\r\n\t//\r\n\t// The above copyright notice and this permission notice shall be included\r\n\t// in all copies or substantial portions of the Software.\r\n\t//\r\n\t// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\r\n\t// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\r\n\t// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\r\n\t// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\r\n\t// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\r\n\t// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\r\n\t// USE OR OTHER DEALINGS IN THE SOFTWARE.\r\n\r\n\t'use strict';\r\n\r\n\tvar stringifyPrimitive = function(v) {\r\n\t switch (typeof v) {\r\n\t case 'string':\r\n\t return v;\r\n\r\n\t case 'boolean':\r\n\t return v ? 'true' : 'false';\r\n\r\n\t case 'number':\r\n\t return isFinite(v) ? v : '';\r\n\r\n\t default:\r\n\t return '';\r\n\t }\r\n\t};\r\n\r\n\tmodule.exports = function(obj, sep, eq, name) {\r\n\t sep = sep || '&';\r\n\t eq = eq || '=';\r\n\t if (obj === null) {\r\n\t obj = undefined;\r\n\t }\r\n\r\n\t if (typeof obj === 'object') {\r\n\t return Object.keys(obj).map(function(k) {\r\n\t var ks = encodeURIComponent(stringifyPrimitive(k)) + eq;\r\n\t if (Array.isArray(obj[k])) {\r\n\t return obj[k].map(function(v) {\r\n\t return ks + encodeURIComponent(stringifyPrimitive(v));\r\n\t }).join(sep);\r\n\t } else {\r\n\t return ks + encodeURIComponent(stringifyPrimitive(obj[k]));\r\n\t }\r\n\t }).join(sep);\r\n\r\n\t }\r\n\r\n\t if (!name) return '';\r\n\t return encodeURIComponent(stringifyPrimitive(name)) + eq +\r\n\t encodeURIComponent(stringifyPrimitive(obj));\r\n\t};\r\n\r\n\r\n/***/ },\r\n/* 10 */\r\n/***/ function(module, exports) {\r\n\r\n\t'use strict';\r\n\r\n\tmodule.exports = function equal(a, b) {\r\n\t if (a === b) return true;\r\n\r\n\t var arrA = Array.isArray(a)\r\n\t , arrB = Array.isArray(b)\r\n\t , i;\r\n\r\n\t if (arrA && arrB) {\r\n\t if (a.length != b.length) return false;\r\n\t for (i = 0; i < a.length; i++)\r\n\t if (!equal(a[i], b[i])) return false;\r\n\t return true;\r\n\t }\r\n\r\n\t if (arrA != arrB) return false;\r\n\r\n\t if (a && b && typeof a === 'object' && typeof b === 'object') {\r\n\t var keys = Object.keys(a);\r\n\r\n\t if (keys.length !== Object.keys(b).length) return false;\r\n\r\n\t for (i = 0; i < keys.length; i++)\r\n\t if (b[keys[i]] === undefined) return false;\r\n\r\n\t for (i = 0; i < keys.length; i++)\r\n\t if(!equal(a[keys[i]], b[keys[i]])) return false;\r\n\r\n\t return true;\r\n\t }\r\n\r\n\t return false;\r\n\t};\r\n\r\n\r\n/***/ },\r\n/* 11 */\r\n/***/ function(module, exports, __webpack_require__) {\r\n\r\n\t'use strict';\r\n\r\n\r\n\tmodule.exports = {\r\n\t copy: copy,\r\n\t checkDataType: checkDataType,\r\n\t checkDataTypes: checkDataTypes,\r\n\t coerceToTypes: coerceToTypes,\r\n\t toHash: toHash,\r\n\t getProperty: getProperty,\r\n\t escapeQuotes: escapeQuotes,\r\n\t ucs2length: ucs2length,\r\n\t varOccurences: varOccurences,\r\n\t varReplace: varReplace,\r\n\t cleanUpCode: cleanUpCode,\r\n\t cleanUpVarErrors: cleanUpVarErrors,\r\n\t schemaHasRules: schemaHasRules,\r\n\t stableStringify: __webpack_require__(12),\r\n\t toQuotedString: toQuotedString,\r\n\t getPathExpr: getPathExpr,\r\n\t getPath: getPath,\r\n\t getData: getData,\r\n\t unescapeFragment: unescapeFragment,\r\n\t escapeFragment: escapeFragment,\r\n\t escapeJsonPointer: escapeJsonPointer\r\n\t};\r\n\r\n\r\n\tfunction copy(o, to) {\r\n\t to = to || {};\r\n\t for (var key in o) to[key] = o[key];\r\n\t return to;\r\n\t}\r\n\r\n\r\n\tfunction checkDataType(dataType, data, negate) {\r\n\t var EQUAL = negate ? ' !== ' : ' === '\r\n\t , AND = negate ? ' || ' : ' && '\r\n\t , OK = negate ? '!' : ''\r\n\t , NOT = negate ? '' : '!';\r\n\t switch (dataType) {\r\n\t case 'null': return data + EQUAL + 'null';\r\n\t case 'array': return OK + 'Array.isArray(' + data + ')';\r\n\t case 'object': return '(' + OK + data + AND +\r\n\t 'typeof ' + data + EQUAL + '\"object\"' + AND +\r\n\t NOT + 'Array.isArray(' + data + '))';\r\n\t case 'integer': return '(typeof ' + data + EQUAL + '\"number\"' + AND +\r\n\t NOT + '(' + data + ' % 1))';\r\n\t default: return 'typeof ' + data + EQUAL + '\"' + dataType + '\"';\r\n\t }\r\n\t}\r\n\r\n\r\n\tfunction checkDataTypes(dataTypes, data) {\r\n\t switch (dataTypes.length) {\r\n\t case 1: return checkDataType(dataTypes[0], data, true);\r\n\t default:\r\n\t var code = '';\r\n\t var types = toHash(dataTypes);\r\n\t if (types.array && types.object) {\r\n\t code = types.null ? '(': '(!' + data + ' || ';\r\n\t code += 'typeof ' + data + ' !== \"object\")';\r\n\t delete types.null;\r\n\t delete types.array;\r\n\t delete types.object;\r\n\t }\r\n\t if (types.number) delete types.integer;\r\n\t for (var t in types)\r\n\t code += (code ? ' && ' : '' ) + checkDataType(t, data, true);\r\n\r\n\t return code;\r\n\t }\r\n\t}\r\n\r\n\r\n\tvar COERCE_TO_TYPES = toHash([ 'string', 'number', 'integer', 'boolean', 'null' ]);\r\n\tfunction coerceToTypes(dataTypes) {\r\n\t if (Array.isArray(dataTypes)) {\r\n\t var types = [];\r\n\t for (var i=0; i= 0xD800 && value <= 0xDBFF && pos < len) {\r\n\t // high surrogate, and there is a next character\r\n\t value = str.charCodeAt(pos);\r\n\t if ((value & 0xFC00) == 0xDC00) pos++; // low surrogate\r\n\t }\r\n\t }\r\n\t return length;\r\n\t}\r\n\r\n\r\n\tfunction varOccurences(str, dataVar) {\r\n\t dataVar += '[^0-9]';\r\n\t var matches = str.match(new RegExp(dataVar, 'g'));\r\n\t return matches ? matches.length : 0;\r\n\t}\r\n\r\n\r\n\tfunction varReplace(str, dataVar, expr) {\r\n\t dataVar += '([^0-9])';\r\n\t expr = expr.replace(/\\$/g, '$$$$');\r\n\t return str.replace(new RegExp(dataVar, 'g'), expr + '$1');\r\n\t}\r\n\r\n\r\n\tvar EMPTY_ELSE = /else\\s*{\\s*}/g\r\n\t , EMPTY_IF_NO_ELSE = /if\\s*\\([^)]+\\)\\s*\\{\\s*\\}(?!\\s*else)/g\r\n\t , EMPTY_IF_WITH_ELSE = /if\\s*\\(([^)]+)\\)\\s*\\{\\s*\\}\\s*else(?!\\s*if)/g;\r\n\tfunction cleanUpCode(out) {\r\n\t return out.replace(EMPTY_ELSE, '')\r\n\t .replace(EMPTY_IF_NO_ELSE, '')\r\n\t .replace(EMPTY_IF_WITH_ELSE, 'if (!($1))');\r\n\t}\r\n\r\n\r\n\tvar ERRORS_REGEXP = /[^v\\.]errors/g\r\n\t , REMOVE_ERRORS = /var errors = 0;|var vErrors = null;|validate.errors = vErrors;/g\r\n\t , REMOVE_ERRORS_ASYNC = /var errors = 0;|var vErrors = null;/g\r\n\t , RETURN_VALID = 'return errors === 0;'\r\n\t , RETURN_TRUE = 'validate.errors = null; return true;'\r\n\t , RETURN_ASYNC = /if \\(errors === 0\\) return true;\\s*else throw new ValidationError\\(vErrors\\);/\r\n\t , RETURN_TRUE_ASYNC = 'return true;';\r\n\r\n\tfunction cleanUpVarErrors(out, async) {\r\n\t var matches = out.match(ERRORS_REGEXP);\r\n\t if (!matches || matches.length !== 2) return out;\r\n\t return async\r\n\t ? out.replace(REMOVE_ERRORS_ASYNC, '')\r\n\t .replace(RETURN_ASYNC, RETURN_TRUE_ASYNC)\r\n\t : out.replace(REMOVE_ERRORS, '')\r\n\t .replace(RETURN_VALID, RETURN_TRUE);\r\n\t}\r\n\r\n\r\n\tfunction schemaHasRules(schema, rules) {\r\n\t for (var key in schema) if (rules[key]) return true;\r\n\t}\r\n\r\n\r\n\tfunction toQuotedString(str) {\r\n\t return '\\'' + escapeQuotes(str) + '\\'';\r\n\t}\r\n\r\n\r\n\tfunction getPathExpr(currentPath, expr, jsonPointers, isNumber) {\r\n\t var path = jsonPointers // false by default\r\n\t ? '\\'/\\' + ' + expr + (isNumber ? '' : '.replace(/~/g, \\'~0\\').replace(/\\\\//g, \\'~1\\')')\r\n\t : (isNumber ? '\\'[\\' + ' + expr + ' + \\']\\'' : '\\'[\\\\\\'\\' + ' + expr + ' + \\'\\\\\\']\\'');\r\n\t return joinPaths(currentPath, path);\r\n\t}\r\n\r\n\r\n\tfunction getPath(currentPath, prop, jsonPointers) {\r\n\t var path = jsonPointers // false by default\r\n\t ? toQuotedString('/' + escapeJsonPointer(prop))\r\n\t : toQuotedString(getProperty(prop));\r\n\t return joinPaths(currentPath, path);\r\n\t}\r\n\r\n\r\n\tvar RELATIVE_JSON_POINTER = /^([0-9]+)(#|\\/(?:[^~]|~0|~1)*)?$/;\r\n\tfunction getData($data, lvl, paths) {\r\n\t var matches = $data.match(RELATIVE_JSON_POINTER);\r\n\t if (!matches) throw new Error('Invalid relative JSON-pointer: ' + $data);\r\n\t var up = +matches[1];\r\n\t var jsonPointer = matches[2];\r\n\t if (jsonPointer == '#') {\r\n\t if (up >= lvl) throw new Error('Cannot access property/index ' + up + ' levels up, current level is ' + lvl);\r\n\t return paths[lvl - up];\r\n\t }\r\n\r\n\t if (up > lvl) throw new Error('Cannot access data ' + up + ' levels up, current level is ' + lvl);\r\n\t var data = 'data' + ((lvl - up) || '');\r\n\t if (!jsonPointer) return data;\r\n\r\n\t var expr = data;\r\n\t var segments = jsonPointer.split('/');\r\n\t for (var i=0; i= '0' && ch <= '9') {\r\n\t string += ch;\r\n\t next();\r\n\t }\r\n\t if (ch === '.') {\r\n\t string += '.';\r\n\t while (next() && ch >= '0' && ch <= '9') {\r\n\t string += ch;\r\n\t }\r\n\t }\r\n\t if (ch === 'e' || ch === 'E') {\r\n\t string += ch;\r\n\t next();\r\n\t if (ch === '-' || ch === '+') {\r\n\t string += ch;\r\n\t next();\r\n\t }\r\n\t while (ch >= '0' && ch <= '9') {\r\n\t string += ch;\r\n\t next();\r\n\t }\r\n\t }\r\n\t number = +string;\r\n\t if (!isFinite(number)) {\r\n\t error(\"Bad number\");\r\n\t } else {\r\n\t return number;\r\n\t }\r\n\t },\r\n\t \r\n\t string = function () {\r\n\t // Parse a string value.\r\n\t var hex,\r\n\t i,\r\n\t string = '',\r\n\t uffff;\r\n\t \r\n\t // When parsing for string values, we must look for \" and \\ characters.\r\n\t if (ch === '\"') {\r\n\t while (next()) {\r\n\t if (ch === '\"') {\r\n\t next();\r\n\t return string;\r\n\t } else if (ch === '\\\\') {\r\n\t next();\r\n\t if (ch === 'u') {\r\n\t uffff = 0;\r\n\t for (i = 0; i < 4; i += 1) {\r\n\t hex = parseInt(next(), 16);\r\n\t if (!isFinite(hex)) {\r\n\t break;\r\n\t }\r\n\t uffff = uffff * 16 + hex;\r\n\t }\r\n\t string += String.fromCharCode(uffff);\r\n\t } else if (typeof escapee[ch] === 'string') {\r\n\t string += escapee[ch];\r\n\t } else {\r\n\t break;\r\n\t }\r\n\t } else {\r\n\t string += ch;\r\n\t }\r\n\t }\r\n\t }\r\n\t error(\"Bad string\");\r\n\t },\r\n\r\n\t white = function () {\r\n\r\n\t// Skip whitespace.\r\n\r\n\t while (ch && ch <= ' ') {\r\n\t next();\r\n\t }\r\n\t },\r\n\r\n\t word = function () {\r\n\r\n\t// true, false, or null.\r\n\r\n\t switch (ch) {\r\n\t case 't':\r\n\t next('t');\r\n\t next('r');\r\n\t next('u');\r\n\t next('e');\r\n\t return true;\r\n\t case 'f':\r\n\t next('f');\r\n\t next('a');\r\n\t next('l');\r\n\t next('s');\r\n\t next('e');\r\n\t return false;\r\n\t case 'n':\r\n\t next('n');\r\n\t next('u');\r\n\t next('l');\r\n\t next('l');\r\n\t return null;\r\n\t }\r\n\t error(\"Unexpected '\" + ch + \"'\");\r\n\t },\r\n\r\n\t value, // Place holder for the value function.\r\n\r\n\t array = function () {\r\n\r\n\t// Parse an array value.\r\n\r\n\t var array = [];\r\n\r\n\t if (ch === '[') {\r\n\t next('[');\r\n\t white();\r\n\t if (ch === ']') {\r\n\t next(']');\r\n\t return array; // empty array\r\n\t }\r\n\t while (ch) {\r\n\t array.push(value());\r\n\t white();\r\n\t if (ch === ']') {\r\n\t next(']');\r\n\t return array;\r\n\t }\r\n\t next(',');\r\n\t white();\r\n\t }\r\n\t }\r\n\t error(\"Bad array\");\r\n\t },\r\n\r\n\t object = function () {\r\n\r\n\t// Parse an object value.\r\n\r\n\t var key,\r\n\t object = {};\r\n\r\n\t if (ch === '{') {\r\n\t next('{');\r\n\t white();\r\n\t if (ch === '}') {\r\n\t next('}');\r\n\t return object; // empty object\r\n\t }\r\n\t while (ch) {\r\n\t key = string();\r\n\t white();\r\n\t next(':');\r\n\t if (Object.hasOwnProperty.call(object, key)) {\r\n\t error('Duplicate key \"' + key + '\"');\r\n\t }\r\n\t object[key] = value();\r\n\t white();\r\n\t if (ch === '}') {\r\n\t next('}');\r\n\t return object;\r\n\t }\r\n\t next(',');\r\n\t white();\r\n\t }\r\n\t }\r\n\t error(\"Bad object\");\r\n\t };\r\n\r\n\tvalue = function () {\r\n\r\n\t// Parse a JSON value. It could be an object, an array, a string, a number,\r\n\t// or a word.\r\n\r\n\t white();\r\n\t switch (ch) {\r\n\t case '{':\r\n\t return object();\r\n\t case '[':\r\n\t return array();\r\n\t case '\"':\r\n\t return string();\r\n\t case '-':\r\n\t return number();\r\n\t default:\r\n\t return ch >= '0' && ch <= '9' ? number() : word();\r\n\t }\r\n\t};\r\n\r\n\t// Return the json_parse function. It will have access to all of the above\r\n\t// functions and variables.\r\n\r\n\tmodule.exports = function (source, reviver) {\r\n\t var result;\r\n\t \r\n\t text = source;\r\n\t at = 0;\r\n\t ch = ' ';\r\n\t result = value();\r\n\t white();\r\n\t if (ch) {\r\n\t error(\"Syntax error\");\r\n\t }\r\n\r\n\t // If there is a reviver function, we recursively walk the new structure,\r\n\t // passing each name/value pair to the reviver function for possible\r\n\t // transformation, starting with a temporary root object that holds the result\r\n\t // in an empty key. If there is not a reviver function, we simply return the\r\n\t // result.\r\n\r\n\t return typeof reviver === 'function' ? (function walk(holder, key) {\r\n\t var k, v, value = holder[key];\r\n\t if (value && typeof value === 'object') {\r\n\t for (k in value) {\r\n\t if (Object.prototype.hasOwnProperty.call(value, k)) {\r\n\t v = walk(value, k);\r\n\t if (v !== undefined) {\r\n\t value[k] = v;\r\n\t } else {\r\n\t delete value[k];\r\n\t }\r\n\t }\r\n\t }\r\n\t }\r\n\t return reviver.call(holder, key, value);\r\n\t }({'': result}, '')) : result;\r\n\t};\r\n\r\n\r\n/***/ },\r\n/* 15 */\r\n/***/ function(module, exports) {\r\n\r\n\tvar cx = /[\\u0000\\u00ad\\u0600-\\u0604\\u070f\\u17b4\\u17b5\\u200c-\\u200f\\u2028-\\u202f\\u2060-\\u206f\\ufeff\\ufff0-\\uffff]/g,\r\n\t escapable = /[\\\\\\\"\\x00-\\x1f\\x7f-\\x9f\\u00ad\\u0600-\\u0604\\u070f\\u17b4\\u17b5\\u200c-\\u200f\\u2028-\\u202f\\u2060-\\u206f\\ufeff\\ufff0-\\uffff]/g,\r\n\t gap,\r\n\t indent,\r\n\t meta = { // table of character substitutions\r\n\t '\\b': '\\\\b',\r\n\t '\\t': '\\\\t',\r\n\t '\\n': '\\\\n',\r\n\t '\\f': '\\\\f',\r\n\t '\\r': '\\\\r',\r\n\t '\"' : '\\\\\"',\r\n\t '\\\\': '\\\\\\\\'\r\n\t },\r\n\t rep;\r\n\r\n\tfunction quote(string) {\r\n\t // If the string contains no control characters, no quote characters, and no\r\n\t // backslash characters, then we can safely slap some quotes around it.\r\n\t // Otherwise we must also replace the offending characters with safe escape\r\n\t // sequences.\r\n\t \r\n\t escapable.lastIndex = 0;\r\n\t return escapable.test(string) ? '\"' + string.replace(escapable, function (a) {\r\n\t var c = meta[a];\r\n\t return typeof c === 'string' ? c :\r\n\t '\\\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4);\r\n\t }) + '\"' : '\"' + string + '\"';\r\n\t}\r\n\r\n\tfunction str(key, holder) {\r\n\t // Produce a string from holder[key].\r\n\t var i, // The loop counter.\r\n\t k, // The member key.\r\n\t v, // The member value.\r\n\t length,\r\n\t mind = gap,\r\n\t partial,\r\n\t value = holder[key];\r\n\t \r\n\t // If the value has a toJSON method, call it to obtain a replacement value.\r\n\t if (value && typeof value === 'object' &&\r\n\t typeof value.toJSON === 'function') {\r\n\t value = value.toJSON(key);\r\n\t }\r\n\t \r\n\t // If we were called with a replacer function, then call the replacer to\r\n\t // obtain a replacement value.\r\n\t if (typeof rep === 'function') {\r\n\t value = rep.call(holder, key, value);\r\n\t }\r\n\t \r\n\t // What happens next depends on the value's type.\r\n\t switch (typeof value) {\r\n\t case 'string':\r\n\t return quote(value);\r\n\t \r\n\t case 'number':\r\n\t // JSON numbers must be finite. Encode non-finite numbers as null.\r\n\t return isFinite(value) ? String(value) : 'null';\r\n\t \r\n\t case 'boolean':\r\n\t case 'null':\r\n\t // If the value is a boolean or null, convert it to a string. Note:\r\n\t // typeof null does not produce 'null'. The case is included here in\r\n\t // the remote chance that this gets fixed someday.\r\n\t return String(value);\r\n\t \r\n\t case 'object':\r\n\t if (!value) return 'null';\r\n\t gap += indent;\r\n\t partial = [];\r\n\t \r\n\t // Array.isArray\r\n\t if (Object.prototype.toString.apply(value) === '[object Array]') {\r\n\t length = value.length;\r\n\t for (i = 0; i < length; i += 1) {\r\n\t partial[i] = str(i, value) || 'null';\r\n\t }\r\n\t \r\n\t // Join all of the elements together, separated with commas, and\r\n\t // wrap them in brackets.\r\n\t v = partial.length === 0 ? '[]' : gap ?\r\n\t '[\\n' + gap + partial.join(',\\n' + gap) + '\\n' + mind + ']' :\r\n\t '[' + partial.join(',') + ']';\r\n\t gap = mind;\r\n\t return v;\r\n\t }\r\n\t \r\n\t // If the replacer is an array, use it to select the members to be\r\n\t // stringified.\r\n\t if (rep && typeof rep === 'object') {\r\n\t length = rep.length;\r\n\t for (i = 0; i < length; i += 1) {\r\n\t k = rep[i];\r\n\t if (typeof k === 'string') {\r\n\t v = str(k, value);\r\n\t if (v) {\r\n\t partial.push(quote(k) + (gap ? ': ' : ':') + v);\r\n\t }\r\n\t }\r\n\t }\r\n\t }\r\n\t else {\r\n\t // Otherwise, iterate through all of the keys in the object.\r\n\t for (k in value) {\r\n\t if (Object.prototype.hasOwnProperty.call(value, k)) {\r\n\t v = str(k, value);\r\n\t if (v) {\r\n\t partial.push(quote(k) + (gap ? ': ' : ':') + v);\r\n\t }\r\n\t }\r\n\t }\r\n\t }\r\n\t \r\n\t // Join all of the member texts together, separated with commas,\r\n\t // and wrap them in braces.\r\n\r\n\t v = partial.length === 0 ? '{}' : gap ?\r\n\t '{\\n' + gap + partial.join(',\\n' + gap) + '\\n' + mind + '}' :\r\n\t '{' + partial.join(',') + '}';\r\n\t gap = mind;\r\n\t return v;\r\n\t }\r\n\t}\r\n\r\n\tmodule.exports = function (value, replacer, space) {\r\n\t var i;\r\n\t gap = '';\r\n\t indent = '';\r\n\t \r\n\t // If the space parameter is a number, make an indent string containing that\r\n\t // many spaces.\r\n\t if (typeof space === 'number') {\r\n\t for (i = 0; i < space; i += 1) {\r\n\t indent += ' ';\r\n\t }\r\n\t }\r\n\t // If the space parameter is a string, it will be used as the indent string.\r\n\t else if (typeof space === 'string') {\r\n\t indent = space;\r\n\t }\r\n\r\n\t // If there is a replacer, it must be a function or an array.\r\n\t // Otherwise, throw an error.\r\n\t rep = replacer;\r\n\t if (replacer && typeof replacer !== 'function'\r\n\t && (typeof replacer !== 'object' || typeof replacer.length !== 'number')) {\r\n\t throw new Error('JSON.stringify');\r\n\t }\r\n\t \r\n\t // Make a fake root object containing our value under the key of ''.\r\n\t // Return the result of stringifying the value.\r\n\t return str('', {'': value});\r\n\t};\r\n\r\n\r\n/***/ },\r\n/* 16 */\r\n/***/ function(module, exports, __webpack_require__) {\r\n\r\n\t'use strict';\r\n\r\n\tvar util = __webpack_require__(11);\r\n\r\n\tmodule.exports = SchemaObject;\r\n\r\n\tfunction SchemaObject(obj) {\r\n\t util.copy(obj, this);\r\n\t}\r\n\r\n\r\n/***/ },\r\n/* 17 */\r\n/***/ function(module, exports, __webpack_require__) {\r\n\r\n\t'use strict';\r\n\r\n\tmodule.exports = {\r\n\t setup: setupAsync,\r\n\t compile: compileAsync\r\n\t};\r\n\r\n\r\n\tvar util = __webpack_require__(11);\r\n\r\n\tvar ASYNC = {\r\n\t '*': checkGenerators,\r\n\t 'co*': checkGenerators,\r\n\t 'es7': checkAsyncFunction\r\n\t};\r\n\r\n\tvar TRANSPILE = {\r\n\t 'nodent': getNodent,\r\n\t 'regenerator': getRegenerator\r\n\t};\r\n\r\n\tvar MODES = [\r\n\t { async: 'co*' },\r\n\t { async: 'es7', transpile: 'nodent' },\r\n\t { async: 'co*', transpile: 'regenerator' }\r\n\t];\r\n\r\n\r\n\tvar regenerator, nodent;\r\n\r\n\r\n\tfunction setupAsync(opts, required) {\r\n\t if (required !== false) required = true;\r\n\t var async = opts.async\r\n\t , transpile = opts.transpile\r\n\t , check;\r\n\r\n\t switch (typeof transpile) {\r\n\t case 'string':\r\n\t var get = TRANSPILE[transpile];\r\n\t if (!get) throw new Error('bad transpiler: ' + transpile);\r\n\t return (opts._transpileFunc = get(opts, required));\r\n\t case 'undefined':\r\n\t case 'boolean':\r\n\t if (typeof async == 'string') {\r\n\t check = ASYNC[async];\r\n\t if (!check) throw new Error('bad async mode: ' + async);\r\n\t return (opts.transpile = check(opts, required));\r\n\t }\r\n\r\n\t for (var i=0; i 2) res = slice.call(arguments, 1);\r\n\t resolve(res);\r\n\t });\r\n\t });\r\n\t}\r\n\r\n\t/**\r\n\t * Convert an array of \"yieldables\" to a promise.\r\n\t * Uses `Promise.all()` internally.\r\n\t *\r\n\t * @param {Array} obj\r\n\t * @return {Promise}\r\n\t * @api private\r\n\t */\r\n\r\n\tfunction arrayToPromise(obj) {\r\n\t return Promise.all(obj.map(toPromise, this));\r\n\t}\r\n\r\n\t/**\r\n\t * Convert an object of \"yieldables\" to a promise.\r\n\t * Uses `Promise.all()` internally.\r\n\t *\r\n\t * @param {Object} obj\r\n\t * @return {Promise}\r\n\t * @api private\r\n\t */\r\n\r\n\tfunction objectToPromise(obj){\r\n\t var results = new obj.constructor();\r\n\t var keys = Object.keys(obj);\r\n\t var promises = [];\r\n\t for (var i = 0; i < keys.length; i++) {\r\n\t var key = keys[i];\r\n\t var promise = toPromise.call(this, obj[key]);\r\n\t if (promise && isPromise(promise)) defer(promise, key);\r\n\t else results[key] = obj[key];\r\n\t }\r\n\t return Promise.all(promises).then(function () {\r\n\t return results;\r\n\t });\r\n\r\n\t function defer(promise, key) {\r\n\t // predefine the key in the result\r\n\t results[key] = undefined;\r\n\t promises.push(promise.then(function (res) {\r\n\t results[key] = res;\r\n\t }));\r\n\t }\r\n\t}\r\n\r\n\t/**\r\n\t * Check if `obj` is a promise.\r\n\t *\r\n\t * @param {Object} obj\r\n\t * @return {Boolean}\r\n\t * @api private\r\n\t */\r\n\r\n\tfunction isPromise(obj) {\r\n\t return 'function' == typeof obj.then;\r\n\t}\r\n\r\n\t/**\r\n\t * Check if `obj` is a generator.\r\n\t *\r\n\t * @param {Mixed} obj\r\n\t * @return {Boolean}\r\n\t * @api private\r\n\t */\r\n\r\n\tfunction isGenerator(obj) {\r\n\t return 'function' == typeof obj.next && 'function' == typeof obj.throw;\r\n\t}\r\n\r\n\t/**\r\n\t * Check if `obj` is a generator function.\r\n\t *\r\n\t * @param {Mixed} obj\r\n\t * @return {Boolean}\r\n\t * @api private\r\n\t */\r\n\tfunction isGeneratorFunction(obj) {\r\n\t var constructor = obj.constructor;\r\n\t if (!constructor) return false;\r\n\t if ('GeneratorFunction' === constructor.name || 'GeneratorFunction' === constructor.displayName) return true;\r\n\t return isGenerator(constructor.prototype);\r\n\t}\r\n\r\n\t/**\r\n\t * Check for plain object.\r\n\t *\r\n\t * @param {Mixed} val\r\n\t * @return {Boolean}\r\n\t * @api private\r\n\t */\r\n\r\n\tfunction isObject(val) {\r\n\t return Object == val.constructor;\r\n\t}\r\n\r\n\r\n/***/ },\r\n/* 20 */\r\n/***/ function(module, exports) {\r\n\r\n\t'use strict';\r\n\r\n\tmodule.exports = ValidationError;\r\n\r\n\r\n\tfunction ValidationError(errors) {\r\n\t this.message = 'validation failed';\r\n\t this.errors = errors;\r\n\t this.ajv = this.validation = true;\r\n\t}\r\n\r\n\r\n\tValidationError.prototype = Object.create(Error.prototype);\r\n\tValidationError.prototype.constructor = ValidationError;\r\n\r\n\r\n/***/ },\r\n/* 21 */\r\n/***/ function(module, exports) {\r\n\r\n\t'use strict';\r\n\r\n\r\n\tvar Cache = module.exports = function Cache() {\r\n\t this._cache = {};\r\n\t};\r\n\r\n\r\n\tCache.prototype.put = function Cache_put(key, value) {\r\n\t this._cache[key] = value;\r\n\t};\r\n\r\n\r\n\tCache.prototype.get = function Cache_get(key) {\r\n\t return this._cache[key];\r\n\t};\r\n\r\n\r\n\tCache.prototype.del = function Cache_del(key) {\r\n\t delete this._cache[key];\r\n\t};\r\n\r\n\r\n\tCache.prototype.clear = function Cache_clear() {\r\n\t this._cache = {};\r\n\t};\r\n\r\n\r\n/***/ },\r\n/* 22 */\r\n/***/ function(module, exports, __webpack_require__) {\r\n\r\n\t'use strict';\r\n\r\n\tvar util = __webpack_require__(11);\r\n\r\n\tvar DATE = /^\\d\\d\\d\\d-(\\d\\d)-(\\d\\d)$/;\r\n\tvar DAYS = [0,31,29,31,30,31,30,31,31,30,31,30,31];\r\n\tvar TIME = /^(\\d\\d):(\\d\\d):(\\d\\d)(\\.\\d+)?(z|[+-]\\d\\d:\\d\\d)?$/i;\r\n\tvar HOSTNAME = /^[a-z](?:(?:[-0-9a-z]{0,61})?[0-9a-z])?(\\.[a-z](?:(?:[-0-9a-z]{0,61})?[0-9a-z])?)*$/i;\r\n\tvar URI = /^(?:[a-z][a-z0-9+\\-.]*:)?(?:\\/?\\/(?:(?:[a-z0-9\\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|[Vv][0-9a-f]+\\.[a-z0-9\\-._~!$&'()*+,;=:]+)\\]|(?:(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)|(?:[a-z0-9\\-._~!$&'()*+,;=]|%[0-9a-f]{2})*)(?::\\d*)?(?:\\/(?:[a-z0-9\\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*|\\/(?:(?:[a-z0-9\\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\\/(?:[a-z0-9\\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[a-z0-9\\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\\/(?:[a-z0-9\\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)(?:\\?(?:[a-z0-9\\-._~!$&'()*+,;=:@\\/?]|%[0-9a-f]{2})*)?(?:\\#(?:[a-z0-9\\-._~!$&'()*+,;=:@\\/?]|%[0-9a-f]{2})*)?$/i;\r\n\tvar UUID = /^(?:urn\\:uuid\\:)?[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/i;\r\n\tvar JSON_POINTER = /^(?:\\/(?:[^~\\/]|~0|~1)+)*(?:\\/)?$|^\\#(?:\\/(?:[a-z0-9_\\-\\.!$&'()*+,;:=@]|%[0-9a-f]{2}|~0|~1)+)*(?:\\/)?$/i;\r\n\tvar RELATIVE_JSON_POINTER = /^(?:0|[1-9][0-9]*)(?:\\#|(?:\\/(?:[^~\\/]|~0|~1)+)*(?:\\/)?)$/;\r\n\r\n\r\n\tmodule.exports = formats;\r\n\r\n\tfunction formats(mode) {\r\n\t mode = mode == 'full' ? 'full' : 'fast';\r\n\t var formatDefs = util.copy(formats[mode]);\r\n\t for (var fName in formats.compare) {\r\n\t formatDefs[fName] = {\r\n\t validate: formatDefs[fName],\r\n\t compare: formats.compare[fName]\r\n\t };\r\n\t }\r\n\t return formatDefs;\r\n\t}\r\n\r\n\r\n\tformats.fast = {\r\n\t // date: http://tools.ietf.org/html/rfc3339#section-5.6\r\n\t date: /^\\d\\d\\d\\d-[0-1]\\d-[0-3]\\d$/,\r\n\t // date-time: http://tools.ietf.org/html/rfc3339#section-5.6\r\n\t time: /^[0-2]\\d:[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:z|[+-]\\d\\d:\\d\\d)?$/i,\r\n\t 'date-time': /^\\d\\d\\d\\d-[0-1]\\d-[0-3]\\d[t\\s][0-2]\\d:[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:z|[+-]\\d\\d:\\d\\d)$/i,\r\n\t // uri: https://github.com/mafintosh/is-my-json-valid/blob/master/formats.js\r\n\t uri: /^(?:[a-z][a-z0-9+-.]*)?(?:\\:|\\/)\\/?[^\\s]*$/i,\r\n\t // email (sources from jsen validator):\r\n\t // http://stackoverflow.com/questions/201323/using-a-regular-expression-to-validate-an-email-address#answer-8829363\r\n\t // http://www.w3.org/TR/html5/forms.html#valid-e-mail-address (search for 'willful violation')\r\n\t email: /^[a-z0-9.!#$%&'*+\\/=?^_`{|}~-]+@[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\\.[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?)*$/i,\r\n\t hostname: HOSTNAME,\r\n\t // optimized https://www.safaribooksonline.com/library/view/regular-expressions-cookbook/9780596802837/ch07s16.html\r\n\t ipv4: /^(?:(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)$/,\r\n\t // optimized http://stackoverflow.com/questions/53497/regular-expression-that-matches-valid-ipv6-addresses\r\n\t ipv6: /^\\s*(?:(?:(?:[0-9a-f]{1,4}:){7}(?:[0-9a-f]{1,4}|:))|(?:(?:[0-9a-f]{1,4}:){6}(?::[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){5}(?:(?:(?::[0-9a-f]{1,4}){1,2})|:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){4}(?:(?:(?::[0-9a-f]{1,4}){1,3})|(?:(?::[0-9a-f]{1,4})?:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){3}(?:(?:(?::[0-9a-f]{1,4}){1,4})|(?:(?::[0-9a-f]{1,4}){0,2}:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){2}(?:(?:(?::[0-9a-f]{1,4}){1,5})|(?:(?::[0-9a-f]{1,4}){0,3}:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){1}(?:(?:(?::[0-9a-f]{1,4}){1,6})|(?:(?::[0-9a-f]{1,4}){0,4}:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(?::(?:(?:(?::[0-9a-f]{1,4}){1,7})|(?:(?::[0-9a-f]{1,4}){0,5}:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:)))(?:%.+)?\\s*$/i,\r\n\t regex: regex,\r\n\t // uuid: http://tools.ietf.org/html/rfc4122\r\n\t uuid: UUID,\r\n\t // JSON-pointer: https://tools.ietf.org/html/rfc6901\r\n\t // uri fragment: https://tools.ietf.org/html/rfc3986#appendix-A\r\n\t 'json-pointer': JSON_POINTER,\r\n\t // relative JSON-pointer: http://tools.ietf.org/html/draft-luff-relative-json-pointer-00\r\n\t 'relative-json-pointer': RELATIVE_JSON_POINTER\r\n\t};\r\n\r\n\r\n\tformats.full = {\r\n\t date: date,\r\n\t time: time,\r\n\t 'date-time': date_time,\r\n\t uri: uri,\r\n\t email: /^[a-z0-9!#$%&'*+\\/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&''*+\\/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/i,\r\n\t hostname: hostname,\r\n\t ipv4: /^(?:(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)$/,\r\n\t ipv6: /^\\s*(?:(?:(?:[0-9a-f]{1,4}:){7}(?:[0-9a-f]{1,4}|:))|(?:(?:[0-9a-f]{1,4}:){6}(?::[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){5}(?:(?:(?::[0-9a-f]{1,4}){1,2})|:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){4}(?:(?:(?::[0-9a-f]{1,4}){1,3})|(?:(?::[0-9a-f]{1,4})?:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){3}(?:(?:(?::[0-9a-f]{1,4}){1,4})|(?:(?::[0-9a-f]{1,4}){0,2}:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){2}(?:(?:(?::[0-9a-f]{1,4}){1,5})|(?:(?::[0-9a-f]{1,4}){0,3}:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){1}(?:(?:(?::[0-9a-f]{1,4}){1,6})|(?:(?::[0-9a-f]{1,4}){0,4}:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(?::(?:(?:(?::[0-9a-f]{1,4}){1,7})|(?:(?::[0-9a-f]{1,4}){0,5}:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:)))(?:%.+)?\\s*$/i,\r\n\t regex: regex,\r\n\t uuid: UUID,\r\n\t 'json-pointer': JSON_POINTER,\r\n\t 'relative-json-pointer': RELATIVE_JSON_POINTER\r\n\t};\r\n\r\n\r\n\tformats.compare = {\r\n\t date: compareDate,\r\n\t time: compareTime,\r\n\t 'date-time': compareDateTime\r\n\t};\r\n\r\n\r\n\tfunction date(str) {\r\n\t // full-date from http://tools.ietf.org/html/rfc3339#section-5.6\r\n\t var matches = str.match(DATE);\r\n\t if (!matches) return false;\r\n\r\n\t var month = +matches[1];\r\n\t var day = +matches[2];\r\n\t return month >= 1 && month <= 12 && day >= 1 && day <= DAYS[month];\r\n\t}\r\n\r\n\r\n\tfunction time(str, full) {\r\n\t var matches = str.match(TIME);\r\n\t if (!matches) return false;\r\n\r\n\t var hour = matches[1];\r\n\t var minute = matches[2];\r\n\t var second = matches[3];\r\n\t var timeZone = matches[5];\r\n\t return hour <= 23 && minute <= 59 && second <= 59 && (!full || timeZone);\r\n\t}\r\n\r\n\r\n\tvar DATE_TIME_SEPARATOR = /t|\\s/i;\r\n\tfunction date_time(str) {\r\n\t // http://tools.ietf.org/html/rfc3339#section-5.6\r\n\t var dateTime = str.split(DATE_TIME_SEPARATOR);\r\n\t return date(dateTime[0]) && time(dateTime[1], true);\r\n\t}\r\n\r\n\r\n\tfunction hostname(str) {\r\n\t // http://tools.ietf.org/html/rfc1034#section-3.5\r\n\t return str.length <= 255 && HOSTNAME.test(str);\r\n\t}\r\n\r\n\r\n\tvar NOT_URI_FRAGMENT = /\\/|\\:/;\r\n\tfunction uri(str) {\r\n\t // http://jmrware.com/articles/2009/uri_regexp/URI_regex.html + optional protocol + required \".\"\r\n\t return NOT_URI_FRAGMENT.test(str) && URI.test(str);\r\n\t}\r\n\r\n\r\n\tfunction regex(str) {\r\n\t try {\r\n\t new RegExp(str);\r\n\t return true;\r\n\t } catch(e) {\r\n\t return false;\r\n\t }\r\n\t}\r\n\r\n\r\n\tfunction compareDate(d1, d2) {\r\n\t if (!(d1 && d2)) return;\r\n\t if (d1 > d2) return 1;\r\n\t if (d1 < d2) return -1;\r\n\t if (d1 === d2) return 0;\r\n\t}\r\n\r\n\r\n\tfunction compareTime(t1, t2) {\r\n\t if (!(t1 && t2)) return;\r\n\t t1 = t1.match(TIME);\r\n\t t2 = t2.match(TIME);\r\n\t if (!(t1 && t2)) return;\r\n\t t1 = t1[1] + t1[2] + t1[3] + (t1[4]||'');\r\n\t t2 = t2[1] + t2[2] + t2[3] + (t2[4]||'');\r\n\t if (t1 > t2) return 1;\r\n\t if (t1 < t2) return -1;\r\n\t if (t1 === t2) return 0;\r\n\t}\r\n\r\n\r\n\tfunction compareDateTime(dt1, dt2) {\r\n\t if (!(dt1 && dt2)) return;\r\n\t dt1 = dt1.split(DATE_TIME_SEPARATOR);\r\n\t dt2 = dt2.split(DATE_TIME_SEPARATOR);\r\n\t var res = compareDate(dt1[0], dt2[0]);\r\n\t if (res === undefined) return;\r\n\t return res || compareTime(dt1[1], dt2[1]);\r\n\t}\r\n\r\n\r\n/***/ },\r\n/* 23 */\r\n/***/ function(module, exports, __webpack_require__) {\r\n\r\n\t'use strict';\r\n\r\n\tvar ruleModules = __webpack_require__(24)\r\n\t , util = __webpack_require__(11);\r\n\r\n\tmodule.exports = function rules() {\r\n\t var RULES = [\r\n\t { type: 'number',\r\n\t rules: [ 'maximum', 'minimum', 'multipleOf'] },\r\n\t { type: 'string',\r\n\t rules: [ 'maxLength', 'minLength', 'pattern', 'format' ] },\r\n\t { type: 'array',\r\n\t rules: [ 'maxItems', 'minItems', 'uniqueItems', 'items' ] },\r\n\t { type: 'object',\r\n\t rules: [ 'maxProperties', 'minProperties', 'required', 'dependencies', 'properties' ] },\r\n\t { rules: [ '$ref', 'enum', 'not', 'anyOf', 'oneOf', 'allOf' ] }\r\n\t ];\r\n\r\n\t RULES.all = [ 'type', 'additionalProperties', 'patternProperties' ];\r\n\t RULES.keywords = [ 'additionalItems', '$schema', 'id', 'title', 'description', 'default' ];\r\n\t RULES.types = [ 'number', 'integer', 'string', 'array', 'object', 'boolean', 'null' ];\r\n\r\n\t RULES.forEach(function (group) {\r\n\t group.rules = group.rules.map(function (keyword) {\r\n\t RULES.all.push(keyword);\r\n\t return {\r\n\t keyword: keyword,\r\n\t code: ruleModules[keyword]\r\n\t };\r\n\t });\r\n\t });\r\n\r\n\t RULES.keywords = util.toHash(RULES.all.concat(RULES.keywords));\r\n\t RULES.all = util.toHash(RULES.all);\r\n\t RULES.types = util.toHash(RULES.types);\r\n\r\n\t return RULES;\r\n\t};\r\n\r\n\r\n/***/ },\r\n/* 24 */\r\n/***/ function(module, exports, __webpack_require__) {\r\n\r\n\t'use strict';\r\n\r\n\t//all requires must be explicit because browserify won't work with dynamic requires\r\n\tmodule.exports = {\r\n\t '$ref': __webpack_require__(25),\r\n\t allOf: __webpack_require__(26),\r\n\t anyOf: __webpack_require__(27),\r\n\t dependencies: __webpack_require__(28),\r\n\t enum: __webpack_require__(29),\r\n\t format: __webpack_require__(30),\r\n\t items: __webpack_require__(31),\r\n\t maximum: __webpack_require__(32),\r\n\t minimum: __webpack_require__(32),\r\n\t maxItems: __webpack_require__(33),\r\n\t minItems: __webpack_require__(33),\r\n\t maxLength: __webpack_require__(34),\r\n\t minLength: __webpack_require__(34),\r\n\t maxProperties: __webpack_require__(35),\r\n\t minProperties: __webpack_require__(35),\r\n\t multipleOf: __webpack_require__(36),\r\n\t not: __webpack_require__(37),\r\n\t oneOf: __webpack_require__(38),\r\n\t pattern: __webpack_require__(39),\r\n\t properties: __webpack_require__(40),\r\n\t required: __webpack_require__(41),\r\n\t uniqueItems: __webpack_require__(42),\r\n\t validate: __webpack_require__(18)\r\n\t};\r\n\r\n\r\n/***/ },\r\n/* 25 */\r\n/***/ function(module, exports) {\r\n\r\n\t'use strict';\r\n\tmodule.exports = function generate_ref(it, $keyword) {\r\n\t var out = ' ';\r\n\t var $lvl = it.level;\r\n\t var $dataLvl = it.dataLevel;\r\n\t var $schema = it.schema[$keyword];\r\n\t var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\r\n\t var $breakOnError = !it.opts.allErrors;\r\n\t var $errorKeyword;\r\n\t var $data = 'data' + ($dataLvl || '');\r\n\t var $valid = 'valid' + $lvl;\r\n\t var $async, $refCode;\r\n\t if ($schema == '#' || $schema == '#/') {\r\n\t if (it.isRoot) {\r\n\t $async = it.async;\r\n\t $refCode = 'validate';\r\n\t } else {\r\n\t $async = it.root.schema.$async === true;\r\n\t $refCode = 'root.refVal[0]';\r\n\t }\r\n\t } else {\r\n\t var $refVal = it.resolveRef(it.baseId, $schema, it.isRoot);\r\n\t if ($refVal === undefined) {\r\n\t var $message = 'can\\'t resolve reference ' + $schema + ' from id ' + it.baseId;\r\n\t if (it.opts.missingRefs == 'fail') {\r\n\t console.log($message);\r\n\t var $$outStack = $$outStack || [];\r\n\t $$outStack.push(out);\r\n\t out = ''; /* istanbul ignore else */\r\n\t if (it.createErrors !== false) {\r\n\t out += ' { keyword: \\'' + ($errorKeyword || '$ref') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: \"' + ($errSchemaPath) + '\" , params: { ref: \\'' + (it.util.escapeQuotes($schema)) + '\\' } ';\r\n\t if (it.opts.messages !== false) {\r\n\t out += ' , message: \\'can\\\\\\'t resolve reference ' + (it.util.escapeQuotes($schema)) + '\\' ';\r\n\t }\r\n\t if (it.opts.verbose) {\r\n\t out += ' , schema: ' + (it.util.toQuotedString($schema)) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\r\n\t }\r\n\t out += ' } ';\r\n\t } else {\r\n\t out += ' {} ';\r\n\t }\r\n\t var __err = out;\r\n\t out = $$outStack.pop();\r\n\t if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */\r\n\t if (it.async) {\r\n\t out += ' throw new ValidationError([' + (__err) + ']); ';\r\n\t } else {\r\n\t out += ' validate.errors = [' + (__err) + ']; return false; ';\r\n\t }\r\n\t } else {\r\n\t out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\r\n\t }\r\n\t if ($breakOnError) {\r\n\t out += ' if (false) { ';\r\n\t }\r\n\t } else if (it.opts.missingRefs == 'ignore') {\r\n\t console.log($message);\r\n\t if ($breakOnError) {\r\n\t out += ' if (true) { ';\r\n\t }\r\n\t } else {\r\n\t var $error = new Error($message);\r\n\t $error.missingRef = it.resolve.url(it.baseId, $schema);\r\n\t $error.missingSchema = it.resolve.normalizeId(it.resolve.fullPath($error.missingRef));\r\n\t throw $error;\r\n\t }\r\n\t } else if ($refVal.inline) {\r\n\t var $it = it.util.copy(it);\r\n\t $it.level++;\r\n\t $it.schema = $refVal.schema;\r\n\t $it.schemaPath = '';\r\n\t $it.errSchemaPath = $schema;\r\n\t var $code = it.validate($it).replace(/validate\\.schema/g, $refVal.code);\r\n\t out += ' ' + ($code) + ' ';\r\n\t if ($breakOnError) {\r\n\t out += ' if (valid' + ($it.level) + ') { ';\r\n\t }\r\n\t } else {\r\n\t $async = $refVal.async;\r\n\t $refCode = $refVal.code;\r\n\t }\r\n\t }\r\n\t if ($refCode) {\r\n\t var $$outStack = $$outStack || [];\r\n\t $$outStack.push(out);\r\n\t out = '';\r\n\t if (it.opts.passContext) {\r\n\t out += ' ' + ($refCode) + '.call(this, ';\r\n\t } else {\r\n\t out += ' ' + ($refCode) + '( ';\r\n\t }\r\n\t out += ' ' + ($data) + ', (dataPath || \\'\\')';\r\n\t if (it.errorPath != '\"\"') {\r\n\t out += ' + ' + (it.errorPath);\r\n\t }\r\n\t if ($dataLvl) {\r\n\t out += ' , data' + (($dataLvl - 1) || '') + ' , ' + (it.dataPathArr[$dataLvl]) + ' ';\r\n\t } else {\r\n\t out += ' , parentData , parentDataProperty ';\r\n\t }\r\n\t out += ') ';\r\n\t var __callValidate = out;\r\n\t out = $$outStack.pop();\r\n\t if ($async) {\r\n\t if (!it.async) throw new Error('async schema referenced by sync schema');\r\n\t out += ' try { ';\r\n\t if ($breakOnError) {\r\n\t out += 'var ' + ($valid) + ' =';\r\n\t }\r\n\t out += ' ' + (it.yieldAwait) + ' ' + (__callValidate) + '; } catch (e) { if (!(e instanceof ValidationError)) throw e; if (vErrors === null) vErrors = e.errors; else vErrors = vErrors.concat(e.errors); errors = vErrors.length; } ';\r\n\t if ($breakOnError) {\r\n\t out += ' if (' + ($valid) + ') { ';\r\n\t }\r\n\t } else {\r\n\t out += ' if (!' + (__callValidate) + ') { if (vErrors === null) vErrors = ' + ($refCode) + '.errors; else vErrors = vErrors.concat(' + ($refCode) + '.errors); errors = vErrors.length; } ';\r\n\t if ($breakOnError) {\r\n\t out += ' else { ';\r\n\t }\r\n\t }\r\n\t }\r\n\t return out;\r\n\t}\r\n\r\n\r\n/***/ },\r\n/* 26 */\r\n/***/ function(module, exports) {\r\n\r\n\t'use strict';\r\n\tmodule.exports = function generate_allOf(it, $keyword) {\r\n\t var out = ' ';\r\n\t var $schema = it.schema[$keyword];\r\n\t var $schemaPath = it.schemaPath + '.' + $keyword;\r\n\t var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\r\n\t var $breakOnError = !it.opts.allErrors;\r\n\t var $it = it.util.copy(it);\r\n\t var $closingBraces = '';\r\n\t $it.level++;\r\n\t var arr1 = $schema;\r\n\t if (arr1) {\r\n\t var $sch, $i = -1,\r\n\t l1 = arr1.length - 1;\r\n\t while ($i < l1) {\r\n\t $sch = arr1[$i += 1];\r\n\t if (it.util.schemaHasRules($sch, it.RULES.all)) {\r\n\t $it.schema = $sch;\r\n\t $it.schemaPath = $schemaPath + '[' + $i + ']';\r\n\t $it.errSchemaPath = $errSchemaPath + '/' + $i;\r\n\t out += ' ' + (it.validate($it)) + ' ';\r\n\t if ($breakOnError) {\r\n\t out += ' if (valid' + ($it.level) + ') { ';\r\n\t $closingBraces += '}';\r\n\t }\r\n\t }\r\n\t }\r\n\t }\r\n\t if ($breakOnError) {\r\n\t out += ' ' + ($closingBraces.slice(0, -1));\r\n\t }\r\n\t out = it.util.cleanUpCode(out);\r\n\t return out;\r\n\t}\r\n\r\n\r\n/***/ },\r\n/* 27 */\r\n/***/ function(module, exports) {\r\n\r\n\t'use strict';\r\n\tmodule.exports = function generate_anyOf(it, $keyword) {\r\n\t var out = ' ';\r\n\t var $lvl = it.level;\r\n\t var $dataLvl = it.dataLevel;\r\n\t var $schema = it.schema[$keyword];\r\n\t var $schemaPath = it.schemaPath + '.' + $keyword;\r\n\t var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\r\n\t var $breakOnError = !it.opts.allErrors;\r\n\t var $errorKeyword;\r\n\t var $data = 'data' + ($dataLvl || '');\r\n\t var $valid = 'valid' + $lvl;\r\n\t var $errs = 'errs__' + $lvl;\r\n\t var $it = it.util.copy(it);\r\n\t var $closingBraces = '';\r\n\t $it.level++;\r\n\t var $noEmptySchema = $schema.every(function($sch) {\r\n\t return it.util.schemaHasRules($sch, it.RULES.all);\r\n\t });\r\n\t if ($noEmptySchema) {\r\n\t out += ' var ' + ($errs) + ' = errors; var ' + ($valid) + ' = false; ';\r\n\t var $wasComposite = it.compositeRule;\r\n\t it.compositeRule = $it.compositeRule = true;\r\n\t var arr1 = $schema;\r\n\t if (arr1) {\r\n\t var $sch, $i = -1,\r\n\t l1 = arr1.length - 1;\r\n\t while ($i < l1) {\r\n\t $sch = arr1[$i += 1];\r\n\t $it.schema = $sch;\r\n\t $it.schemaPath = $schemaPath + '[' + $i + ']';\r\n\t $it.errSchemaPath = $errSchemaPath + '/' + $i;\r\n\t out += ' ' + (it.validate($it)) + ' ' + ($valid) + ' = ' + ($valid) + ' || valid' + ($it.level) + '; if (!' + ($valid) + ') { ';\r\n\t $closingBraces += '}';\r\n\t }\r\n\t }\r\n\t it.compositeRule = $it.compositeRule = $wasComposite;\r\n\t out += ' ' + ($closingBraces) + ' if (!' + ($valid) + ') { var err = '; /* istanbul ignore else */\r\n\t if (it.createErrors !== false) {\r\n\t out += ' { keyword: \\'' + ($errorKeyword || 'anyOf') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: \"' + ($errSchemaPath) + '\" , params: {} ';\r\n\t if (it.opts.messages !== false) {\r\n\t out += ' , message: \\'should match some schema in anyOf\\' ';\r\n\t }\r\n\t if (it.opts.verbose) {\r\n\t out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\r\n\t }\r\n\t out += ' } ';\r\n\t } else {\r\n\t out += ' {} ';\r\n\t }\r\n\t out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } else { errors = ' + ($errs) + '; if (vErrors !== null) { if (' + ($errs) + ') vErrors.length = ' + ($errs) + '; else vErrors = null; } ';\r\n\t if (it.opts.allErrors) {\r\n\t out += ' } ';\r\n\t }\r\n\t out = it.util.cleanUpCode(out);\r\n\t } else {\r\n\t if ($breakOnError) {\r\n\t out += ' if (true) { ';\r\n\t }\r\n\t }\r\n\t return out;\r\n\t}\r\n\r\n\r\n/***/ },\r\n/* 28 */\r\n/***/ function(module, exports) {\r\n\r\n\t'use strict';\r\n\tmodule.exports = function generate_dependencies(it, $keyword) {\r\n\t var out = ' ';\r\n\t var $lvl = it.level;\r\n\t var $dataLvl = it.dataLevel;\r\n\t var $schema = it.schema[$keyword];\r\n\t var $schemaPath = it.schemaPath + '.' + $keyword;\r\n\t var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\r\n\t var $breakOnError = !it.opts.allErrors;\r\n\t var $errorKeyword;\r\n\t var $data = 'data' + ($dataLvl || '');\r\n\t var $errs = 'errs__' + $lvl;\r\n\t var $it = it.util.copy(it);\r\n\t var $closingBraces = '';\r\n\t $it.level++;\r\n\t var $schemaDeps = {},\r\n\t $propertyDeps = {};\r\n\t for ($property in $schema) {\r\n\t var $sch = $schema[$property];\r\n\t var $deps = Array.isArray($sch) ? $propertyDeps : $schemaDeps;\r\n\t $deps[$property] = $sch;\r\n\t }\r\n\t out += 'var ' + ($errs) + ' = errors;';\r\n\t var $currentErrorPath = it.errorPath;\r\n\t out += 'var missing' + ($lvl) + ';';\r\n\t for (var $property in $propertyDeps) {\r\n\t $deps = $propertyDeps[$property];\r\n\t out += ' if (' + ($data) + (it.util.getProperty($property)) + ' !== undefined && ( ';\r\n\t var arr1 = $deps;\r\n\t if (arr1) {\r\n\t var _$property, $i = -1,\r\n\t l1 = arr1.length - 1;\r\n\t while ($i < l1) {\r\n\t _$property = arr1[$i += 1];\r\n\t if ($i) {\r\n\t out += ' || ';\r\n\t }\r\n\t var $prop = it.util.getProperty(_$property);\r\n\t out += ' ( ' + ($data) + ($prop) + ' === undefined && (missing' + ($lvl) + ' = ' + (it.util.toQuotedString(it.opts.jsonPointers ? _$property : $prop)) + ') ) ';\r\n\t }\r\n\t }\r\n\t out += ')) { ';\r\n\t var $propertyPath = 'missing' + $lvl,\r\n\t $missingProperty = '\\' + ' + $propertyPath + ' + \\'';\r\n\t if (it.opts._errorDataPathProperty) {\r\n\t it.errorPath = it.opts.jsonPointers ? it.util.getPathExpr($currentErrorPath, $propertyPath, true) : $currentErrorPath + ' + ' + $propertyPath;\r\n\t }\r\n\t var $$outStack = $$outStack || [];\r\n\t $$outStack.push(out);\r\n\t out = ''; /* istanbul ignore else */\r\n\t if (it.createErrors !== false) {\r\n\t out += ' { keyword: \\'' + ($errorKeyword || 'dependencies') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: \"' + ($errSchemaPath) + '\" , params: { property: \\'' + (it.util.escapeQuotes($property)) + '\\', missingProperty: \\'' + ($missingProperty) + '\\', depsCount: ' + ($deps.length) + ', deps: \\'' + (it.util.escapeQuotes($deps.length == 1 ? $deps[0] : $deps.join(\", \"))) + '\\' } ';\r\n\t if (it.opts.messages !== false) {\r\n\t out += ' , message: \\'should have ';\r\n\t if ($deps.length == 1) {\r\n\t out += 'property ' + (it.util.escapeQuotes($deps[0]));\r\n\t } else {\r\n\t out += 'properties ' + (it.util.escapeQuotes($deps.join(\", \")));\r\n\t }\r\n\t out += ' when property ' + (it.util.escapeQuotes($property)) + ' is present\\' ';\r\n\t }\r\n\t if (it.opts.verbose) {\r\n\t out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\r\n\t }\r\n\t out += ' } ';\r\n\t } else {\r\n\t out += ' {} ';\r\n\t }\r\n\t var __err = out;\r\n\t out = $$outStack.pop();\r\n\t if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */\r\n\t if (it.async) {\r\n\t out += ' throw new ValidationError([' + (__err) + ']); ';\r\n\t } else {\r\n\t out += ' validate.errors = [' + (__err) + ']; return false; ';\r\n\t }\r\n\t } else {\r\n\t out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\r\n\t }\r\n\t out += ' } ';\r\n\t if ($breakOnError) {\r\n\t $closingBraces += '}';\r\n\t out += ' else { ';\r\n\t }\r\n\t }\r\n\t it.errorPath = $currentErrorPath;\r\n\t for (var $property in $schemaDeps) {\r\n\t var $sch = $schemaDeps[$property];\r\n\t if (it.util.schemaHasRules($sch, it.RULES.all)) {\r\n\t out += ' valid' + ($it.level) + ' = true; if (' + ($data) + '[\\'' + ($property) + '\\'] !== undefined) { ';\r\n\t $it.schema = $sch;\r\n\t $it.schemaPath = $schemaPath + it.util.getProperty($property);\r\n\t $it.errSchemaPath = $errSchemaPath + '/' + it.util.escapeFragment($property);\r\n\t out += ' ' + (it.validate($it)) + ' } ';\r\n\t if ($breakOnError) {\r\n\t out += ' if (valid' + ($it.level) + ') { ';\r\n\t $closingBraces += '}';\r\n\t }\r\n\t }\r\n\t }\r\n\t if ($breakOnError) {\r\n\t out += ' ' + ($closingBraces) + ' if (' + ($errs) + ' == errors) {';\r\n\t }\r\n\t out = it.util.cleanUpCode(out);\r\n\t return out;\r\n\t}\r\n\r\n\r\n/***/ },\r\n/* 29 */\r\n/***/ function(module, exports) {\r\n\r\n\t'use strict';\r\n\tmodule.exports = function generate_enum(it, $keyword) {\r\n\t var out = ' ';\r\n\t var $lvl = it.level;\r\n\t var $dataLvl = it.dataLevel;\r\n\t var $schema = it.schema[$keyword];\r\n\t var $schemaPath = it.schemaPath + '.' + $keyword;\r\n\t var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\r\n\t var $breakOnError = !it.opts.allErrors;\r\n\t var $errorKeyword;\r\n\t var $data = 'data' + ($dataLvl || '');\r\n\t var $valid = 'valid' + $lvl;\r\n\t var $isData = it.opts.v5 && $schema.$data;\r\n\t var $schemaValue = $isData ? it.util.getData($schema.$data, $dataLvl, it.dataPathArr) : $schema;\r\n\t if ($isData) {\r\n\t out += ' var schema' + ($lvl) + ' = ' + ($schemaValue) + '; ';\r\n\t $schemaValue = 'schema' + $lvl;\r\n\t }\r\n\t var $i = 'i' + $lvl;\r\n\t if (!$isData) {\r\n\t out += ' var schema' + ($lvl) + ' = validate.schema' + ($schemaPath) + ';';\r\n\t }\r\n\t out += 'var ' + ($valid) + ';';\r\n\t if ($isData) {\r\n\t out += ' if (schema' + ($lvl) + ' === undefined) ' + ($valid) + ' = true; else if (!Array.isArray(schema' + ($lvl) + ')) ' + ($valid) + ' = false; else {';\r\n\t }\r\n\t out += '' + ($valid) + ' = false;for (var ' + ($i) + '=0; ' + ($i) + ' ' + ($i) + ') { ';\r\n\t var $passData = $data + '[' + $i + ']';\r\n\t $it.schema = $sch;\r\n\t $it.schemaPath = $schemaPath + '[' + $i + ']';\r\n\t $it.errSchemaPath = $errSchemaPath + '/' + $i;\r\n\t $it.errorPath = it.util.getPathExpr(it.errorPath, $i, it.opts.jsonPointers, true);\r\n\t $it.dataPathArr[$dataNxt] = $i;\r\n\t var $code = it.validate($it);\r\n\t if (it.util.varOccurences($code, $nextData) < 2) {\r\n\t out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' ';\r\n\t } else {\r\n\t out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' ';\r\n\t }\r\n\t out += ' } ';\r\n\t if ($breakOnError) {\r\n\t out += ' if (valid' + ($it.level) + ') { ';\r\n\t $closingBraces += '}';\r\n\t }\r\n\t }\r\n\t }\r\n\t }\r\n\t if (typeof $additionalItems == 'object' && it.util.schemaHasRules($additionalItems, it.RULES.all)) {\r\n\t $it.schema = $additionalItems;\r\n\t $it.schemaPath = it.schemaPath + '.additionalItems';\r\n\t $it.errSchemaPath = it.errSchemaPath + '/additionalItems';\r\n\t out += ' valid' + ($it.level) + ' = true; if (' + ($data) + '.length > ' + ($schema.length) + ') { for (var i' + ($lvl) + ' = ' + ($schema.length) + '; i' + ($lvl) + ' < ' + ($data) + '.length; i' + ($lvl) + '++) { ';\r\n\t $it.errorPath = it.util.getPathExpr(it.errorPath, 'i' + $lvl, it.opts.jsonPointers, true);\r\n\t var $passData = $data + '[i' + $lvl + ']';\r\n\t $it.dataPathArr[$dataNxt] = 'i' + $lvl;\r\n\t var $code = it.validate($it);\r\n\t if (it.util.varOccurences($code, $nextData) < 2) {\r\n\t out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' ';\r\n\t } else {\r\n\t out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' ';\r\n\t }\r\n\t if ($breakOnError) {\r\n\t out += ' if (!valid' + ($it.level) + ') break; ';\r\n\t }\r\n\t out += ' } } ';\r\n\t if ($breakOnError) {\r\n\t out += ' if (valid' + ($it.level) + ') { ';\r\n\t $closingBraces += '}';\r\n\t }\r\n\t }\r\n\t } else if (it.util.schemaHasRules($schema, it.RULES.all)) {\r\n\t $it.schema = $schema;\r\n\t $it.schemaPath = $schemaPath;\r\n\t $it.errSchemaPath = $errSchemaPath;\r\n\t out += ' for (var i' + ($lvl) + ' = ' + (0) + '; i' + ($lvl) + ' < ' + ($data) + '.length; i' + ($lvl) + '++) { ';\r\n\t $it.errorPath = it.util.getPathExpr(it.errorPath, 'i' + $lvl, it.opts.jsonPointers, true);\r\n\t var $passData = $data + '[i' + $lvl + ']';\r\n\t $it.dataPathArr[$dataNxt] = 'i' + $lvl;\r\n\t var $code = it.validate($it);\r\n\t if (it.util.varOccurences($code, $nextData) < 2) {\r\n\t out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' ';\r\n\t } else {\r\n\t out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' ';\r\n\t }\r\n\t if ($breakOnError) {\r\n\t out += ' if (!valid' + ($it.level) + ') break; ';\r\n\t }\r\n\t out += ' } ';\r\n\t if ($breakOnError) {\r\n\t out += ' if (valid' + ($it.level) + ') { ';\r\n\t $closingBraces += '}';\r\n\t }\r\n\t }\r\n\t if ($breakOnError) {\r\n\t out += ' ' + ($closingBraces) + ' if (' + ($errs) + ' == errors) {';\r\n\t }\r\n\t out = it.util.cleanUpCode(out);\r\n\t return out;\r\n\t}\r\n\r\n\r\n/***/ },\r\n/* 32 */\r\n/***/ function(module, exports) {\r\n\r\n\t'use strict';\r\n\tmodule.exports = function generate__limit(it, $keyword) {\r\n\t var out = ' ';\r\n\t var $lvl = it.level;\r\n\t var $dataLvl = it.dataLevel;\r\n\t var $schema = it.schema[$keyword];\r\n\t var $schemaPath = it.schemaPath + '.' + $keyword;\r\n\t var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\r\n\t var $breakOnError = !it.opts.allErrors;\r\n\t var $errorKeyword;\r\n\t var $data = 'data' + ($dataLvl || '');\r\n\t var $isData = it.opts.v5 && $schema.$data;\r\n\t var $schemaValue = $isData ? it.util.getData($schema.$data, $dataLvl, it.dataPathArr) : $schema;\r\n\t if ($isData) {\r\n\t out += ' var schema' + ($lvl) + ' = ' + ($schemaValue) + '; ';\r\n\t $schemaValue = 'schema' + $lvl;\r\n\t }\r\n\t var $isMax = $keyword == 'maximum',\r\n\t $exclusiveKeyword = $isMax ? 'exclusiveMaximum' : 'exclusiveMinimum',\r\n\t $schemaExcl = it.schema[$exclusiveKeyword],\r\n\t $isDataExcl = it.opts.v5 && $schemaExcl && $schemaExcl.$data,\r\n\t $op = $isMax ? '<' : '>',\r\n\t $notOp = $isMax ? '>' : '<';\r\n\t if ($isDataExcl) {\r\n\t var $schemaValueExcl = it.util.getData($schemaExcl.$data, $dataLvl, it.dataPathArr),\r\n\t $exclusive = 'exclusive' + $lvl,\r\n\t $opExpr = 'op' + $lvl,\r\n\t $opStr = '\\' + ' + $opExpr + ' + \\'';\r\n\t out += ' var schemaExcl' + ($lvl) + ' = ' + ($schemaValueExcl) + '; ';\r\n\t $schemaValueExcl = 'schemaExcl' + $lvl;\r\n\t out += ' var exclusive' + ($lvl) + '; if (typeof ' + ($schemaValueExcl) + ' != \\'boolean\\' && typeof ' + ($schemaValueExcl) + ' != \\'undefined\\') { ';\r\n\t var $errorKeyword = $exclusiveKeyword;\r\n\t var $$outStack = $$outStack || [];\r\n\t $$outStack.push(out);\r\n\t out = ''; /* istanbul ignore else */\r\n\t if (it.createErrors !== false) {\r\n\t out += ' { keyword: \\'' + ($errorKeyword || '_exclusiveLimit') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: \"' + ($errSchemaPath) + '\" , params: {} ';\r\n\t if (it.opts.messages !== false) {\r\n\t out += ' , message: \\'' + ($exclusiveKeyword) + ' should be boolean\\' ';\r\n\t }\r\n\t if (it.opts.verbose) {\r\n\t out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\r\n\t }\r\n\t out += ' } ';\r\n\t } else {\r\n\t out += ' {} ';\r\n\t }\r\n\t var __err = out;\r\n\t out = $$outStack.pop();\r\n\t if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */\r\n\t if (it.async) {\r\n\t out += ' throw new ValidationError([' + (__err) + ']); ';\r\n\t } else {\r\n\t out += ' validate.errors = [' + (__err) + ']; return false; ';\r\n\t }\r\n\t } else {\r\n\t out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\r\n\t }\r\n\t out += ' } else if( ';\r\n\t if ($isData) {\r\n\t out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \\'number\\') || ';\r\n\t }\r\n\t out += ' ((exclusive' + ($lvl) + ' = ' + ($schemaValueExcl) + ' === true) ? ' + ($data) + ' ' + ($notOp) + '= ' + ($schemaValue) + ' : ' + ($data) + ' ' + ($notOp) + ' ' + ($schemaValue) + ')) { var op' + ($lvl) + ' = exclusive' + ($lvl) + ' ? \\'' + ($op) + '\\' : \\'' + ($op) + '=\\';';\r\n\t } else {\r\n\t var $exclusive = $schemaExcl === true,\r\n\t $opStr = $op;\r\n\t if (!$exclusive) $opStr += '=';\r\n\t var $opExpr = '\\'' + $opStr + '\\'';\r\n\t out += ' if ( ';\r\n\t if ($isData) {\r\n\t out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \\'number\\') || ';\r\n\t }\r\n\t out += ' ' + ($data) + ' ' + ($notOp);\r\n\t if ($exclusive) {\r\n\t out += '=';\r\n\t }\r\n\t out += ' ' + ($schemaValue) + ') {';\r\n\t }\r\n\t var $errorKeyword = $keyword;\r\n\t var $$outStack = $$outStack || [];\r\n\t $$outStack.push(out);\r\n\t out = ''; /* istanbul ignore else */\r\n\t if (it.createErrors !== false) {\r\n\t out += ' { keyword: \\'' + ($errorKeyword || '_limit') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: \"' + ($errSchemaPath) + '\" , params: { comparison: ' + ($opExpr) + ', limit: ' + ($schemaValue) + ', exclusive: ' + ($exclusive) + ' } ';\r\n\t if (it.opts.messages !== false) {\r\n\t out += ' , message: \\'should be ' + ($opStr) + ' ';\r\n\t if ($isData) {\r\n\t out += '\\' + ' + ($schemaValue);\r\n\t } else {\r\n\t out += '' + ($schema) + '\\'';\r\n\t }\r\n\t }\r\n\t if (it.opts.verbose) {\r\n\t out += ' , schema: ';\r\n\t if ($isData) {\r\n\t out += 'validate.schema' + ($schemaPath);\r\n\t } else {\r\n\t out += '' + ($schema);\r\n\t }\r\n\t out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\r\n\t }\r\n\t out += ' } ';\r\n\t } else {\r\n\t out += ' {} ';\r\n\t }\r\n\t var __err = out;\r\n\t out = $$outStack.pop();\r\n\t if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */\r\n\t if (it.async) {\r\n\t out += ' throw new ValidationError([' + (__err) + ']); ';\r\n\t } else {\r\n\t out += ' validate.errors = [' + (__err) + ']; return false; ';\r\n\t }\r\n\t } else {\r\n\t out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\r\n\t }\r\n\t out += ' } ';\r\n\t if ($breakOnError) {\r\n\t out += ' else { ';\r\n\t }\r\n\t return out;\r\n\t}\r\n\r\n\r\n/***/ },\r\n/* 33 */\r\n/***/ function(module, exports) {\r\n\r\n\t'use strict';\r\n\tmodule.exports = function generate__limitItems(it, $keyword) {\r\n\t var out = ' ';\r\n\t var $lvl = it.level;\r\n\t var $dataLvl = it.dataLevel;\r\n\t var $schema = it.schema[$keyword];\r\n\t var $schemaPath = it.schemaPath + '.' + $keyword;\r\n\t var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\r\n\t var $breakOnError = !it.opts.allErrors;\r\n\t var $errorKeyword;\r\n\t var $data = 'data' + ($dataLvl || '');\r\n\t var $isData = it.opts.v5 && $schema.$data;\r\n\t var $schemaValue = $isData ? it.util.getData($schema.$data, $dataLvl, it.dataPathArr) : $schema;\r\n\t if ($isData) {\r\n\t out += ' var schema' + ($lvl) + ' = ' + ($schemaValue) + '; ';\r\n\t $schemaValue = 'schema' + $lvl;\r\n\t }\r\n\t var $op = $keyword == 'maxItems' ? '>' : '<';\r\n\t out += 'if ( ';\r\n\t if ($isData) {\r\n\t out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \\'number\\') || ';\r\n\t }\r\n\t out += ' ' + ($data) + '.length ' + ($op) + ' ' + ($schemaValue) + ') { ';\r\n\t var $errorKeyword = $keyword;\r\n\t var $$outStack = $$outStack || [];\r\n\t $$outStack.push(out);\r\n\t out = ''; /* istanbul ignore else */\r\n\t if (it.createErrors !== false) {\r\n\t out += ' { keyword: \\'' + ($errorKeyword || '_limitItems') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: \"' + ($errSchemaPath) + '\" , params: { limit: ' + ($schemaValue) + ' } ';\r\n\t if (it.opts.messages !== false) {\r\n\t out += ' , message: \\'should NOT have ';\r\n\t if ($keyword == 'maxItems') {\r\n\t out += 'more';\r\n\t } else {\r\n\t out += 'less';\r\n\t }\r\n\t out += ' than ';\r\n\t if ($isData) {\r\n\t out += '\\' + ' + ($schemaValue) + ' + \\'';\r\n\t } else {\r\n\t out += '' + ($schema);\r\n\t }\r\n\t out += ' items\\' ';\r\n\t }\r\n\t if (it.opts.verbose) {\r\n\t out += ' , schema: ';\r\n\t if ($isData) {\r\n\t out += 'validate.schema' + ($schemaPath);\r\n\t } else {\r\n\t out += '' + ($schema);\r\n\t }\r\n\t out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\r\n\t }\r\n\t out += ' } ';\r\n\t } else {\r\n\t out += ' {} ';\r\n\t }\r\n\t var __err = out;\r\n\t out = $$outStack.pop();\r\n\t if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */\r\n\t if (it.async) {\r\n\t out += ' throw new ValidationError([' + (__err) + ']); ';\r\n\t } else {\r\n\t out += ' validate.errors = [' + (__err) + ']; return false; ';\r\n\t }\r\n\t } else {\r\n\t out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\r\n\t }\r\n\t out += '} ';\r\n\t if ($breakOnError) {\r\n\t out += ' else { ';\r\n\t }\r\n\t return out;\r\n\t}\r\n\r\n\r\n/***/ },\r\n/* 34 */\r\n/***/ function(module, exports) {\r\n\r\n\t'use strict';\r\n\tmodule.exports = function generate__limitLength(it, $keyword) {\r\n\t var out = ' ';\r\n\t var $lvl = it.level;\r\n\t var $dataLvl = it.dataLevel;\r\n\t var $schema = it.schema[$keyword];\r\n\t var $schemaPath = it.schemaPath + '.' + $keyword;\r\n\t var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\r\n\t var $breakOnError = !it.opts.allErrors;\r\n\t var $errorKeyword;\r\n\t var $data = 'data' + ($dataLvl || '');\r\n\t var $isData = it.opts.v5 && $schema.$data;\r\n\t var $schemaValue = $isData ? it.util.getData($schema.$data, $dataLvl, it.dataPathArr) : $schema;\r\n\t if ($isData) {\r\n\t out += ' var schema' + ($lvl) + ' = ' + ($schemaValue) + '; ';\r\n\t $schemaValue = 'schema' + $lvl;\r\n\t }\r\n\t var $op = $keyword == 'maxLength' ? '>' : '<';\r\n\t out += 'if ( ';\r\n\t if ($isData) {\r\n\t out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \\'number\\') || ';\r\n\t }\r\n\t if (it.opts.unicode === false) {\r\n\t out += ' ' + ($data) + '.length ';\r\n\t } else {\r\n\t out += ' ucs2length(' + ($data) + ') ';\r\n\t }\r\n\t out += ' ' + ($op) + ' ' + ($schemaValue) + ') { ';\r\n\t var $errorKeyword = $keyword;\r\n\t var $$outStack = $$outStack || [];\r\n\t $$outStack.push(out);\r\n\t out = ''; /* istanbul ignore else */\r\n\t if (it.createErrors !== false) {\r\n\t out += ' { keyword: \\'' + ($errorKeyword || '_limitLength') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: \"' + ($errSchemaPath) + '\" , params: { limit: ' + ($schemaValue) + ' } ';\r\n\t if (it.opts.messages !== false) {\r\n\t out += ' , message: \\'should NOT be ';\r\n\t if ($keyword == 'maxLength') {\r\n\t out += 'longer';\r\n\t } else {\r\n\t out += 'shorter';\r\n\t }\r\n\t out += ' than ';\r\n\t if ($isData) {\r\n\t out += '\\' + ' + ($schemaValue) + ' + \\'';\r\n\t } else {\r\n\t out += '' + ($schema);\r\n\t }\r\n\t out += ' characters\\' ';\r\n\t }\r\n\t if (it.opts.verbose) {\r\n\t out += ' , schema: ';\r\n\t if ($isData) {\r\n\t out += 'validate.schema' + ($schemaPath);\r\n\t } else {\r\n\t out += '' + ($schema);\r\n\t }\r\n\t out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\r\n\t }\r\n\t out += ' } ';\r\n\t } else {\r\n\t out += ' {} ';\r\n\t }\r\n\t var __err = out;\r\n\t out = $$outStack.pop();\r\n\t if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */\r\n\t if (it.async) {\r\n\t out += ' throw new ValidationError([' + (__err) + ']); ';\r\n\t } else {\r\n\t out += ' validate.errors = [' + (__err) + ']; return false; ';\r\n\t }\r\n\t } else {\r\n\t out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\r\n\t }\r\n\t out += '} ';\r\n\t if ($breakOnError) {\r\n\t out += ' else { ';\r\n\t }\r\n\t return out;\r\n\t}\r\n\r\n\r\n/***/ },\r\n/* 35 */\r\n/***/ function(module, exports) {\r\n\r\n\t'use strict';\r\n\tmodule.exports = function generate__limitProperties(it, $keyword) {\r\n\t var out = ' ';\r\n\t var $lvl = it.level;\r\n\t var $dataLvl = it.dataLevel;\r\n\t var $schema = it.schema[$keyword];\r\n\t var $schemaPath = it.schemaPath + '.' + $keyword;\r\n\t var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\r\n\t var $breakOnError = !it.opts.allErrors;\r\n\t var $errorKeyword;\r\n\t var $data = 'data' + ($dataLvl || '');\r\n\t var $isData = it.opts.v5 && $schema.$data;\r\n\t var $schemaValue = $isData ? it.util.getData($schema.$data, $dataLvl, it.dataPathArr) : $schema;\r\n\t if ($isData) {\r\n\t out += ' var schema' + ($lvl) + ' = ' + ($schemaValue) + '; ';\r\n\t $schemaValue = 'schema' + $lvl;\r\n\t }\r\n\t var $op = $keyword == 'maxProperties' ? '>' : '<';\r\n\t out += 'if ( ';\r\n\t if ($isData) {\r\n\t out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \\'number\\') || ';\r\n\t }\r\n\t out += ' Object.keys(' + ($data) + ').length ' + ($op) + ' ' + ($schemaValue) + ') { ';\r\n\t var $errorKeyword = $keyword;\r\n\t var $$outStack = $$outStack || [];\r\n\t $$outStack.push(out);\r\n\t out = ''; /* istanbul ignore else */\r\n\t if (it.createErrors !== false) {\r\n\t out += ' { keyword: \\'' + ($errorKeyword || '_limitProperties') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: \"' + ($errSchemaPath) + '\" , params: { limit: ' + ($schemaValue) + ' } ';\r\n\t if (it.opts.messages !== false) {\r\n\t out += ' , message: \\'should NOT have ';\r\n\t if ($keyword == 'maxProperties') {\r\n\t out += 'more';\r\n\t } else {\r\n\t out += 'less';\r\n\t }\r\n\t out += ' than ';\r\n\t if ($isData) {\r\n\t out += '\\' + ' + ($schemaValue) + ' + \\'';\r\n\t } else {\r\n\t out += '' + ($schema);\r\n\t }\r\n\t out += ' properties\\' ';\r\n\t }\r\n\t if (it.opts.verbose) {\r\n\t out += ' , schema: ';\r\n\t if ($isData) {\r\n\t out += 'validate.schema' + ($schemaPath);\r\n\t } else {\r\n\t out += '' + ($schema);\r\n\t }\r\n\t out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\r\n\t }\r\n\t out += ' } ';\r\n\t } else {\r\n\t out += ' {} ';\r\n\t }\r\n\t var __err = out;\r\n\t out = $$outStack.pop();\r\n\t if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */\r\n\t if (it.async) {\r\n\t out += ' throw new ValidationError([' + (__err) + ']); ';\r\n\t } else {\r\n\t out += ' validate.errors = [' + (__err) + ']; return false; ';\r\n\t }\r\n\t } else {\r\n\t out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\r\n\t }\r\n\t out += '} ';\r\n\t if ($breakOnError) {\r\n\t out += ' else { ';\r\n\t }\r\n\t return out;\r\n\t}\r\n\r\n\r\n/***/ },\r\n/* 36 */\r\n/***/ function(module, exports) {\r\n\r\n\t'use strict';\r\n\tmodule.exports = function generate_multipleOf(it, $keyword) {\r\n\t var out = ' ';\r\n\t var $lvl = it.level;\r\n\t var $dataLvl = it.dataLevel;\r\n\t var $schema = it.schema[$keyword];\r\n\t var $schemaPath = it.schemaPath + '.' + $keyword;\r\n\t var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\r\n\t var $breakOnError = !it.opts.allErrors;\r\n\t var $errorKeyword;\r\n\t var $data = 'data' + ($dataLvl || '');\r\n\t var $isData = it.opts.v5 && $schema.$data;\r\n\t var $schemaValue = $isData ? it.util.getData($schema.$data, $dataLvl, it.dataPathArr) : $schema;\r\n\t if ($isData) {\r\n\t out += ' var schema' + ($lvl) + ' = ' + ($schemaValue) + '; ';\r\n\t $schemaValue = 'schema' + $lvl;\r\n\t }\r\n\t out += 'var division' + ($lvl) + ';if (';\r\n\t if ($isData) {\r\n\t out += ' ' + ($schemaValue) + ' !== undefined && ( typeof ' + ($schemaValue) + ' != \\'number\\' || ';\r\n\t }\r\n\t out += ' (division' + ($lvl) + ' = ' + ($data) + ' / ' + ($schemaValue) + ', ';\r\n\t if (it.opts.multipleOfPrecision) {\r\n\t out += ' Math.abs(Math.round(division' + ($lvl) + ') - division' + ($lvl) + ') > 1e-' + (it.opts.multipleOfPrecision) + ' ';\r\n\t } else {\r\n\t out += ' division' + ($lvl) + ' !== parseInt(division' + ($lvl) + ') ';\r\n\t }\r\n\t out += ' ) ';\r\n\t if ($isData) {\r\n\t out += ' ) ';\r\n\t }\r\n\t out += ' ) { ';\r\n\t var $$outStack = $$outStack || [];\r\n\t $$outStack.push(out);\r\n\t out = ''; /* istanbul ignore else */\r\n\t if (it.createErrors !== false) {\r\n\t out += ' { keyword: \\'' + ($errorKeyword || 'multipleOf') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: \"' + ($errSchemaPath) + '\" , params: { multipleOf: ' + ($schemaValue) + ' } ';\r\n\t if (it.opts.messages !== false) {\r\n\t out += ' , message: \\'should be multiple of ';\r\n\t if ($isData) {\r\n\t out += '\\' + ' + ($schemaValue);\r\n\t } else {\r\n\t out += '' + ($schema) + '\\'';\r\n\t }\r\n\t }\r\n\t if (it.opts.verbose) {\r\n\t out += ' , schema: ';\r\n\t if ($isData) {\r\n\t out += 'validate.schema' + ($schemaPath);\r\n\t } else {\r\n\t out += '' + ($schema);\r\n\t }\r\n\t out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\r\n\t }\r\n\t out += ' } ';\r\n\t } else {\r\n\t out += ' {} ';\r\n\t }\r\n\t var __err = out;\r\n\t out = $$outStack.pop();\r\n\t if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */\r\n\t if (it.async) {\r\n\t out += ' throw new ValidationError([' + (__err) + ']); ';\r\n\t } else {\r\n\t out += ' validate.errors = [' + (__err) + ']; return false; ';\r\n\t }\r\n\t } else {\r\n\t out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\r\n\t }\r\n\t out += '} ';\r\n\t if ($breakOnError) {\r\n\t out += ' else { ';\r\n\t }\r\n\t return out;\r\n\t}\r\n\r\n\r\n/***/ },\r\n/* 37 */\r\n/***/ function(module, exports) {\r\n\r\n\t'use strict';\r\n\tmodule.exports = function generate_not(it, $keyword) {\r\n\t var out = ' ';\r\n\t var $lvl = it.level;\r\n\t var $dataLvl = it.dataLevel;\r\n\t var $schema = it.schema[$keyword];\r\n\t var $schemaPath = it.schemaPath + '.' + $keyword;\r\n\t var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\r\n\t var $breakOnError = !it.opts.allErrors;\r\n\t var $errorKeyword;\r\n\t var $data = 'data' + ($dataLvl || '');\r\n\t var $errs = 'errs__' + $lvl;\r\n\t var $it = it.util.copy(it);\r\n\t $it.level++;\r\n\t if (it.util.schemaHasRules($schema, it.RULES.all)) {\r\n\t $it.schema = $schema;\r\n\t $it.schemaPath = $schemaPath;\r\n\t $it.errSchemaPath = $errSchemaPath;\r\n\t out += ' var ' + ($errs) + ' = errors; ';\r\n\t var $wasComposite = it.compositeRule;\r\n\t it.compositeRule = $it.compositeRule = true;\r\n\t $it.createErrors = false;\r\n\t var $allErrorsOption;\r\n\t if ($it.opts.allErrors) {\r\n\t $allErrorsOption = $it.opts.allErrors;\r\n\t $it.opts.allErrors = false;\r\n\t }\r\n\t out += ' ' + (it.validate($it)) + ' ';\r\n\t $it.createErrors = true;\r\n\t if ($allErrorsOption) $it.opts.allErrors = $allErrorsOption;\r\n\t it.compositeRule = $it.compositeRule = $wasComposite;\r\n\t out += ' if (valid' + ($it.level) + ') { ';\r\n\t var $$outStack = $$outStack || [];\r\n\t $$outStack.push(out);\r\n\t out = ''; /* istanbul ignore else */\r\n\t if (it.createErrors !== false) {\r\n\t out += ' { keyword: \\'' + ($errorKeyword || 'not') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: \"' + ($errSchemaPath) + '\" , params: {} ';\r\n\t if (it.opts.messages !== false) {\r\n\t out += ' , message: \\'should NOT be valid\\' ';\r\n\t }\r\n\t if (it.opts.verbose) {\r\n\t out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\r\n\t }\r\n\t out += ' } ';\r\n\t } else {\r\n\t out += ' {} ';\r\n\t }\r\n\t var __err = out;\r\n\t out = $$outStack.pop();\r\n\t if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */\r\n\t if (it.async) {\r\n\t out += ' throw new ValidationError([' + (__err) + ']); ';\r\n\t } else {\r\n\t out += ' validate.errors = [' + (__err) + ']; return false; ';\r\n\t }\r\n\t } else {\r\n\t out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\r\n\t }\r\n\t out += ' } else { errors = ' + ($errs) + '; if (vErrors !== null) { if (' + ($errs) + ') vErrors.length = ' + ($errs) + '; else vErrors = null; } ';\r\n\t if (it.opts.allErrors) {\r\n\t out += ' } ';\r\n\t }\r\n\t } else {\r\n\t out += ' var err = '; /* istanbul ignore else */\r\n\t if (it.createErrors !== false) {\r\n\t out += ' { keyword: \\'' + ($errorKeyword || 'not') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: \"' + ($errSchemaPath) + '\" , params: {} ';\r\n\t if (it.opts.messages !== false) {\r\n\t out += ' , message: \\'should NOT be valid\\' ';\r\n\t }\r\n\t if (it.opts.verbose) {\r\n\t out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\r\n\t }\r\n\t out += ' } ';\r\n\t } else {\r\n\t out += ' {} ';\r\n\t }\r\n\t out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\r\n\t if ($breakOnError) {\r\n\t out += ' if (false) { ';\r\n\t }\r\n\t }\r\n\t return out;\r\n\t}\r\n\r\n\r\n/***/ },\r\n/* 38 */\r\n/***/ function(module, exports) {\r\n\r\n\t'use strict';\r\n\tmodule.exports = function generate_oneOf(it, $keyword) {\r\n\t var out = ' ';\r\n\t var $lvl = it.level;\r\n\t var $dataLvl = it.dataLevel;\r\n\t var $schema = it.schema[$keyword];\r\n\t var $schemaPath = it.schemaPath + '.' + $keyword;\r\n\t var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\r\n\t var $breakOnError = !it.opts.allErrors;\r\n\t var $errorKeyword;\r\n\t var $data = 'data' + ($dataLvl || '');\r\n\t var $valid = 'valid' + $lvl;\r\n\t var $errs = 'errs__' + $lvl;\r\n\t var $it = it.util.copy(it);\r\n\t var $closingBraces = '';\r\n\t $it.level++;\r\n\t out += 'var ' + ($errs) + ' = errors;var prevValid' + ($lvl) + ' = false;var ' + ($valid) + ' = false; ';\r\n\t var $wasComposite = it.compositeRule;\r\n\t it.compositeRule = $it.compositeRule = true;\r\n\t var arr1 = $schema;\r\n\t if (arr1) {\r\n\t var $sch, $i = -1,\r\n\t l1 = arr1.length - 1;\r\n\t while ($i < l1) {\r\n\t $sch = arr1[$i += 1];\r\n\t if (it.util.schemaHasRules($sch, it.RULES.all)) {\r\n\t $it.schema = $sch;\r\n\t $it.schemaPath = $schemaPath + '[' + $i + ']';\r\n\t $it.errSchemaPath = $errSchemaPath + '/' + $i;\r\n\t out += ' ' + (it.validate($it)) + ' ';\r\n\t } else {\r\n\t out += ' var valid' + ($it.level) + ' = true; ';\r\n\t }\r\n\t if ($i) {\r\n\t out += ' if (valid' + ($it.level) + ' && prevValid' + ($lvl) + ') ' + ($valid) + ' = false; else { ';\r\n\t $closingBraces += '}';\r\n\t }\r\n\t out += ' if (valid' + ($it.level) + ') ' + ($valid) + ' = prevValid' + ($lvl) + ' = true;';\r\n\t }\r\n\t }\r\n\t it.compositeRule = $it.compositeRule = $wasComposite;\r\n\t out += '' + ($closingBraces) + 'if (!' + ($valid) + ') { ';\r\n\t var $$outStack = $$outStack || [];\r\n\t $$outStack.push(out);\r\n\t out = ''; /* istanbul ignore else */\r\n\t if (it.createErrors !== false) {\r\n\t out += ' { keyword: \\'' + ($errorKeyword || 'oneOf') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: \"' + ($errSchemaPath) + '\" , params: {} ';\r\n\t if (it.opts.messages !== false) {\r\n\t out += ' , message: \\'should match exactly one schema in oneOf\\' ';\r\n\t }\r\n\t if (it.opts.verbose) {\r\n\t out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\r\n\t }\r\n\t out += ' } ';\r\n\t } else {\r\n\t out += ' {} ';\r\n\t }\r\n\t var __err = out;\r\n\t out = $$outStack.pop();\r\n\t if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */\r\n\t if (it.async) {\r\n\t out += ' throw new ValidationError([' + (__err) + ']); ';\r\n\t } else {\r\n\t out += ' validate.errors = [' + (__err) + ']; return false; ';\r\n\t }\r\n\t } else {\r\n\t out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\r\n\t }\r\n\t out += '} else { errors = ' + ($errs) + '; if (vErrors !== null) { if (' + ($errs) + ') vErrors.length = ' + ($errs) + '; else vErrors = null; }';\r\n\t if (it.opts.allErrors) {\r\n\t out += ' } ';\r\n\t }\r\n\t return out;\r\n\t}\r\n\r\n\r\n/***/ },\r\n/* 39 */\r\n/***/ function(module, exports) {\r\n\r\n\t'use strict';\r\n\tmodule.exports = function generate_pattern(it, $keyword) {\r\n\t var out = ' ';\r\n\t var $lvl = it.level;\r\n\t var $dataLvl = it.dataLevel;\r\n\t var $schema = it.schema[$keyword];\r\n\t var $schemaPath = it.schemaPath + '.' + $keyword;\r\n\t var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\r\n\t var $breakOnError = !it.opts.allErrors;\r\n\t var $errorKeyword;\r\n\t var $data = 'data' + ($dataLvl || '');\r\n\t var $isData = it.opts.v5 && $schema.$data;\r\n\t var $schemaValue = $isData ? it.util.getData($schema.$data, $dataLvl, it.dataPathArr) : $schema;\r\n\t if ($isData) {\r\n\t out += ' var schema' + ($lvl) + ' = ' + ($schemaValue) + '; ';\r\n\t $schemaValue = 'schema' + $lvl;\r\n\t }\r\n\t var $regexp = $isData ? '(new RegExp(' + $schemaValue + '))' : it.usePattern($schema);\r\n\t out += 'if ( ';\r\n\t if ($isData) {\r\n\t out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \\'string\\') || ';\r\n\t }\r\n\t out += ' !' + ($regexp) + '.test(' + ($data) + ') ) { ';\r\n\t var $$outStack = $$outStack || [];\r\n\t $$outStack.push(out);\r\n\t out = ''; /* istanbul ignore else */\r\n\t if (it.createErrors !== false) {\r\n\t out += ' { keyword: \\'' + ($errorKeyword || 'pattern') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: \"' + ($errSchemaPath) + '\" , params: { pattern: ';\r\n\t if ($isData) {\r\n\t out += '' + ($schemaValue);\r\n\t } else {\r\n\t out += '' + (it.util.toQuotedString($schema));\r\n\t }\r\n\t out += ' } ';\r\n\t if (it.opts.messages !== false) {\r\n\t out += ' , message: \\'should match pattern \"';\r\n\t if ($isData) {\r\n\t out += '\\' + ' + ($schemaValue) + ' + \\'';\r\n\t } else {\r\n\t out += '' + (it.util.escapeQuotes($schema));\r\n\t }\r\n\t out += '\"\\' ';\r\n\t }\r\n\t if (it.opts.verbose) {\r\n\t out += ' , schema: ';\r\n\t if ($isData) {\r\n\t out += 'validate.schema' + ($schemaPath);\r\n\t } else {\r\n\t out += '' + (it.util.toQuotedString($schema));\r\n\t }\r\n\t out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\r\n\t }\r\n\t out += ' } ';\r\n\t } else {\r\n\t out += ' {} ';\r\n\t }\r\n\t var __err = out;\r\n\t out = $$outStack.pop();\r\n\t if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */\r\n\t if (it.async) {\r\n\t out += ' throw new ValidationError([' + (__err) + ']); ';\r\n\t } else {\r\n\t out += ' validate.errors = [' + (__err) + ']; return false; ';\r\n\t }\r\n\t } else {\r\n\t out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\r\n\t }\r\n\t out += '} ';\r\n\t if ($breakOnError) {\r\n\t out += ' else { ';\r\n\t }\r\n\t return out;\r\n\t}\r\n\r\n\r\n/***/ },\r\n/* 40 */\r\n/***/ function(module, exports) {\r\n\r\n\t'use strict';\r\n\tmodule.exports = function generate_properties(it, $keyword) {\r\n\t var out = ' ';\r\n\t var $lvl = it.level;\r\n\t var $dataLvl = it.dataLevel;\r\n\t var $schema = it.schema[$keyword];\r\n\t var $schemaPath = it.schemaPath + '.' + $keyword;\r\n\t var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\r\n\t var $breakOnError = !it.opts.allErrors;\r\n\t var $errorKeyword;\r\n\t var $data = 'data' + ($dataLvl || '');\r\n\t var $valid = 'valid' + $lvl;\r\n\t var $errs = 'errs__' + $lvl;\r\n\t var $it = it.util.copy(it);\r\n\t var $closingBraces = '';\r\n\t $it.level++;\r\n\t var $dataNxt = $it.dataLevel = it.dataLevel + 1,\r\n\t $nextData = 'data' + $dataNxt;\r\n\t var $schemaKeys = Object.keys($schema || {}),\r\n\t $pProperties = it.schema.patternProperties || {},\r\n\t $pPropertyKeys = Object.keys($pProperties),\r\n\t $aProperties = it.schema.additionalProperties,\r\n\t $someProperties = $schemaKeys.length || $pPropertyKeys.length,\r\n\t $noAdditional = $aProperties === false,\r\n\t $additionalIsSchema = typeof $aProperties == 'object' && Object.keys($aProperties).length,\r\n\t $removeAdditional = it.opts.removeAdditional,\r\n\t $checkAdditional = $noAdditional || $additionalIsSchema || $removeAdditional;\r\n\t var $required = it.schema.required;\r\n\t if ($required && !(it.opts.v5 && $required.$data) && $required.length < it.opts.loopRequired) var $requiredHash = it.util.toHash($required);\r\n\t if (it.opts.v5) {\r\n\t var $pgProperties = it.schema.patternGroups || {},\r\n\t $pgPropertyKeys = Object.keys($pgProperties);\r\n\t }\r\n\t out += 'var ' + ($errs) + ' = errors;var valid' + ($it.level) + ' = true;';\r\n\t if ($checkAdditional) {\r\n\t out += ' for (var key' + ($lvl) + ' in ' + ($data) + ') { ';\r\n\t if ($someProperties) {\r\n\t out += ' var isAdditional' + ($lvl) + ' = !(false ';\r\n\t if ($schemaKeys.length) {\r\n\t if ($schemaKeys.length > 5) {\r\n\t out += ' || validate.schema' + ($schemaPath) + '[key' + ($lvl) + '] ';\r\n\t } else {\r\n\t var arr1 = $schemaKeys;\r\n\t if (arr1) {\r\n\t var $propertyKey, i1 = -1,\r\n\t l1 = arr1.length - 1;\r\n\t while (i1 < l1) {\r\n\t $propertyKey = arr1[i1 += 1];\r\n\t out += ' || key' + ($lvl) + ' == ' + (it.util.toQuotedString($propertyKey)) + ' ';\r\n\t }\r\n\t }\r\n\t }\r\n\t }\r\n\t if ($pPropertyKeys.length) {\r\n\t var arr2 = $pPropertyKeys;\r\n\t if (arr2) {\r\n\t var $pProperty, $i = -1,\r\n\t l2 = arr2.length - 1;\r\n\t while ($i < l2) {\r\n\t $pProperty = arr2[$i += 1];\r\n\t out += ' || ' + (it.usePattern($pProperty)) + '.test(key' + ($lvl) + ') ';\r\n\t }\r\n\t }\r\n\t }\r\n\t if (it.opts.v5 && $pgPropertyKeys && $pgPropertyKeys.length) {\r\n\t var arr3 = $pgPropertyKeys;\r\n\t if (arr3) {\r\n\t var $pgProperty, $i = -1,\r\n\t l3 = arr3.length - 1;\r\n\t while ($i < l3) {\r\n\t $pgProperty = arr3[$i += 1];\r\n\t out += ' || ' + (it.usePattern($pgProperty)) + '.test(key' + ($lvl) + ') ';\r\n\t }\r\n\t }\r\n\t }\r\n\t out += ' ); if (isAdditional' + ($lvl) + ') { ';\r\n\t }\r\n\t if ($removeAdditional == 'all') {\r\n\t out += ' delete ' + ($data) + '[key' + ($lvl) + ']; ';\r\n\t } else {\r\n\t var $currentErrorPath = it.errorPath;\r\n\t var $additionalProperty = '\\' + key' + $lvl + ' + \\'';\r\n\t if (it.opts._errorDataPathProperty) {\r\n\t it.errorPath = it.util.getPathExpr(it.errorPath, 'key' + $lvl, it.opts.jsonPointers);\r\n\t }\r\n\t if ($noAdditional) {\r\n\t if ($removeAdditional) {\r\n\t out += ' delete ' + ($data) + '[key' + ($lvl) + ']; ';\r\n\t } else {\r\n\t out += ' valid' + ($it.level) + ' = false; ';\r\n\t var $currErrSchemaPath = $errSchemaPath;\r\n\t $errSchemaPath = it.errSchemaPath + '/additionalProperties';\r\n\t var $$outStack = $$outStack || [];\r\n\t $$outStack.push(out);\r\n\t out = ''; /* istanbul ignore else */\r\n\t if (it.createErrors !== false) {\r\n\t out += ' { keyword: \\'' + ($errorKeyword || 'additionalProperties') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: \"' + ($errSchemaPath) + '\" , params: { additionalProperty: \\'' + ($additionalProperty) + '\\' } ';\r\n\t if (it.opts.messages !== false) {\r\n\t out += ' , message: \\'should NOT have additional properties\\' ';\r\n\t }\r\n\t if (it.opts.verbose) {\r\n\t out += ' , schema: false , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\r\n\t }\r\n\t out += ' } ';\r\n\t } else {\r\n\t out += ' {} ';\r\n\t }\r\n\t var __err = out;\r\n\t out = $$outStack.pop();\r\n\t if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */\r\n\t if (it.async) {\r\n\t out += ' throw new ValidationError([' + (__err) + ']); ';\r\n\t } else {\r\n\t out += ' validate.errors = [' + (__err) + ']; return false; ';\r\n\t }\r\n\t } else {\r\n\t out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\r\n\t }\r\n\t $errSchemaPath = $currErrSchemaPath;\r\n\t if ($breakOnError) {\r\n\t out += ' break; ';\r\n\t }\r\n\t }\r\n\t } else if ($additionalIsSchema) {\r\n\t if ($removeAdditional == 'failing') {\r\n\t out += ' var ' + ($errs) + ' = errors; ';\r\n\t var $wasComposite = it.compositeRule;\r\n\t it.compositeRule = $it.compositeRule = true;\r\n\t $it.schema = $aProperties;\r\n\t $it.schemaPath = it.schemaPath + '.additionalProperties';\r\n\t $it.errSchemaPath = it.errSchemaPath + '/additionalProperties';\r\n\t $it.errorPath = it.opts._errorDataPathProperty ? it.errorPath : it.util.getPathExpr(it.errorPath, 'key' + $lvl, it.opts.jsonPointers);\r\n\t var $passData = $data + '[key' + $lvl + ']';\r\n\t $it.dataPathArr[$dataNxt] = 'key' + $lvl;\r\n\t var $code = it.validate($it);\r\n\t if (it.util.varOccurences($code, $nextData) < 2) {\r\n\t out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' ';\r\n\t } else {\r\n\t out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' ';\r\n\t }\r\n\t out += ' if (!valid' + ($it.level) + ') { errors = ' + ($errs) + '; if (validate.errors !== null) { if (errors) validate.errors.length = errors; else validate.errors = null; } delete ' + ($data) + '[key' + ($lvl) + ']; } ';\r\n\t it.compositeRule = $it.compositeRule = $wasComposite;\r\n\t } else {\r\n\t $it.schema = $aProperties;\r\n\t $it.schemaPath = it.schemaPath + '.additionalProperties';\r\n\t $it.errSchemaPath = it.errSchemaPath + '/additionalProperties';\r\n\t $it.errorPath = it.opts._errorDataPathProperty ? it.errorPath : it.util.getPathExpr(it.errorPath, 'key' + $lvl, it.opts.jsonPointers);\r\n\t var $passData = $data + '[key' + $lvl + ']';\r\n\t $it.dataPathArr[$dataNxt] = 'key' + $lvl;\r\n\t var $code = it.validate($it);\r\n\t if (it.util.varOccurences($code, $nextData) < 2) {\r\n\t out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' ';\r\n\t } else {\r\n\t out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' ';\r\n\t }\r\n\t if ($breakOnError) {\r\n\t out += ' if (!valid' + ($it.level) + ') break; ';\r\n\t }\r\n\t }\r\n\t }\r\n\t it.errorPath = $currentErrorPath;\r\n\t }\r\n\t if ($someProperties) {\r\n\t out += ' } ';\r\n\t }\r\n\t out += ' } ';\r\n\t if ($breakOnError) {\r\n\t out += ' if (valid' + ($it.level) + ') { ';\r\n\t $closingBraces += '}';\r\n\t }\r\n\t }\r\n\t var $useDefaults = it.opts.useDefaults && !it.compositeRule;\r\n\t if ($schemaKeys.length) {\r\n\t var arr4 = $schemaKeys;\r\n\t if (arr4) {\r\n\t var $propertyKey, i4 = -1,\r\n\t l4 = arr4.length - 1;\r\n\t while (i4 < l4) {\r\n\t $propertyKey = arr4[i4 += 1];\r\n\t var $sch = $schema[$propertyKey];\r\n\t if (it.util.schemaHasRules($sch, it.RULES.all)) {\r\n\t var $prop = it.util.getProperty($propertyKey),\r\n\t $passData = $data + $prop,\r\n\t $hasDefault = $useDefaults && $sch.default !== undefined;\r\n\t $it.schema = $sch;\r\n\t $it.schemaPath = $schemaPath + $prop;\r\n\t $it.errSchemaPath = $errSchemaPath + '/' + it.util.escapeFragment($propertyKey);\r\n\t $it.errorPath = it.util.getPath(it.errorPath, $propertyKey, it.opts.jsonPointers);\r\n\t $it.dataPathArr[$dataNxt] = it.util.toQuotedString($propertyKey);\r\n\t var $code = it.validate($it);\r\n\t if (it.util.varOccurences($code, $nextData) < 2) {\r\n\t $code = it.util.varReplace($code, $nextData, $passData);\r\n\t var $useData = $passData;\r\n\t } else {\r\n\t var $useData = $nextData;\r\n\t out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ';\r\n\t }\r\n\t if ($hasDefault) {\r\n\t out += ' ' + ($code) + ' ';\r\n\t } else {\r\n\t if ($requiredHash && $requiredHash[$propertyKey]) {\r\n\t out += ' if (' + ($useData) + ' === undefined) { valid' + ($it.level) + ' = false; ';\r\n\t var $currentErrorPath = it.errorPath,\r\n\t $currErrSchemaPath = $errSchemaPath,\r\n\t $missingProperty = it.util.escapeQuotes($propertyKey);\r\n\t if (it.opts._errorDataPathProperty) {\r\n\t it.errorPath = it.util.getPath($currentErrorPath, $propertyKey, it.opts.jsonPointers);\r\n\t }\r\n\t $errSchemaPath = it.errSchemaPath + '/required';\r\n\t var $$outStack = $$outStack || [];\r\n\t $$outStack.push(out);\r\n\t out = ''; /* istanbul ignore else */\r\n\t if (it.createErrors !== false) {\r\n\t out += ' { keyword: \\'' + ($errorKeyword || 'required') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: \"' + ($errSchemaPath) + '\" , params: { missingProperty: \\'' + ($missingProperty) + '\\' } ';\r\n\t if (it.opts.messages !== false) {\r\n\t out += ' , message: \\'';\r\n\t if (it.opts._errorDataPathProperty) {\r\n\t out += 'is a required property';\r\n\t } else {\r\n\t out += 'should have required property \\\\\\'' + ($missingProperty) + '\\\\\\'';\r\n\t }\r\n\t out += '\\' ';\r\n\t }\r\n\t if (it.opts.verbose) {\r\n\t out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\r\n\t }\r\n\t out += ' } ';\r\n\t } else {\r\n\t out += ' {} ';\r\n\t }\r\n\t var __err = out;\r\n\t out = $$outStack.pop();\r\n\t if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */\r\n\t if (it.async) {\r\n\t out += ' throw new ValidationError([' + (__err) + ']); ';\r\n\t } else {\r\n\t out += ' validate.errors = [' + (__err) + ']; return false; ';\r\n\t }\r\n\t } else {\r\n\t out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\r\n\t }\r\n\t $errSchemaPath = $currErrSchemaPath;\r\n\t it.errorPath = $currentErrorPath;\r\n\t out += ' } else { ';\r\n\t } else {\r\n\t if ($breakOnError) {\r\n\t out += ' if (' + ($useData) + ' === undefined) { valid' + ($it.level) + ' = true; } else { ';\r\n\t } else {\r\n\t out += ' if (' + ($useData) + ' !== undefined) { ';\r\n\t }\r\n\t }\r\n\t out += ' ' + ($code) + ' } ';\r\n\t }\r\n\t }\r\n\t if ($breakOnError) {\r\n\t out += ' if (valid' + ($it.level) + ') { ';\r\n\t $closingBraces += '}';\r\n\t }\r\n\t }\r\n\t }\r\n\t }\r\n\t var arr5 = $pPropertyKeys;\r\n\t if (arr5) {\r\n\t var $pProperty, i5 = -1,\r\n\t l5 = arr5.length - 1;\r\n\t while (i5 < l5) {\r\n\t $pProperty = arr5[i5 += 1];\r\n\t var $sch = $pProperties[$pProperty];\r\n\t if (it.util.schemaHasRules($sch, it.RULES.all)) {\r\n\t $it.schema = $sch;\r\n\t $it.schemaPath = it.schemaPath + '.patternProperties' + it.util.getProperty($pProperty);\r\n\t $it.errSchemaPath = it.errSchemaPath + '/patternProperties/' + it.util.escapeFragment($pProperty);\r\n\t out += ' for (var key' + ($lvl) + ' in ' + ($data) + ') { if (' + (it.usePattern($pProperty)) + '.test(key' + ($lvl) + ')) { ';\r\n\t $it.errorPath = it.util.getPathExpr(it.errorPath, 'key' + $lvl, it.opts.jsonPointers);\r\n\t var $passData = $data + '[key' + $lvl + ']';\r\n\t $it.dataPathArr[$dataNxt] = 'key' + $lvl;\r\n\t var $code = it.validate($it);\r\n\t if (it.util.varOccurences($code, $nextData) < 2) {\r\n\t out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' ';\r\n\t } else {\r\n\t out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' ';\r\n\t }\r\n\t if ($breakOnError) {\r\n\t out += ' if (!valid' + ($it.level) + ') break; ';\r\n\t }\r\n\t out += ' } ';\r\n\t if ($breakOnError) {\r\n\t out += ' else valid' + ($it.level) + ' = true; ';\r\n\t }\r\n\t out += ' } ';\r\n\t if ($breakOnError) {\r\n\t out += ' if (valid' + ($it.level) + ') { ';\r\n\t $closingBraces += '}';\r\n\t }\r\n\t }\r\n\t }\r\n\t }\r\n\t if (it.opts.v5) {\r\n\t var arr6 = $pgPropertyKeys;\r\n\t if (arr6) {\r\n\t var $pgProperty, i6 = -1,\r\n\t l6 = arr6.length - 1;\r\n\t while (i6 < l6) {\r\n\t $pgProperty = arr6[i6 += 1];\r\n\t var $pgSchema = $pgProperties[$pgProperty],\r\n\t $sch = $pgSchema.schema;\r\n\t if (it.util.schemaHasRules($sch, it.RULES.all)) {\r\n\t $it.schema = $sch;\r\n\t $it.schemaPath = it.schemaPath + '.patternGroups' + it.util.getProperty($pgProperty) + '.schema';\r\n\t $it.errSchemaPath = it.errSchemaPath + '/patternGroups/' + it.util.escapeFragment($pgProperty) + '/schema';\r\n\t out += ' var pgPropCount' + ($lvl) + ' = 0; for (var key' + ($lvl) + ' in ' + ($data) + ') { if (' + (it.usePattern($pgProperty)) + '.test(key' + ($lvl) + ')) { pgPropCount' + ($lvl) + '++; ';\r\n\t $it.errorPath = it.util.getPathExpr(it.errorPath, 'key' + $lvl, it.opts.jsonPointers);\r\n\t var $passData = $data + '[key' + $lvl + ']';\r\n\t $it.dataPathArr[$dataNxt] = 'key' + $lvl;\r\n\t var $code = it.validate($it);\r\n\t if (it.util.varOccurences($code, $nextData) < 2) {\r\n\t out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' ';\r\n\t } else {\r\n\t out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' ';\r\n\t }\r\n\t if ($breakOnError) {\r\n\t out += ' if (!valid' + ($it.level) + ') break; ';\r\n\t }\r\n\t out += ' } ';\r\n\t if ($breakOnError) {\r\n\t out += ' else valid' + ($it.level) + ' = true; ';\r\n\t }\r\n\t out += ' } ';\r\n\t if ($breakOnError) {\r\n\t out += ' if (valid' + ($it.level) + ') { ';\r\n\t $closingBraces += '}';\r\n\t }\r\n\t var $pgMin = $pgSchema.minimum,\r\n\t $pgMax = $pgSchema.maximum;\r\n\t if ($pgMin !== undefined || $pgMax !== undefined) {\r\n\t out += ' var ' + ($valid) + ' = true; ';\r\n\t var $currErrSchemaPath = $errSchemaPath;\r\n\t if ($pgMin !== undefined) {\r\n\t var $limit = $pgMin,\r\n\t $reason = 'minimum',\r\n\t $moreOrLess = 'less';\r\n\t out += ' ' + ($valid) + ' = pgPropCount' + ($lvl) + ' >= ' + ($pgMin) + '; ';\r\n\t $errSchemaPath = it.errSchemaPath + '/patternGroups/minimum';\r\n\t out += ' if (!' + ($valid) + ') { ';\r\n\t var $$outStack = $$outStack || [];\r\n\t $$outStack.push(out);\r\n\t out = ''; /* istanbul ignore else */\r\n\t if (it.createErrors !== false) {\r\n\t out += ' { keyword: \\'' + ($errorKeyword || 'patternGroups') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: \"' + ($errSchemaPath) + '\" , params: { reason: \\'' + ($reason) + '\\', limit: ' + ($limit) + ', pattern: \\'' + (it.util.escapeQuotes($pgProperty)) + '\\' } ';\r\n\t if (it.opts.messages !== false) {\r\n\t out += ' , message: \\'should NOT have ' + ($moreOrLess) + ' than ' + ($limit) + ' properties matching pattern \"' + (it.util.escapeQuotes($pgProperty)) + '\"\\' ';\r\n\t }\r\n\t if (it.opts.verbose) {\r\n\t out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\r\n\t }\r\n\t out += ' } ';\r\n\t } else {\r\n\t out += ' {} ';\r\n\t }\r\n\t var __err = out;\r\n\t out = $$outStack.pop();\r\n\t if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */\r\n\t if (it.async) {\r\n\t out += ' throw new ValidationError([' + (__err) + ']); ';\r\n\t } else {\r\n\t out += ' validate.errors = [' + (__err) + ']; return false; ';\r\n\t }\r\n\t } else {\r\n\t out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\r\n\t }\r\n\t out += ' } ';\r\n\t if ($pgMax !== undefined) {\r\n\t out += ' else ';\r\n\t }\r\n\t }\r\n\t if ($pgMax !== undefined) {\r\n\t var $limit = $pgMax,\r\n\t $reason = 'maximum',\r\n\t $moreOrLess = 'more';\r\n\t out += ' ' + ($valid) + ' = pgPropCount' + ($lvl) + ' <= ' + ($pgMax) + '; ';\r\n\t $errSchemaPath = it.errSchemaPath + '/patternGroups/maximum';\r\n\t out += ' if (!' + ($valid) + ') { ';\r\n\t var $$outStack = $$outStack || [];\r\n\t $$outStack.push(out);\r\n\t out = ''; /* istanbul ignore else */\r\n\t if (it.createErrors !== false) {\r\n\t out += ' { keyword: \\'' + ($errorKeyword || 'patternGroups') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: \"' + ($errSchemaPath) + '\" , params: { reason: \\'' + ($reason) + '\\', limit: ' + ($limit) + ', pattern: \\'' + (it.util.escapeQuotes($pgProperty)) + '\\' } ';\r\n\t if (it.opts.messages !== false) {\r\n\t out += ' , message: \\'should NOT have ' + ($moreOrLess) + ' than ' + ($limit) + ' properties matching pattern \"' + (it.util.escapeQuotes($pgProperty)) + '\"\\' ';\r\n\t }\r\n\t if (it.opts.verbose) {\r\n\t out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\r\n\t }\r\n\t out += ' } ';\r\n\t } else {\r\n\t out += ' {} ';\r\n\t }\r\n\t var __err = out;\r\n\t out = $$outStack.pop();\r\n\t if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */\r\n\t if (it.async) {\r\n\t out += ' throw new ValidationError([' + (__err) + ']); ';\r\n\t } else {\r\n\t out += ' validate.errors = [' + (__err) + ']; return false; ';\r\n\t }\r\n\t } else {\r\n\t out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\r\n\t }\r\n\t out += ' } ';\r\n\t }\r\n\t $errSchemaPath = $currErrSchemaPath;\r\n\t if ($breakOnError) {\r\n\t out += ' if (' + ($valid) + ') { ';\r\n\t $closingBraces += '}';\r\n\t }\r\n\t }\r\n\t }\r\n\t }\r\n\t }\r\n\t }\r\n\t if ($breakOnError) {\r\n\t out += ' ' + ($closingBraces) + ' if (' + ($errs) + ' == errors) {';\r\n\t }\r\n\t out = it.util.cleanUpCode(out);\r\n\t return out;\r\n\t}\r\n\r\n\r\n/***/ },\r\n/* 41 */\r\n/***/ function(module, exports) {\r\n\r\n\t'use strict';\r\n\tmodule.exports = function generate_required(it, $keyword) {\r\n\t var out = ' ';\r\n\t var $lvl = it.level;\r\n\t var $dataLvl = it.dataLevel;\r\n\t var $schema = it.schema[$keyword];\r\n\t var $schemaPath = it.schemaPath + '.' + $keyword;\r\n\t var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\r\n\t var $breakOnError = !it.opts.allErrors;\r\n\t var $errorKeyword;\r\n\t var $data = 'data' + ($dataLvl || '');\r\n\t var $valid = 'valid' + $lvl;\r\n\t var $isData = it.opts.v5 && $schema.$data;\r\n\t var $schemaValue = $isData ? it.util.getData($schema.$data, $dataLvl, it.dataPathArr) : $schema;\r\n\t if ($isData) {\r\n\t out += ' var schema' + ($lvl) + ' = ' + ($schemaValue) + '; ';\r\n\t $schemaValue = 'schema' + $lvl;\r\n\t }\r\n\t if (!$isData) {\r\n\t if ($schema.length < it.opts.loopRequired && it.schema.properties && Object.keys(it.schema.properties).length) {\r\n\t var $required = [];\r\n\t var arr1 = $schema;\r\n\t if (arr1) {\r\n\t var $property, i1 = -1,\r\n\t l1 = arr1.length - 1;\r\n\t while (i1 < l1) {\r\n\t $property = arr1[i1 += 1];\r\n\t var $propertySch = it.schema.properties[$property];\r\n\t if (!($propertySch && it.util.schemaHasRules($propertySch, it.RULES.all))) {\r\n\t $required[$required.length] = $property;\r\n\t }\r\n\t }\r\n\t }\r\n\t } else {\r\n\t var $required = $schema;\r\n\t }\r\n\t }\r\n\t if ($isData || $required.length) {\r\n\t var $currentErrorPath = it.errorPath,\r\n\t $loopRequired = $isData || $required.length >= it.opts.loopRequired;\r\n\t if ($breakOnError) {\r\n\t out += ' var missing' + ($lvl) + '; ';\r\n\t if ($loopRequired) {\r\n\t if (!$isData) {\r\n\t out += ' var schema' + ($lvl) + ' = validate.schema' + ($schemaPath) + '; ';\r\n\t }\r\n\t var $i = 'i' + $lvl,\r\n\t $propertyPath = 'schema' + $lvl + '[' + $i + ']',\r\n\t $missingProperty = '\\' + ' + $propertyPath + ' + \\'';\r\n\t if (it.opts._errorDataPathProperty) {\r\n\t it.errorPath = it.util.getPathExpr($currentErrorPath, $propertyPath, it.opts.jsonPointers);\r\n\t }\r\n\t out += ' var ' + ($valid) + ' = true; ';\r\n\t if ($isData) {\r\n\t out += ' if (schema' + ($lvl) + ' === undefined) ' + ($valid) + ' = true; else if (!Array.isArray(schema' + ($lvl) + ')) ' + ($valid) + ' = false; else {';\r\n\t }\r\n\t out += ' for (var ' + ($i) + ' = 0; ' + ($i) + ' < schema' + ($lvl) + '.length; ' + ($i) + '++) { ' + ($valid) + ' = ' + ($data) + '[schema' + ($lvl) + '[' + ($i) + ']] !== undefined; if (!' + ($valid) + ') break; } ';\r\n\t if ($isData) {\r\n\t out += ' } ';\r\n\t }\r\n\t out += ' if (!' + ($valid) + ') { ';\r\n\t var $$outStack = $$outStack || [];\r\n\t $$outStack.push(out);\r\n\t out = ''; /* istanbul ignore else */\r\n\t if (it.createErrors !== false) {\r\n\t out += ' { keyword: \\'' + ($errorKeyword || 'required') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: \"' + ($errSchemaPath) + '\" , params: { missingProperty: \\'' + ($missingProperty) + '\\' } ';\r\n\t if (it.opts.messages !== false) {\r\n\t out += ' , message: \\'';\r\n\t if (it.opts._errorDataPathProperty) {\r\n\t out += 'is a required property';\r\n\t } else {\r\n\t out += 'should have required property \\\\\\'' + ($missingProperty) + '\\\\\\'';\r\n\t }\r\n\t out += '\\' ';\r\n\t }\r\n\t if (it.opts.verbose) {\r\n\t out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\r\n\t }\r\n\t out += ' } ';\r\n\t } else {\r\n\t out += ' {} ';\r\n\t }\r\n\t var __err = out;\r\n\t out = $$outStack.pop();\r\n\t if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */\r\n\t if (it.async) {\r\n\t out += ' throw new ValidationError([' + (__err) + ']); ';\r\n\t } else {\r\n\t out += ' validate.errors = [' + (__err) + ']; return false; ';\r\n\t }\r\n\t } else {\r\n\t out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\r\n\t }\r\n\t out += ' } else { ';\r\n\t } else {\r\n\t out += ' if ( ';\r\n\t var arr2 = $required;\r\n\t if (arr2) {\r\n\t var _$property, $i = -1,\r\n\t l2 = arr2.length - 1;\r\n\t while ($i < l2) {\r\n\t _$property = arr2[$i += 1];\r\n\t if ($i) {\r\n\t out += ' || ';\r\n\t }\r\n\t var $prop = it.util.getProperty(_$property);\r\n\t out += ' ( ' + ($data) + ($prop) + ' === undefined && (missing' + ($lvl) + ' = ' + (it.util.toQuotedString(it.opts.jsonPointers ? _$property : $prop)) + ') ) ';\r\n\t }\r\n\t }\r\n\t out += ') { ';\r\n\t var $propertyPath = 'missing' + $lvl,\r\n\t $missingProperty = '\\' + ' + $propertyPath + ' + \\'';\r\n\t if (it.opts._errorDataPathProperty) {\r\n\t it.errorPath = it.opts.jsonPointers ? it.util.getPathExpr($currentErrorPath, $propertyPath, true) : $currentErrorPath + ' + ' + $propertyPath;\r\n\t }\r\n\t var $$outStack = $$outStack || [];\r\n\t $$outStack.push(out);\r\n\t out = ''; /* istanbul ignore else */\r\n\t if (it.createErrors !== false) {\r\n\t out += ' { keyword: \\'' + ($errorKeyword || 'required') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: \"' + ($errSchemaPath) + '\" , params: { missingProperty: \\'' + ($missingProperty) + '\\' } ';\r\n\t if (it.opts.messages !== false) {\r\n\t out += ' , message: \\'';\r\n\t if (it.opts._errorDataPathProperty) {\r\n\t out += 'is a required property';\r\n\t } else {\r\n\t out += 'should have required property \\\\\\'' + ($missingProperty) + '\\\\\\'';\r\n\t }\r\n\t out += '\\' ';\r\n\t }\r\n\t if (it.opts.verbose) {\r\n\t out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\r\n\t }\r\n\t out += ' } ';\r\n\t } else {\r\n\t out += ' {} ';\r\n\t }\r\n\t var __err = out;\r\n\t out = $$outStack.pop();\r\n\t if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */\r\n\t if (it.async) {\r\n\t out += ' throw new ValidationError([' + (__err) + ']); ';\r\n\t } else {\r\n\t out += ' validate.errors = [' + (__err) + ']; return false; ';\r\n\t }\r\n\t } else {\r\n\t out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\r\n\t }\r\n\t out += ' } else { ';\r\n\t }\r\n\t } else {\r\n\t if ($loopRequired) {\r\n\t if (!$isData) {\r\n\t out += ' var schema' + ($lvl) + ' = validate.schema' + ($schemaPath) + '; ';\r\n\t }\r\n\t var $i = 'i' + $lvl,\r\n\t $propertyPath = 'schema' + $lvl + '[' + $i + ']',\r\n\t $missingProperty = '\\' + ' + $propertyPath + ' + \\'';\r\n\t if (it.opts._errorDataPathProperty) {\r\n\t it.errorPath = it.util.getPathExpr($currentErrorPath, $propertyPath, it.opts.jsonPointers);\r\n\t }\r\n\t if ($isData) {\r\n\t out += ' if (schema' + ($lvl) + ' && !Array.isArray(schema' + ($lvl) + ')) { var err = '; /* istanbul ignore else */\r\n\t if (it.createErrors !== false) {\r\n\t out += ' { keyword: \\'' + ($errorKeyword || 'required') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: \"' + ($errSchemaPath) + '\" , params: { missingProperty: \\'' + ($missingProperty) + '\\' } ';\r\n\t if (it.opts.messages !== false) {\r\n\t out += ' , message: \\'';\r\n\t if (it.opts._errorDataPathProperty) {\r\n\t out += 'is a required property';\r\n\t } else {\r\n\t out += 'should have required property \\\\\\'' + ($missingProperty) + '\\\\\\'';\r\n\t }\r\n\t out += '\\' ';\r\n\t }\r\n\t if (it.opts.verbose) {\r\n\t out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\r\n\t }\r\n\t out += ' } ';\r\n\t } else {\r\n\t out += ' {} ';\r\n\t }\r\n\t out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } else if (schema' + ($lvl) + ' !== undefined) { ';\r\n\t }\r\n\t out += ' for (var ' + ($i) + ' = 0; ' + ($i) + ' < schema' + ($lvl) + '.length; ' + ($i) + '++) { if (' + ($data) + '[schema' + ($lvl) + '[' + ($i) + ']] === undefined) { var err = '; /* istanbul ignore else */\r\n\t if (it.createErrors !== false) {\r\n\t out += ' { keyword: \\'' + ($errorKeyword || 'required') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: \"' + ($errSchemaPath) + '\" , params: { missingProperty: \\'' + ($missingProperty) + '\\' } ';\r\n\t if (it.opts.messages !== false) {\r\n\t out += ' , message: \\'';\r\n\t if (it.opts._errorDataPathProperty) {\r\n\t out += 'is a required property';\r\n\t } else {\r\n\t out += 'should have required property \\\\\\'' + ($missingProperty) + '\\\\\\'';\r\n\t }\r\n\t out += '\\' ';\r\n\t }\r\n\t if (it.opts.verbose) {\r\n\t out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\r\n\t }\r\n\t out += ' } ';\r\n\t } else {\r\n\t out += ' {} ';\r\n\t }\r\n\t out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } } ';\r\n\t if ($isData) {\r\n\t out += ' } ';\r\n\t }\r\n\t } else {\r\n\t var arr3 = $required;\r\n\t if (arr3) {\r\n\t var $property, $i = -1,\r\n\t l3 = arr3.length - 1;\r\n\t while ($i < l3) {\r\n\t $property = arr3[$i += 1];\r\n\t var $prop = it.util.getProperty($property),\r\n\t $missingProperty = it.util.escapeQuotes($property);\r\n\t if (it.opts._errorDataPathProperty) {\r\n\t it.errorPath = it.util.getPath($currentErrorPath, $property, it.opts.jsonPointers);\r\n\t }\r\n\t out += ' if (' + ($data) + ($prop) + ' === undefined) { var err = '; /* istanbul ignore else */\r\n\t if (it.createErrors !== false) {\r\n\t out += ' { keyword: \\'' + ($errorKeyword || 'required') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: \"' + ($errSchemaPath) + '\" , params: { missingProperty: \\'' + ($missingProperty) + '\\' } ';\r\n\t if (it.opts.messages !== false) {\r\n\t out += ' , message: \\'';\r\n\t if (it.opts._errorDataPathProperty) {\r\n\t out += 'is a required property';\r\n\t } else {\r\n\t out += 'should have required property \\\\\\'' + ($missingProperty) + '\\\\\\'';\r\n\t }\r\n\t out += '\\' ';\r\n\t }\r\n\t if (it.opts.verbose) {\r\n\t out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\r\n\t }\r\n\t out += ' } ';\r\n\t } else {\r\n\t out += ' {} ';\r\n\t }\r\n\t out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } ';\r\n\t }\r\n\t }\r\n\t }\r\n\t }\r\n\t it.errorPath = $currentErrorPath;\r\n\t } else if ($breakOnError) {\r\n\t out += ' if (true) {';\r\n\t }\r\n\t return out;\r\n\t}\r\n\r\n\r\n/***/ },\r\n/* 42 */\r\n/***/ function(module, exports) {\r\n\r\n\t'use strict';\r\n\tmodule.exports = function generate_uniqueItems(it, $keyword) {\r\n\t var out = ' ';\r\n\t var $lvl = it.level;\r\n\t var $dataLvl = it.dataLevel;\r\n\t var $schema = it.schema[$keyword];\r\n\t var $schemaPath = it.schemaPath + '.' + $keyword;\r\n\t var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\r\n\t var $breakOnError = !it.opts.allErrors;\r\n\t var $errorKeyword;\r\n\t var $data = 'data' + ($dataLvl || '');\r\n\t var $valid = 'valid' + $lvl;\r\n\t var $isData = it.opts.v5 && $schema.$data;\r\n\t var $schemaValue = $isData ? it.util.getData($schema.$data, $dataLvl, it.dataPathArr) : $schema;\r\n\t if ($isData) {\r\n\t out += ' var schema' + ($lvl) + ' = ' + ($schemaValue) + '; ';\r\n\t $schemaValue = 'schema' + $lvl;\r\n\t }\r\n\t if (($schema || $isData) && it.opts.uniqueItems !== false) {\r\n\t if ($isData) {\r\n\t out += ' var ' + ($valid) + '; if (' + ($schemaValue) + ' === false || ' + ($schemaValue) + ' === undefined) ' + ($valid) + ' = true; else if (typeof ' + ($schemaValue) + ' != \\'boolean\\') ' + ($valid) + ' = false; else { ';\r\n\t }\r\n\t out += ' var ' + ($valid) + ' = true; if (' + ($data) + '.length > 1) { var i = ' + ($data) + '.length, j; outer: for (;i--;) { for (j = i; j--;) { if (equal(' + ($data) + '[i], ' + ($data) + '[j])) { ' + ($valid) + ' = false; break outer; } } } } ';\r\n\t if ($isData) {\r\n\t out += ' } ';\r\n\t }\r\n\t out += ' if (!' + ($valid) + ') { ';\r\n\t var $$outStack = $$outStack || [];\r\n\t $$outStack.push(out);\r\n\t out = ''; /* istanbul ignore else */\r\n\t if (it.createErrors !== false) {\r\n\t out += ' { keyword: \\'' + ($errorKeyword || 'uniqueItems') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: \"' + ($errSchemaPath) + '\" , params: { i: i, j: j } ';\r\n\t if (it.opts.messages !== false) {\r\n\t out += ' , message: \\'should NOT have duplicate items (items ## \\' + j + \\' and \\' + i + \\' are identical)\\' ';\r\n\t }\r\n\t if (it.opts.verbose) {\r\n\t out += ' , schema: ';\r\n\t if ($isData) {\r\n\t out += 'validate.schema' + ($schemaPath);\r\n\t } else {\r\n\t out += '' + ($schema);\r\n\t }\r\n\t out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\r\n\t }\r\n\t out += ' } ';\r\n\t } else {\r\n\t out += ' {} ';\r\n\t }\r\n\t var __err = out;\r\n\t out = $$outStack.pop();\r\n\t if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */\r\n\t if (it.async) {\r\n\t out += ' throw new ValidationError([' + (__err) + ']); ';\r\n\t } else {\r\n\t out += ' validate.errors = [' + (__err) + ']; return false; ';\r\n\t }\r\n\t } else {\r\n\t out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\r\n\t }\r\n\t out += ' } ';\r\n\t if ($breakOnError) {\r\n\t out += ' else { ';\r\n\t }\r\n\t } else {\r\n\t if ($breakOnError) {\r\n\t out += ' if (true) { ';\r\n\t }\r\n\t }\r\n\t return out;\r\n\t}\r\n\r\n\r\n/***/ },\r\n/* 43 */\r\n/***/ function(module, exports, __webpack_require__) {\r\n\r\n\t'use strict';\r\n\r\n\tvar META_SCHEMA_ID = 'https://raw.githubusercontent.com/epoberezkin/ajv/master/lib/refs/json-schema-v5.json';\r\n\r\n\tmodule.exports = {\r\n\t enable: enableV5,\r\n\t META_SCHEMA_ID: META_SCHEMA_ID\r\n\t};\r\n\r\n\r\n\tfunction enableV5(ajv) {\r\n\t var inlineFunctions = {\r\n\t 'switch': __webpack_require__(44),\r\n\t 'constant': __webpack_require__(45),\r\n\t '_formatLimit': __webpack_require__(46),\r\n\t 'patternRequired': __webpack_require__(47)\r\n\t };\r\n\r\n\t if (ajv._opts.meta !== false) {\r\n\t var metaSchema = __webpack_require__(48);\r\n\t ajv.addMetaSchema(metaSchema, META_SCHEMA_ID);\r\n\t }\r\n\t _addKeyword('constant');\r\n\t ajv.addKeyword('contains', { type: 'array', macro: containsMacro });\r\n\r\n\t _addKeyword('formatMaximum', 'string', inlineFunctions._formatLimit);\r\n\t _addKeyword('formatMinimum', 'string', inlineFunctions._formatLimit);\r\n\t ajv.addKeyword('exclusiveFormatMaximum');\r\n\t ajv.addKeyword('exclusiveFormatMinimum');\r\n\r\n\t ajv.addKeyword('patternGroups'); // implemented in properties.jst\r\n\t _addKeyword('patternRequired', 'object');\r\n\t _addKeyword('switch');\r\n\r\n\r\n\t function _addKeyword(keyword, types, inlineFunc) {\r\n\t var definition = {\r\n\t inline: inlineFunc || inlineFunctions[keyword],\r\n\t statements: true,\r\n\t errors: 'full'\r\n\t };\r\n\t if (types) definition.type = types;\r\n\t ajv.addKeyword(keyword, definition);\r\n\t }\r\n\t}\r\n\r\n\r\n\tfunction containsMacro(schema) {\r\n\t return {\r\n\t not: { items: { not: schema } }\r\n\t };\r\n\t}\r\n\r\n\r\n/***/ },\r\n/* 44 */\r\n/***/ function(module, exports) {\r\n\r\n\t'use strict';\r\n\tmodule.exports = function generate_switch(it, $keyword) {\r\n\t var out = ' ';\r\n\t var $lvl = it.level;\r\n\t var $dataLvl = it.dataLevel;\r\n\t var $schema = it.schema[$keyword];\r\n\t var $schemaPath = it.schemaPath + '.' + $keyword;\r\n\t var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\r\n\t var $breakOnError = !it.opts.allErrors;\r\n\t var $errorKeyword;\r\n\t var $data = 'data' + ($dataLvl || '');\r\n\t var $valid = 'valid' + $lvl;\r\n\t var $errs = 'errs__' + $lvl;\r\n\t var $it = it.util.copy(it);\r\n\t var $closingBraces = '';\r\n\t $it.level++;\r\n\t var $ifPassed = 'ifPassed' + it.level,\r\n\t $shouldContinue;\r\n\t out += 'var ' + ($ifPassed) + ';';\r\n\t var arr1 = $schema;\r\n\t if (arr1) {\r\n\t var $sch, $caseIndex = -1,\r\n\t l1 = arr1.length - 1;\r\n\t while ($caseIndex < l1) {\r\n\t $sch = arr1[$caseIndex += 1];\r\n\t if ($caseIndex && !$shouldContinue) {\r\n\t out += ' if (!' + ($ifPassed) + ') { ';\r\n\t $closingBraces += '}';\r\n\t }\r\n\t if ($sch.if && it.util.schemaHasRules($sch.if, it.RULES.all)) {\r\n\t out += ' var ' + ($errs) + ' = errors; ';\r\n\t var $wasComposite = it.compositeRule;\r\n\t it.compositeRule = $it.compositeRule = true;\r\n\t $it.createErrors = false;\r\n\t $it.schema = $sch.if;\r\n\t $it.schemaPath = $schemaPath + '[' + $caseIndex + '].if';\r\n\t $it.errSchemaPath = $errSchemaPath + '/' + $caseIndex + '/if';\r\n\t out += ' ' + (it.validate($it)) + ' ';\r\n\t $it.createErrors = true;\r\n\t it.compositeRule = $it.compositeRule = $wasComposite;\r\n\t out += ' ' + ($ifPassed) + ' = valid' + ($it.level) + '; if (' + ($ifPassed) + ') { ';\r\n\t if (typeof $sch.then == 'boolean') {\r\n\t if ($sch.then === false) {\r\n\t var $$outStack = $$outStack || [];\r\n\t $$outStack.push(out);\r\n\t out = ''; /* istanbul ignore else */\r\n\t if (it.createErrors !== false) {\r\n\t out += ' { keyword: \\'' + ($errorKeyword || 'switch') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: \"' + ($errSchemaPath) + '\" , params: { caseIndex: ' + ($caseIndex) + ' } ';\r\n\t if (it.opts.messages !== false) {\r\n\t out += ' , message: \\'should pass \"switch\" keyword validation\\' ';\r\n\t }\r\n\t if (it.opts.verbose) {\r\n\t out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\r\n\t }\r\n\t out += ' } ';\r\n\t } else {\r\n\t out += ' {} ';\r\n\t }\r\n\t var __err = out;\r\n\t out = $$outStack.pop();\r\n\t if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */\r\n\t if (it.async) {\r\n\t out += ' throw new ValidationError([' + (__err) + ']); ';\r\n\t } else {\r\n\t out += ' validate.errors = [' + (__err) + ']; return false; ';\r\n\t }\r\n\t } else {\r\n\t out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\r\n\t }\r\n\t }\r\n\t out += ' var valid' + ($it.level) + ' = ' + ($sch.then) + '; ';\r\n\t } else {\r\n\t $it.schema = $sch.then;\r\n\t $it.schemaPath = $schemaPath + '[' + $caseIndex + '].then';\r\n\t $it.errSchemaPath = $errSchemaPath + '/' + $caseIndex + '/then';\r\n\t out += ' ' + (it.validate($it)) + ' ';\r\n\t }\r\n\t out += ' } else { errors = ' + ($errs) + '; if (vErrors !== null) { if (' + ($errs) + ') vErrors.length = ' + ($errs) + '; else vErrors = null; } } ';\r\n\t } else {\r\n\t out += ' ' + ($ifPassed) + ' = true; ';\r\n\t if (typeof $sch.then == 'boolean') {\r\n\t if ($sch.then === false) {\r\n\t var $$outStack = $$outStack || [];\r\n\t $$outStack.push(out);\r\n\t out = ''; /* istanbul ignore else */\r\n\t if (it.createErrors !== false) {\r\n\t out += ' { keyword: \\'' + ($errorKeyword || 'switch') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: \"' + ($errSchemaPath) + '\" , params: { caseIndex: ' + ($caseIndex) + ' } ';\r\n\t if (it.opts.messages !== false) {\r\n\t out += ' , message: \\'should pass \"switch\" keyword validation\\' ';\r\n\t }\r\n\t if (it.opts.verbose) {\r\n\t out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\r\n\t }\r\n\t out += ' } ';\r\n\t } else {\r\n\t out += ' {} ';\r\n\t }\r\n\t var __err = out;\r\n\t out = $$outStack.pop();\r\n\t if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */\r\n\t if (it.async) {\r\n\t out += ' throw new ValidationError([' + (__err) + ']); ';\r\n\t } else {\r\n\t out += ' validate.errors = [' + (__err) + ']; return false; ';\r\n\t }\r\n\t } else {\r\n\t out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\r\n\t }\r\n\t }\r\n\t out += ' var valid' + ($it.level) + ' = ' + ($sch.then) + '; ';\r\n\t } else {\r\n\t $it.schema = $sch.then;\r\n\t $it.schemaPath = $schemaPath + '[' + $caseIndex + '].then';\r\n\t $it.errSchemaPath = $errSchemaPath + '/' + $caseIndex + '/then';\r\n\t out += ' ' + (it.validate($it)) + ' ';\r\n\t }\r\n\t }\r\n\t $shouldContinue = $sch.continue\r\n\t }\r\n\t }\r\n\t out += '' + ($closingBraces) + 'var ' + ($valid) + ' = valid' + ($it.level) + '; ';\r\n\t out = it.util.cleanUpCode(out);\r\n\t return out;\r\n\t}\r\n\r\n\r\n/***/ },\r\n/* 45 */\r\n/***/ function(module, exports) {\r\n\r\n\t'use strict';\r\n\tmodule.exports = function generate_constant(it, $keyword) {\r\n\t var out = ' ';\r\n\t var $lvl = it.level;\r\n\t var $dataLvl = it.dataLevel;\r\n\t var $schema = it.schema[$keyword];\r\n\t var $schemaPath = it.schemaPath + '.' + $keyword;\r\n\t var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\r\n\t var $breakOnError = !it.opts.allErrors;\r\n\t var $errorKeyword;\r\n\t var $data = 'data' + ($dataLvl || '');\r\n\t var $valid = 'valid' + $lvl;\r\n\t var $isData = it.opts.v5 && $schema.$data;\r\n\t var $schemaValue = $isData ? it.util.getData($schema.$data, $dataLvl, it.dataPathArr) : $schema;\r\n\t if ($isData) {\r\n\t out += ' var schema' + ($lvl) + ' = ' + ($schemaValue) + '; ';\r\n\t $schemaValue = 'schema' + $lvl;\r\n\t }\r\n\t if (!$isData) {\r\n\t out += ' var schema' + ($lvl) + ' = validate.schema' + ($schemaPath) + ';';\r\n\t }\r\n\t out += 'var ' + ($valid) + ' = equal(' + ($data) + ', schema' + ($lvl) + '); if (!' + ($valid) + ') { ';\r\n\t var $$outStack = $$outStack || [];\r\n\t $$outStack.push(out);\r\n\t out = ''; /* istanbul ignore else */\r\n\t if (it.createErrors !== false) {\r\n\t out += ' { keyword: \\'' + ($errorKeyword || 'constant') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: \"' + ($errSchemaPath) + '\" , params: {} ';\r\n\t if (it.opts.messages !== false) {\r\n\t out += ' , message: \\'should be equal to constant\\' ';\r\n\t }\r\n\t if (it.opts.verbose) {\r\n\t out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\r\n\t }\r\n\t out += ' } ';\r\n\t } else {\r\n\t out += ' {} ';\r\n\t }\r\n\t var __err = out;\r\n\t out = $$outStack.pop();\r\n\t if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */\r\n\t if (it.async) {\r\n\t out += ' throw new ValidationError([' + (__err) + ']); ';\r\n\t } else {\r\n\t out += ' validate.errors = [' + (__err) + ']; return false; ';\r\n\t }\r\n\t } else {\r\n\t out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\r\n\t }\r\n\t out += ' }';\r\n\t return out;\r\n\t}\r\n\r\n\r\n/***/ },\r\n/* 46 */\r\n/***/ function(module, exports) {\r\n\r\n\t'use strict';\r\n\tmodule.exports = function generate__formatLimit(it, $keyword) {\r\n\t var out = ' ';\r\n\t var $lvl = it.level;\r\n\t var $dataLvl = it.dataLevel;\r\n\t var $schema = it.schema[$keyword];\r\n\t var $schemaPath = it.schemaPath + '.' + $keyword;\r\n\t var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\r\n\t var $breakOnError = !it.opts.allErrors;\r\n\t var $errorKeyword;\r\n\t var $data = 'data' + ($dataLvl || '');\r\n\t var $valid = 'valid' + $lvl;\r\n\t out += 'var ' + ($valid) + ' = undefined;';\r\n\t if (it.opts.format === false) {\r\n\t out += ' ' + ($valid) + ' = true; ';\r\n\t return out;\r\n\t }\r\n\t var $schemaFormat = it.schema.format,\r\n\t $isDataFormat = it.opts.v5 && $schemaFormat.$data,\r\n\t $closingBraces = '';\r\n\t if ($isDataFormat) {\r\n\t var $schemaValueFormat = it.util.getData($schemaFormat.$data, $dataLvl, it.dataPathArr),\r\n\t $format = 'format' + $lvl,\r\n\t $compare = 'compare' + $lvl;\r\n\t out += ' var ' + ($format) + ' = formats[' + ($schemaValueFormat) + '] , ' + ($compare) + ' = ' + ($format) + ' && ' + ($format) + '.compare;';\r\n\t } else {\r\n\t var $format = it.formats[$schemaFormat];\r\n\t if (!($format && $format.compare)) {\r\n\t out += ' ' + ($valid) + ' = true; ';\r\n\t return out;\r\n\t }\r\n\t var $compare = 'formats' + it.util.getProperty($schemaFormat) + '.compare';\r\n\t }\r\n\t var $isMax = $keyword == 'formatMaximum',\r\n\t $exclusiveKeyword = 'exclusiveFormat' + ($isMax ? 'Maximum' : 'Minimum'),\r\n\t $schemaExcl = it.schema[$exclusiveKeyword],\r\n\t $isDataExcl = it.opts.v5 && $schemaExcl && $schemaExcl.$data,\r\n\t $op = $isMax ? '<' : '>',\r\n\t $result = 'result' + $lvl;\r\n\t var $isData = it.opts.v5 && $schema.$data;\r\n\t var $schemaValue = $isData ? it.util.getData($schema.$data, $dataLvl, it.dataPathArr) : $schema;\r\n\t if ($isData) {\r\n\t out += ' var schema' + ($lvl) + ' = ' + ($schemaValue) + '; ';\r\n\t $schemaValue = 'schema' + $lvl;\r\n\t }\r\n\t if ($isDataExcl) {\r\n\t var $schemaValueExcl = it.util.getData($schemaExcl.$data, $dataLvl, it.dataPathArr),\r\n\t $exclusive = 'exclusive' + $lvl,\r\n\t $opExpr = 'op' + $lvl,\r\n\t $opStr = '\\' + ' + $opExpr + ' + \\'';\r\n\t out += ' var schemaExcl' + ($lvl) + ' = ' + ($schemaValueExcl) + '; ';\r\n\t $schemaValueExcl = 'schemaExcl' + $lvl;\r\n\t out += ' if (typeof ' + ($schemaValueExcl) + ' != \\'boolean\\' && ' + ($schemaValueExcl) + ' !== undefined) { ' + ($valid) + ' = false; ';\r\n\t var $errorKeyword = $exclusiveKeyword;\r\n\t var $$outStack = $$outStack || [];\r\n\t $$outStack.push(out);\r\n\t out = ''; /* istanbul ignore else */\r\n\t if (it.createErrors !== false) {\r\n\t out += ' { keyword: \\'' + ($errorKeyword || '_exclusiveFormatLimit') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: \"' + ($errSchemaPath) + '\" , params: {} ';\r\n\t if (it.opts.messages !== false) {\r\n\t out += ' , message: \\'' + ($exclusiveKeyword) + ' should be boolean\\' ';\r\n\t }\r\n\t if (it.opts.verbose) {\r\n\t out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\r\n\t }\r\n\t out += ' } ';\r\n\t } else {\r\n\t out += ' {} ';\r\n\t }\r\n\t var __err = out;\r\n\t out = $$outStack.pop();\r\n\t if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */\r\n\t if (it.async) {\r\n\t out += ' throw new ValidationError([' + (__err) + ']); ';\r\n\t } else {\r\n\t out += ' validate.errors = [' + (__err) + ']; return false; ';\r\n\t }\r\n\t } else {\r\n\t out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\r\n\t }\r\n\t out += ' } ';\r\n\t if ($breakOnError) {\r\n\t $closingBraces += '}';\r\n\t out += ' else { ';\r\n\t }\r\n\t if ($isData) {\r\n\t out += ' if (' + ($schemaValue) + ' === undefined) ' + ($valid) + ' = true; else if (typeof ' + ($schemaValue) + ' != \\'string\\') ' + ($valid) + ' = false; else { ';\r\n\t $closingBraces += '}';\r\n\t }\r\n\t if ($isDataFormat) {\r\n\t out += ' if (!' + ($compare) + ') ' + ($valid) + ' = true; else { ';\r\n\t $closingBraces += '}';\r\n\t }\r\n\t out += ' var ' + ($result) + ' = ' + ($compare) + '(' + ($data) + ', ';\r\n\t if ($isData) {\r\n\t out += '' + ($schemaValue);\r\n\t } else {\r\n\t out += '' + (it.util.toQuotedString($schema));\r\n\t }\r\n\t out += ' ); if (' + ($result) + ' === undefined) ' + ($valid) + ' = false; var exclusive' + ($lvl) + ' = ' + ($schemaValueExcl) + ' === true; if (' + ($valid) + ' === undefined) { ' + ($valid) + ' = exclusive' + ($lvl) + ' ? ' + ($result) + ' ' + ($op) + ' 0 : ' + ($result) + ' ' + ($op) + '= 0; } if (!' + ($valid) + ') var op' + ($lvl) + ' = exclusive' + ($lvl) + ' ? \\'' + ($op) + '\\' : \\'' + ($op) + '=\\';';\r\n\t } else {\r\n\t var $exclusive = $schemaExcl === true,\r\n\t $opStr = $op;\r\n\t if (!$exclusive) $opStr += '=';\r\n\t var $opExpr = '\\'' + $opStr + '\\'';\r\n\t if ($isData) {\r\n\t out += ' if (' + ($schemaValue) + ' === undefined) ' + ($valid) + ' = true; else if (typeof ' + ($schemaValue) + ' != \\'string\\') ' + ($valid) + ' = false; else { ';\r\n\t $closingBraces += '}';\r\n\t }\r\n\t if ($isDataFormat) {\r\n\t out += ' if (!' + ($compare) + ') ' + ($valid) + ' = true; else { ';\r\n\t $closingBraces += '}';\r\n\t }\r\n\t out += ' var ' + ($result) + ' = ' + ($compare) + '(' + ($data) + ', ';\r\n\t if ($isData) {\r\n\t out += '' + ($schemaValue);\r\n\t } else {\r\n\t out += '' + (it.util.toQuotedString($schema));\r\n\t }\r\n\t out += ' ); if (' + ($result) + ' === undefined) ' + ($valid) + ' = false; if (' + ($valid) + ' === undefined) ' + ($valid) + ' = ' + ($result) + ' ' + ($op);\r\n\t if (!$exclusive) {\r\n\t out += '=';\r\n\t }\r\n\t out += ' 0;';\r\n\t }\r\n\t out += '' + ($closingBraces) + 'if (!' + ($valid) + ') { ';\r\n\t var $errorKeyword = $keyword;\r\n\t var $$outStack = $$outStack || [];\r\n\t $$outStack.push(out);\r\n\t out = ''; /* istanbul ignore else */\r\n\t if (it.createErrors !== false) {\r\n\t out += ' { keyword: \\'' + ($errorKeyword || '_formatLimit') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: \"' + ($errSchemaPath) + '\" , params: { limit: ';\r\n\t if ($isData) {\r\n\t out += '' + ($schemaValue);\r\n\t } else {\r\n\t out += '' + (it.util.toQuotedString($schema));\r\n\t }\r\n\t out += ' } ';\r\n\t if (it.opts.messages !== false) {\r\n\t out += ' , message: \\'should be ' + ($opStr) + ' \"';\r\n\t if ($isData) {\r\n\t out += '\\' + ' + ($schemaValue) + ' + \\'';\r\n\t } else {\r\n\t out += '' + (it.util.escapeQuotes($schema));\r\n\t }\r\n\t out += '\"\\' ';\r\n\t }\r\n\t if (it.opts.verbose) {\r\n\t out += ' , schema: ';\r\n\t if ($isData) {\r\n\t out += 'validate.schema' + ($schemaPath);\r\n\t } else {\r\n\t out += '' + (it.util.toQuotedString($schema));\r\n\t }\r\n\t out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\r\n\t }\r\n\t out += ' } ';\r\n\t } else {\r\n\t out += ' {} ';\r\n\t }\r\n\t var __err = out;\r\n\t out = $$outStack.pop();\r\n\t if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */\r\n\t if (it.async) {\r\n\t out += ' throw new ValidationError([' + (__err) + ']); ';\r\n\t } else {\r\n\t out += ' validate.errors = [' + (__err) + ']; return false; ';\r\n\t }\r\n\t } else {\r\n\t out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\r\n\t }\r\n\t out += '}';\r\n\t return out;\r\n\t}\r\n\r\n\r\n/***/ },\r\n/* 47 */\r\n/***/ function(module, exports) {\r\n\r\n\t'use strict';\r\n\tmodule.exports = function generate_patternRequired(it, $keyword) {\r\n\t var out = ' ';\r\n\t var $lvl = it.level;\r\n\t var $dataLvl = it.dataLevel;\r\n\t var $schema = it.schema[$keyword];\r\n\t var $schemaPath = it.schemaPath + '.' + $keyword;\r\n\t var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\r\n\t var $breakOnError = !it.opts.allErrors;\r\n\t var $errorKeyword;\r\n\t var $data = 'data' + ($dataLvl || '');\r\n\t var $valid = 'valid' + $lvl;\r\n\t var $key = 'key' + $lvl,\r\n\t $matched = 'patternMatched' + $lvl,\r\n\t $closingBraces = '';\r\n\t out += 'var ' + ($valid) + ' = true;';\r\n\t var arr1 = $schema;\r\n\t if (arr1) {\r\n\t var $pProperty, i1 = -1,\r\n\t l1 = arr1.length - 1;\r\n\t while (i1 < l1) {\r\n\t $pProperty = arr1[i1 += 1];\r\n\t out += ' var ' + ($matched) + ' = false; for (var ' + ($key) + ' in ' + ($data) + ') { ' + ($matched) + ' = ' + (it.usePattern($pProperty)) + '.test(' + ($key) + '); if (' + ($matched) + ') break; } ';\r\n\t var $missingPattern = it.util.escapeQuotes($pProperty);\r\n\t out += ' if (!' + ($matched) + ') { ' + ($valid) + ' = false; var err = '; /* istanbul ignore else */\r\n\t if (it.createErrors !== false) {\r\n\t out += ' { keyword: \\'' + ($errorKeyword || 'patternRequired') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: \"' + ($errSchemaPath) + '\" , params: { missingPattern: \\'' + ($missingPattern) + '\\' } ';\r\n\t if (it.opts.messages !== false) {\r\n\t out += ' , message: \\'should have property matching pattern \\\\\\'' + ($missingPattern) + '\\\\\\'\\' ';\r\n\t }\r\n\t if (it.opts.verbose) {\r\n\t out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\r\n\t }\r\n\t out += ' } ';\r\n\t } else {\r\n\t out += ' {} ';\r\n\t }\r\n\t out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } ';\r\n\t if ($breakOnError) {\r\n\t $closingBraces += '}';\r\n\t out += ' else { ';\r\n\t }\r\n\t }\r\n\t }\r\n\t out += '' + ($closingBraces);\r\n\t return out;\r\n\t}\r\n\r\n\r\n/***/ },\r\n/* 48 */\r\n/***/ function(module, exports) {\r\n\r\n\tmodule.exports = {\r\n\t\t\"id\": \"https://raw.githubusercontent.com/epoberezkin/ajv/master/lib/refs/json-schema-v5.json#\",\r\n\t\t\"$schema\": \"http://json-schema.org/draft-04/schema#\",\r\n\t\t\"description\": \"Core schema meta-schema (v5 proposals)\",\r\n\t\t\"definitions\": {\r\n\t\t\t\"schemaArray\": {\r\n\t\t\t\t\"type\": \"array\",\r\n\t\t\t\t\"minItems\": 1,\r\n\t\t\t\t\"items\": {\r\n\t\t\t\t\t\"$ref\": \"#\"\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t\"positiveInteger\": {\r\n\t\t\t\t\"type\": \"integer\",\r\n\t\t\t\t\"minimum\": 0\r\n\t\t\t},\r\n\t\t\t\"positiveIntegerDefault0\": {\r\n\t\t\t\t\"allOf\": [\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t\"$ref\": \"#/definitions/positiveInteger\"\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t\"default\": 0\r\n\t\t\t\t\t}\r\n\t\t\t\t]\r\n\t\t\t},\r\n\t\t\t\"simpleTypes\": {\r\n\t\t\t\t\"enum\": [\r\n\t\t\t\t\t\"array\",\r\n\t\t\t\t\t\"boolean\",\r\n\t\t\t\t\t\"integer\",\r\n\t\t\t\t\t\"null\",\r\n\t\t\t\t\t\"number\",\r\n\t\t\t\t\t\"object\",\r\n\t\t\t\t\t\"string\"\r\n\t\t\t\t]\r\n\t\t\t},\r\n\t\t\t\"stringArray\": {\r\n\t\t\t\t\"type\": \"array\",\r\n\t\t\t\t\"items\": {\r\n\t\t\t\t\t\"type\": \"string\"\r\n\t\t\t\t},\r\n\t\t\t\t\"minItems\": 1,\r\n\t\t\t\t\"uniqueItems\": true\r\n\t\t\t},\r\n\t\t\t\"$data\": {\r\n\t\t\t\t\"type\": \"object\",\r\n\t\t\t\t\"required\": [\r\n\t\t\t\t\t\"$data\"\r\n\t\t\t\t],\r\n\t\t\t\t\"properties\": {\r\n\t\t\t\t\t\"$data\": {\r\n\t\t\t\t\t\t\"type\": \"string\",\r\n\t\t\t\t\t\t\"format\": \"relative-json-pointer\"\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t\"additionalProperties\": false\r\n\t\t\t}\r\n\t\t},\r\n\t\t\"type\": \"object\",\r\n\t\t\"properties\": {\r\n\t\t\t\"id\": {\r\n\t\t\t\t\"type\": \"string\",\r\n\t\t\t\t\"format\": \"uri\"\r\n\t\t\t},\r\n\t\t\t\"$schema\": {\r\n\t\t\t\t\"type\": \"string\",\r\n\t\t\t\t\"format\": \"uri\"\r\n\t\t\t},\r\n\t\t\t\"title\": {\r\n\t\t\t\t\"type\": \"string\"\r\n\t\t\t},\r\n\t\t\t\"description\": {\r\n\t\t\t\t\"type\": \"string\"\r\n\t\t\t},\r\n\t\t\t\"default\": {},\r\n\t\t\t\"multipleOf\": {\r\n\t\t\t\t\"anyOf\": [\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t\"type\": \"number\",\r\n\t\t\t\t\t\t\"minimum\": 0,\r\n\t\t\t\t\t\t\"exclusiveMinimum\": true\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t\"$ref\": \"#/definitions/$data\"\r\n\t\t\t\t\t}\r\n\t\t\t\t]\r\n\t\t\t},\r\n\t\t\t\"maximum\": {\r\n\t\t\t\t\"anyOf\": [\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t\"type\": \"number\"\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t\"$ref\": \"#/definitions/$data\"\r\n\t\t\t\t\t}\r\n\t\t\t\t]\r\n\t\t\t},\r\n\t\t\t\"exclusiveMaximum\": {\r\n\t\t\t\t\"anyOf\": [\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t\"type\": \"boolean\",\r\n\t\t\t\t\t\t\"default\": false\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t\"$ref\": \"#/definitions/$data\"\r\n\t\t\t\t\t}\r\n\t\t\t\t]\r\n\t\t\t},\r\n\t\t\t\"minimum\": {\r\n\t\t\t\t\"anyOf\": [\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t\"type\": \"number\"\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t\"$ref\": \"#/definitions/$data\"\r\n\t\t\t\t\t}\r\n\t\t\t\t]\r\n\t\t\t},\r\n\t\t\t\"exclusiveMinimum\": {\r\n\t\t\t\t\"anyOf\": [\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t\"type\": \"boolean\",\r\n\t\t\t\t\t\t\"default\": false\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t\"$ref\": \"#/definitions/$data\"\r\n\t\t\t\t\t}\r\n\t\t\t\t]\r\n\t\t\t},\r\n\t\t\t\"maxLength\": {\r\n\t\t\t\t\"anyOf\": [\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t\"$ref\": \"#/definitions/positiveInteger\"\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t\"$ref\": \"#/definitions/$data\"\r\n\t\t\t\t\t}\r\n\t\t\t\t]\r\n\t\t\t},\r\n\t\t\t\"minLength\": {\r\n\t\t\t\t\"anyOf\": [\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t\"$ref\": \"#/definitions/positiveIntegerDefault0\"\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t\"$ref\": \"#/definitions/$data\"\r\n\t\t\t\t\t}\r\n\t\t\t\t]\r\n\t\t\t},\r\n\t\t\t\"pattern\": {\r\n\t\t\t\t\"anyOf\": [\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t\"type\": \"string\",\r\n\t\t\t\t\t\t\"format\": \"regex\"\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t\"$ref\": \"#/definitions/$data\"\r\n\t\t\t\t\t}\r\n\t\t\t\t]\r\n\t\t\t},\r\n\t\t\t\"additionalItems\": {\r\n\t\t\t\t\"anyOf\": [\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t\"type\": \"boolean\"\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t\"$ref\": \"#\"\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t\"$ref\": \"#/definitions/$data\"\r\n\t\t\t\t\t}\r\n\t\t\t\t],\r\n\t\t\t\t\"default\": {}\r\n\t\t\t},\r\n\t\t\t\"items\": {\r\n\t\t\t\t\"anyOf\": [\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t\"$ref\": \"#\"\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t\"$ref\": \"#/definitions/schemaArray\"\r\n\t\t\t\t\t}\r\n\t\t\t\t],\r\n\t\t\t\t\"default\": {}\r\n\t\t\t},\r\n\t\t\t\"maxItems\": {\r\n\t\t\t\t\"anyOf\": [\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t\"$ref\": \"#/definitions/positiveInteger\"\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t\"$ref\": \"#/definitions/$data\"\r\n\t\t\t\t\t}\r\n\t\t\t\t]\r\n\t\t\t},\r\n\t\t\t\"minItems\": {\r\n\t\t\t\t\"anyOf\": [\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t\"$ref\": \"#/definitions/positiveIntegerDefault0\"\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t\"$ref\": \"#/definitions/$data\"\r\n\t\t\t\t\t}\r\n\t\t\t\t]\r\n\t\t\t},\r\n\t\t\t\"uniqueItems\": {\r\n\t\t\t\t\"anyOf\": [\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t\"type\": \"boolean\",\r\n\t\t\t\t\t\t\"default\": false\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t\"$ref\": \"#/definitions/$data\"\r\n\t\t\t\t\t}\r\n\t\t\t\t]\r\n\t\t\t},\r\n\t\t\t\"maxProperties\": {\r\n\t\t\t\t\"anyOf\": [\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t\"$ref\": \"#/definitions/positiveInteger\"\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t\"$ref\": \"#/definitions/$data\"\r\n\t\t\t\t\t}\r\n\t\t\t\t]\r\n\t\t\t},\r\n\t\t\t\"minProperties\": {\r\n\t\t\t\t\"anyOf\": [\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t\"$ref\": \"#/definitions/positiveIntegerDefault0\"\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t\"$ref\": \"#/definitions/$data\"\r\n\t\t\t\t\t}\r\n\t\t\t\t]\r\n\t\t\t},\r\n\t\t\t\"required\": {\r\n\t\t\t\t\"anyOf\": [\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t\"$ref\": \"#/definitions/stringArray\"\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t\"$ref\": \"#/definitions/$data\"\r\n\t\t\t\t\t}\r\n\t\t\t\t]\r\n\t\t\t},\r\n\t\t\t\"additionalProperties\": {\r\n\t\t\t\t\"anyOf\": [\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t\"type\": \"boolean\"\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t\"$ref\": \"#\"\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t\"$ref\": \"#/definitions/$data\"\r\n\t\t\t\t\t}\r\n\t\t\t\t],\r\n\t\t\t\t\"default\": {}\r\n\t\t\t},\r\n\t\t\t\"definitions\": {\r\n\t\t\t\t\"type\": \"object\",\r\n\t\t\t\t\"additionalProperties\": {\r\n\t\t\t\t\t\"$ref\": \"#\"\r\n\t\t\t\t},\r\n\t\t\t\t\"default\": {}\r\n\t\t\t},\r\n\t\t\t\"properties\": {\r\n\t\t\t\t\"type\": \"object\",\r\n\t\t\t\t\"additionalProperties\": {\r\n\t\t\t\t\t\"$ref\": \"#\"\r\n\t\t\t\t},\r\n\t\t\t\t\"default\": {}\r\n\t\t\t},\r\n\t\t\t\"patternProperties\": {\r\n\t\t\t\t\"type\": \"object\",\r\n\t\t\t\t\"additionalProperties\": {\r\n\t\t\t\t\t\"$ref\": \"#\"\r\n\t\t\t\t},\r\n\t\t\t\t\"default\": {}\r\n\t\t\t},\r\n\t\t\t\"dependencies\": {\r\n\t\t\t\t\"type\": \"object\",\r\n\t\t\t\t\"additionalProperties\": {\r\n\t\t\t\t\t\"anyOf\": [\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\"$ref\": \"#\"\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\"$ref\": \"#/definitions/stringArray\"\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t]\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t\"enum\": {\r\n\t\t\t\t\"anyOf\": [\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t\"type\": \"array\",\r\n\t\t\t\t\t\t\"minItems\": 1,\r\n\t\t\t\t\t\t\"uniqueItems\": true\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t\"$ref\": \"#/definitions/$data\"\r\n\t\t\t\t\t}\r\n\t\t\t\t]\r\n\t\t\t},\r\n\t\t\t\"type\": {\r\n\t\t\t\t\"anyOf\": [\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t\"$ref\": \"#/definitions/simpleTypes\"\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t\"type\": \"array\",\r\n\t\t\t\t\t\t\"items\": {\r\n\t\t\t\t\t\t\t\"$ref\": \"#/definitions/simpleTypes\"\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\"minItems\": 1,\r\n\t\t\t\t\t\t\"uniqueItems\": true\r\n\t\t\t\t\t}\r\n\t\t\t\t]\r\n\t\t\t},\r\n\t\t\t\"allOf\": {\r\n\t\t\t\t\"$ref\": \"#/definitions/schemaArray\"\r\n\t\t\t},\r\n\t\t\t\"anyOf\": {\r\n\t\t\t\t\"$ref\": \"#/definitions/schemaArray\"\r\n\t\t\t},\r\n\t\t\t\"oneOf\": {\r\n\t\t\t\t\"$ref\": \"#/definitions/schemaArray\"\r\n\t\t\t},\r\n\t\t\t\"not\": {\r\n\t\t\t\t\"$ref\": \"#\"\r\n\t\t\t},\r\n\t\t\t\"format\": {\r\n\t\t\t\t\"anyOf\": [\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t\"type\": \"string\"\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t\"$ref\": \"#/definitions/$data\"\r\n\t\t\t\t\t}\r\n\t\t\t\t]\r\n\t\t\t},\r\n\t\t\t\"formatMaximum\": {\r\n\t\t\t\t\"anyOf\": [\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t\"type\": \"string\"\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t\"$ref\": \"#/definitions/$data\"\r\n\t\t\t\t\t}\r\n\t\t\t\t]\r\n\t\t\t},\r\n\t\t\t\"formatMinimum\": {\r\n\t\t\t\t\"anyOf\": [\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t\"type\": \"string\"\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t\"$ref\": \"#/definitions/$data\"\r\n\t\t\t\t\t}\r\n\t\t\t\t]\r\n\t\t\t},\r\n\t\t\t\"exclusiveFormatMaximum\": {\r\n\t\t\t\t\"anyOf\": [\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t\"type\": \"boolean\",\r\n\t\t\t\t\t\t\"default\": false\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t\"$ref\": \"#/definitions/$data\"\r\n\t\t\t\t\t}\r\n\t\t\t\t]\r\n\t\t\t},\r\n\t\t\t\"exclusiveFormatMinimum\": {\r\n\t\t\t\t\"anyOf\": [\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t\"type\": \"boolean\",\r\n\t\t\t\t\t\t\"default\": false\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t\"$ref\": \"#/definitions/$data\"\r\n\t\t\t\t\t}\r\n\t\t\t\t]\r\n\t\t\t},\r\n\t\t\t\"constant\": {\r\n\t\t\t\t\"anyOf\": [\r\n\t\t\t\t\t{},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t\"$ref\": \"#/definitions/$data\"\r\n\t\t\t\t\t}\r\n\t\t\t\t]\r\n\t\t\t},\r\n\t\t\t\"contains\": {\r\n\t\t\t\t\"$ref\": \"#\"\r\n\t\t\t},\r\n\t\t\t\"patternGroups\": {\r\n\t\t\t\t\"type\": \"object\",\r\n\t\t\t\t\"additionalProperties\": {\r\n\t\t\t\t\t\"type\": \"object\",\r\n\t\t\t\t\t\"required\": [\r\n\t\t\t\t\t\t\"schema\"\r\n\t\t\t\t\t],\r\n\t\t\t\t\t\"properties\": {\r\n\t\t\t\t\t\t\"maximum\": {\r\n\t\t\t\t\t\t\t\"anyOf\": [\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\"$ref\": \"#/definitions/positiveInteger\"\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\"$ref\": \"#/definitions/$data\"\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t]\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\"minimum\": {\r\n\t\t\t\t\t\t\t\"anyOf\": [\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\"$ref\": \"#/definitions/positiveIntegerDefault0\"\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\"$ref\": \"#/definitions/$data\"\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t]\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\"schema\": {\r\n\t\t\t\t\t\t\t\"$ref\": \"#\"\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t},\r\n\t\t\t\t\t\"additionalProperties\": false\r\n\t\t\t\t},\r\n\t\t\t\t\"default\": {}\r\n\t\t\t},\r\n\t\t\t\"switch\": {\r\n\t\t\t\t\"type\": \"array\",\r\n\t\t\t\t\"items\": {\r\n\t\t\t\t\t\"required\": [\r\n\t\t\t\t\t\t\"then\"\r\n\t\t\t\t\t],\r\n\t\t\t\t\t\"properties\": {\r\n\t\t\t\t\t\t\"if\": {\r\n\t\t\t\t\t\t\t\"$ref\": \"#\"\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\"then\": {\r\n\t\t\t\t\t\t\t\"anyOf\": [\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\"type\": \"boolean\"\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\"$ref\": \"#\"\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t]\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\"continue\": {\r\n\t\t\t\t\t\t\t\"type\": \"boolean\"\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t},\r\n\t\t\t\t\t\"additionalProperties\": false,\r\n\t\t\t\t\t\"dependencies\": {\r\n\t\t\t\t\t\t\"continue\": [\r\n\t\t\t\t\t\t\t\"if\"\r\n\t\t\t\t\t\t]\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\t\t\"dependencies\": {\r\n\t\t\t\"exclusiveMaximum\": [\r\n\t\t\t\t\"maximum\"\r\n\t\t\t],\r\n\t\t\t\"exclusiveMinimum\": [\r\n\t\t\t\t\"minimum\"\r\n\t\t\t],\r\n\t\t\t\"formatMaximum\": [\r\n\t\t\t\t\"format\"\r\n\t\t\t],\r\n\t\t\t\"formatMinimum\": [\r\n\t\t\t\t\"format\"\r\n\t\t\t],\r\n\t\t\t\"exclusiveFormatMaximum\": [\r\n\t\t\t\t\"formatMaximum\"\r\n\t\t\t],\r\n\t\t\t\"exclusiveFormatMinimum\": [\r\n\t\t\t\t\"formatMinimum\"\r\n\t\t\t]\r\n\t\t},\r\n\t\t\"default\": {}\r\n\t};\r\n\r\n/***/ },\r\n/* 49 */\r\n/***/ function(module, exports) {\r\n\r\n\t'use strict';\r\n\r\n\tvar IDENTIFIER = /^[a-z_$][a-z0-9_$]*$/i;\r\n\r\n\t/**\r\n\t * Define custom keyword\r\n\t * @this Ajv\r\n\t * @param {String} keyword custom keyword, should be a valid identifier, should be different from all standard, custom and macro keywords.\r\n\t * @param {Object} definition keyword definition object with properties `type` (type(s) which the keyword applies to), `validate` or `compile`.\r\n\t */\r\n\tmodule.exports = function addKeyword(keyword, definition) {\r\n\t /* eslint no-shadow: 0 */\r\n\t var self = this;\r\n\t if (this.RULES.keywords[keyword])\r\n\t throw new Error('Keyword ' + keyword + ' is already defined');\r\n\r\n\t if (!IDENTIFIER.test(keyword))\r\n\t throw new Error('Keyword ' + keyword + ' is not a valid identifier');\r\n\r\n\t if (definition) {\r\n\t var dataType = definition.type;\r\n\t if (Array.isArray(dataType)) {\r\n\t var i, len = dataType.length;\r\n\t for (i=0; i 0) {\r\n\t this.autoScrollStep = ((top + margin) - mouseY) / 3;\r\n\t }\r\n\t else if (mouseY > bottom - margin &&\r\n\t height + content.scrollTop < content.scrollHeight) {\r\n\t this.autoScrollStep = ((bottom - margin) - mouseY) / 3;\r\n\t }\r\n\t else {\r\n\t this.autoScrollStep = undefined;\r\n\t }\r\n\r\n\t if (this.autoScrollStep) {\r\n\t if (!this.autoScrollTimer) {\r\n\t this.autoScrollTimer = setInterval(function () {\r\n\t if (me.autoScrollStep) {\r\n\t content.scrollTop -= me.autoScrollStep;\r\n\t }\r\n\t else {\r\n\t me.stopAutoScroll();\r\n\t }\r\n\t }, interval);\r\n\t }\r\n\t }\r\n\t else {\r\n\t this.stopAutoScroll();\r\n\t }\r\n\t};\r\n\r\n\t/**\r\n\t * Stop auto scrolling. Only applicable when scrolling\r\n\t */\r\n\ttreemode.stopAutoScroll = function () {\r\n\t if (this.autoScrollTimer) {\r\n\t clearTimeout(this.autoScrollTimer);\r\n\t delete this.autoScrollTimer;\r\n\t }\r\n\t if (this.autoScrollStep) {\r\n\t delete this.autoScrollStep;\r\n\t }\r\n\t};\r\n\r\n\r\n\t/**\r\n\t * Set the focus to an element in the editor, set text selection, and\r\n\t * set scroll position.\r\n\t * @param {Object} selection An object containing fields:\r\n\t * {Element | undefined} dom The dom element\r\n\t * which has focus\r\n\t * {Range | TextRange} range A text selection\r\n\t * {Node[]} nodes Nodes in case of multi selection\r\n\t * {Number} scrollTop Scroll position\r\n\t */\r\n\ttreemode.setSelection = function (selection) {\r\n\t if (!selection) {\r\n\t return;\r\n\t }\r\n\r\n\t if ('scrollTop' in selection && this.content) {\r\n\t // TODO: animated scroll\r\n\t this.content.scrollTop = selection.scrollTop;\r\n\t }\r\n\t if (selection.nodes) {\r\n\t // multi-select\r\n\t this.select(selection.nodes);\r\n\t }\r\n\t if (selection.range) {\r\n\t util.setSelectionOffset(selection.range);\r\n\t }\r\n\t if (selection.dom) {\r\n\t selection.dom.focus();\r\n\t }\r\n\t};\r\n\r\n\t/**\r\n\t * Get the current focus\r\n\t * @return {Object} selection An object containing fields:\r\n\t * {Element | undefined} dom The dom element\r\n\t * which has focus\r\n\t * {Range | TextRange} range A text selection\r\n\t * {Node[]} nodes Nodes in case of multi selection\r\n\t * {Number} scrollTop Scroll position\r\n\t */\r\n\ttreemode.getSelection = function () {\r\n\t var range = util.getSelectionOffset();\r\n\t if (range && range.container.nodeName !== 'DIV') { // filter on (editable) divs)\r\n\t range = null;\r\n\t }\r\n\r\n\t return {\r\n\t dom: this.focusTarget,\r\n\t range: range,\r\n\t nodes: this.multiselection.nodes.slice(0),\r\n\t scrollTop: this.content ? this.content.scrollTop : 0\r\n\t };\r\n\t};\r\n\r\n\t/**\r\n\t * Adjust the scroll position such that given top position is shown at 1/4\r\n\t * of the window height.\r\n\t * @param {Number} top\r\n\t * @param {function(boolean)} [callback] Callback, executed when animation is\r\n\t * finished. The callback returns true\r\n\t * when animation is finished, or false\r\n\t * when not.\r\n\t */\r\n\ttreemode.scrollTo = function (top, callback) {\r\n\t var content = this.content;\r\n\t if (content) {\r\n\t var editor = this;\r\n\t // cancel any running animation\r\n\t if (editor.animateTimeout) {\r\n\t clearTimeout(editor.animateTimeout);\r\n\t delete editor.animateTimeout;\r\n\t }\r\n\t if (editor.animateCallback) {\r\n\t editor.animateCallback(false);\r\n\t delete editor.animateCallback;\r\n\t }\r\n\r\n\t // calculate final scroll position\r\n\t var height = content.clientHeight;\r\n\t var bottom = content.scrollHeight - height;\r\n\t var finalScrollTop = Math.min(Math.max(top - height / 4, 0), bottom);\r\n\r\n\t // animate towards the new scroll position\r\n\t var animate = function () {\r\n\t var scrollTop = content.scrollTop;\r\n\t var diff = (finalScrollTop - scrollTop);\r\n\t if (Math.abs(diff) > 3) {\r\n\t content.scrollTop += diff / 3;\r\n\t editor.animateCallback = callback;\r\n\t editor.animateTimeout = setTimeout(animate, 50);\r\n\t }\r\n\t else {\r\n\t // finished\r\n\t if (callback) {\r\n\t callback(true);\r\n\t }\r\n\t content.scrollTop = finalScrollTop;\r\n\t delete editor.animateTimeout;\r\n\t delete editor.animateCallback;\r\n\t }\r\n\t };\r\n\t animate();\r\n\t }\r\n\t else {\r\n\t if (callback) {\r\n\t callback(false);\r\n\t }\r\n\t }\r\n\t};\r\n\r\n\t/**\r\n\t * Create main frame\r\n\t * @private\r\n\t */\r\n\ttreemode._createFrame = function () {\r\n\t // create the frame\r\n\t this.frame = document.createElement('div');\r\n\t this.frame.className = 'jsoneditor jsoneditor-mode-' + this.options.mode;\r\n\t this.container.appendChild(this.frame);\r\n\r\n\t // create one global event listener to handle all events from all nodes\r\n\t var editor = this;\r\n\t function onEvent(event) {\r\n\t // when switching to mode \"code\" or \"text\" via the menu, some events\r\n\t // are still fired whilst the _onEvent methods is already removed.\r\n\t if (editor._onEvent) {\r\n\t editor._onEvent(event);\r\n\t }\r\n\t }\r\n\t this.frame.onclick = function (event) {\r\n\t var target = event.target;// || event.srcElement;\r\n\r\n\t onEvent(event);\r\n\r\n\t // prevent default submit action of buttons when editor is located\r\n\t // inside a form\r\n\t if (target.nodeName == 'BUTTON') {\r\n\t event.preventDefault();\r\n\t }\r\n\t };\r\n\t this.frame.oninput = onEvent;\r\n\t this.frame.onchange = onEvent;\r\n\t this.frame.onkeydown = onEvent;\r\n\t this.frame.onkeyup = onEvent;\r\n\t this.frame.oncut = onEvent;\r\n\t this.frame.onpaste = onEvent;\r\n\t this.frame.onmousedown = onEvent;\r\n\t this.frame.onmouseup = onEvent;\r\n\t this.frame.onmouseover = onEvent;\r\n\t this.frame.onmouseout = onEvent;\r\n\t // Note: focus and blur events do not propagate, therefore they defined\r\n\t // using an eventListener with useCapture=true\r\n\t // see http://www.quirksmode.org/blog/archives/2008/04/delegating_the.html\r\n\t util.addEventListener(this.frame, 'focus', onEvent, true);\r\n\t util.addEventListener(this.frame, 'blur', onEvent, true);\r\n\t this.frame.onfocusin = onEvent; // for IE\r\n\t this.frame.onfocusout = onEvent; // for IE\r\n\r\n\t // create menu\r\n\t this.menu = document.createElement('div');\r\n\t this.menu.className = 'jsoneditor-menu';\r\n\t this.frame.appendChild(this.menu);\r\n\r\n\t // create expand all button\r\n\t var expandAll = document.createElement('button');\r\n\t expandAll.type = 'button';\r\n\t expandAll.className = 'jsoneditor-expand-all';\r\n\t expandAll.title = 'Expand all fields';\r\n\t expandAll.onclick = function () {\r\n\t editor.expandAll();\r\n\t };\r\n\t this.menu.appendChild(expandAll);\r\n\r\n\t // create expand all button\r\n\t var collapseAll = document.createElement('button');\r\n\t collapseAll.type = 'button';\r\n\t collapseAll.title = 'Collapse all fields';\r\n\t collapseAll.className = 'jsoneditor-collapse-all';\r\n\t collapseAll.onclick = function () {\r\n\t editor.collapseAll();\r\n\t };\r\n\t this.menu.appendChild(collapseAll);\r\n\r\n\t // create undo/redo buttons\r\n\t if (this.history) {\r\n\t // create undo button\r\n\t var undo = document.createElement('button');\r\n\t undo.type = 'button';\r\n\t undo.className = 'jsoneditor-undo jsoneditor-separator';\r\n\t undo.title = 'Undo last action (Ctrl+Z)';\r\n\t undo.onclick = function () {\r\n\t editor._onUndo();\r\n\t };\r\n\t this.menu.appendChild(undo);\r\n\t this.dom.undo = undo;\r\n\r\n\t // create redo button\r\n\t var redo = document.createElement('button');\r\n\t redo.type = 'button';\r\n\t redo.className = 'jsoneditor-redo';\r\n\t redo.title = 'Redo (Ctrl+Shift+Z)';\r\n\t redo.onclick = function () {\r\n\t editor._onRedo();\r\n\t };\r\n\t this.menu.appendChild(redo);\r\n\t this.dom.redo = redo;\r\n\r\n\t // register handler for onchange of history\r\n\t this.history.onChange = function () {\r\n\t undo.disabled = !editor.history.canUndo();\r\n\t redo.disabled = !editor.history.canRedo();\r\n\t };\r\n\t this.history.onChange();\r\n\t }\r\n\r\n\t // create mode box\r\n\t if (this.options && this.options.modes && this.options.modes.length) {\r\n\t var me = this;\r\n\t this.modeSwitcher = new ModeSwitcher(this.menu, this.options.modes, this.options.mode, function onSwitch(mode) {\r\n\t me.modeSwitcher.destroy();\r\n\r\n\t // switch mode and restore focus\r\n\t me.setMode(mode);\r\n\t me.modeSwitcher.focus();\r\n\t });\r\n\t }\r\n\r\n\t // create search box\r\n\t if (this.options.search) {\r\n\t this.searchBox = new SearchBox(this, this.menu);\r\n\t }\r\n\t};\r\n\r\n\t/**\r\n\t * Perform an undo action\r\n\t * @private\r\n\t */\r\n\ttreemode._onUndo = function () {\r\n\t if (this.history) {\r\n\t // undo last action\r\n\t this.history.undo();\r\n\r\n\t // fire change event\r\n\t this._onChange();\r\n\t }\r\n\t};\r\n\r\n\t/**\r\n\t * Perform a redo action\r\n\t * @private\r\n\t */\r\n\ttreemode._onRedo = function () {\r\n\t if (this.history) {\r\n\t // redo last action\r\n\t this.history.redo();\r\n\r\n\t // fire change event\r\n\t this._onChange();\r\n\t }\r\n\t};\r\n\r\n\t/**\r\n\t * Event handler\r\n\t * @param event\r\n\t * @private\r\n\t */\r\n\ttreemode._onEvent = function (event) {\r\n\t if (event.type == 'keydown') {\r\n\t this._onKeyDown(event);\r\n\t }\r\n\r\n\t if (event.type == 'focus') {\r\n\t this.focusTarget = event.target;\r\n\t }\r\n\r\n\t if (event.type == 'mousedown') {\r\n\t this._startDragDistance(event);\r\n\t }\r\n\t if (event.type == 'mousemove' || event.type == 'mouseup' || event.type == 'click') {\r\n\t this._updateDragDistance(event);\r\n\t }\r\n\r\n\t var node = Node.getNodeFromTarget(event.target);\r\n\r\n\t if (node && node.selected) {\r\n\t if (event.type == 'click') {\r\n\t if (event.target == node.dom.menu) {\r\n\t this.showContextMenu(event.target);\r\n\r\n\t // stop propagation (else we will open the context menu of a single node)\r\n\t return;\r\n\t }\r\n\r\n\t // deselect a multi selection\r\n\t if (!event.hasMoved) {\r\n\t this.deselect();\r\n\t }\r\n\t }\r\n\r\n\t if (event.type == 'mousedown') {\r\n\t // drag multiple nodes\r\n\t Node.onDragStart(this.multiselection.nodes, event);\r\n\t }\r\n\t }\r\n\t else {\r\n\t if (event.type == 'mousedown') {\r\n\t this.deselect();\r\n\r\n\t if (node && event.target == node.dom.drag) {\r\n\t // drag a singe node\r\n\t Node.onDragStart(node, event);\r\n\t }\r\n\t else if (!node || (event.target != node.dom.field && event.target != node.dom.value && event.target != node.dom.select)) {\r\n\t // select multiple nodes\r\n\t this._onMultiSelectStart(event);\r\n\t }\r\n\t }\r\n\t }\r\n\r\n\t if (node) {\r\n\t node.onEvent(event);\r\n\t }\r\n\t};\r\n\r\n\ttreemode._startDragDistance = function (event) {\r\n\t this.dragDistanceEvent = {\r\n\t initialTarget: event.target,\r\n\t initialPageX: event.pageX,\r\n\t initialPageY: event.pageY,\r\n\t dragDistance: 0,\r\n\t hasMoved: false\r\n\t };\r\n\t};\r\n\r\n\ttreemode._updateDragDistance = function (event) {\r\n\t if (!this.dragDistanceEvent) {\r\n\t this._startDragDistance(event);\r\n\t }\r\n\r\n\t var diffX = event.pageX - this.dragDistanceEvent.initialPageX;\r\n\t var diffY = event.pageY - this.dragDistanceEvent.initialPageY;\r\n\r\n\t this.dragDistanceEvent.dragDistance = Math.sqrt(diffX * diffX + diffY * diffY);\r\n\t this.dragDistanceEvent.hasMoved =\r\n\t this.dragDistanceEvent.hasMoved || this.dragDistanceEvent.dragDistance > 10;\r\n\r\n\t event.dragDistance = this.dragDistanceEvent.dragDistance;\r\n\t event.hasMoved = this.dragDistanceEvent.hasMoved;\r\n\r\n\t return event.dragDistance;\r\n\t};\r\n\r\n\t/**\r\n\t * Start multi selection of nodes by dragging the mouse\r\n\t * @param event\r\n\t * @private\r\n\t */\r\n\ttreemode._onMultiSelectStart = function (event) {\r\n\t var node = Node.getNodeFromTarget(event.target);\r\n\r\n\t if (this.options.mode !== 'tree' || this.options.onEditable !== undefined) {\r\n\t // dragging not allowed in modes 'view' and 'form'\r\n\t // TODO: allow multiselection of items when option onEditable is specified\r\n\t return;\r\n\t }\r\n\r\n\t this.multiselection = {\r\n\t start: node || null,\r\n\t end: null,\r\n\t nodes: []\r\n\t };\r\n\r\n\t this._startDragDistance(event);\r\n\r\n\t var editor = this;\r\n\t if (!this.mousemove) {\r\n\t this.mousemove = util.addEventListener(window, 'mousemove', function (event) {\r\n\t editor._onMultiSelect(event);\r\n\t });\r\n\t }\r\n\t if (!this.mouseup) {\r\n\t this.mouseup = util.addEventListener(window, 'mouseup', function (event ) {\r\n\t editor._onMultiSelectEnd(event);\r\n\t });\r\n\t }\r\n\r\n\t};\r\n\r\n\t/**\r\n\t * Multiselect nodes by dragging\r\n\t * @param event\r\n\t * @private\r\n\t */\r\n\ttreemode._onMultiSelect = function (event) {\r\n\t event.preventDefault();\r\n\r\n\t this._updateDragDistance(event);\r\n\t if (!event.hasMoved) {\r\n\t return;\r\n\t }\r\n\r\n\t var node = Node.getNodeFromTarget(event.target);\r\n\r\n\t if (node) {\r\n\t if (this.multiselection.start == null) {\r\n\t this.multiselection.start = node;\r\n\t }\r\n\t this.multiselection.end = node;\r\n\t }\r\n\r\n\t // deselect previous selection\r\n\t this.deselect();\r\n\r\n\t // find the selected nodes in the range from first to last\r\n\t var start = this.multiselection.start;\r\n\t var end = this.multiselection.end || this.multiselection.start;\r\n\t if (start && end) {\r\n\t // find the top level childs, all having the same parent\r\n\t this.multiselection.nodes = this._findTopLevelNodes(start, end);\r\n\t this.select(this.multiselection.nodes);\r\n\t }\r\n\t};\r\n\r\n\t/**\r\n\t * End of multiselect nodes by dragging\r\n\t * @param event\r\n\t * @private\r\n\t */\r\n\ttreemode._onMultiSelectEnd = function (event) {\r\n\t // set focus to the context menu button of the first node\r\n\t if (this.multiselection.nodes[0]) {\r\n\t this.multiselection.nodes[0].dom.menu.focus();\r\n\t }\r\n\r\n\t this.multiselection.start = null;\r\n\t this.multiselection.end = null;\r\n\r\n\t // cleanup global event listeners\r\n\t if (this.mousemove) {\r\n\t util.removeEventListener(window, 'mousemove', this.mousemove);\r\n\t delete this.mousemove;\r\n\t }\r\n\t if (this.mouseup) {\r\n\t util.removeEventListener(window, 'mouseup', this.mouseup);\r\n\t delete this.mouseup;\r\n\t }\r\n\t};\r\n\r\n\t/**\r\n\t * deselect currently selected nodes\r\n\t * @param {boolean} [clearStartAndEnd=false] If true, the `start` and `end`\r\n\t * state is cleared too.\r\n\t */\r\n\ttreemode.deselect = function (clearStartAndEnd) {\r\n\t this.multiselection.nodes.forEach(function (node) {\r\n\t node.setSelected(false);\r\n\t });\r\n\t this.multiselection.nodes = [];\r\n\r\n\t if (clearStartAndEnd) {\r\n\t this.multiselection.start = null;\r\n\t this.multiselection.end = null;\r\n\t }\r\n\t};\r\n\r\n\t/**\r\n\t * select nodes\r\n\t * @param {Node[] | Node} nodes\r\n\t */\r\n\ttreemode.select = function (nodes) {\r\n\t if (!Array.isArray(nodes)) {\r\n\t return this.select([nodes]);\r\n\t }\r\n\r\n\t if (nodes) {\r\n\t this.deselect();\r\n\r\n\t this.multiselection.nodes = nodes.slice(0);\r\n\r\n\t var first = nodes[0];\r\n\t nodes.forEach(function (node) {\r\n\t node.setSelected(true, node === first);\r\n\t });\r\n\t }\r\n\t};\r\n\r\n\t/**\r\n\t * From two arbitrary selected nodes, find their shared parent node.\r\n\t * From that parent node, select the two child nodes in the brances going to\r\n\t * nodes `start` and `end`, and select all childs in between.\r\n\t * @param {Node} start\r\n\t * @param {Node} end\r\n\t * @return {Array.} Returns an ordered list with child nodes\r\n\t * @private\r\n\t */\r\n\ttreemode._findTopLevelNodes = function (start, end) {\r\n\t var startPath = start.getNodePath();\r\n\t var endPath = end.getNodePath();\r\n\t var i = 0;\r\n\t while (i < startPath.length && startPath[i] === endPath[i]) {\r\n\t i++;\r\n\t }\r\n\t var root = startPath[i - 1];\r\n\t var startChild = startPath[i];\r\n\t var endChild = endPath[i];\r\n\r\n\t if (!startChild || !endChild) {\r\n\t if (root.parent) {\r\n\t // startChild is a parent of endChild or vice versa\r\n\t startChild = root;\r\n\t endChild = root;\r\n\t root = root.parent\r\n\t }\r\n\t else {\r\n\t // we have selected the root node (which doesn't have a parent)\r\n\t startChild = root.childs[0];\r\n\t endChild = root.childs[root.childs.length - 1];\r\n\t }\r\n\t }\r\n\r\n\t if (root && startChild && endChild) {\r\n\t var startIndex = root.childs.indexOf(startChild);\r\n\t var endIndex = root.childs.indexOf(endChild);\r\n\t var firstIndex = Math.min(startIndex, endIndex);\r\n\t var lastIndex = Math.max(startIndex, endIndex);\r\n\r\n\t return root.childs.slice(firstIndex, lastIndex + 1);\r\n\t }\r\n\t else {\r\n\t return [];\r\n\t }\r\n\t};\r\n\r\n\t/**\r\n\t * Event handler for keydown. Handles shortcut keys\r\n\t * @param {Event} event\r\n\t * @private\r\n\t */\r\n\ttreemode._onKeyDown = function (event) {\r\n\t var keynum = event.which || event.keyCode;\r\n\t var ctrlKey = event.ctrlKey;\r\n\t var shiftKey = event.shiftKey;\r\n\t var handled = false;\r\n\r\n\t if (keynum == 9) { // Tab or Shift+Tab\r\n\t var me = this;\r\n\t setTimeout(function () {\r\n\t // select all text when moving focus to an editable div\r\n\t util.selectContentEditable(me.focusTarget);\r\n\t }, 0);\r\n\t }\r\n\r\n\t if (this.searchBox) {\r\n\t if (ctrlKey && keynum == 70) { // Ctrl+F\r\n\t this.searchBox.dom.search.focus();\r\n\t this.searchBox.dom.search.select();\r\n\t handled = true;\r\n\t }\r\n\t else if (keynum == 114 || (ctrlKey && keynum == 71)) { // F3 or Ctrl+G\r\n\t var focus = true;\r\n\t if (!shiftKey) {\r\n\t // select next search result (F3 or Ctrl+G)\r\n\t this.searchBox.next(focus);\r\n\t }\r\n\t else {\r\n\t // select previous search result (Shift+F3 or Ctrl+Shift+G)\r\n\t this.searchBox.previous(focus);\r\n\t }\r\n\r\n\t handled = true;\r\n\t }\r\n\t }\r\n\r\n\t if (this.history) {\r\n\t if (ctrlKey && !shiftKey && keynum == 90) { // Ctrl+Z\r\n\t // undo\r\n\t this._onUndo();\r\n\t handled = true;\r\n\t }\r\n\t else if (ctrlKey && shiftKey && keynum == 90) { // Ctrl+Shift+Z\r\n\t // redo\r\n\t this._onRedo();\r\n\t handled = true;\r\n\t }\r\n\t }\r\n\r\n\t if (handled) {\r\n\t event.preventDefault();\r\n\t event.stopPropagation();\r\n\t }\r\n\t};\r\n\r\n\t/**\r\n\t * Create main table\r\n\t * @private\r\n\t */\r\n\ttreemode._createTable = function () {\r\n\t var contentOuter = document.createElement('div');\r\n\t contentOuter.className = 'jsoneditor-outer';\r\n\t this.contentOuter = contentOuter;\r\n\r\n\t this.content = document.createElement('div');\r\n\t this.content.className = 'jsoneditor-tree';\r\n\t contentOuter.appendChild(this.content);\r\n\r\n\t this.table = document.createElement('table');\r\n\t this.table.className = 'jsoneditor-tree';\r\n\t this.content.appendChild(this.table);\r\n\r\n\t // create colgroup where the first two columns don't have a fixed\r\n\t // width, and the edit columns do have a fixed width\r\n\t var col;\r\n\t this.colgroupContent = document.createElement('colgroup');\r\n\t if (this.options.mode === 'tree') {\r\n\t col = document.createElement('col');\r\n\t col.width = \"24px\";\r\n\t this.colgroupContent.appendChild(col);\r\n\t }\r\n\t col = document.createElement('col');\r\n\t col.width = \"24px\";\r\n\t this.colgroupContent.appendChild(col);\r\n\t col = document.createElement('col');\r\n\t this.colgroupContent.appendChild(col);\r\n\t this.table.appendChild(this.colgroupContent);\r\n\r\n\t this.tbody = document.createElement('tbody');\r\n\t this.table.appendChild(this.tbody);\r\n\r\n\t this.frame.appendChild(contentOuter);\r\n\t};\r\n\r\n\t/**\r\n\t * Show a contextmenu for this node.\r\n\t * Used for multiselection\r\n\t * @param {HTMLElement} anchor Anchor element to attache the context menu to.\r\n\t * @param {function} [onClose] Callback method called when the context menu\r\n\t * is being closed.\r\n\t */\r\n\ttreemode.showContextMenu = function (anchor, onClose) {\r\n\t var items = [];\r\n\t var editor = this;\r\n\r\n\t // create duplicate button\r\n\t items.push({\r\n\t text: 'Duplicate',\r\n\t title: 'Duplicate selected fields (Ctrl+D)',\r\n\t className: 'jsoneditor-duplicate',\r\n\t click: function () {\r\n\t Node.onDuplicate(editor.multiselection.nodes);\r\n\t }\r\n\t });\r\n\r\n\t // create remove button\r\n\t items.push({\r\n\t text: 'Remove',\r\n\t title: 'Remove selected fields (Ctrl+Del)',\r\n\t className: 'jsoneditor-remove',\r\n\t click: function () {\r\n\t Node.onRemove(editor.multiselection.nodes);\r\n\t }\r\n\t });\r\n\r\n\t var menu = new ContextMenu(items, {close: onClose});\r\n\t menu.show(anchor, this.content);\r\n\t};\r\n\r\n\r\n\t// define modes\r\n\tmodule.exports = [\r\n\t {\r\n\t mode: 'tree',\r\n\t mixin: treemode,\r\n\t data: 'json'\r\n\t },\r\n\t {\r\n\t mode: 'view',\r\n\t mixin: treemode,\r\n\t data: 'json'\r\n\t },\r\n\t {\r\n\t mode: 'form',\r\n\t mixin: treemode,\r\n\t data: 'json'\r\n\t }\r\n\t];\r\n\r\n\r\n/***/ },\r\n/* 52 */\r\n/***/ function(module, exports) {\r\n\r\n\t'use strict';\r\n\r\n\t/**\r\n\t * The highlighter can highlight/unhighlight a node, and\r\n\t * animate the visibility of a context menu.\r\n\t * @constructor Highlighter\r\n\t */\r\n\tfunction Highlighter () {\r\n\t this.locked = false;\r\n\t}\r\n\r\n\t/**\r\n\t * Hightlight given node and its childs\r\n\t * @param {Node} node\r\n\t */\r\n\tHighlighter.prototype.highlight = function (node) {\r\n\t if (this.locked) {\r\n\t return;\r\n\t }\r\n\r\n\t if (this.node != node) {\r\n\t // unhighlight current node\r\n\t if (this.node) {\r\n\t this.node.setHighlight(false);\r\n\t }\r\n\r\n\t // highlight new node\r\n\t this.node = node;\r\n\t this.node.setHighlight(true);\r\n\t }\r\n\r\n\t // cancel any current timeout\r\n\t this._cancelUnhighlight();\r\n\t};\r\n\r\n\t/**\r\n\t * Unhighlight currently highlighted node.\r\n\t * Will be done after a delay\r\n\t */\r\n\tHighlighter.prototype.unhighlight = function () {\r\n\t if (this.locked) {\r\n\t return;\r\n\t }\r\n\r\n\t var me = this;\r\n\t if (this.node) {\r\n\t this._cancelUnhighlight();\r\n\r\n\t // do the unhighlighting after a small delay, to prevent re-highlighting\r\n\t // the same node when moving from the drag-icon to the contextmenu-icon\r\n\t // or vice versa.\r\n\t this.unhighlightTimer = setTimeout(function () {\r\n\t me.node.setHighlight(false);\r\n\t me.node = undefined;\r\n\t me.unhighlightTimer = undefined;\r\n\t }, 0);\r\n\t }\r\n\t};\r\n\r\n\t/**\r\n\t * Cancel an unhighlight action (if before the timeout of the unhighlight action)\r\n\t * @private\r\n\t */\r\n\tHighlighter.prototype._cancelUnhighlight = function () {\r\n\t if (this.unhighlightTimer) {\r\n\t clearTimeout(this.unhighlightTimer);\r\n\t this.unhighlightTimer = undefined;\r\n\t }\r\n\t};\r\n\r\n\t/**\r\n\t * Lock highlighting or unhighlighting nodes.\r\n\t * methods highlight and unhighlight do not work while locked.\r\n\t */\r\n\tHighlighter.prototype.lock = function () {\r\n\t this.locked = true;\r\n\t};\r\n\r\n\t/**\r\n\t * Unlock highlighting or unhighlighting nodes\r\n\t */\r\n\tHighlighter.prototype.unlock = function () {\r\n\t this.locked = false;\r\n\t};\r\n\r\n\tmodule.exports = Highlighter;\r\n\r\n\r\n/***/ },\r\n/* 53 */\r\n/***/ function(module, exports, __webpack_require__) {\r\n\r\n\t'use strict';\r\n\r\n\tvar util = __webpack_require__(54);\r\n\r\n\t/**\r\n\t * @constructor History\r\n\t * Store action history, enables undo and redo\r\n\t * @param {JSONEditor} editor\r\n\t */\r\n\tfunction History (editor) {\r\n\t this.editor = editor;\r\n\t this.history = [];\r\n\t this.index = -1;\r\n\r\n\t this.clear();\r\n\r\n\t // map with all supported actions\r\n\t this.actions = {\r\n\t 'editField': {\r\n\t 'undo': function (params) {\r\n\t params.node.updateField(params.oldValue);\r\n\t },\r\n\t 'redo': function (params) {\r\n\t params.node.updateField(params.newValue);\r\n\t }\r\n\t },\r\n\t 'editValue': {\r\n\t 'undo': function (params) {\r\n\t params.node.updateValue(params.oldValue);\r\n\t },\r\n\t 'redo': function (params) {\r\n\t params.node.updateValue(params.newValue);\r\n\t }\r\n\t },\r\n\t 'changeType': {\r\n\t 'undo': function (params) {\r\n\t params.node.changeType(params.oldType);\r\n\t },\r\n\t 'redo': function (params) {\r\n\t params.node.changeType(params.newType);\r\n\t }\r\n\t },\r\n\r\n\t 'appendNodes': {\r\n\t 'undo': function (params) {\r\n\t params.nodes.forEach(function (node) {\r\n\t params.parent.removeChild(node);\r\n\t });\r\n\t },\r\n\t 'redo': function (params) {\r\n\t params.nodes.forEach(function (node) {\r\n\t params.parent.appendChild(node);\r\n\t });\r\n\t }\r\n\t },\r\n\t 'insertBeforeNodes': {\r\n\t 'undo': function (params) {\r\n\t params.nodes.forEach(function (node) {\r\n\t params.parent.removeChild(node);\r\n\t });\r\n\t },\r\n\t 'redo': function (params) {\r\n\t params.nodes.forEach(function (node) {\r\n\t params.parent.insertBefore(node, params.beforeNode);\r\n\t });\r\n\t }\r\n\t },\r\n\t 'insertAfterNodes': {\r\n\t 'undo': function (params) {\r\n\t params.nodes.forEach(function (node) {\r\n\t params.parent.removeChild(node);\r\n\t });\r\n\t },\r\n\t 'redo': function (params) {\r\n\t var afterNode = params.afterNode;\r\n\t params.nodes.forEach(function (node) {\r\n\t params.parent.insertAfter(params.node, afterNode);\r\n\t afterNode = node;\r\n\t });\r\n\t }\r\n\t },\r\n\t 'removeNodes': {\r\n\t 'undo': function (params) {\r\n\t var parent = params.parent;\r\n\t var beforeNode = parent.childs[params.index] || parent.append;\r\n\t params.nodes.forEach(function (node) {\r\n\t parent.insertBefore(node, beforeNode);\r\n\t });\r\n\t },\r\n\t 'redo': function (params) {\r\n\t params.nodes.forEach(function (node) {\r\n\t params.parent.removeChild(node);\r\n\t });\r\n\t }\r\n\t },\r\n\t 'duplicateNodes': {\r\n\t 'undo': function (params) {\r\n\t params.nodes.forEach(function (node) {\r\n\t params.parent.removeChild(node);\r\n\t });\r\n\t },\r\n\t 'redo': function (params) {\r\n\t var afterNode = params.afterNode;\r\n\t params.nodes.forEach(function (node) {\r\n\t params.parent.insertAfter(node, afterNode);\r\n\t afterNode = node;\r\n\t });\r\n\t }\r\n\t },\r\n\t 'moveNodes': {\r\n\t 'undo': function (params) {\r\n\t params.nodes.forEach(function (node) {\r\n\t params.oldBeforeNode.parent.moveBefore(node, params.oldBeforeNode);\r\n\t });\r\n\t },\r\n\t 'redo': function (params) {\r\n\t params.nodes.forEach(function (node) {\r\n\t params.newBeforeNode.parent.moveBefore(node, params.newBeforeNode);\r\n\t });\r\n\t }\r\n\t },\r\n\r\n\t 'sort': {\r\n\t 'undo': function (params) {\r\n\t var node = params.node;\r\n\t node.hideChilds();\r\n\t node.sort = params.oldSort;\r\n\t node.childs = params.oldChilds;\r\n\t node.showChilds();\r\n\t },\r\n\t 'redo': function (params) {\r\n\t var node = params.node;\r\n\t node.hideChilds();\r\n\t node.sort = params.newSort;\r\n\t node.childs = params.newChilds;\r\n\t node.showChilds();\r\n\t }\r\n\t }\r\n\r\n\t // TODO: restore the original caret position and selection with each undo\r\n\t // TODO: implement history for actions \"expand\", \"collapse\", \"scroll\", \"setDocument\"\r\n\t };\r\n\t}\r\n\r\n\t/**\r\n\t * The method onChange is executed when the History is changed, and can\r\n\t * be overloaded.\r\n\t */\r\n\tHistory.prototype.onChange = function () {};\r\n\r\n\t/**\r\n\t * Add a new action to the history\r\n\t * @param {String} action The executed action. Available actions: \"editField\",\r\n\t * \"editValue\", \"changeType\", \"appendNode\",\r\n\t * \"removeNode\", \"duplicateNode\", \"moveNode\"\r\n\t * @param {Object} params Object containing parameters describing the change.\r\n\t * The parameters in params depend on the action (for\r\n\t * example for \"editValue\" the Node, old value, and new\r\n\t * value are provided). params contains all information\r\n\t * needed to undo or redo the action.\r\n\t */\r\n\tHistory.prototype.add = function (action, params) {\r\n\t this.index++;\r\n\t this.history[this.index] = {\r\n\t 'action': action,\r\n\t 'params': params,\r\n\t 'timestamp': new Date()\r\n\t };\r\n\r\n\t // remove redo actions which are invalid now\r\n\t if (this.index < this.history.length - 1) {\r\n\t this.history.splice(this.index + 1, this.history.length - this.index - 1);\r\n\t }\r\n\r\n\t // fire onchange event\r\n\t this.onChange();\r\n\t};\r\n\r\n\t/**\r\n\t * Clear history\r\n\t */\r\n\tHistory.prototype.clear = function () {\r\n\t this.history = [];\r\n\t this.index = -1;\r\n\r\n\t // fire onchange event\r\n\t this.onChange();\r\n\t};\r\n\r\n\t/**\r\n\t * Check if there is an action available for undo\r\n\t * @return {Boolean} canUndo\r\n\t */\r\n\tHistory.prototype.canUndo = function () {\r\n\t return (this.index >= 0);\r\n\t};\r\n\r\n\t/**\r\n\t * Check if there is an action available for redo\r\n\t * @return {Boolean} canRedo\r\n\t */\r\n\tHistory.prototype.canRedo = function () {\r\n\t return (this.index < this.history.length - 1);\r\n\t};\r\n\r\n\t/**\r\n\t * Undo the last action\r\n\t */\r\n\tHistory.prototype.undo = function () {\r\n\t if (this.canUndo()) {\r\n\t var obj = this.history[this.index];\r\n\t if (obj) {\r\n\t var action = this.actions[obj.action];\r\n\t if (action && action.undo) {\r\n\t action.undo(obj.params);\r\n\t if (obj.params.oldSelection) {\r\n\t this.editor.setSelection(obj.params.oldSelection);\r\n\t }\r\n\t }\r\n\t else {\r\n\t console.error(new Error('unknown action \"' + obj.action + '\"'));\r\n\t }\r\n\t }\r\n\t this.index--;\r\n\r\n\t // fire onchange event\r\n\t this.onChange();\r\n\t }\r\n\t};\r\n\r\n\t/**\r\n\t * Redo the last action\r\n\t */\r\n\tHistory.prototype.redo = function () {\r\n\t if (this.canRedo()) {\r\n\t this.index++;\r\n\r\n\t var obj = this.history[this.index];\r\n\t if (obj) {\r\n\t var action = this.actions[obj.action];\r\n\t if (action && action.redo) {\r\n\t action.redo(obj.params);\r\n\t if (obj.params.newSelection) {\r\n\t this.editor.setSelection(obj.params.newSelection);\r\n\t }\r\n\t }\r\n\t else {\r\n\t console.error(new Error('unknown action \"' + obj.action + '\"'));\r\n\t }\r\n\t }\r\n\r\n\t // fire onchange event\r\n\t this.onChange();\r\n\t }\r\n\t};\r\n\r\n\t/**\r\n\t * Destroy history\r\n\t */\r\n\tHistory.prototype.destroy = function () {\r\n\t this.editor = null;\r\n\r\n\t this.history = [];\r\n\t this.index = -1;\r\n\t};\r\n\r\n\tmodule.exports = History;\r\n\r\n\r\n/***/ },\r\n/* 54 */\r\n/***/ function(module, exports, __webpack_require__) {\r\n\r\n\t'use strict';\r\n\r\n\tvar jsonlint = __webpack_require__(55);\r\n\r\n\t/**\r\n\t * Parse JSON using the parser built-in in the browser.\r\n\t * On exception, the jsonString is validated and a detailed error is thrown.\r\n\t * @param {String} jsonString\r\n\t * @return {JSON} json\r\n\t */\r\n\texports.parse = function parse(jsonString) {\r\n\t try {\r\n\t return JSON.parse(jsonString);\r\n\t }\r\n\t catch (err) {\r\n\t // try to throw a more detailed error message using validate\r\n\t exports.validate(jsonString);\r\n\r\n\t // rethrow the original error\r\n\t throw err;\r\n\t }\r\n\t};\r\n\r\n\t/**\r\n\t * Sanitize a JSON-like string containing. For example changes JavaScript\r\n\t * notation into JSON notation.\r\n\t * This function for example changes a string like \"{a: 2, 'b': {c: 'd'}\"\r\n\t * into '{\"a\": 2, \"b\": {\"c\": \"d\"}'\r\n\t * @param {string} jsString\r\n\t * @returns {string} json\r\n\t */\r\n\texports.sanitize = function (jsString) {\r\n\t // escape all single and double quotes inside strings\r\n\t var chars = [];\r\n\t var i = 0;\r\n\r\n\t //If JSON starts with a function (characters/digits/\"_-\"), remove this function.\r\n\t //This is useful for \"stripping\" JSONP objects to become JSON\r\n\t //For example: /* some comment */ function_12321321 ( [{\"a\":\"b\"}] ); => [{\"a\":\"b\"}]\r\n\t var match = jsString.match(/^\\s*(\\/\\*(.|[\\r\\n])*?\\*\\/)?\\s*[\\da-zA-Z_$]+\\s*\\(([\\s\\S]*)\\)\\s*;?\\s*$/);\r\n\t if (match) {\r\n\t jsString = match[3];\r\n\t }\r\n\r\n\t // helper functions to get the current/prev/next character\r\n\t function curr () { return jsString.charAt(i); }\r\n\t function next() { return jsString.charAt(i + 1); }\r\n\t function prev() { return jsString.charAt(i - 1); }\r\n\r\n\t // get the last parsed non-whitespace character\r\n\t function lastNonWhitespace () {\r\n\t var p = chars.length - 1;\r\n\r\n\t while (p >= 0) {\r\n\t var pp = chars[p];\r\n\t if (pp !== ' ' && pp !== '\\n' && pp !== '\\r' && pp !== '\\t') { // non whitespace\r\n\t return pp;\r\n\t }\r\n\t p--;\r\n\t }\r\n\r\n\t return '';\r\n\t }\r\n\r\n\t // skip a block comment '/* ... */'\r\n\t function skipBlockComment () {\r\n\t i += 2;\r\n\t while (i < jsString.length && (curr() !== '*' || next() !== '/')) {\r\n\t i++;\r\n\t }\r\n\t i += 2;\r\n\t }\r\n\r\n\t // skip a comment '// ...'\r\n\t function skipComment () {\r\n\t i += 2;\r\n\t while (i < jsString.length && (curr() !== '\\n')) {\r\n\t i++;\r\n\t }\r\n\t }\r\n\r\n\t // parse single or double quoted string\r\n\t function parseString(quote) {\r\n\t chars.push('\"');\r\n\t i++;\r\n\t var c = curr();\r\n\t while (i < jsString.length && c !== quote) {\r\n\t if (c === '\"' && prev() !== '\\\\') {\r\n\t // unescaped double quote, escape it\r\n\t chars.push('\\\\');\r\n\t }\r\n\r\n\t // handle escape character\r\n\t if (c === '\\\\') {\r\n\t i++;\r\n\t c = curr();\r\n\r\n\t // remove the escape character when followed by a single quote ', not needed\r\n\t if (c !== '\\'') {\r\n\t chars.push('\\\\');\r\n\t }\r\n\t }\r\n\t chars.push(c);\r\n\r\n\t i++;\r\n\t c = curr();\r\n\t }\r\n\t if (c === quote) {\r\n\t chars.push('\"');\r\n\t i++;\r\n\t }\r\n\t }\r\n\r\n\t // parse an unquoted key\r\n\t function parseKey() {\r\n\t var specialValues = ['null', 'true', 'false'];\r\n\t var key = '';\r\n\t var c = curr();\r\n\r\n\t var regexp = /[a-zA-Z_$\\d]/; // letter, number, underscore, dollar character\r\n\t while (regexp.test(c)) {\r\n\t key += c;\r\n\t i++;\r\n\t c = curr();\r\n\t }\r\n\r\n\t if (specialValues.indexOf(key) === -1) {\r\n\t chars.push('\"' + key + '\"');\r\n\t }\r\n\t else {\r\n\t chars.push(key);\r\n\t }\r\n\t }\r\n\r\n\t while(i < jsString.length) {\r\n\t var c = curr();\r\n\r\n\t if (c === '/' && next() === '*') {\r\n\t skipBlockComment();\r\n\t }\r\n\t else if (c === '/' && next() === '/') {\r\n\t skipComment();\r\n\t }\r\n\t else if (c === '\\'' || c === '\"') {\r\n\t parseString(c);\r\n\t }\r\n\t else if (/[a-zA-Z_$]/.test(c) && ['{', ','].indexOf(lastNonWhitespace()) !== -1) {\r\n\t // an unquoted object key (like a in '{a:2}')\r\n\t parseKey();\r\n\t }\r\n\t else {\r\n\t chars.push(c);\r\n\t i++;\r\n\t }\r\n\t }\r\n\r\n\t return chars.join('');\r\n\t};\r\n\r\n\t/**\r\n\t * Escape unicode characters.\r\n\t * For example input '\\u2661' (length 1) will output '\\\\u2661' (length 5).\r\n\t * @param {string} text\r\n\t * @return {string}\r\n\t */\r\n\texports.escapeUnicodeChars = function (text) {\r\n\t // see https://www.wikiwand.com/en/UTF-16\r\n\t // note: we leave surrogate pairs as two individual chars,\r\n\t // as JSON doesn't interpret them as a single unicode char.\r\n\t return text.replace(/[\\u007F-\\uFFFF]/g, function(c) {\r\n\t return '\\\\u'+('0000' + c.charCodeAt(0).toString(16)).slice(-4);\r\n\t })\r\n\t};\r\n\r\n\t/**\r\n\t * Validate a string containing a JSON object\r\n\t * This method uses JSONLint to validate the String. If JSONLint is not\r\n\t * available, the built-in JSON parser of the browser is used.\r\n\t * @param {String} jsonString String with an (invalid) JSON object\r\n\t * @throws Error\r\n\t */\r\n\texports.validate = function validate(jsonString) {\r\n\t if (typeof(jsonlint) != 'undefined') {\r\n\t jsonlint.parse(jsonString);\r\n\t }\r\n\t else {\r\n\t JSON.parse(jsonString);\r\n\t }\r\n\t};\r\n\r\n\t/**\r\n\t * Extend object a with the properties of object b\r\n\t * @param {Object} a\r\n\t * @param {Object} b\r\n\t * @return {Object} a\r\n\t */\r\n\texports.extend = function extend(a, b) {\r\n\t for (var prop in b) {\r\n\t if (b.hasOwnProperty(prop)) {\r\n\t a[prop] = b[prop];\r\n\t }\r\n\t }\r\n\t return a;\r\n\t};\r\n\r\n\t/**\r\n\t * Remove all properties from object a\r\n\t * @param {Object} a\r\n\t * @return {Object} a\r\n\t */\r\n\texports.clear = function clear (a) {\r\n\t for (var prop in a) {\r\n\t if (a.hasOwnProperty(prop)) {\r\n\t delete a[prop];\r\n\t }\r\n\t }\r\n\t return a;\r\n\t};\r\n\r\n\t/**\r\n\t * Get the type of an object\r\n\t * @param {*} object\r\n\t * @return {String} type\r\n\t */\r\n\texports.type = function type (object) {\r\n\t if (object === null) {\r\n\t return 'null';\r\n\t }\r\n\t if (object === undefined) {\r\n\t return 'undefined';\r\n\t }\r\n\t if ((object instanceof Number) || (typeof object === 'number')) {\r\n\t return 'number';\r\n\t }\r\n\t if ((object instanceof String) || (typeof object === 'string')) {\r\n\t return 'string';\r\n\t }\r\n\t if ((object instanceof Boolean) || (typeof object === 'boolean')) {\r\n\t return 'boolean';\r\n\t }\r\n\t if ((object instanceof RegExp) || (typeof object === 'regexp')) {\r\n\t return 'regexp';\r\n\t }\r\n\t if (exports.isArray(object)) {\r\n\t return 'array';\r\n\t }\r\n\r\n\t return 'object';\r\n\t};\r\n\r\n\t/**\r\n\t * Test whether a text contains a url (matches when a string starts\r\n\t * with 'http://*' or 'https://*' and has no whitespace characters)\r\n\t * @param {String} text\r\n\t */\r\n\tvar isUrlRegex = /^https?:\\/\\/\\S+$/;\r\n\texports.isUrl = function isUrl (text) {\r\n\t return (typeof text == 'string' || text instanceof String) &&\r\n\t isUrlRegex.test(text);\r\n\t};\r\n\r\n\t/**\r\n\t * Tes whether given object is an Array\r\n\t * @param {*} obj\r\n\t * @returns {boolean} returns true when obj is an array\r\n\t */\r\n\texports.isArray = function (obj) {\r\n\t return Object.prototype.toString.call(obj) === '[object Array]';\r\n\t};\r\n\r\n\t/**\r\n\t * Retrieve the absolute left value of a DOM element\r\n\t * @param {Element} elem A dom element, for example a div\r\n\t * @return {Number} left The absolute left position of this element\r\n\t * in the browser page.\r\n\t */\r\n\texports.getAbsoluteLeft = function getAbsoluteLeft(elem) {\r\n\t var rect = elem.getBoundingClientRect();\r\n\t return rect.left + window.pageXOffset || document.scrollLeft || 0;\r\n\t};\r\n\r\n\t/**\r\n\t * Retrieve the absolute top value of a DOM element\r\n\t * @param {Element} elem A dom element, for example a div\r\n\t * @return {Number} top The absolute top position of this element\r\n\t * in the browser page.\r\n\t */\r\n\texports.getAbsoluteTop = function getAbsoluteTop(elem) {\r\n\t var rect = elem.getBoundingClientRect();\r\n\t return rect.top + window.pageYOffset || document.scrollTop || 0;\r\n\t};\r\n\r\n\t/**\r\n\t * add a className to the given elements style\r\n\t * @param {Element} elem\r\n\t * @param {String} className\r\n\t */\r\n\texports.addClassName = function addClassName(elem, className) {\r\n\t var classes = elem.className.split(' ');\r\n\t if (classes.indexOf(className) == -1) {\r\n\t classes.push(className); // add the class to the array\r\n\t elem.className = classes.join(' ');\r\n\t }\r\n\t};\r\n\r\n\t/**\r\n\t * add a className to the given elements style\r\n\t * @param {Element} elem\r\n\t * @param {String} className\r\n\t */\r\n\texports.removeClassName = function removeClassName(elem, className) {\r\n\t var classes = elem.className.split(' ');\r\n\t var index = classes.indexOf(className);\r\n\t if (index != -1) {\r\n\t classes.splice(index, 1); // remove the class from the array\r\n\t elem.className = classes.join(' ');\r\n\t }\r\n\t};\r\n\r\n\t/**\r\n\t * Strip the formatting from the contents of a div\r\n\t * the formatting from the div itself is not stripped, only from its childs.\r\n\t * @param {Element} divElement\r\n\t */\r\n\texports.stripFormatting = function stripFormatting(divElement) {\r\n\t var childs = divElement.childNodes;\r\n\t for (var i = 0, iMax = childs.length; i < iMax; i++) {\r\n\t var child = childs[i];\r\n\r\n\t // remove the style\r\n\t if (child.style) {\r\n\t // TODO: test if child.attributes does contain style\r\n\t child.removeAttribute('style');\r\n\t }\r\n\r\n\t // remove all attributes\r\n\t var attributes = child.attributes;\r\n\t if (attributes) {\r\n\t for (var j = attributes.length - 1; j >= 0; j--) {\r\n\t var attribute = attributes[j];\r\n\t if (attribute.specified === true) {\r\n\t child.removeAttribute(attribute.name);\r\n\t }\r\n\t }\r\n\t }\r\n\r\n\t // recursively strip childs\r\n\t exports.stripFormatting(child);\r\n\t }\r\n\t};\r\n\r\n\t/**\r\n\t * Set focus to the end of an editable div\r\n\t * code from Nico Burns\r\n\t * http://stackoverflow.com/users/140293/nico-burns\r\n\t * http://stackoverflow.com/questions/1125292/how-to-move-cursor-to-end-of-contenteditable-entity\r\n\t * @param {Element} contentEditableElement A content editable div\r\n\t */\r\n\texports.setEndOfContentEditable = function setEndOfContentEditable(contentEditableElement) {\r\n\t var range, selection;\r\n\t if(document.createRange) {\r\n\t range = document.createRange();//Create a range (a range is a like the selection but invisible)\r\n\t range.selectNodeContents(contentEditableElement);//Select the entire contents of the element with the range\r\n\t range.collapse(false);//collapse the range to the end point. false means collapse to end rather than the start\r\n\t selection = window.getSelection();//get the selection object (allows you to change selection)\r\n\t selection.removeAllRanges();//remove any selections already made\r\n\t selection.addRange(range);//make the range you have just created the visible selection\r\n\t }\r\n\t};\r\n\r\n\t/**\r\n\t * Select all text of a content editable div.\r\n\t * http://stackoverflow.com/a/3806004/1262753\r\n\t * @param {Element} contentEditableElement A content editable div\r\n\t */\r\n\texports.selectContentEditable = function selectContentEditable(contentEditableElement) {\r\n\t if (!contentEditableElement || contentEditableElement.nodeName != 'DIV') {\r\n\t return;\r\n\t }\r\n\r\n\t var sel, range;\r\n\t if (window.getSelection && document.createRange) {\r\n\t range = document.createRange();\r\n\t range.selectNodeContents(contentEditableElement);\r\n\t sel = window.getSelection();\r\n\t sel.removeAllRanges();\r\n\t sel.addRange(range);\r\n\t }\r\n\t};\r\n\r\n\t/**\r\n\t * Get text selection\r\n\t * http://stackoverflow.com/questions/4687808/contenteditable-selected-text-save-and-restore\r\n\t * @return {Range | TextRange | null} range\r\n\t */\r\n\texports.getSelection = function getSelection() {\r\n\t if (window.getSelection) {\r\n\t var sel = window.getSelection();\r\n\t if (sel.getRangeAt && sel.rangeCount) {\r\n\t return sel.getRangeAt(0);\r\n\t }\r\n\t }\r\n\t return null;\r\n\t};\r\n\r\n\t/**\r\n\t * Set text selection\r\n\t * http://stackoverflow.com/questions/4687808/contenteditable-selected-text-save-and-restore\r\n\t * @param {Range | TextRange | null} range\r\n\t */\r\n\texports.setSelection = function setSelection(range) {\r\n\t if (range) {\r\n\t if (window.getSelection) {\r\n\t var sel = window.getSelection();\r\n\t sel.removeAllRanges();\r\n\t sel.addRange(range);\r\n\t }\r\n\t }\r\n\t};\r\n\r\n\t/**\r\n\t * Get selected text range\r\n\t * @return {Object} params object containing parameters:\r\n\t * {Number} startOffset\r\n\t * {Number} endOffset\r\n\t * {Element} container HTML element holding the\r\n\t * selected text element\r\n\t * Returns null if no text selection is found\r\n\t */\r\n\texports.getSelectionOffset = function getSelectionOffset() {\r\n\t var range = exports.getSelection();\r\n\r\n\t if (range && 'startOffset' in range && 'endOffset' in range &&\r\n\t range.startContainer && (range.startContainer == range.endContainer)) {\r\n\t return {\r\n\t startOffset: range.startOffset,\r\n\t endOffset: range.endOffset,\r\n\t container: range.startContainer.parentNode\r\n\t };\r\n\t }\r\n\r\n\t return null;\r\n\t};\r\n\r\n\t/**\r\n\t * Set selected text range in given element\r\n\t * @param {Object} params An object containing:\r\n\t * {Element} container\r\n\t * {Number} startOffset\r\n\t * {Number} endOffset\r\n\t */\r\n\texports.setSelectionOffset = function setSelectionOffset(params) {\r\n\t if (document.createRange && window.getSelection) {\r\n\t var selection = window.getSelection();\r\n\t if(selection) {\r\n\t var range = document.createRange();\r\n\r\n\t if (!params.container.firstChild) {\r\n\t params.container.appendChild(document.createTextNode(''));\r\n\t }\r\n\r\n\t // TODO: do not suppose that the first child of the container is a textnode,\r\n\t // but recursively find the textnodes\r\n\t range.setStart(params.container.firstChild, params.startOffset);\r\n\t range.setEnd(params.container.firstChild, params.endOffset);\r\n\r\n\t exports.setSelection(range);\r\n\t }\r\n\t }\r\n\t};\r\n\r\n\t/**\r\n\t * Get the inner text of an HTML element (for example a div element)\r\n\t * @param {Element} element\r\n\t * @param {Object} [buffer]\r\n\t * @return {String} innerText\r\n\t */\r\n\texports.getInnerText = function getInnerText(element, buffer) {\r\n\t var first = (buffer == undefined);\r\n\t if (first) {\r\n\t buffer = {\r\n\t 'text': '',\r\n\t 'flush': function () {\r\n\t var text = this.text;\r\n\t this.text = '';\r\n\t return text;\r\n\t },\r\n\t 'set': function (text) {\r\n\t this.text = text;\r\n\t }\r\n\t };\r\n\t }\r\n\r\n\t // text node\r\n\t if (element.nodeValue) {\r\n\t return buffer.flush() + element.nodeValue;\r\n\t }\r\n\r\n\t // divs or other HTML elements\r\n\t if (element.hasChildNodes()) {\r\n\t var childNodes = element.childNodes;\r\n\t var innerText = '';\r\n\r\n\t for (var i = 0, iMax = childNodes.length; i < iMax; i++) {\r\n\t var child = childNodes[i];\r\n\r\n\t if (child.nodeName == 'DIV' || child.nodeName == 'P') {\r\n\t var prevChild = childNodes[i - 1];\r\n\t var prevName = prevChild ? prevChild.nodeName : undefined;\r\n\t if (prevName && prevName != 'DIV' && prevName != 'P' && prevName != 'BR') {\r\n\t innerText += '\\n';\r\n\t buffer.flush();\r\n\t }\r\n\t innerText += exports.getInnerText(child, buffer);\r\n\t buffer.set('\\n');\r\n\t }\r\n\t else if (child.nodeName == 'BR') {\r\n\t innerText += buffer.flush();\r\n\t buffer.set('\\n');\r\n\t }\r\n\t else {\r\n\t innerText += exports.getInnerText(child, buffer);\r\n\t }\r\n\t }\r\n\r\n\t return innerText;\r\n\t }\r\n\t else {\r\n\t if (element.nodeName == 'P' && exports.getInternetExplorerVersion() != -1) {\r\n\t // On Internet Explorer, a

with hasChildNodes()==false is\r\n\t // rendered with a new line. Note that a

with\r\n\t // hasChildNodes()==true is rendered without a new line\r\n\t // Other browsers always ensure there is a
inside the

,\r\n\t // and if not, the

does not render a new line\r\n\t return buffer.flush();\r\n\t }\r\n\t }\r\n\r\n\t // br or unknown\r\n\t return '';\r\n\t};\r\n\r\n\t/**\r\n\t * Returns the version of Internet Explorer or a -1\r\n\t * (indicating the use of another browser).\r\n\t * Source: http://msdn.microsoft.com/en-us/library/ms537509(v=vs.85).aspx\r\n\t * @return {Number} Internet Explorer version, or -1 in case of an other browser\r\n\t */\r\n\texports.getInternetExplorerVersion = function getInternetExplorerVersion() {\r\n\t if (_ieVersion == -1) {\r\n\t var rv = -1; // Return value assumes failure.\r\n\t if (navigator.appName == 'Microsoft Internet Explorer')\r\n\t {\r\n\t var ua = navigator.userAgent;\r\n\t var re = new RegExp(\"MSIE ([0-9]{1,}[\\.0-9]{0,})\");\r\n\t if (re.exec(ua) != null) {\r\n\t rv = parseFloat( RegExp.$1 );\r\n\t }\r\n\t }\r\n\r\n\t _ieVersion = rv;\r\n\t }\r\n\r\n\t return _ieVersion;\r\n\t};\r\n\r\n\t/**\r\n\t * Test whether the current browser is Firefox\r\n\t * @returns {boolean} isFirefox\r\n\t */\r\n\texports.isFirefox = function isFirefox () {\r\n\t return (navigator.userAgent.indexOf(\"Firefox\") != -1);\r\n\t};\r\n\r\n\t/**\r\n\t * cached internet explorer version\r\n\t * @type {Number}\r\n\t * @private\r\n\t */\r\n\tvar _ieVersion = -1;\r\n\r\n\t/**\r\n\t * Add and event listener. Works for all browsers\r\n\t * @param {Element} element An html element\r\n\t * @param {string} action The action, for example \"click\",\r\n\t * without the prefix \"on\"\r\n\t * @param {function} listener The callback function to be executed\r\n\t * @param {boolean} [useCapture] false by default\r\n\t * @return {function} the created event listener\r\n\t */\r\n\texports.addEventListener = function addEventListener(element, action, listener, useCapture) {\r\n\t if (element.addEventListener) {\r\n\t if (useCapture === undefined)\r\n\t useCapture = false;\r\n\r\n\t if (action === \"mousewheel\" && exports.isFirefox()) {\r\n\t action = \"DOMMouseScroll\"; // For Firefox\r\n\t }\r\n\r\n\t element.addEventListener(action, listener, useCapture);\r\n\t return listener;\r\n\t } else if (element.attachEvent) {\r\n\t // Old IE browsers\r\n\t var f = function () {\r\n\t return listener.call(element, window.event);\r\n\t };\r\n\t element.attachEvent(\"on\" + action, f);\r\n\t return f;\r\n\t }\r\n\t};\r\n\r\n\t/**\r\n\t * Remove an event listener from an element\r\n\t * @param {Element} element An html dom element\r\n\t * @param {string} action The name of the event, for example \"mousedown\"\r\n\t * @param {function} listener The listener function\r\n\t * @param {boolean} [useCapture] false by default\r\n\t */\r\n\texports.removeEventListener = function removeEventListener(element, action, listener, useCapture) {\r\n\t if (element.removeEventListener) {\r\n\t if (useCapture === undefined)\r\n\t useCapture = false;\r\n\r\n\t if (action === \"mousewheel\" && exports.isFirefox()) {\r\n\t action = \"DOMMouseScroll\"; // For Firefox\r\n\t }\r\n\r\n\t element.removeEventListener(action, listener, useCapture);\r\n\t } else if (element.detachEvent) {\r\n\t // Old IE browsers\r\n\t element.detachEvent(\"on\" + action, listener);\r\n\t }\r\n\t};\r\n\r\n\t/**\r\n\t * Parse a JSON path like '.items[3].name' into an array\r\n\t * @param {string} jsonPath\r\n\t * @return {Array}\r\n\t */\r\n\texports.parsePath = function parsePath(jsonPath) {\r\n\t var prop, remainder;\r\n\r\n\t if (jsonPath.length === 0) {\r\n\t return [];\r\n\t }\r\n\r\n\t // find a match like '.prop'\r\n\t var match = jsonPath.match(/^\\.(\\w+)/);\r\n\t if (match) {\r\n\t prop = match[1];\r\n\t remainder = jsonPath.substr(prop.length + 1);\r\n\t }\r\n\t else if (jsonPath[0] === '[') {\r\n\t // find a match like\r\n\t var end = jsonPath.indexOf(']');\r\n\t if (end === -1) {\r\n\t throw new SyntaxError('Character ] expected in path');\r\n\t }\r\n\t if (end === 1) {\r\n\t throw new SyntaxError('Index expected after [');\r\n\t }\r\n\r\n\t var value = jsonPath.substring(1, end);\r\n\t if (value[0] === '\\'') {\r\n\t // ajv produces string prop names with single quotes, so we need\r\n\t // to reformat them into valid double-quoted JSON strings\r\n\t value = '\\\"' + value.substring(1, value.length - 1) + '\\\"';\r\n\t }\r\n\r\n\t prop = value === '*' ? value : JSON.parse(value); // parse string and number\r\n\t remainder = jsonPath.substr(end + 1);\r\n\t }\r\n\t else {\r\n\t throw new SyntaxError('Failed to parse path');\r\n\t }\r\n\r\n\t return [prop].concat(parsePath(remainder))\r\n\t};\r\n\r\n\t/**\r\n\t * Improve the error message of a JSON schema error\r\n\t * @param {Object} error\r\n\t * @return {Object} The error\r\n\t */\r\n\texports.improveSchemaError = function (error) {\r\n\t if (error.keyword === 'enum' && Array.isArray(error.schema)) {\r\n\t var enums = error.schema;\r\n\t if (enums) {\r\n\t enums = enums.map(function (value) {\r\n\t return JSON.stringify(value);\r\n\t });\r\n\r\n\t if (enums.length > 5) {\r\n\t var more = ['(' + (enums.length - 5) + ' more...)'];\r\n\t enums = enums.slice(0, 5);\r\n\t enums.push(more);\r\n\t }\r\n\t error.message = 'should be equal to one of: ' + enums.join(', ');\r\n\t }\r\n\t }\r\n\r\n\t if (error.keyword === 'additionalProperties') {\r\n\t error.message = 'should NOT have additional property: ' + error.params.additionalProperty;\r\n\t }\r\n\r\n\t return error;\r\n\t};\r\n\r\n\t/**\r\n\t * Test whether the child rect fits completely inside the parent rect.\r\n\t * @param {ClientRect} parent\r\n\t * @param {ClientRect} child\r\n\t * @param {number} margin\r\n\t */\r\n\texports.insideRect = function (parent, child, margin) {\r\n\t var _margin = margin !== undefined ? margin : 0;\r\n\t return child.left - _margin >= parent.left\r\n\t && child.right + _margin <= parent.right\r\n\t && child.top - _margin >= parent.top\r\n\t && child.bottom + _margin <= parent.bottom;\r\n\t};\r\n\r\n\t/**\r\n\t * Returns a function, that, as long as it continues to be invoked, will not\r\n\t * be triggered. The function will be called after it stops being called for\r\n\t * N milliseconds.\r\n\t *\r\n\t * Source: https://davidwalsh.name/javascript-debounce-function\r\n\t *\r\n\t * @param {function} func\r\n\t * @param {number} wait Number in milliseconds\r\n\t * @param {boolean} [immediate=false] If `immediate` is passed, trigger the\r\n\t * function on the leading edge, instead\r\n\t * of the trailing.\r\n\t * @return {function} Return the debounced function\r\n\t */\r\n\texports.debounce = function debounce(func, wait, immediate) {\r\n\t var timeout;\r\n\t return function() {\r\n\t var context = this, args = arguments;\r\n\t var later = function() {\r\n\t timeout = null;\r\n\t if (!immediate) func.apply(context, args);\r\n\t };\r\n\t var callNow = immediate && !timeout;\r\n\t clearTimeout(timeout);\r\n\t timeout = setTimeout(later, wait);\r\n\t if (callNow) func.apply(context, args);\r\n\t };\r\n\t};\r\n\r\n\t/**\r\n\t * Determines the difference between two texts.\r\n\t * Can only detect one removed or inserted block of characters.\r\n\t * @param {string} oldText\r\n\t * @param {string} newText\r\n\t * @return {{start: number, end: number}} Returns the start and end\r\n\t * of the changed part in newText.\r\n\t */\r\n\texports.textDiff = function textDiff(oldText, newText) {\r\n\t var len = newText.length;\r\n\t var start = 0;\r\n\t var oldEnd = oldText.length;\r\n\t var newEnd = newText.length;\r\n\r\n\t while (newText.charAt(start) === oldText.charAt(start)\r\n\t && start < len) {\r\n\t start++;\r\n\t }\r\n\r\n\t while (newText.charAt(newEnd - 1) === oldText.charAt(oldEnd - 1)\r\n\t && newEnd > start && oldEnd > 0) {\r\n\t newEnd--;\r\n\t oldEnd--;\r\n\t }\r\n\r\n\t return {start: start, end: newEnd};\r\n\t};\r\n\r\n\r\n/***/ },\r\n/* 55 */\r\n/***/ function(module, exports, __webpack_require__) {\r\n\r\n\t/* Jison generated parser */\r\n\tvar jsonlint = (function(){\r\n\tvar parser = {trace: function trace() { },\r\n\tyy: {},\r\n\tsymbols_: {\"error\":2,\"JSONString\":3,\"STRING\":4,\"JSONNumber\":5,\"NUMBER\":6,\"JSONNullLiteral\":7,\"NULL\":8,\"JSONBooleanLiteral\":9,\"TRUE\":10,\"FALSE\":11,\"JSONText\":12,\"JSONValue\":13,\"EOF\":14,\"JSONObject\":15,\"JSONArray\":16,\"{\":17,\"}\":18,\"JSONMemberList\":19,\"JSONMember\":20,\":\":21,\",\":22,\"[\":23,\"]\":24,\"JSONElementList\":25,\"$accept\":0,\"$end\":1},\r\n\tterminals_: {2:\"error\",4:\"STRING\",6:\"NUMBER\",8:\"NULL\",10:\"TRUE\",11:\"FALSE\",14:\"EOF\",17:\"{\",18:\"}\",21:\":\",22:\",\",23:\"[\",24:\"]\"},\r\n\tproductions_: [0,[3,1],[5,1],[7,1],[9,1],[9,1],[12,2],[13,1],[13,1],[13,1],[13,1],[13,1],[13,1],[15,2],[15,3],[20,3],[19,1],[19,3],[16,2],[16,3],[25,1],[25,3]],\r\n\tperformAction: function anonymous(yytext,yyleng,yylineno,yy,yystate,$$,_$) {\r\n\r\n\tvar $0 = $$.length - 1;\r\n\tswitch (yystate) {\r\n\tcase 1: // replace escaped characters with actual character\r\n\t this.$ = yytext.replace(/\\\\(\\\\|\")/g, \"$\"+\"1\")\r\n\t .replace(/\\\\n/g,'\\n')\r\n\t .replace(/\\\\r/g,'\\r')\r\n\t .replace(/\\\\t/g,'\\t')\r\n\t .replace(/\\\\v/g,'\\v')\r\n\t .replace(/\\\\f/g,'\\f')\r\n\t .replace(/\\\\b/g,'\\b');\r\n\t \r\n\tbreak;\r\n\tcase 2:this.$ = Number(yytext);\r\n\tbreak;\r\n\tcase 3:this.$ = null;\r\n\tbreak;\r\n\tcase 4:this.$ = true;\r\n\tbreak;\r\n\tcase 5:this.$ = false;\r\n\tbreak;\r\n\tcase 6:return this.$ = $$[$0-1];\r\n\tbreak;\r\n\tcase 13:this.$ = {};\r\n\tbreak;\r\n\tcase 14:this.$ = $$[$0-1];\r\n\tbreak;\r\n\tcase 15:this.$ = [$$[$0-2], $$[$0]];\r\n\tbreak;\r\n\tcase 16:this.$ = {}; this.$[$$[$0][0]] = $$[$0][1];\r\n\tbreak;\r\n\tcase 17:this.$ = $$[$0-2]; $$[$0-2][$$[$0][0]] = $$[$0][1];\r\n\tbreak;\r\n\tcase 18:this.$ = [];\r\n\tbreak;\r\n\tcase 19:this.$ = $$[$0-1];\r\n\tbreak;\r\n\tcase 20:this.$ = [$$[$0]];\r\n\tbreak;\r\n\tcase 21:this.$ = $$[$0-2]; $$[$0-2].push($$[$0]);\r\n\tbreak;\r\n\t}\r\n\t},\r\n\ttable: [{3:5,4:[1,12],5:6,6:[1,13],7:3,8:[1,9],9:4,10:[1,10],11:[1,11],12:1,13:2,15:7,16:8,17:[1,14],23:[1,15]},{1:[3]},{14:[1,16]},{14:[2,7],18:[2,7],22:[2,7],24:[2,7]},{14:[2,8],18:[2,8],22:[2,8],24:[2,8]},{14:[2,9],18:[2,9],22:[2,9],24:[2,9]},{14:[2,10],18:[2,10],22:[2,10],24:[2,10]},{14:[2,11],18:[2,11],22:[2,11],24:[2,11]},{14:[2,12],18:[2,12],22:[2,12],24:[2,12]},{14:[2,3],18:[2,3],22:[2,3],24:[2,3]},{14:[2,4],18:[2,4],22:[2,4],24:[2,4]},{14:[2,5],18:[2,5],22:[2,5],24:[2,5]},{14:[2,1],18:[2,1],21:[2,1],22:[2,1],24:[2,1]},{14:[2,2],18:[2,2],22:[2,2],24:[2,2]},{3:20,4:[1,12],18:[1,17],19:18,20:19},{3:5,4:[1,12],5:6,6:[1,13],7:3,8:[1,9],9:4,10:[1,10],11:[1,11],13:23,15:7,16:8,17:[1,14],23:[1,15],24:[1,21],25:22},{1:[2,6]},{14:[2,13],18:[2,13],22:[2,13],24:[2,13]},{18:[1,24],22:[1,25]},{18:[2,16],22:[2,16]},{21:[1,26]},{14:[2,18],18:[2,18],22:[2,18],24:[2,18]},{22:[1,28],24:[1,27]},{22:[2,20],24:[2,20]},{14:[2,14],18:[2,14],22:[2,14],24:[2,14]},{3:20,4:[1,12],20:29},{3:5,4:[1,12],5:6,6:[1,13],7:3,8:[1,9],9:4,10:[1,10],11:[1,11],13:30,15:7,16:8,17:[1,14],23:[1,15]},{14:[2,19],18:[2,19],22:[2,19],24:[2,19]},{3:5,4:[1,12],5:6,6:[1,13],7:3,8:[1,9],9:4,10:[1,10],11:[1,11],13:31,15:7,16:8,17:[1,14],23:[1,15]},{18:[2,17],22:[2,17]},{18:[2,15],22:[2,15]},{22:[2,21],24:[2,21]}],\r\n\tdefaultActions: {16:[2,6]},\r\n\tparseError: function parseError(str, hash) {\r\n\t throw new Error(str);\r\n\t},\r\n\tparse: function parse(input) {\r\n\t var self = this,\r\n\t stack = [0],\r\n\t vstack = [null], // semantic value stack\r\n\t lstack = [], // location stack\r\n\t table = this.table,\r\n\t yytext = '',\r\n\t yylineno = 0,\r\n\t yyleng = 0,\r\n\t recovering = 0,\r\n\t TERROR = 2,\r\n\t EOF = 1;\r\n\r\n\t //this.reductionCount = this.shiftCount = 0;\r\n\r\n\t this.lexer.setInput(input);\r\n\t this.lexer.yy = this.yy;\r\n\t this.yy.lexer = this.lexer;\r\n\t if (typeof this.lexer.yylloc == 'undefined')\r\n\t this.lexer.yylloc = {};\r\n\t var yyloc = this.lexer.yylloc;\r\n\t lstack.push(yyloc);\r\n\r\n\t if (typeof this.yy.parseError === 'function')\r\n\t this.parseError = this.yy.parseError;\r\n\r\n\t function popStack (n) {\r\n\t stack.length = stack.length - 2*n;\r\n\t vstack.length = vstack.length - n;\r\n\t lstack.length = lstack.length - n;\r\n\t }\r\n\r\n\t function lex() {\r\n\t var token;\r\n\t token = self.lexer.lex() || 1; // $end = 1\r\n\t // if token isn't its numeric value, convert\r\n\t if (typeof token !== 'number') {\r\n\t token = self.symbols_[token] || token;\r\n\t }\r\n\t return token;\r\n\t }\r\n\r\n\t var symbol, preErrorSymbol, state, action, a, r, yyval={},p,len,newState, expected;\r\n\t while (true) {\r\n\t // retreive state number from top of stack\r\n\t state = stack[stack.length-1];\r\n\r\n\t // use default actions if available\r\n\t if (this.defaultActions[state]) {\r\n\t action = this.defaultActions[state];\r\n\t } else {\r\n\t if (symbol == null)\r\n\t symbol = lex();\r\n\t // read action for current state and first input\r\n\t action = table[state] && table[state][symbol];\r\n\t }\r\n\r\n\t // handle parse error\r\n\t _handle_error:\r\n\t if (typeof action === 'undefined' || !action.length || !action[0]) {\r\n\r\n\t if (!recovering) {\r\n\t // Report error\r\n\t expected = [];\r\n\t for (p in table[state]) if (this.terminals_[p] && p > 2) {\r\n\t expected.push(\"'\"+this.terminals_[p]+\"'\");\r\n\t }\r\n\t var errStr = '';\r\n\t if (this.lexer.showPosition) {\r\n\t errStr = 'Parse error on line '+(yylineno+1)+\":\\n\"+this.lexer.showPosition()+\"\\nExpecting \"+expected.join(', ') + \", got '\" + this.terminals_[symbol]+ \"'\";\r\n\t } else {\r\n\t errStr = 'Parse error on line '+(yylineno+1)+\": Unexpected \" +\r\n\t (symbol == 1 /*EOF*/ ? \"end of input\" :\r\n\t (\"'\"+(this.terminals_[symbol] || symbol)+\"'\"));\r\n\t }\r\n\t this.parseError(errStr,\r\n\t {text: this.lexer.match, token: this.terminals_[symbol] || symbol, line: this.lexer.yylineno, loc: yyloc, expected: expected});\r\n\t }\r\n\r\n\t // just recovered from another error\r\n\t if (recovering == 3) {\r\n\t if (symbol == EOF) {\r\n\t throw new Error(errStr || 'Parsing halted.');\r\n\t }\r\n\r\n\t // discard current lookahead and grab another\r\n\t yyleng = this.lexer.yyleng;\r\n\t yytext = this.lexer.yytext;\r\n\t yylineno = this.lexer.yylineno;\r\n\t yyloc = this.lexer.yylloc;\r\n\t symbol = lex();\r\n\t }\r\n\r\n\t // try to recover from error\r\n\t while (1) {\r\n\t // check for error recovery rule in this state\r\n\t if ((TERROR.toString()) in table[state]) {\r\n\t break;\r\n\t }\r\n\t if (state == 0) {\r\n\t throw new Error(errStr || 'Parsing halted.');\r\n\t }\r\n\t popStack(1);\r\n\t state = stack[stack.length-1];\r\n\t }\r\n\r\n\t preErrorSymbol = symbol; // save the lookahead token\r\n\t symbol = TERROR; // insert generic error symbol as new lookahead\r\n\t state = stack[stack.length-1];\r\n\t action = table[state] && table[state][TERROR];\r\n\t recovering = 3; // allow 3 real symbols to be shifted before reporting a new error\r\n\t }\r\n\r\n\t // this shouldn't happen, unless resolve defaults are off\r\n\t if (action[0] instanceof Array && action.length > 1) {\r\n\t throw new Error('Parse Error: multiple actions possible at state: '+state+', token: '+symbol);\r\n\t }\r\n\r\n\t switch (action[0]) {\r\n\r\n\t case 1: // shift\r\n\t //this.shiftCount++;\r\n\r\n\t stack.push(symbol);\r\n\t vstack.push(this.lexer.yytext);\r\n\t lstack.push(this.lexer.yylloc);\r\n\t stack.push(action[1]); // push state\r\n\t symbol = null;\r\n\t if (!preErrorSymbol) { // normal execution/no error\r\n\t yyleng = this.lexer.yyleng;\r\n\t yytext = this.lexer.yytext;\r\n\t yylineno = this.lexer.yylineno;\r\n\t yyloc = this.lexer.yylloc;\r\n\t if (recovering > 0)\r\n\t recovering--;\r\n\t } else { // error just occurred, resume old lookahead f/ before error\r\n\t symbol = preErrorSymbol;\r\n\t preErrorSymbol = null;\r\n\t }\r\n\t break;\r\n\r\n\t case 2: // reduce\r\n\t //this.reductionCount++;\r\n\r\n\t len = this.productions_[action[1]][1];\r\n\r\n\t // perform semantic action\r\n\t yyval.$ = vstack[vstack.length-len]; // default to $$ = $1\r\n\t // default location, uses first token for firsts, last for lasts\r\n\t yyval._$ = {\r\n\t first_line: lstack[lstack.length-(len||1)].first_line,\r\n\t last_line: lstack[lstack.length-1].last_line,\r\n\t first_column: lstack[lstack.length-(len||1)].first_column,\r\n\t last_column: lstack[lstack.length-1].last_column\r\n\t };\r\n\t r = this.performAction.call(yyval, yytext, yyleng, yylineno, this.yy, action[1], vstack, lstack);\r\n\r\n\t if (typeof r !== 'undefined') {\r\n\t return r;\r\n\t }\r\n\r\n\t // pop off stack\r\n\t if (len) {\r\n\t stack = stack.slice(0,-1*len*2);\r\n\t vstack = vstack.slice(0, -1*len);\r\n\t lstack = lstack.slice(0, -1*len);\r\n\t }\r\n\r\n\t stack.push(this.productions_[action[1]][0]); // push nonterminal (reduce)\r\n\t vstack.push(yyval.$);\r\n\t lstack.push(yyval._$);\r\n\t // goto new state = table[STATE][NONTERMINAL]\r\n\t newState = table[stack[stack.length-2]][stack[stack.length-1]];\r\n\t stack.push(newState);\r\n\t break;\r\n\r\n\t case 3: // accept\r\n\t return true;\r\n\t }\r\n\r\n\t }\r\n\r\n\t return true;\r\n\t}};\r\n\t/* Jison generated lexer */\r\n\tvar lexer = (function(){\r\n\tvar lexer = ({EOF:1,\r\n\tparseError:function parseError(str, hash) {\r\n\t if (this.yy.parseError) {\r\n\t this.yy.parseError(str, hash);\r\n\t } else {\r\n\t throw new Error(str);\r\n\t }\r\n\t },\r\n\tsetInput:function (input) {\r\n\t this._input = input;\r\n\t this._more = this._less = this.done = false;\r\n\t this.yylineno = this.yyleng = 0;\r\n\t this.yytext = this.matched = this.match = '';\r\n\t this.conditionStack = ['INITIAL'];\r\n\t this.yylloc = {first_line:1,first_column:0,last_line:1,last_column:0};\r\n\t return this;\r\n\t },\r\n\tinput:function () {\r\n\t var ch = this._input[0];\r\n\t this.yytext+=ch;\r\n\t this.yyleng++;\r\n\t this.match+=ch;\r\n\t this.matched+=ch;\r\n\t var lines = ch.match(/\\n/);\r\n\t if (lines) this.yylineno++;\r\n\t this._input = this._input.slice(1);\r\n\t return ch;\r\n\t },\r\n\tunput:function (ch) {\r\n\t this._input = ch + this._input;\r\n\t return this;\r\n\t },\r\n\tmore:function () {\r\n\t this._more = true;\r\n\t return this;\r\n\t },\r\n\tless:function (n) {\r\n\t this._input = this.match.slice(n) + this._input;\r\n\t },\r\n\tpastInput:function () {\r\n\t var past = this.matched.substr(0, this.matched.length - this.match.length);\r\n\t return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\\n/g, \"\");\r\n\t },\r\n\tupcomingInput:function () {\r\n\t var next = this.match;\r\n\t if (next.length < 20) {\r\n\t next += this._input.substr(0, 20-next.length);\r\n\t }\r\n\t return (next.substr(0,20)+(next.length > 20 ? '...':'')).replace(/\\n/g, \"\");\r\n\t },\r\n\tshowPosition:function () {\r\n\t var pre = this.pastInput();\r\n\t var c = new Array(pre.length + 1).join(\"-\");\r\n\t return pre + this.upcomingInput() + \"\\n\" + c+\"^\";\r\n\t },\r\n\tnext:function () {\r\n\t if (this.done) {\r\n\t return this.EOF;\r\n\t }\r\n\t if (!this._input) this.done = true;\r\n\r\n\t var token,\r\n\t match,\r\n\t tempMatch,\r\n\t index,\r\n\t col,\r\n\t lines;\r\n\t if (!this._more) {\r\n\t this.yytext = '';\r\n\t this.match = '';\r\n\t }\r\n\t var rules = this._currentRules();\r\n\t for (var i=0;i < rules.length; i++) {\r\n\t tempMatch = this._input.match(this.rules[rules[i]]);\r\n\t if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\r\n\t match = tempMatch;\r\n\t index = i;\r\n\t if (!this.options.flex) break;\r\n\t }\r\n\t }\r\n\t if (match) {\r\n\t lines = match[0].match(/\\n.*/g);\r\n\t if (lines) this.yylineno += lines.length;\r\n\t this.yylloc = {first_line: this.yylloc.last_line,\r\n\t last_line: this.yylineno+1,\r\n\t first_column: this.yylloc.last_column,\r\n\t last_column: lines ? lines[lines.length-1].length-1 : this.yylloc.last_column + match[0].length}\r\n\t this.yytext += match[0];\r\n\t this.match += match[0];\r\n\t this.yyleng = this.yytext.length;\r\n\t this._more = false;\r\n\t this._input = this._input.slice(match[0].length);\r\n\t this.matched += match[0];\r\n\t token = this.performAction.call(this, this.yy, this, rules[index],this.conditionStack[this.conditionStack.length-1]);\r\n\t if (this.done && this._input) this.done = false;\r\n\t if (token) return token;\r\n\t else return;\r\n\t }\r\n\t if (this._input === \"\") {\r\n\t return this.EOF;\r\n\t } else {\r\n\t this.parseError('Lexical error on line '+(this.yylineno+1)+'. Unrecognized text.\\n'+this.showPosition(), \r\n\t {text: \"\", token: null, line: this.yylineno});\r\n\t }\r\n\t },\r\n\tlex:function lex() {\r\n\t var r = this.next();\r\n\t if (typeof r !== 'undefined') {\r\n\t return r;\r\n\t } else {\r\n\t return this.lex();\r\n\t }\r\n\t },\r\n\tbegin:function begin(condition) {\r\n\t this.conditionStack.push(condition);\r\n\t },\r\n\tpopState:function popState() {\r\n\t return this.conditionStack.pop();\r\n\t },\r\n\t_currentRules:function _currentRules() {\r\n\t return this.conditions[this.conditionStack[this.conditionStack.length-1]].rules;\r\n\t },\r\n\ttopState:function () {\r\n\t return this.conditionStack[this.conditionStack.length-2];\r\n\t },\r\n\tpushState:function begin(condition) {\r\n\t this.begin(condition);\r\n\t }});\r\n\tlexer.options = {};\r\n\tlexer.performAction = function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) {\r\n\r\n\tvar YYSTATE=YY_START\r\n\tswitch($avoiding_name_collisions) {\r\n\tcase 0:/* skip whitespace */\r\n\tbreak;\r\n\tcase 1:return 6\r\n\tbreak;\r\n\tcase 2:yy_.yytext = yy_.yytext.substr(1,yy_.yyleng-2); return 4\r\n\tbreak;\r\n\tcase 3:return 17\r\n\tbreak;\r\n\tcase 4:return 18\r\n\tbreak;\r\n\tcase 5:return 23\r\n\tbreak;\r\n\tcase 6:return 24\r\n\tbreak;\r\n\tcase 7:return 22\r\n\tbreak;\r\n\tcase 8:return 21\r\n\tbreak;\r\n\tcase 9:return 10\r\n\tbreak;\r\n\tcase 10:return 11\r\n\tbreak;\r\n\tcase 11:return 8\r\n\tbreak;\r\n\tcase 12:return 14\r\n\tbreak;\r\n\tcase 13:return 'INVALID'\r\n\tbreak;\r\n\t}\r\n\t};\r\n\tlexer.rules = [/^(?:\\s+)/,/^(?:(-?([0-9]|[1-9][0-9]+))(\\.[0-9]+)?([eE][-+]?[0-9]+)?\\b)/,/^(?:\"(?:\\\\[\\\\\"bfnrt/]|\\\\u[a-fA-F0-9]{4}|[^\\\\\\0-\\x09\\x0a-\\x1f\"])*\")/,/^(?:\\{)/,/^(?:\\})/,/^(?:\\[)/,/^(?:\\])/,/^(?:,)/,/^(?::)/,/^(?:true\\b)/,/^(?:false\\b)/,/^(?:null\\b)/,/^(?:$)/,/^(?:.)/];\r\n\tlexer.conditions = {\"INITIAL\":{\"rules\":[0,1,2,3,4,5,6,7,8,9,10,11,12,13],\"inclusive\":true}};\r\n\r\n\r\n\t;\r\n\treturn lexer;})()\r\n\tparser.lexer = lexer;\r\n\treturn parser;\r\n\t})();\r\n\tif (true) {\r\n\t exports.parser = jsonlint;\r\n\t exports.parse = jsonlint.parse.bind(jsonlint);\r\n\t}\r\n\r\n/***/ },\r\n/* 56 */\r\n/***/ function(module, exports) {\r\n\r\n\t'use strict';\r\n\r\n\t/**\r\n\t * @constructor SearchBox\r\n\t * Create a search box in given HTML container\r\n\t * @param {JSONEditor} editor The JSON Editor to attach to\r\n\t * @param {Element} container HTML container element of where to\r\n\t * create the search box\r\n\t */\r\n\tfunction SearchBox (editor, container) {\r\n\t var searchBox = this;\r\n\r\n\t this.editor = editor;\r\n\t this.timeout = undefined;\r\n\t this.delay = 200; // ms\r\n\t this.lastText = undefined;\r\n\r\n\t this.dom = {};\r\n\t this.dom.container = container;\r\n\r\n\t var table = document.createElement('table');\r\n\t this.dom.table = table;\r\n\t table.className = 'jsoneditor-search';\r\n\t container.appendChild(table);\r\n\t var tbody = document.createElement('tbody');\r\n\t this.dom.tbody = tbody;\r\n\t table.appendChild(tbody);\r\n\t var tr = document.createElement('tr');\r\n\t tbody.appendChild(tr);\r\n\r\n\t var td = document.createElement('td');\r\n\t tr.appendChild(td);\r\n\t var results = document.createElement('div');\r\n\t this.dom.results = results;\r\n\t results.className = 'jsoneditor-results';\r\n\t td.appendChild(results);\r\n\r\n\t td = document.createElement('td');\r\n\t tr.appendChild(td);\r\n\t var divInput = document.createElement('div');\r\n\t this.dom.input = divInput;\r\n\t divInput.className = 'jsoneditor-frame';\r\n\t divInput.title = 'Search fields and values';\r\n\t td.appendChild(divInput);\r\n\r\n\t // table to contain the text input and search button\r\n\t var tableInput = document.createElement('table');\r\n\t divInput.appendChild(tableInput);\r\n\t var tbodySearch = document.createElement('tbody');\r\n\t tableInput.appendChild(tbodySearch);\r\n\t tr = document.createElement('tr');\r\n\t tbodySearch.appendChild(tr);\r\n\r\n\t var refreshSearch = document.createElement('button');\r\n\t refreshSearch.type = 'button';\r\n\t refreshSearch.className = 'jsoneditor-refresh';\r\n\t td = document.createElement('td');\r\n\t td.appendChild(refreshSearch);\r\n\t tr.appendChild(td);\r\n\r\n\t var search = document.createElement('input');\r\n\t // search.type = 'button';\r\n\t this.dom.search = search;\r\n\t search.oninput = function (event) {\r\n\t searchBox._onDelayedSearch(event);\r\n\t };\r\n\t search.onchange = function (event) { // For IE 9\r\n\t searchBox._onSearch();\r\n\t };\r\n\t search.onkeydown = function (event) {\r\n\t searchBox._onKeyDown(event);\r\n\t };\r\n\t search.onkeyup = function (event) {\r\n\t searchBox._onKeyUp(event);\r\n\t };\r\n\t refreshSearch.onclick = function (event) {\r\n\t search.select();\r\n\t };\r\n\r\n\t // TODO: ESC in FF restores the last input, is a FF bug, https://bugzilla.mozilla.org/show_bug.cgi?id=598819\r\n\t td = document.createElement('td');\r\n\t td.appendChild(search);\r\n\t tr.appendChild(td);\r\n\r\n\t var searchNext = document.createElement('button');\r\n\t searchNext.type = 'button';\r\n\t searchNext.title = 'Next result (Enter)';\r\n\t searchNext.className = 'jsoneditor-next';\r\n\t searchNext.onclick = function () {\r\n\t searchBox.next();\r\n\t };\r\n\t td = document.createElement('td');\r\n\t td.appendChild(searchNext);\r\n\t tr.appendChild(td);\r\n\r\n\t var searchPrevious = document.createElement('button');\r\n\t searchPrevious.type = 'button';\r\n\t searchPrevious.title = 'Previous result (Shift+Enter)';\r\n\t searchPrevious.className = 'jsoneditor-previous';\r\n\t searchPrevious.onclick = function () {\r\n\t searchBox.previous();\r\n\t };\r\n\t td = document.createElement('td');\r\n\t td.appendChild(searchPrevious);\r\n\t tr.appendChild(td);\r\n\t}\r\n\r\n\t/**\r\n\t * Go to the next search result\r\n\t * @param {boolean} [focus] If true, focus will be set to the next result\r\n\t * focus is false by default.\r\n\t */\r\n\tSearchBox.prototype.next = function(focus) {\r\n\t if (this.results != undefined) {\r\n\t var index = (this.resultIndex != undefined) ? this.resultIndex + 1 : 0;\r\n\t if (index > this.results.length - 1) {\r\n\t index = 0;\r\n\t }\r\n\t this._setActiveResult(index, focus);\r\n\t }\r\n\t};\r\n\r\n\t/**\r\n\t * Go to the prevous search result\r\n\t * @param {boolean} [focus] If true, focus will be set to the next result\r\n\t * focus is false by default.\r\n\t */\r\n\tSearchBox.prototype.previous = function(focus) {\r\n\t if (this.results != undefined) {\r\n\t var max = this.results.length - 1;\r\n\t var index = (this.resultIndex != undefined) ? this.resultIndex - 1 : max;\r\n\t if (index < 0) {\r\n\t index = max;\r\n\t }\r\n\t this._setActiveResult(index, focus);\r\n\t }\r\n\t};\r\n\r\n\t/**\r\n\t * Set new value for the current active result\r\n\t * @param {Number} index\r\n\t * @param {boolean} [focus] If true, focus will be set to the next result.\r\n\t * focus is false by default.\r\n\t * @private\r\n\t */\r\n\tSearchBox.prototype._setActiveResult = function(index, focus) {\r\n\t // de-activate current active result\r\n\t if (this.activeResult) {\r\n\t var prevNode = this.activeResult.node;\r\n\t var prevElem = this.activeResult.elem;\r\n\t if (prevElem == 'field') {\r\n\t delete prevNode.searchFieldActive;\r\n\t }\r\n\t else {\r\n\t delete prevNode.searchValueActive;\r\n\t }\r\n\t prevNode.updateDom();\r\n\t }\r\n\r\n\t if (!this.results || !this.results[index]) {\r\n\t // out of range, set to undefined\r\n\t this.resultIndex = undefined;\r\n\t this.activeResult = undefined;\r\n\t return;\r\n\t }\r\n\r\n\t this.resultIndex = index;\r\n\r\n\t // set new node active\r\n\t var node = this.results[this.resultIndex].node;\r\n\t var elem = this.results[this.resultIndex].elem;\r\n\t if (elem == 'field') {\r\n\t node.searchFieldActive = true;\r\n\t }\r\n\t else {\r\n\t node.searchValueActive = true;\r\n\t }\r\n\t this.activeResult = this.results[this.resultIndex];\r\n\t node.updateDom();\r\n\r\n\t // TODO: not so nice that the focus is only set after the animation is finished\r\n\t node.scrollTo(function () {\r\n\t if (focus) {\r\n\t node.focus(elem);\r\n\t }\r\n\t });\r\n\t};\r\n\r\n\t/**\r\n\t * Cancel any running onDelayedSearch.\r\n\t * @private\r\n\t */\r\n\tSearchBox.prototype._clearDelay = function() {\r\n\t if (this.timeout != undefined) {\r\n\t clearTimeout(this.timeout);\r\n\t delete this.timeout;\r\n\t }\r\n\t};\r\n\r\n\t/**\r\n\t * Start a timer to execute a search after a short delay.\r\n\t * Used for reducing the number of searches while typing.\r\n\t * @param {Event} event\r\n\t * @private\r\n\t */\r\n\tSearchBox.prototype._onDelayedSearch = function (event) {\r\n\t // execute the search after a short delay (reduces the number of\r\n\t // search actions while typing in the search text box)\r\n\t this._clearDelay();\r\n\t var searchBox = this;\r\n\t this.timeout = setTimeout(function (event) {\r\n\t searchBox._onSearch();\r\n\t },\r\n\t this.delay);\r\n\t};\r\n\r\n\t/**\r\n\t * Handle onSearch event\r\n\t * @param {boolean} [forceSearch] If true, search will be executed again even\r\n\t * when the search text is not changed.\r\n\t * Default is false.\r\n\t * @private\r\n\t */\r\n\tSearchBox.prototype._onSearch = function (forceSearch) {\r\n\t this._clearDelay();\r\n\r\n\t var value = this.dom.search.value;\r\n\t var text = (value.length > 0) ? value : undefined;\r\n\t if (text != this.lastText || forceSearch) {\r\n\t // only search again when changed\r\n\t this.lastText = text;\r\n\t this.results = this.editor.search(text);\r\n\t this._setActiveResult(undefined);\r\n\r\n\t // display search results\r\n\t if (text != undefined) {\r\n\t var resultCount = this.results.length;\r\n\t switch (resultCount) {\r\n\t case 0: this.dom.results.innerHTML = 'no results'; break;\r\n\t case 1: this.dom.results.innerHTML = '1 result'; break;\r\n\t default: this.dom.results.innerHTML = resultCount + ' results'; break;\r\n\t }\r\n\t }\r\n\t else {\r\n\t this.dom.results.innerHTML = '';\r\n\t }\r\n\t }\r\n\t};\r\n\r\n\t/**\r\n\t * Handle onKeyDown event in the input box\r\n\t * @param {Event} event\r\n\t * @private\r\n\t */\r\n\tSearchBox.prototype._onKeyDown = function (event) {\r\n\t var keynum = event.which;\r\n\t if (keynum == 27) { // ESC\r\n\t this.dom.search.value = ''; // clear search\r\n\t this._onSearch();\r\n\t event.preventDefault();\r\n\t event.stopPropagation();\r\n\t }\r\n\t else if (keynum == 13) { // Enter\r\n\t if (event.ctrlKey) {\r\n\t // force to search again\r\n\t this._onSearch(true);\r\n\t }\r\n\t else if (event.shiftKey) {\r\n\t // move to the previous search result\r\n\t this.previous();\r\n\t }\r\n\t else {\r\n\t // move to the next search result\r\n\t this.next();\r\n\t }\r\n\t event.preventDefault();\r\n\t event.stopPropagation();\r\n\t }\r\n\t};\r\n\r\n\t/**\r\n\t * Handle onKeyUp event in the input box\r\n\t * @param {Event} event\r\n\t * @private\r\n\t */\r\n\tSearchBox.prototype._onKeyUp = function (event) {\r\n\t var keynum = event.keyCode;\r\n\t if (keynum != 27 && keynum != 13) { // !show and !Enter\r\n\t this._onDelayedSearch(event); // For IE 9\r\n\t }\r\n\t};\r\n\r\n\t/**\r\n\t * Clear the search results\r\n\t */\r\n\tSearchBox.prototype.clear = function () {\r\n\t this.dom.search.value = '';\r\n\t this._onSearch();\r\n\t};\r\n\r\n\t/**\r\n\t * Destroy the search box\r\n\t */\r\n\tSearchBox.prototype.destroy = function () {\r\n\t this.editor = null;\r\n\t this.dom.container.removeChild(this.dom.table);\r\n\t this.dom = null;\r\n\r\n\t this.results = null;\r\n\t this.activeResult = null;\r\n\r\n\t this._clearDelay();\r\n\r\n\t};\r\n\r\n\tmodule.exports = SearchBox;\r\n\r\n\r\n/***/ },\r\n/* 57 */\r\n/***/ function(module, exports, __webpack_require__) {\r\n\r\n\t'use strict';\r\n\r\n\tvar util = __webpack_require__(54);\r\n\r\n\t/**\r\n\t * A context menu\r\n\t * @param {Object[]} items Array containing the menu structure\r\n\t * TODO: describe structure\r\n\t * @param {Object} [options] Object with options. Available options:\r\n\t * {function} close Callback called when the\r\n\t * context menu is being closed.\r\n\t * @constructor\r\n\t */\r\n\tfunction ContextMenu (items, options) {\r\n\t this.dom = {};\r\n\r\n\t var me = this;\r\n\t var dom = this.dom;\r\n\t this.anchor = undefined;\r\n\t this.items = items;\r\n\t this.eventListeners = {};\r\n\t this.selection = undefined; // holds the selection before the menu was opened\r\n\t this.onClose = options ? options.close : undefined;\r\n\r\n\t // create root element\r\n\t var root = document.createElement('div');\r\n\t root.className = 'jsoneditor-contextmenu-root';\r\n\t dom.root = root;\r\n\r\n\t // create a container element\r\n\t var menu = document.createElement('div');\r\n\t menu.className = 'jsoneditor-contextmenu';\r\n\t dom.menu = menu;\r\n\t root.appendChild(menu);\r\n\r\n\t // create a list to hold the menu items\r\n\t var list = document.createElement('ul');\r\n\t list.className = 'jsoneditor-menu';\r\n\t menu.appendChild(list);\r\n\t dom.list = list;\r\n\t dom.items = []; // list with all buttons\r\n\r\n\t // create a (non-visible) button to set the focus to the menu\r\n\t var focusButton = document.createElement('button');\r\n\t focusButton.type = 'button';\r\n\t dom.focusButton = focusButton;\r\n\t var li = document.createElement('li');\r\n\t li.style.overflow = 'hidden';\r\n\t li.style.height = '0';\r\n\t li.appendChild(focusButton);\r\n\t list.appendChild(li);\r\n\r\n\t function createMenuItems (list, domItems, items) {\r\n\t items.forEach(function (item) {\r\n\t if (item.type == 'separator') {\r\n\t // create a separator\r\n\t var separator = document.createElement('div');\r\n\t separator.className = 'jsoneditor-separator';\r\n\t li = document.createElement('li');\r\n\t li.appendChild(separator);\r\n\t list.appendChild(li);\r\n\t }\r\n\t else {\r\n\t var domItem = {};\r\n\r\n\t // create a menu item\r\n\t var li = document.createElement('li');\r\n\t list.appendChild(li);\r\n\r\n\t // create a button in the menu item\r\n\t var button = document.createElement('button');\r\n\t button.type = 'button';\r\n\t button.className = item.className;\r\n\t domItem.button = button;\r\n\t if (item.title) {\r\n\t button.title = item.title;\r\n\t }\r\n\t if (item.click) {\r\n\t button.onclick = function (event) {\r\n\t event.preventDefault();\r\n\t me.hide();\r\n\t item.click();\r\n\t };\r\n\t }\r\n\t li.appendChild(button);\r\n\r\n\t // create the contents of the button\r\n\t if (item.submenu) {\r\n\t // add the icon to the button\r\n\t var divIcon = document.createElement('div');\r\n\t divIcon.className = 'jsoneditor-icon';\r\n\t button.appendChild(divIcon);\r\n\t button.appendChild(document.createTextNode(item.text));\r\n\r\n\t var buttonSubmenu;\r\n\t if (item.click) {\r\n\t // submenu and a button with a click handler\r\n\t button.className += ' jsoneditor-default';\r\n\r\n\t var buttonExpand = document.createElement('button');\r\n\t buttonExpand.type = 'button';\r\n\t domItem.buttonExpand = buttonExpand;\r\n\t buttonExpand.className = 'jsoneditor-expand';\r\n\t buttonExpand.innerHTML = '

';\r\n\t li.appendChild(buttonExpand);\r\n\t if (item.submenuTitle) {\r\n\t buttonExpand.title = item.submenuTitle;\r\n\t }\r\n\r\n\t buttonSubmenu = buttonExpand;\r\n\t }\r\n\t else {\r\n\t // submenu and a button without a click handler\r\n\t var divExpand = document.createElement('div');\r\n\t divExpand.className = 'jsoneditor-expand';\r\n\t button.appendChild(divExpand);\r\n\r\n\t buttonSubmenu = button;\r\n\t }\r\n\r\n\t // attach a handler to expand/collapse the submenu\r\n\t buttonSubmenu.onclick = function (event) {\r\n\t event.preventDefault();\r\n\t me._onExpandItem(domItem);\r\n\t buttonSubmenu.focus();\r\n\t };\r\n\r\n\t // create the submenu\r\n\t var domSubItems = [];\r\n\t domItem.subItems = domSubItems;\r\n\t var ul = document.createElement('ul');\r\n\t domItem.ul = ul;\r\n\t ul.className = 'jsoneditor-menu';\r\n\t ul.style.height = '0';\r\n\t li.appendChild(ul);\r\n\t createMenuItems(ul, domSubItems, item.submenu);\r\n\t }\r\n\t else {\r\n\t // no submenu, just a button with clickhandler\r\n\t button.innerHTML = '
' + item.text;\r\n\t }\r\n\r\n\t domItems.push(domItem);\r\n\t }\r\n\t });\r\n\t }\r\n\t createMenuItems(list, this.dom.items, items);\r\n\r\n\t // TODO: when the editor is small, show the submenu on the right instead of inline?\r\n\r\n\t // calculate the max height of the menu with one submenu expanded\r\n\t this.maxHeight = 0; // height in pixels\r\n\t items.forEach(function (item) {\r\n\t var height = (items.length + (item.submenu ? item.submenu.length : 0)) * 24;\r\n\t me.maxHeight = Math.max(me.maxHeight, height);\r\n\t });\r\n\t}\r\n\r\n\t/**\r\n\t * Get the currently visible buttons\r\n\t * @return {Array.} buttons\r\n\t * @private\r\n\t */\r\n\tContextMenu.prototype._getVisibleButtons = function () {\r\n\t var buttons = [];\r\n\t var me = this;\r\n\t this.dom.items.forEach(function (item) {\r\n\t buttons.push(item.button);\r\n\t if (item.buttonExpand) {\r\n\t buttons.push(item.buttonExpand);\r\n\t }\r\n\t if (item.subItems && item == me.expandedItem) {\r\n\t item.subItems.forEach(function (subItem) {\r\n\t buttons.push(subItem.button);\r\n\t if (subItem.buttonExpand) {\r\n\t buttons.push(subItem.buttonExpand);\r\n\t }\r\n\t // TODO: change to fully recursive method\r\n\t });\r\n\t }\r\n\t });\r\n\r\n\t return buttons;\r\n\t};\r\n\r\n\t// currently displayed context menu, a singleton. We may only have one visible context menu\r\n\tContextMenu.visibleMenu = undefined;\r\n\r\n\t/**\r\n\t * Attach the menu to an anchor\r\n\t * @param {HTMLElement} anchor Anchor where the menu will be attached\r\n\t * as sibling.\r\n\t * @param {HTMLElement} [contentWindow] The DIV with with the (scrollable) contents\r\n\t */\r\n\tContextMenu.prototype.show = function (anchor, contentWindow) {\r\n\t this.hide();\r\n\r\n\t // determine whether to display the menu below or above the anchor\r\n\t var showBelow = true;\r\n\t if (contentWindow) {\r\n\t var anchorRect = anchor.getBoundingClientRect();\r\n\t var contentRect = contentWindow.getBoundingClientRect();\r\n\r\n\t if (anchorRect.bottom + this.maxHeight < contentRect.bottom) {\r\n\t // fits below -> show below\r\n\t }\r\n\t else if (anchorRect.top - this.maxHeight > contentRect.top) {\r\n\t // fits above -> show above\r\n\t showBelow = false;\r\n\t }\r\n\t else {\r\n\t // doesn't fit above nor below -> show below\r\n\t }\r\n\t }\r\n\r\n\t // position the menu\r\n\t if (showBelow) {\r\n\t // display the menu below the anchor\r\n\t var anchorHeight = anchor.offsetHeight;\r\n\t this.dom.menu.style.left = '0px';\r\n\t this.dom.menu.style.top = anchorHeight + 'px';\r\n\t this.dom.menu.style.bottom = '';\r\n\t }\r\n\t else {\r\n\t // display the menu above the anchor\r\n\t this.dom.menu.style.left = '0px';\r\n\t this.dom.menu.style.top = '';\r\n\t this.dom.menu.style.bottom = '0px';\r\n\t }\r\n\r\n\t // attach the menu to the parent of the anchor\r\n\t var parent = anchor.parentNode;\r\n\t parent.insertBefore(this.dom.root, parent.firstChild);\r\n\r\n\t // create and attach event listeners\r\n\t var me = this;\r\n\t var list = this.dom.list;\r\n\t this.eventListeners.mousedown = util.addEventListener(window, 'mousedown', function (event) {\r\n\t // hide menu on click outside of the menu\r\n\t var target = event.target;\r\n\t if ((target != list) && !me._isChildOf(target, list)) {\r\n\t me.hide();\r\n\t event.stopPropagation();\r\n\t event.preventDefault();\r\n\t }\r\n\t });\r\n\t this.eventListeners.keydown = util.addEventListener(window, 'keydown', function (event) {\r\n\t me._onKeyDown(event);\r\n\t });\r\n\r\n\t // move focus to the first button in the context menu\r\n\t this.selection = util.getSelection();\r\n\t this.anchor = anchor;\r\n\t setTimeout(function () {\r\n\t me.dom.focusButton.focus();\r\n\t }, 0);\r\n\r\n\t if (ContextMenu.visibleMenu) {\r\n\t ContextMenu.visibleMenu.hide();\r\n\t }\r\n\t ContextMenu.visibleMenu = this;\r\n\t};\r\n\r\n\t/**\r\n\t * Hide the context menu if visible\r\n\t */\r\n\tContextMenu.prototype.hide = function () {\r\n\t // remove the menu from the DOM\r\n\t if (this.dom.root.parentNode) {\r\n\t this.dom.root.parentNode.removeChild(this.dom.root);\r\n\t if (this.onClose) {\r\n\t this.onClose();\r\n\t }\r\n\t }\r\n\r\n\t // remove all event listeners\r\n\t // all event listeners are supposed to be attached to document.\r\n\t for (var name in this.eventListeners) {\r\n\t if (this.eventListeners.hasOwnProperty(name)) {\r\n\t var fn = this.eventListeners[name];\r\n\t if (fn) {\r\n\t util.removeEventListener(window, name, fn);\r\n\t }\r\n\t delete this.eventListeners[name];\r\n\t }\r\n\t }\r\n\r\n\t if (ContextMenu.visibleMenu == this) {\r\n\t ContextMenu.visibleMenu = undefined;\r\n\t }\r\n\t};\r\n\r\n\t/**\r\n\t * Expand a submenu\r\n\t * Any currently expanded submenu will be hided.\r\n\t * @param {Object} domItem\r\n\t * @private\r\n\t */\r\n\tContextMenu.prototype._onExpandItem = function (domItem) {\r\n\t var me = this;\r\n\t var alreadyVisible = (domItem == this.expandedItem);\r\n\r\n\t // hide the currently visible submenu\r\n\t var expandedItem = this.expandedItem;\r\n\t if (expandedItem) {\r\n\t //var ul = expandedItem.ul;\r\n\t expandedItem.ul.style.height = '0';\r\n\t expandedItem.ul.style.padding = '';\r\n\t setTimeout(function () {\r\n\t if (me.expandedItem != expandedItem) {\r\n\t expandedItem.ul.style.display = '';\r\n\t util.removeClassName(expandedItem.ul.parentNode, 'jsoneditor-selected');\r\n\t }\r\n\t }, 300); // timeout duration must match the css transition duration\r\n\t this.expandedItem = undefined;\r\n\t }\r\n\r\n\t if (!alreadyVisible) {\r\n\t var ul = domItem.ul;\r\n\t ul.style.display = 'block';\r\n\t var height = ul.clientHeight; // force a reflow in Firefox\r\n\t setTimeout(function () {\r\n\t if (me.expandedItem == domItem) {\r\n\t ul.style.height = (ul.childNodes.length * 24) + 'px';\r\n\t ul.style.padding = '5px 10px';\r\n\t }\r\n\t }, 0);\r\n\t util.addClassName(ul.parentNode, 'jsoneditor-selected');\r\n\t this.expandedItem = domItem;\r\n\t }\r\n\t};\r\n\r\n\t/**\r\n\t * Handle onkeydown event\r\n\t * @param {Event} event\r\n\t * @private\r\n\t */\r\n\tContextMenu.prototype._onKeyDown = function (event) {\r\n\t var target = event.target;\r\n\t var keynum = event.which;\r\n\t var handled = false;\r\n\t var buttons, targetIndex, prevButton, nextButton;\r\n\r\n\t if (keynum == 27) { // ESC\r\n\t // hide the menu on ESC key\r\n\r\n\t // restore previous selection and focus\r\n\t if (this.selection) {\r\n\t util.setSelection(this.selection);\r\n\t }\r\n\t if (this.anchor) {\r\n\t this.anchor.focus();\r\n\t }\r\n\r\n\t this.hide();\r\n\r\n\t handled = true;\r\n\t }\r\n\t else if (keynum == 9) { // Tab\r\n\t if (!event.shiftKey) { // Tab\r\n\t buttons = this._getVisibleButtons();\r\n\t targetIndex = buttons.indexOf(target);\r\n\t if (targetIndex == buttons.length - 1) {\r\n\t // move to first button\r\n\t buttons[0].focus();\r\n\t handled = true;\r\n\t }\r\n\t }\r\n\t else { // Shift+Tab\r\n\t buttons = this._getVisibleButtons();\r\n\t targetIndex = buttons.indexOf(target);\r\n\t if (targetIndex == 0) {\r\n\t // move to last button\r\n\t buttons[buttons.length - 1].focus();\r\n\t handled = true;\r\n\t }\r\n\t }\r\n\t }\r\n\t else if (keynum == 37) { // Arrow Left\r\n\t if (target.className == 'jsoneditor-expand') {\r\n\t buttons = this._getVisibleButtons();\r\n\t targetIndex = buttons.indexOf(target);\r\n\t prevButton = buttons[targetIndex - 1];\r\n\t if (prevButton) {\r\n\t prevButton.focus();\r\n\t }\r\n\t }\r\n\t handled = true;\r\n\t }\r\n\t else if (keynum == 38) { // Arrow Up\r\n\t buttons = this._getVisibleButtons();\r\n\t targetIndex = buttons.indexOf(target);\r\n\t prevButton = buttons[targetIndex - 1];\r\n\t if (prevButton && prevButton.className == 'jsoneditor-expand') {\r\n\t // skip expand button\r\n\t prevButton = buttons[targetIndex - 2];\r\n\t }\r\n\t if (!prevButton) {\r\n\t // move to last button\r\n\t prevButton = buttons[buttons.length - 1];\r\n\t }\r\n\t if (prevButton) {\r\n\t prevButton.focus();\r\n\t }\r\n\t handled = true;\r\n\t }\r\n\t else if (keynum == 39) { // Arrow Right\r\n\t buttons = this._getVisibleButtons();\r\n\t targetIndex = buttons.indexOf(target);\r\n\t nextButton = buttons[targetIndex + 1];\r\n\t if (nextButton && nextButton.className == 'jsoneditor-expand') {\r\n\t nextButton.focus();\r\n\t }\r\n\t handled = true;\r\n\t }\r\n\t else if (keynum == 40) { // Arrow Down\r\n\t buttons = this._getVisibleButtons();\r\n\t targetIndex = buttons.indexOf(target);\r\n\t nextButton = buttons[targetIndex + 1];\r\n\t if (nextButton && nextButton.className == 'jsoneditor-expand') {\r\n\t // skip expand button\r\n\t nextButton = buttons[targetIndex + 2];\r\n\t }\r\n\t if (!nextButton) {\r\n\t // move to first button\r\n\t nextButton = buttons[0];\r\n\t }\r\n\t if (nextButton) {\r\n\t nextButton.focus();\r\n\t handled = true;\r\n\t }\r\n\t handled = true;\r\n\t }\r\n\t // TODO: arrow left and right\r\n\r\n\t if (handled) {\r\n\t event.stopPropagation();\r\n\t event.preventDefault();\r\n\t }\r\n\t};\r\n\r\n\t/**\r\n\t * Test if an element is a child of a parent element.\r\n\t * @param {Element} child\r\n\t * @param {Element} parent\r\n\t * @return {boolean} isChild\r\n\t */\r\n\tContextMenu.prototype._isChildOf = function (child, parent) {\r\n\t var e = child.parentNode;\r\n\t while (e) {\r\n\t if (e == parent) {\r\n\t return true;\r\n\t }\r\n\t e = e.parentNode;\r\n\t }\r\n\r\n\t return false;\r\n\t};\r\n\r\n\tmodule.exports = ContextMenu;\r\n\r\n\r\n/***/ },\r\n/* 58 */\r\n/***/ function(module, exports, __webpack_require__) {\r\n\r\n\t'use strict';\r\n\r\n\tvar naturalSort = __webpack_require__(59);\r\n\tvar ContextMenu = __webpack_require__(57);\r\n\tvar appendNodeFactory = __webpack_require__(60);\r\n\tvar util = __webpack_require__(54);\r\n\r\n\t/**\r\n\t * @constructor Node\r\n\t * Create a new Node\r\n\t * @param {./treemode} editor\r\n\t * @param {Object} [params] Can contain parameters:\r\n\t * {string} field\r\n\t * {boolean} fieldEditable\r\n\t * {*} value\r\n\t * {String} type Can have values 'auto', 'array',\r\n\t * 'object', or 'string'.\r\n\t */\r\n\tfunction Node (editor, params) {\r\n\t /** @type {./treemode} */\r\n\t this.editor = editor;\r\n\t this.dom = {};\r\n\t this.expanded = false;\r\n\r\n\t if(params && (params instanceof Object)) {\r\n\t this.setField(params.field, params.fieldEditable);\r\n\t this.setValue(params.value, params.type);\r\n\t }\r\n\t else {\r\n\t this.setField('');\r\n\t this.setValue(null);\r\n\t }\r\n\r\n\t this._debouncedOnChangeValue = util.debounce(this._onChangeValue.bind(this), Node.prototype.DEBOUNCE_INTERVAL);\r\n\t this._debouncedOnChangeField = util.debounce(this._onChangeField.bind(this), Node.prototype.DEBOUNCE_INTERVAL);\r\n\t}\r\n\r\n\t// debounce interval for keyboard input in milliseconds\r\n\tNode.prototype.DEBOUNCE_INTERVAL = 150;\r\n\r\n\t/**\r\n\t * Determine whether the field and/or value of this node are editable\r\n\t * @private\r\n\t */\r\n\tNode.prototype._updateEditability = function () {\r\n\t this.editable = {\r\n\t field: true,\r\n\t value: true\r\n\t };\r\n\r\n\t if (this.editor) {\r\n\t this.editable.field = this.editor.options.mode === 'tree';\r\n\t this.editable.value = this.editor.options.mode !== 'view';\r\n\r\n\t if ((this.editor.options.mode === 'tree' || this.editor.options.mode === 'form') &&\r\n\t (typeof this.editor.options.onEditable === 'function')) {\r\n\t var editable = this.editor.options.onEditable({\r\n\t field: this.field,\r\n\t value: this.value,\r\n\t path: this.getPath()\r\n\t });\r\n\r\n\t if (typeof editable === 'boolean') {\r\n\t this.editable.field = editable;\r\n\t this.editable.value = editable;\r\n\t }\r\n\t else {\r\n\t if (typeof editable.field === 'boolean') this.editable.field = editable.field;\r\n\t if (typeof editable.value === 'boolean') this.editable.value = editable.value;\r\n\t }\r\n\t }\r\n\t }\r\n\t};\r\n\r\n\t/**\r\n\t * Get the path of this node\r\n\t * @return {String[]} Array containing the path to this node\r\n\t */\r\n\tNode.prototype.getPath = function () {\r\n\t var node = this;\r\n\t var path = [];\r\n\t while (node) {\r\n\t var field = !node.parent\r\n\t ? undefined // do not add an (optional) field name of the root node\r\n\t : (node.parent.type != 'array')\r\n\t ? node.field\r\n\t : node.index;\r\n\r\n\t if (field !== undefined) {\r\n\t path.unshift(field);\r\n\t }\r\n\t node = node.parent;\r\n\t }\r\n\t return path;\r\n\t};\r\n\r\n\t/**\r\n\t * Find a Node from a JSON path like '.items[3].name'\r\n\t * @param {string} jsonPath\r\n\t * @return {Node | null} Returns the Node when found, returns null if not found\r\n\t */\r\n\tNode.prototype.findNode = function (jsonPath) {\r\n\t var path = util.parsePath(jsonPath);\r\n\t var node = this;\r\n\t while (node && path.length > 0) {\r\n\t var prop = path.shift();\r\n\t if (typeof prop === 'number') {\r\n\t if (node.type !== 'array') {\r\n\t throw new Error('Cannot get child node at index ' + prop + ': node is no array');\r\n\t }\r\n\t node = node.childs[prop];\r\n\t }\r\n\t else { // string\r\n\t if (node.type !== 'object') {\r\n\t throw new Error('Cannot get child node ' + prop + ': node is no object');\r\n\t }\r\n\t node = node.childs.filter(function (child) {\r\n\t return child.field === prop;\r\n\t })[0];\r\n\t }\r\n\t }\r\n\r\n\t return node;\r\n\t};\r\n\r\n\t/**\r\n\t * Find all parents of this node. The parents are ordered from root node towards\r\n\t * the original node.\r\n\t * @return {Array.}\r\n\t */\r\n\tNode.prototype.findParents = function () {\r\n\t var parents = [];\r\n\t var parent = this.parent;\r\n\t while (parent) {\r\n\t parents.unshift(parent);\r\n\t parent = parent.parent;\r\n\t }\r\n\t return parents;\r\n\t};\r\n\r\n\t/**\r\n\t *\r\n\t * @param {{dataPath: string, keyword: string, message: string, params: Object, schemaPath: string} | null} error\r\n\t * @param {Node} [child] When this is the error of a parent node, pointing\r\n\t * to an invalid child node, the child node itself\r\n\t * can be provided. If provided, clicking the error\r\n\t * icon will set focus to the invalid child node.\r\n\t */\r\n\tNode.prototype.setError = function (error, child) {\r\n\t // ensure the dom exists\r\n\t this.getDom();\r\n\r\n\t this.error = error;\r\n\t var tdError = this.dom.tdError;\r\n\t if (error) {\r\n\t if (!tdError) {\r\n\t tdError = document.createElement('td');\r\n\t this.dom.tdError = tdError;\r\n\t this.dom.tdValue.parentNode.appendChild(tdError);\r\n\t }\r\n\r\n\t var popover = document.createElement('div');\r\n\t popover.className = 'jsoneditor-popover jsoneditor-right';\r\n\t popover.appendChild(document.createTextNode(error.message));\r\n\r\n\t var button = document.createElement('button');\r\n\t button.type = 'button';\r\n\t button.className = 'jsoneditor-schema-error';\r\n\t button.appendChild(popover);\r\n\r\n\t // update the direction of the popover\r\n\t button.onmouseover = button.onfocus = function updateDirection() {\r\n\t var directions = ['right', 'above', 'below', 'left'];\r\n\t for (var i = 0; i < directions.length; i++) {\r\n\t var direction = directions[i];\r\n\t popover.className = 'jsoneditor-popover jsoneditor-' + direction;\r\n\r\n\t var contentRect = this.editor.content.getBoundingClientRect();\r\n\t var popoverRect = popover.getBoundingClientRect();\r\n\t var margin = 20; // account for a scroll bar\r\n\t var fit = util.insideRect(contentRect, popoverRect, margin);\r\n\r\n\t if (fit) {\r\n\t break;\r\n\t }\r\n\t }\r\n\t }.bind(this);\r\n\r\n\t // when clicking the error icon, expand all nodes towards the invalid\r\n\t // child node, and set focus to the child node\r\n\t if (child) {\r\n\t button.onclick = function showInvalidNode() {\r\n\t child.findParents().forEach(function (parent) {\r\n\t parent.expand(false);\r\n\t });\r\n\r\n\t child.scrollTo(function () {\r\n\t child.focus();\r\n\t });\r\n\t };\r\n\t }\r\n\r\n\t // apply the error message to the node\r\n\t while (tdError.firstChild) {\r\n\t tdError.removeChild(tdError.firstChild);\r\n\t }\r\n\t tdError.appendChild(button);\r\n\t }\r\n\t else {\r\n\t if (tdError) {\r\n\t this.dom.tdError.parentNode.removeChild(this.dom.tdError);\r\n\t delete this.dom.tdError;\r\n\t }\r\n\t }\r\n\t};\r\n\r\n\t/**\r\n\t * Get the index of this node: the index in the list of childs where this\r\n\t * node is part of\r\n\t * @return {number} Returns the index, or -1 if this is the root node\r\n\t */\r\n\tNode.prototype.getIndex = function () {\r\n\t return this.parent ? this.parent.childs.indexOf(this) : -1;\r\n\t};\r\n\r\n\t/**\r\n\t * Set parent node\r\n\t * @param {Node} parent\r\n\t */\r\n\tNode.prototype.setParent = function(parent) {\r\n\t this.parent = parent;\r\n\t};\r\n\r\n\t/**\r\n\t * Set field\r\n\t * @param {String} field\r\n\t * @param {boolean} [fieldEditable]\r\n\t */\r\n\tNode.prototype.setField = function(field, fieldEditable) {\r\n\t this.field = field;\r\n\t this.previousField = field;\r\n\t this.fieldEditable = (fieldEditable === true);\r\n\t};\r\n\r\n\t/**\r\n\t * Get field\r\n\t * @return {String}\r\n\t */\r\n\tNode.prototype.getField = function() {\r\n\t if (this.field === undefined) {\r\n\t this._getDomField();\r\n\t }\r\n\r\n\t return this.field;\r\n\t};\r\n\r\n\t/**\r\n\t * Set value. Value is a JSON structure or an element String, Boolean, etc.\r\n\t * @param {*} value\r\n\t * @param {String} [type] Specify the type of the value. Can be 'auto',\r\n\t * 'array', 'object', or 'string'\r\n\t */\r\n\tNode.prototype.setValue = function(value, type) {\r\n\t var childValue, child;\r\n\r\n\t // first clear all current childs (if any)\r\n\t var childs = this.childs;\r\n\t if (childs) {\r\n\t while (childs.length) {\r\n\t this.removeChild(childs[0]);\r\n\t }\r\n\t }\r\n\r\n\t // TODO: remove the DOM of this Node\r\n\r\n\t this.type = this._getType(value);\r\n\r\n\t // check if type corresponds with the provided type\r\n\t if (type && type != this.type) {\r\n\t if (type == 'string' && this.type == 'auto') {\r\n\t this.type = type;\r\n\t }\r\n\t else {\r\n\t throw new Error('Type mismatch: ' +\r\n\t 'cannot cast value of type \"' + this.type +\r\n\t ' to the specified type \"' + type + '\"');\r\n\t }\r\n\t }\r\n\r\n\t if (this.type == 'array') {\r\n\t // array\r\n\t this.childs = [];\r\n\t for (var i = 0, iMax = value.length; i < iMax; i++) {\r\n\t childValue = value[i];\r\n\t if (childValue !== undefined && !(childValue instanceof Function)) {\r\n\t // ignore undefined and functions\r\n\t child = new Node(this.editor, {\r\n\t value: childValue\r\n\t });\r\n\t this.appendChild(child);\r\n\t }\r\n\t }\r\n\t this.value = '';\r\n\t }\r\n\t else if (this.type == 'object') {\r\n\t // object\r\n\t this.childs = [];\r\n\t for (var childField in value) {\r\n\t if (value.hasOwnProperty(childField)) {\r\n\t childValue = value[childField];\r\n\t if (childValue !== undefined && !(childValue instanceof Function)) {\r\n\t // ignore undefined and functions\r\n\t child = new Node(this.editor, {\r\n\t field: childField,\r\n\t value: childValue\r\n\t });\r\n\t this.appendChild(child);\r\n\t }\r\n\t }\r\n\t }\r\n\t this.value = '';\r\n\r\n\t // sort object keys\r\n\t if (this.editor.options.sortObjectKeys === true) {\r\n\t this.sort('asc');\r\n\t }\r\n\t }\r\n\t else {\r\n\t // value\r\n\t this.childs = undefined;\r\n\t this.value = value;\r\n\t }\r\n\r\n\t this.previousValue = this.value;\r\n\t};\r\n\r\n\t/**\r\n\t * Get value. Value is a JSON structure\r\n\t * @return {*} value\r\n\t */\r\n\tNode.prototype.getValue = function() {\r\n\t //var childs, i, iMax;\r\n\r\n\t if (this.type == 'array') {\r\n\t var arr = [];\r\n\t this.childs.forEach (function (child) {\r\n\t arr.push(child.getValue());\r\n\t });\r\n\t return arr;\r\n\t }\r\n\t else if (this.type == 'object') {\r\n\t var obj = {};\r\n\t this.childs.forEach (function (child) {\r\n\t obj[child.getField()] = child.getValue();\r\n\t });\r\n\t return obj;\r\n\t }\r\n\t else {\r\n\t if (this.value === undefined) {\r\n\t this._getDomValue();\r\n\t }\r\n\r\n\t return this.value;\r\n\t }\r\n\t};\r\n\r\n\t/**\r\n\t * Get the nesting level of this node\r\n\t * @return {Number} level\r\n\t */\r\n\tNode.prototype.getLevel = function() {\r\n\t return (this.parent ? this.parent.getLevel() + 1 : 0);\r\n\t};\r\n\r\n\t/**\r\n\t * Get path of the root node till the current node\r\n\t * @return {Node[]} Returns an array with nodes\r\n\t */\r\n\tNode.prototype.getNodePath = function() {\r\n\t var path = this.parent ? this.parent.getNodePath() : [];\r\n\t path.push(this);\r\n\t return path;\r\n\t};\r\n\r\n\t/**\r\n\t * Create a clone of a node\r\n\t * The complete state of a clone is copied, including whether it is expanded or\r\n\t * not. The DOM elements are not cloned.\r\n\t * @return {Node} clone\r\n\t */\r\n\tNode.prototype.clone = function() {\r\n\t var clone = new Node(this.editor);\r\n\t clone.type = this.type;\r\n\t clone.field = this.field;\r\n\t clone.fieldInnerText = this.fieldInnerText;\r\n\t clone.fieldEditable = this.fieldEditable;\r\n\t clone.value = this.value;\r\n\t clone.valueInnerText = this.valueInnerText;\r\n\t clone.expanded = this.expanded;\r\n\r\n\t if (this.childs) {\r\n\t // an object or array\r\n\t var cloneChilds = [];\r\n\t this.childs.forEach(function (child) {\r\n\t var childClone = child.clone();\r\n\t childClone.setParent(clone);\r\n\t cloneChilds.push(childClone);\r\n\t });\r\n\t clone.childs = cloneChilds;\r\n\t }\r\n\t else {\r\n\t // a value\r\n\t clone.childs = undefined;\r\n\t }\r\n\r\n\t return clone;\r\n\t};\r\n\r\n\t/**\r\n\t * Expand this node and optionally its childs.\r\n\t * @param {boolean} [recurse] Optional recursion, true by default. When\r\n\t * true, all childs will be expanded recursively\r\n\t */\r\n\tNode.prototype.expand = function(recurse) {\r\n\t if (!this.childs) {\r\n\t return;\r\n\t }\r\n\r\n\t // set this node expanded\r\n\t this.expanded = true;\r\n\t if (this.dom.expand) {\r\n\t this.dom.expand.className = 'jsoneditor-expanded';\r\n\t }\r\n\r\n\t this.showChilds();\r\n\r\n\t if (recurse !== false) {\r\n\t this.childs.forEach(function (child) {\r\n\t child.expand(recurse);\r\n\t });\r\n\t }\r\n\t};\r\n\r\n\t/**\r\n\t * Collapse this node and optionally its childs.\r\n\t * @param {boolean} [recurse] Optional recursion, true by default. When\r\n\t * true, all childs will be collapsed recursively\r\n\t */\r\n\tNode.prototype.collapse = function(recurse) {\r\n\t if (!this.childs) {\r\n\t return;\r\n\t }\r\n\r\n\t this.hideChilds();\r\n\r\n\t // collapse childs in case of recurse\r\n\t if (recurse !== false) {\r\n\t this.childs.forEach(function (child) {\r\n\t child.collapse(recurse);\r\n\t });\r\n\r\n\t }\r\n\r\n\t // make this node collapsed\r\n\t if (this.dom.expand) {\r\n\t this.dom.expand.className = 'jsoneditor-collapsed';\r\n\t }\r\n\t this.expanded = false;\r\n\t};\r\n\r\n\t/**\r\n\t * Recursively show all childs when they are expanded\r\n\t */\r\n\tNode.prototype.showChilds = function() {\r\n\t var childs = this.childs;\r\n\t if (!childs) {\r\n\t return;\r\n\t }\r\n\t if (!this.expanded) {\r\n\t return;\r\n\t }\r\n\r\n\t var tr = this.dom.tr;\r\n\t var table = tr ? tr.parentNode : undefined;\r\n\t if (table) {\r\n\t // show row with append button\r\n\t var append = this.getAppend();\r\n\t var nextTr = tr.nextSibling;\r\n\t if (nextTr) {\r\n\t table.insertBefore(append, nextTr);\r\n\t }\r\n\t else {\r\n\t table.appendChild(append);\r\n\t }\r\n\r\n\t // show childs\r\n\t this.childs.forEach(function (child) {\r\n\t table.insertBefore(child.getDom(), append);\r\n\t child.showChilds();\r\n\t });\r\n\t }\r\n\t};\r\n\r\n\t/**\r\n\t * Hide the node with all its childs\r\n\t */\r\n\tNode.prototype.hide = function() {\r\n\t var tr = this.dom.tr;\r\n\t var table = tr ? tr.parentNode : undefined;\r\n\t if (table) {\r\n\t table.removeChild(tr);\r\n\t }\r\n\t this.hideChilds();\r\n\t};\r\n\r\n\r\n\t/**\r\n\t * Recursively hide all childs\r\n\t */\r\n\tNode.prototype.hideChilds = function() {\r\n\t var childs = this.childs;\r\n\t if (!childs) {\r\n\t return;\r\n\t }\r\n\t if (!this.expanded) {\r\n\t return;\r\n\t }\r\n\r\n\t // hide append row\r\n\t var append = this.getAppend();\r\n\t if (append.parentNode) {\r\n\t append.parentNode.removeChild(append);\r\n\t }\r\n\r\n\t // hide childs\r\n\t this.childs.forEach(function (child) {\r\n\t child.hide();\r\n\t });\r\n\t};\r\n\r\n\r\n\t/**\r\n\t * Add a new child to the node.\r\n\t * Only applicable when Node value is of type array or object\r\n\t * @param {Node} node\r\n\t */\r\n\tNode.prototype.appendChild = function(node) {\r\n\t if (this._hasChilds()) {\r\n\t // adjust the link to the parent\r\n\t node.setParent(this);\r\n\t node.fieldEditable = (this.type == 'object');\r\n\t if (this.type == 'array') {\r\n\t node.index = this.childs.length;\r\n\t }\r\n\t this.childs.push(node);\r\n\r\n\t if (this.expanded) {\r\n\t // insert into the DOM, before the appendRow\r\n\t var newTr = node.getDom();\r\n\t var appendTr = this.getAppend();\r\n\t var table = appendTr ? appendTr.parentNode : undefined;\r\n\t if (appendTr && table) {\r\n\t table.insertBefore(newTr, appendTr);\r\n\t }\r\n\r\n\t node.showChilds();\r\n\t }\r\n\r\n\t this.updateDom({'updateIndexes': true});\r\n\t node.updateDom({'recurse': true});\r\n\t }\r\n\t};\r\n\r\n\r\n\t/**\r\n\t * Move a node from its current parent to this node\r\n\t * Only applicable when Node value is of type array or object\r\n\t * @param {Node} node\r\n\t * @param {Node} beforeNode\r\n\t */\r\n\tNode.prototype.moveBefore = function(node, beforeNode) {\r\n\t if (this._hasChilds()) {\r\n\t // create a temporary row, to prevent the scroll position from jumping\r\n\t // when removing the node\r\n\t var tbody = (this.dom.tr) ? this.dom.tr.parentNode : undefined;\r\n\t if (tbody) {\r\n\t var trTemp = document.createElement('tr');\r\n\t trTemp.style.height = tbody.clientHeight + 'px';\r\n\t tbody.appendChild(trTemp);\r\n\t }\r\n\r\n\t if (node.parent) {\r\n\t node.parent.removeChild(node);\r\n\t }\r\n\r\n\t if (beforeNode instanceof AppendNode) {\r\n\t this.appendChild(node);\r\n\t }\r\n\t else {\r\n\t this.insertBefore(node, beforeNode);\r\n\t }\r\n\r\n\t if (tbody) {\r\n\t tbody.removeChild(trTemp);\r\n\t }\r\n\t }\r\n\t};\r\n\r\n\t/**\r\n\t * Move a node from its current parent to this node\r\n\t * Only applicable when Node value is of type array or object.\r\n\t * If index is out of range, the node will be appended to the end\r\n\t * @param {Node} node\r\n\t * @param {Number} index\r\n\t */\r\n\tNode.prototype.moveTo = function (node, index) {\r\n\t if (node.parent == this) {\r\n\t // same parent\r\n\t var currentIndex = this.childs.indexOf(node);\r\n\t if (currentIndex < index) {\r\n\t // compensate the index for removal of the node itself\r\n\t index++;\r\n\t }\r\n\t }\r\n\r\n\t var beforeNode = this.childs[index] || this.append;\r\n\t this.moveBefore(node, beforeNode);\r\n\t};\r\n\r\n\t/**\r\n\t * Insert a new child before a given node\r\n\t * Only applicable when Node value is of type array or object\r\n\t * @param {Node} node\r\n\t * @param {Node} beforeNode\r\n\t */\r\n\tNode.prototype.insertBefore = function(node, beforeNode) {\r\n\t if (this._hasChilds()) {\r\n\t if (beforeNode == this.append) {\r\n\t // append to the child nodes\r\n\r\n\t // adjust the link to the parent\r\n\t node.setParent(this);\r\n\t node.fieldEditable = (this.type == 'object');\r\n\t this.childs.push(node);\r\n\t }\r\n\t else {\r\n\t // insert before a child node\r\n\t var index = this.childs.indexOf(beforeNode);\r\n\t if (index == -1) {\r\n\t throw new Error('Node not found');\r\n\t }\r\n\r\n\t // adjust the link to the parent\r\n\t node.setParent(this);\r\n\t node.fieldEditable = (this.type == 'object');\r\n\t this.childs.splice(index, 0, node);\r\n\t }\r\n\r\n\t if (this.expanded) {\r\n\t // insert into the DOM\r\n\t var newTr = node.getDom();\r\n\t var nextTr = beforeNode.getDom();\r\n\t var table = nextTr ? nextTr.parentNode : undefined;\r\n\t if (nextTr && table) {\r\n\t table.insertBefore(newTr, nextTr);\r\n\t }\r\n\r\n\t node.showChilds();\r\n\t }\r\n\r\n\t this.updateDom({'updateIndexes': true});\r\n\t node.updateDom({'recurse': true});\r\n\t }\r\n\t};\r\n\r\n\t/**\r\n\t * Insert a new child before a given node\r\n\t * Only applicable when Node value is of type array or object\r\n\t * @param {Node} node\r\n\t * @param {Node} afterNode\r\n\t */\r\n\tNode.prototype.insertAfter = function(node, afterNode) {\r\n\t if (this._hasChilds()) {\r\n\t var index = this.childs.indexOf(afterNode);\r\n\t var beforeNode = this.childs[index + 1];\r\n\t if (beforeNode) {\r\n\t this.insertBefore(node, beforeNode);\r\n\t }\r\n\t else {\r\n\t this.appendChild(node);\r\n\t }\r\n\t }\r\n\t};\r\n\r\n\t/**\r\n\t * Search in this node\r\n\t * The node will be expanded when the text is found one of its childs, else\r\n\t * it will be collapsed. Searches are case insensitive.\r\n\t * @param {String} text\r\n\t * @return {Node[]} results Array with nodes containing the search text\r\n\t */\r\n\tNode.prototype.search = function(text) {\r\n\t var results = [];\r\n\t var index;\r\n\t var search = text ? text.toLowerCase() : undefined;\r\n\r\n\t // delete old search data\r\n\t delete this.searchField;\r\n\t delete this.searchValue;\r\n\r\n\t // search in field\r\n\t if (this.field != undefined) {\r\n\t var field = String(this.field).toLowerCase();\r\n\t index = field.indexOf(search);\r\n\t if (index != -1) {\r\n\t this.searchField = true;\r\n\t results.push({\r\n\t 'node': this,\r\n\t 'elem': 'field'\r\n\t });\r\n\t }\r\n\r\n\t // update dom\r\n\t this._updateDomField();\r\n\t }\r\n\r\n\t // search in value\r\n\t if (this._hasChilds()) {\r\n\t // array, object\r\n\r\n\t // search the nodes childs\r\n\t if (this.childs) {\r\n\t var childResults = [];\r\n\t this.childs.forEach(function (child) {\r\n\t childResults = childResults.concat(child.search(text));\r\n\t });\r\n\t results = results.concat(childResults);\r\n\t }\r\n\r\n\t // update dom\r\n\t if (search != undefined) {\r\n\t var recurse = false;\r\n\t if (childResults.length == 0) {\r\n\t this.collapse(recurse);\r\n\t }\r\n\t else {\r\n\t this.expand(recurse);\r\n\t }\r\n\t }\r\n\t }\r\n\t else {\r\n\t // string, auto\r\n\t if (this.value != undefined ) {\r\n\t var value = String(this.value).toLowerCase();\r\n\t index = value.indexOf(search);\r\n\t if (index != -1) {\r\n\t this.searchValue = true;\r\n\t results.push({\r\n\t 'node': this,\r\n\t 'elem': 'value'\r\n\t });\r\n\t }\r\n\t }\r\n\r\n\t // update dom\r\n\t this._updateDomValue();\r\n\t }\r\n\r\n\t return results;\r\n\t};\r\n\r\n\t/**\r\n\t * Move the scroll position such that this node is in the visible area.\r\n\t * The node will not get the focus\r\n\t * @param {function(boolean)} [callback]\r\n\t */\r\n\tNode.prototype.scrollTo = function(callback) {\r\n\t if (!this.dom.tr || !this.dom.tr.parentNode) {\r\n\t // if the node is not visible, expand its parents\r\n\t var parent = this.parent;\r\n\t var recurse = false;\r\n\t while (parent) {\r\n\t parent.expand(recurse);\r\n\t parent = parent.parent;\r\n\t }\r\n\t }\r\n\r\n\t if (this.dom.tr && this.dom.tr.parentNode) {\r\n\t this.editor.scrollTo(this.dom.tr.offsetTop, callback);\r\n\t }\r\n\t};\r\n\r\n\r\n\t// stores the element name currently having the focus\r\n\tNode.focusElement = undefined;\r\n\r\n\t/**\r\n\t * Set focus to this node\r\n\t * @param {String} [elementName] The field name of the element to get the\r\n\t * focus available values: 'drag', 'menu',\r\n\t * 'expand', 'field', 'value' (default)\r\n\t */\r\n\tNode.prototype.focus = function(elementName) {\r\n\t Node.focusElement = elementName;\r\n\r\n\t if (this.dom.tr && this.dom.tr.parentNode) {\r\n\t var dom = this.dom;\r\n\r\n\t switch (elementName) {\r\n\t case 'drag':\r\n\t if (dom.drag) {\r\n\t dom.drag.focus();\r\n\t }\r\n\t else {\r\n\t dom.menu.focus();\r\n\t }\r\n\t break;\r\n\r\n\t case 'menu':\r\n\t dom.menu.focus();\r\n\t break;\r\n\r\n\t case 'expand':\r\n\t if (this._hasChilds()) {\r\n\t dom.expand.focus();\r\n\t }\r\n\t else if (dom.field && this.fieldEditable) {\r\n\t dom.field.focus();\r\n\t util.selectContentEditable(dom.field);\r\n\t }\r\n\t else if (dom.value && !this._hasChilds()) {\r\n\t dom.value.focus();\r\n\t util.selectContentEditable(dom.value);\r\n\t }\r\n\t else {\r\n\t dom.menu.focus();\r\n\t }\r\n\t break;\r\n\r\n\t case 'field':\r\n\t if (dom.field && this.fieldEditable) {\r\n\t dom.field.focus();\r\n\t util.selectContentEditable(dom.field);\r\n\t }\r\n\t else if (dom.value && !this._hasChilds()) {\r\n\t dom.value.focus();\r\n\t util.selectContentEditable(dom.value);\r\n\t }\r\n\t else if (this._hasChilds()) {\r\n\t dom.expand.focus();\r\n\t }\r\n\t else {\r\n\t dom.menu.focus();\r\n\t }\r\n\t break;\r\n\r\n\t case 'value':\r\n\t default:\r\n\t if (dom.value && !this._hasChilds()) {\r\n\t dom.value.focus();\r\n\t util.selectContentEditable(dom.value);\r\n\t }\r\n\t else if (dom.field && this.fieldEditable) {\r\n\t dom.field.focus();\r\n\t util.selectContentEditable(dom.field);\r\n\t }\r\n\t else if (this._hasChilds()) {\r\n\t dom.expand.focus();\r\n\t }\r\n\t else {\r\n\t dom.menu.focus();\r\n\t }\r\n\t break;\r\n\t }\r\n\t }\r\n\t};\r\n\r\n\t/**\r\n\t * Select all text in an editable div after a delay of 0 ms\r\n\t * @param {Element} editableDiv\r\n\t */\r\n\tNode.select = function(editableDiv) {\r\n\t setTimeout(function () {\r\n\t util.selectContentEditable(editableDiv);\r\n\t }, 0);\r\n\t};\r\n\r\n\t/**\r\n\t * Update the values from the DOM field and value of this node\r\n\t */\r\n\tNode.prototype.blur = function() {\r\n\t // retrieve the actual field and value from the DOM.\r\n\t this._getDomValue(false);\r\n\t this._getDomField(false);\r\n\t};\r\n\r\n\t/**\r\n\t * Check if given node is a child. The method will check recursively to find\r\n\t * this node.\r\n\t * @param {Node} node\r\n\t * @return {boolean} containsNode\r\n\t */\r\n\tNode.prototype.containsNode = function(node) {\r\n\t if (this == node) {\r\n\t return true;\r\n\t }\r\n\r\n\t var childs = this.childs;\r\n\t if (childs) {\r\n\t // TODO: use the js5 Array.some() here?\r\n\t for (var i = 0, iMax = childs.length; i < iMax; i++) {\r\n\t if (childs[i].containsNode(node)) {\r\n\t return true;\r\n\t }\r\n\t }\r\n\t }\r\n\r\n\t return false;\r\n\t};\r\n\r\n\t/**\r\n\t * Move given node into this node\r\n\t * @param {Node} node the childNode to be moved\r\n\t * @param {Node} beforeNode node will be inserted before given\r\n\t * node. If no beforeNode is given,\r\n\t * the node is appended at the end\r\n\t * @private\r\n\t */\r\n\tNode.prototype._move = function(node, beforeNode) {\r\n\t if (node == beforeNode) {\r\n\t // nothing to do...\r\n\t return;\r\n\t }\r\n\r\n\t // check if this node is not a child of the node to be moved here\r\n\t if (node.containsNode(this)) {\r\n\t throw new Error('Cannot move a field into a child of itself');\r\n\t }\r\n\r\n\t // remove the original node\r\n\t if (node.parent) {\r\n\t node.parent.removeChild(node);\r\n\t }\r\n\r\n\t // create a clone of the node\r\n\t var clone = node.clone();\r\n\t node.clearDom();\r\n\r\n\t // insert or append the node\r\n\t if (beforeNode) {\r\n\t this.insertBefore(clone, beforeNode);\r\n\t }\r\n\t else {\r\n\t this.appendChild(clone);\r\n\t }\r\n\r\n\t /* TODO: adjust the field name (to prevent equal field names)\r\n\t if (this.type == 'object') {\r\n\t }\r\n\t */\r\n\t};\r\n\r\n\t/**\r\n\t * Remove a child from the node.\r\n\t * Only applicable when Node value is of type array or object\r\n\t * @param {Node} node The child node to be removed;\r\n\t * @return {Node | undefined} node The removed node on success,\r\n\t * else undefined\r\n\t */\r\n\tNode.prototype.removeChild = function(node) {\r\n\t if (this.childs) {\r\n\t var index = this.childs.indexOf(node);\r\n\r\n\t if (index != -1) {\r\n\t node.hide();\r\n\r\n\t // delete old search results\r\n\t delete node.searchField;\r\n\t delete node.searchValue;\r\n\r\n\t var removedNode = this.childs.splice(index, 1)[0];\r\n\t removedNode.parent = null;\r\n\r\n\t this.updateDom({'updateIndexes': true});\r\n\r\n\t return removedNode;\r\n\t }\r\n\t }\r\n\r\n\t return undefined;\r\n\t};\r\n\r\n\t/**\r\n\t * Remove a child node node from this node\r\n\t * This method is equal to Node.removeChild, except that _remove fire an\r\n\t * onChange event.\r\n\t * @param {Node} node\r\n\t * @private\r\n\t */\r\n\tNode.prototype._remove = function (node) {\r\n\t this.removeChild(node);\r\n\t};\r\n\r\n\t/**\r\n\t * Change the type of the value of this Node\r\n\t * @param {String} newType\r\n\t */\r\n\tNode.prototype.changeType = function (newType) {\r\n\t var oldType = this.type;\r\n\r\n\t if (oldType == newType) {\r\n\t // type is not changed\r\n\t return;\r\n\t }\r\n\r\n\t if ((newType == 'string' || newType == 'auto') &&\r\n\t (oldType == 'string' || oldType == 'auto')) {\r\n\t // this is an easy change\r\n\t this.type = newType;\r\n\t }\r\n\t else {\r\n\t // change from array to object, or from string/auto to object/array\r\n\t var table = this.dom.tr ? this.dom.tr.parentNode : undefined;\r\n\t var lastTr;\r\n\t if (this.expanded) {\r\n\t lastTr = this.getAppend();\r\n\t }\r\n\t else {\r\n\t lastTr = this.getDom();\r\n\t }\r\n\t var nextTr = (lastTr && lastTr.parentNode) ? lastTr.nextSibling : undefined;\r\n\r\n\t // hide current field and all its childs\r\n\t this.hide();\r\n\t this.clearDom();\r\n\r\n\t // adjust the field and the value\r\n\t this.type = newType;\r\n\r\n\t // adjust childs\r\n\t if (newType == 'object') {\r\n\t if (!this.childs) {\r\n\t this.childs = [];\r\n\t }\r\n\r\n\t this.childs.forEach(function (child, index) {\r\n\t child.clearDom();\r\n\t delete child.index;\r\n\t child.fieldEditable = true;\r\n\t if (child.field == undefined) {\r\n\t child.field = '';\r\n\t }\r\n\t });\r\n\r\n\t if (oldType == 'string' || oldType == 'auto') {\r\n\t this.expanded = true;\r\n\t }\r\n\t }\r\n\t else if (newType == 'array') {\r\n\t if (!this.childs) {\r\n\t this.childs = [];\r\n\t }\r\n\r\n\t this.childs.forEach(function (child, index) {\r\n\t child.clearDom();\r\n\t child.fieldEditable = false;\r\n\t child.index = index;\r\n\t });\r\n\r\n\t if (oldType == 'string' || oldType == 'auto') {\r\n\t this.expanded = true;\r\n\t }\r\n\t }\r\n\t else {\r\n\t this.expanded = false;\r\n\t }\r\n\r\n\t // create new DOM\r\n\t if (table) {\r\n\t if (nextTr) {\r\n\t table.insertBefore(this.getDom(), nextTr);\r\n\t }\r\n\t else {\r\n\t table.appendChild(this.getDom());\r\n\t }\r\n\t }\r\n\t this.showChilds();\r\n\t }\r\n\r\n\t if (newType == 'auto' || newType == 'string') {\r\n\t // cast value to the correct type\r\n\t if (newType == 'string') {\r\n\t this.value = String(this.value);\r\n\t }\r\n\t else {\r\n\t this.value = this._stringCast(String(this.value));\r\n\t }\r\n\r\n\t this.focus();\r\n\t }\r\n\r\n\t this.updateDom({'updateIndexes': true});\r\n\t};\r\n\r\n\t/**\r\n\t * Retrieve value from DOM\r\n\t * @param {boolean} [silent] If true (default), no errors will be thrown in\r\n\t * case of invalid data\r\n\t * @private\r\n\t */\r\n\tNode.prototype._getDomValue = function(silent) {\r\n\t if (this.dom.value && this.type != 'array' && this.type != 'object') {\r\n\t this.valueInnerText = util.getInnerText(this.dom.value);\r\n\t }\r\n\r\n\t if (this.valueInnerText != undefined) {\r\n\t try {\r\n\t // retrieve the value\r\n\t var value;\r\n\t if (this.type == 'string') {\r\n\t value = this._unescapeHTML(this.valueInnerText);\r\n\t }\r\n\t else {\r\n\t var str = this._unescapeHTML(this.valueInnerText);\r\n\t value = this._stringCast(str);\r\n\t }\r\n\t if (value !== this.value) {\r\n\t this.value = value;\r\n\t this._debouncedOnChangeValue();\r\n\t }\r\n\t }\r\n\t catch (err) {\r\n\t this.value = undefined;\r\n\t // TODO: sent an action with the new, invalid value?\r\n\t if (silent !== true) {\r\n\t throw err;\r\n\t }\r\n\t }\r\n\t }\r\n\t};\r\n\r\n\t/**\r\n\t * Handle a changed value\r\n\t * @private\r\n\t */\r\n\tNode.prototype._onChangeValue = function () {\r\n\t // get current selection, then override the range such that we can select\r\n\t // the added/removed text on undo/redo\r\n\t var oldSelection = this.editor.getSelection();\r\n\t if (oldSelection.range) {\r\n\t var undoDiff = util.textDiff(String(this.value), String(this.previousValue));\r\n\t oldSelection.range.startOffset = undoDiff.start;\r\n\t oldSelection.range.endOffset = undoDiff.end;\r\n\t }\r\n\t var newSelection = this.editor.getSelection();\r\n\t if (newSelection.range) {\r\n\t var redoDiff = util.textDiff(String(this.previousValue), String(this.value));\r\n\t newSelection.range.startOffset = redoDiff.start;\r\n\t newSelection.range.endOffset = redoDiff.end;\r\n\t }\r\n\r\n\t this.editor._onAction('editValue', {\r\n\t node: this,\r\n\t oldValue: this.previousValue,\r\n\t newValue: this.value,\r\n\t oldSelection: oldSelection,\r\n\t newSelection: newSelection\r\n\t });\r\n\r\n\t this.previousValue = this.value;\r\n\t};\r\n\r\n\t/**\r\n\t * Handle a changed field\r\n\t * @private\r\n\t */\r\n\tNode.prototype._onChangeField = function () {\r\n\t // get current selection, then override the range such that we can select\r\n\t // the added/removed text on undo/redo\r\n\t var oldSelection = this.editor.getSelection();\r\n\t if (oldSelection.range) {\r\n\t var undoDiff = util.textDiff(this.field, this.previousField);\r\n\t oldSelection.range.startOffset = undoDiff.start;\r\n\t oldSelection.range.endOffset = undoDiff.end;\r\n\t }\r\n\t var newSelection = this.editor.getSelection();\r\n\t if (newSelection.range) {\r\n\t var redoDiff = util.textDiff(this.previousField, this.field);\r\n\t newSelection.range.startOffset = redoDiff.start;\r\n\t newSelection.range.endOffset = redoDiff.end;\r\n\t }\r\n\r\n\t this.editor._onAction('editField', {\r\n\t node: this,\r\n\t oldValue: this.previousField,\r\n\t newValue: this.field,\r\n\t oldSelection: oldSelection,\r\n\t newSelection: newSelection\r\n\t });\r\n\r\n\t this.previousField = this.field;\r\n\t};\r\n\r\n\t/**\r\n\t * Update dom value:\r\n\t * - the text color of the value, depending on the type of the value\r\n\t * - the height of the field, depending on the width\r\n\t * - background color in case it is empty\r\n\t * @private\r\n\t */\r\n\tNode.prototype._updateDomValue = function () {\r\n\t var domValue = this.dom.value;\r\n\t if (domValue) {\r\n\t var classNames = ['jsoneditor-value'];\r\n\r\n\r\n\t // set text color depending on value type\r\n\t var value = this.value;\r\n\t var type = (this.type == 'auto') ? util.type(value) : this.type;\r\n\t var isUrl = type == 'string' && util.isUrl(value);\r\n\t classNames.push('jsoneditor-' + type);\r\n\t if (isUrl) {\r\n\t classNames.push('jsoneditor-url');\r\n\t }\r\n\r\n\t // visual styling when empty\r\n\t var isEmpty = (String(this.value) == '' && this.type != 'array' && this.type != 'object');\r\n\t if (isEmpty) {\r\n\t classNames.push('jsoneditor-empty');\r\n\t }\r\n\r\n\t // highlight when there is a search result\r\n\t if (this.searchValueActive) {\r\n\t classNames.push('jsoneditor-highlight-active');\r\n\t }\r\n\t if (this.searchValue) {\r\n\t classNames.push('jsoneditor-highlight');\r\n\t }\r\n\r\n\t domValue.className = classNames.join(' ');\r\n\r\n\t // update title\r\n\t if (type == 'array' || type == 'object') {\r\n\t var count = this.childs ? this.childs.length : 0;\r\n\t domValue.title = this.type + ' containing ' + count + ' items';\r\n\t }\r\n\t else if (isUrl && this.editable.value) {\r\n\t domValue.title = 'Ctrl+Click or Ctrl+Enter to open url in new window';\r\n\t }\r\n\t else {\r\n\t domValue.title = '';\r\n\t }\r\n\r\n\t // show checkbox when the value is a boolean\r\n\t if (type === 'boolean' && this.editable.value) {\r\n\t if (!this.dom.checkbox) {\r\n\t this.dom.checkbox = document.createElement('input');\r\n\t this.dom.checkbox.type = 'checkbox';\r\n\t this.dom.tdCheckbox = document.createElement('td');\r\n\t this.dom.tdCheckbox.className = 'jsoneditor-tree';\r\n\t this.dom.tdCheckbox.appendChild(this.dom.checkbox);\r\n\r\n\t this.dom.tdValue.parentNode.insertBefore(this.dom.tdCheckbox, this.dom.tdValue);\r\n\t }\r\n\r\n\t this.dom.checkbox.checked = this.value;\r\n\t }\r\n\t else {\r\n\t // cleanup checkbox when displayed\r\n\t if (this.dom.tdCheckbox) {\r\n\t this.dom.tdCheckbox.parentNode.removeChild(this.dom.tdCheckbox);\r\n\t delete this.dom.tdCheckbox;\r\n\t delete this.dom.checkbox;\r\n\t }\r\n\t }\r\n\r\n\t if (this.enum && this.editable.value) {\r\n\t // create select box when this node has an enum object\r\n\t if (!this.dom.select) {\r\n\t this.dom.select = document.createElement('select');\r\n\t this.id = this.field + \"_\" + new Date().getUTCMilliseconds();\r\n\t this.dom.select.id = this.id;\r\n\t this.dom.select.name = this.dom.select.id;\r\n\r\n\t //Create the default empty option\r\n\t this.dom.select.option = document.createElement('option');\r\n\t this.dom.select.option.value = '';\r\n\t this.dom.select.option.innerHTML = '--';\r\n\t this.dom.select.appendChild(this.dom.select.option);\r\n\r\n\t //Iterate all enum values and add them as options\r\n\t for(var i = 0; i < this.enum.length; i++) {\r\n\t this.dom.select.option = document.createElement('option');\r\n\t this.dom.select.option.value = this.enum[i];\r\n\t this.dom.select.option.innerHTML = this.enum[i];\r\n\t if(this.dom.select.option.value == this.value){\r\n\t this.dom.select.option.selected = true;\r\n\t }\r\n\t this.dom.select.appendChild(this.dom.select.option);\r\n\t }\r\n\r\n\t this.dom.tdSelect = document.createElement('td');\r\n\t this.dom.tdSelect.className = 'jsoneditor-tree';\r\n\t this.dom.tdSelect.appendChild(this.dom.select);\r\n\t this.dom.tdValue.parentNode.insertBefore(this.dom.tdSelect, this.dom.tdValue);\r\n\t }\r\n\r\n\t // If the enum is inside a composite type display\r\n\t // both the simple input and the dropdown field\r\n\t if(this.schema && (\r\n\t !this.schema.hasOwnProperty(\"oneOf\") &&\r\n\t !this.schema.hasOwnProperty(\"anyOf\") &&\r\n\t !this.schema.hasOwnProperty(\"allOf\"))\r\n\t ) {\r\n\t this.valueFieldHTML = this.dom.tdValue.innerHTML;\r\n\t this.dom.tdValue.style.visibility = 'hidden';\r\n\t this.dom.tdValue.innerHTML = '';\r\n\t } else {\r\n\t delete this.valueFieldHTML;\r\n\t }\r\n\t }\r\n\t else {\r\n\t // cleanup select box when displayed\r\n\t if (this.dom.tdSelect) {\r\n\t this.dom.tdSelect.parentNode.removeChild(this.dom.tdSelect);\r\n\t delete this.dom.tdSelect;\r\n\t delete this.dom.select;\r\n\t this.dom.tdValue.innerHTML = this.valueFieldHTML;\r\n\t this.dom.tdValue.style.visibility = '';\r\n\t delete this.valueFieldHTML;\r\n\t }\r\n\t }\r\n\r\n\t // strip formatting from the contents of the editable div\r\n\t util.stripFormatting(domValue);\r\n\t }\r\n\t};\r\n\r\n\t/**\r\n\t * Update dom field:\r\n\t * - the text color of the field, depending on the text\r\n\t * - the height of the field, depending on the width\r\n\t * - background color in case it is empty\r\n\t * @private\r\n\t */\r\n\tNode.prototype._updateDomField = function () {\r\n\t var domField = this.dom.field;\r\n\t if (domField) {\r\n\t // make backgound color lightgray when empty\r\n\t var isEmpty = (String(this.field) == '' && this.parent.type != 'array');\r\n\t if (isEmpty) {\r\n\t util.addClassName(domField, 'jsoneditor-empty');\r\n\t }\r\n\t else {\r\n\t util.removeClassName(domField, 'jsoneditor-empty');\r\n\t }\r\n\r\n\t // highlight when there is a search result\r\n\t if (this.searchFieldActive) {\r\n\t util.addClassName(domField, 'jsoneditor-highlight-active');\r\n\t }\r\n\t else {\r\n\t util.removeClassName(domField, 'jsoneditor-highlight-active');\r\n\t }\r\n\t if (this.searchField) {\r\n\t util.addClassName(domField, 'jsoneditor-highlight');\r\n\t }\r\n\t else {\r\n\t util.removeClassName(domField, 'jsoneditor-highlight');\r\n\t }\r\n\r\n\t // strip formatting from the contents of the editable div\r\n\t util.stripFormatting(domField);\r\n\t }\r\n\t};\r\n\r\n\t/**\r\n\t * Retrieve field from DOM\r\n\t * @param {boolean} [silent] If true (default), no errors will be thrown in\r\n\t * case of invalid data\r\n\t * @private\r\n\t */\r\n\tNode.prototype._getDomField = function(silent) {\r\n\t if (this.dom.field && this.fieldEditable) {\r\n\t this.fieldInnerText = util.getInnerText(this.dom.field);\r\n\t }\r\n\r\n\t if (this.fieldInnerText != undefined) {\r\n\t try {\r\n\t var field = this._unescapeHTML(this.fieldInnerText);\r\n\r\n\t if (field !== this.field) {\r\n\t this.field = field;\r\n\t this._debouncedOnChangeField();\r\n\t }\r\n\t }\r\n\t catch (err) {\r\n\t this.field = undefined;\r\n\t // TODO: sent an action here, with the new, invalid value?\r\n\t if (silent !== true) {\r\n\t throw err;\r\n\t }\r\n\t }\r\n\t }\r\n\t};\r\n\r\n\t/**\r\n\t * Validate this node and all it's childs\r\n\t * @return {Array.<{node: Node, error: {message: string}}>} Returns a list with duplicates\r\n\t */\r\n\tNode.prototype.validate = function () {\r\n\t var errors = [];\r\n\r\n\t // find duplicate keys\r\n\t if (this.type === 'object') {\r\n\t var keys = {};\r\n\t var duplicateKeys = [];\r\n\t for (var i = 0; i < this.childs.length; i++) {\r\n\t var child = this.childs[i];\r\n\t if (keys.hasOwnProperty(child.field)) {\r\n\t duplicateKeys.push(child.field);\r\n\t }\r\n\t keys[child.field] = true;\r\n\t }\r\n\r\n\t if (duplicateKeys.length > 0) {\r\n\t errors = this.childs\r\n\t .filter(function (node) {\r\n\t return duplicateKeys.indexOf(node.field) !== -1;\r\n\t })\r\n\t .map(function (node) {\r\n\t return {\r\n\t node: node,\r\n\t error: {\r\n\t message: 'duplicate key \"' + node.field + '\"'\r\n\t }\r\n\t }\r\n\t });\r\n\t }\r\n\t }\r\n\r\n\t // recurse over the childs\r\n\t if (this.childs) {\r\n\t for (var i = 0; i < this.childs.length; i++) {\r\n\t var e = this.childs[i].validate();\r\n\t if (e.length > 0) {\r\n\t errors = errors.concat(e);\r\n\t }\r\n\t }\r\n\t }\r\n\r\n\t return errors;\r\n\t};\r\n\r\n\t/**\r\n\t * Clear the dom of the node\r\n\t */\r\n\tNode.prototype.clearDom = function() {\r\n\t // TODO: hide the node first?\r\n\t //this.hide();\r\n\t // TODO: recursively clear dom?\r\n\r\n\t this.dom = {};\r\n\t};\r\n\r\n\t/**\r\n\t * Get the HTML DOM TR element of the node.\r\n\t * The dom will be generated when not yet created\r\n\t * @return {Element} tr HTML DOM TR Element\r\n\t */\r\n\tNode.prototype.getDom = function() {\r\n\t var dom = this.dom;\r\n\t if (dom.tr) {\r\n\t return dom.tr;\r\n\t }\r\n\r\n\t this._updateEditability();\r\n\r\n\t // create row\r\n\t dom.tr = document.createElement('tr');\r\n\t dom.tr.node = this;\r\n\r\n\t if (this.editor.options.mode === 'tree') { // note: we take here the global setting\r\n\t var tdDrag = document.createElement('td');\r\n\t if (this.editable.field) {\r\n\t // create draggable area\r\n\t if (this.parent) {\r\n\t var domDrag = document.createElement('button');\r\n\t domDrag.type = 'button';\r\n\t dom.drag = domDrag;\r\n\t domDrag.className = 'jsoneditor-dragarea';\r\n\t domDrag.title = 'Drag to move this field (Alt+Shift+Arrows)';\r\n\t tdDrag.appendChild(domDrag);\r\n\t }\r\n\t }\r\n\t dom.tr.appendChild(tdDrag);\r\n\r\n\t // create context menu\r\n\t var tdMenu = document.createElement('td');\r\n\t var menu = document.createElement('button');\r\n\t menu.type = 'button';\r\n\t dom.menu = menu;\r\n\t menu.className = 'jsoneditor-contextmenu';\r\n\t menu.title = 'Click to open the actions menu (Ctrl+M)';\r\n\t tdMenu.appendChild(dom.menu);\r\n\t dom.tr.appendChild(tdMenu);\r\n\t }\r\n\r\n\t // create tree and field\r\n\t var tdField = document.createElement('td');\r\n\t dom.tr.appendChild(tdField);\r\n\t dom.tree = this._createDomTree();\r\n\t tdField.appendChild(dom.tree);\r\n\r\n\t this.updateDom({'updateIndexes': true});\r\n\r\n\t return dom.tr;\r\n\t};\r\n\r\n\t/**\r\n\t * DragStart event, fired on mousedown on the dragarea at the left side of a Node\r\n\t * @param {Node[] | Node} nodes\r\n\t * @param {Event} event\r\n\t */\r\n\tNode.onDragStart = function (nodes, event) {\r\n\t if (!Array.isArray(nodes)) {\r\n\t return Node.onDragStart([nodes], event);\r\n\t }\r\n\t if (nodes.length === 0) {\r\n\t return;\r\n\t }\r\n\r\n\t var firstNode = nodes[0];\r\n\t var lastNode = nodes[nodes.length - 1];\r\n\t var draggedNode = Node.getNodeFromTarget(event.target);\r\n\t var beforeNode = lastNode._nextSibling();\r\n\t var editor = firstNode.editor;\r\n\r\n\t // in case of multiple selected nodes, offsetY prevents the selection from\r\n\t // jumping when you start dragging one of the lower down nodes in the selection\r\n\t var offsetY = util.getAbsoluteTop(draggedNode.dom.tr) - util.getAbsoluteTop(firstNode.dom.tr);\r\n\r\n\t if (!editor.mousemove) {\r\n\t editor.mousemove = util.addEventListener(window, 'mousemove', function (event) {\r\n\t Node.onDrag(nodes, event);\r\n\t });\r\n\t }\r\n\r\n\t if (!editor.mouseup) {\r\n\t editor.mouseup = util.addEventListener(window, 'mouseup',function (event ) {\r\n\t Node.onDragEnd(nodes, event);\r\n\t });\r\n\t }\r\n\r\n\t editor.highlighter.lock();\r\n\t editor.drag = {\r\n\t oldCursor: document.body.style.cursor,\r\n\t oldSelection: editor.getSelection(),\r\n\t oldBeforeNode: beforeNode,\r\n\t mouseX: event.pageX,\r\n\t offsetY: offsetY,\r\n\t level: firstNode.getLevel()\r\n\t };\r\n\t document.body.style.cursor = 'move';\r\n\r\n\t event.preventDefault();\r\n\t};\r\n\r\n\t/**\r\n\t * Drag event, fired when moving the mouse while dragging a Node\r\n\t * @param {Node[] | Node} nodes\r\n\t * @param {Event} event\r\n\t */\r\n\tNode.onDrag = function (nodes, event) {\r\n\t if (!Array.isArray(nodes)) {\r\n\t return Node.onDrag([nodes], event);\r\n\t }\r\n\t if (nodes.length === 0) {\r\n\t return;\r\n\t }\r\n\r\n\t // TODO: this method has grown too large. Split it in a number of methods\r\n\t var editor = nodes[0].editor;\r\n\t var mouseY = event.pageY - editor.drag.offsetY;\r\n\t var mouseX = event.pageX;\r\n\t var trThis, trPrev, trNext, trFirst, trLast, trRoot;\r\n\t var nodePrev, nodeNext;\r\n\t var topThis, topPrev, topFirst, heightThis, bottomNext, heightNext;\r\n\t var moved = false;\r\n\r\n\t // TODO: add an ESC option, which resets to the original position\r\n\r\n\t // move up/down\r\n\t var firstNode = nodes[0];\r\n\t trThis = firstNode.dom.tr;\r\n\t topThis = util.getAbsoluteTop(trThis);\r\n\t heightThis = trThis.offsetHeight;\r\n\t if (mouseY < topThis) {\r\n\t // move up\r\n\t trPrev = trThis;\r\n\t do {\r\n\t trPrev = trPrev.previousSibling;\r\n\t nodePrev = Node.getNodeFromTarget(trPrev);\r\n\t topPrev = trPrev ? util.getAbsoluteTop(trPrev) : 0;\r\n\t }\r\n\t while (trPrev && mouseY < topPrev);\r\n\r\n\t if (nodePrev && !nodePrev.parent) {\r\n\t nodePrev = undefined;\r\n\t }\r\n\r\n\t if (!nodePrev) {\r\n\t // move to the first node\r\n\t trRoot = trThis.parentNode.firstChild;\r\n\t trPrev = trRoot ? trRoot.nextSibling : undefined;\r\n\t nodePrev = Node.getNodeFromTarget(trPrev);\r\n\t if (nodePrev == firstNode) {\r\n\t nodePrev = undefined;\r\n\t }\r\n\t }\r\n\r\n\t if (nodePrev) {\r\n\t // check if mouseY is really inside the found node\r\n\t trPrev = nodePrev.dom.tr;\r\n\t topPrev = trPrev ? util.getAbsoluteTop(trPrev) : 0;\r\n\t if (mouseY > topPrev + heightThis) {\r\n\t nodePrev = undefined;\r\n\t }\r\n\t }\r\n\r\n\t if (nodePrev) {\r\n\t nodes.forEach(function (node) {\r\n\t nodePrev.parent.moveBefore(node, nodePrev);\r\n\t });\r\n\t moved = true;\r\n\t }\r\n\t }\r\n\t else {\r\n\t // move down\r\n\t var lastNode = nodes[nodes.length - 1];\r\n\t trLast = (lastNode.expanded && lastNode.append) ? lastNode.append.getDom() : lastNode.dom.tr;\r\n\t trFirst = trLast ? trLast.nextSibling : undefined;\r\n\t if (trFirst) {\r\n\t topFirst = util.getAbsoluteTop(trFirst);\r\n\t trNext = trFirst;\r\n\t do {\r\n\t nodeNext = Node.getNodeFromTarget(trNext);\r\n\t if (trNext) {\r\n\t bottomNext = trNext.nextSibling ?\r\n\t util.getAbsoluteTop(trNext.nextSibling) : 0;\r\n\t heightNext = trNext ? (bottomNext - topFirst) : 0;\r\n\r\n\t if (nodeNext.parent.childs.length == nodes.length &&\r\n\t nodeNext.parent.childs[nodes.length - 1] == lastNode) {\r\n\t // We are about to remove the last child of this parent,\r\n\t // which will make the parents appendNode visible.\r\n\t topThis += 27;\r\n\t // TODO: dangerous to suppose the height of the appendNode a constant of 27 px.\r\n\t }\r\n\t }\r\n\r\n\t trNext = trNext.nextSibling;\r\n\t }\r\n\t while (trNext && mouseY > topThis + heightNext);\r\n\r\n\t if (nodeNext && nodeNext.parent) {\r\n\t // calculate the desired level\r\n\t var diffX = (mouseX - editor.drag.mouseX);\r\n\t var diffLevel = Math.round(diffX / 24 / 2);\r\n\t var level = editor.drag.level + diffLevel; // desired level\r\n\t var levelNext = nodeNext.getLevel(); // level to be\r\n\r\n\t // find the best fitting level (move upwards over the append nodes)\r\n\t trPrev = nodeNext.dom.tr.previousSibling;\r\n\t while (levelNext < level && trPrev) {\r\n\t nodePrev = Node.getNodeFromTarget(trPrev);\r\n\r\n\t var isDraggedNode = nodes.some(function (node) {\r\n\t return node === nodePrev || nodePrev._isChildOf(node);\r\n\t });\r\n\r\n\t if (isDraggedNode) {\r\n\t // neglect the dragged nodes themselves and their childs\r\n\t }\r\n\t else if (nodePrev instanceof AppendNode) {\r\n\t var childs = nodePrev.parent.childs;\r\n\t if (childs.length != nodes.length || childs[nodes.length - 1] != lastNode) {\r\n\t // non-visible append node of a list of childs\r\n\t // consisting of not only this node (else the\r\n\t // append node will change into a visible \"empty\"\r\n\t // text when removing this node).\r\n\t nodeNext = Node.getNodeFromTarget(trPrev);\r\n\t levelNext = nodeNext.getLevel();\r\n\t }\r\n\t else {\r\n\t break;\r\n\t }\r\n\t }\r\n\t else {\r\n\t break;\r\n\t }\r\n\r\n\t trPrev = trPrev.previousSibling;\r\n\t }\r\n\r\n\t // move the node when its position is changed\r\n\t if (trLast.nextSibling != nodeNext.dom.tr) {\r\n\t nodes.forEach(function (node) {\r\n\t nodeNext.parent.moveBefore(node, nodeNext);\r\n\t });\r\n\t moved = true;\r\n\t }\r\n\t }\r\n\t }\r\n\t }\r\n\r\n\t if (moved) {\r\n\t // update the dragging parameters when moved\r\n\t editor.drag.mouseX = mouseX;\r\n\t editor.drag.level = firstNode.getLevel();\r\n\t }\r\n\r\n\t // auto scroll when hovering around the top of the editor\r\n\t editor.startAutoScroll(mouseY);\r\n\r\n\t event.preventDefault();\r\n\t};\r\n\r\n\t/**\r\n\t * Drag event, fired on mouseup after having dragged a node\r\n\t * @param {Node[] | Node} nodes\r\n\t * @param {Event} event\r\n\t */\r\n\tNode.onDragEnd = function (nodes, event) {\r\n\t if (!Array.isArray(nodes)) {\r\n\t return Node.onDrag([nodes], event);\r\n\t }\r\n\t if (nodes.length === 0) {\r\n\t return;\r\n\t }\r\n\r\n\t var firstNode = nodes[0];\r\n\t var editor = firstNode.editor;\r\n\t var parent = firstNode.parent;\r\n\t var firstIndex = parent.childs.indexOf(firstNode);\r\n\t var beforeNode = parent.childs[firstIndex + nodes.length] || parent.append;\r\n\r\n\t // set focus to the context menu button of the first node\r\n\t if (nodes[0]) {\r\n\t nodes[0].dom.menu.focus();\r\n\t }\r\n\r\n\t var params = {\r\n\t nodes: nodes,\r\n\t oldSelection: editor.drag.oldSelection,\r\n\t newSelection: editor.getSelection(),\r\n\t oldBeforeNode: editor.drag.oldBeforeNode,\r\n\t newBeforeNode: beforeNode\r\n\t };\r\n\r\n\t if (params.oldBeforeNode != params.newBeforeNode) {\r\n\t // only register this action if the node is actually moved to another place\r\n\t editor._onAction('moveNodes', params);\r\n\t }\r\n\r\n\t document.body.style.cursor = editor.drag.oldCursor;\r\n\t editor.highlighter.unlock();\r\n\t nodes.forEach(function (node) {\r\n\t if (event.target !== node.dom.drag && event.target !== node.dom.menu) {\r\n\t editor.highlighter.unhighlight();\r\n\t }\r\n\t });\r\n\t delete editor.drag;\r\n\r\n\t if (editor.mousemove) {\r\n\t util.removeEventListener(window, 'mousemove', editor.mousemove);\r\n\t delete editor.mousemove;\r\n\t }\r\n\t if (editor.mouseup) {\r\n\t util.removeEventListener(window, 'mouseup', editor.mouseup);\r\n\t delete editor.mouseup;\r\n\t }\r\n\r\n\t // Stop any running auto scroll\r\n\t editor.stopAutoScroll();\r\n\r\n\t event.preventDefault();\r\n\t};\r\n\r\n\t/**\r\n\t * Test if this node is a child of an other node\r\n\t * @param {Node} node\r\n\t * @return {boolean} isChild\r\n\t * @private\r\n\t */\r\n\tNode.prototype._isChildOf = function (node) {\r\n\t var n = this.parent;\r\n\t while (n) {\r\n\t if (n == node) {\r\n\t return true;\r\n\t }\r\n\t n = n.parent;\r\n\t }\r\n\r\n\t return false;\r\n\t};\r\n\r\n\t/**\r\n\t * Create an editable field\r\n\t * @return {Element} domField\r\n\t * @private\r\n\t */\r\n\tNode.prototype._createDomField = function () {\r\n\t return document.createElement('div');\r\n\t};\r\n\r\n\t/**\r\n\t * Set highlighting for this node and all its childs.\r\n\t * Only applied to the currently visible (expanded childs)\r\n\t * @param {boolean} highlight\r\n\t */\r\n\tNode.prototype.setHighlight = function (highlight) {\r\n\t if (this.dom.tr) {\r\n\t if (highlight) {\r\n\t util.addClassName(this.dom.tr, 'jsoneditor-highlight');\r\n\t }\r\n\t else {\r\n\t util.removeClassName(this.dom.tr, 'jsoneditor-highlight');\r\n\t }\r\n\r\n\t if (this.append) {\r\n\t this.append.setHighlight(highlight);\r\n\t }\r\n\r\n\t if (this.childs) {\r\n\t this.childs.forEach(function (child) {\r\n\t child.setHighlight(highlight);\r\n\t });\r\n\t }\r\n\t }\r\n\t};\r\n\r\n\t/**\r\n\t * Select or deselect a node\r\n\t * @param {boolean} selected\r\n\t * @param {boolean} [isFirst]\r\n\t */\r\n\tNode.prototype.setSelected = function (selected, isFirst) {\r\n\t this.selected = selected;\r\n\r\n\t if (this.dom.tr) {\r\n\t if (selected) {\r\n\t util.addClassName(this.dom.tr, 'jsoneditor-selected');\r\n\t }\r\n\t else {\r\n\t util.removeClassName(this.dom.tr, 'jsoneditor-selected');\r\n\t }\r\n\r\n\t if (isFirst) {\r\n\t util.addClassName(this.dom.tr, 'jsoneditor-first');\r\n\t }\r\n\t else {\r\n\t util.removeClassName(this.dom.tr, 'jsoneditor-first');\r\n\t }\r\n\r\n\t if (this.append) {\r\n\t this.append.setSelected(selected);\r\n\t }\r\n\r\n\t if (this.childs) {\r\n\t this.childs.forEach(function (child) {\r\n\t child.setSelected(selected);\r\n\t });\r\n\t }\r\n\t }\r\n\t};\r\n\r\n\t/**\r\n\t * Update the value of the node. Only primitive types are allowed, no Object\r\n\t * or Array is allowed.\r\n\t * @param {String | Number | Boolean | null} value\r\n\t */\r\n\tNode.prototype.updateValue = function (value) {\r\n\t this.value = value;\r\n\t this.updateDom();\r\n\t};\r\n\r\n\t/**\r\n\t * Update the field of the node.\r\n\t * @param {String} field\r\n\t */\r\n\tNode.prototype.updateField = function (field) {\r\n\t this.field = field;\r\n\t this.updateDom();\r\n\t};\r\n\r\n\t/**\r\n\t * Update the HTML DOM, optionally recursing through the childs\r\n\t * @param {Object} [options] Available parameters:\r\n\t * {boolean} [recurse] If true, the\r\n\t * DOM of the childs will be updated recursively.\r\n\t * False by default.\r\n\t * {boolean} [updateIndexes] If true, the childs\r\n\t * indexes of the node will be updated too. False by\r\n\t * default.\r\n\t */\r\n\tNode.prototype.updateDom = function (options) {\r\n\t // update level indentation\r\n\t var domTree = this.dom.tree;\r\n\t if (domTree) {\r\n\t domTree.style.marginLeft = this.getLevel() * 24 + 'px';\r\n\t }\r\n\r\n\t // apply field to DOM\r\n\t var domField = this.dom.field;\r\n\t if (domField) {\r\n\t if (this.fieldEditable) {\r\n\t // parent is an object\r\n\t domField.contentEditable = this.editable.field;\r\n\t domField.spellcheck = false;\r\n\t domField.className = 'jsoneditor-field';\r\n\t }\r\n\t else {\r\n\t // parent is an array this is the root node\r\n\t domField.className = 'jsoneditor-readonly';\r\n\t }\r\n\r\n\t var fieldText;\r\n\t if (this.index != undefined) {\r\n\t fieldText = this.index;\r\n\t }\r\n\t else if (this.field != undefined) {\r\n\t fieldText = this.field;\r\n\t }\r\n\t else if (this._hasChilds()) {\r\n\t fieldText = this.type;\r\n\t }\r\n\t else {\r\n\t fieldText = '';\r\n\t }\r\n\t domField.innerHTML = this._escapeHTML(fieldText);\r\n\r\n\t this._updateSchema();\r\n\t }\r\n\r\n\t // apply value to DOM\r\n\t var domValue = this.dom.value;\r\n\t if (domValue) {\r\n\t var count = this.childs ? this.childs.length : 0;\r\n\t if (this.type == 'array') {\r\n\t domValue.innerHTML = '[' + count + ']';\r\n\t util.addClassName(this.dom.tr, 'jsoneditor-expandable');\r\n\t }\r\n\t else if (this.type == 'object') {\r\n\t domValue.innerHTML = '{' + count + '}';\r\n\t util.addClassName(this.dom.tr, 'jsoneditor-expandable');\r\n\t }\r\n\t else {\r\n\t domValue.innerHTML = this._escapeHTML(this.value);\r\n\t util.removeClassName(this.dom.tr, 'jsoneditor-expandable');\r\n\t }\r\n\t }\r\n\r\n\t // update field and value\r\n\t this._updateDomField();\r\n\t this._updateDomValue();\r\n\r\n\t // update childs indexes\r\n\t if (options && options.updateIndexes === true) {\r\n\t // updateIndexes is true or undefined\r\n\t this._updateDomIndexes();\r\n\t }\r\n\r\n\t if (options && options.recurse === true) {\r\n\t // recurse is true or undefined. update childs recursively\r\n\t if (this.childs) {\r\n\t this.childs.forEach(function (child) {\r\n\t child.updateDom(options);\r\n\t });\r\n\t }\r\n\t }\r\n\r\n\t // update row with append button\r\n\t if (this.append) {\r\n\t this.append.updateDom();\r\n\t }\r\n\t};\r\n\r\n\t/**\r\n\t * Locate the JSON schema of the node and check for any enum type\r\n\t * @private\r\n\t */\r\n\tNode.prototype._updateSchema = function () {\r\n\t //Locating the schema of the node and checking for any enum type\r\n\t if(this.editor && this.editor.options) {\r\n\t // find the part of the json schema matching this nodes path\r\n\t this.schema = Node._findSchema(this.editor.options.schema, this.getPath());\r\n\t if (this.schema) {\r\n\t this.enum = Node._findEnum(this.schema);\r\n\t }\r\n\t else {\r\n\t delete this.enum;\r\n\t }\r\n\t }\r\n\t};\r\n\r\n\t/**\r\n\t * find an enum definition in a JSON schema, as property `enum` or inside\r\n\t * one of the schemas composites (`oneOf`, `anyOf`, `allOf`)\r\n\t * @param {Object} schema\r\n\t * @return {Array | null} Returns the enum when found, null otherwise.\r\n\t * @private\r\n\t */\r\n\tNode._findEnum = function (schema) {\r\n\t if (schema.enum) {\r\n\t return schema.enum;\r\n\t }\r\n\r\n\t var composite = schema.oneOf || schema.anyOf || schema.allOf;\r\n\t if (composite) {\r\n\t var match = composite.filter(function (entry) {return entry.enum});\r\n\t if (match.length > 0) {\r\n\t return match[0].enum;\r\n\t }\r\n\t }\r\n\r\n\t return null\r\n\t};\r\n\r\n\t/**\r\n\t * Return the part of a JSON schema matching given path.\r\n\t * @param {Object} schema\r\n\t * @param {Array.} path\r\n\t * @return {Object | null}\r\n\t * @private\r\n\t */\r\n\tNode._findSchema = function (schema, path) {\r\n\t var childSchema = schema;\r\n\r\n\t for (var i = 0; i < path.length && childSchema; i++) {\r\n\t var key = path[i];\r\n\t if (typeof key === 'string' && childSchema.properties) {\r\n\t childSchema = childSchema.properties[key] || null\r\n\t }\r\n\t else if (typeof key === 'number' && childSchema.items) {\r\n\t childSchema = childSchema.items\r\n\t }\r\n\t }\r\n\r\n\t return childSchema\r\n\t};\r\n\r\n\t/**\r\n\t * Update the DOM of the childs of a node: update indexes and undefined field\r\n\t * names.\r\n\t * Only applicable when structure is an array or object\r\n\t * @private\r\n\t */\r\n\tNode.prototype._updateDomIndexes = function () {\r\n\t var domValue = this.dom.value;\r\n\t var childs = this.childs;\r\n\t if (domValue && childs) {\r\n\t if (this.type == 'array') {\r\n\t childs.forEach(function (child, index) {\r\n\t child.index = index;\r\n\t var childField = child.dom.field;\r\n\t if (childField) {\r\n\t childField.innerHTML = index;\r\n\t }\r\n\t });\r\n\t }\r\n\t else if (this.type == 'object') {\r\n\t childs.forEach(function (child) {\r\n\t if (child.index != undefined) {\r\n\t delete child.index;\r\n\r\n\t if (child.field == undefined) {\r\n\t child.field = '';\r\n\t }\r\n\t }\r\n\t });\r\n\t }\r\n\t }\r\n\t};\r\n\r\n\t/**\r\n\t * Create an editable value\r\n\t * @private\r\n\t */\r\n\tNode.prototype._createDomValue = function () {\r\n\t var domValue;\r\n\r\n\t if (this.type == 'array') {\r\n\t domValue = document.createElement('div');\r\n\t domValue.innerHTML = '[...]';\r\n\t }\r\n\t else if (this.type == 'object') {\r\n\t domValue = document.createElement('div');\r\n\t domValue.innerHTML = '{...}';\r\n\t }\r\n\t else {\r\n\t if (!this.editable.value && util.isUrl(this.value)) {\r\n\t // create a link in case of read-only editor and value containing an url\r\n\t domValue = document.createElement('a');\r\n\t domValue.href = this.value;\r\n\t domValue.target = '_blank';\r\n\t domValue.innerHTML = this._escapeHTML(this.value);\r\n\t }\r\n\t else {\r\n\t // create an editable or read-only div\r\n\t domValue = document.createElement('div');\r\n\t domValue.contentEditable = this.editable.value;\r\n\t domValue.spellcheck = false;\r\n\t domValue.innerHTML = this._escapeHTML(this.value);\r\n\t }\r\n\t }\r\n\r\n\t return domValue;\r\n\t};\r\n\r\n\t/**\r\n\t * Create an expand/collapse button\r\n\t * @return {Element} expand\r\n\t * @private\r\n\t */\r\n\tNode.prototype._createDomExpandButton = function () {\r\n\t // create expand button\r\n\t var expand = document.createElement('button');\r\n\t expand.type = 'button';\r\n\t if (this._hasChilds()) {\r\n\t expand.className = this.expanded ? 'jsoneditor-expanded' : 'jsoneditor-collapsed';\r\n\t expand.title =\r\n\t 'Click to expand/collapse this field (Ctrl+E). \\n' +\r\n\t 'Ctrl+Click to expand/collapse including all childs.';\r\n\t }\r\n\t else {\r\n\t expand.className = 'jsoneditor-invisible';\r\n\t expand.title = '';\r\n\t }\r\n\r\n\t return expand;\r\n\t};\r\n\r\n\r\n\t/**\r\n\t * Create a DOM tree element, containing the expand/collapse button\r\n\t * @return {Element} domTree\r\n\t * @private\r\n\t */\r\n\tNode.prototype._createDomTree = function () {\r\n\t var dom = this.dom;\r\n\t var domTree = document.createElement('table');\r\n\t var tbody = document.createElement('tbody');\r\n\t domTree.style.borderCollapse = 'collapse'; // TODO: put in css\r\n\t domTree.className = 'jsoneditor-values';\r\n\t domTree.appendChild(tbody);\r\n\t var tr = document.createElement('tr');\r\n\t tbody.appendChild(tr);\r\n\r\n\t // create expand button\r\n\t var tdExpand = document.createElement('td');\r\n\t tdExpand.className = 'jsoneditor-tree';\r\n\t tr.appendChild(tdExpand);\r\n\t dom.expand = this._createDomExpandButton();\r\n\t tdExpand.appendChild(dom.expand);\r\n\t dom.tdExpand = tdExpand;\r\n\r\n\t // create the field\r\n\t var tdField = document.createElement('td');\r\n\t tdField.className = 'jsoneditor-tree';\r\n\t tr.appendChild(tdField);\r\n\t dom.field = this._createDomField();\r\n\t tdField.appendChild(dom.field);\r\n\t dom.tdField = tdField;\r\n\r\n\t // create a separator\r\n\t var tdSeparator = document.createElement('td');\r\n\t tdSeparator.className = 'jsoneditor-tree';\r\n\t tr.appendChild(tdSeparator);\r\n\t if (this.type != 'object' && this.type != 'array') {\r\n\t tdSeparator.appendChild(document.createTextNode(':'));\r\n\t tdSeparator.className = 'jsoneditor-separator';\r\n\t }\r\n\t dom.tdSeparator = tdSeparator;\r\n\r\n\t // create the value\r\n\t var tdValue = document.createElement('td');\r\n\t tdValue.className = 'jsoneditor-tree';\r\n\t tr.appendChild(tdValue);\r\n\t dom.value = this._createDomValue();\r\n\t tdValue.appendChild(dom.value);\r\n\t dom.tdValue = tdValue;\r\n\r\n\t return domTree;\r\n\t};\r\n\r\n\t/**\r\n\t * Handle an event. The event is caught centrally by the editor\r\n\t * @param {Event} event\r\n\t */\r\n\tNode.prototype.onEvent = function (event) {\r\n\t var type = event.type,\r\n\t target = event.target || event.srcElement,\r\n\t dom = this.dom,\r\n\t node = this,\r\n\t expandable = this._hasChilds();\r\n\r\n\t // check if mouse is on menu or on dragarea.\r\n\t // If so, highlight current row and its childs\r\n\t if (target == dom.drag || target == dom.menu) {\r\n\t if (type == 'mouseover') {\r\n\t this.editor.highlighter.highlight(this);\r\n\t }\r\n\t else if (type == 'mouseout') {\r\n\t this.editor.highlighter.unhighlight();\r\n\t }\r\n\t }\r\n\r\n\t // context menu events\r\n\t if (type == 'click' && target == dom.menu) {\r\n\t var highlighter = node.editor.highlighter;\r\n\t highlighter.highlight(node);\r\n\t highlighter.lock();\r\n\t util.addClassName(dom.menu, 'jsoneditor-selected');\r\n\t this.showContextMenu(dom.menu, function () {\r\n\t util.removeClassName(dom.menu, 'jsoneditor-selected');\r\n\t highlighter.unlock();\r\n\t highlighter.unhighlight();\r\n\t });\r\n\t }\r\n\r\n\t // expand events\r\n\t if (type == 'click') {\r\n\t if (target == dom.expand ||\r\n\t ((node.editor.options.mode === 'view' || node.editor.options.mode === 'form') && target.nodeName === 'DIV')) {\r\n\t if (expandable) {\r\n\t var recurse = event.ctrlKey; // with ctrl-key, expand/collapse all\r\n\t this._onExpand(recurse);\r\n\t }\r\n\t }\r\n\t }\r\n\r\n\t // swap the value of a boolean when the checkbox displayed left is clicked\r\n\t if (type == 'change' && target == dom.checkbox) {\r\n\t this.dom.value.innerHTML = !this.value;\r\n\t this._getDomValue();\r\n\t }\r\n\r\n\t // update the value of the node based on the selected option\r\n\t if (type == 'change' && target == dom.select) {\r\n\t this.dom.value.innerHTML = dom.select.value;\r\n\t this._getDomValue();\r\n\t this._updateDomValue();\r\n\t }\r\n\r\n\t // value events\r\n\t var domValue = dom.value;\r\n\t if (target == domValue) {\r\n\t //noinspection FallthroughInSwitchStatementJS\r\n\t switch (type) {\r\n\t case 'blur':\r\n\t case 'change':\r\n\t this._getDomValue(true);\r\n\t this._updateDomValue();\r\n\t if (this.value) {\r\n\t domValue.innerHTML = this._escapeHTML(this.value);\r\n\t }\r\n\t break;\r\n\r\n\t case 'input':\r\n\t //this._debouncedGetDomValue(true); // TODO\r\n\t this._getDomValue(true);\r\n\t this._updateDomValue();\r\n\t break;\r\n\r\n\t case 'keydown':\r\n\t case 'mousedown':\r\n\t // TODO: cleanup\r\n\t this.editor.selection = this.editor.getSelection();\r\n\t break;\r\n\r\n\t case 'click':\r\n\t if (event.ctrlKey || !this.editable.value) {\r\n\t if (util.isUrl(this.value)) {\r\n\t window.open(this.value, '_blank');\r\n\t }\r\n\t }\r\n\t break;\r\n\r\n\t case 'keyup':\r\n\t //this._debouncedGetDomValue(true); // TODO\r\n\t this._getDomValue(true);\r\n\t this._updateDomValue();\r\n\t break;\r\n\r\n\t case 'cut':\r\n\t case 'paste':\r\n\t setTimeout(function () {\r\n\t node._getDomValue(true);\r\n\t node._updateDomValue();\r\n\t }, 1);\r\n\t break;\r\n\t }\r\n\t }\r\n\r\n\t // field events\r\n\t var domField = dom.field;\r\n\t if (target == domField) {\r\n\t switch (type) {\r\n\t case 'blur':\r\n\t case 'change':\r\n\t this._getDomField(true);\r\n\t this._updateDomField();\r\n\t if (this.field) {\r\n\t domField.innerHTML = this._escapeHTML(this.field);\r\n\t }\r\n\t break;\r\n\r\n\t case 'input':\r\n\t this._getDomField(true);\r\n\t this._updateSchema();\r\n\t this._updateDomField();\r\n\t this._updateDomValue();\r\n\t break;\r\n\r\n\t case 'keydown':\r\n\t case 'mousedown':\r\n\t this.editor.selection = this.editor.getSelection();\r\n\t break;\r\n\r\n\t case 'keyup':\r\n\t this._getDomField(true);\r\n\t this._updateDomField();\r\n\t break;\r\n\r\n\t case 'cut':\r\n\t case 'paste':\r\n\t setTimeout(function () {\r\n\t node._getDomField(true);\r\n\t node._updateDomField();\r\n\t }, 1);\r\n\t break;\r\n\t }\r\n\t }\r\n\r\n\t // focus\r\n\t // when clicked in whitespace left or right from the field or value, set focus\r\n\t var domTree = dom.tree;\r\n\t if (target == domTree.parentNode && type == 'click' && !event.hasMoved) {\r\n\t var left = (event.offsetX != undefined) ?\r\n\t (event.offsetX < (this.getLevel() + 1) * 24) :\r\n\t (event.pageX < util.getAbsoluteLeft(dom.tdSeparator));// for FF\r\n\t if (left || expandable) {\r\n\t // node is expandable when it is an object or array\r\n\t if (domField) {\r\n\t util.setEndOfContentEditable(domField);\r\n\t domField.focus();\r\n\t }\r\n\t }\r\n\t else {\r\n\t if (domValue && !this.enum) {\r\n\t util.setEndOfContentEditable(domValue);\r\n\t domValue.focus();\r\n\t }\r\n\t }\r\n\t }\r\n\t if (((target == dom.tdExpand && !expandable) || target == dom.tdField || target == dom.tdSeparator) &&\r\n\t (type == 'click' && !event.hasMoved)) {\r\n\t if (domField) {\r\n\t util.setEndOfContentEditable(domField);\r\n\t domField.focus();\r\n\t }\r\n\t }\r\n\r\n\t if (type == 'keydown') {\r\n\t this.onKeyDown(event);\r\n\t }\r\n\t};\r\n\r\n\t/**\r\n\t * Key down event handler\r\n\t * @param {Event} event\r\n\t */\r\n\tNode.prototype.onKeyDown = function (event) {\r\n\t var keynum = event.which || event.keyCode;\r\n\t var target = event.target || event.srcElement;\r\n\t var ctrlKey = event.ctrlKey;\r\n\t var shiftKey = event.shiftKey;\r\n\t var altKey = event.altKey;\r\n\t var handled = false;\r\n\t var prevNode, nextNode, nextDom, nextDom2;\r\n\t var editable = this.editor.options.mode === 'tree';\r\n\t var oldSelection;\r\n\t var oldBeforeNode;\r\n\t var nodes;\r\n\t var multiselection;\r\n\t var selectedNodes = this.editor.multiselection.nodes.length > 0\r\n\t ? this.editor.multiselection.nodes\r\n\t : [this];\r\n\t var firstNode = selectedNodes[0];\r\n\t var lastNode = selectedNodes[selectedNodes.length - 1];\r\n\r\n\t // console.log(ctrlKey, keynum, event.charCode); // TODO: cleanup\r\n\t if (keynum == 13) { // Enter\r\n\t if (target == this.dom.value) {\r\n\t if (!this.editable.value || event.ctrlKey) {\r\n\t if (util.isUrl(this.value)) {\r\n\t window.open(this.value, '_blank');\r\n\t handled = true;\r\n\t }\r\n\t }\r\n\t }\r\n\t else if (target == this.dom.expand) {\r\n\t var expandable = this._hasChilds();\r\n\t if (expandable) {\r\n\t var recurse = event.ctrlKey; // with ctrl-key, expand/collapse all\r\n\t this._onExpand(recurse);\r\n\t target.focus();\r\n\t handled = true;\r\n\t }\r\n\t }\r\n\t }\r\n\t else if (keynum == 68) { // D\r\n\t if (ctrlKey && editable) { // Ctrl+D\r\n\t Node.onDuplicate(selectedNodes);\r\n\t handled = true;\r\n\t }\r\n\t }\r\n\t else if (keynum == 69) { // E\r\n\t if (ctrlKey) { // Ctrl+E and Ctrl+Shift+E\r\n\t this._onExpand(shiftKey); // recurse = shiftKey\r\n\t target.focus(); // TODO: should restore focus in case of recursing expand (which takes DOM offline)\r\n\t handled = true;\r\n\t }\r\n\t }\r\n\t else if (keynum == 77 && editable) { // M\r\n\t if (ctrlKey) { // Ctrl+M\r\n\t this.showContextMenu(target);\r\n\t handled = true;\r\n\t }\r\n\t }\r\n\t else if (keynum == 46 && editable) { // Del\r\n\t if (ctrlKey) { // Ctrl+Del\r\n\t Node.onRemove(selectedNodes);\r\n\t handled = true;\r\n\t }\r\n\t }\r\n\t else if (keynum == 45 && editable) { // Ins\r\n\t if (ctrlKey && !shiftKey) { // Ctrl+Ins\r\n\t this._onInsertBefore();\r\n\t handled = true;\r\n\t }\r\n\t else if (ctrlKey && shiftKey) { // Ctrl+Shift+Ins\r\n\t this._onInsertAfter();\r\n\t handled = true;\r\n\t }\r\n\t }\r\n\t else if (keynum == 35) { // End\r\n\t if (altKey) { // Alt+End\r\n\t // find the last node\r\n\t var endNode = this._lastNode();\r\n\t if (endNode) {\r\n\t endNode.focus(Node.focusElement || this._getElementName(target));\r\n\t }\r\n\t handled = true;\r\n\t }\r\n\t }\r\n\t else if (keynum == 36) { // Home\r\n\t if (altKey) { // Alt+Home\r\n\t // find the first node\r\n\t var homeNode = this._firstNode();\r\n\t if (homeNode) {\r\n\t homeNode.focus(Node.focusElement || this._getElementName(target));\r\n\t }\r\n\t handled = true;\r\n\t }\r\n\t }\r\n\t else if (keynum == 37) { // Arrow Left\r\n\t if (altKey && !shiftKey) { // Alt + Arrow Left\r\n\t // move to left element\r\n\t var prevElement = this._previousElement(target);\r\n\t if (prevElement) {\r\n\t this.focus(this._getElementName(prevElement));\r\n\t }\r\n\t handled = true;\r\n\t }\r\n\t else if (altKey && shiftKey && editable) { // Alt + Shift + Arrow left\r\n\t if (lastNode.expanded) {\r\n\t var appendDom = lastNode.getAppend();\r\n\t nextDom = appendDom ? appendDom.nextSibling : undefined;\r\n\t }\r\n\t else {\r\n\t var dom = lastNode.getDom();\r\n\t nextDom = dom.nextSibling;\r\n\t }\r\n\t if (nextDom) {\r\n\t nextNode = Node.getNodeFromTarget(nextDom);\r\n\t nextDom2 = nextDom.nextSibling;\r\n\t nextNode2 = Node.getNodeFromTarget(nextDom2);\r\n\t if (nextNode && nextNode instanceof AppendNode &&\r\n\t !(lastNode.parent.childs.length == 1) &&\r\n\t nextNode2 && nextNode2.parent) {\r\n\t oldSelection = this.editor.getSelection();\r\n\t oldBeforeNode = lastNode._nextSibling();\r\n\r\n\t selectedNodes.forEach(function (node) {\r\n\t nextNode2.parent.moveBefore(node, nextNode2);\r\n\t });\r\n\t this.focus(Node.focusElement || this._getElementName(target));\r\n\r\n\t this.editor._onAction('moveNodes', {\r\n\t nodes: selectedNodes,\r\n\t oldBeforeNode: oldBeforeNode,\r\n\t newBeforeNode: nextNode2,\r\n\t oldSelection: oldSelection,\r\n\t newSelection: this.editor.getSelection()\r\n\t });\r\n\t }\r\n\t }\r\n\t }\r\n\t }\r\n\t else if (keynum == 38) { // Arrow Up\r\n\t if (altKey && !shiftKey) { // Alt + Arrow Up\r\n\t // find the previous node\r\n\t prevNode = this._previousNode();\r\n\t if (prevNode) {\r\n\t this.editor.deselect(true);\r\n\t prevNode.focus(Node.focusElement || this._getElementName(target));\r\n\t }\r\n\t handled = true;\r\n\t }\r\n\t else if (!altKey && ctrlKey && shiftKey && editable) { // Ctrl + Shift + Arrow Up\r\n\t // select multiple nodes\r\n\t prevNode = this._previousNode();\r\n\t if (prevNode) {\r\n\t multiselection = this.editor.multiselection;\r\n\t multiselection.start = multiselection.start || this;\r\n\t multiselection.end = prevNode;\r\n\t nodes = this.editor._findTopLevelNodes(multiselection.start, multiselection.end);\r\n\r\n\t this.editor.select(nodes);\r\n\t prevNode.focus('field'); // select field as we know this always exists\r\n\t }\r\n\t handled = true;\r\n\t }\r\n\t else if (altKey && shiftKey && editable) { // Alt + Shift + Arrow Up\r\n\t // find the previous node\r\n\t prevNode = firstNode._previousNode();\r\n\t if (prevNode && prevNode.parent) {\r\n\t oldSelection = this.editor.getSelection();\r\n\t oldBeforeNode = lastNode._nextSibling();\r\n\r\n\t selectedNodes.forEach(function (node) {\r\n\t prevNode.parent.moveBefore(node, prevNode);\r\n\t });\r\n\t this.focus(Node.focusElement || this._getElementName(target));\r\n\r\n\t this.editor._onAction('moveNodes', {\r\n\t nodes: selectedNodes,\r\n\t oldBeforeNode: oldBeforeNode,\r\n\t newBeforeNode: prevNode,\r\n\t oldSelection: oldSelection,\r\n\t newSelection: this.editor.getSelection()\r\n\t });\r\n\t }\r\n\t handled = true;\r\n\t }\r\n\t }\r\n\t else if (keynum == 39) { // Arrow Right\r\n\t if (altKey && !shiftKey) { // Alt + Arrow Right\r\n\t // move to right element\r\n\t var nextElement = this._nextElement(target);\r\n\t if (nextElement) {\r\n\t this.focus(this._getElementName(nextElement));\r\n\t }\r\n\t handled = true;\r\n\t }\r\n\t else if (altKey && shiftKey && editable) { // Alt + Shift + Arrow Right\r\n\t dom = firstNode.getDom();\r\n\t var prevDom = dom.previousSibling;\r\n\t if (prevDom) {\r\n\t prevNode = Node.getNodeFromTarget(prevDom);\r\n\t if (prevNode && prevNode.parent &&\r\n\t (prevNode instanceof AppendNode)\r\n\t && !prevNode.isVisible()) {\r\n\t oldSelection = this.editor.getSelection();\r\n\t oldBeforeNode = lastNode._nextSibling();\r\n\r\n\t selectedNodes.forEach(function (node) {\r\n\t prevNode.parent.moveBefore(node, prevNode);\r\n\t });\r\n\t this.focus(Node.focusElement || this._getElementName(target));\r\n\r\n\t this.editor._onAction('moveNodes', {\r\n\t nodes: selectedNodes,\r\n\t oldBeforeNode: oldBeforeNode,\r\n\t newBeforeNode: prevNode,\r\n\t oldSelection: oldSelection,\r\n\t newSelection: this.editor.getSelection()\r\n\t });\r\n\t }\r\n\t }\r\n\t }\r\n\t }\r\n\t else if (keynum == 40) { // Arrow Down\r\n\t if (altKey && !shiftKey) { // Alt + Arrow Down\r\n\t // find the next node\r\n\t nextNode = this._nextNode();\r\n\t if (nextNode) {\r\n\t this.editor.deselect(true);\r\n\t nextNode.focus(Node.focusElement || this._getElementName(target));\r\n\t }\r\n\t handled = true;\r\n\t }\r\n\t else if (!altKey && ctrlKey && shiftKey && editable) { // Ctrl + Shift + Arrow Down\r\n\t // select multiple nodes\r\n\t nextNode = this._nextNode();\r\n\t if (nextNode) {\r\n\t multiselection = this.editor.multiselection;\r\n\t multiselection.start = multiselection.start || this;\r\n\t multiselection.end = nextNode;\r\n\t nodes = this.editor._findTopLevelNodes(multiselection.start, multiselection.end);\r\n\r\n\t this.editor.select(nodes);\r\n\t nextNode.focus('field'); // select field as we know this always exists\r\n\t }\r\n\t handled = true;\r\n\t }\r\n\t else if (altKey && shiftKey && editable) { // Alt + Shift + Arrow Down\r\n\t // find the 2nd next node and move before that one\r\n\t if (lastNode.expanded) {\r\n\t nextNode = lastNode.append ? lastNode.append._nextNode() : undefined;\r\n\t }\r\n\t else {\r\n\t nextNode = lastNode._nextNode();\r\n\t }\r\n\t var nextNode2 = nextNode && (nextNode._nextNode() || nextNode.parent.append);\r\n\t if (nextNode2 && nextNode2.parent) {\r\n\t oldSelection = this.editor.getSelection();\r\n\t oldBeforeNode = lastNode._nextSibling();\r\n\r\n\t selectedNodes.forEach(function (node) {\r\n\t nextNode2.parent.moveBefore(node, nextNode2);\r\n\t });\r\n\t this.focus(Node.focusElement || this._getElementName(target));\r\n\r\n\t this.editor._onAction('moveNodes', {\r\n\t nodes: selectedNodes,\r\n\t oldBeforeNode: oldBeforeNode,\r\n\t newBeforeNode: nextNode2,\r\n\t oldSelection: oldSelection,\r\n\t newSelection: this.editor.getSelection()\r\n\t });\r\n\t }\r\n\t handled = true;\r\n\t }\r\n\t }\r\n\r\n\t if (handled) {\r\n\t event.preventDefault();\r\n\t event.stopPropagation();\r\n\t }\r\n\t};\r\n\r\n\t/**\r\n\t * Handle the expand event, when clicked on the expand button\r\n\t * @param {boolean} recurse If true, child nodes will be expanded too\r\n\t * @private\r\n\t */\r\n\tNode.prototype._onExpand = function (recurse) {\r\n\t if (recurse) {\r\n\t // Take the table offline\r\n\t var table = this.dom.tr.parentNode; // TODO: not nice to access the main table like this\r\n\t var frame = table.parentNode;\r\n\t var scrollTop = frame.scrollTop;\r\n\t frame.removeChild(table);\r\n\t }\r\n\r\n\t if (this.expanded) {\r\n\t this.collapse(recurse);\r\n\t }\r\n\t else {\r\n\t this.expand(recurse);\r\n\t }\r\n\r\n\t if (recurse) {\r\n\t // Put the table online again\r\n\t frame.appendChild(table);\r\n\t frame.scrollTop = scrollTop;\r\n\t }\r\n\t};\r\n\r\n\t/**\r\n\t * Remove nodes\r\n\t * @param {Node[] | Node} nodes\r\n\t */\r\n\tNode.onRemove = function(nodes) {\r\n\t if (!Array.isArray(nodes)) {\r\n\t return Node.onRemove([nodes]);\r\n\t }\r\n\r\n\t if (nodes && nodes.length > 0) {\r\n\t var firstNode = nodes[0];\r\n\t var parent = firstNode.parent;\r\n\t var editor = firstNode.editor;\r\n\t var firstIndex = firstNode.getIndex();\r\n\t editor.highlighter.unhighlight();\r\n\r\n\t // adjust the focus\r\n\t var oldSelection = editor.getSelection();\r\n\t Node.blurNodes(nodes);\r\n\t var newSelection = editor.getSelection();\r\n\r\n\t // remove the nodes\r\n\t nodes.forEach(function (node) {\r\n\t node.parent._remove(node);\r\n\t });\r\n\r\n\t // store history action\r\n\t editor._onAction('removeNodes', {\r\n\t nodes: nodes.slice(0), // store a copy of the array!\r\n\t parent: parent,\r\n\t index: firstIndex,\r\n\t oldSelection: oldSelection,\r\n\t newSelection: newSelection\r\n\t });\r\n\t }\r\n\t};\r\n\r\n\r\n\t/**\r\n\t * Duplicate nodes\r\n\t * duplicated nodes will be added right after the original nodes\r\n\t * @param {Node[] | Node} nodes\r\n\t */\r\n\tNode.onDuplicate = function(nodes) {\r\n\t if (!Array.isArray(nodes)) {\r\n\t return Node.onDuplicate([nodes]);\r\n\t }\r\n\r\n\t if (nodes && nodes.length > 0) {\r\n\t var lastNode = nodes[nodes.length - 1];\r\n\t var parent = lastNode.parent;\r\n\t var editor = lastNode.editor;\r\n\r\n\t editor.deselect(editor.multiselection.nodes);\r\n\r\n\t // duplicate the nodes\r\n\t var oldSelection = editor.getSelection();\r\n\t var afterNode = lastNode;\r\n\t var clones = nodes.map(function (node) {\r\n\t var clone = node.clone();\r\n\t parent.insertAfter(clone, afterNode);\r\n\t afterNode = clone;\r\n\t return clone;\r\n\t });\r\n\r\n\t // set selection to the duplicated nodes\r\n\t if (nodes.length === 1) {\r\n\t clones[0].focus();\r\n\t }\r\n\t else {\r\n\t editor.select(clones);\r\n\t }\r\n\t var newSelection = editor.getSelection();\r\n\r\n\t editor._onAction('duplicateNodes', {\r\n\t afterNode: lastNode,\r\n\t nodes: clones,\r\n\t parent: parent,\r\n\t oldSelection: oldSelection,\r\n\t newSelection: newSelection\r\n\t });\r\n\t }\r\n\t};\r\n\r\n\t/**\r\n\t * Handle insert before event\r\n\t * @param {String} [field]\r\n\t * @param {*} [value]\r\n\t * @param {String} [type] Can be 'auto', 'array', 'object', or 'string'\r\n\t * @private\r\n\t */\r\n\tNode.prototype._onInsertBefore = function (field, value, type) {\r\n\t var oldSelection = this.editor.getSelection();\r\n\r\n\t var newNode = new Node(this.editor, {\r\n\t field: (field != undefined) ? field : '',\r\n\t value: (value != undefined) ? value : '',\r\n\t type: type\r\n\t });\r\n\t newNode.expand(true);\r\n\t this.parent.insertBefore(newNode, this);\r\n\t this.editor.highlighter.unhighlight();\r\n\t newNode.focus('field');\r\n\t var newSelection = this.editor.getSelection();\r\n\r\n\t this.editor._onAction('insertBeforeNodes', {\r\n\t nodes: [newNode],\r\n\t beforeNode: this,\r\n\t parent: this.parent,\r\n\t oldSelection: oldSelection,\r\n\t newSelection: newSelection\r\n\t });\r\n\t};\r\n\r\n\t/**\r\n\t * Handle insert after event\r\n\t * @param {String} [field]\r\n\t * @param {*} [value]\r\n\t * @param {String} [type] Can be 'auto', 'array', 'object', or 'string'\r\n\t * @private\r\n\t */\r\n\tNode.prototype._onInsertAfter = function (field, value, type) {\r\n\t var oldSelection = this.editor.getSelection();\r\n\r\n\t var newNode = new Node(this.editor, {\r\n\t field: (field != undefined) ? field : '',\r\n\t value: (value != undefined) ? value : '',\r\n\t type: type\r\n\t });\r\n\t newNode.expand(true);\r\n\t this.parent.insertAfter(newNode, this);\r\n\t this.editor.highlighter.unhighlight();\r\n\t newNode.focus('field');\r\n\t var newSelection = this.editor.getSelection();\r\n\r\n\t this.editor._onAction('insertAfterNodes', {\r\n\t nodes: [newNode],\r\n\t afterNode: this,\r\n\t parent: this.parent,\r\n\t oldSelection: oldSelection,\r\n\t newSelection: newSelection\r\n\t });\r\n\t};\r\n\r\n\t/**\r\n\t * Handle append event\r\n\t * @param {String} [field]\r\n\t * @param {*} [value]\r\n\t * @param {String} [type] Can be 'auto', 'array', 'object', or 'string'\r\n\t * @private\r\n\t */\r\n\tNode.prototype._onAppend = function (field, value, type) {\r\n\t var oldSelection = this.editor.getSelection();\r\n\r\n\t var newNode = new Node(this.editor, {\r\n\t field: (field != undefined) ? field : '',\r\n\t value: (value != undefined) ? value : '',\r\n\t type: type\r\n\t });\r\n\t newNode.expand(true);\r\n\t this.parent.appendChild(newNode);\r\n\t this.editor.highlighter.unhighlight();\r\n\t newNode.focus('field');\r\n\t var newSelection = this.editor.getSelection();\r\n\r\n\t this.editor._onAction('appendNodes', {\r\n\t nodes: [newNode],\r\n\t parent: this.parent,\r\n\t oldSelection: oldSelection,\r\n\t newSelection: newSelection\r\n\t });\r\n\t};\r\n\r\n\t/**\r\n\t * Change the type of the node's value\r\n\t * @param {String} newType\r\n\t * @private\r\n\t */\r\n\tNode.prototype._onChangeType = function (newType) {\r\n\t var oldType = this.type;\r\n\t if (newType != oldType) {\r\n\t var oldSelection = this.editor.getSelection();\r\n\t this.changeType(newType);\r\n\t var newSelection = this.editor.getSelection();\r\n\r\n\t this.editor._onAction('changeType', {\r\n\t node: this,\r\n\t oldType: oldType,\r\n\t newType: newType,\r\n\t oldSelection: oldSelection,\r\n\t newSelection: newSelection\r\n\t });\r\n\t }\r\n\t};\r\n\r\n\t/**\r\n\t * Sort the child's of the node. Only applicable when the node has type 'object'\r\n\t * or 'array'.\r\n\t * @param {String} direction Sorting direction. Available values: \"asc\", \"desc\"\r\n\t * @private\r\n\t */\r\n\tNode.prototype.sort = function (direction) {\r\n\t if (!this._hasChilds()) {\r\n\t return;\r\n\t }\r\n\r\n\t var order = (direction == 'desc') ? -1 : 1;\r\n\t var prop = (this.type == 'array') ? 'value': 'field';\r\n\t this.hideChilds();\r\n\r\n\t var oldChilds = this.childs;\r\n\t var oldSortOrder = this.sortOrder;\r\n\r\n\t // copy the array (the old one will be kept for an undo action\r\n\t this.childs = this.childs.concat();\r\n\r\n\t // sort the arrays\r\n\t this.childs.sort(function (a, b) {\r\n\t return order * naturalSort(a[prop], b[prop]);\r\n\t });\r\n\t this.sortOrder = (order == 1) ? 'asc' : 'desc';\r\n\r\n\t this.editor._onAction('sort', {\r\n\t node: this,\r\n\t oldChilds: oldChilds,\r\n\t oldSort: oldSortOrder,\r\n\t newChilds: this.childs,\r\n\t newSort: this.sortOrder\r\n\t });\r\n\r\n\t this.showChilds();\r\n\t};\r\n\r\n\t/**\r\n\t * Create a table row with an append button.\r\n\t * @return {HTMLElement | undefined} buttonAppend or undefined when inapplicable\r\n\t */\r\n\tNode.prototype.getAppend = function () {\r\n\t if (!this.append) {\r\n\t this.append = new AppendNode(this.editor);\r\n\t this.append.setParent(this);\r\n\t }\r\n\t return this.append.getDom();\r\n\t};\r\n\r\n\t/**\r\n\t * Find the node from an event target\r\n\t * @param {Node} target\r\n\t * @return {Node | undefined} node or undefined when not found\r\n\t * @static\r\n\t */\r\n\tNode.getNodeFromTarget = function (target) {\r\n\t while (target) {\r\n\t if (target.node) {\r\n\t return target.node;\r\n\t }\r\n\t target = target.parentNode;\r\n\t }\r\n\r\n\t return undefined;\r\n\t};\r\n\r\n\t/**\r\n\t * Remove the focus of given nodes, and move the focus to the (a) node before,\r\n\t * (b) the node after, or (c) the parent node.\r\n\t * @param {Array. | Node} nodes\r\n\t */\r\n\tNode.blurNodes = function (nodes) {\r\n\t if (!Array.isArray(nodes)) {\r\n\t Node.blurNodes([nodes]);\r\n\t return;\r\n\t }\r\n\r\n\t var firstNode = nodes[0];\r\n\t var parent = firstNode.parent;\r\n\t var firstIndex = firstNode.getIndex();\r\n\r\n\t if (parent.childs[firstIndex + nodes.length]) {\r\n\t parent.childs[firstIndex + nodes.length].focus();\r\n\t }\r\n\t else if (parent.childs[firstIndex - 1]) {\r\n\t parent.childs[firstIndex - 1].focus();\r\n\t }\r\n\t else {\r\n\t parent.focus();\r\n\t }\r\n\t};\r\n\r\n\t/**\r\n\t * Get the next sibling of current node\r\n\t * @return {Node} nextSibling\r\n\t * @private\r\n\t */\r\n\tNode.prototype._nextSibling = function () {\r\n\t var index = this.parent.childs.indexOf(this);\r\n\t return this.parent.childs[index + 1] || this.parent.append;\r\n\t};\r\n\r\n\t/**\r\n\t * Get the previously rendered node\r\n\t * @return {Node | null} previousNode\r\n\t * @private\r\n\t */\r\n\tNode.prototype._previousNode = function () {\r\n\t var prevNode = null;\r\n\t var dom = this.getDom();\r\n\t if (dom && dom.parentNode) {\r\n\t // find the previous field\r\n\t var prevDom = dom;\r\n\t do {\r\n\t prevDom = prevDom.previousSibling;\r\n\t prevNode = Node.getNodeFromTarget(prevDom);\r\n\t }\r\n\t while (prevDom && (prevNode instanceof AppendNode && !prevNode.isVisible()));\r\n\t }\r\n\t return prevNode;\r\n\t};\r\n\r\n\t/**\r\n\t * Get the next rendered node\r\n\t * @return {Node | null} nextNode\r\n\t * @private\r\n\t */\r\n\tNode.prototype._nextNode = function () {\r\n\t var nextNode = null;\r\n\t var dom = this.getDom();\r\n\t if (dom && dom.parentNode) {\r\n\t // find the previous field\r\n\t var nextDom = dom;\r\n\t do {\r\n\t nextDom = nextDom.nextSibling;\r\n\t nextNode = Node.getNodeFromTarget(nextDom);\r\n\t }\r\n\t while (nextDom && (nextNode instanceof AppendNode && !nextNode.isVisible()));\r\n\t }\r\n\r\n\t return nextNode;\r\n\t};\r\n\r\n\t/**\r\n\t * Get the first rendered node\r\n\t * @return {Node | null} firstNode\r\n\t * @private\r\n\t */\r\n\tNode.prototype._firstNode = function () {\r\n\t var firstNode = null;\r\n\t var dom = this.getDom();\r\n\t if (dom && dom.parentNode) {\r\n\t var firstDom = dom.parentNode.firstChild;\r\n\t firstNode = Node.getNodeFromTarget(firstDom);\r\n\t }\r\n\r\n\t return firstNode;\r\n\t};\r\n\r\n\t/**\r\n\t * Get the last rendered node\r\n\t * @return {Node | null} lastNode\r\n\t * @private\r\n\t */\r\n\tNode.prototype._lastNode = function () {\r\n\t var lastNode = null;\r\n\t var dom = this.getDom();\r\n\t if (dom && dom.parentNode) {\r\n\t var lastDom = dom.parentNode.lastChild;\r\n\t lastNode = Node.getNodeFromTarget(lastDom);\r\n\t while (lastDom && (lastNode instanceof AppendNode && !lastNode.isVisible())) {\r\n\t lastDom = lastDom.previousSibling;\r\n\t lastNode = Node.getNodeFromTarget(lastDom);\r\n\t }\r\n\t }\r\n\t return lastNode;\r\n\t};\r\n\r\n\t/**\r\n\t * Get the next element which can have focus.\r\n\t * @param {Element} elem\r\n\t * @return {Element | null} nextElem\r\n\t * @private\r\n\t */\r\n\tNode.prototype._previousElement = function (elem) {\r\n\t var dom = this.dom;\r\n\t // noinspection FallthroughInSwitchStatementJS\r\n\t switch (elem) {\r\n\t case dom.value:\r\n\t if (this.fieldEditable) {\r\n\t return dom.field;\r\n\t }\r\n\t // intentional fall through\r\n\t case dom.field:\r\n\t if (this._hasChilds()) {\r\n\t return dom.expand;\r\n\t }\r\n\t // intentional fall through\r\n\t case dom.expand:\r\n\t return dom.menu;\r\n\t case dom.menu:\r\n\t if (dom.drag) {\r\n\t return dom.drag;\r\n\t }\r\n\t // intentional fall through\r\n\t default:\r\n\t return null;\r\n\t }\r\n\t};\r\n\r\n\t/**\r\n\t * Get the next element which can have focus.\r\n\t * @param {Element} elem\r\n\t * @return {Element | null} nextElem\r\n\t * @private\r\n\t */\r\n\tNode.prototype._nextElement = function (elem) {\r\n\t var dom = this.dom;\r\n\t // noinspection FallthroughInSwitchStatementJS\r\n\t switch (elem) {\r\n\t case dom.drag:\r\n\t return dom.menu;\r\n\t case dom.menu:\r\n\t if (this._hasChilds()) {\r\n\t return dom.expand;\r\n\t }\r\n\t // intentional fall through\r\n\t case dom.expand:\r\n\t if (this.fieldEditable) {\r\n\t return dom.field;\r\n\t }\r\n\t // intentional fall through\r\n\t case dom.field:\r\n\t if (!this._hasChilds()) {\r\n\t return dom.value;\r\n\t }\r\n\t default:\r\n\t return null;\r\n\t }\r\n\t};\r\n\r\n\t/**\r\n\t * Get the dom name of given element. returns null if not found.\r\n\t * For example when element == dom.field, \"field\" is returned.\r\n\t * @param {Element} element\r\n\t * @return {String | null} elementName Available elements with name: 'drag',\r\n\t * 'menu', 'expand', 'field', 'value'\r\n\t * @private\r\n\t */\r\n\tNode.prototype._getElementName = function (element) {\r\n\t var dom = this.dom;\r\n\t for (var name in dom) {\r\n\t if (dom.hasOwnProperty(name)) {\r\n\t if (dom[name] == element) {\r\n\t return name;\r\n\t }\r\n\t }\r\n\t }\r\n\t return null;\r\n\t};\r\n\r\n\t/**\r\n\t * Test if this node has childs. This is the case when the node is an object\r\n\t * or array.\r\n\t * @return {boolean} hasChilds\r\n\t * @private\r\n\t */\r\n\tNode.prototype._hasChilds = function () {\r\n\t return this.type == 'array' || this.type == 'object';\r\n\t};\r\n\r\n\t// titles with explanation for the different types\r\n\tNode.TYPE_TITLES = {\r\n\t 'auto': 'Field type \"auto\". ' +\r\n\t 'The field type is automatically determined from the value ' +\r\n\t 'and can be a string, number, boolean, or null.',\r\n\t 'object': 'Field type \"object\". ' +\r\n\t 'An object contains an unordered set of key/value pairs.',\r\n\t 'array': 'Field type \"array\". ' +\r\n\t 'An array contains an ordered collection of values.',\r\n\t 'string': 'Field type \"string\". ' +\r\n\t 'Field type is not determined from the value, ' +\r\n\t 'but always returned as string.'\r\n\t};\r\n\r\n\t/**\r\n\t * Show a contextmenu for this node\r\n\t * @param {HTMLElement} anchor Anchor element to attach the context menu to\r\n\t * as sibling.\r\n\t * @param {function} [onClose] Callback method called when the context menu\r\n\t * is being closed.\r\n\t */\r\n\tNode.prototype.showContextMenu = function (anchor, onClose) {\r\n\t var node = this;\r\n\t var titles = Node.TYPE_TITLES;\r\n\t var items = [];\r\n\r\n\t if (this.editable.value) {\r\n\t items.push({\r\n\t text: 'Type',\r\n\t title: 'Change the type of this field',\r\n\t className: 'jsoneditor-type-' + this.type,\r\n\t submenu: [\r\n\t {\r\n\t text: 'Auto',\r\n\t className: 'jsoneditor-type-auto' +\r\n\t (this.type == 'auto' ? ' jsoneditor-selected' : ''),\r\n\t title: titles.auto,\r\n\t click: function () {\r\n\t node._onChangeType('auto');\r\n\t }\r\n\t },\r\n\t {\r\n\t text: 'Array',\r\n\t className: 'jsoneditor-type-array' +\r\n\t (this.type == 'array' ? ' jsoneditor-selected' : ''),\r\n\t title: titles.array,\r\n\t click: function () {\r\n\t node._onChangeType('array');\r\n\t }\r\n\t },\r\n\t {\r\n\t text: 'Object',\r\n\t className: 'jsoneditor-type-object' +\r\n\t (this.type == 'object' ? ' jsoneditor-selected' : ''),\r\n\t title: titles.object,\r\n\t click: function () {\r\n\t node._onChangeType('object');\r\n\t }\r\n\t },\r\n\t {\r\n\t text: 'String',\r\n\t className: 'jsoneditor-type-string' +\r\n\t (this.type == 'string' ? ' jsoneditor-selected' : ''),\r\n\t title: titles.string,\r\n\t click: function () {\r\n\t node._onChangeType('string');\r\n\t }\r\n\t }\r\n\t ]\r\n\t });\r\n\t }\r\n\r\n\t if (this._hasChilds()) {\r\n\t var direction = ((this.sortOrder == 'asc') ? 'desc': 'asc');\r\n\t items.push({\r\n\t text: 'Sort',\r\n\t title: 'Sort the childs of this ' + this.type,\r\n\t className: 'jsoneditor-sort-' + direction,\r\n\t click: function () {\r\n\t node.sort(direction);\r\n\t },\r\n\t submenu: [\r\n\t {\r\n\t text: 'Ascending',\r\n\t className: 'jsoneditor-sort-asc',\r\n\t title: 'Sort the childs of this ' + this.type + ' in ascending order',\r\n\t click: function () {\r\n\t node.sort('asc');\r\n\t }\r\n\t },\r\n\t {\r\n\t text: 'Descending',\r\n\t className: 'jsoneditor-sort-desc',\r\n\t title: 'Sort the childs of this ' + this.type +' in descending order',\r\n\t click: function () {\r\n\t node.sort('desc');\r\n\t }\r\n\t }\r\n\t ]\r\n\t });\r\n\t }\r\n\r\n\t if (this.parent && this.parent._hasChilds()) {\r\n\t if (items.length) {\r\n\t // create a separator\r\n\t items.push({\r\n\t 'type': 'separator'\r\n\t });\r\n\t }\r\n\r\n\t // create append button (for last child node only)\r\n\t var childs = node.parent.childs;\r\n\t if (node == childs[childs.length - 1]) {\r\n\t items.push({\r\n\t text: 'Append',\r\n\t title: 'Append a new field with type \\'auto\\' after this field (Ctrl+Shift+Ins)',\r\n\t submenuTitle: 'Select the type of the field to be appended',\r\n\t className: 'jsoneditor-append',\r\n\t click: function () {\r\n\t node._onAppend('', '', 'auto');\r\n\t },\r\n\t submenu: [\r\n\t {\r\n\t text: 'Auto',\r\n\t className: 'jsoneditor-type-auto',\r\n\t title: titles.auto,\r\n\t click: function () {\r\n\t node._onAppend('', '', 'auto');\r\n\t }\r\n\t },\r\n\t {\r\n\t text: 'Array',\r\n\t className: 'jsoneditor-type-array',\r\n\t title: titles.array,\r\n\t click: function () {\r\n\t node._onAppend('', []);\r\n\t }\r\n\t },\r\n\t {\r\n\t text: 'Object',\r\n\t className: 'jsoneditor-type-object',\r\n\t title: titles.object,\r\n\t click: function () {\r\n\t node._onAppend('', {});\r\n\t }\r\n\t },\r\n\t {\r\n\t text: 'String',\r\n\t className: 'jsoneditor-type-string',\r\n\t title: titles.string,\r\n\t click: function () {\r\n\t node._onAppend('', '', 'string');\r\n\t }\r\n\t }\r\n\t ]\r\n\t });\r\n\t }\r\n\r\n\t // create insert button\r\n\t items.push({\r\n\t text: 'Insert',\r\n\t title: 'Insert a new field with type \\'auto\\' before this field (Ctrl+Ins)',\r\n\t submenuTitle: 'Select the type of the field to be inserted',\r\n\t className: 'jsoneditor-insert',\r\n\t click: function () {\r\n\t node._onInsertBefore('', '', 'auto');\r\n\t },\r\n\t submenu: [\r\n\t {\r\n\t text: 'Auto',\r\n\t className: 'jsoneditor-type-auto',\r\n\t title: titles.auto,\r\n\t click: function () {\r\n\t node._onInsertBefore('', '', 'auto');\r\n\t }\r\n\t },\r\n\t {\r\n\t text: 'Array',\r\n\t className: 'jsoneditor-type-array',\r\n\t title: titles.array,\r\n\t click: function () {\r\n\t node._onInsertBefore('', []);\r\n\t }\r\n\t },\r\n\t {\r\n\t text: 'Object',\r\n\t className: 'jsoneditor-type-object',\r\n\t title: titles.object,\r\n\t click: function () {\r\n\t node._onInsertBefore('', {});\r\n\t }\r\n\t },\r\n\t {\r\n\t text: 'String',\r\n\t className: 'jsoneditor-type-string',\r\n\t title: titles.string,\r\n\t click: function () {\r\n\t node._onInsertBefore('', '', 'string');\r\n\t }\r\n\t }\r\n\t ]\r\n\t });\r\n\r\n\t if (this.editable.field) {\r\n\t // create duplicate button\r\n\t items.push({\r\n\t text: 'Duplicate',\r\n\t title: 'Duplicate this field (Ctrl+D)',\r\n\t className: 'jsoneditor-duplicate',\r\n\t click: function () {\r\n\t Node.onDuplicate(node);\r\n\t }\r\n\t });\r\n\r\n\t // create remove button\r\n\t items.push({\r\n\t text: 'Remove',\r\n\t title: 'Remove this field (Ctrl+Del)',\r\n\t className: 'jsoneditor-remove',\r\n\t click: function () {\r\n\t Node.onRemove(node);\r\n\t }\r\n\t });\r\n\t }\r\n\t }\r\n\r\n\t var menu = new ContextMenu(items, {close: onClose});\r\n\t menu.show(anchor, this.editor.content);\r\n\t};\r\n\r\n\t/**\r\n\t * get the type of a value\r\n\t * @param {*} value\r\n\t * @return {String} type Can be 'object', 'array', 'string', 'auto'\r\n\t * @private\r\n\t */\r\n\tNode.prototype._getType = function(value) {\r\n\t if (value instanceof Array) {\r\n\t return 'array';\r\n\t }\r\n\t if (value instanceof Object) {\r\n\t return 'object';\r\n\t }\r\n\t if (typeof(value) == 'string' && typeof(this._stringCast(value)) != 'string') {\r\n\t return 'string';\r\n\t }\r\n\r\n\t return 'auto';\r\n\t};\r\n\r\n\t/**\r\n\t * cast contents of a string to the correct type. This can be a string,\r\n\t * a number, a boolean, etc\r\n\t * @param {String} str\r\n\t * @return {*} castedStr\r\n\t * @private\r\n\t */\r\n\tNode.prototype._stringCast = function(str) {\r\n\t var lower = str.toLowerCase(),\r\n\t num = Number(str), // will nicely fail with '123ab'\r\n\t numFloat = parseFloat(str); // will nicely fail with ' '\r\n\r\n\t if (str == '') {\r\n\t return '';\r\n\t }\r\n\t else if (lower == 'null') {\r\n\t return null;\r\n\t }\r\n\t else if (lower == 'true') {\r\n\t return true;\r\n\t }\r\n\t else if (lower == 'false') {\r\n\t return false;\r\n\t }\r\n\t else if (!isNaN(num) && !isNaN(numFloat)) {\r\n\t return num;\r\n\t }\r\n\t else {\r\n\t return str;\r\n\t }\r\n\t};\r\n\r\n\t/**\r\n\t * escape a text, such that it can be displayed safely in an HTML element\r\n\t * @param {String} text\r\n\t * @return {String} escapedText\r\n\t * @private\r\n\t */\r\n\tNode.prototype._escapeHTML = function (text) {\r\n\t if (typeof text !== 'string') {\r\n\t return String(text);\r\n\t }\r\n\t else {\r\n\t var htmlEscaped = String(text)\r\n\t .replace(/&/g, '&') // must be replaced first!\r\n\t .replace(//g, '>')\r\n\t .replace(/ /g, '  ') // replace double space with an nbsp and space\r\n\t .replace(/^ /, ' ') // space at start\r\n\t .replace(/ $/, ' '); // space at end\r\n\r\n\t var json = JSON.stringify(htmlEscaped);\r\n\t var html = json.substring(1, json.length - 1);\r\n\t if (this.editor.options.escapeUnicode === true) {\r\n\t html = util.escapeUnicodeChars(html);\r\n\t }\r\n\t return html;\r\n\t }\r\n\t};\r\n\r\n\t/**\r\n\t * unescape a string.\r\n\t * @param {String} escapedText\r\n\t * @return {String} text\r\n\t * @private\r\n\t */\r\n\tNode.prototype._unescapeHTML = function (escapedText) {\r\n\t var json = '\"' + this._escapeJSON(escapedText) + '\"';\r\n\t var htmlEscaped = util.parse(json);\r\n\r\n\t return htmlEscaped\r\n\t .replace(/</g, '<')\r\n\t .replace(/>/g, '>')\r\n\t .replace(/ |\\u00A0/g, ' ')\r\n\t .replace(/&/g, '&'); // must be replaced last\r\n\t};\r\n\r\n\t/**\r\n\t * escape a text to make it a valid JSON string. The method will:\r\n\t * - replace unescaped double quotes with '\\\"'\r\n\t * - replace unescaped backslash with '\\\\'\r\n\t * - replace returns with '\\n'\r\n\t * @param {String} text\r\n\t * @return {String} escapedText\r\n\t * @private\r\n\t */\r\n\tNode.prototype._escapeJSON = function (text) {\r\n\t // TODO: replace with some smart regex (only when a new solution is faster!)\r\n\t var escaped = '';\r\n\t var i = 0;\r\n\t while (i < text.length) {\r\n\t var c = text.charAt(i);\r\n\t if (c == '\\n') {\r\n\t escaped += '\\\\n';\r\n\t }\r\n\t else if (c == '\\\\') {\r\n\t escaped += c;\r\n\t i++;\r\n\r\n\t c = text.charAt(i);\r\n\t if (c === '' || '\"\\\\/bfnrtu'.indexOf(c) == -1) {\r\n\t escaped += '\\\\'; // no valid escape character\r\n\t }\r\n\t escaped += c;\r\n\t }\r\n\t else if (c == '\"') {\r\n\t escaped += '\\\\\"';\r\n\t }\r\n\t else {\r\n\t escaped += c;\r\n\t }\r\n\t i++;\r\n\t }\r\n\r\n\t return escaped;\r\n\t};\r\n\r\n\t// TODO: find a nicer solution to resolve this circular dependency between Node and AppendNode\r\n\tvar AppendNode = appendNodeFactory(Node);\r\n\r\n\tmodule.exports = Node;\r\n\r\n\r\n/***/ },\r\n/* 59 */\r\n/***/ function(module, exports) {\r\n\r\n\t/*\r\n\t * Natural Sort algorithm for Javascript - Version 0.7 - Released under MIT license\r\n\t * Author: Jim Palmer (based on chunking idea from Dave Koelle)\r\n\t */\r\n\t/*jshint unused:false */\r\n\tmodule.exports = function naturalSort (a, b) {\r\n\t\t\"use strict\";\r\n\t\tvar re = /(^([+\\-]?(?:0|[1-9]\\d*)(?:\\.\\d*)?(?:[eE][+\\-]?\\d+)?)?$|^0x[0-9a-f]+$|\\d+)/gi,\r\n\t\t\tsre = /(^[ ]*|[ ]*$)/g,\r\n\t\t\tdre = /(^([\\w ]+,?[\\w ]+)?[\\w ]+,?[\\w ]+\\d+:\\d+(:\\d+)?[\\w ]?|^\\d{1,4}[\\/\\-]\\d{1,4}[\\/\\-]\\d{1,4}|^\\w+, \\w+ \\d+, \\d{4})/,\r\n\t\t\thre = /^0x[0-9a-f]+$/i,\r\n\t\t\tore = /^0/,\r\n\t\t\ti = function(s) { return naturalSort.insensitive && ('' + s).toLowerCase() || '' + s; },\r\n\t\t\t// convert all to strings strip whitespace\r\n\t\t\tx = i(a).replace(sre, '') || '',\r\n\t\t\ty = i(b).replace(sre, '') || '',\r\n\t\t\t// chunk/tokenize\r\n\t\t\txN = x.replace(re, '\\0$1\\0').replace(/\\0$/,'').replace(/^\\0/,'').split('\\0'),\r\n\t\t\tyN = y.replace(re, '\\0$1\\0').replace(/\\0$/,'').replace(/^\\0/,'').split('\\0'),\r\n\t\t\t// numeric, hex or date detection\r\n\t\t\txD = parseInt(x.match(hre), 16) || (xN.length !== 1 && x.match(dre) && Date.parse(x)),\r\n\t\t\tyD = parseInt(y.match(hre), 16) || xD && y.match(dre) && Date.parse(y) || null,\r\n\t\t\toFxNcL, oFyNcL;\r\n\t\t// first try and sort Hex codes or Dates\r\n\t\tif (yD) {\r\n\t\t\tif ( xD < yD ) { return -1; }\r\n\t\t\telse if ( xD > yD ) { return 1; }\r\n\t\t}\r\n\t\t// natural sorting through split numeric strings and default strings\r\n\t\tfor(var cLoc=0, numS=Math.max(xN.length, yN.length); cLoc < numS; cLoc++) {\r\n\t\t\t// find floats not starting with '0', string or 0 if not defined (Clint Priest)\r\n\t\t\toFxNcL = !(xN[cLoc] || '').match(ore) && parseFloat(xN[cLoc]) || xN[cLoc] || 0;\r\n\t\t\toFyNcL = !(yN[cLoc] || '').match(ore) && parseFloat(yN[cLoc]) || yN[cLoc] || 0;\r\n\t\t\t// handle numeric vs string comparison - number < string - (Kyle Adams)\r\n\t\t\tif (isNaN(oFxNcL) !== isNaN(oFyNcL)) { return (isNaN(oFxNcL)) ? 1 : -1; }\r\n\t\t\t// rely on string comparison if different types - i.e. '02' < 2 != '02' < '2'\r\n\t\t\telse if (typeof oFxNcL !== typeof oFyNcL) {\r\n\t\t\t\toFxNcL += '';\r\n\t\t\t\toFyNcL += '';\r\n\t\t\t}\r\n\t\t\tif (oFxNcL < oFyNcL) { return -1; }\r\n\t\t\tif (oFxNcL > oFyNcL) { return 1; }\r\n\t\t}\r\n\t\treturn 0;\r\n\t};\r\n\r\n\r\n/***/ },\r\n/* 60 */\r\n/***/ function(module, exports, __webpack_require__) {\r\n\r\n\t'use strict';\r\n\r\n\tvar util = __webpack_require__(54);\r\n\tvar ContextMenu = __webpack_require__(57);\r\n\r\n\t/**\r\n\t * A factory function to create an AppendNode, which depends on a Node\r\n\t * @param {Node} Node\r\n\t */\r\n\tfunction appendNodeFactory(Node) {\r\n\t /**\r\n\t * @constructor AppendNode\r\n\t * @extends Node\r\n\t * @param {TreeEditor} editor\r\n\t * Create a new AppendNode. This is a special node which is created at the\r\n\t * end of the list with childs for an object or array\r\n\t */\r\n\t function AppendNode (editor) {\r\n\t /** @type {TreeEditor} */\r\n\t this.editor = editor;\r\n\t this.dom = {};\r\n\t }\r\n\r\n\t AppendNode.prototype = new Node();\r\n\r\n\t /**\r\n\t * Return a table row with an append button.\r\n\t * @return {Element} dom TR element\r\n\t */\r\n\t AppendNode.prototype.getDom = function () {\r\n\t // TODO: implement a new solution for the append node\r\n\t var dom = this.dom;\r\n\r\n\t if (dom.tr) {\r\n\t return dom.tr;\r\n\t }\r\n\r\n\t this._updateEditability();\r\n\r\n\t // a row for the append button\r\n\t var trAppend = document.createElement('tr');\r\n\t trAppend.node = this;\r\n\t dom.tr = trAppend;\r\n\r\n\t // TODO: consistent naming\r\n\r\n\t if (this.editor.options.mode === 'tree') {\r\n\t // a cell for the dragarea column\r\n\t dom.tdDrag = document.createElement('td');\r\n\r\n\t // create context menu\r\n\t var tdMenu = document.createElement('td');\r\n\t dom.tdMenu = tdMenu;\r\n\t var menu = document.createElement('button');\r\n\t menu.type = 'button';\r\n\t menu.className = 'jsoneditor-contextmenu';\r\n\t menu.title = 'Click to open the actions menu (Ctrl+M)';\r\n\t dom.menu = menu;\r\n\t tdMenu.appendChild(dom.menu);\r\n\t }\r\n\r\n\t // a cell for the contents (showing text 'empty')\r\n\t var tdAppend = document.createElement('td');\r\n\t var domText = document.createElement('div');\r\n\t domText.innerHTML = '(empty)';\r\n\t domText.className = 'jsoneditor-readonly';\r\n\t tdAppend.appendChild(domText);\r\n\t dom.td = tdAppend;\r\n\t dom.text = domText;\r\n\r\n\t this.updateDom();\r\n\r\n\t return trAppend;\r\n\t };\r\n\r\n\t /**\r\n\t * Update the HTML dom of the Node\r\n\t */\r\n\t AppendNode.prototype.updateDom = function () {\r\n\t var dom = this.dom;\r\n\t var tdAppend = dom.td;\r\n\t if (tdAppend) {\r\n\t tdAppend.style.paddingLeft = (this.getLevel() * 24 + 26) + 'px';\r\n\t // TODO: not so nice hard coded offset\r\n\t }\r\n\r\n\t var domText = dom.text;\r\n\t if (domText) {\r\n\t domText.innerHTML = '(empty ' + this.parent.type + ')';\r\n\t }\r\n\r\n\t // attach or detach the contents of the append node:\r\n\t // hide when the parent has childs, show when the parent has no childs\r\n\t var trAppend = dom.tr;\r\n\t if (!this.isVisible()) {\r\n\t if (dom.tr.firstChild) {\r\n\t if (dom.tdDrag) {\r\n\t trAppend.removeChild(dom.tdDrag);\r\n\t }\r\n\t if (dom.tdMenu) {\r\n\t trAppend.removeChild(dom.tdMenu);\r\n\t }\r\n\t trAppend.removeChild(tdAppend);\r\n\t }\r\n\t }\r\n\t else {\r\n\t if (!dom.tr.firstChild) {\r\n\t if (dom.tdDrag) {\r\n\t trAppend.appendChild(dom.tdDrag);\r\n\t }\r\n\t if (dom.tdMenu) {\r\n\t trAppend.appendChild(dom.tdMenu);\r\n\t }\r\n\t trAppend.appendChild(tdAppend);\r\n\t }\r\n\t }\r\n\t };\r\n\r\n\t /**\r\n\t * Check whether the AppendNode is currently visible.\r\n\t * the AppendNode is visible when its parent has no childs (i.e. is empty).\r\n\t * @return {boolean} isVisible\r\n\t */\r\n\t AppendNode.prototype.isVisible = function () {\r\n\t return (this.parent.childs.length == 0);\r\n\t };\r\n\r\n\t /**\r\n\t * Show a contextmenu for this node\r\n\t * @param {HTMLElement} anchor The element to attach the menu to.\r\n\t * @param {function} [onClose] Callback method called when the context menu\r\n\t * is being closed.\r\n\t */\r\n\t AppendNode.prototype.showContextMenu = function (anchor, onClose) {\r\n\t var node = this;\r\n\t var titles = Node.TYPE_TITLES;\r\n\t var items = [\r\n\t // create append button\r\n\t {\r\n\t 'text': 'Append',\r\n\t 'title': 'Append a new field with type \\'auto\\' (Ctrl+Shift+Ins)',\r\n\t 'submenuTitle': 'Select the type of the field to be appended',\r\n\t 'className': 'jsoneditor-insert',\r\n\t 'click': function () {\r\n\t node._onAppend('', '', 'auto');\r\n\t },\r\n\t 'submenu': [\r\n\t {\r\n\t 'text': 'Auto',\r\n\t 'className': 'jsoneditor-type-auto',\r\n\t 'title': titles.auto,\r\n\t 'click': function () {\r\n\t node._onAppend('', '', 'auto');\r\n\t }\r\n\t },\r\n\t {\r\n\t 'text': 'Array',\r\n\t 'className': 'jsoneditor-type-array',\r\n\t 'title': titles.array,\r\n\t 'click': function () {\r\n\t node._onAppend('', []);\r\n\t }\r\n\t },\r\n\t {\r\n\t 'text': 'Object',\r\n\t 'className': 'jsoneditor-type-object',\r\n\t 'title': titles.object,\r\n\t 'click': function () {\r\n\t node._onAppend('', {});\r\n\t }\r\n\t },\r\n\t {\r\n\t 'text': 'String',\r\n\t 'className': 'jsoneditor-type-string',\r\n\t 'title': titles.string,\r\n\t 'click': function () {\r\n\t node._onAppend('', '', 'string');\r\n\t }\r\n\t }\r\n\t ]\r\n\t }\r\n\t ];\r\n\r\n\t var menu = new ContextMenu(items, {close: onClose});\r\n\t menu.show(anchor, this.editor.content);\r\n\t };\r\n\r\n\t /**\r\n\t * Handle an event. The event is catched centrally by the editor\r\n\t * @param {Event} event\r\n\t */\r\n\t AppendNode.prototype.onEvent = function (event) {\r\n\t var type = event.type;\r\n\t var target = event.target || event.srcElement;\r\n\t var dom = this.dom;\r\n\r\n\t // highlight the append nodes parent\r\n\t var menu = dom.menu;\r\n\t if (target == menu) {\r\n\t if (type == 'mouseover') {\r\n\t this.editor.highlighter.highlight(this.parent);\r\n\t }\r\n\t else if (type == 'mouseout') {\r\n\t this.editor.highlighter.unhighlight();\r\n\t }\r\n\t }\r\n\r\n\t // context menu events\r\n\t if (type == 'click' && target == dom.menu) {\r\n\t var highlighter = this.editor.highlighter;\r\n\t highlighter.highlight(this.parent);\r\n\t highlighter.lock();\r\n\t util.addClassName(dom.menu, 'jsoneditor-selected');\r\n\t this.showContextMenu(dom.menu, function () {\r\n\t util.removeClassName(dom.menu, 'jsoneditor-selected');\r\n\t highlighter.unlock();\r\n\t highlighter.unhighlight();\r\n\t });\r\n\t }\r\n\r\n\t if (type == 'keydown') {\r\n\t this.onKeyDown(event);\r\n\t }\r\n\t };\r\n\r\n\t return AppendNode;\r\n\t}\r\n\r\n\tmodule.exports = appendNodeFactory;\r\n\r\n\r\n/***/ },\r\n/* 61 */\r\n/***/ function(module, exports, __webpack_require__) {\r\n\r\n\t'use strict';\r\n\r\n\tvar ContextMenu = __webpack_require__(57);\r\n\r\n\t/**\r\n\t * Create a select box to be used in the editor menu's, which allows to switch mode\r\n\t * @param {HTMLElement} container\r\n\t * @param {String[]} modes Available modes: 'code', 'form', 'text', 'tree', 'view'\r\n\t * @param {String} current Available modes: 'code', 'form', 'text', 'tree', 'view'\r\n\t * @param {function(mode: string)} onSwitch Callback invoked on switch\r\n\t * @constructor\r\n\t */\r\n\tfunction ModeSwitcher(container, modes, current, onSwitch) {\r\n\t // available modes\r\n\t var availableModes = {\r\n\t code: {\r\n\t 'text': 'Code',\r\n\t 'title': 'Switch to code highlighter',\r\n\t 'click': function () {\r\n\t onSwitch('code')\r\n\t }\r\n\t },\r\n\t form: {\r\n\t 'text': 'Form',\r\n\t 'title': 'Switch to form editor',\r\n\t 'click': function () {\r\n\t onSwitch('form');\r\n\t }\r\n\t },\r\n\t text: {\r\n\t 'text': 'Text',\r\n\t 'title': 'Switch to plain text editor',\r\n\t 'click': function () {\r\n\t onSwitch('text');\r\n\t }\r\n\t },\r\n\t tree: {\r\n\t 'text': 'Tree',\r\n\t 'title': 'Switch to tree editor',\r\n\t 'click': function () {\r\n\t onSwitch('tree');\r\n\t }\r\n\t },\r\n\t view: {\r\n\t 'text': 'View',\r\n\t 'title': 'Switch to tree view',\r\n\t 'click': function () {\r\n\t onSwitch('view');\r\n\t }\r\n\t }\r\n\t };\r\n\r\n\t // list the selected modes\r\n\t var items = [];\r\n\t for (var i = 0; i < modes.length; i++) {\r\n\t var mode = modes[i];\r\n\t var item = availableModes[mode];\r\n\t if (!item) {\r\n\t throw new Error('Unknown mode \"' + mode + '\"');\r\n\t }\r\n\r\n\t item.className = 'jsoneditor-type-modes' + ((current == mode) ? ' jsoneditor-selected' : '');\r\n\t items.push(item);\r\n\t }\r\n\r\n\t // retrieve the title of current mode\r\n\t var currentMode = availableModes[current];\r\n\t if (!currentMode) {\r\n\t throw new Error('Unknown mode \"' + current + '\"');\r\n\t }\r\n\t var currentTitle = currentMode.text;\r\n\r\n\t // create the html element\r\n\t var box = document.createElement('button');\r\n\t box.type = 'button';\r\n\t box.className = 'jsoneditor-modes jsoneditor-separator';\r\n\t box.innerHTML = currentTitle + ' ▾';\r\n\t box.title = 'Switch editor mode';\r\n\t box.onclick = function () {\r\n\t var menu = new ContextMenu(items);\r\n\t menu.show(box);\r\n\t };\r\n\r\n\t var frame = document.createElement('div');\r\n\t frame.className = 'jsoneditor-modes';\r\n\t frame.style.position = 'relative';\r\n\t frame.appendChild(box);\r\n\r\n\t container.appendChild(frame);\r\n\r\n\t this.dom = {\r\n\t container: container,\r\n\t box: box,\r\n\t frame: frame\r\n\t };\r\n\t}\r\n\r\n\t/**\r\n\t * Set focus to switcher\r\n\t */\r\n\tModeSwitcher.prototype.focus = function () {\r\n\t this.dom.box.focus();\r\n\t};\r\n\r\n\t/**\r\n\t * Destroy the ModeSwitcher, remove from DOM\r\n\t */\r\n\tModeSwitcher.prototype.destroy = function () {\r\n\t if (this.dom && this.dom.frame && this.dom.frame.parentNode) {\r\n\t this.dom.frame.parentNode.removeChild(this.dom.frame);\r\n\t }\r\n\t this.dom = null;\r\n\t};\r\n\r\n\tmodule.exports = ModeSwitcher;\r\n\r\n\r\n/***/ },\r\n/* 62 */\r\n/***/ function(module, exports, __webpack_require__) {\r\n\r\n\t'use strict';\r\n\r\n\tvar ace;\r\n\ttry {\r\n\t ace = __webpack_require__(63);\r\n\t}\r\n\tcatch (err) {\r\n\t // failed to load ace, no problem, we will fall back to plain text\r\n\t}\r\n\r\n\tvar ModeSwitcher = __webpack_require__(61);\r\n\tvar util = __webpack_require__(54);\r\n\r\n\t// create a mixin with the functions for text mode\r\n\tvar textmode = {};\r\n\r\n\tvar MAX_ERRORS = 3; // maximum number of displayed errors at the bottom\r\n\r\n\tvar DEFAULT_THEME = 'ace/theme/jsoneditor';\r\n\r\n\t/**\r\n\t * Create a text editor\r\n\t * @param {Element} container\r\n\t * @param {Object} [options] Object with options. available options:\r\n\t * {String} mode Available values:\r\n\t * \"text\" (default)\r\n\t * or \"code\".\r\n\t * {Number} indentation Number of indentation\r\n\t * spaces. 2 by default.\r\n\t * {function} onChange Callback method\r\n\t * triggered on change\r\n\t * {function} onModeChange Callback method\r\n\t * triggered after setMode\r\n\t * {Object} ace A custom instance of\r\n\t * Ace editor.\r\n\t * {boolean} escapeUnicode If true, unicode\r\n\t * characters are escaped.\r\n\t * false by default.\r\n\t * @private\r\n\t */\r\n\ttextmode.create = function (container, options) {\r\n\t // read options\r\n\t options = options || {};\r\n\t this.options = options;\r\n\r\n\t // indentation\r\n\t if (options.indentation) {\r\n\t this.indentation = Number(options.indentation);\r\n\t }\r\n\t else {\r\n\t this.indentation = 2; // number of spaces\r\n\t }\r\n\r\n\t // grab ace from options if provided\r\n\t var _ace = options.ace ? options.ace : ace;\r\n\r\n\t // determine mode\r\n\t this.mode = (options.mode == 'code') ? 'code' : 'text';\r\n\t if (this.mode == 'code') {\r\n\t // verify whether Ace editor is available and supported\r\n\t if (typeof _ace === 'undefined') {\r\n\t this.mode = 'text';\r\n\t console.warn('Failed to load Ace editor, falling back to plain text mode. Please use a JSONEditor bundle including Ace, or pass Ace as via the configuration option `ace`.');\r\n\t }\r\n\t }\r\n\r\n\t // determine theme\r\n\t this.theme = options.theme || DEFAULT_THEME;\r\n\t if (this.theme === DEFAULT_THEME && window.ace) {\r\n\t __webpack_require__(70);\r\n\t }\r\n\r\n\t var me = this;\r\n\t this.container = container;\r\n\t this.dom = {};\r\n\t this.aceEditor = undefined; // ace code editor\r\n\t this.textarea = undefined; // plain text editor (fallback when Ace is not available)\r\n\t this.validateSchema = null;\r\n\r\n\t // create a debounced validate function\r\n\t this._debouncedValidate = util.debounce(this.validate.bind(this), this.DEBOUNCE_INTERVAL);\r\n\r\n\t this.width = container.clientWidth;\r\n\t this.height = container.clientHeight;\r\n\r\n\t this.frame = document.createElement('div');\r\n\t this.frame.className = 'jsoneditor jsoneditor-mode-' + this.options.mode;\r\n\t this.frame.onclick = function (event) {\r\n\t // prevent default submit action when the editor is located inside a form\r\n\t event.preventDefault();\r\n\t };\r\n\t this.frame.onkeydown = function (event) {\r\n\t me._onKeyDown(event);\r\n\t };\r\n\r\n\t // create menu\r\n\t this.menu = document.createElement('div');\r\n\t this.menu.className = 'jsoneditor-menu';\r\n\t this.frame.appendChild(this.menu);\r\n\r\n\t // create format button\r\n\t var buttonFormat = document.createElement('button');\r\n\t buttonFormat.type = 'button';\r\n\t buttonFormat.className = 'jsoneditor-format';\r\n\t buttonFormat.title = 'Format JSON data, with proper indentation and line feeds (Ctrl+\\\\)';\r\n\t this.menu.appendChild(buttonFormat);\r\n\t buttonFormat.onclick = function () {\r\n\t try {\r\n\t me.format();\r\n\t me._onChange();\r\n\t }\r\n\t catch (err) {\r\n\t me._onError(err);\r\n\t }\r\n\t };\r\n\r\n\t // create compact button\r\n\t var buttonCompact = document.createElement('button');\r\n\t buttonCompact.type = 'button';\r\n\t buttonCompact.className = 'jsoneditor-compact';\r\n\t buttonCompact.title = 'Compact JSON data, remove all whitespaces (Ctrl+Shift+\\\\)';\r\n\t this.menu.appendChild(buttonCompact);\r\n\t buttonCompact.onclick = function () {\r\n\t try {\r\n\t me.compact();\r\n\t me._onChange();\r\n\t }\r\n\t catch (err) {\r\n\t me._onError(err);\r\n\t }\r\n\t };\r\n\r\n\t // create mode box\r\n\t if (this.options && this.options.modes && this.options.modes.length) {\r\n\t this.modeSwitcher = new ModeSwitcher(this.menu, this.options.modes, this.options.mode, function onSwitch(mode) {\r\n\t // switch mode and restore focus\r\n\t me.setMode(mode);\r\n\t me.modeSwitcher.focus();\r\n\t });\r\n\t }\r\n\r\n\t this.content = document.createElement('div');\r\n\t this.content.className = 'jsoneditor-outer';\r\n\t this.frame.appendChild(this.content);\r\n\r\n\t this.container.appendChild(this.frame);\r\n\r\n\t if (this.mode == 'code') {\r\n\t this.editorDom = document.createElement('div');\r\n\t this.editorDom.style.height = '100%'; // TODO: move to css\r\n\t this.editorDom.style.width = '100%'; // TODO: move to css\r\n\t this.content.appendChild(this.editorDom);\r\n\r\n\t var aceEditor = _ace.edit(this.editorDom);\r\n\t aceEditor.$blockScrolling = Infinity;\r\n\t aceEditor.setTheme(this.theme);\r\n\t aceEditor.setShowPrintMargin(false);\r\n\t aceEditor.setFontSize(13);\r\n\t aceEditor.getSession().setMode('ace/mode/json');\r\n\t aceEditor.getSession().setTabSize(this.indentation);\r\n\t aceEditor.getSession().setUseSoftTabs(true);\r\n\t aceEditor.getSession().setUseWrapMode(true);\r\n\t aceEditor.commands.bindKey('Ctrl-L', null); // disable Ctrl+L (is used by the browser to select the address bar)\r\n\t aceEditor.commands.bindKey('Command-L', null); // disable Ctrl+L (is used by the browser to select the address bar)\r\n\t this.aceEditor = aceEditor;\r\n\r\n\t // TODO: deprecated since v5.0.0. Cleanup backward compatibility some day\r\n\t if (!this.hasOwnProperty('editor')) {\r\n\t Object.defineProperty(this, 'editor', {\r\n\t get: function () {\r\n\t console.warn('Property \"editor\" has been renamed to \"aceEditor\".');\r\n\t return me.aceEditor;\r\n\t },\r\n\t set: function (aceEditor) {\r\n\t console.warn('Property \"editor\" has been renamed to \"aceEditor\".');\r\n\t me.aceEditor = aceEditor;\r\n\t }\r\n\t });\r\n\t }\r\n\r\n\t var poweredBy = document.createElement('a');\r\n\t poweredBy.appendChild(document.createTextNode('powered by ace'));\r\n\t poweredBy.href = 'http://ace.ajax.org';\r\n\t poweredBy.target = '_blank';\r\n\t poweredBy.className = 'jsoneditor-poweredBy';\r\n\t poweredBy.onclick = function () {\r\n\t // TODO: this anchor falls below the margin of the content,\r\n\t // therefore the normal a.href does not work. We use a click event\r\n\t // for now, but this should be fixed.\r\n\t window.open(poweredBy.href, poweredBy.target);\r\n\t };\r\n\t this.menu.appendChild(poweredBy);\r\n\r\n\t // register onchange event\r\n\t aceEditor.on('change', this._onChange.bind(this));\r\n\t }\r\n\t else {\r\n\t // load a plain text textarea\r\n\t var textarea = document.createElement('textarea');\r\n\t textarea.className = 'jsoneditor-text';\r\n\t textarea.spellcheck = false;\r\n\t this.content.appendChild(textarea);\r\n\t this.textarea = textarea;\r\n\r\n\t // register onchange event\r\n\t if (this.textarea.oninput === null) {\r\n\t this.textarea.oninput = this._onChange.bind(this);\r\n\t }\r\n\t else {\r\n\t // oninput is undefined. For IE8-\r\n\t this.textarea.onchange = this._onChange.bind(this);\r\n\t }\r\n\t }\r\n\r\n\t this.setSchema(this.options.schema);\r\n\t};\r\n\r\n\t/**\r\n\t * Handle a change:\r\n\t * - Validate JSON schema\r\n\t * - Send a callback to the onChange listener if provided\r\n\t * @private\r\n\t */\r\n\ttextmode._onChange = function () {\r\n\t // validate JSON schema (if configured)\r\n\t this._debouncedValidate();\r\n\r\n\t // trigger the onChange callback\r\n\t if (this.options.onChange) {\r\n\t try {\r\n\t this.options.onChange();\r\n\t }\r\n\t catch (err) {\r\n\t console.error('Error in onChange callback: ', err);\r\n\t }\r\n\t }\r\n\t};\r\n\r\n\t/**\r\n\t * Event handler for keydown. Handles shortcut keys\r\n\t * @param {Event} event\r\n\t * @private\r\n\t */\r\n\ttextmode._onKeyDown = function (event) {\r\n\t var keynum = event.which || event.keyCode;\r\n\t var handled = false;\r\n\r\n\t if (keynum == 220 && event.ctrlKey) {\r\n\t if (event.shiftKey) { // Ctrl+Shift+\\\r\n\t this.compact();\r\n\t this._onChange();\r\n\t }\r\n\t else { // Ctrl+\\\r\n\t this.format();\r\n\t this._onChange();\r\n\t }\r\n\t handled = true;\r\n\t }\r\n\r\n\t if (handled) {\r\n\t event.preventDefault();\r\n\t event.stopPropagation();\r\n\t }\r\n\t};\r\n\r\n\t/**\r\n\t * Destroy the editor. Clean up DOM, event listeners, and web workers.\r\n\t */\r\n\ttextmode.destroy = function () {\r\n\t // remove old ace editor\r\n\t if (this.aceEditor) {\r\n\t this.aceEditor.destroy();\r\n\t this.aceEditor = null;\r\n\t }\r\n\r\n\t if (this.frame && this.container && this.frame.parentNode == this.container) {\r\n\t this.container.removeChild(this.frame);\r\n\t }\r\n\r\n\t if (this.modeSwitcher) {\r\n\t this.modeSwitcher.destroy();\r\n\t this.modeSwitcher = null;\r\n\t }\r\n\r\n\t this.textarea = null;\r\n\t \r\n\t this._debouncedValidate = null;\r\n\t};\r\n\r\n\t/**\r\n\t * Compact the code in the formatter\r\n\t */\r\n\ttextmode.compact = function () {\r\n\t var json = this.get();\r\n\t var text = JSON.stringify(json);\r\n\t this.setText(text);\r\n\t};\r\n\r\n\t/**\r\n\t * Format the code in the formatter\r\n\t */\r\n\ttextmode.format = function () {\r\n\t var json = this.get();\r\n\t var text = JSON.stringify(json, null, this.indentation);\r\n\t this.setText(text);\r\n\t};\r\n\r\n\t/**\r\n\t * Set focus to the formatter\r\n\t */\r\n\ttextmode.focus = function () {\r\n\t if (this.textarea) {\r\n\t this.textarea.focus();\r\n\t }\r\n\t if (this.aceEditor) {\r\n\t this.aceEditor.focus();\r\n\t }\r\n\t};\r\n\r\n\t/**\r\n\t * Resize the formatter\r\n\t */\r\n\ttextmode.resize = function () {\r\n\t if (this.aceEditor) {\r\n\t var force = false;\r\n\t this.aceEditor.resize(force);\r\n\t }\r\n\t};\r\n\r\n\t/**\r\n\t * Set json data in the formatter\r\n\t * @param {Object} json\r\n\t */\r\n\ttextmode.set = function(json) {\r\n\t this.setText(JSON.stringify(json, null, this.indentation));\r\n\t};\r\n\r\n\t/**\r\n\t * Get json data from the formatter\r\n\t * @return {Object} json\r\n\t */\r\n\ttextmode.get = function() {\r\n\t var text = this.getText();\r\n\t var json;\r\n\r\n\t try {\r\n\t json = util.parse(text); // this can throw an error\r\n\t }\r\n\t catch (err) {\r\n\t // try to sanitize json, replace JavaScript notation with JSON notation\r\n\t text = util.sanitize(text);\r\n\r\n\t // try to parse again\r\n\t json = util.parse(text); // this can throw an error\r\n\t }\r\n\r\n\t return json;\r\n\t};\r\n\r\n\t/**\r\n\t * Get the text contents of the editor\r\n\t * @return {String} jsonText\r\n\t */\r\n\ttextmode.getText = function() {\r\n\t if (this.textarea) {\r\n\t return this.textarea.value;\r\n\t }\r\n\t if (this.aceEditor) {\r\n\t return this.aceEditor.getValue();\r\n\t }\r\n\t return '';\r\n\t};\r\n\r\n\t/**\r\n\t * Set the text contents of the editor\r\n\t * @param {String} jsonText\r\n\t */\r\n\ttextmode.setText = function(jsonText) {\r\n\t var text;\r\n\r\n\t if (this.options.escapeUnicode === true) {\r\n\t text = util.escapeUnicodeChars(jsonText);\r\n\t }\r\n\t else {\r\n\t text = jsonText;\r\n\t }\r\n\r\n\t if (this.textarea) {\r\n\t this.textarea.value = text;\r\n\t }\r\n\t if (this.aceEditor) {\r\n\t // prevent emitting onChange events while setting new text\r\n\t var originalOnChange = this.options.onChange;\r\n\t this.options.onChange = null;\r\n\r\n\t this.aceEditor.setValue(text, -1);\r\n\r\n\t this.options.onChange = originalOnChange;\r\n\t }\r\n\r\n\t // validate JSON schema\r\n\t this.validate();\r\n\t};\r\n\r\n\t/**\r\n\t * Validate current JSON object against the configured JSON schema\r\n\t * Throws an exception when no JSON schema is configured\r\n\t */\r\n\ttextmode.validate = function () {\r\n\t // clear all current errors\r\n\t if (this.dom.validationErrors) {\r\n\t this.dom.validationErrors.parentNode.removeChild(this.dom.validationErrors);\r\n\t this.dom.validationErrors = null;\r\n\r\n\t this.content.style.marginBottom = '';\r\n\t this.content.style.paddingBottom = '';\r\n\t }\r\n\r\n\t var doValidate = false;\r\n\t var errors = [];\r\n\t var json;\r\n\t try {\r\n\t json = this.get(); // this can fail when there is no valid json\r\n\t doValidate = true;\r\n\t }\r\n\t catch (err) {\r\n\t // no valid JSON, don't validate\r\n\t }\r\n\r\n\t // only validate the JSON when parsing the JSON succeeded\r\n\t if (doValidate && this.validateSchema) {\r\n\t var valid = this.validateSchema(json);\r\n\t if (!valid) {\r\n\t errors = this.validateSchema.errors.map(function (error) {\r\n\t return util.improveSchemaError(error);\r\n\t });\r\n\t }\r\n\t }\r\n\r\n\t if (errors.length > 0) {\r\n\t // limit the number of displayed errors\r\n\t var limit = errors.length > MAX_ERRORS;\r\n\t if (limit) {\r\n\t errors = errors.slice(0, MAX_ERRORS);\r\n\t var hidden = this.validateSchema.errors.length - MAX_ERRORS;\r\n\t errors.push('(' + hidden + ' more errors...)')\r\n\t }\r\n\r\n\t var validationErrors = document.createElement('div');\r\n\t validationErrors.innerHTML = '' +\r\n\t '' +\r\n\t errors.map(function (error) {\r\n\t var message;\r\n\t if (typeof error === 'string') {\r\n\t message = '';\r\n\t }\r\n\t else {\r\n\t message = '' +\r\n\t '';\r\n\t }\r\n\r\n\t return '' + message + ''\r\n\t }).join('') +\r\n\t '' +\r\n\t '
' + error + '
' + error.dataPath + '' + error.message + '
';\r\n\r\n\t this.dom.validationErrors = validationErrors;\r\n\t this.frame.appendChild(validationErrors);\r\n\r\n\t var height = validationErrors.clientHeight;\r\n\t this.content.style.marginBottom = (-height) + 'px';\r\n\t this.content.style.paddingBottom = height + 'px';\r\n\t }\r\n\r\n\t // update the height of the ace editor\r\n\t if (this.aceEditor) {\r\n\t var force = false;\r\n\t this.aceEditor.resize(force);\r\n\t }\r\n\t};\r\n\r\n\t// define modes\r\n\tmodule.exports = [\r\n\t {\r\n\t mode: 'text',\r\n\t mixin: textmode,\r\n\t data: 'text',\r\n\t load: textmode.format\r\n\t },\r\n\t {\r\n\t mode: 'code',\r\n\t mixin: textmode,\r\n\t data: 'text',\r\n\t load: textmode.format\r\n\t }\r\n\t];\r\n\r\n\r\n/***/ },\r\n/* 63 */\r\n/***/ function(module, exports, __webpack_require__) {\r\n\r\n\t// load brace\r\n\tvar ace = __webpack_require__(64);\r\n\r\n\t// load required ace modules\r\n\t__webpack_require__(67);\r\n\t__webpack_require__(69);\r\n\r\n\tmodule.exports = ace;\r\n\r\n\r\n/***/ },\r\n/* 64 */\r\n/***/ function(module, exports, __webpack_require__) {\r\n\r\n\t/* ***** BEGIN LICENSE BLOCK *****\r\n\t * Distributed under the BSD license:\r\n\t *\r\n\t * Copyright (c) 2010, Ajax.org B.V.\r\n\t * All rights reserved.\r\n\t *\r\n\t * Redistribution and use in source and binary forms, with or without\r\n\t * modification, are permitted provided that the following conditions are met:\r\n\t * * Redistributions of source code must retain the above copyright\r\n\t * notice, this list of conditions and the following disclaimer.\r\n\t * * Redistributions in binary form must reproduce the above copyright\r\n\t * notice, this list of conditions and the following disclaimer in the\r\n\t * documentation and/or other materials provided with the distribution.\r\n\t * * Neither the name of Ajax.org B.V. nor the\r\n\t * names of its contributors may be used to endorse or promote products\r\n\t * derived from this software without specific prior written permission.\r\n\t *\r\n\t * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\r\n\t * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\r\n\t * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\r\n\t * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY\r\n\t * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\r\n\t * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\r\n\t * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\r\n\t * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\r\n\t * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\r\n\t * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\r\n\t *\r\n\t * ***** END LICENSE BLOCK ***** */\r\n\r\n\t/**\r\n\t * Define a module along with a payload\r\n\t * @param module a name for the payload\r\n\t * @param payload a function to call with (acequire, exports, module) params\r\n\t */\r\n\r\n\t(function() {\r\n\r\n\tvar ACE_NAMESPACE = \"ace\";\r\n\r\n\tvar global = (function() { return this; })();\r\n\tif (!global && typeof window != \"undefined\") global = window; // strict mode\r\n\r\n\r\n\tif (!ACE_NAMESPACE && typeof acequirejs !== \"undefined\")\r\n\t return;\r\n\r\n\r\n\tvar define = function(module, deps, payload) {\r\n\t if (typeof module !== \"string\") {\r\n\t if (define.original)\r\n\t define.original.apply(this, arguments);\r\n\t else {\r\n\t console.error(\"dropping module because define wasn\\'t a string.\");\r\n\t console.trace();\r\n\t }\r\n\t return;\r\n\t }\r\n\t if (arguments.length == 2)\r\n\t payload = deps;\r\n\t if (!define.modules[module]) {\r\n\t define.payloads[module] = payload;\r\n\t define.modules[module] = null;\r\n\t }\r\n\t};\r\n\r\n\tdefine.modules = {};\r\n\tdefine.payloads = {};\r\n\r\n\t/**\r\n\t * Get at functionality define()ed using the function above\r\n\t */\r\n\tvar _acequire = function(parentId, module, callback) {\r\n\t if (typeof module === \"string\") {\r\n\t var payload = lookup(parentId, module);\r\n\t if (payload != undefined) {\r\n\t callback && callback();\r\n\t return payload;\r\n\t }\r\n\t } else if (Object.prototype.toString.call(module) === \"[object Array]\") {\r\n\t var params = [];\r\n\t for (var i = 0, l = module.length; i < l; ++i) {\r\n\t var dep = lookup(parentId, module[i]);\r\n\t if (dep == undefined && acequire.original)\r\n\t return;\r\n\t params.push(dep);\r\n\t }\r\n\t return callback && callback.apply(null, params) || true;\r\n\t }\r\n\t};\r\n\r\n\tvar acequire = function(module, callback) {\r\n\t var packagedModule = _acequire(\"\", module, callback);\r\n\t if (packagedModule == undefined && acequire.original)\r\n\t return acequire.original.apply(this, arguments);\r\n\t return packagedModule;\r\n\t};\r\n\r\n\tvar normalizeModule = function(parentId, moduleName) {\r\n\t // normalize plugin acequires\r\n\t if (moduleName.indexOf(\"!\") !== -1) {\r\n\t var chunks = moduleName.split(\"!\");\r\n\t return normalizeModule(parentId, chunks[0]) + \"!\" + normalizeModule(parentId, chunks[1]);\r\n\t }\r\n\t // normalize relative acequires\r\n\t if (moduleName.charAt(0) == \".\") {\r\n\t var base = parentId.split(\"/\").slice(0, -1).join(\"/\");\r\n\t moduleName = base + \"/\" + moduleName;\r\n\r\n\t while(moduleName.indexOf(\".\") !== -1 && previous != moduleName) {\r\n\t var previous = moduleName;\r\n\t moduleName = moduleName.replace(/\\/\\.\\//, \"/\").replace(/[^\\/]+\\/\\.\\.\\//, \"\");\r\n\t }\r\n\t }\r\n\t return moduleName;\r\n\t};\r\n\r\n\t/**\r\n\t * Internal function to lookup moduleNames and resolve them by calling the\r\n\t * definition function if needed.\r\n\t */\r\n\tvar lookup = function(parentId, moduleName) {\r\n\t moduleName = normalizeModule(parentId, moduleName);\r\n\r\n\t var module = define.modules[moduleName];\r\n\t if (!module) {\r\n\t module = define.payloads[moduleName];\r\n\t if (typeof module === 'function') {\r\n\t var exports = {};\r\n\t var mod = {\r\n\t id: moduleName,\r\n\t uri: '',\r\n\t exports: exports,\r\n\t packaged: true\r\n\t };\r\n\r\n\t var req = function(module, callback) {\r\n\t return _acequire(moduleName, module, callback);\r\n\t };\r\n\r\n\t var returnValue = module(req, exports, mod);\r\n\t exports = returnValue || mod.exports;\r\n\t define.modules[moduleName] = exports;\r\n\t delete define.payloads[moduleName];\r\n\t }\r\n\t module = define.modules[moduleName] = exports || module;\r\n\t }\r\n\t return module;\r\n\t};\r\n\r\n\tfunction exportAce(ns) {\r\n\t var root = global;\r\n\t if (ns) {\r\n\t if (!global[ns])\r\n\t global[ns] = {};\r\n\t root = global[ns];\r\n\t }\r\n\r\n\t if (!root.define || !root.define.packaged) {\r\n\t define.original = root.define;\r\n\t root.define = define;\r\n\t root.define.packaged = true;\r\n\t }\r\n\r\n\t if (!root.acequire || !root.acequire.packaged) {\r\n\t acequire.original = root.acequire;\r\n\t root.acequire = acequire;\r\n\t root.acequire.packaged = true;\r\n\t }\r\n\t}\r\n\r\n\texportAce(ACE_NAMESPACE);\r\n\r\n\t})();\r\n\r\n\tace.define(\"ace/lib/regexp\",[\"require\",\"exports\",\"module\"], function(acequire, exports, module) {\r\n\t\"use strict\";\r\n\r\n\t var real = {\r\n\t exec: RegExp.prototype.exec,\r\n\t test: RegExp.prototype.test,\r\n\t match: String.prototype.match,\r\n\t replace: String.prototype.replace,\r\n\t split: String.prototype.split\r\n\t },\r\n\t compliantExecNpcg = real.exec.call(/()??/, \"\")[1] === undefined, // check `exec` handling of nonparticipating capturing groups\r\n\t compliantLastIndexIncrement = function () {\r\n\t var x = /^/g;\r\n\t real.test.call(x, \"\");\r\n\t return !x.lastIndex;\r\n\t }();\r\n\r\n\t if (compliantLastIndexIncrement && compliantExecNpcg)\r\n\t return;\r\n\t RegExp.prototype.exec = function (str) {\r\n\t var match = real.exec.apply(this, arguments),\r\n\t name, r2;\r\n\t if ( typeof(str) == 'string' && match) {\r\n\t if (!compliantExecNpcg && match.length > 1 && indexOf(match, \"\") > -1) {\r\n\t r2 = RegExp(this.source, real.replace.call(getNativeFlags(this), \"g\", \"\"));\r\n\t real.replace.call(str.slice(match.index), r2, function () {\r\n\t for (var i = 1; i < arguments.length - 2; i++) {\r\n\t if (arguments[i] === undefined)\r\n\t match[i] = undefined;\r\n\t }\r\n\t });\r\n\t }\r\n\t if (this._xregexp && this._xregexp.captureNames) {\r\n\t for (var i = 1; i < match.length; i++) {\r\n\t name = this._xregexp.captureNames[i - 1];\r\n\t if (name)\r\n\t match[name] = match[i];\r\n\t }\r\n\t }\r\n\t if (!compliantLastIndexIncrement && this.global && !match[0].length && (this.lastIndex > match.index))\r\n\t this.lastIndex--;\r\n\t }\r\n\t return match;\r\n\t };\r\n\t if (!compliantLastIndexIncrement) {\r\n\t RegExp.prototype.test = function (str) {\r\n\t var match = real.exec.call(this, str);\r\n\t if (match && this.global && !match[0].length && (this.lastIndex > match.index))\r\n\t this.lastIndex--;\r\n\t return !!match;\r\n\t };\r\n\t }\r\n\r\n\t function getNativeFlags (regex) {\r\n\t return (regex.global ? \"g\" : \"\") +\r\n\t (regex.ignoreCase ? \"i\" : \"\") +\r\n\t (regex.multiline ? \"m\" : \"\") +\r\n\t (regex.extended ? \"x\" : \"\") + // Proposed for ES4; included in AS3\r\n\t (regex.sticky ? \"y\" : \"\");\r\n\t }\r\n\r\n\t function indexOf (array, item, from) {\r\n\t if (Array.prototype.indexOf) // Use the native array method if available\r\n\t return array.indexOf(item, from);\r\n\t for (var i = from || 0; i < array.length; i++) {\r\n\t if (array[i] === item)\r\n\t return i;\r\n\t }\r\n\t return -1;\r\n\t }\r\n\r\n\t});\r\n\r\n\tace.define(\"ace/lib/es5-shim\",[\"require\",\"exports\",\"module\"], function(acequire, exports, module) {\r\n\r\n\tfunction Empty() {}\r\n\r\n\tif (!Function.prototype.bind) {\r\n\t Function.prototype.bind = function bind(that) { // .length is 1\r\n\t var target = this;\r\n\t if (typeof target != \"function\") {\r\n\t throw new TypeError(\"Function.prototype.bind called on incompatible \" + target);\r\n\t }\r\n\t var args = slice.call(arguments, 1); // for normal call\r\n\t var bound = function () {\r\n\r\n\t if (this instanceof bound) {\r\n\r\n\t var result = target.apply(\r\n\t this,\r\n\t args.concat(slice.call(arguments))\r\n\t );\r\n\t if (Object(result) === result) {\r\n\t return result;\r\n\t }\r\n\t return this;\r\n\r\n\t } else {\r\n\t return target.apply(\r\n\t that,\r\n\t args.concat(slice.call(arguments))\r\n\t );\r\n\r\n\t }\r\n\r\n\t };\r\n\t if(target.prototype) {\r\n\t Empty.prototype = target.prototype;\r\n\t bound.prototype = new Empty();\r\n\t Empty.prototype = null;\r\n\t }\r\n\t return bound;\r\n\t };\r\n\t}\r\n\tvar call = Function.prototype.call;\r\n\tvar prototypeOfArray = Array.prototype;\r\n\tvar prototypeOfObject = Object.prototype;\r\n\tvar slice = prototypeOfArray.slice;\r\n\tvar _toString = call.bind(prototypeOfObject.toString);\r\n\tvar owns = call.bind(prototypeOfObject.hasOwnProperty);\r\n\tvar defineGetter;\r\n\tvar defineSetter;\r\n\tvar lookupGetter;\r\n\tvar lookupSetter;\r\n\tvar supportsAccessors;\r\n\tif ((supportsAccessors = owns(prototypeOfObject, \"__defineGetter__\"))) {\r\n\t defineGetter = call.bind(prototypeOfObject.__defineGetter__);\r\n\t defineSetter = call.bind(prototypeOfObject.__defineSetter__);\r\n\t lookupGetter = call.bind(prototypeOfObject.__lookupGetter__);\r\n\t lookupSetter = call.bind(prototypeOfObject.__lookupSetter__);\r\n\t}\r\n\tif ([1,2].splice(0).length != 2) {\r\n\t if(function() { // test IE < 9 to splice bug - see issue #138\r\n\t function makeArray(l) {\r\n\t var a = new Array(l+2);\r\n\t a[0] = a[1] = 0;\r\n\t return a;\r\n\t }\r\n\t var array = [], lengthBefore;\r\n\t \r\n\t array.splice.apply(array, makeArray(20));\r\n\t array.splice.apply(array, makeArray(26));\r\n\r\n\t lengthBefore = array.length; //46\r\n\t array.splice(5, 0, \"XXX\"); // add one element\r\n\r\n\t lengthBefore + 1 == array.length\r\n\r\n\t if (lengthBefore + 1 == array.length) {\r\n\t return true;// has right splice implementation without bugs\r\n\t }\r\n\t }()) {//IE 6/7\r\n\t var array_splice = Array.prototype.splice;\r\n\t Array.prototype.splice = function(start, deleteCount) {\r\n\t if (!arguments.length) {\r\n\t return [];\r\n\t } else {\r\n\t return array_splice.apply(this, [\r\n\t start === void 0 ? 0 : start,\r\n\t deleteCount === void 0 ? (this.length - start) : deleteCount\r\n\t ].concat(slice.call(arguments, 2)))\r\n\t }\r\n\t };\r\n\t } else {//IE8\r\n\t Array.prototype.splice = function(pos, removeCount){\r\n\t var length = this.length;\r\n\t if (pos > 0) {\r\n\t if (pos > length)\r\n\t pos = length;\r\n\t } else if (pos == void 0) {\r\n\t pos = 0;\r\n\t } else if (pos < 0) {\r\n\t pos = Math.max(length + pos, 0);\r\n\t }\r\n\r\n\t if (!(pos+removeCount < length))\r\n\t removeCount = length - pos;\r\n\r\n\t var removed = this.slice(pos, pos+removeCount);\r\n\t var insert = slice.call(arguments, 2);\r\n\t var add = insert.length; \r\n\t if (pos === length) {\r\n\t if (add) {\r\n\t this.push.apply(this, insert);\r\n\t }\r\n\t } else {\r\n\t var remove = Math.min(removeCount, length - pos);\r\n\t var tailOldPos = pos + remove;\r\n\t var tailNewPos = tailOldPos + add - remove;\r\n\t var tailCount = length - tailOldPos;\r\n\t var lengthAfterRemove = length - remove;\r\n\r\n\t if (tailNewPos < tailOldPos) { // case A\r\n\t for (var i = 0; i < tailCount; ++i) {\r\n\t this[tailNewPos+i] = this[tailOldPos+i];\r\n\t }\r\n\t } else if (tailNewPos > tailOldPos) { // case B\r\n\t for (i = tailCount; i--; ) {\r\n\t this[tailNewPos+i] = this[tailOldPos+i];\r\n\t }\r\n\t } // else, add == remove (nothing to do)\r\n\r\n\t if (add && pos === lengthAfterRemove) {\r\n\t this.length = lengthAfterRemove; // truncate array\r\n\t this.push.apply(this, insert);\r\n\t } else {\r\n\t this.length = lengthAfterRemove + add; // reserves space\r\n\t for (i = 0; i < add; ++i) {\r\n\t this[pos+i] = insert[i];\r\n\t }\r\n\t }\r\n\t }\r\n\t return removed;\r\n\t };\r\n\t }\r\n\t}\r\n\tif (!Array.isArray) {\r\n\t Array.isArray = function isArray(obj) {\r\n\t return _toString(obj) == \"[object Array]\";\r\n\t };\r\n\t}\r\n\tvar boxedString = Object(\"a\"),\r\n\t splitString = boxedString[0] != \"a\" || !(0 in boxedString);\r\n\r\n\tif (!Array.prototype.forEach) {\r\n\t Array.prototype.forEach = function forEach(fun /*, thisp*/) {\r\n\t var object = toObject(this),\r\n\t self = splitString && _toString(this) == \"[object String]\" ?\r\n\t this.split(\"\") :\r\n\t object,\r\n\t thisp = arguments[1],\r\n\t i = -1,\r\n\t length = self.length >>> 0;\r\n\t if (_toString(fun) != \"[object Function]\") {\r\n\t throw new TypeError(); // TODO message\r\n\t }\r\n\r\n\t while (++i < length) {\r\n\t if (i in self) {\r\n\t fun.call(thisp, self[i], i, object);\r\n\t }\r\n\t }\r\n\t };\r\n\t}\r\n\tif (!Array.prototype.map) {\r\n\t Array.prototype.map = function map(fun /*, thisp*/) {\r\n\t var object = toObject(this),\r\n\t self = splitString && _toString(this) == \"[object String]\" ?\r\n\t this.split(\"\") :\r\n\t object,\r\n\t length = self.length >>> 0,\r\n\t result = Array(length),\r\n\t thisp = arguments[1];\r\n\t if (_toString(fun) != \"[object Function]\") {\r\n\t throw new TypeError(fun + \" is not a function\");\r\n\t }\r\n\r\n\t for (var i = 0; i < length; i++) {\r\n\t if (i in self)\r\n\t result[i] = fun.call(thisp, self[i], i, object);\r\n\t }\r\n\t return result;\r\n\t };\r\n\t}\r\n\tif (!Array.prototype.filter) {\r\n\t Array.prototype.filter = function filter(fun /*, thisp */) {\r\n\t var object = toObject(this),\r\n\t self = splitString && _toString(this) == \"[object String]\" ?\r\n\t this.split(\"\") :\r\n\t object,\r\n\t length = self.length >>> 0,\r\n\t result = [],\r\n\t value,\r\n\t thisp = arguments[1];\r\n\t if (_toString(fun) != \"[object Function]\") {\r\n\t throw new TypeError(fun + \" is not a function\");\r\n\t }\r\n\r\n\t for (var i = 0; i < length; i++) {\r\n\t if (i in self) {\r\n\t value = self[i];\r\n\t if (fun.call(thisp, value, i, object)) {\r\n\t result.push(value);\r\n\t }\r\n\t }\r\n\t }\r\n\t return result;\r\n\t };\r\n\t}\r\n\tif (!Array.prototype.every) {\r\n\t Array.prototype.every = function every(fun /*, thisp */) {\r\n\t var object = toObject(this),\r\n\t self = splitString && _toString(this) == \"[object String]\" ?\r\n\t this.split(\"\") :\r\n\t object,\r\n\t length = self.length >>> 0,\r\n\t thisp = arguments[1];\r\n\t if (_toString(fun) != \"[object Function]\") {\r\n\t throw new TypeError(fun + \" is not a function\");\r\n\t }\r\n\r\n\t for (var i = 0; i < length; i++) {\r\n\t if (i in self && !fun.call(thisp, self[i], i, object)) {\r\n\t return false;\r\n\t }\r\n\t }\r\n\t return true;\r\n\t };\r\n\t}\r\n\tif (!Array.prototype.some) {\r\n\t Array.prototype.some = function some(fun /*, thisp */) {\r\n\t var object = toObject(this),\r\n\t self = splitString && _toString(this) == \"[object String]\" ?\r\n\t this.split(\"\") :\r\n\t object,\r\n\t length = self.length >>> 0,\r\n\t thisp = arguments[1];\r\n\t if (_toString(fun) != \"[object Function]\") {\r\n\t throw new TypeError(fun + \" is not a function\");\r\n\t }\r\n\r\n\t for (var i = 0; i < length; i++) {\r\n\t if (i in self && fun.call(thisp, self[i], i, object)) {\r\n\t return true;\r\n\t }\r\n\t }\r\n\t return false;\r\n\t };\r\n\t}\r\n\tif (!Array.prototype.reduce) {\r\n\t Array.prototype.reduce = function reduce(fun /*, initial*/) {\r\n\t var object = toObject(this),\r\n\t self = splitString && _toString(this) == \"[object String]\" ?\r\n\t this.split(\"\") :\r\n\t object,\r\n\t length = self.length >>> 0;\r\n\t if (_toString(fun) != \"[object Function]\") {\r\n\t throw new TypeError(fun + \" is not a function\");\r\n\t }\r\n\t if (!length && arguments.length == 1) {\r\n\t throw new TypeError(\"reduce of empty array with no initial value\");\r\n\t }\r\n\r\n\t var i = 0;\r\n\t var result;\r\n\t if (arguments.length >= 2) {\r\n\t result = arguments[1];\r\n\t } else {\r\n\t do {\r\n\t if (i in self) {\r\n\t result = self[i++];\r\n\t break;\r\n\t }\r\n\t if (++i >= length) {\r\n\t throw new TypeError(\"reduce of empty array with no initial value\");\r\n\t }\r\n\t } while (true);\r\n\t }\r\n\r\n\t for (; i < length; i++) {\r\n\t if (i in self) {\r\n\t result = fun.call(void 0, result, self[i], i, object);\r\n\t }\r\n\t }\r\n\r\n\t return result;\r\n\t };\r\n\t}\r\n\tif (!Array.prototype.reduceRight) {\r\n\t Array.prototype.reduceRight = function reduceRight(fun /*, initial*/) {\r\n\t var object = toObject(this),\r\n\t self = splitString && _toString(this) == \"[object String]\" ?\r\n\t this.split(\"\") :\r\n\t object,\r\n\t length = self.length >>> 0;\r\n\t if (_toString(fun) != \"[object Function]\") {\r\n\t throw new TypeError(fun + \" is not a function\");\r\n\t }\r\n\t if (!length && arguments.length == 1) {\r\n\t throw new TypeError(\"reduceRight of empty array with no initial value\");\r\n\t }\r\n\r\n\t var result, i = length - 1;\r\n\t if (arguments.length >= 2) {\r\n\t result = arguments[1];\r\n\t } else {\r\n\t do {\r\n\t if (i in self) {\r\n\t result = self[i--];\r\n\t break;\r\n\t }\r\n\t if (--i < 0) {\r\n\t throw new TypeError(\"reduceRight of empty array with no initial value\");\r\n\t }\r\n\t } while (true);\r\n\t }\r\n\r\n\t do {\r\n\t if (i in this) {\r\n\t result = fun.call(void 0, result, self[i], i, object);\r\n\t }\r\n\t } while (i--);\r\n\r\n\t return result;\r\n\t };\r\n\t}\r\n\tif (!Array.prototype.indexOf || ([0, 1].indexOf(1, 2) != -1)) {\r\n\t Array.prototype.indexOf = function indexOf(sought /*, fromIndex */ ) {\r\n\t var self = splitString && _toString(this) == \"[object String]\" ?\r\n\t this.split(\"\") :\r\n\t toObject(this),\r\n\t length = self.length >>> 0;\r\n\r\n\t if (!length) {\r\n\t return -1;\r\n\t }\r\n\r\n\t var i = 0;\r\n\t if (arguments.length > 1) {\r\n\t i = toInteger(arguments[1]);\r\n\t }\r\n\t i = i >= 0 ? i : Math.max(0, length + i);\r\n\t for (; i < length; i++) {\r\n\t if (i in self && self[i] === sought) {\r\n\t return i;\r\n\t }\r\n\t }\r\n\t return -1;\r\n\t };\r\n\t}\r\n\tif (!Array.prototype.lastIndexOf || ([0, 1].lastIndexOf(0, -3) != -1)) {\r\n\t Array.prototype.lastIndexOf = function lastIndexOf(sought /*, fromIndex */) {\r\n\t var self = splitString && _toString(this) == \"[object String]\" ?\r\n\t this.split(\"\") :\r\n\t toObject(this),\r\n\t length = self.length >>> 0;\r\n\r\n\t if (!length) {\r\n\t return -1;\r\n\t }\r\n\t var i = length - 1;\r\n\t if (arguments.length > 1) {\r\n\t i = Math.min(i, toInteger(arguments[1]));\r\n\t }\r\n\t i = i >= 0 ? i : length - Math.abs(i);\r\n\t for (; i >= 0; i--) {\r\n\t if (i in self && sought === self[i]) {\r\n\t return i;\r\n\t }\r\n\t }\r\n\t return -1;\r\n\t };\r\n\t}\r\n\tif (!Object.getPrototypeOf) {\r\n\t Object.getPrototypeOf = function getPrototypeOf(object) {\r\n\t return object.__proto__ || (\r\n\t object.constructor ?\r\n\t object.constructor.prototype :\r\n\t prototypeOfObject\r\n\t );\r\n\t };\r\n\t}\r\n\tif (!Object.getOwnPropertyDescriptor) {\r\n\t var ERR_NON_OBJECT = \"Object.getOwnPropertyDescriptor called on a \" +\r\n\t \"non-object: \";\r\n\t Object.getOwnPropertyDescriptor = function getOwnPropertyDescriptor(object, property) {\r\n\t if ((typeof object != \"object\" && typeof object != \"function\") || object === null)\r\n\t throw new TypeError(ERR_NON_OBJECT + object);\r\n\t if (!owns(object, property))\r\n\t return;\r\n\r\n\t var descriptor, getter, setter;\r\n\t descriptor = { enumerable: true, configurable: true };\r\n\t if (supportsAccessors) {\r\n\t var prototype = object.__proto__;\r\n\t object.__proto__ = prototypeOfObject;\r\n\r\n\t var getter = lookupGetter(object, property);\r\n\t var setter = lookupSetter(object, property);\r\n\t object.__proto__ = prototype;\r\n\r\n\t if (getter || setter) {\r\n\t if (getter) descriptor.get = getter;\r\n\t if (setter) descriptor.set = setter;\r\n\t return descriptor;\r\n\t }\r\n\t }\r\n\t descriptor.value = object[property];\r\n\t return descriptor;\r\n\t };\r\n\t}\r\n\tif (!Object.getOwnPropertyNames) {\r\n\t Object.getOwnPropertyNames = function getOwnPropertyNames(object) {\r\n\t return Object.keys(object);\r\n\t };\r\n\t}\r\n\tif (!Object.create) {\r\n\t var createEmpty;\r\n\t if (Object.prototype.__proto__ === null) {\r\n\t createEmpty = function () {\r\n\t return { \"__proto__\": null };\r\n\t };\r\n\t } else {\r\n\t createEmpty = function () {\r\n\t var empty = {};\r\n\t for (var i in empty)\r\n\t empty[i] = null;\r\n\t empty.constructor =\r\n\t empty.hasOwnProperty =\r\n\t empty.propertyIsEnumerable =\r\n\t empty.isPrototypeOf =\r\n\t empty.toLocaleString =\r\n\t empty.toString =\r\n\t empty.valueOf =\r\n\t empty.__proto__ = null;\r\n\t return empty;\r\n\t }\r\n\t }\r\n\r\n\t Object.create = function create(prototype, properties) {\r\n\t var object;\r\n\t if (prototype === null) {\r\n\t object = createEmpty();\r\n\t } else {\r\n\t if (typeof prototype != \"object\")\r\n\t throw new TypeError(\"typeof prototype[\"+(typeof prototype)+\"] != 'object'\");\r\n\t var Type = function () {};\r\n\t Type.prototype = prototype;\r\n\t object = new Type();\r\n\t object.__proto__ = prototype;\r\n\t }\r\n\t if (properties !== void 0)\r\n\t Object.defineProperties(object, properties);\r\n\t return object;\r\n\t };\r\n\t}\r\n\r\n\tfunction doesDefinePropertyWork(object) {\r\n\t try {\r\n\t Object.defineProperty(object, \"sentinel\", {});\r\n\t return \"sentinel\" in object;\r\n\t } catch (exception) {\r\n\t }\r\n\t}\r\n\tif (Object.defineProperty) {\r\n\t var definePropertyWorksOnObject = doesDefinePropertyWork({});\r\n\t var definePropertyWorksOnDom = typeof document == \"undefined\" ||\r\n\t doesDefinePropertyWork(document.createElement(\"div\"));\r\n\t if (!definePropertyWorksOnObject || !definePropertyWorksOnDom) {\r\n\t var definePropertyFallback = Object.defineProperty;\r\n\t }\r\n\t}\r\n\r\n\tif (!Object.defineProperty || definePropertyFallback) {\r\n\t var ERR_NON_OBJECT_DESCRIPTOR = \"Property description must be an object: \";\r\n\t var ERR_NON_OBJECT_TARGET = \"Object.defineProperty called on non-object: \"\r\n\t var ERR_ACCESSORS_NOT_SUPPORTED = \"getters & setters can not be defined \" +\r\n\t \"on this javascript engine\";\r\n\r\n\t Object.defineProperty = function defineProperty(object, property, descriptor) {\r\n\t if ((typeof object != \"object\" && typeof object != \"function\") || object === null)\r\n\t throw new TypeError(ERR_NON_OBJECT_TARGET + object);\r\n\t if ((typeof descriptor != \"object\" && typeof descriptor != \"function\") || descriptor === null)\r\n\t throw new TypeError(ERR_NON_OBJECT_DESCRIPTOR + descriptor);\r\n\t if (definePropertyFallback) {\r\n\t try {\r\n\t return definePropertyFallback.call(Object, object, property, descriptor);\r\n\t } catch (exception) {\r\n\t }\r\n\t }\r\n\t if (owns(descriptor, \"value\")) {\r\n\r\n\t if (supportsAccessors && (lookupGetter(object, property) ||\r\n\t lookupSetter(object, property)))\r\n\t {\r\n\t var prototype = object.__proto__;\r\n\t object.__proto__ = prototypeOfObject;\r\n\t delete object[property];\r\n\t object[property] = descriptor.value;\r\n\t object.__proto__ = prototype;\r\n\t } else {\r\n\t object[property] = descriptor.value;\r\n\t }\r\n\t } else {\r\n\t if (!supportsAccessors)\r\n\t throw new TypeError(ERR_ACCESSORS_NOT_SUPPORTED);\r\n\t if (owns(descriptor, \"get\"))\r\n\t defineGetter(object, property, descriptor.get);\r\n\t if (owns(descriptor, \"set\"))\r\n\t defineSetter(object, property, descriptor.set);\r\n\t }\r\n\r\n\t return object;\r\n\t };\r\n\t}\r\n\tif (!Object.defineProperties) {\r\n\t Object.defineProperties = function defineProperties(object, properties) {\r\n\t for (var property in properties) {\r\n\t if (owns(properties, property))\r\n\t Object.defineProperty(object, property, properties[property]);\r\n\t }\r\n\t return object;\r\n\t };\r\n\t}\r\n\tif (!Object.seal) {\r\n\t Object.seal = function seal(object) {\r\n\t return object;\r\n\t };\r\n\t}\r\n\tif (!Object.freeze) {\r\n\t Object.freeze = function freeze(object) {\r\n\t return object;\r\n\t };\r\n\t}\r\n\ttry {\r\n\t Object.freeze(function () {});\r\n\t} catch (exception) {\r\n\t Object.freeze = (function freeze(freezeObject) {\r\n\t return function freeze(object) {\r\n\t if (typeof object == \"function\") {\r\n\t return object;\r\n\t } else {\r\n\t return freezeObject(object);\r\n\t }\r\n\t };\r\n\t })(Object.freeze);\r\n\t}\r\n\tif (!Object.preventExtensions) {\r\n\t Object.preventExtensions = function preventExtensions(object) {\r\n\t return object;\r\n\t };\r\n\t}\r\n\tif (!Object.isSealed) {\r\n\t Object.isSealed = function isSealed(object) {\r\n\t return false;\r\n\t };\r\n\t}\r\n\tif (!Object.isFrozen) {\r\n\t Object.isFrozen = function isFrozen(object) {\r\n\t return false;\r\n\t };\r\n\t}\r\n\tif (!Object.isExtensible) {\r\n\t Object.isExtensible = function isExtensible(object) {\r\n\t if (Object(object) === object) {\r\n\t throw new TypeError(); // TODO message\r\n\t }\r\n\t var name = '';\r\n\t while (owns(object, name)) {\r\n\t name += '?';\r\n\t }\r\n\t object[name] = true;\r\n\t var returnValue = owns(object, name);\r\n\t delete object[name];\r\n\t return returnValue;\r\n\t };\r\n\t}\r\n\tif (!Object.keys) {\r\n\t var hasDontEnumBug = true,\r\n\t dontEnums = [\r\n\t \"toString\",\r\n\t \"toLocaleString\",\r\n\t \"valueOf\",\r\n\t \"hasOwnProperty\",\r\n\t \"isPrototypeOf\",\r\n\t \"propertyIsEnumerable\",\r\n\t \"constructor\"\r\n\t ],\r\n\t dontEnumsLength = dontEnums.length;\r\n\r\n\t for (var key in {\"toString\": null}) {\r\n\t hasDontEnumBug = false;\r\n\t }\r\n\r\n\t Object.keys = function keys(object) {\r\n\r\n\t if (\r\n\t (typeof object != \"object\" && typeof object != \"function\") ||\r\n\t object === null\r\n\t ) {\r\n\t throw new TypeError(\"Object.keys called on a non-object\");\r\n\t }\r\n\r\n\t var keys = [];\r\n\t for (var name in object) {\r\n\t if (owns(object, name)) {\r\n\t keys.push(name);\r\n\t }\r\n\t }\r\n\r\n\t if (hasDontEnumBug) {\r\n\t for (var i = 0, ii = dontEnumsLength; i < ii; i++) {\r\n\t var dontEnum = dontEnums[i];\r\n\t if (owns(object, dontEnum)) {\r\n\t keys.push(dontEnum);\r\n\t }\r\n\t }\r\n\t }\r\n\t return keys;\r\n\t };\r\n\r\n\t}\r\n\tif (!Date.now) {\r\n\t Date.now = function now() {\r\n\t return new Date().getTime();\r\n\t };\r\n\t}\r\n\tvar ws = \"\\x09\\x0A\\x0B\\x0C\\x0D\\x20\\xA0\\u1680\\u180E\\u2000\\u2001\\u2002\\u2003\" +\r\n\t \"\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028\" +\r\n\t \"\\u2029\\uFEFF\";\r\n\tif (!String.prototype.trim || ws.trim()) {\r\n\t ws = \"[\" + ws + \"]\";\r\n\t var trimBeginRegexp = new RegExp(\"^\" + ws + ws + \"*\"),\r\n\t trimEndRegexp = new RegExp(ws + ws + \"*$\");\r\n\t String.prototype.trim = function trim() {\r\n\t return String(this).replace(trimBeginRegexp, \"\").replace(trimEndRegexp, \"\");\r\n\t };\r\n\t}\r\n\r\n\tfunction toInteger(n) {\r\n\t n = +n;\r\n\t if (n !== n) { // isNaN\r\n\t n = 0;\r\n\t } else if (n !== 0 && n !== (1/0) && n !== -(1/0)) {\r\n\t n = (n > 0 || -1) * Math.floor(Math.abs(n));\r\n\t }\r\n\t return n;\r\n\t}\r\n\r\n\tfunction isPrimitive(input) {\r\n\t var type = typeof input;\r\n\t return (\r\n\t input === null ||\r\n\t type === \"undefined\" ||\r\n\t type === \"boolean\" ||\r\n\t type === \"number\" ||\r\n\t type === \"string\"\r\n\t );\r\n\t}\r\n\r\n\tfunction toPrimitive(input) {\r\n\t var val, valueOf, toString;\r\n\t if (isPrimitive(input)) {\r\n\t return input;\r\n\t }\r\n\t valueOf = input.valueOf;\r\n\t if (typeof valueOf === \"function\") {\r\n\t val = valueOf.call(input);\r\n\t if (isPrimitive(val)) {\r\n\t return val;\r\n\t }\r\n\t }\r\n\t toString = input.toString;\r\n\t if (typeof toString === \"function\") {\r\n\t val = toString.call(input);\r\n\t if (isPrimitive(val)) {\r\n\t return val;\r\n\t }\r\n\t }\r\n\t throw new TypeError();\r\n\t}\r\n\tvar toObject = function (o) {\r\n\t if (o == null) { // this matches both null and undefined\r\n\t throw new TypeError(\"can't convert \"+o+\" to object\");\r\n\t }\r\n\t return Object(o);\r\n\t};\r\n\r\n\t});\r\n\r\n\tace.define(\"ace/lib/fixoldbrowsers\",[\"require\",\"exports\",\"module\",\"ace/lib/regexp\",\"ace/lib/es5-shim\"], function(acequire, exports, module) {\r\n\t\"use strict\";\r\n\r\n\tacequire(\"./regexp\");\r\n\tacequire(\"./es5-shim\");\r\n\r\n\t});\r\n\r\n\tace.define(\"ace/lib/dom\",[\"require\",\"exports\",\"module\"], function(acequire, exports, module) {\r\n\t\"use strict\";\r\n\r\n\tvar XHTML_NS = \"http://www.w3.org/1999/xhtml\";\r\n\r\n\texports.getDocumentHead = function(doc) {\r\n\t if (!doc)\r\n\t doc = document;\r\n\t return doc.head || doc.getElementsByTagName(\"head\")[0] || doc.documentElement;\r\n\t};\r\n\r\n\texports.createElement = function(tag, ns) {\r\n\t return document.createElementNS ?\r\n\t document.createElementNS(ns || XHTML_NS, tag) :\r\n\t document.createElement(tag);\r\n\t};\r\n\r\n\texports.hasCssClass = function(el, name) {\r\n\t var classes = (el.className || \"\").split(/\\s+/g);\r\n\t return classes.indexOf(name) !== -1;\r\n\t};\r\n\texports.addCssClass = function(el, name) {\r\n\t if (!exports.hasCssClass(el, name)) {\r\n\t el.className += \" \" + name;\r\n\t }\r\n\t};\r\n\texports.removeCssClass = function(el, name) {\r\n\t var classes = el.className.split(/\\s+/g);\r\n\t while (true) {\r\n\t var index = classes.indexOf(name);\r\n\t if (index == -1) {\r\n\t break;\r\n\t }\r\n\t classes.splice(index, 1);\r\n\t }\r\n\t el.className = classes.join(\" \");\r\n\t};\r\n\r\n\texports.toggleCssClass = function(el, name) {\r\n\t var classes = el.className.split(/\\s+/g), add = true;\r\n\t while (true) {\r\n\t var index = classes.indexOf(name);\r\n\t if (index == -1) {\r\n\t break;\r\n\t }\r\n\t add = false;\r\n\t classes.splice(index, 1);\r\n\t }\r\n\t if (add)\r\n\t classes.push(name);\r\n\r\n\t el.className = classes.join(\" \");\r\n\t return add;\r\n\t};\r\n\texports.setCssClass = function(node, className, include) {\r\n\t if (include) {\r\n\t exports.addCssClass(node, className);\r\n\t } else {\r\n\t exports.removeCssClass(node, className);\r\n\t }\r\n\t};\r\n\r\n\texports.hasCssString = function(id, doc) {\r\n\t var index = 0, sheets;\r\n\t doc = doc || document;\r\n\r\n\t if (doc.createStyleSheet && (sheets = doc.styleSheets)) {\r\n\t while (index < sheets.length)\r\n\t if (sheets[index++].owningElement.id === id) return true;\r\n\t } else if ((sheets = doc.getElementsByTagName(\"style\"))) {\r\n\t while (index < sheets.length)\r\n\t if (sheets[index++].id === id) return true;\r\n\t }\r\n\r\n\t return false;\r\n\t};\r\n\r\n\texports.importCssString = function importCssString(cssText, id, doc) {\r\n\t doc = doc || document;\r\n\t if (id && exports.hasCssString(id, doc))\r\n\t return null;\r\n\t \r\n\t var style;\r\n\t \r\n\t if (id)\r\n\t cssText += \"\\n/*# sourceURL=ace/css/\" + id + \" */\";\r\n\t \r\n\t if (doc.createStyleSheet) {\r\n\t style = doc.createStyleSheet();\r\n\t style.cssText = cssText;\r\n\t if (id)\r\n\t style.owningElement.id = id;\r\n\t } else {\r\n\t style = exports.createElement(\"style\");\r\n\t style.appendChild(doc.createTextNode(cssText));\r\n\t if (id)\r\n\t style.id = id;\r\n\r\n\t exports.getDocumentHead(doc).appendChild(style);\r\n\t }\r\n\t};\r\n\r\n\texports.importCssStylsheet = function(uri, doc) {\r\n\t if (doc.createStyleSheet) {\r\n\t doc.createStyleSheet(uri);\r\n\t } else {\r\n\t var link = exports.createElement('link');\r\n\t link.rel = 'stylesheet';\r\n\t link.href = uri;\r\n\r\n\t exports.getDocumentHead(doc).appendChild(link);\r\n\t }\r\n\t};\r\n\r\n\texports.getInnerWidth = function(element) {\r\n\t return (\r\n\t parseInt(exports.computedStyle(element, \"paddingLeft\"), 10) +\r\n\t parseInt(exports.computedStyle(element, \"paddingRight\"), 10) + \r\n\t element.clientWidth\r\n\t );\r\n\t};\r\n\r\n\texports.getInnerHeight = function(element) {\r\n\t return (\r\n\t parseInt(exports.computedStyle(element, \"paddingTop\"), 10) +\r\n\t parseInt(exports.computedStyle(element, \"paddingBottom\"), 10) +\r\n\t element.clientHeight\r\n\t );\r\n\t};\r\n\r\n\texports.scrollbarWidth = function(document) {\r\n\t var inner = exports.createElement(\"ace_inner\");\r\n\t inner.style.width = \"100%\";\r\n\t inner.style.minWidth = \"0px\";\r\n\t inner.style.height = \"200px\";\r\n\t inner.style.display = \"block\";\r\n\r\n\t var outer = exports.createElement(\"ace_outer\");\r\n\t var style = outer.style;\r\n\r\n\t style.position = \"absolute\";\r\n\t style.left = \"-10000px\";\r\n\t style.overflow = \"hidden\";\r\n\t style.width = \"200px\";\r\n\t style.minWidth = \"0px\";\r\n\t style.height = \"150px\";\r\n\t style.display = \"block\";\r\n\r\n\t outer.appendChild(inner);\r\n\r\n\t var body = document.documentElement;\r\n\t body.appendChild(outer);\r\n\r\n\t var noScrollbar = inner.offsetWidth;\r\n\r\n\t style.overflow = \"scroll\";\r\n\t var withScrollbar = inner.offsetWidth;\r\n\r\n\t if (noScrollbar == withScrollbar) {\r\n\t withScrollbar = outer.clientWidth;\r\n\t }\r\n\r\n\t body.removeChild(outer);\r\n\r\n\t return noScrollbar-withScrollbar;\r\n\t};\r\n\r\n\tif (typeof document == \"undefined\") {\r\n\t exports.importCssString = function() {};\r\n\t return;\r\n\t}\r\n\r\n\tif (window.pageYOffset !== undefined) {\r\n\t exports.getPageScrollTop = function() {\r\n\t return window.pageYOffset;\r\n\t };\r\n\r\n\t exports.getPageScrollLeft = function() {\r\n\t return window.pageXOffset;\r\n\t };\r\n\t}\r\n\telse {\r\n\t exports.getPageScrollTop = function() {\r\n\t return document.body.scrollTop;\r\n\t };\r\n\r\n\t exports.getPageScrollLeft = function() {\r\n\t return document.body.scrollLeft;\r\n\t };\r\n\t}\r\n\r\n\tif (window.getComputedStyle)\r\n\t exports.computedStyle = function(element, style) {\r\n\t if (style)\r\n\t return (window.getComputedStyle(element, \"\") || {})[style] || \"\";\r\n\t return window.getComputedStyle(element, \"\") || {};\r\n\t };\r\n\telse\r\n\t exports.computedStyle = function(element, style) {\r\n\t if (style)\r\n\t return element.currentStyle[style];\r\n\t return element.currentStyle;\r\n\t };\r\n\texports.setInnerHtml = function(el, innerHtml) {\r\n\t var element = el.cloneNode(false);//document.createElement(\"div\");\r\n\t element.innerHTML = innerHtml;\r\n\t el.parentNode.replaceChild(element, el);\r\n\t return element;\r\n\t};\r\n\r\n\tif (\"textContent\" in document.documentElement) {\r\n\t exports.setInnerText = function(el, innerText) {\r\n\t el.textContent = innerText;\r\n\t };\r\n\r\n\t exports.getInnerText = function(el) {\r\n\t return el.textContent;\r\n\t };\r\n\t}\r\n\telse {\r\n\t exports.setInnerText = function(el, innerText) {\r\n\t el.innerText = innerText;\r\n\t };\r\n\r\n\t exports.getInnerText = function(el) {\r\n\t return el.innerText;\r\n\t };\r\n\t}\r\n\r\n\texports.getParentWindow = function(document) {\r\n\t return document.defaultView || document.parentWindow;\r\n\t};\r\n\r\n\t});\r\n\r\n\tace.define(\"ace/lib/oop\",[\"require\",\"exports\",\"module\"], function(acequire, exports, module) {\r\n\t\"use strict\";\r\n\r\n\texports.inherits = function(ctor, superCtor) {\r\n\t ctor.super_ = superCtor;\r\n\t ctor.prototype = Object.create(superCtor.prototype, {\r\n\t constructor: {\r\n\t value: ctor,\r\n\t enumerable: false,\r\n\t writable: true,\r\n\t configurable: true\r\n\t }\r\n\t });\r\n\t};\r\n\r\n\texports.mixin = function(obj, mixin) {\r\n\t for (var key in mixin) {\r\n\t obj[key] = mixin[key];\r\n\t }\r\n\t return obj;\r\n\t};\r\n\r\n\texports.implement = function(proto, mixin) {\r\n\t exports.mixin(proto, mixin);\r\n\t};\r\n\r\n\t});\r\n\r\n\tace.define(\"ace/lib/keys\",[\"require\",\"exports\",\"module\",\"ace/lib/fixoldbrowsers\",\"ace/lib/oop\"], function(acequire, exports, module) {\r\n\t\"use strict\";\r\n\r\n\tacequire(\"./fixoldbrowsers\");\r\n\r\n\tvar oop = acequire(\"./oop\");\r\n\tvar Keys = (function() {\r\n\t var ret = {\r\n\t MODIFIER_KEYS: {\r\n\t 16: 'Shift', 17: 'Ctrl', 18: 'Alt', 224: 'Meta'\r\n\t },\r\n\r\n\t KEY_MODS: {\r\n\t \"ctrl\": 1, \"alt\": 2, \"option\" : 2, \"shift\": 4,\r\n\t \"super\": 8, \"meta\": 8, \"command\": 8, \"cmd\": 8\r\n\t },\r\n\r\n\t FUNCTION_KEYS : {\r\n\t 8 : \"Backspace\",\r\n\t 9 : \"Tab\",\r\n\t 13 : \"Return\",\r\n\t 19 : \"Pause\",\r\n\t 27 : \"Esc\",\r\n\t 32 : \"Space\",\r\n\t 33 : \"PageUp\",\r\n\t 34 : \"PageDown\",\r\n\t 35 : \"End\",\r\n\t 36 : \"Home\",\r\n\t 37 : \"Left\",\r\n\t 38 : \"Up\",\r\n\t 39 : \"Right\",\r\n\t 40 : \"Down\",\r\n\t 44 : \"Print\",\r\n\t 45 : \"Insert\",\r\n\t 46 : \"Delete\",\r\n\t 96 : \"Numpad0\",\r\n\t 97 : \"Numpad1\",\r\n\t 98 : \"Numpad2\",\r\n\t 99 : \"Numpad3\",\r\n\t 100: \"Numpad4\",\r\n\t 101: \"Numpad5\",\r\n\t 102: \"Numpad6\",\r\n\t 103: \"Numpad7\",\r\n\t 104: \"Numpad8\",\r\n\t 105: \"Numpad9\",\r\n\t '-13': \"NumpadEnter\",\r\n\t 112: \"F1\",\r\n\t 113: \"F2\",\r\n\t 114: \"F3\",\r\n\t 115: \"F4\",\r\n\t 116: \"F5\",\r\n\t 117: \"F6\",\r\n\t 118: \"F7\",\r\n\t 119: \"F8\",\r\n\t 120: \"F9\",\r\n\t 121: \"F10\",\r\n\t 122: \"F11\",\r\n\t 123: \"F12\",\r\n\t 144: \"Numlock\",\r\n\t 145: \"Scrolllock\"\r\n\t },\r\n\r\n\t PRINTABLE_KEYS: {\r\n\t 32: ' ', 48: '0', 49: '1', 50: '2', 51: '3', 52: '4', 53: '5',\r\n\t 54: '6', 55: '7', 56: '8', 57: '9', 59: ';', 61: '=', 65: 'a',\r\n\t 66: 'b', 67: 'c', 68: 'd', 69: 'e', 70: 'f', 71: 'g', 72: 'h',\r\n\t 73: 'i', 74: 'j', 75: 'k', 76: 'l', 77: 'm', 78: 'n', 79: 'o',\r\n\t 80: 'p', 81: 'q', 82: 'r', 83: 's', 84: 't', 85: 'u', 86: 'v',\r\n\t 87: 'w', 88: 'x', 89: 'y', 90: 'z', 107: '+', 109: '-', 110: '.',\r\n\t 186: ';', 187: '=', 188: ',', 189: '-', 190: '.', 191: '/', 192: '`',\r\n\t 219: '[', 220: '\\\\',221: ']', 222: \"'\", 111: '/', 106: '*'\r\n\t }\r\n\t };\r\n\t var name, i;\r\n\t for (i in ret.FUNCTION_KEYS) {\r\n\t name = ret.FUNCTION_KEYS[i].toLowerCase();\r\n\t ret[name] = parseInt(i, 10);\r\n\t }\r\n\t for (i in ret.PRINTABLE_KEYS) {\r\n\t name = ret.PRINTABLE_KEYS[i].toLowerCase();\r\n\t ret[name] = parseInt(i, 10);\r\n\t }\r\n\t oop.mixin(ret, ret.MODIFIER_KEYS);\r\n\t oop.mixin(ret, ret.PRINTABLE_KEYS);\r\n\t oop.mixin(ret, ret.FUNCTION_KEYS);\r\n\t ret.enter = ret[\"return\"];\r\n\t ret.escape = ret.esc;\r\n\t ret.del = ret[\"delete\"];\r\n\t ret[173] = '-';\r\n\t \r\n\t (function() {\r\n\t var mods = [\"cmd\", \"ctrl\", \"alt\", \"shift\"];\r\n\t for (var i = Math.pow(2, mods.length); i--;) { \r\n\t ret.KEY_MODS[i] = mods.filter(function(x) {\r\n\t return i & ret.KEY_MODS[x];\r\n\t }).join(\"-\") + \"-\";\r\n\t }\r\n\t })();\r\n\r\n\t ret.KEY_MODS[0] = \"\";\r\n\t ret.KEY_MODS[-1] = \"input-\";\r\n\r\n\t return ret;\r\n\t})();\r\n\toop.mixin(exports, Keys);\r\n\r\n\texports.keyCodeToString = function(keyCode) {\r\n\t var keyString = Keys[keyCode];\r\n\t if (typeof keyString != \"string\")\r\n\t keyString = String.fromCharCode(keyCode);\r\n\t return keyString.toLowerCase();\r\n\t};\r\n\r\n\t});\r\n\r\n\tace.define(\"ace/lib/useragent\",[\"require\",\"exports\",\"module\"], function(acequire, exports, module) {\r\n\t\"use strict\";\r\n\texports.OS = {\r\n\t LINUX: \"LINUX\",\r\n\t MAC: \"MAC\",\r\n\t WINDOWS: \"WINDOWS\"\r\n\t};\r\n\texports.getOS = function() {\r\n\t if (exports.isMac) {\r\n\t return exports.OS.MAC;\r\n\t } else if (exports.isLinux) {\r\n\t return exports.OS.LINUX;\r\n\t } else {\r\n\t return exports.OS.WINDOWS;\r\n\t }\r\n\t};\r\n\tif (typeof navigator != \"object\")\r\n\t return;\r\n\r\n\tvar os = (navigator.platform.match(/mac|win|linux/i) || [\"other\"])[0].toLowerCase();\r\n\tvar ua = navigator.userAgent;\r\n\texports.isWin = (os == \"win\");\r\n\texports.isMac = (os == \"mac\");\r\n\texports.isLinux = (os == \"linux\");\r\n\texports.isIE = \r\n\t (navigator.appName == \"Microsoft Internet Explorer\" || navigator.appName.indexOf(\"MSAppHost\") >= 0)\r\n\t ? parseFloat((ua.match(/(?:MSIE |Trident\\/[0-9]+[\\.0-9]+;.*rv:)([0-9]+[\\.0-9]+)/)||[])[1])\r\n\t : parseFloat((ua.match(/(?:Trident\\/[0-9]+[\\.0-9]+;.*rv:)([0-9]+[\\.0-9]+)/)||[])[1]); // for ie\r\n\t \r\n\texports.isOldIE = exports.isIE && exports.isIE < 9;\r\n\texports.isGecko = exports.isMozilla = (window.Controllers || window.controllers) && window.navigator.product === \"Gecko\";\r\n\texports.isOldGecko = exports.isGecko && parseInt((ua.match(/rv\\:(\\d+)/)||[])[1], 10) < 4;\r\n\texports.isOpera = window.opera && Object.prototype.toString.call(window.opera) == \"[object Opera]\";\r\n\texports.isWebKit = parseFloat(ua.split(\"WebKit/\")[1]) || undefined;\r\n\r\n\texports.isChrome = parseFloat(ua.split(\" Chrome/\")[1]) || undefined;\r\n\r\n\texports.isAIR = ua.indexOf(\"AdobeAIR\") >= 0;\r\n\r\n\texports.isIPad = ua.indexOf(\"iPad\") >= 0;\r\n\r\n\texports.isTouchPad = ua.indexOf(\"TouchPad\") >= 0;\r\n\r\n\texports.isChromeOS = ua.indexOf(\" CrOS \") >= 0;\r\n\r\n\t});\r\n\r\n\tace.define(\"ace/lib/event\",[\"require\",\"exports\",\"module\",\"ace/lib/keys\",\"ace/lib/useragent\"], function(acequire, exports, module) {\r\n\t\"use strict\";\r\n\r\n\tvar keys = acequire(\"./keys\");\r\n\tvar useragent = acequire(\"./useragent\");\r\n\r\n\tvar pressedKeys = null;\r\n\tvar ts = 0;\r\n\r\n\texports.addListener = function(elem, type, callback) {\r\n\t if (elem.addEventListener) {\r\n\t return elem.addEventListener(type, callback, false);\r\n\t }\r\n\t if (elem.attachEvent) {\r\n\t var wrapper = function() {\r\n\t callback.call(elem, window.event);\r\n\t };\r\n\t callback._wrapper = wrapper;\r\n\t elem.attachEvent(\"on\" + type, wrapper);\r\n\t }\r\n\t};\r\n\r\n\texports.removeListener = function(elem, type, callback) {\r\n\t if (elem.removeEventListener) {\r\n\t return elem.removeEventListener(type, callback, false);\r\n\t }\r\n\t if (elem.detachEvent) {\r\n\t elem.detachEvent(\"on\" + type, callback._wrapper || callback);\r\n\t }\r\n\t};\r\n\texports.stopEvent = function(e) {\r\n\t exports.stopPropagation(e);\r\n\t exports.preventDefault(e);\r\n\t return false;\r\n\t};\r\n\r\n\texports.stopPropagation = function(e) {\r\n\t if (e.stopPropagation)\r\n\t e.stopPropagation();\r\n\t else\r\n\t e.cancelBubble = true;\r\n\t};\r\n\r\n\texports.preventDefault = function(e) {\r\n\t if (e.preventDefault)\r\n\t e.preventDefault();\r\n\t else\r\n\t e.returnValue = false;\r\n\t};\r\n\texports.getButton = function(e) {\r\n\t if (e.type == \"dblclick\")\r\n\t return 0;\r\n\t if (e.type == \"contextmenu\" || (useragent.isMac && (e.ctrlKey && !e.altKey && !e.shiftKey)))\r\n\t return 2;\r\n\t if (e.preventDefault) {\r\n\t return e.button;\r\n\t }\r\n\t else {\r\n\t return {1:0, 2:2, 4:1}[e.button];\r\n\t }\r\n\t};\r\n\r\n\texports.capture = function(el, eventHandler, releaseCaptureHandler) {\r\n\t function onMouseUp(e) {\r\n\t eventHandler && eventHandler(e);\r\n\t releaseCaptureHandler && releaseCaptureHandler(e);\r\n\r\n\t exports.removeListener(document, \"mousemove\", eventHandler, true);\r\n\t exports.removeListener(document, \"mouseup\", onMouseUp, true);\r\n\t exports.removeListener(document, \"dragstart\", onMouseUp, true);\r\n\t }\r\n\r\n\t exports.addListener(document, \"mousemove\", eventHandler, true);\r\n\t exports.addListener(document, \"mouseup\", onMouseUp, true);\r\n\t exports.addListener(document, \"dragstart\", onMouseUp, true);\r\n\t \r\n\t return onMouseUp;\r\n\t};\r\n\r\n\texports.addTouchMoveListener = function (el, callback) {\r\n\t if (\"ontouchmove\" in el) {\r\n\t var startx, starty;\r\n\t exports.addListener(el, \"touchstart\", function (e) {\r\n\t var touchObj = e.changedTouches[0];\r\n\t startx = touchObj.clientX;\r\n\t starty = touchObj.clientY;\r\n\t });\r\n\t exports.addListener(el, \"touchmove\", function (e) {\r\n\t var factor = 1,\r\n\t touchObj = e.changedTouches[0];\r\n\r\n\t e.wheelX = -(touchObj.clientX - startx) / factor;\r\n\t e.wheelY = -(touchObj.clientY - starty) / factor;\r\n\r\n\t startx = touchObj.clientX;\r\n\t starty = touchObj.clientY;\r\n\r\n\t callback(e);\r\n\t });\r\n\t } \r\n\t};\r\n\r\n\texports.addMouseWheelListener = function(el, callback) {\r\n\t if (\"onmousewheel\" in el) {\r\n\t exports.addListener(el, \"mousewheel\", function(e) {\r\n\t var factor = 8;\r\n\t if (e.wheelDeltaX !== undefined) {\r\n\t e.wheelX = -e.wheelDeltaX / factor;\r\n\t e.wheelY = -e.wheelDeltaY / factor;\r\n\t } else {\r\n\t e.wheelX = 0;\r\n\t e.wheelY = -e.wheelDelta / factor;\r\n\t }\r\n\t callback(e);\r\n\t });\r\n\t } else if (\"onwheel\" in el) {\r\n\t exports.addListener(el, \"wheel\", function(e) {\r\n\t var factor = 0.35;\r\n\t switch (e.deltaMode) {\r\n\t case e.DOM_DELTA_PIXEL:\r\n\t e.wheelX = e.deltaX * factor || 0;\r\n\t e.wheelY = e.deltaY * factor || 0;\r\n\t break;\r\n\t case e.DOM_DELTA_LINE:\r\n\t case e.DOM_DELTA_PAGE:\r\n\t e.wheelX = (e.deltaX || 0) * 5;\r\n\t e.wheelY = (e.deltaY || 0) * 5;\r\n\t break;\r\n\t }\r\n\t \r\n\t callback(e);\r\n\t });\r\n\t } else {\r\n\t exports.addListener(el, \"DOMMouseScroll\", function(e) {\r\n\t if (e.axis && e.axis == e.HORIZONTAL_AXIS) {\r\n\t e.wheelX = (e.detail || 0) * 5;\r\n\t e.wheelY = 0;\r\n\t } else {\r\n\t e.wheelX = 0;\r\n\t e.wheelY = (e.detail || 0) * 5;\r\n\t }\r\n\t callback(e);\r\n\t });\r\n\t }\r\n\t};\r\n\r\n\texports.addMultiMouseDownListener = function(elements, timeouts, eventHandler, callbackName) {\r\n\t var clicks = 0;\r\n\t var startX, startY, timer; \r\n\t var eventNames = {\r\n\t 2: \"dblclick\",\r\n\t 3: \"tripleclick\",\r\n\t 4: \"quadclick\"\r\n\t };\r\n\r\n\t function onMousedown(e) {\r\n\t if (exports.getButton(e) !== 0) {\r\n\t clicks = 0;\r\n\t } else if (e.detail > 1) {\r\n\t clicks++;\r\n\t if (clicks > 4)\r\n\t clicks = 1;\r\n\t } else {\r\n\t clicks = 1;\r\n\t }\r\n\t if (useragent.isIE) {\r\n\t var isNewClick = Math.abs(e.clientX - startX) > 5 || Math.abs(e.clientY - startY) > 5;\r\n\t if (!timer || isNewClick)\r\n\t clicks = 1;\r\n\t if (timer)\r\n\t clearTimeout(timer);\r\n\t timer = setTimeout(function() {timer = null}, timeouts[clicks - 1] || 600);\r\n\r\n\t if (clicks == 1) {\r\n\t startX = e.clientX;\r\n\t startY = e.clientY;\r\n\t }\r\n\t }\r\n\t \r\n\t e._clicks = clicks;\r\n\r\n\t eventHandler[callbackName](\"mousedown\", e);\r\n\r\n\t if (clicks > 4)\r\n\t clicks = 0;\r\n\t else if (clicks > 1)\r\n\t return eventHandler[callbackName](eventNames[clicks], e);\r\n\t }\r\n\t function onDblclick(e) {\r\n\t clicks = 2;\r\n\t if (timer)\r\n\t clearTimeout(timer);\r\n\t timer = setTimeout(function() {timer = null}, timeouts[clicks - 1] || 600);\r\n\t eventHandler[callbackName](\"mousedown\", e);\r\n\t eventHandler[callbackName](eventNames[clicks], e);\r\n\t }\r\n\t if (!Array.isArray(elements))\r\n\t elements = [elements];\r\n\t elements.forEach(function(el) {\r\n\t exports.addListener(el, \"mousedown\", onMousedown);\r\n\t if (useragent.isOldIE)\r\n\t exports.addListener(el, \"dblclick\", onDblclick);\r\n\t });\r\n\t};\r\n\r\n\tvar getModifierHash = useragent.isMac && useragent.isOpera && !(\"KeyboardEvent\" in window)\r\n\t ? function(e) {\r\n\t return 0 | (e.metaKey ? 1 : 0) | (e.altKey ? 2 : 0) | (e.shiftKey ? 4 : 0) | (e.ctrlKey ? 8 : 0);\r\n\t }\r\n\t : function(e) {\r\n\t return 0 | (e.ctrlKey ? 1 : 0) | (e.altKey ? 2 : 0) | (e.shiftKey ? 4 : 0) | (e.metaKey ? 8 : 0);\r\n\t };\r\n\r\n\texports.getModifierString = function(e) {\r\n\t return keys.KEY_MODS[getModifierHash(e)];\r\n\t};\r\n\r\n\tfunction normalizeCommandKeys(callback, e, keyCode) {\r\n\t var hashId = getModifierHash(e);\r\n\r\n\t if (!useragent.isMac && pressedKeys) {\r\n\t if (pressedKeys.OSKey)\r\n\t hashId |= 8;\r\n\t if (pressedKeys.altGr) {\r\n\t if ((3 & hashId) != 3)\r\n\t pressedKeys.altGr = 0;\r\n\t else\r\n\t return;\r\n\t }\r\n\t if (keyCode === 18 || keyCode === 17) {\r\n\t var location = \"location\" in e ? e.location : e.keyLocation;\r\n\t if (keyCode === 17 && location === 1) {\r\n\t if (pressedKeys[keyCode] == 1)\r\n\t ts = e.timeStamp;\r\n\t } else if (keyCode === 18 && hashId === 3 && location === 2) {\r\n\t var dt = e.timeStamp - ts;\r\n\t if (dt < 50)\r\n\t pressedKeys.altGr = true;\r\n\t }\r\n\t }\r\n\t }\r\n\t \r\n\t if (keyCode in keys.MODIFIER_KEYS) {\r\n\t keyCode = -1;\r\n\t }\r\n\t if (hashId & 8 && (keyCode >= 91 && keyCode <= 93)) {\r\n\t keyCode = -1;\r\n\t }\r\n\t \r\n\t if (!hashId && keyCode === 13) {\r\n\t var location = \"location\" in e ? e.location : e.keyLocation;\r\n\t if (location === 3) {\r\n\t callback(e, hashId, -keyCode);\r\n\t if (e.defaultPrevented)\r\n\t return;\r\n\t }\r\n\t }\r\n\t \r\n\t if (useragent.isChromeOS && hashId & 8) {\r\n\t callback(e, hashId, keyCode);\r\n\t if (e.defaultPrevented)\r\n\t return;\r\n\t else\r\n\t hashId &= ~8;\r\n\t }\r\n\t if (!hashId && !(keyCode in keys.FUNCTION_KEYS) && !(keyCode in keys.PRINTABLE_KEYS)) {\r\n\t return false;\r\n\t }\r\n\t \r\n\t return callback(e, hashId, keyCode);\r\n\t}\r\n\r\n\r\n\texports.addCommandKeyListener = function(el, callback) {\r\n\t var addListener = exports.addListener;\r\n\t if (useragent.isOldGecko || (useragent.isOpera && !(\"KeyboardEvent\" in window))) {\r\n\t var lastKeyDownKeyCode = null;\r\n\t addListener(el, \"keydown\", function(e) {\r\n\t lastKeyDownKeyCode = e.keyCode;\r\n\t });\r\n\t addListener(el, \"keypress\", function(e) {\r\n\t return normalizeCommandKeys(callback, e, lastKeyDownKeyCode);\r\n\t });\r\n\t } else {\r\n\t var lastDefaultPrevented = null;\r\n\r\n\t addListener(el, \"keydown\", function(e) {\r\n\t var keyCode = e.keyCode;\r\n\t pressedKeys[keyCode] = (pressedKeys[keyCode] || 0) + 1;\r\n\t if (keyCode == 91 || keyCode == 92) {\r\n\t pressedKeys.OSKey = true;\r\n\t } else if (pressedKeys.OSKey) {\r\n\t if (e.timeStamp - pressedKeys.lastT > 200 && pressedKeys.count == 1)\r\n\t resetPressedKeys();\r\n\t }\r\n\t if (pressedKeys[keyCode] == 1)\r\n\t pressedKeys.count++;\r\n\t pressedKeys.lastT = e.timeStamp;\r\n\t var result = normalizeCommandKeys(callback, e, keyCode);\r\n\t lastDefaultPrevented = e.defaultPrevented;\r\n\t return result;\r\n\t });\r\n\r\n\t addListener(el, \"keypress\", function(e) {\r\n\t if (lastDefaultPrevented && (e.ctrlKey || e.altKey || e.shiftKey || e.metaKey)) {\r\n\t exports.stopEvent(e);\r\n\t lastDefaultPrevented = null;\r\n\t }\r\n\t });\r\n\r\n\t addListener(el, \"keyup\", function(e) {\r\n\t var keyCode = e.keyCode;\r\n\t if (!pressedKeys[keyCode]) {\r\n\t resetPressedKeys();\r\n\t } else {\r\n\t pressedKeys.count = Math.max(pressedKeys.count - 1, 0);\r\n\t }\r\n\t if (keyCode == 91 || keyCode == 92) {\r\n\t pressedKeys.OSKey = false;\r\n\t }\r\n\t pressedKeys[keyCode] = null;\r\n\t });\r\n\r\n\t if (!pressedKeys) {\r\n\t resetPressedKeys();\r\n\t addListener(window, \"focus\", resetPressedKeys);\r\n\t }\r\n\t }\r\n\t};\r\n\tfunction resetPressedKeys() {\r\n\t pressedKeys = Object.create(null);\r\n\t pressedKeys.count = 0;\r\n\t pressedKeys.lastT = 0;\r\n\t}\r\n\r\n\tif (typeof window == \"object\" && window.postMessage && !useragent.isOldIE) {\r\n\t var postMessageId = 1;\r\n\t exports.nextTick = function(callback, win) {\r\n\t win = win || window;\r\n\t var messageName = \"zero-timeout-message-\" + postMessageId;\r\n\t exports.addListener(win, \"message\", function listener(e) {\r\n\t if (e.data == messageName) {\r\n\t exports.stopPropagation(e);\r\n\t exports.removeListener(win, \"message\", listener);\r\n\t callback();\r\n\t }\r\n\t });\r\n\t win.postMessage(messageName, \"*\");\r\n\t };\r\n\t}\r\n\r\n\r\n\texports.nextFrame = typeof window == \"object\" && (window.requestAnimationFrame\r\n\t || window.mozRequestAnimationFrame\r\n\t || window.webkitRequestAnimationFrame\r\n\t || window.msRequestAnimationFrame\r\n\t || window.oRequestAnimationFrame);\r\n\r\n\tif (exports.nextFrame)\r\n\t exports.nextFrame = exports.nextFrame.bind(window);\r\n\telse\r\n\t exports.nextFrame = function(callback) {\r\n\t setTimeout(callback, 17);\r\n\t };\r\n\t});\r\n\r\n\tace.define(\"ace/lib/lang\",[\"require\",\"exports\",\"module\"], function(acequire, exports, module) {\r\n\t\"use strict\";\r\n\r\n\texports.last = function(a) {\r\n\t return a[a.length - 1];\r\n\t};\r\n\r\n\texports.stringReverse = function(string) {\r\n\t return string.split(\"\").reverse().join(\"\");\r\n\t};\r\n\r\n\texports.stringRepeat = function (string, count) {\r\n\t var result = '';\r\n\t while (count > 0) {\r\n\t if (count & 1)\r\n\t result += string;\r\n\r\n\t if (count >>= 1)\r\n\t string += string;\r\n\t }\r\n\t return result;\r\n\t};\r\n\r\n\tvar trimBeginRegexp = /^\\s\\s*/;\r\n\tvar trimEndRegexp = /\\s\\s*$/;\r\n\r\n\texports.stringTrimLeft = function (string) {\r\n\t return string.replace(trimBeginRegexp, '');\r\n\t};\r\n\r\n\texports.stringTrimRight = function (string) {\r\n\t return string.replace(trimEndRegexp, '');\r\n\t};\r\n\r\n\texports.copyObject = function(obj) {\r\n\t var copy = {};\r\n\t for (var key in obj) {\r\n\t copy[key] = obj[key];\r\n\t }\r\n\t return copy;\r\n\t};\r\n\r\n\texports.copyArray = function(array){\r\n\t var copy = [];\r\n\t for (var i=0, l=array.length; i 1);\r\n\t return ev.preventDefault();\r\n\t };\r\n\r\n\t this.startSelect = function(pos, waitForClickSelection) {\r\n\t pos = pos || this.editor.renderer.screenToTextCoordinates(this.x, this.y);\r\n\t var editor = this.editor;\r\n\t editor.$blockScrolling++;\r\n\t if (this.mousedownEvent.getShiftKey())\r\n\t editor.selection.selectToPosition(pos);\r\n\t else if (!waitForClickSelection)\r\n\t editor.selection.moveToPosition(pos);\r\n\t if (!waitForClickSelection)\r\n\t this.select();\r\n\t if (editor.renderer.scroller.setCapture) {\r\n\t editor.renderer.scroller.setCapture();\r\n\t }\r\n\t editor.setStyle(\"ace_selecting\");\r\n\t this.setState(\"select\");\r\n\t editor.$blockScrolling--;\r\n\t };\r\n\r\n\t this.select = function() {\r\n\t var anchor, editor = this.editor;\r\n\t var cursor = editor.renderer.screenToTextCoordinates(this.x, this.y);\r\n\t editor.$blockScrolling++;\r\n\t if (this.$clickSelection) {\r\n\t var cmp = this.$clickSelection.comparePoint(cursor);\r\n\r\n\t if (cmp == -1) {\r\n\t anchor = this.$clickSelection.end;\r\n\t } else if (cmp == 1) {\r\n\t anchor = this.$clickSelection.start;\r\n\t } else {\r\n\t var orientedRange = calcRangeOrientation(this.$clickSelection, cursor);\r\n\t cursor = orientedRange.cursor;\r\n\t anchor = orientedRange.anchor;\r\n\t }\r\n\t editor.selection.setSelectionAnchor(anchor.row, anchor.column);\r\n\t }\r\n\t editor.selection.selectToPosition(cursor);\r\n\t editor.$blockScrolling--;\r\n\t editor.renderer.scrollCursorIntoView();\r\n\t };\r\n\r\n\t this.extendSelectionBy = function(unitName) {\r\n\t var anchor, editor = this.editor;\r\n\t var cursor = editor.renderer.screenToTextCoordinates(this.x, this.y);\r\n\t var range = editor.selection[unitName](cursor.row, cursor.column);\r\n\t editor.$blockScrolling++;\r\n\t if (this.$clickSelection) {\r\n\t var cmpStart = this.$clickSelection.comparePoint(range.start);\r\n\t var cmpEnd = this.$clickSelection.comparePoint(range.end);\r\n\r\n\t if (cmpStart == -1 && cmpEnd <= 0) {\r\n\t anchor = this.$clickSelection.end;\r\n\t if (range.end.row != cursor.row || range.end.column != cursor.column)\r\n\t cursor = range.start;\r\n\t } else if (cmpEnd == 1 && cmpStart >= 0) {\r\n\t anchor = this.$clickSelection.start;\r\n\t if (range.start.row != cursor.row || range.start.column != cursor.column)\r\n\t cursor = range.end;\r\n\t } else if (cmpStart == -1 && cmpEnd == 1) {\r\n\t cursor = range.end;\r\n\t anchor = range.start;\r\n\t } else {\r\n\t var orientedRange = calcRangeOrientation(this.$clickSelection, cursor);\r\n\t cursor = orientedRange.cursor;\r\n\t anchor = orientedRange.anchor;\r\n\t }\r\n\t editor.selection.setSelectionAnchor(anchor.row, anchor.column);\r\n\t }\r\n\t editor.selection.selectToPosition(cursor);\r\n\t editor.$blockScrolling--;\r\n\t editor.renderer.scrollCursorIntoView();\r\n\t };\r\n\r\n\t this.selectEnd =\r\n\t this.selectAllEnd =\r\n\t this.selectByWordsEnd =\r\n\t this.selectByLinesEnd = function() {\r\n\t this.$clickSelection = null;\r\n\t this.editor.unsetStyle(\"ace_selecting\");\r\n\t if (this.editor.renderer.scroller.releaseCapture) {\r\n\t this.editor.renderer.scroller.releaseCapture();\r\n\t }\r\n\t };\r\n\r\n\t this.focusWait = function() {\r\n\t var distance = calcDistance(this.mousedownEvent.x, this.mousedownEvent.y, this.x, this.y);\r\n\t var time = Date.now();\r\n\r\n\t if (distance > DRAG_OFFSET || time - this.mousedownEvent.time > this.$focusTimout)\r\n\t this.startSelect(this.mousedownEvent.getDocumentPosition());\r\n\t };\r\n\r\n\t this.onDoubleClick = function(ev) {\r\n\t var pos = ev.getDocumentPosition();\r\n\t var editor = this.editor;\r\n\t var session = editor.session;\r\n\r\n\t var range = session.getBracketRange(pos);\r\n\t if (range) {\r\n\t if (range.isEmpty()) {\r\n\t range.start.column--;\r\n\t range.end.column++;\r\n\t }\r\n\t this.setState(\"select\");\r\n\t } else {\r\n\t range = editor.selection.getWordRange(pos.row, pos.column);\r\n\t this.setState(\"selectByWords\");\r\n\t }\r\n\t this.$clickSelection = range;\r\n\t this.select();\r\n\t };\r\n\r\n\t this.onTripleClick = function(ev) {\r\n\t var pos = ev.getDocumentPosition();\r\n\t var editor = this.editor;\r\n\r\n\t this.setState(\"selectByLines\");\r\n\t var range = editor.getSelectionRange();\r\n\t if (range.isMultiLine() && range.contains(pos.row, pos.column)) {\r\n\t this.$clickSelection = editor.selection.getLineRange(range.start.row);\r\n\t this.$clickSelection.end = editor.selection.getLineRange(range.end.row).end;\r\n\t } else {\r\n\t this.$clickSelection = editor.selection.getLineRange(pos.row);\r\n\t }\r\n\t this.select();\r\n\t };\r\n\r\n\t this.onQuadClick = function(ev) {\r\n\t var editor = this.editor;\r\n\r\n\t editor.selectAll();\r\n\t this.$clickSelection = editor.getSelectionRange();\r\n\t this.setState(\"selectAll\");\r\n\t };\r\n\r\n\t this.onMouseWheel = function(ev) {\r\n\t if (ev.getAccelKey())\r\n\t return;\r\n\t if (ev.getShiftKey() && ev.wheelY && !ev.wheelX) {\r\n\t ev.wheelX = ev.wheelY;\r\n\t ev.wheelY = 0;\r\n\t }\r\n\r\n\t var t = ev.domEvent.timeStamp;\r\n\t var dt = t - (this.$lastScrollTime||0);\r\n\t \r\n\t var editor = this.editor;\r\n\t var isScrolable = editor.renderer.isScrollableBy(ev.wheelX * ev.speed, ev.wheelY * ev.speed);\r\n\t if (isScrolable || dt < 200) {\r\n\t this.$lastScrollTime = t;\r\n\t editor.renderer.scrollBy(ev.wheelX * ev.speed, ev.wheelY * ev.speed);\r\n\t return ev.stop();\r\n\t }\r\n\t };\r\n\t \r\n\t this.onTouchMove = function (ev) {\r\n\t var t = ev.domEvent.timeStamp;\r\n\t var dt = t - (this.$lastScrollTime || 0);\r\n\r\n\t var editor = this.editor;\r\n\t var isScrolable = editor.renderer.isScrollableBy(ev.wheelX * ev.speed, ev.wheelY * ev.speed);\r\n\t if (isScrolable || dt < 200) {\r\n\t this.$lastScrollTime = t;\r\n\t editor.renderer.scrollBy(ev.wheelX * ev.speed, ev.wheelY * ev.speed);\r\n\t return ev.stop();\r\n\t }\r\n\t };\r\n\r\n\t}).call(DefaultHandlers.prototype);\r\n\r\n\texports.DefaultHandlers = DefaultHandlers;\r\n\r\n\tfunction calcDistance(ax, ay, bx, by) {\r\n\t return Math.sqrt(Math.pow(bx - ax, 2) + Math.pow(by - ay, 2));\r\n\t}\r\n\r\n\tfunction calcRangeOrientation(range, cursor) {\r\n\t if (range.start.row == range.end.row)\r\n\t var cmp = 2 * cursor.column - range.start.column - range.end.column;\r\n\t else if (range.start.row == range.end.row - 1 && !range.start.column && !range.end.column)\r\n\t var cmp = cursor.column - 4;\r\n\t else\r\n\t var cmp = 2 * cursor.row - range.start.row - range.end.row;\r\n\r\n\t if (cmp < 0)\r\n\t return {cursor: range.start, anchor: range.end};\r\n\t else\r\n\t return {cursor: range.end, anchor: range.start};\r\n\t}\r\n\r\n\t});\r\n\r\n\tace.define(\"ace/tooltip\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/dom\"], function(acequire, exports, module) {\r\n\t\"use strict\";\r\n\r\n\tvar oop = acequire(\"./lib/oop\");\r\n\tvar dom = acequire(\"./lib/dom\");\r\n\tfunction Tooltip (parentNode) {\r\n\t this.isOpen = false;\r\n\t this.$element = null;\r\n\t this.$parentNode = parentNode;\r\n\t}\r\n\r\n\t(function() {\r\n\t this.$init = function() {\r\n\t this.$element = dom.createElement(\"div\");\r\n\t this.$element.className = \"ace_tooltip\";\r\n\t this.$element.style.display = \"none\";\r\n\t this.$parentNode.appendChild(this.$element);\r\n\t return this.$element;\r\n\t };\r\n\t this.getElement = function() {\r\n\t return this.$element || this.$init();\r\n\t };\r\n\t this.setText = function(text) {\r\n\t dom.setInnerText(this.getElement(), text);\r\n\t };\r\n\t this.setHtml = function(html) {\r\n\t this.getElement().innerHTML = html;\r\n\t };\r\n\t this.setPosition = function(x, y) {\r\n\t this.getElement().style.left = x + \"px\";\r\n\t this.getElement().style.top = y + \"px\";\r\n\t };\r\n\t this.setClassName = function(className) {\r\n\t dom.addCssClass(this.getElement(), className);\r\n\t };\r\n\t this.show = function(text, x, y) {\r\n\t if (text != null)\r\n\t this.setText(text);\r\n\t if (x != null && y != null)\r\n\t this.setPosition(x, y);\r\n\t if (!this.isOpen) {\r\n\t this.getElement().style.display = \"block\";\r\n\t this.isOpen = true;\r\n\t }\r\n\t };\r\n\r\n\t this.hide = function() {\r\n\t if (this.isOpen) {\r\n\t this.getElement().style.display = \"none\";\r\n\t this.isOpen = false;\r\n\t }\r\n\t };\r\n\t this.getHeight = function() {\r\n\t return this.getElement().offsetHeight;\r\n\t };\r\n\t this.getWidth = function() {\r\n\t return this.getElement().offsetWidth;\r\n\t };\r\n\r\n\t}).call(Tooltip.prototype);\r\n\r\n\texports.Tooltip = Tooltip;\r\n\t});\r\n\r\n\tace.define(\"ace/mouse/default_gutter_handler\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\",\"ace/lib/oop\",\"ace/lib/event\",\"ace/tooltip\"], function(acequire, exports, module) {\r\n\t\"use strict\";\r\n\tvar dom = acequire(\"../lib/dom\");\r\n\tvar oop = acequire(\"../lib/oop\");\r\n\tvar event = acequire(\"../lib/event\");\r\n\tvar Tooltip = acequire(\"../tooltip\").Tooltip;\r\n\r\n\tfunction GutterHandler(mouseHandler) {\r\n\t var editor = mouseHandler.editor;\r\n\t var gutter = editor.renderer.$gutterLayer;\r\n\t var tooltip = new GutterTooltip(editor.container);\r\n\r\n\t mouseHandler.editor.setDefaultHandler(\"guttermousedown\", function(e) {\r\n\t if (!editor.isFocused() || e.getButton() != 0)\r\n\t return;\r\n\t var gutterRegion = gutter.getRegion(e);\r\n\r\n\t if (gutterRegion == \"foldWidgets\")\r\n\t return;\r\n\r\n\t var row = e.getDocumentPosition().row;\r\n\t var selection = editor.session.selection;\r\n\r\n\t if (e.getShiftKey())\r\n\t selection.selectTo(row, 0);\r\n\t else {\r\n\t if (e.domEvent.detail == 2) {\r\n\t editor.selectAll();\r\n\t return e.preventDefault();\r\n\t }\r\n\t mouseHandler.$clickSelection = editor.selection.getLineRange(row);\r\n\t }\r\n\t mouseHandler.setState(\"selectByLines\");\r\n\t mouseHandler.captureMouse(e);\r\n\t return e.preventDefault();\r\n\t });\r\n\r\n\r\n\t var tooltipTimeout, mouseEvent, tooltipAnnotation;\r\n\r\n\t function showTooltip() {\r\n\t var row = mouseEvent.getDocumentPosition().row;\r\n\t var annotation = gutter.$annotations[row];\r\n\t if (!annotation)\r\n\t return hideTooltip();\r\n\r\n\t var maxRow = editor.session.getLength();\r\n\t if (row == maxRow) {\r\n\t var screenRow = editor.renderer.pixelToScreenCoordinates(0, mouseEvent.y).row;\r\n\t var pos = mouseEvent.$pos;\r\n\t if (screenRow > editor.session.documentToScreenRow(pos.row, pos.column))\r\n\t return hideTooltip();\r\n\t }\r\n\r\n\t if (tooltipAnnotation == annotation)\r\n\t return;\r\n\t tooltipAnnotation = annotation.text.join(\"
\");\r\n\r\n\t tooltip.setHtml(tooltipAnnotation);\r\n\t tooltip.show();\r\n\t editor.on(\"mousewheel\", hideTooltip);\r\n\r\n\t if (mouseHandler.$tooltipFollowsMouse) {\r\n\t moveTooltip(mouseEvent);\r\n\t } else {\r\n\t var gutterElement = mouseEvent.domEvent.target;\r\n\t var rect = gutterElement.getBoundingClientRect();\r\n\t var style = tooltip.getElement().style;\r\n\t style.left = rect.right + \"px\";\r\n\t style.top = rect.bottom + \"px\";\r\n\t }\r\n\t }\r\n\r\n\t function hideTooltip() {\r\n\t if (tooltipTimeout)\r\n\t tooltipTimeout = clearTimeout(tooltipTimeout);\r\n\t if (tooltipAnnotation) {\r\n\t tooltip.hide();\r\n\t tooltipAnnotation = null;\r\n\t editor.removeEventListener(\"mousewheel\", hideTooltip);\r\n\t }\r\n\t }\r\n\r\n\t function moveTooltip(e) {\r\n\t tooltip.setPosition(e.x, e.y);\r\n\t }\r\n\r\n\t mouseHandler.editor.setDefaultHandler(\"guttermousemove\", function(e) {\r\n\t var target = e.domEvent.target || e.domEvent.srcElement;\r\n\t if (dom.hasCssClass(target, \"ace_fold-widget\"))\r\n\t return hideTooltip();\r\n\r\n\t if (tooltipAnnotation && mouseHandler.$tooltipFollowsMouse)\r\n\t moveTooltip(e);\r\n\r\n\t mouseEvent = e;\r\n\t if (tooltipTimeout)\r\n\t return;\r\n\t tooltipTimeout = setTimeout(function() {\r\n\t tooltipTimeout = null;\r\n\t if (mouseEvent && !mouseHandler.isMousePressed)\r\n\t showTooltip();\r\n\t else\r\n\t hideTooltip();\r\n\t }, 50);\r\n\t });\r\n\r\n\t event.addListener(editor.renderer.$gutter, \"mouseout\", function(e) {\r\n\t mouseEvent = null;\r\n\t if (!tooltipAnnotation || tooltipTimeout)\r\n\t return;\r\n\r\n\t tooltipTimeout = setTimeout(function() {\r\n\t tooltipTimeout = null;\r\n\t hideTooltip();\r\n\t }, 50);\r\n\t });\r\n\t \r\n\t editor.on(\"changeSession\", hideTooltip);\r\n\t}\r\n\r\n\tfunction GutterTooltip(parentNode) {\r\n\t Tooltip.call(this, parentNode);\r\n\t}\r\n\r\n\toop.inherits(GutterTooltip, Tooltip);\r\n\r\n\t(function(){\r\n\t this.setPosition = function(x, y) {\r\n\t var windowWidth = window.innerWidth || document.documentElement.clientWidth;\r\n\t var windowHeight = window.innerHeight || document.documentElement.clientHeight;\r\n\t var width = this.getWidth();\r\n\t var height = this.getHeight();\r\n\t x += 15;\r\n\t y += 15;\r\n\t if (x + width > windowWidth) {\r\n\t x -= (x + width) - windowWidth;\r\n\t }\r\n\t if (y + height > windowHeight) {\r\n\t y -= 20 + height;\r\n\t }\r\n\t Tooltip.prototype.setPosition.call(this, x, y);\r\n\t };\r\n\r\n\t}).call(GutterTooltip.prototype);\r\n\r\n\r\n\r\n\texports.GutterHandler = GutterHandler;\r\n\r\n\t});\r\n\r\n\tace.define(\"ace/mouse/mouse_event\",[\"require\",\"exports\",\"module\",\"ace/lib/event\",\"ace/lib/useragent\"], function(acequire, exports, module) {\r\n\t\"use strict\";\r\n\r\n\tvar event = acequire(\"../lib/event\");\r\n\tvar useragent = acequire(\"../lib/useragent\");\r\n\tvar MouseEvent = exports.MouseEvent = function(domEvent, editor) {\r\n\t this.domEvent = domEvent;\r\n\t this.editor = editor;\r\n\t \r\n\t this.x = this.clientX = domEvent.clientX;\r\n\t this.y = this.clientY = domEvent.clientY;\r\n\r\n\t this.$pos = null;\r\n\t this.$inSelection = null;\r\n\t \r\n\t this.propagationStopped = false;\r\n\t this.defaultPrevented = false;\r\n\t};\r\n\r\n\t(function() { \r\n\t \r\n\t this.stopPropagation = function() {\r\n\t event.stopPropagation(this.domEvent);\r\n\t this.propagationStopped = true;\r\n\t };\r\n\t \r\n\t this.preventDefault = function() {\r\n\t event.preventDefault(this.domEvent);\r\n\t this.defaultPrevented = true;\r\n\t };\r\n\t \r\n\t this.stop = function() {\r\n\t this.stopPropagation();\r\n\t this.preventDefault();\r\n\t };\r\n\t this.getDocumentPosition = function() {\r\n\t if (this.$pos)\r\n\t return this.$pos;\r\n\t \r\n\t this.$pos = this.editor.renderer.screenToTextCoordinates(this.clientX, this.clientY);\r\n\t return this.$pos;\r\n\t };\r\n\t this.inSelection = function() {\r\n\t if (this.$inSelection !== null)\r\n\t return this.$inSelection;\r\n\t \r\n\t var editor = this.editor;\r\n\t \r\n\r\n\t var selectionRange = editor.getSelectionRange();\r\n\t if (selectionRange.isEmpty())\r\n\t this.$inSelection = false;\r\n\t else {\r\n\t var pos = this.getDocumentPosition();\r\n\t this.$inSelection = selectionRange.contains(pos.row, pos.column);\r\n\t }\r\n\r\n\t return this.$inSelection;\r\n\t };\r\n\t this.getButton = function() {\r\n\t return event.getButton(this.domEvent);\r\n\t };\r\n\t this.getShiftKey = function() {\r\n\t return this.domEvent.shiftKey;\r\n\t };\r\n\t \r\n\t this.getAccelKey = useragent.isMac\r\n\t ? function() { return this.domEvent.metaKey; }\r\n\t : function() { return this.domEvent.ctrlKey; };\r\n\t \r\n\t}).call(MouseEvent.prototype);\r\n\r\n\t});\r\n\r\n\tace.define(\"ace/mouse/dragdrop_handler\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\",\"ace/lib/event\",\"ace/lib/useragent\"], function(acequire, exports, module) {\r\n\t\"use strict\";\r\n\r\n\tvar dom = acequire(\"../lib/dom\");\r\n\tvar event = acequire(\"../lib/event\");\r\n\tvar useragent = acequire(\"../lib/useragent\");\r\n\r\n\tvar AUTOSCROLL_DELAY = 200;\r\n\tvar SCROLL_CURSOR_DELAY = 200;\r\n\tvar SCROLL_CURSOR_HYSTERESIS = 5;\r\n\r\n\tfunction DragdropHandler(mouseHandler) {\r\n\r\n\t var editor = mouseHandler.editor;\r\n\r\n\t var blankImage = dom.createElement(\"img\");\r\n\t blankImage.src = \"data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\";\r\n\t if (useragent.isOpera)\r\n\t blankImage.style.cssText = \"width:1px;height:1px;position:fixed;top:0;left:0;z-index:2147483647;opacity:0;\";\r\n\r\n\t var exports = [\"dragWait\", \"dragWaitEnd\", \"startDrag\", \"dragReadyEnd\", \"onMouseDrag\"];\r\n\r\n\t exports.forEach(function(x) {\r\n\t mouseHandler[x] = this[x];\r\n\t }, this);\r\n\t editor.addEventListener(\"mousedown\", this.onMouseDown.bind(mouseHandler));\r\n\r\n\r\n\t var mouseTarget = editor.container;\r\n\t var dragSelectionMarker, x, y;\r\n\t var timerId, range;\r\n\t var dragCursor, counter = 0;\r\n\t var dragOperation;\r\n\t var isInternal;\r\n\t var autoScrollStartTime;\r\n\t var cursorMovedTime;\r\n\t var cursorPointOnCaretMoved;\r\n\r\n\t this.onDragStart = function(e) {\r\n\t if (this.cancelDrag || !mouseTarget.draggable) {\r\n\t var self = this;\r\n\t setTimeout(function(){\r\n\t self.startSelect();\r\n\t self.captureMouse(e);\r\n\t }, 0);\r\n\t return e.preventDefault();\r\n\t }\r\n\t range = editor.getSelectionRange();\r\n\r\n\t var dataTransfer = e.dataTransfer;\r\n\t dataTransfer.effectAllowed = editor.getReadOnly() ? \"copy\" : \"copyMove\";\r\n\t if (useragent.isOpera) {\r\n\t editor.container.appendChild(blankImage);\r\n\t blankImage.scrollTop = 0;\r\n\t }\r\n\t dataTransfer.setDragImage && dataTransfer.setDragImage(blankImage, 0, 0);\r\n\t if (useragent.isOpera) {\r\n\t editor.container.removeChild(blankImage);\r\n\t }\r\n\t dataTransfer.clearData();\r\n\t dataTransfer.setData(\"Text\", editor.session.getTextRange());\r\n\r\n\t isInternal = true;\r\n\t this.setState(\"drag\");\r\n\t };\r\n\r\n\t this.onDragEnd = function(e) {\r\n\t mouseTarget.draggable = false;\r\n\t isInternal = false;\r\n\t this.setState(null);\r\n\t if (!editor.getReadOnly()) {\r\n\t var dropEffect = e.dataTransfer.dropEffect;\r\n\t if (!dragOperation && dropEffect == \"move\")\r\n\t editor.session.remove(editor.getSelectionRange());\r\n\t editor.renderer.$cursorLayer.setBlinking(true);\r\n\t }\r\n\t this.editor.unsetStyle(\"ace_dragging\");\r\n\t this.editor.renderer.setCursorStyle(\"\");\r\n\t };\r\n\r\n\t this.onDragEnter = function(e) {\r\n\t if (editor.getReadOnly() || !canAccept(e.dataTransfer))\r\n\t return;\r\n\t x = e.clientX;\r\n\t y = e.clientY;\r\n\t if (!dragSelectionMarker)\r\n\t addDragMarker();\r\n\t counter++;\r\n\t e.dataTransfer.dropEffect = dragOperation = getDropEffect(e);\r\n\t return event.preventDefault(e);\r\n\t };\r\n\r\n\t this.onDragOver = function(e) {\r\n\t if (editor.getReadOnly() || !canAccept(e.dataTransfer))\r\n\t return;\r\n\t x = e.clientX;\r\n\t y = e.clientY;\r\n\t if (!dragSelectionMarker) {\r\n\t addDragMarker();\r\n\t counter++;\r\n\t }\r\n\t if (onMouseMoveTimer !== null)\r\n\t onMouseMoveTimer = null;\r\n\r\n\t e.dataTransfer.dropEffect = dragOperation = getDropEffect(e);\r\n\t return event.preventDefault(e);\r\n\t };\r\n\r\n\t this.onDragLeave = function(e) {\r\n\t counter--;\r\n\t if (counter <= 0 && dragSelectionMarker) {\r\n\t clearDragMarker();\r\n\t dragOperation = null;\r\n\t return event.preventDefault(e);\r\n\t }\r\n\t };\r\n\r\n\t this.onDrop = function(e) {\r\n\t if (!dragCursor)\r\n\t return;\r\n\t var dataTransfer = e.dataTransfer;\r\n\t if (isInternal) {\r\n\t switch (dragOperation) {\r\n\t case \"move\":\r\n\t if (range.contains(dragCursor.row, dragCursor.column)) {\r\n\t range = {\r\n\t start: dragCursor,\r\n\t end: dragCursor\r\n\t };\r\n\t } else {\r\n\t range = editor.moveText(range, dragCursor);\r\n\t }\r\n\t break;\r\n\t case \"copy\":\r\n\t range = editor.moveText(range, dragCursor, true);\r\n\t break;\r\n\t }\r\n\t } else {\r\n\t var dropData = dataTransfer.getData('Text');\r\n\t range = {\r\n\t start: dragCursor,\r\n\t end: editor.session.insert(dragCursor, dropData)\r\n\t };\r\n\t editor.focus();\r\n\t dragOperation = null;\r\n\t }\r\n\t clearDragMarker();\r\n\t return event.preventDefault(e);\r\n\t };\r\n\r\n\t event.addListener(mouseTarget, \"dragstart\", this.onDragStart.bind(mouseHandler));\r\n\t event.addListener(mouseTarget, \"dragend\", this.onDragEnd.bind(mouseHandler));\r\n\t event.addListener(mouseTarget, \"dragenter\", this.onDragEnter.bind(mouseHandler));\r\n\t event.addListener(mouseTarget, \"dragover\", this.onDragOver.bind(mouseHandler));\r\n\t event.addListener(mouseTarget, \"dragleave\", this.onDragLeave.bind(mouseHandler));\r\n\t event.addListener(mouseTarget, \"drop\", this.onDrop.bind(mouseHandler));\r\n\r\n\t function scrollCursorIntoView(cursor, prevCursor) {\r\n\t var now = Date.now();\r\n\t var vMovement = !prevCursor || cursor.row != prevCursor.row;\r\n\t var hMovement = !prevCursor || cursor.column != prevCursor.column;\r\n\t if (!cursorMovedTime || vMovement || hMovement) {\r\n\t editor.$blockScrolling += 1;\r\n\t editor.moveCursorToPosition(cursor);\r\n\t editor.$blockScrolling -= 1;\r\n\t cursorMovedTime = now;\r\n\t cursorPointOnCaretMoved = {x: x, y: y};\r\n\t } else {\r\n\t var distance = calcDistance(cursorPointOnCaretMoved.x, cursorPointOnCaretMoved.y, x, y);\r\n\t if (distance > SCROLL_CURSOR_HYSTERESIS) {\r\n\t cursorMovedTime = null;\r\n\t } else if (now - cursorMovedTime >= SCROLL_CURSOR_DELAY) {\r\n\t editor.renderer.scrollCursorIntoView();\r\n\t cursorMovedTime = null;\r\n\t }\r\n\t }\r\n\t }\r\n\r\n\t function autoScroll(cursor, prevCursor) {\r\n\t var now = Date.now();\r\n\t var lineHeight = editor.renderer.layerConfig.lineHeight;\r\n\t var characterWidth = editor.renderer.layerConfig.characterWidth;\r\n\t var editorRect = editor.renderer.scroller.getBoundingClientRect();\r\n\t var offsets = {\r\n\t x: {\r\n\t left: x - editorRect.left,\r\n\t right: editorRect.right - x\r\n\t },\r\n\t y: {\r\n\t top: y - editorRect.top,\r\n\t bottom: editorRect.bottom - y\r\n\t }\r\n\t };\r\n\t var nearestXOffset = Math.min(offsets.x.left, offsets.x.right);\r\n\t var nearestYOffset = Math.min(offsets.y.top, offsets.y.bottom);\r\n\t var scrollCursor = {row: cursor.row, column: cursor.column};\r\n\t if (nearestXOffset / characterWidth <= 2) {\r\n\t scrollCursor.column += (offsets.x.left < offsets.x.right ? -3 : +2);\r\n\t }\r\n\t if (nearestYOffset / lineHeight <= 1) {\r\n\t scrollCursor.row += (offsets.y.top < offsets.y.bottom ? -1 : +1);\r\n\t }\r\n\t var vScroll = cursor.row != scrollCursor.row;\r\n\t var hScroll = cursor.column != scrollCursor.column;\r\n\t var vMovement = !prevCursor || cursor.row != prevCursor.row;\r\n\t if (vScroll || (hScroll && !vMovement)) {\r\n\t if (!autoScrollStartTime)\r\n\t autoScrollStartTime = now;\r\n\t else if (now - autoScrollStartTime >= AUTOSCROLL_DELAY)\r\n\t editor.renderer.scrollCursorIntoView(scrollCursor);\r\n\t } else {\r\n\t autoScrollStartTime = null;\r\n\t }\r\n\t }\r\n\r\n\t function onDragInterval() {\r\n\t var prevCursor = dragCursor;\r\n\t dragCursor = editor.renderer.screenToTextCoordinates(x, y);\r\n\t scrollCursorIntoView(dragCursor, prevCursor);\r\n\t autoScroll(dragCursor, prevCursor);\r\n\t }\r\n\r\n\t function addDragMarker() {\r\n\t range = editor.selection.toOrientedRange();\r\n\t dragSelectionMarker = editor.session.addMarker(range, \"ace_selection\", editor.getSelectionStyle());\r\n\t editor.clearSelection();\r\n\t if (editor.isFocused())\r\n\t editor.renderer.$cursorLayer.setBlinking(false);\r\n\t clearInterval(timerId);\r\n\t onDragInterval();\r\n\t timerId = setInterval(onDragInterval, 20);\r\n\t counter = 0;\r\n\t event.addListener(document, \"mousemove\", onMouseMove);\r\n\t }\r\n\r\n\t function clearDragMarker() {\r\n\t clearInterval(timerId);\r\n\t editor.session.removeMarker(dragSelectionMarker);\r\n\t dragSelectionMarker = null;\r\n\t editor.$blockScrolling += 1;\r\n\t editor.selection.fromOrientedRange(range);\r\n\t editor.$blockScrolling -= 1;\r\n\t if (editor.isFocused() && !isInternal)\r\n\t editor.renderer.$cursorLayer.setBlinking(!editor.getReadOnly());\r\n\t range = null;\r\n\t dragCursor = null;\r\n\t counter = 0;\r\n\t autoScrollStartTime = null;\r\n\t cursorMovedTime = null;\r\n\t event.removeListener(document, \"mousemove\", onMouseMove);\r\n\t }\r\n\t var onMouseMoveTimer = null;\r\n\t function onMouseMove() {\r\n\t if (onMouseMoveTimer == null) {\r\n\t onMouseMoveTimer = setTimeout(function() {\r\n\t if (onMouseMoveTimer != null && dragSelectionMarker)\r\n\t clearDragMarker();\r\n\t }, 20);\r\n\t }\r\n\t }\r\n\r\n\t function canAccept(dataTransfer) {\r\n\t var types = dataTransfer.types;\r\n\t return !types || Array.prototype.some.call(types, function(type) {\r\n\t return type == 'text/plain' || type == 'Text';\r\n\t });\r\n\t }\r\n\r\n\t function getDropEffect(e) {\r\n\t var copyAllowed = ['copy', 'copymove', 'all', 'uninitialized'];\r\n\t var moveAllowed = ['move', 'copymove', 'linkmove', 'all', 'uninitialized'];\r\n\r\n\t var copyModifierState = useragent.isMac ? e.altKey : e.ctrlKey;\r\n\t var effectAllowed = \"uninitialized\";\r\n\t try {\r\n\t effectAllowed = e.dataTransfer.effectAllowed.toLowerCase();\r\n\t } catch (e) {}\r\n\t var dropEffect = \"none\";\r\n\r\n\t if (copyModifierState && copyAllowed.indexOf(effectAllowed) >= 0)\r\n\t dropEffect = \"copy\";\r\n\t else if (moveAllowed.indexOf(effectAllowed) >= 0)\r\n\t dropEffect = \"move\";\r\n\t else if (copyAllowed.indexOf(effectAllowed) >= 0)\r\n\t dropEffect = \"copy\";\r\n\r\n\t return dropEffect;\r\n\t }\r\n\t}\r\n\r\n\t(function() {\r\n\r\n\t this.dragWait = function() {\r\n\t var interval = Date.now() - this.mousedownEvent.time;\r\n\t if (interval > this.editor.getDragDelay())\r\n\t this.startDrag();\r\n\t };\r\n\r\n\t this.dragWaitEnd = function() {\r\n\t var target = this.editor.container;\r\n\t target.draggable = false;\r\n\t this.startSelect(this.mousedownEvent.getDocumentPosition());\r\n\t this.selectEnd();\r\n\t };\r\n\r\n\t this.dragReadyEnd = function(e) {\r\n\t this.editor.renderer.$cursorLayer.setBlinking(!this.editor.getReadOnly());\r\n\t this.editor.unsetStyle(\"ace_dragging\");\r\n\t this.editor.renderer.setCursorStyle(\"\");\r\n\t this.dragWaitEnd();\r\n\t };\r\n\r\n\t this.startDrag = function(){\r\n\t this.cancelDrag = false;\r\n\t var editor = this.editor;\r\n\t var target = editor.container;\r\n\t target.draggable = true;\r\n\t editor.renderer.$cursorLayer.setBlinking(false);\r\n\t editor.setStyle(\"ace_dragging\");\r\n\t var cursorStyle = useragent.isWin ? \"default\" : \"move\";\r\n\t editor.renderer.setCursorStyle(cursorStyle);\r\n\t this.setState(\"dragReady\");\r\n\t };\r\n\r\n\t this.onMouseDrag = function(e) {\r\n\t var target = this.editor.container;\r\n\t if (useragent.isIE && this.state == \"dragReady\") {\r\n\t var distance = calcDistance(this.mousedownEvent.x, this.mousedownEvent.y, this.x, this.y);\r\n\t if (distance > 3)\r\n\t target.dragDrop();\r\n\t }\r\n\t if (this.state === \"dragWait\") {\r\n\t var distance = calcDistance(this.mousedownEvent.x, this.mousedownEvent.y, this.x, this.y);\r\n\t if (distance > 0) {\r\n\t target.draggable = false;\r\n\t this.startSelect(this.mousedownEvent.getDocumentPosition());\r\n\t }\r\n\t }\r\n\t };\r\n\r\n\t this.onMouseDown = function(e) {\r\n\t if (!this.$dragEnabled)\r\n\t return;\r\n\t this.mousedownEvent = e;\r\n\t var editor = this.editor;\r\n\r\n\t var inSelection = e.inSelection();\r\n\t var button = e.getButton();\r\n\t var clickCount = e.domEvent.detail || 1;\r\n\t if (clickCount === 1 && button === 0 && inSelection) {\r\n\t if (e.editor.inMultiSelectMode && (e.getAccelKey() || e.getShiftKey()))\r\n\t return;\r\n\t this.mousedownEvent.time = Date.now();\r\n\t var eventTarget = e.domEvent.target || e.domEvent.srcElement;\r\n\t if (\"unselectable\" in eventTarget)\r\n\t eventTarget.unselectable = \"on\";\r\n\t if (editor.getDragDelay()) {\r\n\t if (useragent.isWebKit) {\r\n\t this.cancelDrag = true;\r\n\t var mouseTarget = editor.container;\r\n\t mouseTarget.draggable = true;\r\n\t }\r\n\t this.setState(\"dragWait\");\r\n\t } else {\r\n\t this.startDrag();\r\n\t }\r\n\t this.captureMouse(e, this.onMouseDrag.bind(this));\r\n\t e.defaultPrevented = true;\r\n\t }\r\n\t };\r\n\r\n\t}).call(DragdropHandler.prototype);\r\n\r\n\r\n\tfunction calcDistance(ax, ay, bx, by) {\r\n\t return Math.sqrt(Math.pow(bx - ax, 2) + Math.pow(by - ay, 2));\r\n\t}\r\n\r\n\texports.DragdropHandler = DragdropHandler;\r\n\r\n\t});\r\n\r\n\tace.define(\"ace/lib/net\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\"], function(acequire, exports, module) {\r\n\t\"use strict\";\r\n\tvar dom = acequire(\"./dom\");\r\n\r\n\texports.get = function (url, callback) {\r\n\t var xhr = new XMLHttpRequest();\r\n\t xhr.open('GET', url, true);\r\n\t xhr.onreadystatechange = function () {\r\n\t if (xhr.readyState === 4) {\r\n\t callback(xhr.responseText);\r\n\t }\r\n\t };\r\n\t xhr.send(null);\r\n\t};\r\n\r\n\texports.loadScript = function(path, callback) {\r\n\t var head = dom.getDocumentHead();\r\n\t var s = document.createElement('script');\r\n\r\n\t s.src = path;\r\n\t head.appendChild(s);\r\n\r\n\t s.onload = s.onreadystatechange = function(_, isAbort) {\r\n\t if (isAbort || !s.readyState || s.readyState == \"loaded\" || s.readyState == \"complete\") {\r\n\t s = s.onload = s.onreadystatechange = null;\r\n\t if (!isAbort)\r\n\t callback();\r\n\t }\r\n\t };\r\n\t};\r\n\texports.qualifyURL = function(url) {\r\n\t var a = document.createElement('a');\r\n\t a.href = url;\r\n\t return a.href;\r\n\t}\r\n\r\n\t});\r\n\r\n\tace.define(\"ace/lib/event_emitter\",[\"require\",\"exports\",\"module\"], function(acequire, exports, module) {\r\n\t\"use strict\";\r\n\r\n\tvar EventEmitter = {};\r\n\tvar stopPropagation = function() { this.propagationStopped = true; };\r\n\tvar preventDefault = function() { this.defaultPrevented = true; };\r\n\r\n\tEventEmitter._emit =\r\n\tEventEmitter._dispatchEvent = function(eventName, e) {\r\n\t this._eventRegistry || (this._eventRegistry = {});\r\n\t this._defaultHandlers || (this._defaultHandlers = {});\r\n\r\n\t var listeners = this._eventRegistry[eventName] || [];\r\n\t var defaultHandler = this._defaultHandlers[eventName];\r\n\t if (!listeners.length && !defaultHandler)\r\n\t return;\r\n\r\n\t if (typeof e != \"object\" || !e)\r\n\t e = {};\r\n\r\n\t if (!e.type)\r\n\t e.type = eventName;\r\n\t if (!e.stopPropagation)\r\n\t e.stopPropagation = stopPropagation;\r\n\t if (!e.preventDefault)\r\n\t e.preventDefault = preventDefault;\r\n\r\n\t listeners = listeners.slice();\r\n\t for (var i=0; i 1)\r\n\t base = parts[parts.length - 2];\r\n\t var path = options[component + \"Path\"];\r\n\t if (path == null) {\r\n\t path = options.basePath;\r\n\t } else if (sep == \"/\") {\r\n\t component = sep = \"\";\r\n\t }\r\n\t if (path && path.slice(-1) != \"/\")\r\n\t path += \"/\";\r\n\t return path + component + sep + base + this.get(\"suffix\");\r\n\t};\r\n\r\n\texports.setModuleUrl = function(name, subst) {\r\n\t return options.$moduleUrls[name] = subst;\r\n\t};\r\n\r\n\texports.$loading = {};\r\n\texports.loadModule = function(moduleName, onLoad) {\r\n\t var module, moduleType;\r\n\t if (Array.isArray(moduleName)) {\r\n\t moduleType = moduleName[0];\r\n\t moduleName = moduleName[1];\r\n\t }\r\n\r\n\t try {\r\n\t module = acequire(moduleName);\r\n\t } catch (e) {}\r\n\t if (module && !exports.$loading[moduleName])\r\n\t return onLoad && onLoad(module);\r\n\r\n\t if (!exports.$loading[moduleName])\r\n\t exports.$loading[moduleName] = [];\r\n\r\n\t exports.$loading[moduleName].push(onLoad);\r\n\r\n\t if (exports.$loading[moduleName].length > 1)\r\n\t return;\r\n\r\n\t var afterLoad = function() {\r\n\t acequire([moduleName], function(module) {\r\n\t exports._emit(\"load.module\", {name: moduleName, module: module});\r\n\t var listeners = exports.$loading[moduleName];\r\n\t exports.$loading[moduleName] = null;\r\n\t listeners.forEach(function(onLoad) {\r\n\t onLoad && onLoad(module);\r\n\t });\r\n\t });\r\n\t };\r\n\r\n\t if (!exports.get(\"packaged\"))\r\n\t return afterLoad();\r\n\t net.loadScript(exports.moduleUrl(moduleName, moduleType), afterLoad);\r\n\t};\r\n\tinit(true);function init(packaged) {\r\n\r\n\t if (!global || !global.document)\r\n\t return;\r\n\t \r\n\t options.packaged = packaged || acequire.packaged || module.packaged || (global.define && __webpack_require__(65).packaged);\r\n\r\n\t var scriptOptions = {};\r\n\t var scriptUrl = \"\";\r\n\t var currentScript = (document.currentScript || document._currentScript ); // native or polyfill\r\n\t var currentDocument = currentScript && currentScript.ownerDocument || document;\r\n\t \r\n\t var scripts = currentDocument.getElementsByTagName(\"script\");\r\n\t for (var i=0; i [\" + this.end.row + \"/\" + this.end.column + \"]\");\r\n\t };\r\n\r\n\t this.contains = function(row, column) {\r\n\t return this.compare(row, column) == 0;\r\n\t };\r\n\t this.compareRange = function(range) {\r\n\t var cmp,\r\n\t end = range.end,\r\n\t start = range.start;\r\n\r\n\t cmp = this.compare(end.row, end.column);\r\n\t if (cmp == 1) {\r\n\t cmp = this.compare(start.row, start.column);\r\n\t if (cmp == 1) {\r\n\t return 2;\r\n\t } else if (cmp == 0) {\r\n\t return 1;\r\n\t } else {\r\n\t return 0;\r\n\t }\r\n\t } else if (cmp == -1) {\r\n\t return -2;\r\n\t } else {\r\n\t cmp = this.compare(start.row, start.column);\r\n\t if (cmp == -1) {\r\n\t return -1;\r\n\t } else if (cmp == 1) {\r\n\t return 42;\r\n\t } else {\r\n\t return 0;\r\n\t }\r\n\t }\r\n\t };\r\n\t this.comparePoint = function(p) {\r\n\t return this.compare(p.row, p.column);\r\n\t };\r\n\t this.containsRange = function(range) {\r\n\t return this.comparePoint(range.start) == 0 && this.comparePoint(range.end) == 0;\r\n\t };\r\n\t this.intersects = function(range) {\r\n\t var cmp = this.compareRange(range);\r\n\t return (cmp == -1 || cmp == 0 || cmp == 1);\r\n\t };\r\n\t this.isEnd = function(row, column) {\r\n\t return this.end.row == row && this.end.column == column;\r\n\t };\r\n\t this.isStart = function(row, column) {\r\n\t return this.start.row == row && this.start.column == column;\r\n\t };\r\n\t this.setStart = function(row, column) {\r\n\t if (typeof row == \"object\") {\r\n\t this.start.column = row.column;\r\n\t this.start.row = row.row;\r\n\t } else {\r\n\t this.start.row = row;\r\n\t this.start.column = column;\r\n\t }\r\n\t };\r\n\t this.setEnd = function(row, column) {\r\n\t if (typeof row == \"object\") {\r\n\t this.end.column = row.column;\r\n\t this.end.row = row.row;\r\n\t } else {\r\n\t this.end.row = row;\r\n\t this.end.column = column;\r\n\t }\r\n\t };\r\n\t this.inside = function(row, column) {\r\n\t if (this.compare(row, column) == 0) {\r\n\t if (this.isEnd(row, column) || this.isStart(row, column)) {\r\n\t return false;\r\n\t } else {\r\n\t return true;\r\n\t }\r\n\t }\r\n\t return false;\r\n\t };\r\n\t this.insideStart = function(row, column) {\r\n\t if (this.compare(row, column) == 0) {\r\n\t if (this.isEnd(row, column)) {\r\n\t return false;\r\n\t } else {\r\n\t return true;\r\n\t }\r\n\t }\r\n\t return false;\r\n\t };\r\n\t this.insideEnd = function(row, column) {\r\n\t if (this.compare(row, column) == 0) {\r\n\t if (this.isStart(row, column)) {\r\n\t return false;\r\n\t } else {\r\n\t return true;\r\n\t }\r\n\t }\r\n\t return false;\r\n\t };\r\n\t this.compare = function(row, column) {\r\n\t if (!this.isMultiLine()) {\r\n\t if (row === this.start.row) {\r\n\t return column < this.start.column ? -1 : (column > this.end.column ? 1 : 0);\r\n\t }\r\n\t }\r\n\r\n\t if (row < this.start.row)\r\n\t return -1;\r\n\r\n\t if (row > this.end.row)\r\n\t return 1;\r\n\r\n\t if (this.start.row === row)\r\n\t return column >= this.start.column ? 0 : -1;\r\n\r\n\t if (this.end.row === row)\r\n\t return column <= this.end.column ? 0 : 1;\r\n\r\n\t return 0;\r\n\t };\r\n\t this.compareStart = function(row, column) {\r\n\t if (this.start.row == row && this.start.column == column) {\r\n\t return -1;\r\n\t } else {\r\n\t return this.compare(row, column);\r\n\t }\r\n\t };\r\n\t this.compareEnd = function(row, column) {\r\n\t if (this.end.row == row && this.end.column == column) {\r\n\t return 1;\r\n\t } else {\r\n\t return this.compare(row, column);\r\n\t }\r\n\t };\r\n\t this.compareInside = function(row, column) {\r\n\t if (this.end.row == row && this.end.column == column) {\r\n\t return 1;\r\n\t } else if (this.start.row == row && this.start.column == column) {\r\n\t return -1;\r\n\t } else {\r\n\t return this.compare(row, column);\r\n\t }\r\n\t };\r\n\t this.clipRows = function(firstRow, lastRow) {\r\n\t if (this.end.row > lastRow)\r\n\t var end = {row: lastRow + 1, column: 0};\r\n\t else if (this.end.row < firstRow)\r\n\t var end = {row: firstRow, column: 0};\r\n\r\n\t if (this.start.row > lastRow)\r\n\t var start = {row: lastRow + 1, column: 0};\r\n\t else if (this.start.row < firstRow)\r\n\t var start = {row: firstRow, column: 0};\r\n\r\n\t return Range.fromPoints(start || this.start, end || this.end);\r\n\t };\r\n\t this.extend = function(row, column) {\r\n\t var cmp = this.compare(row, column);\r\n\r\n\t if (cmp == 0)\r\n\t return this;\r\n\t else if (cmp == -1)\r\n\t var start = {row: row, column: column};\r\n\t else\r\n\t var end = {row: row, column: column};\r\n\r\n\t return Range.fromPoints(start || this.start, end || this.end);\r\n\t };\r\n\r\n\t this.isEmpty = function() {\r\n\t return (this.start.row === this.end.row && this.start.column === this.end.column);\r\n\t };\r\n\t this.isMultiLine = function() {\r\n\t return (this.start.row !== this.end.row);\r\n\t };\r\n\t this.clone = function() {\r\n\t return Range.fromPoints(this.start, this.end);\r\n\t };\r\n\t this.collapseRows = function() {\r\n\t if (this.end.column == 0)\r\n\t return new Range(this.start.row, 0, Math.max(this.start.row, this.end.row-1), 0)\r\n\t else\r\n\t return new Range(this.start.row, 0, this.end.row, 0)\r\n\t };\r\n\t this.toScreenRange = function(session) {\r\n\t var screenPosStart = session.documentToScreenPosition(this.start);\r\n\t var screenPosEnd = session.documentToScreenPosition(this.end);\r\n\r\n\t return new Range(\r\n\t screenPosStart.row, screenPosStart.column,\r\n\t screenPosEnd.row, screenPosEnd.column\r\n\t );\r\n\t };\r\n\t this.moveBy = function(row, column) {\r\n\t this.start.row += row;\r\n\t this.start.column += column;\r\n\t this.end.row += row;\r\n\t this.end.column += column;\r\n\t };\r\n\r\n\t}).call(Range.prototype);\r\n\tRange.fromPoints = function(start, end) {\r\n\t return new Range(start.row, start.column, end.row, end.column);\r\n\t};\r\n\tRange.comparePoints = comparePoints;\r\n\r\n\tRange.comparePoints = function(p1, p2) {\r\n\t return p1.row - p2.row || p1.column - p2.column;\r\n\t};\r\n\r\n\r\n\texports.Range = Range;\r\n\t});\r\n\r\n\tace.define(\"ace/selection\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/lib/event_emitter\",\"ace/range\"], function(acequire, exports, module) {\r\n\t\"use strict\";\r\n\r\n\tvar oop = acequire(\"./lib/oop\");\r\n\tvar lang = acequire(\"./lib/lang\");\r\n\tvar EventEmitter = acequire(\"./lib/event_emitter\").EventEmitter;\r\n\tvar Range = acequire(\"./range\").Range;\r\n\tvar Selection = function(session) {\r\n\t this.session = session;\r\n\t this.doc = session.getDocument();\r\n\r\n\t this.clearSelection();\r\n\t this.lead = this.selectionLead = this.doc.createAnchor(0, 0);\r\n\t this.anchor = this.selectionAnchor = this.doc.createAnchor(0, 0);\r\n\r\n\t var self = this;\r\n\t this.lead.on(\"change\", function(e) {\r\n\t self._emit(\"changeCursor\");\r\n\t if (!self.$isEmpty)\r\n\t self._emit(\"changeSelection\");\r\n\t if (!self.$keepDesiredColumnOnChange && e.old.column != e.value.column)\r\n\t self.$desiredColumn = null;\r\n\t });\r\n\r\n\t this.selectionAnchor.on(\"change\", function() {\r\n\t if (!self.$isEmpty)\r\n\t self._emit(\"changeSelection\");\r\n\t });\r\n\t};\r\n\r\n\t(function() {\r\n\r\n\t oop.implement(this, EventEmitter);\r\n\t this.isEmpty = function() {\r\n\t return (this.$isEmpty || (\r\n\t this.anchor.row == this.lead.row &&\r\n\t this.anchor.column == this.lead.column\r\n\t ));\r\n\t };\r\n\t this.isMultiLine = function() {\r\n\t if (this.isEmpty()) {\r\n\t return false;\r\n\t }\r\n\r\n\t return this.getRange().isMultiLine();\r\n\t };\r\n\t this.getCursor = function() {\r\n\t return this.lead.getPosition();\r\n\t };\r\n\t this.setSelectionAnchor = function(row, column) {\r\n\t this.anchor.setPosition(row, column);\r\n\r\n\t if (this.$isEmpty) {\r\n\t this.$isEmpty = false;\r\n\t this._emit(\"changeSelection\");\r\n\t }\r\n\t };\r\n\t this.getSelectionAnchor = function() {\r\n\t if (this.$isEmpty)\r\n\t return this.getSelectionLead();\r\n\t else\r\n\t return this.anchor.getPosition();\r\n\t };\r\n\t this.getSelectionLead = function() {\r\n\t return this.lead.getPosition();\r\n\t };\r\n\t this.shiftSelection = function(columns) {\r\n\t if (this.$isEmpty) {\r\n\t this.moveCursorTo(this.lead.row, this.lead.column + columns);\r\n\t return;\r\n\t }\r\n\r\n\t var anchor = this.getSelectionAnchor();\r\n\t var lead = this.getSelectionLead();\r\n\r\n\t var isBackwards = this.isBackwards();\r\n\r\n\t if (!isBackwards || anchor.column !== 0)\r\n\t this.setSelectionAnchor(anchor.row, anchor.column + columns);\r\n\r\n\t if (isBackwards || lead.column !== 0) {\r\n\t this.$moveSelection(function() {\r\n\t this.moveCursorTo(lead.row, lead.column + columns);\r\n\t });\r\n\t }\r\n\t };\r\n\t this.isBackwards = function() {\r\n\t var anchor = this.anchor;\r\n\t var lead = this.lead;\r\n\t return (anchor.row > lead.row || (anchor.row == lead.row && anchor.column > lead.column));\r\n\t };\r\n\t this.getRange = function() {\r\n\t var anchor = this.anchor;\r\n\t var lead = this.lead;\r\n\r\n\t if (this.isEmpty())\r\n\t return Range.fromPoints(lead, lead);\r\n\r\n\t if (this.isBackwards()) {\r\n\t return Range.fromPoints(lead, anchor);\r\n\t }\r\n\t else {\r\n\t return Range.fromPoints(anchor, lead);\r\n\t }\r\n\t };\r\n\t this.clearSelection = function() {\r\n\t if (!this.$isEmpty) {\r\n\t this.$isEmpty = true;\r\n\t this._emit(\"changeSelection\");\r\n\t }\r\n\t };\r\n\t this.selectAll = function() {\r\n\t var lastRow = this.doc.getLength() - 1;\r\n\t this.setSelectionAnchor(0, 0);\r\n\t this.moveCursorTo(lastRow, this.doc.getLine(lastRow).length);\r\n\t };\r\n\t this.setRange =\r\n\t this.setSelectionRange = function(range, reverse) {\r\n\t if (reverse) {\r\n\t this.setSelectionAnchor(range.end.row, range.end.column);\r\n\t this.selectTo(range.start.row, range.start.column);\r\n\t } else {\r\n\t this.setSelectionAnchor(range.start.row, range.start.column);\r\n\t this.selectTo(range.end.row, range.end.column);\r\n\t }\r\n\t if (this.getRange().isEmpty())\r\n\t this.$isEmpty = true;\r\n\t this.$desiredColumn = null;\r\n\t };\r\n\r\n\t this.$moveSelection = function(mover) {\r\n\t var lead = this.lead;\r\n\t if (this.$isEmpty)\r\n\t this.setSelectionAnchor(lead.row, lead.column);\r\n\r\n\t mover.call(this);\r\n\t };\r\n\t this.selectTo = function(row, column) {\r\n\t this.$moveSelection(function() {\r\n\t this.moveCursorTo(row, column);\r\n\t });\r\n\t };\r\n\t this.selectToPosition = function(pos) {\r\n\t this.$moveSelection(function() {\r\n\t this.moveCursorToPosition(pos);\r\n\t });\r\n\t };\r\n\t this.moveTo = function(row, column) {\r\n\t this.clearSelection();\r\n\t this.moveCursorTo(row, column);\r\n\t };\r\n\t this.moveToPosition = function(pos) {\r\n\t this.clearSelection();\r\n\t this.moveCursorToPosition(pos);\r\n\t };\r\n\t this.selectUp = function() {\r\n\t this.$moveSelection(this.moveCursorUp);\r\n\t };\r\n\t this.selectDown = function() {\r\n\t this.$moveSelection(this.moveCursorDown);\r\n\t };\r\n\t this.selectRight = function() {\r\n\t this.$moveSelection(this.moveCursorRight);\r\n\t };\r\n\t this.selectLeft = function() {\r\n\t this.$moveSelection(this.moveCursorLeft);\r\n\t };\r\n\t this.selectLineStart = function() {\r\n\t this.$moveSelection(this.moveCursorLineStart);\r\n\t };\r\n\t this.selectLineEnd = function() {\r\n\t this.$moveSelection(this.moveCursorLineEnd);\r\n\t };\r\n\t this.selectFileEnd = function() {\r\n\t this.$moveSelection(this.moveCursorFileEnd);\r\n\t };\r\n\t this.selectFileStart = function() {\r\n\t this.$moveSelection(this.moveCursorFileStart);\r\n\t };\r\n\t this.selectWordRight = function() {\r\n\t this.$moveSelection(this.moveCursorWordRight);\r\n\t };\r\n\t this.selectWordLeft = function() {\r\n\t this.$moveSelection(this.moveCursorWordLeft);\r\n\t };\r\n\t this.getWordRange = function(row, column) {\r\n\t if (typeof column == \"undefined\") {\r\n\t var cursor = row || this.lead;\r\n\t row = cursor.row;\r\n\t column = cursor.column;\r\n\t }\r\n\t return this.session.getWordRange(row, column);\r\n\t };\r\n\t this.selectWord = function() {\r\n\t this.setSelectionRange(this.getWordRange());\r\n\t };\r\n\t this.selectAWord = function() {\r\n\t var cursor = this.getCursor();\r\n\t var range = this.session.getAWordRange(cursor.row, cursor.column);\r\n\t this.setSelectionRange(range);\r\n\t };\r\n\r\n\t this.getLineRange = function(row, excludeLastChar) {\r\n\t var rowStart = typeof row == \"number\" ? row : this.lead.row;\r\n\t var rowEnd;\r\n\r\n\t var foldLine = this.session.getFoldLine(rowStart);\r\n\t if (foldLine) {\r\n\t rowStart = foldLine.start.row;\r\n\t rowEnd = foldLine.end.row;\r\n\t } else {\r\n\t rowEnd = rowStart;\r\n\t }\r\n\t if (excludeLastChar === true)\r\n\t return new Range(rowStart, 0, rowEnd, this.session.getLine(rowEnd).length);\r\n\t else\r\n\t return new Range(rowStart, 0, rowEnd + 1, 0);\r\n\t };\r\n\t this.selectLine = function() {\r\n\t this.setSelectionRange(this.getLineRange());\r\n\t };\r\n\t this.moveCursorUp = function() {\r\n\t this.moveCursorBy(-1, 0);\r\n\t };\r\n\t this.moveCursorDown = function() {\r\n\t this.moveCursorBy(1, 0);\r\n\t };\r\n\t this.moveCursorLeft = function() {\r\n\t var cursor = this.lead.getPosition(),\r\n\t fold;\r\n\r\n\t if (fold = this.session.getFoldAt(cursor.row, cursor.column, -1)) {\r\n\t this.moveCursorTo(fold.start.row, fold.start.column);\r\n\t } else if (cursor.column === 0) {\r\n\t if (cursor.row > 0) {\r\n\t this.moveCursorTo(cursor.row - 1, this.doc.getLine(cursor.row - 1).length);\r\n\t }\r\n\t }\r\n\t else {\r\n\t var tabSize = this.session.getTabSize();\r\n\t if (this.session.isTabStop(cursor) && this.doc.getLine(cursor.row).slice(cursor.column-tabSize, cursor.column).split(\" \").length-1 == tabSize)\r\n\t this.moveCursorBy(0, -tabSize);\r\n\t else\r\n\t this.moveCursorBy(0, -1);\r\n\t }\r\n\t };\r\n\t this.moveCursorRight = function() {\r\n\t var cursor = this.lead.getPosition(),\r\n\t fold;\r\n\t if (fold = this.session.getFoldAt(cursor.row, cursor.column, 1)) {\r\n\t this.moveCursorTo(fold.end.row, fold.end.column);\r\n\t }\r\n\t else if (this.lead.column == this.doc.getLine(this.lead.row).length) {\r\n\t if (this.lead.row < this.doc.getLength() - 1) {\r\n\t this.moveCursorTo(this.lead.row + 1, 0);\r\n\t }\r\n\t }\r\n\t else {\r\n\t var tabSize = this.session.getTabSize();\r\n\t var cursor = this.lead;\r\n\t if (this.session.isTabStop(cursor) && this.doc.getLine(cursor.row).slice(cursor.column, cursor.column+tabSize).split(\" \").length-1 == tabSize)\r\n\t this.moveCursorBy(0, tabSize);\r\n\t else\r\n\t this.moveCursorBy(0, 1);\r\n\t }\r\n\t };\r\n\t this.moveCursorLineStart = function() {\r\n\t var row = this.lead.row;\r\n\t var column = this.lead.column;\r\n\t var screenRow = this.session.documentToScreenRow(row, column);\r\n\t var firstColumnPosition = this.session.screenToDocumentPosition(screenRow, 0);\r\n\t var beforeCursor = this.session.getDisplayLine(\r\n\t row, null, firstColumnPosition.row,\r\n\t firstColumnPosition.column\r\n\t );\r\n\r\n\t var leadingSpace = beforeCursor.match(/^\\s*/);\r\n\t if (leadingSpace[0].length != column && !this.session.$useEmacsStyleLineStart)\r\n\t firstColumnPosition.column += leadingSpace[0].length;\r\n\t this.moveCursorToPosition(firstColumnPosition);\r\n\t };\r\n\t this.moveCursorLineEnd = function() {\r\n\t var lead = this.lead;\r\n\t var lineEnd = this.session.getDocumentLastRowColumnPosition(lead.row, lead.column);\r\n\t if (this.lead.column == lineEnd.column) {\r\n\t var line = this.session.getLine(lineEnd.row);\r\n\t if (lineEnd.column == line.length) {\r\n\t var textEnd = line.search(/\\s+$/);\r\n\t if (textEnd > 0)\r\n\t lineEnd.column = textEnd;\r\n\t }\r\n\t }\r\n\r\n\t this.moveCursorTo(lineEnd.row, lineEnd.column);\r\n\t };\r\n\t this.moveCursorFileEnd = function() {\r\n\t var row = this.doc.getLength() - 1;\r\n\t var column = this.doc.getLine(row).length;\r\n\t this.moveCursorTo(row, column);\r\n\t };\r\n\t this.moveCursorFileStart = function() {\r\n\t this.moveCursorTo(0, 0);\r\n\t };\r\n\t this.moveCursorLongWordRight = function() {\r\n\t var row = this.lead.row;\r\n\t var column = this.lead.column;\r\n\t var line = this.doc.getLine(row);\r\n\t var rightOfCursor = line.substring(column);\r\n\r\n\t var match;\r\n\t this.session.nonTokenRe.lastIndex = 0;\r\n\t this.session.tokenRe.lastIndex = 0;\r\n\t var fold = this.session.getFoldAt(row, column, 1);\r\n\t if (fold) {\r\n\t this.moveCursorTo(fold.end.row, fold.end.column);\r\n\t return;\r\n\t }\r\n\t if (match = this.session.nonTokenRe.exec(rightOfCursor)) {\r\n\t column += this.session.nonTokenRe.lastIndex;\r\n\t this.session.nonTokenRe.lastIndex = 0;\r\n\t rightOfCursor = line.substring(column);\r\n\t }\r\n\t if (column >= line.length) {\r\n\t this.moveCursorTo(row, line.length);\r\n\t this.moveCursorRight();\r\n\t if (row < this.doc.getLength() - 1)\r\n\t this.moveCursorWordRight();\r\n\t return;\r\n\t }\r\n\t if (match = this.session.tokenRe.exec(rightOfCursor)) {\r\n\t column += this.session.tokenRe.lastIndex;\r\n\t this.session.tokenRe.lastIndex = 0;\r\n\t }\r\n\r\n\t this.moveCursorTo(row, column);\r\n\t };\r\n\t this.moveCursorLongWordLeft = function() {\r\n\t var row = this.lead.row;\r\n\t var column = this.lead.column;\r\n\t var fold;\r\n\t if (fold = this.session.getFoldAt(row, column, -1)) {\r\n\t this.moveCursorTo(fold.start.row, fold.start.column);\r\n\t return;\r\n\t }\r\n\r\n\t var str = this.session.getFoldStringAt(row, column, -1);\r\n\t if (str == null) {\r\n\t str = this.doc.getLine(row).substring(0, column);\r\n\t }\r\n\r\n\t var leftOfCursor = lang.stringReverse(str);\r\n\t var match;\r\n\t this.session.nonTokenRe.lastIndex = 0;\r\n\t this.session.tokenRe.lastIndex = 0;\r\n\t if (match = this.session.nonTokenRe.exec(leftOfCursor)) {\r\n\t column -= this.session.nonTokenRe.lastIndex;\r\n\t leftOfCursor = leftOfCursor.slice(this.session.nonTokenRe.lastIndex);\r\n\t this.session.nonTokenRe.lastIndex = 0;\r\n\t }\r\n\t if (column <= 0) {\r\n\t this.moveCursorTo(row, 0);\r\n\t this.moveCursorLeft();\r\n\t if (row > 0)\r\n\t this.moveCursorWordLeft();\r\n\t return;\r\n\t }\r\n\t if (match = this.session.tokenRe.exec(leftOfCursor)) {\r\n\t column -= this.session.tokenRe.lastIndex;\r\n\t this.session.tokenRe.lastIndex = 0;\r\n\t }\r\n\r\n\t this.moveCursorTo(row, column);\r\n\t };\r\n\r\n\t this.$shortWordEndIndex = function(rightOfCursor) {\r\n\t var match, index = 0, ch;\r\n\t var whitespaceRe = /\\s/;\r\n\t var tokenRe = this.session.tokenRe;\r\n\r\n\t tokenRe.lastIndex = 0;\r\n\t if (match = this.session.tokenRe.exec(rightOfCursor)) {\r\n\t index = this.session.tokenRe.lastIndex;\r\n\t } else {\r\n\t while ((ch = rightOfCursor[index]) && whitespaceRe.test(ch))\r\n\t index ++;\r\n\r\n\t if (index < 1) {\r\n\t tokenRe.lastIndex = 0;\r\n\t while ((ch = rightOfCursor[index]) && !tokenRe.test(ch)) {\r\n\t tokenRe.lastIndex = 0;\r\n\t index ++;\r\n\t if (whitespaceRe.test(ch)) {\r\n\t if (index > 2) {\r\n\t index--;\r\n\t break;\r\n\t } else {\r\n\t while ((ch = rightOfCursor[index]) && whitespaceRe.test(ch))\r\n\t index ++;\r\n\t if (index > 2)\r\n\t break;\r\n\t }\r\n\t }\r\n\t }\r\n\t }\r\n\t }\r\n\t tokenRe.lastIndex = 0;\r\n\r\n\t return index;\r\n\t };\r\n\r\n\t this.moveCursorShortWordRight = function() {\r\n\t var row = this.lead.row;\r\n\t var column = this.lead.column;\r\n\t var line = this.doc.getLine(row);\r\n\t var rightOfCursor = line.substring(column);\r\n\r\n\t var fold = this.session.getFoldAt(row, column, 1);\r\n\t if (fold)\r\n\t return this.moveCursorTo(fold.end.row, fold.end.column);\r\n\r\n\t if (column == line.length) {\r\n\t var l = this.doc.getLength();\r\n\t do {\r\n\t row++;\r\n\t rightOfCursor = this.doc.getLine(row);\r\n\t } while (row < l && /^\\s*$/.test(rightOfCursor));\r\n\r\n\t if (!/^\\s+/.test(rightOfCursor))\r\n\t rightOfCursor = \"\";\r\n\t column = 0;\r\n\t }\r\n\r\n\t var index = this.$shortWordEndIndex(rightOfCursor);\r\n\r\n\t this.moveCursorTo(row, column + index);\r\n\t };\r\n\r\n\t this.moveCursorShortWordLeft = function() {\r\n\t var row = this.lead.row;\r\n\t var column = this.lead.column;\r\n\r\n\t var fold;\r\n\t if (fold = this.session.getFoldAt(row, column, -1))\r\n\t return this.moveCursorTo(fold.start.row, fold.start.column);\r\n\r\n\t var line = this.session.getLine(row).substring(0, column);\r\n\t if (column === 0) {\r\n\t do {\r\n\t row--;\r\n\t line = this.doc.getLine(row);\r\n\t } while (row > 0 && /^\\s*$/.test(line));\r\n\r\n\t column = line.length;\r\n\t if (!/\\s+$/.test(line))\r\n\t line = \"\";\r\n\t }\r\n\r\n\t var leftOfCursor = lang.stringReverse(line);\r\n\t var index = this.$shortWordEndIndex(leftOfCursor);\r\n\r\n\t return this.moveCursorTo(row, column - index);\r\n\t };\r\n\r\n\t this.moveCursorWordRight = function() {\r\n\t if (this.session.$selectLongWords)\r\n\t this.moveCursorLongWordRight();\r\n\t else\r\n\t this.moveCursorShortWordRight();\r\n\t };\r\n\r\n\t this.moveCursorWordLeft = function() {\r\n\t if (this.session.$selectLongWords)\r\n\t this.moveCursorLongWordLeft();\r\n\t else\r\n\t this.moveCursorShortWordLeft();\r\n\t };\r\n\t this.moveCursorBy = function(rows, chars) {\r\n\t var screenPos = this.session.documentToScreenPosition(\r\n\t this.lead.row,\r\n\t this.lead.column\r\n\t );\r\n\r\n\t if (chars === 0) {\r\n\t if (this.$desiredColumn)\r\n\t screenPos.column = this.$desiredColumn;\r\n\t else\r\n\t this.$desiredColumn = screenPos.column;\r\n\t }\r\n\r\n\t var docPos = this.session.screenToDocumentPosition(screenPos.row + rows, screenPos.column);\r\n\t \r\n\t if (rows !== 0 && chars === 0 && docPos.row === this.lead.row && docPos.column === this.lead.column) {\r\n\t if (this.session.lineWidgets && this.session.lineWidgets[docPos.row]) {\r\n\t if (docPos.row > 0 || rows > 0)\r\n\t docPos.row++;\r\n\t }\r\n\t }\r\n\t this.moveCursorTo(docPos.row, docPos.column + chars, chars === 0);\r\n\t };\r\n\t this.moveCursorToPosition = function(position) {\r\n\t this.moveCursorTo(position.row, position.column);\r\n\t };\r\n\t this.moveCursorTo = function(row, column, keepDesiredColumn) {\r\n\t var fold = this.session.getFoldAt(row, column, 1);\r\n\t if (fold) {\r\n\t row = fold.start.row;\r\n\t column = fold.start.column;\r\n\t }\r\n\r\n\t this.$keepDesiredColumnOnChange = true;\r\n\t this.lead.setPosition(row, column);\r\n\t this.$keepDesiredColumnOnChange = false;\r\n\r\n\t if (!keepDesiredColumn)\r\n\t this.$desiredColumn = null;\r\n\t };\r\n\t this.moveCursorToScreen = function(row, column, keepDesiredColumn) {\r\n\t var pos = this.session.screenToDocumentPosition(row, column);\r\n\t this.moveCursorTo(pos.row, pos.column, keepDesiredColumn);\r\n\t };\r\n\t this.detach = function() {\r\n\t this.lead.detach();\r\n\t this.anchor.detach();\r\n\t this.session = this.doc = null;\r\n\t };\r\n\r\n\t this.fromOrientedRange = function(range) {\r\n\t this.setSelectionRange(range, range.cursor == range.start);\r\n\t this.$desiredColumn = range.desiredColumn || this.$desiredColumn;\r\n\t };\r\n\r\n\t this.toOrientedRange = function(range) {\r\n\t var r = this.getRange();\r\n\t if (range) {\r\n\t range.start.column = r.start.column;\r\n\t range.start.row = r.start.row;\r\n\t range.end.column = r.end.column;\r\n\t range.end.row = r.end.row;\r\n\t } else {\r\n\t range = r;\r\n\t }\r\n\r\n\t range.cursor = this.isBackwards() ? range.start : range.end;\r\n\t range.desiredColumn = this.$desiredColumn;\r\n\t return range;\r\n\t };\r\n\t this.getRangeOfMovements = function(func) {\r\n\t var start = this.getCursor();\r\n\t try {\r\n\t func(this);\r\n\t var end = this.getCursor();\r\n\t return Range.fromPoints(start,end);\r\n\t } catch(e) {\r\n\t return Range.fromPoints(start,start);\r\n\t } finally {\r\n\t this.moveCursorToPosition(start);\r\n\t }\r\n\t };\r\n\r\n\t this.toJSON = function() {\r\n\t if (this.rangeCount) {\r\n\t var data = this.ranges.map(function(r) {\r\n\t var r1 = r.clone();\r\n\t r1.isBackwards = r.cursor == r.start;\r\n\t return r1;\r\n\t });\r\n\t } else {\r\n\t var data = this.getRange();\r\n\t data.isBackwards = this.isBackwards();\r\n\t }\r\n\t return data;\r\n\t };\r\n\r\n\t this.fromJSON = function(data) {\r\n\t if (data.start == undefined) {\r\n\t if (this.rangeList) {\r\n\t this.toSingleRange(data[0]);\r\n\t for (var i = data.length; i--; ) {\r\n\t var r = Range.fromPoints(data[i].start, data[i].end);\r\n\t if (data[i].isBackwards)\r\n\t r.cursor = r.start;\r\n\t this.addRange(r, true);\r\n\t }\r\n\t return;\r\n\t } else\r\n\t data = data[0];\r\n\t }\r\n\t if (this.rangeList)\r\n\t this.toSingleRange(data);\r\n\t this.setSelectionRange(data, data.isBackwards);\r\n\t };\r\n\r\n\t this.isEqual = function(data) {\r\n\t if ((data.length || this.rangeCount) && data.length != this.rangeCount)\r\n\t return false;\r\n\t if (!data.length || !this.ranges)\r\n\t return this.getRange().isEqual(data);\r\n\r\n\t for (var i = this.ranges.length; i--; ) {\r\n\t if (!this.ranges[i].isEqual(data[i]))\r\n\t return false;\r\n\t }\r\n\t return true;\r\n\t };\r\n\r\n\t}).call(Selection.prototype);\r\n\r\n\texports.Selection = Selection;\r\n\t});\r\n\r\n\tace.define(\"ace/tokenizer\",[\"require\",\"exports\",\"module\",\"ace/config\"], function(acequire, exports, module) {\r\n\t\"use strict\";\r\n\r\n\tvar config = acequire(\"./config\");\r\n\tvar MAX_TOKEN_COUNT = 2000;\r\n\tvar Tokenizer = function(rules) {\r\n\t this.states = rules;\r\n\r\n\t this.regExps = {};\r\n\t this.matchMappings = {};\r\n\t for (var key in this.states) {\r\n\t var state = this.states[key];\r\n\t var ruleRegExps = [];\r\n\t var matchTotal = 0;\r\n\t var mapping = this.matchMappings[key] = {defaultToken: \"text\"};\r\n\t var flag = \"g\";\r\n\r\n\t var splitterRurles = [];\r\n\t for (var i = 0; i < state.length; i++) {\r\n\t var rule = state[i];\r\n\t if (rule.defaultToken)\r\n\t mapping.defaultToken = rule.defaultToken;\r\n\t if (rule.caseInsensitive)\r\n\t flag = \"gi\";\r\n\t if (rule.regex == null)\r\n\t continue;\r\n\r\n\t if (rule.regex instanceof RegExp)\r\n\t rule.regex = rule.regex.toString().slice(1, -1);\r\n\t var adjustedregex = rule.regex;\r\n\t var matchcount = new RegExp(\"(?:(\" + adjustedregex + \")|(.))\").exec(\"a\").length - 2;\r\n\t if (Array.isArray(rule.token)) {\r\n\t if (rule.token.length == 1 || matchcount == 1) {\r\n\t rule.token = rule.token[0];\r\n\t } else if (matchcount - 1 != rule.token.length) {\r\n\t this.reportError(\"number of classes and regexp groups doesn't match\", { \r\n\t rule: rule,\r\n\t groupCount: matchcount - 1\r\n\t });\r\n\t rule.token = rule.token[0];\r\n\t } else {\r\n\t rule.tokenArray = rule.token;\r\n\t rule.token = null;\r\n\t rule.onMatch = this.$arrayTokens;\r\n\t }\r\n\t } else if (typeof rule.token == \"function\" && !rule.onMatch) {\r\n\t if (matchcount > 1)\r\n\t rule.onMatch = this.$applyToken;\r\n\t else\r\n\t rule.onMatch = rule.token;\r\n\t }\r\n\r\n\t if (matchcount > 1) {\r\n\t if (/\\\\\\d/.test(rule.regex)) {\r\n\t adjustedregex = rule.regex.replace(/\\\\([0-9]+)/g, function(match, digit) {\r\n\t return \"\\\\\" + (parseInt(digit, 10) + matchTotal + 1);\r\n\t });\r\n\t } else {\r\n\t matchcount = 1;\r\n\t adjustedregex = this.removeCapturingGroups(rule.regex);\r\n\t }\r\n\t if (!rule.splitRegex && typeof rule.token != \"string\")\r\n\t splitterRurles.push(rule); // flag will be known only at the very end\r\n\t }\r\n\r\n\t mapping[matchTotal] = i;\r\n\t matchTotal += matchcount;\r\n\r\n\t ruleRegExps.push(adjustedregex);\r\n\t if (!rule.onMatch)\r\n\t rule.onMatch = null;\r\n\t }\r\n\t \r\n\t if (!ruleRegExps.length) {\r\n\t mapping[0] = 0;\r\n\t ruleRegExps.push(\"$\");\r\n\t }\r\n\t \r\n\t splitterRurles.forEach(function(rule) {\r\n\t rule.splitRegex = this.createSplitterRegexp(rule.regex, flag);\r\n\t }, this);\r\n\r\n\t this.regExps[key] = new RegExp(\"(\" + ruleRegExps.join(\")|(\") + \")|($)\", flag);\r\n\t }\r\n\t};\r\n\r\n\t(function() {\r\n\t this.$setMaxTokenCount = function(m) {\r\n\t MAX_TOKEN_COUNT = m | 0;\r\n\t };\r\n\t \r\n\t this.$applyToken = function(str) {\r\n\t var values = this.splitRegex.exec(str).slice(1);\r\n\t var types = this.token.apply(this, values);\r\n\t if (typeof types === \"string\")\r\n\t return [{type: types, value: str}];\r\n\r\n\t var tokens = [];\r\n\t for (var i = 0, l = types.length; i < l; i++) {\r\n\t if (values[i])\r\n\t tokens[tokens.length] = {\r\n\t type: types[i],\r\n\t value: values[i]\r\n\t };\r\n\t }\r\n\t return tokens;\r\n\t };\r\n\r\n\t this.$arrayTokens = function(str) {\r\n\t if (!str)\r\n\t return [];\r\n\t var values = this.splitRegex.exec(str);\r\n\t if (!values)\r\n\t return \"text\";\r\n\t var tokens = [];\r\n\t var types = this.tokenArray;\r\n\t for (var i = 0, l = types.length; i < l; i++) {\r\n\t if (values[i + 1])\r\n\t tokens[tokens.length] = {\r\n\t type: types[i],\r\n\t value: values[i + 1]\r\n\t };\r\n\t }\r\n\t return tokens;\r\n\t };\r\n\r\n\t this.removeCapturingGroups = function(src) {\r\n\t var r = src.replace(\r\n\t /\\[(?:\\\\.|[^\\]])*?\\]|\\\\.|\\(\\?[:=!]|(\\()/g,\r\n\t function(x, y) {return y ? \"(?:\" : x;}\r\n\t );\r\n\t return r;\r\n\t };\r\n\r\n\t this.createSplitterRegexp = function(src, flag) {\r\n\t if (src.indexOf(\"(?=\") != -1) {\r\n\t var stack = 0;\r\n\t var inChClass = false;\r\n\t var lastCapture = {};\r\n\t src.replace(/(\\\\.)|(\\((?:\\?[=!])?)|(\\))|([\\[\\]])/g, function(\r\n\t m, esc, parenOpen, parenClose, square, index\r\n\t ) {\r\n\t if (inChClass) {\r\n\t inChClass = square != \"]\";\r\n\t } else if (square) {\r\n\t inChClass = true;\r\n\t } else if (parenClose) {\r\n\t if (stack == lastCapture.stack) {\r\n\t lastCapture.end = index+1;\r\n\t lastCapture.stack = -1;\r\n\t }\r\n\t stack--;\r\n\t } else if (parenOpen) {\r\n\t stack++;\r\n\t if (parenOpen.length != 1) {\r\n\t lastCapture.stack = stack\r\n\t lastCapture.start = index;\r\n\t }\r\n\t }\r\n\t return m;\r\n\t });\r\n\r\n\t if (lastCapture.end != null && /^\\)*$/.test(src.substr(lastCapture.end)))\r\n\t src = src.substring(0, lastCapture.start) + src.substr(lastCapture.end);\r\n\t }\r\n\t if (src.charAt(0) != \"^\") src = \"^\" + src;\r\n\t if (src.charAt(src.length - 1) != \"$\") src += \"$\";\r\n\t \r\n\t return new RegExp(src, (flag||\"\").replace(\"g\", \"\"));\r\n\t };\r\n\t this.getLineTokens = function(line, startState) {\r\n\t if (startState && typeof startState != \"string\") {\r\n\t var stack = startState.slice(0);\r\n\t startState = stack[0];\r\n\t if (startState === \"#tmp\") {\r\n\t stack.shift()\r\n\t startState = stack.shift()\r\n\t }\r\n\t } else\r\n\t var stack = [];\r\n\r\n\t var currentState = startState || \"start\";\r\n\t var state = this.states[currentState];\r\n\t if (!state) {\r\n\t currentState = \"start\";\r\n\t state = this.states[currentState];\r\n\t }\r\n\t var mapping = this.matchMappings[currentState];\r\n\t var re = this.regExps[currentState];\r\n\t re.lastIndex = 0;\r\n\r\n\t var match, tokens = [];\r\n\t var lastIndex = 0;\r\n\t var matchAttempts = 0;\r\n\r\n\t var token = {type: null, value: \"\"};\r\n\r\n\t while (match = re.exec(line)) {\r\n\t var type = mapping.defaultToken;\r\n\t var rule = null;\r\n\t var value = match[0];\r\n\t var index = re.lastIndex;\r\n\r\n\t if (index - value.length > lastIndex) {\r\n\t var skipped = line.substring(lastIndex, index - value.length);\r\n\t if (token.type == type) {\r\n\t token.value += skipped;\r\n\t } else {\r\n\t if (token.type)\r\n\t tokens.push(token);\r\n\t token = {type: type, value: skipped};\r\n\t }\r\n\t }\r\n\r\n\t for (var i = 0; i < match.length-2; i++) {\r\n\t if (match[i + 1] === undefined)\r\n\t continue;\r\n\r\n\t rule = state[mapping[i]];\r\n\r\n\t if (rule.onMatch)\r\n\t type = rule.onMatch(value, currentState, stack);\r\n\t else\r\n\t type = rule.token;\r\n\r\n\t if (rule.next) {\r\n\t if (typeof rule.next == \"string\") {\r\n\t currentState = rule.next;\r\n\t } else {\r\n\t currentState = rule.next(currentState, stack);\r\n\t }\r\n\t \r\n\t state = this.states[currentState];\r\n\t if (!state) {\r\n\t this.reportError(\"state doesn't exist\", currentState);\r\n\t currentState = \"start\";\r\n\t state = this.states[currentState];\r\n\t }\r\n\t mapping = this.matchMappings[currentState];\r\n\t lastIndex = index;\r\n\t re = this.regExps[currentState];\r\n\t re.lastIndex = index;\r\n\t }\r\n\t break;\r\n\t }\r\n\r\n\t if (value) {\r\n\t if (typeof type === \"string\") {\r\n\t if ((!rule || rule.merge !== false) && token.type === type) {\r\n\t token.value += value;\r\n\t } else {\r\n\t if (token.type)\r\n\t tokens.push(token);\r\n\t token = {type: type, value: value};\r\n\t }\r\n\t } else if (type) {\r\n\t if (token.type)\r\n\t tokens.push(token);\r\n\t token = {type: null, value: \"\"};\r\n\t for (var i = 0; i < type.length; i++)\r\n\t tokens.push(type[i]);\r\n\t }\r\n\t }\r\n\r\n\t if (lastIndex == line.length)\r\n\t break;\r\n\r\n\t lastIndex = index;\r\n\r\n\t if (matchAttempts++ > MAX_TOKEN_COUNT) {\r\n\t if (matchAttempts > 2 * line.length) {\r\n\t this.reportError(\"infinite loop with in ace tokenizer\", {\r\n\t startState: startState,\r\n\t line: line\r\n\t });\r\n\t }\r\n\t while (lastIndex < line.length) {\r\n\t if (token.type)\r\n\t tokens.push(token);\r\n\t token = {\r\n\t value: line.substring(lastIndex, lastIndex += 2000),\r\n\t type: \"overflow\"\r\n\t };\r\n\t }\r\n\t currentState = \"start\";\r\n\t stack = [];\r\n\t break;\r\n\t }\r\n\t }\r\n\r\n\t if (token.type)\r\n\t tokens.push(token);\r\n\t \r\n\t if (stack.length > 1) {\r\n\t if (stack[0] !== currentState)\r\n\t stack.unshift(\"#tmp\", currentState);\r\n\t }\r\n\t return {\r\n\t tokens : tokens,\r\n\t state : stack.length ? stack : currentState\r\n\t };\r\n\t };\r\n\t \r\n\t this.reportError = config.reportError;\r\n\t \r\n\t}).call(Tokenizer.prototype);\r\n\r\n\texports.Tokenizer = Tokenizer;\r\n\t});\r\n\r\n\tace.define(\"ace/mode/text_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/lang\"], function(acequire, exports, module) {\r\n\t\"use strict\";\r\n\r\n\tvar lang = acequire(\"../lib/lang\");\r\n\r\n\tvar TextHighlightRules = function() {\r\n\r\n\t this.$rules = {\r\n\t \"start\" : [{\r\n\t token : \"empty_line\",\r\n\t regex : '^$'\r\n\t }, {\r\n\t defaultToken : \"text\"\r\n\t }]\r\n\t };\r\n\t};\r\n\r\n\t(function() {\r\n\r\n\t this.addRules = function(rules, prefix) {\r\n\t if (!prefix) {\r\n\t for (var key in rules)\r\n\t this.$rules[key] = rules[key];\r\n\t return;\r\n\t }\r\n\t for (var key in rules) {\r\n\t var state = rules[key];\r\n\t for (var i = 0; i < state.length; i++) {\r\n\t var rule = state[i];\r\n\t if (rule.next || rule.onMatch) {\r\n\t if (typeof rule.next == \"string\") {\r\n\t if (rule.next.indexOf(prefix) !== 0)\r\n\t rule.next = prefix + rule.next;\r\n\t }\r\n\t if (rule.nextState && rule.nextState.indexOf(prefix) !== 0)\r\n\t rule.nextState = prefix + rule.nextState;\r\n\t }\r\n\t }\r\n\t this.$rules[prefix + key] = state;\r\n\t }\r\n\t };\r\n\r\n\t this.getRules = function() {\r\n\t return this.$rules;\r\n\t };\r\n\r\n\t this.embedRules = function (HighlightRules, prefix, escapeRules, states, append) {\r\n\t var embedRules = typeof HighlightRules == \"function\"\r\n\t ? new HighlightRules().getRules()\r\n\t : HighlightRules;\r\n\t if (states) {\r\n\t for (var i = 0; i < states.length; i++)\r\n\t states[i] = prefix + states[i];\r\n\t } else {\r\n\t states = [];\r\n\t for (var key in embedRules)\r\n\t states.push(prefix + key);\r\n\t }\r\n\r\n\t this.addRules(embedRules, prefix);\r\n\r\n\t if (escapeRules) {\r\n\t var addRules = Array.prototype[append ? \"push\" : \"unshift\"];\r\n\t for (var i = 0; i < states.length; i++)\r\n\t addRules.apply(this.$rules[states[i]], lang.deepCopy(escapeRules));\r\n\t }\r\n\r\n\t if (!this.$embeds)\r\n\t this.$embeds = [];\r\n\t this.$embeds.push(prefix);\r\n\t };\r\n\r\n\t this.getEmbeds = function() {\r\n\t return this.$embeds;\r\n\t };\r\n\r\n\t var pushState = function(currentState, stack) {\r\n\t if (currentState != \"start\" || stack.length)\r\n\t stack.unshift(this.nextState, currentState);\r\n\t return this.nextState;\r\n\t };\r\n\t var popState = function(currentState, stack) {\r\n\t stack.shift();\r\n\t return stack.shift() || \"start\";\r\n\t };\r\n\r\n\t this.normalizeRules = function() {\r\n\t var id = 0;\r\n\t var rules = this.$rules;\r\n\t function processState(key) {\r\n\t var state = rules[key];\r\n\t state.processed = true;\r\n\t for (var i = 0; i < state.length; i++) {\r\n\t var rule = state[i];\r\n\t if (!rule.regex && rule.start) {\r\n\t rule.regex = rule.start;\r\n\t if (!rule.next)\r\n\t rule.next = [];\r\n\t rule.next.push({\r\n\t defaultToken: rule.token\r\n\t }, {\r\n\t token: rule.token + \".end\",\r\n\t regex: rule.end || rule.start,\r\n\t next: \"pop\"\r\n\t });\r\n\t rule.token = rule.token + \".start\";\r\n\t rule.push = true;\r\n\t }\r\n\t var next = rule.next || rule.push;\r\n\t if (next && Array.isArray(next)) {\r\n\t var stateName = rule.stateName;\r\n\t if (!stateName) {\r\n\t stateName = rule.token;\r\n\t if (typeof stateName != \"string\")\r\n\t stateName = stateName[0] || \"\";\r\n\t if (rules[stateName])\r\n\t stateName += id++;\r\n\t }\r\n\t rules[stateName] = next;\r\n\t rule.next = stateName;\r\n\t processState(stateName);\r\n\t } else if (next == \"pop\") {\r\n\t rule.next = popState;\r\n\t }\r\n\r\n\t if (rule.push) {\r\n\t rule.nextState = rule.next || rule.push;\r\n\t rule.next = pushState;\r\n\t delete rule.push;\r\n\t }\r\n\r\n\t if (rule.rules) {\r\n\t for (var r in rule.rules) {\r\n\t if (rules[r]) {\r\n\t if (rules[r].push)\r\n\t rules[r].push.apply(rules[r], rule.rules[r]);\r\n\t } else {\r\n\t rules[r] = rule.rules[r];\r\n\t }\r\n\t }\r\n\t }\r\n\t if (rule.include || typeof rule == \"string\") {\r\n\t var includeName = rule.include || rule;\r\n\t var toInsert = rules[includeName];\r\n\t } else if (Array.isArray(rule))\r\n\t toInsert = rule;\r\n\r\n\t if (toInsert) {\r\n\t var args = [i, 1].concat(toInsert);\r\n\t if (rule.noEscape)\r\n\t args = args.filter(function(x) {return !x.next;});\r\n\t state.splice.apply(state, args);\r\n\t i--;\r\n\t toInsert = null;\r\n\t }\r\n\t \r\n\t if (rule.keywordMap) {\r\n\t rule.token = this.createKeywordMapper(\r\n\t rule.keywordMap, rule.defaultToken || \"text\", rule.caseInsensitive\r\n\t );\r\n\t delete rule.defaultToken;\r\n\t }\r\n\t }\r\n\t }\r\n\t Object.keys(rules).forEach(processState, this);\r\n\t };\r\n\r\n\t this.createKeywordMapper = function(map, defaultToken, ignoreCase, splitChar) {\r\n\t var keywords = Object.create(null);\r\n\t Object.keys(map).forEach(function(className) {\r\n\t var a = map[className];\r\n\t if (ignoreCase)\r\n\t a = a.toLowerCase();\r\n\t var list = a.split(splitChar || \"|\");\r\n\t for (var i = list.length; i--; )\r\n\t keywords[list[i]] = className;\r\n\t });\r\n\t if (Object.getPrototypeOf(keywords)) {\r\n\t keywords.__proto__ = null;\r\n\t }\r\n\t this.$keywordList = Object.keys(keywords);\r\n\t map = null;\r\n\t return ignoreCase\r\n\t ? function(value) {return keywords[value.toLowerCase()] || defaultToken }\r\n\t : function(value) {return keywords[value] || defaultToken };\r\n\t };\r\n\r\n\t this.getKeywords = function() {\r\n\t return this.$keywords;\r\n\t };\r\n\r\n\t}).call(TextHighlightRules.prototype);\r\n\r\n\texports.TextHighlightRules = TextHighlightRules;\r\n\t});\r\n\r\n\tace.define(\"ace/mode/behaviour\",[\"require\",\"exports\",\"module\"], function(acequire, exports, module) {\r\n\t\"use strict\";\r\n\r\n\tvar Behaviour = function() {\r\n\t this.$behaviours = {};\r\n\t};\r\n\r\n\t(function () {\r\n\r\n\t this.add = function (name, action, callback) {\r\n\t switch (undefined) {\r\n\t case this.$behaviours:\r\n\t this.$behaviours = {};\r\n\t case this.$behaviours[name]:\r\n\t this.$behaviours[name] = {};\r\n\t }\r\n\t this.$behaviours[name][action] = callback;\r\n\t }\r\n\t \r\n\t this.addBehaviours = function (behaviours) {\r\n\t for (var key in behaviours) {\r\n\t for (var action in behaviours[key]) {\r\n\t this.add(key, action, behaviours[key][action]);\r\n\t }\r\n\t }\r\n\t }\r\n\t \r\n\t this.remove = function (name) {\r\n\t if (this.$behaviours && this.$behaviours[name]) {\r\n\t delete this.$behaviours[name];\r\n\t }\r\n\t }\r\n\t \r\n\t this.inherit = function (mode, filter) {\r\n\t if (typeof mode === \"function\") {\r\n\t var behaviours = new mode().getBehaviours(filter);\r\n\t } else {\r\n\t var behaviours = mode.getBehaviours(filter);\r\n\t }\r\n\t this.addBehaviours(behaviours);\r\n\t }\r\n\t \r\n\t this.getBehaviours = function (filter) {\r\n\t if (!filter) {\r\n\t return this.$behaviours;\r\n\t } else {\r\n\t var ret = {}\r\n\t for (var i = 0; i < filter.length; i++) {\r\n\t if (this.$behaviours[filter[i]]) {\r\n\t ret[filter[i]] = this.$behaviours[filter[i]];\r\n\t }\r\n\t }\r\n\t return ret;\r\n\t }\r\n\t }\r\n\r\n\t}).call(Behaviour.prototype);\r\n\r\n\texports.Behaviour = Behaviour;\r\n\t});\r\n\r\n\tace.define(\"ace/unicode\",[\"require\",\"exports\",\"module\"], function(acequire, exports, module) {\r\n\t\"use strict\";\r\n\texports.packages = {};\r\n\r\n\taddUnicodePackage({\r\n\t 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\",\r\n\t 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\",\r\n\t 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\",\r\n\t Lt: \"01C501C801CB01F21F88-1F8F1F98-1F9F1FA8-1FAF1FBC1FCC1FFC\",\r\n\t Lm: \"02B0-02C102C6-02D102E0-02E402EC02EE0374037A0559064006E506E607F407F507FA081A0824082809710E460EC610FC17D718431AA71C78-1C7D1D2C-1D611D781D9B-1DBF2071207F2090-20942C7D2D6F2E2F30053031-3035303B309D309E30FC-30FEA015A4F8-A4FDA60CA67FA717-A71FA770A788A9CFAA70AADDFF70FF9EFF9F\",\r\n\t 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\",\r\n\t 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\",\r\n\t 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\",\r\n\t 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\",\r\n\t Me: \"0488048906DE20DD-20E020E2-20E4A670-A672\",\r\n\t 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\",\r\n\t 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\",\r\n\t Nl: \"16EE-16F02160-21822185-218830073021-30293038-303AA6E6-A6EF\",\r\n\t No: \"00B200B300B900BC-00BE09F4-09F90BF0-0BF20C78-0C7E0D70-0D750F2A-0F331369-137C17F0-17F920702074-20792080-20892150-215F21892460-249B24EA-24FF2776-27932CFD3192-31953220-32293251-325F3280-328932B1-32BFA830-A835\",\r\n\t 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\",\r\n\t Pd: \"002D058A05BE140018062010-20152E172E1A301C303030A0FE31FE32FE58FE63FF0D\",\r\n\t Ps: \"0028005B007B0F3A0F3C169B201A201E2045207D208D23292768276A276C276E27702772277427C527E627E827EA27EC27EE2983298529872989298B298D298F299129932995299729D829DA29FC2E222E242E262E283008300A300C300E3010301430163018301A301DFD3EFE17FE35FE37FE39FE3BFE3DFE3FFE41FE43FE47FE59FE5BFE5DFF08FF3BFF5BFF5FFF62\",\r\n\t Pe: \"0029005D007D0F3B0F3D169C2046207E208E232A2769276B276D276F27712773277527C627E727E927EB27ED27EF298429862988298A298C298E2990299229942996299829D929DB29FD2E232E252E272E293009300B300D300F3011301530173019301B301E301FFD3FFE18FE36FE38FE3AFE3CFE3EFE40FE42FE44FE48FE5AFE5CFE5EFF09FF3DFF5DFF60FF63\",\r\n\t Pi: \"00AB2018201B201C201F20392E022E042E092E0C2E1C2E20\",\r\n\t Pf: \"00BB2019201D203A2E032E052E0A2E0D2E1D2E21\",\r\n\t Pc: \"005F203F20402054FE33FE34FE4D-FE4FFF3F\",\r\n\t 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\",\r\n\t 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\",\r\n\t 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\",\r\n\t Sc: \"002400A2-00A5060B09F209F309FB0AF10BF90E3F17DB20A0-20B8A838FDFCFE69FF04FFE0FFE1FFE5FFE6\",\r\n\t Sk: \"005E006000A800AF00B400B802C2-02C502D2-02DF02E5-02EB02ED02EF-02FF0375038403851FBD1FBF-1FC11FCD-1FCF1FDD-1FDF1FED-1FEF1FFD1FFE309B309CA700-A716A720A721A789A78AFF3EFF40FFE3\",\r\n\t 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\",\r\n\t Z: \"002000A01680180E2000-200A20282029202F205F3000\",\r\n\t Zs: \"002000A01680180E2000-200A202F205F3000\",\r\n\t Zl: \"2028\",\r\n\t Zp: \"2029\",\r\n\t 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\",\r\n\t Cc: \"0000-001F007F-009F\",\r\n\t Cf: \"00AD0600-060306DD070F17B417B5200B-200F202A-202E2060-2064206A-206FFEFFFFF9-FFFB\",\r\n\t Co: \"E000-F8FF\",\r\n\t Cs: \"D800-DFFF\",\r\n\t 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\"\r\n\t});\r\n\r\n\tfunction addUnicodePackage (pack) {\r\n\t var codePoint = /\\w{4}/g;\r\n\t for (var name in pack)\r\n\t exports.packages[name] = pack[name].replace(codePoint, \"\\\\u$&\");\r\n\t}\r\n\r\n\t});\r\n\r\n\tace.define(\"ace/token_iterator\",[\"require\",\"exports\",\"module\"], function(acequire, exports, module) {\r\n\t\"use strict\";\r\n\tvar TokenIterator = function(session, initialRow, initialColumn) {\r\n\t this.$session = session;\r\n\t this.$row = initialRow;\r\n\t this.$rowTokens = session.getTokens(initialRow);\r\n\r\n\t var token = session.getTokenAt(initialRow, initialColumn);\r\n\t this.$tokenIndex = token ? token.index : -1;\r\n\t};\r\n\r\n\t(function() { \r\n\t this.stepBackward = function() {\r\n\t this.$tokenIndex -= 1;\r\n\t \r\n\t while (this.$tokenIndex < 0) {\r\n\t this.$row -= 1;\r\n\t if (this.$row < 0) {\r\n\t this.$row = 0;\r\n\t return null;\r\n\t }\r\n\t \r\n\t this.$rowTokens = this.$session.getTokens(this.$row);\r\n\t this.$tokenIndex = this.$rowTokens.length - 1;\r\n\t }\r\n\t \r\n\t return this.$rowTokens[this.$tokenIndex];\r\n\t }; \r\n\t this.stepForward = function() {\r\n\t this.$tokenIndex += 1;\r\n\t var rowCount;\r\n\t while (this.$tokenIndex >= this.$rowTokens.length) {\r\n\t this.$row += 1;\r\n\t if (!rowCount)\r\n\t rowCount = this.$session.getLength();\r\n\t if (this.$row >= rowCount) {\r\n\t this.$row = rowCount - 1;\r\n\t return null;\r\n\t }\r\n\r\n\t this.$rowTokens = this.$session.getTokens(this.$row);\r\n\t this.$tokenIndex = 0;\r\n\t }\r\n\t \r\n\t return this.$rowTokens[this.$tokenIndex];\r\n\t }; \r\n\t this.getCurrentToken = function () {\r\n\t return this.$rowTokens[this.$tokenIndex];\r\n\t }; \r\n\t this.getCurrentTokenRow = function () {\r\n\t return this.$row;\r\n\t }; \r\n\t this.getCurrentTokenColumn = function() {\r\n\t var rowTokens = this.$rowTokens;\r\n\t var tokenIndex = this.$tokenIndex;\r\n\t var column = rowTokens[tokenIndex].start;\r\n\t if (column !== undefined)\r\n\t return column;\r\n\t \r\n\t column = 0;\r\n\t while (tokenIndex > 0) {\r\n\t tokenIndex -= 1;\r\n\t column += rowTokens[tokenIndex].value.length;\r\n\t }\r\n\t \r\n\t return column; \r\n\t };\r\n\t this.getCurrentTokenPosition = function() {\r\n\t return {row: this.$row, column: this.getCurrentTokenColumn()};\r\n\t };\r\n\t \r\n\t}).call(TokenIterator.prototype);\r\n\r\n\texports.TokenIterator = TokenIterator;\r\n\t});\r\n\r\n\tace.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(acequire, exports, module) {\r\n\t\"use strict\";\r\n\r\n\tvar Tokenizer = acequire(\"../tokenizer\").Tokenizer;\r\n\tvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\r\n\tvar Behaviour = acequire(\"./behaviour\").Behaviour;\r\n\tvar unicode = acequire(\"../unicode\");\r\n\tvar lang = acequire(\"../lib/lang\");\r\n\tvar TokenIterator = acequire(\"../token_iterator\").TokenIterator;\r\n\tvar Range = acequire(\"../range\").Range;\r\n\r\n\tvar Mode = function() {\r\n\t this.HighlightRules = TextHighlightRules;\r\n\t this.$behaviour = new Behaviour();\r\n\t};\r\n\r\n\t(function() {\r\n\r\n\t this.tokenRe = new RegExp(\"^[\"\r\n\t + unicode.packages.L\r\n\t + unicode.packages.Mn + unicode.packages.Mc\r\n\t + unicode.packages.Nd\r\n\t + unicode.packages.Pc + \"\\\\$_]+\", \"g\"\r\n\t );\r\n\r\n\t this.nonTokenRe = new RegExp(\"^(?:[^\"\r\n\t + unicode.packages.L\r\n\t + unicode.packages.Mn + unicode.packages.Mc\r\n\t + unicode.packages.Nd\r\n\t + unicode.packages.Pc + \"\\\\$_]|\\\\s])+\", \"g\"\r\n\t );\r\n\r\n\t this.getTokenizer = function() {\r\n\t if (!this.$tokenizer) {\r\n\t this.$highlightRules = this.$highlightRules || new this.HighlightRules();\r\n\t this.$tokenizer = new Tokenizer(this.$highlightRules.getRules());\r\n\t }\r\n\t return this.$tokenizer;\r\n\t };\r\n\r\n\t this.lineCommentStart = \"\";\r\n\t this.blockComment = \"\";\r\n\r\n\t this.toggleCommentLines = function(state, session, startRow, endRow) {\r\n\t var doc = session.doc;\r\n\r\n\t var ignoreBlankLines = true;\r\n\t var shouldRemove = true;\r\n\t var minIndent = Infinity;\r\n\t var tabSize = session.getTabSize();\r\n\t var insertAtTabStop = false;\r\n\r\n\t if (!this.lineCommentStart) {\r\n\t if (!this.blockComment)\r\n\t return false;\r\n\t var lineCommentStart = this.blockComment.start;\r\n\t var lineCommentEnd = this.blockComment.end;\r\n\t var regexpStart = new RegExp(\"^(\\\\s*)(?:\" + lang.escapeRegExp(lineCommentStart) + \")\");\r\n\t var regexpEnd = new RegExp(\"(?:\" + lang.escapeRegExp(lineCommentEnd) + \")\\\\s*$\");\r\n\r\n\t var comment = function(line, i) {\r\n\t if (testRemove(line, i))\r\n\t return;\r\n\t if (!ignoreBlankLines || /\\S/.test(line)) {\r\n\t doc.insertInLine({row: i, column: line.length}, lineCommentEnd);\r\n\t doc.insertInLine({row: i, column: minIndent}, lineCommentStart);\r\n\t }\r\n\t };\r\n\r\n\t var uncomment = function(line, i) {\r\n\t var m;\r\n\t if (m = line.match(regexpEnd))\r\n\t doc.removeInLine(i, line.length - m[0].length, line.length);\r\n\t if (m = line.match(regexpStart))\r\n\t doc.removeInLine(i, m[1].length, m[0].length);\r\n\t };\r\n\r\n\t var testRemove = function(line, row) {\r\n\t if (regexpStart.test(line))\r\n\t return true;\r\n\t var tokens = session.getTokens(row);\r\n\t for (var i = 0; i < tokens.length; i++) {\r\n\t if (tokens[i].type === \"comment\")\r\n\t return true;\r\n\t }\r\n\t };\r\n\t } else {\r\n\t if (Array.isArray(this.lineCommentStart)) {\r\n\t var regexpStart = this.lineCommentStart.map(lang.escapeRegExp).join(\"|\");\r\n\t var lineCommentStart = this.lineCommentStart[0];\r\n\t } else {\r\n\t var regexpStart = lang.escapeRegExp(this.lineCommentStart);\r\n\t var lineCommentStart = this.lineCommentStart;\r\n\t }\r\n\t regexpStart = new RegExp(\"^(\\\\s*)(?:\" + regexpStart + \") ?\");\r\n\t \r\n\t insertAtTabStop = session.getUseSoftTabs();\r\n\r\n\t var uncomment = function(line, i) {\r\n\t var m = line.match(regexpStart);\r\n\t if (!m) return;\r\n\t var start = m[1].length, end = m[0].length;\r\n\t if (!shouldInsertSpace(line, start, end) && m[0][end - 1] == \" \")\r\n\t end--;\r\n\t doc.removeInLine(i, start, end);\r\n\t };\r\n\t var commentWithSpace = lineCommentStart + \" \";\r\n\t var comment = function(line, i) {\r\n\t if (!ignoreBlankLines || /\\S/.test(line)) {\r\n\t if (shouldInsertSpace(line, minIndent, minIndent))\r\n\t doc.insertInLine({row: i, column: minIndent}, commentWithSpace);\r\n\t else\r\n\t doc.insertInLine({row: i, column: minIndent}, lineCommentStart);\r\n\t }\r\n\t };\r\n\t var testRemove = function(line, i) {\r\n\t return regexpStart.test(line);\r\n\t };\r\n\t \r\n\t var shouldInsertSpace = function(line, before, after) {\r\n\t var spaces = 0;\r\n\t while (before-- && line.charAt(before) == \" \")\r\n\t spaces++;\r\n\t if (spaces % tabSize != 0)\r\n\t return false;\r\n\t var spaces = 0;\r\n\t while (line.charAt(after++) == \" \")\r\n\t spaces++;\r\n\t if (tabSize > 2)\r\n\t return spaces % tabSize != tabSize - 1;\r\n\t else\r\n\t return spaces % tabSize == 0;\r\n\t return true;\r\n\t };\r\n\t }\r\n\r\n\t function iter(fun) {\r\n\t for (var i = startRow; i <= endRow; i++)\r\n\t fun(doc.getLine(i), i);\r\n\t }\r\n\r\n\r\n\t var minEmptyLength = Infinity;\r\n\t iter(function(line, i) {\r\n\t var indent = line.search(/\\S/);\r\n\t if (indent !== -1) {\r\n\t if (indent < minIndent)\r\n\t minIndent = indent;\r\n\t if (shouldRemove && !testRemove(line, i))\r\n\t shouldRemove = false;\r\n\t } else if (minEmptyLength > line.length) {\r\n\t minEmptyLength = line.length;\r\n\t }\r\n\t });\r\n\r\n\t if (minIndent == Infinity) {\r\n\t minIndent = minEmptyLength;\r\n\t ignoreBlankLines = false;\r\n\t shouldRemove = false;\r\n\t }\r\n\r\n\t if (insertAtTabStop && minIndent % tabSize != 0)\r\n\t minIndent = Math.floor(minIndent / tabSize) * tabSize;\r\n\r\n\t iter(shouldRemove ? uncomment : comment);\r\n\t };\r\n\r\n\t this.toggleBlockComment = function(state, session, range, cursor) {\r\n\t var comment = this.blockComment;\r\n\t if (!comment)\r\n\t return;\r\n\t if (!comment.start && comment[0])\r\n\t comment = comment[0];\r\n\r\n\t var iterator = new TokenIterator(session, cursor.row, cursor.column);\r\n\t var token = iterator.getCurrentToken();\r\n\r\n\t var sel = session.selection;\r\n\t var initialRange = session.selection.toOrientedRange();\r\n\t var startRow, colDiff;\r\n\r\n\t if (token && /comment/.test(token.type)) {\r\n\t var startRange, endRange;\r\n\t while (token && /comment/.test(token.type)) {\r\n\t var i = token.value.indexOf(comment.start);\r\n\t if (i != -1) {\r\n\t var row = iterator.getCurrentTokenRow();\r\n\t var column = iterator.getCurrentTokenColumn() + i;\r\n\t startRange = new Range(row, column, row, column + comment.start.length);\r\n\t break;\r\n\t }\r\n\t token = iterator.stepBackward();\r\n\t }\r\n\r\n\t var iterator = new TokenIterator(session, cursor.row, cursor.column);\r\n\t var token = iterator.getCurrentToken();\r\n\t while (token && /comment/.test(token.type)) {\r\n\t var i = token.value.indexOf(comment.end);\r\n\t if (i != -1) {\r\n\t var row = iterator.getCurrentTokenRow();\r\n\t var column = iterator.getCurrentTokenColumn() + i;\r\n\t endRange = new Range(row, column, row, column + comment.end.length);\r\n\t break;\r\n\t }\r\n\t token = iterator.stepForward();\r\n\t }\r\n\t if (endRange)\r\n\t session.remove(endRange);\r\n\t if (startRange) {\r\n\t session.remove(startRange);\r\n\t startRow = startRange.start.row;\r\n\t colDiff = -comment.start.length;\r\n\t }\r\n\t } else {\r\n\t colDiff = comment.start.length;\r\n\t startRow = range.start.row;\r\n\t session.insert(range.end, comment.end);\r\n\t session.insert(range.start, comment.start);\r\n\t }\r\n\t if (initialRange.start.row == startRow)\r\n\t initialRange.start.column += colDiff;\r\n\t if (initialRange.end.row == startRow)\r\n\t initialRange.end.column += colDiff;\r\n\t session.selection.fromOrientedRange(initialRange);\r\n\t };\r\n\r\n\t this.getNextLineIndent = function(state, line, tab) {\r\n\t return this.$getIndent(line);\r\n\t };\r\n\r\n\t this.checkOutdent = function(state, line, input) {\r\n\t return false;\r\n\t };\r\n\r\n\t this.autoOutdent = function(state, doc, row) {\r\n\t };\r\n\r\n\t this.$getIndent = function(line) {\r\n\t return line.match(/^\\s*/)[0];\r\n\t };\r\n\r\n\t this.createWorker = function(session) {\r\n\t return null;\r\n\t };\r\n\r\n\t this.createModeDelegates = function (mapping) {\r\n\t this.$embeds = [];\r\n\t this.$modes = {};\r\n\t for (var i in mapping) {\r\n\t if (mapping[i]) {\r\n\t this.$embeds.push(i);\r\n\t this.$modes[i] = new mapping[i]();\r\n\t }\r\n\t }\r\n\r\n\t var delegations = [\"toggleBlockComment\", \"toggleCommentLines\", \"getNextLineIndent\", \r\n\t \"checkOutdent\", \"autoOutdent\", \"transformAction\", \"getCompletions\"];\r\n\r\n\t for (var i = 0; i < delegations.length; i++) {\r\n\t (function(scope) {\r\n\t var functionName = delegations[i];\r\n\t var defaultHandler = scope[functionName];\r\n\t scope[delegations[i]] = function() {\r\n\t return this.$delegator(functionName, arguments, defaultHandler);\r\n\t };\r\n\t }(this));\r\n\t }\r\n\t };\r\n\r\n\t this.$delegator = function(method, args, defaultHandler) {\r\n\t var state = args[0];\r\n\t if (typeof state != \"string\")\r\n\t state = state[0];\r\n\t for (var i = 0; i < this.$embeds.length; i++) {\r\n\t if (!this.$modes[this.$embeds[i]]) continue;\r\n\r\n\t var split = state.split(this.$embeds[i]);\r\n\t if (!split[0] && split[1]) {\r\n\t args[0] = split[1];\r\n\t var mode = this.$modes[this.$embeds[i]];\r\n\t return mode[method].apply(mode, args);\r\n\t }\r\n\t }\r\n\t var ret = defaultHandler.apply(this, args);\r\n\t return defaultHandler ? ret : undefined;\r\n\t };\r\n\r\n\t this.transformAction = function(state, action, editor, session, param) {\r\n\t if (this.$behaviour) {\r\n\t var behaviours = this.$behaviour.getBehaviours();\r\n\t for (var key in behaviours) {\r\n\t if (behaviours[key][action]) {\r\n\t var ret = behaviours[key][action].apply(this, arguments);\r\n\t if (ret) {\r\n\t return ret;\r\n\t }\r\n\t }\r\n\t }\r\n\t }\r\n\t };\r\n\t \r\n\t this.getKeywords = function(append) {\r\n\t if (!this.completionKeywords) {\r\n\t var rules = this.$tokenizer.rules;\r\n\t var completionKeywords = [];\r\n\t for (var rule in rules) {\r\n\t var ruleItr = rules[rule];\r\n\t for (var r = 0, l = ruleItr.length; r < l; r++) {\r\n\t if (typeof ruleItr[r].token === \"string\") {\r\n\t if (/keyword|support|storage/.test(ruleItr[r].token))\r\n\t completionKeywords.push(ruleItr[r].regex);\r\n\t }\r\n\t else if (typeof ruleItr[r].token === \"object\") {\r\n\t for (var a = 0, aLength = ruleItr[r].token.length; a < aLength; a++) { \r\n\t if (/keyword|support|storage/.test(ruleItr[r].token[a])) {\r\n\t var rule = ruleItr[r].regex.match(/\\(.+?\\)/g)[a];\r\n\t completionKeywords.push(rule.substr(1, rule.length - 2));\r\n\t }\r\n\t }\r\n\t }\r\n\t }\r\n\t }\r\n\t this.completionKeywords = completionKeywords;\r\n\t }\r\n\t if (!append)\r\n\t return this.$keywordList;\r\n\t return completionKeywords.concat(this.$keywordList || []);\r\n\t };\r\n\t \r\n\t this.$createKeywordList = function() {\r\n\t if (!this.$highlightRules)\r\n\t this.getTokenizer();\r\n\t return this.$keywordList = this.$highlightRules.$keywordList || [];\r\n\t };\r\n\r\n\t this.getCompletions = function(state, session, pos, prefix) {\r\n\t var keywords = this.$keywordList || this.$createKeywordList();\r\n\t return keywords.map(function(word) {\r\n\t return {\r\n\t name: word,\r\n\t value: word,\r\n\t score: 0,\r\n\t meta: \"keyword\"\r\n\t };\r\n\t });\r\n\t };\r\n\r\n\t this.$id = \"ace/mode/text\";\r\n\t}).call(Mode.prototype);\r\n\r\n\texports.Mode = Mode;\r\n\t});\r\n\r\n\tace.define(\"ace/apply_delta\",[\"require\",\"exports\",\"module\"], function(acequire, exports, module) {\r\n\t\"use strict\";\r\n\r\n\tfunction throwDeltaError(delta, errorText){\r\n\t console.log(\"Invalid Delta:\", delta);\r\n\t throw \"Invalid Delta: \" + errorText;\r\n\t}\r\n\r\n\tfunction positionInDocument(docLines, position) {\r\n\t return position.row >= 0 && position.row < docLines.length &&\r\n\t position.column >= 0 && position.column <= docLines[position.row].length;\r\n\t}\r\n\r\n\tfunction validateDelta(docLines, delta) {\r\n\t if (delta.action != \"insert\" && delta.action != \"remove\")\r\n\t throwDeltaError(delta, \"delta.action must be 'insert' or 'remove'\");\r\n\t if (!(delta.lines instanceof Array))\r\n\t throwDeltaError(delta, \"delta.lines must be an Array\");\r\n\t if (!delta.start || !delta.end)\r\n\t throwDeltaError(delta, \"delta.start/end must be an present\");\r\n\t var start = delta.start;\r\n\t if (!positionInDocument(docLines, delta.start))\r\n\t throwDeltaError(delta, \"delta.start must be contained in document\");\r\n\t var end = delta.end;\r\n\t if (delta.action == \"remove\" && !positionInDocument(docLines, end))\r\n\t throwDeltaError(delta, \"delta.end must contained in document for 'remove' actions\");\r\n\t var numRangeRows = end.row - start.row;\r\n\t var numRangeLastLineChars = (end.column - (numRangeRows == 0 ? start.column : 0));\r\n\t if (numRangeRows != delta.lines.length - 1 || delta.lines[numRangeRows].length != numRangeLastLineChars)\r\n\t throwDeltaError(delta, \"delta.range must match delta lines\");\r\n\t}\r\n\r\n\texports.applyDelta = function(docLines, delta, doNotValidate) {\r\n\t \r\n\t var row = delta.start.row;\r\n\t var startColumn = delta.start.column;\r\n\t var line = docLines[row] || \"\";\r\n\t switch (delta.action) {\r\n\t case \"insert\":\r\n\t var lines = delta.lines;\r\n\t if (lines.length === 1) {\r\n\t docLines[row] = line.substring(0, startColumn) + delta.lines[0] + line.substring(startColumn);\r\n\t } else {\r\n\t var args = [row, 1].concat(delta.lines);\r\n\t docLines.splice.apply(docLines, args);\r\n\t docLines[row] = line.substring(0, startColumn) + docLines[row];\r\n\t docLines[row + delta.lines.length - 1] += line.substring(startColumn);\r\n\t }\r\n\t break;\r\n\t case \"remove\":\r\n\t var endColumn = delta.end.column;\r\n\t var endRow = delta.end.row;\r\n\t if (row === endRow) {\r\n\t docLines[row] = line.substring(0, startColumn) + line.substring(endColumn);\r\n\t } else {\r\n\t docLines.splice(\r\n\t row, endRow - row + 1,\r\n\t line.substring(0, startColumn) + docLines[endRow].substring(endColumn)\r\n\t );\r\n\t }\r\n\t break;\r\n\t }\r\n\t}\r\n\t});\r\n\r\n\tace.define(\"ace/anchor\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/event_emitter\"], function(acequire, exports, module) {\r\n\t\"use strict\";\r\n\r\n\tvar oop = acequire(\"./lib/oop\");\r\n\tvar EventEmitter = acequire(\"./lib/event_emitter\").EventEmitter;\r\n\r\n\tvar Anchor = exports.Anchor = function(doc, row, column) {\r\n\t this.$onChange = this.onChange.bind(this);\r\n\t this.attach(doc);\r\n\t \r\n\t if (typeof column == \"undefined\")\r\n\t this.setPosition(row.row, row.column);\r\n\t else\r\n\t this.setPosition(row, column);\r\n\t};\r\n\r\n\t(function() {\r\n\r\n\t oop.implement(this, EventEmitter);\r\n\t this.getPosition = function() {\r\n\t return this.$clipPositionToDocument(this.row, this.column);\r\n\t };\r\n\t this.getDocument = function() {\r\n\t return this.document;\r\n\t };\r\n\t this.$insertRight = false;\r\n\t this.onChange = function(delta) {\r\n\t if (delta.start.row == delta.end.row && delta.start.row != this.row)\r\n\t return;\r\n\r\n\t if (delta.start.row > this.row)\r\n\t return;\r\n\t \r\n\t var point = $getTransformedPoint(delta, {row: this.row, column: this.column}, this.$insertRight);\r\n\t this.setPosition(point.row, point.column, true);\r\n\t };\r\n\t \r\n\t function $pointsInOrder(point1, point2, equalPointsInOrder) {\r\n\t var bColIsAfter = equalPointsInOrder ? point1.column <= point2.column : point1.column < point2.column;\r\n\t return (point1.row < point2.row) || (point1.row == point2.row && bColIsAfter);\r\n\t }\r\n\t \r\n\t function $getTransformedPoint(delta, point, moveIfEqual) {\r\n\t var deltaIsInsert = delta.action == \"insert\";\r\n\t var deltaRowShift = (deltaIsInsert ? 1 : -1) * (delta.end.row - delta.start.row);\r\n\t var deltaColShift = (deltaIsInsert ? 1 : -1) * (delta.end.column - delta.start.column);\r\n\t var deltaStart = delta.start;\r\n\t var deltaEnd = deltaIsInsert ? deltaStart : delta.end; // Collapse insert range.\r\n\t if ($pointsInOrder(point, deltaStart, moveIfEqual)) {\r\n\t return {\r\n\t row: point.row,\r\n\t column: point.column\r\n\t };\r\n\t }\r\n\t if ($pointsInOrder(deltaEnd, point, !moveIfEqual)) {\r\n\t return {\r\n\t row: point.row + deltaRowShift,\r\n\t column: point.column + (point.row == deltaEnd.row ? deltaColShift : 0)\r\n\t };\r\n\t }\r\n\t \r\n\t return {\r\n\t row: deltaStart.row,\r\n\t column: deltaStart.column\r\n\t };\r\n\t }\r\n\t this.setPosition = function(row, column, noClip) {\r\n\t var pos;\r\n\t if (noClip) {\r\n\t pos = {\r\n\t row: row,\r\n\t column: column\r\n\t };\r\n\t } else {\r\n\t pos = this.$clipPositionToDocument(row, column);\r\n\t }\r\n\r\n\t if (this.row == pos.row && this.column == pos.column)\r\n\t return;\r\n\r\n\t var old = {\r\n\t row: this.row,\r\n\t column: this.column\r\n\t };\r\n\r\n\t this.row = pos.row;\r\n\t this.column = pos.column;\r\n\t this._signal(\"change\", {\r\n\t old: old,\r\n\t value: pos\r\n\t });\r\n\t };\r\n\t this.detach = function() {\r\n\t this.document.removeEventListener(\"change\", this.$onChange);\r\n\t };\r\n\t this.attach = function(doc) {\r\n\t this.document = doc || this.document;\r\n\t this.document.on(\"change\", this.$onChange);\r\n\t };\r\n\t this.$clipPositionToDocument = function(row, column) {\r\n\t var pos = {};\r\n\r\n\t if (row >= this.document.getLength()) {\r\n\t pos.row = Math.max(0, this.document.getLength() - 1);\r\n\t pos.column = this.document.getLine(pos.row).length;\r\n\t }\r\n\t else if (row < 0) {\r\n\t pos.row = 0;\r\n\t pos.column = 0;\r\n\t }\r\n\t else {\r\n\t pos.row = row;\r\n\t pos.column = Math.min(this.document.getLine(pos.row).length, Math.max(0, column));\r\n\t }\r\n\r\n\t if (column < 0)\r\n\t pos.column = 0;\r\n\r\n\t return pos;\r\n\t };\r\n\r\n\t}).call(Anchor.prototype);\r\n\r\n\t});\r\n\r\n\tace.define(\"ace/document\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/apply_delta\",\"ace/lib/event_emitter\",\"ace/range\",\"ace/anchor\"], function(acequire, exports, module) {\r\n\t\"use strict\";\r\n\r\n\tvar oop = acequire(\"./lib/oop\");\r\n\tvar applyDelta = acequire(\"./apply_delta\").applyDelta;\r\n\tvar EventEmitter = acequire(\"./lib/event_emitter\").EventEmitter;\r\n\tvar Range = acequire(\"./range\").Range;\r\n\tvar Anchor = acequire(\"./anchor\").Anchor;\r\n\r\n\tvar Document = function(textOrLines) {\r\n\t this.$lines = [\"\"];\r\n\t if (textOrLines.length === 0) {\r\n\t this.$lines = [\"\"];\r\n\t } else if (Array.isArray(textOrLines)) {\r\n\t this.insertMergedLines({row: 0, column: 0}, textOrLines);\r\n\t } else {\r\n\t this.insert({row: 0, column:0}, textOrLines);\r\n\t }\r\n\t};\r\n\r\n\t(function() {\r\n\r\n\t oop.implement(this, EventEmitter);\r\n\t this.setValue = function(text) {\r\n\t var len = this.getLength() - 1;\r\n\t this.remove(new Range(0, 0, len, this.getLine(len).length));\r\n\t this.insert({row: 0, column: 0}, text);\r\n\t };\r\n\t this.getValue = function() {\r\n\t return this.getAllLines().join(this.getNewLineCharacter());\r\n\t };\r\n\t this.createAnchor = function(row, column) {\r\n\t return new Anchor(this, row, column);\r\n\t };\r\n\t if (\"aaa\".split(/a/).length === 0) {\r\n\t this.$split = function(text) {\r\n\t return text.replace(/\\r\\n|\\r/g, \"\\n\").split(\"\\n\");\r\n\t };\r\n\t } else {\r\n\t this.$split = function(text) {\r\n\t return text.split(/\\r\\n|\\r|\\n/);\r\n\t };\r\n\t }\r\n\r\n\r\n\t this.$detectNewLine = function(text) {\r\n\t var match = text.match(/^.*?(\\r\\n|\\r|\\n)/m);\r\n\t this.$autoNewLine = match ? match[1] : \"\\n\";\r\n\t this._signal(\"changeNewLineMode\");\r\n\t };\r\n\t this.getNewLineCharacter = function() {\r\n\t switch (this.$newLineMode) {\r\n\t case \"windows\":\r\n\t return \"\\r\\n\";\r\n\t case \"unix\":\r\n\t return \"\\n\";\r\n\t default:\r\n\t return this.$autoNewLine || \"\\n\";\r\n\t }\r\n\t };\r\n\r\n\t this.$autoNewLine = \"\";\r\n\t this.$newLineMode = \"auto\";\r\n\t this.setNewLineMode = function(newLineMode) {\r\n\t if (this.$newLineMode === newLineMode)\r\n\t return;\r\n\r\n\t this.$newLineMode = newLineMode;\r\n\t this._signal(\"changeNewLineMode\");\r\n\t };\r\n\t this.getNewLineMode = function() {\r\n\t return this.$newLineMode;\r\n\t };\r\n\t this.isNewLine = function(text) {\r\n\t return (text == \"\\r\\n\" || text == \"\\r\" || text == \"\\n\");\r\n\t };\r\n\t this.getLine = function(row) {\r\n\t return this.$lines[row] || \"\";\r\n\t };\r\n\t this.getLines = function(firstRow, lastRow) {\r\n\t return this.$lines.slice(firstRow, lastRow + 1);\r\n\t };\r\n\t this.getAllLines = function() {\r\n\t return this.getLines(0, this.getLength());\r\n\t };\r\n\t this.getLength = function() {\r\n\t return this.$lines.length;\r\n\t };\r\n\t this.getTextRange = function(range) {\r\n\t return this.getLinesForRange(range).join(this.getNewLineCharacter());\r\n\t };\r\n\t this.getLinesForRange = function(range) {\r\n\t var lines;\r\n\t if (range.start.row === range.end.row) {\r\n\t lines = [this.getLine(range.start.row).substring(range.start.column, range.end.column)];\r\n\t } else {\r\n\t lines = this.getLines(range.start.row, range.end.row);\r\n\t lines[0] = (lines[0] || \"\").substring(range.start.column);\r\n\t var l = lines.length - 1;\r\n\t if (range.end.row - range.start.row == l)\r\n\t lines[l] = lines[l].substring(0, range.end.column);\r\n\t }\r\n\t return lines;\r\n\t };\r\n\t this.insertLines = function(row, lines) {\r\n\t console.warn(\"Use of document.insertLines is deprecated. Use the insertFullLines method instead.\");\r\n\t return this.insertFullLines(row, lines);\r\n\t };\r\n\t this.removeLines = function(firstRow, lastRow) {\r\n\t console.warn(\"Use of document.removeLines is deprecated. Use the removeFullLines method instead.\");\r\n\t return this.removeFullLines(firstRow, lastRow);\r\n\t };\r\n\t this.insertNewLine = function(position) {\r\n\t console.warn(\"Use of document.insertNewLine is deprecated. Use insertMergedLines(position, [\\'\\', \\'\\']) instead.\");\r\n\t return this.insertMergedLines(position, [\"\", \"\"]);\r\n\t };\r\n\t this.insert = function(position, text) {\r\n\t if (this.getLength() <= 1)\r\n\t this.$detectNewLine(text);\r\n\t \r\n\t return this.insertMergedLines(position, this.$split(text));\r\n\t };\r\n\t this.insertInLine = function(position, text) {\r\n\t var start = this.clippedPos(position.row, position.column);\r\n\t var end = this.pos(position.row, position.column + text.length);\r\n\t \r\n\t this.applyDelta({\r\n\t start: start,\r\n\t end: end,\r\n\t action: \"insert\",\r\n\t lines: [text]\r\n\t }, true);\r\n\t \r\n\t return this.clonePos(end);\r\n\t };\r\n\t \r\n\t this.clippedPos = function(row, column) {\r\n\t var length = this.getLength();\r\n\t if (row === undefined) {\r\n\t row = length;\r\n\t } else if (row < 0) {\r\n\t row = 0;\r\n\t } else if (row >= length) {\r\n\t row = length - 1;\r\n\t column = undefined;\r\n\t }\r\n\t var line = this.getLine(row);\r\n\t if (column == undefined)\r\n\t column = line.length;\r\n\t column = Math.min(Math.max(column, 0), line.length);\r\n\t return {row: row, column: column};\r\n\t };\r\n\t \r\n\t this.clonePos = function(pos) {\r\n\t return {row: pos.row, column: pos.column};\r\n\t };\r\n\t \r\n\t this.pos = function(row, column) {\r\n\t return {row: row, column: column};\r\n\t };\r\n\t \r\n\t this.$clipPosition = function(position) {\r\n\t var length = this.getLength();\r\n\t if (position.row >= length) {\r\n\t position.row = Math.max(0, length - 1);\r\n\t position.column = this.getLine(length - 1).length;\r\n\t } else {\r\n\t position.row = Math.max(0, position.row);\r\n\t position.column = Math.min(Math.max(position.column, 0), this.getLine(position.row).length);\r\n\t }\r\n\t return position;\r\n\t };\r\n\t this.insertFullLines = function(row, lines) {\r\n\t row = Math.min(Math.max(row, 0), this.getLength());\r\n\t var column = 0;\r\n\t if (row < this.getLength()) {\r\n\t lines = lines.concat([\"\"]);\r\n\t column = 0;\r\n\t } else {\r\n\t lines = [\"\"].concat(lines);\r\n\t row--;\r\n\t column = this.$lines[row].length;\r\n\t }\r\n\t this.insertMergedLines({row: row, column: column}, lines);\r\n\t }; \r\n\t this.insertMergedLines = function(position, lines) {\r\n\t var start = this.clippedPos(position.row, position.column);\r\n\t var end = {\r\n\t row: start.row + lines.length - 1,\r\n\t column: (lines.length == 1 ? start.column : 0) + lines[lines.length - 1].length\r\n\t };\r\n\t \r\n\t this.applyDelta({\r\n\t start: start,\r\n\t end: end,\r\n\t action: \"insert\",\r\n\t lines: lines\r\n\t });\r\n\t \r\n\t return this.clonePos(end);\r\n\t };\r\n\t this.remove = function(range) {\r\n\t var start = this.clippedPos(range.start.row, range.start.column);\r\n\t var end = this.clippedPos(range.end.row, range.end.column);\r\n\t this.applyDelta({\r\n\t start: start,\r\n\t end: end,\r\n\t action: \"remove\",\r\n\t lines: this.getLinesForRange({start: start, end: end})\r\n\t });\r\n\t return this.clonePos(start);\r\n\t };\r\n\t this.removeInLine = function(row, startColumn, endColumn) {\r\n\t var start = this.clippedPos(row, startColumn);\r\n\t var end = this.clippedPos(row, endColumn);\r\n\t \r\n\t this.applyDelta({\r\n\t start: start,\r\n\t end: end,\r\n\t action: \"remove\",\r\n\t lines: this.getLinesForRange({start: start, end: end})\r\n\t }, true);\r\n\t \r\n\t return this.clonePos(start);\r\n\t };\r\n\t this.removeFullLines = function(firstRow, lastRow) {\r\n\t firstRow = Math.min(Math.max(0, firstRow), this.getLength() - 1);\r\n\t lastRow = Math.min(Math.max(0, lastRow ), this.getLength() - 1);\r\n\t var deleteFirstNewLine = lastRow == this.getLength() - 1 && firstRow > 0;\r\n\t var deleteLastNewLine = lastRow < this.getLength() - 1;\r\n\t var startRow = ( deleteFirstNewLine ? firstRow - 1 : firstRow );\r\n\t var startCol = ( deleteFirstNewLine ? this.getLine(startRow).length : 0 );\r\n\t var endRow = ( deleteLastNewLine ? lastRow + 1 : lastRow );\r\n\t var endCol = ( deleteLastNewLine ? 0 : this.getLine(endRow).length ); \r\n\t var range = new Range(startRow, startCol, endRow, endCol);\r\n\t var deletedLines = this.$lines.slice(firstRow, lastRow + 1);\r\n\t \r\n\t this.applyDelta({\r\n\t start: range.start,\r\n\t end: range.end,\r\n\t action: \"remove\",\r\n\t lines: this.getLinesForRange(range)\r\n\t });\r\n\t return deletedLines;\r\n\t };\r\n\t this.removeNewLine = function(row) {\r\n\t if (row < this.getLength() - 1 && row >= 0) {\r\n\t this.applyDelta({\r\n\t start: this.pos(row, this.getLine(row).length),\r\n\t end: this.pos(row + 1, 0),\r\n\t action: \"remove\",\r\n\t lines: [\"\", \"\"]\r\n\t });\r\n\t }\r\n\t };\r\n\t this.replace = function(range, text) {\r\n\t if (!(range instanceof Range))\r\n\t range = Range.fromPoints(range.start, range.end);\r\n\t if (text.length === 0 && range.isEmpty())\r\n\t return range.start;\r\n\t if (text == this.getTextRange(range))\r\n\t return range.end;\r\n\r\n\t this.remove(range);\r\n\t var end;\r\n\t if (text) {\r\n\t end = this.insert(range.start, text);\r\n\t }\r\n\t else {\r\n\t end = range.start;\r\n\t }\r\n\t \r\n\t return end;\r\n\t };\r\n\t this.applyDeltas = function(deltas) {\r\n\t for (var i=0; i=0; i--) {\r\n\t this.revertDelta(deltas[i]);\r\n\t }\r\n\t };\r\n\t this.applyDelta = function(delta, doNotValidate) {\r\n\t var isInsert = delta.action == \"insert\";\r\n\t if (isInsert ? delta.lines.length <= 1 && !delta.lines[0]\r\n\t : !Range.comparePoints(delta.start, delta.end)) {\r\n\t return;\r\n\t }\r\n\t \r\n\t if (isInsert && delta.lines.length > 20000)\r\n\t this.$splitAndapplyLargeDelta(delta, 20000);\r\n\t applyDelta(this.$lines, delta, doNotValidate);\r\n\t this._signal(\"change\", delta);\r\n\t };\r\n\t \r\n\t this.$splitAndapplyLargeDelta = function(delta, MAX) {\r\n\t var lines = delta.lines;\r\n\t var l = lines.length;\r\n\t var row = delta.start.row; \r\n\t var column = delta.start.column;\r\n\t var from = 0, to = 0;\r\n\t do {\r\n\t from = to;\r\n\t to += MAX - 1;\r\n\t var chunk = lines.slice(from, to);\r\n\t if (to > l) {\r\n\t delta.lines = chunk;\r\n\t delta.start.row = row + from;\r\n\t delta.start.column = column;\r\n\t break;\r\n\t }\r\n\t chunk.push(\"\");\r\n\t this.applyDelta({\r\n\t start: this.pos(row + from, column),\r\n\t end: this.pos(row + to, column = 0),\r\n\t action: delta.action,\r\n\t lines: chunk\r\n\t }, true);\r\n\t } while(true);\r\n\t };\r\n\t this.revertDelta = function(delta) {\r\n\t this.applyDelta({\r\n\t start: this.clonePos(delta.start),\r\n\t end: this.clonePos(delta.end),\r\n\t action: (delta.action == \"insert\" ? \"remove\" : \"insert\"),\r\n\t lines: delta.lines.slice()\r\n\t });\r\n\t };\r\n\t this.indexToPosition = function(index, startRow) {\r\n\t var lines = this.$lines || this.getAllLines();\r\n\t var newlineLength = this.getNewLineCharacter().length;\r\n\t for (var i = startRow || 0, l = lines.length; i < l; i++) {\r\n\t index -= lines[i].length + newlineLength;\r\n\t if (index < 0)\r\n\t return {row: i, column: index + lines[i].length + newlineLength};\r\n\t }\r\n\t return {row: l-1, column: lines[l-1].length};\r\n\t };\r\n\t this.positionToIndex = function(pos, startRow) {\r\n\t var lines = this.$lines || this.getAllLines();\r\n\t var newlineLength = this.getNewLineCharacter().length;\r\n\t var index = 0;\r\n\t var row = Math.min(pos.row, lines.length);\r\n\t for (var i = startRow || 0; i < row; ++i)\r\n\t index += lines[i].length + newlineLength;\r\n\r\n\t return index + pos.column;\r\n\t };\r\n\r\n\t}).call(Document.prototype);\r\n\r\n\texports.Document = Document;\r\n\t});\r\n\r\n\tace.define(\"ace/background_tokenizer\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/event_emitter\"], function(acequire, exports, module) {\r\n\t\"use strict\";\r\n\r\n\tvar oop = acequire(\"./lib/oop\");\r\n\tvar EventEmitter = acequire(\"./lib/event_emitter\").EventEmitter;\r\n\r\n\tvar BackgroundTokenizer = function(tokenizer, editor) {\r\n\t this.running = false;\r\n\t this.lines = [];\r\n\t this.states = [];\r\n\t this.currentLine = 0;\r\n\t this.tokenizer = tokenizer;\r\n\r\n\t var self = this;\r\n\r\n\t this.$worker = function() {\r\n\t if (!self.running) { return; }\r\n\r\n\t var workerStart = new Date();\r\n\t var currentLine = self.currentLine;\r\n\t var endLine = -1;\r\n\t var doc = self.doc;\r\n\r\n\t var startLine = currentLine;\r\n\t while (self.lines[currentLine])\r\n\t currentLine++;\r\n\t \r\n\t var len = doc.getLength();\r\n\t var processedLines = 0;\r\n\t self.running = false;\r\n\t while (currentLine < len) {\r\n\t self.$tokenizeRow(currentLine);\r\n\t endLine = currentLine;\r\n\t do {\r\n\t currentLine++;\r\n\t } while (self.lines[currentLine]);\r\n\t processedLines ++;\r\n\t if ((processedLines % 5 === 0) && (new Date() - workerStart) > 20) { \r\n\t self.running = setTimeout(self.$worker, 20);\r\n\t break;\r\n\t }\r\n\t }\r\n\t self.currentLine = currentLine;\r\n\t \r\n\t if (startLine <= endLine)\r\n\t self.fireUpdateEvent(startLine, endLine);\r\n\t };\r\n\t};\r\n\r\n\t(function(){\r\n\r\n\t oop.implement(this, EventEmitter);\r\n\t this.setTokenizer = function(tokenizer) {\r\n\t this.tokenizer = tokenizer;\r\n\t this.lines = [];\r\n\t this.states = [];\r\n\r\n\t this.start(0);\r\n\t };\r\n\t this.setDocument = function(doc) {\r\n\t this.doc = doc;\r\n\t this.lines = [];\r\n\t this.states = [];\r\n\r\n\t this.stop();\r\n\t };\r\n\t this.fireUpdateEvent = function(firstRow, lastRow) {\r\n\t var data = {\r\n\t first: firstRow,\r\n\t last: lastRow\r\n\t };\r\n\t this._signal(\"update\", {data: data});\r\n\t };\r\n\t this.start = function(startRow) {\r\n\t this.currentLine = Math.min(startRow || 0, this.currentLine, this.doc.getLength());\r\n\t this.lines.splice(this.currentLine, this.lines.length);\r\n\t this.states.splice(this.currentLine, this.states.length);\r\n\r\n\t this.stop();\r\n\t this.running = setTimeout(this.$worker, 700);\r\n\t };\r\n\t \r\n\t this.scheduleStart = function() {\r\n\t if (!this.running)\r\n\t this.running = setTimeout(this.$worker, 700);\r\n\t }\r\n\r\n\t this.$updateOnChange = function(delta) {\r\n\t var startRow = delta.start.row;\r\n\t var len = delta.end.row - startRow;\r\n\r\n\t if (len === 0) {\r\n\t this.lines[startRow] = null;\r\n\t } else if (delta.action == \"remove\") {\r\n\t this.lines.splice(startRow, len + 1, null);\r\n\t this.states.splice(startRow, len + 1, null);\r\n\t } else {\r\n\t var args = Array(len + 1);\r\n\t args.unshift(startRow, 1);\r\n\t this.lines.splice.apply(this.lines, args);\r\n\t this.states.splice.apply(this.states, args);\r\n\t }\r\n\r\n\t this.currentLine = Math.min(startRow, this.currentLine, this.doc.getLength());\r\n\r\n\t this.stop();\r\n\t };\r\n\t this.stop = function() {\r\n\t if (this.running)\r\n\t clearTimeout(this.running);\r\n\t this.running = false;\r\n\t };\r\n\t this.getTokens = function(row) {\r\n\t return this.lines[row] || this.$tokenizeRow(row);\r\n\t };\r\n\t this.getState = function(row) {\r\n\t if (this.currentLine == row)\r\n\t this.$tokenizeRow(row);\r\n\t return this.states[row] || \"start\";\r\n\t };\r\n\r\n\t this.$tokenizeRow = function(row) {\r\n\t var line = this.doc.getLine(row);\r\n\t var state = this.states[row - 1];\r\n\r\n\t var data = this.tokenizer.getLineTokens(line, state, row);\r\n\r\n\t if (this.states[row] + \"\" !== data.state + \"\") {\r\n\t this.states[row] = data.state;\r\n\t this.lines[row + 1] = null;\r\n\t if (this.currentLine > row + 1)\r\n\t this.currentLine = row + 1;\r\n\t } else if (this.currentLine == row) {\r\n\t this.currentLine = row + 1;\r\n\t }\r\n\r\n\t return this.lines[row] = data.tokens;\r\n\t };\r\n\r\n\t}).call(BackgroundTokenizer.prototype);\r\n\r\n\texports.BackgroundTokenizer = BackgroundTokenizer;\r\n\t});\r\n\r\n\tace.define(\"ace/search_highlight\",[\"require\",\"exports\",\"module\",\"ace/lib/lang\",\"ace/lib/oop\",\"ace/range\"], function(acequire, exports, module) {\r\n\t\"use strict\";\r\n\r\n\tvar lang = acequire(\"./lib/lang\");\r\n\tvar oop = acequire(\"./lib/oop\");\r\n\tvar Range = acequire(\"./range\").Range;\r\n\r\n\tvar SearchHighlight = function(regExp, clazz, type) {\r\n\t this.setRegexp(regExp);\r\n\t this.clazz = clazz;\r\n\t this.type = type || \"text\";\r\n\t};\r\n\r\n\t(function() {\r\n\t this.MAX_RANGES = 500;\r\n\t \r\n\t this.setRegexp = function(regExp) {\r\n\t if (this.regExp+\"\" == regExp+\"\")\r\n\t return;\r\n\t this.regExp = regExp;\r\n\t this.cache = [];\r\n\t };\r\n\r\n\t this.update = function(html, markerLayer, session, config) {\r\n\t if (!this.regExp)\r\n\t return;\r\n\t var start = config.firstRow, end = config.lastRow;\r\n\r\n\t for (var i = start; i <= end; i++) {\r\n\t var ranges = this.cache[i];\r\n\t if (ranges == null) {\r\n\t ranges = lang.getMatchOffsets(session.getLine(i), this.regExp);\r\n\t if (ranges.length > this.MAX_RANGES)\r\n\t ranges = ranges.slice(0, this.MAX_RANGES);\r\n\t ranges = ranges.map(function(match) {\r\n\t return new Range(i, match.offset, i, match.offset + match.length);\r\n\t });\r\n\t this.cache[i] = ranges.length ? ranges : \"\";\r\n\t }\r\n\r\n\t for (var j = ranges.length; j --; ) {\r\n\t markerLayer.drawSingleLineMarker(\r\n\t html, ranges[j].toScreenRange(session), this.clazz, config);\r\n\t }\r\n\t }\r\n\t };\r\n\r\n\t}).call(SearchHighlight.prototype);\r\n\r\n\texports.SearchHighlight = SearchHighlight;\r\n\t});\r\n\r\n\tace.define(\"ace/edit_session/fold_line\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(acequire, exports, module) {\r\n\t\"use strict\";\r\n\r\n\tvar Range = acequire(\"../range\").Range;\r\n\tfunction FoldLine(foldData, folds) {\r\n\t this.foldData = foldData;\r\n\t if (Array.isArray(folds)) {\r\n\t this.folds = folds;\r\n\t } else {\r\n\t folds = this.folds = [ folds ];\r\n\t }\r\n\r\n\t var last = folds[folds.length - 1];\r\n\t this.range = new Range(folds[0].start.row, folds[0].start.column,\r\n\t last.end.row, last.end.column);\r\n\t this.start = this.range.start;\r\n\t this.end = this.range.end;\r\n\r\n\t this.folds.forEach(function(fold) {\r\n\t fold.setFoldLine(this);\r\n\t }, this);\r\n\t}\r\n\r\n\t(function() {\r\n\t this.shiftRow = function(shift) {\r\n\t this.start.row += shift;\r\n\t this.end.row += shift;\r\n\t this.folds.forEach(function(fold) {\r\n\t fold.start.row += shift;\r\n\t fold.end.row += shift;\r\n\t });\r\n\t };\r\n\r\n\t this.addFold = function(fold) {\r\n\t if (fold.sameRow) {\r\n\t if (fold.start.row < this.startRow || fold.endRow > this.endRow) {\r\n\t throw new Error(\"Can't add a fold to this FoldLine as it has no connection\");\r\n\t }\r\n\t this.folds.push(fold);\r\n\t this.folds.sort(function(a, b) {\r\n\t return -a.range.compareEnd(b.start.row, b.start.column);\r\n\t });\r\n\t if (this.range.compareEnd(fold.start.row, fold.start.column) > 0) {\r\n\t this.end.row = fold.end.row;\r\n\t this.end.column = fold.end.column;\r\n\t } else if (this.range.compareStart(fold.end.row, fold.end.column) < 0) {\r\n\t this.start.row = fold.start.row;\r\n\t this.start.column = fold.start.column;\r\n\t }\r\n\t } else if (fold.start.row == this.end.row) {\r\n\t this.folds.push(fold);\r\n\t this.end.row = fold.end.row;\r\n\t this.end.column = fold.end.column;\r\n\t } else if (fold.end.row == this.start.row) {\r\n\t this.folds.unshift(fold);\r\n\t this.start.row = fold.start.row;\r\n\t this.start.column = fold.start.column;\r\n\t } else {\r\n\t throw new Error(\"Trying to add fold to FoldRow that doesn't have a matching row\");\r\n\t }\r\n\t fold.foldLine = this;\r\n\t };\r\n\r\n\t this.containsRow = function(row) {\r\n\t return row >= this.start.row && row <= this.end.row;\r\n\t };\r\n\r\n\t this.walk = function(callback, endRow, endColumn) {\r\n\t var lastEnd = 0,\r\n\t folds = this.folds,\r\n\t fold,\r\n\t cmp, stop, isNewRow = true;\r\n\r\n\t if (endRow == null) {\r\n\t endRow = this.end.row;\r\n\t endColumn = this.end.column;\r\n\t }\r\n\r\n\t for (var i = 0; i < folds.length; i++) {\r\n\t fold = folds[i];\r\n\r\n\t cmp = fold.range.compareStart(endRow, endColumn);\r\n\t if (cmp == -1) {\r\n\t callback(null, endRow, endColumn, lastEnd, isNewRow);\r\n\t return;\r\n\t }\r\n\r\n\t stop = callback(null, fold.start.row, fold.start.column, lastEnd, isNewRow);\r\n\t stop = !stop && callback(fold.placeholder, fold.start.row, fold.start.column, lastEnd);\r\n\t if (stop || cmp === 0) {\r\n\t return;\r\n\t }\r\n\t isNewRow = !fold.sameRow;\r\n\t lastEnd = fold.end.column;\r\n\t }\r\n\t callback(null, endRow, endColumn, lastEnd, isNewRow);\r\n\t };\r\n\r\n\t this.getNextFoldTo = function(row, column) {\r\n\t var fold, cmp;\r\n\t for (var i = 0; i < this.folds.length; i++) {\r\n\t fold = this.folds[i];\r\n\t cmp = fold.range.compareEnd(row, column);\r\n\t if (cmp == -1) {\r\n\t return {\r\n\t fold: fold,\r\n\t kind: \"after\"\r\n\t };\r\n\t } else if (cmp === 0) {\r\n\t return {\r\n\t fold: fold,\r\n\t kind: \"inside\"\r\n\t };\r\n\t }\r\n\t }\r\n\t return null;\r\n\t };\r\n\r\n\t this.addRemoveChars = function(row, column, len) {\r\n\t var ret = this.getNextFoldTo(row, column),\r\n\t fold, folds;\r\n\t if (ret) {\r\n\t fold = ret.fold;\r\n\t if (ret.kind == \"inside\"\r\n\t && fold.start.column != column\r\n\t && fold.start.row != row)\r\n\t {\r\n\t window.console && window.console.log(row, column, fold);\r\n\t } else if (fold.start.row == row) {\r\n\t folds = this.folds;\r\n\t var i = folds.indexOf(fold);\r\n\t if (i === 0) {\r\n\t this.start.column += len;\r\n\t }\r\n\t for (i; i < folds.length; i++) {\r\n\t fold = folds[i];\r\n\t fold.start.column += len;\r\n\t if (!fold.sameRow) {\r\n\t return;\r\n\t }\r\n\t fold.end.column += len;\r\n\t }\r\n\t this.end.column += len;\r\n\t }\r\n\t }\r\n\t };\r\n\r\n\t this.split = function(row, column) {\r\n\t var pos = this.getNextFoldTo(row, column);\r\n\t \r\n\t if (!pos || pos.kind == \"inside\")\r\n\t return null;\r\n\t \r\n\t var fold = pos.fold;\r\n\t var folds = this.folds;\r\n\t var foldData = this.foldData;\r\n\t \r\n\t var i = folds.indexOf(fold);\r\n\t var foldBefore = folds[i - 1];\r\n\t this.end.row = foldBefore.end.row;\r\n\t this.end.column = foldBefore.end.column;\r\n\t folds = folds.splice(i, folds.length - i);\r\n\r\n\t var newFoldLine = new FoldLine(foldData, folds);\r\n\t foldData.splice(foldData.indexOf(this) + 1, 0, newFoldLine);\r\n\t return newFoldLine;\r\n\t };\r\n\r\n\t this.merge = function(foldLineNext) {\r\n\t var folds = foldLineNext.folds;\r\n\t for (var i = 0; i < folds.length; i++) {\r\n\t this.addFold(folds[i]);\r\n\t }\r\n\t var foldData = this.foldData;\r\n\t foldData.splice(foldData.indexOf(foldLineNext), 1);\r\n\t };\r\n\r\n\t this.toString = function() {\r\n\t var ret = [this.range.toString() + \": [\" ];\r\n\r\n\t this.folds.forEach(function(fold) {\r\n\t ret.push(\" \" + fold.toString());\r\n\t });\r\n\t ret.push(\"]\");\r\n\t return ret.join(\"\\n\");\r\n\t };\r\n\r\n\t this.idxToPosition = function(idx) {\r\n\t var lastFoldEndColumn = 0;\r\n\r\n\t for (var i = 0; i < this.folds.length; i++) {\r\n\t var fold = this.folds[i];\r\n\r\n\t idx -= fold.start.column - lastFoldEndColumn;\r\n\t if (idx < 0) {\r\n\t return {\r\n\t row: fold.start.row,\r\n\t column: fold.start.column + idx\r\n\t };\r\n\t }\r\n\r\n\t idx -= fold.placeholder.length;\r\n\t if (idx < 0) {\r\n\t return fold.start;\r\n\t }\r\n\r\n\t lastFoldEndColumn = fold.end.column;\r\n\t }\r\n\r\n\t return {\r\n\t row: this.end.row,\r\n\t column: this.end.column + idx\r\n\t };\r\n\t };\r\n\t}).call(FoldLine.prototype);\r\n\r\n\texports.FoldLine = FoldLine;\r\n\t});\r\n\r\n\tace.define(\"ace/range_list\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(acequire, exports, module) {\r\n\t\"use strict\";\r\n\tvar Range = acequire(\"./range\").Range;\r\n\tvar comparePoints = Range.comparePoints;\r\n\r\n\tvar RangeList = function() {\r\n\t this.ranges = [];\r\n\t};\r\n\r\n\t(function() {\r\n\t this.comparePoints = comparePoints;\r\n\r\n\t this.pointIndex = function(pos, excludeEdges, startIndex) {\r\n\t var list = this.ranges;\r\n\r\n\t for (var i = startIndex || 0; i < list.length; i++) {\r\n\t var range = list[i];\r\n\t var cmpEnd = comparePoints(pos, range.end);\r\n\t if (cmpEnd > 0)\r\n\t continue;\r\n\t var cmpStart = comparePoints(pos, range.start);\r\n\t if (cmpEnd === 0)\r\n\t return excludeEdges && cmpStart !== 0 ? -i-2 : i;\r\n\t if (cmpStart > 0 || (cmpStart === 0 && !excludeEdges))\r\n\t return i;\r\n\r\n\t return -i-1;\r\n\t }\r\n\t return -i - 1;\r\n\t };\r\n\r\n\t this.add = function(range) {\r\n\t var excludeEdges = !range.isEmpty();\r\n\t var startIndex = this.pointIndex(range.start, excludeEdges);\r\n\t if (startIndex < 0)\r\n\t startIndex = -startIndex - 1;\r\n\r\n\t var endIndex = this.pointIndex(range.end, excludeEdges, startIndex);\r\n\r\n\t if (endIndex < 0)\r\n\t endIndex = -endIndex - 1;\r\n\t else\r\n\t endIndex++;\r\n\t return this.ranges.splice(startIndex, endIndex - startIndex, range);\r\n\t };\r\n\r\n\t this.addList = function(list) {\r\n\t var removed = [];\r\n\t for (var i = list.length; i--; ) {\r\n\t removed.push.apply(removed, this.add(list[i]));\r\n\t }\r\n\t return removed;\r\n\t };\r\n\r\n\t this.substractPoint = function(pos) {\r\n\t var i = this.pointIndex(pos);\r\n\r\n\t if (i >= 0)\r\n\t return this.ranges.splice(i, 1);\r\n\t };\r\n\t this.merge = function() {\r\n\t var removed = [];\r\n\t var list = this.ranges;\r\n\t \r\n\t list = list.sort(function(a, b) {\r\n\t return comparePoints(a.start, b.start);\r\n\t });\r\n\t \r\n\t var next = list[0], range;\r\n\t for (var i = 1; i < list.length; i++) {\r\n\t range = next;\r\n\t next = list[i];\r\n\t var cmp = comparePoints(range.end, next.start);\r\n\t if (cmp < 0)\r\n\t continue;\r\n\r\n\t if (cmp == 0 && !range.isEmpty() && !next.isEmpty())\r\n\t continue;\r\n\r\n\t if (comparePoints(range.end, next.end) < 0) {\r\n\t range.end.row = next.end.row;\r\n\t range.end.column = next.end.column;\r\n\t }\r\n\r\n\t list.splice(i, 1);\r\n\t removed.push(next);\r\n\t next = range;\r\n\t i--;\r\n\t }\r\n\t \r\n\t this.ranges = list;\r\n\r\n\t return removed;\r\n\t };\r\n\r\n\t this.contains = function(row, column) {\r\n\t return this.pointIndex({row: row, column: column}) >= 0;\r\n\t };\r\n\r\n\t this.containsPoint = function(pos) {\r\n\t return this.pointIndex(pos) >= 0;\r\n\t };\r\n\r\n\t this.rangeAtPoint = function(pos) {\r\n\t var i = this.pointIndex(pos);\r\n\t if (i >= 0)\r\n\t return this.ranges[i];\r\n\t };\r\n\r\n\r\n\t this.clipRows = function(startRow, endRow) {\r\n\t var list = this.ranges;\r\n\t if (list[0].start.row > endRow || list[list.length - 1].start.row < startRow)\r\n\t return [];\r\n\r\n\t var startIndex = this.pointIndex({row: startRow, column: 0});\r\n\t if (startIndex < 0)\r\n\t startIndex = -startIndex - 1;\r\n\t var endIndex = this.pointIndex({row: endRow, column: 0}, startIndex);\r\n\t if (endIndex < 0)\r\n\t endIndex = -endIndex - 1;\r\n\r\n\t var clipped = [];\r\n\t for (var i = startIndex; i < endIndex; i++) {\r\n\t clipped.push(list[i]);\r\n\t }\r\n\t return clipped;\r\n\t };\r\n\r\n\t this.removeAll = function() {\r\n\t return this.ranges.splice(0, this.ranges.length);\r\n\t };\r\n\r\n\t this.attach = function(session) {\r\n\t if (this.session)\r\n\t this.detach();\r\n\r\n\t this.session = session;\r\n\t this.onChange = this.$onChange.bind(this);\r\n\r\n\t this.session.on('change', this.onChange);\r\n\t };\r\n\r\n\t this.detach = function() {\r\n\t if (!this.session)\r\n\t return;\r\n\t this.session.removeListener('change', this.onChange);\r\n\t this.session = null;\r\n\t };\r\n\r\n\t this.$onChange = function(delta) {\r\n\t if (delta.action == \"insert\"){\r\n\t var start = delta.start;\r\n\t var end = delta.end;\r\n\t } else {\r\n\t var end = delta.start;\r\n\t var start = delta.end;\r\n\t }\r\n\t var startRow = start.row;\r\n\t var endRow = end.row;\r\n\t var lineDif = endRow - startRow;\r\n\r\n\t var colDiff = -start.column + end.column;\r\n\t var ranges = this.ranges;\r\n\r\n\t for (var i = 0, n = ranges.length; i < n; i++) {\r\n\t var r = ranges[i];\r\n\t if (r.end.row < startRow)\r\n\t continue;\r\n\t if (r.start.row > startRow)\r\n\t break;\r\n\r\n\t if (r.start.row == startRow && r.start.column >= start.column ) {\r\n\t if (r.start.column == start.column && this.$insertRight) {\r\n\t } else {\r\n\t r.start.column += colDiff;\r\n\t r.start.row += lineDif;\r\n\t }\r\n\t }\r\n\t if (r.end.row == startRow && r.end.column >= start.column) {\r\n\t if (r.end.column == start.column && this.$insertRight) {\r\n\t continue;\r\n\t }\r\n\t if (r.end.column == start.column && colDiff > 0 && i < n - 1) { \r\n\t if (r.end.column > r.start.column && r.end.column == ranges[i+1].start.column)\r\n\t r.end.column -= colDiff;\r\n\t }\r\n\t r.end.column += colDiff;\r\n\t r.end.row += lineDif;\r\n\t }\r\n\t }\r\n\r\n\t if (lineDif != 0 && i < n) {\r\n\t for (; i < n; i++) {\r\n\t var r = ranges[i];\r\n\t r.start.row += lineDif;\r\n\t r.end.row += lineDif;\r\n\t }\r\n\t }\r\n\t };\r\n\r\n\t}).call(RangeList.prototype);\r\n\r\n\texports.RangeList = RangeList;\r\n\t});\r\n\r\n\tace.define(\"ace/edit_session/fold\",[\"require\",\"exports\",\"module\",\"ace/range\",\"ace/range_list\",\"ace/lib/oop\"], function(acequire, exports, module) {\r\n\t\"use strict\";\r\n\r\n\tvar Range = acequire(\"../range\").Range;\r\n\tvar RangeList = acequire(\"../range_list\").RangeList;\r\n\tvar oop = acequire(\"../lib/oop\")\r\n\tvar Fold = exports.Fold = function(range, placeholder) {\r\n\t this.foldLine = null;\r\n\t this.placeholder = placeholder;\r\n\t this.range = range;\r\n\t this.start = range.start;\r\n\t this.end = range.end;\r\n\r\n\t this.sameRow = range.start.row == range.end.row;\r\n\t this.subFolds = this.ranges = [];\r\n\t};\r\n\r\n\toop.inherits(Fold, RangeList);\r\n\r\n\t(function() {\r\n\r\n\t this.toString = function() {\r\n\t return '\"' + this.placeholder + '\" ' + this.range.toString();\r\n\t };\r\n\r\n\t this.setFoldLine = function(foldLine) {\r\n\t this.foldLine = foldLine;\r\n\t this.subFolds.forEach(function(fold) {\r\n\t fold.setFoldLine(foldLine);\r\n\t });\r\n\t };\r\n\r\n\t this.clone = function() {\r\n\t var range = this.range.clone();\r\n\t var fold = new Fold(range, this.placeholder);\r\n\t this.subFolds.forEach(function(subFold) {\r\n\t fold.subFolds.push(subFold.clone());\r\n\t });\r\n\t fold.collapseChildren = this.collapseChildren;\r\n\t return fold;\r\n\t };\r\n\r\n\t this.addSubFold = function(fold) {\r\n\t if (this.range.isEqual(fold))\r\n\t return;\r\n\r\n\t if (!this.range.containsRange(fold))\r\n\t throw new Error(\"A fold can't intersect already existing fold\" + fold.range + this.range);\r\n\t consumeRange(fold, this.start);\r\n\r\n\t var row = fold.start.row, column = fold.start.column;\r\n\t for (var i = 0, cmp = -1; i < this.subFolds.length; i++) {\r\n\t cmp = this.subFolds[i].range.compare(row, column);\r\n\t if (cmp != 1)\r\n\t break;\r\n\t }\r\n\t var afterStart = this.subFolds[i];\r\n\r\n\t if (cmp == 0)\r\n\t return afterStart.addSubFold(fold);\r\n\t var row = fold.range.end.row, column = fold.range.end.column;\r\n\t for (var j = i, cmp = -1; j < this.subFolds.length; j++) {\r\n\t cmp = this.subFolds[j].range.compare(row, column);\r\n\t if (cmp != 1)\r\n\t break;\r\n\t }\r\n\t var afterEnd = this.subFolds[j];\r\n\r\n\t if (cmp == 0)\r\n\t throw new Error(\"A fold can't intersect already existing fold\" + fold.range + this.range);\r\n\r\n\t var consumedFolds = this.subFolds.splice(i, j - i, fold);\r\n\t fold.setFoldLine(this.foldLine);\r\n\r\n\t return fold;\r\n\t };\r\n\t \r\n\t this.restoreRange = function(range) {\r\n\t return restoreRange(range, this.start);\r\n\t };\r\n\r\n\t}).call(Fold.prototype);\r\n\r\n\tfunction consumePoint(point, anchor) {\r\n\t point.row -= anchor.row;\r\n\t if (point.row == 0)\r\n\t point.column -= anchor.column;\r\n\t}\r\n\tfunction consumeRange(range, anchor) {\r\n\t consumePoint(range.start, anchor);\r\n\t consumePoint(range.end, anchor);\r\n\t}\r\n\tfunction restorePoint(point, anchor) {\r\n\t if (point.row == 0)\r\n\t point.column += anchor.column;\r\n\t point.row += anchor.row;\r\n\t}\r\n\tfunction restoreRange(range, anchor) {\r\n\t restorePoint(range.start, anchor);\r\n\t restorePoint(range.end, anchor);\r\n\t}\r\n\r\n\t});\r\n\r\n\tace.define(\"ace/edit_session/folding\",[\"require\",\"exports\",\"module\",\"ace/range\",\"ace/edit_session/fold_line\",\"ace/edit_session/fold\",\"ace/token_iterator\"], function(acequire, exports, module) {\r\n\t\"use strict\";\r\n\r\n\tvar Range = acequire(\"../range\").Range;\r\n\tvar FoldLine = acequire(\"./fold_line\").FoldLine;\r\n\tvar Fold = acequire(\"./fold\").Fold;\r\n\tvar TokenIterator = acequire(\"../token_iterator\").TokenIterator;\r\n\r\n\tfunction Folding() {\r\n\t this.getFoldAt = function(row, column, side) {\r\n\t var foldLine = this.getFoldLine(row);\r\n\t if (!foldLine)\r\n\t return null;\r\n\r\n\t var folds = foldLine.folds;\r\n\t for (var i = 0; i < folds.length; i++) {\r\n\t var fold = folds[i];\r\n\t if (fold.range.contains(row, column)) {\r\n\t if (side == 1 && fold.range.isEnd(row, column)) {\r\n\t continue;\r\n\t } else if (side == -1 && fold.range.isStart(row, column)) {\r\n\t continue;\r\n\t }\r\n\t return fold;\r\n\t }\r\n\t }\r\n\t };\r\n\t this.getFoldsInRange = function(range) {\r\n\t var start = range.start;\r\n\t var end = range.end;\r\n\t var foldLines = this.$foldData;\r\n\t var foundFolds = [];\r\n\r\n\t start.column += 1;\r\n\t end.column -= 1;\r\n\r\n\t for (var i = 0; i < foldLines.length; i++) {\r\n\t var cmp = foldLines[i].range.compareRange(range);\r\n\t if (cmp == 2) {\r\n\t continue;\r\n\t }\r\n\t else if (cmp == -2) {\r\n\t break;\r\n\t }\r\n\r\n\t var folds = foldLines[i].folds;\r\n\t for (var j = 0; j < folds.length; j++) {\r\n\t var fold = folds[j];\r\n\t cmp = fold.range.compareRange(range);\r\n\t if (cmp == -2) {\r\n\t break;\r\n\t } else if (cmp == 2) {\r\n\t continue;\r\n\t } else\r\n\t if (cmp == 42) {\r\n\t break;\r\n\t }\r\n\t foundFolds.push(fold);\r\n\t }\r\n\t }\r\n\t start.column -= 1;\r\n\t end.column += 1;\r\n\r\n\t return foundFolds;\r\n\t };\r\n\r\n\t this.getFoldsInRangeList = function(ranges) {\r\n\t if (Array.isArray(ranges)) {\r\n\t var folds = [];\r\n\t ranges.forEach(function(range) {\r\n\t folds = folds.concat(this.getFoldsInRange(range));\r\n\t }, this);\r\n\t } else {\r\n\t var folds = this.getFoldsInRange(ranges);\r\n\t }\r\n\t return folds;\r\n\t };\r\n\t this.getAllFolds = function() {\r\n\t var folds = [];\r\n\t var foldLines = this.$foldData;\r\n\t \r\n\t for (var i = 0; i < foldLines.length; i++)\r\n\t for (var j = 0; j < foldLines[i].folds.length; j++)\r\n\t folds.push(foldLines[i].folds[j]);\r\n\r\n\t return folds;\r\n\t };\r\n\t this.getFoldStringAt = function(row, column, trim, foldLine) {\r\n\t foldLine = foldLine || this.getFoldLine(row);\r\n\t if (!foldLine)\r\n\t return null;\r\n\r\n\t var lastFold = {\r\n\t end: { column: 0 }\r\n\t };\r\n\t var str, fold;\r\n\t for (var i = 0; i < foldLine.folds.length; i++) {\r\n\t fold = foldLine.folds[i];\r\n\t var cmp = fold.range.compareEnd(row, column);\r\n\t if (cmp == -1) {\r\n\t str = this\r\n\t .getLine(fold.start.row)\r\n\t .substring(lastFold.end.column, fold.start.column);\r\n\t break;\r\n\t }\r\n\t else if (cmp === 0) {\r\n\t return null;\r\n\t }\r\n\t lastFold = fold;\r\n\t }\r\n\t if (!str)\r\n\t str = this.getLine(fold.start.row).substring(lastFold.end.column);\r\n\r\n\t if (trim == -1)\r\n\t return str.substring(0, column - lastFold.end.column);\r\n\t else if (trim == 1)\r\n\t return str.substring(column - lastFold.end.column);\r\n\t else\r\n\t return str;\r\n\t };\r\n\r\n\t this.getFoldLine = function(docRow, startFoldLine) {\r\n\t var foldData = this.$foldData;\r\n\t var i = 0;\r\n\t if (startFoldLine)\r\n\t i = foldData.indexOf(startFoldLine);\r\n\t if (i == -1)\r\n\t i = 0;\r\n\t for (i; i < foldData.length; i++) {\r\n\t var foldLine = foldData[i];\r\n\t if (foldLine.start.row <= docRow && foldLine.end.row >= docRow) {\r\n\t return foldLine;\r\n\t } else if (foldLine.end.row > docRow) {\r\n\t return null;\r\n\t }\r\n\t }\r\n\t return null;\r\n\t };\r\n\t this.getNextFoldLine = function(docRow, startFoldLine) {\r\n\t var foldData = this.$foldData;\r\n\t var i = 0;\r\n\t if (startFoldLine)\r\n\t i = foldData.indexOf(startFoldLine);\r\n\t if (i == -1)\r\n\t i = 0;\r\n\t for (i; i < foldData.length; i++) {\r\n\t var foldLine = foldData[i];\r\n\t if (foldLine.end.row >= docRow) {\r\n\t return foldLine;\r\n\t }\r\n\t }\r\n\t return null;\r\n\t };\r\n\r\n\t this.getFoldedRowCount = function(first, last) {\r\n\t var foldData = this.$foldData, rowCount = last-first+1;\r\n\t for (var i = 0; i < foldData.length; i++) {\r\n\t var foldLine = foldData[i],\r\n\t end = foldLine.end.row,\r\n\t start = foldLine.start.row;\r\n\t if (end >= last) {\r\n\t if (start < last) {\r\n\t if (start >= first)\r\n\t rowCount -= last-start;\r\n\t else\r\n\t rowCount = 0; // in one fold\r\n\t }\r\n\t break;\r\n\t } else if (end >= first){\r\n\t if (start >= first) // fold inside range\r\n\t rowCount -= end-start;\r\n\t else\r\n\t rowCount -= end-first+1;\r\n\t }\r\n\t }\r\n\t return rowCount;\r\n\t };\r\n\r\n\t this.$addFoldLine = function(foldLine) {\r\n\t this.$foldData.push(foldLine);\r\n\t this.$foldData.sort(function(a, b) {\r\n\t return a.start.row - b.start.row;\r\n\t });\r\n\t return foldLine;\r\n\t };\r\n\t this.addFold = function(placeholder, range) {\r\n\t var foldData = this.$foldData;\r\n\t var added = false;\r\n\t var fold;\r\n\t \r\n\t if (placeholder instanceof Fold)\r\n\t fold = placeholder;\r\n\t else {\r\n\t fold = new Fold(range, placeholder);\r\n\t fold.collapseChildren = range.collapseChildren;\r\n\t }\r\n\t this.$clipRangeToDocument(fold.range);\r\n\r\n\t var startRow = fold.start.row;\r\n\t var startColumn = fold.start.column;\r\n\t var endRow = fold.end.row;\r\n\t var endColumn = fold.end.column;\r\n\t if (!(startRow < endRow || \r\n\t startRow == endRow && startColumn <= endColumn - 2))\r\n\t throw new Error(\"The range has to be at least 2 characters width\");\r\n\r\n\t var startFold = this.getFoldAt(startRow, startColumn, 1);\r\n\t var endFold = this.getFoldAt(endRow, endColumn, -1);\r\n\t if (startFold && endFold == startFold)\r\n\t return startFold.addSubFold(fold);\r\n\r\n\t if (startFold && !startFold.range.isStart(startRow, startColumn))\r\n\t this.removeFold(startFold);\r\n\t \r\n\t if (endFold && !endFold.range.isEnd(endRow, endColumn))\r\n\t this.removeFold(endFold);\r\n\t var folds = this.getFoldsInRange(fold.range);\r\n\t if (folds.length > 0) {\r\n\t this.removeFolds(folds);\r\n\t folds.forEach(function(subFold) {\r\n\t fold.addSubFold(subFold);\r\n\t });\r\n\t }\r\n\r\n\t for (var i = 0; i < foldData.length; i++) {\r\n\t var foldLine = foldData[i];\r\n\t if (endRow == foldLine.start.row) {\r\n\t foldLine.addFold(fold);\r\n\t added = true;\r\n\t break;\r\n\t } else if (startRow == foldLine.end.row) {\r\n\t foldLine.addFold(fold);\r\n\t added = true;\r\n\t if (!fold.sameRow) {\r\n\t var foldLineNext = foldData[i + 1];\r\n\t if (foldLineNext && foldLineNext.start.row == endRow) {\r\n\t foldLine.merge(foldLineNext);\r\n\t break;\r\n\t }\r\n\t }\r\n\t break;\r\n\t } else if (endRow <= foldLine.start.row) {\r\n\t break;\r\n\t }\r\n\t }\r\n\r\n\t if (!added)\r\n\t foldLine = this.$addFoldLine(new FoldLine(this.$foldData, fold));\r\n\r\n\t if (this.$useWrapMode)\r\n\t this.$updateWrapData(foldLine.start.row, foldLine.start.row);\r\n\t else\r\n\t this.$updateRowLengthCache(foldLine.start.row, foldLine.start.row);\r\n\t this.$modified = true;\r\n\t this._signal(\"changeFold\", { data: fold, action: \"add\" });\r\n\r\n\t return fold;\r\n\t };\r\n\r\n\t this.addFolds = function(folds) {\r\n\t folds.forEach(function(fold) {\r\n\t this.addFold(fold);\r\n\t }, this);\r\n\t };\r\n\r\n\t this.removeFold = function(fold) {\r\n\t var foldLine = fold.foldLine;\r\n\t var startRow = foldLine.start.row;\r\n\t var endRow = foldLine.end.row;\r\n\r\n\t var foldLines = this.$foldData;\r\n\t var folds = foldLine.folds;\r\n\t if (folds.length == 1) {\r\n\t foldLines.splice(foldLines.indexOf(foldLine), 1);\r\n\t } else\r\n\t if (foldLine.range.isEnd(fold.end.row, fold.end.column)) {\r\n\t folds.pop();\r\n\t foldLine.end.row = folds[folds.length - 1].end.row;\r\n\t foldLine.end.column = folds[folds.length - 1].end.column;\r\n\t } else\r\n\t if (foldLine.range.isStart(fold.start.row, fold.start.column)) {\r\n\t folds.shift();\r\n\t foldLine.start.row = folds[0].start.row;\r\n\t foldLine.start.column = folds[0].start.column;\r\n\t } else\r\n\t if (fold.sameRow) {\r\n\t folds.splice(folds.indexOf(fold), 1);\r\n\t } else\r\n\t {\r\n\t var newFoldLine = foldLine.split(fold.start.row, fold.start.column);\r\n\t folds = newFoldLine.folds;\r\n\t folds.shift();\r\n\t newFoldLine.start.row = folds[0].start.row;\r\n\t newFoldLine.start.column = folds[0].start.column;\r\n\t }\r\n\r\n\t if (!this.$updating) {\r\n\t if (this.$useWrapMode)\r\n\t this.$updateWrapData(startRow, endRow);\r\n\t else\r\n\t this.$updateRowLengthCache(startRow, endRow);\r\n\t }\r\n\t this.$modified = true;\r\n\t this._signal(\"changeFold\", { data: fold, action: \"remove\" });\r\n\t };\r\n\r\n\t this.removeFolds = function(folds) {\r\n\t var cloneFolds = [];\r\n\t for (var i = 0; i < folds.length; i++) {\r\n\t cloneFolds.push(folds[i]);\r\n\t }\r\n\r\n\t cloneFolds.forEach(function(fold) {\r\n\t this.removeFold(fold);\r\n\t }, this);\r\n\t this.$modified = true;\r\n\t };\r\n\r\n\t this.expandFold = function(fold) {\r\n\t this.removeFold(fold);\r\n\t fold.subFolds.forEach(function(subFold) {\r\n\t fold.restoreRange(subFold);\r\n\t this.addFold(subFold);\r\n\t }, this);\r\n\t if (fold.collapseChildren > 0) {\r\n\t this.foldAll(fold.start.row+1, fold.end.row, fold.collapseChildren-1);\r\n\t }\r\n\t fold.subFolds = [];\r\n\t };\r\n\r\n\t this.expandFolds = function(folds) {\r\n\t folds.forEach(function(fold) {\r\n\t this.expandFold(fold);\r\n\t }, this);\r\n\t };\r\n\r\n\t this.unfold = function(location, expandInner) {\r\n\t var range, folds;\r\n\t if (location == null) {\r\n\t range = new Range(0, 0, this.getLength(), 0);\r\n\t expandInner = true;\r\n\t } else if (typeof location == \"number\")\r\n\t range = new Range(location, 0, location, this.getLine(location).length);\r\n\t else if (\"row\" in location)\r\n\t range = Range.fromPoints(location, location);\r\n\t else\r\n\t range = location;\r\n\t \r\n\t folds = this.getFoldsInRangeList(range);\r\n\t if (expandInner) {\r\n\t this.removeFolds(folds);\r\n\t } else {\r\n\t var subFolds = folds;\r\n\t while (subFolds.length) {\r\n\t this.expandFolds(subFolds);\r\n\t subFolds = this.getFoldsInRangeList(range);\r\n\t }\r\n\t }\r\n\t if (folds.length)\r\n\t return folds;\r\n\t };\r\n\t this.isRowFolded = function(docRow, startFoldRow) {\r\n\t return !!this.getFoldLine(docRow, startFoldRow);\r\n\t };\r\n\r\n\t this.getRowFoldEnd = function(docRow, startFoldRow) {\r\n\t var foldLine = this.getFoldLine(docRow, startFoldRow);\r\n\t return foldLine ? foldLine.end.row : docRow;\r\n\t };\r\n\r\n\t this.getRowFoldStart = function(docRow, startFoldRow) {\r\n\t var foldLine = this.getFoldLine(docRow, startFoldRow);\r\n\t return foldLine ? foldLine.start.row : docRow;\r\n\t };\r\n\r\n\t this.getFoldDisplayLine = function(foldLine, endRow, endColumn, startRow, startColumn) {\r\n\t if (startRow == null)\r\n\t startRow = foldLine.start.row;\r\n\t if (startColumn == null)\r\n\t startColumn = 0;\r\n\t if (endRow == null)\r\n\t endRow = foldLine.end.row;\r\n\t if (endColumn == null)\r\n\t endColumn = this.getLine(endRow).length;\r\n\t var doc = this.doc;\r\n\t var textLine = \"\";\r\n\r\n\t foldLine.walk(function(placeholder, row, column, lastColumn) {\r\n\t if (row < startRow)\r\n\t return;\r\n\t if (row == startRow) {\r\n\t if (column < startColumn)\r\n\t return;\r\n\t lastColumn = Math.max(startColumn, lastColumn);\r\n\t }\r\n\r\n\t if (placeholder != null) {\r\n\t textLine += placeholder;\r\n\t } else {\r\n\t textLine += doc.getLine(row).substring(lastColumn, column);\r\n\t }\r\n\t }, endRow, endColumn);\r\n\t return textLine;\r\n\t };\r\n\r\n\t this.getDisplayLine = function(row, endColumn, startRow, startColumn) {\r\n\t var foldLine = this.getFoldLine(row);\r\n\r\n\t if (!foldLine) {\r\n\t var line;\r\n\t line = this.doc.getLine(row);\r\n\t return line.substring(startColumn || 0, endColumn || line.length);\r\n\t } else {\r\n\t return this.getFoldDisplayLine(\r\n\t foldLine, row, endColumn, startRow, startColumn);\r\n\t }\r\n\t };\r\n\r\n\t this.$cloneFoldData = function() {\r\n\t var fd = [];\r\n\t fd = this.$foldData.map(function(foldLine) {\r\n\t var folds = foldLine.folds.map(function(fold) {\r\n\t return fold.clone();\r\n\t });\r\n\t return new FoldLine(fd, folds);\r\n\t });\r\n\r\n\t return fd;\r\n\t };\r\n\r\n\t this.toggleFold = function(tryToUnfold) {\r\n\t var selection = this.selection;\r\n\t var range = selection.getRange();\r\n\t var fold;\r\n\t var bracketPos;\r\n\r\n\t if (range.isEmpty()) {\r\n\t var cursor = range.start;\r\n\t fold = this.getFoldAt(cursor.row, cursor.column);\r\n\r\n\t if (fold) {\r\n\t this.expandFold(fold);\r\n\t return;\r\n\t } else if (bracketPos = this.findMatchingBracket(cursor)) {\r\n\t if (range.comparePoint(bracketPos) == 1) {\r\n\t range.end = bracketPos;\r\n\t } else {\r\n\t range.start = bracketPos;\r\n\t range.start.column++;\r\n\t range.end.column--;\r\n\t }\r\n\t } else if (bracketPos = this.findMatchingBracket({row: cursor.row, column: cursor.column + 1})) {\r\n\t if (range.comparePoint(bracketPos) == 1)\r\n\t range.end = bracketPos;\r\n\t else\r\n\t range.start = bracketPos;\r\n\r\n\t range.start.column++;\r\n\t } else {\r\n\t range = this.getCommentFoldRange(cursor.row, cursor.column) || range;\r\n\t }\r\n\t } else {\r\n\t var folds = this.getFoldsInRange(range);\r\n\t if (tryToUnfold && folds.length) {\r\n\t this.expandFolds(folds);\r\n\t return;\r\n\t } else if (folds.length == 1 ) {\r\n\t fold = folds[0];\r\n\t }\r\n\t }\r\n\r\n\t if (!fold)\r\n\t fold = this.getFoldAt(range.start.row, range.start.column);\r\n\r\n\t if (fold && fold.range.toString() == range.toString()) {\r\n\t this.expandFold(fold);\r\n\t return;\r\n\t }\r\n\r\n\t var placeholder = \"...\";\r\n\t if (!range.isMultiLine()) {\r\n\t placeholder = this.getTextRange(range);\r\n\t if (placeholder.length < 4)\r\n\t return;\r\n\t placeholder = placeholder.trim().substring(0, 2) + \"..\";\r\n\t }\r\n\r\n\t this.addFold(placeholder, range);\r\n\t };\r\n\r\n\t this.getCommentFoldRange = function(row, column, dir) {\r\n\t var iterator = new TokenIterator(this, row, column);\r\n\t var token = iterator.getCurrentToken();\r\n\t if (token && /^comment|string/.test(token.type)) {\r\n\t var range = new Range();\r\n\t var re = new RegExp(token.type.replace(/\\..*/, \"\\\\.\"));\r\n\t if (dir != 1) {\r\n\t do {\r\n\t token = iterator.stepBackward();\r\n\t } while (token && re.test(token.type));\r\n\t iterator.stepForward();\r\n\t }\r\n\t \r\n\t range.start.row = iterator.getCurrentTokenRow();\r\n\t range.start.column = iterator.getCurrentTokenColumn() + 2;\r\n\r\n\t iterator = new TokenIterator(this, row, column);\r\n\t \r\n\t if (dir != -1) {\r\n\t do {\r\n\t token = iterator.stepForward();\r\n\t } while (token && re.test(token.type));\r\n\t token = iterator.stepBackward();\r\n\t } else\r\n\t token = iterator.getCurrentToken();\r\n\r\n\t range.end.row = iterator.getCurrentTokenRow();\r\n\t range.end.column = iterator.getCurrentTokenColumn() + token.value.length - 2;\r\n\t return range;\r\n\t }\r\n\t };\r\n\r\n\t this.foldAll = function(startRow, endRow, depth) {\r\n\t if (depth == undefined)\r\n\t depth = 100000; // JSON.stringify doesn't hanle Infinity\r\n\t var foldWidgets = this.foldWidgets;\r\n\t if (!foldWidgets)\r\n\t return; // mode doesn't support folding\r\n\t endRow = endRow || this.getLength();\r\n\t startRow = startRow || 0;\r\n\t for (var row = startRow; row < endRow; row++) {\r\n\t if (foldWidgets[row] == null)\r\n\t foldWidgets[row] = this.getFoldWidget(row);\r\n\t if (foldWidgets[row] != \"start\")\r\n\t continue;\r\n\r\n\t var range = this.getFoldWidgetRange(row);\r\n\t if (range && range.isMultiLine()\r\n\t && range.end.row <= endRow\r\n\t && range.start.row >= startRow\r\n\t ) {\r\n\t row = range.end.row;\r\n\t try {\r\n\t var fold = this.addFold(\"...\", range);\r\n\t if (fold)\r\n\t fold.collapseChildren = depth;\r\n\t } catch(e) {}\r\n\t }\r\n\t }\r\n\t };\r\n\t this.$foldStyles = {\r\n\t \"manual\": 1,\r\n\t \"markbegin\": 1,\r\n\t \"markbeginend\": 1\r\n\t };\r\n\t this.$foldStyle = \"markbegin\";\r\n\t this.setFoldStyle = function(style) {\r\n\t if (!this.$foldStyles[style])\r\n\t throw new Error(\"invalid fold style: \" + style + \"[\" + Object.keys(this.$foldStyles).join(\", \") + \"]\");\r\n\t \r\n\t if (this.$foldStyle == style)\r\n\t return;\r\n\r\n\t this.$foldStyle = style;\r\n\t \r\n\t if (style == \"manual\")\r\n\t this.unfold();\r\n\t var mode = this.$foldMode;\r\n\t this.$setFolding(null);\r\n\t this.$setFolding(mode);\r\n\t };\r\n\r\n\t this.$setFolding = function(foldMode) {\r\n\t if (this.$foldMode == foldMode)\r\n\t return;\r\n\t \r\n\t this.$foldMode = foldMode;\r\n\t \r\n\t this.off('change', this.$updateFoldWidgets);\r\n\t this.off('tokenizerUpdate', this.$tokenizerUpdateFoldWidgets);\r\n\t this._signal(\"changeAnnotation\");\r\n\t \r\n\t if (!foldMode || this.$foldStyle == \"manual\") {\r\n\t this.foldWidgets = null;\r\n\t return;\r\n\t }\r\n\t \r\n\t this.foldWidgets = [];\r\n\t this.getFoldWidget = foldMode.getFoldWidget.bind(foldMode, this, this.$foldStyle);\r\n\t this.getFoldWidgetRange = foldMode.getFoldWidgetRange.bind(foldMode, this, this.$foldStyle);\r\n\t \r\n\t this.$updateFoldWidgets = this.updateFoldWidgets.bind(this);\r\n\t this.$tokenizerUpdateFoldWidgets = this.tokenizerUpdateFoldWidgets.bind(this);\r\n\t this.on('change', this.$updateFoldWidgets);\r\n\t this.on('tokenizerUpdate', this.$tokenizerUpdateFoldWidgets);\r\n\t };\r\n\r\n\t this.getParentFoldRangeData = function (row, ignoreCurrent) {\r\n\t var fw = this.foldWidgets;\r\n\t if (!fw || (ignoreCurrent && fw[row]))\r\n\t return {};\r\n\r\n\t var i = row - 1, firstRange;\r\n\t while (i >= 0) {\r\n\t var c = fw[i];\r\n\t if (c == null)\r\n\t c = fw[i] = this.getFoldWidget(i);\r\n\r\n\t if (c == \"start\") {\r\n\t var range = this.getFoldWidgetRange(i);\r\n\t if (!firstRange)\r\n\t firstRange = range;\r\n\t if (range && range.end.row >= row)\r\n\t break;\r\n\t }\r\n\t i--;\r\n\t }\r\n\r\n\t return {\r\n\t range: i !== -1 && range,\r\n\t firstRange: firstRange\r\n\t };\r\n\t };\r\n\r\n\t this.onFoldWidgetClick = function(row, e) {\r\n\t e = e.domEvent;\r\n\t var options = {\r\n\t children: e.shiftKey,\r\n\t all: e.ctrlKey || e.metaKey,\r\n\t siblings: e.altKey\r\n\t };\r\n\t \r\n\t var range = this.$toggleFoldWidget(row, options);\r\n\t if (!range) {\r\n\t var el = (e.target || e.srcElement);\r\n\t if (el && /ace_fold-widget/.test(el.className))\r\n\t el.className += \" ace_invalid\";\r\n\t }\r\n\t };\r\n\t \r\n\t this.$toggleFoldWidget = function(row, options) {\r\n\t if (!this.getFoldWidget)\r\n\t return;\r\n\t var type = this.getFoldWidget(row);\r\n\t var line = this.getLine(row);\r\n\r\n\t var dir = type === \"end\" ? -1 : 1;\r\n\t var fold = this.getFoldAt(row, dir === -1 ? 0 : line.length, dir);\r\n\r\n\t if (fold) {\r\n\t if (options.children || options.all)\r\n\t this.removeFold(fold);\r\n\t else\r\n\t this.expandFold(fold);\r\n\t return;\r\n\t }\r\n\r\n\t var range = this.getFoldWidgetRange(row, true);\r\n\t if (range && !range.isMultiLine()) {\r\n\t fold = this.getFoldAt(range.start.row, range.start.column, 1);\r\n\t if (fold && range.isEqual(fold.range)) {\r\n\t this.removeFold(fold);\r\n\t return;\r\n\t }\r\n\t }\r\n\t \r\n\t if (options.siblings) {\r\n\t var data = this.getParentFoldRangeData(row);\r\n\t if (data.range) {\r\n\t var startRow = data.range.start.row + 1;\r\n\t var endRow = data.range.end.row;\r\n\t }\r\n\t this.foldAll(startRow, endRow, options.all ? 10000 : 0);\r\n\t } else if (options.children) {\r\n\t endRow = range ? range.end.row : this.getLength();\r\n\t this.foldAll(row + 1, endRow, options.all ? 10000 : 0);\r\n\t } else if (range) {\r\n\t if (options.all) \r\n\t range.collapseChildren = 10000;\r\n\t this.addFold(\"...\", range);\r\n\t }\r\n\t \r\n\t return range;\r\n\t };\r\n\t \r\n\t \r\n\t \r\n\t this.toggleFoldWidget = function(toggleParent) {\r\n\t var row = this.selection.getCursor().row;\r\n\t row = this.getRowFoldStart(row);\r\n\t var range = this.$toggleFoldWidget(row, {});\r\n\t \r\n\t if (range)\r\n\t return;\r\n\t var data = this.getParentFoldRangeData(row, true);\r\n\t range = data.range || data.firstRange;\r\n\t \r\n\t if (range) {\r\n\t row = range.start.row;\r\n\t var fold = this.getFoldAt(row, this.getLine(row).length, 1);\r\n\r\n\t if (fold) {\r\n\t this.removeFold(fold);\r\n\t } else {\r\n\t this.addFold(\"...\", range);\r\n\t }\r\n\t }\r\n\t };\r\n\r\n\t this.updateFoldWidgets = function(delta) {\r\n\t var firstRow = delta.start.row;\r\n\t var len = delta.end.row - firstRow;\r\n\r\n\t if (len === 0) {\r\n\t this.foldWidgets[firstRow] = null;\r\n\t } else if (delta.action == 'remove') {\r\n\t this.foldWidgets.splice(firstRow, len + 1, null);\r\n\t } else {\r\n\t var args = Array(len + 1);\r\n\t args.unshift(firstRow, 1);\r\n\t this.foldWidgets.splice.apply(this.foldWidgets, args);\r\n\t }\r\n\t };\r\n\t this.tokenizerUpdateFoldWidgets = function(e) {\r\n\t var rows = e.data;\r\n\t if (rows.first != rows.last) {\r\n\t if (this.foldWidgets.length > rows.first)\r\n\t this.foldWidgets.splice(rows.first, this.foldWidgets.length);\r\n\t }\r\n\t };\r\n\t}\r\n\r\n\texports.Folding = Folding;\r\n\r\n\t});\r\n\r\n\tace.define(\"ace/edit_session/bracket_match\",[\"require\",\"exports\",\"module\",\"ace/token_iterator\",\"ace/range\"], function(acequire, exports, module) {\r\n\t\"use strict\";\r\n\r\n\tvar TokenIterator = acequire(\"../token_iterator\").TokenIterator;\r\n\tvar Range = acequire(\"../range\").Range;\r\n\r\n\r\n\tfunction BracketMatch() {\r\n\r\n\t this.findMatchingBracket = function(position, chr) {\r\n\t if (position.column == 0) return null;\r\n\r\n\t var charBeforeCursor = chr || this.getLine(position.row).charAt(position.column-1);\r\n\t if (charBeforeCursor == \"\") return null;\r\n\r\n\t var match = charBeforeCursor.match(/([\\(\\[\\{])|([\\)\\]\\}])/);\r\n\t if (!match)\r\n\t return null;\r\n\r\n\t if (match[1])\r\n\t return this.$findClosingBracket(match[1], position);\r\n\t else\r\n\t return this.$findOpeningBracket(match[2], position);\r\n\t };\r\n\t \r\n\t this.getBracketRange = function(pos) {\r\n\t var line = this.getLine(pos.row);\r\n\t var before = true, range;\r\n\r\n\t var chr = line.charAt(pos.column-1);\r\n\t var match = chr && chr.match(/([\\(\\[\\{])|([\\)\\]\\}])/);\r\n\t if (!match) {\r\n\t chr = line.charAt(pos.column);\r\n\t pos = {row: pos.row, column: pos.column + 1};\r\n\t match = chr && chr.match(/([\\(\\[\\{])|([\\)\\]\\}])/);\r\n\t before = false;\r\n\t }\r\n\t if (!match)\r\n\t return null;\r\n\r\n\t if (match[1]) {\r\n\t var bracketPos = this.$findClosingBracket(match[1], pos);\r\n\t if (!bracketPos)\r\n\t return null;\r\n\t range = Range.fromPoints(pos, bracketPos);\r\n\t if (!before) {\r\n\t range.end.column++;\r\n\t range.start.column--;\r\n\t }\r\n\t range.cursor = range.end;\r\n\t } else {\r\n\t var bracketPos = this.$findOpeningBracket(match[2], pos);\r\n\t if (!bracketPos)\r\n\t return null;\r\n\t range = Range.fromPoints(bracketPos, pos);\r\n\t if (!before) {\r\n\t range.start.column++;\r\n\t range.end.column--;\r\n\t }\r\n\t range.cursor = range.start;\r\n\t }\r\n\t \r\n\t return range;\r\n\t };\r\n\r\n\t this.$brackets = {\r\n\t \")\": \"(\",\r\n\t \"(\": \")\",\r\n\t \"]\": \"[\",\r\n\t \"[\": \"]\",\r\n\t \"{\": \"}\",\r\n\t \"}\": \"{\"\r\n\t };\r\n\r\n\t this.$findOpeningBracket = function(bracket, position, typeRe) {\r\n\t var openBracket = this.$brackets[bracket];\r\n\t var depth = 1;\r\n\r\n\t var iterator = new TokenIterator(this, position.row, position.column);\r\n\t var token = iterator.getCurrentToken();\r\n\t if (!token)\r\n\t token = iterator.stepForward();\r\n\t if (!token)\r\n\t return;\r\n\t \r\n\t if (!typeRe){\r\n\t typeRe = new RegExp(\r\n\t \"(\\\\.?\" +\r\n\t token.type.replace(\".\", \"\\\\.\").replace(\"rparen\", \".paren\")\r\n\t .replace(/\\b(?:end)\\b/, \"(?:start|begin|end)\")\r\n\t + \")+\"\r\n\t );\r\n\t }\r\n\t var valueIndex = position.column - iterator.getCurrentTokenColumn() - 2;\r\n\t var value = token.value;\r\n\t \r\n\t while (true) {\r\n\t \r\n\t while (valueIndex >= 0) {\r\n\t var chr = value.charAt(valueIndex);\r\n\t if (chr == openBracket) {\r\n\t depth -= 1;\r\n\t if (depth == 0) {\r\n\t return {row: iterator.getCurrentTokenRow(),\r\n\t column: valueIndex + iterator.getCurrentTokenColumn()};\r\n\t }\r\n\t }\r\n\t else if (chr == bracket) {\r\n\t depth += 1;\r\n\t }\r\n\t valueIndex -= 1;\r\n\t }\r\n\t do {\r\n\t token = iterator.stepBackward();\r\n\t } while (token && !typeRe.test(token.type));\r\n\r\n\t if (token == null)\r\n\t break;\r\n\t \r\n\t value = token.value;\r\n\t valueIndex = value.length - 1;\r\n\t }\r\n\t \r\n\t return null;\r\n\t };\r\n\r\n\t this.$findClosingBracket = function(bracket, position, typeRe) {\r\n\t var closingBracket = this.$brackets[bracket];\r\n\t var depth = 1;\r\n\r\n\t var iterator = new TokenIterator(this, position.row, position.column);\r\n\t var token = iterator.getCurrentToken();\r\n\t if (!token)\r\n\t token = iterator.stepForward();\r\n\t if (!token)\r\n\t return;\r\n\r\n\t if (!typeRe){\r\n\t typeRe = new RegExp(\r\n\t \"(\\\\.?\" +\r\n\t token.type.replace(\".\", \"\\\\.\").replace(\"lparen\", \".paren\")\r\n\t .replace(/\\b(?:start|begin)\\b/, \"(?:start|begin|end)\")\r\n\t + \")+\"\r\n\t );\r\n\t }\r\n\t var valueIndex = position.column - iterator.getCurrentTokenColumn();\r\n\r\n\t while (true) {\r\n\r\n\t var value = token.value;\r\n\t var valueLength = value.length;\r\n\t while (valueIndex < valueLength) {\r\n\t var chr = value.charAt(valueIndex);\r\n\t if (chr == closingBracket) {\r\n\t depth -= 1;\r\n\t if (depth == 0) {\r\n\t return {row: iterator.getCurrentTokenRow(),\r\n\t column: valueIndex + iterator.getCurrentTokenColumn()};\r\n\t }\r\n\t }\r\n\t else if (chr == bracket) {\r\n\t depth += 1;\r\n\t }\r\n\t valueIndex += 1;\r\n\t }\r\n\t do {\r\n\t token = iterator.stepForward();\r\n\t } while (token && !typeRe.test(token.type));\r\n\r\n\t if (token == null)\r\n\t break;\r\n\r\n\t valueIndex = 0;\r\n\t }\r\n\t \r\n\t return null;\r\n\t };\r\n\t}\r\n\texports.BracketMatch = BracketMatch;\r\n\r\n\t});\r\n\r\n\tace.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(acequire, exports, module) {\r\n\t\"use strict\";\r\n\r\n\tvar oop = acequire(\"./lib/oop\");\r\n\tvar lang = acequire(\"./lib/lang\");\r\n\tvar config = acequire(\"./config\");\r\n\tvar EventEmitter = acequire(\"./lib/event_emitter\").EventEmitter;\r\n\tvar Selection = acequire(\"./selection\").Selection;\r\n\tvar TextMode = acequire(\"./mode/text\").Mode;\r\n\tvar Range = acequire(\"./range\").Range;\r\n\tvar Document = acequire(\"./document\").Document;\r\n\tvar BackgroundTokenizer = acequire(\"./background_tokenizer\").BackgroundTokenizer;\r\n\tvar SearchHighlight = acequire(\"./search_highlight\").SearchHighlight;\r\n\r\n\tvar EditSession = function(text, mode) {\r\n\t this.$breakpoints = [];\r\n\t this.$decorations = [];\r\n\t this.$frontMarkers = {};\r\n\t this.$backMarkers = {};\r\n\t this.$markerId = 1;\r\n\t this.$undoSelect = true;\r\n\r\n\t this.$foldData = [];\r\n\t this.$foldData.toString = function() {\r\n\t return this.join(\"\\n\");\r\n\t };\r\n\t this.on(\"changeFold\", this.onChangeFold.bind(this));\r\n\t this.$onChange = this.onChange.bind(this);\r\n\r\n\t if (typeof text != \"object\" || !text.getLine)\r\n\t text = new Document(text);\r\n\r\n\t this.setDocument(text);\r\n\t this.selection = new Selection(this);\r\n\r\n\t config.resetOptions(this);\r\n\t this.setMode(mode);\r\n\t config._signal(\"session\", this);\r\n\t};\r\n\r\n\r\n\t(function() {\r\n\r\n\t oop.implement(this, EventEmitter);\r\n\t this.setDocument = function(doc) {\r\n\t if (this.doc)\r\n\t this.doc.removeListener(\"change\", this.$onChange);\r\n\r\n\t this.doc = doc;\r\n\t doc.on(\"change\", this.$onChange);\r\n\r\n\t if (this.bgTokenizer)\r\n\t this.bgTokenizer.setDocument(this.getDocument());\r\n\r\n\t this.resetCaches();\r\n\t };\r\n\t this.getDocument = function() {\r\n\t return this.doc;\r\n\t };\r\n\t this.$resetRowCache = function(docRow) {\r\n\t if (!docRow) {\r\n\t this.$docRowCache = [];\r\n\t this.$screenRowCache = [];\r\n\t return;\r\n\t }\r\n\t var l = this.$docRowCache.length;\r\n\t var i = this.$getRowCacheIndex(this.$docRowCache, docRow) + 1;\r\n\t if (l > i) {\r\n\t this.$docRowCache.splice(i, l);\r\n\t this.$screenRowCache.splice(i, l);\r\n\t }\r\n\t };\r\n\r\n\t this.$getRowCacheIndex = function(cacheArray, val) {\r\n\t var low = 0;\r\n\t var hi = cacheArray.length - 1;\r\n\r\n\t while (low <= hi) {\r\n\t var mid = (low + hi) >> 1;\r\n\t var c = cacheArray[mid];\r\n\r\n\t if (val > c)\r\n\t low = mid + 1;\r\n\t else if (val < c)\r\n\t hi = mid - 1;\r\n\t else\r\n\t return mid;\r\n\t }\r\n\r\n\t return low -1;\r\n\t };\r\n\r\n\t this.resetCaches = function() {\r\n\t this.$modified = true;\r\n\t this.$wrapData = [];\r\n\t this.$rowLengthCache = [];\r\n\t this.$resetRowCache(0);\r\n\t if (this.bgTokenizer)\r\n\t this.bgTokenizer.start(0);\r\n\t };\r\n\r\n\t this.onChangeFold = function(e) {\r\n\t var fold = e.data;\r\n\t this.$resetRowCache(fold.start.row);\r\n\t };\r\n\r\n\t this.onChange = function(delta) {\r\n\t this.$modified = true;\r\n\r\n\t this.$resetRowCache(delta.start.row);\r\n\r\n\t var removedFolds = this.$updateInternalDataOnChange(delta);\r\n\t if (!this.$fromUndo && this.$undoManager && !delta.ignore) {\r\n\t this.$deltasDoc.push(delta);\r\n\t if (removedFolds && removedFolds.length != 0) {\r\n\t this.$deltasFold.push({\r\n\t action: \"removeFolds\",\r\n\t folds: removedFolds\r\n\t });\r\n\t }\r\n\r\n\t this.$informUndoManager.schedule();\r\n\t }\r\n\r\n\t this.bgTokenizer && this.bgTokenizer.$updateOnChange(delta);\r\n\t this._signal(\"change\", delta);\r\n\t };\r\n\t this.setValue = function(text) {\r\n\t this.doc.setValue(text);\r\n\t this.selection.moveTo(0, 0);\r\n\r\n\t this.$resetRowCache(0);\r\n\t this.$deltas = [];\r\n\t this.$deltasDoc = [];\r\n\t this.$deltasFold = [];\r\n\t this.setUndoManager(this.$undoManager);\r\n\t this.getUndoManager().reset();\r\n\t };\r\n\t this.getValue =\r\n\t this.toString = function() {\r\n\t return this.doc.getValue();\r\n\t };\r\n\t this.getSelection = function() {\r\n\t return this.selection;\r\n\t };\r\n\t this.getState = function(row) {\r\n\t return this.bgTokenizer.getState(row);\r\n\t };\r\n\t this.getTokens = function(row) {\r\n\t return this.bgTokenizer.getTokens(row);\r\n\t };\r\n\t this.getTokenAt = function(row, column) {\r\n\t var tokens = this.bgTokenizer.getTokens(row);\r\n\t var token, c = 0;\r\n\t if (column == null) {\r\n\t i = tokens.length - 1;\r\n\t c = this.getLine(row).length;\r\n\t } else {\r\n\t for (var i = 0; i < tokens.length; i++) {\r\n\t c += tokens[i].value.length;\r\n\t if (c >= column)\r\n\t break;\r\n\t }\r\n\t }\r\n\t token = tokens[i];\r\n\t if (!token)\r\n\t return null;\r\n\t token.index = i;\r\n\t token.start = c - token.value.length;\r\n\t return token;\r\n\t };\r\n\t this.setUndoManager = function(undoManager) {\r\n\t this.$undoManager = undoManager;\r\n\t this.$deltas = [];\r\n\t this.$deltasDoc = [];\r\n\t this.$deltasFold = [];\r\n\r\n\t if (this.$informUndoManager)\r\n\t this.$informUndoManager.cancel();\r\n\r\n\t if (undoManager) {\r\n\t var self = this;\r\n\r\n\t this.$syncInformUndoManager = function() {\r\n\t self.$informUndoManager.cancel();\r\n\r\n\t if (self.$deltasFold.length) {\r\n\t self.$deltas.push({\r\n\t group: \"fold\",\r\n\t deltas: self.$deltasFold\r\n\t });\r\n\t self.$deltasFold = [];\r\n\t }\r\n\r\n\t if (self.$deltasDoc.length) {\r\n\t self.$deltas.push({\r\n\t group: \"doc\",\r\n\t deltas: self.$deltasDoc\r\n\t });\r\n\t self.$deltasDoc = [];\r\n\t }\r\n\r\n\t if (self.$deltas.length > 0) {\r\n\t undoManager.execute({\r\n\t action: \"aceupdate\",\r\n\t args: [self.$deltas, self],\r\n\t merge: self.mergeUndoDeltas\r\n\t });\r\n\t }\r\n\t self.mergeUndoDeltas = false;\r\n\t self.$deltas = [];\r\n\t };\r\n\t this.$informUndoManager = lang.delayedCall(this.$syncInformUndoManager);\r\n\t }\r\n\t };\r\n\t this.markUndoGroup = function() {\r\n\t if (this.$syncInformUndoManager)\r\n\t this.$syncInformUndoManager();\r\n\t };\r\n\t \r\n\t this.$defaultUndoManager = {\r\n\t undo: function() {},\r\n\t redo: function() {},\r\n\t reset: function() {}\r\n\t };\r\n\t this.getUndoManager = function() {\r\n\t return this.$undoManager || this.$defaultUndoManager;\r\n\t };\r\n\t this.getTabString = function() {\r\n\t if (this.getUseSoftTabs()) {\r\n\t return lang.stringRepeat(\" \", this.getTabSize());\r\n\t } else {\r\n\t return \"\\t\";\r\n\t }\r\n\t };\r\n\t this.setUseSoftTabs = function(val) {\r\n\t this.setOption(\"useSoftTabs\", val);\r\n\t };\r\n\t this.getUseSoftTabs = function() {\r\n\t return this.$useSoftTabs && !this.$mode.$indentWithTabs;\r\n\t };\r\n\t this.setTabSize = function(tabSize) {\r\n\t this.setOption(\"tabSize\", tabSize);\r\n\t };\r\n\t this.getTabSize = function() {\r\n\t return this.$tabSize;\r\n\t };\r\n\t this.isTabStop = function(position) {\r\n\t return this.$useSoftTabs && (position.column % this.$tabSize === 0);\r\n\t };\r\n\r\n\t this.$overwrite = false;\r\n\t this.setOverwrite = function(overwrite) {\r\n\t this.setOption(\"overwrite\", overwrite);\r\n\t };\r\n\t this.getOverwrite = function() {\r\n\t return this.$overwrite;\r\n\t };\r\n\t this.toggleOverwrite = function() {\r\n\t this.setOverwrite(!this.$overwrite);\r\n\t };\r\n\t this.addGutterDecoration = function(row, className) {\r\n\t if (!this.$decorations[row])\r\n\t this.$decorations[row] = \"\";\r\n\t this.$decorations[row] += \" \" + className;\r\n\t this._signal(\"changeBreakpoint\", {});\r\n\t };\r\n\t this.removeGutterDecoration = function(row, className) {\r\n\t this.$decorations[row] = (this.$decorations[row] || \"\").replace(\" \" + className, \"\");\r\n\t this._signal(\"changeBreakpoint\", {});\r\n\t };\r\n\t this.getBreakpoints = function() {\r\n\t return this.$breakpoints;\r\n\t };\r\n\t this.setBreakpoints = function(rows) {\r\n\t this.$breakpoints = [];\r\n\t for (var i=0; i 0)\r\n\t inToken = !!line.charAt(column - 1).match(this.tokenRe);\r\n\r\n\t if (!inToken)\r\n\t inToken = !!line.charAt(column).match(this.tokenRe);\r\n\r\n\t if (inToken)\r\n\t var re = this.tokenRe;\r\n\t else if (/^\\s+$/.test(line.slice(column-1, column+1)))\r\n\t var re = /\\s/;\r\n\t else\r\n\t var re = this.nonTokenRe;\r\n\r\n\t var start = column;\r\n\t if (start > 0) {\r\n\t do {\r\n\t start--;\r\n\t }\r\n\t while (start >= 0 && line.charAt(start).match(re));\r\n\t start++;\r\n\t }\r\n\r\n\t var end = column;\r\n\t while (end < line.length && line.charAt(end).match(re)) {\r\n\t end++;\r\n\t }\r\n\r\n\t return new Range(row, start, row, end);\r\n\t };\r\n\t this.getAWordRange = function(row, column) {\r\n\t var wordRange = this.getWordRange(row, column);\r\n\t var line = this.getLine(wordRange.end.row);\r\n\r\n\t while (line.charAt(wordRange.end.column).match(/[ \\t]/)) {\r\n\t wordRange.end.column += 1;\r\n\t }\r\n\t return wordRange;\r\n\t };\r\n\t this.setNewLineMode = function(newLineMode) {\r\n\t this.doc.setNewLineMode(newLineMode);\r\n\t };\r\n\t this.getNewLineMode = function() {\r\n\t return this.doc.getNewLineMode();\r\n\t };\r\n\t this.setUseWorker = function(useWorker) { this.setOption(\"useWorker\", useWorker); };\r\n\t this.getUseWorker = function() { return this.$useWorker; };\r\n\t this.onReloadTokenizer = function(e) {\r\n\t var rows = e.data;\r\n\t this.bgTokenizer.start(rows.first);\r\n\t this._signal(\"tokenizerUpdate\", e);\r\n\t };\r\n\r\n\t this.$modes = {};\r\n\t this.$mode = null;\r\n\t this.$modeId = null;\r\n\t this.setMode = function(mode, cb) {\r\n\t if (mode && typeof mode === \"object\") {\r\n\t if (mode.getTokenizer)\r\n\t return this.$onChangeMode(mode);\r\n\t var options = mode;\r\n\t var path = options.path;\r\n\t } else {\r\n\t path = mode || \"ace/mode/text\";\r\n\t }\r\n\t if (!this.$modes[\"ace/mode/text\"])\r\n\t this.$modes[\"ace/mode/text\"] = new TextMode();\r\n\r\n\t if (this.$modes[path] && !options) {\r\n\t this.$onChangeMode(this.$modes[path]);\r\n\t cb && cb();\r\n\t return;\r\n\t }\r\n\t this.$modeId = path;\r\n\t config.loadModule([\"mode\", path], function(m) {\r\n\t if (this.$modeId !== path)\r\n\t return cb && cb();\r\n\t if (this.$modes[path] && !options) {\r\n\t this.$onChangeMode(this.$modes[path]);\r\n\t } else if (m && m.Mode) {\r\n\t m = new m.Mode(options);\r\n\t if (!options) {\r\n\t this.$modes[path] = m;\r\n\t m.$id = path;\r\n\t }\r\n\t this.$onChangeMode(m);\r\n\t }\r\n\t cb && cb();\r\n\t }.bind(this));\r\n\t if (!this.$mode)\r\n\t this.$onChangeMode(this.$modes[\"ace/mode/text\"], true);\r\n\t };\r\n\r\n\t this.$onChangeMode = function(mode, $isPlaceholder) {\r\n\t if (!$isPlaceholder)\r\n\t this.$modeId = mode.$id;\r\n\t if (this.$mode === mode) \r\n\t return;\r\n\r\n\t this.$mode = mode;\r\n\r\n\t this.$stopWorker();\r\n\r\n\t if (this.$useWorker)\r\n\t this.$startWorker();\r\n\r\n\t var tokenizer = mode.getTokenizer();\r\n\r\n\t if(tokenizer.addEventListener !== undefined) {\r\n\t var onReloadTokenizer = this.onReloadTokenizer.bind(this);\r\n\t tokenizer.addEventListener(\"update\", onReloadTokenizer);\r\n\t }\r\n\r\n\t if (!this.bgTokenizer) {\r\n\t this.bgTokenizer = new BackgroundTokenizer(tokenizer);\r\n\t var _self = this;\r\n\t this.bgTokenizer.addEventListener(\"update\", function(e) {\r\n\t _self._signal(\"tokenizerUpdate\", e);\r\n\t });\r\n\t } else {\r\n\t this.bgTokenizer.setTokenizer(tokenizer);\r\n\t }\r\n\r\n\t this.bgTokenizer.setDocument(this.getDocument());\r\n\r\n\t this.tokenRe = mode.tokenRe;\r\n\t this.nonTokenRe = mode.nonTokenRe;\r\n\r\n\t \r\n\t if (!$isPlaceholder) {\r\n\t if (mode.attachToSession)\r\n\t mode.attachToSession(this);\r\n\t this.$options.wrapMethod.set.call(this, this.$wrapMethod);\r\n\t this.$setFolding(mode.foldingRules);\r\n\t this.bgTokenizer.start(0);\r\n\t this._emit(\"changeMode\");\r\n\t }\r\n\t };\r\n\r\n\t this.$stopWorker = function() {\r\n\t if (this.$worker) {\r\n\t this.$worker.terminate();\r\n\t this.$worker = null;\r\n\t }\r\n\t };\r\n\r\n\t this.$startWorker = function() {\r\n\t try {\r\n\t this.$worker = this.$mode.createWorker(this);\r\n\t } catch (e) {\r\n\t config.warn(\"Could not load worker\", e);\r\n\t this.$worker = null;\r\n\t }\r\n\t };\r\n\t this.getMode = function() {\r\n\t return this.$mode;\r\n\t };\r\n\r\n\t this.$scrollTop = 0;\r\n\t this.setScrollTop = function(scrollTop) {\r\n\t if (this.$scrollTop === scrollTop || isNaN(scrollTop))\r\n\t return;\r\n\r\n\t this.$scrollTop = scrollTop;\r\n\t this._signal(\"changeScrollTop\", scrollTop);\r\n\t };\r\n\t this.getScrollTop = function() {\r\n\t return this.$scrollTop;\r\n\t };\r\n\r\n\t this.$scrollLeft = 0;\r\n\t this.setScrollLeft = function(scrollLeft) {\r\n\t if (this.$scrollLeft === scrollLeft || isNaN(scrollLeft))\r\n\t return;\r\n\r\n\t this.$scrollLeft = scrollLeft;\r\n\t this._signal(\"changeScrollLeft\", scrollLeft);\r\n\t };\r\n\t this.getScrollLeft = function() {\r\n\t return this.$scrollLeft;\r\n\t };\r\n\t this.getScreenWidth = function() {\r\n\t this.$computeWidth();\r\n\t if (this.lineWidgets) \r\n\t return Math.max(this.getLineWidgetMaxWidth(), this.screenWidth);\r\n\t return this.screenWidth;\r\n\t };\r\n\t \r\n\t this.getLineWidgetMaxWidth = function() {\r\n\t if (this.lineWidgetsWidth != null) return this.lineWidgetsWidth;\r\n\t var width = 0;\r\n\t this.lineWidgets.forEach(function(w) {\r\n\t if (w && w.screenWidth > width)\r\n\t width = w.screenWidth;\r\n\t });\r\n\t return this.lineWidgetWidth = width;\r\n\t };\r\n\r\n\t this.$computeWidth = function(force) {\r\n\t if (this.$modified || force) {\r\n\t this.$modified = false;\r\n\r\n\t if (this.$useWrapMode)\r\n\t return this.screenWidth = this.$wrapLimit;\r\n\r\n\t var lines = this.doc.getAllLines();\r\n\t var cache = this.$rowLengthCache;\r\n\t var longestScreenLine = 0;\r\n\t var foldIndex = 0;\r\n\t var foldLine = this.$foldData[foldIndex];\r\n\t var foldStart = foldLine ? foldLine.start.row : Infinity;\r\n\t var len = lines.length;\r\n\r\n\t for (var i = 0; i < len; i++) {\r\n\t if (i > foldStart) {\r\n\t i = foldLine.end.row + 1;\r\n\t if (i >= len)\r\n\t break;\r\n\t foldLine = this.$foldData[foldIndex++];\r\n\t foldStart = foldLine ? foldLine.start.row : Infinity;\r\n\t }\r\n\r\n\t if (cache[i] == null)\r\n\t cache[i] = this.$getStringScreenWidth(lines[i])[0];\r\n\r\n\t if (cache[i] > longestScreenLine)\r\n\t longestScreenLine = cache[i];\r\n\t }\r\n\t this.screenWidth = longestScreenLine;\r\n\t }\r\n\t };\r\n\t this.getLine = function(row) {\r\n\t return this.doc.getLine(row);\r\n\t };\r\n\t this.getLines = function(firstRow, lastRow) {\r\n\t return this.doc.getLines(firstRow, lastRow);\r\n\t };\r\n\t this.getLength = function() {\r\n\t return this.doc.getLength();\r\n\t };\r\n\t this.getTextRange = function(range) {\r\n\t return this.doc.getTextRange(range || this.selection.getRange());\r\n\t };\r\n\t this.insert = function(position, text) {\r\n\t return this.doc.insert(position, text);\r\n\t };\r\n\t this.remove = function(range) {\r\n\t return this.doc.remove(range);\r\n\t };\r\n\t this.removeFullLines = function(firstRow, lastRow){\r\n\t return this.doc.removeFullLines(firstRow, lastRow);\r\n\t };\r\n\t this.undoChanges = function(deltas, dontSelect) {\r\n\t if (!deltas.length)\r\n\t return;\r\n\r\n\t this.$fromUndo = true;\r\n\t var lastUndoRange = null;\r\n\t for (var i = deltas.length - 1; i != -1; i--) {\r\n\t var delta = deltas[i];\r\n\t if (delta.group == \"doc\") {\r\n\t this.doc.revertDeltas(delta.deltas);\r\n\t lastUndoRange =\r\n\t this.$getUndoSelection(delta.deltas, true, lastUndoRange);\r\n\t } else {\r\n\t delta.deltas.forEach(function(foldDelta) {\r\n\t this.addFolds(foldDelta.folds);\r\n\t }, this);\r\n\t }\r\n\t }\r\n\t this.$fromUndo = false;\r\n\t lastUndoRange &&\r\n\t this.$undoSelect &&\r\n\t !dontSelect &&\r\n\t this.selection.setSelectionRange(lastUndoRange);\r\n\t return lastUndoRange;\r\n\t };\r\n\t this.redoChanges = function(deltas, dontSelect) {\r\n\t if (!deltas.length)\r\n\t return;\r\n\r\n\t this.$fromUndo = true;\r\n\t var lastUndoRange = null;\r\n\t for (var i = 0; i < deltas.length; i++) {\r\n\t var delta = deltas[i];\r\n\t if (delta.group == \"doc\") {\r\n\t this.doc.applyDeltas(delta.deltas);\r\n\t lastUndoRange =\r\n\t this.$getUndoSelection(delta.deltas, false, lastUndoRange);\r\n\t }\r\n\t }\r\n\t this.$fromUndo = false;\r\n\t lastUndoRange &&\r\n\t this.$undoSelect &&\r\n\t !dontSelect &&\r\n\t this.selection.setSelectionRange(lastUndoRange);\r\n\t return lastUndoRange;\r\n\t };\r\n\t this.setUndoSelect = function(enable) {\r\n\t this.$undoSelect = enable;\r\n\t };\r\n\r\n\t this.$getUndoSelection = function(deltas, isUndo, lastUndoRange) {\r\n\t function isInsert(delta) {\r\n\t return isUndo ? delta.action !== \"insert\" : delta.action === \"insert\";\r\n\t }\r\n\r\n\t var delta = deltas[0];\r\n\t var range, point;\r\n\t var lastDeltaIsInsert = false;\r\n\t if (isInsert(delta)) {\r\n\t range = Range.fromPoints(delta.start, delta.end);\r\n\t lastDeltaIsInsert = true;\r\n\t } else {\r\n\t range = Range.fromPoints(delta.start, delta.start);\r\n\t lastDeltaIsInsert = false;\r\n\t }\r\n\r\n\t for (var i = 1; i < deltas.length; i++) {\r\n\t delta = deltas[i];\r\n\t if (isInsert(delta)) {\r\n\t point = delta.start;\r\n\t if (range.compare(point.row, point.column) == -1) {\r\n\t range.setStart(point);\r\n\t }\r\n\t point = delta.end;\r\n\t if (range.compare(point.row, point.column) == 1) {\r\n\t range.setEnd(point);\r\n\t }\r\n\t lastDeltaIsInsert = true;\r\n\t } else {\r\n\t point = delta.start;\r\n\t if (range.compare(point.row, point.column) == -1) {\r\n\t range = Range.fromPoints(delta.start, delta.start);\r\n\t }\r\n\t lastDeltaIsInsert = false;\r\n\t }\r\n\t }\r\n\t if (lastUndoRange != null) {\r\n\t if (Range.comparePoints(lastUndoRange.start, range.start) === 0) {\r\n\t lastUndoRange.start.column += range.end.column - range.start.column;\r\n\t lastUndoRange.end.column += range.end.column - range.start.column;\r\n\t }\r\n\r\n\t var cmp = lastUndoRange.compareRange(range);\r\n\t if (cmp == 1) {\r\n\t range.setStart(lastUndoRange.start);\r\n\t } else if (cmp == -1) {\r\n\t range.setEnd(lastUndoRange.end);\r\n\t }\r\n\t }\r\n\r\n\t return range;\r\n\t };\r\n\t this.replace = function(range, text) {\r\n\t return this.doc.replace(range, text);\r\n\t };\r\n\t this.moveText = function(fromRange, toPosition, copy) {\r\n\t var text = this.getTextRange(fromRange);\r\n\t var folds = this.getFoldsInRange(fromRange);\r\n\r\n\t var toRange = Range.fromPoints(toPosition, toPosition);\r\n\t if (!copy) {\r\n\t this.remove(fromRange);\r\n\t var rowDiff = fromRange.start.row - fromRange.end.row;\r\n\t var collDiff = rowDiff ? -fromRange.end.column : fromRange.start.column - fromRange.end.column;\r\n\t if (collDiff) {\r\n\t if (toRange.start.row == fromRange.end.row && toRange.start.column > fromRange.end.column)\r\n\t toRange.start.column += collDiff;\r\n\t if (toRange.end.row == fromRange.end.row && toRange.end.column > fromRange.end.column)\r\n\t toRange.end.column += collDiff;\r\n\t }\r\n\t if (rowDiff && toRange.start.row >= fromRange.end.row) {\r\n\t toRange.start.row += rowDiff;\r\n\t toRange.end.row += rowDiff;\r\n\t }\r\n\t }\r\n\r\n\t toRange.end = this.insert(toRange.start, text);\r\n\t if (folds.length) {\r\n\t var oldStart = fromRange.start;\r\n\t var newStart = toRange.start;\r\n\t var rowDiff = newStart.row - oldStart.row;\r\n\t var collDiff = newStart.column - oldStart.column;\r\n\t this.addFolds(folds.map(function(x) {\r\n\t x = x.clone();\r\n\t if (x.start.row == oldStart.row)\r\n\t x.start.column += collDiff;\r\n\t if (x.end.row == oldStart.row)\r\n\t x.end.column += collDiff;\r\n\t x.start.row += rowDiff;\r\n\t x.end.row += rowDiff;\r\n\t return x;\r\n\t }));\r\n\t }\r\n\r\n\t return toRange;\r\n\t };\r\n\t this.indentRows = function(startRow, endRow, indentString) {\r\n\t indentString = indentString.replace(/\\t/g, this.getTabString());\r\n\t for (var row=startRow; row<=endRow; row++)\r\n\t this.doc.insertInLine({row: row, column: 0}, indentString);\r\n\t };\r\n\t this.outdentRows = function (range) {\r\n\t var rowRange = range.collapseRows();\r\n\t var deleteRange = new Range(0, 0, 0, 0);\r\n\t var size = this.getTabSize();\r\n\r\n\t for (var i = rowRange.start.row; i <= rowRange.end.row; ++i) {\r\n\t var line = this.getLine(i);\r\n\r\n\t deleteRange.start.row = i;\r\n\t deleteRange.end.row = i;\r\n\t for (var j = 0; j < size; ++j)\r\n\t if (line.charAt(j) != ' ')\r\n\t break;\r\n\t if (j < size && line.charAt(j) == '\\t') {\r\n\t deleteRange.start.column = j;\r\n\t deleteRange.end.column = j + 1;\r\n\t } else {\r\n\t deleteRange.start.column = 0;\r\n\t deleteRange.end.column = j;\r\n\t }\r\n\t this.remove(deleteRange);\r\n\t }\r\n\t };\r\n\r\n\t this.$moveLines = function(firstRow, lastRow, dir) {\r\n\t firstRow = this.getRowFoldStart(firstRow);\r\n\t lastRow = this.getRowFoldEnd(lastRow);\r\n\t if (dir < 0) {\r\n\t var row = this.getRowFoldStart(firstRow + dir);\r\n\t if (row < 0) return 0;\r\n\t var diff = row-firstRow;\r\n\t } else if (dir > 0) {\r\n\t var row = this.getRowFoldEnd(lastRow + dir);\r\n\t if (row > this.doc.getLength()-1) return 0;\r\n\t var diff = row-lastRow;\r\n\t } else {\r\n\t firstRow = this.$clipRowToDocument(firstRow);\r\n\t lastRow = this.$clipRowToDocument(lastRow);\r\n\t var diff = lastRow - firstRow + 1;\r\n\t }\r\n\r\n\t var range = new Range(firstRow, 0, lastRow, Number.MAX_VALUE);\r\n\t var folds = this.getFoldsInRange(range).map(function(x){\r\n\t x = x.clone();\r\n\t x.start.row += diff;\r\n\t x.end.row += diff;\r\n\t return x;\r\n\t });\r\n\t \r\n\t var lines = dir == 0\r\n\t ? this.doc.getLines(firstRow, lastRow)\r\n\t : this.doc.removeFullLines(firstRow, lastRow);\r\n\t this.doc.insertFullLines(firstRow+diff, lines);\r\n\t folds.length && this.addFolds(folds);\r\n\t return diff;\r\n\t };\r\n\t this.moveLinesUp = function(firstRow, lastRow) {\r\n\t return this.$moveLines(firstRow, lastRow, -1);\r\n\t };\r\n\t this.moveLinesDown = function(firstRow, lastRow) {\r\n\t return this.$moveLines(firstRow, lastRow, 1);\r\n\t };\r\n\t this.duplicateLines = function(firstRow, lastRow) {\r\n\t return this.$moveLines(firstRow, lastRow, 0);\r\n\t };\r\n\r\n\r\n\t this.$clipRowToDocument = function(row) {\r\n\t return Math.max(0, Math.min(row, this.doc.getLength()-1));\r\n\t };\r\n\r\n\t this.$clipColumnToRow = function(row, column) {\r\n\t if (column < 0)\r\n\t return 0;\r\n\t return Math.min(this.doc.getLine(row).length, column);\r\n\t };\r\n\r\n\r\n\t this.$clipPositionToDocument = function(row, column) {\r\n\t column = Math.max(0, column);\r\n\r\n\t if (row < 0) {\r\n\t row = 0;\r\n\t column = 0;\r\n\t } else {\r\n\t var len = this.doc.getLength();\r\n\t if (row >= len) {\r\n\t row = len - 1;\r\n\t column = this.doc.getLine(len-1).length;\r\n\t } else {\r\n\t column = Math.min(this.doc.getLine(row).length, column);\r\n\t }\r\n\t }\r\n\r\n\t return {\r\n\t row: row,\r\n\t column: column\r\n\t };\r\n\t };\r\n\r\n\t this.$clipRangeToDocument = function(range) {\r\n\t if (range.start.row < 0) {\r\n\t range.start.row = 0;\r\n\t range.start.column = 0;\r\n\t } else {\r\n\t range.start.column = this.$clipColumnToRow(\r\n\t range.start.row,\r\n\t range.start.column\r\n\t );\r\n\t }\r\n\r\n\t var len = this.doc.getLength() - 1;\r\n\t if (range.end.row > len) {\r\n\t range.end.row = len;\r\n\t range.end.column = this.doc.getLine(len).length;\r\n\t } else {\r\n\t range.end.column = this.$clipColumnToRow(\r\n\t range.end.row,\r\n\t range.end.column\r\n\t );\r\n\t }\r\n\t return range;\r\n\t };\r\n\t this.$wrapLimit = 80;\r\n\t this.$useWrapMode = false;\r\n\t this.$wrapLimitRange = {\r\n\t min : null,\r\n\t max : null\r\n\t };\r\n\t this.setUseWrapMode = function(useWrapMode) {\r\n\t if (useWrapMode != this.$useWrapMode) {\r\n\t this.$useWrapMode = useWrapMode;\r\n\t this.$modified = true;\r\n\t this.$resetRowCache(0);\r\n\t if (useWrapMode) {\r\n\t var len = this.getLength();\r\n\t this.$wrapData = Array(len);\r\n\t this.$updateWrapData(0, len - 1);\r\n\t }\r\n\r\n\t this._signal(\"changeWrapMode\");\r\n\t }\r\n\t };\r\n\t this.getUseWrapMode = function() {\r\n\t return this.$useWrapMode;\r\n\t };\r\n\t this.setWrapLimitRange = function(min, max) {\r\n\t if (this.$wrapLimitRange.min !== min || this.$wrapLimitRange.max !== max) {\r\n\t this.$wrapLimitRange = { min: min, max: max };\r\n\t this.$modified = true;\r\n\t if (this.$useWrapMode)\r\n\t this._signal(\"changeWrapMode\");\r\n\t }\r\n\t };\r\n\t this.adjustWrapLimit = function(desiredLimit, $printMargin) {\r\n\t var limits = this.$wrapLimitRange;\r\n\t if (limits.max < 0)\r\n\t limits = {min: $printMargin, max: $printMargin};\r\n\t var wrapLimit = this.$constrainWrapLimit(desiredLimit, limits.min, limits.max);\r\n\t if (wrapLimit != this.$wrapLimit && wrapLimit > 1) {\r\n\t this.$wrapLimit = wrapLimit;\r\n\t this.$modified = true;\r\n\t if (this.$useWrapMode) {\r\n\t this.$updateWrapData(0, this.getLength() - 1);\r\n\t this.$resetRowCache(0);\r\n\t this._signal(\"changeWrapLimit\");\r\n\t }\r\n\t return true;\r\n\t }\r\n\t return false;\r\n\t };\r\n\r\n\t this.$constrainWrapLimit = function(wrapLimit, min, max) {\r\n\t if (min)\r\n\t wrapLimit = Math.max(min, wrapLimit);\r\n\r\n\t if (max)\r\n\t wrapLimit = Math.min(max, wrapLimit);\r\n\r\n\t return wrapLimit;\r\n\t };\r\n\t this.getWrapLimit = function() {\r\n\t return this.$wrapLimit;\r\n\t };\r\n\t this.setWrapLimit = function (limit) {\r\n\t this.setWrapLimitRange(limit, limit);\r\n\t };\r\n\t this.getWrapLimitRange = function() {\r\n\t return {\r\n\t min : this.$wrapLimitRange.min,\r\n\t max : this.$wrapLimitRange.max\r\n\t };\r\n\t };\r\n\r\n\t this.$updateInternalDataOnChange = function(delta) {\r\n\t var useWrapMode = this.$useWrapMode;\r\n\t var action = delta.action;\r\n\t var start = delta.start;\r\n\t var end = delta.end;\r\n\t var firstRow = start.row;\r\n\t var lastRow = end.row;\r\n\t var len = lastRow - firstRow;\r\n\t var removedFolds = null;\r\n\t \r\n\t this.$updating = true;\r\n\t if (len != 0) {\r\n\t if (action === \"remove\") {\r\n\t this[useWrapMode ? \"$wrapData\" : \"$rowLengthCache\"].splice(firstRow, len);\r\n\r\n\t var foldLines = this.$foldData;\r\n\t removedFolds = this.getFoldsInRange(delta);\r\n\t this.removeFolds(removedFolds);\r\n\r\n\t var foldLine = this.getFoldLine(end.row);\r\n\t var idx = 0;\r\n\t if (foldLine) {\r\n\t foldLine.addRemoveChars(end.row, end.column, start.column - end.column);\r\n\t foldLine.shiftRow(-len);\r\n\r\n\t var foldLineBefore = this.getFoldLine(firstRow);\r\n\t if (foldLineBefore && foldLineBefore !== foldLine) {\r\n\t foldLineBefore.merge(foldLine);\r\n\t foldLine = foldLineBefore;\r\n\t }\r\n\t idx = foldLines.indexOf(foldLine) + 1;\r\n\t }\r\n\r\n\t for (idx; idx < foldLines.length; idx++) {\r\n\t var foldLine = foldLines[idx];\r\n\t if (foldLine.start.row >= end.row) {\r\n\t foldLine.shiftRow(-len);\r\n\t }\r\n\t }\r\n\r\n\t lastRow = firstRow;\r\n\t } else {\r\n\t var args = Array(len);\r\n\t args.unshift(firstRow, 0);\r\n\t var arr = useWrapMode ? this.$wrapData : this.$rowLengthCache\r\n\t arr.splice.apply(arr, args);\r\n\t var foldLines = this.$foldData;\r\n\t var foldLine = this.getFoldLine(firstRow);\r\n\t var idx = 0;\r\n\t if (foldLine) {\r\n\t var cmp = foldLine.range.compareInside(start.row, start.column);\r\n\t if (cmp == 0) {\r\n\t foldLine = foldLine.split(start.row, start.column);\r\n\t if (foldLine) {\r\n\t foldLine.shiftRow(len);\r\n\t foldLine.addRemoveChars(lastRow, 0, end.column - start.column);\r\n\t }\r\n\t } else\r\n\t if (cmp == -1) {\r\n\t foldLine.addRemoveChars(firstRow, 0, end.column - start.column);\r\n\t foldLine.shiftRow(len);\r\n\t }\r\n\t idx = foldLines.indexOf(foldLine) + 1;\r\n\t }\r\n\r\n\t for (idx; idx < foldLines.length; idx++) {\r\n\t var foldLine = foldLines[idx];\r\n\t if (foldLine.start.row >= firstRow) {\r\n\t foldLine.shiftRow(len);\r\n\t }\r\n\t }\r\n\t }\r\n\t } else {\r\n\t len = Math.abs(delta.start.column - delta.end.column);\r\n\t if (action === \"remove\") {\r\n\t removedFolds = this.getFoldsInRange(delta);\r\n\t this.removeFolds(removedFolds);\r\n\r\n\t len = -len;\r\n\t }\r\n\t var foldLine = this.getFoldLine(firstRow);\r\n\t if (foldLine) {\r\n\t foldLine.addRemoveChars(firstRow, start.column, len);\r\n\t }\r\n\t }\r\n\r\n\t if (useWrapMode && this.$wrapData.length != this.doc.getLength()) {\r\n\t console.error(\"doc.getLength() and $wrapData.length have to be the same!\");\r\n\t }\r\n\t this.$updating = false;\r\n\r\n\t if (useWrapMode)\r\n\t this.$updateWrapData(firstRow, lastRow);\r\n\t else\r\n\t this.$updateRowLengthCache(firstRow, lastRow);\r\n\r\n\t return removedFolds;\r\n\t };\r\n\r\n\t this.$updateRowLengthCache = function(firstRow, lastRow, b) {\r\n\t this.$rowLengthCache[firstRow] = null;\r\n\t this.$rowLengthCache[lastRow] = null;\r\n\t };\r\n\r\n\t this.$updateWrapData = function(firstRow, lastRow) {\r\n\t var lines = this.doc.getAllLines();\r\n\t var tabSize = this.getTabSize();\r\n\t var wrapData = this.$wrapData;\r\n\t var wrapLimit = this.$wrapLimit;\r\n\t var tokens;\r\n\t var foldLine;\r\n\r\n\t var row = firstRow;\r\n\t lastRow = Math.min(lastRow, lines.length - 1);\r\n\t while (row <= lastRow) {\r\n\t foldLine = this.getFoldLine(row, foldLine);\r\n\t if (!foldLine) {\r\n\t tokens = this.$getDisplayTokens(lines[row]);\r\n\t wrapData[row] = this.$computeWrapSplits(tokens, wrapLimit, tabSize);\r\n\t row ++;\r\n\t } else {\r\n\t tokens = [];\r\n\t foldLine.walk(function(placeholder, row, column, lastColumn) {\r\n\t var walkTokens;\r\n\t if (placeholder != null) {\r\n\t walkTokens = this.$getDisplayTokens(\r\n\t placeholder, tokens.length);\r\n\t walkTokens[0] = PLACEHOLDER_START;\r\n\t for (var i = 1; i < walkTokens.length; i++) {\r\n\t walkTokens[i] = PLACEHOLDER_BODY;\r\n\t }\r\n\t } else {\r\n\t walkTokens = this.$getDisplayTokens(\r\n\t lines[row].substring(lastColumn, column),\r\n\t tokens.length);\r\n\t }\r\n\t tokens = tokens.concat(walkTokens);\r\n\t }.bind(this),\r\n\t foldLine.end.row,\r\n\t lines[foldLine.end.row].length + 1\r\n\t );\r\n\r\n\t wrapData[foldLine.start.row] = this.$computeWrapSplits(tokens, wrapLimit, tabSize);\r\n\t row = foldLine.end.row + 1;\r\n\t }\r\n\t }\r\n\t };\r\n\t var CHAR = 1,\r\n\t CHAR_EXT = 2,\r\n\t PLACEHOLDER_START = 3,\r\n\t PLACEHOLDER_BODY = 4,\r\n\t PUNCTUATION = 9,\r\n\t SPACE = 10,\r\n\t TAB = 11,\r\n\t TAB_SPACE = 12;\r\n\r\n\r\n\t this.$computeWrapSplits = function(tokens, wrapLimit, tabSize) {\r\n\t if (tokens.length == 0) {\r\n\t return [];\r\n\t }\r\n\r\n\t var splits = [];\r\n\t var displayLength = tokens.length;\r\n\t var lastSplit = 0, lastDocSplit = 0;\r\n\r\n\t var isCode = this.$wrapAsCode;\r\n\r\n\t var indentedSoftWrap = this.$indentedSoftWrap;\r\n\t var maxIndent = wrapLimit <= Math.max(2 * tabSize, 8)\r\n\t || indentedSoftWrap === false ? 0 : Math.floor(wrapLimit / 2);\r\n\r\n\t function getWrapIndent() {\r\n\t var indentation = 0;\r\n\t if (maxIndent === 0)\r\n\t return indentation;\r\n\t if (indentedSoftWrap) {\r\n\t for (var i = 0; i < tokens.length; i++) {\r\n\t var token = tokens[i];\r\n\t if (token == SPACE)\r\n\t indentation += 1;\r\n\t else if (token == TAB)\r\n\t indentation += tabSize;\r\n\t else if (token == TAB_SPACE)\r\n\t continue;\r\n\t else\r\n\t break;\r\n\t }\r\n\t }\r\n\t if (isCode && indentedSoftWrap !== false)\r\n\t indentation += tabSize;\r\n\t return Math.min(indentation, maxIndent);\r\n\t }\r\n\t function addSplit(screenPos) {\r\n\t var displayed = tokens.slice(lastSplit, screenPos);\r\n\t var len = displayed.length;\r\n\t displayed.join(\"\")\r\n\t .replace(/12/g, function() {\r\n\t len -= 1;\r\n\t })\r\n\t .replace(/2/g, function() {\r\n\t len -= 1;\r\n\t });\r\n\r\n\t if (!splits.length) {\r\n\t indent = getWrapIndent();\r\n\t splits.indent = indent;\r\n\t }\r\n\t lastDocSplit += len;\r\n\t splits.push(lastDocSplit);\r\n\t lastSplit = screenPos;\r\n\t }\r\n\t var indent = 0;\r\n\t while (displayLength - lastSplit > wrapLimit - indent) {\r\n\t var split = lastSplit + wrapLimit - indent;\r\n\t if (tokens[split - 1] >= SPACE && tokens[split] >= SPACE) {\r\n\t addSplit(split);\r\n\t continue;\r\n\t }\r\n\t if (tokens[split] == PLACEHOLDER_START || tokens[split] == PLACEHOLDER_BODY) {\r\n\t for (split; split != lastSplit - 1; split--) {\r\n\t if (tokens[split] == PLACEHOLDER_START) {\r\n\t break;\r\n\t }\r\n\t }\r\n\t if (split > lastSplit) {\r\n\t addSplit(split);\r\n\t continue;\r\n\t }\r\n\t split = lastSplit + wrapLimit;\r\n\t for (split; split < tokens.length; split++) {\r\n\t if (tokens[split] != PLACEHOLDER_BODY) {\r\n\t break;\r\n\t }\r\n\t }\r\n\t if (split == tokens.length) {\r\n\t break; // Breaks the while-loop.\r\n\t }\r\n\t addSplit(split);\r\n\t continue;\r\n\t }\r\n\t var minSplit = Math.max(split - (wrapLimit -(wrapLimit>>2)), lastSplit - 1);\r\n\t while (split > minSplit && tokens[split] < PLACEHOLDER_START) {\r\n\t split --;\r\n\t }\r\n\t if (isCode) {\r\n\t while (split > minSplit && tokens[split] < PLACEHOLDER_START) {\r\n\t split --;\r\n\t }\r\n\t while (split > minSplit && tokens[split] == PUNCTUATION) {\r\n\t split --;\r\n\t }\r\n\t } else {\r\n\t while (split > minSplit && tokens[split] < SPACE) {\r\n\t split --;\r\n\t }\r\n\t }\r\n\t if (split > minSplit) {\r\n\t addSplit(++split);\r\n\t continue;\r\n\t }\r\n\t split = lastSplit + wrapLimit;\r\n\t if (tokens[split] == CHAR_EXT)\r\n\t split--;\r\n\t addSplit(split - indent);\r\n\t }\r\n\t return splits;\r\n\t };\r\n\t this.$getDisplayTokens = function(str, offset) {\r\n\t var arr = [];\r\n\t var tabSize;\r\n\t offset = offset || 0;\r\n\r\n\t for (var i = 0; i < str.length; i++) {\r\n\t var c = str.charCodeAt(i);\r\n\t if (c == 9) {\r\n\t tabSize = this.getScreenTabSize(arr.length + offset);\r\n\t arr.push(TAB);\r\n\t for (var n = 1; n < tabSize; n++) {\r\n\t arr.push(TAB_SPACE);\r\n\t }\r\n\t }\r\n\t else if (c == 32) {\r\n\t arr.push(SPACE);\r\n\t } else if((c > 39 && c < 48) || (c > 57 && c < 64)) {\r\n\t arr.push(PUNCTUATION);\r\n\t }\r\n\t else if (c >= 0x1100 && isFullWidth(c)) {\r\n\t arr.push(CHAR, CHAR_EXT);\r\n\t } else {\r\n\t arr.push(CHAR);\r\n\t }\r\n\t }\r\n\t return arr;\r\n\t };\r\n\t this.$getStringScreenWidth = function(str, maxScreenColumn, screenColumn) {\r\n\t if (maxScreenColumn == 0)\r\n\t return [0, 0];\r\n\t if (maxScreenColumn == null)\r\n\t maxScreenColumn = Infinity;\r\n\t screenColumn = screenColumn || 0;\r\n\r\n\t var c, column;\r\n\t for (column = 0; column < str.length; column++) {\r\n\t c = str.charCodeAt(column);\r\n\t if (c == 9) {\r\n\t screenColumn += this.getScreenTabSize(screenColumn);\r\n\t }\r\n\t else if (c >= 0x1100 && isFullWidth(c)) {\r\n\t screenColumn += 2;\r\n\t } else {\r\n\t screenColumn += 1;\r\n\t }\r\n\t if (screenColumn > maxScreenColumn) {\r\n\t break;\r\n\t }\r\n\t }\r\n\r\n\t return [screenColumn, column];\r\n\t };\r\n\r\n\t this.lineWidgets = null;\r\n\t this.getRowLength = function(row) {\r\n\t if (this.lineWidgets)\r\n\t var h = this.lineWidgets[row] && this.lineWidgets[row].rowCount || 0;\r\n\t else \r\n\t h = 0\r\n\t if (!this.$useWrapMode || !this.$wrapData[row]) {\r\n\t return 1 + h;\r\n\t } else {\r\n\t return this.$wrapData[row].length + 1 + h;\r\n\t }\r\n\t };\r\n\t this.getRowLineCount = function(row) {\r\n\t if (!this.$useWrapMode || !this.$wrapData[row]) {\r\n\t return 1;\r\n\t } else {\r\n\t return this.$wrapData[row].length + 1;\r\n\t }\r\n\t };\r\n\r\n\t this.getRowWrapIndent = function(screenRow) {\r\n\t if (this.$useWrapMode) {\r\n\t var pos = this.screenToDocumentPosition(screenRow, Number.MAX_VALUE);\r\n\t var splits = this.$wrapData[pos.row];\r\n\t return splits.length && splits[0] < pos.column ? splits.indent : 0;\r\n\t } else {\r\n\t return 0;\r\n\t }\r\n\t }\r\n\t this.getScreenLastRowColumn = function(screenRow) {\r\n\t var pos = this.screenToDocumentPosition(screenRow, Number.MAX_VALUE);\r\n\t return this.documentToScreenColumn(pos.row, pos.column);\r\n\t };\r\n\t this.getDocumentLastRowColumn = function(docRow, docColumn) {\r\n\t var screenRow = this.documentToScreenRow(docRow, docColumn);\r\n\t return this.getScreenLastRowColumn(screenRow);\r\n\t };\r\n\t this.getDocumentLastRowColumnPosition = function(docRow, docColumn) {\r\n\t var screenRow = this.documentToScreenRow(docRow, docColumn);\r\n\t return this.screenToDocumentPosition(screenRow, Number.MAX_VALUE / 10);\r\n\t };\r\n\t this.getRowSplitData = function(row) {\r\n\t if (!this.$useWrapMode) {\r\n\t return undefined;\r\n\t } else {\r\n\t return this.$wrapData[row];\r\n\t }\r\n\t };\r\n\t this.getScreenTabSize = function(screenColumn) {\r\n\t return this.$tabSize - screenColumn % this.$tabSize;\r\n\t };\r\n\r\n\r\n\t this.screenToDocumentRow = function(screenRow, screenColumn) {\r\n\t return this.screenToDocumentPosition(screenRow, screenColumn).row;\r\n\t };\r\n\r\n\r\n\t this.screenToDocumentColumn = function(screenRow, screenColumn) {\r\n\t return this.screenToDocumentPosition(screenRow, screenColumn).column;\r\n\t };\r\n\t this.screenToDocumentPosition = function(screenRow, screenColumn) {\r\n\t if (screenRow < 0)\r\n\t return {row: 0, column: 0};\r\n\r\n\t var line;\r\n\t var docRow = 0;\r\n\t var docColumn = 0;\r\n\t var column;\r\n\t var row = 0;\r\n\t var rowLength = 0;\r\n\r\n\t var rowCache = this.$screenRowCache;\r\n\t var i = this.$getRowCacheIndex(rowCache, screenRow);\r\n\t var l = rowCache.length;\r\n\t if (l && i >= 0) {\r\n\t var row = rowCache[i];\r\n\t var docRow = this.$docRowCache[i];\r\n\t var doCache = screenRow > rowCache[l - 1];\r\n\t } else {\r\n\t var doCache = !l;\r\n\t }\r\n\r\n\t var maxRow = this.getLength() - 1;\r\n\t var foldLine = this.getNextFoldLine(docRow);\r\n\t var foldStart = foldLine ? foldLine.start.row : Infinity;\r\n\r\n\t while (row <= screenRow) {\r\n\t rowLength = this.getRowLength(docRow);\r\n\t if (row + rowLength > screenRow || docRow >= maxRow) {\r\n\t break;\r\n\t } else {\r\n\t row += rowLength;\r\n\t docRow++;\r\n\t if (docRow > foldStart) {\r\n\t docRow = foldLine.end.row+1;\r\n\t foldLine = this.getNextFoldLine(docRow, foldLine);\r\n\t foldStart = foldLine ? foldLine.start.row : Infinity;\r\n\t }\r\n\t }\r\n\r\n\t if (doCache) {\r\n\t this.$docRowCache.push(docRow);\r\n\t this.$screenRowCache.push(row);\r\n\t }\r\n\t }\r\n\r\n\t if (foldLine && foldLine.start.row <= docRow) {\r\n\t line = this.getFoldDisplayLine(foldLine);\r\n\t docRow = foldLine.start.row;\r\n\t } else if (row + rowLength <= screenRow || docRow > maxRow) {\r\n\t return {\r\n\t row: maxRow,\r\n\t column: this.getLine(maxRow).length\r\n\t };\r\n\t } else {\r\n\t line = this.getLine(docRow);\r\n\t foldLine = null;\r\n\t }\r\n\t var wrapIndent = 0;\r\n\t if (this.$useWrapMode) {\r\n\t var splits = this.$wrapData[docRow];\r\n\t if (splits) {\r\n\t var splitIndex = Math.floor(screenRow - row);\r\n\t column = splits[splitIndex];\r\n\t if(splitIndex > 0 && splits.length) {\r\n\t wrapIndent = splits.indent;\r\n\t docColumn = splits[splitIndex - 1] || splits[splits.length - 1];\r\n\t line = line.substring(docColumn);\r\n\t }\r\n\t }\r\n\t }\r\n\r\n\t docColumn += this.$getStringScreenWidth(line, screenColumn - wrapIndent)[1];\r\n\t if (this.$useWrapMode && docColumn >= column)\r\n\t docColumn = column - 1;\r\n\r\n\t if (foldLine)\r\n\t return foldLine.idxToPosition(docColumn);\r\n\r\n\t return {row: docRow, column: docColumn};\r\n\t };\r\n\t this.documentToScreenPosition = function(docRow, docColumn) {\r\n\t if (typeof docColumn === \"undefined\")\r\n\t var pos = this.$clipPositionToDocument(docRow.row, docRow.column);\r\n\t else\r\n\t pos = this.$clipPositionToDocument(docRow, docColumn);\r\n\r\n\t docRow = pos.row;\r\n\t docColumn = pos.column;\r\n\r\n\t var screenRow = 0;\r\n\t var foldStartRow = null;\r\n\t var fold = null;\r\n\t fold = this.getFoldAt(docRow, docColumn, 1);\r\n\t if (fold) {\r\n\t docRow = fold.start.row;\r\n\t docColumn = fold.start.column;\r\n\t }\r\n\r\n\t var rowEnd, row = 0;\r\n\r\n\r\n\t var rowCache = this.$docRowCache;\r\n\t var i = this.$getRowCacheIndex(rowCache, docRow);\r\n\t var l = rowCache.length;\r\n\t if (l && i >= 0) {\r\n\t var row = rowCache[i];\r\n\t var screenRow = this.$screenRowCache[i];\r\n\t var doCache = docRow > rowCache[l - 1];\r\n\t } else {\r\n\t var doCache = !l;\r\n\t }\r\n\r\n\t var foldLine = this.getNextFoldLine(row);\r\n\t var foldStart = foldLine ?foldLine.start.row :Infinity;\r\n\r\n\t while (row < docRow) {\r\n\t if (row >= foldStart) {\r\n\t rowEnd = foldLine.end.row + 1;\r\n\t if (rowEnd > docRow)\r\n\t break;\r\n\t foldLine = this.getNextFoldLine(rowEnd, foldLine);\r\n\t foldStart = foldLine ?foldLine.start.row :Infinity;\r\n\t }\r\n\t else {\r\n\t rowEnd = row + 1;\r\n\t }\r\n\r\n\t screenRow += this.getRowLength(row);\r\n\t row = rowEnd;\r\n\r\n\t if (doCache) {\r\n\t this.$docRowCache.push(row);\r\n\t this.$screenRowCache.push(screenRow);\r\n\t }\r\n\t }\r\n\t var textLine = \"\";\r\n\t if (foldLine && row >= foldStart) {\r\n\t textLine = this.getFoldDisplayLine(foldLine, docRow, docColumn);\r\n\t foldStartRow = foldLine.start.row;\r\n\t } else {\r\n\t textLine = this.getLine(docRow).substring(0, docColumn);\r\n\t foldStartRow = docRow;\r\n\t }\r\n\t var wrapIndent = 0;\r\n\t if (this.$useWrapMode) {\r\n\t var wrapRow = this.$wrapData[foldStartRow];\r\n\t if (wrapRow) {\r\n\t var screenRowOffset = 0;\r\n\t while (textLine.length >= wrapRow[screenRowOffset]) {\r\n\t screenRow ++;\r\n\t screenRowOffset++;\r\n\t }\r\n\t textLine = textLine.substring(\r\n\t wrapRow[screenRowOffset - 1] || 0, textLine.length\r\n\t );\r\n\t wrapIndent = screenRowOffset > 0 ? wrapRow.indent : 0;\r\n\t }\r\n\t }\r\n\r\n\t return {\r\n\t row: screenRow,\r\n\t column: wrapIndent + this.$getStringScreenWidth(textLine)[0]\r\n\t };\r\n\t };\r\n\t this.documentToScreenColumn = function(row, docColumn) {\r\n\t return this.documentToScreenPosition(row, docColumn).column;\r\n\t };\r\n\t this.documentToScreenRow = function(docRow, docColumn) {\r\n\t return this.documentToScreenPosition(docRow, docColumn).row;\r\n\t };\r\n\t this.getScreenLength = function() {\r\n\t var screenRows = 0;\r\n\t var fold = null;\r\n\t if (!this.$useWrapMode) {\r\n\t screenRows = this.getLength();\r\n\t var foldData = this.$foldData;\r\n\t for (var i = 0; i < foldData.length; i++) {\r\n\t fold = foldData[i];\r\n\t screenRows -= fold.end.row - fold.start.row;\r\n\t }\r\n\t } else {\r\n\t var lastRow = this.$wrapData.length;\r\n\t var row = 0, i = 0;\r\n\t var fold = this.$foldData[i++];\r\n\t var foldStart = fold ? fold.start.row :Infinity;\r\n\r\n\t while (row < lastRow) {\r\n\t var splits = this.$wrapData[row];\r\n\t screenRows += splits ? splits.length + 1 : 1;\r\n\t row ++;\r\n\t if (row > foldStart) {\r\n\t row = fold.end.row+1;\r\n\t fold = this.$foldData[i++];\r\n\t foldStart = fold ?fold.start.row :Infinity;\r\n\t }\r\n\t }\r\n\t }\r\n\t if (this.lineWidgets)\r\n\t screenRows += this.$getWidgetScreenLength();\r\n\r\n\t return screenRows;\r\n\t };\r\n\t this.$setFontMetrics = function(fm) {\r\n\t if (!this.$enableVarChar) return;\r\n\t this.$getStringScreenWidth = function(str, maxScreenColumn, screenColumn) {\r\n\t if (maxScreenColumn === 0)\r\n\t return [0, 0];\r\n\t if (!maxScreenColumn)\r\n\t maxScreenColumn = Infinity;\r\n\t screenColumn = screenColumn || 0;\r\n\t \r\n\t var c, column;\r\n\t for (column = 0; column < str.length; column++) {\r\n\t c = str.charAt(column);\r\n\t if (c === \"\\t\") {\r\n\t screenColumn += this.getScreenTabSize(screenColumn);\r\n\t } else {\r\n\t screenColumn += fm.getCharacterWidth(c);\r\n\t }\r\n\t if (screenColumn > maxScreenColumn) {\r\n\t break;\r\n\t }\r\n\t }\r\n\t \r\n\t return [screenColumn, column];\r\n\t };\r\n\t };\r\n\t \r\n\t this.destroy = function() {\r\n\t if (this.bgTokenizer) {\r\n\t this.bgTokenizer.setDocument(null);\r\n\t this.bgTokenizer = null;\r\n\t }\r\n\t this.$stopWorker();\r\n\t };\r\n\t function isFullWidth(c) {\r\n\t if (c < 0x1100)\r\n\t return false;\r\n\t return c >= 0x1100 && c <= 0x115F ||\r\n\t c >= 0x11A3 && c <= 0x11A7 ||\r\n\t c >= 0x11FA && c <= 0x11FF ||\r\n\t c >= 0x2329 && c <= 0x232A ||\r\n\t c >= 0x2E80 && c <= 0x2E99 ||\r\n\t c >= 0x2E9B && c <= 0x2EF3 ||\r\n\t c >= 0x2F00 && c <= 0x2FD5 ||\r\n\t c >= 0x2FF0 && c <= 0x2FFB ||\r\n\t c >= 0x3000 && c <= 0x303E ||\r\n\t c >= 0x3041 && c <= 0x3096 ||\r\n\t c >= 0x3099 && c <= 0x30FF ||\r\n\t c >= 0x3105 && c <= 0x312D ||\r\n\t c >= 0x3131 && c <= 0x318E ||\r\n\t c >= 0x3190 && c <= 0x31BA ||\r\n\t c >= 0x31C0 && c <= 0x31E3 ||\r\n\t c >= 0x31F0 && c <= 0x321E ||\r\n\t c >= 0x3220 && c <= 0x3247 ||\r\n\t c >= 0x3250 && c <= 0x32FE ||\r\n\t c >= 0x3300 && c <= 0x4DBF ||\r\n\t c >= 0x4E00 && c <= 0xA48C ||\r\n\t c >= 0xA490 && c <= 0xA4C6 ||\r\n\t c >= 0xA960 && c <= 0xA97C ||\r\n\t c >= 0xAC00 && c <= 0xD7A3 ||\r\n\t c >= 0xD7B0 && c <= 0xD7C6 ||\r\n\t c >= 0xD7CB && c <= 0xD7FB ||\r\n\t c >= 0xF900 && c <= 0xFAFF ||\r\n\t c >= 0xFE10 && c <= 0xFE19 ||\r\n\t c >= 0xFE30 && c <= 0xFE52 ||\r\n\t c >= 0xFE54 && c <= 0xFE66 ||\r\n\t c >= 0xFE68 && c <= 0xFE6B ||\r\n\t c >= 0xFF01 && c <= 0xFF60 ||\r\n\t c >= 0xFFE0 && c <= 0xFFE6;\r\n\t }\r\n\r\n\t}).call(EditSession.prototype);\r\n\r\n\tacequire(\"./edit_session/folding\").Folding.call(EditSession.prototype);\r\n\tacequire(\"./edit_session/bracket_match\").BracketMatch.call(EditSession.prototype);\r\n\r\n\r\n\tconfig.defineOptions(EditSession.prototype, \"session\", {\r\n\t wrap: {\r\n\t set: function(value) {\r\n\t if (!value || value == \"off\")\r\n\t value = false;\r\n\t else if (value == \"free\")\r\n\t value = true;\r\n\t else if (value == \"printMargin\")\r\n\t value = -1;\r\n\t else if (typeof value == \"string\")\r\n\t value = parseInt(value, 10) || false;\r\n\r\n\t if (this.$wrap == value)\r\n\t return;\r\n\t this.$wrap = value;\r\n\t if (!value) {\r\n\t this.setUseWrapMode(false);\r\n\t } else {\r\n\t var col = typeof value == \"number\" ? value : null;\r\n\t this.setWrapLimitRange(col, col);\r\n\t this.setUseWrapMode(true);\r\n\t }\r\n\t },\r\n\t get: function() {\r\n\t if (this.getUseWrapMode()) {\r\n\t if (this.$wrap == -1)\r\n\t return \"printMargin\";\r\n\t if (!this.getWrapLimitRange().min)\r\n\t return \"free\";\r\n\t return this.$wrap;\r\n\t }\r\n\t return \"off\";\r\n\t },\r\n\t handlesSet: true\r\n\t }, \r\n\t wrapMethod: {\r\n\t set: function(val) {\r\n\t val = val == \"auto\"\r\n\t ? this.$mode.type != \"text\"\r\n\t : val != \"text\";\r\n\t if (val != this.$wrapAsCode) {\r\n\t this.$wrapAsCode = val;\r\n\t if (this.$useWrapMode) {\r\n\t this.$modified = true;\r\n\t this.$resetRowCache(0);\r\n\t this.$updateWrapData(0, this.getLength() - 1);\r\n\t }\r\n\t }\r\n\t },\r\n\t initialValue: \"auto\"\r\n\t },\r\n\t indentedSoftWrap: { initialValue: true },\r\n\t firstLineNumber: {\r\n\t set: function() {this._signal(\"changeBreakpoint\");},\r\n\t initialValue: 1\r\n\t },\r\n\t useWorker: {\r\n\t set: function(useWorker) {\r\n\t this.$useWorker = useWorker;\r\n\r\n\t this.$stopWorker();\r\n\t if (useWorker)\r\n\t this.$startWorker();\r\n\t },\r\n\t initialValue: true\r\n\t },\r\n\t useSoftTabs: {initialValue: true},\r\n\t tabSize: {\r\n\t set: function(tabSize) {\r\n\t if (isNaN(tabSize) || this.$tabSize === tabSize) return;\r\n\r\n\t this.$modified = true;\r\n\t this.$rowLengthCache = [];\r\n\t this.$tabSize = tabSize;\r\n\t this._signal(\"changeTabSize\");\r\n\t },\r\n\t initialValue: 4,\r\n\t handlesSet: true\r\n\t },\r\n\t overwrite: {\r\n\t set: function(val) {this._signal(\"changeOverwrite\");},\r\n\t initialValue: false\r\n\t },\r\n\t newLineMode: {\r\n\t set: function(val) {this.doc.setNewLineMode(val)},\r\n\t get: function() {return this.doc.getNewLineMode()},\r\n\t handlesSet: true\r\n\t },\r\n\t mode: {\r\n\t set: function(val) { this.setMode(val) },\r\n\t get: function() { return this.$modeId }\r\n\t }\r\n\t});\r\n\r\n\texports.EditSession = EditSession;\r\n\t});\r\n\r\n\tace.define(\"ace/search\",[\"require\",\"exports\",\"module\",\"ace/lib/lang\",\"ace/lib/oop\",\"ace/range\"], function(acequire, exports, module) {\r\n\t\"use strict\";\r\n\r\n\tvar lang = acequire(\"./lib/lang\");\r\n\tvar oop = acequire(\"./lib/oop\");\r\n\tvar Range = acequire(\"./range\").Range;\r\n\r\n\tvar Search = function() {\r\n\t this.$options = {};\r\n\t};\r\n\r\n\t(function() {\r\n\t this.set = function(options) {\r\n\t oop.mixin(this.$options, options);\r\n\t return this;\r\n\t };\r\n\t this.getOptions = function() {\r\n\t return lang.copyObject(this.$options);\r\n\t };\r\n\t this.setOptions = function(options) {\r\n\t this.$options = options;\r\n\t };\r\n\t this.find = function(session) {\r\n\t var options = this.$options;\r\n\t var iterator = this.$matchIterator(session, options);\r\n\t if (!iterator)\r\n\t return false;\r\n\r\n\t var firstRange = null;\r\n\t iterator.forEach(function(range, row, offset) {\r\n\t if (!range.start) {\r\n\t var column = range.offset + (offset || 0);\r\n\t firstRange = new Range(row, column, row, column + range.length);\r\n\t if (!range.length && options.start && options.start.start\r\n\t && options.skipCurrent != false && firstRange.isEqual(options.start)\r\n\t ) {\r\n\t firstRange = null;\r\n\t return false;\r\n\t }\r\n\t } else\r\n\t firstRange = range;\r\n\t return true;\r\n\t });\r\n\r\n\t return firstRange;\r\n\t };\r\n\t this.findAll = function(session) {\r\n\t var options = this.$options;\r\n\t if (!options.needle)\r\n\t return [];\r\n\t this.$assembleRegExp(options);\r\n\r\n\t var range = options.range;\r\n\t var lines = range\r\n\t ? session.getLines(range.start.row, range.end.row)\r\n\t : session.doc.getAllLines();\r\n\r\n\t var ranges = [];\r\n\t var re = options.re;\r\n\t if (options.$isMultiLine) {\r\n\t var len = re.length;\r\n\t var maxRow = lines.length - len;\r\n\t var prevRange;\r\n\t outer: for (var row = re.offset || 0; row <= maxRow; row++) {\r\n\t for (var j = 0; j < len; j++)\r\n\t if (lines[row + j].search(re[j]) == -1)\r\n\t continue outer;\r\n\t \r\n\t var startLine = lines[row];\r\n\t var line = lines[row + len - 1];\r\n\t var startIndex = startLine.length - startLine.match(re[0])[0].length;\r\n\t var endIndex = line.match(re[len - 1])[0].length;\r\n\t \r\n\t if (prevRange && prevRange.end.row === row &&\r\n\t prevRange.end.column > startIndex\r\n\t ) {\r\n\t continue;\r\n\t }\r\n\t ranges.push(prevRange = new Range(\r\n\t row, startIndex, row + len - 1, endIndex\r\n\t ));\r\n\t if (len > 2)\r\n\t row = row + len - 2;\r\n\t }\r\n\t } else {\r\n\t for (var i = 0; i < lines.length; i++) {\r\n\t var matches = lang.getMatchOffsets(lines[i], re);\r\n\t for (var j = 0; j < matches.length; j++) {\r\n\t var match = matches[j];\r\n\t ranges.push(new Range(i, match.offset, i, match.offset + match.length));\r\n\t }\r\n\t }\r\n\t }\r\n\r\n\t if (range) {\r\n\t var startColumn = range.start.column;\r\n\t var endColumn = range.start.column;\r\n\t var i = 0, j = ranges.length - 1;\r\n\t while (i < j && ranges[i].start.column < startColumn && ranges[i].start.row == range.start.row)\r\n\t i++;\r\n\r\n\t while (i < j && ranges[j].end.column > endColumn && ranges[j].end.row == range.end.row)\r\n\t j--;\r\n\t \r\n\t ranges = ranges.slice(i, j + 1);\r\n\t for (i = 0, j = ranges.length; i < j; i++) {\r\n\t ranges[i].start.row += range.start.row;\r\n\t ranges[i].end.row += range.start.row;\r\n\t }\r\n\t }\r\n\r\n\t return ranges;\r\n\t };\r\n\t this.replace = function(input, replacement) {\r\n\t var options = this.$options;\r\n\r\n\t var re = this.$assembleRegExp(options);\r\n\t if (options.$isMultiLine)\r\n\t return replacement;\r\n\r\n\t if (!re)\r\n\t return;\r\n\r\n\t var match = re.exec(input);\r\n\t if (!match || match[0].length != input.length)\r\n\t return null;\r\n\t \r\n\t replacement = input.replace(re, replacement);\r\n\t if (options.preserveCase) {\r\n\t replacement = replacement.split(\"\");\r\n\t for (var i = Math.min(input.length, input.length); i--; ) {\r\n\t var ch = input[i];\r\n\t if (ch && ch.toLowerCase() != ch)\r\n\t replacement[i] = replacement[i].toUpperCase();\r\n\t else\r\n\t replacement[i] = replacement[i].toLowerCase();\r\n\t }\r\n\t replacement = replacement.join(\"\");\r\n\t }\r\n\t \r\n\t return replacement;\r\n\t };\r\n\r\n\t this.$matchIterator = function(session, options) {\r\n\t var re = this.$assembleRegExp(options);\r\n\t if (!re)\r\n\t return false;\r\n\r\n\t var callback;\r\n\t if (options.$isMultiLine) {\r\n\t var len = re.length;\r\n\t var matchIterator = function(line, row, offset) {\r\n\t var startIndex = line.search(re[0]);\r\n\t if (startIndex == -1)\r\n\t return;\r\n\t for (var i = 1; i < len; i++) {\r\n\t line = session.getLine(row + i);\r\n\t if (line.search(re[i]) == -1)\r\n\t return;\r\n\t }\r\n\r\n\t var endIndex = line.match(re[len - 1])[0].length;\r\n\r\n\t var range = new Range(row, startIndex, row + len - 1, endIndex);\r\n\t if (re.offset == 1) {\r\n\t range.start.row--;\r\n\t range.start.column = Number.MAX_VALUE;\r\n\t } else if (offset)\r\n\t range.start.column += offset;\r\n\r\n\t if (callback(range))\r\n\t return true;\r\n\t };\r\n\t } else if (options.backwards) {\r\n\t var matchIterator = function(line, row, startIndex) {\r\n\t var matches = lang.getMatchOffsets(line, re);\r\n\t for (var i = matches.length-1; i >= 0; i--)\r\n\t if (callback(matches[i], row, startIndex))\r\n\t return true;\r\n\t };\r\n\t } else {\r\n\t var matchIterator = function(line, row, startIndex) {\r\n\t var matches = lang.getMatchOffsets(line, re);\r\n\t for (var i = 0; i < matches.length; i++)\r\n\t if (callback(matches[i], row, startIndex))\r\n\t return true;\r\n\t };\r\n\t }\r\n\t \r\n\t var lineIterator = this.$lineIterator(session, options);\r\n\r\n\t return {\r\n\t forEach: function(_callback) {\r\n\t callback = _callback;\r\n\t lineIterator.forEach(matchIterator);\r\n\t }\r\n\t };\r\n\t };\r\n\r\n\t this.$assembleRegExp = function(options, $disableFakeMultiline) {\r\n\t if (options.needle instanceof RegExp)\r\n\t return options.re = options.needle;\r\n\r\n\t var needle = options.needle;\r\n\r\n\t if (!options.needle)\r\n\t return options.re = false;\r\n\r\n\t if (!options.regExp)\r\n\t needle = lang.escapeRegExp(needle);\r\n\r\n\t if (options.wholeWord)\r\n\t needle = \"\\\\b\" + needle + \"\\\\b\";\r\n\r\n\t var modifier = options.caseSensitive ? \"gm\" : \"gmi\";\r\n\r\n\t options.$isMultiLine = !$disableFakeMultiline && /[\\n\\r]/.test(needle);\r\n\t if (options.$isMultiLine)\r\n\t return options.re = this.$assembleMultilineRegExp(needle, modifier);\r\n\r\n\t try {\r\n\t var re = new RegExp(needle, modifier);\r\n\t } catch(e) {\r\n\t re = false;\r\n\t }\r\n\t return options.re = re;\r\n\t };\r\n\r\n\t this.$assembleMultilineRegExp = function(needle, modifier) {\r\n\t var parts = needle.replace(/\\r\\n|\\r|\\n/g, \"$\\n^\").split(\"\\n\");\r\n\t var re = [];\r\n\t for (var i = 0; i < parts.length; i++) try {\r\n\t re.push(new RegExp(parts[i], modifier));\r\n\t } catch(e) {\r\n\t return false;\r\n\t }\r\n\t if (parts[0] == \"\") {\r\n\t re.shift();\r\n\t re.offset = 1;\r\n\t } else {\r\n\t re.offset = 0;\r\n\t }\r\n\t return re;\r\n\t };\r\n\r\n\t this.$lineIterator = function(session, options) {\r\n\t var backwards = options.backwards == true;\r\n\t var skipCurrent = options.skipCurrent != false;\r\n\r\n\t var range = options.range;\r\n\t var start = options.start;\r\n\t if (!start)\r\n\t start = range ? range[backwards ? \"end\" : \"start\"] : session.selection.getRange();\r\n\t \r\n\t if (start.start)\r\n\t start = start[skipCurrent != backwards ? \"end\" : \"start\"];\r\n\r\n\t var firstRow = range ? range.start.row : 0;\r\n\t var lastRow = range ? range.end.row : session.getLength() - 1;\r\n\r\n\t var forEach = backwards ? function(callback) {\r\n\t var row = start.row;\r\n\r\n\t var line = session.getLine(row).substring(0, start.column);\r\n\t if (callback(line, row))\r\n\t return;\r\n\r\n\t for (row--; row >= firstRow; row--)\r\n\t if (callback(session.getLine(row), row))\r\n\t return;\r\n\r\n\t if (options.wrap == false)\r\n\t return;\r\n\r\n\t for (row = lastRow, firstRow = start.row; row >= firstRow; row--)\r\n\t if (callback(session.getLine(row), row))\r\n\t return;\r\n\t } : function(callback) {\r\n\t var row = start.row;\r\n\r\n\t var line = session.getLine(row).substr(start.column);\r\n\t if (callback(line, row, start.column))\r\n\t return;\r\n\r\n\t for (row = row+1; row <= lastRow; row++)\r\n\t if (callback(session.getLine(row), row))\r\n\t return;\r\n\r\n\t if (options.wrap == false)\r\n\t return;\r\n\r\n\t for (row = firstRow, lastRow = start.row; row <= lastRow; row++)\r\n\t if (callback(session.getLine(row), row))\r\n\t return;\r\n\t };\r\n\t \r\n\t return {forEach: forEach};\r\n\t };\r\n\r\n\t}).call(Search.prototype);\r\n\r\n\texports.Search = Search;\r\n\t});\r\n\r\n\tace.define(\"ace/keyboard/hash_handler\",[\"require\",\"exports\",\"module\",\"ace/lib/keys\",\"ace/lib/useragent\"], function(acequire, exports, module) {\r\n\t\"use strict\";\r\n\r\n\tvar keyUtil = acequire(\"../lib/keys\");\r\n\tvar useragent = acequire(\"../lib/useragent\");\r\n\tvar KEY_MODS = keyUtil.KEY_MODS;\r\n\r\n\tfunction HashHandler(config, platform) {\r\n\t this.platform = platform || (useragent.isMac ? \"mac\" : \"win\");\r\n\t this.commands = {};\r\n\t this.commandKeyBinding = {};\r\n\t this.addCommands(config);\r\n\t this.$singleCommand = true;\r\n\t}\r\n\r\n\tfunction MultiHashHandler(config, platform) {\r\n\t HashHandler.call(this, config, platform);\r\n\t this.$singleCommand = false;\r\n\t}\r\n\r\n\tMultiHashHandler.prototype = HashHandler.prototype;\r\n\r\n\t(function() {\r\n\t \r\n\r\n\t this.addCommand = function(command) {\r\n\t if (this.commands[command.name])\r\n\t this.removeCommand(command);\r\n\r\n\t this.commands[command.name] = command;\r\n\r\n\t if (command.bindKey)\r\n\t this._buildKeyHash(command);\r\n\t };\r\n\r\n\t this.removeCommand = function(command, keepCommand) {\r\n\t var name = command && (typeof command === 'string' ? command : command.name);\r\n\t command = this.commands[name];\r\n\t if (!keepCommand)\r\n\t delete this.commands[name];\r\n\t var ckb = this.commandKeyBinding;\r\n\t for (var keyId in ckb) {\r\n\t var cmdGroup = ckb[keyId];\r\n\t if (cmdGroup == command) {\r\n\t delete ckb[keyId];\r\n\t } else if (Array.isArray(cmdGroup)) {\r\n\t var i = cmdGroup.indexOf(command);\r\n\t if (i != -1) {\r\n\t cmdGroup.splice(i, 1);\r\n\t if (cmdGroup.length == 1)\r\n\t ckb[keyId] = cmdGroup[0];\r\n\t }\r\n\t }\r\n\t }\r\n\t };\r\n\r\n\t this.bindKey = function(key, command, position) {\r\n\t if (typeof key == \"object\" && key) {\r\n\t if (position == undefined)\r\n\t position = key.position;\r\n\t key = key[this.platform];\r\n\t }\r\n\t if (!key)\r\n\t return;\r\n\t if (typeof command == \"function\")\r\n\t return this.addCommand({exec: command, bindKey: key, name: command.name || key});\r\n\t \r\n\t key.split(\"|\").forEach(function(keyPart) {\r\n\t var chain = \"\";\r\n\t if (keyPart.indexOf(\" \") != -1) {\r\n\t var parts = keyPart.split(/\\s+/);\r\n\t keyPart = parts.pop();\r\n\t parts.forEach(function(keyPart) {\r\n\t var binding = this.parseKeys(keyPart);\r\n\t var id = KEY_MODS[binding.hashId] + binding.key;\r\n\t chain += (chain ? \" \" : \"\") + id;\r\n\t this._addCommandToBinding(chain, \"chainKeys\");\r\n\t }, this);\r\n\t chain += \" \";\r\n\t }\r\n\t var binding = this.parseKeys(keyPart);\r\n\t var id = KEY_MODS[binding.hashId] + binding.key;\r\n\t this._addCommandToBinding(chain + id, command, position);\r\n\t }, this);\r\n\t };\r\n\t \r\n\t function getPosition(command) {\r\n\t return typeof command == \"object\" && command.bindKey\r\n\t && command.bindKey.position || 0;\r\n\t }\r\n\t this._addCommandToBinding = function(keyId, command, position) {\r\n\t var ckb = this.commandKeyBinding, i;\r\n\t if (!command) {\r\n\t delete ckb[keyId];\r\n\t } else if (!ckb[keyId] || this.$singleCommand) {\r\n\t ckb[keyId] = command;\r\n\t } else {\r\n\t if (!Array.isArray(ckb[keyId])) {\r\n\t ckb[keyId] = [ckb[keyId]];\r\n\t } else if ((i = ckb[keyId].indexOf(command)) != -1) {\r\n\t ckb[keyId].splice(i, 1);\r\n\t }\r\n\r\n\t if (typeof position != \"number\") {\r\n\t if (position || command.isDefault)\r\n\t position = -100;\r\n\t else\r\n\t position = getPosition(command);\r\n\t }\r\n\t var commands = ckb[keyId];\r\n\t for (i = 0; i < commands.length; i++) {\r\n\t var other = commands[i];\r\n\t var otherPos = getPosition(other);\r\n\t if (otherPos > position)\r\n\t break;\r\n\t }\r\n\t commands.splice(i, 0, command);\r\n\t }\r\n\t };\r\n\r\n\t this.addCommands = function(commands) {\r\n\t commands && Object.keys(commands).forEach(function(name) {\r\n\t var command = commands[name];\r\n\t if (!command)\r\n\t return;\r\n\t \r\n\t if (typeof command === \"string\")\r\n\t return this.bindKey(command, name);\r\n\r\n\t if (typeof command === \"function\")\r\n\t command = { exec: command };\r\n\r\n\t if (typeof command !== \"object\")\r\n\t return;\r\n\r\n\t if (!command.name)\r\n\t command.name = name;\r\n\r\n\t this.addCommand(command);\r\n\t }, this);\r\n\t };\r\n\r\n\t this.removeCommands = function(commands) {\r\n\t Object.keys(commands).forEach(function(name) {\r\n\t this.removeCommand(commands[name]);\r\n\t }, this);\r\n\t };\r\n\r\n\t this.bindKeys = function(keyList) {\r\n\t Object.keys(keyList).forEach(function(key) {\r\n\t this.bindKey(key, keyList[key]);\r\n\t }, this);\r\n\t };\r\n\r\n\t this._buildKeyHash = function(command) {\r\n\t this.bindKey(command.bindKey, command);\r\n\t };\r\n\t this.parseKeys = function(keys) {\r\n\t var parts = keys.toLowerCase().split(/[\\-\\+]([\\-\\+])?/).filter(function(x){return x});\r\n\t var key = parts.pop();\r\n\r\n\t var keyCode = keyUtil[key];\r\n\t if (keyUtil.FUNCTION_KEYS[keyCode])\r\n\t key = keyUtil.FUNCTION_KEYS[keyCode].toLowerCase();\r\n\t else if (!parts.length)\r\n\t return {key: key, hashId: -1};\r\n\t else if (parts.length == 1 && parts[0] == \"shift\")\r\n\t return {key: key.toUpperCase(), hashId: -1};\r\n\r\n\t var hashId = 0;\r\n\t for (var i = parts.length; i--;) {\r\n\t var modifier = keyUtil.KEY_MODS[parts[i]];\r\n\t if (modifier == null) {\r\n\t if (typeof console != \"undefined\")\r\n\t console.error(\"invalid modifier \" + parts[i] + \" in \" + keys);\r\n\t return false;\r\n\t }\r\n\t hashId |= modifier;\r\n\t }\r\n\t return {key: key, hashId: hashId};\r\n\t };\r\n\r\n\t this.findKeyCommand = function findKeyCommand(hashId, keyString) {\r\n\t var key = KEY_MODS[hashId] + keyString;\r\n\t return this.commandKeyBinding[key];\r\n\t };\r\n\r\n\t this.handleKeyboard = function(data, hashId, keyString, keyCode) {\r\n\t if (keyCode < 0) return;\r\n\t var key = KEY_MODS[hashId] + keyString;\r\n\t var command = this.commandKeyBinding[key];\r\n\t if (data.$keyChain) {\r\n\t data.$keyChain += \" \" + key;\r\n\t command = this.commandKeyBinding[data.$keyChain] || command;\r\n\t }\r\n\t \r\n\t if (command) {\r\n\t if (command == \"chainKeys\" || command[command.length - 1] == \"chainKeys\") {\r\n\t data.$keyChain = data.$keyChain || key;\r\n\t return {command: \"null\"};\r\n\t }\r\n\t }\r\n\t \r\n\t if (data.$keyChain) {\r\n\t if ((!hashId || hashId == 4) && keyString.length == 1)\r\n\t data.$keyChain = data.$keyChain.slice(0, -key.length - 1); // wait for input\r\n\t else if (hashId == -1 || keyCode > 0)\r\n\t data.$keyChain = \"\"; // reset keyChain\r\n\t }\r\n\t return {command: command};\r\n\t };\r\n\t \r\n\t this.getStatusText = function(editor, data) {\r\n\t return data.$keyChain || \"\";\r\n\t };\r\n\r\n\t}).call(HashHandler.prototype);\r\n\r\n\texports.HashHandler = HashHandler;\r\n\texports.MultiHashHandler = MultiHashHandler;\r\n\t});\r\n\r\n\tace.define(\"ace/commands/command_manager\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/keyboard/hash_handler\",\"ace/lib/event_emitter\"], function(acequire, exports, module) {\r\n\t\"use strict\";\r\n\r\n\tvar oop = acequire(\"../lib/oop\");\r\n\tvar MultiHashHandler = acequire(\"../keyboard/hash_handler\").MultiHashHandler;\r\n\tvar EventEmitter = acequire(\"../lib/event_emitter\").EventEmitter;\r\n\r\n\tvar CommandManager = function(platform, commands) {\r\n\t MultiHashHandler.call(this, commands, platform);\r\n\t this.byName = this.commands;\r\n\t this.setDefaultHandler(\"exec\", function(e) {\r\n\t return e.command.exec(e.editor, e.args || {});\r\n\t });\r\n\t};\r\n\r\n\toop.inherits(CommandManager, MultiHashHandler);\r\n\r\n\t(function() {\r\n\r\n\t oop.implement(this, EventEmitter);\r\n\r\n\t this.exec = function(command, editor, args) {\r\n\t if (Array.isArray(command)) {\r\n\t for (var i = command.length; i--; ) {\r\n\t if (this.exec(command[i], editor, args)) return true;\r\n\t }\r\n\t return false;\r\n\t }\r\n\t \r\n\t if (typeof command === \"string\")\r\n\t command = this.commands[command];\r\n\r\n\t if (!command)\r\n\t return false;\r\n\r\n\t if (editor && editor.$readOnly && !command.readOnly)\r\n\t return false;\r\n\r\n\t var e = {editor: editor, command: command, args: args};\r\n\t e.returnValue = this._emit(\"exec\", e);\r\n\t this._signal(\"afterExec\", e);\r\n\r\n\t return e.returnValue === false ? false : true;\r\n\t };\r\n\r\n\t this.toggleRecording = function(editor) {\r\n\t if (this.$inReplay)\r\n\t return;\r\n\r\n\t editor && editor._emit(\"changeStatus\");\r\n\t if (this.recording) {\r\n\t this.macro.pop();\r\n\t this.removeEventListener(\"exec\", this.$addCommandToMacro);\r\n\r\n\t if (!this.macro.length)\r\n\t this.macro = this.oldMacro;\r\n\r\n\t return this.recording = false;\r\n\t }\r\n\t if (!this.$addCommandToMacro) {\r\n\t this.$addCommandToMacro = function(e) {\r\n\t this.macro.push([e.command, e.args]);\r\n\t }.bind(this);\r\n\t }\r\n\r\n\t this.oldMacro = this.macro;\r\n\t this.macro = [];\r\n\t this.on(\"exec\", this.$addCommandToMacro);\r\n\t return this.recording = true;\r\n\t };\r\n\r\n\t this.replay = function(editor) {\r\n\t if (this.$inReplay || !this.macro)\r\n\t return;\r\n\r\n\t if (this.recording)\r\n\t return this.toggleRecording(editor);\r\n\r\n\t try {\r\n\t this.$inReplay = true;\r\n\t this.macro.forEach(function(x) {\r\n\t if (typeof x == \"string\")\r\n\t this.exec(x, editor);\r\n\t else\r\n\t this.exec(x[0], editor, x[1]);\r\n\t }, this);\r\n\t } finally {\r\n\t this.$inReplay = false;\r\n\t }\r\n\t };\r\n\r\n\t this.trimMacro = function(m) {\r\n\t return m.map(function(x){\r\n\t if (typeof x[0] != \"string\")\r\n\t x[0] = x[0].name;\r\n\t if (!x[1])\r\n\t x = x[0];\r\n\t return x;\r\n\t });\r\n\t };\r\n\r\n\t}).call(CommandManager.prototype);\r\n\r\n\texports.CommandManager = CommandManager;\r\n\r\n\t});\r\n\r\n\tace.define(\"ace/commands/default_commands\",[\"require\",\"exports\",\"module\",\"ace/lib/lang\",\"ace/config\",\"ace/range\"], function(acequire, exports, module) {\r\n\t\"use strict\";\r\n\r\n\tvar lang = acequire(\"../lib/lang\");\r\n\tvar config = acequire(\"../config\");\r\n\tvar Range = acequire(\"../range\").Range;\r\n\r\n\tfunction bindKey(win, mac) {\r\n\t return {win: win, mac: mac};\r\n\t}\r\n\texports.commands = [{\r\n\t name: \"showSettingsMenu\",\r\n\t bindKey: bindKey(\"Ctrl-,\", \"Command-,\"),\r\n\t exec: function(editor) {\r\n\t config.loadModule(\"ace/ext/settings_menu\", function(module) {\r\n\t module.init(editor);\r\n\t editor.showSettingsMenu();\r\n\t });\r\n\t },\r\n\t readOnly: true\r\n\t}, {\r\n\t name: \"goToNextError\",\r\n\t bindKey: bindKey(\"Alt-E\", \"Ctrl-E\"),\r\n\t exec: function(editor) {\r\n\t config.loadModule(\"ace/ext/error_marker\", function(module) {\r\n\t module.showErrorMarker(editor, 1);\r\n\t });\r\n\t },\r\n\t scrollIntoView: \"animate\",\r\n\t readOnly: true\r\n\t}, {\r\n\t name: \"goToPreviousError\",\r\n\t bindKey: bindKey(\"Alt-Shift-E\", \"Ctrl-Shift-E\"),\r\n\t exec: function(editor) {\r\n\t config.loadModule(\"ace/ext/error_marker\", function(module) {\r\n\t module.showErrorMarker(editor, -1);\r\n\t });\r\n\t },\r\n\t scrollIntoView: \"animate\",\r\n\t readOnly: true\r\n\t}, {\r\n\t name: \"selectall\",\r\n\t bindKey: bindKey(\"Ctrl-A\", \"Command-A\"),\r\n\t exec: function(editor) { editor.selectAll(); },\r\n\t readOnly: true\r\n\t}, {\r\n\t name: \"centerselection\",\r\n\t bindKey: bindKey(null, \"Ctrl-L\"),\r\n\t exec: function(editor) { editor.centerSelection(); },\r\n\t readOnly: true\r\n\t}, {\r\n\t name: \"gotoline\",\r\n\t bindKey: bindKey(\"Ctrl-L\", \"Command-L\"),\r\n\t exec: function(editor) {\r\n\t var line = parseInt(prompt(\"Enter line number:\"), 10);\r\n\t if (!isNaN(line)) {\r\n\t editor.gotoLine(line);\r\n\t }\r\n\t },\r\n\t readOnly: true\r\n\t}, {\r\n\t name: \"fold\",\r\n\t bindKey: bindKey(\"Alt-L|Ctrl-F1\", \"Command-Alt-L|Command-F1\"),\r\n\t exec: function(editor) { editor.session.toggleFold(false); },\r\n\t multiSelectAction: \"forEach\",\r\n\t scrollIntoView: \"center\",\r\n\t readOnly: true\r\n\t}, {\r\n\t name: \"unfold\",\r\n\t bindKey: bindKey(\"Alt-Shift-L|Ctrl-Shift-F1\", \"Command-Alt-Shift-L|Command-Shift-F1\"),\r\n\t exec: function(editor) { editor.session.toggleFold(true); },\r\n\t multiSelectAction: \"forEach\",\r\n\t scrollIntoView: \"center\",\r\n\t readOnly: true\r\n\t}, {\r\n\t name: \"toggleFoldWidget\",\r\n\t bindKey: bindKey(\"F2\", \"F2\"),\r\n\t exec: function(editor) { editor.session.toggleFoldWidget(); },\r\n\t multiSelectAction: \"forEach\",\r\n\t scrollIntoView: \"center\",\r\n\t readOnly: true\r\n\t}, {\r\n\t name: \"toggleParentFoldWidget\",\r\n\t bindKey: bindKey(\"Alt-F2\", \"Alt-F2\"),\r\n\t exec: function(editor) { editor.session.toggleFoldWidget(true); },\r\n\t multiSelectAction: \"forEach\",\r\n\t scrollIntoView: \"center\",\r\n\t readOnly: true\r\n\t}, {\r\n\t name: \"foldall\",\r\n\t bindKey: bindKey(null, \"Ctrl-Command-Option-0\"),\r\n\t exec: function(editor) { editor.session.foldAll(); },\r\n\t scrollIntoView: \"center\",\r\n\t readOnly: true\r\n\t}, {\r\n\t name: \"foldOther\",\r\n\t bindKey: bindKey(\"Alt-0\", \"Command-Option-0\"),\r\n\t exec: function(editor) { \r\n\t editor.session.foldAll();\r\n\t editor.session.unfold(editor.selection.getAllRanges());\r\n\t },\r\n\t scrollIntoView: \"center\",\r\n\t readOnly: true\r\n\t}, {\r\n\t name: \"unfoldall\",\r\n\t bindKey: bindKey(\"Alt-Shift-0\", \"Command-Option-Shift-0\"),\r\n\t exec: function(editor) { editor.session.unfold(); },\r\n\t scrollIntoView: \"center\",\r\n\t readOnly: true\r\n\t}, {\r\n\t name: \"findnext\",\r\n\t bindKey: bindKey(\"Ctrl-K\", \"Command-G\"),\r\n\t exec: function(editor) { editor.findNext(); },\r\n\t multiSelectAction: \"forEach\",\r\n\t scrollIntoView: \"center\",\r\n\t readOnly: true\r\n\t}, {\r\n\t name: \"findprevious\",\r\n\t bindKey: bindKey(\"Ctrl-Shift-K\", \"Command-Shift-G\"),\r\n\t exec: function(editor) { editor.findPrevious(); },\r\n\t multiSelectAction: \"forEach\",\r\n\t scrollIntoView: \"center\",\r\n\t readOnly: true\r\n\t}, {\r\n\t name: \"selectOrFindNext\",\r\n\t bindKey: bindKey(\"Alt-K\", \"Ctrl-G\"),\r\n\t exec: function(editor) {\r\n\t if (editor.selection.isEmpty())\r\n\t editor.selection.selectWord();\r\n\t else\r\n\t editor.findNext(); \r\n\t },\r\n\t readOnly: true\r\n\t}, {\r\n\t name: \"selectOrFindPrevious\",\r\n\t bindKey: bindKey(\"Alt-Shift-K\", \"Ctrl-Shift-G\"),\r\n\t exec: function(editor) { \r\n\t if (editor.selection.isEmpty())\r\n\t editor.selection.selectWord();\r\n\t else\r\n\t editor.findPrevious();\r\n\t },\r\n\t readOnly: true\r\n\t}, {\r\n\t name: \"find\",\r\n\t bindKey: bindKey(\"Ctrl-F\", \"Command-F\"),\r\n\t exec: function(editor) {\r\n\t config.loadModule(\"ace/ext/searchbox\", function(e) {e.Search(editor)});\r\n\t },\r\n\t readOnly: true\r\n\t}, {\r\n\t name: \"overwrite\",\r\n\t bindKey: \"Insert\",\r\n\t exec: function(editor) { editor.toggleOverwrite(); },\r\n\t readOnly: true\r\n\t}, {\r\n\t name: \"selecttostart\",\r\n\t bindKey: bindKey(\"Ctrl-Shift-Home\", \"Command-Shift-Up\"),\r\n\t exec: function(editor) { editor.getSelection().selectFileStart(); },\r\n\t multiSelectAction: \"forEach\",\r\n\t readOnly: true,\r\n\t scrollIntoView: \"animate\",\r\n\t aceCommandGroup: \"fileJump\"\r\n\t}, {\r\n\t name: \"gotostart\",\r\n\t bindKey: bindKey(\"Ctrl-Home\", \"Command-Home|Command-Up\"),\r\n\t exec: function(editor) { editor.navigateFileStart(); },\r\n\t multiSelectAction: \"forEach\",\r\n\t readOnly: true,\r\n\t scrollIntoView: \"animate\",\r\n\t aceCommandGroup: \"fileJump\"\r\n\t}, {\r\n\t name: \"selectup\",\r\n\t bindKey: bindKey(\"Shift-Up\", \"Shift-Up\"),\r\n\t exec: function(editor) { editor.getSelection().selectUp(); },\r\n\t multiSelectAction: \"forEach\",\r\n\t scrollIntoView: \"cursor\",\r\n\t readOnly: true\r\n\t}, {\r\n\t name: \"golineup\",\r\n\t bindKey: bindKey(\"Up\", \"Up|Ctrl-P\"),\r\n\t exec: function(editor, args) { editor.navigateUp(args.times); },\r\n\t multiSelectAction: \"forEach\",\r\n\t scrollIntoView: \"cursor\",\r\n\t readOnly: true\r\n\t}, {\r\n\t name: \"selecttoend\",\r\n\t bindKey: bindKey(\"Ctrl-Shift-End\", \"Command-Shift-Down\"),\r\n\t exec: function(editor) { editor.getSelection().selectFileEnd(); },\r\n\t multiSelectAction: \"forEach\",\r\n\t readOnly: true,\r\n\t scrollIntoView: \"animate\",\r\n\t aceCommandGroup: \"fileJump\"\r\n\t}, {\r\n\t name: \"gotoend\",\r\n\t bindKey: bindKey(\"Ctrl-End\", \"Command-End|Command-Down\"),\r\n\t exec: function(editor) { editor.navigateFileEnd(); },\r\n\t multiSelectAction: \"forEach\",\r\n\t readOnly: true,\r\n\t scrollIntoView: \"animate\",\r\n\t aceCommandGroup: \"fileJump\"\r\n\t}, {\r\n\t name: \"selectdown\",\r\n\t bindKey: bindKey(\"Shift-Down\", \"Shift-Down\"),\r\n\t exec: function(editor) { editor.getSelection().selectDown(); },\r\n\t multiSelectAction: \"forEach\",\r\n\t scrollIntoView: \"cursor\",\r\n\t readOnly: true\r\n\t}, {\r\n\t name: \"golinedown\",\r\n\t bindKey: bindKey(\"Down\", \"Down|Ctrl-N\"),\r\n\t exec: function(editor, args) { editor.navigateDown(args.times); },\r\n\t multiSelectAction: \"forEach\",\r\n\t scrollIntoView: \"cursor\",\r\n\t readOnly: true\r\n\t}, {\r\n\t name: \"selectwordleft\",\r\n\t bindKey: bindKey(\"Ctrl-Shift-Left\", \"Option-Shift-Left\"),\r\n\t exec: function(editor) { editor.getSelection().selectWordLeft(); },\r\n\t multiSelectAction: \"forEach\",\r\n\t scrollIntoView: \"cursor\",\r\n\t readOnly: true\r\n\t}, {\r\n\t name: \"gotowordleft\",\r\n\t bindKey: bindKey(\"Ctrl-Left\", \"Option-Left\"),\r\n\t exec: function(editor) { editor.navigateWordLeft(); },\r\n\t multiSelectAction: \"forEach\",\r\n\t scrollIntoView: \"cursor\",\r\n\t readOnly: true\r\n\t}, {\r\n\t name: \"selecttolinestart\",\r\n\t bindKey: bindKey(\"Alt-Shift-Left\", \"Command-Shift-Left\"),\r\n\t exec: function(editor) { editor.getSelection().selectLineStart(); },\r\n\t multiSelectAction: \"forEach\",\r\n\t scrollIntoView: \"cursor\",\r\n\t readOnly: true\r\n\t}, {\r\n\t name: \"gotolinestart\",\r\n\t bindKey: bindKey(\"Alt-Left|Home\", \"Command-Left|Home|Ctrl-A\"),\r\n\t exec: function(editor) { editor.navigateLineStart(); },\r\n\t multiSelectAction: \"forEach\",\r\n\t scrollIntoView: \"cursor\",\r\n\t readOnly: true\r\n\t}, {\r\n\t name: \"selectleft\",\r\n\t bindKey: bindKey(\"Shift-Left\", \"Shift-Left\"),\r\n\t exec: function(editor) { editor.getSelection().selectLeft(); },\r\n\t multiSelectAction: \"forEach\",\r\n\t scrollIntoView: \"cursor\",\r\n\t readOnly: true\r\n\t}, {\r\n\t name: \"gotoleft\",\r\n\t bindKey: bindKey(\"Left\", \"Left|Ctrl-B\"),\r\n\t exec: function(editor, args) { editor.navigateLeft(args.times); },\r\n\t multiSelectAction: \"forEach\",\r\n\t scrollIntoView: \"cursor\",\r\n\t readOnly: true\r\n\t}, {\r\n\t name: \"selectwordright\",\r\n\t bindKey: bindKey(\"Ctrl-Shift-Right\", \"Option-Shift-Right\"),\r\n\t exec: function(editor) { editor.getSelection().selectWordRight(); },\r\n\t multiSelectAction: \"forEach\",\r\n\t scrollIntoView: \"cursor\",\r\n\t readOnly: true\r\n\t}, {\r\n\t name: \"gotowordright\",\r\n\t bindKey: bindKey(\"Ctrl-Right\", \"Option-Right\"),\r\n\t exec: function(editor) { editor.navigateWordRight(); },\r\n\t multiSelectAction: \"forEach\",\r\n\t scrollIntoView: \"cursor\",\r\n\t readOnly: true\r\n\t}, {\r\n\t name: \"selecttolineend\",\r\n\t bindKey: bindKey(\"Alt-Shift-Right\", \"Command-Shift-Right\"),\r\n\t exec: function(editor) { editor.getSelection().selectLineEnd(); },\r\n\t multiSelectAction: \"forEach\",\r\n\t scrollIntoView: \"cursor\",\r\n\t readOnly: true\r\n\t}, {\r\n\t name: \"gotolineend\",\r\n\t bindKey: bindKey(\"Alt-Right|End\", \"Command-Right|End|Ctrl-E\"),\r\n\t exec: function(editor) { editor.navigateLineEnd(); },\r\n\t multiSelectAction: \"forEach\",\r\n\t scrollIntoView: \"cursor\",\r\n\t readOnly: true\r\n\t}, {\r\n\t name: \"selectright\",\r\n\t bindKey: bindKey(\"Shift-Right\", \"Shift-Right\"),\r\n\t exec: function(editor) { editor.getSelection().selectRight(); },\r\n\t multiSelectAction: \"forEach\",\r\n\t scrollIntoView: \"cursor\",\r\n\t readOnly: true\r\n\t}, {\r\n\t name: \"gotoright\",\r\n\t bindKey: bindKey(\"Right\", \"Right|Ctrl-F\"),\r\n\t exec: function(editor, args) { editor.navigateRight(args.times); },\r\n\t multiSelectAction: \"forEach\",\r\n\t scrollIntoView: \"cursor\",\r\n\t readOnly: true\r\n\t}, {\r\n\t name: \"selectpagedown\",\r\n\t bindKey: \"Shift-PageDown\",\r\n\t exec: function(editor) { editor.selectPageDown(); },\r\n\t readOnly: true\r\n\t}, {\r\n\t name: \"pagedown\",\r\n\t bindKey: bindKey(null, \"Option-PageDown\"),\r\n\t exec: function(editor) { editor.scrollPageDown(); },\r\n\t readOnly: true\r\n\t}, {\r\n\t name: \"gotopagedown\",\r\n\t bindKey: bindKey(\"PageDown\", \"PageDown|Ctrl-V\"),\r\n\t exec: function(editor) { editor.gotoPageDown(); },\r\n\t readOnly: true\r\n\t}, {\r\n\t name: \"selectpageup\",\r\n\t bindKey: \"Shift-PageUp\",\r\n\t exec: function(editor) { editor.selectPageUp(); },\r\n\t readOnly: true\r\n\t}, {\r\n\t name: \"pageup\",\r\n\t bindKey: bindKey(null, \"Option-PageUp\"),\r\n\t exec: function(editor) { editor.scrollPageUp(); },\r\n\t readOnly: true\r\n\t}, {\r\n\t name: \"gotopageup\",\r\n\t bindKey: \"PageUp\",\r\n\t exec: function(editor) { editor.gotoPageUp(); },\r\n\t readOnly: true\r\n\t}, {\r\n\t name: \"scrollup\",\r\n\t bindKey: bindKey(\"Ctrl-Up\", null),\r\n\t exec: function(e) { e.renderer.scrollBy(0, -2 * e.renderer.layerConfig.lineHeight); },\r\n\t readOnly: true\r\n\t}, {\r\n\t name: \"scrolldown\",\r\n\t bindKey: bindKey(\"Ctrl-Down\", null),\r\n\t exec: function(e) { e.renderer.scrollBy(0, 2 * e.renderer.layerConfig.lineHeight); },\r\n\t readOnly: true\r\n\t}, {\r\n\t name: \"selectlinestart\",\r\n\t bindKey: \"Shift-Home\",\r\n\t exec: function(editor) { editor.getSelection().selectLineStart(); },\r\n\t multiSelectAction: \"forEach\",\r\n\t scrollIntoView: \"cursor\",\r\n\t readOnly: true\r\n\t}, {\r\n\t name: \"selectlineend\",\r\n\t bindKey: \"Shift-End\",\r\n\t exec: function(editor) { editor.getSelection().selectLineEnd(); },\r\n\t multiSelectAction: \"forEach\",\r\n\t scrollIntoView: \"cursor\",\r\n\t readOnly: true\r\n\t}, {\r\n\t name: \"togglerecording\",\r\n\t bindKey: bindKey(\"Ctrl-Alt-E\", \"Command-Option-E\"),\r\n\t exec: function(editor) { editor.commands.toggleRecording(editor); },\r\n\t readOnly: true\r\n\t}, {\r\n\t name: \"replaymacro\",\r\n\t bindKey: bindKey(\"Ctrl-Shift-E\", \"Command-Shift-E\"),\r\n\t exec: function(editor) { editor.commands.replay(editor); },\r\n\t readOnly: true\r\n\t}, {\r\n\t name: \"jumptomatching\",\r\n\t bindKey: bindKey(\"Ctrl-P\", \"Ctrl-P\"),\r\n\t exec: function(editor) { editor.jumpToMatching(); },\r\n\t multiSelectAction: \"forEach\",\r\n\t scrollIntoView: \"animate\",\r\n\t readOnly: true\r\n\t}, {\r\n\t name: \"selecttomatching\",\r\n\t bindKey: bindKey(\"Ctrl-Shift-P\", \"Ctrl-Shift-P\"),\r\n\t exec: function(editor) { editor.jumpToMatching(true); },\r\n\t multiSelectAction: \"forEach\",\r\n\t scrollIntoView: \"animate\",\r\n\t readOnly: true\r\n\t}, {\r\n\t name: \"expandToMatching\",\r\n\t bindKey: bindKey(\"Ctrl-Shift-M\", \"Ctrl-Shift-M\"),\r\n\t exec: function(editor) { editor.jumpToMatching(true, true); },\r\n\t multiSelectAction: \"forEach\",\r\n\t scrollIntoView: \"animate\",\r\n\t readOnly: true\r\n\t}, {\r\n\t name: \"passKeysToBrowser\",\r\n\t bindKey: bindKey(null, null),\r\n\t exec: function() {},\r\n\t passEvent: true,\r\n\t readOnly: true\r\n\t}, {\r\n\t name: \"copy\",\r\n\t exec: function(editor) {\r\n\t },\r\n\t readOnly: true\r\n\t},\r\n\t{\r\n\t name: \"cut\",\r\n\t exec: function(editor) {\r\n\t var range = editor.getSelectionRange();\r\n\t editor._emit(\"cut\", range);\r\n\r\n\t if (!editor.selection.isEmpty()) {\r\n\t editor.session.remove(range);\r\n\t editor.clearSelection();\r\n\t }\r\n\t },\r\n\t scrollIntoView: \"cursor\",\r\n\t multiSelectAction: \"forEach\"\r\n\t}, {\r\n\t name: \"paste\",\r\n\t exec: function(editor, args) {\r\n\t editor.$handlePaste(args);\r\n\t },\r\n\t scrollIntoView: \"cursor\"\r\n\t}, {\r\n\t name: \"removeline\",\r\n\t bindKey: bindKey(\"Ctrl-D\", \"Command-D\"),\r\n\t exec: function(editor) { editor.removeLines(); },\r\n\t scrollIntoView: \"cursor\",\r\n\t multiSelectAction: \"forEachLine\"\r\n\t}, {\r\n\t name: \"duplicateSelection\",\r\n\t bindKey: bindKey(\"Ctrl-Shift-D\", \"Command-Shift-D\"),\r\n\t exec: function(editor) { editor.duplicateSelection(); },\r\n\t scrollIntoView: \"cursor\",\r\n\t multiSelectAction: \"forEach\"\r\n\t}, {\r\n\t name: \"sortlines\",\r\n\t bindKey: bindKey(\"Ctrl-Alt-S\", \"Command-Alt-S\"),\r\n\t exec: function(editor) { editor.sortLines(); },\r\n\t scrollIntoView: \"selection\",\r\n\t multiSelectAction: \"forEachLine\"\r\n\t}, {\r\n\t name: \"togglecomment\",\r\n\t bindKey: bindKey(\"Ctrl-/\", \"Command-/\"),\r\n\t exec: function(editor) { editor.toggleCommentLines(); },\r\n\t multiSelectAction: \"forEachLine\",\r\n\t scrollIntoView: \"selectionPart\"\r\n\t}, {\r\n\t name: \"toggleBlockComment\",\r\n\t bindKey: bindKey(\"Ctrl-Shift-/\", \"Command-Shift-/\"),\r\n\t exec: function(editor) { editor.toggleBlockComment(); },\r\n\t multiSelectAction: \"forEach\",\r\n\t scrollIntoView: \"selectionPart\"\r\n\t}, {\r\n\t name: \"modifyNumberUp\",\r\n\t bindKey: bindKey(\"Ctrl-Shift-Up\", \"Alt-Shift-Up\"),\r\n\t exec: function(editor) { editor.modifyNumber(1); },\r\n\t scrollIntoView: \"cursor\",\r\n\t multiSelectAction: \"forEach\"\r\n\t}, {\r\n\t name: \"modifyNumberDown\",\r\n\t bindKey: bindKey(\"Ctrl-Shift-Down\", \"Alt-Shift-Down\"),\r\n\t exec: function(editor) { editor.modifyNumber(-1); },\r\n\t scrollIntoView: \"cursor\",\r\n\t multiSelectAction: \"forEach\"\r\n\t}, {\r\n\t name: \"replace\",\r\n\t bindKey: bindKey(\"Ctrl-H\", \"Command-Option-F\"),\r\n\t exec: function(editor) {\r\n\t config.loadModule(\"ace/ext/searchbox\", function(e) {e.Search(editor, true)});\r\n\t }\r\n\t}, {\r\n\t name: \"undo\",\r\n\t bindKey: bindKey(\"Ctrl-Z\", \"Command-Z\"),\r\n\t exec: function(editor) { editor.undo(); }\r\n\t}, {\r\n\t name: \"redo\",\r\n\t bindKey: bindKey(\"Ctrl-Shift-Z|Ctrl-Y\", \"Command-Shift-Z|Command-Y\"),\r\n\t exec: function(editor) { editor.redo(); }\r\n\t}, {\r\n\t name: \"copylinesup\",\r\n\t bindKey: bindKey(\"Alt-Shift-Up\", \"Command-Option-Up\"),\r\n\t exec: function(editor) { editor.copyLinesUp(); },\r\n\t scrollIntoView: \"cursor\"\r\n\t}, {\r\n\t name: \"movelinesup\",\r\n\t bindKey: bindKey(\"Alt-Up\", \"Option-Up\"),\r\n\t exec: function(editor) { editor.moveLinesUp(); },\r\n\t scrollIntoView: \"cursor\"\r\n\t}, {\r\n\t name: \"copylinesdown\",\r\n\t bindKey: bindKey(\"Alt-Shift-Down\", \"Command-Option-Down\"),\r\n\t exec: function(editor) { editor.copyLinesDown(); },\r\n\t scrollIntoView: \"cursor\"\r\n\t}, {\r\n\t name: \"movelinesdown\",\r\n\t bindKey: bindKey(\"Alt-Down\", \"Option-Down\"),\r\n\t exec: function(editor) { editor.moveLinesDown(); },\r\n\t scrollIntoView: \"cursor\"\r\n\t}, {\r\n\t name: \"del\",\r\n\t bindKey: bindKey(\"Delete\", \"Delete|Ctrl-D|Shift-Delete\"),\r\n\t exec: function(editor) { editor.remove(\"right\"); },\r\n\t multiSelectAction: \"forEach\",\r\n\t scrollIntoView: \"cursor\"\r\n\t}, {\r\n\t name: \"backspace\",\r\n\t bindKey: bindKey(\r\n\t \"Shift-Backspace|Backspace\",\r\n\t \"Ctrl-Backspace|Shift-Backspace|Backspace|Ctrl-H\"\r\n\t ),\r\n\t exec: function(editor) { editor.remove(\"left\"); },\r\n\t multiSelectAction: \"forEach\",\r\n\t scrollIntoView: \"cursor\"\r\n\t}, {\r\n\t name: \"cut_or_delete\",\r\n\t bindKey: bindKey(\"Shift-Delete\", null),\r\n\t exec: function(editor) { \r\n\t if (editor.selection.isEmpty()) {\r\n\t editor.remove(\"left\");\r\n\t } else {\r\n\t return false;\r\n\t }\r\n\t },\r\n\t multiSelectAction: \"forEach\",\r\n\t scrollIntoView: \"cursor\"\r\n\t}, {\r\n\t name: \"removetolinestart\",\r\n\t bindKey: bindKey(\"Alt-Backspace\", \"Command-Backspace\"),\r\n\t exec: function(editor) { editor.removeToLineStart(); },\r\n\t multiSelectAction: \"forEach\",\r\n\t scrollIntoView: \"cursor\"\r\n\t}, {\r\n\t name: \"removetolineend\",\r\n\t bindKey: bindKey(\"Alt-Delete\", \"Ctrl-K\"),\r\n\t exec: function(editor) { editor.removeToLineEnd(); },\r\n\t multiSelectAction: \"forEach\",\r\n\t scrollIntoView: \"cursor\"\r\n\t}, {\r\n\t name: \"removewordleft\",\r\n\t bindKey: bindKey(\"Ctrl-Backspace\", \"Alt-Backspace|Ctrl-Alt-Backspace\"),\r\n\t exec: function(editor) { editor.removeWordLeft(); },\r\n\t multiSelectAction: \"forEach\",\r\n\t scrollIntoView: \"cursor\"\r\n\t}, {\r\n\t name: \"removewordright\",\r\n\t bindKey: bindKey(\"Ctrl-Delete\", \"Alt-Delete\"),\r\n\t exec: function(editor) { editor.removeWordRight(); },\r\n\t multiSelectAction: \"forEach\",\r\n\t scrollIntoView: \"cursor\"\r\n\t}, {\r\n\t name: \"outdent\",\r\n\t bindKey: bindKey(\"Shift-Tab\", \"Shift-Tab\"),\r\n\t exec: function(editor) { editor.blockOutdent(); },\r\n\t multiSelectAction: \"forEach\",\r\n\t scrollIntoView: \"selectionPart\"\r\n\t}, {\r\n\t name: \"indent\",\r\n\t bindKey: bindKey(\"Tab\", \"Tab\"),\r\n\t exec: function(editor) { editor.indent(); },\r\n\t multiSelectAction: \"forEach\",\r\n\t scrollIntoView: \"selectionPart\"\r\n\t}, {\r\n\t name: \"blockoutdent\",\r\n\t bindKey: bindKey(\"Ctrl-[\", \"Ctrl-[\"),\r\n\t exec: function(editor) { editor.blockOutdent(); },\r\n\t multiSelectAction: \"forEachLine\",\r\n\t scrollIntoView: \"selectionPart\"\r\n\t}, {\r\n\t name: \"blockindent\",\r\n\t bindKey: bindKey(\"Ctrl-]\", \"Ctrl-]\"),\r\n\t exec: function(editor) { editor.blockIndent(); },\r\n\t multiSelectAction: \"forEachLine\",\r\n\t scrollIntoView: \"selectionPart\"\r\n\t}, {\r\n\t name: \"insertstring\",\r\n\t exec: function(editor, str) { editor.insert(str); },\r\n\t multiSelectAction: \"forEach\",\r\n\t scrollIntoView: \"cursor\"\r\n\t}, {\r\n\t name: \"inserttext\",\r\n\t exec: function(editor, args) {\r\n\t editor.insert(lang.stringRepeat(args.text || \"\", args.times || 1));\r\n\t },\r\n\t multiSelectAction: \"forEach\",\r\n\t scrollIntoView: \"cursor\"\r\n\t}, {\r\n\t name: \"splitline\",\r\n\t bindKey: bindKey(null, \"Ctrl-O\"),\r\n\t exec: function(editor) { editor.splitLine(); },\r\n\t multiSelectAction: \"forEach\",\r\n\t scrollIntoView: \"cursor\"\r\n\t}, {\r\n\t name: \"transposeletters\",\r\n\t bindKey: bindKey(\"Ctrl-T\", \"Ctrl-T\"),\r\n\t exec: function(editor) { editor.transposeLetters(); },\r\n\t multiSelectAction: function(editor) {editor.transposeSelections(1); },\r\n\t scrollIntoView: \"cursor\"\r\n\t}, {\r\n\t name: \"touppercase\",\r\n\t bindKey: bindKey(\"Ctrl-U\", \"Ctrl-U\"),\r\n\t exec: function(editor) { editor.toUpperCase(); },\r\n\t multiSelectAction: \"forEach\",\r\n\t scrollIntoView: \"cursor\"\r\n\t}, {\r\n\t name: \"tolowercase\",\r\n\t bindKey: bindKey(\"Ctrl-Shift-U\", \"Ctrl-Shift-U\"),\r\n\t exec: function(editor) { editor.toLowerCase(); },\r\n\t multiSelectAction: \"forEach\",\r\n\t scrollIntoView: \"cursor\"\r\n\t}, {\r\n\t name: \"expandtoline\",\r\n\t bindKey: bindKey(\"Ctrl-Shift-L\", \"Command-Shift-L\"),\r\n\t exec: function(editor) {\r\n\t var range = editor.selection.getRange();\r\n\r\n\t range.start.column = range.end.column = 0;\r\n\t range.end.row++;\r\n\t editor.selection.setRange(range, false);\r\n\t },\r\n\t multiSelectAction: \"forEach\",\r\n\t scrollIntoView: \"cursor\",\r\n\t readOnly: true\r\n\t}, {\r\n\t name: \"joinlines\",\r\n\t bindKey: bindKey(null, null),\r\n\t exec: function(editor) {\r\n\t var isBackwards = editor.selection.isBackwards();\r\n\t var selectionStart = isBackwards ? editor.selection.getSelectionLead() : editor.selection.getSelectionAnchor();\r\n\t var selectionEnd = isBackwards ? editor.selection.getSelectionAnchor() : editor.selection.getSelectionLead();\r\n\t var firstLineEndCol = editor.session.doc.getLine(selectionStart.row).length;\r\n\t var selectedText = editor.session.doc.getTextRange(editor.selection.getRange());\r\n\t var selectedCount = selectedText.replace(/\\n\\s*/, \" \").length;\r\n\t var insertLine = editor.session.doc.getLine(selectionStart.row);\r\n\r\n\t for (var i = selectionStart.row + 1; i <= selectionEnd.row + 1; i++) {\r\n\t var curLine = lang.stringTrimLeft(lang.stringTrimRight(editor.session.doc.getLine(i)));\r\n\t if (curLine.length !== 0) {\r\n\t curLine = \" \" + curLine;\r\n\t }\r\n\t insertLine += curLine;\r\n\t }\r\n\r\n\t if (selectionEnd.row + 1 < (editor.session.doc.getLength() - 1)) {\r\n\t insertLine += editor.session.doc.getNewLineCharacter();\r\n\t }\r\n\r\n\t editor.clearSelection();\r\n\t editor.session.doc.replace(new Range(selectionStart.row, 0, selectionEnd.row + 2, 0), insertLine);\r\n\r\n\t if (selectedCount > 0) {\r\n\t editor.selection.moveCursorTo(selectionStart.row, selectionStart.column);\r\n\t editor.selection.selectTo(selectionStart.row, selectionStart.column + selectedCount);\r\n\t } else {\r\n\t firstLineEndCol = editor.session.doc.getLine(selectionStart.row).length > firstLineEndCol ? (firstLineEndCol + 1) : firstLineEndCol;\r\n\t editor.selection.moveCursorTo(selectionStart.row, firstLineEndCol);\r\n\t }\r\n\t },\r\n\t multiSelectAction: \"forEach\",\r\n\t readOnly: true\r\n\t}, {\r\n\t name: \"invertSelection\",\r\n\t bindKey: bindKey(null, null),\r\n\t exec: function(editor) {\r\n\t var endRow = editor.session.doc.getLength() - 1;\r\n\t var endCol = editor.session.doc.getLine(endRow).length;\r\n\t var ranges = editor.selection.rangeList.ranges;\r\n\t var newRanges = [];\r\n\t if (ranges.length < 1) {\r\n\t ranges = [editor.selection.getRange()];\r\n\t }\r\n\r\n\t for (var i = 0; i < ranges.length; i++) {\r\n\t if (i == (ranges.length - 1)) {\r\n\t if (!(ranges[i].end.row === endRow && ranges[i].end.column === endCol)) {\r\n\t newRanges.push(new Range(ranges[i].end.row, ranges[i].end.column, endRow, endCol));\r\n\t }\r\n\t }\r\n\r\n\t if (i === 0) {\r\n\t if (!(ranges[i].start.row === 0 && ranges[i].start.column === 0)) {\r\n\t newRanges.push(new Range(0, 0, ranges[i].start.row, ranges[i].start.column));\r\n\t }\r\n\t } else {\r\n\t newRanges.push(new Range(ranges[i-1].end.row, ranges[i-1].end.column, ranges[i].start.row, ranges[i].start.column));\r\n\t }\r\n\t }\r\n\r\n\t editor.exitMultiSelectMode();\r\n\t editor.clearSelection();\r\n\r\n\t for(var i = 0; i < newRanges.length; i++) {\r\n\t editor.selection.addRange(newRanges[i], false);\r\n\t }\r\n\t },\r\n\t readOnly: true,\r\n\t scrollIntoView: \"none\"\r\n\t}];\r\n\r\n\t});\r\n\r\n\tace.define(\"ace/editor\",[\"require\",\"exports\",\"module\",\"ace/lib/fixoldbrowsers\",\"ace/lib/oop\",\"ace/lib/dom\",\"ace/lib/lang\",\"ace/lib/useragent\",\"ace/keyboard/textinput\",\"ace/mouse/mouse_handler\",\"ace/mouse/fold_handler\",\"ace/keyboard/keybinding\",\"ace/edit_session\",\"ace/search\",\"ace/range\",\"ace/lib/event_emitter\",\"ace/commands/command_manager\",\"ace/commands/default_commands\",\"ace/config\",\"ace/token_iterator\"], function(acequire, exports, module) {\r\n\t\"use strict\";\r\n\r\n\tacequire(\"./lib/fixoldbrowsers\");\r\n\r\n\tvar oop = acequire(\"./lib/oop\");\r\n\tvar dom = acequire(\"./lib/dom\");\r\n\tvar lang = acequire(\"./lib/lang\");\r\n\tvar useragent = acequire(\"./lib/useragent\");\r\n\tvar TextInput = acequire(\"./keyboard/textinput\").TextInput;\r\n\tvar MouseHandler = acequire(\"./mouse/mouse_handler\").MouseHandler;\r\n\tvar FoldHandler = acequire(\"./mouse/fold_handler\").FoldHandler;\r\n\tvar KeyBinding = acequire(\"./keyboard/keybinding\").KeyBinding;\r\n\tvar EditSession = acequire(\"./edit_session\").EditSession;\r\n\tvar Search = acequire(\"./search\").Search;\r\n\tvar Range = acequire(\"./range\").Range;\r\n\tvar EventEmitter = acequire(\"./lib/event_emitter\").EventEmitter;\r\n\tvar CommandManager = acequire(\"./commands/command_manager\").CommandManager;\r\n\tvar defaultCommands = acequire(\"./commands/default_commands\").commands;\r\n\tvar config = acequire(\"./config\");\r\n\tvar TokenIterator = acequire(\"./token_iterator\").TokenIterator;\r\n\tvar Editor = function(renderer, session) {\r\n\t var container = renderer.getContainerElement();\r\n\t this.container = container;\r\n\t this.renderer = renderer;\r\n\r\n\t this.commands = new CommandManager(useragent.isMac ? \"mac\" : \"win\", defaultCommands);\r\n\t this.textInput = new TextInput(renderer.getTextAreaContainer(), this);\r\n\t this.renderer.textarea = this.textInput.getElement();\r\n\t this.keyBinding = new KeyBinding(this);\r\n\t this.$mouseHandler = new MouseHandler(this);\r\n\t new FoldHandler(this);\r\n\r\n\t this.$blockScrolling = 0;\r\n\t this.$search = new Search().set({\r\n\t wrap: true\r\n\t });\r\n\r\n\t this.$historyTracker = this.$historyTracker.bind(this);\r\n\t this.commands.on(\"exec\", this.$historyTracker);\r\n\r\n\t this.$initOperationListeners();\r\n\t \r\n\t this._$emitInputEvent = lang.delayedCall(function() {\r\n\t this._signal(\"input\", {});\r\n\t if (this.session && this.session.bgTokenizer)\r\n\t this.session.bgTokenizer.scheduleStart();\r\n\t }.bind(this));\r\n\t \r\n\t this.on(\"change\", function(_, _self) {\r\n\t _self._$emitInputEvent.schedule(31);\r\n\t });\r\n\r\n\t this.setSession(session || new EditSession(\"\"));\r\n\t config.resetOptions(this);\r\n\t config._signal(\"editor\", this);\r\n\t};\r\n\r\n\t(function(){\r\n\r\n\t oop.implement(this, EventEmitter);\r\n\r\n\t this.$initOperationListeners = function() {\r\n\t function last(a) {return a[a.length - 1]}\r\n\r\n\t this.selections = [];\r\n\t this.commands.on(\"exec\", this.startOperation.bind(this), true);\r\n\t this.commands.on(\"afterExec\", this.endOperation.bind(this), true);\r\n\r\n\t this.$opResetTimer = lang.delayedCall(this.endOperation.bind(this));\r\n\r\n\t this.on(\"change\", function() {\r\n\t this.curOp || this.startOperation();\r\n\t this.curOp.docChanged = true;\r\n\t }.bind(this), true);\r\n\r\n\t this.on(\"changeSelection\", function() {\r\n\t this.curOp || this.startOperation();\r\n\t this.curOp.selectionChanged = true;\r\n\t }.bind(this), true);\r\n\t };\r\n\r\n\t this.curOp = null;\r\n\t this.prevOp = {};\r\n\t this.startOperation = function(commadEvent) {\r\n\t if (this.curOp) {\r\n\t if (!commadEvent || this.curOp.command)\r\n\t return;\r\n\t this.prevOp = this.curOp;\r\n\t }\r\n\t if (!commadEvent) {\r\n\t this.previousCommand = null;\r\n\t commadEvent = {};\r\n\t }\r\n\r\n\t this.$opResetTimer.schedule();\r\n\t this.curOp = {\r\n\t command: commadEvent.command || {},\r\n\t args: commadEvent.args,\r\n\t scrollTop: this.renderer.scrollTop\r\n\t };\r\n\t if (this.curOp.command.name && this.curOp.command.scrollIntoView !== undefined)\r\n\t this.$blockScrolling++;\r\n\t };\r\n\r\n\t this.endOperation = function(e) {\r\n\t if (this.curOp) {\r\n\t if (e && e.returnValue === false)\r\n\t return this.curOp = null;\r\n\t this._signal(\"beforeEndOperation\");\r\n\t var command = this.curOp.command;\r\n\t if (command.name && this.$blockScrolling > 0)\r\n\t this.$blockScrolling--;\r\n\t var scrollIntoView = command && command.scrollIntoView;\r\n\t if (scrollIntoView) {\r\n\t switch (scrollIntoView) {\r\n\t case \"center-animate\":\r\n\t scrollIntoView = \"animate\";\r\n\t case \"center\":\r\n\t this.renderer.scrollCursorIntoView(null, 0.5);\r\n\t break;\r\n\t case \"animate\":\r\n\t case \"cursor\":\r\n\t this.renderer.scrollCursorIntoView();\r\n\t break;\r\n\t case \"selectionPart\":\r\n\t var range = this.selection.getRange();\r\n\t var config = this.renderer.layerConfig;\r\n\t if (range.start.row >= config.lastRow || range.end.row <= config.firstRow) {\r\n\t this.renderer.scrollSelectionIntoView(this.selection.anchor, this.selection.lead);\r\n\t }\r\n\t break;\r\n\t default:\r\n\t break;\r\n\t }\r\n\t if (scrollIntoView == \"animate\")\r\n\t this.renderer.animateScrolling(this.curOp.scrollTop);\r\n\t }\r\n\t \r\n\t this.prevOp = this.curOp;\r\n\t this.curOp = null;\r\n\t }\r\n\t };\r\n\t this.$mergeableCommands = [\"backspace\", \"del\", \"insertstring\"];\r\n\t this.$historyTracker = function(e) {\r\n\t if (!this.$mergeUndoDeltas)\r\n\t return;\r\n\r\n\t var prev = this.prevOp;\r\n\t var mergeableCommands = this.$mergeableCommands;\r\n\t var shouldMerge = prev.command && (e.command.name == prev.command.name);\r\n\t if (e.command.name == \"insertstring\") {\r\n\t var text = e.args;\r\n\t if (this.mergeNextCommand === undefined)\r\n\t this.mergeNextCommand = true;\r\n\r\n\t shouldMerge = shouldMerge\r\n\t && this.mergeNextCommand // previous command allows to coalesce with\r\n\t && (!/\\s/.test(text) || /\\s/.test(prev.args)); // previous insertion was of same type\r\n\r\n\t this.mergeNextCommand = true;\r\n\t } else {\r\n\t shouldMerge = shouldMerge\r\n\t && mergeableCommands.indexOf(e.command.name) !== -1; // the command is mergeable\r\n\t }\r\n\r\n\t if (\r\n\t this.$mergeUndoDeltas != \"always\"\r\n\t && Date.now() - this.sequenceStartTime > 2000\r\n\t ) {\r\n\t shouldMerge = false; // the sequence is too long\r\n\t }\r\n\r\n\t if (shouldMerge)\r\n\t this.session.mergeUndoDeltas = true;\r\n\t else if (mergeableCommands.indexOf(e.command.name) !== -1)\r\n\t this.sequenceStartTime = Date.now();\r\n\t };\r\n\t this.setKeyboardHandler = function(keyboardHandler, cb) {\r\n\t if (keyboardHandler && typeof keyboardHandler === \"string\") {\r\n\t this.$keybindingId = keyboardHandler;\r\n\t var _self = this;\r\n\t config.loadModule([\"keybinding\", keyboardHandler], function(module) {\r\n\t if (_self.$keybindingId == keyboardHandler)\r\n\t _self.keyBinding.setKeyboardHandler(module && module.handler);\r\n\t cb && cb();\r\n\t });\r\n\t } else {\r\n\t this.$keybindingId = null;\r\n\t this.keyBinding.setKeyboardHandler(keyboardHandler);\r\n\t cb && cb();\r\n\t }\r\n\t };\r\n\t this.getKeyboardHandler = function() {\r\n\t return this.keyBinding.getKeyboardHandler();\r\n\t };\r\n\t this.setSession = function(session) {\r\n\t if (this.session == session)\r\n\t return;\r\n\t if (this.curOp) this.endOperation();\r\n\t this.curOp = {};\r\n\r\n\t var oldSession = this.session;\r\n\t if (oldSession) {\r\n\t this.session.off(\"change\", this.$onDocumentChange);\r\n\t this.session.off(\"changeMode\", this.$onChangeMode);\r\n\t this.session.off(\"tokenizerUpdate\", this.$onTokenizerUpdate);\r\n\t this.session.off(\"changeTabSize\", this.$onChangeTabSize);\r\n\t this.session.off(\"changeWrapLimit\", this.$onChangeWrapLimit);\r\n\t this.session.off(\"changeWrapMode\", this.$onChangeWrapMode);\r\n\t this.session.off(\"changeFold\", this.$onChangeFold);\r\n\t this.session.off(\"changeFrontMarker\", this.$onChangeFrontMarker);\r\n\t this.session.off(\"changeBackMarker\", this.$onChangeBackMarker);\r\n\t this.session.off(\"changeBreakpoint\", this.$onChangeBreakpoint);\r\n\t this.session.off(\"changeAnnotation\", this.$onChangeAnnotation);\r\n\t this.session.off(\"changeOverwrite\", this.$onCursorChange);\r\n\t this.session.off(\"changeScrollTop\", this.$onScrollTopChange);\r\n\t this.session.off(\"changeScrollLeft\", this.$onScrollLeftChange);\r\n\r\n\t var selection = this.session.getSelection();\r\n\t selection.off(\"changeCursor\", this.$onCursorChange);\r\n\t selection.off(\"changeSelection\", this.$onSelectionChange);\r\n\t }\r\n\r\n\t this.session = session;\r\n\t if (session) {\r\n\t this.$onDocumentChange = this.onDocumentChange.bind(this);\r\n\t session.on(\"change\", this.$onDocumentChange);\r\n\t this.renderer.setSession(session);\r\n\t \r\n\t this.$onChangeMode = this.onChangeMode.bind(this);\r\n\t session.on(\"changeMode\", this.$onChangeMode);\r\n\t \r\n\t this.$onTokenizerUpdate = this.onTokenizerUpdate.bind(this);\r\n\t session.on(\"tokenizerUpdate\", this.$onTokenizerUpdate);\r\n\t \r\n\t this.$onChangeTabSize = this.renderer.onChangeTabSize.bind(this.renderer);\r\n\t session.on(\"changeTabSize\", this.$onChangeTabSize);\r\n\t \r\n\t this.$onChangeWrapLimit = this.onChangeWrapLimit.bind(this);\r\n\t session.on(\"changeWrapLimit\", this.$onChangeWrapLimit);\r\n\t \r\n\t this.$onChangeWrapMode = this.onChangeWrapMode.bind(this);\r\n\t session.on(\"changeWrapMode\", this.$onChangeWrapMode);\r\n\t \r\n\t this.$onChangeFold = this.onChangeFold.bind(this);\r\n\t session.on(\"changeFold\", this.$onChangeFold);\r\n\t \r\n\t this.$onChangeFrontMarker = this.onChangeFrontMarker.bind(this);\r\n\t this.session.on(\"changeFrontMarker\", this.$onChangeFrontMarker);\r\n\t \r\n\t this.$onChangeBackMarker = this.onChangeBackMarker.bind(this);\r\n\t this.session.on(\"changeBackMarker\", this.$onChangeBackMarker);\r\n\t \r\n\t this.$onChangeBreakpoint = this.onChangeBreakpoint.bind(this);\r\n\t this.session.on(\"changeBreakpoint\", this.$onChangeBreakpoint);\r\n\t \r\n\t this.$onChangeAnnotation = this.onChangeAnnotation.bind(this);\r\n\t this.session.on(\"changeAnnotation\", this.$onChangeAnnotation);\r\n\t \r\n\t this.$onCursorChange = this.onCursorChange.bind(this);\r\n\t this.session.on(\"changeOverwrite\", this.$onCursorChange);\r\n\t \r\n\t this.$onScrollTopChange = this.onScrollTopChange.bind(this);\r\n\t this.session.on(\"changeScrollTop\", this.$onScrollTopChange);\r\n\t \r\n\t this.$onScrollLeftChange = this.onScrollLeftChange.bind(this);\r\n\t this.session.on(\"changeScrollLeft\", this.$onScrollLeftChange);\r\n\t \r\n\t this.selection = session.getSelection();\r\n\t this.selection.on(\"changeCursor\", this.$onCursorChange);\r\n\t \r\n\t this.$onSelectionChange = this.onSelectionChange.bind(this);\r\n\t this.selection.on(\"changeSelection\", this.$onSelectionChange);\r\n\t \r\n\t this.onChangeMode();\r\n\t \r\n\t this.$blockScrolling += 1;\r\n\t this.onCursorChange();\r\n\t this.$blockScrolling -= 1;\r\n\t \r\n\t this.onScrollTopChange();\r\n\t this.onScrollLeftChange();\r\n\t this.onSelectionChange();\r\n\t this.onChangeFrontMarker();\r\n\t this.onChangeBackMarker();\r\n\t this.onChangeBreakpoint();\r\n\t this.onChangeAnnotation();\r\n\t this.session.getUseWrapMode() && this.renderer.adjustWrapLimit();\r\n\t this.renderer.updateFull();\r\n\t } else {\r\n\t this.selection = null;\r\n\t this.renderer.setSession(session);\r\n\t }\r\n\r\n\t this._signal(\"changeSession\", {\r\n\t session: session,\r\n\t oldSession: oldSession\r\n\t });\r\n\t \r\n\t this.curOp = null;\r\n\t \r\n\t oldSession && oldSession._signal(\"changeEditor\", {oldEditor: this});\r\n\t session && session._signal(\"changeEditor\", {editor: this});\r\n\t };\r\n\t this.getSession = function() {\r\n\t return this.session;\r\n\t };\r\n\t this.setValue = function(val, cursorPos) {\r\n\t this.session.doc.setValue(val);\r\n\r\n\t if (!cursorPos)\r\n\t this.selectAll();\r\n\t else if (cursorPos == 1)\r\n\t this.navigateFileEnd();\r\n\t else if (cursorPos == -1)\r\n\t this.navigateFileStart();\r\n\r\n\t return val;\r\n\t };\r\n\t this.getValue = function() {\r\n\t return this.session.getValue();\r\n\t };\r\n\t this.getSelection = function() {\r\n\t return this.selection;\r\n\t };\r\n\t this.resize = function(force) {\r\n\t this.renderer.onResize(force);\r\n\t };\r\n\t this.setTheme = function(theme, cb) {\r\n\t this.renderer.setTheme(theme, cb);\r\n\t };\r\n\t this.getTheme = function() {\r\n\t return this.renderer.getTheme();\r\n\t };\r\n\t this.setStyle = function(style) {\r\n\t this.renderer.setStyle(style);\r\n\t };\r\n\t this.unsetStyle = function(style) {\r\n\t this.renderer.unsetStyle(style);\r\n\t };\r\n\t this.getFontSize = function () {\r\n\t return this.getOption(\"fontSize\") ||\r\n\t dom.computedStyle(this.container, \"fontSize\");\r\n\t };\r\n\t this.setFontSize = function(size) {\r\n\t this.setOption(\"fontSize\", size);\r\n\t };\r\n\r\n\t this.$highlightBrackets = function() {\r\n\t if (this.session.$bracketHighlight) {\r\n\t this.session.removeMarker(this.session.$bracketHighlight);\r\n\t this.session.$bracketHighlight = null;\r\n\t }\r\n\r\n\t if (this.$highlightPending) {\r\n\t return;\r\n\t }\r\n\t var self = this;\r\n\t this.$highlightPending = true;\r\n\t setTimeout(function() {\r\n\t self.$highlightPending = false;\r\n\t var session = self.session;\r\n\t if (!session || !session.bgTokenizer) return;\r\n\t var pos = session.findMatchingBracket(self.getCursorPosition());\r\n\t if (pos) {\r\n\t var range = new Range(pos.row, pos.column, pos.row, pos.column + 1);\r\n\t } else if (session.$mode.getMatching) {\r\n\t var range = session.$mode.getMatching(self.session);\r\n\t }\r\n\t if (range)\r\n\t session.$bracketHighlight = session.addMarker(range, \"ace_bracket\", \"text\");\r\n\t }, 50);\r\n\t };\r\n\t this.$highlightTags = function() {\r\n\t if (this.$highlightTagPending)\r\n\t return;\r\n\t var self = this;\r\n\t this.$highlightTagPending = true;\r\n\t setTimeout(function() {\r\n\t self.$highlightTagPending = false;\r\n\t \r\n\t var session = self.session;\r\n\t if (!session || !session.bgTokenizer) return;\r\n\t \r\n\t var pos = self.getCursorPosition();\r\n\t var iterator = new TokenIterator(self.session, pos.row, pos.column);\r\n\t var token = iterator.getCurrentToken();\r\n\t \r\n\t if (!token || !/\\b(?:tag-open|tag-name)/.test(token.type)) {\r\n\t session.removeMarker(session.$tagHighlight);\r\n\t session.$tagHighlight = null;\r\n\t return;\r\n\t }\r\n\t \r\n\t if (token.type.indexOf(\"tag-open\") != -1) {\r\n\t token = iterator.stepForward();\r\n\t if (!token)\r\n\t return;\r\n\t }\r\n\t \r\n\t var tag = token.value;\r\n\t var depth = 0;\r\n\t var prevToken = iterator.stepBackward();\r\n\t \r\n\t if (prevToken.value == '<'){\r\n\t do {\r\n\t prevToken = token;\r\n\t token = iterator.stepForward();\r\n\t \r\n\t if (token && token.value === tag && token.type.indexOf('tag-name') !== -1) {\r\n\t if (prevToken.value === '<'){\r\n\t depth++;\r\n\t } else if (prevToken.value === '= 0);\r\n\t } else {\r\n\t do {\r\n\t token = prevToken;\r\n\t prevToken = iterator.stepBackward();\r\n\t \r\n\t if (token && token.value === tag && token.type.indexOf('tag-name') !== -1) {\r\n\t if (prevToken.value === '<') {\r\n\t depth++;\r\n\t } else if (prevToken.value === ' 1))\r\n\t highlight = false;\r\n\t }\r\n\r\n\t if (session.$highlightLineMarker && !highlight) {\r\n\t session.removeMarker(session.$highlightLineMarker.id);\r\n\t session.$highlightLineMarker = null;\r\n\t } else if (!session.$highlightLineMarker && highlight) {\r\n\t var range = new Range(highlight.row, highlight.column, highlight.row, Infinity);\r\n\t range.id = session.addMarker(range, \"ace_active-line\", \"screenLine\");\r\n\t session.$highlightLineMarker = range;\r\n\t } else if (highlight) {\r\n\t session.$highlightLineMarker.start.row = highlight.row;\r\n\t session.$highlightLineMarker.end.row = highlight.row;\r\n\t session.$highlightLineMarker.start.column = highlight.column;\r\n\t session._signal(\"changeBackMarker\");\r\n\t }\r\n\t };\r\n\r\n\t this.onSelectionChange = function(e) {\r\n\t var session = this.session;\r\n\r\n\t if (session.$selectionMarker) {\r\n\t session.removeMarker(session.$selectionMarker);\r\n\t }\r\n\t session.$selectionMarker = null;\r\n\r\n\t if (!this.selection.isEmpty()) {\r\n\t var range = this.selection.getRange();\r\n\t var style = this.getSelectionStyle();\r\n\t session.$selectionMarker = session.addMarker(range, \"ace_selection\", style);\r\n\t } else {\r\n\t this.$updateHighlightActiveLine();\r\n\t }\r\n\r\n\t var re = this.$highlightSelectedWord && this.$getSelectionHighLightRegexp();\r\n\t this.session.highlight(re);\r\n\r\n\t this._signal(\"changeSelection\");\r\n\t };\r\n\r\n\t this.$getSelectionHighLightRegexp = function() {\r\n\t var session = this.session;\r\n\r\n\t var selection = this.getSelectionRange();\r\n\t if (selection.isEmpty() || selection.isMultiLine())\r\n\t return;\r\n\r\n\t var startOuter = selection.start.column - 1;\r\n\t var endOuter = selection.end.column + 1;\r\n\t var line = session.getLine(selection.start.row);\r\n\t var lineCols = line.length;\r\n\t var needle = line.substring(Math.max(startOuter, 0),\r\n\t Math.min(endOuter, lineCols));\r\n\t if ((startOuter >= 0 && /^[\\w\\d]/.test(needle)) ||\r\n\t (endOuter <= lineCols && /[\\w\\d]$/.test(needle)))\r\n\t return;\r\n\r\n\t needle = line.substring(selection.start.column, selection.end.column);\r\n\t if (!/^[\\w\\d]+$/.test(needle))\r\n\t return;\r\n\r\n\t var re = this.$search.$assembleRegExp({\r\n\t wholeWord: true,\r\n\t caseSensitive: true,\r\n\t needle: needle\r\n\t });\r\n\r\n\t return re;\r\n\t };\r\n\r\n\r\n\t this.onChangeFrontMarker = function() {\r\n\t this.renderer.updateFrontMarkers();\r\n\t };\r\n\r\n\t this.onChangeBackMarker = function() {\r\n\t this.renderer.updateBackMarkers();\r\n\t };\r\n\r\n\r\n\t this.onChangeBreakpoint = function() {\r\n\t this.renderer.updateBreakpoints();\r\n\t };\r\n\r\n\t this.onChangeAnnotation = function() {\r\n\t this.renderer.setAnnotations(this.session.getAnnotations());\r\n\t };\r\n\r\n\r\n\t this.onChangeMode = function(e) {\r\n\t this.renderer.updateText();\r\n\t this._emit(\"changeMode\", e);\r\n\t };\r\n\r\n\r\n\t this.onChangeWrapLimit = function() {\r\n\t this.renderer.updateFull();\r\n\t };\r\n\r\n\t this.onChangeWrapMode = function() {\r\n\t this.renderer.onResize(true);\r\n\t };\r\n\r\n\r\n\t this.onChangeFold = function() {\r\n\t this.$updateHighlightActiveLine();\r\n\t this.renderer.updateFull();\r\n\t };\r\n\t this.getSelectedText = function() {\r\n\t return this.session.getTextRange(this.getSelectionRange());\r\n\t };\r\n\t this.getCopyText = function() {\r\n\t var text = this.getSelectedText();\r\n\t this._signal(\"copy\", text);\r\n\t return text;\r\n\t };\r\n\t this.onCopy = function() {\r\n\t this.commands.exec(\"copy\", this);\r\n\t };\r\n\t this.onCut = function() {\r\n\t this.commands.exec(\"cut\", this);\r\n\t };\r\n\t this.onPaste = function(text, event) {\r\n\t var e = {text: text, event: event};\r\n\t this.commands.exec(\"paste\", this, e);\r\n\t };\r\n\t \r\n\t this.$handlePaste = function(e) {\r\n\t if (typeof e == \"string\") \r\n\t e = {text: e};\r\n\t this._signal(\"paste\", e);\r\n\t var text = e.text;\r\n\t if (!this.inMultiSelectMode || this.inVirtualSelectionMode) {\r\n\t this.insert(text);\r\n\t } else {\r\n\t var lines = text.split(/\\r\\n|\\r|\\n/);\r\n\t var ranges = this.selection.rangeList.ranges;\r\n\t \r\n\t if (lines.length > ranges.length || lines.length < 2 || !lines[1])\r\n\t return this.commands.exec(\"insertstring\", this, text);\r\n\t \r\n\t for (var i = ranges.length; i--;) {\r\n\t var range = ranges[i];\r\n\t if (!range.isEmpty())\r\n\t this.session.remove(range);\r\n\t \r\n\t this.session.insert(range.start, lines[i]);\r\n\t }\r\n\t }\r\n\t };\r\n\r\n\t this.execCommand = function(command, args) {\r\n\t return this.commands.exec(command, this, args);\r\n\t };\r\n\t this.insert = function(text, pasted) {\r\n\t var session = this.session;\r\n\t var mode = session.getMode();\r\n\t var cursor = this.getCursorPosition();\r\n\r\n\t if (this.getBehavioursEnabled() && !pasted) {\r\n\t var transform = mode.transformAction(session.getState(cursor.row), 'insertion', this, session, text);\r\n\t if (transform) {\r\n\t if (text !== transform.text) {\r\n\t this.session.mergeUndoDeltas = false;\r\n\t this.$mergeNextCommand = false;\r\n\t }\r\n\t text = transform.text;\r\n\r\n\t }\r\n\t }\r\n\t \r\n\t if (text == \"\\t\")\r\n\t text = this.session.getTabString();\r\n\t if (!this.selection.isEmpty()) {\r\n\t var range = this.getSelectionRange();\r\n\t cursor = this.session.remove(range);\r\n\t this.clearSelection();\r\n\t }\r\n\t else if (this.session.getOverwrite()) {\r\n\t var range = new Range.fromPoints(cursor, cursor);\r\n\t range.end.column += text.length;\r\n\t this.session.remove(range);\r\n\t }\r\n\r\n\t if (text == \"\\n\" || text == \"\\r\\n\") {\r\n\t var line = session.getLine(cursor.row);\r\n\t if (cursor.column > line.search(/\\S|$/)) {\r\n\t var d = line.substr(cursor.column).search(/\\S|$/);\r\n\t session.doc.removeInLine(cursor.row, cursor.column, cursor.column + d);\r\n\t }\r\n\t }\r\n\t this.clearSelection();\r\n\r\n\t var start = cursor.column;\r\n\t var lineState = session.getState(cursor.row);\r\n\t var line = session.getLine(cursor.row);\r\n\t var shouldOutdent = mode.checkOutdent(lineState, line, text);\r\n\t var end = session.insert(cursor, text);\r\n\r\n\t if (transform && transform.selection) {\r\n\t if (transform.selection.length == 2) { // Transform relative to the current column\r\n\t this.selection.setSelectionRange(\r\n\t new Range(cursor.row, start + transform.selection[0],\r\n\t cursor.row, start + transform.selection[1]));\r\n\t } else { // Transform relative to the current row.\r\n\t this.selection.setSelectionRange(\r\n\t new Range(cursor.row + transform.selection[0],\r\n\t transform.selection[1],\r\n\t cursor.row + transform.selection[2],\r\n\t transform.selection[3]));\r\n\t }\r\n\t }\r\n\r\n\t if (session.getDocument().isNewLine(text)) {\r\n\t var lineIndent = mode.getNextLineIndent(lineState, line.slice(0, cursor.column), session.getTabString());\r\n\r\n\t session.insert({row: cursor.row+1, column: 0}, lineIndent);\r\n\t }\r\n\t if (shouldOutdent)\r\n\t mode.autoOutdent(lineState, session, cursor.row);\r\n\t };\r\n\r\n\t this.onTextInput = function(text) {\r\n\t this.keyBinding.onTextInput(text);\r\n\t };\r\n\r\n\t this.onCommandKey = function(e, hashId, keyCode) {\r\n\t this.keyBinding.onCommandKey(e, hashId, keyCode);\r\n\t };\r\n\t this.setOverwrite = function(overwrite) {\r\n\t this.session.setOverwrite(overwrite);\r\n\t };\r\n\t this.getOverwrite = function() {\r\n\t return this.session.getOverwrite();\r\n\t };\r\n\t this.toggleOverwrite = function() {\r\n\t this.session.toggleOverwrite();\r\n\t };\r\n\t this.setScrollSpeed = function(speed) {\r\n\t this.setOption(\"scrollSpeed\", speed);\r\n\t };\r\n\t this.getScrollSpeed = function() {\r\n\t return this.getOption(\"scrollSpeed\");\r\n\t };\r\n\t this.setDragDelay = function(dragDelay) {\r\n\t this.setOption(\"dragDelay\", dragDelay);\r\n\t };\r\n\t this.getDragDelay = function() {\r\n\t return this.getOption(\"dragDelay\");\r\n\t };\r\n\t this.setSelectionStyle = function(val) {\r\n\t this.setOption(\"selectionStyle\", val);\r\n\t };\r\n\t this.getSelectionStyle = function() {\r\n\t return this.getOption(\"selectionStyle\");\r\n\t };\r\n\t this.setHighlightActiveLine = function(shouldHighlight) {\r\n\t this.setOption(\"highlightActiveLine\", shouldHighlight);\r\n\t };\r\n\t this.getHighlightActiveLine = function() {\r\n\t return this.getOption(\"highlightActiveLine\");\r\n\t };\r\n\t this.setHighlightGutterLine = function(shouldHighlight) {\r\n\t this.setOption(\"highlightGutterLine\", shouldHighlight);\r\n\t };\r\n\r\n\t this.getHighlightGutterLine = function() {\r\n\t return this.getOption(\"highlightGutterLine\");\r\n\t };\r\n\t this.setHighlightSelectedWord = function(shouldHighlight) {\r\n\t this.setOption(\"highlightSelectedWord\", shouldHighlight);\r\n\t };\r\n\t this.getHighlightSelectedWord = function() {\r\n\t return this.$highlightSelectedWord;\r\n\t };\r\n\r\n\t this.setAnimatedScroll = function(shouldAnimate){\r\n\t this.renderer.setAnimatedScroll(shouldAnimate);\r\n\t };\r\n\r\n\t this.getAnimatedScroll = function(){\r\n\t return this.renderer.getAnimatedScroll();\r\n\t };\r\n\t this.setShowInvisibles = function(showInvisibles) {\r\n\t this.renderer.setShowInvisibles(showInvisibles);\r\n\t };\r\n\t this.getShowInvisibles = function() {\r\n\t return this.renderer.getShowInvisibles();\r\n\t };\r\n\r\n\t this.setDisplayIndentGuides = function(display) {\r\n\t this.renderer.setDisplayIndentGuides(display);\r\n\t };\r\n\r\n\t this.getDisplayIndentGuides = function() {\r\n\t return this.renderer.getDisplayIndentGuides();\r\n\t };\r\n\t this.setShowPrintMargin = function(showPrintMargin) {\r\n\t this.renderer.setShowPrintMargin(showPrintMargin);\r\n\t };\r\n\t this.getShowPrintMargin = function() {\r\n\t return this.renderer.getShowPrintMargin();\r\n\t };\r\n\t this.setPrintMarginColumn = function(showPrintMargin) {\r\n\t this.renderer.setPrintMarginColumn(showPrintMargin);\r\n\t };\r\n\t this.getPrintMarginColumn = function() {\r\n\t return this.renderer.getPrintMarginColumn();\r\n\t };\r\n\t this.setReadOnly = function(readOnly) {\r\n\t this.setOption(\"readOnly\", readOnly);\r\n\t };\r\n\t this.getReadOnly = function() {\r\n\t return this.getOption(\"readOnly\");\r\n\t };\r\n\t this.setBehavioursEnabled = function (enabled) {\r\n\t this.setOption(\"behavioursEnabled\", enabled);\r\n\t };\r\n\t this.getBehavioursEnabled = function () {\r\n\t return this.getOption(\"behavioursEnabled\");\r\n\t };\r\n\t this.setWrapBehavioursEnabled = function (enabled) {\r\n\t this.setOption(\"wrapBehavioursEnabled\", enabled);\r\n\t };\r\n\t this.getWrapBehavioursEnabled = function () {\r\n\t return this.getOption(\"wrapBehavioursEnabled\");\r\n\t };\r\n\t this.setShowFoldWidgets = function(show) {\r\n\t this.setOption(\"showFoldWidgets\", show);\r\n\r\n\t };\r\n\t this.getShowFoldWidgets = function() {\r\n\t return this.getOption(\"showFoldWidgets\");\r\n\t };\r\n\r\n\t this.setFadeFoldWidgets = function(fade) {\r\n\t this.setOption(\"fadeFoldWidgets\", fade);\r\n\t };\r\n\r\n\t this.getFadeFoldWidgets = function() {\r\n\t return this.getOption(\"fadeFoldWidgets\");\r\n\t };\r\n\t this.remove = function(dir) {\r\n\t if (this.selection.isEmpty()){\r\n\t if (dir == \"left\")\r\n\t this.selection.selectLeft();\r\n\t else\r\n\t this.selection.selectRight();\r\n\t }\r\n\r\n\t var range = this.getSelectionRange();\r\n\t if (this.getBehavioursEnabled()) {\r\n\t var session = this.session;\r\n\t var state = session.getState(range.start.row);\r\n\t var new_range = session.getMode().transformAction(state, 'deletion', this, session, range);\r\n\r\n\t if (range.end.column === 0) {\r\n\t var text = session.getTextRange(range);\r\n\t if (text[text.length - 1] == \"\\n\") {\r\n\t var line = session.getLine(range.end.row);\r\n\t if (/^\\s+$/.test(line)) {\r\n\t range.end.column = line.length;\r\n\t }\r\n\t }\r\n\t }\r\n\t if (new_range)\r\n\t range = new_range;\r\n\t }\r\n\r\n\t this.session.remove(range);\r\n\t this.clearSelection();\r\n\t };\r\n\t this.removeWordRight = function() {\r\n\t if (this.selection.isEmpty())\r\n\t this.selection.selectWordRight();\r\n\r\n\t this.session.remove(this.getSelectionRange());\r\n\t this.clearSelection();\r\n\t };\r\n\t this.removeWordLeft = function() {\r\n\t if (this.selection.isEmpty())\r\n\t this.selection.selectWordLeft();\r\n\r\n\t this.session.remove(this.getSelectionRange());\r\n\t this.clearSelection();\r\n\t };\r\n\t this.removeToLineStart = function() {\r\n\t if (this.selection.isEmpty())\r\n\t this.selection.selectLineStart();\r\n\r\n\t this.session.remove(this.getSelectionRange());\r\n\t this.clearSelection();\r\n\t };\r\n\t this.removeToLineEnd = function() {\r\n\t if (this.selection.isEmpty())\r\n\t this.selection.selectLineEnd();\r\n\r\n\t var range = this.getSelectionRange();\r\n\t if (range.start.column == range.end.column && range.start.row == range.end.row) {\r\n\t range.end.column = 0;\r\n\t range.end.row++;\r\n\t }\r\n\r\n\t this.session.remove(range);\r\n\t this.clearSelection();\r\n\t };\r\n\t this.splitLine = function() {\r\n\t if (!this.selection.isEmpty()) {\r\n\t this.session.remove(this.getSelectionRange());\r\n\t this.clearSelection();\r\n\t }\r\n\r\n\t var cursor = this.getCursorPosition();\r\n\t this.insert(\"\\n\");\r\n\t this.moveCursorToPosition(cursor);\r\n\t };\r\n\t this.transposeLetters = function() {\r\n\t if (!this.selection.isEmpty()) {\r\n\t return;\r\n\t }\r\n\r\n\t var cursor = this.getCursorPosition();\r\n\t var column = cursor.column;\r\n\t if (column === 0)\r\n\t return;\r\n\r\n\t var line = this.session.getLine(cursor.row);\r\n\t var swap, range;\r\n\t if (column < line.length) {\r\n\t swap = line.charAt(column) + line.charAt(column-1);\r\n\t range = new Range(cursor.row, column-1, cursor.row, column+1);\r\n\t }\r\n\t else {\r\n\t swap = line.charAt(column-1) + line.charAt(column-2);\r\n\t range = new Range(cursor.row, column-2, cursor.row, column);\r\n\t }\r\n\t this.session.replace(range, swap);\r\n\t };\r\n\t this.toLowerCase = function() {\r\n\t var originalRange = this.getSelectionRange();\r\n\t if (this.selection.isEmpty()) {\r\n\t this.selection.selectWord();\r\n\t }\r\n\r\n\t var range = this.getSelectionRange();\r\n\t var text = this.session.getTextRange(range);\r\n\t this.session.replace(range, text.toLowerCase());\r\n\t this.selection.setSelectionRange(originalRange);\r\n\t };\r\n\t this.toUpperCase = function() {\r\n\t var originalRange = this.getSelectionRange();\r\n\t if (this.selection.isEmpty()) {\r\n\t this.selection.selectWord();\r\n\t }\r\n\r\n\t var range = this.getSelectionRange();\r\n\t var text = this.session.getTextRange(range);\r\n\t this.session.replace(range, text.toUpperCase());\r\n\t this.selection.setSelectionRange(originalRange);\r\n\t };\r\n\t this.indent = function() {\r\n\t var session = this.session;\r\n\t var range = this.getSelectionRange();\r\n\r\n\t if (range.start.row < range.end.row) {\r\n\t var rows = this.$getSelectedRows();\r\n\t session.indentRows(rows.first, rows.last, \"\\t\");\r\n\t return;\r\n\t } else if (range.start.column < range.end.column) {\r\n\t var text = session.getTextRange(range);\r\n\t if (!/^\\s+$/.test(text)) {\r\n\t var rows = this.$getSelectedRows();\r\n\t session.indentRows(rows.first, rows.last, \"\\t\");\r\n\t return;\r\n\t }\r\n\t }\r\n\t \r\n\t var line = session.getLine(range.start.row);\r\n\t var position = range.start;\r\n\t var size = session.getTabSize();\r\n\t var column = session.documentToScreenColumn(position.row, position.column);\r\n\r\n\t if (this.session.getUseSoftTabs()) {\r\n\t var count = (size - column % size);\r\n\t var indentString = lang.stringRepeat(\" \", count);\r\n\t } else {\r\n\t var count = column % size;\r\n\t while (line[range.start.column] == \" \" && count) {\r\n\t range.start.column--;\r\n\t count--;\r\n\t }\r\n\t this.selection.setSelectionRange(range);\r\n\t indentString = \"\\t\";\r\n\t }\r\n\t return this.insert(indentString);\r\n\t };\r\n\t this.blockIndent = function() {\r\n\t var rows = this.$getSelectedRows();\r\n\t this.session.indentRows(rows.first, rows.last, \"\\t\");\r\n\t };\r\n\t this.blockOutdent = function() {\r\n\t var selection = this.session.getSelection();\r\n\t this.session.outdentRows(selection.getRange());\r\n\t };\r\n\t this.sortLines = function() {\r\n\t var rows = this.$getSelectedRows();\r\n\t var session = this.session;\r\n\r\n\t var lines = [];\r\n\t for (i = rows.first; i <= rows.last; i++)\r\n\t lines.push(session.getLine(i));\r\n\r\n\t lines.sort(function(a, b) {\r\n\t if (a.toLowerCase() < b.toLowerCase()) return -1;\r\n\t if (a.toLowerCase() > b.toLowerCase()) return 1;\r\n\t return 0;\r\n\t });\r\n\r\n\t var deleteRange = new Range(0, 0, 0, 0);\r\n\t for (var i = rows.first; i <= rows.last; i++) {\r\n\t var line = session.getLine(i);\r\n\t deleteRange.start.row = i;\r\n\t deleteRange.end.row = i;\r\n\t deleteRange.end.column = line.length;\r\n\t session.replace(deleteRange, lines[i-rows.first]);\r\n\t }\r\n\t };\r\n\t this.toggleCommentLines = function() {\r\n\t var state = this.session.getState(this.getCursorPosition().row);\r\n\t var rows = this.$getSelectedRows();\r\n\t this.session.getMode().toggleCommentLines(state, this.session, rows.first, rows.last);\r\n\t };\r\n\r\n\t this.toggleBlockComment = function() {\r\n\t var cursor = this.getCursorPosition();\r\n\t var state = this.session.getState(cursor.row);\r\n\t var range = this.getSelectionRange();\r\n\t this.session.getMode().toggleBlockComment(state, this.session, range, cursor);\r\n\t };\r\n\t this.getNumberAt = function(row, column) {\r\n\t var _numberRx = /[\\-]?[0-9]+(?:\\.[0-9]+)?/g;\r\n\t _numberRx.lastIndex = 0;\r\n\r\n\t var s = this.session.getLine(row);\r\n\t while (_numberRx.lastIndex < column) {\r\n\t var m = _numberRx.exec(s);\r\n\t if(m.index <= column && m.index+m[0].length >= column){\r\n\t var number = {\r\n\t value: m[0],\r\n\t start: m.index,\r\n\t end: m.index+m[0].length\r\n\t };\r\n\t return number;\r\n\t }\r\n\t }\r\n\t return null;\r\n\t };\r\n\t this.modifyNumber = function(amount) {\r\n\t var row = this.selection.getCursor().row;\r\n\t var column = this.selection.getCursor().column;\r\n\t var charRange = new Range(row, column-1, row, column);\r\n\r\n\t var c = this.session.getTextRange(charRange);\r\n\t if (!isNaN(parseFloat(c)) && isFinite(c)) {\r\n\t var nr = this.getNumberAt(row, column);\r\n\t if (nr) {\r\n\t var fp = nr.value.indexOf(\".\") >= 0 ? nr.start + nr.value.indexOf(\".\") + 1 : nr.end;\r\n\t var decimals = nr.start + nr.value.length - fp;\r\n\r\n\t var t = parseFloat(nr.value);\r\n\t t *= Math.pow(10, decimals);\r\n\r\n\r\n\t if(fp !== nr.end && column < fp){\r\n\t amount *= Math.pow(10, nr.end - column - 1);\r\n\t } else {\r\n\t amount *= Math.pow(10, nr.end - column);\r\n\t }\r\n\r\n\t t += amount;\r\n\t t /= Math.pow(10, decimals);\r\n\t var nnr = t.toFixed(decimals);\r\n\t var replaceRange = new Range(row, nr.start, row, nr.end);\r\n\t this.session.replace(replaceRange, nnr);\r\n\t this.moveCursorTo(row, Math.max(nr.start +1, column + nnr.length - nr.value.length));\r\n\r\n\t }\r\n\t }\r\n\t };\r\n\t this.removeLines = function() {\r\n\t var rows = this.$getSelectedRows();\r\n\t this.session.removeFullLines(rows.first, rows.last);\r\n\t this.clearSelection();\r\n\t };\r\n\r\n\t this.duplicateSelection = function() {\r\n\t var sel = this.selection;\r\n\t var doc = this.session;\r\n\t var range = sel.getRange();\r\n\t var reverse = sel.isBackwards();\r\n\t if (range.isEmpty()) {\r\n\t var row = range.start.row;\r\n\t doc.duplicateLines(row, row);\r\n\t } else {\r\n\t var point = reverse ? range.start : range.end;\r\n\t var endPoint = doc.insert(point, doc.getTextRange(range), false);\r\n\t range.start = point;\r\n\t range.end = endPoint;\r\n\r\n\t sel.setSelectionRange(range, reverse);\r\n\t }\r\n\t };\r\n\t this.moveLinesDown = function() {\r\n\t this.$moveLines(1, false);\r\n\t };\r\n\t this.moveLinesUp = function() {\r\n\t this.$moveLines(-1, false);\r\n\t };\r\n\t this.moveText = function(range, toPosition, copy) {\r\n\t return this.session.moveText(range, toPosition, copy);\r\n\t };\r\n\t this.copyLinesUp = function() {\r\n\t this.$moveLines(-1, true);\r\n\t };\r\n\t this.copyLinesDown = function() {\r\n\t this.$moveLines(1, true);\r\n\t };\r\n\t this.$moveLines = function(dir, copy) {\r\n\t var rows, moved;\r\n\t var selection = this.selection;\r\n\t if (!selection.inMultiSelectMode || this.inVirtualSelectionMode) {\r\n\t var range = selection.toOrientedRange();\r\n\t rows = this.$getSelectedRows(range);\r\n\t moved = this.session.$moveLines(rows.first, rows.last, copy ? 0 : dir);\r\n\t if (copy && dir == -1) moved = 0;\r\n\t range.moveBy(moved, 0);\r\n\t selection.fromOrientedRange(range);\r\n\t } else {\r\n\t var ranges = selection.rangeList.ranges;\r\n\t selection.rangeList.detach(this.session);\r\n\t this.inVirtualSelectionMode = true;\r\n\t \r\n\t var diff = 0;\r\n\t var totalDiff = 0;\r\n\t var l = ranges.length;\r\n\t for (var i = 0; i < l; i++) {\r\n\t var rangeIndex = i;\r\n\t ranges[i].moveBy(diff, 0);\r\n\t rows = this.$getSelectedRows(ranges[i]);\r\n\t var first = rows.first;\r\n\t var last = rows.last;\r\n\t while (++i < l) {\r\n\t if (totalDiff) ranges[i].moveBy(totalDiff, 0);\r\n\t var subRows = this.$getSelectedRows(ranges[i]);\r\n\t if (copy && subRows.first != last)\r\n\t break;\r\n\t else if (!copy && subRows.first > last + 1)\r\n\t break;\r\n\t last = subRows.last;\r\n\t }\r\n\t i--;\r\n\t diff = this.session.$moveLines(first, last, copy ? 0 : dir);\r\n\t if (copy && dir == -1) rangeIndex = i + 1;\r\n\t while (rangeIndex <= i) {\r\n\t ranges[rangeIndex].moveBy(diff, 0);\r\n\t rangeIndex++;\r\n\t }\r\n\t if (!copy) diff = 0;\r\n\t totalDiff += diff;\r\n\t }\r\n\t \r\n\t selection.fromOrientedRange(selection.ranges[0]);\r\n\t selection.rangeList.attach(this.session);\r\n\t this.inVirtualSelectionMode = false;\r\n\t }\r\n\t };\r\n\t this.$getSelectedRows = function(range) {\r\n\t range = (range || this.getSelectionRange()).collapseRows();\r\n\r\n\t return {\r\n\t first: this.session.getRowFoldStart(range.start.row),\r\n\t last: this.session.getRowFoldEnd(range.end.row)\r\n\t };\r\n\t };\r\n\r\n\t this.onCompositionStart = function(text) {\r\n\t this.renderer.showComposition(this.getCursorPosition());\r\n\t };\r\n\r\n\t this.onCompositionUpdate = function(text) {\r\n\t this.renderer.setCompositionText(text);\r\n\t };\r\n\r\n\t this.onCompositionEnd = function() {\r\n\t this.renderer.hideComposition();\r\n\t };\r\n\t this.getFirstVisibleRow = function() {\r\n\t return this.renderer.getFirstVisibleRow();\r\n\t };\r\n\t this.getLastVisibleRow = function() {\r\n\t return this.renderer.getLastVisibleRow();\r\n\t };\r\n\t this.isRowVisible = function(row) {\r\n\t return (row >= this.getFirstVisibleRow() && row <= this.getLastVisibleRow());\r\n\t };\r\n\t this.isRowFullyVisible = function(row) {\r\n\t return (row >= this.renderer.getFirstFullyVisibleRow() && row <= this.renderer.getLastFullyVisibleRow());\r\n\t };\r\n\t this.$getVisibleRowCount = function() {\r\n\t return this.renderer.getScrollBottomRow() - this.renderer.getScrollTopRow() + 1;\r\n\t };\r\n\r\n\t this.$moveByPage = function(dir, select) {\r\n\t var renderer = this.renderer;\r\n\t var config = this.renderer.layerConfig;\r\n\t var rows = dir * Math.floor(config.height / config.lineHeight);\r\n\r\n\t this.$blockScrolling++;\r\n\t if (select === true) {\r\n\t this.selection.$moveSelection(function(){\r\n\t this.moveCursorBy(rows, 0);\r\n\t });\r\n\t } else if (select === false) {\r\n\t this.selection.moveCursorBy(rows, 0);\r\n\t this.selection.clearSelection();\r\n\t }\r\n\t this.$blockScrolling--;\r\n\r\n\t var scrollTop = renderer.scrollTop;\r\n\r\n\t renderer.scrollBy(0, rows * config.lineHeight);\r\n\t if (select != null)\r\n\t renderer.scrollCursorIntoView(null, 0.5);\r\n\r\n\t renderer.animateScrolling(scrollTop);\r\n\t };\r\n\t this.selectPageDown = function() {\r\n\t this.$moveByPage(1, true);\r\n\t };\r\n\t this.selectPageUp = function() {\r\n\t this.$moveByPage(-1, true);\r\n\t };\r\n\t this.gotoPageDown = function() {\r\n\t this.$moveByPage(1, false);\r\n\t };\r\n\t this.gotoPageUp = function() {\r\n\t this.$moveByPage(-1, false);\r\n\t };\r\n\t this.scrollPageDown = function() {\r\n\t this.$moveByPage(1);\r\n\t };\r\n\t this.scrollPageUp = function() {\r\n\t this.$moveByPage(-1);\r\n\t };\r\n\t this.scrollToRow = function(row) {\r\n\t this.renderer.scrollToRow(row);\r\n\t };\r\n\t this.scrollToLine = function(line, center, animate, callback) {\r\n\t this.renderer.scrollToLine(line, center, animate, callback);\r\n\t };\r\n\t this.centerSelection = function() {\r\n\t var range = this.getSelectionRange();\r\n\t var pos = {\r\n\t row: Math.floor(range.start.row + (range.end.row - range.start.row) / 2),\r\n\t column: Math.floor(range.start.column + (range.end.column - range.start.column) / 2)\r\n\t };\r\n\t this.renderer.alignCursor(pos, 0.5);\r\n\t };\r\n\t this.getCursorPosition = function() {\r\n\t return this.selection.getCursor();\r\n\t };\r\n\t this.getCursorPositionScreen = function() {\r\n\t return this.session.documentToScreenPosition(this.getCursorPosition());\r\n\t };\r\n\t this.getSelectionRange = function() {\r\n\t return this.selection.getRange();\r\n\t };\r\n\t this.selectAll = function() {\r\n\t this.$blockScrolling += 1;\r\n\t this.selection.selectAll();\r\n\t this.$blockScrolling -= 1;\r\n\t };\r\n\t this.clearSelection = function() {\r\n\t this.selection.clearSelection();\r\n\t };\r\n\t this.moveCursorTo = function(row, column) {\r\n\t this.selection.moveCursorTo(row, column);\r\n\t };\r\n\t this.moveCursorToPosition = function(pos) {\r\n\t this.selection.moveCursorToPosition(pos);\r\n\t };\r\n\t this.jumpToMatching = function(select, expand) {\r\n\t var cursor = this.getCursorPosition();\r\n\t var iterator = new TokenIterator(this.session, cursor.row, cursor.column);\r\n\t var prevToken = iterator.getCurrentToken();\r\n\t var token = prevToken || iterator.stepForward();\r\n\r\n\t if (!token) return;\r\n\t var matchType;\r\n\t var found = false;\r\n\t var depth = {};\r\n\t var i = cursor.column - token.start;\r\n\t var bracketType;\r\n\t var brackets = {\r\n\t \")\": \"(\",\r\n\t \"(\": \"(\",\r\n\t \"]\": \"[\",\r\n\t \"[\": \"[\",\r\n\t \"{\": \"{\",\r\n\t \"}\": \"{\"\r\n\t };\r\n\t \r\n\t do {\r\n\t if (token.value.match(/[{}()\\[\\]]/g)) {\r\n\t for (; i < token.value.length && !found; i++) {\r\n\t if (!brackets[token.value[i]]) {\r\n\t continue;\r\n\t }\r\n\r\n\t bracketType = brackets[token.value[i]] + '.' + token.type.replace(\"rparen\", \"lparen\");\r\n\r\n\t if (isNaN(depth[bracketType])) {\r\n\t depth[bracketType] = 0;\r\n\t }\r\n\r\n\t switch (token.value[i]) {\r\n\t case '(':\r\n\t case '[':\r\n\t case '{':\r\n\t depth[bracketType]++;\r\n\t break;\r\n\t case ')':\r\n\t case ']':\r\n\t case '}':\r\n\t depth[bracketType]--;\r\n\r\n\t if (depth[bracketType] === -1) {\r\n\t matchType = 'bracket';\r\n\t found = true;\r\n\t }\r\n\t break;\r\n\t }\r\n\t }\r\n\t }\r\n\t else if (token && token.type.indexOf('tag-name') !== -1) {\r\n\t if (isNaN(depth[token.value])) {\r\n\t depth[token.value] = 0;\r\n\t }\r\n\t \r\n\t if (prevToken.value === '<') {\r\n\t depth[token.value]++;\r\n\t }\r\n\t else if (prevToken.value === '= 0; --i) {\r\n\t if(this.$tryReplace(ranges[i], replacement)) {\r\n\t replaced++;\r\n\t }\r\n\t }\r\n\r\n\t this.selection.setSelectionRange(selection);\r\n\t this.$blockScrolling -= 1;\r\n\r\n\t return replaced;\r\n\t };\r\n\r\n\t this.$tryReplace = function(range, replacement) {\r\n\t var input = this.session.getTextRange(range);\r\n\t replacement = this.$search.replace(input, replacement);\r\n\t if (replacement !== null) {\r\n\t range.end = this.session.replace(range, replacement);\r\n\t return range;\r\n\t } else {\r\n\t return null;\r\n\t }\r\n\t };\r\n\t this.getLastSearchOptions = function() {\r\n\t return this.$search.getOptions();\r\n\t };\r\n\t this.find = function(needle, options, animate) {\r\n\t if (!options)\r\n\t options = {};\r\n\r\n\t if (typeof needle == \"string\" || needle instanceof RegExp)\r\n\t options.needle = needle;\r\n\t else if (typeof needle == \"object\")\r\n\t oop.mixin(options, needle);\r\n\r\n\t var range = this.selection.getRange();\r\n\t if (options.needle == null) {\r\n\t needle = this.session.getTextRange(range)\r\n\t || this.$search.$options.needle;\r\n\t if (!needle) {\r\n\t range = this.session.getWordRange(range.start.row, range.start.column);\r\n\t needle = this.session.getTextRange(range);\r\n\t }\r\n\t this.$search.set({needle: needle});\r\n\t }\r\n\r\n\t this.$search.set(options);\r\n\t if (!options.start)\r\n\t this.$search.set({start: range});\r\n\r\n\t var newRange = this.$search.find(this.session);\r\n\t if (options.preventScroll)\r\n\t return newRange;\r\n\t if (newRange) {\r\n\t this.revealRange(newRange, animate);\r\n\t return newRange;\r\n\t }\r\n\t if (options.backwards)\r\n\t range.start = range.end;\r\n\t else\r\n\t range.end = range.start;\r\n\t this.selection.setRange(range);\r\n\t };\r\n\t this.findNext = function(options, animate) {\r\n\t this.find({skipCurrent: true, backwards: false}, options, animate);\r\n\t };\r\n\t this.findPrevious = function(options, animate) {\r\n\t this.find(options, {skipCurrent: true, backwards: true}, animate);\r\n\t };\r\n\r\n\t this.revealRange = function(range, animate) {\r\n\t this.$blockScrolling += 1;\r\n\t this.session.unfold(range);\r\n\t this.selection.setSelectionRange(range);\r\n\t this.$blockScrolling -= 1;\r\n\r\n\t var scrollTop = this.renderer.scrollTop;\r\n\t this.renderer.scrollSelectionIntoView(range.start, range.end, 0.5);\r\n\t if (animate !== false)\r\n\t this.renderer.animateScrolling(scrollTop);\r\n\t };\r\n\t this.undo = function() {\r\n\t this.$blockScrolling++;\r\n\t this.session.getUndoManager().undo();\r\n\t this.$blockScrolling--;\r\n\t this.renderer.scrollCursorIntoView(null, 0.5);\r\n\t };\r\n\t this.redo = function() {\r\n\t this.$blockScrolling++;\r\n\t this.session.getUndoManager().redo();\r\n\t this.$blockScrolling--;\r\n\t this.renderer.scrollCursorIntoView(null, 0.5);\r\n\t };\r\n\t this.destroy = function() {\r\n\t this.renderer.destroy();\r\n\t this._signal(\"destroy\", this);\r\n\t if (this.session) {\r\n\t this.session.destroy();\r\n\t }\r\n\t };\r\n\t this.setAutoScrollEditorIntoView = function(enable) {\r\n\t if (!enable)\r\n\t return;\r\n\t var rect;\r\n\t var self = this;\r\n\t var shouldScroll = false;\r\n\t if (!this.$scrollAnchor)\r\n\t this.$scrollAnchor = document.createElement(\"div\");\r\n\t var scrollAnchor = this.$scrollAnchor;\r\n\t scrollAnchor.style.cssText = \"position:absolute\";\r\n\t this.container.insertBefore(scrollAnchor, this.container.firstChild);\r\n\t var onChangeSelection = this.on(\"changeSelection\", function() {\r\n\t shouldScroll = true;\r\n\t });\r\n\t var onBeforeRender = this.renderer.on(\"beforeRender\", function() {\r\n\t if (shouldScroll)\r\n\t rect = self.renderer.container.getBoundingClientRect();\r\n\t });\r\n\t var onAfterRender = this.renderer.on(\"afterRender\", function() {\r\n\t if (shouldScroll && rect && (self.isFocused()\r\n\t || self.searchBox && self.searchBox.isFocused())\r\n\t ) {\r\n\t var renderer = self.renderer;\r\n\t var pos = renderer.$cursorLayer.$pixelPos;\r\n\t var config = renderer.layerConfig;\r\n\t var top = pos.top - config.offset;\r\n\t if (pos.top >= 0 && top + rect.top < 0) {\r\n\t shouldScroll = true;\r\n\t } else if (pos.top < config.height &&\r\n\t pos.top + rect.top + config.lineHeight > window.innerHeight) {\r\n\t shouldScroll = false;\r\n\t } else {\r\n\t shouldScroll = null;\r\n\t }\r\n\t if (shouldScroll != null) {\r\n\t scrollAnchor.style.top = top + \"px\";\r\n\t scrollAnchor.style.left = pos.left + \"px\";\r\n\t scrollAnchor.style.height = config.lineHeight + \"px\";\r\n\t scrollAnchor.scrollIntoView(shouldScroll);\r\n\t }\r\n\t shouldScroll = rect = null;\r\n\t }\r\n\t });\r\n\t this.setAutoScrollEditorIntoView = function(enable) {\r\n\t if (enable)\r\n\t return;\r\n\t delete this.setAutoScrollEditorIntoView;\r\n\t this.off(\"changeSelection\", onChangeSelection);\r\n\t this.renderer.off(\"afterRender\", onAfterRender);\r\n\t this.renderer.off(\"beforeRender\", onBeforeRender);\r\n\t };\r\n\t };\r\n\r\n\r\n\t this.$resetCursorStyle = function() {\r\n\t var style = this.$cursorStyle || \"ace\";\r\n\t var cursorLayer = this.renderer.$cursorLayer;\r\n\t if (!cursorLayer)\r\n\t return;\r\n\t cursorLayer.setSmoothBlinking(/smooth/.test(style));\r\n\t cursorLayer.isBlinking = !this.$readOnly && style != \"wide\";\r\n\t dom.setCssClass(cursorLayer.element, \"ace_slim-cursors\", /slim/.test(style));\r\n\t };\r\n\r\n\t}).call(Editor.prototype);\r\n\r\n\r\n\r\n\tconfig.defineOptions(Editor.prototype, \"editor\", {\r\n\t selectionStyle: {\r\n\t set: function(style) {\r\n\t this.onSelectionChange();\r\n\t this._signal(\"changeSelectionStyle\", {data: style});\r\n\t },\r\n\t initialValue: \"line\"\r\n\t },\r\n\t highlightActiveLine: {\r\n\t set: function() {this.$updateHighlightActiveLine();},\r\n\t initialValue: true\r\n\t },\r\n\t highlightSelectedWord: {\r\n\t set: function(shouldHighlight) {this.$onSelectionChange();},\r\n\t initialValue: true\r\n\t },\r\n\t readOnly: {\r\n\t set: function(readOnly) {\r\n\t this.$resetCursorStyle(); \r\n\t },\r\n\t initialValue: false\r\n\t },\r\n\t cursorStyle: {\r\n\t set: function(val) { this.$resetCursorStyle(); },\r\n\t values: [\"ace\", \"slim\", \"smooth\", \"wide\"],\r\n\t initialValue: \"ace\"\r\n\t },\r\n\t mergeUndoDeltas: {\r\n\t values: [false, true, \"always\"],\r\n\t initialValue: true\r\n\t },\r\n\t behavioursEnabled: {initialValue: true},\r\n\t wrapBehavioursEnabled: {initialValue: true},\r\n\t autoScrollEditorIntoView: {\r\n\t set: function(val) {this.setAutoScrollEditorIntoView(val)}\r\n\t },\r\n\t keyboardHandler: {\r\n\t set: function(val) { this.setKeyboardHandler(val); },\r\n\t get: function() { return this.keybindingId; },\r\n\t handlesSet: true\r\n\t },\r\n\r\n\t hScrollBarAlwaysVisible: \"renderer\",\r\n\t vScrollBarAlwaysVisible: \"renderer\",\r\n\t highlightGutterLine: \"renderer\",\r\n\t animatedScroll: \"renderer\",\r\n\t showInvisibles: \"renderer\",\r\n\t showPrintMargin: \"renderer\",\r\n\t printMarginColumn: \"renderer\",\r\n\t printMargin: \"renderer\",\r\n\t fadeFoldWidgets: \"renderer\",\r\n\t showFoldWidgets: \"renderer\",\r\n\t showLineNumbers: \"renderer\",\r\n\t showGutter: \"renderer\",\r\n\t displayIndentGuides: \"renderer\",\r\n\t fontSize: \"renderer\",\r\n\t fontFamily: \"renderer\",\r\n\t maxLines: \"renderer\",\r\n\t minLines: \"renderer\",\r\n\t scrollPastEnd: \"renderer\",\r\n\t fixedWidthGutter: \"renderer\",\r\n\t theme: \"renderer\",\r\n\r\n\t scrollSpeed: \"$mouseHandler\",\r\n\t dragDelay: \"$mouseHandler\",\r\n\t dragEnabled: \"$mouseHandler\",\r\n\t focusTimout: \"$mouseHandler\",\r\n\t tooltipFollowsMouse: \"$mouseHandler\",\r\n\r\n\t firstLineNumber: \"session\",\r\n\t overwrite: \"session\",\r\n\t newLineMode: \"session\",\r\n\t useWorker: \"session\",\r\n\t useSoftTabs: \"session\",\r\n\t tabSize: \"session\",\r\n\t wrap: \"session\",\r\n\t indentedSoftWrap: \"session\",\r\n\t foldStyle: \"session\",\r\n\t mode: \"session\"\r\n\t});\r\n\r\n\texports.Editor = Editor;\r\n\t});\r\n\r\n\tace.define(\"ace/undomanager\",[\"require\",\"exports\",\"module\"], function(acequire, exports, module) {\r\n\t\"use strict\";\r\n\tvar UndoManager = function() {\r\n\t this.reset();\r\n\t};\r\n\r\n\t(function() {\r\n\t this.execute = function(options) {\r\n\t var deltaSets = options.args[0];\r\n\t this.$doc = options.args[1];\r\n\t if (options.merge && this.hasUndo()){\r\n\t this.dirtyCounter--;\r\n\t deltaSets = this.$undoStack.pop().concat(deltaSets);\r\n\t }\r\n\t this.$undoStack.push(deltaSets);\r\n\t this.$redoStack = [];\r\n\t if (this.dirtyCounter < 0) {\r\n\t this.dirtyCounter = NaN;\r\n\t }\r\n\t this.dirtyCounter++;\r\n\t };\r\n\t this.undo = function(dontSelect) {\r\n\t var deltaSets = this.$undoStack.pop();\r\n\t var undoSelectionRange = null;\r\n\t if (deltaSets) {\r\n\t undoSelectionRange = this.$doc.undoChanges(deltaSets, dontSelect);\r\n\t this.$redoStack.push(deltaSets);\r\n\t this.dirtyCounter--;\r\n\t }\r\n\r\n\t return undoSelectionRange;\r\n\t };\r\n\t this.redo = function(dontSelect) {\r\n\t var deltaSets = this.$redoStack.pop();\r\n\t var redoSelectionRange = null;\r\n\t if (deltaSets) {\r\n\t redoSelectionRange =\r\n\t this.$doc.redoChanges(this.$deserializeDeltas(deltaSets), dontSelect);\r\n\t this.$undoStack.push(deltaSets);\r\n\t this.dirtyCounter++;\r\n\t }\r\n\t return redoSelectionRange;\r\n\t };\r\n\t this.reset = function() {\r\n\t this.$undoStack = [];\r\n\t this.$redoStack = [];\r\n\t this.dirtyCounter = 0;\r\n\t };\r\n\t this.hasUndo = function() {\r\n\t return this.$undoStack.length > 0;\r\n\t };\r\n\t this.hasRedo = function() {\r\n\t return this.$redoStack.length > 0;\r\n\t };\r\n\t this.markClean = function() {\r\n\t this.dirtyCounter = 0;\r\n\t };\r\n\t this.isClean = function() {\r\n\t return this.dirtyCounter === 0;\r\n\t };\r\n\t this.$serializeDeltas = function(deltaSets) {\r\n\t return cloneDeltaSetsObj(deltaSets, $serializeDelta);\r\n\t };\r\n\t this.$deserializeDeltas = function(deltaSets) {\r\n\t return cloneDeltaSetsObj(deltaSets, $deserializeDelta);\r\n\t };\r\n\t \r\n\t function $serializeDelta(delta){\r\n\t return {\r\n\t action: delta.action,\r\n\t start: delta.start,\r\n\t end: delta.end,\r\n\t lines: delta.lines.length == 1 ? null : delta.lines,\r\n\t text: delta.lines.length == 1 ? delta.lines[0] : null\r\n\t };\r\n\t }\r\n\t \r\n\t function $deserializeDelta(delta) {\r\n\t return {\r\n\t action: delta.action,\r\n\t start: delta.start,\r\n\t end: delta.end,\r\n\t lines: delta.lines || [delta.text]\r\n\t };\r\n\t }\r\n\t \r\n\t function cloneDeltaSetsObj(deltaSets_old, fnGetModifiedDelta) {\r\n\t var deltaSets_new = new Array(deltaSets_old.length);\r\n\t for (var i = 0; i < deltaSets_old.length; i++) {\r\n\t var deltaSet_old = deltaSets_old[i];\r\n\t var deltaSet_new = { group: deltaSet_old.group, deltas: new Array(deltaSet_old.length)};\r\n\t \r\n\t for (var j = 0; j < deltaSet_old.deltas.length; j++) {\r\n\t var delta_old = deltaSet_old.deltas[j];\r\n\t deltaSet_new.deltas[j] = fnGetModifiedDelta(delta_old);\r\n\t }\r\n\t \r\n\t deltaSets_new[i] = deltaSet_new;\r\n\t }\r\n\t return deltaSets_new;\r\n\t }\r\n\t \r\n\t}).call(UndoManager.prototype);\r\n\r\n\texports.UndoManager = UndoManager;\r\n\t});\r\n\r\n\tace.define(\"ace/layer/gutter\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/lib/event_emitter\"], function(acequire, exports, module) {\r\n\t\"use strict\";\r\n\r\n\tvar dom = acequire(\"../lib/dom\");\r\n\tvar oop = acequire(\"../lib/oop\");\r\n\tvar lang = acequire(\"../lib/lang\");\r\n\tvar EventEmitter = acequire(\"../lib/event_emitter\").EventEmitter;\r\n\r\n\tvar Gutter = function(parentEl) {\r\n\t this.element = dom.createElement(\"div\");\r\n\t this.element.className = \"ace_layer ace_gutter-layer\";\r\n\t parentEl.appendChild(this.element);\r\n\t this.setShowFoldWidgets(this.$showFoldWidgets);\r\n\t \r\n\t this.gutterWidth = 0;\r\n\r\n\t this.$annotations = [];\r\n\t this.$updateAnnotations = this.$updateAnnotations.bind(this);\r\n\r\n\t this.$cells = [];\r\n\t};\r\n\r\n\t(function() {\r\n\r\n\t oop.implement(this, EventEmitter);\r\n\r\n\t this.setSession = function(session) {\r\n\t if (this.session)\r\n\t this.session.removeEventListener(\"change\", this.$updateAnnotations);\r\n\t this.session = session;\r\n\t if (session)\r\n\t session.on(\"change\", this.$updateAnnotations);\r\n\t };\r\n\r\n\t this.addGutterDecoration = function(row, className){\r\n\t if (window.console)\r\n\t console.warn && console.warn(\"deprecated use session.addGutterDecoration\");\r\n\t this.session.addGutterDecoration(row, className);\r\n\t };\r\n\r\n\t this.removeGutterDecoration = function(row, className){\r\n\t if (window.console)\r\n\t console.warn && console.warn(\"deprecated use session.removeGutterDecoration\");\r\n\t this.session.removeGutterDecoration(row, className);\r\n\t };\r\n\r\n\t this.setAnnotations = function(annotations) {\r\n\t this.$annotations = [];\r\n\t for (var i = 0; i < annotations.length; i++) {\r\n\t var annotation = annotations[i];\r\n\t var row = annotation.row;\r\n\t var rowInfo = this.$annotations[row];\r\n\t if (!rowInfo)\r\n\t rowInfo = this.$annotations[row] = {text: []};\r\n\t \r\n\t var annoText = annotation.text;\r\n\t annoText = annoText ? lang.escapeHTML(annoText) : annotation.html || \"\";\r\n\r\n\t if (rowInfo.text.indexOf(annoText) === -1)\r\n\t rowInfo.text.push(annoText);\r\n\r\n\t var type = annotation.type;\r\n\t if (type == \"error\")\r\n\t rowInfo.className = \" ace_error\";\r\n\t else if (type == \"warning\" && rowInfo.className != \" ace_error\")\r\n\t rowInfo.className = \" ace_warning\";\r\n\t else if (type == \"info\" && (!rowInfo.className))\r\n\t rowInfo.className = \" ace_info\";\r\n\t }\r\n\t };\r\n\r\n\t this.$updateAnnotations = function (delta) {\r\n\t if (!this.$annotations.length)\r\n\t return;\r\n\t var firstRow = delta.start.row;\r\n\t var len = delta.end.row - firstRow;\r\n\t if (len === 0) {\r\n\t } else if (delta.action == 'remove') {\r\n\t this.$annotations.splice(firstRow, len + 1, null);\r\n\t } else {\r\n\t var args = new Array(len + 1);\r\n\t args.unshift(firstRow, 1);\r\n\t this.$annotations.splice.apply(this.$annotations, args);\r\n\t }\r\n\t };\r\n\r\n\t this.update = function(config) {\r\n\t var session = this.session;\r\n\t var firstRow = config.firstRow;\r\n\t var lastRow = Math.min(config.lastRow + config.gutterOffset, // needed to compensate for hor scollbar\r\n\t session.getLength() - 1);\r\n\t var fold = session.getNextFoldLine(firstRow);\r\n\t var foldStart = fold ? fold.start.row : Infinity;\r\n\t var foldWidgets = this.$showFoldWidgets && session.foldWidgets;\r\n\t var breakpoints = session.$breakpoints;\r\n\t var decorations = session.$decorations;\r\n\t var firstLineNumber = session.$firstLineNumber;\r\n\t var lastLineNumber = 0;\r\n\t \r\n\t var gutterRenderer = session.gutterRenderer || this.$renderer;\r\n\r\n\t var cell = null;\r\n\t var index = -1;\r\n\t var row = firstRow;\r\n\t while (true) {\r\n\t if (row > foldStart) {\r\n\t row = fold.end.row + 1;\r\n\t fold = session.getNextFoldLine(row, fold);\r\n\t foldStart = fold ? fold.start.row : Infinity;\r\n\t }\r\n\t if (row > lastRow) {\r\n\t while (this.$cells.length > index + 1) {\r\n\t cell = this.$cells.pop();\r\n\t this.element.removeChild(cell.element);\r\n\t }\r\n\t break;\r\n\t }\r\n\r\n\t cell = this.$cells[++index];\r\n\t if (!cell) {\r\n\t cell = {element: null, textNode: null, foldWidget: null};\r\n\t cell.element = dom.createElement(\"div\");\r\n\t cell.textNode = document.createTextNode('');\r\n\t cell.element.appendChild(cell.textNode);\r\n\t this.element.appendChild(cell.element);\r\n\t this.$cells[index] = cell;\r\n\t }\r\n\r\n\t var className = \"ace_gutter-cell \";\r\n\t if (breakpoints[row])\r\n\t className += breakpoints[row];\r\n\t if (decorations[row])\r\n\t className += decorations[row];\r\n\t if (this.$annotations[row])\r\n\t className += this.$annotations[row].className;\r\n\t if (cell.element.className != className)\r\n\t cell.element.className = className;\r\n\r\n\t var height = session.getRowLength(row) * config.lineHeight + \"px\";\r\n\t if (height != cell.element.style.height)\r\n\t cell.element.style.height = height;\r\n\r\n\t if (foldWidgets) {\r\n\t var c = foldWidgets[row];\r\n\t if (c == null)\r\n\t c = foldWidgets[row] = session.getFoldWidget(row);\r\n\t }\r\n\r\n\t if (c) {\r\n\t if (!cell.foldWidget) {\r\n\t cell.foldWidget = dom.createElement(\"span\");\r\n\t cell.element.appendChild(cell.foldWidget);\r\n\t }\r\n\t var className = \"ace_fold-widget ace_\" + c;\r\n\t if (c == \"start\" && row == foldStart && row < fold.end.row)\r\n\t className += \" ace_closed\";\r\n\t else\r\n\t className += \" ace_open\";\r\n\t if (cell.foldWidget.className != className)\r\n\t cell.foldWidget.className = className;\r\n\r\n\t var height = config.lineHeight + \"px\";\r\n\t if (cell.foldWidget.style.height != height)\r\n\t cell.foldWidget.style.height = height;\r\n\t } else {\r\n\t if (cell.foldWidget) {\r\n\t cell.element.removeChild(cell.foldWidget);\r\n\t cell.foldWidget = null;\r\n\t }\r\n\t }\r\n\t \r\n\t var text = lastLineNumber = gutterRenderer\r\n\t ? gutterRenderer.getText(session, row)\r\n\t : row + firstLineNumber;\r\n\t if (text != cell.textNode.data)\r\n\t cell.textNode.data = text;\r\n\r\n\t row++;\r\n\t }\r\n\r\n\t this.element.style.height = config.minHeight + \"px\";\r\n\r\n\t if (this.$fixedWidth || session.$useWrapMode)\r\n\t lastLineNumber = session.getLength() + firstLineNumber;\r\n\r\n\t var gutterWidth = gutterRenderer \r\n\t ? gutterRenderer.getWidth(session, lastLineNumber, config)\r\n\t : lastLineNumber.toString().length * config.characterWidth;\r\n\t \r\n\t var padding = this.$padding || this.$computePadding();\r\n\t gutterWidth += padding.left + padding.right;\r\n\t if (gutterWidth !== this.gutterWidth && !isNaN(gutterWidth)) {\r\n\t this.gutterWidth = gutterWidth;\r\n\t this.element.style.width = Math.ceil(this.gutterWidth) + \"px\";\r\n\t this._emit(\"changeGutterWidth\", gutterWidth);\r\n\t }\r\n\t };\r\n\r\n\t this.$fixedWidth = false;\r\n\t \r\n\t this.$showLineNumbers = true;\r\n\t this.$renderer = \"\";\r\n\t this.setShowLineNumbers = function(show) {\r\n\t this.$renderer = !show && {\r\n\t getWidth: function() {return \"\"},\r\n\t getText: function() {return \"\"}\r\n\t };\r\n\t };\r\n\t \r\n\t this.getShowLineNumbers = function() {\r\n\t return this.$showLineNumbers;\r\n\t };\r\n\t \r\n\t this.$showFoldWidgets = true;\r\n\t this.setShowFoldWidgets = function(show) {\r\n\t if (show)\r\n\t dom.addCssClass(this.element, \"ace_folding-enabled\");\r\n\t else\r\n\t dom.removeCssClass(this.element, \"ace_folding-enabled\");\r\n\r\n\t this.$showFoldWidgets = show;\r\n\t this.$padding = null;\r\n\t };\r\n\t \r\n\t this.getShowFoldWidgets = function() {\r\n\t return this.$showFoldWidgets;\r\n\t };\r\n\r\n\t this.$computePadding = function() {\r\n\t if (!this.element.firstChild)\r\n\t return {left: 0, right: 0};\r\n\t var style = dom.computedStyle(this.element.firstChild);\r\n\t this.$padding = {};\r\n\t this.$padding.left = parseInt(style.paddingLeft) + 1 || 0;\r\n\t this.$padding.right = parseInt(style.paddingRight) || 0;\r\n\t return this.$padding;\r\n\t };\r\n\r\n\t this.getRegion = function(point) {\r\n\t var padding = this.$padding || this.$computePadding();\r\n\t var rect = this.element.getBoundingClientRect();\r\n\t if (point.x < padding.left + rect.left)\r\n\t return \"markers\";\r\n\t if (this.$showFoldWidgets && point.x > rect.right - padding.right)\r\n\t return \"foldWidgets\";\r\n\t };\r\n\r\n\t}).call(Gutter.prototype);\r\n\r\n\texports.Gutter = Gutter;\r\n\r\n\t});\r\n\r\n\tace.define(\"ace/layer/marker\",[\"require\",\"exports\",\"module\",\"ace/range\",\"ace/lib/dom\"], function(acequire, exports, module) {\r\n\t\"use strict\";\r\n\r\n\tvar Range = acequire(\"../range\").Range;\r\n\tvar dom = acequire(\"../lib/dom\");\r\n\r\n\tvar Marker = function(parentEl) {\r\n\t this.element = dom.createElement(\"div\");\r\n\t this.element.className = \"ace_layer ace_marker-layer\";\r\n\t parentEl.appendChild(this.element);\r\n\t};\r\n\r\n\t(function() {\r\n\r\n\t this.$padding = 0;\r\n\r\n\t this.setPadding = function(padding) {\r\n\t this.$padding = padding;\r\n\t };\r\n\t this.setSession = function(session) {\r\n\t this.session = session;\r\n\t };\r\n\t \r\n\t this.setMarkers = function(markers) {\r\n\t this.markers = markers;\r\n\t };\r\n\r\n\t this.update = function(config) {\r\n\t var config = config || this.config;\r\n\t if (!config)\r\n\t return;\r\n\r\n\t this.config = config;\r\n\r\n\r\n\t var html = [];\r\n\t for (var key in this.markers) {\r\n\t var marker = this.markers[key];\r\n\r\n\t if (!marker.range) {\r\n\t marker.update(html, this, this.session, config);\r\n\t continue;\r\n\t }\r\n\r\n\t var range = marker.range.clipRows(config.firstRow, config.lastRow);\r\n\t if (range.isEmpty()) continue;\r\n\r\n\t range = range.toScreenRange(this.session);\r\n\t if (marker.renderer) {\r\n\t var top = this.$getTop(range.start.row, config);\r\n\t var left = this.$padding + range.start.column * config.characterWidth;\r\n\t marker.renderer(html, range, left, top, config);\r\n\t } else if (marker.type == \"fullLine\") {\r\n\t this.drawFullLineMarker(html, range, marker.clazz, config);\r\n\t } else if (marker.type == \"screenLine\") {\r\n\t this.drawScreenLineMarker(html, range, marker.clazz, config);\r\n\t } else if (range.isMultiLine()) {\r\n\t if (marker.type == \"text\")\r\n\t this.drawTextMarker(html, range, marker.clazz, config);\r\n\t else\r\n\t this.drawMultiLineMarker(html, range, marker.clazz, config);\r\n\t } else {\r\n\t this.drawSingleLineMarker(html, range, marker.clazz + \" ace_start\" + \" ace_br15\", config);\r\n\t }\r\n\t }\r\n\t this.element.innerHTML = html.join(\"\");\r\n\t };\r\n\r\n\t this.$getTop = function(row, layerConfig) {\r\n\t return (row - layerConfig.firstRowScreen) * layerConfig.lineHeight;\r\n\t };\r\n\r\n\t function getBorderClass(tl, tr, br, bl) {\r\n\t return (tl ? 1 : 0) | (tr ? 2 : 0) | (br ? 4 : 0) | (bl ? 8 : 0);\r\n\t }\r\n\t this.drawTextMarker = function(stringBuilder, range, clazz, layerConfig, extraStyle) {\r\n\t var session = this.session;\r\n\t var start = range.start.row;\r\n\t var end = range.end.row;\r\n\t var row = start;\r\n\t var prev = 0; \r\n\t var curr = 0;\r\n\t var next = session.getScreenLastRowColumn(row);\r\n\t var lineRange = new Range(row, range.start.column, row, curr);\r\n\t for (; row <= end; row++) {\r\n\t lineRange.start.row = lineRange.end.row = row;\r\n\t lineRange.start.column = row == start ? range.start.column : session.getRowWrapIndent(row);\r\n\t lineRange.end.column = next;\r\n\t prev = curr;\r\n\t curr = next;\r\n\t next = row + 1 < end ? session.getScreenLastRowColumn(row + 1) : row == end ? 0 : range.end.column;\r\n\t this.drawSingleLineMarker(stringBuilder, lineRange, \r\n\t clazz + (row == start ? \" ace_start\" : \"\") + \" ace_br\"\r\n\t + getBorderClass(row == start || row == start + 1 && range.start.column, prev < curr, curr > next, row == end),\r\n\t layerConfig, row == end ? 0 : 1, extraStyle);\r\n\t }\r\n\t };\r\n\t this.drawMultiLineMarker = function(stringBuilder, range, clazz, config, extraStyle) {\r\n\t var padding = this.$padding;\r\n\t var height = config.lineHeight;\r\n\t var top = this.$getTop(range.start.row, config);\r\n\t var left = padding + range.start.column * config.characterWidth;\r\n\t extraStyle = extraStyle || \"\";\r\n\r\n\t stringBuilder.push(\r\n\t \"
\"\r\n\t );\r\n\t top = this.$getTop(range.end.row, config);\r\n\t var width = range.end.column * config.characterWidth;\r\n\r\n\t stringBuilder.push(\r\n\t \"
\"\r\n\t );\r\n\t height = (range.end.row - range.start.row - 1) * config.lineHeight;\r\n\t if (height <= 0)\r\n\t return;\r\n\t top = this.$getTop(range.start.row + 1, config);\r\n\t \r\n\t var radiusClass = (range.start.column ? 1 : 0) | (range.end.column ? 0 : 8);\r\n\r\n\t stringBuilder.push(\r\n\t \"
\"\r\n\t );\r\n\t };\r\n\t this.drawSingleLineMarker = function(stringBuilder, range, clazz, config, extraLength, extraStyle) {\r\n\t var height = config.lineHeight;\r\n\t var width = (range.end.column + (extraLength || 0) - range.start.column) * config.characterWidth;\r\n\r\n\t var top = this.$getTop(range.start.row, config);\r\n\t var left = this.$padding + range.start.column * config.characterWidth;\r\n\r\n\t stringBuilder.push(\r\n\t \"
\"\r\n\t );\r\n\t };\r\n\r\n\t this.drawFullLineMarker = function(stringBuilder, range, clazz, config, extraStyle) {\r\n\t var top = this.$getTop(range.start.row, config);\r\n\t var height = config.lineHeight;\r\n\t if (range.start.row != range.end.row)\r\n\t height += this.$getTop(range.end.row, config) - top;\r\n\r\n\t stringBuilder.push(\r\n\t \"
\"\r\n\t );\r\n\t };\r\n\t \r\n\t this.drawScreenLineMarker = function(stringBuilder, range, clazz, config, extraStyle) {\r\n\t var top = this.$getTop(range.start.row, config);\r\n\t var height = config.lineHeight;\r\n\r\n\t stringBuilder.push(\r\n\t \"
\"\r\n\t );\r\n\t };\r\n\r\n\t}).call(Marker.prototype);\r\n\r\n\texports.Marker = Marker;\r\n\r\n\t});\r\n\r\n\tace.define(\"ace/layer/text\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/dom\",\"ace/lib/lang\",\"ace/lib/useragent\",\"ace/lib/event_emitter\"], function(acequire, exports, module) {\r\n\t\"use strict\";\r\n\r\n\tvar oop = acequire(\"../lib/oop\");\r\n\tvar dom = acequire(\"../lib/dom\");\r\n\tvar lang = acequire(\"../lib/lang\");\r\n\tvar useragent = acequire(\"../lib/useragent\");\r\n\tvar EventEmitter = acequire(\"../lib/event_emitter\").EventEmitter;\r\n\r\n\tvar Text = function(parentEl) {\r\n\t this.element = dom.createElement(\"div\");\r\n\t this.element.className = \"ace_layer ace_text-layer\";\r\n\t parentEl.appendChild(this.element);\r\n\t this.$updateEolChar = this.$updateEolChar.bind(this);\r\n\t};\r\n\r\n\t(function() {\r\n\r\n\t oop.implement(this, EventEmitter);\r\n\r\n\t this.EOF_CHAR = \"\\xB6\";\r\n\t this.EOL_CHAR_LF = \"\\xAC\";\r\n\t this.EOL_CHAR_CRLF = \"\\xa4\";\r\n\t this.EOL_CHAR = this.EOL_CHAR_LF;\r\n\t this.TAB_CHAR = \"\\u2014\"; //\"\\u21E5\";\r\n\t this.SPACE_CHAR = \"\\xB7\";\r\n\t this.$padding = 0;\r\n\r\n\t this.$updateEolChar = function() {\r\n\t var EOL_CHAR = this.session.doc.getNewLineCharacter() == \"\\n\"\r\n\t ? this.EOL_CHAR_LF\r\n\t : this.EOL_CHAR_CRLF;\r\n\t if (this.EOL_CHAR != EOL_CHAR) {\r\n\t this.EOL_CHAR = EOL_CHAR;\r\n\t return true;\r\n\t }\r\n\t }\r\n\r\n\t this.setPadding = function(padding) {\r\n\t this.$padding = padding;\r\n\t this.element.style.padding = \"0 \" + padding + \"px\";\r\n\t };\r\n\r\n\t this.getLineHeight = function() {\r\n\t return this.$fontMetrics.$characterSize.height || 0;\r\n\t };\r\n\r\n\t this.getCharacterWidth = function() {\r\n\t return this.$fontMetrics.$characterSize.width || 0;\r\n\t };\r\n\t \r\n\t this.$setFontMetrics = function(measure) {\r\n\t this.$fontMetrics = measure;\r\n\t this.$fontMetrics.on(\"changeCharacterSize\", function(e) {\r\n\t this._signal(\"changeCharacterSize\", e);\r\n\t }.bind(this));\r\n\t this.$pollSizeChanges();\r\n\t }\r\n\r\n\t this.checkForSizeChanges = function() {\r\n\t this.$fontMetrics.checkForSizeChanges();\r\n\t };\r\n\t this.$pollSizeChanges = function() {\r\n\t return this.$pollSizeChangesTimer = this.$fontMetrics.$pollSizeChanges();\r\n\t };\r\n\t this.setSession = function(session) {\r\n\t this.session = session;\r\n\t if (session)\r\n\t this.$computeTabString();\r\n\t };\r\n\r\n\t this.showInvisibles = false;\r\n\t this.setShowInvisibles = function(showInvisibles) {\r\n\t if (this.showInvisibles == showInvisibles)\r\n\t return false;\r\n\r\n\t this.showInvisibles = showInvisibles;\r\n\t this.$computeTabString();\r\n\t return true;\r\n\t };\r\n\r\n\t this.displayIndentGuides = true;\r\n\t this.setDisplayIndentGuides = function(display) {\r\n\t if (this.displayIndentGuides == display)\r\n\t return false;\r\n\r\n\t this.displayIndentGuides = display;\r\n\t this.$computeTabString();\r\n\t return true;\r\n\t };\r\n\r\n\t this.$tabStrings = [];\r\n\t this.onChangeTabSize =\r\n\t this.$computeTabString = function() {\r\n\t var tabSize = this.session.getTabSize();\r\n\t this.tabSize = tabSize;\r\n\t var tabStr = this.$tabStrings = [0];\r\n\t for (var i = 1; i < tabSize + 1; i++) {\r\n\t if (this.showInvisibles) {\r\n\t tabStr.push(\"\"\r\n\t + lang.stringRepeat(this.TAB_CHAR, i)\r\n\t + \"\");\r\n\t } else {\r\n\t tabStr.push(lang.stringRepeat(\" \", i));\r\n\t }\r\n\t }\r\n\t if (this.displayIndentGuides) {\r\n\t this.$indentGuideRe = /\\s\\S| \\t|\\t |\\s$/;\r\n\t var className = \"ace_indent-guide\";\r\n\t var spaceClass = \"\";\r\n\t var tabClass = \"\";\r\n\t if (this.showInvisibles) {\r\n\t className += \" ace_invisible\";\r\n\t spaceClass = \" ace_invisible_space\";\r\n\t tabClass = \" ace_invisible_tab\";\r\n\t var spaceContent = lang.stringRepeat(this.SPACE_CHAR, this.tabSize);\r\n\t var tabContent = lang.stringRepeat(this.TAB_CHAR, this.tabSize);\r\n\t } else{\r\n\t var spaceContent = lang.stringRepeat(\" \", this.tabSize);\r\n\t var tabContent = spaceContent;\r\n\t }\r\n\r\n\t this.$tabStrings[\" \"] = \"\" + spaceContent + \"\";\r\n\t this.$tabStrings[\"\\t\"] = \"\" + tabContent + \"\";\r\n\t }\r\n\t };\r\n\r\n\t this.updateLines = function(config, firstRow, lastRow) {\r\n\t if (this.config.lastRow != config.lastRow ||\r\n\t this.config.firstRow != config.firstRow) {\r\n\t this.scrollLines(config);\r\n\t }\r\n\t this.config = config;\r\n\r\n\t var first = Math.max(firstRow, config.firstRow);\r\n\t var last = Math.min(lastRow, config.lastRow);\r\n\r\n\t var lineElements = this.element.childNodes;\r\n\t var lineElementsIdx = 0;\r\n\r\n\t for (var row = config.firstRow; row < first; row++) {\r\n\t var foldLine = this.session.getFoldLine(row);\r\n\t if (foldLine) {\r\n\t if (foldLine.containsRow(first)) {\r\n\t first = foldLine.start.row;\r\n\t break;\r\n\t } else {\r\n\t row = foldLine.end.row;\r\n\t }\r\n\t }\r\n\t lineElementsIdx ++;\r\n\t }\r\n\r\n\t var row = first;\r\n\t var foldLine = this.session.getNextFoldLine(row);\r\n\t var foldStart = foldLine ? foldLine.start.row : Infinity;\r\n\r\n\t while (true) {\r\n\t if (row > foldStart) {\r\n\t row = foldLine.end.row+1;\r\n\t foldLine = this.session.getNextFoldLine(row, foldLine);\r\n\t foldStart = foldLine ? foldLine.start.row :Infinity;\r\n\t }\r\n\t if (row > last)\r\n\t break;\r\n\r\n\t var lineElement = lineElements[lineElementsIdx++];\r\n\t if (lineElement) {\r\n\t var html = [];\r\n\t this.$renderLine(\r\n\t html, row, !this.$useLineGroups(), row == foldStart ? foldLine : false\r\n\t );\r\n\t lineElement.style.height = config.lineHeight * this.session.getRowLength(row) + \"px\";\r\n\t lineElement.innerHTML = html.join(\"\");\r\n\t }\r\n\t row++;\r\n\t }\r\n\t };\r\n\r\n\t this.scrollLines = function(config) {\r\n\t var oldConfig = this.config;\r\n\t this.config = config;\r\n\r\n\t if (!oldConfig || oldConfig.lastRow < config.firstRow)\r\n\t return this.update(config);\r\n\r\n\t if (config.lastRow < oldConfig.firstRow)\r\n\t return this.update(config);\r\n\r\n\t var el = this.element;\r\n\t if (oldConfig.firstRow < config.firstRow)\r\n\t for (var row=this.session.getFoldedRowCount(oldConfig.firstRow, config.firstRow - 1); row>0; row--)\r\n\t el.removeChild(el.firstChild);\r\n\r\n\t if (oldConfig.lastRow > config.lastRow)\r\n\t for (var row=this.session.getFoldedRowCount(config.lastRow + 1, oldConfig.lastRow); row>0; row--)\r\n\t el.removeChild(el.lastChild);\r\n\r\n\t if (config.firstRow < oldConfig.firstRow) {\r\n\t var fragment = this.$renderLinesFragment(config, config.firstRow, oldConfig.firstRow - 1);\r\n\t if (el.firstChild)\r\n\t el.insertBefore(fragment, el.firstChild);\r\n\t else\r\n\t el.appendChild(fragment);\r\n\t }\r\n\r\n\t if (config.lastRow > oldConfig.lastRow) {\r\n\t var fragment = this.$renderLinesFragment(config, oldConfig.lastRow + 1, config.lastRow);\r\n\t el.appendChild(fragment);\r\n\t }\r\n\t };\r\n\r\n\t this.$renderLinesFragment = function(config, firstRow, lastRow) {\r\n\t var fragment = this.element.ownerDocument.createDocumentFragment();\r\n\t var row = firstRow;\r\n\t var foldLine = this.session.getNextFoldLine(row);\r\n\t var foldStart = foldLine ? foldLine.start.row : Infinity;\r\n\r\n\t while (true) {\r\n\t if (row > foldStart) {\r\n\t row = foldLine.end.row+1;\r\n\t foldLine = this.session.getNextFoldLine(row, foldLine);\r\n\t foldStart = foldLine ? foldLine.start.row : Infinity;\r\n\t }\r\n\t if (row > lastRow)\r\n\t break;\r\n\r\n\t var container = dom.createElement(\"div\");\r\n\r\n\t var html = [];\r\n\t this.$renderLine(html, row, false, row == foldStart ? foldLine : false);\r\n\t container.innerHTML = html.join(\"\");\r\n\t if (this.$useLineGroups()) {\r\n\t container.className = 'ace_line_group';\r\n\t fragment.appendChild(container);\r\n\t container.style.height = config.lineHeight * this.session.getRowLength(row) + \"px\";\r\n\r\n\t } else {\r\n\t while(container.firstChild)\r\n\t fragment.appendChild(container.firstChild);\r\n\t }\r\n\r\n\t row++;\r\n\t }\r\n\t return fragment;\r\n\t };\r\n\r\n\t this.update = function(config) {\r\n\t this.config = config;\r\n\r\n\t var html = [];\r\n\t var firstRow = config.firstRow, lastRow = config.lastRow;\r\n\r\n\t var row = firstRow;\r\n\t var foldLine = this.session.getNextFoldLine(row);\r\n\t var foldStart = foldLine ? foldLine.start.row : Infinity;\r\n\r\n\t while (true) {\r\n\t if (row > foldStart) {\r\n\t row = foldLine.end.row+1;\r\n\t foldLine = this.session.getNextFoldLine(row, foldLine);\r\n\t foldStart = foldLine ? foldLine.start.row :Infinity;\r\n\t }\r\n\t if (row > lastRow)\r\n\t break;\r\n\r\n\t if (this.$useLineGroups())\r\n\t html.push(\"
\")\r\n\r\n\t this.$renderLine(html, row, false, row == foldStart ? foldLine : false);\r\n\r\n\t if (this.$useLineGroups())\r\n\t html.push(\"
\"); // end the line group\r\n\r\n\t row++;\r\n\t }\r\n\t this.element.innerHTML = html.join(\"\");\r\n\t };\r\n\r\n\t this.$textToken = {\r\n\t \"text\": true,\r\n\t \"rparen\": true,\r\n\t \"lparen\": true\r\n\t };\r\n\r\n\t this.$renderToken = function(stringBuilder, screenColumn, token, value) {\r\n\t var self = this;\r\n\t var replaceReg = /\\t|&|<|>|( +)|([\\x00-\\x1f\\x80-\\xa0\\xad\\u1680\\u180E\\u2000-\\u200f\\u2028\\u2029\\u202F\\u205F\\u3000\\uFEFF\\uFFF9-\\uFFFC])|[\\u1100-\\u115F\\u11A3-\\u11A7\\u11FA-\\u11FF\\u2329-\\u232A\\u2E80-\\u2E99\\u2E9B-\\u2EF3\\u2F00-\\u2FD5\\u2FF0-\\u2FFB\\u3000-\\u303E\\u3041-\\u3096\\u3099-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u3190-\\u31BA\\u31C0-\\u31E3\\u31F0-\\u321E\\u3220-\\u3247\\u3250-\\u32FE\\u3300-\\u4DBF\\u4E00-\\uA48C\\uA490-\\uA4C6\\uA960-\\uA97C\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFAFF\\uFE10-\\uFE19\\uFE30-\\uFE52\\uFE54-\\uFE66\\uFE68-\\uFE6B\\uFF01-\\uFF60\\uFFE0-\\uFFE6]/g;\r\n\t var replaceFunc = function(c, a, b, tabIdx, idx4) {\r\n\t if (a) {\r\n\t return self.showInvisibles\r\n\t ? \"\" + lang.stringRepeat(self.SPACE_CHAR, c.length) + \"\"\r\n\t : c;\r\n\t } else if (c == \"&\") {\r\n\t return \"&\";\r\n\t } else if (c == \"<\") {\r\n\t return \"<\";\r\n\t } else if (c == \">\") {\r\n\t return \">\";\r\n\t } else if (c == \"\\t\") {\r\n\t var tabSize = self.session.getScreenTabSize(screenColumn + tabIdx);\r\n\t screenColumn += tabSize - 1;\r\n\t return self.$tabStrings[tabSize];\r\n\t } else if (c == \"\\u3000\") {\r\n\t var classToUse = self.showInvisibles ? \"ace_cjk ace_invisible ace_invisible_space\" : \"ace_cjk\";\r\n\t var space = self.showInvisibles ? self.SPACE_CHAR : \"\";\r\n\t screenColumn += 1;\r\n\t return \"\" + space + \"\";\r\n\t } else if (b) {\r\n\t return \"\" + self.SPACE_CHAR + \"\";\r\n\t } else {\r\n\t screenColumn += 1;\r\n\t return \"\" + c + \"\";\r\n\t }\r\n\t };\r\n\r\n\t var output = value.replace(replaceReg, replaceFunc);\r\n\r\n\t if (!this.$textToken[token.type]) {\r\n\t var classes = \"ace_\" + token.type.replace(/\\./g, \" ace_\");\r\n\t var style = \"\";\r\n\t if (token.type == \"fold\")\r\n\t style = \" style='width:\" + (token.value.length * this.config.characterWidth) + \"px;' \";\r\n\t stringBuilder.push(\"\", output, \"\");\r\n\t }\r\n\t else {\r\n\t stringBuilder.push(output);\r\n\t }\r\n\t return screenColumn + value.length;\r\n\t };\r\n\r\n\t this.renderIndentGuide = function(stringBuilder, value, max) {\r\n\t var cols = value.search(this.$indentGuideRe);\r\n\t if (cols <= 0 || cols >= max)\r\n\t return value;\r\n\t if (value[0] == \" \") {\r\n\t cols -= cols % this.tabSize;\r\n\t stringBuilder.push(lang.stringRepeat(this.$tabStrings[\" \"], cols/this.tabSize));\r\n\t return value.substr(cols);\r\n\t } else if (value[0] == \"\\t\") {\r\n\t stringBuilder.push(lang.stringRepeat(this.$tabStrings[\"\\t\"], cols));\r\n\t return value.substr(cols);\r\n\t }\r\n\t return value;\r\n\t };\r\n\r\n\t this.$renderWrappedLine = function(stringBuilder, tokens, splits, onlyContents) {\r\n\t var chars = 0;\r\n\t var split = 0;\r\n\t var splitChars = splits[0];\r\n\t var screenColumn = 0;\r\n\r\n\t for (var i = 0; i < tokens.length; i++) {\r\n\t var token = tokens[i];\r\n\t var value = token.value;\r\n\t if (i == 0 && this.displayIndentGuides) {\r\n\t chars = value.length;\r\n\t value = this.renderIndentGuide(stringBuilder, value, splitChars);\r\n\t if (!value)\r\n\t continue;\r\n\t chars -= value.length;\r\n\t }\r\n\r\n\t if (chars + value.length < splitChars) {\r\n\t screenColumn = this.$renderToken(stringBuilder, screenColumn, token, value);\r\n\t chars += value.length;\r\n\t } else {\r\n\t while (chars + value.length >= splitChars) {\r\n\t screenColumn = this.$renderToken(\r\n\t stringBuilder, screenColumn,\r\n\t token, value.substring(0, splitChars - chars)\r\n\t );\r\n\t value = value.substring(splitChars - chars);\r\n\t chars = splitChars;\r\n\r\n\t if (!onlyContents) {\r\n\t stringBuilder.push(\"\",\r\n\t \"
\"\r\n\t );\r\n\t }\r\n\r\n\t stringBuilder.push(lang.stringRepeat(\"\\xa0\", splits.indent));\r\n\r\n\t split ++;\r\n\t screenColumn = 0;\r\n\t splitChars = splits[split] || Number.MAX_VALUE;\r\n\t }\r\n\t if (value.length != 0) {\r\n\t chars += value.length;\r\n\t screenColumn = this.$renderToken(\r\n\t stringBuilder, screenColumn, token, value\r\n\t );\r\n\t }\r\n\t }\r\n\t }\r\n\t };\r\n\r\n\t this.$renderSimpleLine = function(stringBuilder, tokens) {\r\n\t var screenColumn = 0;\r\n\t var token = tokens[0];\r\n\t var value = token.value;\r\n\t if (this.displayIndentGuides)\r\n\t value = this.renderIndentGuide(stringBuilder, value);\r\n\t if (value)\r\n\t screenColumn = this.$renderToken(stringBuilder, screenColumn, token, value);\r\n\t for (var i = 1; i < tokens.length; i++) {\r\n\t token = tokens[i];\r\n\t value = token.value;\r\n\t screenColumn = this.$renderToken(stringBuilder, screenColumn, token, value);\r\n\t }\r\n\t };\r\n\t this.$renderLine = function(stringBuilder, row, onlyContents, foldLine) {\r\n\t if (!foldLine && foldLine != false)\r\n\t foldLine = this.session.getFoldLine(row);\r\n\r\n\t if (foldLine)\r\n\t var tokens = this.$getFoldLineTokens(row, foldLine);\r\n\t else\r\n\t var tokens = this.session.getTokens(row);\r\n\r\n\r\n\t if (!onlyContents) {\r\n\t stringBuilder.push(\r\n\t \"
\"\r\n\t );\r\n\t }\r\n\r\n\t if (tokens.length) {\r\n\t var splits = this.session.getRowSplitData(row);\r\n\t if (splits && splits.length)\r\n\t this.$renderWrappedLine(stringBuilder, tokens, splits, onlyContents);\r\n\t else\r\n\t this.$renderSimpleLine(stringBuilder, tokens);\r\n\t }\r\n\r\n\t if (this.showInvisibles) {\r\n\t if (foldLine)\r\n\t row = foldLine.end.row\r\n\r\n\t stringBuilder.push(\r\n\t \"\",\r\n\t row == this.session.getLength() - 1 ? this.EOF_CHAR : this.EOL_CHAR,\r\n\t \"\"\r\n\t );\r\n\t }\r\n\t if (!onlyContents)\r\n\t stringBuilder.push(\"
\");\r\n\t };\r\n\r\n\t this.$getFoldLineTokens = function(row, foldLine) {\r\n\t var session = this.session;\r\n\t var renderTokens = [];\r\n\r\n\t function addTokens(tokens, from, to) {\r\n\t var idx = 0, col = 0;\r\n\t while ((col + tokens[idx].value.length) < from) {\r\n\t col += tokens[idx].value.length;\r\n\t idx++;\r\n\r\n\t if (idx == tokens.length)\r\n\t return;\r\n\t }\r\n\t if (col != from) {\r\n\t var value = tokens[idx].value.substring(from - col);\r\n\t if (value.length > (to - from))\r\n\t value = value.substring(0, to - from);\r\n\r\n\t renderTokens.push({\r\n\t type: tokens[idx].type,\r\n\t value: value\r\n\t });\r\n\r\n\t col = from + value.length;\r\n\t idx += 1;\r\n\t }\r\n\r\n\t while (col < to && idx < tokens.length) {\r\n\t var value = tokens[idx].value;\r\n\t if (value.length + col > to) {\r\n\t renderTokens.push({\r\n\t type: tokens[idx].type,\r\n\t value: value.substring(0, to - col)\r\n\t });\r\n\t } else\r\n\t renderTokens.push(tokens[idx]);\r\n\t col += value.length;\r\n\t idx += 1;\r\n\t }\r\n\t }\r\n\r\n\t var tokens = session.getTokens(row);\r\n\t foldLine.walk(function(placeholder, row, column, lastColumn, isNewRow) {\r\n\t if (placeholder != null) {\r\n\t renderTokens.push({\r\n\t type: \"fold\",\r\n\t value: placeholder\r\n\t });\r\n\t } else {\r\n\t if (isNewRow)\r\n\t tokens = session.getTokens(row);\r\n\r\n\t if (tokens.length)\r\n\t addTokens(tokens, lastColumn, column);\r\n\t }\r\n\t }, foldLine.end.row, this.session.getLine(foldLine.end.row).length);\r\n\r\n\t return renderTokens;\r\n\t };\r\n\r\n\t this.$useLineGroups = function() {\r\n\t return this.session.getUseWrapMode();\r\n\t };\r\n\r\n\t this.destroy = function() {\r\n\t clearInterval(this.$pollSizeChangesTimer);\r\n\t if (this.$measureNode)\r\n\t this.$measureNode.parentNode.removeChild(this.$measureNode);\r\n\t delete this.$measureNode;\r\n\t };\r\n\r\n\t}).call(Text.prototype);\r\n\r\n\texports.Text = Text;\r\n\r\n\t});\r\n\r\n\tace.define(\"ace/layer/cursor\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\"], function(acequire, exports, module) {\r\n\t\"use strict\";\r\n\r\n\tvar dom = acequire(\"../lib/dom\");\r\n\tvar isIE8;\r\n\r\n\tvar Cursor = function(parentEl) {\r\n\t this.element = dom.createElement(\"div\");\r\n\t this.element.className = \"ace_layer ace_cursor-layer\";\r\n\t parentEl.appendChild(this.element);\r\n\t \r\n\t if (isIE8 === undefined)\r\n\t isIE8 = !(\"opacity\" in this.element.style);\r\n\r\n\t this.isVisible = false;\r\n\t this.isBlinking = true;\r\n\t this.blinkInterval = 1000;\r\n\t this.smoothBlinking = false;\r\n\r\n\t this.cursors = [];\r\n\t this.cursor = this.addCursor();\r\n\t dom.addCssClass(this.element, \"ace_hidden-cursors\");\r\n\t this.$updateCursors = (isIE8\r\n\t ? this.$updateVisibility\r\n\t : this.$updateOpacity).bind(this);\r\n\t};\r\n\r\n\t(function() {\r\n\t \r\n\t this.$updateVisibility = function(val) {\r\n\t var cursors = this.cursors;\r\n\t for (var i = cursors.length; i--; )\r\n\t cursors[i].style.visibility = val ? \"\" : \"hidden\";\r\n\t };\r\n\t this.$updateOpacity = function(val) {\r\n\t var cursors = this.cursors;\r\n\t for (var i = cursors.length; i--; )\r\n\t cursors[i].style.opacity = val ? \"\" : \"0\";\r\n\t };\r\n\t \r\n\r\n\t this.$padding = 0;\r\n\t this.setPadding = function(padding) {\r\n\t this.$padding = padding;\r\n\t };\r\n\r\n\t this.setSession = function(session) {\r\n\t this.session = session;\r\n\t };\r\n\r\n\t this.setBlinking = function(blinking) {\r\n\t if (blinking != this.isBlinking){\r\n\t this.isBlinking = blinking;\r\n\t this.restartTimer();\r\n\t }\r\n\t };\r\n\r\n\t this.setBlinkInterval = function(blinkInterval) {\r\n\t if (blinkInterval != this.blinkInterval){\r\n\t this.blinkInterval = blinkInterval;\r\n\t this.restartTimer();\r\n\t }\r\n\t };\r\n\r\n\t this.setSmoothBlinking = function(smoothBlinking) {\r\n\t if (smoothBlinking != this.smoothBlinking && !isIE8) {\r\n\t this.smoothBlinking = smoothBlinking;\r\n\t dom.setCssClass(this.element, \"ace_smooth-blinking\", smoothBlinking);\r\n\t this.$updateCursors(true);\r\n\t this.$updateCursors = (this.$updateOpacity).bind(this);\r\n\t this.restartTimer();\r\n\t }\r\n\t };\r\n\r\n\t this.addCursor = function() {\r\n\t var el = dom.createElement(\"div\");\r\n\t el.className = \"ace_cursor\";\r\n\t this.element.appendChild(el);\r\n\t this.cursors.push(el);\r\n\t return el;\r\n\t };\r\n\r\n\t this.removeCursor = function() {\r\n\t if (this.cursors.length > 1) {\r\n\t var el = this.cursors.pop();\r\n\t el.parentNode.removeChild(el);\r\n\t return el;\r\n\t }\r\n\t };\r\n\r\n\t this.hideCursor = function() {\r\n\t this.isVisible = false;\r\n\t dom.addCssClass(this.element, \"ace_hidden-cursors\");\r\n\t this.restartTimer();\r\n\t };\r\n\r\n\t this.showCursor = function() {\r\n\t this.isVisible = true;\r\n\t dom.removeCssClass(this.element, \"ace_hidden-cursors\");\r\n\t this.restartTimer();\r\n\t };\r\n\r\n\t this.restartTimer = function() {\r\n\t var update = this.$updateCursors;\r\n\t clearInterval(this.intervalId);\r\n\t clearTimeout(this.timeoutId);\r\n\t if (this.smoothBlinking) {\r\n\t dom.removeCssClass(this.element, \"ace_smooth-blinking\");\r\n\t }\r\n\t \r\n\t update(true);\r\n\r\n\t if (!this.isBlinking || !this.blinkInterval || !this.isVisible)\r\n\t return;\r\n\r\n\t if (this.smoothBlinking) {\r\n\t setTimeout(function(){\r\n\t dom.addCssClass(this.element, \"ace_smooth-blinking\");\r\n\t }.bind(this));\r\n\t }\r\n\t \r\n\t var blink = function(){\r\n\t this.timeoutId = setTimeout(function() {\r\n\t update(false);\r\n\t }, 0.6 * this.blinkInterval);\r\n\t }.bind(this);\r\n\r\n\t this.intervalId = setInterval(function() {\r\n\t update(true);\r\n\t blink();\r\n\t }, this.blinkInterval);\r\n\r\n\t blink();\r\n\t };\r\n\r\n\t this.getPixelPosition = function(position, onScreen) {\r\n\t if (!this.config || !this.session)\r\n\t return {left : 0, top : 0};\r\n\r\n\t if (!position)\r\n\t position = this.session.selection.getCursor();\r\n\t var pos = this.session.documentToScreenPosition(position);\r\n\t var cursorLeft = this.$padding + pos.column * this.config.characterWidth;\r\n\t var cursorTop = (pos.row - (onScreen ? this.config.firstRowScreen : 0)) *\r\n\t this.config.lineHeight;\r\n\r\n\t return {left : cursorLeft, top : cursorTop};\r\n\t };\r\n\r\n\t this.update = function(config) {\r\n\t this.config = config;\r\n\r\n\t var selections = this.session.$selectionMarkers;\r\n\t var i = 0, cursorIndex = 0;\r\n\r\n\t if (selections === undefined || selections.length === 0){\r\n\t selections = [{cursor: null}];\r\n\t }\r\n\r\n\t for (var i = 0, n = selections.length; i < n; i++) {\r\n\t var pixelPos = this.getPixelPosition(selections[i].cursor, true);\r\n\t if ((pixelPos.top > config.height + config.offset ||\r\n\t pixelPos.top < 0) && i > 1) {\r\n\t continue;\r\n\t }\r\n\r\n\t var style = (this.cursors[cursorIndex++] || this.addCursor()).style;\r\n\t \r\n\t if (!this.drawCursor) {\r\n\t style.left = pixelPos.left + \"px\";\r\n\t style.top = pixelPos.top + \"px\";\r\n\t style.width = config.characterWidth + \"px\";\r\n\t style.height = config.lineHeight + \"px\";\r\n\t } else {\r\n\t this.drawCursor(style, pixelPos, config, selections[i], this.session);\r\n\t }\r\n\t }\r\n\t while (this.cursors.length > cursorIndex)\r\n\t this.removeCursor();\r\n\r\n\t var overwrite = this.session.getOverwrite();\r\n\t this.$setOverwrite(overwrite);\r\n\t this.$pixelPos = pixelPos;\r\n\t this.restartTimer();\r\n\t };\r\n\t \r\n\t this.drawCursor = null;\r\n\r\n\t this.$setOverwrite = function(overwrite) {\r\n\t if (overwrite != this.overwrite) {\r\n\t this.overwrite = overwrite;\r\n\t if (overwrite)\r\n\t dom.addCssClass(this.element, \"ace_overwrite-cursors\");\r\n\t else\r\n\t dom.removeCssClass(this.element, \"ace_overwrite-cursors\");\r\n\t }\r\n\t };\r\n\r\n\t this.destroy = function() {\r\n\t clearInterval(this.intervalId);\r\n\t clearTimeout(this.timeoutId);\r\n\t };\r\n\r\n\t}).call(Cursor.prototype);\r\n\r\n\texports.Cursor = Cursor;\r\n\r\n\t});\r\n\r\n\tace.define(\"ace/scrollbar\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/dom\",\"ace/lib/event\",\"ace/lib/event_emitter\"], function(acequire, exports, module) {\r\n\t\"use strict\";\r\n\r\n\tvar oop = acequire(\"./lib/oop\");\r\n\tvar dom = acequire(\"./lib/dom\");\r\n\tvar event = acequire(\"./lib/event\");\r\n\tvar EventEmitter = acequire(\"./lib/event_emitter\").EventEmitter;\r\n\tvar ScrollBar = function(parent) {\r\n\t this.element = dom.createElement(\"div\");\r\n\t this.element.className = \"ace_scrollbar ace_scrollbar\" + this.classSuffix;\r\n\r\n\t this.inner = dom.createElement(\"div\");\r\n\t this.inner.className = \"ace_scrollbar-inner\";\r\n\t this.element.appendChild(this.inner);\r\n\r\n\t parent.appendChild(this.element);\r\n\r\n\t this.setVisible(false);\r\n\t this.skipEvent = false;\r\n\r\n\t event.addListener(this.element, \"scroll\", this.onScroll.bind(this));\r\n\t event.addListener(this.element, \"mousedown\", event.preventDefault);\r\n\t};\r\n\r\n\t(function() {\r\n\t oop.implement(this, EventEmitter);\r\n\r\n\t this.setVisible = function(isVisible) {\r\n\t this.element.style.display = isVisible ? \"\" : \"none\";\r\n\t this.isVisible = isVisible;\r\n\t };\r\n\t}).call(ScrollBar.prototype);\r\n\tvar VScrollBar = function(parent, renderer) {\r\n\t ScrollBar.call(this, parent);\r\n\t this.scrollTop = 0;\r\n\t renderer.$scrollbarWidth = \r\n\t this.width = dom.scrollbarWidth(parent.ownerDocument);\r\n\t this.inner.style.width =\r\n\t this.element.style.width = (this.width || 15) + 5 + \"px\";\r\n\t};\r\n\r\n\toop.inherits(VScrollBar, ScrollBar);\r\n\r\n\t(function() {\r\n\r\n\t this.classSuffix = '-v';\r\n\t this.onScroll = function() {\r\n\t if (!this.skipEvent) {\r\n\t this.scrollTop = this.element.scrollTop;\r\n\t this._emit(\"scroll\", {data: this.scrollTop});\r\n\t }\r\n\t this.skipEvent = false;\r\n\t };\r\n\t this.getWidth = function() {\r\n\t return this.isVisible ? this.width : 0;\r\n\t };\r\n\t this.setHeight = function(height) {\r\n\t this.element.style.height = height + \"px\";\r\n\t };\r\n\t this.setInnerHeight = function(height) {\r\n\t this.inner.style.height = height + \"px\";\r\n\t };\r\n\t this.setScrollHeight = function(height) {\r\n\t this.inner.style.height = height + \"px\";\r\n\t };\r\n\t this.setScrollTop = function(scrollTop) {\r\n\t if (this.scrollTop != scrollTop) {\r\n\t this.skipEvent = true;\r\n\t this.scrollTop = this.element.scrollTop = scrollTop;\r\n\t }\r\n\t };\r\n\r\n\t}).call(VScrollBar.prototype);\r\n\tvar HScrollBar = function(parent, renderer) {\r\n\t ScrollBar.call(this, parent);\r\n\t this.scrollLeft = 0;\r\n\t this.height = renderer.$scrollbarWidth;\r\n\t this.inner.style.height =\r\n\t this.element.style.height = (this.height || 15) + 5 + \"px\";\r\n\t};\r\n\r\n\toop.inherits(HScrollBar, ScrollBar);\r\n\r\n\t(function() {\r\n\r\n\t this.classSuffix = '-h';\r\n\t this.onScroll = function() {\r\n\t if (!this.skipEvent) {\r\n\t this.scrollLeft = this.element.scrollLeft;\r\n\t this._emit(\"scroll\", {data: this.scrollLeft});\r\n\t }\r\n\t this.skipEvent = false;\r\n\t };\r\n\t this.getHeight = function() {\r\n\t return this.isVisible ? this.height : 0;\r\n\t };\r\n\t this.setWidth = function(width) {\r\n\t this.element.style.width = width + \"px\";\r\n\t };\r\n\t this.setInnerWidth = function(width) {\r\n\t this.inner.style.width = width + \"px\";\r\n\t };\r\n\t this.setScrollWidth = function(width) {\r\n\t this.inner.style.width = width + \"px\";\r\n\t };\r\n\t this.setScrollLeft = function(scrollLeft) {\r\n\t if (this.scrollLeft != scrollLeft) {\r\n\t this.skipEvent = true;\r\n\t this.scrollLeft = this.element.scrollLeft = scrollLeft;\r\n\t }\r\n\t };\r\n\r\n\t}).call(HScrollBar.prototype);\r\n\r\n\r\n\texports.ScrollBar = VScrollBar; // backward compatibility\r\n\texports.ScrollBarV = VScrollBar; // backward compatibility\r\n\texports.ScrollBarH = HScrollBar; // backward compatibility\r\n\r\n\texports.VScrollBar = VScrollBar;\r\n\texports.HScrollBar = HScrollBar;\r\n\t});\r\n\r\n\tace.define(\"ace/renderloop\",[\"require\",\"exports\",\"module\",\"ace/lib/event\"], function(acequire, exports, module) {\r\n\t\"use strict\";\r\n\r\n\tvar event = acequire(\"./lib/event\");\r\n\r\n\r\n\tvar RenderLoop = function(onRender, win) {\r\n\t this.onRender = onRender;\r\n\t this.pending = false;\r\n\t this.changes = 0;\r\n\t this.window = win || window;\r\n\t};\r\n\r\n\t(function() {\r\n\r\n\r\n\t this.schedule = function(change) {\r\n\t this.changes = this.changes | change;\r\n\t if (!this.pending && this.changes) {\r\n\t this.pending = true;\r\n\t var _self = this;\r\n\t event.nextFrame(function() {\r\n\t _self.pending = false;\r\n\t var changes;\r\n\t while (changes = _self.changes) {\r\n\t _self.changes = 0;\r\n\t _self.onRender(changes);\r\n\t }\r\n\t }, this.window);\r\n\t }\r\n\t };\r\n\r\n\t}).call(RenderLoop.prototype);\r\n\r\n\texports.RenderLoop = RenderLoop;\r\n\t});\r\n\r\n\tace.define(\"ace/layer/font_metrics\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/dom\",\"ace/lib/lang\",\"ace/lib/useragent\",\"ace/lib/event_emitter\"], function(acequire, exports, module) {\r\n\r\n\tvar oop = acequire(\"../lib/oop\");\r\n\tvar dom = acequire(\"../lib/dom\");\r\n\tvar lang = acequire(\"../lib/lang\");\r\n\tvar useragent = acequire(\"../lib/useragent\");\r\n\tvar EventEmitter = acequire(\"../lib/event_emitter\").EventEmitter;\r\n\r\n\tvar CHAR_COUNT = 0;\r\n\r\n\tvar FontMetrics = exports.FontMetrics = function(parentEl) {\r\n\t this.el = dom.createElement(\"div\");\r\n\t this.$setMeasureNodeStyles(this.el.style, true);\r\n\t \r\n\t this.$main = dom.createElement(\"div\");\r\n\t this.$setMeasureNodeStyles(this.$main.style);\r\n\t \r\n\t this.$measureNode = dom.createElement(\"div\");\r\n\t this.$setMeasureNodeStyles(this.$measureNode.style);\r\n\t \r\n\t \r\n\t this.el.appendChild(this.$main);\r\n\t this.el.appendChild(this.$measureNode);\r\n\t parentEl.appendChild(this.el);\r\n\t \r\n\t if (!CHAR_COUNT)\r\n\t this.$testFractionalRect();\r\n\t this.$measureNode.innerHTML = lang.stringRepeat(\"X\", CHAR_COUNT);\r\n\t \r\n\t this.$characterSize = {width: 0, height: 0};\r\n\t this.checkForSizeChanges();\r\n\t};\r\n\r\n\t(function() {\r\n\r\n\t oop.implement(this, EventEmitter);\r\n\t \r\n\t this.$characterSize = {width: 0, height: 0};\r\n\t \r\n\t this.$testFractionalRect = function() {\r\n\t var el = dom.createElement(\"div\");\r\n\t this.$setMeasureNodeStyles(el.style);\r\n\t el.style.width = \"0.2px\";\r\n\t document.documentElement.appendChild(el);\r\n\t var w = el.getBoundingClientRect().width;\r\n\t if (w > 0 && w < 1)\r\n\t CHAR_COUNT = 50;\r\n\t else\r\n\t CHAR_COUNT = 100;\r\n\t el.parentNode.removeChild(el);\r\n\t };\r\n\t \r\n\t this.$setMeasureNodeStyles = function(style, isRoot) {\r\n\t style.width = style.height = \"auto\";\r\n\t style.left = style.top = \"0px\";\r\n\t style.visibility = \"hidden\";\r\n\t style.position = \"absolute\";\r\n\t style.whiteSpace = \"pre\";\r\n\r\n\t if (useragent.isIE < 8) {\r\n\t style[\"font-family\"] = \"inherit\";\r\n\t } else {\r\n\t style.font = \"inherit\";\r\n\t }\r\n\t style.overflow = isRoot ? \"hidden\" : \"visible\";\r\n\t };\r\n\r\n\t this.checkForSizeChanges = function() {\r\n\t var size = this.$measureSizes();\r\n\t if (size && (this.$characterSize.width !== size.width || this.$characterSize.height !== size.height)) {\r\n\t this.$measureNode.style.fontWeight = \"bold\";\r\n\t var boldSize = this.$measureSizes();\r\n\t this.$measureNode.style.fontWeight = \"\";\r\n\t this.$characterSize = size;\r\n\t this.charSizes = Object.create(null);\r\n\t this.allowBoldFonts = boldSize && boldSize.width === size.width && boldSize.height === size.height;\r\n\t this._emit(\"changeCharacterSize\", {data: size});\r\n\t }\r\n\t };\r\n\r\n\t this.$pollSizeChanges = function() {\r\n\t if (this.$pollSizeChangesTimer)\r\n\t return this.$pollSizeChangesTimer;\r\n\t var self = this;\r\n\t return this.$pollSizeChangesTimer = setInterval(function() {\r\n\t self.checkForSizeChanges();\r\n\t }, 500);\r\n\t };\r\n\t \r\n\t this.setPolling = function(val) {\r\n\t if (val) {\r\n\t this.$pollSizeChanges();\r\n\t } else if (this.$pollSizeChangesTimer) {\r\n\t clearInterval(this.$pollSizeChangesTimer);\r\n\t this.$pollSizeChangesTimer = 0;\r\n\t }\r\n\t };\r\n\r\n\t this.$measureSizes = function() {\r\n\t if (CHAR_COUNT === 50) {\r\n\t var rect = null;\r\n\t try { \r\n\t rect = this.$measureNode.getBoundingClientRect();\r\n\t } catch(e) {\r\n\t rect = {width: 0, height:0 };\r\n\t }\r\n\t var size = {\r\n\t height: rect.height,\r\n\t width: rect.width / CHAR_COUNT\r\n\t };\r\n\t } else {\r\n\t var size = {\r\n\t height: this.$measureNode.clientHeight,\r\n\t width: this.$measureNode.clientWidth / CHAR_COUNT\r\n\t };\r\n\t }\r\n\t if (size.width === 0 || size.height === 0)\r\n\t return null;\r\n\t return size;\r\n\t };\r\n\r\n\t this.$measureCharWidth = function(ch) {\r\n\t this.$main.innerHTML = lang.stringRepeat(ch, CHAR_COUNT);\r\n\t var rect = this.$main.getBoundingClientRect();\r\n\t return rect.width / CHAR_COUNT;\r\n\t };\r\n\t \r\n\t this.getCharacterWidth = function(ch) {\r\n\t var w = this.charSizes[ch];\r\n\t if (w === undefined) {\r\n\t w = this.charSizes[ch] = this.$measureCharWidth(ch) / this.$characterSize.width;\r\n\t }\r\n\t return w;\r\n\t };\r\n\r\n\t this.destroy = function() {\r\n\t clearInterval(this.$pollSizeChangesTimer);\r\n\t if (this.el && this.el.parentNode)\r\n\t this.el.parentNode.removeChild(this.el);\r\n\t };\r\n\r\n\t}).call(FontMetrics.prototype);\r\n\r\n\t});\r\n\r\n\tace.define(\"ace/virtual_renderer\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/dom\",\"ace/config\",\"ace/lib/useragent\",\"ace/layer/gutter\",\"ace/layer/marker\",\"ace/layer/text\",\"ace/layer/cursor\",\"ace/scrollbar\",\"ace/scrollbar\",\"ace/renderloop\",\"ace/layer/font_metrics\",\"ace/lib/event_emitter\"], function(acequire, exports, module) {\r\n\t\"use strict\";\r\n\r\n\tvar oop = acequire(\"./lib/oop\");\r\n\tvar dom = acequire(\"./lib/dom\");\r\n\tvar config = acequire(\"./config\");\r\n\tvar useragent = acequire(\"./lib/useragent\");\r\n\tvar GutterLayer = acequire(\"./layer/gutter\").Gutter;\r\n\tvar MarkerLayer = acequire(\"./layer/marker\").Marker;\r\n\tvar TextLayer = acequire(\"./layer/text\").Text;\r\n\tvar CursorLayer = acequire(\"./layer/cursor\").Cursor;\r\n\tvar HScrollBar = acequire(\"./scrollbar\").HScrollBar;\r\n\tvar VScrollBar = acequire(\"./scrollbar\").VScrollBar;\r\n\tvar RenderLoop = acequire(\"./renderloop\").RenderLoop;\r\n\tvar FontMetrics = acequire(\"./layer/font_metrics\").FontMetrics;\r\n\tvar EventEmitter = acequire(\"./lib/event_emitter\").EventEmitter;\r\n\tvar editorCss = \".ace_editor {\\\r\n\tposition: relative;\\\r\n\toverflow: hidden;\\\r\n\tfont: 12px/normal 'Monaco', 'Menlo', 'Ubuntu Mono', 'Consolas', 'source-code-pro', monospace;\\\r\n\tdirection: ltr;\\\r\n\t}\\\r\n\t.ace_scroller {\\\r\n\tposition: absolute;\\\r\n\toverflow: hidden;\\\r\n\ttop: 0;\\\r\n\tbottom: 0;\\\r\n\tbackground-color: inherit;\\\r\n\t-ms-user-select: none;\\\r\n\t-moz-user-select: none;\\\r\n\t-webkit-user-select: none;\\\r\n\tuser-select: none;\\\r\n\tcursor: text;\\\r\n\t}\\\r\n\t.ace_content {\\\r\n\tposition: absolute;\\\r\n\t-moz-box-sizing: border-box;\\\r\n\t-webkit-box-sizing: border-box;\\\r\n\tbox-sizing: border-box;\\\r\n\tmin-width: 100%;\\\r\n\t}\\\r\n\t.ace_dragging .ace_scroller:before{\\\r\n\tposition: absolute;\\\r\n\ttop: 0;\\\r\n\tleft: 0;\\\r\n\tright: 0;\\\r\n\tbottom: 0;\\\r\n\tcontent: '';\\\r\n\tbackground: rgba(250, 250, 250, 0.01);\\\r\n\tz-index: 1000;\\\r\n\t}\\\r\n\t.ace_dragging.ace_dark .ace_scroller:before{\\\r\n\tbackground: rgba(0, 0, 0, 0.01);\\\r\n\t}\\\r\n\t.ace_selecting, .ace_selecting * {\\\r\n\tcursor: text !important;\\\r\n\t}\\\r\n\t.ace_gutter {\\\r\n\tposition: absolute;\\\r\n\toverflow : hidden;\\\r\n\twidth: auto;\\\r\n\ttop: 0;\\\r\n\tbottom: 0;\\\r\n\tleft: 0;\\\r\n\tcursor: default;\\\r\n\tz-index: 4;\\\r\n\t-ms-user-select: none;\\\r\n\t-moz-user-select: none;\\\r\n\t-webkit-user-select: none;\\\r\n\tuser-select: none;\\\r\n\t}\\\r\n\t.ace_gutter-active-line {\\\r\n\tposition: absolute;\\\r\n\tleft: 0;\\\r\n\tright: 0;\\\r\n\t}\\\r\n\t.ace_scroller.ace_scroll-left {\\\r\n\tbox-shadow: 17px 0 16px -16px rgba(0, 0, 0, 0.4) inset;\\\r\n\t}\\\r\n\t.ace_gutter-cell {\\\r\n\tpadding-left: 19px;\\\r\n\tpadding-right: 6px;\\\r\n\tbackground-repeat: no-repeat;\\\r\n\t}\\\r\n\t.ace_gutter-cell.ace_error {\\\r\n\tbackground-image: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAABOFBMVEX/////////QRswFAb/Ui4wFAYwFAYwFAaWGAfDRymzOSH/PxswFAb/SiUwFAYwFAbUPRvjQiDllog5HhHdRybsTi3/Tyv9Tir+Syj/UC3////XurebMBIwFAb/RSHbPx/gUzfdwL3kzMivKBAwFAbbvbnhPx66NhowFAYwFAaZJg8wFAaxKBDZurf/RB6mMxb/SCMwFAYwFAbxQB3+RB4wFAb/Qhy4Oh+4QifbNRcwFAYwFAYwFAb/QRzdNhgwFAYwFAbav7v/Uy7oaE68MBK5LxLewr/r2NXewLswFAaxJw4wFAbkPRy2PyYwFAaxKhLm1tMwFAazPiQwFAaUGAb/QBrfOx3bvrv/VC/maE4wFAbRPBq6MRO8Qynew8Dp2tjfwb0wFAbx6eju5+by6uns4uH9/f36+vr/GkHjAAAAYnRSTlMAGt+64rnWu/bo8eAA4InH3+DwoN7j4eLi4xP99Nfg4+b+/u9B/eDs1MD1mO7+4PHg2MXa347g7vDizMLN4eG+Pv7i5evs/v79yu7S3/DV7/498Yv24eH+4ufQ3Ozu/v7+y13sRqwAAADLSURBVHjaZc/XDsFgGIBhtDrshlitmk2IrbHFqL2pvXf/+78DPokj7+Fz9qpU/9UXJIlhmPaTaQ6QPaz0mm+5gwkgovcV6GZzd5JtCQwgsxoHOvJO15kleRLAnMgHFIESUEPmawB9ngmelTtipwwfASilxOLyiV5UVUyVAfbG0cCPHig+GBkzAENHS0AstVF6bacZIOzgLmxsHbt2OecNgJC83JERmePUYq8ARGkJx6XtFsdddBQgZE2nPR6CICZhawjA4Fb/chv+399kfR+MMMDGOQAAAABJRU5ErkJggg==\\\");\\\r\n\tbackground-repeat: no-repeat;\\\r\n\tbackground-position: 2px center;\\\r\n\t}\\\r\n\t.ace_gutter-cell.ace_warning {\\\r\n\tbackground-image: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAmVBMVEX///8AAAD///8AAAAAAABPSzb/5sAAAAB/blH/73z/ulkAAAAAAAD85pkAAAAAAAACAgP/vGz/rkDerGbGrV7/pkQICAf////e0IsAAAD/oED/qTvhrnUAAAD/yHD/njcAAADuv2r/nz//oTj/p064oGf/zHAAAAA9Nir/tFIAAAD/tlTiuWf/tkIAAACynXEAAAAAAAAtIRW7zBpBAAAAM3RSTlMAABR1m7RXO8Ln31Z36zT+neXe5OzooRDfn+TZ4p3h2hTf4t3k3ucyrN1K5+Xaks52Sfs9CXgrAAAAjklEQVR42o3PbQ+CIBQFYEwboPhSYgoYunIqqLn6/z8uYdH8Vmdnu9vz4WwXgN/xTPRD2+sgOcZjsge/whXZgUaYYvT8QnuJaUrjrHUQreGczuEafQCO/SJTufTbroWsPgsllVhq3wJEk2jUSzX3CUEDJC84707djRc5MTAQxoLgupWRwW6UB5fS++NV8AbOZgnsC7BpEAAAAABJRU5ErkJggg==\\\");\\\r\n\tbackground-position: 2px center;\\\r\n\t}\\\r\n\t.ace_gutter-cell.ace_info {\\\r\n\tbackground-image: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAAAAAA6mKC9AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAAJ0Uk5TAAB2k804AAAAPklEQVQY02NgIB68QuO3tiLznjAwpKTgNyDbMegwisCHZUETUZV0ZqOquBpXj2rtnpSJT1AEnnRmL2OgGgAAIKkRQap2htgAAAAASUVORK5CYII=\\\");\\\r\n\tbackground-position: 2px center;\\\r\n\t}\\\r\n\t.ace_dark .ace_gutter-cell.ace_info {\\\r\n\tbackground-image: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQBAMAAADt3eJSAAAAJFBMVEUAAAChoaGAgIAqKiq+vr6tra1ZWVmUlJSbm5s8PDxubm56enrdgzg3AAAAAXRSTlMAQObYZgAAAClJREFUeNpjYMAPdsMYHegyJZFQBlsUlMFVCWUYKkAZMxZAGdxlDMQBAG+TBP4B6RyJAAAAAElFTkSuQmCC\\\");\\\r\n\t}\\\r\n\t.ace_scrollbar {\\\r\n\tposition: absolute;\\\r\n\tright: 0;\\\r\n\tbottom: 0;\\\r\n\tz-index: 6;\\\r\n\t}\\\r\n\t.ace_scrollbar-inner {\\\r\n\tposition: absolute;\\\r\n\tcursor: text;\\\r\n\tleft: 0;\\\r\n\ttop: 0;\\\r\n\t}\\\r\n\t.ace_scrollbar-v{\\\r\n\toverflow-x: hidden;\\\r\n\toverflow-y: scroll;\\\r\n\ttop: 0;\\\r\n\t}\\\r\n\t.ace_scrollbar-h {\\\r\n\toverflow-x: scroll;\\\r\n\toverflow-y: hidden;\\\r\n\tleft: 0;\\\r\n\t}\\\r\n\t.ace_print-margin {\\\r\n\tposition: absolute;\\\r\n\theight: 100%;\\\r\n\t}\\\r\n\t.ace_text-input {\\\r\n\tposition: absolute;\\\r\n\tz-index: 0;\\\r\n\twidth: 0.5em;\\\r\n\theight: 1em;\\\r\n\topacity: 0;\\\r\n\tbackground: transparent;\\\r\n\t-moz-appearance: none;\\\r\n\tappearance: none;\\\r\n\tborder: none;\\\r\n\tresize: none;\\\r\n\toutline: none;\\\r\n\toverflow: hidden;\\\r\n\tfont: inherit;\\\r\n\tpadding: 0 1px;\\\r\n\tmargin: 0 -1px;\\\r\n\ttext-indent: -1em;\\\r\n\t-ms-user-select: text;\\\r\n\t-moz-user-select: text;\\\r\n\t-webkit-user-select: text;\\\r\n\tuser-select: text;\\\r\n\twhite-space: pre!important;\\\r\n\t}\\\r\n\t.ace_text-input.ace_composition {\\\r\n\tbackground: inherit;\\\r\n\tcolor: inherit;\\\r\n\tz-index: 1000;\\\r\n\topacity: 1;\\\r\n\ttext-indent: 0;\\\r\n\t}\\\r\n\t.ace_layer {\\\r\n\tz-index: 1;\\\r\n\tposition: absolute;\\\r\n\toverflow: hidden;\\\r\n\tword-wrap: normal;\\\r\n\twhite-space: pre;\\\r\n\theight: 100%;\\\r\n\twidth: 100%;\\\r\n\t-moz-box-sizing: border-box;\\\r\n\t-webkit-box-sizing: border-box;\\\r\n\tbox-sizing: border-box;\\\r\n\tpointer-events: none;\\\r\n\t}\\\r\n\t.ace_gutter-layer {\\\r\n\tposition: relative;\\\r\n\twidth: auto;\\\r\n\ttext-align: right;\\\r\n\tpointer-events: auto;\\\r\n\t}\\\r\n\t.ace_text-layer {\\\r\n\tfont: inherit !important;\\\r\n\t}\\\r\n\t.ace_cjk {\\\r\n\tdisplay: inline-block;\\\r\n\ttext-align: center;\\\r\n\t}\\\r\n\t.ace_cursor-layer {\\\r\n\tz-index: 4;\\\r\n\t}\\\r\n\t.ace_cursor {\\\r\n\tz-index: 4;\\\r\n\tposition: absolute;\\\r\n\t-moz-box-sizing: border-box;\\\r\n\t-webkit-box-sizing: border-box;\\\r\n\tbox-sizing: border-box;\\\r\n\tborder-left: 2px solid;\\\r\n\ttransform: translatez(0);\\\r\n\t}\\\r\n\t.ace_slim-cursors .ace_cursor {\\\r\n\tborder-left-width: 1px;\\\r\n\t}\\\r\n\t.ace_overwrite-cursors .ace_cursor {\\\r\n\tborder-left-width: 0;\\\r\n\tborder-bottom: 1px solid;\\\r\n\t}\\\r\n\t.ace_hidden-cursors .ace_cursor {\\\r\n\topacity: 0.2;\\\r\n\t}\\\r\n\t.ace_smooth-blinking .ace_cursor {\\\r\n\t-webkit-transition: opacity 0.18s;\\\r\n\ttransition: opacity 0.18s;\\\r\n\t}\\\r\n\t.ace_editor.ace_multiselect .ace_cursor {\\\r\n\tborder-left-width: 1px;\\\r\n\t}\\\r\n\t.ace_marker-layer .ace_step, .ace_marker-layer .ace_stack {\\\r\n\tposition: absolute;\\\r\n\tz-index: 3;\\\r\n\t}\\\r\n\t.ace_marker-layer .ace_selection {\\\r\n\tposition: absolute;\\\r\n\tz-index: 5;\\\r\n\t}\\\r\n\t.ace_marker-layer .ace_bracket {\\\r\n\tposition: absolute;\\\r\n\tz-index: 6;\\\r\n\t}\\\r\n\t.ace_marker-layer .ace_active-line {\\\r\n\tposition: absolute;\\\r\n\tz-index: 2;\\\r\n\t}\\\r\n\t.ace_marker-layer .ace_selected-word {\\\r\n\tposition: absolute;\\\r\n\tz-index: 4;\\\r\n\t-moz-box-sizing: border-box;\\\r\n\t-webkit-box-sizing: border-box;\\\r\n\tbox-sizing: border-box;\\\r\n\t}\\\r\n\t.ace_line .ace_fold {\\\r\n\t-moz-box-sizing: border-box;\\\r\n\t-webkit-box-sizing: border-box;\\\r\n\tbox-sizing: border-box;\\\r\n\tdisplay: inline-block;\\\r\n\theight: 11px;\\\r\n\tmargin-top: -2px;\\\r\n\tvertical-align: middle;\\\r\n\tbackground-image:\\\r\n\turl(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAJCAYAAADU6McMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJpJREFUeNpi/P//PwOlgAXGYGRklAVSokD8GmjwY1wasKljQpYACtpCFeADcHVQfQyMQAwzwAZI3wJKvCLkfKBaMSClBlR7BOQikCFGQEErIH0VqkabiGCAqwUadAzZJRxQr/0gwiXIal8zQQPnNVTgJ1TdawL0T5gBIP1MUJNhBv2HKoQHHjqNrA4WO4zY0glyNKLT2KIfIMAAQsdgGiXvgnYAAAAASUVORK5CYII=\\\"),\\\r\n\turl(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAA3CAYAAADNNiA5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACJJREFUeNpi+P//fxgTAwPDBxDxD078RSX+YeEyDFMCIMAAI3INmXiwf2YAAAAASUVORK5CYII=\\\");\\\r\n\tbackground-repeat: no-repeat, repeat-x;\\\r\n\tbackground-position: center center, top left;\\\r\n\tcolor: transparent;\\\r\n\tborder: 1px solid black;\\\r\n\tborder-radius: 2px;\\\r\n\tcursor: pointer;\\\r\n\tpointer-events: auto;\\\r\n\t}\\\r\n\t.ace_dark .ace_fold {\\\r\n\t}\\\r\n\t.ace_fold:hover{\\\r\n\tbackground-image:\\\r\n\turl(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAJCAYAAADU6McMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJpJREFUeNpi/P//PwOlgAXGYGRklAVSokD8GmjwY1wasKljQpYACtpCFeADcHVQfQyMQAwzwAZI3wJKvCLkfKBaMSClBlR7BOQikCFGQEErIH0VqkabiGCAqwUadAzZJRxQr/0gwiXIal8zQQPnNVTgJ1TdawL0T5gBIP1MUJNhBv2HKoQHHjqNrA4WO4zY0glyNKLT2KIfIMAAQsdgGiXvgnYAAAAASUVORK5CYII=\\\"),\\\r\n\turl(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAA3CAYAAADNNiA5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACBJREFUeNpi+P//fz4TAwPDZxDxD5X4i5fLMEwJgAADAEPVDbjNw87ZAAAAAElFTkSuQmCC\\\");\\\r\n\t}\\\r\n\t.ace_tooltip {\\\r\n\tbackground-color: #FFF;\\\r\n\tbackground-image: -webkit-linear-gradient(top, transparent, rgba(0, 0, 0, 0.1));\\\r\n\tbackground-image: linear-gradient(to bottom, transparent, rgba(0, 0, 0, 0.1));\\\r\n\tborder: 1px solid gray;\\\r\n\tborder-radius: 1px;\\\r\n\tbox-shadow: 0 1px 2px rgba(0, 0, 0, 0.3);\\\r\n\tcolor: black;\\\r\n\tmax-width: 100%;\\\r\n\tpadding: 3px 4px;\\\r\n\tposition: fixed;\\\r\n\tz-index: 999999;\\\r\n\t-moz-box-sizing: border-box;\\\r\n\t-webkit-box-sizing: border-box;\\\r\n\tbox-sizing: border-box;\\\r\n\tcursor: default;\\\r\n\twhite-space: pre;\\\r\n\tword-wrap: break-word;\\\r\n\tline-height: normal;\\\r\n\tfont-style: normal;\\\r\n\tfont-weight: normal;\\\r\n\tletter-spacing: normal;\\\r\n\tpointer-events: none;\\\r\n\t}\\\r\n\t.ace_folding-enabled > .ace_gutter-cell {\\\r\n\tpadding-right: 13px;\\\r\n\t}\\\r\n\t.ace_fold-widget {\\\r\n\t-moz-box-sizing: border-box;\\\r\n\t-webkit-box-sizing: border-box;\\\r\n\tbox-sizing: border-box;\\\r\n\tmargin: 0 -12px 0 1px;\\\r\n\tdisplay: none;\\\r\n\twidth: 11px;\\\r\n\tvertical-align: top;\\\r\n\tbackground-image: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAANElEQVR42mWKsQ0AMAzC8ixLlrzQjzmBiEjp0A6WwBCSPgKAXoLkqSot7nN3yMwR7pZ32NzpKkVoDBUxKAAAAABJRU5ErkJggg==\\\");\\\r\n\tbackground-repeat: no-repeat;\\\r\n\tbackground-position: center;\\\r\n\tborder-radius: 3px;\\\r\n\tborder: 1px solid transparent;\\\r\n\tcursor: pointer;\\\r\n\t}\\\r\n\t.ace_folding-enabled .ace_fold-widget {\\\r\n\tdisplay: inline-block; \\\r\n\t}\\\r\n\t.ace_fold-widget.ace_end {\\\r\n\tbackground-image: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAANElEQVR42m3HwQkAMAhD0YzsRchFKI7sAikeWkrxwScEB0nh5e7KTPWimZki4tYfVbX+MNl4pyZXejUO1QAAAABJRU5ErkJggg==\\\");\\\r\n\t}\\\r\n\t.ace_fold-widget.ace_closed {\\\r\n\tbackground-image: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAGCAYAAAAG5SQMAAAAOUlEQVR42jXKwQkAMAgDwKwqKD4EwQ26sSOkVWjgIIHAzPiCgaqiqnJHZnKICBERHN194O5b9vbLuAVRL+l0YWnZAAAAAElFTkSuQmCCXA==\\\");\\\r\n\t}\\\r\n\t.ace_fold-widget:hover {\\\r\n\tborder: 1px solid rgba(0, 0, 0, 0.3);\\\r\n\tbackground-color: rgba(255, 255, 255, 0.2);\\\r\n\tbox-shadow: 0 1px 1px rgba(255, 255, 255, 0.7);\\\r\n\t}\\\r\n\t.ace_fold-widget:active {\\\r\n\tborder: 1px solid rgba(0, 0, 0, 0.4);\\\r\n\tbackground-color: rgba(0, 0, 0, 0.05);\\\r\n\tbox-shadow: 0 1px 1px rgba(255, 255, 255, 0.8);\\\r\n\t}\\\r\n\t.ace_dark .ace_fold-widget {\\\r\n\tbackground-image: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHklEQVQIW2P4//8/AzoGEQ7oGCaLLAhWiSwB146BAQCSTPYocqT0AAAAAElFTkSuQmCC\\\");\\\r\n\t}\\\r\n\t.ace_dark .ace_fold-widget.ace_end {\\\r\n\tbackground-image: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAH0lEQVQIW2P4//8/AxQ7wNjIAjDMgC4AxjCVKBirIAAF0kz2rlhxpAAAAABJRU5ErkJggg==\\\");\\\r\n\t}\\\r\n\t.ace_dark .ace_fold-widget.ace_closed {\\\r\n\tbackground-image: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAFCAYAAACAcVaiAAAAHElEQVQIW2P4//+/AxAzgDADlOOAznHAKgPWAwARji8UIDTfQQAAAABJRU5ErkJggg==\\\");\\\r\n\t}\\\r\n\t.ace_dark .ace_fold-widget:hover {\\\r\n\tbox-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);\\\r\n\tbackground-color: rgba(255, 255, 255, 0.1);\\\r\n\t}\\\r\n\t.ace_dark .ace_fold-widget:active {\\\r\n\tbox-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);\\\r\n\t}\\\r\n\t.ace_fold-widget.ace_invalid {\\\r\n\tbackground-color: #FFB4B4;\\\r\n\tborder-color: #DE5555;\\\r\n\t}\\\r\n\t.ace_fade-fold-widgets .ace_fold-widget {\\\r\n\t-webkit-transition: opacity 0.4s ease 0.05s;\\\r\n\ttransition: opacity 0.4s ease 0.05s;\\\r\n\topacity: 0;\\\r\n\t}\\\r\n\t.ace_fade-fold-widgets:hover .ace_fold-widget {\\\r\n\t-webkit-transition: opacity 0.05s ease 0.05s;\\\r\n\ttransition: opacity 0.05s ease 0.05s;\\\r\n\topacity:1;\\\r\n\t}\\\r\n\t.ace_underline {\\\r\n\ttext-decoration: underline;\\\r\n\t}\\\r\n\t.ace_bold {\\\r\n\tfont-weight: bold;\\\r\n\t}\\\r\n\t.ace_nobold .ace_bold {\\\r\n\tfont-weight: normal;\\\r\n\t}\\\r\n\t.ace_italic {\\\r\n\tfont-style: italic;\\\r\n\t}\\\r\n\t.ace_error-marker {\\\r\n\tbackground-color: rgba(255, 0, 0,0.2);\\\r\n\tposition: absolute;\\\r\n\tz-index: 9;\\\r\n\t}\\\r\n\t.ace_highlight-marker {\\\r\n\tbackground-color: rgba(255, 255, 0,0.2);\\\r\n\tposition: absolute;\\\r\n\tz-index: 8;\\\r\n\t}\\\r\n\t.ace_br1 {border-top-left-radius : 3px;}\\\r\n\t.ace_br2 {border-top-right-radius : 3px;}\\\r\n\t.ace_br3 {border-top-left-radius : 3px; border-top-right-radius: 3px;}\\\r\n\t.ace_br4 {border-bottom-right-radius: 3px;}\\\r\n\t.ace_br5 {border-top-left-radius : 3px; border-bottom-right-radius: 3px;}\\\r\n\t.ace_br6 {border-top-right-radius : 3px; border-bottom-right-radius: 3px;}\\\r\n\t.ace_br7 {border-top-left-radius : 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px;}\\\r\n\t.ace_br8 {border-bottom-left-radius : 3px;}\\\r\n\t.ace_br9 {border-top-left-radius : 3px; border-bottom-left-radius: 3px;}\\\r\n\t.ace_br10{border-top-right-radius : 3px; border-bottom-left-radius: 3px;}\\\r\n\t.ace_br11{border-top-left-radius : 3px; border-top-right-radius: 3px; border-bottom-left-radius: 3px;}\\\r\n\t.ace_br12{border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;}\\\r\n\t.ace_br13{border-top-left-radius : 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;}\\\r\n\t.ace_br14{border-top-right-radius : 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;}\\\r\n\t.ace_br15{border-top-left-radius : 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;}\\\r\n\t\";\r\n\r\n\tdom.importCssString(editorCss, \"ace_editor.css\");\r\n\r\n\tvar VirtualRenderer = function(container, theme) {\r\n\t var _self = this;\r\n\r\n\t this.container = container || dom.createElement(\"div\");\r\n\t this.$keepTextAreaAtCursor = !useragent.isOldIE;\r\n\r\n\t dom.addCssClass(this.container, \"ace_editor\");\r\n\r\n\t this.setTheme(theme);\r\n\r\n\t this.$gutter = dom.createElement(\"div\");\r\n\t this.$gutter.className = \"ace_gutter\";\r\n\t this.container.appendChild(this.$gutter);\r\n\r\n\t this.scroller = dom.createElement(\"div\");\r\n\t this.scroller.className = \"ace_scroller\";\r\n\t this.container.appendChild(this.scroller);\r\n\r\n\t this.content = dom.createElement(\"div\");\r\n\t this.content.className = \"ace_content\";\r\n\t this.scroller.appendChild(this.content);\r\n\r\n\t this.$gutterLayer = new GutterLayer(this.$gutter);\r\n\t this.$gutterLayer.on(\"changeGutterWidth\", this.onGutterResize.bind(this));\r\n\r\n\t this.$markerBack = new MarkerLayer(this.content);\r\n\r\n\t var textLayer = this.$textLayer = new TextLayer(this.content);\r\n\t this.canvas = textLayer.element;\r\n\r\n\t this.$markerFront = new MarkerLayer(this.content);\r\n\r\n\t this.$cursorLayer = new CursorLayer(this.content);\r\n\t this.$horizScroll = false;\r\n\t this.$vScroll = false;\r\n\r\n\t this.scrollBar = \r\n\t this.scrollBarV = new VScrollBar(this.container, this);\r\n\t this.scrollBarH = new HScrollBar(this.container, this);\r\n\t this.scrollBarV.addEventListener(\"scroll\", function(e) {\r\n\t if (!_self.$scrollAnimation)\r\n\t _self.session.setScrollTop(e.data - _self.scrollMargin.top);\r\n\t });\r\n\t this.scrollBarH.addEventListener(\"scroll\", function(e) {\r\n\t if (!_self.$scrollAnimation)\r\n\t _self.session.setScrollLeft(e.data - _self.scrollMargin.left);\r\n\t });\r\n\r\n\t this.scrollTop = 0;\r\n\t this.scrollLeft = 0;\r\n\r\n\t this.cursorPos = {\r\n\t row : 0,\r\n\t column : 0\r\n\t };\r\n\r\n\t this.$fontMetrics = new FontMetrics(this.container);\r\n\t this.$textLayer.$setFontMetrics(this.$fontMetrics);\r\n\t this.$textLayer.addEventListener(\"changeCharacterSize\", function(e) {\r\n\t _self.updateCharacterSize();\r\n\t _self.onResize(true, _self.gutterWidth, _self.$size.width, _self.$size.height);\r\n\t _self._signal(\"changeCharacterSize\", e);\r\n\t });\r\n\r\n\t this.$size = {\r\n\t width: 0,\r\n\t height: 0,\r\n\t scrollerHeight: 0,\r\n\t scrollerWidth: 0,\r\n\t $dirty: true\r\n\t };\r\n\r\n\t this.layerConfig = {\r\n\t width : 1,\r\n\t padding : 0,\r\n\t firstRow : 0,\r\n\t firstRowScreen: 0,\r\n\t lastRow : 0,\r\n\t lineHeight : 0,\r\n\t characterWidth : 0,\r\n\t minHeight : 1,\r\n\t maxHeight : 1,\r\n\t offset : 0,\r\n\t height : 1,\r\n\t gutterOffset: 1\r\n\t };\r\n\t \r\n\t this.scrollMargin = {\r\n\t left: 0,\r\n\t right: 0,\r\n\t top: 0,\r\n\t bottom: 0,\r\n\t v: 0,\r\n\t h: 0\r\n\t };\r\n\r\n\t this.$loop = new RenderLoop(\r\n\t this.$renderChanges.bind(this),\r\n\t this.container.ownerDocument.defaultView\r\n\t );\r\n\t this.$loop.schedule(this.CHANGE_FULL);\r\n\r\n\t this.updateCharacterSize();\r\n\t this.setPadding(4);\r\n\t config.resetOptions(this);\r\n\t config._emit(\"renderer\", this);\r\n\t};\r\n\r\n\t(function() {\r\n\r\n\t this.CHANGE_CURSOR = 1;\r\n\t this.CHANGE_MARKER = 2;\r\n\t this.CHANGE_GUTTER = 4;\r\n\t this.CHANGE_SCROLL = 8;\r\n\t this.CHANGE_LINES = 16;\r\n\t this.CHANGE_TEXT = 32;\r\n\t this.CHANGE_SIZE = 64;\r\n\t this.CHANGE_MARKER_BACK = 128;\r\n\t this.CHANGE_MARKER_FRONT = 256;\r\n\t this.CHANGE_FULL = 512;\r\n\t this.CHANGE_H_SCROLL = 1024;\r\n\r\n\t oop.implement(this, EventEmitter);\r\n\r\n\t this.updateCharacterSize = function() {\r\n\t if (this.$textLayer.allowBoldFonts != this.$allowBoldFonts) {\r\n\t this.$allowBoldFonts = this.$textLayer.allowBoldFonts;\r\n\t this.setStyle(\"ace_nobold\", !this.$allowBoldFonts);\r\n\t }\r\n\r\n\t this.layerConfig.characterWidth =\r\n\t this.characterWidth = this.$textLayer.getCharacterWidth();\r\n\t this.layerConfig.lineHeight =\r\n\t this.lineHeight = this.$textLayer.getLineHeight();\r\n\t this.$updatePrintMargin();\r\n\t };\r\n\t this.setSession = function(session) {\r\n\t if (this.session)\r\n\t this.session.doc.off(\"changeNewLineMode\", this.onChangeNewLineMode);\r\n\t \r\n\t this.session = session;\r\n\t if (session && this.scrollMargin.top && session.getScrollTop() <= 0)\r\n\t session.setScrollTop(-this.scrollMargin.top);\r\n\r\n\t this.$cursorLayer.setSession(session);\r\n\t this.$markerBack.setSession(session);\r\n\t this.$markerFront.setSession(session);\r\n\t this.$gutterLayer.setSession(session);\r\n\t this.$textLayer.setSession(session);\r\n\t if (!session)\r\n\t return;\r\n\t \r\n\t this.$loop.schedule(this.CHANGE_FULL);\r\n\t this.session.$setFontMetrics(this.$fontMetrics);\r\n\t \r\n\t this.onChangeNewLineMode = this.onChangeNewLineMode.bind(this);\r\n\t this.onChangeNewLineMode()\r\n\t this.session.doc.on(\"changeNewLineMode\", this.onChangeNewLineMode);\r\n\t };\r\n\t this.updateLines = function(firstRow, lastRow, force) {\r\n\t if (lastRow === undefined)\r\n\t lastRow = Infinity;\r\n\r\n\t if (!this.$changedLines) {\r\n\t this.$changedLines = {\r\n\t firstRow: firstRow,\r\n\t lastRow: lastRow\r\n\t };\r\n\t }\r\n\t else {\r\n\t if (this.$changedLines.firstRow > firstRow)\r\n\t this.$changedLines.firstRow = firstRow;\r\n\r\n\t if (this.$changedLines.lastRow < lastRow)\r\n\t this.$changedLines.lastRow = lastRow;\r\n\t }\r\n\t if (this.$changedLines.lastRow < this.layerConfig.firstRow) {\r\n\t if (force)\r\n\t this.$changedLines.lastRow = this.layerConfig.lastRow;\r\n\t else\r\n\t return;\r\n\t }\r\n\t if (this.$changedLines.firstRow > this.layerConfig.lastRow)\r\n\t return;\r\n\t this.$loop.schedule(this.CHANGE_LINES);\r\n\t };\r\n\r\n\t this.onChangeNewLineMode = function() {\r\n\t this.$loop.schedule(this.CHANGE_TEXT);\r\n\t this.$textLayer.$updateEolChar();\r\n\t };\r\n\t \r\n\t this.onChangeTabSize = function() {\r\n\t this.$loop.schedule(this.CHANGE_TEXT | this.CHANGE_MARKER);\r\n\t this.$textLayer.onChangeTabSize();\r\n\t };\r\n\t this.updateText = function() {\r\n\t this.$loop.schedule(this.CHANGE_TEXT);\r\n\t };\r\n\t this.updateFull = function(force) {\r\n\t if (force)\r\n\t this.$renderChanges(this.CHANGE_FULL, true);\r\n\t else\r\n\t this.$loop.schedule(this.CHANGE_FULL);\r\n\t };\r\n\t this.updateFontSize = function() {\r\n\t this.$textLayer.checkForSizeChanges();\r\n\t };\r\n\r\n\t this.$changes = 0;\r\n\t this.$updateSizeAsync = function() {\r\n\t if (this.$loop.pending)\r\n\t this.$size.$dirty = true;\r\n\t else\r\n\t this.onResize();\r\n\t };\r\n\t this.onResize = function(force, gutterWidth, width, height) {\r\n\t if (this.resizing > 2)\r\n\t return;\r\n\t else if (this.resizing > 0)\r\n\t this.resizing++;\r\n\t else\r\n\t this.resizing = force ? 1 : 0;\r\n\t var el = this.container;\r\n\t if (!height)\r\n\t height = el.clientHeight || el.scrollHeight;\r\n\t if (!width)\r\n\t width = el.clientWidth || el.scrollWidth;\r\n\t var changes = this.$updateCachedSize(force, gutterWidth, width, height);\r\n\r\n\t \r\n\t if (!this.$size.scrollerHeight || (!width && !height))\r\n\t return this.resizing = 0;\r\n\r\n\t if (force)\r\n\t this.$gutterLayer.$padding = null;\r\n\r\n\t if (force)\r\n\t this.$renderChanges(changes | this.$changes, true);\r\n\t else\r\n\t this.$loop.schedule(changes | this.$changes);\r\n\r\n\t if (this.resizing)\r\n\t this.resizing = 0;\r\n\t this.scrollBarV.scrollLeft = this.scrollBarV.scrollTop = null;\r\n\t };\r\n\t \r\n\t this.$updateCachedSize = function(force, gutterWidth, width, height) {\r\n\t height -= (this.$extraHeight || 0);\r\n\t var changes = 0;\r\n\t var size = this.$size;\r\n\t var oldSize = {\r\n\t width: size.width,\r\n\t height: size.height,\r\n\t scrollerHeight: size.scrollerHeight,\r\n\t scrollerWidth: size.scrollerWidth\r\n\t };\r\n\t if (height && (force || size.height != height)) {\r\n\t size.height = height;\r\n\t changes |= this.CHANGE_SIZE;\r\n\r\n\t size.scrollerHeight = size.height;\r\n\t if (this.$horizScroll)\r\n\t size.scrollerHeight -= this.scrollBarH.getHeight();\r\n\t this.scrollBarV.element.style.bottom = this.scrollBarH.getHeight() + \"px\";\r\n\r\n\t changes = changes | this.CHANGE_SCROLL;\r\n\t }\r\n\r\n\t if (width && (force || size.width != width)) {\r\n\t changes |= this.CHANGE_SIZE;\r\n\t size.width = width;\r\n\t \r\n\t if (gutterWidth == null)\r\n\t gutterWidth = this.$showGutter ? this.$gutter.offsetWidth : 0;\r\n\t \r\n\t this.gutterWidth = gutterWidth;\r\n\t \r\n\t this.scrollBarH.element.style.left = \r\n\t this.scroller.style.left = gutterWidth + \"px\";\r\n\t size.scrollerWidth = Math.max(0, width - gutterWidth - this.scrollBarV.getWidth()); \r\n\t \r\n\t this.scrollBarH.element.style.right = \r\n\t this.scroller.style.right = this.scrollBarV.getWidth() + \"px\";\r\n\t this.scroller.style.bottom = this.scrollBarH.getHeight() + \"px\";\r\n\r\n\t if (this.session && this.session.getUseWrapMode() && this.adjustWrapLimit() || force)\r\n\t changes |= this.CHANGE_FULL;\r\n\t }\r\n\t \r\n\t size.$dirty = !width || !height;\r\n\r\n\t if (changes)\r\n\t this._signal(\"resize\", oldSize);\r\n\r\n\t return changes;\r\n\t };\r\n\r\n\t this.onGutterResize = function() {\r\n\t var gutterWidth = this.$showGutter ? this.$gutter.offsetWidth : 0;\r\n\t if (gutterWidth != this.gutterWidth)\r\n\t this.$changes |= this.$updateCachedSize(true, gutterWidth, this.$size.width, this.$size.height);\r\n\r\n\t if (this.session.getUseWrapMode() && this.adjustWrapLimit()) {\r\n\t this.$loop.schedule(this.CHANGE_FULL);\r\n\t } else if (this.$size.$dirty) {\r\n\t this.$loop.schedule(this.CHANGE_FULL);\r\n\t } else {\r\n\t this.$computeLayerConfig();\r\n\t this.$loop.schedule(this.CHANGE_MARKER);\r\n\t }\r\n\t };\r\n\t this.adjustWrapLimit = function() {\r\n\t var availableWidth = this.$size.scrollerWidth - this.$padding * 2;\r\n\t var limit = Math.floor(availableWidth / this.characterWidth);\r\n\t return this.session.adjustWrapLimit(limit, this.$showPrintMargin && this.$printMarginColumn);\r\n\t };\r\n\t this.setAnimatedScroll = function(shouldAnimate){\r\n\t this.setOption(\"animatedScroll\", shouldAnimate);\r\n\t };\r\n\t this.getAnimatedScroll = function() {\r\n\t return this.$animatedScroll;\r\n\t };\r\n\t this.setShowInvisibles = function(showInvisibles) {\r\n\t this.setOption(\"showInvisibles\", showInvisibles);\r\n\t };\r\n\t this.getShowInvisibles = function() {\r\n\t return this.getOption(\"showInvisibles\");\r\n\t };\r\n\t this.getDisplayIndentGuides = function() {\r\n\t return this.getOption(\"displayIndentGuides\");\r\n\t };\r\n\r\n\t this.setDisplayIndentGuides = function(display) {\r\n\t this.setOption(\"displayIndentGuides\", display);\r\n\t };\r\n\t this.setShowPrintMargin = function(showPrintMargin) {\r\n\t this.setOption(\"showPrintMargin\", showPrintMargin);\r\n\t };\r\n\t this.getShowPrintMargin = function() {\r\n\t return this.getOption(\"showPrintMargin\");\r\n\t };\r\n\t this.setPrintMarginColumn = function(showPrintMargin) {\r\n\t this.setOption(\"printMarginColumn\", showPrintMargin);\r\n\t };\r\n\t this.getPrintMarginColumn = function() {\r\n\t return this.getOption(\"printMarginColumn\");\r\n\t };\r\n\t this.getShowGutter = function(){\r\n\t return this.getOption(\"showGutter\");\r\n\t };\r\n\t this.setShowGutter = function(show){\r\n\t return this.setOption(\"showGutter\", show);\r\n\t };\r\n\r\n\t this.getFadeFoldWidgets = function(){\r\n\t return this.getOption(\"fadeFoldWidgets\")\r\n\t };\r\n\r\n\t this.setFadeFoldWidgets = function(show) {\r\n\t this.setOption(\"fadeFoldWidgets\", show);\r\n\t };\r\n\r\n\t this.setHighlightGutterLine = function(shouldHighlight) {\r\n\t this.setOption(\"highlightGutterLine\", shouldHighlight);\r\n\t };\r\n\r\n\t this.getHighlightGutterLine = function() {\r\n\t return this.getOption(\"highlightGutterLine\");\r\n\t };\r\n\r\n\t this.$updateGutterLineHighlight = function() {\r\n\t var pos = this.$cursorLayer.$pixelPos;\r\n\t var height = this.layerConfig.lineHeight;\r\n\t if (this.session.getUseWrapMode()) {\r\n\t var cursor = this.session.selection.getCursor();\r\n\t cursor.column = 0;\r\n\t pos = this.$cursorLayer.getPixelPosition(cursor, true);\r\n\t height *= this.session.getRowLength(cursor.row);\r\n\t }\r\n\t this.$gutterLineHighlight.style.top = pos.top - this.layerConfig.offset + \"px\";\r\n\t this.$gutterLineHighlight.style.height = height + \"px\";\r\n\t };\r\n\r\n\t this.$updatePrintMargin = function() {\r\n\t if (!this.$showPrintMargin && !this.$printMarginEl)\r\n\t return;\r\n\r\n\t if (!this.$printMarginEl) {\r\n\t var containerEl = dom.createElement(\"div\");\r\n\t containerEl.className = \"ace_layer ace_print-margin-layer\";\r\n\t this.$printMarginEl = dom.createElement(\"div\");\r\n\t this.$printMarginEl.className = \"ace_print-margin\";\r\n\t containerEl.appendChild(this.$printMarginEl);\r\n\t this.content.insertBefore(containerEl, this.content.firstChild);\r\n\t }\r\n\r\n\t var style = this.$printMarginEl.style;\r\n\t style.left = ((this.characterWidth * this.$printMarginColumn) + this.$padding) + \"px\";\r\n\t style.visibility = this.$showPrintMargin ? \"visible\" : \"hidden\";\r\n\t \r\n\t if (this.session && this.session.$wrap == -1)\r\n\t this.adjustWrapLimit();\r\n\t };\r\n\t this.getContainerElement = function() {\r\n\t return this.container;\r\n\t };\r\n\t this.getMouseEventTarget = function() {\r\n\t return this.scroller;\r\n\t };\r\n\t this.getTextAreaContainer = function() {\r\n\t return this.container;\r\n\t };\r\n\t this.$moveTextAreaToCursor = function() {\r\n\t if (!this.$keepTextAreaAtCursor)\r\n\t return;\r\n\t var config = this.layerConfig;\r\n\t var posTop = this.$cursorLayer.$pixelPos.top;\r\n\t var posLeft = this.$cursorLayer.$pixelPos.left;\r\n\t posTop -= config.offset;\r\n\r\n\t var style = this.textarea.style;\r\n\t var h = this.lineHeight;\r\n\t if (posTop < 0 || posTop > config.height - h) {\r\n\t style.top = style.left = \"0\";\r\n\t return;\r\n\t }\r\n\r\n\t var w = this.characterWidth;\r\n\t if (this.$composition) {\r\n\t var val = this.textarea.value.replace(/^\\x01+/, \"\");\r\n\t w *= (this.session.$getStringScreenWidth(val)[0]+2);\r\n\t h += 2;\r\n\t }\r\n\t posLeft -= this.scrollLeft;\r\n\t if (posLeft > this.$size.scrollerWidth - w)\r\n\t posLeft = this.$size.scrollerWidth - w;\r\n\r\n\t posLeft += this.gutterWidth;\r\n\t style.height = h + \"px\";\r\n\t style.width = w + \"px\";\r\n\t style.left = Math.min(posLeft, this.$size.scrollerWidth - w) + \"px\";\r\n\t style.top = Math.min(posTop, this.$size.height - h) + \"px\";\r\n\t };\r\n\t this.getFirstVisibleRow = function() {\r\n\t return this.layerConfig.firstRow;\r\n\t };\r\n\t this.getFirstFullyVisibleRow = function() {\r\n\t return this.layerConfig.firstRow + (this.layerConfig.offset === 0 ? 0 : 1);\r\n\t };\r\n\t this.getLastFullyVisibleRow = function() {\r\n\t var config = this.layerConfig;\r\n\t var lastRow = config.lastRow\r\n\t var top = this.session.documentToScreenRow(lastRow, 0) * config.lineHeight;\r\n\t if (top - this.session.getScrollTop() > config.height - config.lineHeight)\r\n\t return lastRow - 1;\r\n\t return lastRow;\r\n\t };\r\n\t this.getLastVisibleRow = function() {\r\n\t return this.layerConfig.lastRow;\r\n\t };\r\n\r\n\t this.$padding = null;\r\n\t this.setPadding = function(padding) {\r\n\t this.$padding = padding;\r\n\t this.$textLayer.setPadding(padding);\r\n\t this.$cursorLayer.setPadding(padding);\r\n\t this.$markerFront.setPadding(padding);\r\n\t this.$markerBack.setPadding(padding);\r\n\t this.$loop.schedule(this.CHANGE_FULL);\r\n\t this.$updatePrintMargin();\r\n\t };\r\n\t \r\n\t this.setScrollMargin = function(top, bottom, left, right) {\r\n\t var sm = this.scrollMargin;\r\n\t sm.top = top|0;\r\n\t sm.bottom = bottom|0;\r\n\t sm.right = right|0;\r\n\t sm.left = left|0;\r\n\t sm.v = sm.top + sm.bottom;\r\n\t sm.h = sm.left + sm.right;\r\n\t if (sm.top && this.scrollTop <= 0 && this.session)\r\n\t this.session.setScrollTop(-sm.top);\r\n\t this.updateFull();\r\n\t };\r\n\t this.getHScrollBarAlwaysVisible = function() {\r\n\t return this.$hScrollBarAlwaysVisible;\r\n\t };\r\n\t this.setHScrollBarAlwaysVisible = function(alwaysVisible) {\r\n\t this.setOption(\"hScrollBarAlwaysVisible\", alwaysVisible);\r\n\t };\r\n\t this.getVScrollBarAlwaysVisible = function() {\r\n\t return this.$vScrollBarAlwaysVisible;\r\n\t };\r\n\t this.setVScrollBarAlwaysVisible = function(alwaysVisible) {\r\n\t this.setOption(\"vScrollBarAlwaysVisible\", alwaysVisible);\r\n\t };\r\n\r\n\t this.$updateScrollBarV = function() {\r\n\t var scrollHeight = this.layerConfig.maxHeight;\r\n\t var scrollerHeight = this.$size.scrollerHeight;\r\n\t if (!this.$maxLines && this.$scrollPastEnd) {\r\n\t scrollHeight -= (scrollerHeight - this.lineHeight) * this.$scrollPastEnd;\r\n\t if (this.scrollTop > scrollHeight - scrollerHeight) {\r\n\t scrollHeight = this.scrollTop + scrollerHeight;\r\n\t this.scrollBarV.scrollTop = null;\r\n\t }\r\n\t }\r\n\t this.scrollBarV.setScrollHeight(scrollHeight + this.scrollMargin.v);\r\n\t this.scrollBarV.setScrollTop(this.scrollTop + this.scrollMargin.top);\r\n\t };\r\n\t this.$updateScrollBarH = function() {\r\n\t this.scrollBarH.setScrollWidth(this.layerConfig.width + 2 * this.$padding + this.scrollMargin.h);\r\n\t this.scrollBarH.setScrollLeft(this.scrollLeft + this.scrollMargin.left);\r\n\t };\r\n\t \r\n\t this.$frozen = false;\r\n\t this.freeze = function() {\r\n\t this.$frozen = true;\r\n\t };\r\n\t \r\n\t this.unfreeze = function() {\r\n\t this.$frozen = false;\r\n\t };\r\n\r\n\t this.$renderChanges = function(changes, force) {\r\n\t if (this.$changes) {\r\n\t changes |= this.$changes;\r\n\t this.$changes = 0;\r\n\t }\r\n\t if ((!this.session || !this.container.offsetWidth || this.$frozen) || (!changes && !force)) {\r\n\t this.$changes |= changes;\r\n\t return; \r\n\t } \r\n\t if (this.$size.$dirty) {\r\n\t this.$changes |= changes;\r\n\t return this.onResize(true);\r\n\t }\r\n\t if (!this.lineHeight) {\r\n\t this.$textLayer.checkForSizeChanges();\r\n\t }\r\n\t \r\n\t this._signal(\"beforeRender\");\r\n\t var config = this.layerConfig;\r\n\t if (changes & this.CHANGE_FULL ||\r\n\t changes & this.CHANGE_SIZE ||\r\n\t changes & this.CHANGE_TEXT ||\r\n\t changes & this.CHANGE_LINES ||\r\n\t changes & this.CHANGE_SCROLL ||\r\n\t changes & this.CHANGE_H_SCROLL\r\n\t ) {\r\n\t changes |= this.$computeLayerConfig();\r\n\t if (config.firstRow != this.layerConfig.firstRow && config.firstRowScreen == this.layerConfig.firstRowScreen) {\r\n\t var st = this.scrollTop + (config.firstRow - this.layerConfig.firstRow) * this.lineHeight;\r\n\t if (st > 0) {\r\n\t this.scrollTop = st;\r\n\t changes = changes | this.CHANGE_SCROLL;\r\n\t changes |= this.$computeLayerConfig();\r\n\t }\r\n\t }\r\n\t config = this.layerConfig;\r\n\t this.$updateScrollBarV();\r\n\t if (changes & this.CHANGE_H_SCROLL)\r\n\t this.$updateScrollBarH();\r\n\t this.$gutterLayer.element.style.marginTop = (-config.offset) + \"px\";\r\n\t this.content.style.marginTop = (-config.offset) + \"px\";\r\n\t this.content.style.width = config.width + 2 * this.$padding + \"px\";\r\n\t this.content.style.height = config.minHeight + \"px\";\r\n\t }\r\n\t if (changes & this.CHANGE_H_SCROLL) {\r\n\t this.content.style.marginLeft = -this.scrollLeft + \"px\";\r\n\t this.scroller.className = this.scrollLeft <= 0 ? \"ace_scroller\" : \"ace_scroller ace_scroll-left\";\r\n\t }\r\n\t if (changes & this.CHANGE_FULL) {\r\n\t this.$textLayer.update(config);\r\n\t if (this.$showGutter)\r\n\t this.$gutterLayer.update(config);\r\n\t this.$markerBack.update(config);\r\n\t this.$markerFront.update(config);\r\n\t this.$cursorLayer.update(config);\r\n\t this.$moveTextAreaToCursor();\r\n\t this.$highlightGutterLine && this.$updateGutterLineHighlight();\r\n\t this._signal(\"afterRender\");\r\n\t return;\r\n\t }\r\n\t if (changes & this.CHANGE_SCROLL) {\r\n\t if (changes & this.CHANGE_TEXT || changes & this.CHANGE_LINES)\r\n\t this.$textLayer.update(config);\r\n\t else\r\n\t this.$textLayer.scrollLines(config);\r\n\r\n\t if (this.$showGutter)\r\n\t this.$gutterLayer.update(config);\r\n\t this.$markerBack.update(config);\r\n\t this.$markerFront.update(config);\r\n\t this.$cursorLayer.update(config);\r\n\t this.$highlightGutterLine && this.$updateGutterLineHighlight();\r\n\t this.$moveTextAreaToCursor();\r\n\t this._signal(\"afterRender\");\r\n\t return;\r\n\t }\r\n\r\n\t if (changes & this.CHANGE_TEXT) {\r\n\t this.$textLayer.update(config);\r\n\t if (this.$showGutter)\r\n\t this.$gutterLayer.update(config);\r\n\t }\r\n\t else if (changes & this.CHANGE_LINES) {\r\n\t if (this.$updateLines() || (changes & this.CHANGE_GUTTER) && this.$showGutter)\r\n\t this.$gutterLayer.update(config);\r\n\t }\r\n\t else if (changes & this.CHANGE_TEXT || changes & this.CHANGE_GUTTER) {\r\n\t if (this.$showGutter)\r\n\t this.$gutterLayer.update(config);\r\n\t }\r\n\r\n\t if (changes & this.CHANGE_CURSOR) {\r\n\t this.$cursorLayer.update(config);\r\n\t this.$moveTextAreaToCursor();\r\n\t this.$highlightGutterLine && this.$updateGutterLineHighlight();\r\n\t }\r\n\r\n\t if (changes & (this.CHANGE_MARKER | this.CHANGE_MARKER_FRONT)) {\r\n\t this.$markerFront.update(config);\r\n\t }\r\n\r\n\t if (changes & (this.CHANGE_MARKER | this.CHANGE_MARKER_BACK)) {\r\n\t this.$markerBack.update(config);\r\n\t }\r\n\r\n\t this._signal(\"afterRender\");\r\n\t };\r\n\r\n\t \r\n\t this.$autosize = function() {\r\n\t var height = this.session.getScreenLength() * this.lineHeight;\r\n\t var maxHeight = this.$maxLines * this.lineHeight;\r\n\t var desiredHeight = Math.max(\r\n\t (this.$minLines||1) * this.lineHeight,\r\n\t Math.min(maxHeight, height)\r\n\t ) + this.scrollMargin.v + (this.$extraHeight || 0);\r\n\t if (this.$horizScroll)\r\n\t desiredHeight += this.scrollBarH.getHeight();\r\n\t var vScroll = height > maxHeight;\r\n\t \r\n\t if (desiredHeight != this.desiredHeight ||\r\n\t this.$size.height != this.desiredHeight || vScroll != this.$vScroll) {\r\n\t if (vScroll != this.$vScroll) {\r\n\t this.$vScroll = vScroll;\r\n\t this.scrollBarV.setVisible(vScroll);\r\n\t }\r\n\t \r\n\t var w = this.container.clientWidth;\r\n\t this.container.style.height = desiredHeight + \"px\";\r\n\t this.$updateCachedSize(true, this.$gutterWidth, w, desiredHeight);\r\n\t this.desiredHeight = desiredHeight;\r\n\t \r\n\t this._signal(\"autosize\");\r\n\t }\r\n\t };\r\n\t \r\n\t this.$computeLayerConfig = function() {\r\n\t var session = this.session;\r\n\t var size = this.$size;\r\n\t \r\n\t var hideScrollbars = size.height <= 2 * this.lineHeight;\r\n\t var screenLines = this.session.getScreenLength();\r\n\t var maxHeight = screenLines * this.lineHeight;\r\n\r\n\t var longestLine = this.$getLongestLine();\r\n\t \r\n\t var horizScroll = !hideScrollbars && (this.$hScrollBarAlwaysVisible ||\r\n\t size.scrollerWidth - longestLine - 2 * this.$padding < 0);\r\n\r\n\t var hScrollChanged = this.$horizScroll !== horizScroll;\r\n\t if (hScrollChanged) {\r\n\t this.$horizScroll = horizScroll;\r\n\t this.scrollBarH.setVisible(horizScroll);\r\n\t }\r\n\t var vScrollBefore = this.$vScroll; // autosize can change vscroll value in which case we need to update longestLine\r\n\t if (this.$maxLines && this.lineHeight > 1)\r\n\t this.$autosize();\r\n\r\n\t var offset = this.scrollTop % this.lineHeight;\r\n\t var minHeight = size.scrollerHeight + this.lineHeight;\r\n\t \r\n\t var scrollPastEnd = !this.$maxLines && this.$scrollPastEnd\r\n\t ? (size.scrollerHeight - this.lineHeight) * this.$scrollPastEnd\r\n\t : 0;\r\n\t maxHeight += scrollPastEnd;\r\n\t \r\n\t var sm = this.scrollMargin;\r\n\t this.session.setScrollTop(Math.max(-sm.top,\r\n\t Math.min(this.scrollTop, maxHeight - size.scrollerHeight + sm.bottom)));\r\n\r\n\t this.session.setScrollLeft(Math.max(-sm.left, Math.min(this.scrollLeft, \r\n\t longestLine + 2 * this.$padding - size.scrollerWidth + sm.right)));\r\n\t \r\n\t var vScroll = !hideScrollbars && (this.$vScrollBarAlwaysVisible ||\r\n\t size.scrollerHeight - maxHeight + scrollPastEnd < 0 || this.scrollTop > sm.top);\r\n\t var vScrollChanged = vScrollBefore !== vScroll;\r\n\t if (vScrollChanged) {\r\n\t this.$vScroll = vScroll;\r\n\t this.scrollBarV.setVisible(vScroll);\r\n\t }\r\n\r\n\t var lineCount = Math.ceil(minHeight / this.lineHeight) - 1;\r\n\t var firstRow = Math.max(0, Math.round((this.scrollTop - offset) / this.lineHeight));\r\n\t var lastRow = firstRow + lineCount;\r\n\t var firstRowScreen, firstRowHeight;\r\n\t var lineHeight = this.lineHeight;\r\n\t firstRow = session.screenToDocumentRow(firstRow, 0);\r\n\t var foldLine = session.getFoldLine(firstRow);\r\n\t if (foldLine) {\r\n\t firstRow = foldLine.start.row;\r\n\t }\r\n\r\n\t firstRowScreen = session.documentToScreenRow(firstRow, 0);\r\n\t firstRowHeight = session.getRowLength(firstRow) * lineHeight;\r\n\r\n\t lastRow = Math.min(session.screenToDocumentRow(lastRow, 0), session.getLength() - 1);\r\n\t minHeight = size.scrollerHeight + session.getRowLength(lastRow) * lineHeight +\r\n\t firstRowHeight;\r\n\r\n\t offset = this.scrollTop - firstRowScreen * lineHeight;\r\n\r\n\t var changes = 0;\r\n\t if (this.layerConfig.width != longestLine) \r\n\t changes = this.CHANGE_H_SCROLL;\r\n\t if (hScrollChanged || vScrollChanged) {\r\n\t changes = this.$updateCachedSize(true, this.gutterWidth, size.width, size.height);\r\n\t this._signal(\"scrollbarVisibilityChanged\");\r\n\t if (vScrollChanged)\r\n\t longestLine = this.$getLongestLine();\r\n\t }\r\n\t \r\n\t this.layerConfig = {\r\n\t width : longestLine,\r\n\t padding : this.$padding,\r\n\t firstRow : firstRow,\r\n\t firstRowScreen: firstRowScreen,\r\n\t lastRow : lastRow,\r\n\t lineHeight : lineHeight,\r\n\t characterWidth : this.characterWidth,\r\n\t minHeight : minHeight,\r\n\t maxHeight : maxHeight,\r\n\t offset : offset,\r\n\t gutterOffset : Math.max(0, Math.ceil((offset + size.height - size.scrollerHeight) / lineHeight)),\r\n\t height : this.$size.scrollerHeight\r\n\t };\r\n\r\n\t return changes;\r\n\t };\r\n\r\n\t this.$updateLines = function() {\r\n\t var firstRow = this.$changedLines.firstRow;\r\n\t var lastRow = this.$changedLines.lastRow;\r\n\t this.$changedLines = null;\r\n\r\n\t var layerConfig = this.layerConfig;\r\n\r\n\t if (firstRow > layerConfig.lastRow + 1) { return; }\r\n\t if (lastRow < layerConfig.firstRow) { return; }\r\n\t if (lastRow === Infinity) {\r\n\t if (this.$showGutter)\r\n\t this.$gutterLayer.update(layerConfig);\r\n\t this.$textLayer.update(layerConfig);\r\n\t return;\r\n\t }\r\n\t this.$textLayer.updateLines(layerConfig, firstRow, lastRow);\r\n\t return true;\r\n\t };\r\n\r\n\t this.$getLongestLine = function() {\r\n\t var charCount = this.session.getScreenWidth();\r\n\t if (this.showInvisibles && !this.session.$useWrapMode)\r\n\t charCount += 1;\r\n\r\n\t return Math.max(this.$size.scrollerWidth - 2 * this.$padding, Math.round(charCount * this.characterWidth));\r\n\t };\r\n\t this.updateFrontMarkers = function() {\r\n\t this.$markerFront.setMarkers(this.session.getMarkers(true));\r\n\t this.$loop.schedule(this.CHANGE_MARKER_FRONT);\r\n\t };\r\n\t this.updateBackMarkers = function() {\r\n\t this.$markerBack.setMarkers(this.session.getMarkers());\r\n\t this.$loop.schedule(this.CHANGE_MARKER_BACK);\r\n\t };\r\n\t this.addGutterDecoration = function(row, className){\r\n\t this.$gutterLayer.addGutterDecoration(row, className);\r\n\t };\r\n\t this.removeGutterDecoration = function(row, className){\r\n\t this.$gutterLayer.removeGutterDecoration(row, className);\r\n\t };\r\n\t this.updateBreakpoints = function(rows) {\r\n\t this.$loop.schedule(this.CHANGE_GUTTER);\r\n\t };\r\n\t this.setAnnotations = function(annotations) {\r\n\t this.$gutterLayer.setAnnotations(annotations);\r\n\t this.$loop.schedule(this.CHANGE_GUTTER);\r\n\t };\r\n\t this.updateCursor = function() {\r\n\t this.$loop.schedule(this.CHANGE_CURSOR);\r\n\t };\r\n\t this.hideCursor = function() {\r\n\t this.$cursorLayer.hideCursor();\r\n\t };\r\n\t this.showCursor = function() {\r\n\t this.$cursorLayer.showCursor();\r\n\t };\r\n\r\n\t this.scrollSelectionIntoView = function(anchor, lead, offset) {\r\n\t this.scrollCursorIntoView(anchor, offset);\r\n\t this.scrollCursorIntoView(lead, offset);\r\n\t };\r\n\t this.scrollCursorIntoView = function(cursor, offset, $viewMargin) {\r\n\t if (this.$size.scrollerHeight === 0)\r\n\t return;\r\n\r\n\t var pos = this.$cursorLayer.getPixelPosition(cursor);\r\n\r\n\t var left = pos.left;\r\n\t var top = pos.top;\r\n\t \r\n\t var topMargin = $viewMargin && $viewMargin.top || 0;\r\n\t var bottomMargin = $viewMargin && $viewMargin.bottom || 0;\r\n\t \r\n\t var scrollTop = this.$scrollAnimation ? this.session.getScrollTop() : this.scrollTop;\r\n\t \r\n\t if (scrollTop + topMargin > top) {\r\n\t if (offset && scrollTop + topMargin > top + this.lineHeight)\r\n\t top -= offset * this.$size.scrollerHeight;\r\n\t if (top === 0)\r\n\t top = -this.scrollMargin.top;\r\n\t this.session.setScrollTop(top);\r\n\t } else if (scrollTop + this.$size.scrollerHeight - bottomMargin < top + this.lineHeight) {\r\n\t if (offset && scrollTop + this.$size.scrollerHeight - bottomMargin < top - this.lineHeight)\r\n\t top += offset * this.$size.scrollerHeight;\r\n\t this.session.setScrollTop(top + this.lineHeight - this.$size.scrollerHeight);\r\n\t }\r\n\r\n\t var scrollLeft = this.scrollLeft;\r\n\r\n\t if (scrollLeft > left) {\r\n\t if (left < this.$padding + 2 * this.layerConfig.characterWidth)\r\n\t left = -this.scrollMargin.left;\r\n\t this.session.setScrollLeft(left);\r\n\t } else if (scrollLeft + this.$size.scrollerWidth < left + this.characterWidth) {\r\n\t this.session.setScrollLeft(Math.round(left + this.characterWidth - this.$size.scrollerWidth));\r\n\t } else if (scrollLeft <= this.$padding && left - scrollLeft < this.characterWidth) {\r\n\t this.session.setScrollLeft(0);\r\n\t }\r\n\t };\r\n\t this.getScrollTop = function() {\r\n\t return this.session.getScrollTop();\r\n\t };\r\n\t this.getScrollLeft = function() {\r\n\t return this.session.getScrollLeft();\r\n\t };\r\n\t this.getScrollTopRow = function() {\r\n\t return this.scrollTop / this.lineHeight;\r\n\t };\r\n\t this.getScrollBottomRow = function() {\r\n\t return Math.max(0, Math.floor((this.scrollTop + this.$size.scrollerHeight) / this.lineHeight) - 1);\r\n\t };\r\n\t this.scrollToRow = function(row) {\r\n\t this.session.setScrollTop(row * this.lineHeight);\r\n\t };\r\n\r\n\t this.alignCursor = function(cursor, alignment) {\r\n\t if (typeof cursor == \"number\")\r\n\t cursor = {row: cursor, column: 0};\r\n\r\n\t var pos = this.$cursorLayer.getPixelPosition(cursor);\r\n\t var h = this.$size.scrollerHeight - this.lineHeight;\r\n\t var offset = pos.top - h * (alignment || 0);\r\n\r\n\t this.session.setScrollTop(offset);\r\n\t return offset;\r\n\t };\r\n\r\n\t this.STEPS = 8;\r\n\t this.$calcSteps = function(fromValue, toValue){\r\n\t var i = 0;\r\n\t var l = this.STEPS;\r\n\t var steps = [];\r\n\r\n\t var func = function(t, x_min, dx) {\r\n\t return dx * (Math.pow(t - 1, 3) + 1) + x_min;\r\n\t };\r\n\r\n\t for (i = 0; i < l; ++i)\r\n\t steps.push(func(i / this.STEPS, fromValue, toValue - fromValue));\r\n\r\n\t return steps;\r\n\t };\r\n\t this.scrollToLine = function(line, center, animate, callback) {\r\n\t var pos = this.$cursorLayer.getPixelPosition({row: line, column: 0});\r\n\t var offset = pos.top;\r\n\t if (center)\r\n\t offset -= this.$size.scrollerHeight / 2;\r\n\r\n\t var initialScroll = this.scrollTop;\r\n\t this.session.setScrollTop(offset);\r\n\t if (animate !== false)\r\n\t this.animateScrolling(initialScroll, callback);\r\n\t };\r\n\r\n\t this.animateScrolling = function(fromValue, callback) {\r\n\t var toValue = this.scrollTop;\r\n\t if (!this.$animatedScroll)\r\n\t return;\r\n\t var _self = this;\r\n\t \r\n\t if (fromValue == toValue)\r\n\t return;\r\n\t \r\n\t if (this.$scrollAnimation) {\r\n\t var oldSteps = this.$scrollAnimation.steps;\r\n\t if (oldSteps.length) {\r\n\t fromValue = oldSteps[0];\r\n\t if (fromValue == toValue)\r\n\t return;\r\n\t }\r\n\t }\r\n\t \r\n\t var steps = _self.$calcSteps(fromValue, toValue);\r\n\t this.$scrollAnimation = {from: fromValue, to: toValue, steps: steps};\r\n\r\n\t clearInterval(this.$timer);\r\n\r\n\t _self.session.setScrollTop(steps.shift());\r\n\t _self.session.$scrollTop = toValue;\r\n\t this.$timer = setInterval(function() {\r\n\t if (steps.length) {\r\n\t _self.session.setScrollTop(steps.shift());\r\n\t _self.session.$scrollTop = toValue;\r\n\t } else if (toValue != null) {\r\n\t _self.session.$scrollTop = -1;\r\n\t _self.session.setScrollTop(toValue);\r\n\t toValue = null;\r\n\t } else {\r\n\t _self.$timer = clearInterval(_self.$timer);\r\n\t _self.$scrollAnimation = null;\r\n\t callback && callback();\r\n\t }\r\n\t }, 10);\r\n\t };\r\n\t this.scrollToY = function(scrollTop) {\r\n\t if (this.scrollTop !== scrollTop) {\r\n\t this.$loop.schedule(this.CHANGE_SCROLL);\r\n\t this.scrollTop = scrollTop;\r\n\t }\r\n\t };\r\n\t this.scrollToX = function(scrollLeft) {\r\n\t if (this.scrollLeft !== scrollLeft)\r\n\t this.scrollLeft = scrollLeft;\r\n\t this.$loop.schedule(this.CHANGE_H_SCROLL);\r\n\t };\r\n\t this.scrollTo = function(x, y) {\r\n\t this.session.setScrollTop(y);\r\n\t this.session.setScrollLeft(y);\r\n\t };\r\n\t this.scrollBy = function(deltaX, deltaY) {\r\n\t deltaY && this.session.setScrollTop(this.session.getScrollTop() + deltaY);\r\n\t deltaX && this.session.setScrollLeft(this.session.getScrollLeft() + deltaX);\r\n\t };\r\n\t this.isScrollableBy = function(deltaX, deltaY) {\r\n\t if (deltaY < 0 && this.session.getScrollTop() >= 1 - this.scrollMargin.top)\r\n\t return true;\r\n\t if (deltaY > 0 && this.session.getScrollTop() + this.$size.scrollerHeight\r\n\t - this.layerConfig.maxHeight < -1 + this.scrollMargin.bottom)\r\n\t return true;\r\n\t if (deltaX < 0 && this.session.getScrollLeft() >= 1 - this.scrollMargin.left)\r\n\t return true;\r\n\t if (deltaX > 0 && this.session.getScrollLeft() + this.$size.scrollerWidth\r\n\t - this.layerConfig.width < -1 + this.scrollMargin.right)\r\n\t return true;\r\n\t };\r\n\r\n\t this.pixelToScreenCoordinates = function(x, y) {\r\n\t var canvasPos = this.scroller.getBoundingClientRect();\r\n\r\n\t var offset = (x + this.scrollLeft - canvasPos.left - this.$padding) / this.characterWidth;\r\n\t var row = Math.floor((y + this.scrollTop - canvasPos.top) / this.lineHeight);\r\n\t var col = Math.round(offset);\r\n\r\n\t return {row: row, column: col, side: offset - col > 0 ? 1 : -1};\r\n\t };\r\n\r\n\t this.screenToTextCoordinates = function(x, y) {\r\n\t var canvasPos = this.scroller.getBoundingClientRect();\r\n\r\n\t var col = Math.round(\r\n\t (x + this.scrollLeft - canvasPos.left - this.$padding) / this.characterWidth\r\n\t );\r\n\r\n\t var row = (y + this.scrollTop - canvasPos.top) / this.lineHeight;\r\n\r\n\t return this.session.screenToDocumentPosition(row, Math.max(col, 0));\r\n\t };\r\n\t this.textToScreenCoordinates = function(row, column) {\r\n\t var canvasPos = this.scroller.getBoundingClientRect();\r\n\t var pos = this.session.documentToScreenPosition(row, column);\r\n\r\n\t var x = this.$padding + Math.round(pos.column * this.characterWidth);\r\n\t var y = pos.row * this.lineHeight;\r\n\r\n\t return {\r\n\t pageX: canvasPos.left + x - this.scrollLeft,\r\n\t pageY: canvasPos.top + y - this.scrollTop\r\n\t };\r\n\t };\r\n\t this.visualizeFocus = function() {\r\n\t dom.addCssClass(this.container, \"ace_focus\");\r\n\t };\r\n\t this.visualizeBlur = function() {\r\n\t dom.removeCssClass(this.container, \"ace_focus\");\r\n\t };\r\n\t this.showComposition = function(position) {\r\n\t if (!this.$composition)\r\n\t this.$composition = {\r\n\t keepTextAreaAtCursor: this.$keepTextAreaAtCursor,\r\n\t cssText: this.textarea.style.cssText\r\n\t };\r\n\r\n\t this.$keepTextAreaAtCursor = true;\r\n\t dom.addCssClass(this.textarea, \"ace_composition\");\r\n\t this.textarea.style.cssText = \"\";\r\n\t this.$moveTextAreaToCursor();\r\n\t };\r\n\t this.setCompositionText = function(text) {\r\n\t this.$moveTextAreaToCursor();\r\n\t };\r\n\t this.hideComposition = function() {\r\n\t if (!this.$composition)\r\n\t return;\r\n\r\n\t dom.removeCssClass(this.textarea, \"ace_composition\");\r\n\t this.$keepTextAreaAtCursor = this.$composition.keepTextAreaAtCursor;\r\n\t this.textarea.style.cssText = this.$composition.cssText;\r\n\t this.$composition = null;\r\n\t };\r\n\t this.setTheme = function(theme, cb) {\r\n\t var _self = this;\r\n\t this.$themeId = theme;\r\n\t _self._dispatchEvent('themeChange',{theme:theme});\r\n\r\n\t if (!theme || typeof theme == \"string\") {\r\n\t var moduleName = theme || this.$options.theme.initialValue;\r\n\t config.loadModule([\"theme\", moduleName], afterLoad);\r\n\t } else {\r\n\t afterLoad(theme);\r\n\t }\r\n\r\n\t function afterLoad(module) {\r\n\t if (_self.$themeId != theme)\r\n\t return cb && cb();\r\n\t if (!module.cssClass)\r\n\t return;\r\n\t dom.importCssString(\r\n\t module.cssText,\r\n\t module.cssClass,\r\n\t _self.container.ownerDocument\r\n\t );\r\n\r\n\t if (_self.theme)\r\n\t dom.removeCssClass(_self.container, _self.theme.cssClass);\r\n\r\n\t var padding = \"padding\" in module ? module.padding \r\n\t : \"padding\" in (_self.theme || {}) ? 4 : _self.$padding;\r\n\t if (_self.$padding && padding != _self.$padding)\r\n\t _self.setPadding(padding);\r\n\t _self.$theme = module.cssClass;\r\n\r\n\t _self.theme = module;\r\n\t dom.addCssClass(_self.container, module.cssClass);\r\n\t dom.setCssClass(_self.container, \"ace_dark\", module.isDark);\r\n\t if (_self.$size) {\r\n\t _self.$size.width = 0;\r\n\t _self.$updateSizeAsync();\r\n\t }\r\n\r\n\t _self._dispatchEvent('themeLoaded', {theme:module});\r\n\t cb && cb();\r\n\t }\r\n\t };\r\n\t this.getTheme = function() {\r\n\t return this.$themeId;\r\n\t };\r\n\t this.setStyle = function(style, include) {\r\n\t dom.setCssClass(this.container, style, include !== false);\r\n\t };\r\n\t this.unsetStyle = function(style) {\r\n\t dom.removeCssClass(this.container, style);\r\n\t };\r\n\t \r\n\t this.setCursorStyle = function(style) {\r\n\t if (this.scroller.style.cursor != style)\r\n\t this.scroller.style.cursor = style;\r\n\t };\r\n\t this.setMouseCursor = function(cursorStyle) {\r\n\t this.scroller.style.cursor = cursorStyle;\r\n\t };\r\n\t this.destroy = function() {\r\n\t this.$textLayer.destroy();\r\n\t this.$cursorLayer.destroy();\r\n\t };\r\n\r\n\t}).call(VirtualRenderer.prototype);\r\n\r\n\r\n\tconfig.defineOptions(VirtualRenderer.prototype, \"renderer\", {\r\n\t animatedScroll: {initialValue: false},\r\n\t showInvisibles: {\r\n\t set: function(value) {\r\n\t if (this.$textLayer.setShowInvisibles(value))\r\n\t this.$loop.schedule(this.CHANGE_TEXT);\r\n\t },\r\n\t initialValue: false\r\n\t },\r\n\t showPrintMargin: {\r\n\t set: function() { this.$updatePrintMargin(); },\r\n\t initialValue: true\r\n\t },\r\n\t printMarginColumn: {\r\n\t set: function() { this.$updatePrintMargin(); },\r\n\t initialValue: 80\r\n\t },\r\n\t printMargin: {\r\n\t set: function(val) {\r\n\t if (typeof val == \"number\")\r\n\t this.$printMarginColumn = val;\r\n\t this.$showPrintMargin = !!val;\r\n\t this.$updatePrintMargin();\r\n\t },\r\n\t get: function() {\r\n\t return this.$showPrintMargin && this.$printMarginColumn; \r\n\t }\r\n\t },\r\n\t showGutter: {\r\n\t set: function(show){\r\n\t this.$gutter.style.display = show ? \"block\" : \"none\";\r\n\t this.$loop.schedule(this.CHANGE_FULL);\r\n\t this.onGutterResize();\r\n\t },\r\n\t initialValue: true\r\n\t },\r\n\t fadeFoldWidgets: {\r\n\t set: function(show) {\r\n\t dom.setCssClass(this.$gutter, \"ace_fade-fold-widgets\", show);\r\n\t },\r\n\t initialValue: false\r\n\t },\r\n\t showFoldWidgets: {\r\n\t set: function(show) {this.$gutterLayer.setShowFoldWidgets(show)},\r\n\t initialValue: true\r\n\t },\r\n\t showLineNumbers: {\r\n\t set: function(show) {\r\n\t this.$gutterLayer.setShowLineNumbers(show);\r\n\t this.$loop.schedule(this.CHANGE_GUTTER);\r\n\t },\r\n\t initialValue: true\r\n\t },\r\n\t displayIndentGuides: {\r\n\t set: function(show) {\r\n\t if (this.$textLayer.setDisplayIndentGuides(show))\r\n\t this.$loop.schedule(this.CHANGE_TEXT);\r\n\t },\r\n\t initialValue: true\r\n\t },\r\n\t highlightGutterLine: {\r\n\t set: function(shouldHighlight) {\r\n\t if (!this.$gutterLineHighlight) {\r\n\t this.$gutterLineHighlight = dom.createElement(\"div\");\r\n\t this.$gutterLineHighlight.className = \"ace_gutter-active-line\";\r\n\t this.$gutter.appendChild(this.$gutterLineHighlight);\r\n\t return;\r\n\t }\r\n\r\n\t this.$gutterLineHighlight.style.display = shouldHighlight ? \"\" : \"none\";\r\n\t if (this.$cursorLayer.$pixelPos)\r\n\t this.$updateGutterLineHighlight();\r\n\t },\r\n\t initialValue: false,\r\n\t value: true\r\n\t },\r\n\t hScrollBarAlwaysVisible: {\r\n\t set: function(val) {\r\n\t if (!this.$hScrollBarAlwaysVisible || !this.$horizScroll)\r\n\t this.$loop.schedule(this.CHANGE_SCROLL);\r\n\t },\r\n\t initialValue: false\r\n\t },\r\n\t vScrollBarAlwaysVisible: {\r\n\t set: function(val) {\r\n\t if (!this.$vScrollBarAlwaysVisible || !this.$vScroll)\r\n\t this.$loop.schedule(this.CHANGE_SCROLL);\r\n\t },\r\n\t initialValue: false\r\n\t },\r\n\t fontSize: {\r\n\t set: function(size) {\r\n\t if (typeof size == \"number\")\r\n\t size = size + \"px\";\r\n\t this.container.style.fontSize = size;\r\n\t this.updateFontSize();\r\n\t },\r\n\t initialValue: 12\r\n\t },\r\n\t fontFamily: {\r\n\t set: function(name) {\r\n\t this.container.style.fontFamily = name;\r\n\t this.updateFontSize();\r\n\t }\r\n\t },\r\n\t maxLines: {\r\n\t set: function(val) {\r\n\t this.updateFull();\r\n\t }\r\n\t },\r\n\t minLines: {\r\n\t set: function(val) {\r\n\t this.updateFull();\r\n\t }\r\n\t },\r\n\t scrollPastEnd: {\r\n\t set: function(val) {\r\n\t val = +val || 0;\r\n\t if (this.$scrollPastEnd == val)\r\n\t return;\r\n\t this.$scrollPastEnd = val;\r\n\t this.$loop.schedule(this.CHANGE_SCROLL);\r\n\t },\r\n\t initialValue: 0,\r\n\t handlesSet: true\r\n\t },\r\n\t fixedWidthGutter: {\r\n\t set: function(val) {\r\n\t this.$gutterLayer.$fixedWidth = !!val;\r\n\t this.$loop.schedule(this.CHANGE_GUTTER);\r\n\t }\r\n\t },\r\n\t theme: {\r\n\t set: function(val) { this.setTheme(val) },\r\n\t get: function() { return this.$themeId || this.theme; },\r\n\t initialValue: \"./theme/textmate\",\r\n\t handlesSet: true\r\n\t }\r\n\t});\r\n\r\n\texports.VirtualRenderer = VirtualRenderer;\r\n\t});\r\n\r\n\tace.define(\"ace/worker/worker_client\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/net\",\"ace/lib/event_emitter\",\"ace/config\"], function(acequire, exports, module) {\r\n\t\"use strict\";\r\n\r\n\tvar oop = acequire(\"../lib/oop\");\r\n\tvar net = acequire(\"../lib/net\");\r\n\tvar EventEmitter = acequire(\"../lib/event_emitter\").EventEmitter;\r\n\tvar config = acequire(\"../config\");\r\n\r\n\tvar WorkerClient = function(topLevelNamespaces, mod, classname, workerUrl) {\r\n\t this.$sendDeltaQueue = this.$sendDeltaQueue.bind(this);\r\n\t this.changeListener = this.changeListener.bind(this);\r\n\t this.onMessage = this.onMessage.bind(this);\r\n\t if (acequire.nameToUrl && !acequire.toUrl)\r\n\t acequire.toUrl = acequire.nameToUrl;\r\n\t \r\n\t if (config.get(\"packaged\") || !acequire.toUrl) {\r\n\t workerUrl = workerUrl || config.moduleUrl(mod.id, \"worker\")\r\n\t } else {\r\n\t var normalizePath = this.$normalizePath;\r\n\t workerUrl = workerUrl || normalizePath(acequire.toUrl(\"ace/worker/worker.js\", null, \"_\"));\r\n\r\n\t var tlns = {};\r\n\t topLevelNamespaces.forEach(function(ns) {\r\n\t tlns[ns] = normalizePath(acequire.toUrl(ns, null, \"_\").replace(/(\\.js)?(\\?.*)?$/, \"\"));\r\n\t });\r\n\t }\r\n\r\n\t try {\r\n\t var workerSrc = mod.src;\r\n\t var Blob = __webpack_require__(66);\r\n\t var blob = new Blob([ workerSrc ], { type: 'application/javascript' });\r\n\t var blobUrl = (window.URL || window.webkitURL).createObjectURL(blob);\r\n\r\n\t this.$worker = new Worker(blobUrl);\r\n\r\n\t } catch(e) {\r\n\t if (e instanceof window.DOMException) {\r\n\t var blob = this.$workerBlob(workerUrl);\r\n\t var URL = window.URL || window.webkitURL;\r\n\t var blobURL = URL.createObjectURL(blob);\r\n\r\n\t this.$worker = new Worker(blobURL);\r\n\t URL.revokeObjectURL(blobURL);\r\n\t } else {\r\n\t throw e;\r\n\t }\r\n\t }\r\n\t this.$worker.postMessage({\r\n\t init : true,\r\n\t tlns : tlns,\r\n\t module : mod.id,\r\n\t classname : classname\r\n\t });\r\n\r\n\t this.callbackId = 1;\r\n\t this.callbacks = {};\r\n\r\n\t this.$worker.onmessage = this.onMessage;\r\n\t};\r\n\r\n\t(function(){\r\n\r\n\t oop.implement(this, EventEmitter);\r\n\r\n\t this.onMessage = function(e) {\r\n\t var msg = e.data;\r\n\t switch(msg.type) {\r\n\t case \"event\":\r\n\t this._signal(msg.name, {data: msg.data});\r\n\t break;\r\n\t case \"call\":\r\n\t var callback = this.callbacks[msg.id];\r\n\t if (callback) {\r\n\t callback(msg.data);\r\n\t delete this.callbacks[msg.id];\r\n\t }\r\n\t break;\r\n\t case \"error\":\r\n\t this.reportError(msg.data);\r\n\t break;\r\n\t case \"log\":\r\n\t window.console && console.log && console.log.apply(console, msg.data);\r\n\t break;\r\n\t }\r\n\t };\r\n\t \r\n\t this.reportError = function(err) {\r\n\t window.console && console.error && console.error(err);\r\n\t };\r\n\r\n\t this.$normalizePath = function(path) {\r\n\t return net.qualifyURL(path);\r\n\t };\r\n\r\n\t this.terminate = function() {\r\n\t this._signal(\"terminate\", {});\r\n\t this.deltaQueue = null;\r\n\t this.$worker.terminate();\r\n\t this.$worker = null;\r\n\t if (this.$doc)\r\n\t this.$doc.off(\"change\", this.changeListener);\r\n\t this.$doc = null;\r\n\t };\r\n\r\n\t this.send = function(cmd, args) {\r\n\t this.$worker.postMessage({command: cmd, args: args});\r\n\t };\r\n\r\n\t this.call = function(cmd, args, callback) {\r\n\t if (callback) {\r\n\t var id = this.callbackId++;\r\n\t this.callbacks[id] = callback;\r\n\t args.push(id);\r\n\t }\r\n\t this.send(cmd, args);\r\n\t };\r\n\r\n\t this.emit = function(event, data) {\r\n\t try {\r\n\t this.$worker.postMessage({event: event, data: {data: data.data}});\r\n\t }\r\n\t catch(ex) {\r\n\t console.error(ex.stack);\r\n\t }\r\n\t };\r\n\r\n\t this.attachToDocument = function(doc) {\r\n\t if(this.$doc)\r\n\t this.terminate();\r\n\r\n\t this.$doc = doc;\r\n\t this.call(\"setValue\", [doc.getValue()]);\r\n\t doc.on(\"change\", this.changeListener);\r\n\t };\r\n\r\n\t this.changeListener = function(delta) {\r\n\t if (!this.deltaQueue) {\r\n\t this.deltaQueue = [];\r\n\t setTimeout(this.$sendDeltaQueue, 0);\r\n\t }\r\n\t if (delta.action == \"insert\")\r\n\t this.deltaQueue.push(delta.start, delta.lines);\r\n\t else\r\n\t this.deltaQueue.push(delta.start, delta.end);\r\n\t };\r\n\r\n\t this.$sendDeltaQueue = function() {\r\n\t var q = this.deltaQueue;\r\n\t if (!q) return;\r\n\t this.deltaQueue = null;\r\n\t if (q.length > 50 && q.length > this.$doc.getLength() >> 1) {\r\n\t this.call(\"setValue\", [this.$doc.getValue()]);\r\n\t } else\r\n\t this.emit(\"change\", {data: q});\r\n\t };\r\n\r\n\t this.$workerBlob = function(workerUrl) {\r\n\t var script = \"importScripts('\" + net.qualifyURL(workerUrl) + \"');\";\r\n\t try {\r\n\t return new Blob([script], {\"type\": \"application/javascript\"});\r\n\t } catch (e) { // Backwards-compatibility\r\n\t var BlobBuilder = window.BlobBuilder || window.WebKitBlobBuilder || window.MozBlobBuilder;\r\n\t var blobBuilder = new BlobBuilder();\r\n\t blobBuilder.append(script);\r\n\t return blobBuilder.getBlob(\"application/javascript\");\r\n\t }\r\n\t };\r\n\r\n\t}).call(WorkerClient.prototype);\r\n\r\n\r\n\tvar UIWorkerClient = function(topLevelNamespaces, mod, classname) {\r\n\t this.$sendDeltaQueue = this.$sendDeltaQueue.bind(this);\r\n\t this.changeListener = this.changeListener.bind(this);\r\n\t this.callbackId = 1;\r\n\t this.callbacks = {};\r\n\t this.messageBuffer = [];\r\n\r\n\t var main = null;\r\n\t var emitSync = false;\r\n\t var sender = Object.create(EventEmitter);\r\n\t var _self = this;\r\n\r\n\t this.$worker = {};\r\n\t this.$worker.terminate = function() {};\r\n\t this.$worker.postMessage = function(e) {\r\n\t _self.messageBuffer.push(e);\r\n\t if (main) {\r\n\t if (emitSync)\r\n\t setTimeout(processNext);\r\n\t else\r\n\t processNext();\r\n\t }\r\n\t };\r\n\t this.setEmitSync = function(val) { emitSync = val };\r\n\r\n\t var processNext = function() {\r\n\t var msg = _self.messageBuffer.shift();\r\n\t if (msg.command)\r\n\t main[msg.command].apply(main, msg.args);\r\n\t else if (msg.event)\r\n\t sender._signal(msg.event, msg.data);\r\n\t };\r\n\r\n\t sender.postMessage = function(msg) {\r\n\t _self.onMessage({data: msg});\r\n\t };\r\n\t sender.callback = function(data, callbackId) {\r\n\t this.postMessage({type: \"call\", id: callbackId, data: data});\r\n\t };\r\n\t sender.emit = function(name, data) {\r\n\t this.postMessage({type: \"event\", name: name, data: data});\r\n\t };\r\n\r\n\t config.loadModule([\"worker\", mod], function(Main) {\r\n\t main = new Main[classname](sender);\r\n\t while (_self.messageBuffer.length)\r\n\t processNext();\r\n\t });\r\n\t};\r\n\r\n\tUIWorkerClient.prototype = WorkerClient.prototype;\r\n\r\n\texports.UIWorkerClient = UIWorkerClient;\r\n\texports.WorkerClient = WorkerClient;\r\n\r\n\t});\r\n\r\n\tace.define(\"ace/placeholder\",[\"require\",\"exports\",\"module\",\"ace/range\",\"ace/lib/event_emitter\",\"ace/lib/oop\"], function(acequire, exports, module) {\r\n\t\"use strict\";\r\n\r\n\tvar Range = acequire(\"./range\").Range;\r\n\tvar EventEmitter = acequire(\"./lib/event_emitter\").EventEmitter;\r\n\tvar oop = acequire(\"./lib/oop\");\r\n\r\n\tvar PlaceHolder = function(session, length, pos, others, mainClass, othersClass) {\r\n\t var _self = this;\r\n\t this.length = length;\r\n\t this.session = session;\r\n\t this.doc = session.getDocument();\r\n\t this.mainClass = mainClass;\r\n\t this.othersClass = othersClass;\r\n\t this.$onUpdate = this.onUpdate.bind(this);\r\n\t this.doc.on(\"change\", this.$onUpdate);\r\n\t this.$others = others;\r\n\t \r\n\t this.$onCursorChange = function() {\r\n\t setTimeout(function() {\r\n\t _self.onCursorChange();\r\n\t });\r\n\t };\r\n\t \r\n\t this.$pos = pos;\r\n\t var undoStack = session.getUndoManager().$undoStack || session.getUndoManager().$undostack || {length: -1};\r\n\t this.$undoStackDepth = undoStack.length;\r\n\t this.setup();\r\n\r\n\t session.selection.on(\"changeCursor\", this.$onCursorChange);\r\n\t};\r\n\r\n\t(function() {\r\n\r\n\t oop.implement(this, EventEmitter);\r\n\t this.setup = function() {\r\n\t var _self = this;\r\n\t var doc = this.doc;\r\n\t var session = this.session;\r\n\t \r\n\t this.selectionBefore = session.selection.toJSON();\r\n\t if (session.selection.inMultiSelectMode)\r\n\t session.selection.toSingleRange();\r\n\r\n\t this.pos = doc.createAnchor(this.$pos.row, this.$pos.column);\r\n\t var pos = this.pos;\r\n\t pos.$insertRight = true;\r\n\t pos.detach();\r\n\t pos.markerId = session.addMarker(new Range(pos.row, pos.column, pos.row, pos.column + this.length), this.mainClass, null, false);\r\n\t this.others = [];\r\n\t this.$others.forEach(function(other) {\r\n\t var anchor = doc.createAnchor(other.row, other.column);\r\n\t anchor.$insertRight = true;\r\n\t anchor.detach();\r\n\t _self.others.push(anchor);\r\n\t });\r\n\t session.setUndoSelect(false);\r\n\t };\r\n\t this.showOtherMarkers = function() {\r\n\t if (this.othersActive) return;\r\n\t var session = this.session;\r\n\t var _self = this;\r\n\t this.othersActive = true;\r\n\t this.others.forEach(function(anchor) {\r\n\t anchor.markerId = session.addMarker(new Range(anchor.row, anchor.column, anchor.row, anchor.column+_self.length), _self.othersClass, null, false);\r\n\t });\r\n\t };\r\n\t this.hideOtherMarkers = function() {\r\n\t if (!this.othersActive) return;\r\n\t this.othersActive = false;\r\n\t for (var i = 0; i < this.others.length; i++) {\r\n\t this.session.removeMarker(this.others[i].markerId);\r\n\t }\r\n\t };\r\n\t this.onUpdate = function(delta) {\r\n\t if (this.$updating)\r\n\t return this.updateAnchors(delta);\r\n\t \r\n\t var range = delta;\r\n\t if (range.start.row !== range.end.row) return;\r\n\t if (range.start.row !== this.pos.row) return;\r\n\t this.$updating = true;\r\n\t var lengthDiff = delta.action === \"insert\" ? range.end.column - range.start.column : range.start.column - range.end.column;\r\n\t var inMainRange = range.start.column >= this.pos.column && range.start.column <= this.pos.column + this.length + 1;\r\n\t var distanceFromStart = range.start.column - this.pos.column;\r\n\t \r\n\t this.updateAnchors(delta);\r\n\t \r\n\t if (inMainRange)\r\n\t this.length += lengthDiff;\r\n\r\n\t if (inMainRange && !this.session.$fromUndo) {\r\n\t if (delta.action === 'insert') {\r\n\t for (var i = this.others.length - 1; i >= 0; i--) {\r\n\t var otherPos = this.others[i];\r\n\t var newPos = {row: otherPos.row, column: otherPos.column + distanceFromStart};\r\n\t this.doc.insertMergedLines(newPos, delta.lines);\r\n\t }\r\n\t } else if (delta.action === 'remove') {\r\n\t for (var i = this.others.length - 1; i >= 0; i--) {\r\n\t var otherPos = this.others[i];\r\n\t var newPos = {row: otherPos.row, column: otherPos.column + distanceFromStart};\r\n\t this.doc.remove(new Range(newPos.row, newPos.column, newPos.row, newPos.column - lengthDiff));\r\n\t }\r\n\t }\r\n\t }\r\n\t \r\n\t this.$updating = false;\r\n\t this.updateMarkers();\r\n\t };\r\n\t \r\n\t this.updateAnchors = function(delta) {\r\n\t this.pos.onChange(delta);\r\n\t for (var i = this.others.length; i--;)\r\n\t this.others[i].onChange(delta);\r\n\t this.updateMarkers();\r\n\t };\r\n\t \r\n\t this.updateMarkers = function() {\r\n\t if (this.$updating)\r\n\t return;\r\n\t var _self = this;\r\n\t var session = this.session;\r\n\t var updateMarker = function(pos, className) {\r\n\t session.removeMarker(pos.markerId);\r\n\t pos.markerId = session.addMarker(new Range(pos.row, pos.column, pos.row, pos.column+_self.length), className, null, false);\r\n\t };\r\n\t updateMarker(this.pos, this.mainClass);\r\n\t for (var i = this.others.length; i--;)\r\n\t updateMarker(this.others[i], this.othersClass);\r\n\t };\r\n\r\n\t this.onCursorChange = function(event) {\r\n\t if (this.$updating || !this.session) return;\r\n\t var pos = this.session.selection.getCursor();\r\n\t if (pos.row === this.pos.row && pos.column >= this.pos.column && pos.column <= this.pos.column + this.length) {\r\n\t this.showOtherMarkers();\r\n\t this._emit(\"cursorEnter\", event);\r\n\t } else {\r\n\t this.hideOtherMarkers();\r\n\t this._emit(\"cursorLeave\", event);\r\n\t }\r\n\t }; \r\n\t this.detach = function() {\r\n\t this.session.removeMarker(this.pos && this.pos.markerId);\r\n\t this.hideOtherMarkers();\r\n\t this.doc.removeEventListener(\"change\", this.$onUpdate);\r\n\t this.session.selection.removeEventListener(\"changeCursor\", this.$onCursorChange);\r\n\t this.session.setUndoSelect(true);\r\n\t this.session = null;\r\n\t };\r\n\t this.cancel = function() {\r\n\t if (this.$undoStackDepth === -1)\r\n\t return;\r\n\t var undoManager = this.session.getUndoManager();\r\n\t var undosRequired = (undoManager.$undoStack || undoManager.$undostack).length - this.$undoStackDepth;\r\n\t for (var i = 0; i < undosRequired; i++) {\r\n\t undoManager.undo(true);\r\n\t }\r\n\t if (this.selectionBefore)\r\n\t this.session.selection.fromJSON(this.selectionBefore);\r\n\t };\r\n\t}).call(PlaceHolder.prototype);\r\n\r\n\r\n\texports.PlaceHolder = PlaceHolder;\r\n\t});\r\n\r\n\tace.define(\"ace/mouse/multi_select_handler\",[\"require\",\"exports\",\"module\",\"ace/lib/event\",\"ace/lib/useragent\"], function(acequire, exports, module) {\r\n\r\n\tvar event = acequire(\"../lib/event\");\r\n\tvar useragent = acequire(\"../lib/useragent\");\r\n\tfunction isSamePoint(p1, p2) {\r\n\t return p1.row == p2.row && p1.column == p2.column;\r\n\t}\r\n\r\n\tfunction onMouseDown(e) {\r\n\t var ev = e.domEvent;\r\n\t var alt = ev.altKey;\r\n\t var shift = ev.shiftKey;\r\n\t var ctrl = ev.ctrlKey;\r\n\t var accel = e.getAccelKey();\r\n\t var button = e.getButton();\r\n\t \r\n\t if (ctrl && useragent.isMac)\r\n\t button = ev.button;\r\n\r\n\t if (e.editor.inMultiSelectMode && button == 2) {\r\n\t e.editor.textInput.onContextMenu(e.domEvent);\r\n\t return;\r\n\t }\r\n\t \r\n\t if (!ctrl && !alt && !accel) {\r\n\t if (button === 0 && e.editor.inMultiSelectMode)\r\n\t e.editor.exitMultiSelectMode();\r\n\t return;\r\n\t }\r\n\t \r\n\t if (button !== 0)\r\n\t return;\r\n\r\n\t var editor = e.editor;\r\n\t var selection = editor.selection;\r\n\t var isMultiSelect = editor.inMultiSelectMode;\r\n\t var pos = e.getDocumentPosition();\r\n\t var cursor = selection.getCursor();\r\n\t var inSelection = e.inSelection() || (selection.isEmpty() && isSamePoint(pos, cursor));\r\n\r\n\t var mouseX = e.x, mouseY = e.y;\r\n\t var onMouseSelection = function(e) {\r\n\t mouseX = e.clientX;\r\n\t mouseY = e.clientY;\r\n\t };\r\n\t \r\n\t var session = editor.session;\r\n\t var screenAnchor = editor.renderer.pixelToScreenCoordinates(mouseX, mouseY);\r\n\t var screenCursor = screenAnchor;\r\n\t \r\n\t var selectionMode;\r\n\t if (editor.$mouseHandler.$enableJumpToDef) {\r\n\t if (ctrl && alt || accel && alt)\r\n\t selectionMode = shift ? \"block\" : \"add\";\r\n\t else if (alt && editor.$blockSelectEnabled)\r\n\t selectionMode = \"block\";\r\n\t } else {\r\n\t if (accel && !alt) {\r\n\t selectionMode = \"add\";\r\n\t if (!isMultiSelect && shift)\r\n\t return;\r\n\t } else if (alt && editor.$blockSelectEnabled) {\r\n\t selectionMode = \"block\";\r\n\t }\r\n\t }\r\n\t \r\n\t if (selectionMode && useragent.isMac && ev.ctrlKey) {\r\n\t editor.$mouseHandler.cancelContextMenu();\r\n\t }\r\n\r\n\t if (selectionMode == \"add\") {\r\n\t if (!isMultiSelect && inSelection)\r\n\t return; // dragging\r\n\r\n\t if (!isMultiSelect) {\r\n\t var range = selection.toOrientedRange();\r\n\t editor.addSelectionMarker(range);\r\n\t }\r\n\r\n\t var oldRange = selection.rangeList.rangeAtPoint(pos);\r\n\t \r\n\t \r\n\t editor.$blockScrolling++;\r\n\t editor.inVirtualSelectionMode = true;\r\n\t \r\n\t if (shift) {\r\n\t oldRange = null;\r\n\t range = selection.ranges[0] || range;\r\n\t editor.removeSelectionMarker(range);\r\n\t }\r\n\t editor.once(\"mouseup\", function() {\r\n\t var tmpSel = selection.toOrientedRange();\r\n\r\n\t if (oldRange && tmpSel.isEmpty() && isSamePoint(oldRange.cursor, tmpSel.cursor))\r\n\t selection.substractPoint(tmpSel.cursor);\r\n\t else {\r\n\t if (shift) {\r\n\t selection.substractPoint(range.cursor);\r\n\t } else if (range) {\r\n\t editor.removeSelectionMarker(range);\r\n\t selection.addRange(range);\r\n\t }\r\n\t selection.addRange(tmpSel);\r\n\t }\r\n\t editor.$blockScrolling--;\r\n\t editor.inVirtualSelectionMode = false;\r\n\t });\r\n\r\n\t } else if (selectionMode == \"block\") {\r\n\t e.stop();\r\n\t editor.inVirtualSelectionMode = true; \r\n\t var initialRange;\r\n\t var rectSel = [];\r\n\t var blockSelect = function() {\r\n\t var newCursor = editor.renderer.pixelToScreenCoordinates(mouseX, mouseY);\r\n\t var cursor = session.screenToDocumentPosition(newCursor.row, newCursor.column);\r\n\r\n\t if (isSamePoint(screenCursor, newCursor) && isSamePoint(cursor, selection.lead))\r\n\t return;\r\n\t screenCursor = newCursor;\r\n\t \r\n\t editor.$blockScrolling++;\r\n\t editor.selection.moveToPosition(cursor);\r\n\t editor.renderer.scrollCursorIntoView();\r\n\r\n\t editor.removeSelectionMarkers(rectSel);\r\n\t rectSel = selection.rectangularRangeBlock(screenCursor, screenAnchor);\r\n\t if (editor.$mouseHandler.$clickSelection && rectSel.length == 1 && rectSel[0].isEmpty())\r\n\t rectSel[0] = editor.$mouseHandler.$clickSelection.clone();\r\n\t rectSel.forEach(editor.addSelectionMarker, editor);\r\n\t editor.updateSelectionMarkers();\r\n\t editor.$blockScrolling--;\r\n\t };\r\n\t editor.$blockScrolling++;\r\n\t if (isMultiSelect && !accel) {\r\n\t selection.toSingleRange();\r\n\t } else if (!isMultiSelect && accel) {\r\n\t initialRange = selection.toOrientedRange();\r\n\t editor.addSelectionMarker(initialRange);\r\n\t }\r\n\t \r\n\t if (shift)\r\n\t screenAnchor = session.documentToScreenPosition(selection.lead); \r\n\t else\r\n\t selection.moveToPosition(pos);\r\n\t editor.$blockScrolling--;\r\n\t \r\n\t screenCursor = {row: -1, column: -1};\r\n\r\n\t var onMouseSelectionEnd = function(e) {\r\n\t clearInterval(timerId);\r\n\t editor.removeSelectionMarkers(rectSel);\r\n\t if (!rectSel.length)\r\n\t rectSel = [selection.toOrientedRange()];\r\n\t editor.$blockScrolling++;\r\n\t if (initialRange) {\r\n\t editor.removeSelectionMarker(initialRange);\r\n\t selection.toSingleRange(initialRange);\r\n\t }\r\n\t for (var i = 0; i < rectSel.length; i++)\r\n\t selection.addRange(rectSel[i]);\r\n\t editor.inVirtualSelectionMode = false;\r\n\t editor.$mouseHandler.$clickSelection = null;\r\n\t editor.$blockScrolling--;\r\n\t };\r\n\r\n\t var onSelectionInterval = blockSelect;\r\n\r\n\t event.capture(editor.container, onMouseSelection, onMouseSelectionEnd);\r\n\t var timerId = setInterval(function() {onSelectionInterval();}, 20);\r\n\r\n\t return e.preventDefault();\r\n\t }\r\n\t}\r\n\r\n\r\n\texports.onMouseDown = onMouseDown;\r\n\r\n\t});\r\n\r\n\tace.define(\"ace/commands/multi_select_commands\",[\"require\",\"exports\",\"module\",\"ace/keyboard/hash_handler\"], function(acequire, exports, module) {\r\n\texports.defaultCommands = [{\r\n\t name: \"addCursorAbove\",\r\n\t exec: function(editor) { editor.selectMoreLines(-1); },\r\n\t bindKey: {win: \"Ctrl-Alt-Up\", mac: \"Ctrl-Alt-Up\"},\r\n\t scrollIntoView: \"cursor\",\r\n\t readOnly: true\r\n\t}, {\r\n\t name: \"addCursorBelow\",\r\n\t exec: function(editor) { editor.selectMoreLines(1); },\r\n\t bindKey: {win: \"Ctrl-Alt-Down\", mac: \"Ctrl-Alt-Down\"},\r\n\t scrollIntoView: \"cursor\",\r\n\t readOnly: true\r\n\t}, {\r\n\t name: \"addCursorAboveSkipCurrent\",\r\n\t exec: function(editor) { editor.selectMoreLines(-1, true); },\r\n\t bindKey: {win: \"Ctrl-Alt-Shift-Up\", mac: \"Ctrl-Alt-Shift-Up\"},\r\n\t scrollIntoView: \"cursor\",\r\n\t readOnly: true\r\n\t}, {\r\n\t name: \"addCursorBelowSkipCurrent\",\r\n\t exec: function(editor) { editor.selectMoreLines(1, true); },\r\n\t bindKey: {win: \"Ctrl-Alt-Shift-Down\", mac: \"Ctrl-Alt-Shift-Down\"},\r\n\t scrollIntoView: \"cursor\",\r\n\t readOnly: true\r\n\t}, {\r\n\t name: \"selectMoreBefore\",\r\n\t exec: function(editor) { editor.selectMore(-1); },\r\n\t bindKey: {win: \"Ctrl-Alt-Left\", mac: \"Ctrl-Alt-Left\"},\r\n\t scrollIntoView: \"cursor\",\r\n\t readOnly: true\r\n\t}, {\r\n\t name: \"selectMoreAfter\",\r\n\t exec: function(editor) { editor.selectMore(1); },\r\n\t bindKey: {win: \"Ctrl-Alt-Right\", mac: \"Ctrl-Alt-Right\"},\r\n\t scrollIntoView: \"cursor\",\r\n\t readOnly: true\r\n\t}, {\r\n\t name: \"selectNextBefore\",\r\n\t exec: function(editor) { editor.selectMore(-1, true); },\r\n\t bindKey: {win: \"Ctrl-Alt-Shift-Left\", mac: \"Ctrl-Alt-Shift-Left\"},\r\n\t scrollIntoView: \"cursor\",\r\n\t readOnly: true\r\n\t}, {\r\n\t name: \"selectNextAfter\",\r\n\t exec: function(editor) { editor.selectMore(1, true); },\r\n\t bindKey: {win: \"Ctrl-Alt-Shift-Right\", mac: \"Ctrl-Alt-Shift-Right\"},\r\n\t scrollIntoView: \"cursor\",\r\n\t readOnly: true\r\n\t}, {\r\n\t name: \"splitIntoLines\",\r\n\t exec: function(editor) { editor.multiSelect.splitIntoLines(); },\r\n\t bindKey: {win: \"Ctrl-Alt-L\", mac: \"Ctrl-Alt-L\"},\r\n\t readOnly: true\r\n\t}, {\r\n\t name: \"alignCursors\",\r\n\t exec: function(editor) { editor.alignCursors(); },\r\n\t bindKey: {win: \"Ctrl-Alt-A\", mac: \"Ctrl-Alt-A\"},\r\n\t scrollIntoView: \"cursor\"\r\n\t}, {\r\n\t name: \"findAll\",\r\n\t exec: function(editor) { editor.findAll(); },\r\n\t bindKey: {win: \"Ctrl-Alt-K\", mac: \"Ctrl-Alt-G\"},\r\n\t scrollIntoView: \"cursor\",\r\n\t readOnly: true\r\n\t}];\r\n\texports.multiSelectCommands = [{\r\n\t name: \"singleSelection\",\r\n\t bindKey: \"esc\",\r\n\t exec: function(editor) { editor.exitMultiSelectMode(); },\r\n\t scrollIntoView: \"cursor\",\r\n\t readOnly: true,\r\n\t isAvailable: function(editor) {return editor && editor.inMultiSelectMode}\r\n\t}];\r\n\r\n\tvar HashHandler = acequire(\"../keyboard/hash_handler\").HashHandler;\r\n\texports.keyboardHandler = new HashHandler(exports.multiSelectCommands);\r\n\r\n\t});\r\n\r\n\tace.define(\"ace/multi_select\",[\"require\",\"exports\",\"module\",\"ace/range_list\",\"ace/range\",\"ace/selection\",\"ace/mouse/multi_select_handler\",\"ace/lib/event\",\"ace/lib/lang\",\"ace/commands/multi_select_commands\",\"ace/search\",\"ace/edit_session\",\"ace/editor\",\"ace/config\"], function(acequire, exports, module) {\r\n\r\n\tvar RangeList = acequire(\"./range_list\").RangeList;\r\n\tvar Range = acequire(\"./range\").Range;\r\n\tvar Selection = acequire(\"./selection\").Selection;\r\n\tvar onMouseDown = acequire(\"./mouse/multi_select_handler\").onMouseDown;\r\n\tvar event = acequire(\"./lib/event\");\r\n\tvar lang = acequire(\"./lib/lang\");\r\n\tvar commands = acequire(\"./commands/multi_select_commands\");\r\n\texports.commands = commands.defaultCommands.concat(commands.multiSelectCommands);\r\n\tvar Search = acequire(\"./search\").Search;\r\n\tvar search = new Search();\r\n\r\n\tfunction find(session, needle, dir) {\r\n\t search.$options.wrap = true;\r\n\t search.$options.needle = needle;\r\n\t search.$options.backwards = dir == -1;\r\n\t return search.find(session);\r\n\t}\r\n\tvar EditSession = acequire(\"./edit_session\").EditSession;\r\n\t(function() {\r\n\t this.getSelectionMarkers = function() {\r\n\t return this.$selectionMarkers;\r\n\t };\r\n\t}).call(EditSession.prototype);\r\n\t(function() {\r\n\t this.ranges = null;\r\n\t this.rangeList = null;\r\n\t this.addRange = function(range, $blockChangeEvents) {\r\n\t if (!range)\r\n\t return;\r\n\r\n\t if (!this.inMultiSelectMode && this.rangeCount === 0) {\r\n\t var oldRange = this.toOrientedRange();\r\n\t this.rangeList.add(oldRange);\r\n\t this.rangeList.add(range);\r\n\t if (this.rangeList.ranges.length != 2) {\r\n\t this.rangeList.removeAll();\r\n\t return $blockChangeEvents || this.fromOrientedRange(range);\r\n\t }\r\n\t this.rangeList.removeAll();\r\n\t this.rangeList.add(oldRange);\r\n\t this.$onAddRange(oldRange);\r\n\t }\r\n\r\n\t if (!range.cursor)\r\n\t range.cursor = range.end;\r\n\r\n\t var removed = this.rangeList.add(range);\r\n\r\n\t this.$onAddRange(range);\r\n\r\n\t if (removed.length)\r\n\t this.$onRemoveRange(removed);\r\n\r\n\t if (this.rangeCount > 1 && !this.inMultiSelectMode) {\r\n\t this._signal(\"multiSelect\");\r\n\t this.inMultiSelectMode = true;\r\n\t this.session.$undoSelect = false;\r\n\t this.rangeList.attach(this.session);\r\n\t }\r\n\r\n\t return $blockChangeEvents || this.fromOrientedRange(range);\r\n\t };\r\n\r\n\t this.toSingleRange = function(range) {\r\n\t range = range || this.ranges[0];\r\n\t var removed = this.rangeList.removeAll();\r\n\t if (removed.length)\r\n\t this.$onRemoveRange(removed);\r\n\r\n\t range && this.fromOrientedRange(range);\r\n\t };\r\n\t this.substractPoint = function(pos) {\r\n\t var removed = this.rangeList.substractPoint(pos);\r\n\t if (removed) {\r\n\t this.$onRemoveRange(removed);\r\n\t return removed[0];\r\n\t }\r\n\t };\r\n\t this.mergeOverlappingRanges = function() {\r\n\t var removed = this.rangeList.merge();\r\n\t if (removed.length)\r\n\t this.$onRemoveRange(removed);\r\n\t else if(this.ranges[0])\r\n\t this.fromOrientedRange(this.ranges[0]);\r\n\t };\r\n\r\n\t this.$onAddRange = function(range) {\r\n\t this.rangeCount = this.rangeList.ranges.length;\r\n\t this.ranges.unshift(range);\r\n\t this._signal(\"addRange\", {range: range});\r\n\t };\r\n\r\n\t this.$onRemoveRange = function(removed) {\r\n\t this.rangeCount = this.rangeList.ranges.length;\r\n\t if (this.rangeCount == 1 && this.inMultiSelectMode) {\r\n\t var lastRange = this.rangeList.ranges.pop();\r\n\t removed.push(lastRange);\r\n\t this.rangeCount = 0;\r\n\t }\r\n\r\n\t for (var i = removed.length; i--; ) {\r\n\t var index = this.ranges.indexOf(removed[i]);\r\n\t this.ranges.splice(index, 1);\r\n\t }\r\n\r\n\t this._signal(\"removeRange\", {ranges: removed});\r\n\r\n\t if (this.rangeCount === 0 && this.inMultiSelectMode) {\r\n\t this.inMultiSelectMode = false;\r\n\t this._signal(\"singleSelect\");\r\n\t this.session.$undoSelect = true;\r\n\t this.rangeList.detach(this.session);\r\n\t }\r\n\r\n\t lastRange = lastRange || this.ranges[0];\r\n\t if (lastRange && !lastRange.isEqual(this.getRange()))\r\n\t this.fromOrientedRange(lastRange);\r\n\t };\r\n\t this.$initRangeList = function() {\r\n\t if (this.rangeList)\r\n\t return;\r\n\r\n\t this.rangeList = new RangeList();\r\n\t this.ranges = [];\r\n\t this.rangeCount = 0;\r\n\t };\r\n\t this.getAllRanges = function() {\r\n\t return this.rangeCount ? this.rangeList.ranges.concat() : [this.getRange()];\r\n\t };\r\n\r\n\t this.splitIntoLines = function () {\r\n\t if (this.rangeCount > 1) {\r\n\t var ranges = this.rangeList.ranges;\r\n\t var lastRange = ranges[ranges.length - 1];\r\n\t var range = Range.fromPoints(ranges[0].start, lastRange.end);\r\n\r\n\t this.toSingleRange();\r\n\t this.setSelectionRange(range, lastRange.cursor == lastRange.start);\r\n\t } else {\r\n\t var range = this.getRange();\r\n\t var isBackwards = this.isBackwards();\r\n\t var startRow = range.start.row;\r\n\t var endRow = range.end.row;\r\n\t if (startRow == endRow) {\r\n\t if (isBackwards)\r\n\t var start = range.end, end = range.start;\r\n\t else\r\n\t var start = range.start, end = range.end;\r\n\t \r\n\t this.addRange(Range.fromPoints(end, end));\r\n\t this.addRange(Range.fromPoints(start, start));\r\n\t return;\r\n\t }\r\n\r\n\t var rectSel = [];\r\n\t var r = this.getLineRange(startRow, true);\r\n\t r.start.column = range.start.column;\r\n\t rectSel.push(r);\r\n\r\n\t for (var i = startRow + 1; i < endRow; i++)\r\n\t rectSel.push(this.getLineRange(i, true));\r\n\r\n\t r = this.getLineRange(endRow, true);\r\n\t r.end.column = range.end.column;\r\n\t rectSel.push(r);\r\n\r\n\t rectSel.forEach(this.addRange, this);\r\n\t }\r\n\t };\r\n\t this.toggleBlockSelection = function () {\r\n\t if (this.rangeCount > 1) {\r\n\t var ranges = this.rangeList.ranges;\r\n\t var lastRange = ranges[ranges.length - 1];\r\n\t var range = Range.fromPoints(ranges[0].start, lastRange.end);\r\n\r\n\t this.toSingleRange();\r\n\t this.setSelectionRange(range, lastRange.cursor == lastRange.start);\r\n\t } else {\r\n\t var cursor = this.session.documentToScreenPosition(this.selectionLead);\r\n\t var anchor = this.session.documentToScreenPosition(this.selectionAnchor);\r\n\r\n\t var rectSel = this.rectangularRangeBlock(cursor, anchor);\r\n\t rectSel.forEach(this.addRange, this);\r\n\t }\r\n\t };\r\n\t this.rectangularRangeBlock = function(screenCursor, screenAnchor, includeEmptyLines) {\r\n\t var rectSel = [];\r\n\r\n\t var xBackwards = screenCursor.column < screenAnchor.column;\r\n\t if (xBackwards) {\r\n\t var startColumn = screenCursor.column;\r\n\t var endColumn = screenAnchor.column;\r\n\t } else {\r\n\t var startColumn = screenAnchor.column;\r\n\t var endColumn = screenCursor.column;\r\n\t }\r\n\r\n\t var yBackwards = screenCursor.row < screenAnchor.row;\r\n\t if (yBackwards) {\r\n\t var startRow = screenCursor.row;\r\n\t var endRow = screenAnchor.row;\r\n\t } else {\r\n\t var startRow = screenAnchor.row;\r\n\t var endRow = screenCursor.row;\r\n\t }\r\n\r\n\t if (startColumn < 0)\r\n\t startColumn = 0;\r\n\t if (startRow < 0)\r\n\t startRow = 0;\r\n\r\n\t if (startRow == endRow)\r\n\t includeEmptyLines = true;\r\n\r\n\t for (var row = startRow; row <= endRow; row++) {\r\n\t var range = Range.fromPoints(\r\n\t this.session.screenToDocumentPosition(row, startColumn),\r\n\t this.session.screenToDocumentPosition(row, endColumn)\r\n\t );\r\n\t if (range.isEmpty()) {\r\n\t if (docEnd && isSamePoint(range.end, docEnd))\r\n\t break;\r\n\t var docEnd = range.end;\r\n\t }\r\n\t range.cursor = xBackwards ? range.start : range.end;\r\n\t rectSel.push(range);\r\n\t }\r\n\r\n\t if (yBackwards)\r\n\t rectSel.reverse();\r\n\r\n\t if (!includeEmptyLines) {\r\n\t var end = rectSel.length - 1;\r\n\t while (rectSel[end].isEmpty() && end > 0)\r\n\t end--;\r\n\t if (end > 0) {\r\n\t var start = 0;\r\n\t while (rectSel[start].isEmpty())\r\n\t start++;\r\n\t }\r\n\t for (var i = end; i >= start; i--) {\r\n\t if (rectSel[i].isEmpty())\r\n\t rectSel.splice(i, 1);\r\n\t }\r\n\t }\r\n\r\n\t return rectSel;\r\n\t };\r\n\t}).call(Selection.prototype);\r\n\tvar Editor = acequire(\"./editor\").Editor;\r\n\t(function() {\r\n\t this.updateSelectionMarkers = function() {\r\n\t this.renderer.updateCursor();\r\n\t this.renderer.updateBackMarkers();\r\n\t };\r\n\t this.addSelectionMarker = function(orientedRange) {\r\n\t if (!orientedRange.cursor)\r\n\t orientedRange.cursor = orientedRange.end;\r\n\r\n\t var style = this.getSelectionStyle();\r\n\t orientedRange.marker = this.session.addMarker(orientedRange, \"ace_selection\", style);\r\n\r\n\t this.session.$selectionMarkers.push(orientedRange);\r\n\t this.session.selectionMarkerCount = this.session.$selectionMarkers.length;\r\n\t return orientedRange;\r\n\t };\r\n\t this.removeSelectionMarker = function(range) {\r\n\t if (!range.marker)\r\n\t return;\r\n\t this.session.removeMarker(range.marker);\r\n\t var index = this.session.$selectionMarkers.indexOf(range);\r\n\t if (index != -1)\r\n\t this.session.$selectionMarkers.splice(index, 1);\r\n\t this.session.selectionMarkerCount = this.session.$selectionMarkers.length;\r\n\t };\r\n\r\n\t this.removeSelectionMarkers = function(ranges) {\r\n\t var markerList = this.session.$selectionMarkers;\r\n\t for (var i = ranges.length; i--; ) {\r\n\t var range = ranges[i];\r\n\t if (!range.marker)\r\n\t continue;\r\n\t this.session.removeMarker(range.marker);\r\n\t var index = markerList.indexOf(range);\r\n\t if (index != -1)\r\n\t markerList.splice(index, 1);\r\n\t }\r\n\t this.session.selectionMarkerCount = markerList.length;\r\n\t };\r\n\r\n\t this.$onAddRange = function(e) {\r\n\t this.addSelectionMarker(e.range);\r\n\t this.renderer.updateCursor();\r\n\t this.renderer.updateBackMarkers();\r\n\t };\r\n\r\n\t this.$onRemoveRange = function(e) {\r\n\t this.removeSelectionMarkers(e.ranges);\r\n\t this.renderer.updateCursor();\r\n\t this.renderer.updateBackMarkers();\r\n\t };\r\n\r\n\t this.$onMultiSelect = function(e) {\r\n\t if (this.inMultiSelectMode)\r\n\t return;\r\n\t this.inMultiSelectMode = true;\r\n\r\n\t this.setStyle(\"ace_multiselect\");\r\n\t this.keyBinding.addKeyboardHandler(commands.keyboardHandler);\r\n\t this.commands.setDefaultHandler(\"exec\", this.$onMultiSelectExec);\r\n\r\n\t this.renderer.updateCursor();\r\n\t this.renderer.updateBackMarkers();\r\n\t };\r\n\r\n\t this.$onSingleSelect = function(e) {\r\n\t if (this.session.multiSelect.inVirtualMode)\r\n\t return;\r\n\t this.inMultiSelectMode = false;\r\n\r\n\t this.unsetStyle(\"ace_multiselect\");\r\n\t this.keyBinding.removeKeyboardHandler(commands.keyboardHandler);\r\n\r\n\t this.commands.removeDefaultHandler(\"exec\", this.$onMultiSelectExec);\r\n\t this.renderer.updateCursor();\r\n\t this.renderer.updateBackMarkers();\r\n\t this._emit(\"changeSelection\");\r\n\t };\r\n\r\n\t this.$onMultiSelectExec = function(e) {\r\n\t var command = e.command;\r\n\t var editor = e.editor;\r\n\t if (!editor.multiSelect)\r\n\t return;\r\n\t if (!command.multiSelectAction) {\r\n\t var result = command.exec(editor, e.args || {});\r\n\t editor.multiSelect.addRange(editor.multiSelect.toOrientedRange());\r\n\t editor.multiSelect.mergeOverlappingRanges();\r\n\t } else if (command.multiSelectAction == \"forEach\") {\r\n\t result = editor.forEachSelection(command, e.args);\r\n\t } else if (command.multiSelectAction == \"forEachLine\") {\r\n\t result = editor.forEachSelection(command, e.args, true);\r\n\t } else if (command.multiSelectAction == \"single\") {\r\n\t editor.exitMultiSelectMode();\r\n\t result = command.exec(editor, e.args || {});\r\n\t } else {\r\n\t result = command.multiSelectAction(editor, e.args || {});\r\n\t }\r\n\t return result;\r\n\t }; \r\n\t this.forEachSelection = function(cmd, args, options) {\r\n\t if (this.inVirtualSelectionMode)\r\n\t return;\r\n\t var keepOrder = options && options.keepOrder;\r\n\t var $byLines = options == true || options && options.$byLines\r\n\t var session = this.session;\r\n\t var selection = this.selection;\r\n\t var rangeList = selection.rangeList;\r\n\t var ranges = (keepOrder ? selection : rangeList).ranges;\r\n\t var result;\r\n\t \r\n\t if (!ranges.length)\r\n\t return cmd.exec ? cmd.exec(this, args || {}) : cmd(this, args || {});\r\n\t \r\n\t var reg = selection._eventRegistry;\r\n\t selection._eventRegistry = {};\r\n\r\n\t var tmpSel = new Selection(session);\r\n\t this.inVirtualSelectionMode = true;\r\n\t for (var i = ranges.length; i--;) {\r\n\t if ($byLines) {\r\n\t while (i > 0 && ranges[i].start.row == ranges[i - 1].end.row)\r\n\t i--;\r\n\t }\r\n\t tmpSel.fromOrientedRange(ranges[i]);\r\n\t tmpSel.index = i;\r\n\t this.selection = session.selection = tmpSel;\r\n\t var cmdResult = cmd.exec ? cmd.exec(this, args || {}) : cmd(this, args || {});\r\n\t if (!result && cmdResult !== undefined)\r\n\t result = cmdResult;\r\n\t tmpSel.toOrientedRange(ranges[i]);\r\n\t }\r\n\t tmpSel.detach();\r\n\r\n\t this.selection = session.selection = selection;\r\n\t this.inVirtualSelectionMode = false;\r\n\t selection._eventRegistry = reg;\r\n\t selection.mergeOverlappingRanges();\r\n\t \r\n\t var anim = this.renderer.$scrollAnimation;\r\n\t this.onCursorChange();\r\n\t this.onSelectionChange();\r\n\t if (anim && anim.from == anim.to)\r\n\t this.renderer.animateScrolling(anim.from);\r\n\t \r\n\t return result;\r\n\t };\r\n\t this.exitMultiSelectMode = function() {\r\n\t if (!this.inMultiSelectMode || this.inVirtualSelectionMode)\r\n\t return;\r\n\t this.multiSelect.toSingleRange();\r\n\t };\r\n\r\n\t this.getSelectedText = function() {\r\n\t var text = \"\";\r\n\t if (this.inMultiSelectMode && !this.inVirtualSelectionMode) {\r\n\t var ranges = this.multiSelect.rangeList.ranges;\r\n\t var buf = [];\r\n\t for (var i = 0; i < ranges.length; i++) {\r\n\t buf.push(this.session.getTextRange(ranges[i]));\r\n\t }\r\n\t var nl = this.session.getDocument().getNewLineCharacter();\r\n\t text = buf.join(nl);\r\n\t if (text.length == (buf.length - 1) * nl.length)\r\n\t text = \"\";\r\n\t } else if (!this.selection.isEmpty()) {\r\n\t text = this.session.getTextRange(this.getSelectionRange());\r\n\t }\r\n\t return text;\r\n\t };\r\n\t \r\n\t this.$checkMultiselectChange = function(e, anchor) {\r\n\t if (this.inMultiSelectMode && !this.inVirtualSelectionMode) {\r\n\t var range = this.multiSelect.ranges[0];\r\n\t if (this.multiSelect.isEmpty() && anchor == this.multiSelect.anchor)\r\n\t return;\r\n\t var pos = anchor == this.multiSelect.anchor\r\n\t ? range.cursor == range.start ? range.end : range.start\r\n\t : range.cursor;\r\n\t if (pos.row != anchor.row \r\n\t || this.session.$clipPositionToDocument(pos.row, pos.column).column != anchor.column)\r\n\t this.multiSelect.toSingleRange(this.multiSelect.toOrientedRange());\r\n\t }\r\n\t };\r\n\t this.findAll = function(needle, options, additive) {\r\n\t options = options || {};\r\n\t options.needle = needle || options.needle;\r\n\t if (options.needle == undefined) {\r\n\t var range = this.selection.isEmpty()\r\n\t ? this.selection.getWordRange()\r\n\t : this.selection.getRange();\r\n\t options.needle = this.session.getTextRange(range);\r\n\t } \r\n\t this.$search.set(options);\r\n\t \r\n\t var ranges = this.$search.findAll(this.session);\r\n\t if (!ranges.length)\r\n\t return 0;\r\n\r\n\t this.$blockScrolling += 1;\r\n\t var selection = this.multiSelect;\r\n\r\n\t if (!additive)\r\n\t selection.toSingleRange(ranges[0]);\r\n\r\n\t for (var i = ranges.length; i--; )\r\n\t selection.addRange(ranges[i], true);\r\n\t if (range && selection.rangeList.rangeAtPoint(range.start))\r\n\t selection.addRange(range, true);\r\n\t \r\n\t this.$blockScrolling -= 1;\r\n\r\n\t return ranges.length;\r\n\t };\r\n\t this.selectMoreLines = function(dir, skip) {\r\n\t var range = this.selection.toOrientedRange();\r\n\t var isBackwards = range.cursor == range.end;\r\n\r\n\t var screenLead = this.session.documentToScreenPosition(range.cursor);\r\n\t if (this.selection.$desiredColumn)\r\n\t screenLead.column = this.selection.$desiredColumn;\r\n\r\n\t var lead = this.session.screenToDocumentPosition(screenLead.row + dir, screenLead.column);\r\n\r\n\t if (!range.isEmpty()) {\r\n\t var screenAnchor = this.session.documentToScreenPosition(isBackwards ? range.end : range.start);\r\n\t var anchor = this.session.screenToDocumentPosition(screenAnchor.row + dir, screenAnchor.column);\r\n\t } else {\r\n\t var anchor = lead;\r\n\t }\r\n\r\n\t if (isBackwards) {\r\n\t var newRange = Range.fromPoints(lead, anchor);\r\n\t newRange.cursor = newRange.start;\r\n\t } else {\r\n\t var newRange = Range.fromPoints(anchor, lead);\r\n\t newRange.cursor = newRange.end;\r\n\t }\r\n\r\n\t newRange.desiredColumn = screenLead.column;\r\n\t if (!this.selection.inMultiSelectMode) {\r\n\t this.selection.addRange(range);\r\n\t } else {\r\n\t if (skip)\r\n\t var toRemove = range.cursor;\r\n\t }\r\n\r\n\t this.selection.addRange(newRange);\r\n\t if (toRemove)\r\n\t this.selection.substractPoint(toRemove);\r\n\t };\r\n\t this.transposeSelections = function(dir) {\r\n\t var session = this.session;\r\n\t var sel = session.multiSelect;\r\n\t var all = sel.ranges;\r\n\r\n\t for (var i = all.length; i--; ) {\r\n\t var range = all[i];\r\n\t if (range.isEmpty()) {\r\n\t var tmp = session.getWordRange(range.start.row, range.start.column);\r\n\t range.start.row = tmp.start.row;\r\n\t range.start.column = tmp.start.column;\r\n\t range.end.row = tmp.end.row;\r\n\t range.end.column = tmp.end.column;\r\n\t }\r\n\t }\r\n\t sel.mergeOverlappingRanges();\r\n\r\n\t var words = [];\r\n\t for (var i = all.length; i--; ) {\r\n\t var range = all[i];\r\n\t words.unshift(session.getTextRange(range));\r\n\t }\r\n\r\n\t if (dir < 0)\r\n\t words.unshift(words.pop());\r\n\t else\r\n\t words.push(words.shift());\r\n\r\n\t for (var i = all.length; i--; ) {\r\n\t var range = all[i];\r\n\t var tmp = range.clone();\r\n\t session.replace(range, words[i]);\r\n\t range.start.row = tmp.start.row;\r\n\t range.start.column = tmp.start.column;\r\n\t }\r\n\t };\r\n\t this.selectMore = function(dir, skip, stopAtFirst) {\r\n\t var session = this.session;\r\n\t var sel = session.multiSelect;\r\n\r\n\t var range = sel.toOrientedRange();\r\n\t if (range.isEmpty()) {\r\n\t range = session.getWordRange(range.start.row, range.start.column);\r\n\t range.cursor = dir == -1 ? range.start : range.end;\r\n\t this.multiSelect.addRange(range);\r\n\t if (stopAtFirst)\r\n\t return;\r\n\t }\r\n\t var needle = session.getTextRange(range);\r\n\r\n\t var newRange = find(session, needle, dir);\r\n\t if (newRange) {\r\n\t newRange.cursor = dir == -1 ? newRange.start : newRange.end;\r\n\t this.$blockScrolling += 1;\r\n\t this.session.unfold(newRange);\r\n\t this.multiSelect.addRange(newRange);\r\n\t this.$blockScrolling -= 1;\r\n\t this.renderer.scrollCursorIntoView(null, 0.5);\r\n\t }\r\n\t if (skip)\r\n\t this.multiSelect.substractPoint(range.cursor);\r\n\t };\r\n\t this.alignCursors = function() {\r\n\t var session = this.session;\r\n\t var sel = session.multiSelect;\r\n\t var ranges = sel.ranges;\r\n\t var row = -1;\r\n\t var sameRowRanges = ranges.filter(function(r) {\r\n\t if (r.cursor.row == row)\r\n\t return true;\r\n\t row = r.cursor.row;\r\n\t });\r\n\t \r\n\t if (!ranges.length || sameRowRanges.length == ranges.length - 1) {\r\n\t var range = this.selection.getRange();\r\n\t var fr = range.start.row, lr = range.end.row;\r\n\t var guessRange = fr == lr;\r\n\t if (guessRange) {\r\n\t var max = this.session.getLength();\r\n\t var line;\r\n\t do {\r\n\t line = this.session.getLine(lr);\r\n\t } while (/[=:]/.test(line) && ++lr < max);\r\n\t do {\r\n\t line = this.session.getLine(fr);\r\n\t } while (/[=:]/.test(line) && --fr > 0);\r\n\t \r\n\t if (fr < 0) fr = 0;\r\n\t if (lr >= max) lr = max - 1;\r\n\t }\r\n\t var lines = this.session.removeFullLines(fr, lr);\r\n\t lines = this.$reAlignText(lines, guessRange);\r\n\t this.session.insert({row: fr, column: 0}, lines.join(\"\\n\") + \"\\n\");\r\n\t if (!guessRange) {\r\n\t range.start.column = 0;\r\n\t range.end.column = lines[lines.length - 1].length;\r\n\t }\r\n\t this.selection.setRange(range);\r\n\t } else {\r\n\t sameRowRanges.forEach(function(r) {\r\n\t sel.substractPoint(r.cursor);\r\n\t });\r\n\r\n\t var maxCol = 0;\r\n\t var minSpace = Infinity;\r\n\t var spaceOffsets = ranges.map(function(r) {\r\n\t var p = r.cursor;\r\n\t var line = session.getLine(p.row);\r\n\t var spaceOffset = line.substr(p.column).search(/\\S/g);\r\n\t if (spaceOffset == -1)\r\n\t spaceOffset = 0;\r\n\r\n\t if (p.column > maxCol)\r\n\t maxCol = p.column;\r\n\t if (spaceOffset < minSpace)\r\n\t minSpace = spaceOffset;\r\n\t return spaceOffset;\r\n\t });\r\n\t ranges.forEach(function(r, i) {\r\n\t var p = r.cursor;\r\n\t var l = maxCol - p.column;\r\n\t var d = spaceOffsets[i] - minSpace;\r\n\t if (l > d)\r\n\t session.insert(p, lang.stringRepeat(\" \", l - d));\r\n\t else\r\n\t session.remove(new Range(p.row, p.column, p.row, p.column - l + d));\r\n\r\n\t r.start.column = r.end.column = maxCol;\r\n\t r.start.row = r.end.row = p.row;\r\n\t r.cursor = r.end;\r\n\t });\r\n\t sel.fromOrientedRange(ranges[0]);\r\n\t this.renderer.updateCursor();\r\n\t this.renderer.updateBackMarkers();\r\n\t }\r\n\t };\r\n\r\n\t this.$reAlignText = function(lines, forceLeft) {\r\n\t var isLeftAligned = true, isRightAligned = true;\r\n\t var startW, textW, endW;\r\n\r\n\t return lines.map(function(line) {\r\n\t var m = line.match(/(\\s*)(.*?)(\\s*)([=:].*)/);\r\n\t if (!m)\r\n\t return [line];\r\n\r\n\t if (startW == null) {\r\n\t startW = m[1].length;\r\n\t textW = m[2].length;\r\n\t endW = m[3].length;\r\n\t return m;\r\n\t }\r\n\r\n\t if (startW + textW + endW != m[1].length + m[2].length + m[3].length)\r\n\t isRightAligned = false;\r\n\t if (startW != m[1].length)\r\n\t isLeftAligned = false;\r\n\r\n\t if (startW > m[1].length)\r\n\t startW = m[1].length;\r\n\t if (textW < m[2].length)\r\n\t textW = m[2].length;\r\n\t if (endW > m[3].length)\r\n\t endW = m[3].length;\r\n\r\n\t return m;\r\n\t }).map(forceLeft ? alignLeft :\r\n\t isLeftAligned ? isRightAligned ? alignRight : alignLeft : unAlign);\r\n\r\n\t function spaces(n) {\r\n\t return lang.stringRepeat(\" \", n);\r\n\t }\r\n\r\n\t function alignLeft(m) {\r\n\t return !m[2] ? m[0] : spaces(startW) + m[2]\r\n\t + spaces(textW - m[2].length + endW)\r\n\t + m[4].replace(/^([=:])\\s+/, \"$1 \");\r\n\t }\r\n\t function alignRight(m) {\r\n\t return !m[2] ? m[0] : spaces(startW + textW - m[2].length) + m[2]\r\n\t + spaces(endW, \" \")\r\n\t + m[4].replace(/^([=:])\\s+/, \"$1 \");\r\n\t }\r\n\t function unAlign(m) {\r\n\t return !m[2] ? m[0] : spaces(startW) + m[2]\r\n\t + spaces(endW)\r\n\t + m[4].replace(/^([=:])\\s+/, \"$1 \");\r\n\t }\r\n\t };\r\n\t}).call(Editor.prototype);\r\n\r\n\r\n\tfunction isSamePoint(p1, p2) {\r\n\t return p1.row == p2.row && p1.column == p2.column;\r\n\t}\r\n\texports.onSessionChange = function(e) {\r\n\t var session = e.session;\r\n\t if (session && !session.multiSelect) {\r\n\t session.$selectionMarkers = [];\r\n\t session.selection.$initRangeList();\r\n\t session.multiSelect = session.selection;\r\n\t }\r\n\t this.multiSelect = session && session.multiSelect;\r\n\r\n\t var oldSession = e.oldSession;\r\n\t if (oldSession) {\r\n\t oldSession.multiSelect.off(\"addRange\", this.$onAddRange);\r\n\t oldSession.multiSelect.off(\"removeRange\", this.$onRemoveRange);\r\n\t oldSession.multiSelect.off(\"multiSelect\", this.$onMultiSelect);\r\n\t oldSession.multiSelect.off(\"singleSelect\", this.$onSingleSelect);\r\n\t oldSession.multiSelect.lead.off(\"change\", this.$checkMultiselectChange);\r\n\t oldSession.multiSelect.anchor.off(\"change\", this.$checkMultiselectChange);\r\n\t }\r\n\r\n\t if (session) {\r\n\t session.multiSelect.on(\"addRange\", this.$onAddRange);\r\n\t session.multiSelect.on(\"removeRange\", this.$onRemoveRange);\r\n\t session.multiSelect.on(\"multiSelect\", this.$onMultiSelect);\r\n\t session.multiSelect.on(\"singleSelect\", this.$onSingleSelect);\r\n\t session.multiSelect.lead.on(\"change\", this.$checkMultiselectChange);\r\n\t session.multiSelect.anchor.on(\"change\", this.$checkMultiselectChange);\r\n\t }\r\n\r\n\t if (session && this.inMultiSelectMode != session.selection.inMultiSelectMode) {\r\n\t if (session.selection.inMultiSelectMode)\r\n\t this.$onMultiSelect();\r\n\t else\r\n\t this.$onSingleSelect();\r\n\t }\r\n\t};\r\n\tfunction MultiSelect(editor) {\r\n\t if (editor.$multiselectOnSessionChange)\r\n\t return;\r\n\t editor.$onAddRange = editor.$onAddRange.bind(editor);\r\n\t editor.$onRemoveRange = editor.$onRemoveRange.bind(editor);\r\n\t editor.$onMultiSelect = editor.$onMultiSelect.bind(editor);\r\n\t editor.$onSingleSelect = editor.$onSingleSelect.bind(editor);\r\n\t editor.$multiselectOnSessionChange = exports.onSessionChange.bind(editor);\r\n\t editor.$checkMultiselectChange = editor.$checkMultiselectChange.bind(editor);\r\n\r\n\t editor.$multiselectOnSessionChange(editor);\r\n\t editor.on(\"changeSession\", editor.$multiselectOnSessionChange);\r\n\r\n\t editor.on(\"mousedown\", onMouseDown);\r\n\t editor.commands.addCommands(commands.defaultCommands);\r\n\r\n\t addAltCursorListeners(editor);\r\n\t}\r\n\r\n\tfunction addAltCursorListeners(editor){\r\n\t var el = editor.textInput.getElement();\r\n\t var altCursor = false;\r\n\t event.addListener(el, \"keydown\", function(e) {\r\n\t var altDown = e.keyCode == 18 && !(e.ctrlKey || e.shiftKey || e.metaKey);\r\n\t if (editor.$blockSelectEnabled && altDown) {\r\n\t if (!altCursor) {\r\n\t editor.renderer.setMouseCursor(\"crosshair\");\r\n\t altCursor = true;\r\n\t }\r\n\t } else if (altCursor) {\r\n\t reset();\r\n\t }\r\n\t });\r\n\r\n\t event.addListener(el, \"keyup\", reset);\r\n\t event.addListener(el, \"blur\", reset);\r\n\t function reset(e) {\r\n\t if (altCursor) {\r\n\t editor.renderer.setMouseCursor(\"\");\r\n\t altCursor = false;\r\n\t }\r\n\t }\r\n\t}\r\n\r\n\texports.MultiSelect = MultiSelect;\r\n\r\n\r\n\tacequire(\"./config\").defineOptions(Editor.prototype, \"editor\", {\r\n\t enableMultiselect: {\r\n\t set: function(val) {\r\n\t MultiSelect(this);\r\n\t if (val) {\r\n\t this.on(\"changeSession\", this.$multiselectOnSessionChange);\r\n\t this.on(\"mousedown\", onMouseDown);\r\n\t } else {\r\n\t this.off(\"changeSession\", this.$multiselectOnSessionChange);\r\n\t this.off(\"mousedown\", onMouseDown);\r\n\t }\r\n\t },\r\n\t value: true\r\n\t },\r\n\t enableBlockSelect: {\r\n\t set: function(val) {\r\n\t this.$blockSelectEnabled = val;\r\n\t },\r\n\t value: true\r\n\t }\r\n\t});\r\n\r\n\r\n\r\n\t});\r\n\r\n\tace.define(\"ace/mode/folding/fold_mode\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(acequire, exports, module) {\r\n\t\"use strict\";\r\n\r\n\tvar Range = acequire(\"../../range\").Range;\r\n\r\n\tvar FoldMode = exports.FoldMode = function() {};\r\n\r\n\t(function() {\r\n\r\n\t this.foldingStartMarker = null;\r\n\t this.foldingStopMarker = null;\r\n\t this.getFoldWidget = function(session, foldStyle, row) {\r\n\t var line = session.getLine(row);\r\n\t if (this.foldingStartMarker.test(line))\r\n\t return \"start\";\r\n\t if (foldStyle == \"markbeginend\"\r\n\t && this.foldingStopMarker\r\n\t && this.foldingStopMarker.test(line))\r\n\t return \"end\";\r\n\t return \"\";\r\n\t };\r\n\r\n\t this.getFoldWidgetRange = function(session, foldStyle, row) {\r\n\t return null;\r\n\t };\r\n\r\n\t this.indentationBlock = function(session, row, column) {\r\n\t var re = /\\S/;\r\n\t var line = session.getLine(row);\r\n\t var startLevel = line.search(re);\r\n\t if (startLevel == -1)\r\n\t return;\r\n\r\n\t var startColumn = column || line.length;\r\n\t var maxRow = session.getLength();\r\n\t var startRow = row;\r\n\t var endRow = row;\r\n\r\n\t while (++row < maxRow) {\r\n\t var level = session.getLine(row).search(re);\r\n\r\n\t if (level == -1)\r\n\t continue;\r\n\r\n\t if (level <= startLevel)\r\n\t break;\r\n\r\n\t endRow = row;\r\n\t }\r\n\r\n\t if (endRow > startRow) {\r\n\t var endColumn = session.getLine(endRow).length;\r\n\t return new Range(startRow, startColumn, endRow, endColumn);\r\n\t }\r\n\t };\r\n\r\n\t this.openingBracketBlock = function(session, bracket, row, column, typeRe) {\r\n\t var start = {row: row, column: column + 1};\r\n\t var end = session.$findClosingBracket(bracket, start, typeRe);\r\n\t if (!end)\r\n\t return;\r\n\r\n\t var fw = session.foldWidgets[end.row];\r\n\t if (fw == null)\r\n\t fw = session.getFoldWidget(end.row);\r\n\r\n\t if (fw == \"start\" && end.row > start.row) {\r\n\t end.row --;\r\n\t end.column = session.getLine(end.row).length;\r\n\t }\r\n\t return Range.fromPoints(start, end);\r\n\t };\r\n\r\n\t this.closingBracketBlock = function(session, bracket, row, column, typeRe) {\r\n\t var end = {row: row, column: column};\r\n\t var start = session.$findOpeningBracket(bracket, end);\r\n\r\n\t if (!start)\r\n\t return;\r\n\r\n\t start.column++;\r\n\t end.column--;\r\n\r\n\t return Range.fromPoints(start, end);\r\n\t };\r\n\t}).call(FoldMode.prototype);\r\n\r\n\t});\r\n\r\n\tace.define(\"ace/theme/textmate\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\"], function(acequire, exports, module) {\r\n\t\"use strict\";\r\n\r\n\texports.isDark = false;\r\n\texports.cssClass = \"ace-tm\";\r\n\texports.cssText = \".ace-tm .ace_gutter {\\\r\n\tbackground: #f0f0f0;\\\r\n\tcolor: #333;\\\r\n\t}\\\r\n\t.ace-tm .ace_print-margin {\\\r\n\twidth: 1px;\\\r\n\tbackground: #e8e8e8;\\\r\n\t}\\\r\n\t.ace-tm .ace_fold {\\\r\n\tbackground-color: #6B72E6;\\\r\n\t}\\\r\n\t.ace-tm {\\\r\n\tbackground-color: #FFFFFF;\\\r\n\tcolor: black;\\\r\n\t}\\\r\n\t.ace-tm .ace_cursor {\\\r\n\tcolor: black;\\\r\n\t}\\\r\n\t.ace-tm .ace_invisible {\\\r\n\tcolor: rgb(191, 191, 191);\\\r\n\t}\\\r\n\t.ace-tm .ace_storage,\\\r\n\t.ace-tm .ace_keyword {\\\r\n\tcolor: blue;\\\r\n\t}\\\r\n\t.ace-tm .ace_constant {\\\r\n\tcolor: rgb(197, 6, 11);\\\r\n\t}\\\r\n\t.ace-tm .ace_constant.ace_buildin {\\\r\n\tcolor: rgb(88, 72, 246);\\\r\n\t}\\\r\n\t.ace-tm .ace_constant.ace_language {\\\r\n\tcolor: rgb(88, 92, 246);\\\r\n\t}\\\r\n\t.ace-tm .ace_constant.ace_library {\\\r\n\tcolor: rgb(6, 150, 14);\\\r\n\t}\\\r\n\t.ace-tm .ace_invalid {\\\r\n\tbackground-color: rgba(255, 0, 0, 0.1);\\\r\n\tcolor: red;\\\r\n\t}\\\r\n\t.ace-tm .ace_support.ace_function {\\\r\n\tcolor: rgb(60, 76, 114);\\\r\n\t}\\\r\n\t.ace-tm .ace_support.ace_constant {\\\r\n\tcolor: rgb(6, 150, 14);\\\r\n\t}\\\r\n\t.ace-tm .ace_support.ace_type,\\\r\n\t.ace-tm .ace_support.ace_class {\\\r\n\tcolor: rgb(109, 121, 222);\\\r\n\t}\\\r\n\t.ace-tm .ace_keyword.ace_operator {\\\r\n\tcolor: rgb(104, 118, 135);\\\r\n\t}\\\r\n\t.ace-tm .ace_string {\\\r\n\tcolor: rgb(3, 106, 7);\\\r\n\t}\\\r\n\t.ace-tm .ace_comment {\\\r\n\tcolor: rgb(76, 136, 107);\\\r\n\t}\\\r\n\t.ace-tm .ace_comment.ace_doc {\\\r\n\tcolor: rgb(0, 102, 255);\\\r\n\t}\\\r\n\t.ace-tm .ace_comment.ace_doc.ace_tag {\\\r\n\tcolor: rgb(128, 159, 191);\\\r\n\t}\\\r\n\t.ace-tm .ace_constant.ace_numeric {\\\r\n\tcolor: rgb(0, 0, 205);\\\r\n\t}\\\r\n\t.ace-tm .ace_variable {\\\r\n\tcolor: rgb(49, 132, 149);\\\r\n\t}\\\r\n\t.ace-tm .ace_xml-pe {\\\r\n\tcolor: rgb(104, 104, 91);\\\r\n\t}\\\r\n\t.ace-tm .ace_entity.ace_name.ace_function {\\\r\n\tcolor: #0000A2;\\\r\n\t}\\\r\n\t.ace-tm .ace_heading {\\\r\n\tcolor: rgb(12, 7, 255);\\\r\n\t}\\\r\n\t.ace-tm .ace_list {\\\r\n\tcolor:rgb(185, 6, 144);\\\r\n\t}\\\r\n\t.ace-tm .ace_meta.ace_tag {\\\r\n\tcolor:rgb(0, 22, 142);\\\r\n\t}\\\r\n\t.ace-tm .ace_string.ace_regex {\\\r\n\tcolor: rgb(255, 0, 0)\\\r\n\t}\\\r\n\t.ace-tm .ace_marker-layer .ace_selection {\\\r\n\tbackground: rgb(181, 213, 255);\\\r\n\t}\\\r\n\t.ace-tm.ace_multiselect .ace_selection.ace_start {\\\r\n\tbox-shadow: 0 0 3px 0px white;\\\r\n\t}\\\r\n\t.ace-tm .ace_marker-layer .ace_step {\\\r\n\tbackground: rgb(252, 255, 0);\\\r\n\t}\\\r\n\t.ace-tm .ace_marker-layer .ace_stack {\\\r\n\tbackground: rgb(164, 229, 101);\\\r\n\t}\\\r\n\t.ace-tm .ace_marker-layer .ace_bracket {\\\r\n\tmargin: -1px 0 0 -1px;\\\r\n\tborder: 1px solid rgb(192, 192, 192);\\\r\n\t}\\\r\n\t.ace-tm .ace_marker-layer .ace_active-line {\\\r\n\tbackground: rgba(0, 0, 0, 0.07);\\\r\n\t}\\\r\n\t.ace-tm .ace_gutter-active-line {\\\r\n\tbackground-color : #dcdcdc;\\\r\n\t}\\\r\n\t.ace-tm .ace_marker-layer .ace_selected-word {\\\r\n\tbackground: rgb(250, 250, 255);\\\r\n\tborder: 1px solid rgb(200, 200, 250);\\\r\n\t}\\\r\n\t.ace-tm .ace_indent-guide {\\\r\n\tbackground: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==\\\") right repeat-y;\\\r\n\t}\\\r\n\t\";\r\n\r\n\tvar dom = acequire(\"../lib/dom\");\r\n\tdom.importCssString(exports.cssText, exports.cssClass);\r\n\t});\r\n\r\n\tace.define(\"ace/line_widgets\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/dom\",\"ace/range\"], function(acequire, exports, module) {\r\n\t\"use strict\";\r\n\r\n\tvar oop = acequire(\"./lib/oop\");\r\n\tvar dom = acequire(\"./lib/dom\");\r\n\tvar Range = acequire(\"./range\").Range;\r\n\r\n\r\n\tfunction LineWidgets(session) {\r\n\t this.session = session;\r\n\t this.session.widgetManager = this;\r\n\t this.session.getRowLength = this.getRowLength;\r\n\t this.session.$getWidgetScreenLength = this.$getWidgetScreenLength;\r\n\t this.updateOnChange = this.updateOnChange.bind(this);\r\n\t this.renderWidgets = this.renderWidgets.bind(this);\r\n\t this.measureWidgets = this.measureWidgets.bind(this);\r\n\t this.session._changedWidgets = [];\r\n\t this.$onChangeEditor = this.$onChangeEditor.bind(this);\r\n\t \r\n\t this.session.on(\"change\", this.updateOnChange);\r\n\t this.session.on(\"changeFold\", this.updateOnFold);\r\n\t this.session.on(\"changeEditor\", this.$onChangeEditor);\r\n\t}\r\n\r\n\t(function() {\r\n\t this.getRowLength = function(row) {\r\n\t var h;\r\n\t if (this.lineWidgets)\r\n\t h = this.lineWidgets[row] && this.lineWidgets[row].rowCount || 0;\r\n\t else \r\n\t h = 0;\r\n\t if (!this.$useWrapMode || !this.$wrapData[row]) {\r\n\t return 1 + h;\r\n\t } else {\r\n\t return this.$wrapData[row].length + 1 + h;\r\n\t }\r\n\t };\r\n\r\n\t this.$getWidgetScreenLength = function() {\r\n\t var screenRows = 0;\r\n\t this.lineWidgets.forEach(function(w){\r\n\t if (w && w.rowCount && !w.hidden)\r\n\t screenRows += w.rowCount;\r\n\t });\r\n\t return screenRows;\r\n\t }; \r\n\t \r\n\t this.$onChangeEditor = function(e) {\r\n\t this.attach(e.editor);\r\n\t };\r\n\t \r\n\t this.attach = function(editor) {\r\n\t if (editor && editor.widgetManager && editor.widgetManager != this)\r\n\t editor.widgetManager.detach();\r\n\r\n\t if (this.editor == editor)\r\n\t return;\r\n\r\n\t this.detach();\r\n\t this.editor = editor;\r\n\t \r\n\t if (editor) {\r\n\t editor.widgetManager = this;\r\n\t editor.renderer.on(\"beforeRender\", this.measureWidgets);\r\n\t editor.renderer.on(\"afterRender\", this.renderWidgets);\r\n\t }\r\n\t };\r\n\t this.detach = function(e) {\r\n\t var editor = this.editor;\r\n\t if (!editor)\r\n\t return;\r\n\t \r\n\t this.editor = null;\r\n\t editor.widgetManager = null;\r\n\t \r\n\t editor.renderer.off(\"beforeRender\", this.measureWidgets);\r\n\t editor.renderer.off(\"afterRender\", this.renderWidgets);\r\n\t var lineWidgets = this.session.lineWidgets;\r\n\t lineWidgets && lineWidgets.forEach(function(w) {\r\n\t if (w && w.el && w.el.parentNode) {\r\n\t w._inDocument = false;\r\n\t w.el.parentNode.removeChild(w.el);\r\n\t }\r\n\t });\r\n\t };\r\n\r\n\t this.updateOnFold = function(e, session) {\r\n\t var lineWidgets = session.lineWidgets;\r\n\t if (!lineWidgets || !e.action)\r\n\t return;\r\n\t var fold = e.data;\r\n\t var start = fold.start.row;\r\n\t var end = fold.end.row;\r\n\t var hide = e.action == \"add\";\r\n\t for (var i = start + 1; i < end; i++) {\r\n\t if (lineWidgets[i])\r\n\t lineWidgets[i].hidden = hide;\r\n\t }\r\n\t if (lineWidgets[end]) {\r\n\t if (hide) {\r\n\t if (!lineWidgets[start])\r\n\t lineWidgets[start] = lineWidgets[end];\r\n\t else\r\n\t lineWidgets[end].hidden = hide;\r\n\t } else {\r\n\t if (lineWidgets[start] == lineWidgets[end])\r\n\t lineWidgets[start] = undefined;\r\n\t lineWidgets[end].hidden = hide;\r\n\t }\r\n\t }\r\n\t };\r\n\t \r\n\t this.updateOnChange = function(delta) {\r\n\t var lineWidgets = this.session.lineWidgets;\r\n\t if (!lineWidgets) return;\r\n\t \r\n\t var startRow = delta.start.row;\r\n\t var len = delta.end.row - startRow;\r\n\r\n\t if (len === 0) {\r\n\t } else if (delta.action == 'remove') {\r\n\t var removed = lineWidgets.splice(startRow + 1, len);\r\n\t removed.forEach(function(w) {\r\n\t w && this.removeLineWidget(w);\r\n\t }, this);\r\n\t this.$updateRows();\r\n\t } else {\r\n\t var args = new Array(len);\r\n\t args.unshift(startRow, 0);\r\n\t lineWidgets.splice.apply(lineWidgets, args);\r\n\t this.$updateRows();\r\n\t }\r\n\t };\r\n\t \r\n\t this.$updateRows = function() {\r\n\t var lineWidgets = this.session.lineWidgets;\r\n\t if (!lineWidgets) return;\r\n\t var noWidgets = true;\r\n\t lineWidgets.forEach(function(w, i) {\r\n\t if (w) {\r\n\t noWidgets = false;\r\n\t w.row = i;\r\n\t while (w.$oldWidget) {\r\n\t w.$oldWidget.row = i;\r\n\t w = w.$oldWidget;\r\n\t }\r\n\t }\r\n\t });\r\n\t if (noWidgets)\r\n\t this.session.lineWidgets = null;\r\n\t };\r\n\r\n\t this.addLineWidget = function(w) {\r\n\t if (!this.session.lineWidgets)\r\n\t this.session.lineWidgets = new Array(this.session.getLength());\r\n\t \r\n\t var old = this.session.lineWidgets[w.row];\r\n\t if (old) {\r\n\t w.$oldWidget = old;\r\n\t if (old.el && old.el.parentNode) {\r\n\t old.el.parentNode.removeChild(old.el);\r\n\t old._inDocument = false;\r\n\t }\r\n\t }\r\n\t \r\n\t this.session.lineWidgets[w.row] = w;\r\n\t \r\n\t w.session = this.session;\r\n\t \r\n\t var renderer = this.editor.renderer;\r\n\t if (w.html && !w.el) {\r\n\t w.el = dom.createElement(\"div\");\r\n\t w.el.innerHTML = w.html;\r\n\t }\r\n\t if (w.el) {\r\n\t dom.addCssClass(w.el, \"ace_lineWidgetContainer\");\r\n\t w.el.style.position = \"absolute\";\r\n\t w.el.style.zIndex = 5;\r\n\t renderer.container.appendChild(w.el);\r\n\t w._inDocument = true;\r\n\t }\r\n\t \r\n\t if (!w.coverGutter) {\r\n\t w.el.style.zIndex = 3;\r\n\t }\r\n\t if (!w.pixelHeight) {\r\n\t w.pixelHeight = w.el.offsetHeight;\r\n\t }\r\n\t if (w.rowCount == null) {\r\n\t w.rowCount = w.pixelHeight / renderer.layerConfig.lineHeight;\r\n\t }\r\n\t \r\n\t var fold = this.session.getFoldAt(w.row, 0);\r\n\t w.$fold = fold;\r\n\t if (fold) {\r\n\t var lineWidgets = this.session.lineWidgets;\r\n\t if (w.row == fold.end.row && !lineWidgets[fold.start.row])\r\n\t lineWidgets[fold.start.row] = w;\r\n\t else\r\n\t w.hidden = true;\r\n\t }\r\n\t \r\n\t this.session._emit(\"changeFold\", {data:{start:{row: w.row}}});\r\n\t \r\n\t this.$updateRows();\r\n\t this.renderWidgets(null, renderer);\r\n\t this.onWidgetChanged(w);\r\n\t return w;\r\n\t };\r\n\t \r\n\t this.removeLineWidget = function(w) {\r\n\t w._inDocument = false;\r\n\t w.session = null;\r\n\t if (w.el && w.el.parentNode)\r\n\t w.el.parentNode.removeChild(w.el);\r\n\t if (w.editor && w.editor.destroy) try {\r\n\t w.editor.destroy();\r\n\t } catch(e){}\r\n\t if (this.session.lineWidgets) {\r\n\t var w1 = this.session.lineWidgets[w.row]\r\n\t if (w1 == w) {\r\n\t this.session.lineWidgets[w.row] = w.$oldWidget;\r\n\t if (w.$oldWidget)\r\n\t this.onWidgetChanged(w.$oldWidget);\r\n\t } else {\r\n\t while (w1) {\r\n\t if (w1.$oldWidget == w) {\r\n\t w1.$oldWidget = w.$oldWidget;\r\n\t break;\r\n\t }\r\n\t w1 = w1.$oldWidget;\r\n\t }\r\n\t }\r\n\t }\r\n\t this.session._emit(\"changeFold\", {data:{start:{row: w.row}}});\r\n\t this.$updateRows();\r\n\t };\r\n\t \r\n\t this.getWidgetsAtRow = function(row) {\r\n\t var lineWidgets = this.session.lineWidgets;\r\n\t var w = lineWidgets && lineWidgets[row];\r\n\t var list = [];\r\n\t while (w) {\r\n\t list.push(w);\r\n\t w = w.$oldWidget;\r\n\t }\r\n\t return list;\r\n\t };\r\n\t \r\n\t this.onWidgetChanged = function(w) {\r\n\t this.session._changedWidgets.push(w);\r\n\t this.editor && this.editor.renderer.updateFull();\r\n\t };\r\n\t \r\n\t this.measureWidgets = function(e, renderer) {\r\n\t var changedWidgets = this.session._changedWidgets;\r\n\t var config = renderer.layerConfig;\r\n\t \r\n\t if (!changedWidgets || !changedWidgets.length) return;\r\n\t var min = Infinity;\r\n\t for (var i = 0; i < changedWidgets.length; i++) {\r\n\t var w = changedWidgets[i];\r\n\t if (!w || !w.el) continue;\r\n\t if (w.session != this.session) continue;\r\n\t if (!w._inDocument) {\r\n\t if (this.session.lineWidgets[w.row] != w)\r\n\t continue;\r\n\t w._inDocument = true;\r\n\t renderer.container.appendChild(w.el);\r\n\t }\r\n\t \r\n\t w.h = w.el.offsetHeight;\r\n\t \r\n\t if (!w.fixedWidth) {\r\n\t w.w = w.el.offsetWidth;\r\n\t w.screenWidth = Math.ceil(w.w / config.characterWidth);\r\n\t }\r\n\t \r\n\t var rowCount = w.h / config.lineHeight;\r\n\t if (w.coverLine) {\r\n\t rowCount -= this.session.getRowLineCount(w.row);\r\n\t if (rowCount < 0)\r\n\t rowCount = 0;\r\n\t }\r\n\t if (w.rowCount != rowCount) {\r\n\t w.rowCount = rowCount;\r\n\t if (w.row < min)\r\n\t min = w.row;\r\n\t }\r\n\t }\r\n\t if (min != Infinity) {\r\n\t this.session._emit(\"changeFold\", {data:{start:{row: min}}});\r\n\t this.session.lineWidgetWidth = null;\r\n\t }\r\n\t this.session._changedWidgets = [];\r\n\t };\r\n\t \r\n\t this.renderWidgets = function(e, renderer) {\r\n\t var config = renderer.layerConfig;\r\n\t var lineWidgets = this.session.lineWidgets;\r\n\t if (!lineWidgets)\r\n\t return;\r\n\t var first = Math.min(this.firstRow, config.firstRow);\r\n\t var last = Math.max(this.lastRow, config.lastRow, lineWidgets.length);\r\n\t \r\n\t while (first > 0 && !lineWidgets[first])\r\n\t first--;\r\n\t \r\n\t this.firstRow = config.firstRow;\r\n\t this.lastRow = config.lastRow;\r\n\r\n\t renderer.$cursorLayer.config = config;\r\n\t for (var i = first; i <= last; i++) {\r\n\t var w = lineWidgets[i];\r\n\t if (!w || !w.el) continue;\r\n\t if (w.hidden) {\r\n\t w.el.style.top = -100 - (w.pixelHeight || 0) + \"px\";\r\n\t continue;\r\n\t }\r\n\t if (!w._inDocument) {\r\n\t w._inDocument = true;\r\n\t renderer.container.appendChild(w.el);\r\n\t }\r\n\t var top = renderer.$cursorLayer.getPixelPosition({row: i, column:0}, true).top;\r\n\t if (!w.coverLine)\r\n\t top += config.lineHeight * this.session.getRowLineCount(w.row);\r\n\t w.el.style.top = top - config.offset + \"px\";\r\n\t \r\n\t var left = w.coverGutter ? 0 : renderer.gutterWidth;\r\n\t if (!w.fixedWidth)\r\n\t left -= renderer.scrollLeft;\r\n\t w.el.style.left = left + \"px\";\r\n\t \r\n\t if (w.fullWidth && w.screenWidth) {\r\n\t w.el.style.minWidth = config.width + 2 * config.padding + \"px\";\r\n\t }\r\n\t \r\n\t if (w.fixedWidth) {\r\n\t w.el.style.right = renderer.scrollBar.getWidth() + \"px\";\r\n\t } else {\r\n\t w.el.style.right = \"\";\r\n\t }\r\n\t }\r\n\t };\r\n\t \r\n\t}).call(LineWidgets.prototype);\r\n\r\n\r\n\texports.LineWidgets = LineWidgets;\r\n\r\n\t});\r\n\r\n\tace.define(\"ace/ext/error_marker\",[\"require\",\"exports\",\"module\",\"ace/line_widgets\",\"ace/lib/dom\",\"ace/range\"], function(acequire, exports, module) {\r\n\t\"use strict\";\r\n\tvar LineWidgets = acequire(\"../line_widgets\").LineWidgets;\r\n\tvar dom = acequire(\"../lib/dom\");\r\n\tvar Range = acequire(\"../range\").Range;\r\n\r\n\tfunction binarySearch(array, needle, comparator) {\r\n\t var first = 0;\r\n\t var last = array.length - 1;\r\n\r\n\t while (first <= last) {\r\n\t var mid = (first + last) >> 1;\r\n\t var c = comparator(needle, array[mid]);\r\n\t if (c > 0)\r\n\t first = mid + 1;\r\n\t else if (c < 0)\r\n\t last = mid - 1;\r\n\t else\r\n\t return mid;\r\n\t }\r\n\t return -(first + 1);\r\n\t}\r\n\r\n\tfunction findAnnotations(session, row, dir) {\r\n\t var annotations = session.getAnnotations().sort(Range.comparePoints);\r\n\t if (!annotations.length)\r\n\t return;\r\n\t \r\n\t var i = binarySearch(annotations, {row: row, column: -1}, Range.comparePoints);\r\n\t if (i < 0)\r\n\t i = -i - 1;\r\n\t \r\n\t if (i >= annotations.length)\r\n\t i = dir > 0 ? 0 : annotations.length - 1;\r\n\t else if (i === 0 && dir < 0)\r\n\t i = annotations.length - 1;\r\n\t \r\n\t var annotation = annotations[i];\r\n\t if (!annotation || !dir)\r\n\t return;\r\n\r\n\t if (annotation.row === row) {\r\n\t do {\r\n\t annotation = annotations[i += dir];\r\n\t } while (annotation && annotation.row === row);\r\n\t if (!annotation)\r\n\t return annotations.slice();\r\n\t }\r\n\t \r\n\t \r\n\t var matched = [];\r\n\t row = annotation.row;\r\n\t do {\r\n\t matched[dir < 0 ? \"unshift\" : \"push\"](annotation);\r\n\t annotation = annotations[i += dir];\r\n\t } while (annotation && annotation.row == row);\r\n\t return matched.length && matched;\r\n\t}\r\n\r\n\texports.showErrorMarker = function(editor, dir) {\r\n\t var session = editor.session;\r\n\t if (!session.widgetManager) {\r\n\t session.widgetManager = new LineWidgets(session);\r\n\t session.widgetManager.attach(editor);\r\n\t }\r\n\t \r\n\t var pos = editor.getCursorPosition();\r\n\t var row = pos.row;\r\n\t var oldWidget = session.widgetManager.getWidgetsAtRow(row).filter(function(w) {\r\n\t return w.type == \"errorMarker\";\r\n\t })[0];\r\n\t if (oldWidget) {\r\n\t oldWidget.destroy();\r\n\t } else {\r\n\t row -= dir;\r\n\t }\r\n\t var annotations = findAnnotations(session, row, dir);\r\n\t var gutterAnno;\r\n\t if (annotations) {\r\n\t var annotation = annotations[0];\r\n\t pos.column = (annotation.pos && typeof annotation.column != \"number\"\r\n\t ? annotation.pos.sc\r\n\t : annotation.column) || 0;\r\n\t pos.row = annotation.row;\r\n\t gutterAnno = editor.renderer.$gutterLayer.$annotations[pos.row];\r\n\t } else if (oldWidget) {\r\n\t return;\r\n\t } else {\r\n\t gutterAnno = {\r\n\t text: [\"Looks good!\"],\r\n\t className: \"ace_ok\"\r\n\t };\r\n\t }\r\n\t editor.session.unfold(pos.row);\r\n\t editor.selection.moveToPosition(pos);\r\n\t \r\n\t var w = {\r\n\t row: pos.row, \r\n\t fixedWidth: true,\r\n\t coverGutter: true,\r\n\t el: dom.createElement(\"div\"),\r\n\t type: \"errorMarker\"\r\n\t };\r\n\t var el = w.el.appendChild(dom.createElement(\"div\"));\r\n\t var arrow = w.el.appendChild(dom.createElement(\"div\"));\r\n\t arrow.className = \"error_widget_arrow \" + gutterAnno.className;\r\n\t \r\n\t var left = editor.renderer.$cursorLayer\r\n\t .getPixelPosition(pos).left;\r\n\t arrow.style.left = left + editor.renderer.gutterWidth - 5 + \"px\";\r\n\t \r\n\t w.el.className = \"error_widget_wrapper\";\r\n\t el.className = \"error_widget \" + gutterAnno.className;\r\n\t el.innerHTML = gutterAnno.text.join(\"
\");\r\n\t \r\n\t el.appendChild(dom.createElement(\"div\"));\r\n\t \r\n\t var kb = function(_, hashId, keyString) {\r\n\t if (hashId === 0 && (keyString === \"esc\" || keyString === \"return\")) {\r\n\t w.destroy();\r\n\t return {command: \"null\"};\r\n\t }\r\n\t };\r\n\t \r\n\t w.destroy = function() {\r\n\t if (editor.$mouseHandler.isMousePressed)\r\n\t return;\r\n\t editor.keyBinding.removeKeyboardHandler(kb);\r\n\t session.widgetManager.removeLineWidget(w);\r\n\t editor.off(\"changeSelection\", w.destroy);\r\n\t editor.off(\"changeSession\", w.destroy);\r\n\t editor.off(\"mouseup\", w.destroy);\r\n\t editor.off(\"change\", w.destroy);\r\n\t };\r\n\t \r\n\t editor.keyBinding.addKeyboardHandler(kb);\r\n\t editor.on(\"changeSelection\", w.destroy);\r\n\t editor.on(\"changeSession\", w.destroy);\r\n\t editor.on(\"mouseup\", w.destroy);\r\n\t editor.on(\"change\", w.destroy);\r\n\t \r\n\t editor.session.widgetManager.addLineWidget(w);\r\n\t \r\n\t w.el.onmousedown = editor.focus.bind(editor);\r\n\t \r\n\t editor.renderer.scrollCursorIntoView(null, 0.5, {bottom: w.el.offsetHeight});\r\n\t};\r\n\r\n\r\n\tdom.importCssString(\"\\\r\n\t .error_widget_wrapper {\\\r\n\t background: inherit;\\\r\n\t color: inherit;\\\r\n\t border:none\\\r\n\t }\\\r\n\t .error_widget {\\\r\n\t border-top: solid 2px;\\\r\n\t border-bottom: solid 2px;\\\r\n\t margin: 5px 0;\\\r\n\t padding: 10px 40px;\\\r\n\t white-space: pre-wrap;\\\r\n\t }\\\r\n\t .error_widget.ace_error, .error_widget_arrow.ace_error{\\\r\n\t border-color: #ff5a5a\\\r\n\t }\\\r\n\t .error_widget.ace_warning, .error_widget_arrow.ace_warning{\\\r\n\t border-color: #F1D817\\\r\n\t }\\\r\n\t .error_widget.ace_info, .error_widget_arrow.ace_info{\\\r\n\t border-color: #5a5a5a\\\r\n\t }\\\r\n\t .error_widget.ace_ok, .error_widget_arrow.ace_ok{\\\r\n\t border-color: #5aaa5a\\\r\n\t }\\\r\n\t .error_widget_arrow {\\\r\n\t position: absolute;\\\r\n\t border: solid 5px;\\\r\n\t border-top-color: transparent!important;\\\r\n\t border-right-color: transparent!important;\\\r\n\t border-left-color: transparent!important;\\\r\n\t top: -5px;\\\r\n\t }\\\r\n\t\", \"\");\r\n\r\n\t});\r\n\r\n\tace.define(\"ace/ace\",[\"require\",\"exports\",\"module\",\"ace/lib/fixoldbrowsers\",\"ace/lib/dom\",\"ace/lib/event\",\"ace/editor\",\"ace/edit_session\",\"ace/undomanager\",\"ace/virtual_renderer\",\"ace/worker/worker_client\",\"ace/keyboard/hash_handler\",\"ace/placeholder\",\"ace/multi_select\",\"ace/mode/folding/fold_mode\",\"ace/theme/textmate\",\"ace/ext/error_marker\",\"ace/config\"], function(acequire, exports, module) {\r\n\t\"use strict\";\r\n\r\n\tacequire(\"./lib/fixoldbrowsers\");\r\n\r\n\tvar dom = acequire(\"./lib/dom\");\r\n\tvar event = acequire(\"./lib/event\");\r\n\r\n\tvar Editor = acequire(\"./editor\").Editor;\r\n\tvar EditSession = acequire(\"./edit_session\").EditSession;\r\n\tvar UndoManager = acequire(\"./undomanager\").UndoManager;\r\n\tvar Renderer = acequire(\"./virtual_renderer\").VirtualRenderer;\r\n\tacequire(\"./worker/worker_client\");\r\n\tacequire(\"./keyboard/hash_handler\");\r\n\tacequire(\"./placeholder\");\r\n\tacequire(\"./multi_select\");\r\n\tacequire(\"./mode/folding/fold_mode\");\r\n\tacequire(\"./theme/textmate\");\r\n\tacequire(\"./ext/error_marker\");\r\n\r\n\texports.config = acequire(\"./config\");\r\n\texports.acequire = acequire;\r\n\texports.edit = function(el) {\r\n\t if (typeof el == \"string\") {\r\n\t var _id = el;\r\n\t el = document.getElementById(_id);\r\n\t if (!el)\r\n\t throw new Error(\"ace.edit can't find div #\" + _id);\r\n\t }\r\n\r\n\t if (el && el.env && el.env.editor instanceof Editor)\r\n\t return el.env.editor;\r\n\r\n\t var value = \"\";\r\n\t if (el && /input|textarea/i.test(el.tagName)) {\r\n\t var oldNode = el;\r\n\t value = oldNode.value;\r\n\t el = dom.createElement(\"pre\");\r\n\t oldNode.parentNode.replaceChild(el, oldNode);\r\n\t } else if (el) {\r\n\t value = dom.getInnerText(el);\r\n\t el.innerHTML = \"\";\r\n\t }\r\n\r\n\t var doc = exports.createEditSession(value);\r\n\r\n\t var editor = new Editor(new Renderer(el));\r\n\t editor.setSession(doc);\r\n\r\n\t var env = {\r\n\t document: doc,\r\n\t editor: editor,\r\n\t onResize: editor.resize.bind(editor, null)\r\n\t };\r\n\t if (oldNode) env.textarea = oldNode;\r\n\t event.addListener(window, \"resize\", env.onResize);\r\n\t editor.on(\"destroy\", function() {\r\n\t event.removeListener(window, \"resize\", env.onResize);\r\n\t env.editor.container.env = null; // prevent memory leak on old ie\r\n\t });\r\n\t editor.container.env = editor.env = env;\r\n\t return editor;\r\n\t};\r\n\texports.createEditSession = function(text, mode) {\r\n\t var doc = new EditSession(text, mode);\r\n\t doc.setUndoManager(new UndoManager());\r\n\t return doc;\r\n\t}\r\n\texports.EditSession = EditSession;\r\n\texports.UndoManager = UndoManager;\r\n\texports.version = \"1.2.3\";\r\n\t});\r\n\t (function() {\r\n\t ace.acequire([\"ace/ace\"], function(a) {\r\n\t a && a.config.init(true);\r\n\t if (!window.ace)\r\n\t window.ace = a;\r\n\t for (var key in a) if (a.hasOwnProperty(key))\r\n\t window.ace[key] = a[key];\r\n\t });\r\n\t })();\r\n\t \r\n\tmodule.exports = window.ace.acequire(\"ace/ace\");\r\n\r\n/***/ },\r\n/* 65 */\r\n/***/ function(module, exports) {\r\n\r\n\tmodule.exports = function() { throw new Error(\"define cannot be used indirect\"); };\r\n\r\n\r\n/***/ },\r\n/* 66 */\r\n/***/ function(module, exports) {\r\n\r\n\t/* WEBPACK VAR INJECTION */(function(global) {module.exports = get_blob()\r\n\r\n\tfunction get_blob() {\r\n\t if(global.Blob) {\r\n\t try {\r\n\t new Blob(['asdf'], {type: 'text/plain'})\r\n\t return Blob\r\n\t } catch(err) {}\r\n\t }\r\n\r\n\t var Builder = global.WebKitBlobBuilder ||\r\n\t global.MozBlobBuilder ||\r\n\t global.MSBlobBuilder\r\n\r\n\t return function(parts, bag) {\r\n\t var builder = new Builder\r\n\t , endings = bag.endings\r\n\t , type = bag.type\r\n\r\n\t if(endings) for(var i = 0, len = parts.length; i < len; ++i) {\r\n\t builder.append(parts[i], endings)\r\n\t } else for(var i = 0, len = parts.length; i < len; ++i) {\r\n\t builder.append(parts[i])\r\n\t }\r\n\r\n\t return type ? builder.getBlob(type) : builder.getBlob()\r\n\t }\r\n\t}\r\n\r\n\t/* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }())))\r\n\r\n/***/ },\r\n/* 67 */\r\n/***/ function(module, exports, __webpack_require__) {\r\n\r\n\tace.define(\"ace/mode/json_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], function(acequire, exports, module) {\r\n\t\"use strict\";\r\n\r\n\tvar oop = acequire(\"../lib/oop\");\r\n\tvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\r\n\r\n\tvar JsonHighlightRules = function() {\r\n\t this.$rules = {\r\n\t \"start\" : [\r\n\t {\r\n\t token : \"variable\", // single line\r\n\t regex : '[\"](?:(?:\\\\\\\\.)|(?:[^\"\\\\\\\\]))*?[\"]\\\\s*(?=:)'\r\n\t }, {\r\n\t token : \"string\", // single line\r\n\t regex : '\"',\r\n\t next : \"string\"\r\n\t }, {\r\n\t token : \"constant.numeric\", // hex\r\n\t regex : \"0[xX][0-9a-fA-F]+\\\\b\"\r\n\t }, {\r\n\t token : \"constant.numeric\", // float\r\n\t regex : \"[+-]?\\\\d+(?:(?:\\\\.\\\\d*)?(?:[eE][+-]?\\\\d+)?)?\\\\b\"\r\n\t }, {\r\n\t token : \"constant.language.boolean\",\r\n\t regex : \"(?:true|false)\\\\b\"\r\n\t }, {\r\n\t token : \"invalid.illegal\", // single quoted strings are not allowed\r\n\t regex : \"['](?:(?:\\\\\\\\.)|(?:[^'\\\\\\\\]))*?[']\"\r\n\t }, {\r\n\t token : \"invalid.illegal\", // comments are not allowed\r\n\t regex : \"\\\\/\\\\/.*$\"\r\n\t }, {\r\n\t token : \"paren.lparen\",\r\n\t regex : \"[[({]\"\r\n\t }, {\r\n\t token : \"paren.rparen\",\r\n\t regex : \"[\\\\])}]\"\r\n\t }, {\r\n\t token : \"text\",\r\n\t regex : \"\\\\s+\"\r\n\t }\r\n\t ],\r\n\t \"string\" : [\r\n\t {\r\n\t token : \"constant.language.escape\",\r\n\t regex : /\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|[\"\\\\\\/bfnrt])/\r\n\t }, {\r\n\t token : \"string\",\r\n\t regex : '[^\"\\\\\\\\]+'\r\n\t }, {\r\n\t token : \"string\",\r\n\t regex : '\"',\r\n\t next : \"start\"\r\n\t }, {\r\n\t token : \"string\",\r\n\t regex : \"\",\r\n\t next : \"start\"\r\n\t }\r\n\t ]\r\n\t };\r\n\t \r\n\t};\r\n\r\n\toop.inherits(JsonHighlightRules, TextHighlightRules);\r\n\r\n\texports.JsonHighlightRules = JsonHighlightRules;\r\n\t});\r\n\r\n\tace.define(\"ace/mode/matching_brace_outdent\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(acequire, exports, module) {\r\n\t\"use strict\";\r\n\r\n\tvar Range = acequire(\"../range\").Range;\r\n\r\n\tvar MatchingBraceOutdent = function() {};\r\n\r\n\t(function() {\r\n\r\n\t this.checkOutdent = function(line, input) {\r\n\t if (! /^\\s+$/.test(line))\r\n\t return false;\r\n\r\n\t return /^\\s*\\}/.test(input);\r\n\t };\r\n\r\n\t this.autoOutdent = function(doc, row) {\r\n\t var line = doc.getLine(row);\r\n\t var match = line.match(/^(\\s*\\})/);\r\n\r\n\t if (!match) return 0;\r\n\r\n\t var column = match[1].length;\r\n\t var openBracePos = doc.findMatchingBracket({row: row, column: column});\r\n\r\n\t if (!openBracePos || openBracePos.row == row) return 0;\r\n\r\n\t var indent = this.$getIndent(doc.getLine(openBracePos.row));\r\n\t doc.replace(new Range(row, 0, row, column-1), indent);\r\n\t };\r\n\r\n\t this.$getIndent = function(line) {\r\n\t return line.match(/^\\s*/)[0];\r\n\t };\r\n\r\n\t}).call(MatchingBraceOutdent.prototype);\r\n\r\n\texports.MatchingBraceOutdent = MatchingBraceOutdent;\r\n\t});\r\n\r\n\tace.define(\"ace/mode/behaviour/cstyle\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/behaviour\",\"ace/token_iterator\",\"ace/lib/lang\"], function(acequire, exports, module) {\r\n\t\"use strict\";\r\n\r\n\tvar oop = acequire(\"../../lib/oop\");\r\n\tvar Behaviour = acequire(\"../behaviour\").Behaviour;\r\n\tvar TokenIterator = acequire(\"../../token_iterator\").TokenIterator;\r\n\tvar lang = acequire(\"../../lib/lang\");\r\n\r\n\tvar SAFE_INSERT_IN_TOKENS =\r\n\t [\"text\", \"paren.rparen\", \"punctuation.operator\"];\r\n\tvar SAFE_INSERT_BEFORE_TOKENS =\r\n\t [\"text\", \"paren.rparen\", \"punctuation.operator\", \"comment\"];\r\n\r\n\tvar context;\r\n\tvar contextCache = {};\r\n\tvar initContext = function(editor) {\r\n\t var id = -1;\r\n\t if (editor.multiSelect) {\r\n\t id = editor.selection.index;\r\n\t if (contextCache.rangeCount != editor.multiSelect.rangeCount)\r\n\t contextCache = {rangeCount: editor.multiSelect.rangeCount};\r\n\t }\r\n\t if (contextCache[id])\r\n\t return context = contextCache[id];\r\n\t context = contextCache[id] = {\r\n\t autoInsertedBrackets: 0,\r\n\t autoInsertedRow: -1,\r\n\t autoInsertedLineEnd: \"\",\r\n\t maybeInsertedBrackets: 0,\r\n\t maybeInsertedRow: -1,\r\n\t maybeInsertedLineStart: \"\",\r\n\t maybeInsertedLineEnd: \"\"\r\n\t };\r\n\t};\r\n\r\n\tvar getWrapped = function(selection, selected, opening, closing) {\r\n\t var rowDiff = selection.end.row - selection.start.row;\r\n\t return {\r\n\t text: opening + selected + closing,\r\n\t selection: [\r\n\t 0,\r\n\t selection.start.column + 1,\r\n\t rowDiff,\r\n\t selection.end.column + (rowDiff ? 0 : 1)\r\n\t ]\r\n\t };\r\n\t};\r\n\r\n\tvar CstyleBehaviour = function() {\r\n\t this.add(\"braces\", \"insertion\", function(state, action, editor, session, text) {\r\n\t var cursor = editor.getCursorPosition();\r\n\t var line = session.doc.getLine(cursor.row);\r\n\t if (text == '{') {\r\n\t initContext(editor);\r\n\t var selection = editor.getSelectionRange();\r\n\t var selected = session.doc.getTextRange(selection);\r\n\t if (selected !== \"\" && selected !== \"{\" && editor.getWrapBehavioursEnabled()) {\r\n\t return getWrapped(selection, selected, '{', '}');\r\n\t } else if (CstyleBehaviour.isSaneInsertion(editor, session)) {\r\n\t if (/[\\]\\}\\)]/.test(line[cursor.column]) || editor.inMultiSelectMode) {\r\n\t CstyleBehaviour.recordAutoInsert(editor, session, \"}\");\r\n\t return {\r\n\t text: '{}',\r\n\t selection: [1, 1]\r\n\t };\r\n\t } else {\r\n\t CstyleBehaviour.recordMaybeInsert(editor, session, \"{\");\r\n\t return {\r\n\t text: '{',\r\n\t selection: [1, 1]\r\n\t };\r\n\t }\r\n\t }\r\n\t } else if (text == '}') {\r\n\t initContext(editor);\r\n\t var rightChar = line.substring(cursor.column, cursor.column + 1);\r\n\t if (rightChar == '}') {\r\n\t var matching = session.$findOpeningBracket('}', {column: cursor.column + 1, row: cursor.row});\r\n\t if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) {\r\n\t CstyleBehaviour.popAutoInsertedClosing();\r\n\t return {\r\n\t text: '',\r\n\t selection: [1, 1]\r\n\t };\r\n\t }\r\n\t }\r\n\t } else if (text == \"\\n\" || text == \"\\r\\n\") {\r\n\t initContext(editor);\r\n\t var closing = \"\";\r\n\t if (CstyleBehaviour.isMaybeInsertedClosing(cursor, line)) {\r\n\t closing = lang.stringRepeat(\"}\", context.maybeInsertedBrackets);\r\n\t CstyleBehaviour.clearMaybeInsertedClosing();\r\n\t }\r\n\t var rightChar = line.substring(cursor.column, cursor.column + 1);\r\n\t if (rightChar === '}') {\r\n\t var openBracePos = session.findMatchingBracket({row: cursor.row, column: cursor.column+1}, '}');\r\n\t if (!openBracePos)\r\n\t return null;\r\n\t var next_indent = this.$getIndent(session.getLine(openBracePos.row));\r\n\t } else if (closing) {\r\n\t var next_indent = this.$getIndent(line);\r\n\t } else {\r\n\t CstyleBehaviour.clearMaybeInsertedClosing();\r\n\t return;\r\n\t }\r\n\t var indent = next_indent + session.getTabString();\r\n\r\n\t return {\r\n\t text: '\\n' + indent + '\\n' + next_indent + closing,\r\n\t selection: [1, indent.length, 1, indent.length]\r\n\t };\r\n\t } else {\r\n\t CstyleBehaviour.clearMaybeInsertedClosing();\r\n\t }\r\n\t });\r\n\r\n\t this.add(\"braces\", \"deletion\", function(state, action, editor, session, range) {\r\n\t var selected = session.doc.getTextRange(range);\r\n\t if (!range.isMultiLine() && selected == '{') {\r\n\t initContext(editor);\r\n\t var line = session.doc.getLine(range.start.row);\r\n\t var rightChar = line.substring(range.end.column, range.end.column + 1);\r\n\t if (rightChar == '}') {\r\n\t range.end.column++;\r\n\t return range;\r\n\t } else {\r\n\t context.maybeInsertedBrackets--;\r\n\t }\r\n\t }\r\n\t });\r\n\r\n\t this.add(\"parens\", \"insertion\", function(state, action, editor, session, text) {\r\n\t if (text == '(') {\r\n\t initContext(editor);\r\n\t var selection = editor.getSelectionRange();\r\n\t var selected = session.doc.getTextRange(selection);\r\n\t if (selected !== \"\" && editor.getWrapBehavioursEnabled()) {\r\n\t return getWrapped(selection, selected, '(', ')');\r\n\t } else if (CstyleBehaviour.isSaneInsertion(editor, session)) {\r\n\t CstyleBehaviour.recordAutoInsert(editor, session, \")\");\r\n\t return {\r\n\t text: '()',\r\n\t selection: [1, 1]\r\n\t };\r\n\t }\r\n\t } else if (text == ')') {\r\n\t initContext(editor);\r\n\t var cursor = editor.getCursorPosition();\r\n\t var line = session.doc.getLine(cursor.row);\r\n\t var rightChar = line.substring(cursor.column, cursor.column + 1);\r\n\t if (rightChar == ')') {\r\n\t var matching = session.$findOpeningBracket(')', {column: cursor.column + 1, row: cursor.row});\r\n\t if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) {\r\n\t CstyleBehaviour.popAutoInsertedClosing();\r\n\t return {\r\n\t text: '',\r\n\t selection: [1, 1]\r\n\t };\r\n\t }\r\n\t }\r\n\t }\r\n\t });\r\n\r\n\t this.add(\"parens\", \"deletion\", function(state, action, editor, session, range) {\r\n\t var selected = session.doc.getTextRange(range);\r\n\t if (!range.isMultiLine() && selected == '(') {\r\n\t initContext(editor);\r\n\t var line = session.doc.getLine(range.start.row);\r\n\t var rightChar = line.substring(range.start.column + 1, range.start.column + 2);\r\n\t if (rightChar == ')') {\r\n\t range.end.column++;\r\n\t return range;\r\n\t }\r\n\t }\r\n\t });\r\n\r\n\t this.add(\"brackets\", \"insertion\", function(state, action, editor, session, text) {\r\n\t if (text == '[') {\r\n\t initContext(editor);\r\n\t var selection = editor.getSelectionRange();\r\n\t var selected = session.doc.getTextRange(selection);\r\n\t if (selected !== \"\" && editor.getWrapBehavioursEnabled()) {\r\n\t return getWrapped(selection, selected, '[', ']');\r\n\t } else if (CstyleBehaviour.isSaneInsertion(editor, session)) {\r\n\t CstyleBehaviour.recordAutoInsert(editor, session, \"]\");\r\n\t return {\r\n\t text: '[]',\r\n\t selection: [1, 1]\r\n\t };\r\n\t }\r\n\t } else if (text == ']') {\r\n\t initContext(editor);\r\n\t var cursor = editor.getCursorPosition();\r\n\t var line = session.doc.getLine(cursor.row);\r\n\t var rightChar = line.substring(cursor.column, cursor.column + 1);\r\n\t if (rightChar == ']') {\r\n\t var matching = session.$findOpeningBracket(']', {column: cursor.column + 1, row: cursor.row});\r\n\t if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) {\r\n\t CstyleBehaviour.popAutoInsertedClosing();\r\n\t return {\r\n\t text: '',\r\n\t selection: [1, 1]\r\n\t };\r\n\t }\r\n\t }\r\n\t }\r\n\t });\r\n\r\n\t this.add(\"brackets\", \"deletion\", function(state, action, editor, session, range) {\r\n\t var selected = session.doc.getTextRange(range);\r\n\t if (!range.isMultiLine() && selected == '[') {\r\n\t initContext(editor);\r\n\t var line = session.doc.getLine(range.start.row);\r\n\t var rightChar = line.substring(range.start.column + 1, range.start.column + 2);\r\n\t if (rightChar == ']') {\r\n\t range.end.column++;\r\n\t return range;\r\n\t }\r\n\t }\r\n\t });\r\n\r\n\t this.add(\"string_dquotes\", \"insertion\", function(state, action, editor, session, text) {\r\n\t if (text == '\"' || text == \"'\") {\r\n\t initContext(editor);\r\n\t var quote = text;\r\n\t var selection = editor.getSelectionRange();\r\n\t var selected = session.doc.getTextRange(selection);\r\n\t if (selected !== \"\" && selected !== \"'\" && selected != '\"' && editor.getWrapBehavioursEnabled()) {\r\n\t return getWrapped(selection, selected, quote, quote);\r\n\t } else if (!selected) {\r\n\t var cursor = editor.getCursorPosition();\r\n\t var line = session.doc.getLine(cursor.row);\r\n\t var leftChar = line.substring(cursor.column-1, cursor.column);\r\n\t var rightChar = line.substring(cursor.column, cursor.column + 1);\r\n\t \r\n\t var token = session.getTokenAt(cursor.row, cursor.column);\r\n\t var rightToken = session.getTokenAt(cursor.row, cursor.column + 1);\r\n\t if (leftChar == \"\\\\\" && token && /escape/.test(token.type))\r\n\t return null;\r\n\t \r\n\t var stringBefore = token && /string|escape/.test(token.type);\r\n\t var stringAfter = !rightToken || /string|escape/.test(rightToken.type);\r\n\t \r\n\t var pair;\r\n\t if (rightChar == quote) {\r\n\t pair = stringBefore !== stringAfter;\r\n\t } else {\r\n\t if (stringBefore && !stringAfter)\r\n\t return null; // wrap string with different quote\r\n\t if (stringBefore && stringAfter)\r\n\t return null; // do not pair quotes inside strings\r\n\t var wordRe = session.$mode.tokenRe;\r\n\t wordRe.lastIndex = 0;\r\n\t var isWordBefore = wordRe.test(leftChar);\r\n\t wordRe.lastIndex = 0;\r\n\t var isWordAfter = wordRe.test(leftChar);\r\n\t if (isWordBefore || isWordAfter)\r\n\t return null; // before or after alphanumeric\r\n\t if (rightChar && !/[\\s;,.})\\]\\\\]/.test(rightChar))\r\n\t return null; // there is rightChar and it isn't closing\r\n\t pair = true;\r\n\t }\r\n\t return {\r\n\t text: pair ? quote + quote : \"\",\r\n\t selection: [1,1]\r\n\t };\r\n\t }\r\n\t }\r\n\t });\r\n\r\n\t this.add(\"string_dquotes\", \"deletion\", function(state, action, editor, session, range) {\r\n\t var selected = session.doc.getTextRange(range);\r\n\t if (!range.isMultiLine() && (selected == '\"' || selected == \"'\")) {\r\n\t initContext(editor);\r\n\t var line = session.doc.getLine(range.start.row);\r\n\t var rightChar = line.substring(range.start.column + 1, range.start.column + 2);\r\n\t if (rightChar == selected) {\r\n\t range.end.column++;\r\n\t return range;\r\n\t }\r\n\t }\r\n\t });\r\n\r\n\t};\r\n\r\n\t \r\n\tCstyleBehaviour.isSaneInsertion = function(editor, session) {\r\n\t var cursor = editor.getCursorPosition();\r\n\t var iterator = new TokenIterator(session, cursor.row, cursor.column);\r\n\t if (!this.$matchTokenType(iterator.getCurrentToken() || \"text\", SAFE_INSERT_IN_TOKENS)) {\r\n\t var iterator2 = new TokenIterator(session, cursor.row, cursor.column + 1);\r\n\t if (!this.$matchTokenType(iterator2.getCurrentToken() || \"text\", SAFE_INSERT_IN_TOKENS))\r\n\t return false;\r\n\t }\r\n\t iterator.stepForward();\r\n\t return iterator.getCurrentTokenRow() !== cursor.row ||\r\n\t this.$matchTokenType(iterator.getCurrentToken() || \"text\", SAFE_INSERT_BEFORE_TOKENS);\r\n\t};\r\n\r\n\tCstyleBehaviour.$matchTokenType = function(token, types) {\r\n\t return types.indexOf(token.type || token) > -1;\r\n\t};\r\n\r\n\tCstyleBehaviour.recordAutoInsert = function(editor, session, bracket) {\r\n\t var cursor = editor.getCursorPosition();\r\n\t var line = session.doc.getLine(cursor.row);\r\n\t if (!this.isAutoInsertedClosing(cursor, line, context.autoInsertedLineEnd[0]))\r\n\t context.autoInsertedBrackets = 0;\r\n\t context.autoInsertedRow = cursor.row;\r\n\t context.autoInsertedLineEnd = bracket + line.substr(cursor.column);\r\n\t context.autoInsertedBrackets++;\r\n\t};\r\n\r\n\tCstyleBehaviour.recordMaybeInsert = function(editor, session, bracket) {\r\n\t var cursor = editor.getCursorPosition();\r\n\t var line = session.doc.getLine(cursor.row);\r\n\t if (!this.isMaybeInsertedClosing(cursor, line))\r\n\t context.maybeInsertedBrackets = 0;\r\n\t context.maybeInsertedRow = cursor.row;\r\n\t context.maybeInsertedLineStart = line.substr(0, cursor.column) + bracket;\r\n\t context.maybeInsertedLineEnd = line.substr(cursor.column);\r\n\t context.maybeInsertedBrackets++;\r\n\t};\r\n\r\n\tCstyleBehaviour.isAutoInsertedClosing = function(cursor, line, bracket) {\r\n\t return context.autoInsertedBrackets > 0 &&\r\n\t cursor.row === context.autoInsertedRow &&\r\n\t bracket === context.autoInsertedLineEnd[0] &&\r\n\t line.substr(cursor.column) === context.autoInsertedLineEnd;\r\n\t};\r\n\r\n\tCstyleBehaviour.isMaybeInsertedClosing = function(cursor, line) {\r\n\t return context.maybeInsertedBrackets > 0 &&\r\n\t cursor.row === context.maybeInsertedRow &&\r\n\t line.substr(cursor.column) === context.maybeInsertedLineEnd &&\r\n\t line.substr(0, cursor.column) == context.maybeInsertedLineStart;\r\n\t};\r\n\r\n\tCstyleBehaviour.popAutoInsertedClosing = function() {\r\n\t context.autoInsertedLineEnd = context.autoInsertedLineEnd.substr(1);\r\n\t context.autoInsertedBrackets--;\r\n\t};\r\n\r\n\tCstyleBehaviour.clearMaybeInsertedClosing = function() {\r\n\t if (context) {\r\n\t context.maybeInsertedBrackets = 0;\r\n\t context.maybeInsertedRow = -1;\r\n\t }\r\n\t};\r\n\r\n\r\n\r\n\toop.inherits(CstyleBehaviour, Behaviour);\r\n\r\n\texports.CstyleBehaviour = CstyleBehaviour;\r\n\t});\r\n\r\n\tace.define(\"ace/mode/folding/cstyle\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/range\",\"ace/mode/folding/fold_mode\"], function(acequire, exports, module) {\r\n\t\"use strict\";\r\n\r\n\tvar oop = acequire(\"../../lib/oop\");\r\n\tvar Range = acequire(\"../../range\").Range;\r\n\tvar BaseFoldMode = acequire(\"./fold_mode\").FoldMode;\r\n\r\n\tvar FoldMode = exports.FoldMode = function(commentRegex) {\r\n\t if (commentRegex) {\r\n\t this.foldingStartMarker = new RegExp(\r\n\t this.foldingStartMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.start)\r\n\t );\r\n\t this.foldingStopMarker = new RegExp(\r\n\t this.foldingStopMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.end)\r\n\t );\r\n\t }\r\n\t};\r\n\toop.inherits(FoldMode, BaseFoldMode);\r\n\r\n\t(function() {\r\n\t \r\n\t this.foldingStartMarker = /(\\{|\\[)[^\\}\\]]*$|^\\s*(\\/\\*)/;\r\n\t this.foldingStopMarker = /^[^\\[\\{]*(\\}|\\])|^[\\s\\*]*(\\*\\/)/;\r\n\t this.singleLineBlockCommentRe= /^\\s*(\\/\\*).*\\*\\/\\s*$/;\r\n\t this.tripleStarBlockCommentRe = /^\\s*(\\/\\*\\*\\*).*\\*\\/\\s*$/;\r\n\t this.startRegionRe = /^\\s*(\\/\\*|\\/\\/)#?region\\b/;\r\n\t this._getFoldWidgetBase = this.getFoldWidget;\r\n\t this.getFoldWidget = function(session, foldStyle, row) {\r\n\t var line = session.getLine(row);\r\n\t \r\n\t if (this.singleLineBlockCommentRe.test(line)) {\r\n\t if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line))\r\n\t return \"\";\r\n\t }\r\n\t \r\n\t var fw = this._getFoldWidgetBase(session, foldStyle, row);\r\n\t \r\n\t if (!fw && this.startRegionRe.test(line))\r\n\t return \"start\"; // lineCommentRegionStart\r\n\t \r\n\t return fw;\r\n\t };\r\n\r\n\t this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) {\r\n\t var line = session.getLine(row);\r\n\t \r\n\t if (this.startRegionRe.test(line))\r\n\t return this.getCommentRegionBlock(session, line, row);\r\n\t \r\n\t var match = line.match(this.foldingStartMarker);\r\n\t if (match) {\r\n\t var i = match.index;\r\n\r\n\t if (match[1])\r\n\t return this.openingBracketBlock(session, match[1], row, i);\r\n\t \r\n\t var range = session.getCommentFoldRange(row, i + match[0].length, 1);\r\n\t \r\n\t if (range && !range.isMultiLine()) {\r\n\t if (forceMultiline) {\r\n\t range = this.getSectionRange(session, row);\r\n\t } else if (foldStyle != \"all\")\r\n\t range = null;\r\n\t }\r\n\t \r\n\t return range;\r\n\t }\r\n\r\n\t if (foldStyle === \"markbegin\")\r\n\t return;\r\n\r\n\t var match = line.match(this.foldingStopMarker);\r\n\t if (match) {\r\n\t var i = match.index + match[0].length;\r\n\r\n\t if (match[1])\r\n\t return this.closingBracketBlock(session, match[1], row, i);\r\n\r\n\t return session.getCommentFoldRange(row, i, -1);\r\n\t }\r\n\t };\r\n\t \r\n\t this.getSectionRange = function(session, row) {\r\n\t var line = session.getLine(row);\r\n\t var startIndent = line.search(/\\S/);\r\n\t var startRow = row;\r\n\t var startColumn = line.length;\r\n\t row = row + 1;\r\n\t var endRow = row;\r\n\t var maxRow = session.getLength();\r\n\t while (++row < maxRow) {\r\n\t line = session.getLine(row);\r\n\t var indent = line.search(/\\S/);\r\n\t if (indent === -1)\r\n\t continue;\r\n\t if (startIndent > indent)\r\n\t break;\r\n\t var subRange = this.getFoldWidgetRange(session, \"all\", row);\r\n\t \r\n\t if (subRange) {\r\n\t if (subRange.start.row <= startRow) {\r\n\t break;\r\n\t } else if (subRange.isMultiLine()) {\r\n\t row = subRange.end.row;\r\n\t } else if (startIndent == indent) {\r\n\t break;\r\n\t }\r\n\t }\r\n\t endRow = row;\r\n\t }\r\n\t \r\n\t return new Range(startRow, startColumn, endRow, session.getLine(endRow).length);\r\n\t };\r\n\t this.getCommentRegionBlock = function(session, line, row) {\r\n\t var startColumn = line.search(/\\s*$/);\r\n\t var maxRow = session.getLength();\r\n\t var startRow = row;\r\n\t \r\n\t var re = /^\\s*(?:\\/\\*|\\/\\/|--)#?(end)?region\\b/;\r\n\t var depth = 1;\r\n\t while (++row < maxRow) {\r\n\t line = session.getLine(row);\r\n\t var m = re.exec(line);\r\n\t if (!m) continue;\r\n\t if (m[1]) depth--;\r\n\t else depth++;\r\n\r\n\t if (!depth) break;\r\n\t }\r\n\r\n\t var endRow = row;\r\n\t if (endRow > startRow) {\r\n\t return new Range(startRow, startColumn, endRow, line.length);\r\n\t }\r\n\t };\r\n\r\n\t}).call(FoldMode.prototype);\r\n\r\n\t});\r\n\r\n\tace.define(\"ace/mode/json\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/mode/json_highlight_rules\",\"ace/mode/matching_brace_outdent\",\"ace/mode/behaviour/cstyle\",\"ace/mode/folding/cstyle\",\"ace/worker/worker_client\"], function(acequire, exports, module) {\r\n\t\"use strict\";\r\n\r\n\tvar oop = acequire(\"../lib/oop\");\r\n\tvar TextMode = acequire(\"./text\").Mode;\r\n\tvar HighlightRules = acequire(\"./json_highlight_rules\").JsonHighlightRules;\r\n\tvar MatchingBraceOutdent = acequire(\"./matching_brace_outdent\").MatchingBraceOutdent;\r\n\tvar CstyleBehaviour = acequire(\"./behaviour/cstyle\").CstyleBehaviour;\r\n\tvar CStyleFoldMode = acequire(\"./folding/cstyle\").FoldMode;\r\n\tvar WorkerClient = acequire(\"../worker/worker_client\").WorkerClient;\r\n\r\n\tvar Mode = function() {\r\n\t this.HighlightRules = HighlightRules;\r\n\t this.$outdent = new MatchingBraceOutdent();\r\n\t this.$behaviour = new CstyleBehaviour();\r\n\t this.foldingRules = new CStyleFoldMode();\r\n\t};\r\n\toop.inherits(Mode, TextMode);\r\n\r\n\t(function() {\r\n\r\n\t this.getNextLineIndent = function(state, line, tab) {\r\n\t var indent = this.$getIndent(line);\r\n\r\n\t if (state == \"start\") {\r\n\t var match = line.match(/^.*[\\{\\(\\[]\\s*$/);\r\n\t if (match) {\r\n\t indent += tab;\r\n\t }\r\n\t }\r\n\r\n\t return indent;\r\n\t };\r\n\r\n\t this.checkOutdent = function(state, line, input) {\r\n\t return this.$outdent.checkOutdent(line, input);\r\n\t };\r\n\r\n\t this.autoOutdent = function(state, doc, row) {\r\n\t this.$outdent.autoOutdent(doc, row);\r\n\t };\r\n\r\n\t this.createWorker = function(session) {\r\n\t var worker = new WorkerClient([\"ace\"], __webpack_require__(68), \"JsonWorker\");\r\n\t worker.attachToDocument(session.getDocument());\r\n\r\n\t worker.on(\"annotate\", function(e) {\r\n\t session.setAnnotations(e.data);\r\n\t });\r\n\r\n\t worker.on(\"terminate\", function() {\r\n\t session.clearAnnotations();\r\n\t });\r\n\r\n\t return worker;\r\n\t };\r\n\r\n\r\n\t this.$id = \"ace/mode/json\";\r\n\t}).call(Mode.prototype);\r\n\r\n\texports.Mode = Mode;\r\n\t});\r\n\r\n\r\n/***/ },\r\n/* 68 */\r\n/***/ function(module, exports) {\r\n\r\n\tmodule.exports.id = 'ace/mode/json_worker';\r\n\tmodule.exports.src = \"\\\"no use strict\\\";(function(window){function resolveModuleId(id,paths){for(var testPath=id,tail=\\\"\\\";testPath;){var alias=paths[testPath];if(\\\"string\\\"==typeof alias)return alias+tail;if(alias)return alias.location.replace(/\\\\/*$/,\\\"/\\\")+(tail||alias.main||alias.name);if(alias===!1)return\\\"\\\";var i=testPath.lastIndexOf(\\\"/\\\");if(-1===i)break;tail=testPath.substr(i)+tail,testPath=testPath.slice(0,i)}return id}if(!(void 0!==window.window&&window.document||window.acequire&&window.define)){window.console||(window.console=function(){var msgs=Array.prototype.slice.call(arguments,0);postMessage({type:\\\"log\\\",data:msgs})},window.console.error=window.console.warn=window.console.log=window.console.trace=window.console),window.window=window,window.ace=window,window.onerror=function(message,file,line,col,err){postMessage({type:\\\"error\\\",data:{message:message,data:err.data,file:file,line:line,col:col,stack:err.stack}})},window.normalizeModule=function(parentId,moduleName){if(-1!==moduleName.indexOf(\\\"!\\\")){var chunks=moduleName.split(\\\"!\\\");return window.normalizeModule(parentId,chunks[0])+\\\"!\\\"+window.normalizeModule(parentId,chunks[1])}if(\\\".\\\"==moduleName.charAt(0)){var base=parentId.split(\\\"/\\\").slice(0,-1).join(\\\"/\\\");for(moduleName=(base?base+\\\"/\\\":\\\"\\\")+moduleName;-1!==moduleName.indexOf(\\\".\\\")&&previous!=moduleName;){var previous=moduleName;moduleName=moduleName.replace(/^\\\\.\\\\//,\\\"\\\").replace(/\\\\/\\\\.\\\\//,\\\"/\\\").replace(/[^\\\\/]+\\\\/\\\\.\\\\.\\\\//,\\\"\\\")}}return moduleName},window.acequire=function acequire(parentId,id){if(id||(id=parentId,parentId=null),!id.charAt)throw Error(\\\"worker.js acequire() accepts only (parentId, id) as arguments\\\");id=window.normalizeModule(parentId,id);var module=window.acequire.modules[id];if(module)return module.initialized||(module.initialized=!0,module.exports=module.factory().exports),module.exports;if(!window.acequire.tlns)return console.log(\\\"unable to load \\\"+id);var path=resolveModuleId(id,window.acequire.tlns);return\\\".js\\\"!=path.slice(-3)&&(path+=\\\".js\\\"),window.acequire.id=id,window.acequire.modules[id]={},importScripts(path),window.acequire(parentId,id)},window.acequire.modules={},window.acequire.tlns={},window.define=function(id,deps,factory){if(2==arguments.length?(factory=deps,\\\"string\\\"!=typeof id&&(deps=id,id=window.acequire.id)):1==arguments.length&&(factory=id,deps=[],id=window.acequire.id),\\\"function\\\"!=typeof factory)return window.acequire.modules[id]={exports:factory,initialized:!0},void 0;deps.length||(deps=[\\\"require\\\",\\\"exports\\\",\\\"module\\\"]);var req=function(childId){return window.acequire(id,childId)};window.acequire.modules[id]={exports:{},factory:function(){var module=this,returnExports=factory.apply(this,deps.map(function(dep){switch(dep){case\\\"require\\\":return req;case\\\"exports\\\":return module.exports;case\\\"module\\\":return module;default:return req(dep)}}));return returnExports&&(module.exports=returnExports),module}}},window.define.amd={},acequire.tlns={},window.initBaseUrls=function(topLevelNamespaces){for(var i in topLevelNamespaces)acequire.tlns[i]=topLevelNamespaces[i]},window.initSender=function(){var EventEmitter=window.acequire(\\\"ace/lib/event_emitter\\\").EventEmitter,oop=window.acequire(\\\"ace/lib/oop\\\"),Sender=function(){};return function(){oop.implement(this,EventEmitter),this.callback=function(data,callbackId){postMessage({type:\\\"call\\\",id:callbackId,data:data})},this.emit=function(name,data){postMessage({type:\\\"event\\\",name:name,data:data})}}.call(Sender.prototype),new Sender};var main=window.main=null,sender=window.sender=null;window.onmessage=function(e){var msg=e.data;if(msg.event&&sender)sender._signal(msg.event,msg.data);else if(msg.command)if(main[msg.command])main[msg.command].apply(main,msg.args);else{if(!window[msg.command])throw Error(\\\"Unknown command:\\\"+msg.command);window[msg.command].apply(window,msg.args)}else if(msg.init){window.initBaseUrls(msg.tlns),acequire(\\\"ace/lib/es5-shim\\\"),sender=window.sender=window.initSender();var clazz=acequire(msg.module)[msg.classname];main=window.main=new clazz(sender)}}}})(this),ace.define(\\\"ace/lib/oop\\\",[\\\"require\\\",\\\"exports\\\",\\\"module\\\"],function(acequire,exports){\\\"use strict\\\";exports.inherits=function(ctor,superCtor){ctor.super_=superCtor,ctor.prototype=Object.create(superCtor.prototype,{constructor:{value:ctor,enumerable:!1,writable:!0,configurable:!0}})},exports.mixin=function(obj,mixin){for(var key in mixin)obj[key]=mixin[key];return obj},exports.implement=function(proto,mixin){exports.mixin(proto,mixin)}}),ace.define(\\\"ace/range\\\",[\\\"require\\\",\\\"exports\\\",\\\"module\\\"],function(acequire,exports){\\\"use strict\\\";var comparePoints=function(p1,p2){return p1.row-p2.row||p1.column-p2.column},Range=function(startRow,startColumn,endRow,endColumn){this.start={row:startRow,column:startColumn},this.end={row:endRow,column:endColumn}};(function(){this.isEqual=function(range){return this.start.row===range.start.row&&this.end.row===range.end.row&&this.start.column===range.start.column&&this.end.column===range.end.column},this.toString=function(){return\\\"Range: [\\\"+this.start.row+\\\"/\\\"+this.start.column+\\\"] -> [\\\"+this.end.row+\\\"/\\\"+this.end.column+\\\"]\\\"},this.contains=function(row,column){return 0==this.compare(row,column)},this.compareRange=function(range){var cmp,end=range.end,start=range.start;return cmp=this.compare(end.row,end.column),1==cmp?(cmp=this.compare(start.row,start.column),1==cmp?2:0==cmp?1:0):-1==cmp?-2:(cmp=this.compare(start.row,start.column),-1==cmp?-1:1==cmp?42:0)},this.comparePoint=function(p){return this.compare(p.row,p.column)},this.containsRange=function(range){return 0==this.comparePoint(range.start)&&0==this.comparePoint(range.end)},this.intersects=function(range){var cmp=this.compareRange(range);return-1==cmp||0==cmp||1==cmp},this.isEnd=function(row,column){return this.end.row==row&&this.end.column==column},this.isStart=function(row,column){return this.start.row==row&&this.start.column==column},this.setStart=function(row,column){\\\"object\\\"==typeof row?(this.start.column=row.column,this.start.row=row.row):(this.start.row=row,this.start.column=column)},this.setEnd=function(row,column){\\\"object\\\"==typeof row?(this.end.column=row.column,this.end.row=row.row):(this.end.row=row,this.end.column=column)},this.inside=function(row,column){return 0==this.compare(row,column)?this.isEnd(row,column)||this.isStart(row,column)?!1:!0:!1},this.insideStart=function(row,column){return 0==this.compare(row,column)?this.isEnd(row,column)?!1:!0:!1},this.insideEnd=function(row,column){return 0==this.compare(row,column)?this.isStart(row,column)?!1:!0:!1},this.compare=function(row,column){return this.isMultiLine()||row!==this.start.row?this.start.row>row?-1:row>this.end.row?1:this.start.row===row?column>=this.start.column?0:-1:this.end.row===row?this.end.column>=column?0:1:0:this.start.column>column?-1:column>this.end.column?1:0},this.compareStart=function(row,column){return this.start.row==row&&this.start.column==column?-1:this.compare(row,column)},this.compareEnd=function(row,column){return this.end.row==row&&this.end.column==column?1:this.compare(row,column)},this.compareInside=function(row,column){return this.end.row==row&&this.end.column==column?1:this.start.row==row&&this.start.column==column?-1:this.compare(row,column)},this.clipRows=function(firstRow,lastRow){if(this.end.row>lastRow)var end={row:lastRow+1,column:0};else if(firstRow>this.end.row)var end={row:firstRow,column:0};if(this.start.row>lastRow)var start={row:lastRow+1,column:0};else if(firstRow>this.start.row)var start={row:firstRow,column:0};return Range.fromPoints(start||this.start,end||this.end)},this.extend=function(row,column){var cmp=this.compare(row,column);if(0==cmp)return this;if(-1==cmp)var start={row:row,column:column};else var end={row:row,column:column};return Range.fromPoints(start||this.start,end||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 Range.fromPoints(this.start,this.end)},this.collapseRows=function(){return 0==this.end.column?new Range(this.start.row,0,Math.max(this.start.row,this.end.row-1),0):new Range(this.start.row,0,this.end.row,0)},this.toScreenRange=function(session){var screenPosStart=session.documentToScreenPosition(this.start),screenPosEnd=session.documentToScreenPosition(this.end);return new Range(screenPosStart.row,screenPosStart.column,screenPosEnd.row,screenPosEnd.column)},this.moveBy=function(row,column){this.start.row+=row,this.start.column+=column,this.end.row+=row,this.end.column+=column}}).call(Range.prototype),Range.fromPoints=function(start,end){return new Range(start.row,start.column,end.row,end.column)},Range.comparePoints=comparePoints,Range.comparePoints=function(p1,p2){return p1.row-p2.row||p1.column-p2.column},exports.Range=Range}),ace.define(\\\"ace/apply_delta\\\",[\\\"require\\\",\\\"exports\\\",\\\"module\\\"],function(acequire,exports){\\\"use strict\\\";exports.applyDelta=function(docLines,delta){var row=delta.start.row,startColumn=delta.start.column,line=docLines[row]||\\\"\\\";switch(delta.action){case\\\"insert\\\":var lines=delta.lines;if(1===lines.length)docLines[row]=line.substring(0,startColumn)+delta.lines[0]+line.substring(startColumn);else{var args=[row,1].concat(delta.lines);docLines.splice.apply(docLines,args),docLines[row]=line.substring(0,startColumn)+docLines[row],docLines[row+delta.lines.length-1]+=line.substring(startColumn)}break;case\\\"remove\\\":var endColumn=delta.end.column,endRow=delta.end.row;row===endRow?docLines[row]=line.substring(0,startColumn)+line.substring(endColumn):docLines.splice(row,endRow-row+1,line.substring(0,startColumn)+docLines[endRow].substring(endColumn))}}}),ace.define(\\\"ace/lib/event_emitter\\\",[\\\"require\\\",\\\"exports\\\",\\\"module\\\"],function(acequire,exports){\\\"use strict\\\";var EventEmitter={},stopPropagation=function(){this.propagationStopped=!0},preventDefault=function(){this.defaultPrevented=!0};EventEmitter._emit=EventEmitter._dispatchEvent=function(eventName,e){this._eventRegistry||(this._eventRegistry={}),this._defaultHandlers||(this._defaultHandlers={});var listeners=this._eventRegistry[eventName]||[],defaultHandler=this._defaultHandlers[eventName];if(listeners.length||defaultHandler){\\\"object\\\"==typeof e&&e||(e={}),e.type||(e.type=eventName),e.stopPropagation||(e.stopPropagation=stopPropagation),e.preventDefault||(e.preventDefault=preventDefault),listeners=listeners.slice();for(var i=0;listeners.length>i&&(listeners[i](e,this),!e.propagationStopped);i++);return defaultHandler&&!e.defaultPrevented?defaultHandler(e,this):void 0}},EventEmitter._signal=function(eventName,e){var listeners=(this._eventRegistry||{})[eventName];if(listeners){listeners=listeners.slice();for(var i=0;listeners.length>i;i++)listeners[i](e,this)}},EventEmitter.once=function(eventName,callback){var _self=this;callback&&this.addEventListener(eventName,function newCallback(){_self.removeEventListener(eventName,newCallback),callback.apply(null,arguments)})},EventEmitter.setDefaultHandler=function(eventName,callback){var handlers=this._defaultHandlers;if(handlers||(handlers=this._defaultHandlers={_disabled_:{}}),handlers[eventName]){var old=handlers[eventName],disabled=handlers._disabled_[eventName];disabled||(handlers._disabled_[eventName]=disabled=[]),disabled.push(old);var i=disabled.indexOf(callback);-1!=i&&disabled.splice(i,1)}handlers[eventName]=callback},EventEmitter.removeDefaultHandler=function(eventName,callback){var handlers=this._defaultHandlers;if(handlers){var disabled=handlers._disabled_[eventName];if(handlers[eventName]==callback)handlers[eventName],disabled&&this.setDefaultHandler(eventName,disabled.pop());else if(disabled){var i=disabled.indexOf(callback);-1!=i&&disabled.splice(i,1)}}},EventEmitter.on=EventEmitter.addEventListener=function(eventName,callback,capturing){this._eventRegistry=this._eventRegistry||{};var listeners=this._eventRegistry[eventName];return listeners||(listeners=this._eventRegistry[eventName]=[]),-1==listeners.indexOf(callback)&&listeners[capturing?\\\"unshift\\\":\\\"push\\\"](callback),callback},EventEmitter.off=EventEmitter.removeListener=EventEmitter.removeEventListener=function(eventName,callback){this._eventRegistry=this._eventRegistry||{};var listeners=this._eventRegistry[eventName];if(listeners){var index=listeners.indexOf(callback);-1!==index&&listeners.splice(index,1)}},EventEmitter.removeAllListeners=function(eventName){this._eventRegistry&&(this._eventRegistry[eventName]=[])},exports.EventEmitter=EventEmitter}),ace.define(\\\"ace/anchor\\\",[\\\"require\\\",\\\"exports\\\",\\\"module\\\",\\\"ace/lib/oop\\\",\\\"ace/lib/event_emitter\\\"],function(acequire,exports){\\\"use strict\\\";var oop=acequire(\\\"./lib/oop\\\"),EventEmitter=acequire(\\\"./lib/event_emitter\\\").EventEmitter,Anchor=exports.Anchor=function(doc,row,column){this.$onChange=this.onChange.bind(this),this.attach(doc),column===void 0?this.setPosition(row.row,row.column):this.setPosition(row,column)};(function(){function $pointsInOrder(point1,point2,equalPointsInOrder){var bColIsAfter=equalPointsInOrder?point1.column<=point2.column:point1.columnthis.row)){var point=$getTransformedPoint(delta,{row:this.row,column:this.column},this.$insertRight);this.setPosition(point.row,point.column,!0)}},this.setPosition=function(row,column,noClip){var pos;if(pos=noClip?{row:row,column:column}:this.$clipPositionToDocument(row,column),this.row!=pos.row||this.column!=pos.column){var old={row:this.row,column:this.column};this.row=pos.row,this.column=pos.column,this._signal(\\\"change\\\",{old:old,value:pos})}},this.detach=function(){this.document.removeEventListener(\\\"change\\\",this.$onChange)},this.attach=function(doc){this.document=doc||this.document,this.document.on(\\\"change\\\",this.$onChange)},this.$clipPositionToDocument=function(row,column){var pos={};return row>=this.document.getLength()?(pos.row=Math.max(0,this.document.getLength()-1),pos.column=this.document.getLine(pos.row).length):0>row?(pos.row=0,pos.column=0):(pos.row=row,pos.column=Math.min(this.document.getLine(pos.row).length,Math.max(0,column))),0>column&&(pos.column=0),pos}}).call(Anchor.prototype)}),ace.define(\\\"ace/document\\\",[\\\"require\\\",\\\"exports\\\",\\\"module\\\",\\\"ace/lib/oop\\\",\\\"ace/apply_delta\\\",\\\"ace/lib/event_emitter\\\",\\\"ace/range\\\",\\\"ace/anchor\\\"],function(acequire,exports){\\\"use strict\\\";var oop=acequire(\\\"./lib/oop\\\"),applyDelta=acequire(\\\"./apply_delta\\\").applyDelta,EventEmitter=acequire(\\\"./lib/event_emitter\\\").EventEmitter,Range=acequire(\\\"./range\\\").Range,Anchor=acequire(\\\"./anchor\\\").Anchor,Document=function(textOrLines){this.$lines=[\\\"\\\"],0===textOrLines.length?this.$lines=[\\\"\\\"]:Array.isArray(textOrLines)?this.insertMergedLines({row:0,column:0},textOrLines):this.insert({row:0,column:0},textOrLines)};(function(){oop.implement(this,EventEmitter),this.setValue=function(text){var len=this.getLength()-1;this.remove(new Range(0,0,len,this.getLine(len).length)),this.insert({row:0,column:0},text)},this.getValue=function(){return this.getAllLines().join(this.getNewLineCharacter())},this.createAnchor=function(row,column){return new Anchor(this,row,column)},this.$split=0===\\\"aaa\\\".split(/a/).length?function(text){return text.replace(/\\\\r\\\\n|\\\\r/g,\\\"\\\\n\\\").split(\\\"\\\\n\\\")}:function(text){return text.split(/\\\\r\\\\n|\\\\r|\\\\n/)},this.$detectNewLine=function(text){var match=text.match(/^.*?(\\\\r\\\\n|\\\\r|\\\\n)/m);this.$autoNewLine=match?match[1]:\\\"\\\\n\\\",this._signal(\\\"changeNewLineMode\\\")},this.getNewLineCharacter=function(){switch(this.$newLineMode){case\\\"windows\\\":return\\\"\\\\r\\\\n\\\";case\\\"unix\\\":return\\\"\\\\n\\\";default:return this.$autoNewLine||\\\"\\\\n\\\"}},this.$autoNewLine=\\\"\\\",this.$newLineMode=\\\"auto\\\",this.setNewLineMode=function(newLineMode){this.$newLineMode!==newLineMode&&(this.$newLineMode=newLineMode,this._signal(\\\"changeNewLineMode\\\"))},this.getNewLineMode=function(){return this.$newLineMode},this.isNewLine=function(text){return\\\"\\\\r\\\\n\\\"==text||\\\"\\\\r\\\"==text||\\\"\\\\n\\\"==text},this.getLine=function(row){return this.$lines[row]||\\\"\\\"},this.getLines=function(firstRow,lastRow){return this.$lines.slice(firstRow,lastRow+1)},this.getAllLines=function(){return this.getLines(0,this.getLength())},this.getLength=function(){return this.$lines.length},this.getTextRange=function(range){return this.getLinesForRange(range).join(this.getNewLineCharacter())},this.getLinesForRange=function(range){var lines;if(range.start.row===range.end.row)lines=[this.getLine(range.start.row).substring(range.start.column,range.end.column)];else{lines=this.getLines(range.start.row,range.end.row),lines[0]=(lines[0]||\\\"\\\").substring(range.start.column);var l=lines.length-1;range.end.row-range.start.row==l&&(lines[l]=lines[l].substring(0,range.end.column))}return lines},this.insertLines=function(row,lines){return console.warn(\\\"Use of document.insertLines is deprecated. Use the insertFullLines method instead.\\\"),this.insertFullLines(row,lines)},this.removeLines=function(firstRow,lastRow){return console.warn(\\\"Use of document.removeLines is deprecated. Use the removeFullLines method instead.\\\"),this.removeFullLines(firstRow,lastRow)},this.insertNewLine=function(position){return console.warn(\\\"Use of document.insertNewLine is deprecated. Use insertMergedLines(position, ['', '']) instead.\\\"),this.insertMergedLines(position,[\\\"\\\",\\\"\\\"])},this.insert=function(position,text){return 1>=this.getLength()&&this.$detectNewLine(text),this.insertMergedLines(position,this.$split(text))},this.insertInLine=function(position,text){var start=this.clippedPos(position.row,position.column),end=this.pos(position.row,position.column+text.length);return this.applyDelta({start:start,end:end,action:\\\"insert\\\",lines:[text]},!0),this.clonePos(end)},this.clippedPos=function(row,column){var length=this.getLength();void 0===row?row=length:0>row?row=0:row>=length&&(row=length-1,column=void 0);var line=this.getLine(row);return void 0==column&&(column=line.length),column=Math.min(Math.max(column,0),line.length),{row:row,column:column}},this.clonePos=function(pos){return{row:pos.row,column:pos.column}},this.pos=function(row,column){return{row:row,column:column}},this.$clipPosition=function(position){var length=this.getLength();return position.row>=length?(position.row=Math.max(0,length-1),position.column=this.getLine(length-1).length):(position.row=Math.max(0,position.row),position.column=Math.min(Math.max(position.column,0),this.getLine(position.row).length)),position},this.insertFullLines=function(row,lines){row=Math.min(Math.max(row,0),this.getLength());var column=0;this.getLength()>row?(lines=lines.concat([\\\"\\\"]),column=0):(lines=[\\\"\\\"].concat(lines),row--,column=this.$lines[row].length),this.insertMergedLines({row:row,column:column},lines)},this.insertMergedLines=function(position,lines){var start=this.clippedPos(position.row,position.column),end={row:start.row+lines.length-1,column:(1==lines.length?start.column:0)+lines[lines.length-1].length};return this.applyDelta({start:start,end:end,action:\\\"insert\\\",lines:lines}),this.clonePos(end)},this.remove=function(range){var start=this.clippedPos(range.start.row,range.start.column),end=this.clippedPos(range.end.row,range.end.column);return this.applyDelta({start:start,end:end,action:\\\"remove\\\",lines:this.getLinesForRange({start:start,end:end})}),this.clonePos(start)},this.removeInLine=function(row,startColumn,endColumn){var start=this.clippedPos(row,startColumn),end=this.clippedPos(row,endColumn);return this.applyDelta({start:start,end:end,action:\\\"remove\\\",lines:this.getLinesForRange({start:start,end:end})},!0),this.clonePos(start)},this.removeFullLines=function(firstRow,lastRow){firstRow=Math.min(Math.max(0,firstRow),this.getLength()-1),lastRow=Math.min(Math.max(0,lastRow),this.getLength()-1);var deleteFirstNewLine=lastRow==this.getLength()-1&&firstRow>0,deleteLastNewLine=this.getLength()-1>lastRow,startRow=deleteFirstNewLine?firstRow-1:firstRow,startCol=deleteFirstNewLine?this.getLine(startRow).length:0,endRow=deleteLastNewLine?lastRow+1:lastRow,endCol=deleteLastNewLine?0:this.getLine(endRow).length,range=new Range(startRow,startCol,endRow,endCol),deletedLines=this.$lines.slice(firstRow,lastRow+1);return this.applyDelta({start:range.start,end:range.end,action:\\\"remove\\\",lines:this.getLinesForRange(range)}),deletedLines},this.removeNewLine=function(row){this.getLength()-1>row&&row>=0&&this.applyDelta({start:this.pos(row,this.getLine(row).length),end:this.pos(row+1,0),action:\\\"remove\\\",lines:[\\\"\\\",\\\"\\\"]})},this.replace=function(range,text){if(range instanceof Range||(range=Range.fromPoints(range.start,range.end)),0===text.length&&range.isEmpty())return range.start;if(text==this.getTextRange(range))return range.end;this.remove(range);var end;return end=text?this.insert(range.start,text):range.start},this.applyDeltas=function(deltas){for(var i=0;deltas.length>i;i++)this.applyDelta(deltas[i])},this.revertDeltas=function(deltas){for(var i=deltas.length-1;i>=0;i--)this.revertDelta(deltas[i])},this.applyDelta=function(delta,doNotValidate){var isInsert=\\\"insert\\\"==delta.action;(isInsert?1>=delta.lines.length&&!delta.lines[0]:!Range.comparePoints(delta.start,delta.end))||(isInsert&&delta.lines.length>2e4&&this.$splitAndapplyLargeDelta(delta,2e4),applyDelta(this.$lines,delta,doNotValidate),this._signal(\\\"change\\\",delta))},this.$splitAndapplyLargeDelta=function(delta,MAX){for(var lines=delta.lines,l=lines.length,row=delta.start.row,column=delta.start.column,from=0,to=0;;){from=to,to+=MAX-1;var chunk=lines.slice(from,to);if(to>l){delta.lines=chunk,delta.start.row=row+from,delta.start.column=column;break}chunk.push(\\\"\\\"),this.applyDelta({start:this.pos(row+from,column),end:this.pos(row+to,column=0),action:delta.action,lines:chunk},!0)}},this.revertDelta=function(delta){this.applyDelta({start:this.clonePos(delta.start),end:this.clonePos(delta.end),action:\\\"insert\\\"==delta.action?\\\"remove\\\":\\\"insert\\\",lines:delta.lines.slice()})},this.indexToPosition=function(index,startRow){for(var lines=this.$lines||this.getAllLines(),newlineLength=this.getNewLineCharacter().length,i=startRow||0,l=lines.length;l>i;i++)if(index-=lines[i].length+newlineLength,0>index)return{row:i,column:index+lines[i].length+newlineLength};return{row:l-1,column:lines[l-1].length}},this.positionToIndex=function(pos,startRow){for(var lines=this.$lines||this.getAllLines(),newlineLength=this.getNewLineCharacter().length,index=0,row=Math.min(pos.row,lines.length),i=startRow||0;row>i;++i)index+=lines[i].length+newlineLength;return index+pos.column}}).call(Document.prototype),exports.Document=Document}),ace.define(\\\"ace/lib/lang\\\",[\\\"require\\\",\\\"exports\\\",\\\"module\\\"],function(acequire,exports){\\\"use strict\\\";exports.last=function(a){return a[a.length-1]},exports.stringReverse=function(string){return string.split(\\\"\\\").reverse().join(\\\"\\\")},exports.stringRepeat=function(string,count){for(var result=\\\"\\\";count>0;)1&count&&(result+=string),(count>>=1)&&(string+=string);return result};var trimBeginRegexp=/^\\\\s\\\\s*/,trimEndRegexp=/\\\\s\\\\s*$/;exports.stringTrimLeft=function(string){return string.replace(trimBeginRegexp,\\\"\\\")},exports.stringTrimRight=function(string){return string.replace(trimEndRegexp,\\\"\\\")},exports.copyObject=function(obj){var copy={};for(var key in obj)copy[key]=obj[key];return copy},exports.copyArray=function(array){for(var copy=[],i=0,l=array.length;l>i;i++)copy[i]=array[i]&&\\\"object\\\"==typeof array[i]?this.copyObject(array[i]):array[i];return copy},exports.deepCopy=function deepCopy(obj){if(\\\"object\\\"!=typeof obj||!obj)return obj;var copy;if(Array.isArray(obj)){copy=[];for(var key=0;obj.length>key;key++)copy[key]=deepCopy(obj[key]);return copy}var cons=obj.constructor;if(cons===RegExp)return obj;copy=cons();for(var key in obj)copy[key]=deepCopy(obj[key]);return copy},exports.arrayToMap=function(arr){for(var map={},i=0;arr.length>i;i++)map[arr[i]]=1;return map},exports.createMap=function(props){var map=Object.create(null);for(var i in props)map[i]=props[i];return map},exports.arrayRemove=function(array,value){for(var i=0;array.length>=i;i++)value===array[i]&&array.splice(i,1)},exports.escapeRegExp=function(str){return str.replace(/([.*+?^${}()|[\\\\]\\\\/\\\\\\\\])/g,\\\"\\\\\\\\$1\\\")},exports.escapeHTML=function(str){return str.replace(/&/g,\\\"&\\\").replace(/\\\"/g,\\\""\\\").replace(/'/g,\\\"'\\\").replace(/i;i+=2){if(Array.isArray(data[i+1]))var d={action:\\\"insert\\\",start:data[i],lines:data[i+1]};else var d={action:\\\"remove\\\",start:data[i],end:data[i+1]};doc.applyDelta(d,!0)}return _self.$timeout?deferredUpdate.schedule(_self.$timeout):(_self.onUpdate(),void 0)})};(function(){this.$timeout=500,this.setTimeout=function(timeout){this.$timeout=timeout},this.setValue=function(value){this.doc.setValue(value),this.deferredUpdate.schedule(this.$timeout)},this.getValue=function(callbackId){this.sender.callback(this.doc.getValue(),callbackId)},this.onUpdate=function(){},this.isPending=function(){return this.deferredUpdate.isPending()}}).call(Mirror.prototype)}),ace.define(\\\"ace/mode/json/json_parse\\\",[\\\"require\\\",\\\"exports\\\",\\\"module\\\"],function(){\\\"use strict\\\";var at,ch,text,value,escapee={'\\\"':'\\\"',\\\"\\\\\\\\\\\":\\\"\\\\\\\\\\\",\\\"/\\\":\\\"/\\\",b:\\\"\\\\b\\\",f:\\\"\\\\f\\\",n:\\\"\\\\n\\\",r:\\\"\\\\r\\\",t:\\\"\\t\\\"},error=function(m){throw{name:\\\"SyntaxError\\\",message:m,at:at,text:text}},next=function(c){return c&&c!==ch&&error(\\\"Expected '\\\"+c+\\\"' instead of '\\\"+ch+\\\"'\\\"),ch=text.charAt(at),at+=1,ch},number=function(){var number,string=\\\"\\\";for(\\\"-\\\"===ch&&(string=\\\"-\\\",next(\\\"-\\\"));ch>=\\\"0\\\"&&\\\"9\\\">=ch;)string+=ch,next();if(\\\".\\\"===ch)for(string+=\\\".\\\";next()&&ch>=\\\"0\\\"&&\\\"9\\\">=ch;)string+=ch;if(\\\"e\\\"===ch||\\\"E\\\"===ch)for(string+=ch,next(),(\\\"-\\\"===ch||\\\"+\\\"===ch)&&(string+=ch,next());ch>=\\\"0\\\"&&\\\"9\\\">=ch;)string+=ch,next();return number=+string,isNaN(number)?(error(\\\"Bad number\\\"),void 0):number},string=function(){var hex,i,uffff,string=\\\"\\\";if('\\\"'===ch)for(;next();){if('\\\"'===ch)return next(),string;if(\\\"\\\\\\\\\\\"===ch)if(next(),\\\"u\\\"===ch){for(uffff=0,i=0;4>i&&(hex=parseInt(next(),16),isFinite(hex));i+=1)uffff=16*uffff+hex;string+=String.fromCharCode(uffff)}else{if(\\\"string\\\"!=typeof escapee[ch])break;string+=escapee[ch]}else string+=ch}error(\\\"Bad string\\\")},white=function(){for(;ch&&\\\" \\\">=ch;)next()},word=function(){switch(ch){case\\\"t\\\":return next(\\\"t\\\"),next(\\\"r\\\"),next(\\\"u\\\"),next(\\\"e\\\"),!0;case\\\"f\\\":return next(\\\"f\\\"),next(\\\"a\\\"),next(\\\"l\\\"),next(\\\"s\\\"),next(\\\"e\\\"),!1;case\\\"n\\\":return next(\\\"n\\\"),next(\\\"u\\\"),next(\\\"l\\\"),next(\\\"l\\\"),null}error(\\\"Unexpected '\\\"+ch+\\\"'\\\")},array=function(){var array=[];if(\\\"[\\\"===ch){if(next(\\\"[\\\"),white(),\\\"]\\\"===ch)return next(\\\"]\\\"),array;for(;ch;){if(array.push(value()),white(),\\\"]\\\"===ch)return next(\\\"]\\\"),array;next(\\\",\\\"),white()}}error(\\\"Bad array\\\")},object=function(){var key,object={};if(\\\"{\\\"===ch){if(next(\\\"{\\\"),white(),\\\"}\\\"===ch)return next(\\\"}\\\"),object;for(;ch;){if(key=string(),white(),next(\\\":\\\"),Object.hasOwnProperty.call(object,key)&&error('Duplicate key \\\"'+key+'\\\"'),object[key]=value(),white(),\\\"}\\\"===ch)return next(\\\"}\\\"),object;next(\\\",\\\"),white()}}error(\\\"Bad object\\\")};return value=function(){switch(white(),ch){case\\\"{\\\":return object();case\\\"[\\\":return array();case'\\\"':return string();case\\\"-\\\":return number();default:return ch>=\\\"0\\\"&&\\\"9\\\">=ch?number():word()}},function(source,reviver){var result;return text=source,at=0,ch=\\\" \\\",result=value(),white(),ch&&error(\\\"Syntax error\\\"),\\\"function\\\"==typeof reviver?function walk(holder,key){var k,v,value=holder[key];if(value&&\\\"object\\\"==typeof value)for(k in value)Object.hasOwnProperty.call(value,k)&&(v=walk(value,k),void 0!==v?value[k]=v:delete value[k]);return reviver.call(holder,key,value)}({\\\"\\\":result},\\\"\\\"):result}}),ace.define(\\\"ace/mode/json_worker\\\",[\\\"require\\\",\\\"exports\\\",\\\"module\\\",\\\"ace/lib/oop\\\",\\\"ace/worker/mirror\\\",\\\"ace/mode/json/json_parse\\\"],function(acequire,exports){\\\"use strict\\\";var oop=acequire(\\\"../lib/oop\\\"),Mirror=acequire(\\\"../worker/mirror\\\").Mirror,parse=acequire(\\\"./json/json_parse\\\"),JsonWorker=exports.JsonWorker=function(sender){Mirror.call(this,sender),this.setTimeout(200)};oop.inherits(JsonWorker,Mirror),function(){this.onUpdate=function(){var value=this.doc.getValue(),errors=[];try{value&&parse(value)}catch(e){var pos=this.doc.indexToPosition(e.at-1);errors.push({row:pos.row,column:pos.column,text:e.message,type:\\\"error\\\"})}this.sender.emit(\\\"annotate\\\",errors)}}.call(JsonWorker.prototype)}),ace.define(\\\"ace/lib/es5-shim\\\",[\\\"require\\\",\\\"exports\\\",\\\"module\\\"],function(){function Empty(){}function doesDefinePropertyWork(object){try{return Object.defineProperty(object,\\\"sentinel\\\",{}),\\\"sentinel\\\"in object}catch(exception){}}function toInteger(n){return n=+n,n!==n?n=0:0!==n&&n!==1/0&&n!==-(1/0)&&(n=(n>0||-1)*Math.floor(Math.abs(n))),n}Function.prototype.bind||(Function.prototype.bind=function(that){var target=this;if(\\\"function\\\"!=typeof target)throw new TypeError(\\\"Function.prototype.bind called on incompatible \\\"+target);var args=slice.call(arguments,1),bound=function(){if(this instanceof bound){var result=target.apply(this,args.concat(slice.call(arguments)));return Object(result)===result?result:this}return target.apply(that,args.concat(slice.call(arguments)))};return target.prototype&&(Empty.prototype=target.prototype,bound.prototype=new Empty,Empty.prototype=null),bound});var defineGetter,defineSetter,lookupGetter,lookupSetter,supportsAccessors,call=Function.prototype.call,prototypeOfArray=Array.prototype,prototypeOfObject=Object.prototype,slice=prototypeOfArray.slice,_toString=call.bind(prototypeOfObject.toString),owns=call.bind(prototypeOfObject.hasOwnProperty);if((supportsAccessors=owns(prototypeOfObject,\\\"__defineGetter__\\\"))&&(defineGetter=call.bind(prototypeOfObject.__defineGetter__),defineSetter=call.bind(prototypeOfObject.__defineSetter__),lookupGetter=call.bind(prototypeOfObject.__lookupGetter__),lookupSetter=call.bind(prototypeOfObject.__lookupSetter__)),2!=[1,2].splice(0).length)if(function(){function makeArray(l){var a=Array(l+2);return a[0]=a[1]=0,a}var lengthBefore,array=[];return array.splice.apply(array,makeArray(20)),array.splice.apply(array,makeArray(26)),lengthBefore=array.length,array.splice(5,0,\\\"XXX\\\"),lengthBefore+1==array.length,lengthBefore+1==array.length?!0:void 0\\n}()){var array_splice=Array.prototype.splice;Array.prototype.splice=function(start,deleteCount){return arguments.length?array_splice.apply(this,[void 0===start?0:start,void 0===deleteCount?this.length-start:deleteCount].concat(slice.call(arguments,2))):[]}}else Array.prototype.splice=function(pos,removeCount){var length=this.length;pos>0?pos>length&&(pos=length):void 0==pos?pos=0:0>pos&&(pos=Math.max(length+pos,0)),length>pos+removeCount||(removeCount=length-pos);var removed=this.slice(pos,pos+removeCount),insert=slice.call(arguments,2),add=insert.length;if(pos===length)add&&this.push.apply(this,insert);else{var remove=Math.min(removeCount,length-pos),tailOldPos=pos+remove,tailNewPos=tailOldPos+add-remove,tailCount=length-tailOldPos,lengthAfterRemove=length-remove;if(tailOldPos>tailNewPos)for(var i=0;tailCount>i;++i)this[tailNewPos+i]=this[tailOldPos+i];else if(tailNewPos>tailOldPos)for(i=tailCount;i--;)this[tailNewPos+i]=this[tailOldPos+i];if(add&&pos===lengthAfterRemove)this.length=lengthAfterRemove,this.push.apply(this,insert);else for(this.length=lengthAfterRemove+add,i=0;add>i;++i)this[pos+i]=insert[i]}return removed};Array.isArray||(Array.isArray=function(obj){return\\\"[object Array]\\\"==_toString(obj)});var boxedString=Object(\\\"a\\\"),splitString=\\\"a\\\"!=boxedString[0]||!(0 in boxedString);if(Array.prototype.forEach||(Array.prototype.forEach=function(fun){var object=toObject(this),self=splitString&&\\\"[object String]\\\"==_toString(this)?this.split(\\\"\\\"):object,thisp=arguments[1],i=-1,length=self.length>>>0;if(\\\"[object Function]\\\"!=_toString(fun))throw new TypeError;for(;length>++i;)i in self&&fun.call(thisp,self[i],i,object)}),Array.prototype.map||(Array.prototype.map=function(fun){var object=toObject(this),self=splitString&&\\\"[object String]\\\"==_toString(this)?this.split(\\\"\\\"):object,length=self.length>>>0,result=Array(length),thisp=arguments[1];if(\\\"[object Function]\\\"!=_toString(fun))throw new TypeError(fun+\\\" is not a function\\\");for(var i=0;length>i;i++)i in self&&(result[i]=fun.call(thisp,self[i],i,object));return result}),Array.prototype.filter||(Array.prototype.filter=function(fun){var value,object=toObject(this),self=splitString&&\\\"[object String]\\\"==_toString(this)?this.split(\\\"\\\"):object,length=self.length>>>0,result=[],thisp=arguments[1];if(\\\"[object Function]\\\"!=_toString(fun))throw new TypeError(fun+\\\" is not a function\\\");for(var i=0;length>i;i++)i in self&&(value=self[i],fun.call(thisp,value,i,object)&&result.push(value));return result}),Array.prototype.every||(Array.prototype.every=function(fun){var object=toObject(this),self=splitString&&\\\"[object String]\\\"==_toString(this)?this.split(\\\"\\\"):object,length=self.length>>>0,thisp=arguments[1];if(\\\"[object Function]\\\"!=_toString(fun))throw new TypeError(fun+\\\" is not a function\\\");for(var i=0;length>i;i++)if(i in self&&!fun.call(thisp,self[i],i,object))return!1;return!0}),Array.prototype.some||(Array.prototype.some=function(fun){var object=toObject(this),self=splitString&&\\\"[object String]\\\"==_toString(this)?this.split(\\\"\\\"):object,length=self.length>>>0,thisp=arguments[1];if(\\\"[object Function]\\\"!=_toString(fun))throw new TypeError(fun+\\\" is not a function\\\");for(var i=0;length>i;i++)if(i in self&&fun.call(thisp,self[i],i,object))return!0;return!1}),Array.prototype.reduce||(Array.prototype.reduce=function(fun){var object=toObject(this),self=splitString&&\\\"[object String]\\\"==_toString(this)?this.split(\\\"\\\"):object,length=self.length>>>0;if(\\\"[object Function]\\\"!=_toString(fun))throw new TypeError(fun+\\\" is not a function\\\");if(!length&&1==arguments.length)throw new TypeError(\\\"reduce of empty array with no initial value\\\");var result,i=0;if(arguments.length>=2)result=arguments[1];else for(;;){if(i in self){result=self[i++];break}if(++i>=length)throw new TypeError(\\\"reduce of empty array with no initial value\\\")}for(;length>i;i++)i in self&&(result=fun.call(void 0,result,self[i],i,object));return result}),Array.prototype.reduceRight||(Array.prototype.reduceRight=function(fun){var object=toObject(this),self=splitString&&\\\"[object String]\\\"==_toString(this)?this.split(\\\"\\\"):object,length=self.length>>>0;if(\\\"[object Function]\\\"!=_toString(fun))throw new TypeError(fun+\\\" is not a function\\\");if(!length&&1==arguments.length)throw new TypeError(\\\"reduceRight of empty array with no initial value\\\");var result,i=length-1;if(arguments.length>=2)result=arguments[1];else for(;;){if(i in self){result=self[i--];break}if(0>--i)throw new TypeError(\\\"reduceRight of empty array with no initial value\\\")}do i in this&&(result=fun.call(void 0,result,self[i],i,object));while(i--);return result}),Array.prototype.indexOf&&-1==[0,1].indexOf(1,2)||(Array.prototype.indexOf=function(sought){var self=splitString&&\\\"[object String]\\\"==_toString(this)?this.split(\\\"\\\"):toObject(this),length=self.length>>>0;if(!length)return-1;var i=0;for(arguments.length>1&&(i=toInteger(arguments[1])),i=i>=0?i:Math.max(0,length+i);length>i;i++)if(i in self&&self[i]===sought)return i;return-1}),Array.prototype.lastIndexOf&&-1==[0,1].lastIndexOf(0,-3)||(Array.prototype.lastIndexOf=function(sought){var self=splitString&&\\\"[object String]\\\"==_toString(this)?this.split(\\\"\\\"):toObject(this),length=self.length>>>0;if(!length)return-1;var i=length-1;for(arguments.length>1&&(i=Math.min(i,toInteger(arguments[1]))),i=i>=0?i:length-Math.abs(i);i>=0;i--)if(i in self&&sought===self[i])return i;return-1}),Object.getPrototypeOf||(Object.getPrototypeOf=function(object){return object.__proto__||(object.constructor?object.constructor.prototype:prototypeOfObject)}),!Object.getOwnPropertyDescriptor){var ERR_NON_OBJECT=\\\"Object.getOwnPropertyDescriptor called on a non-object: \\\";Object.getOwnPropertyDescriptor=function(object,property){if(\\\"object\\\"!=typeof object&&\\\"function\\\"!=typeof object||null===object)throw new TypeError(ERR_NON_OBJECT+object);if(owns(object,property)){var descriptor,getter,setter;if(descriptor={enumerable:!0,configurable:!0},supportsAccessors){var prototype=object.__proto__;object.__proto__=prototypeOfObject;var getter=lookupGetter(object,property),setter=lookupSetter(object,property);if(object.__proto__=prototype,getter||setter)return getter&&(descriptor.get=getter),setter&&(descriptor.set=setter),descriptor}return descriptor.value=object[property],descriptor}}}if(Object.getOwnPropertyNames||(Object.getOwnPropertyNames=function(object){return Object.keys(object)}),!Object.create){var createEmpty;createEmpty=null===Object.prototype.__proto__?function(){return{__proto__:null}}:function(){var empty={};for(var i in empty)empty[i]=null;return empty.constructor=empty.hasOwnProperty=empty.propertyIsEnumerable=empty.isPrototypeOf=empty.toLocaleString=empty.toString=empty.valueOf=empty.__proto__=null,empty},Object.create=function(prototype,properties){var object;if(null===prototype)object=createEmpty();else{if(\\\"object\\\"!=typeof prototype)throw new TypeError(\\\"typeof prototype[\\\"+typeof prototype+\\\"] != 'object'\\\");var Type=function(){};Type.prototype=prototype,object=new Type,object.__proto__=prototype}return void 0!==properties&&Object.defineProperties(object,properties),object}}if(Object.defineProperty){var definePropertyWorksOnObject=doesDefinePropertyWork({}),definePropertyWorksOnDom=\\\"undefined\\\"==typeof document||doesDefinePropertyWork(document.createElement(\\\"div\\\"));if(!definePropertyWorksOnObject||!definePropertyWorksOnDom)var definePropertyFallback=Object.defineProperty}if(!Object.defineProperty||definePropertyFallback){var ERR_NON_OBJECT_DESCRIPTOR=\\\"Property description must be an object: \\\",ERR_NON_OBJECT_TARGET=\\\"Object.defineProperty called on non-object: \\\",ERR_ACCESSORS_NOT_SUPPORTED=\\\"getters & setters can not be defined on this javascript engine\\\";Object.defineProperty=function(object,property,descriptor){if(\\\"object\\\"!=typeof object&&\\\"function\\\"!=typeof object||null===object)throw new TypeError(ERR_NON_OBJECT_TARGET+object);if(\\\"object\\\"!=typeof descriptor&&\\\"function\\\"!=typeof descriptor||null===descriptor)throw new TypeError(ERR_NON_OBJECT_DESCRIPTOR+descriptor);if(definePropertyFallback)try{return definePropertyFallback.call(Object,object,property,descriptor)}catch(exception){}if(owns(descriptor,\\\"value\\\"))if(supportsAccessors&&(lookupGetter(object,property)||lookupSetter(object,property))){var prototype=object.__proto__;object.__proto__=prototypeOfObject,delete object[property],object[property]=descriptor.value,object.__proto__=prototype}else object[property]=descriptor.value;else{if(!supportsAccessors)throw new TypeError(ERR_ACCESSORS_NOT_SUPPORTED);owns(descriptor,\\\"get\\\")&&defineGetter(object,property,descriptor.get),owns(descriptor,\\\"set\\\")&&defineSetter(object,property,descriptor.set)}return object}}Object.defineProperties||(Object.defineProperties=function(object,properties){for(var property in properties)owns(properties,property)&&Object.defineProperty(object,property,properties[property]);return object}),Object.seal||(Object.seal=function(object){return object}),Object.freeze||(Object.freeze=function(object){return object});try{Object.freeze(function(){})}catch(exception){Object.freeze=function(freezeObject){return function(object){return\\\"function\\\"==typeof object?object:freezeObject(object)}}(Object.freeze)}if(Object.preventExtensions||(Object.preventExtensions=function(object){return object}),Object.isSealed||(Object.isSealed=function(){return!1}),Object.isFrozen||(Object.isFrozen=function(){return!1}),Object.isExtensible||(Object.isExtensible=function(object){if(Object(object)===object)throw new TypeError;for(var name=\\\"\\\";owns(object,name);)name+=\\\"?\\\";object[name]=!0;var returnValue=owns(object,name);return delete object[name],returnValue}),!Object.keys){var hasDontEnumBug=!0,dontEnums=[\\\"toString\\\",\\\"toLocaleString\\\",\\\"valueOf\\\",\\\"hasOwnProperty\\\",\\\"isPrototypeOf\\\",\\\"propertyIsEnumerable\\\",\\\"constructor\\\"],dontEnumsLength=dontEnums.length;for(var key in{toString:null})hasDontEnumBug=!1;Object.keys=function(object){if(\\\"object\\\"!=typeof object&&\\\"function\\\"!=typeof object||null===object)throw new TypeError(\\\"Object.keys called on a non-object\\\");var keys=[];for(var name in object)owns(object,name)&&keys.push(name);if(hasDontEnumBug)for(var i=0,ii=dontEnumsLength;ii>i;i++){var dontEnum=dontEnums[i];owns(object,dontEnum)&&keys.push(dontEnum)}return keys}}Date.now||(Date.now=function(){return(new Date).getTime()});var ws=\\\"\\t\\\\n\\u000b\\\\f\\\\r   ᠎              \\\\u2028\\\\u2029\\\";if(!String.prototype.trim||ws.trim()){ws=\\\"[\\\"+ws+\\\"]\\\";var trimBeginRegexp=RegExp(\\\"^\\\"+ws+ws+\\\"*\\\"),trimEndRegexp=RegExp(ws+ws+\\\"*$\\\");String.prototype.trim=function(){return(this+\\\"\\\").replace(trimBeginRegexp,\\\"\\\").replace(trimEndRegexp,\\\"\\\")}}var toObject=function(o){if(null==o)throw new TypeError(\\\"can't convert \\\"+o+\\\" to object\\\");return Object(o)}});\";\r\n\r\n/***/ },\r\n/* 69 */\r\n/***/ function(module, exports) {\r\n\r\n\tace.define(\"ace/ext/searchbox\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\",\"ace/lib/lang\",\"ace/lib/event\",\"ace/keyboard/hash_handler\",\"ace/lib/keys\"], function(acequire, exports, module) {\r\n\t\"use strict\";\r\n\r\n\tvar dom = acequire(\"../lib/dom\");\r\n\tvar lang = acequire(\"../lib/lang\");\r\n\tvar event = acequire(\"../lib/event\");\r\n\tvar searchboxCss = \"\\\r\n\t.ace_search {\\\r\n\tbackground-color: #ddd;\\\r\n\tborder: 1px solid #cbcbcb;\\\r\n\tborder-top: 0 none;\\\r\n\tmax-width: 325px;\\\r\n\toverflow: hidden;\\\r\n\tmargin: 0;\\\r\n\tpadding: 4px;\\\r\n\tpadding-right: 6px;\\\r\n\tpadding-bottom: 0;\\\r\n\tposition: absolute;\\\r\n\ttop: 0px;\\\r\n\tz-index: 99;\\\r\n\twhite-space: normal;\\\r\n\t}\\\r\n\t.ace_search.left {\\\r\n\tborder-left: 0 none;\\\r\n\tborder-radius: 0px 0px 5px 0px;\\\r\n\tleft: 0;\\\r\n\t}\\\r\n\t.ace_search.right {\\\r\n\tborder-radius: 0px 0px 0px 5px;\\\r\n\tborder-right: 0 none;\\\r\n\tright: 0;\\\r\n\t}\\\r\n\t.ace_search_form, .ace_replace_form {\\\r\n\tborder-radius: 3px;\\\r\n\tborder: 1px solid #cbcbcb;\\\r\n\tfloat: left;\\\r\n\tmargin-bottom: 4px;\\\r\n\toverflow: hidden;\\\r\n\t}\\\r\n\t.ace_search_form.ace_nomatch {\\\r\n\toutline: 1px solid red;\\\r\n\t}\\\r\n\t.ace_search_field {\\\r\n\tbackground-color: white;\\\r\n\tborder-right: 1px solid #cbcbcb;\\\r\n\tborder: 0 none;\\\r\n\t-webkit-box-sizing: border-box;\\\r\n\t-moz-box-sizing: border-box;\\\r\n\tbox-sizing: border-box;\\\r\n\tfloat: left;\\\r\n\theight: 22px;\\\r\n\toutline: 0;\\\r\n\tpadding: 0 7px;\\\r\n\twidth: 214px;\\\r\n\tmargin: 0;\\\r\n\t}\\\r\n\t.ace_searchbtn,\\\r\n\t.ace_replacebtn {\\\r\n\tbackground: #fff;\\\r\n\tborder: 0 none;\\\r\n\tborder-left: 1px solid #dcdcdc;\\\r\n\tcursor: pointer;\\\r\n\tfloat: left;\\\r\n\theight: 22px;\\\r\n\tmargin: 0;\\\r\n\tposition: relative;\\\r\n\t}\\\r\n\t.ace_searchbtn:last-child,\\\r\n\t.ace_replacebtn:last-child {\\\r\n\tborder-top-right-radius: 3px;\\\r\n\tborder-bottom-right-radius: 3px;\\\r\n\t}\\\r\n\t.ace_searchbtn:disabled {\\\r\n\tbackground: none;\\\r\n\tcursor: default;\\\r\n\t}\\\r\n\t.ace_searchbtn {\\\r\n\tbackground-position: 50% 50%;\\\r\n\tbackground-repeat: no-repeat;\\\r\n\twidth: 27px;\\\r\n\t}\\\r\n\t.ace_searchbtn.prev {\\\r\n\tbackground-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAFCAYAAAB4ka1VAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADFJREFUeNpiSU1NZUAC/6E0I0yACYskCpsJiySKIiY0SUZk40FyTEgCjGgKwTRAgAEAQJUIPCE+qfkAAAAASUVORK5CYII=); \\\r\n\t}\\\r\n\t.ace_searchbtn.next {\\\r\n\tbackground-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAFCAYAAAB4ka1VAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADRJREFUeNpiTE1NZQCC/0DMyIAKwGJMUAYDEo3M/s+EpvM/mkKwCQxYjIeLMaELoLMBAgwAU7UJObTKsvAAAAAASUVORK5CYII=); \\\r\n\t}\\\r\n\t.ace_searchbtn_close {\\\r\n\tbackground: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAcCAYAAABRVo5BAAAAZ0lEQVR42u2SUQrAMAhDvazn8OjZBilCkYVVxiis8H4CT0VrAJb4WHT3C5xU2a2IQZXJjiQIRMdkEoJ5Q2yMqpfDIo+XY4k6h+YXOyKqTIj5REaxloNAd0xiKmAtsTHqW8sR2W5f7gCu5nWFUpVjZwAAAABJRU5ErkJggg==) no-repeat 50% 0;\\\r\n\tborder-radius: 50%;\\\r\n\tborder: 0 none;\\\r\n\tcolor: #656565;\\\r\n\tcursor: pointer;\\\r\n\tfloat: right;\\\r\n\tfont: 16px/16px Arial;\\\r\n\theight: 14px;\\\r\n\tmargin: 5px 1px 9px 5px;\\\r\n\tpadding: 0;\\\r\n\ttext-align: center;\\\r\n\twidth: 14px;\\\r\n\t}\\\r\n\t.ace_searchbtn_close:hover {\\\r\n\tbackground-color: #656565;\\\r\n\tbackground-position: 50% 100%;\\\r\n\tcolor: white;\\\r\n\t}\\\r\n\t.ace_replacebtn.prev {\\\r\n\twidth: 54px\\\r\n\t}\\\r\n\t.ace_replacebtn.next {\\\r\n\twidth: 27px\\\r\n\t}\\\r\n\t.ace_button {\\\r\n\tmargin-left: 2px;\\\r\n\tcursor: pointer;\\\r\n\t-webkit-user-select: none;\\\r\n\t-moz-user-select: none;\\\r\n\t-o-user-select: none;\\\r\n\t-ms-user-select: none;\\\r\n\tuser-select: none;\\\r\n\toverflow: hidden;\\\r\n\topacity: 0.7;\\\r\n\tborder: 1px solid rgba(100,100,100,0.23);\\\r\n\tpadding: 1px;\\\r\n\t-moz-box-sizing: border-box;\\\r\n\tbox-sizing: border-box;\\\r\n\tcolor: black;\\\r\n\t}\\\r\n\t.ace_button:hover {\\\r\n\tbackground-color: #eee;\\\r\n\topacity:1;\\\r\n\t}\\\r\n\t.ace_button:active {\\\r\n\tbackground-color: #ddd;\\\r\n\t}\\\r\n\t.ace_button.checked {\\\r\n\tborder-color: #3399ff;\\\r\n\topacity:1;\\\r\n\t}\\\r\n\t.ace_search_options{\\\r\n\tmargin-bottom: 3px;\\\r\n\ttext-align: right;\\\r\n\t-webkit-user-select: none;\\\r\n\t-moz-user-select: none;\\\r\n\t-o-user-select: none;\\\r\n\t-ms-user-select: none;\\\r\n\tuser-select: none;\\\r\n\t}\";\r\n\tvar HashHandler = acequire(\"../keyboard/hash_handler\").HashHandler;\r\n\tvar keyUtil = acequire(\"../lib/keys\");\r\n\r\n\tdom.importCssString(searchboxCss, \"ace_searchbox\");\r\n\r\n\tvar html = ''.replace(/>\\s+/g, \">\");\r\n\r\n\tvar SearchBox = function(editor, range, showReplaceForm) {\r\n\t var div = dom.createElement(\"div\");\r\n\t div.innerHTML = html;\r\n\t this.element = div.firstChild;\r\n\r\n\t this.$init();\r\n\t this.setEditor(editor);\r\n\t};\r\n\r\n\t(function() {\r\n\t this.setEditor = function(editor) {\r\n\t editor.searchBox = this;\r\n\t editor.container.appendChild(this.element);\r\n\t this.editor = editor;\r\n\t };\r\n\r\n\t this.$initElements = function(sb) {\r\n\t this.searchBox = sb.querySelector(\".ace_search_form\");\r\n\t this.replaceBox = sb.querySelector(\".ace_replace_form\");\r\n\t this.searchOptions = sb.querySelector(\".ace_search_options\");\r\n\t this.regExpOption = sb.querySelector(\"[action=toggleRegexpMode]\");\r\n\t this.caseSensitiveOption = sb.querySelector(\"[action=toggleCaseSensitive]\");\r\n\t this.wholeWordOption = sb.querySelector(\"[action=toggleWholeWords]\");\r\n\t this.searchInput = this.searchBox.querySelector(\".ace_search_field\");\r\n\t this.replaceInput = this.replaceBox.querySelector(\".ace_search_field\");\r\n\t };\r\n\t \r\n\t this.$init = function() {\r\n\t var sb = this.element;\r\n\t \r\n\t this.$initElements(sb);\r\n\t \r\n\t var _this = this;\r\n\t event.addListener(sb, \"mousedown\", function(e) {\r\n\t setTimeout(function(){\r\n\t _this.activeInput.focus();\r\n\t }, 0);\r\n\t event.stopPropagation(e);\r\n\t });\r\n\t event.addListener(sb, \"click\", function(e) {\r\n\t var t = e.target || e.srcElement;\r\n\t var action = t.getAttribute(\"action\");\r\n\t if (action && _this[action])\r\n\t _this[action]();\r\n\t else if (_this.$searchBarKb.commands[action])\r\n\t _this.$searchBarKb.commands[action].exec(_this);\r\n\t event.stopPropagation(e);\r\n\t });\r\n\r\n\t event.addCommandKeyListener(sb, function(e, hashId, keyCode) {\r\n\t var keyString = keyUtil.keyCodeToString(keyCode);\r\n\t var command = _this.$searchBarKb.findKeyCommand(hashId, keyString);\r\n\t if (command && command.exec) {\r\n\t command.exec(_this);\r\n\t event.stopEvent(e);\r\n\t }\r\n\t });\r\n\r\n\t this.$onChange = lang.delayedCall(function() {\r\n\t _this.find(false, false);\r\n\t });\r\n\r\n\t event.addListener(this.searchInput, \"input\", function() {\r\n\t _this.$onChange.schedule(20);\r\n\t });\r\n\t event.addListener(this.searchInput, \"focus\", function() {\r\n\t _this.activeInput = _this.searchInput;\r\n\t _this.searchInput.value && _this.highlight();\r\n\t });\r\n\t event.addListener(this.replaceInput, \"focus\", function() {\r\n\t _this.activeInput = _this.replaceInput;\r\n\t _this.searchInput.value && _this.highlight();\r\n\t });\r\n\t };\r\n\t this.$closeSearchBarKb = new HashHandler([{\r\n\t bindKey: \"Esc\",\r\n\t name: \"closeSearchBar\",\r\n\t exec: function(editor) {\r\n\t editor.searchBox.hide();\r\n\t }\r\n\t }]);\r\n\t this.$searchBarKb = new HashHandler();\r\n\t this.$searchBarKb.bindKeys({\r\n\t \"Ctrl-f|Command-f\": function(sb) {\r\n\t var isReplace = sb.isReplace = !sb.isReplace;\r\n\t sb.replaceBox.style.display = isReplace ? \"\" : \"none\";\r\n\t sb.searchInput.focus();\r\n\t },\r\n\t \"Ctrl-H|Command-Option-F\": function(sb) {\r\n\t sb.replaceBox.style.display = \"\";\r\n\t sb.replaceInput.focus();\r\n\t },\r\n\t \"Ctrl-G|Command-G\": function(sb) {\r\n\t sb.findNext();\r\n\t },\r\n\t \"Ctrl-Shift-G|Command-Shift-G\": function(sb) {\r\n\t sb.findPrev();\r\n\t },\r\n\t \"esc\": function(sb) {\r\n\t setTimeout(function() { sb.hide();});\r\n\t },\r\n\t \"Return\": function(sb) {\r\n\t if (sb.activeInput == sb.replaceInput)\r\n\t sb.replace();\r\n\t sb.findNext();\r\n\t },\r\n\t \"Shift-Return\": function(sb) {\r\n\t if (sb.activeInput == sb.replaceInput)\r\n\t sb.replace();\r\n\t sb.findPrev();\r\n\t },\r\n\t \"Alt-Return\": function(sb) {\r\n\t if (sb.activeInput == sb.replaceInput)\r\n\t sb.replaceAll();\r\n\t sb.findAll();\r\n\t },\r\n\t \"Tab\": function(sb) {\r\n\t (sb.activeInput == sb.replaceInput ? sb.searchInput : sb.replaceInput).focus();\r\n\t }\r\n\t });\r\n\r\n\t this.$searchBarKb.addCommands([{\r\n\t name: \"toggleRegexpMode\",\r\n\t bindKey: {win: \"Alt-R|Alt-/\", mac: \"Ctrl-Alt-R|Ctrl-Alt-/\"},\r\n\t exec: function(sb) {\r\n\t sb.regExpOption.checked = !sb.regExpOption.checked;\r\n\t sb.$syncOptions();\r\n\t }\r\n\t }, {\r\n\t name: \"toggleCaseSensitive\",\r\n\t bindKey: {win: \"Alt-C|Alt-I\", mac: \"Ctrl-Alt-R|Ctrl-Alt-I\"},\r\n\t exec: function(sb) {\r\n\t sb.caseSensitiveOption.checked = !sb.caseSensitiveOption.checked;\r\n\t sb.$syncOptions();\r\n\t }\r\n\t }, {\r\n\t name: \"toggleWholeWords\",\r\n\t bindKey: {win: \"Alt-B|Alt-W\", mac: \"Ctrl-Alt-B|Ctrl-Alt-W\"},\r\n\t exec: function(sb) {\r\n\t sb.wholeWordOption.checked = !sb.wholeWordOption.checked;\r\n\t sb.$syncOptions();\r\n\t }\r\n\t }]);\r\n\r\n\t this.$syncOptions = function() {\r\n\t dom.setCssClass(this.regExpOption, \"checked\", this.regExpOption.checked);\r\n\t dom.setCssClass(this.wholeWordOption, \"checked\", this.wholeWordOption.checked);\r\n\t dom.setCssClass(this.caseSensitiveOption, \"checked\", this.caseSensitiveOption.checked);\r\n\t this.find(false, false);\r\n\t };\r\n\r\n\t this.highlight = function(re) {\r\n\t this.editor.session.highlight(re || this.editor.$search.$options.re);\r\n\t this.editor.renderer.updateBackMarkers()\r\n\t };\r\n\t this.find = function(skipCurrent, backwards, preventScroll) {\r\n\t var range = this.editor.find(this.searchInput.value, {\r\n\t skipCurrent: skipCurrent,\r\n\t backwards: backwards,\r\n\t wrap: true,\r\n\t regExp: this.regExpOption.checked,\r\n\t caseSensitive: this.caseSensitiveOption.checked,\r\n\t wholeWord: this.wholeWordOption.checked,\r\n\t preventScroll: preventScroll\r\n\t });\r\n\t var noMatch = !range && this.searchInput.value;\r\n\t dom.setCssClass(this.searchBox, \"ace_nomatch\", noMatch);\r\n\t this.editor._emit(\"findSearchBox\", { match: !noMatch });\r\n\t this.highlight();\r\n\t };\r\n\t this.findNext = function() {\r\n\t this.find(true, false);\r\n\t };\r\n\t this.findPrev = function() {\r\n\t this.find(true, true);\r\n\t };\r\n\t this.findAll = function(){\r\n\t var range = this.editor.findAll(this.searchInput.value, { \r\n\t regExp: this.regExpOption.checked,\r\n\t caseSensitive: this.caseSensitiveOption.checked,\r\n\t wholeWord: this.wholeWordOption.checked\r\n\t });\r\n\t var noMatch = !range && this.searchInput.value;\r\n\t dom.setCssClass(this.searchBox, \"ace_nomatch\", noMatch);\r\n\t this.editor._emit(\"findSearchBox\", { match: !noMatch });\r\n\t this.highlight();\r\n\t this.hide();\r\n\t };\r\n\t this.replace = function() {\r\n\t if (!this.editor.getReadOnly())\r\n\t this.editor.replace(this.replaceInput.value);\r\n\t }; \r\n\t this.replaceAndFindNext = function() {\r\n\t if (!this.editor.getReadOnly()) {\r\n\t this.editor.replace(this.replaceInput.value);\r\n\t this.findNext()\r\n\t }\r\n\t };\r\n\t this.replaceAll = function() {\r\n\t if (!this.editor.getReadOnly())\r\n\t this.editor.replaceAll(this.replaceInput.value);\r\n\t };\r\n\r\n\t this.hide = function() {\r\n\t this.element.style.display = \"none\";\r\n\t this.editor.keyBinding.removeKeyboardHandler(this.$closeSearchBarKb);\r\n\t this.editor.focus();\r\n\t };\r\n\t this.show = function(value, isReplace) {\r\n\t this.element.style.display = \"\";\r\n\t this.replaceBox.style.display = isReplace ? \"\" : \"none\";\r\n\r\n\t this.isReplace = isReplace;\r\n\r\n\t if (value)\r\n\t this.searchInput.value = value;\r\n\t \r\n\t this.find(false, false, true);\r\n\t \r\n\t this.searchInput.focus();\r\n\t this.searchInput.select();\r\n\r\n\t this.editor.keyBinding.addKeyboardHandler(this.$closeSearchBarKb);\r\n\t };\r\n\r\n\t this.isFocused = function() {\r\n\t var el = document.activeElement;\r\n\t return el == this.searchInput || el == this.replaceInput;\r\n\t }\r\n\t}).call(SearchBox.prototype);\r\n\r\n\texports.SearchBox = SearchBox;\r\n\r\n\texports.Search = function(editor, isReplace) {\r\n\t var sb = editor.searchBox || new SearchBox(editor);\r\n\t sb.show(editor.session.getTextRange(), isReplace);\r\n\t};\r\n\r\n\t});\r\n\t (function() {\r\n\t ace.acequire([\"ace/ext/searchbox\"], function() {});\r\n\t })();\r\n\t \r\n\r\n/***/ },\r\n/* 70 */\r\n/***/ function(module, exports) {\r\n\r\n\t/* ***** BEGIN LICENSE BLOCK *****\r\n\t * Distributed under the BSD license:\r\n\t *\r\n\t * Copyright (c) 2010, Ajax.org B.V.\r\n\t * All rights reserved.\r\n\t * \r\n\t * Redistribution and use in source and binary forms, with or without\r\n\t * modification, are permitted provided that the following conditions are met:\r\n\t * * Redistributions of source code must retain the above copyright\r\n\t * notice, this list of conditions and the following disclaimer.\r\n\t * * Redistributions in binary form must reproduce the above copyright\r\n\t * notice, this list of conditions and the following disclaimer in the\r\n\t * documentation and/or other materials provided with the distribution.\r\n\t * * Neither the name of Ajax.org B.V. nor the\r\n\t * names of its contributors may be used to endorse or promote products\r\n\t * derived from this software without specific prior written permission.\r\n\t * \r\n\t * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\r\n\t * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\r\n\t * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\r\n\t * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY\r\n\t * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\r\n\t * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\r\n\t * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\r\n\t * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\r\n\t * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\r\n\t * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\r\n\t *\r\n\t * ***** END LICENSE BLOCK ***** */\r\n\r\n\tace.define('ace/theme/jsoneditor', ['require', 'exports', 'module', 'ace/lib/dom'], function(acequire, exports, module) {\r\n\r\n\texports.isDark = false;\r\n\texports.cssClass = \"ace-jsoneditor\";\r\n\texports.cssText = \".ace-jsoneditor .ace_gutter {\\\r\n\tbackground: #ebebeb;\\\r\n\tcolor: #333\\\r\n\t}\\\r\n\t\\\r\n\t.ace-jsoneditor.ace_editor {\\\r\n\tfont-family: droid sans mono, consolas, monospace, courier new, courier, sans-serif;\\\r\n\tline-height: 1.3;\\\r\n\t}\\\r\n\t.ace-jsoneditor .ace_print-margin {\\\r\n\twidth: 1px;\\\r\n\tbackground: #e8e8e8\\\r\n\t}\\\r\n\t.ace-jsoneditor .ace_scroller {\\\r\n\tbackground-color: #FFFFFF\\\r\n\t}\\\r\n\t.ace-jsoneditor .ace_text-layer {\\\r\n\tcolor: gray\\\r\n\t}\\\r\n\t.ace-jsoneditor .ace_variable {\\\r\n\tcolor: #1a1a1a\\\r\n\t}\\\r\n\t.ace-jsoneditor .ace_cursor {\\\r\n\tborder-left: 2px solid #000000\\\r\n\t}\\\r\n\t.ace-jsoneditor .ace_overwrite-cursors .ace_cursor {\\\r\n\tborder-left: 0px;\\\r\n\tborder-bottom: 1px solid #000000\\\r\n\t}\\\r\n\t.ace-jsoneditor .ace_marker-layer .ace_selection {\\\r\n\tbackground: lightgray\\\r\n\t}\\\r\n\t.ace-jsoneditor.ace_multiselect .ace_selection.ace_start {\\\r\n\tbox-shadow: 0 0 3px 0px #FFFFFF;\\\r\n\tborder-radius: 2px\\\r\n\t}\\\r\n\t.ace-jsoneditor .ace_marker-layer .ace_step {\\\r\n\tbackground: rgb(255, 255, 0)\\\r\n\t}\\\r\n\t.ace-jsoneditor .ace_marker-layer .ace_bracket {\\\r\n\tmargin: -1px 0 0 -1px;\\\r\n\tborder: 1px solid #BFBFBF\\\r\n\t}\\\r\n\t.ace-jsoneditor .ace_marker-layer .ace_active-line {\\\r\n\tbackground: #FFFBD1\\\r\n\t}\\\r\n\t.ace-jsoneditor .ace_gutter-active-line {\\\r\n\tbackground-color : #dcdcdc\\\r\n\t}\\\r\n\t.ace-jsoneditor .ace_marker-layer .ace_selected-word {\\\r\n\tborder: 1px solid lightgray\\\r\n\t}\\\r\n\t.ace-jsoneditor .ace_invisible {\\\r\n\tcolor: #BFBFBF\\\r\n\t}\\\r\n\t.ace-jsoneditor .ace_keyword,\\\r\n\t.ace-jsoneditor .ace_meta,\\\r\n\t.ace-jsoneditor .ace_support.ace_constant.ace_property-value {\\\r\n\tcolor: #AF956F\\\r\n\t}\\\r\n\t.ace-jsoneditor .ace_keyword.ace_operator {\\\r\n\tcolor: #484848\\\r\n\t}\\\r\n\t.ace-jsoneditor .ace_keyword.ace_other.ace_unit {\\\r\n\tcolor: #96DC5F\\\r\n\t}\\\r\n\t.ace-jsoneditor .ace_constant.ace_language {\\\r\n\tcolor: darkorange\\\r\n\t}\\\r\n\t.ace-jsoneditor .ace_constant.ace_numeric {\\\r\n\tcolor: red\\\r\n\t}\\\r\n\t.ace-jsoneditor .ace_constant.ace_character.ace_entity {\\\r\n\tcolor: #BF78CC\\\r\n\t}\\\r\n\t.ace-jsoneditor .ace_invalid {\\\r\n\tcolor: #FFFFFF;\\\r\n\tbackground-color: #FF002A;\\\r\n\t}\\\r\n\t.ace-jsoneditor .ace_fold {\\\r\n\tbackground-color: #AF956F;\\\r\n\tborder-color: #000000\\\r\n\t}\\\r\n\t.ace-jsoneditor .ace_storage,\\\r\n\t.ace-jsoneditor .ace_support.ace_class,\\\r\n\t.ace-jsoneditor .ace_support.ace_function,\\\r\n\t.ace-jsoneditor .ace_support.ace_other,\\\r\n\t.ace-jsoneditor .ace_support.ace_type {\\\r\n\tcolor: #C52727\\\r\n\t}\\\r\n\t.ace-jsoneditor .ace_string {\\\r\n\tcolor: green\\\r\n\t}\\\r\n\t.ace-jsoneditor .ace_comment {\\\r\n\tcolor: #BCC8BA\\\r\n\t}\\\r\n\t.ace-jsoneditor .ace_entity.ace_name.ace_tag,\\\r\n\t.ace-jsoneditor .ace_entity.ace_other.ace_attribute-name {\\\r\n\tcolor: #606060\\\r\n\t}\\\r\n\t.ace-jsoneditor .ace_markup.ace_underline {\\\r\n\ttext-decoration: underline\\\r\n\t}\\\r\n\t.ace-jsoneditor .ace_indent-guide {\\\r\n\tbackground: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==\\\") right repeat-y\\\r\n\t}\";\r\n\r\n\tvar dom = acequire(\"../lib/dom\");\r\n\tdom.importCssString(exports.cssText, exports.cssClass);\r\n\t});\r\n\r\n\r\n/***/ }\r\n/******/ ])\r\n});\r\n;","\"use strict\";\n// External Files\nconst vue = require('vue');\n// CSS\nrequire('./scss/main.scss');\n// Interfaces\nconst { IView } = require('../interfaces/view.ts');\n// Components\nconst mainContent = require('./components/mainContent.ts');\nconst topbar = require('./components/topbar.ts');\nconst bottomBar = require('./components/bottomBar.ts');\nconst pantry = new vue({\n el: '.app',\n components: {\n mainContent,\n topbar,\n bottomBar,\n },\n data() {\n return {\n view: IView.home,\n };\n },\n methods: {\n changeView(view) {\n this.view = IView[view];\n },\n checkIfInView() {\n if (window.location.search) {\n const _view = decodeURIComponent(window.location.search.match(/(\\?|&)show\\=([^&]*)/)[2]);\n if (IView[_view]) {\n this.view = IView[_view];\n }\n }\n },\n },\n created() {\n this.checkIfInView();\n },\n});\nmodule.exports = pantry;\n","/*!\n * Vue.js v2.6.14\n * (c) 2014-2021 Evan You\n * Released under the MIT License.\n */\n!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e=e||self).Vue=t()}(this,function(){\"use strict\";var e=Object.freeze({});function t(e){return null==e}function n(e){return null!=e}function r(e){return!0===e}function i(e){return\"string\"==typeof e||\"number\"==typeof e||\"symbol\"==typeof e||\"boolean\"==typeof e}function o(e){return null!==e&&\"object\"==typeof e}var a=Object.prototype.toString;function s(e){return\"[object Object]\"===a.call(e)}function c(e){var t=parseFloat(String(e));return t>=0&&Math.floor(t)===t&&isFinite(e)}function u(e){return n(e)&&\"function\"==typeof e.then&&\"function\"==typeof e.catch}function l(e){return null==e?\"\":Array.isArray(e)||s(e)&&e.toString===a?JSON.stringify(e,null,2):String(e)}function f(e){var t=parseFloat(e);return isNaN(t)?e:t}function p(e,t){for(var n=Object.create(null),r=e.split(\",\"),i=0;i-1)return e.splice(n,1)}}var m=Object.prototype.hasOwnProperty;function y(e,t){return m.call(e,t)}function g(e){var t=Object.create(null);return function(n){return t[n]||(t[n]=e(n))}}var _=/-(\\w)/g,b=g(function(e){return e.replace(_,function(e,t){return t?t.toUpperCase():\"\"})}),$=g(function(e){return e.charAt(0).toUpperCase()+e.slice(1)}),w=/\\B([A-Z])/g,C=g(function(e){return e.replace(w,\"-$1\").toLowerCase()});var x=Function.prototype.bind?function(e,t){return e.bind(t)}:function(e,t){function n(n){var r=arguments.length;return r?r>1?e.apply(t,arguments):e.call(t,n):e.call(t)}return n._length=e.length,n};function k(e,t){t=t||0;for(var n=e.length-t,r=new Array(n);n--;)r[n]=e[n+t];return r}function A(e,t){for(var n in t)e[n]=t[n];return e}function O(e){for(var t={},n=0;n0,Z=J&&J.indexOf(\"edge/\")>0,G=(J&&J.indexOf(\"android\"),J&&/iphone|ipad|ipod|ios/.test(J)||\"ios\"===K),X=(J&&/chrome\\/\\d+/.test(J),J&&/phantomjs/.test(J),J&&J.match(/firefox\\/(\\d+)/)),Y={}.watch,Q=!1;if(V)try{var ee={};Object.defineProperty(ee,\"passive\",{get:function(){Q=!0}}),window.addEventListener(\"test-passive\",null,ee)}catch(e){}var te=function(){return void 0===B&&(B=!V&&!z&&\"undefined\"!=typeof global&&(global.process&&\"server\"===global.process.env.VUE_ENV)),B},ne=V&&window.__VUE_DEVTOOLS_GLOBAL_HOOK__;function re(e){return\"function\"==typeof e&&/native code/.test(e.toString())}var ie,oe=\"undefined\"!=typeof Symbol&&re(Symbol)&&\"undefined\"!=typeof Reflect&&re(Reflect.ownKeys);ie=\"undefined\"!=typeof Set&&re(Set)?Set:function(){function e(){this.set=Object.create(null)}return e.prototype.has=function(e){return!0===this.set[e]},e.prototype.add=function(e){this.set[e]=!0},e.prototype.clear=function(){this.set=Object.create(null)},e}();var ae=S,se=0,ce=function(){this.id=se++,this.subs=[]};ce.prototype.addSub=function(e){this.subs.push(e)},ce.prototype.removeSub=function(e){h(this.subs,e)},ce.prototype.depend=function(){ce.target&&ce.target.addDep(this)},ce.prototype.notify=function(){for(var e=this.subs.slice(),t=0,n=e.length;t-1)if(o&&!y(i,\"default\"))a=!1;else if(\"\"===a||a===C(e)){var c=Re(String,i.type);(c<0||s0&&(ct((u=e(u,(a||\"\")+\"_\"+c))[0])&&ct(f)&&(s[l]=he(f.text+u[0].text),u.shift()),s.push.apply(s,u)):i(u)?ct(f)?s[l]=he(f.text+u):\"\"!==u&&s.push(he(u)):ct(u)&&ct(f)?s[l]=he(f.text+u.text):(r(o._isVList)&&n(u.tag)&&t(u.key)&&n(a)&&(u.key=\"__vlist\"+a+\"_\"+c+\"__\"),s.push(u)));return s}(e):void 0}function ct(e){return n(e)&&n(e.text)&&!1===e.isComment}function ut(e,t){if(e){for(var n=Object.create(null),r=oe?Reflect.ownKeys(e):Object.keys(e),i=0;i0,a=t?!!t.$stable:!o,s=t&&t.$key;if(t){if(t._normalized)return t._normalized;if(a&&r&&r!==e&&s===r.$key&&!o&&!r.$hasNormal)return r;for(var c in i={},t)t[c]&&\"$\"!==c[0]&&(i[c]=vt(n,c,t[c]))}else i={};for(var u in n)u in i||(i[u]=ht(n,u));return t&&Object.isExtensible(t)&&(t._normalized=i),R(i,\"$stable\",a),R(i,\"$key\",s),R(i,\"$hasNormal\",o),i}function vt(e,t,n){var r=function(){var e=arguments.length?n.apply(null,arguments):n({}),t=(e=e&&\"object\"==typeof e&&!Array.isArray(e)?[e]:st(e))&&e[0];return e&&(!t||1===e.length&&t.isComment&&!pt(t))?void 0:e};return n.proxy&&Object.defineProperty(e,t,{get:r,enumerable:!0,configurable:!0}),r}function ht(e,t){return function(){return e[t]}}function mt(e,t){var r,i,a,s,c;if(Array.isArray(e)||\"string\"==typeof e)for(r=new Array(e.length),i=0,a=e.length;idocument.createEvent(\"Event\").timeStamp&&(cn=function(){return un.now()})}function ln(){var e,t;for(sn=cn(),on=!0,en.sort(function(e,t){return e.id-t.id}),an=0;anan&&en[n].id>e.id;)n--;en.splice(n+1,0,e)}else en.push(e);rn||(rn=!0,Qe(ln))}}(this)},pn.prototype.run=function(){if(this.active){var e=this.get();if(e!==this.value||o(e)||this.deep){var t=this.value;if(this.value=e,this.user){var n='callback for watcher \"'+this.expression+'\"';Be(this.cb,this.vm,[e,t],this.vm,n)}else this.cb.call(this.vm,e,t)}}},pn.prototype.evaluate=function(){this.value=this.get(),this.dirty=!1},pn.prototype.depend=function(){for(var e=this.deps.length;e--;)this.deps[e].depend()},pn.prototype.teardown=function(){if(this.active){this.vm._isBeingDestroyed||h(this.vm._watchers,this);for(var e=this.deps.length;e--;)this.deps[e].removeSub(this);this.active=!1}};var dn={enumerable:!0,configurable:!0,get:S,set:S};function vn(e,t,n){dn.get=function(){return this[t][n]},dn.set=function(e){this[t][n]=e},Object.defineProperty(e,n,dn)}function hn(e){e._watchers=[];var t=e.$options;t.props&&function(e,t){var n=e.$options.propsData||{},r=e._props={},i=e.$options._propKeys=[];e.$parent&&$e(!1);var o=function(o){i.push(o);var a=Ie(o,t,n,e);xe(r,o,a),o in e||vn(e,\"_props\",o)};for(var a in t)o(a);$e(!0)}(e,t.props),t.methods&&function(e,t){e.$options.props;for(var n in t)e[n]=\"function\"!=typeof t[n]?S:x(t[n],e)}(e,t.methods),t.data?function(e){var t=e.$options.data;s(t=e._data=\"function\"==typeof t?function(e,t){le();try{return e.call(t,t)}catch(e){return He(e,t,\"data()\"),{}}finally{fe()}}(t,e):t||{})||(t={});var n=Object.keys(t),r=e.$options.props,i=(e.$options.methods,n.length);for(;i--;){var o=n[i];r&&y(r,o)||(a=void 0,36!==(a=(o+\"\").charCodeAt(0))&&95!==a&&vn(e,\"_data\",o))}var a;Ce(t,!0)}(e):Ce(e._data={},!0),t.computed&&function(e,t){var n=e._computedWatchers=Object.create(null),r=te();for(var i in t){var o=t[i],a=\"function\"==typeof o?o:o.get;r||(n[i]=new pn(e,a||S,S,mn)),i in e||yn(e,i,o)}}(e,t.computed),t.watch&&t.watch!==Y&&function(e,t){for(var n in t){var r=t[n];if(Array.isArray(r))for(var i=0;i-1:\"string\"==typeof e?e.split(\",\").indexOf(t)>-1:(n=e,\"[object RegExp]\"===a.call(n)&&e.test(t));var n}function On(e,t){var n=e.cache,r=e.keys,i=e._vnode;for(var o in n){var a=n[o];if(a){var s=a.name;s&&!t(s)&&Sn(n,o,r,i)}}}function Sn(e,t,n,r){var i=e[t];!i||r&&i.tag===r.tag||i.componentInstance.$destroy(),e[t]=null,h(n,t)}!function(t){t.prototype._init=function(t){var n=this;n._uid=$n++,n._isVue=!0,t&&t._isComponent?function(e,t){var n=e.$options=Object.create(e.constructor.options),r=t._parentVnode;n.parent=t.parent,n._parentVnode=r;var i=r.componentOptions;n.propsData=i.propsData,n._parentListeners=i.listeners,n._renderChildren=i.children,n._componentTag=i.tag,t.render&&(n.render=t.render,n.staticRenderFns=t.staticRenderFns)}(n,t):n.$options=De(wn(n.constructor),t||{},n),n._renderProxy=n,n._self=n,function(e){var t=e.$options,n=t.parent;if(n&&!t.abstract){for(;n.$options.abstract&&n.$parent;)n=n.$parent;n.$children.push(e)}e.$parent=n,e.$root=n?n.$root:e,e.$children=[],e.$refs={},e._watcher=null,e._inactive=null,e._directInactive=!1,e._isMounted=!1,e._isDestroyed=!1,e._isBeingDestroyed=!1}(n),function(e){e._events=Object.create(null),e._hasHookEvent=!1;var t=e.$options._parentListeners;t&&Wt(e,t)}(n),function(t){t._vnode=null,t._staticTrees=null;var n=t.$options,r=t.$vnode=n._parentVnode,i=r&&r.context;t.$slots=lt(n._renderChildren,i),t.$scopedSlots=e,t._c=function(e,n,r,i){return Ht(t,e,n,r,i,!1)},t.$createElement=function(e,n,r,i){return Ht(t,e,n,r,i,!0)};var o=r&&r.data;xe(t,\"$attrs\",o&&o.attrs||e,null,!0),xe(t,\"$listeners\",n._parentListeners||e,null,!0)}(n),Qt(n,\"beforeCreate\"),function(e){var t=ut(e.$options.inject,e);t&&($e(!1),Object.keys(t).forEach(function(n){xe(e,n,t[n])}),$e(!0))}(n),hn(n),function(e){var t=e.$options.provide;t&&(e._provided=\"function\"==typeof t?t.call(e):t)}(n),Qt(n,\"created\"),n.$options.el&&n.$mount(n.$options.el)}}(Cn),function(e){var t={get:function(){return this._data}},n={get:function(){return this._props}};Object.defineProperty(e.prototype,\"$data\",t),Object.defineProperty(e.prototype,\"$props\",n),e.prototype.$set=ke,e.prototype.$delete=Ae,e.prototype.$watch=function(e,t,n){if(s(t))return bn(this,e,t,n);(n=n||{}).user=!0;var r=new pn(this,e,t,n);if(n.immediate){var i='callback for immediate watcher \"'+r.expression+'\"';le(),Be(t,this,[r.value],this,i),fe()}return function(){r.teardown()}}}(Cn),function(e){var t=/^hook:/;e.prototype.$on=function(e,n){var r=this;if(Array.isArray(e))for(var i=0,o=e.length;i1?k(t):t;for(var n=k(arguments,1),r='event handler for \"'+e+'\"',i=0,o=t.length;iparseInt(this.max)&&Sn(e,t[0],t,this._vnode),this.vnodeToCache=null}}},created:function(){this.cache=Object.create(null),this.keys=[]},destroyed:function(){for(var e in this.cache)Sn(this.cache,e,this.keys)},mounted:function(){var e=this;this.cacheVNode(),this.$watch(\"include\",function(t){On(e,function(e){return An(t,e)})}),this.$watch(\"exclude\",function(t){On(e,function(e){return!An(t,e)})})},updated:function(){this.cacheVNode()},render:function(){var e=this.$slots.default,t=zt(e),n=t&&t.componentOptions;if(n){var r=kn(n),i=this.include,o=this.exclude;if(i&&(!r||!An(i,r))||o&&r&&An(o,r))return t;var a=this.cache,s=this.keys,c=null==t.key?n.Ctor.cid+(n.tag?\"::\"+n.tag:\"\"):t.key;a[c]?(t.componentInstance=a[c].componentInstance,h(s,c),s.push(c)):(this.vnodeToCache=t,this.keyToCache=c),t.data.keepAlive=!0}return t||e&&e[0]}}};!function(e){var t={get:function(){return F}};Object.defineProperty(e,\"config\",t),e.util={warn:ae,extend:A,mergeOptions:De,defineReactive:xe},e.set=ke,e.delete=Ae,e.nextTick=Qe,e.observable=function(e){return Ce(e),e},e.options=Object.create(null),I.forEach(function(t){e.options[t+\"s\"]=Object.create(null)}),e.options._base=e,A(e.options.components,Nn),function(e){e.use=function(e){var t=this._installedPlugins||(this._installedPlugins=[]);if(t.indexOf(e)>-1)return this;var n=k(arguments,1);return n.unshift(this),\"function\"==typeof e.install?e.install.apply(e,n):\"function\"==typeof e&&e.apply(null,n),t.push(e),this}}(e),function(e){e.mixin=function(e){return this.options=De(this.options,e),this}}(e),xn(e),function(e){I.forEach(function(t){e[t]=function(e,n){return n?(\"component\"===t&&s(n)&&(n.name=n.name||e,n=this.options._base.extend(n)),\"directive\"===t&&\"function\"==typeof n&&(n={bind:n,update:n}),this.options[t+\"s\"][e]=n,n):this.options[t+\"s\"][e]}})}(e)}(Cn),Object.defineProperty(Cn.prototype,\"$isServer\",{get:te}),Object.defineProperty(Cn.prototype,\"$ssrContext\",{get:function(){return this.$vnode&&this.$vnode.ssrContext}}),Object.defineProperty(Cn,\"FunctionalRenderContext\",{value:Et}),Cn.version=\"2.6.14\";var En=p(\"style,class\"),jn=p(\"input,textarea,option,select,progress\"),Dn=function(e,t,n){return\"value\"===n&&jn(e)&&\"button\"!==t||\"selected\"===n&&\"option\"===e||\"checked\"===n&&\"input\"===e||\"muted\"===n&&\"video\"===e},Ln=p(\"contenteditable,draggable,spellcheck\"),In=p(\"events,caret,typing,plaintext-only\"),Mn=function(e,t){return Bn(t)||\"false\"===t?\"false\":\"contenteditable\"===e&&In(t)?t:\"true\"},Fn=p(\"allowfullscreen,async,autofocus,autoplay,checked,compact,controls,declare,default,defaultchecked,defaultmuted,defaultselected,defer,disabled,enabled,formnovalidate,hidden,indeterminate,inert,ismap,itemscope,loop,multiple,muted,nohref,noresize,noshade,novalidate,nowrap,open,pauseonexit,readonly,required,reversed,scoped,seamless,selected,sortable,truespeed,typemustmatch,visible\"),Pn=\"http://www.w3.org/1999/xlink\",Rn=function(e){return\":\"===e.charAt(5)&&\"xlink\"===e.slice(0,5)},Hn=function(e){return Rn(e)?e.slice(6,e.length):\"\"},Bn=function(e){return null==e||!1===e};function Un(e){for(var t=e.data,r=e,i=e;n(i.componentInstance);)(i=i.componentInstance._vnode)&&i.data&&(t=Vn(i.data,t));for(;n(r=r.parent);)r&&r.data&&(t=Vn(t,r.data));return function(e,t){if(n(e)||n(t))return zn(e,Kn(t));return\"\"}(t.staticClass,t.class)}function Vn(e,t){return{staticClass:zn(e.staticClass,t.staticClass),class:n(e.class)?[e.class,t.class]:t.class}}function zn(e,t){return e?t?e+\" \"+t:e:t||\"\"}function Kn(e){return Array.isArray(e)?function(e){for(var t,r=\"\",i=0,o=e.length;i-1?mr(e,t,n):Fn(t)?Bn(n)?e.removeAttribute(t):(n=\"allowfullscreen\"===t&&\"EMBED\"===e.tagName?\"true\":t,e.setAttribute(t,n)):Ln(t)?e.setAttribute(t,Mn(t,n)):Rn(t)?Bn(n)?e.removeAttributeNS(Pn,Hn(t)):e.setAttributeNS(Pn,t,n):mr(e,t,n)}function mr(e,t,n){if(Bn(n))e.removeAttribute(t);else{if(q&&!W&&\"TEXTAREA\"===e.tagName&&\"placeholder\"===t&&\"\"!==n&&!e.__ieph){var r=function(t){t.stopImmediatePropagation(),e.removeEventListener(\"input\",r)};e.addEventListener(\"input\",r),e.__ieph=!0}e.setAttribute(t,n)}}var yr={create:vr,update:vr};function gr(e,r){var i=r.elm,o=r.data,a=e.data;if(!(t(o.staticClass)&&t(o.class)&&(t(a)||t(a.staticClass)&&t(a.class)))){var s=Un(r),c=i._transitionClasses;n(c)&&(s=zn(s,Kn(c))),s!==i._prevClass&&(i.setAttribute(\"class\",s),i._prevClass=s)}}var _r,br,$r,wr,Cr,xr,kr={create:gr,update:gr},Ar=/[\\w).+\\-_$\\]]/;function Or(e){var t,n,r,i,o,a=!1,s=!1,c=!1,u=!1,l=0,f=0,p=0,d=0;for(r=0;r=0&&\" \"===(h=e.charAt(v));v--);h&&Ar.test(h)||(u=!0)}}else void 0===i?(d=r+1,i=e.slice(0,r).trim()):m();function m(){(o||(o=[])).push(e.slice(d,r).trim()),d=r+1}if(void 0===i?i=e.slice(0,r).trim():0!==d&&m(),o)for(r=0;r-1?{exp:e.slice(0,wr),key:'\"'+e.slice(wr+1)+'\"'}:{exp:e,key:null};br=e,wr=Cr=xr=0;for(;!zr();)Kr($r=Vr())?qr($r):91===$r&&Jr($r);return{exp:e.slice(0,Cr),key:e.slice(Cr+1,xr)}}(e);return null===n.key?e+\"=\"+t:\"$set(\"+n.exp+\", \"+n.key+\", \"+t+\")\"}function Vr(){return br.charCodeAt(++wr)}function zr(){return wr>=_r}function Kr(e){return 34===e||39===e}function Jr(e){var t=1;for(Cr=wr;!zr();)if(Kr(e=Vr()))qr(e);else if(91===e&&t++,93===e&&t--,0===t){xr=wr;break}}function qr(e){for(var t=e;!zr()&&(e=Vr())!==t;);}var Wr,Zr=\"__r\",Gr=\"__c\";function Xr(e,t,n){var r=Wr;return function i(){null!==t.apply(null,arguments)&&ei(e,i,n,r)}}var Yr=Ke&&!(X&&Number(X[1])<=53);function Qr(e,t,n,r){if(Yr){var i=sn,o=t;t=o._wrapper=function(e){if(e.target===e.currentTarget||e.timeStamp>=i||e.timeStamp<=0||e.target.ownerDocument!==document)return o.apply(this,arguments)}}Wr.addEventListener(e,t,Q?{capture:n,passive:r}:n)}function ei(e,t,n,r){(r||Wr).removeEventListener(e,t._wrapper||t,n)}function ti(e,r){if(!t(e.data.on)||!t(r.data.on)){var i=r.data.on||{},o=e.data.on||{};Wr=r.elm,function(e){if(n(e[Zr])){var t=q?\"change\":\"input\";e[t]=[].concat(e[Zr],e[t]||[]),delete e[Zr]}n(e[Gr])&&(e.change=[].concat(e[Gr],e.change||[]),delete e[Gr])}(i),it(i,o,Qr,ei,Xr,r.context),Wr=void 0}}var ni,ri={create:ti,update:ti};function ii(e,r){if(!t(e.data.domProps)||!t(r.data.domProps)){var i,o,a=r.elm,s=e.data.domProps||{},c=r.data.domProps||{};for(i in n(c.__ob__)&&(c=r.data.domProps=A({},c)),s)i in c||(a[i]=\"\");for(i in c){if(o=c[i],\"textContent\"===i||\"innerHTML\"===i){if(r.children&&(r.children.length=0),o===s[i])continue;1===a.childNodes.length&&a.removeChild(a.childNodes[0])}if(\"value\"===i&&\"PROGRESS\"!==a.tagName){a._value=o;var u=t(o)?\"\":String(o);oi(a,u)&&(a.value=u)}else if(\"innerHTML\"===i&&Wn(a.tagName)&&t(a.innerHTML)){(ni=ni||document.createElement(\"div\")).innerHTML=\"\"+o+\"\";for(var l=ni.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;l.firstChild;)a.appendChild(l.firstChild)}else if(o!==s[i])try{a[i]=o}catch(e){}}}}function oi(e,t){return!e.composing&&(\"OPTION\"===e.tagName||function(e,t){var n=!0;try{n=document.activeElement!==e}catch(e){}return n&&e.value!==t}(e,t)||function(e,t){var r=e.value,i=e._vModifiers;if(n(i)){if(i.number)return f(r)!==f(t);if(i.trim)return r.trim()!==t.trim()}return r!==t}(e,t))}var ai={create:ii,update:ii},si=g(function(e){var t={},n=/:(.+)/;return e.split(/;(?![^(]*\\))/g).forEach(function(e){if(e){var r=e.split(n);r.length>1&&(t[r[0].trim()]=r[1].trim())}}),t});function ci(e){var t=ui(e.style);return e.staticStyle?A(e.staticStyle,t):t}function ui(e){return Array.isArray(e)?O(e):\"string\"==typeof e?si(e):e}var li,fi=/^--/,pi=/\\s*!important$/,di=function(e,t,n){if(fi.test(t))e.style.setProperty(t,n);else if(pi.test(n))e.style.setProperty(C(t),n.replace(pi,\"\"),\"important\");else{var r=hi(t);if(Array.isArray(n))for(var i=0,o=n.length;i-1?t.split(gi).forEach(function(t){return e.classList.add(t)}):e.classList.add(t);else{var n=\" \"+(e.getAttribute(\"class\")||\"\")+\" \";n.indexOf(\" \"+t+\" \")<0&&e.setAttribute(\"class\",(n+t).trim())}}function bi(e,t){if(t&&(t=t.trim()))if(e.classList)t.indexOf(\" \")>-1?t.split(gi).forEach(function(t){return e.classList.remove(t)}):e.classList.remove(t),e.classList.length||e.removeAttribute(\"class\");else{for(var n=\" \"+(e.getAttribute(\"class\")||\"\")+\" \",r=\" \"+t+\" \";n.indexOf(r)>=0;)n=n.replace(r,\" \");(n=n.trim())?e.setAttribute(\"class\",n):e.removeAttribute(\"class\")}}function $i(e){if(e){if(\"object\"==typeof e){var t={};return!1!==e.css&&A(t,wi(e.name||\"v\")),A(t,e),t}return\"string\"==typeof e?wi(e):void 0}}var wi=g(function(e){return{enterClass:e+\"-enter\",enterToClass:e+\"-enter-to\",enterActiveClass:e+\"-enter-active\",leaveClass:e+\"-leave\",leaveToClass:e+\"-leave-to\",leaveActiveClass:e+\"-leave-active\"}}),Ci=V&&!W,xi=\"transition\",ki=\"animation\",Ai=\"transition\",Oi=\"transitionend\",Si=\"animation\",Ti=\"animationend\";Ci&&(void 0===window.ontransitionend&&void 0!==window.onwebkittransitionend&&(Ai=\"WebkitTransition\",Oi=\"webkitTransitionEnd\"),void 0===window.onanimationend&&void 0!==window.onwebkitanimationend&&(Si=\"WebkitAnimation\",Ti=\"webkitAnimationEnd\"));var Ni=V?window.requestAnimationFrame?window.requestAnimationFrame.bind(window):setTimeout:function(e){return e()};function Ei(e){Ni(function(){Ni(e)})}function ji(e,t){var n=e._transitionClasses||(e._transitionClasses=[]);n.indexOf(t)<0&&(n.push(t),_i(e,t))}function Di(e,t){e._transitionClasses&&h(e._transitionClasses,t),bi(e,t)}function Li(e,t,n){var r=Mi(e,t),i=r.type,o=r.timeout,a=r.propCount;if(!i)return n();var s=i===xi?Oi:Ti,c=0,u=function(){e.removeEventListener(s,l),n()},l=function(t){t.target===e&&++c>=a&&u()};setTimeout(function(){c0&&(n=xi,l=a,f=o.length):t===ki?u>0&&(n=ki,l=u,f=c.length):f=(n=(l=Math.max(a,u))>0?a>u?xi:ki:null)?n===xi?o.length:c.length:0,{type:n,timeout:l,propCount:f,hasTransform:n===xi&&Ii.test(r[Ai+\"Property\"])}}function Fi(e,t){for(;e.length1}function Vi(e,t){!0!==t.data.show&&Ri(t)}var zi=function(e){var o,a,s={},c=e.modules,u=e.nodeOps;for(o=0;ov?_(e,t(i[y+1])?null:i[y+1].elm,i,d,y,o):d>y&&$(r,p,v)}(p,h,y,o,l):n(y)?(n(e.text)&&u.setTextContent(p,\"\"),_(p,null,y,0,y.length-1,o)):n(h)?$(h,0,h.length-1):n(e.text)&&u.setTextContent(p,\"\"):e.text!==i.text&&u.setTextContent(p,i.text),n(v)&&n(d=v.hook)&&n(d=d.postpatch)&&d(e,i)}}}function k(e,t,i){if(r(i)&&n(e.parent))e.parent.data.pendingInsert=t;else for(var o=0;o-1,a.selected!==o&&(a.selected=o);else if(E(Zi(a),r))return void(e.selectedIndex!==s&&(e.selectedIndex=s));i||(e.selectedIndex=-1)}}function Wi(e,t){return t.every(function(t){return!E(t,e)})}function Zi(e){return\"_value\"in e?e._value:e.value}function Gi(e){e.target.composing=!0}function Xi(e){e.target.composing&&(e.target.composing=!1,Yi(e.target,\"input\"))}function Yi(e,t){var n=document.createEvent(\"HTMLEvents\");n.initEvent(t,!0,!0),e.dispatchEvent(n)}function Qi(e){return!e.componentInstance||e.data&&e.data.transition?e:Qi(e.componentInstance._vnode)}var eo={model:Ki,show:{bind:function(e,t,n){var r=t.value,i=(n=Qi(n)).data&&n.data.transition,o=e.__vOriginalDisplay=\"none\"===e.style.display?\"\":e.style.display;r&&i?(n.data.show=!0,Ri(n,function(){e.style.display=o})):e.style.display=r?o:\"none\"},update:function(e,t,n){var r=t.value;!r!=!t.oldValue&&((n=Qi(n)).data&&n.data.transition?(n.data.show=!0,r?Ri(n,function(){e.style.display=e.__vOriginalDisplay}):Hi(n,function(){e.style.display=\"none\"})):e.style.display=r?e.__vOriginalDisplay:\"none\")},unbind:function(e,t,n,r,i){i||(e.style.display=e.__vOriginalDisplay)}}},to={name:String,appear:Boolean,css:Boolean,mode:String,type:String,enterClass:String,leaveClass:String,enterToClass:String,leaveToClass:String,enterActiveClass:String,leaveActiveClass:String,appearClass:String,appearActiveClass:String,appearToClass:String,duration:[Number,String,Object]};function no(e){var t=e&&e.componentOptions;return t&&t.Ctor.options.abstract?no(zt(t.children)):e}function ro(e){var t={},n=e.$options;for(var r in n.propsData)t[r]=e[r];var i=n._parentListeners;for(var o in i)t[b(o)]=i[o];return t}function io(e,t){if(/\\d-keep-alive$/.test(t.tag))return e(\"keep-alive\",{props:t.componentOptions.propsData})}var oo=function(e){return e.tag||pt(e)},ao=function(e){return\"show\"===e.name},so={name:\"transition\",props:to,abstract:!0,render:function(e){var t=this,n=this.$slots.default;if(n&&(n=n.filter(oo)).length){var r=this.mode,o=n[0];if(function(e){for(;e=e.parent;)if(e.data.transition)return!0}(this.$vnode))return o;var a=no(o);if(!a)return o;if(this._leaving)return io(e,o);var s=\"__transition-\"+this._uid+\"-\";a.key=null==a.key?a.isComment?s+\"comment\":s+a.tag:i(a.key)?0===String(a.key).indexOf(s)?a.key:s+a.key:a.key;var c=(a.data||(a.data={})).transition=ro(this),u=this._vnode,l=no(u);if(a.data.directives&&a.data.directives.some(ao)&&(a.data.show=!0),l&&l.data&&!function(e,t){return t.key===e.key&&t.tag===e.tag}(a,l)&&!pt(l)&&(!l.componentInstance||!l.componentInstance._vnode.isComment)){var f=l.data.transition=A({},c);if(\"out-in\"===r)return this._leaving=!0,ot(f,\"afterLeave\",function(){t._leaving=!1,t.$forceUpdate()}),io(e,o);if(\"in-out\"===r){if(pt(a))return u;var p,d=function(){p()};ot(c,\"afterEnter\",d),ot(c,\"enterCancelled\",d),ot(f,\"delayLeave\",function(e){p=e})}}return o}}},co=A({tag:String,moveClass:String},to);function uo(e){e.elm._moveCb&&e.elm._moveCb(),e.elm._enterCb&&e.elm._enterCb()}function lo(e){e.data.newPos=e.elm.getBoundingClientRect()}function fo(e){var t=e.data.pos,n=e.data.newPos,r=t.left-n.left,i=t.top-n.top;if(r||i){e.data.moved=!0;var o=e.elm.style;o.transform=o.WebkitTransform=\"translate(\"+r+\"px,\"+i+\"px)\",o.transitionDuration=\"0s\"}}delete co.mode;var po={Transition:so,TransitionGroup:{props:co,beforeMount:function(){var e=this,t=this._update;this._update=function(n,r){var i=Gt(e);e.__patch__(e._vnode,e.kept,!1,!0),e._vnode=e.kept,i(),t.call(e,n,r)}},render:function(e){for(var t=this.tag||this.$vnode.data.tag||\"span\",n=Object.create(null),r=this.prevChildren=this.children,i=this.$slots.default||[],o=this.children=[],a=ro(this),s=0;s-1?Xn[e]=t.constructor===window.HTMLUnknownElement||t.constructor===window.HTMLElement:Xn[e]=/HTMLUnknownElement/.test(t.toString())},A(Cn.options.directives,eo),A(Cn.options.components,po),Cn.prototype.__patch__=V?zi:S,Cn.prototype.$mount=function(e,t){return function(e,t,n){var r;return e.$el=t,e.$options.render||(e.$options.render=ve),Qt(e,\"beforeMount\"),r=function(){e._update(e._render(),n)},new pn(e,r,S,{before:function(){e._isMounted&&!e._isDestroyed&&Qt(e,\"beforeUpdate\")}},!0),n=!1,null==e.$vnode&&(e._isMounted=!0,Qt(e,\"mounted\")),e}(this,e=e&&V?Qn(e):void 0,t)},V&&setTimeout(function(){F.devtools&&ne&&ne.emit(\"init\",Cn)},0);var vo=/\\{\\{((?:.|\\r?\\n)+?)\\}\\}/g,ho=/[-.*+?^${}()|[\\]\\/\\\\]/g,mo=g(function(e){var t=e[0].replace(ho,\"\\\\$&\"),n=e[1].replace(ho,\"\\\\$&\");return new RegExp(t+\"((?:.|\\\\n)+?)\"+n,\"g\")});var yo={staticKeys:[\"staticClass\"],transformNode:function(e,t){t.warn;var n=Pr(e,\"class\");n&&(e.staticClass=JSON.stringify(n));var r=Fr(e,\"class\",!1);r&&(e.classBinding=r)},genData:function(e){var t=\"\";return e.staticClass&&(t+=\"staticClass:\"+e.staticClass+\",\"),e.classBinding&&(t+=\"class:\"+e.classBinding+\",\"),t}};var go,_o={staticKeys:[\"staticStyle\"],transformNode:function(e,t){t.warn;var n=Pr(e,\"style\");n&&(e.staticStyle=JSON.stringify(si(n)));var r=Fr(e,\"style\",!1);r&&(e.styleBinding=r)},genData:function(e){var t=\"\";return e.staticStyle&&(t+=\"staticStyle:\"+e.staticStyle+\",\"),e.styleBinding&&(t+=\"style:(\"+e.styleBinding+\"),\"),t}},bo=function(e){return(go=go||document.createElement(\"div\")).innerHTML=e,go.textContent},$o=p(\"area,base,br,col,embed,frame,hr,img,input,isindex,keygen,link,meta,param,source,track,wbr\"),wo=p(\"colgroup,dd,dt,li,options,p,td,tfoot,th,thead,tr,source\"),Co=p(\"address,article,aside,base,blockquote,body,caption,col,colgroup,dd,details,dialog,div,dl,dt,fieldset,figcaption,figure,footer,form,h1,h2,h3,h4,h5,h6,head,header,hgroup,hr,html,legend,li,menuitem,meta,optgroup,option,param,rp,rt,source,style,summary,tbody,td,tfoot,th,thead,title,tr,track\"),xo=/^\\s*([^\\s\"'<>\\/=]+)(?:\\s*(=)\\s*(?:\"([^\"]*)\"+|'([^']*)'+|([^\\s\"'=<>`]+)))?/,ko=/^\\s*((?:v-[\\w-]+:|@|:|#)\\[[^=]+?\\][^\\s\"'<>\\/=]*)(?:\\s*(=)\\s*(?:\"([^\"]*)\"+|'([^']*)'+|([^\\s\"'=<>`]+)))?/,Ao=\"[a-zA-Z_][\\\\-\\\\.0-9_a-zA-Z\"+P.source+\"]*\",Oo=\"((?:\"+Ao+\"\\\\:)?\"+Ao+\")\",So=new RegExp(\"^<\"+Oo),To=/^\\s*(\\/?)>/,No=new RegExp(\"^<\\\\/\"+Oo+\"[^>]*>\"),Eo=/^]+>/i,jo=/^\",\""\":'\"',\"&\":\"&\",\" \":\"\\n\",\" \":\"\\t\",\"'\":\"'\"},Fo=/&(?:lt|gt|quot|amp|#39);/g,Po=/&(?:lt|gt|quot|amp|#39|#10|#9);/g,Ro=p(\"pre,textarea\",!0),Ho=function(e,t){return e&&Ro(e)&&\"\\n\"===t[0]};function Bo(e,t){var n=t?Po:Fo;return e.replace(n,function(e){return Mo[e]})}var Uo,Vo,zo,Ko,Jo,qo,Wo,Zo,Go=/^@|^v-on:/,Xo=/^v-|^@|^:|^#/,Yo=/([\\s\\S]*?)\\s+(?:in|of)\\s+([\\s\\S]*)/,Qo=/,([^,\\}\\]]*)(?:,([^,\\}\\]]*))?$/,ea=/^\\(|\\)$/g,ta=/^\\[.*\\]$/,na=/:(.*)$/,ra=/^:|^\\.|^v-bind:/,ia=/\\.[^.\\]]+(?=[^\\]]*$)/g,oa=/^v-slot(:|$)|^#/,aa=/[\\r\\n]/,sa=/[ \\f\\t\\r\\n]+/g,ca=g(bo),ua=\"_empty_\";function la(e,t,n){return{type:1,tag:e,attrsList:t,attrsMap:ya(t),rawAttrsMap:{},parent:n,children:[]}}function fa(e,t){Uo=t.warn||Tr,qo=t.isPreTag||T,Wo=t.mustUseProp||T,Zo=t.getTagNamespace||T;t.isReservedTag;zo=Nr(t.modules,\"transformNode\"),Ko=Nr(t.modules,\"preTransformNode\"),Jo=Nr(t.modules,\"postTransformNode\"),Vo=t.delimiters;var n,r,i=[],o=!1!==t.preserveWhitespace,a=t.whitespace,s=!1,c=!1;function u(e){if(l(e),s||e.processed||(e=pa(e,t)),i.length||e===n||n.if&&(e.elseif||e.else)&&va(n,{exp:e.elseif,block:e}),r&&!e.forbidden)if(e.elseif||e.else)a=e,(u=function(e){var t=e.length;for(;t--;){if(1===e[t].type)return e[t];e.pop()}}(r.children))&&u.if&&va(u,{exp:a.elseif,block:a});else{if(e.slotScope){var o=e.slotTarget||'\"default\"';(r.scopedSlots||(r.scopedSlots={}))[o]=e}r.children.push(e),e.parent=r}var a,u;e.children=e.children.filter(function(e){return!e.slotScope}),l(e),e.pre&&(s=!1),qo(e.tag)&&(c=!1);for(var f=0;f]*>)\",\"i\")),p=e.replace(f,function(e,n,r){return u=r.length,Lo(l)||\"noscript\"===l||(n=n.replace(//g,\"$1\").replace(//g,\"$1\")),Ho(l,n)&&(n=n.slice(1)),t.chars&&t.chars(n),\"\"});c+=e.length-p.length,e=p,A(l,c-u,c)}else{var d=e.indexOf(\"<\");if(0===d){if(jo.test(e)){var v=e.indexOf(\"--\\x3e\");if(v>=0){t.shouldKeepComment&&t.comment(e.substring(4,v),c,c+v+3),C(v+3);continue}}if(Do.test(e)){var h=e.indexOf(\"]>\");if(h>=0){C(h+2);continue}}var m=e.match(Eo);if(m){C(m[0].length);continue}var y=e.match(No);if(y){var g=c;C(y[0].length),A(y[1],g,c);continue}var _=x();if(_){k(_),Ho(_.tagName,e)&&C(1);continue}}var b=void 0,$=void 0,w=void 0;if(d>=0){for($=e.slice(d);!(No.test($)||So.test($)||jo.test($)||Do.test($)||(w=$.indexOf(\"<\",1))<0);)d+=w,$=e.slice(d);b=e.substring(0,d)}d<0&&(b=e),b&&C(b.length),t.chars&&b&&t.chars(b,c-b.length,c)}if(e===n){t.chars&&t.chars(e);break}}function C(t){c+=t,e=e.substring(t)}function x(){var t=e.match(So);if(t){var n,r,i={tagName:t[1],attrs:[],start:c};for(C(t[0].length);!(n=e.match(To))&&(r=e.match(ko)||e.match(xo));)r.start=c,C(r[0].length),r.end=c,i.attrs.push(r);if(n)return i.unarySlash=n[1],C(n[0].length),i.end=c,i}}function k(e){var n=e.tagName,c=e.unarySlash;o&&(\"p\"===r&&Co(n)&&A(r),s(n)&&r===n&&A(n));for(var u=a(n)||!!c,l=e.attrs.length,f=new Array(l),p=0;p=0&&i[a].lowerCasedTag!==s;a--);else a=0;if(a>=0){for(var u=i.length-1;u>=a;u--)t.end&&t.end(i[u].tag,n,o);i.length=a,r=a&&i[a-1].tag}else\"br\"===s?t.start&&t.start(e,[],!0,n,o):\"p\"===s&&(t.start&&t.start(e,[],!1,n,o),t.end&&t.end(e,n,o))}A()}(e,{warn:Uo,expectHTML:t.expectHTML,isUnaryTag:t.isUnaryTag,canBeLeftOpenTag:t.canBeLeftOpenTag,shouldDecodeNewlines:t.shouldDecodeNewlines,shouldDecodeNewlinesForHref:t.shouldDecodeNewlinesForHref,shouldKeepComment:t.comments,outputSourceRange:t.outputSourceRange,start:function(e,o,a,l,f){var p=r&&r.ns||Zo(e);q&&\"svg\"===p&&(o=function(e){for(var t=[],n=0;nc&&(s.push(o=e.slice(c,i)),a.push(JSON.stringify(o)));var u=Or(r[1].trim());a.push(\"_s(\"+u+\")\"),s.push({\"@binding\":u}),c=i+r[0].length}return c-1\"+(\"true\"===o?\":(\"+t+\")\":\":_q(\"+t+\",\"+o+\")\")),Mr(e,\"change\",\"var $$a=\"+t+\",$$el=$event.target,$$c=$$el.checked?(\"+o+\"):(\"+a+\");if(Array.isArray($$a)){var $$v=\"+(r?\"_n(\"+i+\")\":i)+\",$$i=_i($$a,$$v);if($$el.checked){$$i<0&&(\"+Ur(t,\"$$a.concat([$$v])\")+\")}else{$$i>-1&&(\"+Ur(t,\"$$a.slice(0,$$i).concat($$a.slice($$i+1))\")+\")}}else{\"+Ur(t,\"$$c\")+\"}\",null,!0)}(e,r,i);else if(\"input\"===o&&\"radio\"===a)!function(e,t,n){var r=n&&n.number,i=Fr(e,\"value\")||\"null\";Er(e,\"checked\",\"_q(\"+t+\",\"+(i=r?\"_n(\"+i+\")\":i)+\")\"),Mr(e,\"change\",Ur(t,i),null,!0)}(e,r,i);else if(\"input\"===o||\"textarea\"===o)!function(e,t,n){var r=e.attrsMap.type,i=n||{},o=i.lazy,a=i.number,s=i.trim,c=!o&&\"range\"!==r,u=o?\"change\":\"range\"===r?Zr:\"input\",l=\"$event.target.value\";s&&(l=\"$event.target.value.trim()\"),a&&(l=\"_n(\"+l+\")\");var f=Ur(t,l);c&&(f=\"if($event.target.composing)return;\"+f),Er(e,\"value\",\"(\"+t+\")\"),Mr(e,u,f,null,!0),(s||a)&&Mr(e,\"blur\",\"$forceUpdate()\")}(e,r,i);else if(!F.isReservedTag(o))return Br(e,r,i),!1;return!0},text:function(e,t){t.value&&Er(e,\"textContent\",\"_s(\"+t.value+\")\",t)},html:function(e,t){t.value&&Er(e,\"innerHTML\",\"_s(\"+t.value+\")\",t)}},isPreTag:function(e){return\"pre\"===e},isUnaryTag:$o,mustUseProp:Dn,canBeLeftOpenTag:wo,isReservedTag:Zn,getTagNamespace:Gn,staticKeys:function(e){return e.reduce(function(e,t){return e.concat(t.staticKeys||[])},[]).join(\",\")}($a)},ka=g(function(e){return p(\"type,tag,attrsList,attrsMap,plain,parent,children,attrs,start,end,rawAttrsMap\"+(e?\",\"+e:\"\"))});function Aa(e,t){e&&(wa=ka(t.staticKeys||\"\"),Ca=t.isReservedTag||T,function e(t){t.static=function(e){if(2===e.type)return!1;if(3===e.type)return!0;return!(!e.pre&&(e.hasBindings||e.if||e.for||d(e.tag)||!Ca(e.tag)||function(e){for(;e.parent;){if(\"template\"!==(e=e.parent).tag)return!1;if(e.for)return!0}return!1}(e)||!Object.keys(e).every(wa)))}(t);if(1===t.type){if(!Ca(t.tag)&&\"slot\"!==t.tag&&null==t.attrsMap[\"inline-template\"])return;for(var n=0,r=t.children.length;n|^function(?:\\s+[\\w$]+)?\\s*\\(/,Sa=/\\([^)]*?\\);*$/,Ta=/^[A-Za-z_$][\\w$]*(?:\\.[A-Za-z_$][\\w$]*|\\['[^']*?']|\\[\"[^\"]*?\"]|\\[\\d+]|\\[[A-Za-z_$][\\w$]*])*$/,Na={esc:27,tab:9,enter:13,space:32,up:38,left:37,right:39,down:40,delete:[8,46]},Ea={esc:[\"Esc\",\"Escape\"],tab:\"Tab\",enter:\"Enter\",space:[\" \",\"Spacebar\"],up:[\"Up\",\"ArrowUp\"],left:[\"Left\",\"ArrowLeft\"],right:[\"Right\",\"ArrowRight\"],down:[\"Down\",\"ArrowDown\"],delete:[\"Backspace\",\"Delete\",\"Del\"]},ja=function(e){return\"if(\"+e+\")return null;\"},Da={stop:\"$event.stopPropagation();\",prevent:\"$event.preventDefault();\",self:ja(\"$event.target !== $event.currentTarget\"),ctrl:ja(\"!$event.ctrlKey\"),shift:ja(\"!$event.shiftKey\"),alt:ja(\"!$event.altKey\"),meta:ja(\"!$event.metaKey\"),left:ja(\"'button' in $event && $event.button !== 0\"),middle:ja(\"'button' in $event && $event.button !== 1\"),right:ja(\"'button' in $event && $event.button !== 2\")};function La(e,t){var n=t?\"nativeOn:\":\"on:\",r=\"\",i=\"\";for(var o in e){var a=Ia(e[o]);e[o]&&e[o].dynamic?i+=o+\",\"+a+\",\":r+='\"'+o+'\":'+a+\",\"}return r=\"{\"+r.slice(0,-1)+\"}\",i?n+\"_d(\"+r+\",[\"+i.slice(0,-1)+\"])\":n+r}function Ia(e){if(!e)return\"function(){}\";if(Array.isArray(e))return\"[\"+e.map(function(e){return Ia(e)}).join(\",\")+\"]\";var t=Ta.test(e.value),n=Oa.test(e.value),r=Ta.test(e.value.replace(Sa,\"\"));if(e.modifiers){var i=\"\",o=\"\",a=[];for(var s in e.modifiers)if(Da[s])o+=Da[s],Na[s]&&a.push(s);else if(\"exact\"===s){var c=e.modifiers;o+=ja([\"ctrl\",\"shift\",\"alt\",\"meta\"].filter(function(e){return!c[e]}).map(function(e){return\"$event.\"+e+\"Key\"}).join(\"||\"))}else a.push(s);return a.length&&(i+=function(e){return\"if(!$event.type.indexOf('key')&&\"+e.map(Ma).join(\"&&\")+\")return null;\"}(a)),o&&(i+=o),\"function($event){\"+i+(t?\"return \"+e.value+\".apply(null, arguments)\":n?\"return (\"+e.value+\").apply(null, arguments)\":r?\"return \"+e.value:e.value)+\"}\"}return t||n?e.value:\"function($event){\"+(r?\"return \"+e.value:e.value)+\"}\"}function Ma(e){var t=parseInt(e,10);if(t)return\"$event.keyCode!==\"+t;var n=Na[e],r=Ea[e];return\"_k($event.keyCode,\"+JSON.stringify(e)+\",\"+JSON.stringify(n)+\",$event.key,\"+JSON.stringify(r)+\")\"}var Fa={on:function(e,t){e.wrapListeners=function(e){return\"_g(\"+e+\",\"+t.value+\")\"}},bind:function(e,t){e.wrapData=function(n){return\"_b(\"+n+\",'\"+e.tag+\"',\"+t.value+\",\"+(t.modifiers&&t.modifiers.prop?\"true\":\"false\")+(t.modifiers&&t.modifiers.sync?\",true\":\"\")+\")\"}},cloak:S},Pa=function(e){this.options=e,this.warn=e.warn||Tr,this.transforms=Nr(e.modules,\"transformCode\"),this.dataGenFns=Nr(e.modules,\"genData\"),this.directives=A(A({},Fa),e.directives);var t=e.isReservedTag||T;this.maybeComponent=function(e){return!!e.component||!t(e.tag)},this.onceId=0,this.staticRenderFns=[],this.pre=!1};function Ra(e,t){var n=new Pa(t);return{render:\"with(this){return \"+(e?\"script\"===e.tag?\"null\":Ha(e,n):'_c(\"div\")')+\"}\",staticRenderFns:n.staticRenderFns}}function Ha(e,t){if(e.parent&&(e.pre=e.pre||e.parent.pre),e.staticRoot&&!e.staticProcessed)return Ba(e,t);if(e.once&&!e.onceProcessed)return Ua(e,t);if(e.for&&!e.forProcessed)return za(e,t);if(e.if&&!e.ifProcessed)return Va(e,t);if(\"template\"!==e.tag||e.slotTarget||t.pre){if(\"slot\"===e.tag)return function(e,t){var n=e.slotName||'\"default\"',r=Wa(e,t),i=\"_t(\"+n+(r?\",function(){return \"+r+\"}\":\"\"),o=e.attrs||e.dynamicAttrs?Xa((e.attrs||[]).concat(e.dynamicAttrs||[]).map(function(e){return{name:b(e.name),value:e.value,dynamic:e.dynamic}})):null,a=e.attrsMap[\"v-bind\"];!o&&!a||r||(i+=\",null\");o&&(i+=\",\"+o);a&&(i+=(o?\"\":\",null\")+\",\"+a);return i+\")\"}(e,t);var n;if(e.component)n=function(e,t,n){var r=t.inlineTemplate?null:Wa(t,n,!0);return\"_c(\"+e+\",\"+Ka(t,n)+(r?\",\"+r:\"\")+\")\"}(e.component,e,t);else{var r;(!e.plain||e.pre&&t.maybeComponent(e))&&(r=Ka(e,t));var i=e.inlineTemplate?null:Wa(e,t,!0);n=\"_c('\"+e.tag+\"'\"+(r?\",\"+r:\"\")+(i?\",\"+i:\"\")+\")\"}for(var o=0;o>>0}(a):\"\")+\")\"}(e,e.scopedSlots,t)+\",\"),e.model&&(n+=\"model:{value:\"+e.model.value+\",callback:\"+e.model.callback+\",expression:\"+e.model.expression+\"},\"),e.inlineTemplate){var o=function(e,t){var n=e.children[0];if(n&&1===n.type){var r=Ra(n,t.options);return\"inlineTemplate:{render:function(){\"+r.render+\"},staticRenderFns:[\"+r.staticRenderFns.map(function(e){return\"function(){\"+e+\"}\"}).join(\",\")+\"]}\"}}(e,t);o&&(n+=o+\",\")}return n=n.replace(/,$/,\"\")+\"}\",e.dynamicAttrs&&(n=\"_b(\"+n+',\"'+e.tag+'\",'+Xa(e.dynamicAttrs)+\")\"),e.wrapData&&(n=e.wrapData(n)),e.wrapListeners&&(n=e.wrapListeners(n)),n}function Ja(e){return 1===e.type&&(\"slot\"===e.tag||e.children.some(Ja))}function qa(e,t){var n=e.attrsMap[\"slot-scope\"];if(e.if&&!e.ifProcessed&&!n)return Va(e,t,qa,\"null\");if(e.for&&!e.forProcessed)return za(e,t,qa);var r=e.slotScope===ua?\"\":String(e.slotScope),i=\"function(\"+r+\"){return \"+(\"template\"===e.tag?e.if&&n?\"(\"+e.if+\")?\"+(Wa(e,t)||\"undefined\")+\":undefined\":Wa(e,t)||\"undefined\":Ha(e,t))+\"}\",o=r?\"\":\",proxy:true\";return\"{key:\"+(e.slotTarget||'\"default\"')+\",fn:\"+i+o+\"}\"}function Wa(e,t,n,r,i){var o=e.children;if(o.length){var a=o[0];if(1===o.length&&a.for&&\"template\"!==a.tag&&\"slot\"!==a.tag){var s=n?t.maybeComponent(a)?\",1\":\",0\":\"\";return\"\"+(r||Ha)(a,t)+s}var c=n?function(e,t){for(var n=0,r=0;r':'
',ns.innerHTML.indexOf(\" \")>0}var as=!!V&&os(!1),ss=!!V&&os(!0),cs=g(function(e){var t=Qn(e);return t&&t.innerHTML}),us=Cn.prototype.$mount;return Cn.prototype.$mount=function(e,t){if((e=e&&Qn(e))===document.body||e===document.documentElement)return this;var n=this.$options;if(!n.render){var r=n.template;if(r)if(\"string\"==typeof r)\"#\"===r.charAt(0)&&(r=cs(r));else{if(!r.nodeType)return this;r=r.innerHTML}else e&&(r=function(e){if(e.outerHTML)return e.outerHTML;var t=document.createElement(\"div\");return t.appendChild(e.cloneNode(!0)),t.innerHTML}(e));if(r){var i=is(r,{outputSourceRange:!1,shouldDecodeNewlines:as,shouldDecodeNewlinesForHref:ss,delimiters:n.delimiters,comments:n.comments},this),o=i.render,a=i.staticRenderFns;n.render=o,n.staticRenderFns=a}}return us.call(this,e,t)},Cn.compile=is,Cn});","var scope = (typeof global !== \"undefined\" && global) ||\n (typeof self !== \"undefined\" && self) ||\n window;\nvar apply = Function.prototype.apply;\n\n// DOM APIs, for completeness\n\nexports.setTimeout = function() {\n return new Timeout(apply.call(setTimeout, scope, arguments), clearTimeout);\n};\nexports.setInterval = function() {\n return new Timeout(apply.call(setInterval, scope, arguments), clearInterval);\n};\nexports.clearTimeout =\nexports.clearInterval = function(timeout) {\n if (timeout) {\n timeout.close();\n }\n};\n\nfunction Timeout(id, clearFn) {\n this._id = id;\n this._clearFn = clearFn;\n}\nTimeout.prototype.unref = Timeout.prototype.ref = function() {};\nTimeout.prototype.close = function() {\n this._clearFn.call(scope, this._id);\n};\n\n// Does not start the time, just sets up the members needed.\nexports.enroll = function(item, msecs) {\n clearTimeout(item._idleTimeoutId);\n item._idleTimeout = msecs;\n};\n\nexports.unenroll = function(item) {\n clearTimeout(item._idleTimeoutId);\n item._idleTimeout = -1;\n};\n\nexports._unrefActive = exports.active = function(item) {\n clearTimeout(item._idleTimeoutId);\n\n var msecs = item._idleTimeout;\n if (msecs >= 0) {\n item._idleTimeoutId = setTimeout(function onTimeout() {\n if (item._onTimeout)\n item._onTimeout();\n }, msecs);\n }\n};\n\n// setimmediate attaches itself to the global object\nrequire(\"setimmediate\");\n// On some exotic environments, it's not clear which object `setimmediate` was\n// able to install onto. Search each possibility in the same order as the\n// `setimmediate` library.\nexports.setImmediate = (typeof self !== \"undefined\" && self.setImmediate) ||\n (typeof global !== \"undefined\" && global.setImmediate) ||\n (this && this.setImmediate);\nexports.clearImmediate = (typeof self !== \"undefined\" && self.clearImmediate) ||\n (typeof global !== \"undefined\" && global.clearImmediate) ||\n (this && this.clearImmediate);\n","(function (global, undefined) {\n \"use strict\";\n\n if (global.setImmediate) {\n return;\n }\n\n var nextHandle = 1; // Spec says greater than zero\n var tasksByHandle = {};\n var currentlyRunningATask = false;\n var doc = global.document;\n var registerImmediate;\n\n function setImmediate(callback) {\n // Callback can either be a function or a string\n if (typeof callback !== \"function\") {\n callback = new Function(\"\" + callback);\n }\n // Copy function arguments\n var args = new Array(arguments.length - 1);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i + 1];\n }\n // Store and register the task\n var task = { callback: callback, args: args };\n tasksByHandle[nextHandle] = task;\n registerImmediate(nextHandle);\n return nextHandle++;\n }\n\n function clearImmediate(handle) {\n delete tasksByHandle[handle];\n }\n\n function run(task) {\n var callback = task.callback;\n var args = task.args;\n switch (args.length) {\n case 0:\n callback();\n break;\n case 1:\n callback(args[0]);\n break;\n case 2:\n callback(args[0], args[1]);\n break;\n case 3:\n callback(args[0], args[1], args[2]);\n break;\n default:\n callback.apply(undefined, args);\n break;\n }\n }\n\n function runIfPresent(handle) {\n // From the spec: \"Wait until any invocations of this algorithm started before this one have completed.\"\n // So if we're currently running a task, we'll need to delay this invocation.\n if (currentlyRunningATask) {\n // Delay by doing a setTimeout. setImmediate was tried instead, but in Firefox 7 it generated a\n // \"too much recursion\" error.\n setTimeout(runIfPresent, 0, handle);\n } else {\n var task = tasksByHandle[handle];\n if (task) {\n currentlyRunningATask = true;\n try {\n run(task);\n } finally {\n clearImmediate(handle);\n currentlyRunningATask = false;\n }\n }\n }\n }\n\n function installNextTickImplementation() {\n registerImmediate = function(handle) {\n process.nextTick(function () { runIfPresent(handle); });\n };\n }\n\n function canUsePostMessage() {\n // The test against `importScripts` prevents this implementation from being installed inside a web worker,\n // where `global.postMessage` means something completely different and can't be used for this purpose.\n if (global.postMessage && !global.importScripts) {\n var postMessageIsAsynchronous = true;\n var oldOnMessage = global.onmessage;\n global.onmessage = function() {\n postMessageIsAsynchronous = false;\n };\n global.postMessage(\"\", \"*\");\n global.onmessage = oldOnMessage;\n return postMessageIsAsynchronous;\n }\n }\n\n function installPostMessageImplementation() {\n // Installs an event handler on `global` for the `message` event: see\n // * https://developer.mozilla.org/en/DOM/window.postMessage\n // * http://www.whatwg.org/specs/web-apps/current-work/multipage/comms.html#crossDocumentMessages\n\n var messagePrefix = \"setImmediate$\" + Math.random() + \"$\";\n var onGlobalMessage = function(event) {\n if (event.source === global &&\n typeof event.data === \"string\" &&\n event.data.indexOf(messagePrefix) === 0) {\n runIfPresent(+event.data.slice(messagePrefix.length));\n }\n };\n\n if (global.addEventListener) {\n global.addEventListener(\"message\", onGlobalMessage, false);\n } else {\n global.attachEvent(\"onmessage\", onGlobalMessage);\n }\n\n registerImmediate = function(handle) {\n global.postMessage(messagePrefix + handle, \"*\");\n };\n }\n\n function installMessageChannelImplementation() {\n var channel = new MessageChannel();\n channel.port1.onmessage = function(event) {\n var handle = event.data;\n runIfPresent(handle);\n };\n\n registerImmediate = function(handle) {\n channel.port2.postMessage(handle);\n };\n }\n\n function installReadyStateChangeImplementation() {\n var html = doc.documentElement;\n registerImmediate = function(handle) {\n // Create a