import { d as dt, g as ht } from "./main-CZEa_tPp.js";
var lt = { exports: {} };
(function(ct, gt) {
  (function(je, Re) {
    ct.exports = Re();
  })(typeof self < "u" ? self : dt, function() {
    return function(je) {
      function Re(pe) {
        if (Ie[pe]) return Ie[pe].exports;
        var xe = Ie[pe] = { i: pe, l: !1, exports: {} };
        return je[pe].call(xe.exports, xe, xe.exports, Re), xe.l = !0, xe.exports;
      }
      var Ie = {};
      return Re.m = je, Re.c = Ie, Re.d = function(pe, xe, Oe) {
        Re.o(pe, xe) || Object.defineProperty(pe, xe, { configurable: !1, enumerable: !0, get: Oe });
      }, Re.n = function(pe) {
        var xe = pe && pe.__esModule ? function() {
          return pe.default;
        } : function() {
          return pe;
        };
        return Re.d(xe, "a", xe), xe;
      }, Re.o = function(pe, xe) {
        return Object.prototype.hasOwnProperty.call(pe, xe);
      }, Re.p = "./dist/", Re(Re.s = 5);
    }([function(je, Re) {
      je.exports = "data:image/svg+xml;base64, ";
    }, function(je, Re) {
      je.exports = function(Ie) {
        return typeof Ie != "string" ? Ie : (/^['"].*['"]$/.test(Ie) && (Ie = Ie.slice(1, -1)), /["'() \t\n]/.test(Ie) ? '"' + Ie.replace(/"/g, '\\"').replace(/\n/g, "\\n") + '"' : Ie);
      };
    }, function(je, Re) {
      function Ie(xe, Oe) {
        var F = xe[1] || "", u = xe[3];
        if (!u) return F;
        if (Oe && typeof btoa == "function") {
          var D = pe(u);
          return [F].concat(u.sources.map(function(j) {
            return "/*# sourceURL=" + u.sourceRoot + j + " */";
          })).concat([D]).join(`
`);
        }
        return [F].join(`
`);
      }
      function pe(xe) {
        return "/*# sourceMappingURL=data:application/json;charset=utf-8;base64," + btoa(unescape(encodeURIComponent(JSON.stringify(xe)))) + " */";
      }
      je.exports = function(xe) {
        var Oe = [];
        return Oe.toString = function() {
          return this.map(function(F) {
            var u = Ie(F, xe);
            return F[2] ? "@media " + F[2] + "{" + u + "}" : u;
          }).join("");
        }, Oe.i = function(F, u) {
          typeof F == "string" && (F = [[null, F, ""]]);
          for (var D = {}, j = 0; j < this.length; j++) {
            var m = this[j][0];
            typeof m == "number" && (D[m] = !0);
          }
          for (j = 0; j < F.length; j++) {
            var E = F[j];
            typeof E[0] == "number" && D[E[0]] || (u && !E[2] ? E[2] = u : u && (E[2] = "(" + E[2] + ") and (" + u + ")"), Oe.push(E));
          }
        }, Oe;
      };
    }, function(je, Re, Ie) {
      function pe(s) {
        for (var h = 0; h < s.length; h++) {
          var r = s[h], p = m[r.id];
          if (p) {
            p.refs++;
            for (var l = 0; l < p.parts.length; l++) p.parts[l](r.parts[l]);
            for (; l < r.parts.length; l++) p.parts.push(Oe(r.parts[l]));
            p.parts.length > r.parts.length && (p.parts.length = r.parts.length);
          } else {
            for (var I = [], l = 0; l < r.parts.length; l++) I.push(Oe(r.parts[l]));
            m[r.id] = { id: r.id, refs: 1, parts: I };
          }
        }
      }
      function xe() {
        var s = document.createElement("style");
        return s.type = "text/css", E.appendChild(s), s;
      }
      function Oe(s) {
        var h, r, p = document.querySelector("style[" + e + '~="' + s.id + '"]');
        if (p) {
          if (d) return a;
          p.parentNode.removeChild(p);
        }
        if (t) {
          var l = w++;
          p = b || (b = xe()), h = F.bind(null, p, l, !1), r = F.bind(null, p, l, !0);
        } else p = xe(), h = u.bind(null, p), r = function() {
          p.parentNode.removeChild(p);
        };
        return h(s), function(I) {
          if (I) {
            if (I.css === s.css && I.media === s.media && I.sourceMap === s.sourceMap) return;
            h(s = I);
          } else r();
        };
      }
      function F(s, h, r, p) {
        var l = r ? "" : p.css;
        if (s.styleSheet) s.styleSheet.cssText = i(h, l);
        else {
          var I = document.createTextNode(l), f = s.childNodes;
          f[h] && s.removeChild(f[h]), f.length ? s.insertBefore(I, f[h]) : s.appendChild(I);
        }
      }
      function u(s, h) {
        var r = h.css, p = h.media, l = h.sourceMap;
        if (p && s.setAttribute("media", p), o.ssrId && s.setAttribute(e, h.id), l && (r += `
/*# sourceURL=` + l.sources[0] + " */", r += `
/*# sourceMappingURL=data:application/json;base64,` + btoa(unescape(encodeURIComponent(JSON.stringify(l)))) + " */"), s.styleSheet) s.styleSheet.cssText = r;
        else {
          for (; s.firstChild; ) s.removeChild(s.firstChild);
          s.appendChild(document.createTextNode(r));
        }
      }
      var D = typeof document < "u";
      if (typeof DEBUG < "u" && DEBUG && !D) throw new Error("vue-style-loader cannot be used in a non-browser environment. Use { target: 'node' } in your Webpack config to indicate a server-rendering environment.");
      var j = Ie(10), m = {}, E = D && (document.head || document.getElementsByTagName("head")[0]), b = null, w = 0, d = !1, a = function() {
      }, o = null, e = "data-vue-ssr-id", t = typeof navigator < "u" && /msie [6-9]\b/.test(navigator.userAgent.toLowerCase());
      je.exports = function(s, h, r, p) {
        d = r, o = p || {};
        var l = j(s, h);
        return pe(l), function(I) {
          for (var f = [], n = 0; n < l.length; n++) {
            var g = l[n], C = m[g.id];
            C.refs--, f.push(C);
          }
          I ? (l = j(s, I), pe(l)) : l = [];
          for (var n = 0; n < f.length; n++) {
            var C = f[n];
            if (C.refs === 0) {
              for (var y = 0; y < C.parts.length; y++) C.parts[y]();
              delete m[C.id];
            }
          }
        };
      };
      var i = /* @__PURE__ */ function() {
        var s = [];
        return function(h, r) {
          return s[h] = r, s.filter(Boolean).join(`
`);
        };
      }();
    }, function(je, Re, Ie) {
      var pe = Ie(12), xe = Ie.n(pe), Oe = Ie(13);
      Ie.n(Oe), Re.a = { name: "v-jsoneditor", data: function() {
        return { editor: null, style: {}, max: !1, internalChange: !1 };
      }, props: { options: { type: Object, default: function() {
        return {};
      } }, value: [Object, Array, Number, String, Boolean], height: { type: String }, plus: { type: Boolean, default: !0 } }, methods: { onChange: function() {
        var F, u = this, D = null, j = {};
        try {
          j = this.editor.get();
        } catch (m) {
          D = m;
        }
        D ? this.$emit("error", D) : this.editor && (this.internalChange = !0, this.$emit("input", j), this.$nextTick(function() {
          u.internalChange = !1;
        })), this.options.onChange && (F = this.options).onChange.apply(F, arguments);
      }, initView: function() {
        if (!this.editor) {
          var F = this.$refs.jsoneditor, u = this.options.onChange;
          delete this.options.onChange;
          var D = Object.assign(this.options, { onChange: this.onChange });
          this.editor = new xe.a(F, D), this.options.onChange = u;
        }
        this.editor.set(this.value !== void 0 ? this.value : {});
      }, destroyView: function() {
        this.editor && (this.editor.destroy(), this.editor = null);
      } }, watch: { value: { handler: function(F) {
        this.editor && F !== void 0 && !this.internalChange && this.editor.set(F);
      }, deep: !0 }, max: function(F) {
        var u = this;
        this.$nextTick(function() {
          u.initView();
        });
      }, options: { handler: function(F) {
        this.options && this.options.mode && this.editor && this.editor.setMode(this.options.mode);
      }, deep: !0 } }, mounted: function() {
        this.initView();
      }, beforeDestroy: function() {
        this.destroyView();
      }, computed: { getHeight: function() {
        return this.height && !this.max ? { height: this.height } : {};
      } } };
    }, function(je, Re, Ie) {
      Object.defineProperty(Re, "__esModule", { value: !0 });
      var pe = Ie(6);
      Re.default = pe.a, pe.a.install = function(xe) {
        xe.component(pe.a.name, pe.a);
      }, typeof window < "u" && window.Vue && window.Vue.component(pe.a.name, pe.a);
    }, function(je, Re, Ie) {
      function pe(j) {
        Ie(7);
      }
      var xe = Ie(4), Oe = Ie(15), F = Ie(11), u = pe, D = F(xe.a, Oe.a, !1, u, "data-v-79481ed6", null);
      Re.a = D.exports;
    }, function(je, Re, Ie) {
      var pe = Ie(8);
      typeof pe == "string" && (pe = [[je.i, pe, ""]]), pe.locals && (je.exports = pe.locals), Ie(3)("a599bfce", pe, !0, {});
    }, function(je, Re, Ie) {
      var pe = Ie(1);
      Re = je.exports = Ie(2)(!1), Re.push([je.i, ".jsoneditor-container.max-box[data-v-79481ed6]{position:fixed;top:0;left:0;width:100%;height:100%;z-index:10000}.jsoneditor-container.min-box[data-v-79481ed6]{position:relative;min-width:300px;width:100%}.jsoneditor-box[data-v-79481ed6]{height:100%}.jsoneditor-container:hover .max-btn[data-v-79481ed6]{display:block}.max-btn[data-v-79481ed6]{display:none;position:absolute;top:7px;right:110px;color:#fff;width:24px;height:24px;background:transparent url(" + pe(Ie(9)) + ") no-repeat;background-position:3px;border:1px solid transparent;border-radius:3px}.max-btn[data-v-79481ed6]:hover{border:1px solid #d7e6fe}", ""]);
    }, function(je, Re) {
      je.exports = "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/PjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+PHN2ZyB0PSIxNTIzNzY1NTcxODU1IiBjbGFzcz0iaWNvbiIgc3R5bGU9IiIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHAtaWQ9IjE5MjciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiPjxkZWZzPjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+PC9zdHlsZT48L2RlZnM+PHBhdGggZD0iTTYzLjk4OTM4MyAxMDUuNDQyNDk0bDAgMjY4LjM5Njg0M2MwIDE4LjkzNTI1OCAxNS4zNjgwMTIgMzQuMzA0Mjk0IDM0LjMwNDI5NCAzNC4zMDQyOTQgMTguOTM2MjgxIDAgMzQuMzA0Mjk0LTE1LjM2OTAzNiAzNC4zMDQyOTQtMzQuMzA0Mjk0TDEzMi41OTc5NzEgMTgwLjE1NjEyNmwyMTguMTA3NDgzIDIxOC4xNzYwNDVjMTIuODI5MTkgMTIuODMwMjEzIDMzLjYxODY3OSAxMi44MzAyMTMgNDYuNTE1NDA3IDAgMTIuODMwMjEzLTEyLjg5Nzc1MSAxMi44MzAyMTMtMzMuNjg2MjE3IDAtNDYuNTE2NDNsLTIxOC4xNzYwNDUtMjE4LjEwNzQ4MyAxOTMuNjgzMjExIDBjMTguOTM1MjU4IDAgMzQuMzA0Mjk0LTE1LjM2OTAzNiAzNC4zMDQyOTQtMzQuMzA0Mjk0IDAtMTguOTM1MjU4LTE1LjM2OTAzNi0zNC4zMDQyOTQtMzQuMzA0Mjk0LTM0LjMwNDI5NEwxMDQuMzMxMTgzIDY1LjA5OTY3Qzc5LjI4ODgzNCA2NS4wOTk2NyA2My45ODkzODMgNzcuOTk5NDY4IDYzLjk4OTM4MyAxMDUuNDQyNDk0TDYzLjk4OTM4MyAxMDUuNDQyNDk0eiIgcC1pZD0iMTkyOCIgZmlsbD0iI2U2ZTZlNiI+PC9wYXRoPjxwYXRoIGQ9Ik05MTcuNjg4NzE5IDY1LjA5OTY3IDY0OS4yOTA4NTMgNjUuMDk5NjdjLTE4LjkzNTI1OCAwLTM0LjMwNDI5NCAxNS4zNjkwMzYtMzQuMzA0Mjk0IDM0LjMwNDI5NCAwIDE4LjkzNjI4MSAxNS4zNjkwMzYgMzQuMzA0Mjk0IDM0LjMwNDI5NCAzNC4zMDQyOTRsMTkzLjY4MzIxMSAwLTIxOC4xNzYwNDUgMjE4LjEwNzQ4M2MtMTIuODMwMjEzIDEyLjgyOTE5LTEyLjgzMDIxMyAzMy42MTg2NzkgMCA0Ni41MTY0MyAxMi44OTc3NTEgMTIuODMwMjEzIDMzLjY4NjIxNyAxMi44MzAyMTMgNDYuNTE1NDA3IDBMODg5LjQyMDkwOSAxODAuMTU2MTI2bDAgMTkzLjY4MzIxMWMwIDE4LjkzNTI1OCAxNS4zNjkwMzYgMzQuMzA0Mjk0IDM0LjMwNDI5NCAzNC4zMDQyOTQgMTguOTM2MjgxIDAgMzQuMzA0Mjk0LTE1LjM2OTAzNiAzNC4zMDQyOTQtMzQuMzA0Mjk0TDk1OC4wMjk0OTYgMTA1LjQ0MjQ5NEM5NTguMDI5NDk2IDc3Ljk5OTQ2OCA5NDIuNzk5NjMgNjUuMDk5NjcgOTE3LjY4ODcxOSA2NS4wOTk2N0w5MTcuNjg4NzE5IDY1LjA5OTY3eiIgcC1pZD0iMTkyOSIgZmlsbD0iI2U2ZTZlNiI+PC9wYXRoPjxwYXRoIGQ9Ik0xMDQuMzMxMTgzIDk1Ny4wMTMzNTNsMjY4LjM5Nzg2NiAwYzE4LjkzNTI1OCAwIDM0LjMwNDI5NC0xNS4zNjgwMTIgMzQuMzA0Mjk0LTM0LjMwNDI5NCAwLTE4LjkzNjI4MS0xNS4zNjkwMzYtMzQuMzA0Mjk0LTM0LjMwNDI5NC0zNC4zMDQyOTRMMTc5LjA0NTgzOSA4ODguNDA0NzY2bDIxOC4xNzYwNDUtMjE4LjEwNzQ4M2MxMi44MzAyMTMtMTIuODI5MTkgMTIuODMwMjEzLTMzLjYxODY3OSAwLTQ2LjUxNTQwNy0xMi44OTc3NTEtMTIuODMwMjEzLTMzLjY4NjIxNy0xMi44MzAyMTMtNDYuNTE1NDA3IDBsLTIxOC4xMDc0ODMgMjE4LjE3NjA0NUwxMzIuNTk4OTk0IDY0OC4yNzQ3MWMwLTE4LjkzNTI1OC0xNS4zNjgwMTItMzQuMzA0Mjk0LTM0LjMwNDI5NC0zNC4zMDQyOTQtMTguOTM2MjgxIDAtMzQuMzA0Mjk0IDE1LjM2OTAzNi0zNC4zMDQyOTQgMzQuMzA0Mjk0bDAgMjY4LjM5Nzg2NkM2My45ODkzODMgOTQ0LjExNTYwMiA3OS4yODg4MzQgOTU3LjAxMzM1MyAxMDQuMzMxMTgzIDk1Ny4wMTMzNTNMMTA0LjMzMTE4MyA5NTcuMDEzMzUzeiIgcC1pZD0iMTkzMCIgZmlsbD0iI2U2ZTZlNiI+PC9wYXRoPjxwYXRoIGQ9Ik05NTguMDI5NDk2IDkxNi42NzE1NTMgOTU4LjAyOTQ5NiA2NDguMjc0NzFjMC0xOC45MzUyNTgtMTUuMzY4MDEyLTM0LjMwNDI5NC0zNC4zMDQyOTQtMzQuMzA0Mjk0LTE4LjkzNTI1OCAwLTM0LjMwNDI5NCAxNS4zNjkwMzYtMzQuMzA0Mjk0IDM0LjMwNDI5NGwwIDE5My42ODMyMTFMNjcxLjMxMzQyNSA2MjMuNzgxODc2Yy0xMi44MjkxOS0xMi44MzAyMTMtMzMuNjE4Njc5LTEyLjgzMDIxMy00Ni41MTU0MDcgMC0xMi44MzAyMTMgMTIuODk3NzUxLTEyLjgzMDIxMyAzMy42ODYyMTcgMCA0Ni41MTU0MDdsMjE4LjE3NjA0NSAyMTguMTA3NDgzTDY0OS4yOTA4NTMgODg4LjQwNDc2NmMtMTguOTM1MjU4IDAtMzQuMzA0Mjk0IDE1LjM2ODAxMi0zNC4zMDQyOTQgMzQuMzA0Mjk0IDAgMTguOTM2MjgxIDE1LjM2OTAzNiAzNC4zMDQyOTQgMzQuMzA0Mjk0IDM0LjMwNDI5NGwyNjguMzk3ODY2IDBDOTQyLjc5OTYzIDk1Ny4wMTMzNTMgOTU4LjAyOTQ5NiA5NDQuMTE1NjAyIDk1OC4wMjk0OTYgOTE2LjY3MTU1M0w5NTguMDI5NDk2IDkxNi42NzE1NTN6IiBwLWlkPSIxOTMxIiBmaWxsPSIjZTZlNmU2Ij48L3BhdGg+PC9zdmc+";
    }, function(je, Re) {
      je.exports = function(Ie, pe) {
        for (var xe = [], Oe = {}, F = 0; F < pe.length; F++) {
          var u = pe[F], D = u[0], j = u[1], m = u[2], E = u[3], b = { id: Ie + ":" + F, css: j, media: m, sourceMap: E };
          Oe[D] ? Oe[D].parts.push(b) : xe.push(Oe[D] = { id: D, parts: [b] });
        }
        return xe;
      };
    }, function(je, Re) {
      je.exports = function(Ie, pe, xe, Oe, F, u) {
        var D, j = Ie = Ie || {}, m = typeof Ie.default;
        m !== "object" && m !== "function" || (D = Ie, j = Ie.default);
        var E = typeof j == "function" ? j.options : j;
        pe && (E.render = pe.render, E.staticRenderFns = pe.staticRenderFns, E._compiled = !0), xe && (E.functional = !0), F && (E._scopeId = F);
        var b;
        if (u ? (b = function(a) {
          a = a || this.$vnode && this.$vnode.ssrContext || this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext, a || typeof __VUE_SSR_CONTEXT__ > "u" || (a = __VUE_SSR_CONTEXT__), Oe && Oe.call(this, a), a && a._registeredComponents && a._registeredComponents.add(u);
        }, E._ssrRegister = b) : Oe && (b = Oe), b) {
          var w = E.functional, d = w ? E.render : E.beforeCreate;
          w ? (E._injectStyles = b, E.render = function(a, o) {
            return b.call(o), d(a, o);
          }) : E.beforeCreate = d ? [].concat(d, b) : [b];
        }
        return { esModule: D, exports: j, options: E };
      };
    }, function(je, Re, Ie) {
      /*!
      * jsoneditor.js
      *
      * @brief
      * JSONEditor is a web-based tool to view, edit, format, and validate JSON.
      * It has various modes such as a tree editor, a code editor, and a plain text
      * editor.
      *
      * Supported browsers: Chrome, Firefox, Safari, Opera, Internet Explorer 8+
      *
      * @license
      * Licensed under the Apache License, Version 2.0 (the "License"); you may not
      * use this file except in compliance with the License. You may obtain a copy
      * of the License at
      *
      * http://www.apache.org/licenses/LICENSE-2.0
      *
      * Unless required by applicable law or agreed to in writing, software
      * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
      * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
      * License for the specific language governing permissions and limitations under
      * the License.
      *
      * Copyright (c) 2011-2021 Jos de Jong, http://jsoneditoronline.org
      *
      * @author  Jos de Jong, <wjosdejong@gmail.com>
      * @version 9.5.3
      * @date    2021-07-28
      */
      (function(pe, xe) {
        je.exports = xe();
      })(self, function() {
        function pe(F) {
          var u = Oe[F];
          return u !== void 0 || (u = Oe[F] = { id: F, loaded: !1, exports: {} }, xe[F].call(u.exports, u, u.exports, pe), u.loaded = !0), u.exports;
        }
        return xe = { 6835: function(F) {
          F.exports = JSON.parse('{"$schema":"http://json-schema.org/draft-07/schema#","$id":"https://raw.githubusercontent.com/ajv-validator/ajv/master/lib/refs/data.json#","description":"Meta-schema for $data reference (JSON Schema extension proposal)","type":"object","required":["$data"],"properties":{"$data":{"type":"string","anyOf":[{"format":"relative-json-pointer"},{"format":"json-pointer"}]}},"additionalProperties":false}');
        }, 2689: function(F) {
          F.exports = JSON.parse('{"id":"http://json-schema.org/draft-04/schema#","$schema":"http://json-schema.org/draft-04/schema#","description":"Core schema meta-schema","definitions":{"schemaArray":{"type":"array","minItems":1,"items":{"$ref":"#"}},"positiveInteger":{"type":"integer","minimum":0},"positiveIntegerDefault0":{"allOf":[{"$ref":"#/definitions/positiveInteger"},{"default":0}]},"simpleTypes":{"enum":["array","boolean","integer","null","number","object","string"]},"stringArray":{"type":"array","items":{"type":"string"},"minItems":1,"uniqueItems":true}},"type":"object","properties":{"id":{"type":"string"},"$schema":{"type":"string"},"title":{"type":"string"},"description":{"type":"string"},"default":{},"multipleOf":{"type":"number","minimum":0,"exclusiveMinimum":true},"maximum":{"type":"number"},"exclusiveMaximum":{"type":"boolean","default":false},"minimum":{"type":"number"},"exclusiveMinimum":{"type":"boolean","default":false},"maxLength":{"$ref":"#/definitions/positiveInteger"},"minLength":{"$ref":"#/definitions/positiveIntegerDefault0"},"pattern":{"type":"string","format":"regex"},"additionalItems":{"anyOf":[{"type":"boolean"},{"$ref":"#"}],"default":{}},"items":{"anyOf":[{"$ref":"#"},{"$ref":"#/definitions/schemaArray"}],"default":{}},"maxItems":{"$ref":"#/definitions/positiveInteger"},"minItems":{"$ref":"#/definitions/positiveIntegerDefault0"},"uniqueItems":{"type":"boolean","default":false},"maxProperties":{"$ref":"#/definitions/positiveInteger"},"minProperties":{"$ref":"#/definitions/positiveIntegerDefault0"},"required":{"$ref":"#/definitions/stringArray"},"additionalProperties":{"anyOf":[{"type":"boolean"},{"$ref":"#"}],"default":{}},"definitions":{"type":"object","additionalProperties":{"$ref":"#"},"default":{}},"properties":{"type":"object","additionalProperties":{"$ref":"#"},"default":{}},"patternProperties":{"type":"object","additionalProperties":{"$ref":"#"},"default":{}},"dependencies":{"type":"object","additionalProperties":{"anyOf":[{"$ref":"#"},{"$ref":"#/definitions/stringArray"}]}},"enum":{"type":"array","minItems":1,"uniqueItems":true},"type":{"anyOf":[{"$ref":"#/definitions/simpleTypes"},{"type":"array","items":{"$ref":"#/definitions/simpleTypes"},"minItems":1,"uniqueItems":true}]},"format":{"type":"string"},"allOf":{"$ref":"#/definitions/schemaArray"},"anyOf":{"$ref":"#/definitions/schemaArray"},"oneOf":{"$ref":"#/definitions/schemaArray"},"not":{"$ref":"#"}},"dependencies":{"exclusiveMaximum":["maximum"],"exclusiveMinimum":["minimum"]},"default":{}}');
        }, 1030: function(F) {
          F.exports = JSON.parse('{"$schema":"http://json-schema.org/draft-06/schema#","$id":"http://json-schema.org/draft-06/schema#","title":"Core schema meta-schema","definitions":{"schemaArray":{"type":"array","minItems":1,"items":{"$ref":"#"}},"nonNegativeInteger":{"type":"integer","minimum":0},"nonNegativeIntegerDefault0":{"allOf":[{"$ref":"#/definitions/nonNegativeInteger"},{"default":0}]},"simpleTypes":{"enum":["array","boolean","integer","null","number","object","string"]},"stringArray":{"type":"array","items":{"type":"string"},"uniqueItems":true,"default":[]}},"type":["object","boolean"],"properties":{"$id":{"type":"string","format":"uri-reference"},"$schema":{"type":"string","format":"uri"},"$ref":{"type":"string","format":"uri-reference"},"title":{"type":"string"},"description":{"type":"string"},"default":{},"examples":{"type":"array","items":{}},"multipleOf":{"type":"number","exclusiveMinimum":0},"maximum":{"type":"number"},"exclusiveMaximum":{"type":"number"},"minimum":{"type":"number"},"exclusiveMinimum":{"type":"number"},"maxLength":{"$ref":"#/definitions/nonNegativeInteger"},"minLength":{"$ref":"#/definitions/nonNegativeIntegerDefault0"},"pattern":{"type":"string","format":"regex"},"additionalItems":{"$ref":"#"},"items":{"anyOf":[{"$ref":"#"},{"$ref":"#/definitions/schemaArray"}],"default":{}},"maxItems":{"$ref":"#/definitions/nonNegativeInteger"},"minItems":{"$ref":"#/definitions/nonNegativeIntegerDefault0"},"uniqueItems":{"type":"boolean","default":false},"contains":{"$ref":"#"},"maxProperties":{"$ref":"#/definitions/nonNegativeInteger"},"minProperties":{"$ref":"#/definitions/nonNegativeIntegerDefault0"},"required":{"$ref":"#/definitions/stringArray"},"additionalProperties":{"$ref":"#"},"definitions":{"type":"object","additionalProperties":{"$ref":"#"},"default":{}},"properties":{"type":"object","additionalProperties":{"$ref":"#"},"default":{}},"patternProperties":{"type":"object","additionalProperties":{"$ref":"#"},"default":{}},"dependencies":{"type":"object","additionalProperties":{"anyOf":[{"$ref":"#"},{"$ref":"#/definitions/stringArray"}]}},"propertyNames":{"$ref":"#"},"const":{},"enum":{"type":"array","minItems":1,"uniqueItems":true},"type":{"anyOf":[{"$ref":"#/definitions/simpleTypes"},{"type":"array","items":{"$ref":"#/definitions/simpleTypes"},"minItems":1,"uniqueItems":true}]},"format":{"type":"string"},"allOf":{"$ref":"#/definitions/schemaArray"},"anyOf":{"$ref":"#/definitions/schemaArray"},"oneOf":{"$ref":"#/definitions/schemaArray"},"not":{"$ref":"#"}},"default":{}}');
        }, 38: function(F) {
          F.exports = JSON.parse('{"$schema":"http://json-schema.org/draft-07/schema#","$id":"http://json-schema.org/draft-07/schema#","title":"Core schema meta-schema","definitions":{"schemaArray":{"type":"array","minItems":1,"items":{"$ref":"#"}},"nonNegativeInteger":{"type":"integer","minimum":0},"nonNegativeIntegerDefault0":{"allOf":[{"$ref":"#/definitions/nonNegativeInteger"},{"default":0}]},"simpleTypes":{"enum":["array","boolean","integer","null","number","object","string"]},"stringArray":{"type":"array","items":{"type":"string"},"uniqueItems":true,"default":[]}},"type":["object","boolean"],"properties":{"$id":{"type":"string","format":"uri-reference"},"$schema":{"type":"string","format":"uri"},"$ref":{"type":"string","format":"uri-reference"},"$comment":{"type":"string"},"title":{"type":"string"},"description":{"type":"string"},"default":true,"readOnly":{"type":"boolean","default":false},"examples":{"type":"array","items":true},"multipleOf":{"type":"number","exclusiveMinimum":0},"maximum":{"type":"number"},"exclusiveMaximum":{"type":"number"},"minimum":{"type":"number"},"exclusiveMinimum":{"type":"number"},"maxLength":{"$ref":"#/definitions/nonNegativeInteger"},"minLength":{"$ref":"#/definitions/nonNegativeIntegerDefault0"},"pattern":{"type":"string","format":"regex"},"additionalItems":{"$ref":"#"},"items":{"anyOf":[{"$ref":"#"},{"$ref":"#/definitions/schemaArray"}],"default":true},"maxItems":{"$ref":"#/definitions/nonNegativeInteger"},"minItems":{"$ref":"#/definitions/nonNegativeIntegerDefault0"},"uniqueItems":{"type":"boolean","default":false},"contains":{"$ref":"#"},"maxProperties":{"$ref":"#/definitions/nonNegativeInteger"},"minProperties":{"$ref":"#/definitions/nonNegativeIntegerDefault0"},"required":{"$ref":"#/definitions/stringArray"},"additionalProperties":{"$ref":"#"},"definitions":{"type":"object","additionalProperties":{"$ref":"#"},"default":{}},"properties":{"type":"object","additionalProperties":{"$ref":"#"},"default":{}},"patternProperties":{"type":"object","additionalProperties":{"$ref":"#"},"propertyNames":{"format":"regex"},"default":{}},"dependencies":{"type":"object","additionalProperties":{"anyOf":[{"$ref":"#"},{"$ref":"#/definitions/stringArray"}]}},"propertyNames":{"$ref":"#"},"const":true,"enum":{"type":"array","items":true,"minItems":1,"uniqueItems":true},"type":{"anyOf":[{"$ref":"#/definitions/simpleTypes"},{"type":"array","items":{"$ref":"#/definitions/simpleTypes"},"minItems":1,"uniqueItems":true}]},"format":{"type":"string"},"contentMediaType":{"type":"string"},"contentEncoding":{"type":"string"},"if":{"$ref":"#"},"then":{"$ref":"#"},"else":{"$ref":"#"},"allOf":{"$ref":"#/definitions/schemaArray"},"anyOf":{"$ref":"#/definitions/schemaArray"},"oneOf":{"$ref":"#/definitions/schemaArray"},"not":{"$ref":"#"}},"default":true}');
        }, 897: function(F, u, D) {
          function j(d, a) {
            for (var o = 0; o < a.length; o++) {
              var e = a[o];
              e.enumerable = e.enumerable || !1, e.configurable = !0, "value" in e && (e.writable = !0), Object.defineProperty(d, e.key, e);
            }
          }
          D.d(u, { x: function() {
            return w;
          } });
          var m = D(2602), E = D(9791), b = D(7907), w = function() {
            function d(e, t) {
              (function(r, p) {
                if (!(r instanceof p)) throw new TypeError("Cannot call a class as a function");
              })(this, d), this.dom = {};
              var i = this, s = this.dom;
              this.anchor = void 0, this.items = e, this.eventListeners = {}, this.selection = void 0, this.onClose = t ? t.close : void 0, this.limitHeight = !!t && t.limitHeight;
              var h = document.createElement("div");
              h.className = "jsoneditor-contextmenu-root", s.root = h, t = document.createElement("div"), t.className = "jsoneditor-contextmenu", s.menu = t, h.appendChild(t), h = document.createElement("ul"), h.className = "jsoneditor-menu", t.appendChild(h), s.list = h, s.items = [], t = document.createElement("button"), t.type = "button", s.focusButton = t, s = document.createElement("li"), s.style.overflow = "hidden", s.style.height = "0", s.appendChild(t), h.appendChild(s), function r(p, l, I) {
                I.forEach(function(f) {
                  var n, g, C, y, c, v, k;
                  f.type === "separator" ? ((C = document.createElement("div")).className = "jsoneditor-separator", (c = document.createElement("li")).appendChild(C), p.appendChild(c)) : (n = {}, g = document.createElement("li"), p.appendChild(g), (C = document.createElement("button")).type = "button", C.className = f.className, n.button = C, f.title && (C.title = f.title), f.click && (C.onclick = function(S) {
                    S.preventDefault(), i.hide(), f.click();
                  }), g.appendChild(C), f.submenu ? ((c = document.createElement("div")).className = "jsoneditor-icon", C.appendChild(c), (c = document.createElement("div")).className = "jsoneditor-text" + (f.click ? "" : " jsoneditor-right-margin"), c.appendChild(document.createTextNode(f.text)), C.appendChild(c), (y = f.click ? (C.className += " jsoneditor-default", (k = document.createElement("button")).type = "button", (n.buttonExpand = k).className = "jsoneditor-expand", (c = document.createElement("div")).className = "jsoneditor-expand", k.appendChild(c), g.appendChild(k), f.submenuTitle && (k.title = f.submenuTitle), k) : ((v = document.createElement("div")).className = "jsoneditor-expand", C.appendChild(v), C)).onclick = function(S) {
                    S.preventDefault(), i._onExpandItem(n), y.focus();
                  }, n.subItems = k = [], v = document.createElement("ul"), (n.ul = v).className = "jsoneditor-menu", v.style.height = "0", g.appendChild(v), r(v, k, f.submenu)) : ((k = document.createElement("div")).className = "jsoneditor-icon", C.appendChild(k), (k = document.createElement("div")).className = "jsoneditor-text", k.appendChild(document.createTextNode((0, b.Iu)(f.text))), C.appendChild(k)), l.push(n));
                });
              }(h, this.dom.items, e), this.maxHeight = 0, e.forEach(function(r) {
                r = 24 * (e.length + (r.submenu ? r.submenu.length : 0)), i.maxHeight = Math.max(i.maxHeight, r);
              });
            }
            var a, o;
            return a = d, (o = [{ key: "_getVisibleButtons", value: function() {
              var e = [], t = this;
              return this.dom.items.forEach(function(i) {
                e.push(i.button), i.buttonExpand && e.push(i.buttonExpand), i.subItems && i === t.expandedItem && i.subItems.forEach(function(s) {
                  e.push(s.button), s.buttonExpand && e.push(s.buttonExpand);
                });
              }), e;
            } }, { key: "show", value: function(e, t, i) {
              this.hide();
              var s = !0, p = e.parentNode, h = e.getBoundingClientRect(), r = p.getBoundingClientRect(), p = t.getBoundingClientRect(), l = this;
              this.dom.absoluteAnchor = (0, m.w)(e, t, function() {
                l.hide();
              }), h.bottom + this.maxHeight < p.bottom || h.top - this.maxHeight > p.top && (s = !1), i = i ? 0 : h.top - r.top, s ? (r = e.offsetHeight, this.dom.menu.style.left = "0", this.dom.menu.style.top = i + r + "px", this.dom.menu.style.bottom = "") : (this.dom.menu.style.left = "0", this.dom.menu.style.top = "", this.dom.menu.style.bottom = "0px"), this.limitHeight && (p = s ? p.bottom - h.bottom - 10 : h.top - p.top - 10, this.dom.list.style.maxHeight = p + "px", this.dom.list.style.overflowY = "auto"), this.dom.absoluteAnchor.appendChild(this.dom.root), this.selection = (0, E.getSelection)(), this.anchor = e, setTimeout(function() {
                l.dom.focusButton.focus();
              }, 0), d.visibleMenu && d.visibleMenu.hide(), d.visibleMenu = this;
            } }, { key: "hide", value: function() {
              this.dom.absoluteAnchor && (this.dom.absoluteAnchor.destroy(), delete this.dom.absoluteAnchor), this.dom.root.parentNode && (this.dom.root.parentNode.removeChild(this.dom.root), this.onClose && this.onClose()), d.visibleMenu === this && (d.visibleMenu = void 0);
            } }, { key: "_onExpandItem", value: function(e) {
              var t, i = this, s = e === this.expandedItem, h = this.expandedItem;
              h && (h.ul.style.height = "0", h.ul.style.padding = "", setTimeout(function() {
                i.expandedItem !== h && (h.ul.style.display = "", E.removeClassName)(h.ul.parentNode, "jsoneditor-selected");
              }, 300), this.expandedItem = void 0), s || ((t = e.ul).style.display = "block", t.clientHeight, setTimeout(function() {
                if (i.expandedItem === e) {
                  for (var r = 0, p = 0; p < t.childNodes.length; p++) r += t.childNodes[p].clientHeight;
                  t.style.height = r + "px", t.style.padding = "5px 10px";
                }
              }, 0), (0, E.addClassName)(t.parentNode, "jsoneditor-selected"), this.expandedItem = e);
            } }, { key: "_onKeyDown", value: function(e) {
              var t, i, s, h, r = e.target, p = e.which, l = !1;
              p === 27 ? (this.selection && (0, E.setSelection)(this.selection), this.anchor && this.anchor.focus(), this.hide(), l = !0) : p === 9 ? e.shiftKey ? (i = (t = this._getVisibleButtons()).indexOf(r)) === 0 && (t[t.length - 1].focus(), l = !0) : (i = (t = this._getVisibleButtons()).indexOf(r)) === t.length - 1 && (t[0].focus(), l = !0) : p === 37 ? (r.className === "jsoneditor-expand" && (i = (t = this._getVisibleButtons()).indexOf(r), (s = t[i - 1]) && s.focus()), l = !0) : p === 38 ? (i = (t = this._getVisibleButtons()).indexOf(r), (s = (s = (s = t[i - 1]) && s.className === "jsoneditor-expand" ? t[i - 2] : s) || t[t.length - 1]) && s.focus(), l = !0) : p === 39 ? (i = (t = this._getVisibleButtons()).indexOf(r), (h = t[i + 1]) && h.className === "jsoneditor-expand" && h.focus(), l = !0) : p === 40 && (i = (t = this._getVisibleButtons()).indexOf(r), (h = (h = (h = t[i + 1]) && h.className === "jsoneditor-expand" ? t[i + 2] : h) || t[0]) && (h.focus(), l = !0), l = !0), l && (e.stopPropagation(), e.preventDefault());
            } }]) && j(a.prototype, o), d;
          }();
          w.visibleMenu = void 0;
        }, 6436: function(F, u, D) {
          function j(E, b) {
            for (var w = 0; w < b.length; w++) {
              var d = b[w];
              d.enumerable = d.enumerable || !1, d.configurable = !0, "value" in d && (d.writable = !0), Object.defineProperty(E, d.key, d);
            }
          }
          D.d(u, { Q: function() {
            return m;
          } });
          var m = function() {
            function E(d) {
              (function(o, e) {
                if (!(o instanceof e)) throw new TypeError("Cannot call a class as a function");
              })(this, E), this.errorTableVisible = d.errorTableVisible, this.onToggleVisibility = d.onToggleVisibility, this.onFocusLine = d.onFocusLine || function() {
              }, this.onChangeHeight = d.onChangeHeight, this.dom = {};
              var a = document.createElement("div");
              a.className = "jsoneditor-validation-errors-container", this.dom.validationErrorsContainer = a, d = document.createElement("div"), d.style.display = "none", d.className = "jsoneditor-additional-errors fadein", d.textContent = "Scroll for more ▿", this.dom.additionalErrorsIndication = d, a.appendChild(d), d = document.createElement("span"), d.className = "jsoneditor-validation-error-icon", d.style.display = "none", this.dom.validationErrorIcon = d, d = document.createElement("span"), d.className = "jsoneditor-validation-error-count", d.style.display = "none", this.dom.validationErrorCount = d, this.dom.parseErrorIndication = document.createElement("span"), this.dom.parseErrorIndication.className = "jsoneditor-parse-error-icon", this.dom.parseErrorIndication.style.display = "none";
            }
            var b, w;
            return b = E, (w = [{ key: "getErrorTable", value: function() {
              return this.dom.validationErrorsContainer;
            } }, { key: "getErrorCounter", value: function() {
              return this.dom.validationErrorCount;
            } }, { key: "getWarningIcon", value: function() {
              return this.dom.validationErrorIcon;
            } }, { key: "getErrorIcon", value: function() {
              return this.dom.parseErrorIndication;
            } }, { key: "toggleTableVisibility", value: function() {
              this.errorTableVisible = !this.errorTableVisible, this.onToggleVisibility(this.errorTableVisible);
            } }, { key: "setErrors", value: function(d, a) {
              var o, e, t = this;
              this.dom.validationErrors && (this.dom.validationErrors.parentNode.removeChild(this.dom.validationErrors), this.dom.validationErrors = null, this.dom.additionalErrorsIndication.style.display = "none"), this.errorTableVisible && 0 < d.length ? ((i = document.createElement("div")).className = "jsoneditor-validation-errors", (o = document.createElement("table")).className = "jsoneditor-text-errors", i.appendChild(o), e = document.createElement("tbody"), o.appendChild(e), d.forEach(function(s) {
                var h;
                isNaN(s.line) ? !s.dataPath || (p = a.find(function(n) {
                  return n.path === s.dataPath;
                })) && (h = p.line + 1) : h = s.line;
                var r = document.createElement("tr");
                r.className = isNaN(h) ? "" : "jump-to-line", s.type === "error" ? r.className += " parse-error" : r.className += " validation-error";
                var f = document.createElement("td"), p = document.createElement("button");
                p.className = "jsoneditor-schema-error", f.appendChild(p), r.appendChild(f);
                var l, I, f = document.createElement("td");
                f.style = "white-space: nowrap;", f.textContent = isNaN(h) ? "" : "Ln " + h, r.appendChild(f), typeof s == "string" ? ((l = document.createElement("td")).colSpan = 2, (I = document.createElement("pre")).appendChild(document.createTextNode(s)), l.appendChild(I), r.appendChild(l)) : ((I = document.createElement("td")).appendChild(document.createTextNode(s.dataPath || "")), r.appendChild(I), l = document.createElement("td"), (I = document.createElement("pre")).appendChild(document.createTextNode(s.message)), l.appendChild(I), r.appendChild(l)), r.onclick = function() {
                  t.onFocusLine(h);
                }, e.appendChild(r);
              }), this.dom.validationErrors = i, this.dom.validationErrorsContainer.appendChild(i), this.dom.additionalErrorsIndication.title = d.length + " errors total", this.dom.validationErrorsContainer.clientHeight < this.dom.validationErrorsContainer.scrollHeight ? (this.dom.additionalErrorsIndication.style.display = "block", this.dom.validationErrorsContainer.onscroll = function() {
                t.dom.additionalErrorsIndication.style.display = 0 < t.dom.validationErrorsContainer.clientHeight && t.dom.validationErrorsContainer.scrollTop === 0 ? "block" : "none";
              }) : this.dom.validationErrorsContainer.onscroll = void 0, i = this.dom.validationErrorsContainer.clientHeight + (this.dom.statusBar ? this.dom.statusBar.clientHeight : 0), this.onChangeHeight(i)) : this.onChangeHeight(0);
              var i = d.filter(function(s) {
                return s.type !== "error";
              }).length;
              0 < i ? (this.dom.validationErrorCount.style.display = "inline", this.dom.validationErrorCount.innerText = i, this.dom.validationErrorCount.onclick = this.toggleTableVisibility.bind(this), this.dom.validationErrorIcon.style.display = "inline", this.dom.validationErrorIcon.title = i + " schema validation error(s) found", this.dom.validationErrorIcon.onclick = this.toggleTableVisibility.bind(this)) : (this.dom.validationErrorCount.style.display = "none", this.dom.validationErrorIcon.style.display = "none"), d.some(function(s) {
                return s.type === "error";
              }) ? (d = d[0].line, this.dom.parseErrorIndication.style.display = "block", this.dom.parseErrorIndication.title = isNaN(d) ? "parse error - check that the json is valid" : "parse error on line " + d, this.dom.parseErrorIndication.onclick = this.toggleTableVisibility.bind(this)) : this.dom.parseErrorIndication.style.display = "none";
            } }]) && j(b.prototype, w), E;
          }();
        }, 2474: function(F, u, D) {
          function j(E, b) {
            for (var w = 0; w < b.length; w++) {
              var d = b[w];
              d.enumerable = d.enumerable || !1, d.configurable = !0, "value" in d && (d.writable = !0), Object.defineProperty(E, d.key, d);
            }
          }
          D.d(u, { R: function() {
            return m;
          } });
          var m = function() {
            function E(d) {
              if (function(a, o) {
                if (!(a instanceof o)) throw new TypeError("Cannot call a class as a function");
              }(this, E), this.target = d.target || null, !this.target) throw new Error('FocusTracker constructor called without a "target" to track.');
              this.onFocus = typeof d.onFocus == "function" ? d.onFocus : null, this.onBlur = typeof d.onBlur == "function" ? d.onBlur : null, this._onClick = this._onEvent.bind(this), this._onKeyUp = (function(a) {
                a.which !== 9 && a.keyCode !== 9 || this._onEvent(a);
              }).bind(this), this.focusFlag = !1, this.firstEventFlag = !0, (this.onFocus || this.onBlur) && (document.addEventListener("click", this._onClick), document.addEventListener("keyup", this._onKeyUp));
            }
            var b, w;
            return b = E, (w = [{ key: "destroy", value: function() {
              document.removeEventListener("click", this._onClick), document.removeEventListener("keyup", this._onKeyUp), this._onEvent({ target: document.body });
            } }, { key: "_onEvent", value: function(d) {
              d = d.target, d = d === this.target || !(!this.target.contains(d) && !this.target.contains(document.activeElement)), d ? this.focusFlag || (this.onFocus && this.onFocus({ type: "focus", target: this.target }), this.focusFlag = !0) : (this.focusFlag || this.firstEventFlag) && (this.onBlur && this.onBlur({ type: "blur", target: this.target }), this.focusFlag = !1, this.firstEventFlag && (this.firstEventFlag = !1));
            } }]) && j(b.prototype, w), E;
          }();
        }, 3161: function(F, u, D) {
          function j(l, I, f) {
            if (!(this instanceof j)) throw new Error('JSONEditor constructor called without "new".');
            var n = t();
            if (n !== -1 && n < 9) throw new Error("Unsupported browser, IE9 or newer required. Please install the newest version of your browser.");
            I && (I.error && (console.warn('Option "error" has been renamed to "onError"'), I.onError = I.error, delete I.error), I.change && (console.warn('Option "change" has been renamed to "onChange"'), I.onChange = I.change, delete I.change), I.editable && (console.warn('Option "editable" has been renamed to "onEditable"'), I.onEditable = I.editable, delete I.editable), I.onChangeJSON && (I.mode !== "text" && I.mode !== "code" && (!I.modes || I.modes.indexOf("text") === -1 && I.modes.indexOf("code") === -1) || console.warn('Option "onChangeJSON" is not applicable to modes "text" and "code". Use "onChangeText" or "onChange" instead.')), I && Object.keys(I).forEach(function(g) {
              j.VALID_OPTIONS.indexOf(g) === -1 && console.warn('Unknown option "' + g + '". This option will be ignored');
            })), arguments.length && this._create(l, I, f);
          }
          var m = D(8170), E = D(8037), b = D(8038).treeModeMixins, w = D(5956).textModeMixins, d = D(341).previewModeMixins, r = D(9791), a = r.clear, o = r.extend, e = r.getInnerText, t = r.getInternetExplorerVersion, i = r.parse, s = D(2744).tryRequireAjv, h = D(2558).showTransformModal, r = D(6210).showSortModal, p = s();
          typeof Promise > "u" && console.error("Promise undefined. Please load a Promise polyfill in the browser in order to use JSONEditor"), j.modes = {}, j.prototype.DEBOUNCE_INTERVAL = 150, j.VALID_OPTIONS = ["ajv", "schema", "schemaRefs", "templates", "ace", "theme", "autocomplete", "onChange", "onChangeJSON", "onChangeText", "onEditable", "onError", "onEvent", "onModeChange", "onNodeName", "onValidate", "onCreateMenu", "onSelectionChange", "onTextSelectionChange", "onClassName", "onFocus", "onBlur", "colorPicker", "onColorPicker", "timestampTag", "timestampFormat", "escapeUnicode", "history", "search", "mode", "modes", "name", "indentation", "sortObjectKeys", "navigationBar", "statusBar", "mainMenuBar", "languages", "language", "enableSort", "enableTransform", "limitDragging", "maxVisibleChilds", "onValidationError", "modalAnchor", "popupAnchor", "createQuery", "executeQuery", "queryDescription"], j.prototype._create = function(l, I, f) {
            this.container = l, this.options = I || {}, this.json = f || {}, f = this.options.mode || this.options.modes && this.options.modes[0] || "tree", this.setMode(f);
          }, j.prototype.destroy = function() {
          }, j.prototype.set = function(l) {
            this.json = l;
          }, j.prototype.get = function() {
            return this.json;
          }, j.prototype.setText = function(l) {
            this.json = i(l);
          }, j.prototype.getText = function() {
            return JSON.stringify(this.json);
          }, j.prototype.setName = function(l) {
            this.options || (this.options = {}), this.options.name = l;
          }, j.prototype.getName = function() {
            return this.options && this.options.name;
          }, j.prototype.setMode = function(l) {
            if (l !== this.options.mode || !this.create) {
              var I = this.container, f = o({}, this.options), n = f.mode;
              f.mode = l;
              var g = j.modes[l];
              if (!g) throw new Error('Unknown mode "' + f.mode + '"');
              try {
                var C = g.data === "text", y = this.getName(), c = this[C ? "getText" : "get"]();
                if (this.destroy(), a(this), o(this, g.mixin), this.create(I, f), this.setName(y), this[C ? "setText" : "set"](c), typeof g.load == "function") try {
                  g.load.call(this);
                } catch (v) {
                  console.error(v);
                }
                if (typeof f.onModeChange == "function" && l !== n) try {
                  f.onModeChange(l, n);
                } catch (v) {
                  console.error(v);
                }
              } catch (v) {
                this._onError(v);
              }
            }
          }, j.prototype.getMode = function() {
            return this.options.mode;
          }, j.prototype._onError = function(l) {
            if (!this.options || typeof this.options.onError != "function") throw l;
            this.options.onError(l);
          }, j.prototype.setSchema = function(l, I) {
            if (l) {
              var f;
              try {
                this.options.ajv ? f = this.options.ajv : ((f = p({ allErrors: !0, verbose: !0, schemaId: "auto", $data: !0 })).addMetaSchema(D(2689)), f.addMetaSchema(D(1030)));
              } catch {
                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`.");
              }
              if (f) {
                if (I) {
                  for (var n in I) f.removeSchema(n), I[n] && f.addSchema(I[n], n);
                  this.options.schemaRefs = I;
                }
                this.validateSchema = f.compile(l), this.options.schema = l, this.validate();
              }
              this.refresh();
            } else this.validateSchema = null, this.options.schema = null, this.options.schemaRefs = null, this.validate(), this.refresh();
          }, j.prototype.validate = function() {
          }, j.prototype.refresh = function() {
          }, j.registerMode = function(l) {
            var I;
            if (Array.isArray(l)) for (g = 0; g < l.length; g++) j.registerMode(l[g]);
            else {
              if (!("mode" in l)) throw new Error('Property "mode" missing');
              if (!("mixin" in l)) throw new Error('Property "mixin" missing');
              if (!("data" in l)) throw new Error('Property "data" missing');
              var f = l.mode;
              if (f in j.modes) throw new Error('Mode "' + f + '" already registered');
              if (typeof l.mixin.create != "function") throw new Error('Required function "create" missing on mixin');
              for (var n = ["setMode", "registerMode", "modes"], g = 0; g < n.length; g++) if ((I = n[g]) in l.mixin) throw new Error('Reserved property "' + I + '" not allowed in mixin');
              j.modes[f] = l;
            }
          }, j.registerMode(b), j.registerMode(w), j.registerMode(d), j.ace = m, j.Ajv = p, j.VanillaPicker = E, j.showTransformModal = h, j.showSortModal = r, j.getInnerText = e, j.default = j, F.exports = j;
        }, 6617: function(F, u, D) {
          function j(w, d) {
            for (var a = 0; a < d.length; a++) {
              var o = d[a];
              o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(w, o.key, o);
            }
          }
          D.d(u, { x: function() {
            return b;
          } });
          var m = D(897), E = D(7907), b = function() {
            function w(o, e, t, i) {
              (function(n, g) {
                if (!(n instanceof g)) throw new TypeError("Cannot call a class as a function");
              })(this, w);
              for (var s = { code: { text: (0, E.Iu)("modeCodeText"), title: (0, E.Iu)("modeCodeTitle"), click: function() {
                i("code");
              } }, form: { text: (0, E.Iu)("modeFormText"), title: (0, E.Iu)("modeFormTitle"), click: function() {
                i("form");
              } }, text: { text: (0, E.Iu)("modeTextText"), title: (0, E.Iu)("modeTextTitle"), click: function() {
                i("text");
              } }, tree: { text: (0, E.Iu)("modeTreeText"), title: (0, E.Iu)("modeTreeTitle"), click: function() {
                i("tree");
              } }, view: { text: (0, E.Iu)("modeViewText"), title: (0, E.Iu)("modeViewTitle"), click: function() {
                i("view");
              } }, preview: { text: (0, E.Iu)("modePreviewText"), title: (0, E.Iu)("modePreviewTitle"), click: function() {
                i("preview");
              } } }, h = [], r = 0; r < e.length; r++) {
                var p = e[r], l = s[p];
                if (!l) throw new Error('Unknown mode "' + p + '"');
                l.className = "jsoneditor-type-modes" + (t === p ? " jsoneditor-selected" : ""), h.push(l);
              }
              var I = s[t];
              if (!I) throw new Error('Unknown mode "' + t + '"');
              var I = I.text, f = document.createElement("button");
              f.type = "button", f.className = "jsoneditor-modes jsoneditor-separator", f.textContent = I + " ▾", f.title = (0, E.Iu)("modeEditorTitle"), f.onclick = function() {
                new m.x(h).show(f, o);
              }, I = document.createElement("div"), I.className = "jsoneditor-modes", I.style.position = "relative", I.appendChild(f), o.appendChild(I), this.dom = { container: o, box: f, frame: I };
            }
            var d, a;
            return d = w, (a = [{ key: "focus", value: function() {
              this.dom.box.focus();
            } }, { key: "destroy", value: function() {
              this.dom && this.dom.frame && this.dom.frame.parentNode && this.dom.frame.parentNode.removeChild(this.dom.frame), this.dom = null;
            } }]) && j(d.prototype, a), w;
          }();
        }, 8170: function(F, u, D) {
          var j;
          if (window.ace) j = window.ace;
          else try {
            j = D(6225), D(4091), D(3330);
            var m = D(7923);
            j.config.setModuleUrl("ace/mode/json_worker", m);
          } catch {
          }
          F.exports = j;
        }, 4864: function() {
          window.ace.define("ace/theme/jsoneditor", ["require", "exports", "module", "ace/lib/dom"], function(F, u, D) {
            u.isDark = !1, u.cssClass = "ace-jsoneditor", u.cssText = `.ace-jsoneditor .ace_gutter {
background: #ebebeb;
color: #333
}

.ace-jsoneditor.ace_editor {
font-family: "dejavu sans mono", "droid sans mono", consolas, monaco, "lucida console", "courier new", courier, monospace, sans-serif;
line-height: 1.3;
background-color: #fff;
}
.ace-jsoneditor .ace_print-margin {
width: 1px;
background: #e8e8e8
}
.ace-jsoneditor .ace_scroller {
background-color: #FFFFFF
}
.ace-jsoneditor .ace_text-layer {
color: gray
}
.ace-jsoneditor .ace_variable {
color: #1a1a1a
}
.ace-jsoneditor .ace_cursor {
border-left: 2px solid #000000
}
.ace-jsoneditor .ace_overwrite-cursors .ace_cursor {
border-left: 0px;
border-bottom: 1px solid #000000
}
.ace-jsoneditor .ace_marker-layer .ace_selection {
background: lightgray
}
.ace-jsoneditor.ace_multiselect .ace_selection.ace_start {
box-shadow: 0 0 3px 0px #FFFFFF;
border-radius: 2px
}
.ace-jsoneditor .ace_marker-layer .ace_step {
background: rgb(255, 255, 0)
}
.ace-jsoneditor .ace_marker-layer .ace_bracket {
margin: -1px 0 0 -1px;
border: 1px solid #BFBFBF
}
.ace-jsoneditor .ace_marker-layer .ace_active-line {
background: #FFFBD1
}
.ace-jsoneditor .ace_gutter-active-line {
background-color : #dcdcdc
}
.ace-jsoneditor .ace_marker-layer .ace_selected-word {
border: 1px solid lightgray
}
.ace-jsoneditor .ace_invisible {
color: #BFBFBF
}
.ace-jsoneditor .ace_keyword,
.ace-jsoneditor .ace_meta,
.ace-jsoneditor .ace_support.ace_constant.ace_property-value {
color: #AF956F
}
.ace-jsoneditor .ace_keyword.ace_operator {
color: #484848
}
.ace-jsoneditor .ace_keyword.ace_other.ace_unit {
color: #96DC5F
}
.ace-jsoneditor .ace_constant.ace_language {
color: darkorange
}
.ace-jsoneditor .ace_constant.ace_numeric {
color: red
}
.ace-jsoneditor .ace_constant.ace_character.ace_entity {
color: #BF78CC
}
.ace-jsoneditor .ace_invalid {
color: #FFFFFF;
background-color: #FF002A;
}
.ace-jsoneditor .ace_fold {
background-color: #AF956F;
border-color: #000000
}
.ace-jsoneditor .ace_storage,
.ace-jsoneditor .ace_support.ace_class,
.ace-jsoneditor .ace_support.ace_function,
.ace-jsoneditor .ace_support.ace_other,
.ace-jsoneditor .ace_support.ace_type {
color: #C52727
}
.ace-jsoneditor .ace_string {
color: green
}
.ace-jsoneditor .ace_comment {
color: #BCC8BA
}
.ace-jsoneditor .ace_entity.ace_name.ace_tag,
.ace-jsoneditor .ace_entity.ace_other.ace_attribute-name {
color: #606060
}
.ace-jsoneditor .ace_markup.ace_underline {
text-decoration: underline
}
.ace-jsoneditor .ace_indent-guide {
background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==") right repeat-y
}`, F("../lib/dom").importCssString(u.cssText, u.cssClass);
          });
        }, 6589: function(F, u) {
          var D = function() {
            var j, m = { 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(E, b, w, d, a, o, e) {
              var t = o.length - 1;
              switch (a) {
                case 1:
                  this.$ = E.replace(/\\(\\|")/g, "$1").replace(/\\n/g, `
`).replace(/\\r/g, "\r").replace(/\\t/g, "	").replace(/\\v/g, "\v").replace(/\\f/g, "\f").replace(/\\b/g, "\b");
                  break;
                case 2:
                  this.$ = Number(E);
                  break;
                case 3:
                  this.$ = null;
                  break;
                case 4:
                  this.$ = !0;
                  break;
                case 5:
                  this.$ = !1;
                  break;
                case 6:
                  return this.$ = o[t - 1];
                case 13:
                  this.$ = {};
                  break;
                case 14:
                  this.$ = o[t - 1];
                  break;
                case 15:
                  this.$ = [o[t - 2], o[t]];
                  break;
                case 16:
                  this.$ = {}, this.$[o[t][0]] = o[t][1];
                  break;
                case 17:
                  this.$ = o[t - 2], o[t - 2][o[t][0]] = o[t][1];
                  break;
                case 18:
                  this.$ = [];
                  break;
                case 19:
                  this.$ = o[t - 1];
                  break;
                case 20:
                  this.$ = [o[t]];
                  break;
                case 21:
                  this.$ = o[t - 2], o[t - 2].push(o[t]);
              }
            }, 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(E, b) {
              throw new Error(E);
            }, parse: function(E) {
              function b() {
                var S = w.lexer.lex() || 1;
                return S = typeof S != "number" && w.symbols_[S] || S;
              }
              var w = this, d = [0], a = [null], o = [], e = this.table, t = "", i = 0, s = 0, h = 0;
              this.lexer.setInput(E), this.lexer.yy = this.yy, this.yy.lexer = this.lexer, this.lexer.yylloc === void 0 && (this.lexer.yylloc = {});
              var r = this.lexer.yylloc;
              o.push(r), typeof this.yy.parseError == "function" && (this.parseError = this.yy.parseError);
              for (var p, l, I, f, n, g, C, y, c, v = {}; ; ) {
                if (I = d[d.length - 1], (f = this.defaultActions[I] || (p == null && (p = b()), e[I] && e[I][p])) === void 0 || !f.length || !f[0]) {
                  if (!h) {
                    for (g in y = [], e[I]) this.terminals_[g] && 2 < g && y.push("'" + this.terminals_[g] + "'");
                    var k = "", k = this.lexer.showPosition ? "Parse error on line " + (i + 1) + `:
` + this.lexer.showPosition() + `
Expecting ` + y.join(", ") + ", got '" + this.terminals_[p] + "'" : "Parse error on line " + (i + 1) + ": Unexpected " + (p == 1 ? "end of input" : "'" + (this.terminals_[p] || p) + "'");
                    this.parseError(k, { text: this.lexer.match, token: this.terminals_[p] || p, line: this.lexer.yylineno, loc: r, expected: y });
                  }
                  if (h == 3) {
                    if (p == 1) throw new Error(k || "Parsing halted.");
                    s = this.lexer.yyleng, t = this.lexer.yytext, i = this.lexer.yylineno, r = this.lexer.yylloc, p = b();
                  }
                  for (; !("2" in e[I]); ) {
                    if (I == 0) throw new Error(k || "Parsing halted.");
                    c = 1, d.length = d.length - 2 * c, a.length = a.length - c, o.length = o.length - c, I = d[d.length - 1];
                  }
                  l = p, p = 2, f = e[I = d[d.length - 1]] && e[I][2], h = 3;
                }
                if (f[0] instanceof Array && 1 < f.length) throw new Error("Parse Error: multiple actions possible at state: " + I + ", token: " + p);
                switch (f[0]) {
                  case 1:
                    d.push(p), a.push(this.lexer.yytext), o.push(this.lexer.yylloc), d.push(f[1]), p = null, l ? (p = l, l = null) : (s = this.lexer.yyleng, t = this.lexer.yytext, i = this.lexer.yylineno, r = this.lexer.yylloc, 0 < h && h--);
                    break;
                  case 2:
                    if (C = this.productions_[f[1]][1], v.$ = a[a.length - C], v._$ = { first_line: o[o.length - (C || 1)].first_line, last_line: o[o.length - 1].last_line, first_column: o[o.length - (C || 1)].first_column, last_column: o[o.length - 1].last_column }, (n = this.performAction.call(v, t, s, i, this.yy, f[1], a, o)) !== void 0) return n;
                    C && (d = d.slice(0, -1 * C * 2), a = a.slice(0, -1 * C), o = o.slice(0, -1 * C)), d.push(this.productions_[f[1]][0]), a.push(v.$), o.push(v._$), C = e[d[d.length - 2]][d[d.length - 1]], d.push(C);
                    break;
                  case 3:
                    return !0;
                }
              }
              return !0;
            } };
            return j = { EOF: 1, parseError: function(E, b) {
              if (!this.yy.parseError) throw new Error(E);
              this.yy.parseError(E, b);
            }, setInput: function(E) {
              return this._input = E, 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 E = this._input[0];
              return this.yytext += E, this.yyleng++, this.match += E, this.matched += E, E.match(/\n/) && this.yylineno++, this._input = this._input.slice(1), E;
            }, unput: function(E) {
              return this._input = E + this._input, this;
            }, more: function() {
              return this._more = !0, this;
            }, less: function(E) {
              this._input = this.match.slice(E) + this._input;
            }, pastInput: function() {
              var E = this.matched.substr(0, this.matched.length - this.match.length);
              return (20 < E.length ? "..." : "") + E.substr(-20).replace(/\n/g, "");
            }, upcomingInput: function() {
              var E = this.match;
              return E.length < 20 && (E += this._input.substr(0, 20 - E.length)), (E.substr(0, 20) + (20 < E.length ? "..." : "")).replace(/\n/g, "");
            }, showPosition: function() {
              var E = this.pastInput(), b = new Array(E.length + 1).join("-");
              return E + this.upcomingInput() + `
` + b + "^";
            }, next: function() {
              if (this.done) return this.EOF;
              var E, b, w, d;
              this._input || (this.done = !0), this._more || (this.yytext = "", this.match = "");
              for (var a = this._currentRules(), o = 0; o < a.length && (!(b = this._input.match(this.rules[a[o]])) || E && !(b[0].length > E[0].length) || (E = b, w = o, this.options.flex)); o++) ;
              return E ? ((d = E[0].match(/\n.*/g)) && (this.yylineno += d.length), this.yylloc = { first_line: this.yylloc.last_line, last_line: this.yylineno + 1, first_column: this.yylloc.last_column, last_column: d ? d[d.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], d = this.performAction.call(this, this.yy, this, a[w], this.conditionStack[this.conditionStack.length - 1]), this.done && this._input && (this.done = !1), d || void 0) : this._input === "" ? this.EOF : void this.parseError("Lexical error on line " + (this.yylineno + 1) + `. Unrecognized text.
` + this.showPosition(), { text: "", token: null, line: this.yylineno });
            }, lex: function() {
              var E = this.next();
              return E !== void 0 ? E : this.lex();
            }, begin: function(E) {
              this.conditionStack.push(E);
            }, 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(E) {
              this.begin(E);
            }, options: {}, performAction: function(E, b, w, d) {
              switch (w) {
                case 0:
                  break;
                case 1:
                  return 6;
                case 2:
                  return b.yytext = b.yytext.substr(1, b.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 } } }, m.lexer = j, m;
          }();
          u.parser = D, u.parse = D.parse.bind(D);
        }, 3879: function(F) {
          function u() {
          }
          function D(e, t) {
            return e.hasOwnProperty(t) && (e[t] === !0 || e[t].length);
          }
          function j(e, t, i) {
            e.parentNode ? e.parentNode.parentNode || t.appendChild(e.parentNode) : t.appendChild(e), a.removeClass(e, "excluded"), i || (e.textContent = e.textContent + "");
          }
          function m() {
            var e, t;
            this.items.length && (e = document.createDocumentFragment(), this.config.pagination ? (t = this.pages.slice(0, this.pageIndex), a.each(t, function(i, s) {
              a.each(s, function(h, r) {
                j(r, e, this.customOption);
              }, this);
            }, this)) : a.each(this.items, function(i, s) {
              j(s, e, this.customOption);
            }, this), e.childElementCount && (a.removeClass(this.items[this.navIndex], "active"), this.navIndex = e.querySelector(".selectr-option").idx, a.addClass(this.items[this.navIndex], "active")), this.tree.appendChild(e));
          }
          function E(e, t) {
            return t = t || e, t = this.customOption ? this.config.renderOption(t) : e.textContent, (t = a.createElement("li", { class: "selectr-option", html: t, role: "treeitem", "aria-selected": !1 })).idx = e.idx, this.items.push(t), e.defaultSelected && this.defaultSelected.push(e.idx), e.disabled && (t.disabled = !0, a.addClass(t, "disabled")), t;
          }
          function b() {
            (this.config.searchable || this.config.taggable) && (this.input.value = null, this.searching = !1, this.config.searchable && a.removeClass(this.inputContainer, "active"), a.hasClass(this.container, "notice") && (a.removeClass(this.container, "notice"), a.addClass(this.container, "open"), this.input.focus()), a.each(this.items, function(e, t) {
              a.removeClass(t, "excluded"), this.customOption || (t.textContent = t.textContent + "");
            }, this));
          }
          function w(e, t) {
            if (t = t || {}, !e) throw new Error("You must supply either a HTMLSelectElement or a CSS3 selector string.");
            if (typeof (this.el = e) == "string" && (this.el = document.querySelector(e)), this.el === null) throw new Error("The element you passed to Selectr can not be found.");
            if (this.el.nodeName.toLowerCase() !== "select") throw new Error("The element you passed to Selectr is not a HTMLSelectElement.");
            this.render(t);
          }
          var d = { defaultSelected: !0, width: "auto", disabled: !1, searchable: !0, clearable: !1, sortSelected: !1, allowDeselect: !1, closeOnScroll: !1, nativeDropdown: !1, placeholder: "Select an option...", taggable: !1, tagPlaceholder: "Enter a tag..." };
          u.prototype = { on: function(e, t) {
            this._events = this._events || {}, this._events[e] = this._events[e] || [], this._events[e].push(t);
          }, off: function(e, t) {
            this._events = this._events || {}, e in this._events != 0 && this._events[e].splice(this._events[e].indexOf(t), 1);
          }, emit: function(e) {
            if (this._events = this._events || {}, e in this._events != 0) for (var t = 0; t < this._events[e].length; t++) this._events[e][t].apply(this, Array.prototype.slice.call(arguments, 1));
          } }, u.mixin = function(e) {
            for (var t = ["on", "off", "emit"], i = 0; i < t.length; i++) typeof e == "function" ? e.prototype[t[i]] = u.prototype[t[i]] : e[t[i]] = u.prototype[t[i]];
            return e;
          };
          var a = { extend: function(e, t) {
            for (var i in t = t || {}, e) e.hasOwnProperty(i) && (t.hasOwnProperty(i) || (t[i] = e[i]));
            return t;
          }, each: function(e, t, i) {
            if (Object.prototype.toString.call(e) === "[object Object]") for (var s in e) Object.prototype.hasOwnProperty.call(e, s) && t.call(i, s, e[s], e);
            else for (var h = 0, r = e.length; h < r; h++) t.call(i, h, e[h], e);
          }, createElement: function(e, t) {
            var i, s, h = document, r = h.createElement(e);
            if (t && Object.prototype.toString.call(t) === "[object Object]") for (i in t) i in r ? r[i] = t[i] : i === "html" ? r.textContent = t[i] : i === "text" ? (s = h.createTextNode(t[i]), r.appendChild(s)) : r.setAttribute(i, t[i]);
            return r;
          }, hasClass: function(e, t) {
            if (e) return e.classList ? e.classList.contains(t) : !!e.className && !!e.className.match(new RegExp("(\\s|^)" + t + "(\\s|$)"));
          }, addClass: function(e, t) {
            a.hasClass(e, t) || (e.classList ? e.classList.add(t) : e.className = e.className.trim() + " " + t);
          }, removeClass: function(e, t) {
            a.hasClass(e, t) && (e.classList ? e.classList.remove(t) : e.className = e.className.replace(new RegExp("(^|\\s)" + t.split(" ").join("|") + "(\\s|$)", "gi"), " "));
          }, closest: function(e, t) {
            return e && e !== document.body && (t(e) ? e : a.closest(e.parentNode, t));
          }, isInt: function(e) {
            return typeof e == "number" && isFinite(e) && Math.floor(e) === e;
          }, debounce: function(e, t, i) {
            var s;
            return function() {
              var h = this, r = arguments, p = i && !s;
              clearTimeout(s), s = setTimeout(function() {
                s = null, i || e.apply(h, r);
              }, t), p && e.apply(h, r);
            };
          }, rect: function(s, t) {
            var h = window, i = s.getBoundingClientRect(), s = t ? h.pageXOffset : 0, h = t ? h.pageYOffset : 0;
            return { bottom: i.bottom + h, height: i.height, left: i.left + s, right: i.right + s, top: i.top + h, width: i.width };
          }, includes: function(e, t) {
            return -1 < e.indexOf(t);
          }, truncate: function(e) {
            for (; e.firstChild; ) e.removeChild(e.firstChild);
          } }, o = function() {
            var e, t = this.tree, i = t.scrollTop;
            t.scrollHeight - t.offsetHeight <= i && this.pageIndex < this.pages.length && (e = document.createDocumentFragment(), a.each(this.pages[this.pageIndex], function(s, h) {
              j(h, e, this.customOption);
            }, this), t.appendChild(e), this.pageIndex++, this.emit("selectr.paginate", { items: this.items.length, total: this.data.length, page: this.pageIndex, pages: this.pages.length }));
          };
          w.prototype.render = function(e) {
            var t;
            this.rendered || (this.config = a.extend(d, e), this.originalType = this.el.type, this.originalIndex = this.el.tabIndex, this.defaultSelected = [], this.originalOptionCount = this.el.options.length, (this.config.multiple || this.config.taggable) && (this.el.multiple = !0), this.disabled = D(this.config, "disabled"), this.opened = !1, this.config.taggable && (this.config.searchable = !1), this.navigating = !1, this.mobileDevice = !1, /Android|webOS|iPhone|iPad|BlackBerry|Windows Phone|Opera Mini|IEMobile|Mobile/i.test(navigator.userAgent) && (this.mobileDevice = !0), this.customOption = this.config.hasOwnProperty("renderOption") && typeof this.config.renderOption == "function", this.customSelected = this.config.hasOwnProperty("renderSelection") && typeof this.config.renderSelection == "function", u.mixin(this), (function() {
              this.requiresPagination = this.config.pagination && 0 < this.config.pagination, D(this.config, "width") && (a.isInt(this.config.width) ? this.width = this.config.width + "px" : this.config.width === "auto" ? this.width = "100%" : a.includes(this.config.width, "%") && (this.width = this.config.width)), this.container = a.createElement("div", { class: "selectr-container" }), this.config.customClass && a.addClass(this.container, this.config.customClass), this.mobileDevice ? a.addClass(this.container, "selectr-mobile") : a.addClass(this.container, "selectr-desktop"), this.el.tabIndex = -1, this.config.nativeDropdown || this.mobileDevice ? a.addClass(this.el, "selectr-visible") : a.addClass(this.el, "selectr-hidden"), this.selected = a.createElement("div", { class: "selectr-selected", disabled: this.disabled, tabIndex: 1, "aria-expanded": !1 }), this.label = a.createElement(this.el.multiple ? "ul" : "span", { class: "selectr-label" });
              var i, s = a.createElement("div", { class: "selectr-options-container" });
              this.tree = a.createElement("ul", { class: "selectr-options", role: "tree", "aria-hidden": !0, "aria-expanded": !1 }), this.notice = a.createElement("div", { class: "selectr-notice" }), this.el.setAttribute("aria-hidden", !0), this.disabled && (this.el.disabled = !0), this.el.multiple && (a.addClass(this.label, "selectr-tags"), a.addClass(this.container, "multiple"), this.tags = [], this.selectedValues = this.getSelectedProperties("value"), this.selectedIndexes = this.getSelectedProperties("idx")), this.selected.appendChild(this.label), this.config.clearable && (this.selectClear = a.createElement("button", { class: "selectr-clear", type: "button" }), this.container.appendChild(this.selectClear), a.addClass(this.container, "clearable")), this.config.taggable && (i = a.createElement("li", { class: "input-tag" }), this.input = a.createElement("input", { class: "selectr-tag-input", placeholder: this.config.tagPlaceholder, tagIndex: 0, autocomplete: "off", autocorrect: "off", autocapitalize: "off", spellcheck: "false", role: "textbox", type: "search" }), i.appendChild(this.input), this.label.appendChild(i), a.addClass(this.container, "taggable"), this.tagSeperators = [","], this.config.tagSeperators && (this.tagSeperators = this.tagSeperators.concat(this.config.tagSeperators))), this.config.searchable && (this.input = a.createElement("input", { class: "selectr-input", tagIndex: -1, autocomplete: "off", autocorrect: "off", autocapitalize: "off", spellcheck: "false", role: "textbox", type: "search" }), this.inputClear = a.createElement("button", { class: "selectr-input-clear", type: "button" }), this.inputContainer = a.createElement("div", { class: "selectr-input-container" }), this.inputContainer.appendChild(this.input), this.inputContainer.appendChild(this.inputClear), s.appendChild(this.inputContainer)), s.appendChild(this.notice), s.appendChild(this.tree), this.items = [], this.options = [], this.el.options.length && (this.options = [].slice.call(this.el.options));
              var h, r, p, l = !1, I = 0;
              this.el.children.length && a.each(this.el.children, function(n, g) {
                g.nodeName === "OPTGROUP" ? (l = a.createElement("ul", { class: "selectr-optgroup", role: "group", html: "<li class='selectr-optgroup--label'>" + g.label + "</li>" }), a.each(g.children, function(C, y) {
                  y.idx = I, l.appendChild(E.call(this, y, l)), I++;
                }, this)) : (g.idx = I, E.call(this, g), I++);
              }, this), this.config.data && Array.isArray(this.config.data) && (h = !(this.data = []), l = !1, I = 0, a.each(this.config.data, function(n, g) {
                D(g, "children") ? (h = a.createElement("optgroup", { label: g.text }), l = a.createElement("ul", { class: "selectr-optgroup", role: "group", html: "<li class='selectr-optgroup--label'>" + g.text + "</li>" }), a.each(g.children, function(C, y) {
                  (r = new Option(y.text, y.value, !1, y.hasOwnProperty("selected") && y.selected === !0)).disabled = D(y, "disabled"), this.options.push(r), h.appendChild(r), r.idx = I, l.appendChild(E.call(this, r, y)), this.data[I] = y, I++;
                }, this)) : ((r = new Option(g.text, g.value, !1, g.hasOwnProperty("selected") && g.selected === !0)).disabled = D(g, "disabled"), this.options.push(r), r.idx = I, E.call(this, r, g), this.data[I] = g, I++);
              }, this)), this.setSelected(!0);
              for (var f = this.navIndex = 0; f < this.items.length; f++) if (p = this.items[f], !a.hasClass(p, "disabled")) {
                a.addClass(p, "active"), this.navIndex = f;
                break;
              }
              this.requiresPagination && (this.pageIndex = 1, this.paginate()), this.container.appendChild(this.selected), this.container.appendChild(s), this.placeEl = a.createElement("div", { class: "selectr-placeholder" }), this.setPlaceholder(), this.selected.appendChild(this.placeEl), this.disabled && this.disable(), this.el.parentNode.insertBefore(this.container, this.el), this.container.appendChild(this.el);
            }).call(this), this.bindEvents(), this.update(), this.optsRect = a.rect(this.tree), this.rendered = !0, this.el.multiple || (this.el.selectedIndex = this.selectedIndex), t = this, setTimeout(function() {
              t.emit("selectr.init");
            }, 20));
          }, w.prototype.getSelected = function() {
            return this.el.querySelectorAll("option:checked");
          }, w.prototype.getSelectedProperties = function(e) {
            var t = this.getSelected();
            return [].slice.call(t).map(function(i) {
              return i[e];
            }).filter(function(i) {
              return i != null;
            });
          }, w.prototype.bindEvents = function() {
            var e = this;
            this.events = {}, this.events.dismiss = (function(t) {
              t = t.target, this.container.contains(t) || !this.opened && !a.hasClass(this.container, "notice") || this.close();
            }).bind(this), this.events.navigate = (function(t) {
              if (t = t || window.event, this.items.length && this.opened && a.includes([13, 38, 40], t.which)) {
                if (t.preventDefault(), t.which === 13) return !(this.config.taggable && 0 < this.input.value.length) && this.change(this.navIndex);
                var i, s = this.items[this.navIndex];
                switch (t.which) {
                  case 38:
                    (i = 0) < this.navIndex && this.navIndex--;
                    break;
                  case 40:
                    this.navIndex < this.items.length - (i = 1) && this.navIndex++;
                }
                for (this.navigating = !0; a.hasClass(this.items[this.navIndex], "disabled") || a.hasClass(this.items[this.navIndex], "excluded"); ) if (i ? this.navIndex++ : this.navIndex--, this.searching) {
                  if (this.navIndex > this.tree.lastElementChild.idx) {
                    this.navIndex = this.tree.lastElementChild.idx;
                    break;
                  }
                  if (this.navIndex < this.tree.firstElementChild.idx) {
                    this.navIndex = this.tree.firstElementChild.idx;
                    break;
                  }
                }
                t = a.rect(this.items[this.navIndex]), i ? (this.navIndex === 0 ? this.tree.scrollTop = 0 : t.top + t.height > this.optsRect.top + this.optsRect.height && (this.tree.scrollTop = this.tree.scrollTop + (t.top + t.height - (this.optsRect.top + this.optsRect.height))), this.navIndex === this.tree.childElementCount - 1 && this.requiresPagination && o.call(this)) : this.navIndex === 0 ? this.tree.scrollTop = 0 : t.top - this.optsRect.top < 0 && (this.tree.scrollTop = this.tree.scrollTop + (t.top - this.optsRect.top)), s && a.removeClass(s, "active"), a.addClass(this.items[this.navIndex], "active");
              } else this.navigating = !1;
            }).bind(this), this.events.reset = this.reset.bind(this), (this.config.nativeDropdown || this.mobileDevice) && (this.container.addEventListener("touchstart", function(t) {
              t.changedTouches[0].target === e.el && e.toggle();
            }), (this.config.nativeDropdown || this.mobileDevice) && this.container.addEventListener("click", function(t) {
              t.preventDefault(), t.stopPropagation(), t.target === e.el && e.toggle();
            }), this.el.addEventListener("change", function(t) {
              var i;
              e.el.multiple ? (i = e.getSelectedProperties("idx"), i = function(s, h) {
                for (var r, p = [], l = s.slice(0), I = 0; I < h.length; I++) -1 < (r = l.indexOf(h[I])) ? l.splice(r, 1) : p.push(h[I]);
                return [p, l];
              }(e.selectedIndexes, i), a.each(i[0], function(s, h) {
                e.select(h);
              }, e), a.each(i[1], function(s, h) {
                e.deselect(h);
              }, e)) : -1 < e.el.selectedIndex && e.select(e.el.selectedIndex);
            })), this.config.nativeDropdown && this.container.addEventListener("keydown", function(t) {
              t.key === "Enter" && e.selected === document.activeElement && (e.toggle(), setTimeout(function() {
                e.el.focus();
              }, 200));
            }), this.selected.addEventListener("click", function(t) {
              e.disabled || e.toggle(), t.preventDefault(), t.stopPropagation();
            }), this.label.addEventListener("click", function(t) {
              a.hasClass(t.target, "selectr-tag-remove") && e.deselect(t.target.parentNode.idx);
            }), this.selectClear && this.selectClear.addEventListener("click", this.clear.bind(this)), this.tree.addEventListener("mousedown", function(t) {
              t.preventDefault();
            }), this.tree.addEventListener("click", function(t) {
              t.preventDefault(), t.stopPropagation(), (t = a.closest(t.target, function(i) {
                return i && a.hasClass(i, "selectr-option");
              })) && (a.hasClass(t, "disabled") || (a.hasClass(t, "selected") ? (e.el.multiple || !e.el.multiple && e.config.allowDeselect) && e.deselect(t.idx) : e.select(t.idx), e.opened && !e.el.multiple && e.close()));
            }), this.tree.addEventListener("mouseover", function(t) {
              a.hasClass(t.target, "selectr-option") && (a.hasClass(t.target, "disabled") || (a.removeClass(e.items[e.navIndex], "active"), a.addClass(t.target, "active"), e.navIndex = [].slice.call(e.items).indexOf(t.target)));
            }), this.config.searchable && (this.input.addEventListener("focus", function(t) {
              e.searching = !0;
            }), this.input.addEventListener("blur", function(t) {
              e.searching = !1;
            }), this.input.addEventListener("keyup", function(t) {
              e.search(), e.config.taggable || (this.value.length ? a.addClass(this.parentNode, "active") : a.removeClass(this.parentNode, "active"));
            }), this.inputClear.addEventListener("click", function(t) {
              e.input.value = null, b.call(e), e.tree.childElementCount || m.call(e);
            })), this.config.taggable && this.input.addEventListener("keyup", function(t) {
              var i;
              e.search(), e.config.taggable && this.value.length && (i = this.value.trim(), t.which !== 13 && !a.includes(e.tagSeperators, t.key) || (a.each(e.tagSeperators, function(s, h) {
                i = i.replace(h, "");
              }), e.add({ value: i, text: i, selected: !0 }, !0) ? (e.close(), b.call(e)) : (this.value = "", e.setMessage("That tag is already in use."))));
            }), this.update = a.debounce(function() {
              e.opened && e.config.closeOnScroll && e.close(), e.width && (e.container.style.width = e.width), e.invert();
            }, 50), this.requiresPagination && (this.paginateItems = a.debounce(function() {
              o.call(this);
            }, 50), this.tree.addEventListener("scroll", this.paginateItems.bind(this))), document.addEventListener("click", this.events.dismiss), window.addEventListener("keydown", this.events.navigate), window.addEventListener("resize", this.update), window.addEventListener("scroll", this.update), this.el.form && this.el.form.addEventListener("reset", this.events.reset);
          }, w.prototype.setSelected = function(e) {
            var t;
            this.config.data || this.el.multiple || !this.el.options.length || (this.el.selectedIndex === 0 && (this.el.options[0].defaultSelected || this.config.defaultSelected || (this.el.selectedIndex = -1)), this.selectedIndex = this.el.selectedIndex, -1 < this.selectedIndex && this.select(this.selectedIndex)), this.config.multiple && this.originalType === "select-one" && !this.config.data && this.el.options[0].selected && !this.el.options[0].defaultSelected && (this.el.options[0].selected = !1), a.each(this.options, function(i, s) {
              s.selected && s.defaultSelected && this.select(s.idx);
            }, this), this.config.selectedValue && this.setValue(this.config.selectedValue), this.config.data && (!this.el.multiple && this.config.defaultSelected && this.el.selectedIndex < 0 && this.select(0), t = 0, a.each(this.config.data, function(i, s) {
              D(s, "children") ? a.each(s.children, function(h, r) {
                r.hasOwnProperty("selected") && r.selected === !0 && this.select(t), t++;
              }, this) : (s.hasOwnProperty("selected") && s.selected === !0 && this.select(t), t++);
            }, this));
          }, w.prototype.destroy = function() {
            this.rendered && (this.emit("selectr.destroy"), this.originalType === "select-one" && (this.el.multiple = !1), this.config.data && (this.el.textContent = ""), a.removeClass(this.el, "selectr-hidden"), this.el.form && a.off(this.el.form, "reset", this.events.reset), a.off(document, "click", this.events.dismiss), a.off(document, "keydown", this.events.navigate), a.off(window, "resize", this.update), a.off(window, "scroll", this.update), this.container.parentNode.replaceChild(this.el, this.container), this.rendered = !1);
          }, w.prototype.change = function(e) {
            var t = this.items[e], i = this.options[e];
            i.disabled || (i.selected && a.hasClass(t, "selected") ? this.deselect(e) : this.select(e), this.opened && !this.el.multiple && this.close());
          }, w.prototype.select = function(e) {
            var t = this.items[e], i = [].slice.call(this.el.options), s = this.options[e];
            if (this.el.multiple) {
              if (a.includes(this.selectedIndexes, e)) return !1;
              if (this.config.maxSelections && this.tags.length === this.config.maxSelections) return this.setMessage("A maximum of " + this.config.maxSelections + " items can be selected.", !0), !1;
              this.selectedValues.push(s.value), this.selectedIndexes.push(e), (function(r) {
                var p, l = this, I = document.createDocumentFragment(), f = this.options[r.idx], n = this.data ? this.data[r.idx] : f, g = this.customSelected ? this.config.renderSelection(n) : f.textContent, n = a.createElement("li", { class: "selectr-tag", html: g }), g = a.createElement("button", { class: "selectr-tag-remove", type: "button" });
                n.appendChild(g), n.idx = r.idx, n.tag = f.value, this.tags.push(n), this.config.sortSelected ? (f = this.tags.slice(), p = function(C, y) {
                  C.replace(/(\d+)|(\D+)/g, function(c, v, k) {
                    y.push([v || 1 / 0, k || ""]);
                  });
                }, f.sort(function(C, y) {
                  var c, v, k = [], S = [];
                  for (l.config.sortSelected === !0 ? (c = C.tag, v = y.tag) : l.config.sortSelected === "text" && (c = C.textContent, v = y.textContent), p(c, k), p(v, S); k.length && S.length; ) {
                    var L = k.shift(), W = S.shift(), W = L[0] - W[0] || L[1].localeCompare(W[1]);
                    if (W) return W;
                  }
                  return k.length - S.length;
                }), a.each(f, function(C, y) {
                  I.appendChild(y);
                }), this.label.textContent = "") : I.appendChild(n), this.config.taggable ? this.label.insertBefore(I, this.input.parentNode) : this.label.appendChild(I);
              }).call(this, t);
            } else {
              var h = this.data ? this.data[e] : s;
              this.label.textContent = this.customSelected ? this.config.renderSelection(h) : s.textContent, this.selectedValue = s.value, this.selectedIndex = e, a.each(this.options, function(r, p) {
                var l = this.items[r];
                r !== e && (l && a.removeClass(l, "selected"), p.selected = !1, p.removeAttribute("selected"));
              }, this);
            }
            a.includes(i, s) || this.el.add(s), t.setAttribute("aria-selected", !0), a.addClass(t, "selected"), a.addClass(this.container, "has-selected"), s.selected = !0, s.setAttribute("selected", ""), this.emit("selectr.change", s), this.emit("selectr.select", s);
          }, w.prototype.deselect = function(e, t) {
            var i = this.items[e], s = this.options[e];
            if (this.el.multiple) {
              var h = this.selectedIndexes.indexOf(e);
              this.selectedIndexes.splice(h, 1), h = this.selectedValues.indexOf(s.value), this.selectedValues.splice(h, 1), (function(r) {
                var p = !1;
                a.each(this.tags, function(l, I) {
                  I.idx === r.idx && (p = I);
                }, this), p && (this.label.removeChild(p), this.tags.splice(this.tags.indexOf(p), 1));
              }).call(this, i), this.tags.length || a.removeClass(this.container, "has-selected");
            } else {
              if (!t && !this.config.clearable && !this.config.allowDeselect) return !1;
              this.label.textContent = "", this.selectedValue = null, this.el.selectedIndex = this.selectedIndex = -1, a.removeClass(this.container, "has-selected");
            }
            this.items[e].setAttribute("aria-selected", !1), a.removeClass(this.items[e], "selected"), s.selected = !1, s.removeAttribute("selected"), this.emit("selectr.change", null), this.emit("selectr.deselect", s);
          }, w.prototype.setValue = function(e) {
            var t = Array.isArray(e);
            if (t || (e = e.toString().trim()), !this.el.multiple && t) return !1;
            a.each(this.options, function(i, s) {
              (t && a.includes(e.toString(), s.value) || s.value === e) && this.change(s.idx);
            }, this);
          }, w.prototype.getValue = function(e, t) {
            var i, s;
            return this.el.multiple ? e ? this.selectedIndexes.length && (s = { values: [] }, a.each(this.selectedIndexes, function(h, r) {
              r = this.options[r], s.values[h] = { value: r.value, text: r.textContent };
            }, this)) : s = this.selectedValues.slice() : s = e ? { value: (i = this.options[this.selectedIndex]).value, text: i.textContent } : this.selectedValue, s = e && t ? JSON.stringify(s) : s;
          }, w.prototype.add = function(e, t) {
            if (e) {
              if (this.data = this.data || [], this.items = this.items || [], this.options = this.options || [], Array.isArray(e)) a.each(e, function(h, r) {
                this.add(r, t);
              }, this);
              else if (Object.prototype.toString.call(e) === "[object Object]") {
                if (t) {
                  var i = !1;
                  if (a.each(this.options, function(h, r) {
                    r.value.toLowerCase() === e.value.toLowerCase() && (i = !0);
                  }), i) return !1;
                }
                var s = a.createElement("option", e);
                return this.data.push(e), this.options.push(s), s.idx = 0 < this.options.length ? this.options.length - 1 : 0, E.call(this, s), e.selected && this.select(s.idx), s;
              }
              return this.setPlaceholder(), this.config.pagination && this.paginate(), !0;
            }
          }, w.prototype.remove = function(e) {
            var t, i = [];
            Array.isArray(e) ? a.each(e, function(s, h) {
              a.isInt(h) ? i.push(this.getOptionByIndex(h)) : typeof e == "string" && i.push(this.getOptionByValue(h));
            }, this) : a.isInt(e) ? i.push(this.getOptionByIndex(e)) : typeof e == "string" && i.push(this.getOptionByValue(e)), i.length && (a.each(i, function(s, h) {
              t = h.idx, this.el.remove(h), this.options.splice(t, 1), h = this.items[t].parentNode, h && h.removeChild(this.items[t]), this.items.splice(t, 1), a.each(this.options, function(r, p) {
                p.idx = r, this.items[r].idx = r;
              }, this);
            }, this), this.setPlaceholder(), this.config.pagination && this.paginate());
          }, w.prototype.removeAll = function() {
            this.clear(!0), a.each(this.el.options, function(e, t) {
              this.el.remove(t);
            }, this), a.truncate(this.tree), this.items = [], this.options = [], this.data = [], this.navIndex = 0, this.requiresPagination && (this.requiresPagination = !1, this.pageIndex = 1, this.pages = []), this.setPlaceholder();
          }, w.prototype.search = function(e) {
            var t, i, s;
            this.navigating || (e = e || this.input.value, t = document.createDocumentFragment(), this.removeMessage(), a.truncate(this.tree), 1 < e.length ? (a.each(this.options, function(h, r) {
              var p, l = this.items[r.idx];
              a.includes(r.textContent.toLowerCase(), e.toLowerCase()) && !r.disabled ? (j(l, t, this.customOption), a.removeClass(l, "excluded"), this.customOption || (l.textContent = "", (p = function(I, f) {
                var n = new RegExp(I, "i").exec(f);
                return n ? (I = n.index, n = n.index + n[0].length, { before: f.substring(0, I), match: f.substring(I, n), after: f.substring(n) }) : null;
              }(e, r.textContent)) && (l.appendChild(document.createTextNode(p.before)), (r = document.createElement("span")).className = "selectr-match", r.appendChild(document.createTextNode(p.match)), l.appendChild(r), l.appendChild(document.createTextNode(p.after))))) : a.addClass(l, "excluded");
            }, this), t.childElementCount ? (i = this.items[this.navIndex], s = t.firstElementChild, a.removeClass(i, "active"), this.navIndex = s.idx, a.addClass(s, "active")) : this.config.taggable || this.setMessage("no results.")) : m.call(this), this.tree.appendChild(t));
          }, w.prototype.toggle = function() {
            this.disabled || (this.opened ? this.close() : this.open());
          }, w.prototype.open = function() {
            var e = this;
            return !!this.options.length && (this.opened || this.emit("selectr.open"), this.opened = !0, this.mobileDevice || this.config.nativeDropdown ? (a.addClass(this.container, "native-open"), void (this.config.data && a.each(this.options, function(t, i) {
              this.el.add(i);
            }, this))) : (a.addClass(this.container, "open"), m.call(this), this.invert(), this.tree.scrollTop = 0, a.removeClass(this.container, "notice"), this.selected.setAttribute("aria-expanded", !0), this.tree.setAttribute("aria-hidden", !1), this.tree.setAttribute("aria-expanded", !0), void (this.config.searchable && !this.config.taggable && setTimeout(function() {
              e.input.focus(), e.input.tabIndex = 0;
            }, 10))));
          }, w.prototype.close = function() {
            var e;
            this.opened && this.emit("selectr.close"), this.opened = !1, this.mobileDevice || this.config.nativeDropdown ? a.removeClass(this.container, "native-open") : (e = a.hasClass(this.container, "notice"), this.config.searchable && !e && (this.input.blur(), this.input.tabIndex = -1, this.searching = !1), e && (a.removeClass(this.container, "notice"), this.notice.textContent = ""), a.removeClass(this.container, "open"), a.removeClass(this.container, "native-open"), this.selected.setAttribute("aria-expanded", !1), this.tree.setAttribute("aria-hidden", !0), this.tree.setAttribute("aria-expanded", !1), a.truncate(this.tree), b.call(this));
          }, w.prototype.enable = function() {
            this.disabled = !1, this.el.disabled = !1, this.selected.tabIndex = this.originalIndex, this.el.multiple && a.each(this.tags, function(e, t) {
              t.lastElementChild.tabIndex = 0;
            }), a.removeClass(this.container, "selectr-disabled");
          }, w.prototype.disable = function(e) {
            e || (this.el.disabled = !0), this.selected.tabIndex = -1, this.el.multiple && a.each(this.tags, function(t, i) {
              i.lastElementChild.tabIndex = -1;
            }), this.disabled = !0, a.addClass(this.container, "selectr-disabled");
          }, w.prototype.reset = function() {
            this.disabled || (this.clear(), this.setSelected(!0), a.each(this.defaultSelected, function(e, t) {
              this.select(t);
            }, this), this.emit("selectr.reset"));
          }, w.prototype.clear = function(e) {
            var t;
            this.el.multiple ? this.selectedIndexes.length && (t = this.selectedIndexes.slice(), a.each(t, function(i, s) {
              this.deselect(s);
            }, this)) : -1 < this.selectedIndex && this.deselect(this.selectedIndex, e), this.emit("selectr.clear");
          }, w.prototype.serialise = function(e) {
            var t = [];
            return a.each(this.options, function(i, s) {
              var h = { value: s.value, text: s.textContent };
              s.selected && (h.selected = !0), s.disabled && (h.disabled = !0), t[i] = h;
            }), e ? JSON.stringify(t) : t;
          }, w.prototype.serialize = function(e) {
            return this.serialise(e);
          }, w.prototype.setPlaceholder = function(e) {
            e = e || this.config.placeholder || this.el.getAttribute("placeholder"), this.options.length || (e = "No options available"), this.placeEl.textContent = e;
          }, w.prototype.paginate = function() {
            if (this.items.length) {
              var e = this;
              return this.pages = this.items.map(function(t, i) {
                return i % e.config.pagination == 0 ? e.items.slice(i, i + e.config.pagination) : null;
              }).filter(function(t) {
                return t;
              }), this.pages;
            }
          }, w.prototype.setMessage = function(e, t) {
            t && this.close(), a.addClass(this.container, "notice"), this.notice.textContent = e;
          }, w.prototype.removeMessage = function() {
            a.removeClass(this.container, "notice"), this.notice.textContent = "";
          }, w.prototype.invert = function() {
            var e = a.rect(this.selected), t = this.tree.parentNode.offsetHeight, i = window.innerHeight;
            e.top + e.height + t > i ? (a.addClass(this.container, "inverted"), this.isInverted = !0) : (a.removeClass(this.container, "inverted"), this.isInverted = !1), this.optsRect = a.rect(this.tree);
          }, w.prototype.getOptionByIndex = function(e) {
            return this.options[e];
          }, w.prototype.getOptionByValue = function(e) {
            for (var t = !1, i = 0, s = this.options.length; i < s; i++) if (this.options[i].value.trim() === e.toString().trim()) {
              t = this.options[i];
              break;
            }
            return t;
          }, F.exports = w;
        }, 4188: function(F, u, D) {
          D.d(u, { qD: function() {
            return j;
          }, EX: function() {
            return m;
          }, WF: function() {
            return E;
          }, oW: function() {
            return b;
          } });
          var j = document.body, m = 10485760, E = 2e4, b = 2147483648;
        }, 2602: function(F, u, D) {
          function j(E, b, w) {
            function d() {
              if (r && r.parentNode) {
                for (var p in r.parentNode.removeChild(r), i) l = p, Object.prototype.hasOwnProperty.call(i, l) && ((l = i[p]) && (0, m.removeEventListener)(t, p, l), delete i[p]);
                typeof w == "function" && w(E);
              }
              var l;
            }
            function a(p) {
              (p = p.target) === r || (0, m.isChildOf)(p, r) || d();
            }
            var o, e = 3 < arguments.length && arguments[3] !== void 0 && arguments[3], t = typeof (h = E).getRootNode == "function" ? h.getRootNode() : window, i = {}, s = E.getBoundingClientRect(), h = b.getBoundingClientRect(), r = document.createElement("div");
            return r.className = "jsoneditor-anchor", r.style.position = "absolute", r.style.left = s.left - h.left + "px", r.style.top = s.top - h.top + "px", r.style.width = s.width - 2 + "px", r.style.height = s.height - 2 + "px", r.style.boxSizing = "border-box", b.appendChild(r), i.mousedown = (0, m.addEventListener)(t, "mousedown", a), i.mousewheel = (0, m.addEventListener)(t, "mousewheel", a), e && (o = null, r.onmouseover = function() {
              clearTimeout(o), o = null;
            }, r.onmouseout = function() {
              o = o || setTimeout(d, 200);
            }), r.destroy = d, r;
          }
          D.d(u, { w: function() {
            return j;
          } });
          var m = D(9791);
        }, 7923: function(F) {
          F.exports = "data:application/javascript;base64, ";
        }, 7907: function(F, b, D) {
          function j(t) {
            var i;
            t && ((i = d.find(function(s) {
              return s === t;
            })) ? e = i : console.error("Language not found"));
          }
          function m(t) {
            if (t) for (var i in t) (function(s) {
              d.find(function(h) {
                return h === s;
              }) || d.push(s), w[s] = Object.assign({}, w[a], w[s], t[s]);
            })(i);
          }
          function E(t, i, s) {
            var h = w[s = s || e][t] || w[a][t] || t;
            if (i) for (var r in i) h = h.replace("${" + r + "}", i[r]);
            return h;
          }
          D.d(b, { m0: function() {
            return j;
          }, cC: function() {
            return m;
          }, Iu: function() {
            return E;
          } });
          var b = D(4987), w = { en: { array: "Array", auto: "Auto", appendText: "Append", appendTitle: "Append a new field with type 'auto' after this field (Ctrl+Shift+Ins)", appendSubmenuTitle: "Select the type of the field to be appended", appendTitleAuto: "Append a new field with type 'auto' (Ctrl+Shift+Ins)", ascending: "Ascending", ascendingTitle: "Sort the childs of this ${type} in ascending order", actionsMenu: "Click to open the actions menu (Ctrl+M)", cannotParseFieldError: "Cannot parse field into JSON", cannotParseValueError: "Cannot parse value into JSON", collapseAll: "Collapse all fields", compactTitle: "Compact JSON data, remove all whitespaces (Ctrl+Shift+I)", descending: "Descending", descendingTitle: "Sort the childs of this ${type} in descending order", drag: "Drag to move this field (Alt+Shift+Arrows)", duplicateKey: "duplicate key", duplicateText: "Duplicate", duplicateTitle: "Duplicate selected fields (Ctrl+D)", duplicateField: "Duplicate this field (Ctrl+D)", duplicateFieldError: "Duplicate field name", empty: "empty", expandAll: "Expand all fields", expandTitle: `Click to expand/collapse this field (Ctrl+E). 
Ctrl+Click to expand/collapse including all childs.`, formatTitle: "Format JSON data, with proper indentation and line feeds (Ctrl+I)", insert: "Insert", insertTitle: "Insert a new field with type 'auto' before this field (Ctrl+Ins)", insertSub: "Select the type of the field to be inserted", object: "Object", ok: "Ok", redo: "Redo (Ctrl+Shift+Z)", removeText: "Remove", removeTitle: "Remove selected fields (Ctrl+Del)", removeField: "Remove this field (Ctrl+Del)", repairTitle: "Repair JSON: fix quotes and escape characters, remove comments and JSONP notation, turn JavaScript objects into JSON.", searchTitle: "Search fields and values", searchNextResultTitle: "Next result (Enter)", searchPreviousResultTitle: "Previous result (Shift + Enter)", selectNode: "Select a node...", showAll: "show all", showMore: "show more", showMoreStatus: "displaying ${visibleChilds} of ${totalChilds} items.", sort: "Sort", sortTitle: "Sort the childs of this ${type}", sortTitleShort: "Sort contents", sortFieldLabel: "Field:", sortDirectionLabel: "Direction:", sortFieldTitle: "Select the nested field by which to sort the array or object", sortAscending: "Ascending", sortAscendingTitle: "Sort the selected field in ascending order", sortDescending: "Descending", sortDescendingTitle: "Sort the selected field in descending order", string: "String", transform: "Transform", transformTitle: "Filter, sort, or transform the childs of this ${type}", transformTitleShort: "Filter, sort, or transform contents", extract: "Extract", extractTitle: "Extract this ${type}", transformQueryTitle: "Enter a JMESPath query", transformWizardLabel: "Wizard", transformWizardFilter: "Filter", transformWizardSortBy: "Sort by", transformWizardSelectFields: "Select fields", transformQueryLabel: "Query", transformPreviewLabel: "Preview", type: "Type", typeTitle: "Change the type of this field", openUrl: "Ctrl+Click or Ctrl+Enter to open url in new window", undo: "Undo last action (Ctrl+Z)", validationCannotMove: "Cannot move a field into a child of itself", autoType: 'Field type "auto". The field type is automatically determined from the value and can be a string, number, boolean, or null.', objectType: 'Field type "object". An object contains an unordered set of key/value pairs.', arrayType: 'Field type "array". An array contains an ordered collection of values.', stringType: 'Field type "string". Field type is not determined from the value, but always returned as string.', modeEditorTitle: "Switch Editor Mode", modeCodeText: "Code", modeCodeTitle: "Switch to code highlighter", modeFormText: "Form", modeFormTitle: "Switch to form editor", modeTextText: "Text", modeTextTitle: "Switch to plain text editor", modeTreeText: "Tree", modeTreeTitle: "Switch to tree editor", modeViewText: "View", modeViewTitle: "Switch to tree view", modePreviewText: "Preview", modePreviewTitle: "Switch to preview mode", examples: "Examples", default: "Default", containsInvalidProperties: "Contains invalid properties", containsInvalidItems: "Contains invalid items" }, es: { array: "Matriz", auto: "Auto", appendText: "Agregar", appendTitle: "Agregue un nuevo campo con el tipo 'auto' después de este campo (Ctrl + Shift + Ins)", appendSubmenuTitle: "Seleccione el tipo de campo que se agregará", appendTitleAuto: "Agregue un nuevo campo con el tipo 'auto' (Ctrl + Shift + Ins)", ascending: "Ascendente", ascendingTitle: "Ordene los elementos secundarios de este ${type} en orden ascendente", actionsMenu: "Haga clic para abrir el menú de acciones (Ctrl + M)", cannotParseFieldError: "No se puede parsear el campo en JSON", cannotParseValueError: "No se puede parsear el valor en JSON", collapseAll: "Contraer todos los campos", compactTitle: "Compactar datos JSON, eliminar todos los espacios en blanco (Ctrl + Shift + I)", descending: "Descendente", descendingTitle: "Ordene los hijos de este ${type} en orden descendente", drag: "Arrastre para mover este campo (Alt + Mayús + Flechas)", duplicateKey: "llave duplicada", duplicateText: "Duplicar", duplicateTitle: "Duplicar campos seleccionados (Ctrl + D)", duplicateField: "Duplicar este campo (Ctrl + D)", duplicateFieldError: "Nombre de campo duplicado", empty: "vacio", expandAll: "Expandir todos los campos", expandTitle: `Haga clic para expandir/contraer este campo (Ctrl + E). 
  Ctrl+Clic para expandir/contraer incluyendo todos los niños.`, formatTitle: "Formatee los datos JSON, con la sangría y los avances de línea adecuados (Ctrl + I)", insert: "Insertar", insertTitle: "Inserte un nuevo campo con el tipo 'auto' antes de este campo (Ctrl + Ins)", insertSub: "Seleccione el tipo de campo a insertar", object: "Objeto", ok: "Ok", redo: "Rehacer (Ctrl+Mayús+Z)", removeText: "Eliminar", removeTitle: "Eliminar campos seleccionados (Ctrl+Supr)", removeField: "Eliminar este campo (Ctrl+Supr)", repairTitle: "Reparar JSON: corrija comillas y caracteres de escape, elimine comentarios y notación JSONP, convierta objetos JavaScript en JSON.", searchTitle: "Campos de búsqueda y valores", searchNextResultTitle: "Siguiente resultado (Entrar)", searchPreviousResultTitle: "Resultado anterior (Shift + Enter)", selectNode: "Seleccione un nodo...", showAll: "mostrar todo", showMore: "mostrar más", showMoreStatus: "mostrando ${visibleChilds} de ${totalChilds} elementos.", sort: "Ordenar", sortTitle: "Ordene los hijos de este ${type}", sortTitleShort: "Ordenar contenidos", sortFieldLabel: "Campo:", sortDirectionLabel: "Dirección:", sortFieldTitle: "Seleccione el campo anidado por el cual ordenar la matriz u objeto", sortAscending: "Ascendente", sortAscendingTitle: "Ordenar el campo seleccionado en orden ascendente", sortDescending: "Descendente", sortDescendingTitle: "Ordenar por el campo seleccionado, en orden descendente", string: "Texto", transform: "Transformar", transformTitle: "Filtrar, ordenar o transformar los hijos de este ${type}", transformTitleShort: "Filtrar, ordenar o transformar contenidos", extract: "Extraer", extractTitle: "Extrae este ${type}", transformQueryTitle: "Ingrese una consulta JMESPath", transformWizardLabel: "Wizard", transformWizardFilter: "Filtro", transformWizardSortBy: "Ordenar por", transformWizardSelectFields: "Seleccione un campo", transformQueryLabel: "Consulta", transformPreviewLabel: "Vista Previa", type: "Tipo", typeTitle: "Cambiar el tipo de campo", openUrl: "Ctrl+Click o Ctrl+Enter para abrir la URL en una nueva ventana", undo: "Deshacer la última acción (Ctrl+Z)", validationCannotMove: "No se puede mover un campo a un hijo de sí mismo.", autoType: 'Field type "auto". The field type is automatically determined from the value and can be a string, number, boolean, or null.', objectType: 'Tipo de campo "objeto".  Un objeto contiene un conjunto desordenado de pares clave/valor.', arrayType: 'Tipo de campo "matriz".  Una matriz contiene una colección ordenada de valores.', stringType: 'Tipo de campo "cadena".  El tipo de campo no se determina a partir del valor,  pero siempre se devuelve como una cadena.', modeEditorTitle: "Cambiar modo de editor", modeCodeText: "Codigo", modeCodeTitle: "Cambiar al resaltador de código", modeFormText: "Formulario", modeFormTitle: "Cambiar al editor de formularios", modeTextText: "Texto", modeTextTitle: "Cambiar al editor de texto sin formato", modeTreeText: "Arbol", modeTreeTitle: "Cambiar al editor de árbol", modeViewText: "Vista", modeViewTitle: "Cambiar a la vista de árbol", modePreviewText: "Vista Previa", modePreviewTitle: "Cambiar al modo de vista previa", examples: "Ejemplos", default: "Predeterminado", containsInvalidProperties: "Contiene propiedades no validas", containsInvalidItems: "Contiene items no validos" }, "zh-CN": { array: "数组", auto: "自动", appendText: "追加", appendTitle: "在此字段后追加一个类型为“auto”的新字段 (Ctrl+Shift+Ins)", appendSubmenuTitle: "选择要追加的字段类型", appendTitleAuto: "追加类型为“auto”的新字段 (Ctrl+Shift+Ins)", ascending: "升序", ascendingTitle: "升序排列${type}的子节点", actionsMenu: "点击打开动作菜单(Ctrl+M)", cannotParseFieldError: "无法将字段解析为JSON", cannotParseValueError: "无法将值解析为JSON", collapseAll: "缩进所有字段", compactTitle: "压缩JSON数据，删除所有空格 (Ctrl+Shift+I)", descending: "降序", descendingTitle: "降序排列${type}的子节点", drag: "拖拽移动该节点(Alt+Shift+Arrows)", duplicateKey: "重复键", duplicateText: "复制", duplicateTitle: "复制选中字段(Ctrl+D)", duplicateField: "复制该字段(Ctrl+D)", duplicateFieldError: "重复的字段名称", empty: "清空", expandAll: "展开所有字段", expandTitle: `点击 展开/收缩 该字段(Ctrl+E). 
Ctrl+Click 展开/收缩 包含所有子节点.`, formatTitle: "使用适当的缩进和换行符格式化JSON数据 (Ctrl+I)", insert: "插入", insertTitle: "在此字段前插入类型为“auto”的新字段 (Ctrl+Ins)", insertSub: "选择要插入的字段类型", object: "对象", ok: "Ok", redo: "重做 (Ctrl+Shift+Z)", removeText: "移除", removeTitle: "移除选中字段 (Ctrl+Del)", removeField: "移除该字段 (Ctrl+Del)", repairTitle: "修复JSON：修复引号和转义符，删除注释和JSONP表示法，将JavaScript对象转换为JSON。", selectNode: "选择一个节点...", showAll: "展示全部", showMore: "展示更多", showMoreStatus: "显示${totalChilds}的${visibleChilds}项目.", sort: "排序", sortTitle: "排序${type}的子节点", sortTitleShort: "内容排序", sortFieldLabel: "字段：", sortDirectionLabel: "方向：", sortFieldTitle: "选择用于对数组或对象排序的嵌套字段", sortAscending: "升序排序", sortAscendingTitle: "按照该字段升序排序", sortDescending: "降序排序", sortDescendingTitle: "按照该字段降序排序", string: "字符串", transform: "变换", transformTitle: "筛选，排序，或者转换${type}的子节点", transformTitleShort: "筛选，排序，或者转换内容", extract: "提取", extractTitle: "提取这个 ${type}", transformQueryTitle: "输入JMESPath查询", transformWizardLabel: "向导", transformWizardFilter: "筛选", transformWizardSortBy: "排序", transformWizardSelectFields: "选择字段", transformQueryLabel: "查询", transformPreviewLabel: "预览", type: "类型", typeTitle: "更改字段类型", openUrl: "Ctrl+Click 或者 Ctrl+Enter 在新窗口打开链接", undo: "撤销上次动作 (Ctrl+Z)", validationCannotMove: "无法将字段移入其子节点", autoType: '字段类型 "auto". 字段类型由值自动确定 可以为 string，number，boolean，或者 null.', objectType: '字段类型 "object". 对象包含一组无序的键/值对.', arrayType: '字段类型 "array". 数组包含值的有序集合.', stringType: '字段类型 "string". 字段类型由值自动确定，但始终作为字符串返回.', modeCodeText: "代码", modeCodeTitle: "切换至代码高亮", modeFormText: "表单", modeFormTitle: "切换至表单编辑", modeTextText: "文本", modeTextTitle: "切换至文本编辑", modeTreeText: "树", modeTreeTitle: "切换至树编辑", modeViewText: "视图", modeViewTitle: "切换至树视图", modePreviewText: "预览", modePreviewTitle: "切换至预览模式", examples: "例子", default: "缺省", containsInvalidProperties: "包含无效的属性", containsInvalidItems: "包含无效项目" }, "pt-BR": { array: "Lista", auto: "Automatico", appendText: "Adicionar", appendTitle: "Adicionar novo campo com tipo 'auto' depois deste campo (Ctrl+Shift+Ins)", appendSubmenuTitle: "Selecione o tipo do campo a ser adicionado", appendTitleAuto: "Adicionar novo campo com tipo 'auto' (Ctrl+Shift+Ins)", ascending: "Ascendente", ascendingTitle: "Organizar filhor do tipo ${type} em crescente", actionsMenu: "Clique para abrir o menu de ações (Ctrl+M)", cannotParseFieldError: "Não é possível analisar o campo no JSON", cannotParseValueError: "Não é possível analisar o valor em JSON", collapseAll: "Fechar todos campos", compactTitle: "Dados JSON compactos, remova todos os espaços em branco (Ctrl+Shift+I)", descending: "Descendente", descendingTitle: "Organizar o filhos do tipo ${type} em decrescente", duplicateKey: "chave duplicada", drag: "Arraste para mover este campo (Alt+Shift+Arrows)", duplicateText: "Duplicar", duplicateTitle: "Duplicar campos selecionados (Ctrl+D)", duplicateField: "Duplicar este campo (Ctrl+D)", duplicateFieldError: "Nome do campo duplicado", empty: "vazio", expandAll: "Expandir todos campos", expandTitle: `Clique para expandir/encolher este campo (Ctrl+E). 
Ctrl+Click para expandir/encolher incluindo todos os filhos.`, formatTitle: "Formate dados JSON, com recuo e feeds de linha adequados (Ctrl+I)", insert: "Inserir", insertTitle: "Inserir um novo campo do tipo 'auto' antes deste campo (Ctrl+Ins)", insertSub: "Selecionar o tipo de campo a ser inserido", object: "Objeto", ok: "Ok", redo: "Refazer (Ctrl+Shift+Z)", removeText: "Remover", removeTitle: "Remover campos selecionados (Ctrl+Del)", removeField: "Remover este campo (Ctrl+Del)", repairTitle: "Repare JSON: corrija aspas e caracteres de escape, remova comentários e notação JSONP, transforme objetos JavaScript em JSON.", selectNode: "Selecione um nódulo...", showAll: "mostrar todos", showMore: "mostrar mais", showMoreStatus: "exibindo ${visibleChilds} de ${totalChilds} itens.", sort: "Organizar", sortTitle: "Organizar os filhos deste ${type}", sortTitleShort: "Organizar os filhos", sortFieldLabel: "Campo:", sortDirectionLabel: "Direção:", sortFieldTitle: "Selecione um campo filho pelo qual ordenar o array ou objeto", sortAscending: "Ascendente", sortAscendingTitle: "Ordenar o campo selecionado por ordem ascendente", sortDescending: "Descendente", sortDescendingTitle: "Ordenar o campo selecionado por ordem descendente", string: "Texto", transform: "Transformar", transformTitle: "Filtrar, ordenar ou transformar os filhos deste ${type}", transformTitleShort: "Filtrar, ordenar ou transformar conteúdos", transformQueryTitle: "Insira uma expressão JMESPath", transformWizardLabel: "Assistente", transformWizardFilter: "Filtro", transformWizardSortBy: "Ordenar por", transformWizardSelectFields: "Selecionar campos", transformQueryLabel: "Expressão", transformPreviewLabel: "Visualizar", type: "Tipo", typeTitle: "Mudar o tipo deste campo", openUrl: "Ctrl+Click ou Ctrl+Enter para abrir link em nova janela", undo: "Desfazer último ação (Ctrl+Z)", validationCannotMove: "Não pode mover um campo como filho dele mesmo", autoType: 'Campo do tipo "auto". O tipo do campo é determinao automaticamente a partir do seu valor e pode ser texto, número, verdade/falso ou nulo.', objectType: 'Campo do tipo "objeto". Um objeto contém uma lista de pares com chave e valor.', arrayType: 'Campo do tipo "lista". Uma lista contem uma coleção de valores ordenados.', stringType: 'Campo do tipo "string". Campo do tipo nao é determinado através do seu valor, mas sempre retornara um texto.', examples: "Exemplos", default: "Revelia", containsInvalidProperties: "Contém propriedades inválidas", containsInvalidItems: "Contém itens inválidos" }, tr: { array: "Dizin", auto: "Otomatik", appendText: "Ekle", appendTitle: "Bu alanın altına 'otomatik' tipinde yeni bir alan ekle (Ctrl+Shift+Ins)", appendSubmenuTitle: "Eklenecek alanın tipini seç", appendTitleAuto: "'Otomatik' tipinde yeni bir alan ekle (Ctrl+Shift+Ins)", ascending: "Artan", ascendingTitle: "${type}'ın alt tiplerini artan düzende sırala", actionsMenu: "Aksiyon menüsünü açmak için tıklayın (Ctrl+M)", collapseAll: "Tüm alanları kapat", descending: "Azalan", descendingTitle: "${type}'ın alt tiplerini azalan düzende sırala", drag: "Bu alanı taşımak için sürükleyin (Alt+Shift+Arrows)", duplicateKey: "Var olan anahtar", duplicateText: "Aşağıya kopyala", duplicateTitle: "Seçili alanlardan bir daha oluştur (Ctrl+D)", duplicateField: "Bu alandan bir daha oluştur (Ctrl+D)", duplicateFieldError: "Duplicate field name", cannotParseFieldError: "Alan JSON'a ayrıştırılamıyor", cannotParseValueError: "JSON'a değer ayrıştırılamıyor", empty: "boş", expandAll: "Tüm alanları aç", expandTitle: `Bu alanı açmak/kapatmak için tıkla (Ctrl+E). 
Alt alanlarda dahil tüm alanları açmak için Ctrl+Click `, insert: "Ekle", insertTitle: "Bu alanın üstüne 'otomatik' tipinde yeni bir alan ekle (Ctrl+Ins)", insertSub: "Araya eklenecek alanın tipini seç", object: "Nesne", ok: "Tamam", redo: "Yeniden yap (Ctrl+Shift+Z)", removeText: "Kaldır", removeTitle: "Seçilen alanları kaldır (Ctrl+Del)", removeField: "Bu alanı kaldır (Ctrl+Del)", selectNode: "Bir nesne seç...", showAll: "tümünü göster", showMore: "daha fazla göster", showMoreStatus: "${totalChilds} alanın ${visibleChilds} alt alanları gösteriliyor", sort: "Sırala", sortTitle: "${type}'ın alt alanlarını sırala", sortTitleShort: "İçerikleri sırala", sortFieldLabel: "Alan:", sortDirectionLabel: "Yön:", sortFieldTitle: "Diziyi veya nesneyi sıralamak için iç içe geçmiş alanı seçin", sortAscending: "Artan", sortAscendingTitle: "Seçili alanı artan düzende sırala", sortDescending: "Azalan", sortDescendingTitle: "Seçili alanı azalan düzende sırala", string: "Karakter Dizisi", transform: "Dönüştür", transformTitle: "${type}'ın alt alanlarını filtrele, sırala veya dönüştür", transformTitleShort: "İçerikleri filterele, sırala veya dönüştür", transformQueryTitle: "JMESPath sorgusu gir", transformWizardLabel: "Sihirbaz", transformWizardFilter: "Filtre", transformWizardSortBy: "Sırala", transformWizardSelectFields: "Alanları seç", transformQueryLabel: "Sorgu", transformPreviewLabel: "Önizleme", type: "Tip", typeTitle: "Bu alanın tipini değiştir", openUrl: "URL'i yeni bir pencerede açmak için Ctrl+Click veya Ctrl+Enter", undo: "Son değişikliği geri al (Ctrl+Z)", validationCannotMove: "Alt alan olarak taşınamıyor", autoType: 'Alan tipi "otomatik". Alan türü otomatik olarak değerden belirlenirve bir dize, sayı, boolean veya null olabilir.', objectType: 'Alan tipi "nesne". Bir nesne, sıralanmamış bir anahtar / değer çifti kümesi içerir.', arrayType: 'Alan tipi "dizi". Bir dizi, düzenli değerler koleksiyonu içerir.', stringType: 'Alan tipi "karakter dizisi". Alan türü değerden belirlenmez,ancak her zaman karakter dizisi olarak döndürülür.', modeCodeText: "Kod", modeCodeTitle: "Kod vurgulayıcıya geç", modeFormText: "Form", modeFormTitle: "Form düzenleyiciye geç", modeTextText: "Metin", modeTextTitle: "Düz metin düzenleyiciye geç", modeTreeText: "Ağaç", modeTreeTitle: "Ağaç düzenleyiciye geç", modeViewText: "Görünüm", modeViewTitle: "Ağaç görünümüne geç", examples: "Örnekler", default: "Varsayılan", containsInvalidProperties: "Geçersiz özellikler içeriyor", containsInvalidItems: "Geçersiz öğeler içeriyor" }, ja: { array: "配列", auto: "オート", appendText: "追加", appendTitle: '次のフィールドに"オート"のフィールドを追加 (Ctrl+Shift+Ins)', appendSubmenuTitle: "追加するフィールドの型を選択してください", appendTitleAuto: '"オート"のフィールドを追加 (Ctrl+Shift+Ins)', ascending: "昇順", ascendingTitle: "${type}の子要素を昇順に並べ替え", actionsMenu: "クリックしてアクションメニューを開く (Ctrl+M)", collapseAll: "すべてを折りたたむ", descending: "降順", descendingTitle: "${type}の子要素を降順に並べ替え", drag: "ドラッグして選択中のフィールドを移動 (Alt+Shift+Arrows)", duplicateKey: "複製キー", duplicateText: "複製", duplicateTitle: "選択中のフィールドを複製 (Ctrl+D)", duplicateField: "選択中のフィールドを複製 (Ctrl+D)", duplicateFieldError: "フィールド名が重複しています", cannotParseFieldError: "JSONのフィールドを解析できません", cannotParseValueError: "JSONの値を解析できません", empty: "空", expandAll: "すべてを展開", expandTitle: `クリックしてフィールドを展開/折りたたむ (Ctrl+E). 
Ctrl+Click ですべての子要素を展開/折りたたむ`, insert: "挿入", insertTitle: "選択中のフィールドの前に新しいフィールドを挿入 (Ctrl+Ins)", insertSub: "挿入するフィールドの型を選択", object: "オブジェクト", ok: "実行", redo: "やり直す (Ctrl+Shift+Z)", removeText: "削除", removeTitle: "選択中のフィールドを削除 (Ctrl+Del)", removeField: "選択中のフィールドを削除 (Ctrl+Del)", selectNode: "ノードを選択...", showAll: "すべてを表示", showMore: "もっと見る", showMoreStatus: "${totalChilds}個のアイテムのうち ${visibleChilds}個を表示しています。", sort: "並べ替え", sortTitle: "${type}の子要素を並べ替え", sortTitleShort: "並べ替え", sortFieldLabel: "フィールド:", sortDirectionLabel: "順序:", sortFieldTitle: "配列またはオブジェクトを並び替えるためのフィールドを選択", sortAscending: "昇順", sortAscendingTitle: "選択中のフィールドを昇順に並び替え", sortDescending: "降順", sortDescendingTitle: "選択中のフィールドを降順に並び替え", string: "文字列", transform: "変換", transformTitle: "${type}の子要素をフィルター・並び替え・変換する", transformTitleShort: "内容をフィルター・並び替え・変換する", extract: "抽出", extractTitle: "${type}を抽出", transformQueryTitle: "JMESPathクエリを入力", transformWizardLabel: "ウィザード", transformWizardFilter: "フィルター", transformWizardSortBy: "並び替え", transformWizardSelectFields: "フィールドを選択", transformQueryLabel: "クエリ", transformPreviewLabel: "プレビュー", type: "型", typeTitle: "選択中のフィールドの型を変更", openUrl: "Ctrl+Click または Ctrl+Enter で 新規ウィンドウでURLを開く", undo: "元に戻す (Ctrl+Z)", validationCannotMove: "子要素に移動できません ", autoType: "オート： フィールドの型は値から自動的に決定されます。 (文字列・数値・ブール・null)", objectType: "オブジェクト： オブジェクトは順序が決まっていないキーと値のペア組み合わせです。", arrayType: "配列： 配列は順序が決まっている値の集合体です。", stringType: "文字列： フィールド型は値から決定されませんが、常に文字列として返されます。", modeCodeText: "コードモード", modeCodeTitle: "ハイライトモードに切り替え", modeFormText: "フォームモード", modeFormTitle: "フォームモードに切り替え", modeTextText: "テキストモード", modeTextTitle: "テキストモードに切り替え", modeTreeText: "ツリーモード", modeTreeTitle: "ツリーモードに切り替え", modeViewText: "ビューモード", modeViewTitle: "ビューモードに切り替え", modePreviewText: "プレビュー", modePreviewTitle: "プレビューに切り替え", examples: "例", default: "デフォルト", containsInvalidProperties: "無効なプロパティが含まれています", containsInvalidItems: "無効なアイテムが含まれています" }, "fr-FR": { array: "Liste", auto: "Auto", appendText: "Ajouter", appendTitle: "Ajouter un champ de type 'auto' après ce champ (Ctrl+Shift+Ins)", appendSubmenuTitle: "Sélectionner le type du champ à ajouter", appendTitleAuto: "Ajouter un champ de type 'auto' (Ctrl+Shift+Ins)", ascending: "Ascendant", ascendingTitle: "Trier les enfants de ce ${type} par ordre ascendant", actionsMenu: "Ouvrir le menu des actions (Ctrl+M)", collapseAll: "Regrouper", descending: "Descendant", descendingTitle: "Trier les enfants de ce ${type} par ordre descendant", drag: "Déplacer (Alt+Shift+Arrows)", duplicateKey: "Dupliquer la clé", duplicateText: "Dupliquer", duplicateTitle: "Dupliquer les champs sélectionnés (Ctrl+D)", duplicateField: "Dupliquer ce champ (Ctrl+D)", duplicateFieldError: "Dupliquer le nom de champ", cannotParseFieldError: "Champ impossible à parser en JSON", cannotParseValueError: "Valeur impossible à parser en JSON", empty: "vide", expandAll: "Étendre", expandTitle: `Étendre/regrouper ce champ (Ctrl+E). 
Ctrl+Click pour étendre/regrouper avec tous les champs.`, insert: "Insérer", insertTitle: "Insérer un champ de type 'auto' avant ce champ (Ctrl+Ins)", insertSub: "Sélectionner le type de champ à insérer", object: "Objet", ok: "Ok", redo: "Rejouer (Ctrl+Shift+Z)", removeText: "Supprimer", removeTitle: "Supprimer les champs sélectionnés (Ctrl+Del)", removeField: "Supprimer ce champ (Ctrl+Del)", searchTitle: "Rechercher champs et valeurs", searchNextResultTitle: "Résultat suivant (Enter)", searchPreviousResultTitle: "Résultat précédent (Shift + Enter)", selectNode: "Sélectionner un nœud...", showAll: "voir tout", showMore: "voir plus", showMoreStatus: "${visibleChilds} éléments affichés de ${totalChilds}.", sort: "Trier", sortTitle: "Trier les champs de ce ${type}", sortTitleShort: "Trier", sortFieldLabel: "Champ:", sortDirectionLabel: "Direction:", sortFieldTitle: "Sélectionner les champs permettant de trier les listes et objet", sortAscending: "Ascendant", sortAscendingTitle: "Trier les champs sélectionnés par ordre ascendant", sortDescending: "Descendant", sortDescendingTitle: "Trier les champs sélectionnés par ordre descendant", string: "Chaîne", transform: "Transformer", transformTitle: "Filtrer, trier, or transformer les enfants de ce ${type}", transformTitleShort: "Filtrer, trier ou transformer le contenu", extract: "Extraire", extractTitle: "Extraire ce ${type}", transformQueryTitle: "Saisir une requête JMESPath", transformWizardLabel: "Assistant", transformWizardFilter: "Filtrer", transformWizardSortBy: "Trier par", transformWizardSelectFields: "Sélectionner les champs", transformQueryLabel: "Requête", transformPreviewLabel: "Prévisualisation", type: "Type", typeTitle: "Changer le type de ce champ", openUrl: "Ctrl+Click ou Ctrl+Enter pour ouvrir l'url dans une autre fenêtre", undo: "Annuler la dernière action (Ctrl+Z)", validationCannotMove: "Cannot move a field into a child of itself", autoType: 'Champe de type "auto". Ce type de champ est automatiquement déterminé en fonction de la valeur et peut être de type "chaîne", "nombre", "booléen" ou null.', objectType: 'Champ de type "objet". Un objet contient un ensemble non ordonné de paires clé/valeur.', arrayType: 'Champ de type "liste". Une liste contient une collection ordonnée de valeurs.', stringType: `Champ de type "chaîne". Ce type de champ n'est pas déterminé en fonction de la valeur, mais retourne systématiquement une chaîne de caractères.`, modeEditorTitle: "Changer mode d'édition", modeCodeText: "Code", modeCodeTitle: "Activer surlignage code", modeFormText: "Formulaire", modeFormTitle: "Activer formulaire", modeTextText: "Texte", modeTextTitle: "Activer éditeur texte", modeTreeText: "Arbre", modeTreeTitle: "Activer éditeur arbre", modeViewText: "Lecture seule", modeViewTitle: "Activer vue arbre", modePreviewText: "Prévisualisation", modePreviewTitle: "Activer mode prévisualiser", examples: "Exemples", default: "Défaut", containsInvalidProperties: "Contient des propriétés non valides", containsInvalidItems: "Contient des éléments invalides" }, de: { array: "Auflistung", auto: "Auto", appendText: "anhängen", appendTitle: "Fügen Sie nach diesem Feld ein neues Feld mit dem Typ 'auto' ein (Strg+Umschalt+Ein)", appendSubmenuTitle: "Wählen Sie den Typ des neuen Feldes", appendTitleAuto: "Ein neues Feld vom Typ 'auto' hinzufügen (Strg+Umschalt+Ein)", ascending: "Aufsteigend", ascendingTitle: "Sortieren Sie die Elemente dieses ${type} in aufsteigender Reihenfolge", actionsMenu: "Klicken Sie zum Öffnen des Aktionsmenüs (Strg+M)", cannotParseFieldError: "Feld kann nicht in JSON geparst werden", cannotParseValueError: "Wert kann nicht in JSON geparst werden", collapseAll: "Alle Felder zuklappen", compactTitle: "JSON-Daten verdichten, alle Leerzeichen entfernen (Strg+Umschalt+\\)", descending: "Absteigend", descendingTitle: "Sortieren Sie die Elemente dieses ${type} in absteigender Reihenfolge", drag: "Ziehen, um dieses Feld zu verschieben (Alt+Umschalt+Pfeile)", duplicateKey: "Doppelter Schlüssel", duplicateText: "Duplikat", duplicateTitle: "Ausgewählte Felder duplizieren (Strg+D)", duplicateField: "Dieses Feld duplizieren (Strg+D)", duplicateFieldError: "Doppelter Feldname", empty: "leer", expandAll: "Alle Felder anzeigen", expandTitle: `Klicken Sie, um dieses Feld zu erweitern/zu kollabieren (Strg+E). 
Strg+Klicken Sie, um dieses Feld einschließlich aller Elemente zu erweitern/zu kollabieren.`, formatTitle: "JSON-Daten mit korrekter Einrückung und Zeilenvorschüben formatieren (Strg+\\)", insert: "einfügen", insertTitle: "Fügen Sie vor diesem Feld ein neues Feld mit dem Typ 'auto' ein (Strg+Einfg)", insertSub: "Wählen Sie den Typ des neuen Feldes", object: "Objekt", ok: "Ok", redo: "Wiederholen (Strg+Umschalt+Z)", removeText: "entfernen", removeTitle: "Ausgewählte Felder entfernen (Strg+Entf)", removeField: "Dieses Feld entfernen (Strg+Entf)", repairTitle: "JSON reparieren: Anführungszeichen und Escape-Zeichen korrigieren, Kommentare und JSONP-Notation entfernen, JavaScript-Objekte in JSON umwandeln.", searchTitle: "Suchfelder und Werte", searchNextResultTitle: "Nächstes Ergebnis (Enter)", searchPreviousResultTitle: "Vorheriges Ergebnis (Umschalt + Eingabe)", selectNode: "Wählen Sie einen Knoten aus...", showAll: "alle anzeigen", showMore: "mehr anzeigen", showMoreStatus: "Anzeige von ${visibleChilds} von ${totalChilds}-Elementen.", sort: "Sortieren", sortTitle: "Sortieren Sie die Elemente dieses ${type}", sortTitleShort: "Inhalt sortieren", sortFieldLabel: "Feld:", sortDirectionLabel: "Richtung:", sortFieldTitle: "Wählen Sie das verschachtelte Feld, nach dem das Array oder Objekt sortiert werden soll.", sortAscending: "Aufsteigend", sortAscendingTitle: "Sortieren Sie das ausgewählte Feld in aufsteigender Reihenfolge", sortDescending: "Absteigend", sortDescendingTitle: "Sortieren Sie das ausgewählte Feld in absteigender Reihenfolge", string: "Zeichenfolge", transform: "Verwandeln", transformTitle: "Die Elemente dieses ${type} filtern, sortieren oder transformieren", transformTitleShort: "Inhalte filtern, sortieren oder transformieren", extract: "Auszug", extractTitle: "Extrahieren Sie diesen ${type}", transformQueryTitle: "Eine JMESPath-Abfrage eingeben", transformWizardLabel: "Zauberer", transformWizardFilter: "Filter", transformWizardSortBy: "Sortieren nach", transformWizardSelectFields: "Felder auswählen", transformQueryLabel: "Anfrage", transformPreviewLabel: "Vorschau", type: "Geben Sie  ein.", typeTitle: "Ändern Sie den Typ dieses Feldes", openUrl: "Strg+Klicken oder Strg+Eingabe, um die URL in einem neuen Fenster zu öffnen", undo: "Letzte Aktion rückgängig machen (Strg+Z)", validationCannotMove: "Kann ein Feld nicht in ein Kind seiner selbst verschieben", autoType: 'Feldtyp "auto". Der Feldtyp wird automatisch aus dem Wert bestimmt und kann ein String, eine Zahl, boolesch oder null sein.', objectType: 'Feldtyp "Objekt". Ein Objekt enthält eine ungeordnete Menge von Schlüssel/Wert-Paaren.', arrayType: 'Feldtyp "Array". Ein Array enthält eine geordnete Sammlung von Werten.', stringType: 'Feldtyp "Zeichenfolge". Der Feldtyp wird nicht aus dem Wert bestimmt, sondern immer als Zeichenfolge zurückgegeben.', modeEditorTitle: "Editor-Modus umschalten", modeCodeText: "Code", modeCodeTitle: "Umschalten auf Code-Highlighter", modeFormText: "Formular", modeFormTitle: "Zum Formular-Editor wechseln", modeTextText: "Text", modeTextTitle: "Zum Editor für einfachen Text wechseln", modeTreeText: "Baum", modeTreeTitle: "Zum Baum-Editor wechseln", modeViewText: "Siehe", modeViewTitle: "Zur Baumansicht wechseln", modePreviewText: "Vorschau", modePreviewTitle: "In den Vorschau-Modus wechseln", examples: "Beispiele", default: "Standardmäßig", containsInvalidProperties: "Enthält ungültige Eigenschaften", containsInvalidItems: "Enthält ungültige Elemente" }, ru: { array: "Массив", auto: "Авто", appendText: "Добавить", appendTitle: "Добавить новое поле с типом 'авто' после этого поля (Ctrl+Shift+Ins)", appendSubmenuTitle: "Выбрать тип поля для добавления", appendTitleAuto: "Добавить новое поле с типом 'авто' (Ctrl+Shift+Ins)", ascending: "По возрастанию", ascendingTitle: "Сортировать ${type} по возрастанию", actionsMenu: "Нажмите для открытия меню действий (Ctrl+M)", cannotParseFieldError: "Невозможно преобразовать поле в JSON", cannotParseValueError: "Невозможно преобразовать значение в JSON", collapseAll: "Свернуть все", compactTitle: "Минификация JSON (Ctrl+Shift+I)", descending: "По убыванию", descendingTitle: "Сортировать ${type} по убыванию", drag: "Потяните для перемещения этого поля (Alt+Shift+Arrows)", duplicateKey: "повторяющийся ключ", duplicateText: "Дублировать", duplicateTitle: "Дублирование полей (Ctrl+D)", duplicateField: "Дублировать поле (Ctrl+D)", duplicateFieldError: "Дублирование названия поля", empty: "пустой", expandAll: "Развернуть все", expandTitle: `Нажмите для раскрытия/скрытия поля (Ctrl+E)
или Ctrl+Click для раскрытия/скрытия всех потомков.`, formatTitle: "Форматирование JSON (Ctrl+I)", insert: "Вставить", insertTitle: "Вставить новое поле с типом 'авто' перед этим полем (Ctrl+Ins)", insertSub: "Выбрать тип поля для вставки", object: "Объект", ok: "ОК", redo: "Повторить (Ctrl+Shift+Z)", removeText: "Удалить", removeTitle: "Удалить выбранные поля (Ctrl+Del)", removeField: "Удалить поле (Ctrl+Del)", repairTitle: "Восстановите JSON: исправьте кавычки и escape-символы, удалите комментарии и нотацию JSONP, модифицируйте объекты JavaScript в JSON.", searchTitle: "Поиск", searchNextResultTitle: "Следующий результат (Enter)", searchPreviousResultTitle: "Предыдущий результат (Shift + Enter)", selectNode: "Выбор узла...", showAll: "показать все", showMore: "больше", showMoreStatus: "${visibleChilds} из ${totalChilds}", sort: "Сортировка", sortTitle: "Сортировка потомков типа ${type}", sortTitleShort: "Сортировка содержимого", sortFieldLabel: "Поле:", sortDirectionLabel: "Направление:", sortFieldTitle: "Выберите поле для сортировки массива или объекта", sortAscending: "По возрастанию", sortAscendingTitle: "Сортировка выбранного поря по возрастанию", sortDescending: "По убыванию", sortDescendingTitle: "Сортировка выбранного поря по убыванию", string: "Строка", transform: "Модификация", transformTitle: "Фильтрация, сортировка или модификация данных типа ${type}", transformTitleShort: "Фильтрация, сортировка или модификация данных", extract: "Извлечение", extractTitle: "Извлечь тип ${type}", transformQueryTitle: "Введите JMESpath запрос", transformWizardLabel: "Мастер", transformWizardFilter: "Фильтр", transformWizardSortBy: "Сортировка", transformWizardSelectFields: "Поля", transformQueryLabel: "Запрос", transformPreviewLabel: "Просмотр", type: "Тип", typeTitle: "Изменить тип этого поля", openUrl: "Ctrl+Click или Ctrl+Enter для открытия url в новом окне", undo: "Отменить (Ctrl+Z)", validationCannotMove: "Поле не может быть перемещено в потомка", autoType: "Тип поля автоматически определяется по значению и может быть строкой, числом, логическим значением или null.", objectType: "Объект содержит неупорядоченный набор пар ключ/значение.", arrayType: "Массив содержит упорядоченный набор значений.", stringType: "Тип поля не определяется из значения, но всегда возвращается как строка.", modeEditorTitle: "Переключение режима редактора", modeCodeText: "Код", modeCodeTitle: "Переключить в режим редактора кода", modeFormText: "Форма", modeFormTitle: "Переключить в режим формы", modeTextText: "Текст", modeTextTitle: "Переключить в режим редактора текста", modeTreeText: "Дерево", modeTreeTitle: "Переключить в режим редактора дерева", modeViewText: "Просмотр дерева", modeViewTitle: "Переключить в режим просмотра дерева", modePreviewText: "Просмотр", modePreviewTitle: "Переключить в режим просмотра", examples: "Примеры", default: "По умолчанию", containsInvalidProperties: "Содержит недопустимые свойства", containsInvalidItems: "Содержит недопустимые элементы" }, ko: { array: "배열", auto: "자동", appendText: "추가", appendTitle: '선택한 요소 아래에 "자동" 요소를 추가합니다. (Ctrl + Shift + Ins)', appendSubmenuTitle: "추가할 요소의 유형을 선택해주세요.", appendTitleAuto: '"자동" 요소를 추가합니다. (Ctrl + Shift + Ins)', ascending: "오름차순", ascendingTitle: "선택한 ${type}의 하위 요소를 오름차순 정렬합니다.", actionsMenu: "메뉴 열기 (Ctrl + M)", cannotParseFieldError: "JSON의 요소를 해석할 수 없습니다.", cannotParseValueError: "JSON의 값을 해석할 수 없습니다.", collapseAll: "모두 접기", compactTitle: "모든 공백을 제거하여 JSON 데이터를 작게 만듭니다. (Ctrl + Shift + I)", descending: "내림차순", descendingTitle: "선택한 ${type}의 하위 요소를 내림차순으로 정렬", drag: "드래그하여 요소를 이동합니다. (Alt + Shift + Arrows)", duplicateKey: "복제키", duplicateText: "복제", duplicateTitle: "선택한 요소를 복제합니다. (Ctrl + D)", duplicateField: "선택한 요소를 복제합니다. (Ctrl + D)", duplicateFieldError: "요소 이름이 중복되었습니다.", empty: "비어있음", expandAll: "모두 열기", expandTitle: `클릭하여 요소를 열거나 닫습니다. (Ctrl + E) 
Ctrl + Click으로 모든 하위 요소를 열거나 닫습니다.`, formatTitle: "적절한 들여쓰기 및 줄바꿈으로 JSON 데이터를 정형화합니다. (Ctrl + I)", insert: "삽입", insertTitle: "선택한 요소 위에 새요소를 삽입합니다. (Ctrl + Ins)", insertSub: "삽입할 요소의 유형을 선택해주세요.", object: "객체", ok: "확인", redo: "다시 실행 (Ctrl + Shift + Z)", removeText: "삭제", removeTitle: "선택한 요소를 삭제합니다. (Ctrl + Del)", removeField: "선택한 요소를 삭제합니다. (Ctrl + Del)", repairTitle: "JSON 교정: JSON 내의 주석과 JSONP 표기법을 지우고 따옴표와 이스케이프 문자를 수정합니다.", searchTitle: "요소 또는 값 찾기", searchNextResultTitle: "다음으로 찾기 (Enter)", searchPreviousResultTitle: "이전으로 찾기 (Shift + Enter)", selectNode: "요소를 선택해주세요...", showAll: "모두보기", showMore: "더보기", showMoreStatus: "${totalChilds} 개의 항목 중 ${visibleChilds} 개를 표시합니다.", sort: "정렬", sortTitle: "선택한 ${type}의 하위 요소를 정렬합니다.", sortTitleShort: "정렬", sortFieldLabel: "요소:", sortDirectionLabel: "순서:", sortFieldTitle: "배열이나 객체를 정렬하는 요소를 선택해주세요.", sortAscending: "오름차순", sortAscendingTitle: "선택한 요소를 오름차순으로 정렬합니다.", sortDescending: "내림차순", sortDescendingTitle: "선택한 요소를 내림차순으로 정렬합니다.", string: "문자", transform: "변환", transformTitle: "선택한 ${type}의 하위 요소를 필터하거나 정렬 또는 변환합니다.", transformTitleShort: "내용을 필터하거나 정렬 또는 변환합니다.", extract: "추출", extractTitle: "선택한 ${type}의 값을 최상위에 위치시킵니다.", transformQueryTitle: "JMESPath 쿼리를 입력해주세요.", transformWizardLabel: "마법사", transformWizardFilter: "필터", transformWizardSortBy: "정렬", transformWizardSelectFields: "요소를 선택해주세요.", transformQueryLabel: "쿼리", transformPreviewLabel: "미리보기", type: "유형", typeTitle: "선택한 요소의 유형을 변경합니다.", openUrl: "Ctrl + Click 또는 Ctrl + Enter로 새 창에서 URL 열기", undo: "실행 취소 (Ctrl + Z)", validationCannotMove: "하위 요소로 이동할 수 없습니다.", autoType: "자동: 요소의 형식이 값의 유형으로 결정됩니다. 문자, 숫자, 부울, 또는 null만 허용됩니다.", objectType: "객체: 순서대로 나열되지 않은 이름/값 쌍으로 이루어진 집합입니다.", arrayType: "배열: 순서대로 나열된 값의 집합입니다.", stringType: "문자: 요소의 유형이 값에서 결정되지 않지만 항상 문자로 반환됩니다.", modeEditorTitle: "편집기 유형 변경", modeCodeText: "코드", modeCodeTitle: "형식 교정을 도와주는 기능이 포함된 문자 편집기", modeFormText: "입력 양식", modeFormTitle: "정해진 요소에 값을 입력하는 편집기", modeTextText: "문자", modeTextTitle: "단순 문자 편집기", modeTreeText: "트리", modeTreeTitle: "트리 구조로 표시되는 편집기", modeViewText: "보기", modeViewTitle: "읽기전용 트리 구조로 JSON을 표시", modePreviewText: "미리보기", modePreviewTitle: "읽기전용 문자로 JSON을 표시", examples: "예제", default: "기본값", containsInvalidProperties: "잘못된 속성이 포함되어 있습니다.", containsInvalidItems: "잘못된 항목이 포함되어 있습니다" } }, d = Object.keys(w), a = "en", o = typeof navigator < "u" ? navigator.language || navigator.userLanguage : void 0, e = d.find(function(t) {
            return t === o;
          }) || a;
        }, 6056: function(F, E, D) {
          function j(d, a) {
            var o = a.sort, e = a.filter, t = a.projection, i = "";
            return e ? (a = e.field !== "@" ? ["0"].concat((0, w.parsePath)("." + e.field)) : ["0"], a = typeof (0, w.get)(d, a) == "string" ? e.value : (0, w.parseString)(e.value), i += "[? " + e.field + " " + e.relation + " `" + JSON.stringify(a) + "`]") : i += Array.isArray(d) ? "[*]" : "@", o && (o.direction === "desc" ? i += " | reverse(sort_by(@, &" + o.field + "))" : i += " | sort_by(@, &" + o.field + ")"), t && (i[i.length - 1] !== "]" && (i += " | [*]"), t.fields.length === 1 ? i += "." + t.fields[0] : 1 < t.fields.length && (i += ".{" + t.fields.map(function(s) {
              var h = s.split(".");
              return h[h.length - 1] + ": " + s;
            }).join(", ") + "}")), i;
          }
          function m(d, a) {
            return b().search(d, a);
          }
          D.d(E, { r: function() {
            return j;
          }, J: function() {
            return m;
          } });
          var E = D(5156), b = D.n(E), w = D(9791);
        }, 4987: function() {
          function F(u) {
            "remove" in u || Object.defineProperty(u, "remove", { configurable: !0, enumerable: !0, writable: !0, value: function() {
              this.parentNode !== void 0 && this.parentNode.removeChild(this);
            } });
          }
          typeof Element < "u" && (window.Element !== void 0 && F(window.Element.prototype), window.CharacterData !== void 0 && F(window.CharacterData.prototype), window.DocumentType !== void 0 && F(window.DocumentType.prototype)), Array.prototype.findIndex || Object.defineProperty(Array.prototype, "findIndex", { value: function(u) {
            for (var D = 0; D < this.length; D++) {
              var j = this[D];
              if (u.call(this, j, D, this)) return D;
            }
            return -1;
          }, configurable: !0, writable: !0 }), Array.prototype.find || Object.defineProperty(Array.prototype, "find", { value: function(u) {
            return u = this.findIndex(u), this[u];
          }, configurable: !0, writable: !0 }), String.prototype.trim || (String.prototype.trim = function() {
            return this.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, "");
          });
        }, 341: function(F, r, h) {
          function j(l, I) {
            for (var f = 0; f < I.length; f++) {
              var n = I[f];
              n.enumerable = n.enumerable || !1, n.configurable = !0, "value" in n && (n.writable = !0), Object.defineProperty(l, n.key, n);
            }
          }
          h.r(r), h.d(r, { previewModeMixins: function() {
            return p;
          } });
          var r = h(8909), m = h.n(r), E = h(4188), b = h(6436), w = h(2474), d = function() {
            function l(n, g, C) {
              (function(y, c) {
                if (!(y instanceof c)) throw new TypeError("Cannot call a class as a function");
              })(this, l), this.onChange = n, this.calculateItemSize = g || function() {
                return 1;
              }, this.limit = C, this.items = [], this.index = -1;
            }
            var I, f;
            return I = l, (f = [{ key: "add", value: function(n) {
              for (; this._calculateHistorySize() > this.limit && 1 < this.items.length; ) this.items.shift(), this.index--;
              this.items = this.items.slice(0, this.index + 1), this.items.push(n), this.index++, this.onChange();
            } }, { key: "_calculateHistorySize", value: function() {
              var n = this.calculateItemSize, g = 0;
              return this.items.forEach(function(C) {
                g += n(C);
              }), g;
            } }, { key: "undo", value: function() {
              if (this.canUndo()) return this.index--, this.onChange(), this.items[this.index];
            } }, { key: "redo", value: function() {
              if (this.canRedo()) return this.index++, this.onChange(), this.items[this.index];
            } }, { key: "canUndo", value: function() {
              return 0 < this.index;
            } }, { key: "canRedo", value: function() {
              return this.index < this.items.length - 1;
            } }, { key: "clear", value: function() {
              this.items = [], this.index = -1, this.onChange();
            } }]) && j(I.prototype, f), l;
          }(), a = h(7907), o = h(6056), e = h(6617), t = h(6210), i = h(2558), r = h(5956), s = h(9791), h = r.textModeMixins[0].mixin, r = { create: function(g) {
            var I = 1 < arguments.length && arguments[1] !== void 0 ? arguments[1] : {};
            I.statusBar === void 0 && (I.statusBar = !0), I.mainMenuBar = I.mainMenuBar !== !1, I.enableSort = I.enableSort !== !1, I.enableTransform = I.enableTransform !== !1, I.createQuery = I.createQuery || o.r, I.executeQuery = I.executeQuery || o.J, typeof (this.options = I).indentation == "number" ? this.indentation = Number(I.indentation) : this.indentation = 2, (0, a.cC)(this.options.languages), (0, a.m0)(this.options.language), this.mode = "preview";
            var f = this;
            this.container = g, this.dom = {}, this.json = void 0, this.text = "", this._debouncedValidate = (0, s.debounce)(this.validate.bind(this), this.DEBOUNCE_INTERVAL), this.width = g.clientWidth, this.height = g.clientHeight, this.frame = document.createElement("div"), this.frame.className = "jsoneditor jsoneditor-mode-preview", this.frame.onclick = function(C) {
              C.preventDefault();
            };
            var n, g = { target: this.frame, onFocus: this.options.onFocus || null, onBlur: this.options.onBlur || null };
            this.frameFocusTracker = new w.R(g), this.content = document.createElement("div"), this.content.className = "jsoneditor-outer", this.dom.busy = document.createElement("div"), this.dom.busy.className = "jsoneditor-busy", this.dom.busyContent = document.createElement("span"), this.dom.busyContent.textContent = "busy...", this.dom.busy.appendChild(this.dom.busyContent), this.content.appendChild(this.dom.busy), this.dom.previewContent = document.createElement("pre"), this.dom.previewContent.className = "jsoneditor-preview", this.dom.previewText = document.createTextNode(""), this.dom.previewContent.appendChild(this.dom.previewText), this.content.appendChild(this.dom.previewContent), this.options.mainMenuBar && ((0, s.addClassName)(this.content, "has-main-menu-bar"), this.menu = document.createElement("div"), this.menu.className = "jsoneditor-menu", this.frame.appendChild(this.menu), (g = document.createElement("button")).type = "button", g.className = "jsoneditor-format", g.title = (0, a.Iu)("formatTitle"), this.menu.appendChild(g), g.onclick = function() {
              f.executeWithBusyMessage(function() {
                try {
                  f.format();
                } catch (C) {
                  f._onError(C);
                }
              }, "formatting...");
            }, (g = document.createElement("button")).type = "button", g.className = "jsoneditor-compact", g.title = (0, a.Iu)("compactTitle"), this.menu.appendChild(g), g.onclick = function() {
              f.executeWithBusyMessage(function() {
                try {
                  f.compact();
                } catch (C) {
                  f._onError(C);
                }
              }, "compacting...");
            }, this.options.enableSort && ((g = document.createElement("button")).type = "button", g.className = "jsoneditor-sort", g.title = (0, a.Iu)("sortTitleShort"), g.onclick = function() {
              f._showSortModal();
            }, this.menu.appendChild(g)), this.options.enableTransform && ((n = document.createElement("button")).type = "button", n.title = (0, a.Iu)("transformTitleShort"), n.className = "jsoneditor-transform", n.onclick = function() {
              f._showTransformModal();
            }, this.dom.transform = n, this.menu.appendChild(n)), (n = document.createElement("button")).type = "button", n.className = "jsoneditor-repair", n.title = (0, a.Iu)("repairTitle"), this.menu.appendChild(n), !(n.onclick = function() {
              f.json === void 0 && f.executeWithBusyMessage(function() {
                try {
                  f.repair();
                } catch (C) {
                  f._onError(C);
                }
              }, "repairing...");
            }) !== this.options.history && (this.history = new d(function() {
              f.dom.undo.disabled = !f.history.canUndo(), f.dom.redo.disabled = !f.history.canRedo();
            }, function(C) {
              return 2 * C.text.length;
            }, E.oW), (n = document.createElement("button")).type = "button", n.className = "jsoneditor-undo jsoneditor-separator", n.title = (0, a.Iu)("undo"), n.onclick = function() {
              var C = f.history.undo();
              C && f._applyHistory(C);
            }, this.menu.appendChild(n), this.dom.undo = n, (n = document.createElement("button")).type = "button", n.className = "jsoneditor-redo", n.title = (0, a.Iu)("redo"), n.onclick = function() {
              var C = f.history.redo();
              C && f._applyHistory(C);
            }, this.menu.appendChild(n), this.dom.redo = n, this.history.onChange()), this.options && this.options.modes && this.options.modes.length && (this.modeSwitcher = new e.x(this.menu, this.options.modes, this.options.mode, function(C) {
              f.setMode(C), f.modeSwitcher.focus();
            }))), this.errorTable = new b.Q({ errorTableVisible: !0, onToggleVisibility: function() {
              f.validate();
            }, onFocusLine: null, onChangeHeight: function(C) {
              C = C + (f.dom.statusBar ? f.dom.statusBar.clientHeight : 0) + 1, f.content.style.marginBottom = -C + "px", f.content.style.paddingBottom = C + "px";
            } }), this.frame.appendChild(this.content), this.frame.appendChild(this.errorTable.getErrorTable()), this.container.appendChild(this.frame), I.statusBar && ((0, s.addClassName)(this.content, "has-status-bar"), I = document.createElement("div"), (this.dom.statusBar = I).className = "jsoneditor-statusbar", this.frame.appendChild(I), this.dom.fileSizeInfo = document.createElement("span"), this.dom.fileSizeInfo.className = "jsoneditor-size-info", this.dom.fileSizeInfo.innerText = "", I.appendChild(this.dom.fileSizeInfo), this.dom.arrayInfo = document.createElement("span"), this.dom.arrayInfo.className = "jsoneditor-size-info", this.dom.arrayInfo.innerText = "", I.appendChild(this.dom.arrayInfo), I.appendChild(this.errorTable.getErrorCounter()), I.appendChild(this.errorTable.getWarningIcon()), I.appendChild(this.errorTable.getErrorIcon())), this._renderPreview(), this.setSchema(this.options.schema, this.options.schemaRefs);
          }, _renderPreview: function() {
            var l = this.getText();
            this.dom.previewText.nodeValue = (0, s.limitCharacters)(l, E.WF), this.dom.fileSizeInfo && (this.dom.fileSizeInfo.innerText = "Size: " + (0, s.formatSize)(l.length)), this.dom.arrayInfo && (Array.isArray(this.json) ? this.dom.arrayInfo.innerText = "Array: " + this.json.length + " items" : this.dom.arrayInfo.innerText = "");
          }, _onChange: function() {
            if (this._debouncedValidate(), this.options.onChange) try {
              this.options.onChange();
            } catch (l) {
              console.error("Error in onChange callback: ", l);
            }
            if (this.options.onChangeJSON) try {
              this.options.onChangeJSON(this.get());
            } catch (l) {
              console.error("Error in onChangeJSON callback: ", l);
            }
            if (this.options.onChangeText) try {
              this.options.onChangeText(this.getText());
            } catch (l) {
              console.error("Error in onChangeText callback: ", l);
            }
          } };
          r._showSortModal = function() {
            var l = this;
            this.executeWithBusyMessage(function() {
              var I = l.options.modalAnchor || E.qD, f = l.get();
              l._renderPreview(), (0, t.showSortModal)(I, f, function(n) {
                l.executeWithBusyMessage(function() {
                  var g, C, y;
                  g = f, C = n, Array.isArray(g) && (y = (0, s.sort)(g, C.path, C.direction), l.sortedBy = C, l._setAndFireOnChange(y)), (0, s.isObject)(g) && (g = (0, s.sortObjectKeys)(g, C.direction), l.sortedBy = C, l._setAndFireOnChange(g));
                }, "sorting...");
              }, l.sortedBy);
            }, "parsing...");
          }, r._showTransformModal = function() {
            var l = this;
            this.executeWithBusyMessage(function() {
              var g = l.options, I = g.createQuery, f = g.executeQuery, n = g.modalAnchor, g = g.queryDescription, C = l.get();
              l._renderPreview(), (0, i.showTransformModal)({ container: n || E.qD, json: C, queryDescription: g, createQuery: I, executeQuery: f, onTransform: function(y) {
                l.executeWithBusyMessage(function() {
                  var c = f(C, y);
                  l._setAndFireOnChange(c);
                }, "transforming...");
              } });
            }, "parsing...");
          }, r.destroy = function() {
            this.frame && this.container && this.frame.parentNode === this.container && this.container.removeChild(this.frame), this.modeSwitcher && (this.modeSwitcher.destroy(), this.modeSwitcher = null), this._debouncedValidate = null, this.history && (this.history.clear(), this.history = null), this.frameFocusTracker.destroy();
          }, r.compact = function() {
            var l = this.get(), I = JSON.stringify(l);
            this._setTextAndFireOnChange(I, l);
          }, r.format = function() {
            var l = this.get(), I = JSON.stringify(l, null, this.indentation);
            this._setTextAndFireOnChange(I, l);
          }, r.repair = function() {
            var l = this.getText();
            try {
              var I = m()(l);
              this._setTextAndFireOnChange(I);
            } catch {
            }
          }, r.focus = function() {
            this.dom.transform.focus();
          }, r.set = function(l) {
            this.history && this.history.clear(), this._set(l);
          }, r.update = function(l) {
            this._set(l);
          }, r._set = function(l) {
            this.text = void 0, this.json = l, this._renderPreview(), this._pushHistory(), this._debouncedValidate();
          }, r._setAndFireOnChange = function(l) {
            this._set(l), this._onChange();
          }, r.get = function() {
            var l;
            return this.json === void 0 && (l = this.getText(), this.json = (0, s.parse)(l)), this.json;
          }, r.getText = function() {
            return this.text === void 0 && (this.text = JSON.stringify(this.json, null, this.indentation), this.options.escapeUnicode === !0 && (this.text = (0, s.escapeUnicodeChars)(this.text))), this.text;
          }, r.setText = function(l) {
            this.history && this.history.clear(), this._setText(l);
          }, r.updateText = function(l) {
            this.getText() !== l && this._setText(l);
          }, r._setText = function(l, I) {
            var f;
            this.options.escapeUnicode === !0 ? this.text = (0, s.escapeUnicodeChars)(l) : this.text = l, this.json = I, this._renderPreview(), this.json === void 0 ? (f = this).executeWithBusyMessage(function() {
              try {
                f.json = f.get(), f._renderPreview(), f._pushHistory();
              } catch {
              }
            }, "parsing...") : this._pushHistory(), this._debouncedValidate();
          }, r._setTextAndFireOnChange = function(l, I) {
            this._setText(l, I), this._onChange();
          }, r._applyHistory = function(l) {
            this.json = l.json, this.text = l.text, this._renderPreview(), this._debouncedValidate();
          }, r._pushHistory = function() {
            var l;
            this.history && (l = { text: this.text, json: this.json }, this.history.add(l));
          }, r.executeWithBusyMessage = function(l, I) {
            var f;
            this.getText().length > E.EX ? ((0, s.addClassName)((f = this).frame, "busy"), f.dom.busyContent.innerText = I, setTimeout(function() {
              l(), (0, s.removeClassName)(f.frame, "busy"), f.dom.busyContent.innerText = "";
            }, 100)) : l();
          }, r.validate = h.validate, r._renderErrors = h._renderErrors;
          var p = [{ mode: "preview", mixin: r, data: "json" }];
        }, 6210: function(F, m, D) {
          function j(d, a, o, h) {
            var t = Array.isArray(a) ? (0, w.getChildPaths)(a) : [""], i = h && h.path && (0, w.contains)(t, h.path) ? h.path : t[0], s = h && h.direction || "asc", h = '<div class="pico-modal-contents"><div class="pico-modal-header">' + (0, b.Iu)("sort") + "</div><form><table><tbody><tr>  <td>" + (0, b.Iu)("sortFieldLabel") + ' </td>  <td class="jsoneditor-modal-input">  <div class="jsoneditor-select-wrapper">    <select id="field" title="' + (0, b.Iu)("sortFieldTitle") + '">    </select>  </div>  </td></tr><tr>  <td>' + (0, b.Iu)("sortDirectionLabel") + ' </td>  <td class="jsoneditor-modal-input">  <div id="direction" class="jsoneditor-button-group"><input type="button" value="' + (0, b.Iu)("sortAscending") + '" title="' + (0, b.Iu)("sortAscendingTitle") + '" data-value="asc" class="jsoneditor-button-first jsoneditor-button-asc"/><input type="button" value="' + (0, b.Iu)("sortDescending") + '" title="' + (0, b.Iu)("sortDescendingTitle") + '" data-value="desc" class="jsoneditor-button-last jsoneditor-button-desc"/>  </div>  </td></tr><tr><td colspan="2" class="jsoneditor-modal-input jsoneditor-modal-actions">  <input type="submit" id="ok" value="' + (0, b.Iu)("ok") + '" /></td></tr></tbody></table></form></div>';
            E()({ parent: d, content: h, overlayClass: "jsoneditor-modal-overlay", overlayStyles: { backgroundColor: "rgb(1,1,1)", opacity: 0.3 }, modalClass: "jsoneditor-modal jsoneditor-modal-sort" }).afterCreate(function(r) {
              function p(g) {
                n.value = g, n.className = "jsoneditor-button-group jsoneditor-button-group-value-" + n.value;
              }
              var l = r.modalElem().querySelector("form"), I = r.modalElem().querySelector("#ok"), f = r.modalElem().querySelector("#field"), n = r.modalElem().querySelector("#direction");
              t.forEach(function(g) {
                var C, y = document.createElement("option");
                y.text = (C = g) === "" ? "@" : C[0] === "." ? C.slice(1) : C, y.value = g, f.appendChild(y);
              }), f.value = i || t[0], p(s || "asc"), n.onclick = function(g) {
                p(g.target.getAttribute("data-value"));
              }, I.onclick = function(g) {
                g.preventDefault(), g.stopPropagation(), r.close(), o({ path: f.value, direction: n.value });
              }, l && (l.onsubmit = I.onclick);
            }).afterClose(function(r) {
              r.destroy();
            }).show();
          }
          D.r(m), D.d(m, { showSortModal: function() {
            return j;
          } });
          var m = D(483), E = D.n(m), b = D(7907), w = D(9791);
        }, 2558: function(F, d, D) {
          function j(s) {
            return (j = typeof Symbol == "function" && typeof Symbol.iterator == "symbol" ? function(h) {
              return typeof h;
            } : function(h) {
              return h && typeof Symbol == "function" && h.constructor === Symbol && h !== Symbol.prototype ? "symbol" : typeof h;
            })(s);
          }
          function m(s, h, r, p) {
            return typeof s == "boolean" || s instanceof Boolean || s === null || typeof s == "number" || s instanceof Number || typeof s == "string" || s instanceof String || s instanceof Date ? JSON.stringify(s) : Array.isArray(s) ? function(l, I, f, n) {
              for (var g = I ? f + I : void 0, C = I ? `[
` : "[", y = 0; y < l.length; y++) {
                var c = l[y];
                if (I && (C += g), C += c !== void 0 && typeof c != "function" ? m(c, I, g, n) : "null", y < l.length - 1 && (C += I ? `,
` : ","), C.length > n) return C + "...";
              }
              return C += I ? `
` + f + "]" : "]";
            }(s, h, r, p) : s && j(s) === "object" ? function(l, I, f, n) {
              var g, C = I ? f + I : void 0, y = !0, c = I ? `{
` : "{";
              if (typeof l.toJSON == "function") return m(l.toJSON(), I, f, n);
              for (g in l) if (function(k, S) {
                return Object.prototype.hasOwnProperty.call(k, S);
              }(l, g)) {
                var v = l[g];
                if (y ? y = !1 : c += I ? `,
` : ",", c += I ? C + '"' + g + '": ' : '"' + g + '":', (c += m(v, I, C, n)).length > n) return c + "...";
              }
              return c += I ? `
` + f + "}" : "}";
            }(s, h, r, p) : void 0;
          }
          function E(s, h) {
            for (var r = ""; 0 < h--; ) r += s;
            return r;
          }
          function b(s) {
            var h = s.container, r = s.json, n = s.queryDescription, n = n === void 0 ? i : n, p = s.createQuery, l = s.executeQuery, I = s.onTransform, f = r, n = '<label class="pico-modal-contents"><div class="pico-modal-header">' + (0, o.Iu)("transform") + "</div><p>" + n + '</p><div class="jsoneditor-jmespath-label">' + (0, o.Iu)("transformWizardLabel") + ' </div><div id="wizard" class="jsoneditor-jmespath-block jsoneditor-jmespath-wizard">  <table class="jsoneditor-jmespath-wizard-table">    <tbody>      <tr>        <th>' + (0, o.Iu)("transformWizardFilter") + '</th>        <td class="jsoneditor-jmespath-filter">          <div class="jsoneditor-inline jsoneditor-jmespath-filter-field" >            <select id="filterField">            </select>          </div>          <div class="jsoneditor-inline jsoneditor-jmespath-filter-relation" >            <select id="filterRelation">              <option value="==">==</option>              <option value="!=">!=</option>              <option value="<">&lt;</option>              <option value="<=">&lt;=</option>              <option value=">">&gt;</option>              <option value=">=">&gt;=</option>            </select>          </div>          <div class="jsoneditor-inline jsoneditor-jmespath-filter-value" >            <input type="text" class="value" placeholder="value..." id="filterValue" />          </div>        </td>      </tr>      <tr>        <th>' + (0, o.Iu)("transformWizardSortBy") + '</th>        <td class="jsoneditor-jmespath-filter">          <div class="jsoneditor-inline jsoneditor-jmespath-sort-field">            <select id="sortField">            </select>          </div>          <div class="jsoneditor-inline jsoneditor-jmespath-sort-order" >            <select id="sortOrder">              <option value="asc">Ascending</option>              <option value="desc">Descending</option>            </select>          </div>        </td>      </tr>      <tr id="selectFieldsPart">        <th>' + (0, o.Iu)("transformWizardSelectFields") + '</th>        <td class="jsoneditor-jmespath-filter">          <select class="jsoneditor-jmespath-select-fields" id="selectFields" multiple></select>        </td>      </tr>    </tbody>  </table></div><div class="jsoneditor-jmespath-label">' + (0, o.Iu)("transformQueryLabel") + ' </div><div class="jsoneditor-jmespath-block">  <textarea id="query"             rows="4"             autocomplete="off"             autocorrect="off"             autocapitalize="off"             spellcheck="false"            title="' + (0, o.Iu)("transformQueryTitle") + '">[*]</textarea></div><div class="jsoneditor-jmespath-label">' + (0, o.Iu)("transformPreviewLabel") + ' </div><div class="jsoneditor-jmespath-block">  <textarea id="preview"       class="jsoneditor-transform-preview"      readonly> </textarea></div><div class="jsoneditor-jmespath-block jsoneditor-modal-actions">  <input type="submit" id="ok" value="' + (0, o.Iu)("ok") + '" autofocus /></div></div>';
            w()({ parent: h, content: n, overlayClass: "jsoneditor-modal-overlay", overlayStyles: { backgroundColor: "rgb(1,1,1)", opacity: 0.3 }, modalClass: "jsoneditor-modal jsoneditor-modal-transform", focus: !1 }).afterCreate(function(g) {
              function C(R) {
                return R === "" ? "@" : R[0] === "." ? R.slice(1) : R;
              }
              function y(R, T) {
                try {
                  H.value = p(R, T), k.disabled = !1, de();
                } catch (N) {
                  T = 'Error: an error happened when executing "createQuery": ' + (N.message || N.toString()), H.value = "", k.disabled = !0, Y.className = "jsoneditor-transform-preview jsoneditor-error", Y.value = T;
                }
              }
              function c() {
                var R = {};
                if (S.value && L.value && W.value && (R.filter = { field: S.value, relation: L.value, value: W.value }), _.value && O.value && (R.sort = { field: _.value, direction: O.value }), z.value) {
                  for (var T, N = [], A = 0; A < z.options.length; A++) z.options[A].selected && (T = z.options[A].value, N.push(T));
                  R.projection = { fields: N };
                }
                y(r, R);
              }
              var v = g.modalElem(), q = v.querySelector("#wizard"), k = v.querySelector("#ok"), S = v.querySelector("#filterField"), L = v.querySelector("#filterRelation"), W = v.querySelector("#filterValue"), _ = v.querySelector("#sortField"), O = v.querySelector("#sortOrder"), z = v.querySelector("#selectFields"), H = v.querySelector("#query"), Y = v.querySelector("#preview");
              Array.isArray(f) || (q.style.fontStyle = "italic", q.textContent = "(wizard not available for objects, only for arrays)"), (0, e.getChildPaths)(r).forEach(function(N) {
                var T = C(N), N = document.createElement("option");
                N.text = T, N.value = T, S.appendChild(N), N = document.createElement("option"), N.text = T, N.value = T, _.appendChild(N);
              });
              var ee = (0, e.getChildPaths)(r, !0).filter(function(R) {
                return R !== "";
              });
              0 < ee.length ? ee.forEach(function(N) {
                var T = C(N), N = document.createElement("option");
                N.text = T, N.value = T, z.appendChild(N);
              }) : (J = v.querySelector("#selectFieldsPart")) && (J.style.display = "none");
              var ie = new (a())(S, { defaultSelected: !1, clearable: !0, allowDeselect: !0, placeholder: "field..." }), U = new (a())(L, { defaultSelected: !1, clearable: !0, allowDeselect: !0, placeholder: "compare..." }), q = new (a())(_, { defaultSelected: !1, clearable: !0, allowDeselect: !0, placeholder: "field..." }), ee = new (a())(O, { defaultSelected: !1, clearable: !0, allowDeselect: !0, placeholder: "order..." }), J = new (a())(z, { multiple: !0, clearable: !0, defaultSelected: !1, placeholder: "select fields..." });
              ie.on("selectr.change", c), U.on("selectr.change", c), W.oninput = c, q.on("selectr.change", c), ee.on("selectr.change", c), J.on("selectr.change", c), v.querySelector(".pico-modal-contents").onclick = function(R) {
                R.target.nodeName !== "A" && R.preventDefault();
              };
              var de = (0, e.debounce)(function() {
                try {
                  var R = l(f, H.value);
                  Y.className = "jsoneditor-transform-preview", Y.value = (T = R, N = 2, A = t.WF, typeof N == "number" ? 10 < N ? x = E(" ", 10) : 1 <= N && (x = E(" ", N)) : typeof N == "string" && N !== "" && (x = N), (T = m(T, x, "", A)).length > A ? (x = T, (typeof (A = A) == "number" ? x.slice(0, A) : x) + "...") : T), k.disabled = !1;
                } catch (M) {
                  Y.className = "jsoneditor-transform-preview jsoneditor-error", Y.value = M.toString(), k.disabled = !0;
                }
                var T, N, A, x;
              }, 300);
              H.oninput = de, k.onclick = function(R) {
                R.preventDefault(), R.stopPropagation(), g.close(), I(H.value);
              }, y(r, {}), setTimeout(function() {
                H.select(), H.focus(), H.selectionStart = 3, H.selectionEnd = 3;
              });
            }).afterClose(function(g) {
              g.destroy();
            }).show();
          }
          D.r(d), D.d(d, { showTransformModal: function() {
            return b;
          } });
          var d = D(483), w = D.n(d), d = D(3879), a = D.n(d), o = D(7907), e = D(9791), t = D(4188), i = 'Enter a <a href="http://jmespath.org" target="_blank">JMESPath</a> query to filter, sort, or transform the JSON data.<br/>To learn JMESPath, go to <a href="http://jmespath.org/tutorial.html" target="_blank">the interactive tutorial</a>.';
        }, 5956: function(F, b, l) {
          function j(n) {
            return (j = typeof Symbol == "function" && typeof Symbol.iterator == "symbol" ? function(g) {
              return typeof g;
            } : function(g) {
              return g && typeof Symbol == "function" && g.constructor === Symbol && g !== Symbol.prototype ? "symbol" : typeof g;
            })(n);
          }
          function m() {
            try {
              this.format();
            } catch {
            }
          }
          l.r(b), l.d(b, { textModeMixins: function() {
            return f;
          } });
          var b = l(8909), E = l.n(b), b = l(8170), w = l.n(b), d = l(4188), a = l(6436), o = l(2474), e = l(7907), t = l(6056), i = l(6617), s = l(6210), h = l(2558), r = l(9125), p = l(9791), l = {}, I = "ace/theme/jsoneditor";
          l.create = function(S) {
            var g = this, C = 1 < arguments.length && arguments[1] !== void 0 ? arguments[1] : {};
            C.statusBar === void 0 && (C.statusBar = !0), C.mainMenuBar = C.mainMenuBar !== !1, C.enableSort = C.enableSort !== !1, C.enableTransform = C.enableTransform !== !1, C.createQuery = C.createQuery || t.r, C.executeQuery = C.executeQuery || t.J, typeof (this.options = C).indentation == "number" ? this.indentation = Number(C.indentation) : this.indentation = 2, (0, e.cC)(this.options.languages), (0, e.m0)(this.options.language);
            var y = C.ace || w();
            this.mode = C.mode === "code" ? "code" : "text", this.mode === "code" && y === void 0 && (this.mode = "text", 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`.")), this.theme = C.theme || I, this.theme === I && y && (0, r.O)(), C.onTextSelectionChange && this.onTextSelectionChange(C.onTextSelectionChange);
            var c = this;
            this.container = S, this.dom = {}, this.aceEditor = void 0, this.textarea = void 0, this.validateSchema = null, this.annotations = [], this.lastSchemaErrors = void 0, this._debouncedValidate = (0, p.debounce)(this._validateAndCatch.bind(this), this.DEBOUNCE_INTERVAL), this.width = S.clientWidth, this.height = S.clientHeight, this.frame = document.createElement("div"), this.frame.className = "jsoneditor jsoneditor-mode-" + this.options.mode, this.frame.onclick = function(z) {
              z.preventDefault();
            }, this.frame.onkeydown = function(z) {
              c._onKeyDown(z);
            };
            var v, k, S = { target: this.frame, onFocus: this.options.onFocus || null, onBlur: this.options.onBlur || null };
            this.frameFocusTracker = new o.R(S), this.content = document.createElement("div"), this.content.className = "jsoneditor-outer", this.options.mainMenuBar && ((0, p.addClassName)(this.content, "has-main-menu-bar"), this.menu = document.createElement("div"), this.menu.className = "jsoneditor-menu", this.frame.appendChild(this.menu), (S = document.createElement("button")).type = "button", S.className = "jsoneditor-format", S.title = (0, e.Iu)("formatTitle"), this.menu.appendChild(S), S.onclick = function() {
              try {
                c.format(), c._onChange();
              } catch (z) {
                c._onError(z);
              }
            }, (S = document.createElement("button")).type = "button", S.className = "jsoneditor-compact", S.title = (0, e.Iu)("compactTitle"), this.menu.appendChild(S), S.onclick = function() {
              try {
                c.compact(), c._onChange();
              } catch (z) {
                c._onError(z);
              }
            }, this.options.enableSort && ((S = document.createElement("button")).type = "button", S.className = "jsoneditor-sort", S.title = (0, e.Iu)("sortTitleShort"), S.onclick = function() {
              c._showSortModal();
            }, this.menu.appendChild(S)), this.options.enableTransform && ((v = document.createElement("button")).type = "button", v.title = (0, e.Iu)("transformTitleShort"), v.className = "jsoneditor-transform", v.onclick = function() {
              c._showTransformModal();
            }, this.menu.appendChild(v)), (v = document.createElement("button")).type = "button", v.className = "jsoneditor-repair", v.title = (0, e.Iu)("repairTitle"), this.menu.appendChild(v), v.onclick = function() {
              try {
                c.repair(), c._onChange();
              } catch (z) {
                c._onError(z);
              }
            }, this.mode === "code" && ((O = document.createElement("button")).type = "button", O.className = "jsoneditor-undo jsoneditor-separator", O.title = (0, e.Iu)("undo"), O.onclick = function() {
              g.aceEditor.getSession().getUndoManager().undo();
            }, this.menu.appendChild(O), this.dom.undo = O, (O = document.createElement("button")).type = "button", O.className = "jsoneditor-redo", O.title = (0, e.Iu)("redo"), O.onclick = function() {
              g.aceEditor.getSession().getUndoManager().redo();
            }, this.menu.appendChild(O), this.dom.redo = O), this.options && this.options.modes && this.options.modes.length && (this.modeSwitcher = new i.x(this.menu, this.options.modes, this.options.mode, function(z) {
              c.setMode(z), c.modeSwitcher.focus();
            })), this.mode === "code" && ((k = document.createElement("a")).appendChild(document.createTextNode("powered by ace")), k.href = "https://ace.c9.io/", k.target = "_blank", k.className = "jsoneditor-poweredBy", k.onclick = function() {
              window.open(k.href, k.target, "noopener");
            }, this.menu.appendChild(k)));
            var L, W, _, O = this.options.onEditable && j(this.options.onEditable === "function") && !this.options.onEditable({});
            this.frame.appendChild(this.content), this.container.appendChild(this.frame), this.mode === "code" ? (this.editorDom = document.createElement("div"), this.editorDom.style.height = "100%", this.editorDom.style.width = "100%", this.content.appendChild(this.editorDom), y = (W = y.edit(this.editorDom)).getSession(), W.$blockScrolling = 1 / 0, W.setTheme(this.theme), W.setOptions({ readOnly: O }), W.setShowPrintMargin(!1), W.setFontSize("13px"), y.setMode("ace/mode/json"), y.setTabSize(this.indentation), y.setUseSoftTabs(!0), y.setUseWrapMode(!0), L = y.setAnnotations, y.setAnnotations = function(z) {
              L.call(this, z && z.length ? z : c.annotations);
            }, W.commands.bindKey("Ctrl-L", null), W.commands.bindKey("Command-L", null), W.commands.bindKey("Ctrl-\\", null), W.commands.bindKey("Command-\\", null), W.commands.bindKey("Ctrl-Shift-\\", null), W.commands.bindKey("Command-Shift-\\", null), (this.aceEditor = W).on("change", this._onChange.bind(this)), W.on("changeSelection", this._onSelect.bind(this))) : ((_ = document.createElement("textarea")).className = "jsoneditor-text", _.spellcheck = !1, this.content.appendChild(_), this.textarea = _, this.textarea.readOnly = O, this.textarea.oninput === null ? this.textarea.oninput = this._onChange.bind(this) : this.textarea.onchange = this._onChange.bind(this), _.onselect = this._onSelect.bind(this), _.onmousedown = this._onMouseDown.bind(this), _.onblur = this._onBlur.bind(this)), this._updateHistoryButtons(), this.errorTable = new a.Q({ errorTableVisible: this.mode === "text", onToggleVisibility: function() {
              c._validateAndCatch();
            }, onFocusLine: function(z) {
              c.isFocused = !0, isNaN(z) || c.setTextSelection({ row: z, column: 1 }, { row: z, column: 1e3 });
            }, onChangeHeight: function(z) {
              z = z + (c.dom.statusBar ? c.dom.statusBar.clientHeight : 0) + 1, c.content.style.marginBottom = -z + "px", c.content.style.paddingBottom = z + "px";
            } }), this.frame.appendChild(this.errorTable.getErrorTable()), C.statusBar && ((0, p.addClassName)(this.content, "has-status-bar"), this.curserInfoElements = {}, W = document.createElement("div"), (this.dom.statusBar = W).className = "jsoneditor-statusbar", this.frame.appendChild(W), (O = document.createElement("span")).className = "jsoneditor-curserinfo-label", O.innerText = "Ln:", (_ = document.createElement("span")).className = "jsoneditor-curserinfo-val", _.innerText = "1", W.appendChild(O), W.appendChild(_), (C = document.createElement("span")).className = "jsoneditor-curserinfo-label", C.innerText = "Col:", (O = document.createElement("span")).className = "jsoneditor-curserinfo-val", O.innerText = "1", W.appendChild(C), W.appendChild(O), this.curserInfoElements.colVal = O, this.curserInfoElements.lnVal = _, (O = document.createElement("span")).className = "jsoneditor-curserinfo-label", O.innerText = "characters selected", O.style.display = "none", (_ = document.createElement("span")).className = "jsoneditor-curserinfo-count", _.innerText = "0", _.style.display = "none", this.curserInfoElements.countLabel = O, this.curserInfoElements.countVal = _, W.appendChild(_), W.appendChild(O), W.appendChild(this.errorTable.getErrorCounter()), W.appendChild(this.errorTable.getWarningIcon()), W.appendChild(this.errorTable.getErrorIcon())), this.setSchema(this.options.schema, this.options.schemaRefs);
          }, l._onChange = function() {
            var n = this;
            if (!this.onChangeDisabled) {
              if (setTimeout(function() {
                n._updateHistoryButtons && n._updateHistoryButtons();
              }), this._debouncedValidate(), this.options.onChange) try {
                this.options.onChange();
              } catch (g) {
                console.error("Error in onChange callback: ", g);
              }
              if (this.options.onChangeText) try {
                this.options.onChangeText(this.getText());
              } catch (g) {
                console.error("Error in onChangeText callback: ", g);
              }
            }
          }, l._updateHistoryButtons = function() {
            var n;
            this.aceEditor && this.dom.undo && this.dom.redo && (n = this.aceEditor.getSession().getUndoManager()) && n.hasUndo && n.hasRedo && (this.dom.undo.disabled = !n.hasUndo(), this.dom.redo.disabled = !n.hasRedo());
          }, l._showSortModal = function() {
            var n = this, g = this.options.modalAnchor || d.qD, C = this.get();
            (0, s.showSortModal)(g, C, function(y) {
              var c;
              Array.isArray(C) && (c = (0, p.sort)(C, y.path, y.direction), n.sortedBy = y, n.update(c)), (0, p.isObject)(C) && (c = (0, p.sortObjectKeys)(C, y.direction), n.sortedBy = y, n.update(c));
            }, n.sortedBy);
          }, l._showTransformModal = function() {
            var n = this, c = this.options, g = c.modalAnchor, C = c.createQuery, y = c.executeQuery, c = c.queryDescription, v = this.get();
            (0, h.showTransformModal)({ container: g || d.qD, json: v, queryDescription: c, createQuery: C, executeQuery: y, onTransform: function(k) {
              k = y(v, k), n.update(k);
            } });
          }, l._onSelect = function() {
            this._updateCursorInfo(), this._emitSelectionChange();
          }, l._onKeyDown = function(n) {
            var g = !1;
            (n.which || n.keyCode) === 73 && n.ctrlKey && (n.shiftKey ? this.compact() : this.format(), this._onChange(), g = !0), g && (n.preventDefault(), n.stopPropagation()), this._updateCursorInfo(), this._emitSelectionChange();
          }, l._onMouseDown = function() {
            this._updateCursorInfo(), this._emitSelectionChange();
          }, l._onBlur = function() {
            var n = this;
            setTimeout(function() {
              n.isFocused || (n._updateCursorInfo(), n._emitSelectionChange()), n.isFocused = !1;
            });
          }, l._updateCursorInfo = function() {
            function n() {
              k.curserInfoElements.countVal.innerText !== v && (k.curserInfoElements.countVal.innerText = v, k.curserInfoElements.countVal.style.display = v ? "inline" : "none", k.curserInfoElements.countLabel.style.display = v ? "inline" : "none"), k.curserInfoElements.lnVal.innerText = y, k.curserInfoElements.colVal.innerText = c;
            }
            var g, C, y, c, v, k = this;
            this.textarea ? setTimeout(function() {
              var S = (0, p.getInputSelection)(k.textarea);
              S.startIndex !== S.endIndex && (v = S.endIndex - S.startIndex), c = v && k.cursorInfo && k.cursorInfo.line === S.end.row && k.cursorInfo.column === S.end.column ? (y = S.start.row, S.start.column) : (y = S.end.row, S.end.column), k.cursorInfo = { line: y, column: c, count: v }, k.options.statusBar && n();
            }, 0) : this.aceEditor && this.curserInfoElements && (g = this.aceEditor.getCursorPosition(), C = this.aceEditor.getSelectedText(), y = g.row + 1, c = g.column + 1, v = C.length, k.cursorInfo = { line: y, column: c, count: v }, this.options.statusBar && n());
          }, l._emitSelectionChange = function() {
            var n;
            this._selectionChangedHandler && (n = this.getTextSelection(), this._selectionChangedHandler(n.start, n.end, n.text));
          }, l._refreshAnnotations = function() {
            var n, g = this.aceEditor && this.aceEditor.getSession();
            g && (n = g.getAnnotations().filter(function(C) {
              return C.type === "error";
            }), g.setAnnotations(n));
          }, l.destroy = function() {
            this.aceEditor && (this.aceEditor.destroy(), this.aceEditor = null), this.frame && this.container && this.frame.parentNode === this.container && this.container.removeChild(this.frame), this.modeSwitcher && (this.modeSwitcher.destroy(), this.modeSwitcher = null), this.textarea = null, this._debouncedValidate = null, this.frameFocusTracker.destroy();
          }, l.compact = function() {
            var n = this.get(), n = JSON.stringify(n);
            this.updateText(n);
          }, l.format = function() {
            var n = this.get(), n = JSON.stringify(n, null, this.indentation);
            this.updateText(n);
          }, l.repair = function() {
            var n = this.getText();
            try {
              var g = E()(n);
              this.updateText(g);
            } catch {
            }
          }, l.focus = function() {
            this.textarea && this.textarea.focus(), this.aceEditor && this.aceEditor.focus();
          }, l.resize = function() {
            this.aceEditor && this.aceEditor.resize(!1);
          }, l.set = function(n) {
            this.setText(JSON.stringify(n, null, this.indentation));
          }, l.update = function(n) {
            this.updateText(JSON.stringify(n, null, this.indentation));
          }, l.get = function() {
            var n = this.getText();
            return (0, p.parse)(n);
          }, l.getText = function() {
            return this.textarea ? this.textarea.value : this.aceEditor ? this.aceEditor.getValue() : "";
          }, l._setText = function(c, g) {
            var C, y = this, c = this.options.escapeUnicode === !0 ? (0, p.escapeUnicodeChars)(c) : c;
            this.textarea && (this.textarea.value = c), this.aceEditor && (this.onChangeDisabled = !0, this.aceEditor.setValue(c, -1), this.onChangeDisabled = !1, g && (C = this, setTimeout(function() {
              C.aceEditor && C.aceEditor.session.getUndoManager().reset();
            })), setTimeout(function() {
              y._updateHistoryButtons && y._updateHistoryButtons();
            })), this._debouncedValidate();
          }, l.setText = function(n) {
            this._setText(n, !0);
          }, l.updateText = function(n) {
            this.getText() !== n && this._setText(n, !1);
          }, l.validate = function() {
            var n, g = this, C = [], y = [];
            try {
              var c = this.get();
              this.validateSchema && (this.validateSchema(c) || (C = this.validateSchema.errors.map(function(S) {
                return S.type = "validation", (0, p.improveSchemaError)(S);
              }))), this.validationSequence = (this.validationSequence || 0) + 1;
              var v = this, k = this.validationSequence;
              return function(S, L) {
                if (!L) return Promise.resolve([]);
                try {
                  var W = L(S);
                  return ((0, p.isPromise)(W) ? W : Promise.resolve(W)).then(function(_) {
                    return Array.isArray(_) ? _.filter(function(O) {
                      var z = (0, p.isValidValidationError)(O);
                      return z || console.warn('Ignoring a custom validation error with invalid structure. Expected structure: {path: [...], message: "..."}. Actual error:', O), z;
                    }).map(function(O) {
                      return { dataPath: (0, p.stringifyPath)(O.path), message: O.message, type: "customValidation" };
                    }) : [];
                  });
                } catch (_) {
                  return Promise.reject(_);
                }
              }(c, this.options.onValidate).then(function(S) {
                return k === v.validationSequence && (S = C.concat(y).concat(S), v._renderErrors(S), typeof g.options.onValidationError == "function" && (0, p.isValidationErrorChanged)(S, g.lastSchemaErrors) && g.options.onValidationError.call(g, S), g.lastSchemaErrors = S), g.lastSchemaErrors;
              });
            } catch (S) {
              return this.getText() && ((c = /\w*line\s*(\d+)\w*/g.exec(S.message)) && (n = +c[1]), y = [{ type: "error", message: S.message.replace(/\n/g, "<br>"), line: n }]), this._renderErrors(y), typeof this.options.onValidationError == "function" && (0, p.isValidationErrorChanged)(y, this.lastSchemaErrors) && this.options.onValidationError.call(this, y), this.lastSchemaErrors = y, Promise.resolve(this.lastSchemaErrors);
            }
          }, l._validateAndCatch = function() {
            this.validate().catch(function(n) {
              console.error("Error running validation:", n);
            });
          }, l._renderErrors = function(n) {
            var g = this.getText(), C = [];
            n.reduce(function(y, c) {
              return typeof c.dataPath == "string" && y.indexOf(c.dataPath) === -1 && y.push(c.dataPath), y;
            }, C), C = (0, p.getPositionForPath)(g, C), this.aceEditor && (this.annotations = C.map(function(y) {
              var c = n.filter(function(k) {
                return k.dataPath === y.path;
              }), v = c.map(function(k) {
                return k.message;
              }).join(`
`);
              return v ? { row: y.line, column: y.column, text: "Schema validation error" + (c.length !== 1 ? "s" : "") + `: 
` + v, type: "warning", source: "jsoneditor" } : {};
            }), this._refreshAnnotations()), this.errorTable.setErrors(n, C), this.aceEditor && this.aceEditor.resize(!1);
          }, l.getTextSelection = function() {
            var n = {};
            if (this.textarea) {
              var g = (0, p.getInputSelection)(this.textarea);
              return this.cursorInfo && this.cursorInfo.line === g.end.row && this.cursorInfo.column === g.end.column ? (n.start = g.end, n.end = g.start) : n = g, { start: n.start, end: n.end, text: this.textarea.value.substring(g.startIndex, g.endIndex) };
            }
            if (this.aceEditor) {
              var y = this.aceEditor.getSelection(), C = this.aceEditor.getSelectedText(), g = y.getRange(), y = y.getSelectionLead();
              return y.row === g.end.row && y.column === g.end.column ? n = g : (n.start = g.end, n.end = g.start), { start: { row: n.start.row + 1, column: n.start.column + 1 }, end: { row: n.end.row + 1, column: n.end.column + 1 }, text: C };
            }
          }, l.onTextSelectionChange = function(n) {
            typeof n == "function" && (this._selectionChangedHandler = (0, p.debounce)(n, this.DEBOUNCE_INTERVAL));
          }, l.setTextSelection = function(n, g) {
            var C, y, c;
            n && g && (this.textarea ? (C = (0, p.getIndexForPosition)(this.textarea, n.row, n.column), y = (0, p.getIndexForPosition)(this.textarea, g.row, g.column), -1 < C && -1 < y && (this.textarea.setSelectionRange ? (this.textarea.focus(), this.textarea.setSelectionRange(C, y)) : this.textarea.createTextRange && ((c = this.textarea.createTextRange()).collapse(!0), c.moveEnd("character", y), c.moveStart("character", C), c.select()), c = (this.textarea.value.match(/\n/g) || []).length + 1, c = this.textarea.scrollHeight / c, c = n.row * c, this.textarea.scrollTop = c > this.textarea.clientHeight ? c - this.textarea.clientHeight / 2 : 0)) : this.aceEditor && (g = { start: { row: n.row - 1, column: n.column - 1 }, end: { row: g.row - 1, column: g.column - 1 } }, this.aceEditor.selection.setRange(g), this.aceEditor.scrollToLine(n.row - 1, !0)));
          };
          var f = [{ mode: "text", mixin: l, data: "text", load: m }, { mode: "code", mixin: l, data: "text", load: m }];
        }, 8038: function(F, J, D) {
          function j(R, T) {
            for (var N = 0; N < T.length; N++) {
              var A = T[N];
              A.enumerable = A.enumerable || !1, A.configurable = !0, "value" in A && (A.writable = !0), Object.defineProperty(R, A.key, A);
            }
          }
          function m(R) {
            return function(T) {
              if (Array.isArray(T)) return d(T);
            }(R) || function(T) {
              if (typeof Symbol < "u" && T[Symbol.iterator] != null || T["@@iterator"] != null) return Array.from(T);
            }(R) || w(R) || function() {
              throw new TypeError(`Invalid attempt to spread non-iterable instance.
In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`);
            }();
          }
          function E(R, T) {
            return function(N) {
              if (Array.isArray(N)) return N;
            }(R) || function(N, A) {
              var x = N == null ? null : typeof Symbol < "u" && N[Symbol.iterator] || N["@@iterator"];
              if (x != null) {
                var M, Z, G = [], $ = !0, X = !1;
                try {
                  for (x = x.call(N); !($ = (M = x.next()).done) && (G.push(M.value), !A || G.length !== A); $ = !0) ;
                } catch (te) {
                  X = !0, Z = te;
                } finally {
                  try {
                    $ || x.return == null || x.return();
                  } finally {
                    if (X) throw Z;
                  }
                }
                return G;
              }
            }(R, T) || w(R, T) || function() {
              throw new TypeError(`Invalid attempt to destructure non-iterable instance.
In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`);
            }();
          }
          function b(R, T) {
            var N = typeof Symbol < "u" && R[Symbol.iterator] || R["@@iterator"];
            if (!N) {
              if (Array.isArray(R) || (N = w(R)) || T && R && typeof R.length == "number") {
                N && (R = N);
                var A = 0, T = function() {
                };
                return { s: T, n: function() {
                  return A >= R.length ? { done: !0 } : { done: !1, value: R[A++] };
                }, e: function($) {
                  throw $;
                }, f: T };
              }
              throw new TypeError(`Invalid attempt to iterate non-iterable instance.
In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`);
            }
            var x, M = !0, Z = !1;
            return { s: function() {
              N = N.call(R);
            }, n: function() {
              var G = N.next();
              return M = G.done, G;
            }, e: function(G) {
              Z = !0, x = G;
            }, f: function() {
              try {
                M || N.return == null || N.return();
              } finally {
                if (Z) throw x;
              }
            } };
          }
          function w(R, T) {
            if (R) {
              if (typeof R == "string") return d(R, T);
              var N = Object.prototype.toString.call(R).slice(8, -1);
              return (N = N === "Object" && R.constructor ? R.constructor.name : N) === "Map" || N === "Set" ? Array.from(R) : N === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(N) ? d(R, T) : void 0;
            }
          }
          function d(R, T) {
            (T == null || T > R.length) && (T = R.length);
            for (var N = 0, A = new Array(T); N < T; N++) A[N] = R[N];
            return A;
          }
          function a(R) {
            return (a = typeof Symbol == "function" && typeof Symbol.iterator == "symbol" ? function(T) {
              return typeof T;
            } : function(T) {
              return T && typeof Symbol == "function" && T.constructor === Symbol && T !== Symbol.prototype ? "symbol" : typeof T;
            })(R);
          }
          function o(R, T) {
            for (var N = 0; N < T.length; N++) {
              var A = T[N];
              A.enumerable = A.enumerable || !1, A.configurable = !0, "value" in A && (A.writable = !0), Object.defineProperty(R, A.key, A);
            }
          }
          function e(R) {
            return R.getInternalPath();
          }
          function t(R) {
            return R.getField();
          }
          function i(R, T) {
            return Object.prototype.hasOwnProperty.call(R, T);
          }
          function s(R) {
            this.editor = R, this.dom = {};
          }
          function h(R, T) {
            this.editor = R, this.parent = T, this.dom = {};
          }
          function r(R, T) {
            for (var N = 0; N < T.length; N++) {
              var A = T[N];
              A.enumerable = A.enumerable || !1, A.configurable = !0, "value" in A && (A.writable = !0), Object.defineProperty(R, A.key, A);
            }
          }
          function p(R, T) {
            for (var N = 0; N < T.length; N++) {
              var A = T[N];
              A.enumerable = A.enumerable || !1, A.configurable = !0, "value" in A && (A.writable = !0), Object.defineProperty(R, A.key, A);
            }
          }
          function l(R, T) {
            for (var N = 0; N < T.length; N++) {
              var A = T[N];
              A.enumerable = A.enumerable || !1, A.configurable = !0, "value" in A && (A.writable = !0), Object.defineProperty(R, A.key, A);
            }
          }
          D.r(J), D.d(J, { treeModeMixins: function() {
            return de;
          } });
          var I = { start: function(R, T, N) {
            return T.indexOf(R) === 0;
          }, contain: function(R, T, N) {
            return -1 < T.indexOf(R);
          } }, f = D(897), n = D(2474), g = function() {
            function R() {
              (function(A, x) {
                if (!(A instanceof x)) throw new TypeError("Cannot call a class as a function");
              })(this, R), this.locked = !1;
            }
            var T, N;
            return T = R, (N = [{ key: "highlight", value: function(A) {
              this.locked || (this.node !== A && (this.node && this.node.setHighlight(!1), this.node = A, this.node.setHighlight(!0)), this._cancelUnhighlight());
            } }, { key: "unhighlight", value: function() {
              var A;
              this.locked || (A = this).node && (this._cancelUnhighlight(), this.unhighlightTimer = setTimeout(function() {
                A.node.setHighlight(!1), A.node = void 0, A.unhighlightTimer = void 0;
              }, 0));
            } }, { key: "_cancelUnhighlight", value: function() {
              this.unhighlightTimer && (clearTimeout(this.unhighlightTimer), this.unhighlightTimer = void 0);
            } }, { key: "lock", value: function() {
              this.locked = !0;
            } }, { key: "unlock", value: function() {
              this.locked = !1;
            } }]) && j(T.prototype, N), R;
          }(), C = D(7907), y = D(6056), c = D(6617), J = D(233), v = D.n(J), k = D(2602), S = D(9791), L = D(6210), W = D(2558), _ = D(4188), O = function() {
            function R(A, x) {
              (function(M, Z) {
                if (!(M instanceof Z)) throw new TypeError("Cannot call a class as a function");
              })(this, R), this.editor = A, this.dom = {}, this.expanded = !1, x && x instanceof Object ? (this.setField(x.field, x.fieldEditable), "value" in x && this.setValue(x.value, x.type), "internalValue" in x && this.setInternalValue(x.internalValue)) : (this.setField(""), this.setValue(null)), this._debouncedOnChangeValue = (0, S.debounce)(this._onChangeValue.bind(this), R.prototype.DEBOUNCE_INTERVAL), this._debouncedOnChangeField = (0, S.debounce)(this._onChangeField.bind(this), R.prototype.DEBOUNCE_INTERVAL), this.visibleChilds = this.getMaxVisibleChilds();
            }
            var T, N;
            return T = R, (N = [{ key: "getMaxVisibleChilds", value: function() {
              return this.editor && this.editor.options && this.editor.options.maxVisibleChilds ? this.editor.options.maxVisibleChilds : z;
            } }, { key: "_updateEditability", value: function() {
              var A;
              this.editable = { field: !0, value: !0 }, this.editor && (this.editable.field = this.editor.options.mode === "tree", this.editable.value = this.editor.options.mode !== "view", this.editor.options.mode !== "tree" && this.editor.options.mode !== "form" || typeof this.editor.options.onEditable != "function" || (typeof (A = this.editor.options.onEditable({ field: this.field, value: this.value, path: this.getPath() })) == "boolean" ? (this.editable.field = A, this.editable.value = A) : a(A) === "object" && A !== null ? (typeof A.field == "boolean" && (this.editable.field = A.field), typeof A.value == "boolean" && (this.editable.value = A.value)) : (console.error("Invalid return value for function onEditable.", "Actual value:", A, ".", "Either a boolean or object { field: boolean, value: boolean } expected."), this.editable.field = !1, this.editable.value = !1)));
            } }, { key: "getPath", value: function() {
              for (var A = this, x = []; A; ) {
                var M = A.getName();
                M !== void 0 && x.unshift(M), A = A.parent;
              }
              return x;
            } }, { key: "getInternalPath", value: function() {
              for (var A = this, x = []; A; ) A.parent && x.unshift(A.getIndex()), A = A.parent;
              return x;
            } }, { key: "getName", value: function() {
              return this.parent ? this.parent.type !== "array" ? this.field : this.index : void 0;
            } }, { key: "findNodeByPath", value: function(A) {
              if (A) {
                if (A.length === 0) return this;
                if (A.length && this.childs && this.childs.length) {
                  for (var x = 0; x < this.childs.length; ++x) if ("" + A[0] == "" + this.childs[x].getName()) return this.childs[x].findNodeByPath(A.slice(1));
                }
              }
            } }, { key: "findNodeByInternalPath", value: function(A) {
              if (A) {
                for (var Z = this, x = 0; x < A.length && Z; x++) var M = A[x], Z = Z.childs[M];
                return Z;
              }
            } }, { key: "serialize", value: function() {
              return { value: this.getValue(), path: this.getPath() };
            } }, { key: "findNode", value: function(A) {
              for (var x = (0, S.parsePath)(A), M = this; M && 0 < x.length; ) (function() {
                var Z = x.shift();
                if (typeof Z == "number") {
                  if (M.type !== "array") throw new Error("Cannot get child node at index " + Z + ": node is no array");
                  M = M.childs[Z];
                } else {
                  if (M.type !== "object") throw new Error("Cannot get child node " + Z + ": node is no object");
                  M = M.childs.filter(function(G) {
                    return G.field === Z;
                  })[0];
                }
              })();
              return M;
            } }, { key: "findParents", value: function() {
              for (var A = [], x = this.parent; x; ) A.unshift(x), x = x.parent;
              return A;
            } }, { key: "setError", value: function(A, x) {
              this.error = A, this.errorChild = x, this.dom && this.dom.tr && this.updateError();
            } }, { key: "updateError", value: function() {
              var A = this, x = this.fieldError || this.valueError || this.error, M = this.dom.tdError;
              if (x && this.dom && this.dom.tr) {
                (0, S.addClassName)(this.dom.tr, "jsoneditor-validation-error"), M || (M = document.createElement("td"), this.dom.tdError = M, this.dom.tdValue.parentNode.appendChild(M));
                var Z = document.createElement("button");
                Z.type = "button", Z.className = "jsoneditor-button jsoneditor-schema-error";
                var G = function() {
                  A.dom.popupAnchor && A.dom.popupAnchor.destroy();
                }, $ = function() {
                  delete A.dom.popupAnchor;
                }, X = function(se) {
                  var le = A.editor.frame;
                  A.dom.popupAnchor = (0, k.w)(Z, A.editor.getPopupAnchor(), $, se), se = Z.getBoundingClientRect(), le = 120 < le.getBoundingClientRect().width - se.x ? "jsoneditor-above" : "jsoneditor-left", se = document.createElement("div"), se.className = "jsoneditor-popover " + le, se.appendChild(document.createTextNode(x.message)), A.dom.popupAnchor.appendChild(se);
                };
                Z.onmouseover = function() {
                  A.dom.popupAnchor || X(!0);
                }, Z.onfocus = function() {
                  G(), X(!1);
                }, Z.onblur = function() {
                  G();
                };
                var te = this.errorChild;
                for (te && (Z.onclick = function() {
                  te.findParents().forEach(function(se) {
                    se.expand(!1);
                  }), te.scrollTo(function() {
                    te.focus();
                  });
                }); M.firstChild; ) M.removeChild(M.firstChild);
                M.appendChild(Z);
              } else this.dom.tr && (0, S.removeClassName)(this.dom.tr, "jsoneditor-validation-error"), M && (this.dom.tdError.parentNode.removeChild(this.dom.tdError), delete this.dom.tdError);
            } }, { key: "getIndex", value: function() {
              if (this.parent) {
                var A = this.parent.childs.indexOf(this);
                return A !== -1 ? A : null;
              }
              return -1;
            } }, { key: "setParent", value: function(A) {
              this.parent = A;
            } }, { key: "setField", value: function(A, x) {
              this.field = A, this.previousField = A, this.fieldEditable = x === !0;
            } }, { key: "getField", value: function() {
              return this.field === void 0 && this._getDomField(), this.field;
            } }, { key: "setValue", value: function(A, x) {
              var M, Z, G, $, X, te, se = this.childs;
              if (this.type = this._getType(A), x && x !== this.type) {
                if (x !== "string" || this.type !== "auto") throw new Error('Type mismatch: cannot cast value of type "' + this.type + ' to the specified type "' + x + '"');
                this.type = x;
              }
              if (this.type === "array") {
                for (this.childs || (this.childs = []), M = 0; M < A.length; M++) (X = A[M]) === void 0 || X instanceof Function || (M < this.childs.length ? ((G = this.childs[M]).fieldEditable = !1, G.index = M, G.setValue(X)) : (G = new R(this.editor, { value: X }), $ = M < this.getMaxVisibleChilds(), this.appendChild(G, $, !1)));
                for (Z = this.childs.length; Z >= A.length; Z--) this.removeChild(this.childs[Z], !1);
              } else if (this.type === "object") {
                for (this.childs || (this.childs = []), Z = this.childs.length - 1; 0 <= Z; Z--) i(A, this.childs[Z].field) || this.removeChild(this.childs[Z], !1);
                for (var le in M = 0, A) i(A, le) && ((X = A[le]) === void 0 || X instanceof Function || ((te = this.findChildByProperty(le)) ? (te.setField(le, !0), te.setValue(X)) : (te = new R(this.editor, { field: le, value: X }), le = M < this.getMaxVisibleChilds(), this.appendChild(te, le, !1))), M++);
                !(this.value = "") === this.editor.options.sortObjectKeys && this.sort([], "asc", !1);
              } else this.hideChilds(), delete this.append, delete this.showMore, delete this.expanded, delete this.childs, this.value = A;
              Array.isArray(se) !== Array.isArray(this.childs) && this.recreateDom(), this.updateDom({ updateIndexes: !0 }), this.previousValue = this.value;
            } }, { key: "setInternalValue", value: function(A) {
              var x, M, Z, G, $, X = this.childs;
              if (this.type = A.type, A.type === "array") {
                for (this.childs || (this.childs = []), G = 0; G < A.childs.length; G++) (x = A.childs[G]) === void 0 || x instanceof Function || (G < this.childs.length ? ((M = this.childs[G]).fieldEditable = !1, M.index = G, M.setInternalValue(x)) : (M = new R(this.editor, { internalValue: x }), Z = G < this.getMaxVisibleChilds(), this.appendChild(M, Z, !1)));
                for ($ = this.childs.length; $ >= A.childs.length; $--) this.removeChild(this.childs[$], !1);
              } else if (A.type === "object") {
                for (this.childs || (this.childs = []), G = 0; G < A.childs.length; G++) (x = A.childs[G]) === void 0 || x instanceof Function || (G < this.childs.length ? (delete (M = this.childs[G]).index, M.setField(x.field, !0), M.setInternalValue(x.value)) : (M = new R(this.editor, { field: x.field, internalValue: x.value }), Z = G < this.getMaxVisibleChilds(), this.appendChild(M, Z, !1)));
                for ($ = this.childs.length; $ >= A.childs.length; $--) this.removeChild(this.childs[$], !1);
              } else this.hideChilds(), delete this.append, delete this.showMore, delete this.expanded, delete this.childs, this.value = A.value;
              Array.isArray(X) !== Array.isArray(this.childs) && this.recreateDom(), this.updateDom({ updateIndexes: !0 }), this.previousValue = this.value;
            } }, { key: "recreateDom", value: function() {
              var A;
              this.dom && this.dom.tr && this.dom.tr.parentNode ? (A = this._detachFromDom(), this.clearDom(), this._attachToDom(A)) : this.clearDom();
            } }, { key: "getValue", value: function() {
              if (this.type === "array") {
                var A = [];
                return this.childs.forEach(function(M) {
                  A.push(M.getValue());
                }), A;
              }
              if (this.type !== "object") return this.value === void 0 && this._getDomValue(), this.value;
              var x = {};
              return this.childs.forEach(function(M) {
                x[M.getField()] = M.getValue();
              }), x;
            } }, { key: "getInternalValue", value: function() {
              return this.type === "array" ? { type: this.type, childs: this.childs.map(function(A) {
                return A.getInternalValue();
              }) } : this.type === "object" ? { type: this.type, childs: this.childs.map(function(A) {
                return { field: A.getField(), value: A.getInternalValue() };
              }) } : (this.value === void 0 && this._getDomValue(), { type: this.type, value: this.value });
            } }, { key: "getLevel", value: function() {
              return this.parent ? this.parent.getLevel() + 1 : 0;
            } }, { key: "getNodePath", value: function() {
              var A = this.parent ? this.parent.getNodePath() : [];
              return A.push(this), A;
            } }, { key: "clone", value: function() {
              var A, x;
              return (A = new R(this.editor)).type = this.type, A.field = this.field, A.fieldInnerText = this.fieldInnerText, A.fieldEditable = this.fieldEditable, A.previousField = this.previousField, A.value = this.value, A.valueInnerText = this.valueInnerText, A.previousValue = this.previousValue, A.expanded = this.expanded, A.visibleChilds = this.visibleChilds, this.childs ? (x = [], this.childs.forEach(function(M) {
                M = M.clone(), M.setParent(A), x.push(M);
              }), A.childs = x) : A.childs = void 0, A;
            } }, { key: "expand", value: function(A) {
              this.childs && (this.expanded = !0, this.dom.expand && (this.dom.expand.className = "jsoneditor-button jsoneditor-expanded"), this.showChilds(), A !== !1 && this.childs.forEach(function(x) {
                x.expand(A);
              }), this.updateDom({ recurse: !1 }));
            } }, { key: "collapse", value: function(A) {
              this.childs && (this.hideChilds(), A !== !1 && this.childs.forEach(function(x) {
                x.collapse(A);
              }), this.dom.expand && (this.dom.expand.className = "jsoneditor-button jsoneditor-collapsed"), this.expanded = !1, this.updateDom({ recurse: !1 }));
            } }, { key: "showChilds", value: function() {
              var A = this.childs;
              if (A && this.expanded) {
                var x = this.dom.tr, M = x ? x.parentNode : void 0;
                if (M) {
                  A = this.getAppendDom(), A.parentNode || ((G = x.nextSibling) ? M.insertBefore(A, G) : M.appendChild(A));
                  for (var Z = Math.min(this.childs.length, this.visibleChilds), G = this._getNextTr(), $ = 0; $ < Z; $++) {
                    var X = this.childs[$];
                    X.getDom().parentNode || M.insertBefore(X.getDom(), G), X.showChilds();
                  }
                  A = this.getShowMoreDom(), G = this._getNextTr(), A.parentNode || M.insertBefore(A, G), this.showMore.updateDom();
                }
              }
            } }, { key: "_getNextTr", value: function() {
              return this.showMore && this.showMore.getDom().parentNode ? this.showMore.getDom() : this.append && this.append.getDom().parentNode ? this.append.getDom() : void 0;
            } }, { key: "hide", value: function(A) {
              var x = this.dom.tr, M = x ? x.parentNode : void 0;
              M && M.removeChild(x), this.dom.popupAnchor && this.dom.popupAnchor.destroy(), this.hideChilds(A);
            } }, { key: "hideChilds", value: function(A) {
              var x;
              this.childs && this.expanded && ((x = this.getAppendDom()).parentNode && x.parentNode.removeChild(x), this.childs.forEach(function(M) {
                M.hide();
              }), (x = this.getShowMoreDom()).parentNode && x.parentNode.removeChild(x), A && !A.resetVisibleChilds || (this.visibleChilds = this.getMaxVisibleChilds()));
            } }, { key: "_updateCssClassName", value: function() {
              var A;
              this.dom.field && this.editor && this.editor.options && typeof this.editor.options.onClassName == "function" && this.dom.tree && ((0, S.removeAllClassNames)(this.dom.tree), A = this.editor.options.onClassName({ path: this.getPath(), field: this.field, value: this.value }) || "", (0, S.addClassName)(this.dom.tree, "jsoneditor-values " + A));
            } }, { key: "recursivelyUpdateCssClassesOnNodes", value: function() {
              if (this._updateCssClassName(), Array.isArray(this.childs)) for (var A = 0; A < this.childs.length; A++) this.childs[A].recursivelyUpdateCssClassesOnNodes();
            } }, { key: "expandTo", value: function() {
              for (var A = this.parent; A; ) A.expanded || A.expand(), A = A.parent;
            } }, { key: "appendChild", value: function(A, x, M) {
              var Z, G;
              this._hasChilds() && (A.setParent(this), A.fieldEditable = this.type === "object", this.type === "array" && (A.index = this.childs.length), this.type === "object" && A.field === void 0 && A.setField(""), this.childs.push(A), this.expanded && x !== !1 && (Z = A.getDom(), x = (G = this._getNextTr()) ? G.parentNode : void 0, G && x && x.insertBefore(Z, G), A.showChilds(), this.visibleChilds++), M !== !1 && (this.updateDom({ updateIndexes: !0 }), A.updateDom({ recurse: !0 })));
            } }, { key: "moveBefore", value: function(A, x, M) {
              var Z, G, $;
              this._hasChilds() && ((Z = this.dom.tr ? this.dom.tr.parentNode : void 0) && ((G = document.createElement("tr")).style.height = Z.clientHeight + "px", Z.appendChild(G)), A.parent && A.parent.removeChild(A), x instanceof H || !x ? this.childs.length + 1 > this.visibleChilds ? ($ = this.childs[this.visibleChilds - 1], this.insertBefore(A, $, M)) : this.appendChild(A, !0, M) : this.insertBefore(A, x, M), Z && G && Z.removeChild(G));
            } }, { key: "insertBefore", value: function(A, x, M) {
              if (this._hasChilds()) {
                if (this.visibleChilds++, this.type === "object" && A.field === void 0 && A.setField(""), x === this.append) A.setParent(this), A.fieldEditable = this.type === "object", this.childs.push(A);
                else {
                  var Z = this.childs.indexOf(x);
                  if (Z === -1) throw new Error("Node not found");
                  A.setParent(this), A.fieldEditable = this.type === "object", this.childs.splice(Z, 0, A);
                }
                var G;
                this.expanded && (G = A.getDom(), x = (Z = x.getDom()) ? Z.parentNode : void 0, Z && x && x.insertBefore(G, Z), A.showChilds(), this.showChilds()), M !== !1 && (this.updateDom({ updateIndexes: !0 }), A.updateDom({ recurse: !0 }));
              }
            } }, { key: "insertAfter", value: function(A, x) {
              this._hasChilds() && (x = this.childs.indexOf(x), (x = this.childs[x + 1]) ? this.insertBefore(A, x) : this.appendChild(A));
            } }, { key: "search", value: function(A, x) {
              Array.isArray(x) || (x = []);
              var M = A ? A.toLowerCase() : void 0;
              return delete this.searchField, delete this.searchValue, this.field !== void 0 && x.length <= this.MAX_SEARCH_RESULTS && (String(this.field).toLowerCase().indexOf(M) !== -1 && (this.searchField = !0, x.push({ node: this, elem: "field" })), this._updateDomField()), this._hasChilds() ? this.childs && this.childs.forEach(function(Z) {
                Z.search(A, x);
              }) : this.value !== void 0 && x.length <= this.MAX_SEARCH_RESULTS && (String(this.value).toLowerCase().indexOf(M) !== -1 && (this.searchValue = !0, x.push({ node: this, elem: "value" })), this._updateDomValue()), x;
            } }, { key: "scrollTo", value: function(A) {
              this.expandPathToNode(), this.dom.tr && this.dom.tr.parentNode && this.editor.scrollTo(this.dom.tr.offsetTop, A);
            } }, { key: "expandPathToNode", value: function() {
              for (var A = this; A && A.parent; ) {
                for (var x = A.parent.type === "array" ? A.index : A.parent.childs.indexOf(A); A.parent.visibleChilds < x + 1; ) A.parent.visibleChilds += this.getMaxVisibleChilds();
                A.parent.expand(!1), A = A.parent;
              }
            } }, { key: "focus", value: function(A) {
              if (R.focusElement = A, this.dom.tr && this.dom.tr.parentNode) {
                var x = this.dom;
                switch (A) {
                  case "drag":
                    (x.drag || x.menu).focus();
                    break;
                  case "menu":
                    x.menu.focus();
                    break;
                  case "expand":
                    this._hasChilds() ? x.expand.focus() : x.field && this.fieldEditable ? (x.field.focus(), (0, S.selectContentEditable)(x.field)) : x.value && !this._hasChilds() ? (x.value.focus(), (0, S.selectContentEditable)(x.value)) : x.menu.focus();
                    break;
                  case "field":
                    x.field && this.fieldEditable ? (x.field.focus(), (0, S.selectContentEditable)(x.field)) : x.value && !this._hasChilds() ? (x.value.focus(), (0, S.selectContentEditable)(x.value)) : (this._hasChilds() ? x.expand : x.menu).focus();
                    break;
                  default:
                    x.select ? x.select.focus() : x.value && !this._hasChilds() ? (x.value.focus(), (0, S.selectContentEditable)(x.value)) : x.field && this.fieldEditable ? (x.field.focus(), (0, S.selectContentEditable)(x.field)) : (this._hasChilds() ? x.expand : x.menu).focus();
                }
              }
            } }, { key: "containsNode", value: function(A) {
              if (this === A) return !0;
              var x = this.childs;
              if (x) {
                for (var M = 0, Z = x.length; M < Z; M++) if (x[M].containsNode(A)) return !0;
              }
              return !1;
            } }, { key: "removeChild", value: function(A, x) {
              if (this.childs) {
                var M = this.childs.indexOf(A);
                if (M !== -1) return M < this.visibleChilds && this.expanded && this.visibleChilds--, A.hide(), delete A.searchField, delete A.searchValue, M = this.childs.splice(M, 1)[0], M.parent = null, x !== !1 && this.updateDom({ updateIndexes: !0 }), M;
              }
            } }, { key: "_remove", value: function(A) {
              this.removeChild(A);
            } }, { key: "changeType", value: function(A) {
              var x, M = this.type;
              M !== A && (A !== "string" && A !== "auto" || M !== "string" && M !== "auto" ? (x = this._detachFromDom(), this.clearDom(), (this.type = A) === "object" ? (this.childs || (this.childs = []), this.childs.forEach(function(Z) {
                Z.clearDom(), delete Z.index, Z.fieldEditable = !0, Z.field === void 0 && (Z.field = "");
              }), M !== "string" && M !== "auto" || (this.expanded = !0)) : A === "array" ? (this.childs || (this.childs = []), this.childs.forEach(function(Z, G) {
                Z.clearDom(), Z.fieldEditable = !1, Z.index = G;
              }), M !== "string" && M !== "auto" || (this.expanded = !0)) : this.expanded = !1, this._attachToDom(x)) : this.type = A, A !== "auto" && A !== "string" || (this.value = A === "string" ? String(this.value) : (0, S.parseString)(String(this.value)), this.focus()), this.updateDom({ updateIndexes: !0 }));
            } }, { key: "deepEqual", value: function(A) {
              var x;
              if (this.type === "array") {
                if (!Array.isArray(A) || this.childs.length !== A.length) return !1;
                for (x = 0; x < this.childs.length; x++) if (!this.childs[x].deepEqual(A[x])) return !1;
              } else if (this.type === "object") {
                if (a(A) !== "object" || !A) return !1;
                var M = Object.keys(A);
                if (this.childs.length !== M.length) return !1;
                for (x = 0; x < M.length; x++) {
                  var Z = this.childs[x];
                  if (Z.field !== M[x] || !Z.deepEqual(A[Z.field])) return !1;
                }
              } else if (this.value !== A) return !1;
              return !0;
            } }, { key: "_getDomValue", value: function() {
              if (this._clearValueError(), this.dom.value && this.type !== "array" && this.type !== "object" && (this.valueInnerText = (0, S.getInnerText)(this.dom.value), this.valueInnerText === "" && this.dom.value.innerHTML !== "" && (this.dom.value.textContent = "")), this.valueInnerText !== void 0) try {
                var A, x;
                (x = this.type === "string" ? this._unescapeHTML(this.valueInnerText) : (A = this._unescapeHTML(this.valueInnerText), (0, S.parseString)(A))) !== this.value && (this.value = x, this._debouncedOnChangeValue());
              } catch {
                this._setValueError((0, C.Iu)("cannotParseValueError"));
              }
            } }, { key: "_setValueError", value: function(A) {
              this.valueError = { message: A }, this.updateError();
            } }, { key: "_clearValueError", value: function() {
              this.valueError && (this.valueError = null, this.updateError());
            } }, { key: "_setFieldError", value: function(A) {
              this.fieldError = { message: A }, this.updateError();
            } }, { key: "_clearFieldError", value: function() {
              this.fieldError && (this.fieldError = null, this.updateError());
            } }, { key: "_onChangeValue", value: function() {
              var A = this.editor.getDomSelection();
              A.range && (x = (0, S.textDiff)(String(this.value), String(this.previousValue)), A.range.startOffset = x.start, A.range.endOffset = x.end);
              var x, M = this.editor.getDomSelection();
              M.range && (x = (0, S.textDiff)(String(this.previousValue), String(this.value)), M.range.startOffset = x.start, M.range.endOffset = x.end), this.editor._onAction("editValue", { path: this.getInternalPath(), oldValue: this.previousValue, newValue: this.value, oldSelection: A, newSelection: M }), this.previousValue = this.value;
            } }, { key: "_onChangeField", value: function() {
              var A = this.editor.getDomSelection(), x = this.previousField || "";
              A.range && (M = (0, S.textDiff)(this.field, x), A.range.startOffset = M.start, A.range.endOffset = M.end);
              var M = this.editor.getDomSelection();
              M.range && (x = (0, S.textDiff)(x, this.field), M.range.startOffset = x.start, M.range.endOffset = x.end), this.editor._onAction("editField", { parentPath: this.parent.getInternalPath(), index: this.getIndex(), oldValue: this.previousField, newValue: this.field, oldSelection: A, newSelection: M }), this.previousField = this.field;
            } }, { key: "_updateDomValue", value: function() {
              var A = this.dom.value;
              if (A) {
                var x = ["jsoneditor-value"], M = this.value, Z = this.type === "auto" ? (0, S.getType)(M) : this.type, G = Z === "string" && (0, S.isUrl)(M);
                if (x.push("jsoneditor-" + Z), G && x.push("jsoneditor-url"), String(this.value) === "" && this.type !== "array" && this.type !== "object" && x.push("jsoneditor-empty"), this.searchValueActive && x.push("jsoneditor-highlight-active"), this.searchValue && x.push("jsoneditor-highlight"), A.className = x.join(" "), Z === "array" || Z === "object" ? (x = this.childs ? this.childs.length : 0, A.title = this.type + " containing " + x + " items") : G && this.editable.value ? A.title = (0, C.Iu)("openUrl") : A.title = "", Z === "boolean" && this.editable.value ? (this.dom.checkbox || (this.dom.checkbox = document.createElement("input"), this.dom.checkbox.type = "checkbox", this.dom.tdCheckbox = document.createElement("td"), this.dom.tdCheckbox.className = "jsoneditor-tree", this.dom.tdCheckbox.appendChild(this.dom.checkbox), this.dom.tdValue.parentNode.insertBefore(this.dom.tdCheckbox, this.dom.tdValue)), this.dom.checkbox.checked = this.value) : this.dom.tdCheckbox && (this.dom.tdCheckbox.parentNode.removeChild(this.dom.tdCheckbox), delete this.dom.tdCheckbox, delete this.dom.checkbox), this.enum && this.editable.value) {
                  if (!this.dom.select) {
                    this.dom.select = document.createElement("select"), this.id = this.field + "_" + (/* @__PURE__ */ new Date()).getUTCMilliseconds(), this.dom.select.id = this.id, this.dom.select.name = this.dom.select.id;
                    var $ = document.createElement("option");
                    $.value = "", $.textContent = "--", this.dom.select.appendChild($);
                    for (var X = 0; X < this.enum.length; X++) {
                      var te = document.createElement("option");
                      te.value = this.enum[X], te.textContent = this.enum[X], this.dom.select.appendChild(te);
                    }
                    this.dom.tdSelect = document.createElement("td"), this.dom.tdSelect.className = "jsoneditor-tree", this.dom.tdSelect.appendChild(this.dom.select), this.dom.tdValue.parentNode.insertBefore(this.dom.tdSelect, this.dom.tdValue);
                  }
                  this.dom.select.value = this.enum.indexOf(this.value) !== -1 ? this.value : "", !this.schema || i(this.schema, "oneOf") || i(this.schema, "anyOf") || i(this.schema, "allOf") ? delete this.valueFieldHTML : (this.valueFieldHTML = this.dom.tdValue.innerHTML, this.dom.tdValue.style.visibility = "hidden", this.dom.tdValue.textContent = "");
                } else this.dom.tdSelect && (this.dom.tdSelect.parentNode.removeChild(this.dom.tdSelect), delete this.dom.tdSelect, delete this.dom.select, this.dom.tdValue.innerHTML = this.valueFieldHTML, this.dom.tdValue.style.visibility = "", delete this.valueFieldHTML);
                if (this.editable.value && this.editor.options.colorPicker && typeof M == "string" && (0, S.isValidColor)(M) ? (this.dom.color || (this.dom.color = document.createElement("div"), this.dom.color.className = "jsoneditor-color", this.dom.tdColor = document.createElement("td"), this.dom.tdColor.className = "jsoneditor-tree", this.dom.tdColor.appendChild(this.dom.color), this.dom.tdValue.parentNode.insertBefore(this.dom.tdColor, this.dom.tdValue)), (0, S.addClassName)(this.dom.value, "jsoneditor-color-value"), this.dom.color.style.backgroundColor = M) : this._deleteDomColor(), this._showTimestampTag()) {
                  if (this.dom.date || (this.dom.date = document.createElement("div"), this.dom.date.className = "jsoneditor-date", this.dom.value.parentNode.appendChild(this.dom.date)), $ = null, $ = typeof this.editor.options.timestampFormat == "function" ? this.editor.options.timestampFormat({ field: this.field, value: this.value, path: this.getPath() }) : $) {
                    for (; this.dom.date.firstChild; ) this.dom.date.removeChild(this.dom.date.firstChild);
                    this.dom.date.appendChild(document.createTextNode($));
                  } else this.dom.date.textContent = new Date(M).toISOString();
                  this.dom.date.title = new Date(M).toString();
                } else this.dom.date && (this.dom.date.parentNode.removeChild(this.dom.date), delete this.dom.date);
                (0, S.stripFormatting)(A), this._updateDomDefault();
              }
            } }, { key: "_deleteDomColor", value: function() {
              this.dom.color && (this.dom.tdColor.parentNode.removeChild(this.dom.tdColor), delete this.dom.tdColor, delete this.dom.color, (0, S.removeClassName)(this.dom.value, "jsoneditor-color-value"));
            } }, { key: "_updateDomField", value: function() {
              var A, x = this.dom.field;
              x && ((A = (0, S.makeFieldTooltip)(this.schema, this.editor.options.language)) && (x.title = A), (String(this.field) === "" && this.parent && this.parent.type !== "array" ? S.addClassName : S.removeClassName)(x, "jsoneditor-empty"), (this.searchFieldActive ? S.addClassName : S.removeClassName)(x, "jsoneditor-highlight-active"), (this.searchField ? S.addClassName : S.removeClassName)(x, "jsoneditor-highlight"), (0, S.stripFormatting)(x));
            } }, { key: "_getDomField", value: function(A) {
              if (this._clearFieldError(), this.dom.field && this.fieldEditable && (this.fieldInnerText = (0, S.getInnerText)(this.dom.field), this.fieldInnerText === "" && this.dom.field.innerHTML !== "" && (this.dom.field.textContent = "")), this.fieldInnerText !== void 0) try {
                var x = this._unescapeHTML(this.fieldInnerText), M = this.parent.getFieldNames(this);
                M.indexOf(x) !== -1 ? A ? (x = (0, S.findUniqueName)(x, M)) !== this.field && (this.field = x, this._debouncedOnChangeField()) : this._setFieldError((0, C.Iu)("duplicateFieldError")) : x !== this.field && (this.field = x, this._debouncedOnChangeField());
              } catch {
                this._setFieldError((0, C.Iu)("cannotParseFieldError"));
              }
            } }, { key: "_updateDomDefault", value: function() {
              var A;
              !this.schema || this.schema.default === void 0 || this._hasChilds() || (A = this.dom.select || this.dom.value) && (this.value === this.schema.default ? (A.title = (0, C.Iu)("default"), (0, S.addClassName)(A, "jsoneditor-is-default"), (0, S.removeClassName)(A, "jsoneditor-is-not-default")) : (A.removeAttribute("title"), (0, S.removeClassName)(A, "jsoneditor-is-default"), (0, S.addClassName)(A, "jsoneditor-is-not-default")));
            } }, { key: "_showTimestampTag", value: function() {
              if (typeof this.value != "number") return !1;
              var A = this.editor.options.timestampTag;
              return typeof A != "function" ? A === !0 && (0, S.isTimestamp)(this.field, this.value) : (A = A({ field: this.field, value: this.value, path: this.getPath() }), typeof A == "boolean" ? A : (0, S.isTimestamp)(this.field, this.value));
            } }, { key: "clearDom", value: function() {
              this.dom = {};
            } }, { key: "getDom", value: function() {
              var A, x = this.dom;
              if (x.tr) return x.tr;
              this._updateEditability(), x.tr = document.createElement("tr"), (x.tr.node = this).editor.options.mode === "tree" && (A = document.createElement("td"), this.editable.field && this.parent && ((M = document.createElement("button")).type = "button", (x.drag = M).className = "jsoneditor-button jsoneditor-dragarea", M.title = (0, C.Iu)("drag"), A.appendChild(M)), x.tr.appendChild(A), M = document.createElement("td"), (A = document.createElement("button")).type = "button", (x.menu = A).className = "jsoneditor-button jsoneditor-contextmenu-button", A.title = (0, C.Iu)("actionsMenu"), M.appendChild(x.menu), x.tr.appendChild(M));
              var M = document.createElement("td");
              return x.tr.appendChild(M), x.tree = this._createDomTree(), M.appendChild(x.tree), this.updateDom({ updateIndexes: !0 }), x.tr;
            } }, { key: "isVisible", value: function() {
              return this.dom && this.dom.tr && this.dom.tr.parentNode || !1;
            } }, { key: "isDescendantOf", value: function(A) {
              for (var x = this.parent; x; ) {
                if (x === A) return !0;
                x = x.parent;
              }
              return !1;
            } }, { key: "_createDomField", value: function() {
              return document.createElement("div");
            } }, { key: "setHighlight", value: function(A) {
              this.dom.tr && ((A ? S.addClassName : S.removeClassName)(this.dom.tr, "jsoneditor-highlight"), this.append && this.append.setHighlight(A), this.childs && this.childs.forEach(function(x) {
                x.setHighlight(A);
              }));
            } }, { key: "setSelected", value: function(A, x) {
              this.selected = A, this.dom.tr && ((A ? S.addClassName : S.removeClassName)(this.dom.tr, "jsoneditor-selected"), (x ? S.addClassName : S.removeClassName)(this.dom.tr, "jsoneditor-first"), this.append && this.append.setSelected(A), this.showMore && this.showMore.setSelected(A), this.childs && this.childs.forEach(function(M) {
                M.setSelected(A);
              }));
            } }, { key: "updateValue", value: function(A) {
              this.value = A, this.previousValue = A, this.valueError = void 0, this.updateDom();
            } }, { key: "updateField", value: function(A) {
              this.field = A, this.previousField = A, this.fieldError = void 0, this.updateDom();
            } }, { key: "updateDom", value: function(A) {
              var x = this.dom.tree;
              x && (x.style.marginLeft = 24 * this.getLevel() + "px"), (x = this.dom.field) && (this.fieldEditable ? (x.contentEditable = this.editable.field, x.spellcheck = !1, x.className = "jsoneditor-field") : (x.contentEditable = !1, x.className = "jsoneditor-readonly"), M = this.index !== void 0 ? this.index : this.field !== void 0 ? this.field : (M = this.editor.options.schema ? R._findSchema(this.editor.options.schema, this.editor.options.schemaRefs || {}, this.getPath()) : void 0) && M.title ? M.title : this._hasChilds() ? this.type : "", M = this._escapeHTML(M), document.activeElement !== x && M !== this._unescapeHTML((0, S.getInnerText)(x)) && (x.innerHTML = M), this._updateSchema());
              var M = this.dom.value;
              M && (this.type === "array" || this.type === "object" ? this.updateNodeName() : (Z = this._escapeHTML(this.value), document.activeElement !== M && Z !== this._unescapeHTML((0, S.getInnerText)(M)) && (M.innerHTML = Z)));
              var Z = this.dom.tr;
              Z && (this.type === "array" || this.type === "object" ? ((0, S.addClassName)(Z, "jsoneditor-expandable"), this.expanded ? ((0, S.addClassName)(Z, "jsoneditor-expanded"), (0, S.removeClassName)(Z, "jsoneditor-collapsed")) : ((0, S.addClassName)(Z, "jsoneditor-collapsed"), (0, S.removeClassName)(Z, "jsoneditor-expanded"))) : ((0, S.removeClassName)(Z, "jsoneditor-expandable"), (0, S.removeClassName)(Z, "jsoneditor-expanded"), (0, S.removeClassName)(Z, "jsoneditor-collapsed"))), this._updateDomField(), this._updateDomValue(), A && A.updateIndexes === !0 && this._updateDomIndexes(), A && A.recurse === !0 && this.childs && this.childs.forEach(function(G) {
                G.updateDom(A);
              }), this.error && this.updateError(), this.append && this.append.updateDom(), this.showMore && this.showMore.updateDom(), this._updateCssClassName();
            } }, { key: "_updateSchema", value: function() {
              this.editor && this.editor.options && (this.schema = this.editor.options.schema ? R._findSchema(this.editor.options.schema, this.editor.options.schemaRefs || {}, this.getPath()) : null, this.schema ? this.enum = R._findEnum(this.schema) : delete this.enum);
            } }, { key: "_updateDomIndexes", value: function() {
              var A = this.dom.value, x = this.childs;
              A && x && (this.type === "array" ? x.forEach(function(M, Z) {
                M.index = Z, (M = M.dom.field) && (M.textContent = Z);
              }) : this.type === "object" && x.forEach(function(M) {
                M.index !== void 0 && (delete M.index, M.field === void 0 && (M.field = ""));
              }));
            } }, { key: "_createDomValue", value: function() {
              var A;
              return this.type === "array" ? (A = document.createElement("div")).textContent = "[...]" : this.type === "object" ? (A = document.createElement("div")).textContent = "{...}" : (!this.editable.value && (0, S.isUrl)(this.value) ? (A = document.createElement("a")).href = this.value : ((A = document.createElement("div")).contentEditable = this.editable.value, A.spellcheck = !1), A.innerHTML = this._escapeHTML(this.value)), A;
            } }, { key: "_createDomExpandButton", value: function() {
              var A = document.createElement("button");
              return A.type = "button", this._hasChilds() ? (A.className = this.expanded ? "jsoneditor-button jsoneditor-expanded" : "jsoneditor-button jsoneditor-collapsed", A.title = (0, C.Iu)("expandTitle")) : (A.className = "jsoneditor-button jsoneditor-invisible", A.title = ""), A;
            } }, { key: "_createDomTree", value: function() {
              var A = this.dom, x = document.createElement("table"), M = document.createElement("tbody");
              x.style.borderCollapse = "collapse", x.className = "jsoneditor-values", x.appendChild(M);
              var Z = document.createElement("tr");
              return M.appendChild(Z), M = document.createElement("td"), M.className = "jsoneditor-tree", Z.appendChild(M), A.expand = this._createDomExpandButton(), M.appendChild(A.expand), A.tdExpand = M, M = document.createElement("td"), M.className = "jsoneditor-tree", Z.appendChild(M), A.field = this._createDomField(), M.appendChild(A.field), A.tdField = M, M = document.createElement("td"), M.className = "jsoneditor-tree", Z.appendChild(M), this.type !== "object" && this.type !== "array" && (M.appendChild(document.createTextNode(":")), M.className = "jsoneditor-separator"), A.tdSeparator = M, M = document.createElement("td"), M.className = "jsoneditor-tree", Z.appendChild(M), A.value = this._createDomValue(), M.appendChild(A.value), A.tdValue = M, x;
            } }, { key: "onEvent", value: function(A) {
              var x, M = A.type, Z = A.target || A.srcElement, G = this.dom, $ = this, X = this._hasChilds();
              Z !== G.drag && Z !== G.menu || (M === "mouseover" ? this.editor.highlighter.highlight(this) : M === "mouseout" && this.editor.highlighter.unhighlight()), M === "click" && Z === G.menu && ((x = $.editor.highlighter).highlight($), x.lock(), (0, S.addClassName)(G.menu, "jsoneditor-selected"), this.showContextMenu(G.menu, function() {
                (0, S.removeClassName)(G.menu, "jsoneditor-selected"), x.unlock(), x.unhighlight();
              })), M === "click" && Z === G.expand && X && (ue = A.ctrlKey, this._onExpand(ue)), M !== "click" || A.target !== $.dom.tdColor && A.target !== $.dom.color || this._showColorPicker(), M === "change" && Z === G.checkbox && (this.dom.value.textContent = String(!this.value), this._getDomValue(), this._updateDomDefault()), M === "change" && Z === G.select && (this.dom.value.innerHTML = this._escapeHTML(G.select.value), this._getDomValue(), this._updateDomValue());
              var te = G.value;
              if (Z === te) switch (M) {
                case "blur":
                case "change":
                  this._getDomValue(), this._clearValueError(), this._updateDomValue();
                  var se = this._escapeHTML(this.value);
                  se !== this._unescapeHTML((0, S.getInnerText)(te)) && (te.innerHTML = se);
                  break;
                case "input":
                  this._getDomValue(), this._updateDomValue();
                  break;
                case "keydown":
                case "mousedown":
                  this.editor.selection = this.editor.getDomSelection();
                  break;
                case "click":
                  A.ctrlKey && this.editable.value && (0, S.isUrl)(this.value) && (A.preventDefault(), window.open(this.value, "_blank", "noopener"));
                  break;
                case "keyup":
                  this._getDomValue(), this._updateDomValue();
                  break;
                case "cut":
                case "paste":
                  setTimeout(function() {
                    $._getDomValue(), $._updateDomValue();
                  }, 1);
              }
              var le = G.field;
              if (Z === le) switch (M) {
                case "blur":
                  this._getDomField(!0), this._updateDomField();
                  var ce = this._escapeHTML(this.field);
                  ce !== this._unescapeHTML((0, S.getInnerText)(le)) && (le.innerHTML = ce);
                  break;
                case "input":
                  this._getDomField(), this._updateSchema(), this._updateDomField(), this._updateDomValue();
                  break;
                case "keydown":
                case "mousedown":
                  this.editor.selection = this.editor.getDomSelection();
                  break;
                case "keyup":
                  this._getDomField(), this._updateDomField();
                  break;
                case "cut":
                case "paste":
                  setTimeout(function() {
                    $._getDomField(), $._updateDomField();
                  }, 1);
              }
              var ue = G.tree;
              ue && Z === ue.parentNode && M === "click" && !A.hasMoved && ((A.offsetX !== void 0 ? A.offsetX < 24 * (this.getLevel() + 1) : A.pageX < (0, S.getAbsoluteLeft)(G.tdSeparator)) || X ? le && ((0, S.setEndOfContentEditable)(le), le.focus()) : te && !this.enum && ((0, S.setEndOfContentEditable)(te), te.focus())), (Z !== G.tdExpand || X) && Z !== G.tdField && Z !== G.tdSeparator || M !== "click" || A.hasMoved || le && ((0, S.setEndOfContentEditable)(le), le.focus()), M === "keydown" && this.onKeyDown(A), typeof this.editor.options.onEvent == "function" && this._onEvent(A);
            } }, { key: "_onEvent", value: function(A) {
              var M = A.target, x = M === this.dom.field, M = M === this.dom.value || M === this.dom.checkbox || M === this.dom.select;
              (x || M) && (x = { field: this.getField(), path: this.getPath() }, M && !this._hasChilds() && (x.value = this.getValue()), this.editor.options.onEvent(x, A));
            } }, { key: "onKeyDown", value: function(A) {
              var x, M, Z, G, $, X, te, se, le, ce, ue, ge, ae, fe, we, ve, ye, Ne = A.which || A.keyCode, Ze = A.target || A.srcElement, me = A.ctrlKey, be = A.shiftKey, Se = A.altKey, ke = !1, We = this.editor.options.mode === "tree", Le = 0 < this.editor.multiselection.nodes.length ? this.editor.multiselection.nodes : [this], P = Le[0], Q = Le[Le.length - 1];
              Ne === 13 ? Ze === this.dom.value ? this.editable.value && !A.ctrlKey || (0, S.isUrl)(this.value) && (window.open(this.value, "_blank", "noopener"), ke = !0) : Ze === this.dom.expand && this._hasChilds() && (ue = A.ctrlKey, this._onExpand(ue), Ze.focus(), ke = !0) : Ne === 68 ? me && We && (R.onDuplicate(Le), ke = !0) : Ne === 69 ? me && (this._onExpand(be), Ze.focus(), ke = !0) : Ne === 77 && We ? me && (this.showContextMenu(Ze), ke = !0) : Ne === 46 && We ? me && (R.onRemove(Le), ke = !0) : Ne === 45 && We ? me && !be ? (this._onInsertBefore(), ke = !0) : me && be && (this._onInsertAfter(), ke = !0) : Ne === 35 ? Se && ((ue = this._lastNode()) && ue.focus(R.focusElement || this._getElementName(Ze)), ke = !0) : Ne === 36 ? Se && ((ge = this._firstNode()) && ge.focus(R.focusElement || this._getElementName(Ze)), ke = !0) : Ne === 37 ? Se && !be ? ((ge = this._previousElement(Ze)) && this.focus(this._getElementName(ge)), ke = !0) : Se && be && We && (fe = Q.expanded ? (fe = Q.getAppendDom()) ? fe.nextSibling : void 0 : Q.getDom().nextSibling) && (ae = R.getNodeFromTarget(fe), fe = fe.nextSibling, we = R.getNodeFromTarget(fe), ae && ae instanceof H && Q.parent.childs.length !== 1 && we && we.parent && (M = this.editor.getDomSelection(), Z = (G = P.parent).childs[Q.getIndex() + 1] || G.append, $ = P.getIndex(), X = we.getIndex(), te = G.getInternalPath(), se = we.parent.getInternalPath(), Le.forEach(function(oe) {
                we.parent.moveBefore(oe, we);
              }), this.focus(R.focusElement || this._getElementName(Ze)), this.editor._onAction("moveNodes", { count: Le.length, fieldNames: Le.map(t), oldParentPath: G.getInternalPath(), newParentPath: P.parent.getInternalPath(), oldIndex: Z.getIndex(), newIndex: P.getIndex(), oldIndexRedo: $, newIndexRedo: X, oldParentPathRedo: te, newParentPathRedo: se, oldSelection: M, newSelection: this.editor.getDomSelection() }))) : Ne === 38 ? Se && !be ? ((x = this._previousNode()) && (this.editor.deselect(!0), x.focus(R.focusElement || this._getElementName(Ze))), ke = !0) : !Se && me && be && We ? ((x = this._previousNode()) && ((ce = this.editor.multiselection).start = ce.start || this, ce.end = x, le = this.editor._findTopLevelNodes(ce.start, ce.end), this.editor.select(le), x.focus("field")), ke = !0) : Se && be && We && ((x = P._previousNode()) && x.parent && (M = this.editor.getDomSelection(), Z = (G = P.parent).childs[Q.getIndex() + 1] || G.append, $ = P.getIndex(), X = x.getIndex(), te = G.getInternalPath(), se = x.parent.getInternalPath(), Le.forEach(function(oe) {
                x.parent.moveBefore(oe, x);
              }), this.focus(R.focusElement || this._getElementName(Ze)), this.editor._onAction("moveNodes", { count: Le.length, fieldNames: Le.map(t), oldParentPath: G.getInternalPath(), newParentPath: P.parent.getInternalPath(), oldIndex: Z.getIndex(), newIndex: P.getIndex(), oldIndexRedo: $, newIndexRedo: X, oldParentPathRedo: te, newParentPathRedo: se, oldSelection: M, newSelection: this.editor.getDomSelection() })), ke = !0) : Ne === 39 ? Se && !be ? ((ve = this._nextElement(Ze)) && this.focus(this._getElementName(ve)), ke = !0) : Se && be && We && (ve = P.getDom().previousSibling) && (x = R.getNodeFromTarget(ve)) && x.parent && !x.isVisible() && (M = this.editor.getDomSelection(), Z = (G = P.parent).childs[Q.getIndex() + 1] || G.append, $ = P.getIndex(), X = x.getIndex(), te = G.getInternalPath(), se = x.parent.getInternalPath(), Le.forEach(function(oe) {
                x.parent.moveBefore(oe, x);
              }), this.focus(R.focusElement || this._getElementName(Ze)), this.editor._onAction("moveNodes", { count: Le.length, fieldNames: Le.map(t), oldParentPath: G.getInternalPath(), newParentPath: P.parent.getInternalPath(), oldIndex: Z.getIndex(), newIndex: P.getIndex(), oldIndexRedo: $, newIndexRedo: X, oldParentPathRedo: te, newParentPathRedo: se, oldSelection: M, newSelection: this.editor.getDomSelection() })) : Ne === 40 && (Se && !be ? ((ae = this._nextNode()) && (this.editor.deselect(!0), ae.focus(R.focusElement || this._getElementName(Ze))), ke = !0) : !Se && me && be && We ? ((ae = this._nextNode()) && ((ce = this.editor.multiselection).start = ce.start || this, ce.end = ae, le = this.editor._findTopLevelNodes(ce.start, ce.end), this.editor.select(le), ae.focus("field")), ke = !0) : Se && be && We && ((ye = (ae = (ae = (ae = Q.expanded ? Q.append ? Q.append._nextNode() : void 0 : Q._nextNode()) && !ae.isVisible() ? ae.parent.showMore : ae) && ae instanceof H ? Q : ae) && (ae._nextNode() || ae.parent.append)) && ye.parent && (M = this.editor.getDomSelection(), Z = (G = P.parent).childs[Q.getIndex() + 1] || G.append, $ = P.getIndex(), X = ye.getIndex(), te = G.getInternalPath(), se = ye.parent.getInternalPath(), Le.forEach(function(oe) {
                ye.parent.moveBefore(oe, ye);
              }), this.focus(R.focusElement || this._getElementName(Ze)), this.editor._onAction("moveNodes", { count: Le.length, fieldNames: Le.map(t), oldParentPath: G.getInternalPath(), newParentPath: P.parent.getInternalPath(), oldParentPathRedo: te, newParentPathRedo: se, oldIndexRedo: $, newIndexRedo: X, oldIndex: Z.getIndex(), newIndex: P.getIndex(), oldSelection: M, newSelection: this.editor.getDomSelection() })), ke = !0)), ke && (A.preventDefault(), A.stopPropagation());
            } }, { key: "_onExpand", value: function(A) {
              var x, M, Z;
              A && (Z = (M = (x = this.dom.tr.parentNode).parentNode).scrollTop, M.removeChild(x)), this.expanded ? this.collapse(A) : this.expand(A), A && (M.appendChild(x), M.scrollTop = Z);
            } }, { key: "_showColorPicker", value: function() {
              var A, x;
              typeof this.editor.options.onColorPicker == "function" && this.dom.color && ((A = this)._deleteDomColor(), A.updateDom(), x = (0, k.w)(this.dom.color, this.editor.getPopupAnchor()), this.editor.options.onColorPicker(x, this.value, function(M) {
                typeof M == "string" && M !== A.value && (A._deleteDomColor(), A.value = M, A.updateDom(), A._debouncedOnChangeValue());
              }));
            } }, { key: "getFieldNames", value: function(A) {
              return this.type === "object" ? this.childs.filter(function(x) {
                return x !== A;
              }).map(function(x) {
                return x.field;
              }) : [];
            } }, { key: "_onInsertBefore", value: function(G, x, M) {
              var Z = this.editor.getDomSelection(), G = new R(this.editor, { field: G !== void 0 ? G : "", value: x !== void 0 ? x : "", type: M });
              G.expand(!0), x = this.getInternalPath(), this.parent.insertBefore(G, this), this.editor.highlighter.unhighlight(), G.focus("field"), M = this.editor.getDomSelection(), this.editor._onAction("insertBeforeNodes", { nodes: [G], paths: [G.getInternalPath()], beforePath: x, parentPath: this.parent.getInternalPath(), oldSelection: Z, newSelection: M });
            } }, { key: "_onInsertAfter", value: function(A, G, M) {
              var Z = this.editor.getDomSelection(), G = new R(this.editor, { field: A !== void 0 ? A : "", value: G !== void 0 ? G : "", type: M });
              G.expand(!0), this.parent.insertAfter(G, this), this.editor.highlighter.unhighlight(), G.focus("field"), M = this.editor.getDomSelection(), this.editor._onAction("insertAfterNodes", { nodes: [G], paths: [G.getInternalPath()], afterPath: this.getInternalPath(), parentPath: this.parent.getInternalPath(), oldSelection: Z, newSelection: M });
            } }, { key: "_onAppend", value: function(A, G, M) {
              var Z = this.editor.getDomSelection(), G = new R(this.editor, { field: A !== void 0 ? A : "", value: G !== void 0 ? G : "", type: M });
              G.expand(!0), this.parent.appendChild(G), this.editor.highlighter.unhighlight(), G.focus("field"), M = this.editor.getDomSelection(), this.editor._onAction("appendNodes", { nodes: [G], paths: [G.getInternalPath()], parentPath: this.parent.getInternalPath(), oldSelection: Z, newSelection: M });
            } }, { key: "_onChangeType", value: function(A) {
              var x, M, Z = this.type;
              A !== Z && (x = this.editor.getDomSelection(), this.changeType(A), M = this.editor.getDomSelection(), this.editor._onAction("changeType", { path: this.getInternalPath(), oldType: Z, newType: A, oldSelection: x, newSelection: M }));
            } }, { key: "sort", value: function(A, x) {
              var M, Z, G = !(2 < arguments.length && arguments[2] !== void 0) || arguments[2];
              typeof A == "string" && (A = (0, S.parsePath)(A)), this._hasChilds() && (this.hideChilds(), M = this.childs, this.childs = this.childs.concat(), Z = x === "desc" ? -1 : 1, this.type === "object" ? this.childs.sort(function($, X) {
                return Z * v()($.field, X.field);
              }) : this.childs.sort(function($, X) {
                return $ = $.getNestedChild(A), X = X.getNestedChild(A), $ ? X ? ($ = $.value, X = X.value, typeof $ != "string" && typeof X != "string" ? X < $ ? Z : $ < X ? -Z : 0 : Z * v()($, X)) : -Z : Z;
              }), this._updateDomIndexes(), this.showChilds(), G === !0 && this.editor._onAction("sort", { path: this.getInternalPath(), oldChilds: M, newChilds: this.childs }));
            } }, { key: "update", value: function(A) {
              var x = this.getInternalValue();
              this.setValue(A), this.editor._onAction("transform", { path: this.getInternalPath(), oldValue: x, newValue: this.getInternalValue() });
            } }, { key: "_detachFromDom", value: function() {
              var A = this.dom.tr ? this.dom.tr.parentNode : void 0, x = this.expanded ? this.getAppendDom() : this.getDom(), x = x && x.parentNode ? x.nextSibling : void 0;
              return this.hide({ resetVisibleChilds: !1 }), { table: A, nextTr: x };
            } }, { key: "_attachToDom", value: function(A) {
              A.table && (A.nextTr ? A.table.insertBefore(this.getDom(), A.nextTr) : A.table.appendChild(this.getDom())), this.expanded && this.showChilds();
            } }, { key: "transform", value: function(A) {
              if (this._hasChilds()) {
                this.hideChilds();
                try {
                  var x = this.getInternalValue(), M = this.getValue(), Z = this.editor.options.executeQuery(M, A);
                  this.setValue(Z);
                  var G = this.getInternalValue();
                  this.editor._onAction("transform", { path: this.getInternalPath(), oldValue: x, newValue: G }), this.showChilds();
                } catch ($) {
                  this.showChilds(), this.editor._onError($);
                }
              }
            } }, { key: "extract", value: function() {
              this.editor.node.hideChilds(), this.hideChilds();
              try {
                var A = this.editor.node.getInternalValue();
                this.editor._setRoot(this);
                var x = this.editor.node.getInternalValue();
                this.editor._onAction("transform", { path: this.editor.node.getInternalPath(), oldValue: A, newValue: x });
              } catch (M) {
                this.editor._onError(M);
              } finally {
                this.updateDom({ recurse: !0 }), this.showChilds();
              }
            } }, { key: "getNestedChild", value: function(A) {
              for (var x = 0, M = this; M && x < A.length; ) M = M.findChildByProperty(A[x]), x++;
              return M;
            } }, { key: "findChildByProperty", value: function(A) {
              if (this.type === "object") return this.childs.find(function(x) {
                return x.field === A;
              });
            } }, { key: "getAppendDom", value: function() {
              return this.append || (this.append = new H(this.editor), this.append.setParent(this)), this.append.getDom();
            } }, { key: "getShowMoreDom", value: function() {
              return this.showMore || (this.showMore = new Y(this.editor, this)), this.showMore.getDom();
            } }, { key: "nextSibling", value: function() {
              var A = this.parent.childs.indexOf(this);
              return this.parent.childs[A + 1] || this.parent.append;
            } }, { key: "_previousNode", value: function() {
              var A = null, x = this.getDom();
              if (x && x.parentNode) for (var M = x; M = M.previousSibling, A = R.getNodeFromTarget(M), M && A && A instanceof H && !A.isVisible(); ) ;
              return A;
            } }, { key: "_nextNode", value: function() {
              var A = null, x = this.getDom();
              if (x && x.parentNode) for (var M = x; M = M.nextSibling, A = R.getNodeFromTarget(M), M && A && A instanceof H && !A.isVisible(); ) ;
              return A;
            } }, { key: "_firstNode", value: function() {
              var A = null, x = this.getDom();
              return x && x.parentNode && (x = x.parentNode.firstChild, A = R.getNodeFromTarget(x)), A;
            } }, { key: "_lastNode", value: function() {
              var A = null, x = this.getDom();
              if (x && x.parentNode) for (var M = x.parentNode.lastChild, A = R.getNodeFromTarget(M); M && A && !A.isVisible(); ) M = M.previousSibling, A = R.getNodeFromTarget(M);
              return A;
            } }, { key: "_previousElement", value: function(A) {
              var x = this.dom;
              switch (A) {
                case x.value:
                  if (this.fieldEditable) return x.field;
                case x.field:
                  if (this._hasChilds()) return x.expand;
                case x.expand:
                  return x.menu;
                case x.menu:
                  if (x.drag) return x.drag;
                default:
                  return null;
              }
            } }, { key: "_nextElement", value: function(A) {
              var x = this.dom;
              switch (A) {
                case x.drag:
                  return x.menu;
                case x.menu:
                  if (this._hasChilds()) return x.expand;
                case x.expand:
                  if (this.fieldEditable) return x.field;
                case x.field:
                  if (!this._hasChilds()) return x.value;
                default:
                  return null;
              }
            } }, { key: "_getElementName", value: function(A) {
              var x = this;
              return Object.keys(this.dom).find(function(M) {
                return x.dom[M] === A;
              });
            } }, { key: "_hasChilds", value: function() {
              return this.type === "array" || this.type === "object";
            } }, { key: "addTemplates", value: function(A, x) {
              var M = this, Z = M.editor.options.templates;
              Z != null && (Z.length && A.push({ type: "separator" }), Z.forEach(function(G) {
                A.push({ text: G.text, className: G.className || "jsoneditor-type-object", title: G.title, click: (x ? function($, X) {
                  M._onAppend($, X);
                } : function($, X) {
                  M._onInsertBefore($, X);
                }).bind(this, G.field, G.value) });
              }));
            } }, { key: "showContextMenu", value: function(A, x) {
              var M, Z, G = this, $ = [];
              this.editable.value && $.push({ text: (0, C.Iu)("type"), title: (0, C.Iu)("typeTitle"), className: "jsoneditor-type-" + this.type, submenu: [{ text: (0, C.Iu)("auto"), className: "jsoneditor-type-auto" + (this.type === "auto" ? " jsoneditor-selected" : ""), title: (0, C.Iu)("autoType"), click: function() {
                G._onChangeType("auto");
              } }, { text: (0, C.Iu)("array"), className: "jsoneditor-type-array" + (this.type === "array" ? " jsoneditor-selected" : ""), title: (0, C.Iu)("arrayType"), click: function() {
                G._onChangeType("array");
              } }, { text: (0, C.Iu)("object"), className: "jsoneditor-type-object" + (this.type === "object" ? " jsoneditor-selected" : ""), title: (0, C.Iu)("objectType"), click: function() {
                G._onChangeType("object");
              } }, { text: (0, C.Iu)("string"), className: "jsoneditor-type-string" + (this.type === "string" ? " jsoneditor-selected" : ""), title: (0, C.Iu)("stringType"), click: function() {
                G._onChangeType("string");
              } }] }), this._hasChilds() && (this.editor.options.enableSort && $.push({ text: (0, C.Iu)("sort"), title: (0, C.Iu)("sortTitle", { type: this.type }), className: "jsoneditor-sort-asc", click: function() {
                G.showSortModal();
              } }), this.editor.options.enableTransform && $.push({ text: (0, C.Iu)("transform"), title: (0, C.Iu)("transformTitle", { type: this.type }), className: "jsoneditor-transform", click: function() {
                G.showTransformModal();
              } }), this.parent && $.push({ text: (0, C.Iu)("extract"), title: (0, C.Iu)("extractTitle", { type: this.type }), className: "jsoneditor-extract", click: function() {
                G.extract();
              } })), this.parent && this.parent._hasChilds() && ($.length && $.push({ type: "separator" }), M = G.parent.childs, G === M[M.length - 1] && (Z = [{ text: (0, C.Iu)("auto"), className: "jsoneditor-type-auto", title: (0, C.Iu)("autoType"), click: function() {
                G._onAppend("", "", "auto");
              } }, { text: (0, C.Iu)("array"), className: "jsoneditor-type-array", title: (0, C.Iu)("arrayType"), click: function() {
                G._onAppend("", []);
              } }, { text: (0, C.Iu)("object"), className: "jsoneditor-type-object", title: (0, C.Iu)("objectType"), click: function() {
                G._onAppend("", {});
              } }, { text: (0, C.Iu)("string"), className: "jsoneditor-type-string", title: (0, C.Iu)("stringType"), click: function() {
                G._onAppend("", "", "string");
              } }], G.addTemplates(Z, !0), $.push({ text: (0, C.Iu)("appendText"), title: (0, C.Iu)("appendTitle"), submenuTitle: (0, C.Iu)("appendSubmenuTitle"), className: "jsoneditor-append", click: function() {
                G._onAppend("", "", "auto");
              }, submenu: Z })), Z = [{ text: (0, C.Iu)("auto"), className: "jsoneditor-type-auto", title: (0, C.Iu)("autoType"), click: function() {
                G._onInsertBefore("", "", "auto");
              } }, { text: (0, C.Iu)("array"), className: "jsoneditor-type-array", title: (0, C.Iu)("arrayType"), click: function() {
                G._onInsertBefore("", []);
              } }, { text: (0, C.Iu)("object"), className: "jsoneditor-type-object", title: (0, C.Iu)("objectType"), click: function() {
                G._onInsertBefore("", {});
              } }, { text: (0, C.Iu)("string"), className: "jsoneditor-type-string", title: (0, C.Iu)("stringType"), click: function() {
                G._onInsertBefore("", "", "string");
              } }], G.addTemplates(Z, !1), $.push({ text: (0, C.Iu)("insert"), title: (0, C.Iu)("insertTitle"), submenuTitle: (0, C.Iu)("insertSub"), className: "jsoneditor-insert", click: function() {
                G._onInsertBefore("", "", "auto");
              }, submenu: Z }), this.editable.field && ($.push({ text: (0, C.Iu)("duplicateText"), title: (0, C.Iu)("duplicateField"), className: "jsoneditor-duplicate", click: function() {
                R.onDuplicate(G);
              } }), $.push({ text: (0, C.Iu)("removeText"), title: (0, C.Iu)("removeField"), className: "jsoneditor-remove", click: function() {
                R.onRemove(G);
              } }))), this.editor.options.onCreateMenu && (Z = G.getPath(), $ = this.editor.options.onCreateMenu($, { type: "single", path: Z, paths: [Z] })), new f.x($, { close: x }).show(A, this.editor.getPopupAnchor());
            } }, { key: "showSortModal", value: function() {
              var A = this, x = this.editor.options.modalAnchor || _.qD, M = this.getValue();
              (0, L.showSortModal)(x, M, function(Z) {
                var G = Z.path, G = (0, S.parsePath)(G);
                A.sortedBy = Z, A.sort(G, Z.direction);
              }, A.sortedBy);
            } }, { key: "showTransformModal", value: function() {
              var A = this, $ = this.editor.options, x = $.modalAnchor, M = $.createQuery, Z = $.executeQuery, G = $.queryDescription, $ = this.getValue();
              (0, W.showTransformModal)({ container: x || _.qD, json: $, queryDescription: G, createQuery: M, executeQuery: Z, onTransform: function(X) {
                A.transform(X);
              } });
            } }, { key: "_getType", value: function(A) {
              return A instanceof Array ? "array" : A instanceof Object ? "object" : typeof A == "string" && typeof (0, S.parseString)(A) != "string" ? "string" : "auto";
            } }, { key: "_escapeHTML", value: function(A) {
              return typeof A != "string" ? String(A) : (A = String(A).replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/ {2}/g, " &nbsp;").replace(/^ /, "&nbsp;").replace(/ $/, "&nbsp;"), A = JSON.stringify(A), A = A.substring(1, A.length - 1), A = this.editor.options.escapeUnicode === !0 ? (0, S.escapeUnicodeChars)(A) : A);
            } }, { key: "_unescapeHTML", value: function(A) {
              return A = '"' + this._escapeJSON(A) + '"', (0, S.parse)(A).replace(/&lt;/g, "<").replace(/&gt;/g, ">").replace(/&nbsp;|\u00A0/g, " ").replace(/&amp;/g, "&");
            } }, { key: "_escapeJSON", value: function(A) {
              for (var x = "", M = 0; M < A.length; ) {
                var Z = A.charAt(M);
                Z === `
` ? x += "\\n" : Z === "\\" ? (x += Z, M++, (Z = A.charAt(M)) !== "" && '"\\/bfnrtu'.indexOf(Z) !== -1 || (x += "\\"), x += Z) : x += Z === '"' ? '\\"' : Z, M++;
              }
              return x;
            } }, { key: "updateNodeName", value: function() {
              var A, x = this.childs ? this.childs.length : 0;
              if (this.type === "object" || this.type === "array") {
                if (this.editor.options.onNodeName) try {
                  A = this.editor.options.onNodeName({ path: this.getPath(), size: x, type: this.type });
                } catch (M) {
                  console.error("Error in onNodeName callback: ", M);
                }
                this.dom.value.textContent = this.type === "object" ? "{" + (A || x) + "}" : "[" + (A || x) + "]";
              }
            } }, { key: "recursivelyUpdateNodeName", value: function() {
              if (this.expanded && (this.updateNodeName(), this.childs !== "undefined")) for (var A in this.childs) this.childs[A].recursivelyUpdateNodeName();
            } }]) && o(T.prototype, N), R;
          }();
          O.prototype.DEBOUNCE_INTERVAL = 150, O.prototype.MAX_SEARCH_RESULTS = 999;
          var z = 100;
          O.focusElement = void 0, O.select = function(R) {
            setTimeout(function() {
              (0, S.selectContentEditable)(R);
            }, 0);
          }, O.onDragStart = function(R, T) {
            if (!Array.isArray(R)) return O.onDragStart([R], T);
            var N, A, x, M, Z;
            R.length !== 0 && (N = R[0], A = R[R.length - 1], x = N.parent, Z = O.getNodeFromTarget(T.target), M = N.editor, Z = (0, S.getAbsoluteTop)(Z.dom.tr) - (0, S.getAbsoluteTop)(N.dom.tr), M.mousemove || (M.mousemove = (0, S.addEventListener)(T.view, "mousemove", function(G) {
              O.onDrag(R, G);
            })), M.mouseup || (M.mouseup = (0, S.addEventListener)(T.view, "mouseup", function(G) {
              O.onDragEnd(R, G);
            })), M.highlighter.lock(), M.drag = { oldCursor: document.body.style.cursor, oldSelection: M.getDomSelection(), oldPaths: R.map(e), oldParent: x, oldNextNode: x.childs[A.getIndex() + 1] || x.append, oldParentPathRedo: x.getInternalPath(), oldIndexRedo: N.getIndex(), mouseX: T.pageX, offsetY: Z, level: N.getLevel() }, document.body.style.cursor = "move", T.preventDefault());
          }, O.onDrag = function(R, T) {
            if (!Array.isArray(R)) return O.onDrag([R], T);
            if (R.length !== 0) {
              var N, A, x, M, Z, G = R[0].editor, $ = T.pageY - G.drag.offsetY, X = T.pageX, te = !1, se = R[0], le = se.dom.tr, ce = (0, S.getAbsoluteTop)(le), ue = le.offsetHeight;
              if ($ < ce) {
                for (ve = le; ve = ve.previousSibling, ye = O.getNodeFromTarget(ve), x = ve ? (0, S.getAbsoluteTop)(ve) : 0, ve && $ < x; ) ;
                (ye = ye && !ye.parent ? void 0 : ye) || (ve = (ge = le.parentNode.firstChild) ? ge.nextSibling : void 0, (ye = O.getNodeFromTarget(ve)) === se && (ye = void 0)), !(ye = ye && ye.isVisible() && (x = (ve = ye.dom.tr) ? (0, S.getAbsoluteTop)(ve) : 0) + ue < $ ? void 0 : ye) || G.options.limitDragging !== !1 && ye.parent !== R[0].parent || (R.forEach(function(Ze) {
                  ye.parent.moveBefore(Ze, ye);
                }), te = !0);
              } else {
                var ge, ae = R[R.length - 1];
                if (ue = (ge = ae.expanded && ae.append ? ae.append.getDom() : ae.dom.tr) ? ge.nextSibling : void 0) {
                  for (M = (0, S.getAbsoluteTop)(ue), N = ue; A = O.getNodeFromTarget(N), N && (Z = N.nextSibling ? (0, S.getAbsoluteTop)(N.nextSibling) : 0, Z = N ? Z - M : 0, A && A.parent.childs.length === R.length && A.parent.childs[R.length - 1] === ae && (ce += 27), N = N.nextSibling), N && ce + Z < $; ) ;
                  if (A && A.parent) {
                    for (var ue = X - G.drag.mouseX, ue = Math.round(ue / 24 / 2), fe = G.drag.level + ue, we = A.getLevel(), ve = A.dom.tr && A.dom.tr.previousSibling; we < fe && ve; ) {
                      var ye = O.getNodeFromTarget(ve), Ne = R.some(function(me) {
                        return me === ye || ye.isDescendantOf(me);
                      });
                      if (!Ne) {
                        if (!(ye instanceof H) || (Ne = ye.parent.childs, Ne.length === R.length && Ne[R.length - 1] === ae)) break;
                        we = (A = O.getNodeFromTarget(ve)).getLevel();
                      }
                      ve = ve.previousSibling;
                    }
                    (A = A instanceof H && !A.isVisible() && A.parent.showMore.isVisible() ? A._nextNode() : A) && (G.options.limitDragging === !1 || A.parent === R[0].parent) && A.dom.tr && A.dom.tr !== ge.nextSibling && (R.forEach(function(Ze) {
                      A.parent.moveBefore(Ze, A);
                    }), te = !0);
                  }
                }
              }
              te && (G.drag.mouseX = X, G.drag.level = se.getLevel()), G.startAutoScroll($), T.preventDefault();
            }
          }, O.onDragEnd = function(R, T) {
            if (!Array.isArray(R)) return O.onDrag([R], T);
            var N, A, x, M, Z, G, $, X, te;
            R.length !== 0 && (te = R[0], N = te.editor, te && te.dom.menu && te.dom.menu.focus(), A = N.drag.oldParent.getInternalPath(), x = te.parent.getInternalPath(), M = N.drag.oldParent === te.parent, Z = N.drag.oldNextNode.getIndex(), G = te.getIndex(), $ = N.drag.oldParentPathRedo, X = N.drag.oldIndexRedo, te = M && X < G ? G + R.length : G, M && X === G || N._onAction("moveNodes", { count: R.length, fieldNames: R.map(t), oldParentPath: A, newParentPath: x, oldIndex: Z, newIndex: G, oldIndexRedo: X, newIndexRedo: te, oldParentPathRedo: $, newParentPathRedo: null, oldSelection: N.drag.oldSelection, newSelection: N.getDomSelection() }), document.body.style.cursor = N.drag.oldCursor, N.highlighter.unlock(), R.forEach(function(se) {
              se.updateDom(), T.target !== se.dom.drag && T.target !== se.dom.menu && N.highlighter.unhighlight();
            }), delete N.drag, N.mousemove && ((0, S.removeEventListener)(T.view, "mousemove", N.mousemove), delete N.mousemove), N.mouseup && ((0, S.removeEventListener)(T.view, "mouseup", N.mouseup), delete N.mouseup), N.stopAutoScroll(), T.preventDefault());
          }, O._findEnum = function(R) {
            return R.enum ? R.enum : (R = R.oneOf || R.anyOf || R.allOf, R && (R = R.filter(function(T) {
              return T.enum;
            }), 0 < R.length) ? R[0].enum : null);
          }, O._findSchema = function(R, T, N) {
            for (var A = 3 < arguments.length && arguments[3] !== void 0 ? arguments[3] : R, x = N.slice(1, N.length), M = N[0], Z = [A], G = 0, $ = [A.oneOf, A.anyOf, A.allOf]; G < $.length; G++) {
              var X = $[G];
              Array.isArray(X) && (Z = Z.concat(X));
            }
            var te, se = b(Z);
            try {
              for (se.s(); !(te = se.n()).done; ) {
                if ("$ref" in (A = te.value) && typeof A.$ref == "string") {
                  var le, ce = A.$ref;
                  if (ce in T) A = T[ce];
                  else {
                    if (!ce.startsWith("#/")) {
                      if (((le = ce.match(/#\//g)) === null || le === void 0 ? void 0 : le.length) !== 1) throw Error("Unable to resolve reference ".concat(ce));
                      var ue = E(ce.split("#/"), 2), ge = ue[0], ae = ue[1];
                      if (ge in T) {
                        var fe = T[ge], we = { $ref: "#/".concat(ae) }, ve = [];
                        return ve.push(M), 0 < x.length && ve.push.apply(ve, m(x)), O._findSchema(fe, T, ve, we);
                      }
                      throw Error("Unable to resolve reference ".concat(ce));
                    }
                    var ye, Ne = ce.substring(2).split("/"), A = R, Ze = b(Ne);
                    try {
                      for (Ze.s(); !(ye = Ze.n()).done; ) {
                        var me = ye.value;
                        if (!(me in A)) throw Error("Unable to resovle reference ".concat(ce));
                        A = A[me];
                      }
                    } catch (ke) {
                      Ze.e(ke);
                    } finally {
                      Ze.f();
                    }
                  }
                }
                if (M === void 0) return A;
                if (typeof M != "string") {
                  if (typeof M == "number" && a(A.items) === "object" && A.items !== null) return A = A.items, O._findSchema(R, T, x, A);
                } else {
                  if (a(A.properties) === "object" && A.properties !== null && M in A.properties) return A = A.properties[M], O._findSchema(R, T, x, A);
                  if (a(A.patternProperties) === "object" && A.patternProperties !== null) {
                    for (var be in A.patternProperties) if (M.match(be)) return A = A.patternProperties[be], O._findSchema(R, T, x, A);
                  }
                  if (a(A.additionalProperties) === "object") return A = A.additionalProperties, O._findSchema(R, T, x, A);
                }
              }
            } catch (Se) {
              se.e(Se);
            } finally {
              se.f();
            }
            return null;
          }, O.onRemove = function(R) {
            if (!Array.isArray(R)) return O.onRemove([R]);
            var T, N, A, x, M, Z;
            R && 0 < R.length && (T = (Z = R[0]).parent, N = Z.editor, A = Z.getIndex(), N.highlighter.unhighlight(), x = N.getDomSelection(), O.blurNodes(R), M = N.getDomSelection(), Z = R.map(e), R.forEach(function(G) {
              G.parent._remove(G);
            }), N._onAction("removeNodes", { nodes: R, paths: Z, parentPath: T.getInternalPath(), index: A, oldSelection: x, newSelection: M }));
          }, O.onDuplicate = function(R) {
            if (!Array.isArray(R)) return O.onDuplicate([R]);
            var T, N, A, x, M, Z, G;
            R && 0 < R.length && (T = R[R.length - 1], N = T.parent, (A = T.editor).deselect(A.multiselection.nodes), x = A.getDomSelection(), M = T, Z = R.map(function($) {
              var X, te = $.clone();
              return $.parent.type === "object" && (X = $.parent.getFieldNames(), te.field = (0, S.findUniqueName)($.field, X)), N.insertAfter(te, M), M = te;
            }), R.length === 1 ? Z[0].parent.type === "object" ? (Z[0].dom.field.innerHTML = R[0]._escapeHTML(R[0].field), Z[0].focus("field")) : Z[0].focus() : A.select(Z), G = A.getDomSelection(), A._onAction("duplicateNodes", { paths: R.map(e), clonePaths: Z.map(e), afterPath: T.getInternalPath(), parentPath: N.getInternalPath(), oldSelection: x, newSelection: G }));
          }, O.getNodeFromTarget = function(R) {
            for (; R; ) {
              if (R.node) return R.node;
              R = R.parentNode;
            }
          }, O.targetIsColorPicker = function(R) {
            var T = O.getNodeFromTarget(R);
            if (T) for (var N = R && R.parentNode; N; ) {
              if (N === T.dom.color) return !0;
              N = N.parentNode;
            }
            return !1;
          }, O.blurNodes = function(R) {
            var T, N;
            Array.isArray(R) ? (T = (N = R[0]).parent, N = N.getIndex(), (T.childs[N + R.length] ? T.childs[N + R.length] : T.childs[N - 1] || T).focus()) : O.blurNodes([R]);
          };
          var H = ((s.prototype = new O()).getDom = function() {
            var R = this.dom;
            if (R.tr) return R.tr;
            this._updateEditability();
            var T = document.createElement("tr");
            T.className = "jsoneditor-append", T.node = this, R.tr = T, this.editor.options.mode === "tree" && (R.tdDrag = document.createElement("td"), A = document.createElement("td"), R.tdMenu = A, (N = document.createElement("button")).type = "button", N.className = "jsoneditor-button jsoneditor-contextmenu-button", N.title = "Click to open the actions menu (Ctrl+M)", R.menu = N, A.appendChild(R.menu));
            var N = document.createElement("td"), A = document.createElement("div");
            return A.appendChild(document.createTextNode("(" + (0, C.Iu)("empty") + ")")), A.className = "jsoneditor-readonly", N.appendChild(A), R.td = N, R.text = A, this.updateDom(), T;
          }, s.prototype.getPath = function() {
            return null;
          }, s.prototype.getIndex = function() {
            return null;
          }, s.prototype.updateDom = function(R) {
            var T = this.dom, N = T.td;
            N && (N.style.paddingLeft = 24 * this.getLevel() + 26 + "px");
            var A = T.text;
            A && (A.firstChild.nodeValue = "(" + (0, C.Iu)("empty") + " " + this.parent.type + ")"), A = T.tr, this.isVisible() ? T.tr.firstChild || (T.tdDrag && A.appendChild(T.tdDrag), T.tdMenu && A.appendChild(T.tdMenu), A.appendChild(N)) : T.tr.firstChild && (T.tdDrag && A.removeChild(T.tdDrag), T.tdMenu && A.removeChild(T.tdMenu), A.removeChild(N));
          }, s.prototype.isVisible = function() {
            return this.parent.childs.length === 0;
          }, s.prototype.showContextMenu = function(R, T) {
            var N = this, A = [{ text: (0, C.Iu)("auto"), className: "jsoneditor-type-auto", title: (0, C.Iu)("autoType"), click: function() {
              N._onAppend("", "", "auto");
            } }, { text: (0, C.Iu)("array"), className: "jsoneditor-type-array", title: (0, C.Iu)("arrayType"), click: function() {
              N._onAppend("", []);
            } }, { text: (0, C.Iu)("object"), className: "jsoneditor-type-object", title: (0, C.Iu)("objectType"), click: function() {
              N._onAppend("", {});
            } }, { text: (0, C.Iu)("string"), className: "jsoneditor-type-string", title: (0, C.Iu)("stringType"), click: function() {
              N._onAppend("", "", "string");
            } }];
            N.addTemplates(A, !0);
            var x = [{ text: (0, C.Iu)("appendText"), title: (0, C.Iu)("appendTitleAuto"), submenuTitle: (0, C.Iu)("appendSubmenuTitle"), className: "jsoneditor-insert", click: function() {
              N._onAppend("", "", "auto");
            }, submenu: A }];
            this.editor.options.onCreateMenu && (A = N.parent.getPath(), x = this.editor.options.onCreateMenu(x, { type: "append", path: A, paths: [A] })), new f.x(x, { close: T }).show(R, this.editor.getPopupAnchor());
          }, s.prototype.onEvent = function(R) {
            var T, N = R.type, A = R.target || R.srcElement, x = this.dom;
            A === x.menu && (N === "mouseover" ? this.editor.highlighter.highlight(this.parent) : N === "mouseout" && this.editor.highlighter.unhighlight()), N === "click" && A === x.menu && ((T = this.editor.highlighter).highlight(this.parent), T.lock(), (0, S.addClassName)(x.menu, "jsoneditor-selected"), this.showContextMenu(x.menu, function() {
              (0, S.removeClassName)(x.menu, "jsoneditor-selected"), T.unlock(), T.unhighlight();
            })), N === "keydown" && this.onKeyDown(R);
          }, s), Y = ((h.prototype = new O()).getDom = function() {
            return this.dom.tr || (this._updateEditability(), this.dom.tr || (T = (R = this).parent, (x = document.createElement("a")).appendChild(document.createTextNode((0, C.Iu)("showMore"))), x.href = "#", x.onclick = function(Z) {
              return T.visibleChilds = Math.floor(T.visibleChilds / T.getMaxVisibleChilds() + 1) * T.getMaxVisibleChilds(), R.updateDom(), T.showChilds(), Z.preventDefault(), !1;
            }, (M = document.createElement("a")).appendChild(document.createTextNode((0, C.Iu)("showAll"))), M.href = "#", M.onclick = function(Z) {
              return T.visibleChilds = 1 / 0, R.updateDom(), T.showChilds(), Z.preventDefault(), !1;
            }, N = document.createElement("div"), A = document.createTextNode(this._getShowMoreText()), N.className = "jsoneditor-show-more", N.appendChild(A), N.appendChild(x), N.appendChild(document.createTextNode(". ")), N.appendChild(M), N.appendChild(document.createTextNode(". ")), (x = document.createElement("td")).appendChild(N), M = document.createElement("tr"), this.editor.options.mode === "tree" && (M.appendChild(document.createElement("td")), M.appendChild(document.createElement("td"))), M.appendChild(x), M.className = "jsoneditor-show-more", this.dom.tr = M, this.dom.moreContents = N, this.dom.moreText = A), this.updateDom(), this.dom.tr);
            var R, T, N, A, x, M;
          }, h.prototype.updateDom = function(R) {
            var T;
            this.isVisible() ? (this.dom.tr.node = this.parent.childs[this.parent.visibleChilds], this.dom.tr.parentNode || (T = this.parent._getNextTr()) && T.parentNode.insertBefore(this.dom.tr, T), this.dom.moreText.nodeValue = this._getShowMoreText(), this.dom.moreContents.style.marginLeft = 24 * (this.getLevel() + 1) + "px") : this.dom.tr && this.dom.tr.parentNode && this.dom.tr.parentNode.removeChild(this.dom.tr);
          }, h.prototype._getShowMoreText = function() {
            return (0, C.Iu)("showMoreStatus", { visibleChilds: this.parent.visibleChilds, totalChilds: this.parent.childs.length }) + " ";
          }, h.prototype.isVisible = function() {
            return this.parent.expanded && this.parent.childs.length > this.parent.visibleChilds;
          }, h.prototype.onEvent = function(R) {
            R.type === "keydown" && this.onKeyDown(R);
          }, h), ie = function() {
            function R(A) {
              function x(M) {
                return A.node.findNodeByInternalPath(M);
              }
              (function(M, Z) {
                if (!(M instanceof Z)) throw new TypeError("Cannot call a class as a function");
              })(this, R), this.editor = A, this.history = [], this.index = -1, this.clear(), this.actions = { editField: { undo: function(M) {
                x(M.parentPath).childs[M.index].updateField(M.oldValue);
              }, redo: function(M) {
                x(M.parentPath).childs[M.index].updateField(M.newValue);
              } }, editValue: { undo: function(M) {
                x(M.path).updateValue(M.oldValue);
              }, redo: function(M) {
                x(M.path).updateValue(M.newValue);
              } }, changeType: { undo: function(M) {
                x(M.path).changeType(M.oldType);
              }, redo: function(M) {
                x(M.path).changeType(M.newType);
              } }, appendNodes: { undo: function(M) {
                var Z = x(M.parentPath);
                M.paths.map(x).forEach(function(G) {
                  Z.removeChild(G);
                });
              }, redo: function(M) {
                var Z = x(M.parentPath);
                M.nodes.forEach(function(G) {
                  Z.appendChild(G);
                });
              } }, insertBeforeNodes: { undo: function(M) {
                var Z = x(M.parentPath);
                M.paths.map(x).forEach(function(G) {
                  Z.removeChild(G);
                });
              }, redo: function(M) {
                var Z = x(M.parentPath), G = x(M.beforePath);
                M.nodes.forEach(function($) {
                  Z.insertBefore($, G);
                });
              } }, insertAfterNodes: { undo: function(M) {
                var Z = x(M.parentPath);
                M.paths.map(x).forEach(function(G) {
                  Z.removeChild(G);
                });
              }, redo: function(M) {
                var Z = x(M.parentPath), G = x(M.afterPath);
                M.nodes.forEach(function($) {
                  Z.insertAfter($, G), G = $;
                });
              } }, removeNodes: { undo: function(M) {
                var Z = x(M.parentPath), G = Z.childs[M.index] || Z.append;
                M.nodes.forEach(function($) {
                  Z.insertBefore($, G);
                });
              }, redo: function(M) {
                var Z = x(M.parentPath);
                M.paths.map(x).forEach(function(G) {
                  Z.removeChild(G);
                });
              } }, duplicateNodes: { undo: function(M) {
                var Z = x(M.parentPath);
                M.clonePaths.map(x).forEach(function(G) {
                  Z.removeChild(G);
                });
              }, redo: function(M) {
                var Z = x(M.parentPath), G = x(M.afterPath);
                M.paths.map(x).forEach(function($) {
                  var X, te = $.clone();
                  Z.type === "object" && (X = Z.getFieldNames(), te.field = (0, S.findUniqueName)($.field, X)), Z.insertAfter(te, G), G = te;
                });
              } }, moveNodes: { undo: function(M) {
                var Z = x(M.oldParentPath), G = x(M.newParentPath), $ = Z.childs[M.oldIndex] || Z.append;
                G.childs.slice(M.newIndex, M.newIndex + M.count).forEach(function(X, te) {
                  X.field = M.fieldNames[te], Z.moveBefore(X, $);
                }), M.newParentPathRedo === null && (M.newParentPathRedo = G.getInternalPath());
              }, redo: function(M) {
                var Z = x(M.oldParentPathRedo), G = x(M.newParentPathRedo), $ = G.childs[M.newIndexRedo] || G.append;
                Z.childs.slice(M.oldIndexRedo, M.oldIndexRedo + M.count).forEach(function(X, te) {
                  X.field = M.fieldNames[te], G.moveBefore(X, $);
                });
              } }, sort: { undo: function(M) {
                var Z = x(M.path);
                Z.hideChilds(), Z.childs = M.oldChilds, Z.updateDom({ updateIndexes: !0 }), Z.showChilds();
              }, redo: function(M) {
                var Z = x(M.path);
                Z.hideChilds(), Z.childs = M.newChilds, Z.updateDom({ updateIndexes: !0 }), Z.showChilds();
              } }, transform: { undo: function(M) {
                x(M.path).setInternalValue(M.oldValue);
              }, redo: function(M) {
                x(M.path).setInternalValue(M.newValue);
              } } };
            }
            var T, N;
            return T = R, (N = [{ key: "onChange", value: function() {
            } }, { key: "add", value: function(A, x) {
              this.index++, this.history[this.index] = { action: A, params: x, timestamp: /* @__PURE__ */ new Date() }, this.index < this.history.length - 1 && this.history.splice(this.index + 1, this.history.length - this.index - 1), this.onChange();
            } }, { key: "clear", value: function() {
              this.history = [], this.index = -1, this.onChange();
            } }, { key: "canUndo", value: function() {
              return 0 <= this.index;
            } }, { key: "canRedo", value: function() {
              return this.index < this.history.length - 1;
            } }, { key: "undo", value: function() {
              if (this.canUndo()) {
                var A = this.history[this.index];
                if (A) {
                  var x = this.actions[A.action];
                  if (x && x.undo) {
                    if (x.undo(A.params), A.params.oldSelection) try {
                      this.editor.setDomSelection(A.params.oldSelection);
                    } catch (M) {
                      console.error(M);
                    }
                  } else console.error(new Error('unknown action "' + A.action + '"'));
                }
                this.index--, this.onChange();
              }
            } }, { key: "redo", value: function() {
              if (this.canRedo()) {
                this.index++;
                var A = this.history[this.index];
                if (A) {
                  var x = this.actions[A.action];
                  if (x && x.redo) {
                    if (x.redo(A.params), A.params.newSelection) try {
                      this.editor.setDomSelection(A.params.newSelection);
                    } catch (M) {
                      console.error(M);
                    }
                  } else console.error(new Error('unknown action "' + A.action + '"'));
                }
                this.onChange();
              }
            } }, { key: "destroy", value: function() {
              this.editor = null, this.history = [], this.index = -1;
            } }]) && r(T.prototype, N), R;
          }(), U = function() {
            function R(A, x) {
              (function(G, $) {
                if (!(G instanceof $)) throw new TypeError("Cannot call a class as a function");
              })(this, R);
              var M = this;
              this.editor = A, this.timeout = void 0, this.delay = 200, this.lastText = void 0, this.results = null, this.dom = {}, this.dom.container = x, A = document.createElement("div"), (this.dom.wrapper = A).className = "jsoneditor-search", x.appendChild(A), x = document.createElement("div"), (this.dom.results = x).className = "jsoneditor-results", A.appendChild(x), x = document.createElement("div"), (this.dom.input = x).className = "jsoneditor-frame", x.title = (0, C.Iu)("searchTitle"), A.appendChild(x), A = document.createElement("button"), A.type = "button", A.className = "jsoneditor-refresh", x.appendChild(A);
              var Z = document.createElement("input");
              Z.type = "text", (this.dom.search = Z).oninput = function(G) {
                M._onDelayedSearch(G);
              }, Z.onchange = function(G) {
                M._onSearch();
              }, Z.onkeydown = function(G) {
                M._onKeyDown(G);
              }, Z.onkeyup = function(G) {
                M._onKeyUp(G);
              }, A.onclick = function(G) {
                Z.select();
              }, x.appendChild(Z), A = document.createElement("button"), A.type = "button", A.title = (0, C.Iu)("searchNextResultTitle"), A.className = "jsoneditor-next", A.onclick = function() {
                M.next();
              }, x.appendChild(A), A = document.createElement("button"), A.type = "button", A.title = (0, C.Iu)("searchPreviousResultTitle"), A.className = "jsoneditor-previous", A.onclick = function() {
                M.previous();
              }, x.appendChild(A);
            }
            var T, N;
            return T = R, (N = [{ key: "next", value: function(A) {
              var x;
              this.results && ((x = this.resultIndex !== null ? this.resultIndex + 1 : 0) > this.results.length - 1 && (x = 0), this._setActiveResult(x, A));
            } }, { key: "previous", value: function(A) {
              var x, M;
              this.results && (x = this.results.length - 1, M = this.resultIndex !== null ? this.resultIndex - 1 : x, this._setActiveResult(M = M < 0 ? x : M, A));
            } }, { key: "_setActiveResult", value: function(A, x) {
              var M;
              if (this.activeResult && (M = this.activeResult.node, this.activeResult.elem === "field" ? delete M.searchFieldActive : delete M.searchValueActive, M.updateDom()), !this.results || !this.results[A]) return this.resultIndex = void 0, void (this.activeResult = void 0);
              this.resultIndex = A;
              var Z = this.results[this.resultIndex].node, G = this.results[this.resultIndex].elem;
              G === "field" ? Z.searchFieldActive = !0 : Z.searchValueActive = !0, this.activeResult = this.results[this.resultIndex], Z.updateDom(), Z.scrollTo(function() {
                x && Z.focus(G);
              });
            } }, { key: "_clearDelay", value: function() {
              this.timeout !== void 0 && (clearTimeout(this.timeout), delete this.timeout);
            } }, { key: "_onDelayedSearch", value: function(A) {
              this._clearDelay();
              var x = this;
              this.timeout = setTimeout(function(M) {
                x._onSearch();
              }, this.delay);
            } }, { key: "_onSearch", value: function(A) {
              this._clearDelay();
              var x = this.dom.search.value, x = 0 < x.length ? x : void 0;
              if (x !== this.lastText || A) {
                this.lastText = x, this.results = this.editor.search(x);
                var A = this.results[0] ? this.results[0].node.MAX_SEARCH_RESULTS : 1 / 0, M = 0;
                if (this.activeResult) {
                  for (var Z = 0; Z < this.results.length; Z++) if (this.results[Z].node === this.activeResult.node) {
                    M = Z;
                    break;
                  }
                }
                this._setActiveResult(M, !1), x !== void 0 ? (x = this.results.length, this.dom.results.textContent = x === 0 ? "no results" : x === 1 ? "1 result" : A < x ? A + "+ results" : x + " results") : this.dom.results.textContent = "";
              }
            } }, { key: "_onKeyDown", value: function(A) {
              var x = A.which;
              x === 27 ? (this.dom.search.value = "", this._onSearch(), A.preventDefault(), A.stopPropagation()) : x === 13 && (A.ctrlKey ? this._onSearch(!0) : A.shiftKey ? this.previous() : this.next(), A.preventDefault(), A.stopPropagation());
            } }, { key: "_onKeyUp", value: function(A) {
              var x = A.keyCode;
              x !== 27 && x !== 13 && this._onDelayedSearch(A);
            } }, { key: "clear", value: function() {
              this.dom.search.value = "", this._onSearch();
            } }, { key: "forceSearch", value: function() {
              this._onSearch(!0);
            } }, { key: "isEmpty", value: function() {
              return this.dom.search.value === "";
            } }, { key: "destroy", value: function() {
              this.editor = null, this.dom.container.removeChild(this.dom.wrapper), this.dom = null, this.results = null, this.activeResult = null, this._clearDelay();
            } }]) && p(T.prototype, N), R;
          }(), q = function() {
            function R(A, x) {
              (function(M, Z) {
                if (!(M instanceof Z)) throw new TypeError("Cannot call a class as a function");
              })(this, R), A && (this.root = x, this.path = document.createElement("div"), this.path.className = "jsoneditor-treepath", this.path.setAttribute("tabindex", 0), this.contentMenuClicked = !1, A.appendChild(this.path), this.reset());
            }
            var T, N;
            return T = R, (N = [{ key: "reset", value: function() {
              this.path.textContent = (0, C.Iu)("selectNode");
            } }, { key: "setPath", value: function(A) {
              var x = this;
              this.path.textContent = "", A && A.length && A.forEach(function(M, Z) {
                var G, $ = document.createElement("span");
                $.className = "jsoneditor-treepath-element", $.innerText = M.name, $.onclick = (function(X) {
                  this.selectionCallback && this.selectionCallback(X);
                }).bind(x, M), x.path.appendChild($), M.children.length && ((G = document.createElement("span")).className = "jsoneditor-treepath-seperator", G.textContent = "►", G.onclick = function() {
                  x.contentMenuClicked = !0;
                  var X = [];
                  M.children.forEach(function(te) {
                    X.push({ text: te.name, className: "jsoneditor-type-modes" + (A[Z + 1] + 1 && A[Z + 1].name === te.name ? " jsoneditor-selected" : ""), click: (function(se, le) {
                      this.contextMenuCallback && this.contextMenuCallback(se, le);
                    }).bind(x, M, te.name) });
                  }), new f.x(X, { limitHeight: !0 }).show(G, x.root, !0);
                }, x.path.appendChild(G)), Z === A.length - 1 && ($ = (G || $).getBoundingClientRect().right, x.path.offsetWidth < $ && (x.path.scrollLeft = $), x.path.scrollLeft && (($ = document.createElement("span")).className = "jsoneditor-treepath-show-all-btn", $.title = "show all path", $.textContent = "...", $.onclick = (function(X) {
                  (x.contentMenuClicked = !1, S.addClassName)(x.path, "show-all"), x.path.style.width = x.path.parentNode.getBoundingClientRect().width - 10 + "px", x.path.onblur = function() {
                    if (x.contentMenuClicked) return x.contentMenuClicked = !1, void x.path.focus();
                    (0, S.removeClassName)(x.path, "show-all"), x.path.onblur = void 0, x.path.style.width = "", x.setPath(X);
                  };
                }).bind(x, A), x.path.insertBefore($, x.path.firstChild)));
              });
            } }, { key: "onSectionSelected", value: function(A) {
              typeof A == "function" && (this.selectionCallback = A);
            } }, { key: "onContextMenuItemSelected", value: function(A) {
              typeof A == "function" && (this.contextMenuCallback = A);
            } }]) && l(T.prototype, N), R;
          }(), J = D(8037), ee = D.n(J), J = {};
          J.create = function(R, T) {
            if (!R) throw new Error("No container element provided.");
            this.container = R, this.dom = {}, this.highlighter = new g(), this.selection = void 0, this.multiselection = { nodes: [] }, this.validateSchema = null, this.validationSequence = 0, this.errorNodes = [], this.lastSchemaErrors = void 0, this.node = null, this.focusTarget = null, this._setOptions(T), T.autocomplete && (this.autocomplete = function(N) {
              function A(me) {
                var be, Se;
                document.createRange ? ((be = document.createRange()).selectNodeContents(me), be.collapse(!1), (Se = window.getSelection()).removeAllRanges(), Se.addRange(be)) : document.selection && ((be = document.body.createTextRange()).moveToElementText(me), be.collapse(!1), be.select());
              }
              function x(me) {
                return se === void 0 && ((se = document.createElement("span")).style.visibility = "hidden", se.style.position = "fixed", se.style.outline = "0", se.style.margin = "0", se.style.padding = "0", se.style.border = "0", se.style.left = "0", se.style.whiteSpace = "pre", se.style.fontSize = $, se.style.fontFamily = X, se.style.fontWeight = "normal", document.body.appendChild(se)), se.textContent = me, se.getBoundingClientRect().right;
              }
              function M() {
                this.style.backgroundColor = "#ddd";
              }
              function Z() {
                this.style.backgroundColor = "";
              }
              function G() {
                we.hide(), we.onmouseselection(this.__hint, we.rs);
              }
              (N = N || {}).filter = N.filter || "start", N.trigger = N.trigger || "keydown", N.confirmKeys = N.confirmKeys || [39, 35, 9], N.caseSensitive = N.caseSensitive || !1;
              var $ = "", X = "", te = document.createElement("div");
              te.style.position = "relative", te.style.outline = "0", te.style.border = "0", te.style.margin = "0", te.style.padding = "0";
              var se, le, ce = document.createElement("div");
              ce.className = "autocomplete dropdown", ce.style.position = "absolute", ce.style.visibility = "hidden";
              var ue, ge, ae, fe, we, ve = { onArrowDown: function() {
              }, onArrowUp: function() {
              }, onEnter: function() {
              }, onTab: function() {
              }, startFrom: 0, options: [], element: null, elementHint: null, elementStyle: null, wrapper: te, show: function(me, be, Se) {
                var ke = this;
                this.startFrom = be, this.wrapper.remove(), this.elementHint && (this.elementHint.remove(), this.elementHint = null), $ === "" && ($ = window.getComputedStyle(me).getPropertyValue("font-size")), X === "" && (X = window.getComputedStyle(me).getPropertyValue("font-family")), ce.style.marginLeft = "0", ce.style.marginTop = me.getBoundingClientRect().height + "px", this.options = Se.map(String), this.element !== me && (this.element = me, this.elementStyle = { zIndex: this.element.style.zIndex, position: this.element.style.position, backgroundColor: this.element.style.backgroundColor, borderColor: this.element.style.borderColor }), this.element.style.zIndex = 3, this.element.style.position = "relative", this.element.style.backgroundColor = "transparent", this.element.style.borderColor = "transparent", this.elementHint = me.cloneNode(), this.elementHint.className = "autocomplete hint", this.elementHint.style.zIndex = 2, this.elementHint.style.position = "absolute", this.elementHint.onfocus = function() {
                  ke.element.focus();
                }, this.element.addEventListener && (this.element.removeEventListener("keydown", Ne), this.element.addEventListener("keydown", Ne, !1), this.element.removeEventListener("blur", Ze), this.element.addEventListener("blur", Ze, !1)), te.appendChild(this.elementHint), te.appendChild(ce), me.parentElement.appendChild(te), this.repaint(me);
              }, setText: function(me) {
                this.element.innerText = me;
              }, getText: function() {
                return this.element.innerText;
              }, hideDropDown: function() {
                this.wrapper.remove(), this.elementHint && (this.elementHint.remove(), this.elementHint = null, ye.hide(), this.element.style.zIndex = this.elementStyle.zIndex, this.element.style.position = this.elementStyle.position, this.element.style.backgroundColor = this.elementStyle.backgroundColor, this.element.style.borderColor = this.elementStyle.borderColor);
              }, repaint: function(be) {
                var be = (be = be.innerText).replace(`
`, ""), Se = this.options.length, ke = be.substring(this.startFrom);
                le = be.substring(0, this.startFrom);
                for (var We = 0; We < Se; We++) {
                  var Le = this.options[We];
                  if (!N.caseSensitive && Le.toLowerCase().indexOf(ke.toLowerCase()) === 0 || N.caseSensitive && Le.indexOf(ke) === 0) {
                    this.elementHint.innerText = le + ke + Le.substring(ke.length), this.elementHint.realInnerText = le + Le;
                    break;
                  }
                }
                ce.style.left = x(le) + "px", ye.refresh(ke, this.options), this.elementHint.style.width = x(this.elementHint.innerText) + 10 + "px", ce.style.visibility === "hidden" || (this.elementHint.style.width = x(this.elementHint.innerText) + ce.clientWidth + "px");
              } }, ye = (ue = ce, ge = [], ae = 0, fe = -1, we = { rs: ve, hide: function() {
                ue.style.visibility = "hidden";
              }, refresh: function(me, P) {
                ue.style.visibility = "hidden", ae = 0, ue.textContent = "";
                var Se = window.innerHeight || document.documentElement.clientHeight, We = ue.parentNode.getBoundingClientRect(), ke = We.top - 6, We = Se - We.bottom - 6;
                ge = [];
                var Le = typeof N.filter == "function" ? N.filter : I[N.filter], P = Le ? P.filter(function(Q) {
                  return Le(N.caseSensitive ? me : me.toLowerCase(), N.caseSensitive ? Q : Q.toLowerCase(), N);
                }) : [];
                (ge = P.map(function(Q) {
                  var oe = document.createElement("div");
                  oe.className = "item", oe.onmouseover = M, oe.onmouseout = Z, oe.onmousedown = G, oe.__hint = Q, oe.textContent = "", oe.appendChild(document.createTextNode(Q.substring(0, me.length)));
                  var he = document.createElement("b");
                  return he.appendChild(document.createTextNode(Q.substring(me.length))), oe.appendChild(he), ue.appendChild(oe), oe;
                })).length !== 0 && (ge.length === 1 && (me.toLowerCase() === ge[0].__hint.toLowerCase() && !N.caseSensitive || me === ge[0].__hint && N.caseSensitive) || ge.length < 2 || (we.highlight(0), 3 * We < ke ? (ue.style.maxHeight = ke + "px", ue.style.top = "", ue.style.bottom = "100%") : (ue.style.top = "100%", ue.style.bottom = "", ue.style.maxHeight = We + "px"), ue.style.visibility = "visible"));
              }, highlight: function(me) {
                fe !== -1 && ge[fe] && (ge[fe].className = "item"), ge[me].className = "item hover", fe = me;
              }, move: function(me) {
                return ue.style.visibility === "hidden" ? "" : (ae + me === -1 || ae + me === ge.length || (ae += me, we.highlight(ae)), ge[ae].__hint);
              }, onmouseselection: function() {
              } }), Ne = (function(me) {
                var be = (me = me || window.event).keyCode;
                if (this.elementHint != null && be !== 33 && be !== 34) {
                  if (be === 27) return ve.hideDropDown(), ve.element.focus(), me.preventDefault(), void me.stopPropagation();
                  var Se = (Se = this.element.innerText).replace(`
`, "");
                  if (0 <= N.confirmKeys.indexOf(be)) return be === 9 && this.elementHint.innerText.length === 0 && ve.onTab(), void (0 < this.elementHint.innerText.length && this.element.innerText !== this.elementHint.realInnerText && (this.element.innerText = this.elementHint.realInnerText, ve.hideDropDown(), A(this.element), be === 9 && (ve.element.focus(), me.preventDefault(), me.stopPropagation())));
                  if (be !== 13) {
                    if (be === 40) {
                      var ke = Se.substring(this.startFrom), We = ye.move(1);
                      return We === "" && ve.onArrowDown(), this.elementHint.innerText = le + ke + We.substring(ke.length), this.elementHint.realInnerText = le + We, me.preventDefault(), void me.stopPropagation();
                    }
                    be === 38 && (Se = Se.substring(this.startFrom), (Le = ye.move(-1)) === "" && ve.onArrowUp(), this.elementHint.innerText = le + Se + Le.substring(Se.length), this.elementHint.realInnerText = le + Le, me.preventDefault(), me.stopPropagation());
                  } else if (this.elementHint.innerText.length === 0) ve.onEnter();
                  else {
                    var Le = ce.style.visibility === "hidden";
                    if (ye.hide(), Le) return ve.hideDropDown(), ve.element.focus(), void ve.onEnter();
                    this.element.innerText = this.elementHint.realInnerText, ve.hideDropDown(), A(this.element), me.preventDefault(), me.stopPropagation();
                  }
                }
              }).bind(ve), Ze = function(me) {
                ve.hideDropDown();
              };
              return ye.onmouseselection = function(me, be) {
                be.element.innerText = be.elementHint.innerText = le + me, be.hideDropDown(), window.setTimeout(function() {
                  be.element.focus(), A(be.element);
                }, 1);
              }, ve;
            }(T.autocomplete)), this.options.history && this.options.mode !== "view" && (this.history = new ie(this)), this._createFrame(), this._createTable();
          }, J.destroy = function() {
            this.frame && this.container && this.frame.parentNode === this.container && (this.container.removeChild(this.frame), this.frame = null), this.container = null, this.dom = null, this.clear(), this.node = null, this.focusTarget = null, this.selection = null, this.multiselection = null, this.errorNodes = null, this.validateSchema = null, this._debouncedValidate = null, this.history && (this.history.destroy(), this.history = null), this.searchBox && (this.searchBox.destroy(), this.searchBox = null), this.modeSwitcher && (this.modeSwitcher.destroy(), this.modeSwitcher = null), this.frameFocusTracker.destroy();
          }, J._setOptions = function(R) {
            var T = this;
            this.options = { search: !0, history: !0, mode: "tree", name: void 0, schema: null, schemaRefs: null, autocomplete: null, navigationBar: !0, mainMenuBar: !0, limitDragging: !1, onSelectionChange: null, colorPicker: !0, onColorPicker: function(N, A, x) {
              var M;
              ee() ? (M = N.getBoundingClientRect().top, M = (0, S.getWindow)(N).innerHeight - M < 300 && 300 < M, new (ee())({ parent: N, color: A, popup: M ? "top" : "bottom", onDone: function(Z) {
                Z = Z.rgba[3] === 1 ? Z.hex.substr(0, 7) : Z.hex, x(Z);
              } }).show()) : console.warn("Cannot open color picker: the `vanilla-picker` library is not included in the bundle. Either use the full bundle or implement your own color picker using `onColorPicker`.");
            }, timestampTag: !0, timestampFormat: null, createQuery: y.r, executeQuery: y.J, onEvent: null, enableSort: !0, enableTransform: !0 }, R && (Object.keys(R).forEach(function(N) {
              T.options[N] = R[N];
            }), R.limitDragging == null && R.schema != null && (this.options.limitDragging = !0)), this.setSchema(this.options.schema, this.options.schemaRefs), this._debouncedValidate = (0, S.debounce)(this._validateAndCatch.bind(this), this.DEBOUNCE_INTERVAL), R.onSelectionChange && this.onSelectionChange(R.onSelectionChange), (0, C.cC)(this.options.languages), (0, C.m0)(this.options.language);
          }, J.set = function(R) {
            R instanceof Function || R === void 0 ? this.clear() : (this.content.removeChild(this.table), R = { field: this.options.name, value: R }, R = new O(this, R), this._setRoot(R), this._validateAndCatch(), this.node.expand(!1), this.content.appendChild(this.table)), this.history && this.history.clear(), this.searchBox && this.searchBox.clear();
          }, J.update = function(R) {
            var T, N;
            this.node.deepEqual(R) || (T = this.getSelection(), this.onChangeDisabled = !0, this.node.update(R), this.onChangeDisabled = !1, this._validateAndCatch(), this.searchBox && !this.searchBox.isEmpty() && this.searchBox.forceSearch(), T && T.start && T.end ? (N = this.node.findNodeByPath(T.start.path), R = this.node.findNodeByPath(T.end.path), N && R ? this.setSelection(T.start, T.end) : this.setSelection({}, {})) : this.setSelection({}, {}));
          }, J.get = function() {
            if (this.node) return this.node.getValue();
          }, J.getText = function() {
            return JSON.stringify(this.get());
          }, J.setText = function(R) {
            try {
              this.set((0, S.parse)(R));
            } catch {
              R = (0, S.tryJsonRepair)(R), this.set((0, S.parse)(R));
            }
          }, J.updateText = function(R) {
            try {
              this.update((0, S.parse)(R));
            } catch {
              R = (0, S.tryJsonRepair)(R), this.update((0, S.parse)(R));
            }
          }, J.setName = function(R) {
            this.options.name = R, this.node && this.node.updateField(this.options.name);
          }, J.getName = function() {
            return this.options.name;
          }, J.focus = function() {
            var R = this.scrollableContent.querySelector("[contenteditable=true]");
            R ? R.focus() : this.node.dom.expand ? this.node.dom.expand.focus() : this.node.dom.menu ? this.node.dom.menu.focus() : (R = this.frame.querySelector("button")) && R.focus();
          }, J.clear = function() {
            this.node && (this.node.hide(), delete this.node), this.treePath && this.treePath.reset();
          }, J._setRoot = function(R) {
            this.clear(), (this.node = R).setParent(null), R.setField(this.getName(), !1), delete R.index, this.tbody.appendChild(R.getDom());
          }, J.search = function(R) {
            var T;
            return this.node ? (this.content.removeChild(this.table), T = this.node.search(R), this.content.appendChild(this.table)) : T = [], T;
          }, J.expandAll = function() {
            this.node && (this.content.removeChild(this.table), this.node.expand(), this.content.appendChild(this.table));
          }, J.collapseAll = function() {
            this.node && (this.content.removeChild(this.table), this.node.collapse(), this.content.appendChild(this.table));
          }, J._onAction = function(R, T) {
            this.history && this.history.add(R, T), this._onChange();
          }, J._onChange = function() {
            if (!this.onChangeDisabled) {
              var R;
              if (this.selection = this.getDomSelection(), this._debouncedValidate(), this.treePath && ((R = this.node && this.selection ? this.node.findNodeByInternalPath(this.selection.path) : this.multiselection ? this.multiselection.nodes[0] : void 0) ? this._updateTreePath(R.getNodePath()) : this.treePath.reset()), this.options.onChange) try {
                this.options.onChange();
              } catch (T) {
                console.error("Error in onChange callback: ", T);
              }
              if (this.options.onChangeJSON) try {
                this.options.onChangeJSON(this.get());
              } catch (T) {
                console.error("Error in onChangeJSON callback: ", T);
              }
              if (this.options.onChangeText) try {
                this.options.onChangeText(this.getText());
              } catch (T) {
                console.error("Error in onChangeText callback: ", T);
              }
              if (this.options.onClassName && this.node.recursivelyUpdateCssClassesOnNodes(), this.options.onNodeName && this.node.childs) try {
                this.node.recursivelyUpdateNodeName();
              } catch (T) {
                console.error("Error in onNodeName callback: ", T);
              }
            }
          }, J.validate = function() {
            var R = this, T = this.node;
            if (T) {
              var N = T.getValue(), A = [];
              this.validateSchema && (this.validateSchema(N) || (A = this.validateSchema.errors.map(function(Z) {
                return (0, S.improveSchemaError)(Z);
              }).map(function(Z) {
                return { node: T.findNode(Z.dataPath), error: Z, type: "validation" };
              }).filter(function(Z) {
                return Z.node != null;
              })));
              try {
                this.validationSequence++;
                var x = this, M = this.validationSequence;
                return this._validateCustom(N).then(function(Z) {
                  return M === x.validationSequence && (Z = [].concat(A, Z || []), x._renderValidationErrors(Z), typeof R.options.onValidationError == "function" && (0, S.isValidationErrorChanged)(Z, R.lastSchemaErrors) && R.options.onValidationError.call(R, Z), R.lastSchemaErrors = Z), R.lastSchemaErrors;
                });
              } catch (Z) {
                return Promise.reject(Z);
              }
            }
          }, J._validateAndCatch = function() {
            this.validate().catch(function(R) {
              console.error("Error running validation:", R);
            });
          }, J._renderValidationErrors = function(R) {
            this.errorNodes && this.errorNodes.forEach(function(N) {
              N.setError(null);
            });
            var T = R.reduce(function(N, A) {
              return A.node.findParents().filter(function(x) {
                return !N.some(function(M) {
                  return M[0] === x;
                });
              }).map(function(x) {
                return [x, A.node];
              }).concat(N);
            }, []);
            this.errorNodes = T.map(function(N) {
              return { node: N[0], child: N[1], error: { message: N[0].type === "object" ? (0, C.Iu)("containsInvalidProperties") : (0, C.Iu)("containsInvalidItems") } };
            }).concat(R).map(function(N) {
              return N.node.setError(N.error, N.child), N.node;
            });
          }, J._validateCustom = function(R) {
            try {
              if (this.options.onValidate) {
                var T = this.node, N = this.options.onValidate(R);
                return ((0, S.isPromise)(N) ? N : Promise.resolve(N)).then(function(A) {
                  return Array.isArray(A) ? A.filter(function(x) {
                    var M = (0, S.isValidValidationError)(x);
                    return M || console.warn('Ignoring a custom validation error with invalid structure. Expected structure: {path: [...], message: "..."}. Actual error:', x), M;
                  }).map(function(x) {
                    var M;
                    try {
                      M = x && x.path ? T.findNodeByPath(x.path) : null;
                    } catch {
                    }
                    return M || console.warn("Ignoring validation error: node not found. Path:", x.path, "Error:", x), { node: M, error: x, type: "customValidation" };
                  }).filter(function(x) {
                    return x && x.node && x.error && x.error.message;
                  }) : null;
                });
              }
            } catch (A) {
              return Promise.reject(A);
            }
            return Promise.resolve(null);
          }, J.refresh = function() {
            this.node && this.node.updateDom({ recurse: !0 });
          }, J.startAutoScroll = function(R) {
            var T = this, N = this.scrollableContent, A = (0, S.getAbsoluteTop)(N), x = N.clientHeight, M = A + x;
            R < A + 24 && 0 < N.scrollTop ? this.autoScrollStep = (A + 24 - R) / 3 : M - 24 < R && x + N.scrollTop < N.scrollHeight ? this.autoScrollStep = (M - 24 - R) / 3 : this.autoScrollStep = void 0, this.autoScrollStep ? this.autoScrollTimer || (this.autoScrollTimer = setInterval(function() {
              T.autoScrollStep ? N.scrollTop -= T.autoScrollStep : T.stopAutoScroll();
            }, 50)) : this.stopAutoScroll();
          }, J.stopAutoScroll = function() {
            this.autoScrollTimer && (clearTimeout(this.autoScrollTimer), delete this.autoScrollTimer), this.autoScrollStep && delete this.autoScrollStep;
          }, J.setDomSelection = function(R) {
            var T, N, A;
            R && ("scrollTop" in R && this.scrollableContent && (this.scrollableContent.scrollTop = R.scrollTop), R.paths ? (T = this, A = R.paths.map(function(x) {
              return T.node.findNodeByInternalPath(x);
            }), this.select(A)) : (A = (N = R.path ? this.node.findNodeByInternalPath(R.path) : null) && R.domName ? N.dom[R.domName] : null, R.range && A ? (A = Object.assign({}, R.range, { container: A }), (0, S.setSelectionOffset)(A)) : N && N.focus()));
          }, J.getDomSelection = function() {
            var R = O.getNodeFromTarget(this.focusTarget), T = this.focusTarget, N = R ? Object.keys(R.dom).find(function(x) {
              return R.dom[x] === T;
            }) : null, A = (0, S.getSelectionOffset)();
            return (A = (A = A && A.container.nodeName !== "DIV" ? null : A) && A.container !== T ? null : A) && delete A.container, { path: R ? R.getInternalPath() : null, domName: N, range: A, paths: 0 < this.multiselection.length ? this.multiselection.nodes.map(function(x) {
              return x.getInternalPath();
            }) : null, scrollTop: this.scrollableContent ? this.scrollableContent.scrollTop : 0 };
          }, J.scrollTo = function(R, T) {
            var N, A, x, M, Z = this.scrollableContent;
            Z ? ((N = this).animateTimeout && (clearTimeout(N.animateTimeout), delete N.animateTimeout), N.animateCallback && (N.animateCallback(!1), delete N.animateCallback), A = Z.clientHeight, x = Z.scrollHeight - A, M = Math.min(Math.max(R - A / 4, 0), x), function G() {
              var $ = Z.scrollTop, $ = M - $;
              3 < Math.abs($) ? (Z.scrollTop += $ / 3, N.animateCallback = T, N.animateTimeout = setTimeout(G, 50)) : (T && T(!0), Z.scrollTop = M, delete N.animateTimeout, delete N.animateCallback);
            }()) : T && T(!1);
          }, J._createFrame = function() {
            function R(G) {
              M._onEvent && M._onEvent(G);
            }
            this.frame = document.createElement("div"), this.frame.className = "jsoneditor jsoneditor-mode-" + this.options.mode, this.container.appendChild(this.frame), this.contentOuter = document.createElement("div"), this.contentOuter.className = "jsoneditor-outer";
            var T, N, A, x, M = this, Z = { target: this.frame, onFocus: this.options.onFocus || null, onBlur: this.options.onBlur || null };
            this.frameFocusTracker = new n.R(Z), this.frame.onclick = function(G) {
              var $ = G.target;
              R(G), $.nodeName === "BUTTON" && G.preventDefault();
            }, this.frame.oninput = R, this.frame.onchange = R, this.frame.onkeydown = R, this.frame.onkeyup = R, this.frame.oncut = R, this.frame.onpaste = R, this.frame.onmousedown = R, this.frame.onmouseup = R, this.frame.onmouseover = R, this.frame.onmouseout = R, (0, S.addEventListener)(this.frame, "focus", R, !0), (0, S.addEventListener)(this.frame, "blur", R, !0), this.frame.onfocusin = R, this.frame.onfocusout = R, this.options.mainMenuBar && ((0, S.addClassName)(this.contentOuter, "has-main-menu-bar"), this.menu = document.createElement("div"), this.menu.className = "jsoneditor-menu", this.frame.appendChild(this.menu), (Z = document.createElement("button")).type = "button", Z.className = "jsoneditor-expand-all", Z.title = (0, C.Iu)("expandAll"), Z.onclick = function() {
              M.expandAll();
            }, this.menu.appendChild(Z), (Z = document.createElement("button")).type = "button", Z.title = (0, C.Iu)("collapseAll"), Z.className = "jsoneditor-collapse-all", Z.onclick = function() {
              M.collapseAll();
            }, this.menu.appendChild(Z), this.options.enableSort && ((T = document.createElement("button")).type = "button", T.className = "jsoneditor-sort", T.title = (0, C.Iu)("sortTitleShort"), T.onclick = function() {
              M.node.showSortModal();
            }, this.menu.appendChild(T)), this.options.enableTransform && ((T = document.createElement("button")).type = "button", T.title = (0, C.Iu)("transformTitleShort"), T.className = "jsoneditor-transform", T.onclick = function() {
              M.node.showTransformModal();
            }, this.menu.appendChild(T)), this.history && ((N = document.createElement("button")).type = "button", N.className = "jsoneditor-undo jsoneditor-separator", N.title = (0, C.Iu)("undo"), N.onclick = function() {
              M._onUndo();
            }, this.menu.appendChild(N), this.dom.undo = N, (A = document.createElement("button")).type = "button", A.className = "jsoneditor-redo", A.title = (0, C.Iu)("redo"), A.onclick = function() {
              M._onRedo();
            }, this.menu.appendChild(A), this.dom.redo = A, this.history.onChange = function() {
              N.disabled = !M.history.canUndo(), A.disabled = !M.history.canRedo();
            }, this.history.onChange()), this.options && this.options.modes && this.options.modes.length && ((x = this).modeSwitcher = new c.x(this.menu, this.options.modes, this.options.mode, function(G) {
              x.setMode(G), x.modeSwitcher.focus();
            })), this.options.search && (this.searchBox = new U(this, this.menu))), this.options.navigationBar && (this.navBar = document.createElement("div"), this.navBar.className = "jsoneditor-navigation-bar nav-bar-empty", this.frame.appendChild(this.navBar), this.treePath = new q(this.navBar, this.getPopupAnchor()), this.treePath.onSectionSelected(this._onTreePathSectionSelected.bind(this)), this.treePath.onContextMenuItemSelected(this._onTreePathMenuItemSelected.bind(this)));
          }, J._onUndo = function() {
            this.history && (this.history.undo(), this._onChange());
          }, J._onRedo = function() {
            this.history && (this.history.redo(), this._onChange());
          }, J._onEvent = function(R) {
            if (!O.targetIsColorPicker(R.target)) {
              var T, N = O.getNodeFromTarget(R.target);
              if (R.type === "keydown" && this._onKeyDown(R), N && R.type === "focus" && (this.focusTarget = R.target, this.options.autocomplete && this.options.autocomplete.trigger === "focus" && this._showAutoComplete(R.target)), R.type === "mousedown" && this._startDragDistance(R), R.type !== "mousemove" && R.type !== "mouseup" && R.type !== "click" || this._updateDragDistance(R), N && this.options && this.options.navigationBar && N && (R.type === "keydown" || R.type === "mousedown") && (T = this, setTimeout(function() {
                T._updateTreePath(N.getNodePath());
              })), N && N.selected) {
                if (R.type === "click") {
                  if (R.target === N.dom.menu) return void this.showContextMenu(R.target);
                  R.hasMoved || this.deselect();
                }
                R.type === "mousedown" && O.onDragStart(this.multiselection.nodes, R);
              } else R.type === "mousedown" && (0, S.hasParentNode)(R.target, this.content) && (this.deselect(), N && R.target === N.dom.drag ? O.onDragStart(N, R) : N && (R.target === N.dom.field || R.target === N.dom.value || R.target === N.dom.select) || this._onMultiSelectStart(R));
              N && N.onEvent(R);
            }
          }, J._updateTreePath = function(R) {
            function T(A) {
              return A.parent ? A.parent.type === "array" ? A.index : A.field : A.field || A.type;
            }
            var N;
            R && R.length ? ((0, S.removeClassName)(this.navBar, "nav-bar-empty"), N = [], R.forEach(function(A) {
              var x = { name: T(A), node: A, children: [] };
              A.childs && A.childs.length && A.childs.forEach(function(M) {
                x.children.push({ name: T(M), node: M });
              }), N.push(x);
            }), this.treePath.setPath(N)) : (0, S.addClassName)(this.navBar, "nav-bar-empty");
          }, J._onTreePathSectionSelected = function(R) {
            R && R.node && (R.node.expandTo(), R.node.focus());
          }, J._onTreePathMenuItemSelected = function(R, T) {
            R && R.children.length && (R = R.children.find(function(N) {
              return N.name === T;
            })) && R.node && (this._updateTreePath(R.node.getNodePath()), R.node.expandTo(), R.node.focus());
          }, J._startDragDistance = function(R) {
            this.dragDistanceEvent = { initialTarget: R.target, initialPageX: R.pageX, initialPageY: R.pageY, dragDistance: 0, hasMoved: !1 };
          }, J._updateDragDistance = function(R) {
            this.dragDistanceEvent || this._startDragDistance(R);
            var T = R.pageX - this.dragDistanceEvent.initialPageX, N = R.pageY - this.dragDistanceEvent.initialPageY;
            return this.dragDistanceEvent.dragDistance = Math.sqrt(T * T + N * N), this.dragDistanceEvent.hasMoved = this.dragDistanceEvent.hasMoved || 10 < this.dragDistanceEvent.dragDistance, R.dragDistance = this.dragDistanceEvent.dragDistance, R.hasMoved = this.dragDistanceEvent.hasMoved, R.dragDistance;
          }, J._onMultiSelectStart = function(R) {
            var T, N = O.getNodeFromTarget(R.target);
            this.options.mode === "tree" && this.options.onEditable === void 0 && (this.multiselection = { start: N || null, end: null, nodes: [] }, this._startDragDistance(R), (T = this).mousemove || (this.mousemove = (0, S.addEventListener)(R.view, "mousemove", function(A) {
              T._onMultiSelect(A);
            })), this.mouseup || (this.mouseup = (0, S.addEventListener)(R.view, "mouseup", function(A) {
              T._onMultiSelectEnd(A);
            })), R.preventDefault());
          }, J._onMultiSelect = function(R) {
            var T;
            R.preventDefault(), this._updateDragDistance(R), R.hasMoved && ((T = O.getNodeFromTarget(R.target)) && (this.multiselection.start == null && (this.multiselection.start = T), this.multiselection.end = T), this.deselect(), R = this.multiselection.start, T = this.multiselection.end || this.multiselection.start, R && T && (this.multiselection.nodes = this._findTopLevelNodes(R, T), this.multiselection.nodes && this.multiselection.nodes.length && (T = this.multiselection.nodes[0], this.multiselection.start === T || this.multiselection.start.isDescendantOf(T) ? this.multiselection.direction = "down" : this.multiselection.direction = "up"), this.select(this.multiselection.nodes)));
          }, J._onMultiSelectEnd = function(R) {
            var T = this.multiselection.nodes[0];
            T && T.dom.menu && T.dom.menu.focus(), this.multiselection.start = null, this.multiselection.end = null, this.mousemove && ((0, S.removeEventListener)(R.view, "mousemove", this.mousemove), delete this.mousemove), this.mouseup && ((0, S.removeEventListener)(R.view, "mouseup", this.mouseup), delete this.mouseup);
          }, J.deselect = function(R) {
            var T = !!this.multiselection.nodes.length;
            this.multiselection.nodes.forEach(function(N) {
              N.setSelected(!1);
            }), this.multiselection.nodes = [], R && (this.multiselection.start = null, this.multiselection.end = null), T && this._selectionChangedHandler && this._selectionChangedHandler();
          }, J.select = function(R) {
            if (!Array.isArray(R)) return this.select([R]);
            var T;
            R && (this.deselect(), this.multiselection.nodes = R.slice(0), T = R[0], R.forEach(function(N) {
              N.expandPathToNode(), N.setSelected(!0, N === T);
            }), this._selectionChangedHandler && (R = this.getSelection(), this._selectionChangedHandler(R.start, R.end)));
          }, J._findTopLevelNodes = function(G, T) {
            for (var N = G.getNodePath(), A = T.getNodePath(), x = 0; x < N.length && N[x] === A[x]; ) x++;
            var M = N[x - 1], Z = N[x], G = A[x];
            return Z && G || (M.parent ? M = (G = Z = M).parent : (Z = M.childs[0], G = M.childs[M.childs.length - 1])), M && Z && G ? (T = M.childs.indexOf(Z), Z = M.childs.indexOf(G), G = Math.min(T, Z), Z = Math.max(T, Z), M.childs.slice(G, Z + 1)) : [];
          }, J._showAutoComplete = function(R) {
            var T, N = O.getNodeFromTarget(R), A = "";
            0 <= R.className.indexOf("jsoneditor-value") && (A = "value"), (A = 0 <= R.className.indexOf("jsoneditor-field") ? "field" : A) !== "" && (T = this, setTimeout(function() {
              var x;
              N && (T.options.autocomplete.trigger === "focus" || 0 < R.innerText.length) && (x = T.options.autocomplete.getOptions(R.innerText, N.getPath(), A, N.editor)) !== null ? typeof x.then == "function" ? x.then(function(M) {
                M === null ? T.autocomplete.hideDropDown() : M.options ? T.autocomplete.show(R, M.startFrom, M.options) : T.autocomplete.show(R, 0, M);
              }).catch(function(M) {
                console.error(M);
              }) : x.options ? T.autocomplete.show(R, x.startFrom, x.options) : T.autocomplete.show(R, 0, x) : T.autocomplete.hideDropDown();
            }, 50));
          }, J._onKeyDown = function(R) {
            var T, N = R.which || R.keyCode, A = R.altKey, x = R.ctrlKey, M = R.metaKey, Z = R.shiftKey, G = !1, $ = this.focusTarget;
            N === 9 && (T = this, setTimeout(function() {
              T.focusTarget !== $ && (0, S.selectContentEditable)(T.focusTarget);
            }, 0)), this.searchBox && (x && N === 70 ? (this.searchBox.dom.search.focus(), this.searchBox.dom.search.select(), G = !0) : (N === 114 || x && N === 71) && (Z ? this.searchBox.previous(!0) : this.searchBox.next(!0), G = !0)), this.history && (x && !Z && N === 90 ? (this._onUndo(), G = !0) : x && Z && N === 90 && (this._onRedo(), G = !0)), this.options.autocomplete && !G && (x || A || M || R.key.length !== 1 && N !== 8 && N !== 46 || (G = !1, this._showAutoComplete(R.target))), G && (R.preventDefault(), R.stopPropagation());
          }, J._createTable = function() {
            var R;
            this.options.navigationBar && (0, S.addClassName)(this.contentOuter, "has-nav-bar"), this.scrollableContent = document.createElement("div"), this.scrollableContent.className = "jsoneditor-tree", this.contentOuter.appendChild(this.scrollableContent), this.content = document.createElement("div"), this.content.className = "jsoneditor-tree-inner", this.scrollableContent.appendChild(this.content), this.table = document.createElement("table"), this.table.className = "jsoneditor-tree", this.content.appendChild(this.table), this.colgroupContent = document.createElement("colgroup"), this.options.mode === "tree" && ((R = document.createElement("col")).width = "24px", this.colgroupContent.appendChild(R)), (R = document.createElement("col")).width = "24px", this.colgroupContent.appendChild(R), R = document.createElement("col"), this.colgroupContent.appendChild(R), this.table.appendChild(this.colgroupContent), this.tbody = document.createElement("tbody"), this.table.appendChild(this.tbody), this.frame.appendChild(this.contentOuter);
          }, J.showContextMenu = function(R, T) {
            var N, A = [], x = this.multiselection.nodes.slice();
            A.push({ text: (0, C.Iu)("duplicateText"), title: (0, C.Iu)("duplicateTitle"), className: "jsoneditor-duplicate", click: function() {
              O.onDuplicate(x);
            } }), A.push({ text: (0, C.Iu)("remove"), title: (0, C.Iu)("removeTitle"), className: "jsoneditor-remove", click: function() {
              O.onRemove(x);
            } }), this.options.onCreateMenu && (N = x.map(function(M) {
              return M.getPath();
            }), A = this.options.onCreateMenu(A, { type: "multiple", path: N[0], paths: N })), new f.x(A, { close: T }).show(R, this.getPopupAnchor());
          }, J.getPopupAnchor = function() {
            return this.options.popupAnchor || this.frame;
          }, J.getSelection = function() {
            var R, T, N = { start: null, end: null };
            return this.multiselection.nodes && this.multiselection.nodes.length && this.multiselection.nodes.length && (R = this.multiselection.nodes[0], T = this.multiselection.nodes[this.multiselection.nodes.length - 1], this.multiselection.direction === "down" ? (N.start = R.serialize(), N.end = T.serialize()) : (N.start = T.serialize(), N.end = R.serialize())), N;
          }, J.onSelectionChange = function(R) {
            typeof R == "function" && (this._selectionChangedHandler = (0, S.debounce)(R, this.DEBOUNCE_INTERVAL));
          }, J.setSelection = function(R, T) {
            R && R.dom && R.range && (console.warn("setSelection/getSelection usage for text selection is deprecated and should not be used, see documentation for supported selection options"), this.setDomSelection(R)), T = this._getNodeInstancesByRange(R, T), T.forEach(function(N) {
              N.expandTo();
            }), this.select(T);
          }, J._getNodeInstancesByRange = function(R, T) {
            var N, A;
            R && R.path && (N = this.node.findNodeByPath(R.path), T && T.path && (A = this.node.findNodeByPath(T.path)));
            var x = [];
            if (N instanceof O) if (A instanceof O && A !== N) if (N.parent === A.parent) {
              T = N.getIndex() < A.getIndex() ? (R = N, A) : (R = A, N);
              var M = R;
              for (x.push(M); M = M.nextSibling(), x.push(M), M && M !== T; ) ;
            } else x = this._findTopLevelNodes(N, A);
            else x.push(N);
            return x;
          }, J.getNodesByRange = function(R, N) {
            var N = this._getNodeInstancesByRange(R, N), A = [];
            return N.forEach(function(x) {
              A.push(x.serialize());
            }), A;
          };
          var de = [{ mode: "tree", mixin: J, data: "json" }, { mode: "view", mixin: J, data: "json" }, { mode: "form", mixin: J, data: "json" }];
        }, 2744: function(F, u, D) {
          u.tryRequireAjv = function() {
            try {
              return D(8903);
            } catch {
            }
          };
        }, 9125: function(F, u, D) {
          u.O = function() {
            try {
              D(4864);
            } catch (j) {
              console.error(j);
            }
          };
        }, 9791: function(F, ye, D) {
          function j(P) {
            return (j = typeof Symbol == "function" && typeof Symbol.iterator == "symbol" ? function(Q) {
              return typeof Q;
            } : function(Q) {
              return Q && typeof Symbol == "function" && Q.constructor === Symbol && Q !== Symbol.prototype ? "symbol" : typeof Q;
            })(P);
          }
          function m(P) {
            try {
              return JSON.parse(P);
            } catch (Q) {
              throw w(P), Q;
            }
          }
          function E(P) {
            try {
              return Ne()(P);
            } catch {
              return P;
            }
          }
          function b(P) {
            return P.replace(/[\u007F-\uFFFF]/g, function(Q) {
              return "\\u" + ("0000" + Q.charCodeAt(0).toString(16)).slice(-4);
            });
          }
          function w(P) {
            (Ze !== void 0 ? Ze : JSON).parse(P);
          }
          function d(P, Q) {
            for (var oe in Q) we(Q, oe) && (P[oe] = Q[oe]);
            return P;
          }
          function a(P) {
            for (var Q in P) we(P, Q) && delete P[Q];
            return P;
          }
          function o(P) {
            return P === null ? "null" : P === void 0 ? "undefined" : P instanceof Number || typeof P == "number" ? "number" : P instanceof String || typeof P == "string" ? "string" : P instanceof Boolean || typeof P == "boolean" ? "boolean" : P instanceof RegExp ? "regexp" : t(P) ? "array" : "object";
          }
          function e(P) {
            return (typeof P == "string" || P instanceof String) && We.test(P);
          }
          function t(P) {
            return Object.prototype.toString.call(P) === "[object Array]";
          }
          function i(P) {
            return P.ownerDocument.defaultView;
          }
          function s(P) {
            return P.getBoundingClientRect().left + window.pageXOffset || document.scrollLeft || 0;
          }
          function h(P) {
            return P.getBoundingClientRect().top + window.pageYOffset || document.scrollTop || 0;
          }
          function r(P, Q) {
            var oe = P.className.split(" ");
            oe.indexOf(Q) === -1 && (oe.push(Q), P.className = oe.join(" "));
          }
          function p(P) {
            P.className = "";
          }
          function l(P, he) {
            var oe = P.className.split(" "), he = oe.indexOf(he);
            he !== -1 && (oe.splice(he, 1), P.className = oe.join(" "));
          }
          function I(P) {
            for (var Q = P.childNodes, oe = 0, he = Q.length; oe < he; oe++) {
              var Ae = Q[oe];
              Ae.style && Ae.removeAttribute("style");
              var B = Ae.attributes;
              if (B) for (var V = B.length - 1; 0 <= V; V--) {
                var K = B[V];
                K.specified === !0 && Ae.removeAttribute(K.name);
              }
              I(Ae);
            }
          }
          function f(P) {
            var Q;
            document.createRange && ((Q = document.createRange()).selectNodeContents(P), Q.collapse(!1), (P = window.getSelection()).removeAllRanges(), P.addRange(Q));
          }
          function n(P) {
            var Q;
            P && P.nodeName === "DIV" && window.getSelection && document.createRange && ((Q = document.createRange()).selectNodeContents(P), (P = window.getSelection()).removeAllRanges(), P.addRange(Q));
          }
          function g() {
            if (window.getSelection) {
              var P = window.getSelection();
              if (P.getRangeAt && P.rangeCount) return P.getRangeAt(0);
            }
            return null;
          }
          function C(P) {
            var Q;
            P && window.getSelection && ((Q = window.getSelection()).removeAllRanges(), Q.addRange(P));
          }
          function y() {
            var P = g();
            return P && "startOffset" in P && "endOffset" in P && P.startContainer && P.startContainer === P.endContainer ? { startOffset: P.startOffset, endOffset: P.endOffset, container: P.startContainer.parentNode } : null;
          }
          function c(P) {
            var Q;
            document.createRange && window.getSelection && window.getSelection() && (Q = document.createRange(), P.container.firstChild || P.container.appendChild(document.createTextNode("")), Q.setStart(P.container.firstChild, P.startOffset), Q.setEnd(P.container.firstChild, P.endOffset), C(Q));
          }
          function v(P, Q) {
            if (Q === void 0 && (Q = { _text: "", flush: function() {
              var re = this._text;
              return this._text = "", re;
            }, set: function(re) {
              this._text = re;
            } }), P.nodeValue) {
              var oe = P.nodeValue.replace(/\s*\n\s*/g, "");
              return oe !== "" ? Q.flush() + oe : "";
            }
            if (P.hasChildNodes()) {
              for (var he = P.childNodes, Ae = "", B = 0, V = he.length; B < V; B++) {
                var K, ne = he[B];
                ne.nodeName === "DIV" || ne.nodeName === "P" ? ((K = (K = he[B - 1]) ? K.nodeName : void 0) && K !== "DIV" && K !== "P" && K !== "BR" && (Ae !== "" && (Ae += `
`), Q.flush()), Ae += v(ne, Q), Q.set(`
`)) : ne.nodeName === "BR" ? (Ae += Q.flush(), Q.set(`
`)) : Ae += v(ne, Q);
              }
              return Ae;
            }
            return "";
          }
          function k(P, Q) {
            for (var oe = P ? P.parentNode : void 0; oe; ) {
              if (oe === Q) return !0;
              oe = oe.parentNode;
            }
            return !1;
          }
          function S() {
            var P;
            return Le === -1 && (P = -1, typeof navigator < "u" && navigator.appName === "Microsoft Internet Explorer" && /MSIE ([0-9]+[.0-9]+)/.exec(navigator.userAgent) != null && (P = parseFloat(RegExp.$1)), Le = P), Le;
          }
          function L() {
            return typeof navigator < "u" && navigator.userAgent.indexOf("Firefox") !== -1;
          }
          function W(P, Q, oe, he) {
            return P.addEventListener ? (he === void 0 && (he = !1), Q === "mousewheel" && L() && (Q = "DOMMouseScroll"), P.addEventListener(Q, oe, he), oe) : P.attachEvent ? (he = function() {
              return oe.call(P, window.event);
            }, P.attachEvent("on" + Q, he), he) : void 0;
          }
          function _(P, Q, oe, he) {
            P.removeEventListener ? (he === void 0 && (he = !1), Q === "mousewheel" && L() && (Q = "DOMMouseScroll"), P.removeEventListener(Q, oe, he)) : P.detachEvent && P.detachEvent("on" + Q, oe);
          }
          function O(P, Q) {
            for (var oe = P.parentNode; oe; ) {
              if (oe === Q) return !0;
              oe = oe.parentNode;
            }
            return !1;
          }
          function z(P) {
            function Q(B) {
              for (var V = ""; P[he] !== void 0 && P[he] !== B; ) V += P[he], he++;
              if (P[he] !== B) throw new Error("Invalid JSON path: unexpected end, character " + B + " expected");
              return V;
            }
            for (var oe = [], he = 0; P[he] !== void 0; ) if (P[he] === ".") he++, oe.push(function() {
              for (var B = ""; P[he] !== void 0 && /[\w$]/.test(P[he]); ) B += P[he], he++;
              if (B === "") throw new Error("Invalid JSON path: property name expected at index " + he);
              return B;
            }());
            else {
              if (P[he] !== "[") throw new Error('Invalid JSON path: unexpected character "' + P[he] + '" at index ' + he);
              if (P[++he] === "'" || P[he] === '"') {
                var Ae = P[he];
                if (he++, oe.push(Q(Ae)), P[he] !== Ae) throw new Error("Invalid JSON path: closing quote ' expected at index " + he);
                he++;
              } else {
                if (Ae = Q("]").trim(), Ae.length === 0) throw new Error("Invalid JSON path: array value expected at index " + he);
                Ae = Ae === "*" ? Ae : JSON.parse(Ae), oe.push(Ae);
              }
              if (P[he] !== "]") throw new Error("Invalid JSON path: closing bracket ] expected at index " + he);
              he++;
            }
            return oe;
          }
          function H(P) {
            return P.map(function(Q) {
              return typeof Q == "number" ? "[" + Q + "]" : typeof Q == "string" && Q.match(/^[A-Za-z0-9_$]+$/) ? "." + Q : '["' + Q + '"]';
            }).join("");
          }
          function Y(P) {
            var Q, oe;
            return P.keyword !== "enum" || !Array.isArray(P.schema) || (oe = P.schema) && (5 < (oe = oe.map(function(he) {
              return JSON.stringify(he);
            })).length && (Q = ["(" + (oe.length - 5) + " more...)"], (oe = oe.slice(0, 5)).push(Q)), P.message = "should be equal to one of: " + oe.join(", ")), P.keyword === "additionalProperties" && (P.message = "should NOT have additional property: " + P.params.additionalProperty), P;
          }
          function ie(P) {
            return P && typeof P.then == "function" && typeof P.catch == "function";
          }
          function U(P) {
            return j(P) === "object" && Array.isArray(P.path) && typeof P.message == "string";
          }
          function q(P, Q, oe) {
            return oe = oe !== void 0 ? oe : 0, Q.left - oe >= P.left && Q.right + oe <= P.right && Q.top - oe >= P.top && Q.bottom + oe <= P.bottom;
          }
          function ee(P, Q, oe) {
            var he;
            return function() {
              var Ae = this, B = arguments, V = oe && !he;
              clearTimeout(he), he = setTimeout(function() {
                he = null, oe || P.apply(Ae, B);
              }, Q), V && P.apply(Ae, B);
            };
          }
          function J(P, Q) {
            for (var oe = Q.length, he = 0, Ae = P.length, B = Q.length; Q.charAt(he) === P.charAt(he) && he < oe; ) he++;
            for (; Q.charAt(B - 1) === P.charAt(Ae - 1) && he < B && 0 < Ae; ) B--, Ae--;
            return { start: he, end: B };
          }
          function de(P) {
            function Q(ne) {
              return ne = P.value.substring(0, ne), { row: (ne.match(/\n/g) || []).length + 1, column: ne.length - ne.lastIndexOf(`
`) };
            }
            var oe, he, Ae, B, V = 0, K = 0;
            return typeof P.selectionStart == "number" && typeof P.selectionEnd == "number" ? (V = P.selectionStart, K = P.selectionEnd) : (B = document.selection.createRange()) && B.parentElement() === P && (Ae = P.value.length, oe = P.value.replace(/\r\n/g, `
`), (he = P.createTextRange()).moveToBookmark(B.getBookmark()), (B = P.createTextRange()).collapse(!1), -1 < he.compareEndPoints("StartToEnd", B) ? V = K = Ae : (V = -he.moveStart("character", -Ae), V += oe.slice(0, V).split(`
`).length - 1, -1 < he.compareEndPoints("EndToEnd", B) ? K = Ae : (K = -he.moveEnd("character", -Ae), K += oe.slice(0, K).split(`
`).length - 1))), { startIndex: V, endIndex: K, start: Q(V), end: Q(K) };
          }
          function R(P, Q, oe) {
            return P = P.value || "", 0 < Q && 0 < oe ? (P = P.split(`
`, Q), Q = Math.min(P.length, Q), oe = Math.min(P[Q - 1].length, oe - 1), oe = Q === 1 ? oe : oe + 1, P.slice(0, Q - 1).join(`
`).length + oe) : -1;
          }
          function T(P, Q) {
            var oe, he = [];
            if (!Q || !Q.length) return he;
            try {
              oe = me.parse(P);
            } catch {
              return he;
            }
            return Q.forEach(function(Ae) {
              var B = N(z(Ae)), B = oe.pointers[B];
              B && he.push({ path: Ae, line: B.key ? B.key.line : B.value ? B.value.line : 0, column: B.key ? B.key.column : B.value ? B.value.column : 0 });
            }), he;
          }
          function N(P) {
            return P.map(function(Q) {
              return "/" + String(Q).replace(/~/g, "~0").replace(/\//g, "~1");
            }).join("");
          }
          function A(P) {
            var Q = document.createElement("div");
            return Q.style.color = P, Q.style.color.split(/\s+/).join("").toLowerCase() || null;
          }
          function x(P) {
            return !!A(P);
          }
          function M(P, Q) {
            if (!P) return "";
            var oe = "";
            return P.title && (oe += P.title), P.description && (0 < oe.length && (oe += `
`), oe += P.description), P.default && (0 < oe.length && (oe += `

`), oe += (0, be.Iu)("default", void 0, Q) + `
`, oe += JSON.stringify(P.default, null, 2)), Array.isArray(P.examples) && 0 < P.examples.length && (0 < oe.length && (oe += `

`), oe += (0, be.Iu)("examples", void 0, Q) + `
`, P.examples.forEach(function(he, Ae) {
              oe += JSON.stringify(he, null, 2), Ae !== P.examples.length - 1 && (oe += `
`);
            })), oe;
          }
          function Z(P, Q) {
            for (var oe = P, he = 0; he < Q.length && oe != null; he++) oe = oe[Q[he]];
            return oe;
          }
          function G(P, Q) {
            for (var oe = P.replace(/ \(copy( \d+)?\)$/, ""), he = oe, Ae = 1; Q.indexOf(he) !== -1; ) he = oe + " (copy" + (1 < Ae ? " " + Ae : "") + ")", Ae++;
            return he;
          }
          function $(P, Q) {
            var oe = {};
            if (Array.isArray(P)) for (var he = Math.min(P.length, Se), Ae = 0; Ae < he; Ae++) (function B(V, K, ne, re) {
              (Array.isArray(V) || ge(V)) && !re || (K[ne || ""] = !0), ge(V) && Object.keys(V).forEach(function(Ce) {
                B(V[Ce], K, ne + "." + Ce, re);
              });
            })(P[Ae], oe, "", Q);
            else oe[""] = !0;
            return Object.keys(oe).sort();
          }
          function X(B, Q, oe) {
            var he = Q && Q !== "." ? z(Q) : [], Ae = oe === "desc" ? -1 : 1, B = B.slice();
            return B.sort(function(V, K) {
              return V = Z(V, he), K = Z(K, he), Ae * (K < V ? 1 : V < K ? -1 : 0);
            }), B;
          }
          function te(P, he) {
            var oe = he === "desc" ? -1 : 1, he = Object.keys(P).sort(function(B, V) {
              return oe * ve()(B, V);
            }), Ae = {};
            return he.forEach(function(B) {
              Ae[B] = P[B];
            }), Ae;
          }
          function se(P) {
            if (P === "") return "";
            var oe = P.toLowerCase();
            if (oe === "null") return null;
            if (oe === "true") return !0;
            if (oe === "false") return !1;
            var Q = Number(P), oe = parseFloat(P);
            return isNaN(Q) || isNaN(oe) ? P : Q;
          }
          function le(P, Q) {
            return typeof Q == "number" && ke < Q && isFinite(Q) && Math.floor(Q) === Q && !isNaN(new Date(Q).valueOf());
          }
          function ce(P) {
            return P < 900 ? P.toFixed() + " B" : (P /= 1e3) < 900 ? P.toFixed(1) + " KB" : (P /= 1e3) < 900 ? P.toFixed(1) + " MB" : (P /= 1e3, P < 900 ? P.toFixed(1) + " GB" : (P / 1e3).toFixed(1) + " TB");
          }
          function ue(P, Q) {
            return P.length <= Q ? P : P.slice(0, Q) + "...";
          }
          function ge(P) {
            return j(P) === "object" && P !== null && !Array.isArray(P);
          }
          function ae(P, Q) {
            return P.indexOf(Q) !== -1;
          }
          function fe(P, Q) {
            if (!Q && !P) return !1;
            if (Q && !P || !Q && P || Q.length !== P.length) return !0;
            for (var oe = 0; oe < P.length; ++oe) {
              var he = function(Ae) {
                if (!(P[Ae].type === "error" ? Q.find(function(B) {
                  return B.line === P[Ae].line;
                }) : Q.find(function(B) {
                  return B.dataPath === P[Ae].dataPath && B.schemaPath === P[Ae].schemaPath;
                }))) return { v: !0 };
              }(oe);
              if (j(he) === "object") return he.v;
            }
            return !1;
          }
          function we(P, Q) {
            return Object.prototype.hasOwnProperty.call(P, Q);
          }
          D.r(ye), D.d(ye, { parse: function() {
            return m;
          }, tryJsonRepair: function() {
            return E;
          }, escapeUnicodeChars: function() {
            return b;
          }, validate: function() {
            return w;
          }, extend: function() {
            return d;
          }, clear: function() {
            return a;
          }, getType: function() {
            return o;
          }, isUrl: function() {
            return e;
          }, isArray: function() {
            return t;
          }, getWindow: function() {
            return i;
          }, getAbsoluteLeft: function() {
            return s;
          }, getAbsoluteTop: function() {
            return h;
          }, addClassName: function() {
            return r;
          }, removeAllClassNames: function() {
            return p;
          }, removeClassName: function() {
            return l;
          }, stripFormatting: function() {
            return I;
          }, setEndOfContentEditable: function() {
            return f;
          }, selectContentEditable: function() {
            return n;
          }, getSelection: function() {
            return g;
          }, setSelection: function() {
            return C;
          }, getSelectionOffset: function() {
            return y;
          }, setSelectionOffset: function() {
            return c;
          }, getInnerText: function() {
            return v;
          }, hasParentNode: function() {
            return k;
          }, getInternetExplorerVersion: function() {
            return S;
          }, isFirefox: function() {
            return L;
          }, addEventListener: function() {
            return W;
          }, removeEventListener: function() {
            return _;
          }, isChildOf: function() {
            return O;
          }, parsePath: function() {
            return z;
          }, stringifyPath: function() {
            return H;
          }, improveSchemaError: function() {
            return Y;
          }, isPromise: function() {
            return ie;
          }, isValidValidationError: function() {
            return U;
          }, insideRect: function() {
            return q;
          }, debounce: function() {
            return ee;
          }, textDiff: function() {
            return J;
          }, getInputSelection: function() {
            return de;
          }, getIndexForPosition: function() {
            return R;
          }, getPositionForPath: function() {
            return T;
          }, compileJSONPointer: function() {
            return N;
          }, getColorCSS: function() {
            return A;
          }, isValidColor: function() {
            return x;
          }, makeFieldTooltip: function() {
            return M;
          }, get: function() {
            return Z;
          }, findUniqueName: function() {
            return G;
          }, getChildPaths: function() {
            return $;
          }, sort: function() {
            return X;
          }, sortObjectKeys: function() {
            return te;
          }, parseString: function() {
            return se;
          }, isTimestamp: function() {
            return le;
          }, formatSize: function() {
            return ce;
          }, limitCharacters: function() {
            return ue;
          }, isObject: function() {
            return ge;
          }, contains: function() {
            return ae;
          }, isValidationErrorChanged: function() {
            return fe;
          } });
          var ye = D(4987), ye = D(233), ve = D.n(ye), ye = D(8909), Ne = D.n(ye), Ze = D(6589), me = D(7026), be = D(7907), Se = 1e4, ke = 9466848e5, We = /^https?:\/\/\S+$/, Le = -1;
        }, 8037: function(F, u, D) {
          var j;
          if (window.Picker) j = window.Picker;
          else try {
            j = D(4049);
          } catch {
          }
          F.exports = j;
        }, 6225: function(F, u, D) {
          F = D.nmd(F), function() {
            function j(e, t, i) {
              if (typeof t == "string") {
                var s = o(e, t);
                if (s != null) return i && i(), s;
              } else if (Object.prototype.toString.call(t) === "[object Array]") {
                for (var h = [], r = 0, p = t.length; r < p; ++r) {
                  var l = o(e, t[r]);
                  if (l == null && d.original) return;
                  h.push(l);
                }
                return i && i.apply(null, h) || !0;
              }
            }
            var m = /* @__PURE__ */ function() {
              return this;
            }();
            m || typeof window > "u" || (m = window);
            var E = function(e, t, i) {
              typeof e == "string" ? (arguments.length == 2 && (i = t), E.modules[e] || (E.payloads[e] = i, E.modules[e] = 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 b, w, d = function(e, t) {
              var i = j("", e, t);
              return i == null && d.original ? d.original.apply(this, arguments) : i;
            }, a = function(e, t) {
              if (t.indexOf("!") !== -1) {
                var i = t.split("!");
                return a(e, i[0]) + "!" + a(e, i[1]);
              }
              if (t.charAt(0) == ".") for (t = e.split("/").slice(0, -1).join("/") + "/" + t; t.indexOf(".") !== -1 && s != t; ) {
                var s = t;
                t = t.replace(/\/\.\//, "/").replace(/[^\/]+\/\.\.\//, "");
              }
              return t;
            }, o = function(e, t) {
              t = a(e, t);
              var i, s = E.modules[t];
              return s || (typeof (s = E.payloads[t]) == "function" && (e = { id: t, uri: "", exports: i = {}, packaged: !0 }, i = s(function(h, r) {
                return j(t, h, r);
              }, i, e) || e.exports, E.modules[t] = i, delete E.payloads[t]), s = E.modules[t] = i || s), s;
            };
            w = m, (b = "ace") && (m[b] || (m[b] = {}), w = m[b]), w.define && w.define.packaged || (E.original = w.define, w.define = E, w.define.packaged = !0), w.require && w.require.packaged || (d.original = w.require, w.require = d, w.require.packaged = !0);
          }(), ace.define("ace/lib/fixoldbrowsers", ["require", "exports", "module"], function(j, m, E) {
            typeof Element > "u" || Element.prototype.remove || Object.defineProperty(Element.prototype, "remove", { enumerable: !1, writable: !0, configurable: !0, value: function() {
              this.parentNode && this.parentNode.removeChild(this);
            } });
          }), ace.define("ace/lib/useragent", ["require", "exports", "module"], function(j, m, E) {
            m.OS = { LINUX: "LINUX", MAC: "MAC", WINDOWS: "WINDOWS" }, m.getOS = function() {
              return m.isMac ? m.OS.MAC : m.isLinux ? m.OS.LINUX : m.OS.WINDOWS;
            };
            var d = typeof navigator == "object" ? navigator : {}, b = (/mac|win|linux/i.exec(d.platform) || ["other"])[0].toLowerCase(), w = d.userAgent || "", d = d.appName || "";
            m.isWin = b == "win", m.isMac = b == "mac", m.isLinux = b == "linux", m.isIE = d == "Microsoft Internet Explorer" || 0 <= d.indexOf("MSAppHost") ? parseFloat((w.match(/(?:MSIE |Trident\/[0-9]+[\.0-9]+;.*rv:)([0-9]+[\.0-9]+)/) || [])[1]) : parseFloat((w.match(/(?:Trident\/[0-9]+[\.0-9]+;.*rv:)([0-9]+[\.0-9]+)/) || [])[1]), m.isOldIE = m.isIE && m.isIE < 9, m.isGecko = m.isMozilla = w.match(/ Gecko\/\d+/), m.isOpera = typeof opera == "object" && Object.prototype.toString.call(window.opera) == "[object Opera]", m.isWebKit = parseFloat(w.split("WebKit/")[1]) || void 0, m.isChrome = parseFloat(w.split(" Chrome/")[1]) || void 0, m.isEdge = parseFloat(w.split(" Edge/")[1]) || void 0, m.isAIR = 0 <= w.indexOf("AdobeAIR"), m.isAndroid = 0 <= w.indexOf("Android"), m.isChromeOS = 0 <= w.indexOf(" CrOS "), m.isIOS = /iPad|iPhone|iPod/.test(w) && !window.MSStream, m.isIOS && (m.isMac = !0), m.isMobile = m.isIOS || m.isAndroid;
          }), ace.define("ace/lib/dom", ["require", "exports", "module", "ace/lib/useragent"], function(j, m, E) {
            var b = j("./useragent");
            m.buildDom = function w(d, a, o) {
              if (typeof d == "string" && d) {
                var e = document.createTextNode(d);
                return a && a.appendChild(e), e;
              }
              if (!Array.isArray(d)) return d && d.appendChild && a && a.appendChild(d), d;
              if (typeof d[0] != "string" || !d[0]) {
                for (var t = [], i = 0; i < d.length; i++) {
                  var s = w(d[i], a, o);
                  s && t.push(s);
                }
                return t;
              }
              for (var h = document.createElement(d[0]), r = d[1], e = 1, i = e = r && typeof r == "object" && !Array.isArray(r) ? 2 : e; i < d.length; i++) w(d[i], h, o);
              return e == 2 && Object.keys(r).forEach(function(p) {
                var l = r[p];
                p === "class" ? h.className = Array.isArray(l) ? l.join(" ") : l : typeof l == "function" || p == "value" || p[0] == "$" ? h[p] = l : p === "ref" ? o && (o[l] = h) : l != null && h.setAttribute(p, l);
              }), a && a.appendChild(h), h;
            }, m.getDocumentHead = function(w) {
              return (w = w || document).head || w.getElementsByTagName("head")[0] || w.documentElement;
            }, m.createElement = function(w, d) {
              return document.createElementNS ? document.createElementNS(d || "http://www.w3.org/1999/xhtml", w) : document.createElement(w);
            }, m.removeChildren = function(w) {
              w.innerHTML = "";
            }, m.createTextNode = function(w, d) {
              return (d ? d.ownerDocument : document).createTextNode(w);
            }, m.createFragment = function(w) {
              return (w ? w.ownerDocument : document).createDocumentFragment();
            }, m.hasCssClass = function(w, d) {
              return (w.className + "").split(/\s+/g).indexOf(d) !== -1;
            }, m.addCssClass = function(w, d) {
              m.hasCssClass(w, d) || (w.className += " " + d);
            }, m.removeCssClass = function(w, d) {
              for (var a = w.className.split(/\s+/g); ; ) {
                var o = a.indexOf(d);
                if (o == -1) break;
                a.splice(o, 1);
              }
              w.className = a.join(" ");
            }, m.toggleCssClass = function(w, d) {
              for (var a = w.className.split(/\s+/g), o = !0; ; ) {
                var e = a.indexOf(d);
                if (e == -1) break;
                o = !1, a.splice(e, 1);
              }
              return o && a.push(d), w.className = a.join(" "), o;
            }, m.setCssClass = function(w, d, a) {
              a ? m.addCssClass(w, d) : m.removeCssClass(w, d);
            }, m.hasCssString = function(w, d) {
              var a, o = 0;
              if (a = (d = d || document).querySelectorAll("style")) {
                for (; o < a.length; ) if (a[o++].id === w) return !0;
              }
            }, m.importCssString = function(w, d, a) {
              var o = a, e = (o = a && a.getRootNode && (o = a.getRootNode()) && o != a ? o : document).ownerDocument || o;
              if (d && m.hasCssString(d, o)) return null;
              d && (w += `
/*# sourceURL=ace/css/` + d + " */"), a = m.createElement("style"), a.appendChild(e.createTextNode(w)), d && (a.id = d), (o = o == e ? m.getDocumentHead(e) : o).insertBefore(a, o.firstChild);
            }, m.importCssStylsheet = function(w, d) {
              m.buildDom(["link", { rel: "stylesheet", href: w }], m.getDocumentHead(d));
            }, m.scrollbarWidth = function(w) {
              var d = m.createElement("ace_inner");
              d.style.width = "100%", d.style.minWidth = "0px", d.style.height = "200px", d.style.display = "block";
              var a = m.createElement("ace_outer"), o = a.style;
              o.position = "absolute", o.left = "-10000px", o.overflow = "hidden", o.width = "200px", o.minWidth = "0px", o.height = "150px", o.display = "block", a.appendChild(d);
              var e = w.documentElement;
              return e.appendChild(a), w = d.offsetWidth, o.overflow = "scroll", d = d.offsetWidth, w == d && (d = a.clientWidth), e.removeChild(a), w - d;
            }, typeof document > "u" && (m.importCssString = function() {
            }), m.computedStyle = function(w, d) {
              return window.getComputedStyle(w, "") || {};
            }, m.setStyle = function(w, d, a) {
              w[d] !== a && (w[d] = a);
            }, m.HAS_CSS_ANIMATION = !1, m.HAS_CSS_TRANSFORMS = !1, m.HI_DPI = !b.isWin || typeof window < "u" && 1.5 <= window.devicePixelRatio, typeof document < "u" && (j = document.createElement("div"), m.HI_DPI && j.style.transform !== void 0 && (m.HAS_CSS_TRANSFORMS = !0), b.isEdge || j.style.animationName === void 0 || (m.HAS_CSS_ANIMATION = !0), j = null), m.HAS_CSS_TRANSFORMS ? m.translate = function(w, d, a) {
              w.style.transform = "translate(" + Math.round(d) + "px, " + Math.round(a) + "px)";
            } : m.translate = function(w, d, a) {
              w.style.top = Math.round(a) + "px", w.style.left = Math.round(d) + "px";
            };
          }), ace.define("ace/lib/oop", ["require", "exports", "module"], function(j, m, E) {
            m.inherits = function(b, w) {
              b.super_ = w, b.prototype = Object.create(w.prototype, { constructor: { value: b, enumerable: !1, writable: !0, configurable: !0 } });
            }, m.mixin = function(b, w) {
              for (var d in w) b[d] = w[d];
              return b;
            }, m.implement = function(b, w) {
              m.mixin(b, w);
            };
          }), ace.define("ace/lib/keys", ["require", "exports", "module", "ace/lib/oop"], function(j, m, E) {
            var b = j("./oop"), w = function() {
              var d, a, o = { MODIFIER_KEYS: { 16: "Shift", 17: "Ctrl", 18: "Alt", 224: "Meta", 91: "MetaLeft", 92: "MetaRight", 93: "ContextMenu" }, KEY_MODS: { ctrl: 1, alt: 2, option: 2, shift: 4, super: 8, meta: 8, command: 8, cmd: 8, control: 1 }, FUNCTION_KEYS: { 8: "Backspace", 9: "Tab", 13: "Return", 19: "Pause", 27: "Esc", 32: "Space", 33: "PageUp", 34: "PageDown", 35: "End", 36: "Home", 37: "Left", 38: "Up", 39: "Right", 40: "Down", 44: "Print", 45: "Insert", 46: "Delete", 96: "Numpad0", 97: "Numpad1", 98: "Numpad2", 99: "Numpad3", 100: "Numpad4", 101: "Numpad5", 102: "Numpad6", 103: "Numpad7", 104: "Numpad8", 105: "Numpad9", "-13": "NumpadEnter", 112: "F1", 113: "F2", 114: "F3", 115: "F4", 116: "F5", 117: "F6", 118: "F7", 119: "F8", 120: "F9", 121: "F10", 122: "F11", 123: "F12", 144: "Numlock", 145: "Scrolllock" }, PRINTABLE_KEYS: { 32: " ", 48: "0", 49: "1", 50: "2", 51: "3", 52: "4", 53: "5", 54: "6", 55: "7", 56: "8", 57: "9", 59: ";", 61: "=", 65: "a", 66: "b", 67: "c", 68: "d", 69: "e", 70: "f", 71: "g", 72: "h", 73: "i", 74: "j", 75: "k", 76: "l", 77: "m", 78: "n", 79: "o", 80: "p", 81: "q", 82: "r", 83: "s", 84: "t", 85: "u", 86: "v", 87: "w", 88: "x", 89: "y", 90: "z", 107: "+", 109: "-", 110: ".", 186: ";", 187: "=", 188: ",", 189: "-", 190: ".", 191: "/", 192: "`", 219: "[", 220: "\\", 221: "]", 222: "'", 111: "/", 106: "*" } };
              for (a in o.FUNCTION_KEYS) d = o.FUNCTION_KEYS[a].toLowerCase(), o[d] = parseInt(a, 10);
              for (a in o.PRINTABLE_KEYS) d = o.PRINTABLE_KEYS[a].toLowerCase(), o[d] = parseInt(a, 10);
              return b.mixin(o, o.MODIFIER_KEYS), b.mixin(o, o.PRINTABLE_KEYS), b.mixin(o, o.FUNCTION_KEYS), o.enter = o.return, o.escape = o.esc, o.del = o.delete, o[173] = "-", function() {
                for (var e = ["cmd", "ctrl", "alt", "shift"], t = Math.pow(2, e.length); t--; ) o.KEY_MODS[t] = e.filter(function(i) {
                  return t & o.KEY_MODS[i];
                }).join("-") + "-";
              }(), o.KEY_MODS[0] = "", o.KEY_MODS[-1] = "input-", o;
            }();
            b.mixin(m, w), m.keyCodeToString = function(d) {
              var a = w[d];
              return (a = typeof a != "string" ? String.fromCharCode(d) : a).toLowerCase();
            };
          }), ace.define("ace/lib/event", ["require", "exports", "module", "ace/lib/keys", "ace/lib/useragent"], function(j, m, E) {
            function b() {
              return e == null && function() {
                e = !1;
                try {
                  document.createComment("").addEventListener("test", function() {
                  }, { get passive() {
                    e = { passive: !1 };
                  } });
                } catch {
                }
              }(), e;
            }
            function w(I, f, n) {
              this.elem = I, this.type = f, this.callback = n;
            }
            function d(I) {
              return 0 | (I.ctrlKey ? 1 : 0) | (I.altKey ? 2 : 0) | (I.shiftKey ? 4 : 0) | (I.metaKey ? 8 : 0);
            }
            function a(I, f, n) {
              var g = d(f);
              if (!i.isMac && s) {
                if (f.getModifierState && (f.getModifierState("OS") || f.getModifierState("Win")) && (g |= 8), s.altGr) {
                  if ((3 & g) == 3) return;
                  s.altGr = 0;
                }
                n !== 18 && n !== 17 || (C = "location" in f ? f.location : f.keyLocation, n === 17 && C === 1 ? s[n] == 1 && (h = f.timeStamp) : n === 18 && g === 3 && C === 2 && f.timeStamp - h < 50 && (s.altGr = !0));
              }
              if (n in t.MODIFIER_KEYS && (n = -1), !g && n === 13) {
                var C = "location" in f ? f.location : f.keyLocation;
                if (C === 3 && (I(f, g, -n), f.defaultPrevented)) return;
              }
              if (i.isChromeOS && 8 & g) {
                if (I(f, g, n), f.defaultPrevented) return;
                g &= -9;
              }
              return !!(g || n in t.FUNCTION_KEYS || n in t.PRINTABLE_KEYS) && I(f, g, n);
            }
            function o() {
              s = /* @__PURE__ */ Object.create(null);
            }
            var e, t = j("./keys"), i = j("./useragent"), s = null, h = 0;
            w.prototype.destroy = function() {
              p(this.elem, this.type, this.callback), this.elem = this.type = this.callback = void 0;
            };
            var r = m.addListener = function(I, f, n, g) {
              I.addEventListener(f, n, b()), g && g.$toDestroy.push(new w(I, f, n));
            }, p = m.removeListener = function(I, f, n) {
              I.removeEventListener(f, n, b());
            };
            m.stopEvent = function(I) {
              return m.stopPropagation(I), m.preventDefault(I), !1;
            }, m.stopPropagation = function(I) {
              I.stopPropagation && I.stopPropagation();
            }, m.preventDefault = function(I) {
              I.preventDefault && I.preventDefault();
            }, m.getButton = function(I) {
              return I.type == "dblclick" ? 0 : I.type == "contextmenu" || i.isMac && I.ctrlKey && !I.altKey && !I.shiftKey ? 2 : I.button;
            }, m.capture = function(I, f, n) {
              function g(y) {
                f && f(y), n && n(y), p(C, "mousemove", f), p(C, "mouseup", g), p(C, "dragstart", g);
              }
              var C = I && I.ownerDocument || document;
              return r(C, "mousemove", f), r(C, "mouseup", g), r(C, "dragstart", g), g;
            }, m.addMouseWheelListener = function(I, f, n) {
              "onmousewheel" in I ? r(I, "mousewheel", function(g) {
                g.wheelDeltaX !== void 0 ? (g.wheelX = -g.wheelDeltaX / 8, g.wheelY = -g.wheelDeltaY / 8) : (g.wheelX = 0, g.wheelY = -g.wheelDelta / 8), f(g);
              }, n) : "onwheel" in I ? r(I, "wheel", function(g) {
                switch (g.deltaMode) {
                  case g.DOM_DELTA_PIXEL:
                    g.wheelX = 0.35 * g.deltaX || 0, g.wheelY = 0.35 * g.deltaY || 0;
                    break;
                  case g.DOM_DELTA_LINE:
                  case g.DOM_DELTA_PAGE:
                    g.wheelX = 5 * (g.deltaX || 0), g.wheelY = 5 * (g.deltaY || 0);
                }
                f(g);
              }, n) : r(I, "DOMMouseScroll", function(g) {
                g.axis && g.axis == g.HORIZONTAL_AXIS ? (g.wheelX = 5 * (g.detail || 0), g.wheelY = 0) : (g.wheelX = 0, g.wheelY = 5 * (g.detail || 0)), f(g);
              }, n);
            }, m.addMultiMouseDownListener = function(I, f, n, g, C) {
              function y(W) {
                var _;
                if (m.getButton(W) !== 0 ? S = 0 : 1 < W.detail && !(4 < ++S) || (S = 1), i.isIE && (_ = 5 < Math.abs(W.clientX - c) || 5 < Math.abs(W.clientY - v), k && !_ || (S = 1), k && clearTimeout(k), k = setTimeout(function() {
                  k = null;
                }, f[S - 1] || 600), S == 1 && (c = W.clientX, v = W.clientY)), W._clicks = S, n[g]("mousedown", W), 4 < S) S = 0;
                else if (1 < S) return n[g](L[S], W);
              }
              var c, v, k, S = 0, L = { 2: "dblclick", 3: "tripleclick", 4: "quadclick" };
              (I = Array.isArray(I) ? I : [I]).forEach(function(W) {
                r(W, "mousedown", y, C);
              });
            };
            var l;
            m.getModifierString = function(I) {
              return t.KEY_MODS[d(I)];
            }, m.addCommandKeyListener = function(I, f, n) {
              var g, C;
              i.isOldGecko || i.isOpera && !("KeyboardEvent" in window) ? (g = null, r(I, "keydown", function(y) {
                g = y.keyCode;
              }, n), r(I, "keypress", function(y) {
                return a(f, y, g);
              }, n)) : (C = null, r(I, "keydown", function(y) {
                s[y.keyCode] = (s[y.keyCode] || 0) + 1;
                var c = a(f, y, y.keyCode);
                return C = y.defaultPrevented, c;
              }, n), r(I, "keypress", function(y) {
                C && (y.ctrlKey || y.altKey || y.shiftKey || y.metaKey) && (m.stopEvent(y), C = null);
              }, n), r(I, "keyup", function(y) {
                s[y.keyCode] = null;
              }, n), s || (o(), r(window, "focus", o)));
            }, typeof window == "object" && window.postMessage && !i.isOldIE && (l = 1, m.nextTick = function(I, f) {
              f = f || window;
              var n = "zero-timeout-message-" + l++, g = function(C) {
                C.data == n && (m.stopPropagation(C), p(f, "message", g), I());
              };
              r(f, "message", g), f.postMessage(n, "*");
            }), m.$idleBlocked = !1, m.onIdle = function(I, f) {
              return setTimeout(function n() {
                m.$idleBlocked ? setTimeout(n, 100) : I();
              }, f);
            }, m.$idleBlockId = null, m.blockIdle = function(I) {
              m.$idleBlockId && clearTimeout(m.$idleBlockId), m.$idleBlocked = !0, m.$idleBlockId = setTimeout(function() {
                m.$idleBlocked = !1;
              }, I || 100);
            }, m.nextFrame = typeof window == "object" && (window.requestAnimationFrame || window.mozRequestAnimationFrame || window.webkitRequestAnimationFrame || window.msRequestAnimationFrame || window.oRequestAnimationFrame), m.nextFrame ? m.nextFrame = m.nextFrame.bind(window) : m.nextFrame = function(I) {
              setTimeout(I, 17);
            };
          }), ace.define("ace/range", ["require", "exports", "module"], function(j, m, E) {
            function b(w, d, a, o) {
              this.start = { row: w, column: d }, this.end = { row: a, column: o };
            }
            (function() {
              this.isEqual = function(w) {
                return this.start.row === w.start.row && this.end.row === w.end.row && this.start.column === w.start.column && this.end.column === w.end.column;
              }, this.toString = function() {
                return "Range: [" + this.start.row + "/" + this.start.column + "] -> [" + this.end.row + "/" + this.end.column + "]";
              }, this.contains = function(w, d) {
                return this.compare(w, d) == 0;
              }, this.compareRange = function(d) {
                var a = d.end, d = d.start, a = this.compare(a.row, a.column);
                return a == 1 ? (a = this.compare(d.row, d.column)) == 1 ? 2 : a == 0 ? 1 : 0 : a == -1 ? -2 : (a = this.compare(d.row, d.column)) == -1 ? -1 : a == 1 ? 42 : 0;
              }, this.comparePoint = function(w) {
                return this.compare(w.row, w.column);
              }, this.containsRange = function(w) {
                return this.comparePoint(w.start) == 0 && this.comparePoint(w.end) == 0;
              }, this.intersects = function(w) {
                return (w = this.compareRange(w)) == -1 || w == 0 || w == 1;
              }, this.isEnd = function(w, d) {
                return this.end.row == w && this.end.column == d;
              }, this.isStart = function(w, d) {
                return this.start.row == w && this.start.column == d;
              }, this.setStart = function(w, d) {
                typeof w == "object" ? (this.start.column = w.column, this.start.row = w.row) : (this.start.row = w, this.start.column = d);
              }, this.setEnd = function(w, d) {
                typeof w == "object" ? (this.end.column = w.column, this.end.row = w.row) : (this.end.row = w, this.end.column = d);
              }, this.inside = function(w, d) {
                return this.compare(w, d) == 0 && !this.isEnd(w, d) && !this.isStart(w, d);
              }, this.insideStart = function(w, d) {
                return this.compare(w, d) == 0 && !this.isEnd(w, d);
              }, this.insideEnd = function(w, d) {
                return this.compare(w, d) == 0 && !this.isStart(w, d);
              }, this.compare = function(w, d) {
                return this.isMultiLine() || w !== this.start.row ? w < this.start.row ? -1 : w > this.end.row ? 1 : this.start.row === w ? d >= this.start.column ? 0 : -1 : this.end.row !== w || d <= this.end.column ? 0 : 1 : d < this.start.column ? -1 : d > this.end.column ? 1 : 0;
              }, this.compareStart = function(w, d) {
                return this.start.row == w && this.start.column == d ? -1 : this.compare(w, d);
              }, this.compareEnd = function(w, d) {
                return this.end.row == w && this.end.column == d ? 1 : this.compare(w, d);
              }, this.compareInside = function(w, d) {
                return this.end.row == w && this.end.column == d ? 1 : this.start.row == w && this.start.column == d ? -1 : this.compare(w, d);
              }, this.clipRows = function(w, d) {
                var a, o;
                return this.end.row > d ? a = { row: d + 1, column: 0 } : this.end.row < w && (a = { row: w, column: 0 }), this.start.row > d ? o = { row: d + 1, column: 0 } : this.start.row < w && (o = { row: w, column: 0 }), b.fromPoints(o || this.start, a || this.end);
              }, this.extend = function(w, d) {
                var a, o, e = this.compare(w, d);
                return e == 0 ? this : (e == -1 ? a = { row: w, column: d } : o = { row: w, column: d }, b.fromPoints(a || this.start, o || 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 b.fromPoints(this.start, this.end);
              }, this.collapseRows = function() {
                return this.end.column == 0 ? new b(this.start.row, 0, Math.max(this.start.row, this.end.row - 1), 0) : new b(this.start.row, 0, this.end.row, 0);
              }, this.toScreenRange = function(a) {
                var d = a.documentToScreenPosition(this.start), a = a.documentToScreenPosition(this.end);
                return new b(d.row, d.column, a.row, a.column);
              }, this.moveBy = function(w, d) {
                this.start.row += w, this.start.column += d, this.end.row += w, this.end.column += d;
              };
            }).call(b.prototype), b.fromPoints = function(w, d) {
              return new b(w.row, w.column, d.row, d.column);
            }, b.comparePoints = function(w, d) {
              return w.row - d.row || w.column - d.column;
            }, b.comparePoints = function(w, d) {
              return w.row - d.row || w.column - d.column;
            }, m.Range = b;
          }), ace.define("ace/lib/lang", ["require", "exports", "module"], function(j, m, E) {
            m.last = function(d) {
              return d[d.length - 1];
            }, m.stringReverse = function(d) {
              return d.split("").reverse().join("");
            }, m.stringRepeat = function(d, a) {
              for (var o = ""; 0 < a; ) 1 & a && (o += d), (a >>= 1) && (d += d);
              return o;
            };
            var b = /^\s\s*/, w = /\s\s*$/;
            m.stringTrimLeft = function(d) {
              return d.replace(b, "");
            }, m.stringTrimRight = function(d) {
              return d.replace(w, "");
            }, m.copyObject = function(d) {
              var a, o = {};
              for (a in d) o[a] = d[a];
              return o;
            }, m.copyArray = function(d) {
              for (var a = [], o = 0, e = d.length; o < e; o++) d[o] && typeof d[o] == "object" ? a[o] = this.copyObject(d[o]) : a[o] = d[o];
              return a;
            }, m.deepCopy = function d(a) {
              if (typeof a != "object" || !a) return a;
              if (Array.isArray(a)) {
                for (var o = [], e = 0; e < a.length; e++) o[e] = d(a[e]);
                return o;
              }
              if (Object.prototype.toString.call(a) !== "[object Object]") return a;
              for (e in o = {}, a) o[e] = d(a[e]);
              return o;
            }, m.arrayToMap = function(d) {
              for (var a = {}, o = 0; o < d.length; o++) a[d[o]] = 1;
              return a;
            }, m.createMap = function(d) {
              var a, o = /* @__PURE__ */ Object.create(null);
              for (a in d) o[a] = d[a];
              return o;
            }, m.arrayRemove = function(d, a) {
              for (var o = 0; o <= d.length; o++) a === d[o] && d.splice(o, 1);
            }, m.escapeRegExp = function(d) {
              return d.replace(/([.*+?^${}()|[\]\/\\])/g, "\\$1");
            }, m.escapeHTML = function(d) {
              return ("" + d).replace(/&/g, "&#38;").replace(/"/g, "&#34;").replace(/'/g, "&#39;").replace(/</g, "&#60;");
            }, m.getMatchOffsets = function(d, a) {
              var o = [];
              return d.replace(a, function(e) {
                o.push({ offset: arguments[arguments.length - 2], length: e.length });
              }), o;
            }, m.deferredCall = function(d) {
              function a() {
                o = null, d();
              }
              var o = null, e = function(t) {
                return e.cancel(), o = setTimeout(a, t || 0), e;
              };
              return (e.schedule = e).call = function() {
                return this.cancel(), d(), e;
              }, e.cancel = function() {
                return clearTimeout(o), o = null, e;
              }, e.isPending = function() {
                return o;
              }, e;
            }, m.delayedCall = function(d, a) {
              function o() {
                t = null, d();
              }
              function e(i) {
                t == null && (t = setTimeout(o, i || a));
              }
              var t = null;
              return e.delay = function(i) {
                t && clearTimeout(t), t = setTimeout(o, i || a);
              }, (e.schedule = e).call = function() {
                this.cancel(), d();
              }, e.cancel = function() {
                t && clearTimeout(t), t = null;
              }, e.isPending = function() {
                return t;
              }, e;
            };
          }), ace.define("ace/clipboard", ["require", "exports", "module"], function(j, m, E) {
            var b;
            E.exports = { lineMode: !1, pasteCancelled: function() {
              return !!(b && b > Date.now() - 50) || (b = !1);
            }, cancel: function() {
              b = Date.now();
            } };
          }), ace.define("ace/keyboard/textinput", ["require", "exports", "module", "ace/lib/event", "ace/lib/useragent", "ace/lib/dom", "ace/lib/lang", "ace/clipboard", "ace/lib/keys"], function(j, m, E) {
            var b = j("../lib/event"), w = j("../lib/useragent"), d = j("../lib/dom"), a = j("../lib/lang"), o = j("../clipboard"), e = w.isChrome < 18, t = w.isIE, i = 63 < w.isChrome, s = j("../lib/keys"), h = s.KEY_MODS, r = w.isIOS, p = r ? /\s/ : /\n/, l = w.isMobile;
            m.TextInput = function(I, f) {
              function n($, X) {
                if (N = N && !1, _) return R(), $ && f.onPaste($), _ = !1, "";
                for (var te = L.selectionStart, se = L.selectionEnd, le = q, ce = U.length - ee, ue = $, ge = $.length - te, ae = $.length - se, fe = 0; 0 < le && U[fe] == $[fe]; ) fe++, le--;
                for (ue = ue.slice(fe), fe = 1; 0 < ce && U.length - fe > q - 1 && U[U.length - fe] == $[$.length - fe]; ) fe++, ce--;
                ge -= fe - 1, ae -= fe - 1;
                var we = ue.length - fe + 1;
                return we < 0 && (le = -we, we = 0), ue = ue.slice(0, we), X || ue || ge || le || ce || ae ? (X = !(z = !0), w.isAndroid && ue == ". " && (ue = "  ", X = !0), ue && !le && !ce && !ge && !ae || Y ? f.onTextInput(ue) : f.onTextInput(ue, { extendLeft: le, extendRight: ce, restoreStart: ge, restoreEnd: ae }), z = !1, U = $, q = te, ee = se, J = ae, X ? `
` : ue) : "";
              }
              function g(te) {
                if (O) return M();
                if (te && te.inputType) {
                  if (te.inputType == "historyUndo") return f.execCommand("undo");
                  if (te.inputType == "historyRedo") return f.execCommand("redo");
                }
                var X = L.value, te = n(X, !0);
                (500 < X.length || p.test(te) || l && q < 1 && q == ee) && R();
              }
              function C($, X) {
                var te = f.getCopyText();
                if (!te) return b.preventDefault($);
                A($, te) ? (r && (R(te), W = te, setTimeout(function() {
                  W = !1;
                }, 10)), X ? f.onCut() : f.onCopy(), b.preventDefault($)) : (W = !0, L.value = te, L.select(), setTimeout(function() {
                  W = !1, R(), X ? f.onCut() : f.onCopy();
                }));
              }
              function y($) {
                C($, !0);
              }
              function c($) {
                C($, !1);
              }
              function v($) {
                var X = A($);
                o.pasteCancelled() || (typeof X == "string" ? (X && f.onPaste(X, $), w.isIE && setTimeout(R), b.preventDefault($)) : (L.value = "", _ = !0));
              }
              function k() {
                ie = !0, L.blur(), L.focus(), ie = !1;
              }
              function S() {
                clearTimeout(x), x = setTimeout(function() {
                  H && (L.style.cssText = H, H = ""), f.renderer.$isMousePressed = !1, f.renderer.$keepTextAreaAtCursor && f.renderer.$moveTextAreaToCursor();
                }, 0);
              }
              var L = d.createElement("textarea");
              L.className = "ace_text-input", L.setAttribute("wrap", "off"), L.setAttribute("autocorrect", "off"), L.setAttribute("autocapitalize", "off"), L.setAttribute("spellcheck", !1), L.style.opacity = "0", I.insertBefore(L, I.firstChild);
              var W = !1, _ = !1, O = !1, z = !1, H = "";
              l || (L.style.fontSize = "1px");
              var Y = !1, ie = !1, U = "", q = 0, ee = 0, J = 0;
              try {
                var de = document.activeElement === L;
              } catch {
              }
              b.addListener(L, "blur", function($) {
                ie || (f.onBlur($), de = !1);
              }, f), b.addListener(L, "focus", function($) {
                if (!ie) {
                  if (de = !0, w.isEdge) try {
                    if (!document.hasFocus()) return;
                  } catch {
                  }
                  f.onFocus($), w.isEdge ? setTimeout(R) : R();
                }
              }, f), this.$focusScroll = !1, this.focus = function() {
                if (H || i || this.$focusScroll == "browser") return L.focus({ preventScroll: !0 });
                var $ = L.style.top;
                L.style.position = "fixed", L.style.top = "0px";
                try {
                  var X = L.getBoundingClientRect().top != 0;
                } catch {
                  return;
                }
                var te = [];
                if (X) for (var se = L.parentElement; se && se.nodeType == 1; ) te.push(se), se.setAttribute("ace_nocontext", !0), se = !se.parentElement && se.getRootNode ? se.getRootNode().host : se.parentElement;
                L.focus({ preventScroll: !0 }), X && te.forEach(function(le) {
                  le.removeAttribute("ace_nocontext");
                }), setTimeout(function() {
                  L.style.position = "", L.style.top == "0px" && (L.style.top = $);
                }, 0);
              }, this.blur = function() {
                L.blur();
              }, this.isFocused = function() {
                return de;
              }, f.on("beforeEndOperation", function() {
                var $ = f.curOp, X = $ && $.command && $.command.name;
                X != "insertstring" && ($ = X && ($.docChanged || $.selectionChanged), O && $ && (U = L.value = "", Z()), R());
              });
              var R = r ? function($) {
                var X;
                !de || W && !$ || z || ((X = `
 ab` + ($ = $ || "") + `cde fg
`) != L.value && (L.value = U = X), $ = 4 + ($.length || (f.selection.isEmpty() ? 0 : 1)), q == 4 && ee == $ || L.setSelectionRange(4, $), q = 4, ee = $);
              } : function() {
                if (!O && !z && (de || N)) {
                  O = !0;
                  var $, X, te, se = 0, le = 0, ce = "";
                  if (f.session && ($ = (X = f.selection).getRange(), X = X.cursor.row, se = $.start.column, le = $.end.column, ce = f.session.getLine(X), $.start.row != X ? (te = f.session.getLine(X - 1), se = $.start.row < X - 1 ? 0 : se, le += te.length + 1, ce = te + `
` + ce) : $.end.row != X ? (te = f.session.getLine(X + 1), le = $.end.row > X + 1 ? te.length : le, le += ce.length + 1, ce = ce + `
` + te) : l && 0 < X && (ce = `
` + ce, le += 1, se += 1), 400 < ce.length && (se < 400 && le < 400 ? ce = ce.slice(0, 400) : (ce = `
`, se == le ? se = le = 0 : (se = 0, le = 1)))), ce += `

`, ce != U && (L.value = U = ce, q = ee = ce.length), N && (q = L.selectionStart, ee = L.selectionEnd), ee != le || q != se || L.selectionEnd != ee) try {
                    L.setSelectionRange(se, le), q = se, ee = le;
                  } catch {
                  }
                  O = !1;
                }
              };
              this.resetSelection = R, de && f.onFocus();
              var T = null;
              this.setInputHandler = function($) {
                T = $;
              };
              var N = !(this.getInputHandler = function() {
                return T;
              }), A = function($, X, te) {
                var se = $.clipboardData || window.clipboardData;
                if (se && !e) {
                  var le = t || te ? "Text" : "text/plain";
                  try {
                    return X ? se.setData(le, X) !== !1 : se.getData(le);
                  } catch (ce) {
                    if (!te) return A(ce, X, !0);
                  }
                }
              };
              b.addCommandKeyListener(L, f.onCommandKey.bind(f), f), b.addListener(L, "select", function($) {
                var X;
                O || (W ? W = !1 : (X = L).selectionStart === 0 && X.selectionEnd >= U.length && X.value === U && U && X.selectionEnd !== ee ? (f.selectAll(), R()) : l && L.selectionStart != q && R());
              }, f), b.addListener(L, "input", g, f), b.addListener(L, "cut", y, f), b.addListener(L, "copy", c, f), b.addListener(L, "paste", v, f), "oncut" in L && "oncopy" in L && "onpaste" in L || b.addListener(I, "keydown", function($) {
                if ((!w.isMac || $.metaKey) && $.ctrlKey) switch ($.keyCode) {
                  case 67:
                    c($);
                    break;
                  case 86:
                    v($);
                    break;
                  case 88:
                    y($);
                }
              }, f);
              var x, M = function() {
                var $;
                if (O && f.onCompositionUpdate && !f.$readOnly) return Y ? k() : void (O.useTextareaForIME ? f.onCompositionUpdate(L.value) : ($ = L.value, n($), O.markerRange && (O.context && (O.markerRange.start.column = O.selectionStart = O.context.compositionStartOffset), O.markerRange.end.column = O.markerRange.start.column + ee - O.selectionStart + J)));
              }, Z = function($) {
                f.onCompositionEnd && !f.$readOnly && (O = !1, f.onCompositionEnd(), f.off("mousedown", k), $ && g());
              }, G = a.delayedCall(M, 50).schedule.bind(null, null);
              b.addListener(L, "compositionstart", function($) {
                O || !f.onCompositionStart || f.$readOnly || (O = {}, Y || ($.data && (O.useTextareaForIME = !1), setTimeout(M, 0), f._signal("compositionStart"), f.on("mousedown", k), ($ = f.getSelectionRange()).end.row = $.start.row, $.end.column = $.start.column, O.markerRange = $, O.selectionStart = q, f.onCompositionStart(O), O.useTextareaForIME ? (U = L.value = "", ee = q = 0) : (L.msGetInputContext && (O.context = L.msGetInputContext()), L.getInputContext && (O.context = L.getInputContext()))));
              }, f), b.addListener(L, "compositionupdate", M, f), b.addListener(L, "keyup", function($) {
                $.keyCode == 27 && L.value.length < L.selectionStart && (O || (U = L.value), q = ee = -1, R()), G();
              }, f), b.addListener(L, "keydown", G, f), b.addListener(L, "compositionend", Z, f), this.getElement = function() {
                return L;
              }, this.setCommandMode = function($) {
                Y = $, L.readOnly = !1;
              }, this.setReadOnly = function($) {
                Y || (L.readOnly = $);
              }, this.setCopyWithEmptySelection = function($) {
              }, this.onContextMenu = function($) {
                N = !0, R(), f._emit("nativecontextmenu", { target: f, domEvent: $ }), this.moveToMouse($, !0);
              }, this.moveToMouse = function($, te) {
                H = H || L.style.cssText, L.style.cssText = (te ? "z-index:100000;" : "") + (w.isIE ? "opacity:0.1;" : "") + "text-indent: -" + (q + ee) * f.renderer.characterWidth * 0.5 + "px;";
                var ue = f.container.getBoundingClientRect(), te = d.computedStyle(f.container), se = ue.top + (parseInt(te.borderTopWidth) || 0), le = ue.left + (parseInt(ue.borderLeftWidth) || 0), ce = ue.bottom - se - L.clientHeight - 2, ue = function(ge) {
                  d.translate(L, ge.clientX - le - 2, Math.min(ge.clientY - se - 2, ce));
                };
                ue($), $.type == "mousedown" && (f.renderer.$isMousePressed = !0, clearTimeout(x), w.isWin && b.capture(f.container, ue, S));
              }, this.onContextMenuClose = S, I = function($) {
                f.textInput.onContextMenu($), S();
              }, b.addListener(L, "mouseup", I, f), b.addListener(L, "mousedown", function($) {
                $.preventDefault(), S();
              }, f), b.addListener(f.renderer.scroller, "contextmenu", I, f), b.addListener(L, "contextmenu", I, f), r && function($, X) {
                function te(ce) {
                  var ue, ge, ae, fe;
                  document.activeElement === X && (le || O || $.$mouseHandler.isMousePressed || W || (ue = X.selectionStart, ge = X.selectionEnd, fe = null, (ae = 0) == ue ? fe = s.up : ue == 1 ? fe = s.home : ee < ge && U[ge] == `
` ? fe = s.end : ue < q && U[ue - 1] == " " ? (fe = s.left, ae = h.option) : ue < q || ue == q && ee != q && ue == ge ? fe = s.left : ee < ge && 2 < U.slice(0, ge).split(`
`).length ? fe = s.down : ee < ge && U[ge - 1] == " " ? (fe = s.right, ae = h.option) : (ee < ge || ge == ee && ee != q && ue == ge) && (fe = s.right), ue !== ge && (ae |= h.shift), fe && (!$.onCommandKey({}, ae, fe) && $.commands && (fe = s.keyCodeToString(fe), (fe = $.commands.findKeyCommand(ae, fe)) && $.execCommand(fe)), q = ue, ee = ge, R(""))));
                }
                var se = null, le = !1;
                X.addEventListener("keydown", function(ce) {
                  se && clearTimeout(se), le = !0;
                }, !0), X.addEventListener("keyup", function(ce) {
                  se = setTimeout(function() {
                    le = !1;
                  }, 100);
                }, !0), document.addEventListener("selectionchange", te), $.on("destroy", function() {
                  document.removeEventListener("selectionchange", te);
                });
              }(f, L);
            }, m.$setUserAgentForTests = function(I, f) {
              l = I, r = f;
            };
          }), ace.define("ace/mouse/default_handlers", ["require", "exports", "module", "ace/lib/useragent"], function(j, m, E) {
            function b(a) {
              a.$clickSelection = null;
              var o = a.editor;
              o.setDefaultHandler("mousedown", this.onMouseDown.bind(a)), o.setDefaultHandler("dblclick", this.onDoubleClick.bind(a)), o.setDefaultHandler("tripleclick", this.onTripleClick.bind(a)), o.setDefaultHandler("quadclick", this.onQuadClick.bind(a)), o.setDefaultHandler("mousewheel", this.onMouseWheel.bind(a)), ["select", "startSelect", "selectEnd", "selectAllEnd", "selectByWordsEnd", "selectByLinesEnd", "dragWait", "dragWaitEnd", "focusWait"].forEach(function(e) {
                a[e] = this[e];
              }, this), a.selectByLines = this.extendSelectionBy.bind(a, "getLineRange"), a.selectByWords = this.extendSelectionBy.bind(a, "getWordRange");
            }
            function w(a, o) {
              return (a.start.row == a.end.row ? 2 * o.column - a.start.column - a.end.column : a.start.row != a.end.row - 1 || a.start.column || a.end.column ? 2 * o.row - a.start.row - a.end.row : o.column - 4) < 0 ? { cursor: a.start, anchor: a.end } : { cursor: a.end, anchor: a.start };
            }
            var d = j("../lib/useragent");
            (function() {
              this.onMouseDown = function(a) {
                var o = a.inSelection(), e = a.getDocumentPosition();
                this.mousedownEvent = a;
                var t = this.editor, i = a.getButton();
                return i !== 0 ? (!t.getSelectionRange().isEmpty() && i != 1 || t.selection.moveToPosition(e), void (i == 2 && (t.textInput.onContextMenu(a.domEvent), d.isMozilla || a.preventDefault()))) : (this.mousedownEvent.time = Date.now(), !o || t.isFocused() || (t.focus(), !this.$focusTimeout || this.$clickSelection || t.inMultiSelectMode) ? (this.captureMouse(a), this.startSelect(e, 1 < a.domEvent._clicks), a.preventDefault()) : (this.setState("focusWait"), void this.captureMouse(a)));
              }, this.startSelect = function(a, o) {
                a = a || this.editor.renderer.screenToTextCoordinates(this.x, this.y);
                var e = this.editor;
                this.mousedownEvent && (this.mousedownEvent.getShiftKey() ? e.selection.selectToPosition(a) : o || e.selection.moveToPosition(a), o || this.select(), e.renderer.scroller.setCapture && e.renderer.scroller.setCapture(), e.setStyle("ace_selecting"), this.setState("select"));
              }, this.select = function() {
                var a, o, e = this.editor, t = e.renderer.screenToTextCoordinates(this.x, this.y);
                this.$clickSelection && (o = (a = this.$clickSelection.comparePoint(t)) == -1 ? this.$clickSelection.end : a == 1 ? this.$clickSelection.start : (t = (o = w(this.$clickSelection, t)).cursor, o.anchor), e.selection.setSelectionAnchor(o.row, o.column)), e.selection.selectToPosition(t), e.renderer.scrollCursorIntoView();
              }, this.extendSelectionBy = function(a) {
                var o, e, t = this.editor, i = t.renderer.screenToTextCoordinates(this.x, this.y), s = t.selection[a](i.row, i.column);
                this.$clickSelection && (o = this.$clickSelection.comparePoint(s.start), a = this.$clickSelection.comparePoint(s.end), o == -1 && a <= 0 ? (e = this.$clickSelection.end, s.end.row == i.row && s.end.column == i.column || (i = s.start)) : a == 1 && 0 <= o ? (e = this.$clickSelection.start, s.start.row == i.row && s.start.column == i.column || (i = s.end)) : e = o == -1 && a == 1 ? (i = s.end, s.start) : (i = (s = w(this.$clickSelection, i)).cursor, s.anchor), t.selection.setSelectionAnchor(e.row, e.column)), t.selection.selectToPosition(i), t.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 a, o, e, e = (a = this.mousedownEvent.x, t = this.mousedownEvent.y, o = this.x, e = this.y, Math.sqrt(Math.pow(o - a, 2) + Math.pow(e - t, 2))), t = Date.now();
                (0 < e || t - this.mousedownEvent.time > this.$focusTimeout) && this.startSelect(this.mousedownEvent.getDocumentPosition());
              }, this.onDoubleClick = function(t) {
                var o = t.getDocumentPosition(), e = this.editor, t = e.session.getBracketRange(o);
                t ? (t.isEmpty() && (t.start.column--, t.end.column++), this.setState("select")) : (t = e.selection.getWordRange(o.row, o.column), this.setState("selectByWords")), this.$clickSelection = t, this.select();
              }, this.onTripleClick = function(a) {
                var o = a.getDocumentPosition(), e = this.editor;
                this.setState("selectByLines"), a = e.getSelectionRange(), a.isMultiLine() && a.contains(o.row, o.column) ? (this.$clickSelection = e.selection.getLineRange(a.start.row), this.$clickSelection.end = e.selection.getLineRange(a.end.row).end) : this.$clickSelection = e.selection.getLineRange(o.row), this.select();
              }, this.onQuadClick = function(a) {
                var o = this.editor;
                o.selectAll(), this.$clickSelection = o.getSelectionRange(), this.setState("selectAll");
              }, this.onMouseWheel = function(a) {
                if (!a.getAccelKey()) {
                  a.getShiftKey() && a.wheelY && !a.wheelX && (a.wheelX = a.wheelY, a.wheelY = 0);
                  var o = this.editor;
                  this.$lastScroll || (this.$lastScroll = { t: 0, vx: 0, vy: 0, allowed: 0 });
                  var e = this.$lastScroll, t = a.domEvent.timeStamp, r = t - e.t, i = r ? a.wheelX / r : e.vx, s = r ? a.wheelY / r : e.vy;
                  r < 550 && (i = (i + e.vx) / 2, s = (s + e.vy) / 2);
                  var h = Math.abs(i / s), r = !1;
                  return 1 <= h && o.renderer.isScrollableBy(a.wheelX * a.speed, 0) && (r = !0), (r = !!(h <= 1 && o.renderer.isScrollableBy(0, a.wheelY * a.speed)) || r) ? e.allowed = t : t - e.allowed < 550 && (Math.abs(i) <= 1.5 * Math.abs(e.vx) && Math.abs(s) <= 1.5 * Math.abs(e.vy) ? (r = !0, e.allowed = t) : e.allowed = 0), e.t = t, e.vx = i, e.vy = s, r ? (o.renderer.scrollBy(a.wheelX * a.speed, a.wheelY * a.speed), a.stop()) : void 0;
                }
              };
            }).call(b.prototype), m.DefaultHandlers = b;
          }), ace.define("ace/tooltip", ["require", "exports", "module", "ace/lib/oop", "ace/lib/dom"], function(j, m, E) {
            function b(d) {
              this.isOpen = !1, this.$element = null, this.$parentNode = d;
            }
            j("./lib/oop");
            var w = j("./lib/dom");
            (function() {
              this.$init = function() {
                return this.$element = w.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(d) {
                this.getElement().textContent = d;
              }, this.setHtml = function(d) {
                this.getElement().innerHTML = d;
              }, this.setPosition = function(d, a) {
                this.getElement().style.left = d + "px", this.getElement().style.top = a + "px";
              }, this.setClassName = function(d) {
                w.addCssClass(this.getElement(), d);
              }, this.show = function(d, a, o) {
                d != null && this.setText(d), a != null && o != null && this.setPosition(a, o), 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;
              }, this.destroy = function() {
                this.isOpen = !1, this.$element && this.$element.parentNode && this.$element.parentNode.removeChild(this.$element);
              };
            }).call(b.prototype), m.Tooltip = b;
          }), ace.define("ace/mouse/default_gutter_handler", ["require", "exports", "module", "ace/lib/dom", "ace/lib/oop", "ace/lib/event", "ace/tooltip"], function(j, m, E) {
            function b(e) {
              o.call(this, e);
            }
            var w = j("../lib/dom"), d = j("../lib/oop"), a = j("../lib/event"), o = j("../tooltip").Tooltip;
            d.inherits(b, o), (function() {
              this.setPosition = function(e, t) {
                var i = window.innerWidth || document.documentElement.clientWidth, s = window.innerHeight || document.documentElement.clientHeight, h = this.getWidth(), r = this.getHeight();
                i < (e += 15) + h && (e -= e + h - i), s < (t += 15) + r && (t -= 20 + r), o.prototype.setPosition.call(this, e, t);
              };
            }).call(b.prototype), m.GutterHandler = function(e) {
              function t() {
                s = s && clearTimeout(s), r && (I.hide(), r = null, p._signal("hideGutterTooltip", I), p.off("mousewheel", t));
              }
              function i(f) {
                I.setPosition(f.x, f.y);
              }
              var s, h, r, p = e.editor, l = p.renderer.$gutterLayer, I = new b(p.container);
              e.editor.setDefaultHandler("guttermousedown", function(f) {
                if (p.isFocused() && f.getButton() == 0 && l.getRegion(f) != "foldWidgets") {
                  var n = f.getDocumentPosition().row, g = p.session.selection;
                  if (f.getShiftKey()) g.selectTo(n, 0);
                  else {
                    if (f.domEvent.detail == 2) return p.selectAll(), f.preventDefault();
                    e.$clickSelection = p.selection.getLineRange(n);
                  }
                  return e.setState("selectByLines"), e.captureMouse(f), f.preventDefault();
                }
              }), e.editor.setDefaultHandler("guttermousemove", function(f) {
                var n = f.domEvent.target || f.domEvent.srcElement;
                if (w.hasCssClass(n, "ace_fold-widget")) return t();
                r && e.$tooltipFollowsMouse && i(f), h = f, s = s || setTimeout(function() {
                  s = null, (h && !e.isMousePressed ? function() {
                    var g = h.getDocumentPosition().row, C = l.$annotations[g];
                    if (!C) return t();
                    if (g == p.session.getLength()) {
                      var g = p.renderer.pixelToScreenCoordinates(0, h.y).row, y = h.$pos;
                      if (g > p.session.documentToScreenRow(y.row, y.column)) return t();
                    }
                    r != C && (r = C.text.join("<br/>"), I.setHtml(r), I.show(), p._signal("showGutterTooltip", I), p.on("mousewheel", t), e.$tooltipFollowsMouse ? i(h) : (y = h.domEvent.target.getBoundingClientRect(), (C = I.getElement().style).left = y.right + "px", C.top = y.bottom + "px"));
                  } : t)();
                }, 50);
              }), a.addListener(p.renderer.$gutter, "mouseout", function(f) {
                h = null, r && !s && (s = setTimeout(function() {
                  s = null, t();
                }, 50));
              }, p), p.on("changeSession", t);
            };
          }), ace.define("ace/mouse/mouse_event", ["require", "exports", "module", "ace/lib/event", "ace/lib/useragent"], function(j, d, E) {
            var b = j("../lib/event"), w = j("../lib/useragent"), d = d.MouseEvent = function(a, o) {
              this.domEvent = a, this.editor = o, this.x = this.clientX = a.clientX, this.y = this.clientY = a.clientY, this.$pos = null, this.$inSelection = null, this.propagationStopped = !1, this.defaultPrevented = !1;
            };
            (function() {
              this.stopPropagation = function() {
                b.stopPropagation(this.domEvent), this.propagationStopped = !0;
              }, this.preventDefault = function() {
                b.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 (this.$inSelection !== null) return this.$inSelection;
                var a, o = this.editor.getSelectionRange();
                return o.isEmpty() ? this.$inSelection = !1 : (a = this.getDocumentPosition(), this.$inSelection = o.contains(a.row, a.column)), this.$inSelection;
              }, this.getButton = function() {
                return b.getButton(this.domEvent);
              }, this.getShiftKey = function() {
                return this.domEvent.shiftKey;
              }, this.getAccelKey = w.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(j, m, E) {
            function b(e) {
              function t() {
                var H, Y, ie, U, q, ee, J, de, R = c;
                c = l.renderer.screenToTextCoordinates(n, g), J = c, ee = R, de = Date.now(), q = !ee || J.row != ee.row, ee = !ee || J.column != ee.column, !L || q || ee ? (l.moveCursorToPosition(J), L = de, W = { x: n, y: g }) : 5 < w(W.x, W.y, n, g) ? L = null : 200 <= de - L && (l.renderer.scrollCursorIntoView(), L = null), H = c, Y = R, ie = Date.now(), U = l.renderer.layerConfig.lineHeight, q = l.renderer.layerConfig.characterWidth, ee = l.renderer.scroller.getBoundingClientRect(), J = { x: { left: n - ee.left, right: ee.right - n }, y: { top: g - ee.top, bottom: ee.bottom - g } }, de = Math.min(J.x.left, J.x.right), R = Math.min(J.y.top, J.y.bottom), ee = { row: H.row, column: H.column }, de / q <= 2 && (ee.column += J.x.left < J.x.right ? -3 : 2), R / U <= 1 && (ee.row += J.y.top < J.y.bottom ? -1 : 1), U = H.row != ee.row, J = H.column != ee.column, Y = !Y || H.row != Y.row, U || J && !Y ? S ? 200 <= ie - S && l.renderer.scrollCursorIntoView(ee) : S = ie : S = null;
              }
              function i() {
                y = l.selection.toOrientedRange(), f = l.session.addMarker(y, "ace_selection", l.getSelectionStyle()), l.clearSelection(), l.isFocused() && l.renderer.$cursorLayer.setBlinking(!1), clearInterval(C), t(), C = setInterval(t, 20), O = 0, a.addListener(document, "mousemove", h);
              }
              function s() {
                clearInterval(C), l.session.removeMarker(f), f = null, l.selection.fromOrientedRange(y), l.isFocused() && !k && l.$resetCursorStyle(), O = 0, L = S = c = y = null, a.removeListener(document, "mousemove", h);
              }
              function h() {
                z == null && (z = setTimeout(function() {
                  z != null && f && s();
                }, 20));
              }
              function r(H) {
                return !(H = H.types) || Array.prototype.some.call(H, function(Y) {
                  return Y == "text/plain" || Y == "Text";
                });
              }
              function p(H) {
                var Y = ["copy", "copymove", "all", "uninitialized"], ie = o.isMac ? H.altKey : H.ctrlKey, U = "uninitialized";
                try {
                  U = H.dataTransfer.effectAllowed.toLowerCase();
                } catch {
                }
                var q = "none";
                return ie && 0 <= Y.indexOf(U) ? q = "copy" : 0 <= ["move", "copymove", "linkmove", "all", "uninitialized"].indexOf(U) ? q = "move" : 0 <= Y.indexOf(U) && (q = "copy"), q;
              }
              var l = e.editor, I = d.createElement("img");
              I.src = "data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==", o.isOpera && (I.style.cssText = "width:1px;height:1px;position:fixed;top:0;left:0;z-index:2147483647;opacity:0;"), ["dragWait", "dragWaitEnd", "startDrag", "dragReadyEnd", "onMouseDrag"].forEach(function(H) {
                e[H] = this[H];
              }, this), l.on("mousedown", this.onMouseDown.bind(e));
              var f, n, g, C, y, c, v, k, S, L, W, _ = l.container, O = 0;
              this.onDragStart = function(H) {
                if (this.cancelDrag || !_.draggable) {
                  var Y = this;
                  return setTimeout(function() {
                    Y.startSelect(), Y.captureMouse(H);
                  }, 0), H.preventDefault();
                }
                y = l.getSelectionRange();
                var ie = H.dataTransfer;
                ie.effectAllowed = l.getReadOnly() ? "copy" : "copyMove", o.isOpera && (l.container.appendChild(I), I.scrollTop = 0), ie.setDragImage && ie.setDragImage(I, 0, 0), o.isOpera && l.container.removeChild(I), ie.clearData(), ie.setData("Text", l.session.getTextRange()), k = !0, this.setState("drag");
              }, this.onDragEnd = function(H) {
                _.draggable = !1, k = !1, this.setState(null), l.getReadOnly() || (H = H.dataTransfer.dropEffect, v || H != "move" || l.session.remove(l.getSelectionRange()), l.$resetCursorStyle()), this.editor.unsetStyle("ace_dragging"), this.editor.renderer.setCursorStyle("");
              }, this.onDragEnter = function(H) {
                if (!l.getReadOnly() && r(H.dataTransfer)) return n = H.clientX, g = H.clientY, f || i(), O++, H.dataTransfer.dropEffect = v = p(H), a.preventDefault(H);
              }, this.onDragOver = function(H) {
                if (!l.getReadOnly() && r(H.dataTransfer)) return n = H.clientX, g = H.clientY, f || (i(), O++), z !== null && (z = null), H.dataTransfer.dropEffect = v = p(H), a.preventDefault(H);
              }, this.onDragLeave = function(H) {
                if (--O <= 0 && f) return s(), v = null, a.preventDefault(H);
              }, this.onDrop = function(H) {
                if (c) {
                  var Y = H.dataTransfer;
                  if (k) switch (v) {
                    case "move":
                      y = y.contains(c.row, c.column) ? { start: c, end: c } : l.moveText(y, c);
                      break;
                    case "copy":
                      y = l.moveText(y, c, !0);
                  }
                  else Y = Y.getData("Text"), y = { start: c, end: l.session.insert(c, Y) }, l.focus(), v = null;
                  return s(), a.preventDefault(H);
                }
              }, a.addListener(_, "dragstart", this.onDragStart.bind(e), l), a.addListener(_, "dragend", this.onDragEnd.bind(e), l), a.addListener(_, "dragenter", this.onDragEnter.bind(e), l), a.addListener(_, "dragover", this.onDragOver.bind(e), l), a.addListener(_, "dragleave", this.onDragLeave.bind(e), l), a.addListener(_, "drop", this.onDrop.bind(e), l);
              var z = null;
            }
            function w(e, t, i, s) {
              return Math.sqrt(Math.pow(i - e, 2) + Math.pow(s - t, 2));
            }
            var d = j("../lib/dom"), a = j("../lib/event"), o = j("../lib/useragent");
            (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(e) {
                this.editor.$resetCursorStyle(), this.editor.unsetStyle("ace_dragging"), this.editor.renderer.setCursorStyle(""), this.dragWaitEnd();
              }, this.startDrag = function() {
                this.cancelDrag = !1;
                var e = this.editor;
                e.container.draggable = !0, e.renderer.$cursorLayer.setBlinking(!1), e.setStyle("ace_dragging");
                var t = o.isWin ? "default" : "move";
                e.renderer.setCursorStyle(t), this.setState("dragReady");
              }, this.onMouseDrag = function(e) {
                var t = this.editor.container;
                o.isIE && this.state == "dragReady" && 3 < w(this.mousedownEvent.x, this.mousedownEvent.y, this.x, this.y) && t.dragDrop(), this.state === "dragWait" && 0 < w(this.mousedownEvent.x, this.mousedownEvent.y, this.x, this.y) && (t.draggable = !1, this.startSelect(this.mousedownEvent.getDocumentPosition()));
              }, this.onMouseDown = function(e) {
                var t, i, s;
                this.$dragEnabled && (this.mousedownEvent = e, t = this.editor, s = e.inSelection(), i = e.getButton(), (e.domEvent.detail || 1) === 1 && i === 0 && s && (e.editor.inMultiSelectMode && (e.getAccelKey() || e.getShiftKey()) || (this.mousedownEvent.time = Date.now(), "unselectable" in (s = e.domEvent.target || e.domEvent.srcElement) && (s.unselectable = "on"), t.getDragDelay() ? (o.isWebKit && (this.cancelDrag = !0, t.container.draggable = !0), this.setState("dragWait")) : this.startDrag(), this.captureMouse(e, this.onMouseDrag.bind(this)), e.defaultPrevented = !0)));
              };
            }).call(b.prototype), m.DragdropHandler = b;
          }), ace.define("ace/mouse/touch_handler", ["require", "exports", "module", "ace/mouse/mouse_event", "ace/lib/event", "ace/lib/dom"], function(j, m, E) {
            var b = j("./mouse_event").MouseEvent, w = j("../lib/event"), d = j("../lib/dom");
            m.addTouchListeners = function(a, o) {
              function e() {
                function L(O) {
                  var z, H = O.target.getAttribute("action");
                  if (H == "more" || !_) return _ = !_, z = o.getCopyText(), O = o.session.getUndoManager().hasUndo(), void C.replaceChild(d.buildDom(_ ? ["span", !z && ["span", { class: "ace_mobile-button", action: "selectall" }, "Select All"], z && ["span", { class: "ace_mobile-button", action: "copy" }, "Copy"], z && ["span", { class: "ace_mobile-button", action: "cut" }, "Cut"], W && ["span", { class: "ace_mobile-button", action: "paste" }, "Paste"], O && ["span", { class: "ace_mobile-button", action: "undo" }, "Undo"], ["span", { class: "ace_mobile-button", action: "find" }, "Find"], ["span", { class: "ace_mobile-button", action: "openCommandPallete" }, "Pallete"]] : ["span"]), C.firstChild);
                  H == "paste" ? W.readText().then(function(Y) {
                    o.execCommand(H, Y);
                  }) : H && (H != "cut" && H != "copy" || (W ? W.writeText(o.getCopyText()) : document.execCommand("copy")), o.execCommand(H)), C.firstChild.style.display = "none", _ = !1, H != "openCommandPallete" && o.focus();
                }
                var W = window.navigator && window.navigator.clipboard, _ = !1;
                C = d.buildDom(["div", { class: "ace_mobile-menu", ontouchstart: function(O) {
                  y = "menu", O.stopPropagation(), O.preventDefault(), o.textInput.focus();
                }, ontouchend: function(O) {
                  O.stopPropagation(), O.preventDefault(), L(O);
                }, onclick: L }, ["span"], ["span", { class: "ace_mobile-button", action: "more" }, "..."]], o.container);
              }
              function t() {
                C || e();
                var O = o.selection.cursor, L = o.renderer.textToScreenCoordinates(O.row, O.column), W = o.renderer.textToScreenCoordinates(0, 0).pageX, _ = o.renderer.scrollLeft, O = o.container.getBoundingClientRect();
                C.style.top = L.pageY - O.top - 3 + "px", L.pageX - O.left < O.width - 70 ? (C.style.left = "", C.style.right = "10px") : (C.style.right = "", C.style.left = W + _ - O.left + "px"), C.style.display = "", C.firstChild.style.display = "none", o.on("input", i);
              }
              function i(L) {
                C && (C.style.display = "none"), o.off("input", i);
              }
              function s() {
                I = null, clearTimeout(I);
                var L = o.selection.getRange(), W = L.contains(n.row, n.column);
                !L.isEmpty() && W || (o.selection.moveToPosition(n), o.selection.selectWord()), y = "wait", t();
              }
              var h, r, p, l, I, f, n, g, C, y = "scroll", c = 0, v = 0, k = 0, S = 0;
              w.addListener(a, "contextmenu", function(L) {
                g && o.textInput.getElement().focus();
              }, o), w.addListener(a, "touchstart", function(L) {
                var W = L.touches;
                if (I || 1 < W.length) return clearTimeout(I), I = null, p = -1, void (y = "zoom");
                g = o.$mouseHandler.isMousePressed = !0;
                var _ = o.renderer.layerConfig.lineHeight, O = o.renderer.layerConfig.lineHeight, z = L.timeStamp;
                l = z;
                var H = W[0], Y = H.clientX, ie = H.clientY;
                Math.abs(h - Y) + Math.abs(r - ie) > _ && (p = -1), h = L.clientX = Y, r = L.clientY = ie, k = S = 0;
                var U = new b(L, o);
                if (n = U.getDocumentPosition(), z - p < 500 && W.length == 1 && !c) v++, L.preventDefault(), L.button = 0, function() {
                  I = null, clearTimeout(I), o.selection.moveToPosition(n);
                  var ee = 2 <= v ? o.selection.getLineRange(n.row) : o.session.getBracketRange(n);
                  ee && !ee.isEmpty() ? o.selection.setRange(ee) : o.selection.selectWord(), y = "wait";
                }();
                else {
                  v = 0;
                  var q = o.selection.cursor, H = o.selection.isEmpty() ? q : o.selection.anchor, Y = o.renderer.$cursorLayer.getPixelPosition(q, !0), ie = o.renderer.$cursorLayer.getPixelPosition(H, !0), U = o.renderer.scroller.getBoundingClientRect(), W = o.renderer.layerConfig.offset, q = o.renderer.scrollLeft, H = function(N, A) {
                    return (N /= O) * N + (A = A / _ - 0.75) * A;
                  };
                  if (L.clientX < U.left) return void (y = "zoom");
                  Y = H(L.clientX - U.left - Y.left + q, L.clientY - U.top - Y.top + W), W = H(L.clientX - U.left - ie.left + q, L.clientY - U.top - ie.top + W), Y < 3.5 && W < 3.5 && (y = W < Y ? "cursor" : "anchor"), y = W < 3.5 ? "anchor" : Y < 3.5 ? "cursor" : "scroll", I = setTimeout(s, 450);
                }
                p = z;
              }, o), w.addListener(a, "touchend", function(L) {
                g = o.$mouseHandler.isMousePressed = !1, f && clearInterval(f), y == "zoom" ? (y = "", c = 0) : I ? (o.selection.moveToPosition(n), c = 0, t()) : y == "scroll" ? (c += 60, f = setInterval(function() {
                  c-- <= 0 && (clearInterval(f), f = null), Math.abs(k) < 0.01 && (k = 0), Math.abs(S) < 0.01 && (S = 0), c < 20 && (k *= 0.9), c < 20 && (S *= 0.9);
                  var W = o.session.getScrollTop();
                  o.renderer.scrollBy(10 * k, 10 * S), W == o.session.getScrollTop() && (c = 0);
                }, 10), i()) : t(), clearTimeout(I), I = null;
              }, o), w.addListener(a, "touchmove", function(L) {
                I && (clearTimeout(I), I = null);
                var W = L.touches;
                if (!(1 < W.length || y == "zoom")) {
                  var H = W[0], _ = h - H.clientX, O = r - H.clientY;
                  if (y == "wait") {
                    if (!(4 < _ * _ + O * O)) return L.preventDefault();
                    y = "cursor";
                  }
                  h = H.clientX, r = H.clientY, L.clientX = H.clientX, L.clientY = H.clientY;
                  var z, W = L.timeStamp, H = W - l;
                  l = W, y == "scroll" ? ((z = new b(L, o)).speed = 1, z.wheelX = _, z.wheelY = O, 10 * Math.abs(_) < Math.abs(O) && (_ = 0), 10 * Math.abs(O) < Math.abs(_) && (O = 0), H != 0 && (k = _ / H, S = O / H), o._emit("mousewheel", z), z.propagationStopped || (k = S = 0)) : (z = new b(L, o).getDocumentPosition(), y == "cursor" ? o.selection.moveCursorToPosition(z) : y == "anchor" && o.selection.setSelectionAnchor(z.row, z.column), o.renderer.scrollCursorIntoView(z), L.preventDefault());
                }
              }, o);
            };
          }), ace.define("ace/lib/net", ["require", "exports", "module", "ace/lib/dom"], function(j, m, E) {
            var b = j("./dom");
            m.get = function(w, d) {
              var a = new XMLHttpRequest();
              a.open("GET", w, !0), a.onreadystatechange = function() {
                a.readyState === 4 && d(a.responseText);
              }, a.send(null);
            }, m.loadScript = function(w, d) {
              var a = b.getDocumentHead(), o = document.createElement("script");
              o.src = w, a.appendChild(o), o.onload = o.onreadystatechange = function(e, t) {
                !t && o.readyState && o.readyState != "loaded" && o.readyState != "complete" || (o = o.onload = o.onreadystatechange = null, t || d());
              };
            }, m.qualifyURL = function(w) {
              var d = document.createElement("a");
              return d.href = w, d.href;
            };
          }), ace.define("ace/lib/event_emitter", ["require", "exports", "module"], function(j, m, E) {
            function b() {
              this.propagationStopped = !0;
            }
            function w() {
              this.defaultPrevented = !0;
            }
            var d = {};
            d._emit = d._dispatchEvent = function(a, o) {
              this._eventRegistry || (this._eventRegistry = {}), this._defaultHandlers || (this._defaultHandlers = {});
              var e = this._eventRegistry[a] || [], t = this._defaultHandlers[a];
              if (e.length || t) {
                (o = typeof o == "object" && o ? o : {}).type || (o.type = a), o.stopPropagation || (o.stopPropagation = b), o.preventDefault || (o.preventDefault = w);
                for (var e = e.slice(), i = 0; i < e.length && (e[i](o, this), !o.propagationStopped); i++) ;
                return t && !o.defaultPrevented ? t(o, this) : void 0;
              }
            }, d._signal = function(a, o) {
              if (e = (this._eventRegistry || {})[a]) for (var e = e.slice(), t = 0; t < e.length; t++) e[t](o, this);
            }, d.once = function(a, o) {
              var e = this;
              if (this.on(a, function t() {
                e.off(a, t), o.apply(null, arguments);
              }), !o) return new Promise(function(t) {
                o = t;
              });
            }, d.setDefaultHandler = function(a, o) {
              var e, t, i = this._defaultHandlers;
              (i = i || (this._defaultHandlers = { _disabled_: {} }))[a] && (t = i[a], (e = i._disabled_[a]) || (i._disabled_[a] = e = []), e.push(t), (t = e.indexOf(o)) != -1 && e.splice(t, 1)), i[a] = o;
            }, d.removeDefaultHandler = function(a, o) {
              var e, t = this._defaultHandlers;
              t && (e = t._disabled_[a], t[a] == o ? e && this.setDefaultHandler(a, e.pop()) : !e || (o = e.indexOf(o)) != -1 && e.splice(o, 1));
            }, d.on = d.addEventListener = function(a, o, e) {
              this._eventRegistry = this._eventRegistry || {};
              var t = this._eventRegistry[a];
              return (t = t || (this._eventRegistry[a] = [])).indexOf(o) == -1 && t[e ? "unshift" : "push"](o), o;
            }, d.off = d.removeListener = d.removeEventListener = function(a, o) {
              this._eventRegistry = this._eventRegistry || {}, !(a = this._eventRegistry[a]) || (o = a.indexOf(o)) !== -1 && a.splice(o, 1);
            }, d.removeAllListeners = function(a) {
              a || (this._eventRegistry = this._defaultHandlers = void 0), this._eventRegistry && (this._eventRegistry[a] = void 0), this._defaultHandlers && (this._defaultHandlers[a] = void 0);
            }, m.EventEmitter = d;
          }), ace.define("ace/lib/app_config", ["require", "exports", "module", "ace/lib/oop", "ace/lib/event_emitter"], function(j, m, E) {
            function b(e) {
              typeof console < "u" && console.warn && console.warn.apply(console, arguments);
            }
            function w(e, t) {
              var i = new Error(e);
              i.data = t, typeof console == "object" && console.error && console.error(i), setTimeout(function() {
                throw i;
              });
            }
            var d = j("./oop"), a = j("./event_emitter").EventEmitter, o = { setOptions: function(e) {
              Object.keys(e).forEach(function(t) {
                this.setOption(t, e[t]);
              }, this);
            }, getOptions: function(e) {
              var t, i = {};
              return e ? Array.isArray(e) || (i = e, e = Object.keys(i)) : (t = this.$options, e = Object.keys(t).filter(function(s) {
                return !t[s].hidden;
              })), e.forEach(function(s) {
                i[s] = this.getOption(s);
              }, this), i;
            }, setOption: function(e, t) {
              if (this["$" + e] !== t) {
                var i = this.$options[e];
                return i ? i.forwardTo ? this[i.forwardTo] && this[i.forwardTo].setOption(e, t) : (i.handlesSet || (this["$" + e] = t), void (i && i.set && i.set.call(this, t))) : b('misspelled option "' + e + '"');
              }
            }, getOption: function(e) {
              var t = this.$options[e];
              return t ? t.forwardTo ? this[t.forwardTo] && this[t.forwardTo].getOption(e) : t && t.get ? t.get.call(this) : this["$" + e] : b('misspelled option "' + e + '"');
            } };
            j = function() {
              this.$defaultOptions = {};
            }, (function() {
              d.implement(this, a), this.defineOptions = function(e, t, i) {
                return e.$options || (this.$defaultOptions[t] = e.$options = {}), Object.keys(i).forEach(function(s) {
                  var h = i[s];
                  (h = typeof h == "string" ? { forwardTo: h } : h).name || (h.name = s), "initialValue" in (e.$options[h.name] = h) && (e["$" + h.name] = h.initialValue);
                }), d.implement(e, o), this;
              }, this.resetOptions = function(e) {
                Object.keys(e.$options).forEach(function(t) {
                  var i = e.$options[t];
                  "value" in i && e.setOption(t, i.value);
                });
              }, this.setDefaultValue = function(e, t, i) {
                if (!e) {
                  for (e in this.$defaultOptions) if (this.$defaultOptions[e][t]) break;
                  if (!this.$defaultOptions[e][t]) return !1;
                }
                var s = this.$defaultOptions[e] || (this.$defaultOptions[e] = {});
                s[t] && (s.forwardTo ? this.setDefaultValue(s.forwardTo, t, i) : s[t].value = i);
              }, this.setDefaultValues = function(e, t) {
                Object.keys(t).forEach(function(i) {
                  this.setDefaultValue(e, i, t[i]);
                }, this);
              }, this.warn = b, this.reportError = w;
            }).call(j.prototype), m.AppConfig = j;
          }), ace.define("ace/config", ["require", "exports", "module", "ace/lib/lang", "ace/lib/oop", "ace/lib/net", "ace/lib/app_config"], function(j, m, E) {
            function b(i) {
              if (o && o.document) {
                e.packaged = i || j.packaged || E.packaged || o.define && D.amdD.packaged;
                for (var s, h = {}, r = "", i = document.currentScript || document._currentScript, p = (i && i.ownerDocument || document).getElementsByTagName("script"), l = 0; l < p.length; l++) {
                  var I = p[l], f = I.src || I.getAttribute("src");
                  if (f) {
                    for (var n = I.attributes, g = 0, C = n.length; g < C; g++) {
                      var y = n[g];
                      y.name.indexOf("data-ace-") === 0 && (h[y.name.replace(/^data-ace-/, "").replace(/-(.)/g, function(v, k) {
                        return k.toUpperCase();
                      })] = y.value);
                    }
                    f = f.match(/^(.*)\/ace(\-\w+)?\.js(\?|$)/), f && (r = f[1]);
                  }
                }
                for (s in r && (h.base = h.base || r, h.packaged = !0), h.basePath = h.base, h.workerPath = h.workerPath || h.base, h.modePath = h.modePath || h.base, h.themePath = h.themePath || h.base, delete h.base, h) h[s] !== void 0 && m.set(s, h[s]);
              }
            }
            var w = j("./lib/lang"), d = (j("./lib/oop"), j("./lib/net")), a = j("./lib/app_config").AppConfig;
            E.exports = m = new a();
            var o = /* @__PURE__ */ function() {
              return this || typeof window < "u" && window;
            }(), e = { packaged: !1, workerPath: null, modePath: null, themePath: null, basePath: "", suffix: ".js", $moduleUrls: {}, loadWorkerFromBlob: !0, sharedPopups: !1 };
            m.get = function(i) {
              if (!e.hasOwnProperty(i)) throw new Error("Unknown config key: " + i);
              return e[i];
            }, m.set = function(i, s) {
              if (e.hasOwnProperty(i)) e[i] = s;
              else if (this.setDefaultValue("", i, s) == 0) throw new Error("Unknown config key: " + i);
            }, m.all = function() {
              return w.copyObject(e);
            }, m.$modes = {}, m.moduleUrl = function(i, s) {
              if (e.$moduleUrls[i]) return e.$moduleUrls[i];
              var h = i.split("/"), r = (s = s || h[h.length - 2] || "") == "snippets" ? "/" : "-", p = h[h.length - 1];
              return s == "worker" && r == "-" && (i = new RegExp("^" + s + "[\\-_]|[\\-_]" + s + "$", "g"), p = p.replace(i, "")), (!p || p == s) && 1 < h.length && (p = h[h.length - 2]), h = e[s + "Path"], h == null ? h = e.basePath : r == "/" && (s = r = ""), h && h.slice(-1) != "/" && (h += "/"), h + s + r + p + this.get("suffix");
            }, m.setModuleUrl = function(i, s) {
              return e.$moduleUrls[i] = s;
            }, m.$loading = {}, m.loadModule = function(i, s) {
              var h, r;
              Array.isArray(i) && (r = i[0], i = i[1]);
              try {
                h = j(i);
              } catch {
              }
              if (h && !m.$loading[i]) return s && s(h);
              if (m.$loading[i] || (m.$loading[i] = []), m.$loading[i].push(s), !(1 < m.$loading[i].length)) {
                if (s = function() {
                  j([i], function(p) {
                    m._emit("load.module", { name: i, module: p });
                    var l = m.$loading[i];
                    m.$loading[i] = null, l.forEach(function(I) {
                      I && I(p);
                    });
                  });
                }, !m.get("packaged")) return s();
                d.loadScript(m.moduleUrl(i, r), s), t();
              }
            };
            var t = function() {
              e.basePath || e.workerPath || e.modePath || e.themePath || Object.keys(e.$moduleUrls).length || (console.error("Unable to infer path to ace from script src,", "use ace.config.set('basePath', 'path') to enable dynamic loading of modes and themes", "or with webpack use ace/webpack-resolver"), t = function() {
              });
            };
            b(!0), m.init = b, m.version = "1.4.12";
          }), 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/mouse/touch_handler", "ace/config"], function(s, m, E) {
            var b = s("../lib/event"), w = s("../lib/useragent"), d = s("./default_handlers").DefaultHandlers, a = s("./default_gutter_handler").GutterHandler, o = s("./mouse_event").MouseEvent, e = s("./dragdrop_handler").DragdropHandler, t = s("./touch_handler").addTouchListeners, i = s("../config"), s = function(h) {
              function r(f) {
                document.hasFocus && document.hasFocus() && (h.isFocused() || document.activeElement != (h.textInput && h.textInput.getElement())) || window.focus(), h.focus();
              }
              var p = this;
              this.editor = h, new d(this), new a(this), new e(this);
              var l = h.renderer.getMouseEventTarget();
              b.addListener(l, "click", this.onMouseEvent.bind(this, "click"), h), b.addListener(l, "mousemove", this.onMouseMove.bind(this, "mousemove"), h), b.addMultiMouseDownListener([l, h.renderer.scrollBarV && h.renderer.scrollBarV.inner, h.renderer.scrollBarH && h.renderer.scrollBarH.inner, h.textInput && h.textInput.getElement()].filter(Boolean), [400, 300, 250], this, "onMouseEvent", h), b.addMouseWheelListener(h.container, this.onMouseWheel.bind(this, "mousewheel"), h), t(h.container, h);
              var I = h.renderer.$gutter;
              b.addListener(I, "mousedown", this.onMouseEvent.bind(this, "guttermousedown"), h), b.addListener(I, "click", this.onMouseEvent.bind(this, "gutterclick"), h), b.addListener(I, "dblclick", this.onMouseEvent.bind(this, "gutterdblclick"), h), b.addListener(I, "mousemove", this.onMouseEvent.bind(this, "guttermousemove"), h), b.addListener(l, "mousedown", r, h), b.addListener(I, "mousedown", r, h), w.isIE && h.renderer.scrollBarV && (b.addListener(h.renderer.scrollBarV.element, "mousedown", r, h), b.addListener(h.renderer.scrollBarH.element, "mousedown", r, h)), h.on("mousemove", function(f) {
                var n, g;
                p.state || p.$dragDelay || !p.$dragEnabled || (n = h.renderer.screenToTextCoordinates(f.x, f.y), g = h.session.selection.getRange(), f = h.renderer, !g.isEmpty() && g.insideStart(n.row, n.column) ? f.setCursorStyle("default") : f.setCursorStyle(""));
              }, h);
            };
            (function() {
              this.onMouseEvent = function(h, r) {
                this.editor._emit(h, new o(r, this.editor));
              }, this.onMouseMove = function(h, r) {
                var p = this.editor._eventRegistry && this.editor._eventRegistry.mousemove;
                p && p.length && this.editor._emit(h, new o(r, this.editor));
              }, this.onMouseWheel = function(h, r) {
                var p = new o(r, this.editor);
                p.speed = 2 * this.$scrollSpeed, p.wheelX = r.wheelX, p.wheelY = r.wheelY, this.editor._emit(h, p);
              }, this.setState = function(h) {
                this.state = h;
              }, this.captureMouse = function(h, r) {
                function p(c) {
                  if (c) {
                    if (w.isWebKit && !c.which && n.releaseMouse) return n.releaseMouse();
                    n.x = c.clientX, n.y = c.clientY, r && r(c), n.mouseEvent = new o(c, n.editor), n.$mouseMoved = !0;
                  }
                }
                function l(c) {
                  I.off("beforeEndOperation", C), clearInterval(y), g(), n[n.state + "End"] && n[n.state + "End"](c), n.state = "", n.isMousePressed = f.$isMousePressed = !1, f.$keepTextAreaAtCursor && f.$moveTextAreaToCursor(), n.$onCaptureMouseMove = n.releaseMouse = null, c && n.onMouseEvent("mouseup", c), I.endOperation();
                }
                this.x = h.x, this.y = h.y, this.isMousePressed = !0;
                var I = this.editor, f = this.editor.renderer;
                f.$isMousePressed = !0;
                var n = this, g = function() {
                  n[n.state] && n[n.state](), n.$mouseMoved = !1;
                };
                if (w.isOldIE && h.domEvent.type == "dblclick") return setTimeout(function() {
                  l(h);
                });
                var C = function(c) {
                  n.releaseMouse && I.curOp.command.name && I.curOp.selectionChanged && (n[n.state + "End"] && n[n.state + "End"](), n.state = "", n.releaseMouse());
                };
                I.on("beforeEndOperation", C), I.startOperation({ command: { name: "mouse" } }), n.$onCaptureMouseMove = p, n.releaseMouse = b.capture(this.editor.container, p, l);
                var y = setInterval(g, 20);
              }, this.releaseMouse = null, this.cancelContextMenu = function() {
                var h = (function(r) {
                  r && r.domEvent && r.domEvent.type != "contextmenu" || (this.editor.off("nativecontextmenu", h), r && r.domEvent && b.stopEvent(r.domEvent));
                }).bind(this);
                setTimeout(h, 10), this.editor.on("nativecontextmenu", h);
              }, this.destroy = function() {
                this.releaseMouse && this.releaseMouse();
              };
            }).call(s.prototype), i.defineOptions(s.prototype, "mouseHandler", { scrollSpeed: { initialValue: 2 }, dragDelay: { initialValue: w.isMac ? 150 : 0 }, dragEnabled: { initialValue: !0 }, focusTimeout: { initialValue: 0 }, tooltipFollowsMouse: { initialValue: !0 } }), m.MouseHandler = s;
          }), ace.define("ace/mouse/fold_handler", ["require", "exports", "module", "ace/lib/dom"], function(j, m, E) {
            var b = j("../lib/dom");
            m.FoldHandler = function(w) {
              w.on("click", function(d) {
                var o = d.getDocumentPosition(), a = w.session, o = a.getFoldAt(o.row, o.column, 1);
                o && (d.getAccelKey() ? a.removeFold(o) : a.expandFold(o), d.stop()), (d = d.domEvent && d.domEvent.target) && b.hasCssClass(d, "ace_inline_button") && b.hasCssClass(d, "ace_toggle_wrap") && (a.setOption("wrap", !a.getUseWrapMode()), w.renderer.scrollCursorIntoView());
              }), w.on("gutterclick", function(d) {
                var a, o;
                w.renderer.$gutterLayer.getRegion(d) == "foldWidgets" && (a = d.getDocumentPosition().row, (o = w.session).foldWidgets && o.foldWidgets[a] && w.session.onFoldWidgetClick(a, d), w.isFocused() || w.focus(), d.stop());
              }), w.on("gutterdblclick", function(d) {
                var a, o, e;
                w.renderer.$gutterLayer.getRegion(d) == "foldWidgets" && (e = d.getDocumentPosition().row, (o = (o = (a = w.session).getParentFoldRangeData(e, !0)).range || o.firstRange) && (e = o.start.row, (e = a.getFoldAt(e, a.getLine(e).length, 1)) ? a.removeFold(e) : (a.addFold("...", o), w.renderer.scrollCursorIntoView({ row: o.start.row, column: 0 }))), d.stop());
              });
            };
          }), ace.define("ace/keyboard/keybinding", ["require", "exports", "module", "ace/lib/keys", "ace/lib/event"], function(d, m, E) {
            var b = d("../lib/keys"), w = d("../lib/event"), d = function(a) {
              this.$editor = a, this.$data = { editor: a }, this.$handlers = [], this.setDefaultHandler(a.commands);
            };
            (function() {
              this.setDefaultHandler = function(a) {
                this.removeKeyboardHandler(this.$defaultHandler), this.$defaultHandler = a, this.addKeyboardHandler(a, 0);
              }, this.setKeyboardHandler = function(a) {
                var o = this.$handlers;
                if (o[o.length - 1] != a) {
                  for (; o[o.length - 1] && o[o.length - 1] != this.$defaultHandler; ) this.removeKeyboardHandler(o[o.length - 1]);
                  this.addKeyboardHandler(a, 1);
                }
              }, this.addKeyboardHandler = function(a, o) {
                var e;
                a && (typeof a != "function" || a.handleKeyboard || (a.handleKeyboard = a), (e = this.$handlers.indexOf(a)) != -1 && this.$handlers.splice(e, 1), o == null ? this.$handlers.push(a) : this.$handlers.splice(o, 0, a), e == -1 && a.attach && a.attach(this.$editor));
              }, this.removeKeyboardHandler = function(a) {
                var o = this.$handlers.indexOf(a);
                return o != -1 && (this.$handlers.splice(o, 1), a.detach && a.detach(this.$editor), !0);
              }, this.getKeyboardHandler = function() {
                return this.$handlers[this.$handlers.length - 1];
              }, this.getStatusText = function() {
                var a = this.$data, o = a.editor;
                return this.$handlers.map(function(e) {
                  return e.getStatusText && e.getStatusText(o, a) || "";
                }).filter(Boolean).join(" ");
              }, this.$callKeyboardHandlers = function(a, o, e, t) {
                for (var i, s = !1, h = this.$editor.commands, r = this.$handlers.length; r-- && !((i = this.$handlers[r].handleKeyboard(this.$data, a, o, e, t)) && i.command && ((s = i.command == "null" || h.exec(i.command, this.$editor, i.args, t)) && t && a != -1 && i.passEvent != 1 && i.command.passEvent != 1 && w.stopEvent(t), s)); ) ;
                return s || a != -1 || (i = { command: "insertstring" }, s = h.exec("insertstring", this.$editor, o)), s && this.$editor._signal && this.$editor._signal("keyboardActivity", i), s;
              }, this.onCommandKey = function(a, o, e) {
                var t = b.keyCodeToString(e);
                return this.$callKeyboardHandlers(o, t, e, a);
              }, this.onTextInput = function(a) {
                return this.$callKeyboardHandlers(-1, a);
              };
            }).call(d.prototype), m.KeyBinding = d;
          }), ace.define("ace/lib/bidiutil", ["require", "exports", "module"], function(j, m, E) {
            function b(U, q, ee, J) {
              var de, R, T, N, A = a ? h : s, x = 0, M = -1, Z = null, G = null, $ = [];
              if (!J) for (Z = 0, J = []; Z < ee; Z++) J[Z] = d(U[Z]);
              for (o = a, i = t = e = !1, G = 0; G < ee; G++) {
                if (de = x, $[G] = R = function(te, se, le, ce) {
                  var ue, ge, ae, fe = se[ce];
                  switch (fe) {
                    case r:
                    case p:
                      e = !1;
                    case f:
                    case I:
                      return fe;
                    case l:
                      return e ? I : l;
                    case C:
                      return e = !0, p;
                    case y:
                      return f;
                    case c:
                      return ce < 1 || ce + 1 >= se.length || (ue = le[ce - 1]) != l && ue != I || (we = se[ce + 1]) != l && we != I ? f : (we = e ? I : we) == ue ? we : f;
                    case v:
                      return (ue = 0 < ce ? le[ce - 1] : n) == l && ce + 1 < se.length && se[ce + 1] == l ? l : f;
                    case k:
                      if (0 < ce && le[ce - 1] == l) return l;
                      if (e) return f;
                      for (ae = ce + 1, ge = se.length; ae < ge && se[ae] == k; ) ae++;
                      return ae < ge && se[ae] == l ? l : f;
                    case S:
                      for (ge = se.length, ae = ce + 1; ae < ge && se[ae] == S; ) ae++;
                      if (ae < ge) {
                        var we = te[ce], we = 1425 <= we && we <= 2303 || we == 64286;
                        if (ue = se[ae], we && (ue == p || ue == C)) return p;
                      }
                      return ce < 1 || (ue = se[ce - 1]) == n ? f : le[ce - 1];
                    case n:
                      return t = !(e = !1), a;
                    case g:
                      return i = !0, f;
                    case L:
                    case W:
                    case O:
                    case z:
                    case _:
                      e = !1;
                    case H:
                      return f;
                  }
                }(U, J, $, G), N = 240 & (x = A[de][R]), x &= 15, q[G] = T = A[x][5], 0 < N) if (N == 16) {
                  for (Z = M; Z < G; Z++) q[Z] = 1;
                  M = -1;
                } else M = -1;
                if (A[x][6]) M == -1 && (M = G);
                else if (-1 < M) {
                  for (Z = M; Z < G; Z++) q[Z] = T;
                  M = -1;
                }
                J[G] == n && (q[G] = 0), o |= T;
              }
              if (i) {
                for (Z = 0; Z < ee; Z++) if (J[Z] == g) {
                  q[Z] = a;
                  for (var X = Z - 1; 0 <= X && J[X] == y; X--) q[X] = a;
                }
              }
            }
            function w(U, q, ee) {
              if (!(o < U)) if (U != 1 || a != 1 || t) for (var J, de, R, T, N = ee.length, A = 0; A < N; ) {
                if (q[A] >= U) {
                  for (J = A + 1; J < N && q[J] >= U; ) J++;
                  for (de = A, R = J - 1; de < R; de++, R--) T = ee[de], ee[de] = ee[R], ee[R] = T;
                  A = J;
                }
                A++;
              }
              else ee.reverse();
            }
            function d(U) {
              var q = U.charCodeAt(0), ee = q >> 8;
              return ee == 0 ? 191 < q ? r : Y[q] : ee == 5 ? /[\u0591-\u05f4]/.test(U) ? p : r : ee == 6 ? /[\u0610-\u061a\u064b-\u065f\u06d6-\u06e4\u06e7-\u06ed]/.test(U) ? S : /[\u0660-\u0669\u066b-\u066c]/.test(U) ? I : q == 1642 ? k : /[\u06f0-\u06f9]/.test(U) ? l : C : ee == 32 && q <= 8287 ? ie[255 & q] : ee == 254 && 65136 <= q ? C : f;
            }
            var a = 0, o = 0, e = !1, t = !1, i = !1, s = [[0, 3, 0, 1, 0, 0, 0], [0, 3, 0, 1, 2, 2, 0], [0, 3, 0, 17, 2, 0, 1], [0, 3, 5, 5, 4, 1, 0], [0, 3, 21, 21, 4, 0, 1], [0, 3, 5, 5, 4, 2, 0]], h = [[2, 0, 1, 1, 0, 1, 0], [2, 0, 1, 1, 0, 2, 0], [2, 0, 2, 1, 3, 2, 0], [2, 0, 2, 33, 3, 1, 1]], r = 0, p = 1, l = 2, I = 3, f = 4, n = 5, g = 6, C = 7, y = 8, c = 9, v = 10, k = 11, S = 12, L = 13, W = 14, _ = 15, O = 16, z = 17, H = 18, Y = [H, H, H, H, H, H, H, H, H, g, n, g, y, n, H, H, H, H, H, H, H, H, H, H, H, H, H, H, n, n, n, g, y, f, f, k, k, k, f, f, f, f, f, v, c, v, c, c, l, l, l, l, l, l, l, l, l, l, c, f, f, f, f, f, f, r, r, r, r, r, r, r, r, r, r, r, r, r, r, r, r, r, r, r, r, r, r, r, r, r, r, f, f, f, f, f, f, r, r, r, r, r, r, r, r, r, r, r, r, r, r, r, r, r, r, r, r, r, r, r, r, r, r, f, f, f, f, H, H, H, H, H, H, n, H, H, H, H, H, H, H, H, H, H, H, H, H, H, H, H, H, H, H, H, H, H, H, H, H, H, c, f, k, k, k, k, f, f, f, f, r, f, f, H, f, f, k, k, l, l, f, r, f, f, f, l, r, f, f, f, f, f], ie = [y, y, y, y, y, y, y, y, y, y, y, H, H, H, r, p, f, f, f, f, f, f, f, f, f, f, f, f, f, f, f, f, f, f, f, f, f, f, f, f, y, n, L, W, _, O, z, c, k, k, k, k, k, f, f, f, f, f, f, f, f, f, f, f, f, f, f, f, c, f, f, f, f, f, f, f, f, f, f, f, f, f, f, f, f, f, f, f, f, f, f, f, f, f, f, y];
            m.L = r, m.R = p, m.EN = l, m.ON_R = 3, m.AN = 4, m.R_H = 5, m.B = 6, m.RLE = 7, m.DOT = "·", m.doBidiReorder = function(U, q, ee) {
              if (U.length < 2) return {};
              var J = U.split(""), de = new Array(J.length), R = new Array(J.length), T = [];
              a = ee ? 1 : 0, b(J, T, J.length, q);
              for (var N = 0; N < de.length; de[N] = N, N++) ;
              for (w(2, T, de), w(1, T, de), N = 0; N < de.length - 1; N++) q[N] === I ? T[N] = m.AN : T[N] === p && (q[N] > C && q[N] < L || q[N] === f || q[N] === H) ? T[N] = m.ON_R : 0 < N && J[N - 1] === "ل" && /\u0622|\u0623|\u0625|\u0627/.test(J[N]) && (T[N - 1] = T[N] = m.R_H, N++);
              for (J[J.length - 1] === m.DOT && (T[J.length - 1] = m.B), J[0] === "‫" && (T[0] = m.RLE), N = 0; N < de.length; N++) R[N] = T[de[N]];
              return { logicalFromVisual: de, bidiLevels: R };
            }, m.hasBidiCharacters = function(U, q) {
              for (var ee = !1, J = 0; J < U.length; J++) q[J] = d(U.charAt(J)), ee || q[J] != p && q[J] != C && q[J] != I || (ee = !0);
              return ee;
            }, m.getVisualFromLogicalIdx = function(U, q) {
              for (var ee = 0; ee < q.logicalFromVisual.length; ee++) if (q.logicalFromVisual[ee] == U) return ee;
              return 0;
            };
          }), ace.define("ace/bidihandler", ["require", "exports", "module", "ace/lib/bidiutil", "ace/lib/lang"], function(a, m, E) {
            var b = a("./lib/bidiutil"), w = a("./lib/lang"), d = /[\u0590-\u05f4\u0600-\u06ff\u0700-\u08ac\u202B]/, a = function(o) {
              this.session = o, this.bidiMap = {}, this.currentRow = null, this.bidiUtil = b, this.charWidths = [], this.EOL = "¬", this.showInvisibles = !0, this.isRtlDir = !1, this.$isRtl = !1, this.line = "", this.wrapIndent = 0, this.EOF = "¶", this.RLE = "‫", this.contentWidth = 0, this.fontMetrics = null, this.rtlLineOffset = 0, this.wrapOffset = 0, this.isMoveLeftOperation = !1, this.seenBidi = d.test(o.getValue());
            };
            (function() {
              this.isBidiRow = function(o, e, t) {
                return !!this.seenBidi && (o !== this.currentRow && (this.currentRow = o, this.updateRowLine(e, t), this.updateBidiMap()), this.bidiMap.bidiLevels);
              }, this.onChange = function(o) {
                this.seenBidi ? this.currentRow = null : o.action == "insert" && d.test(o.lines.join(`
`)) && (this.seenBidi = !0, this.currentRow = null);
              }, this.getDocumentRow = function() {
                var o = 0, e = this.session.$screenRowCache;
                return !e.length || 0 <= (e = this.session.$getRowCacheIndex(e, this.currentRow)) && (o = this.session.$docRowCache[e]), o;
              }, this.getSplitIndex = function() {
                var o = 0, e = this.session.$screenRowCache;
                if (e.length) for (var t, i = this.session.$getRowCacheIndex(e, this.currentRow); 0 < this.currentRow - o && (t = this.session.$getRowCacheIndex(e, this.currentRow - o - 1)) === i; ) i = t, o++;
                else o = this.currentRow;
                return o;
              }, this.updateRowLine = function(o, e) {
                var t = (o = o === void 0 ? this.getDocumentRow() : o) === this.session.getLength() - 1 ? this.EOF : this.EOL;
                this.wrapIndent = 0, this.line = this.session.getLine(o), this.isRtlDir = this.$isRtl || this.line.charAt(0) === this.RLE, this.session.$useWrapMode ? ((o = this.session.$wrapData[o]) && (0 < (e = e === void 0 ? this.getSplitIndex() : e) && o.length ? (this.wrapIndent = o.indent, this.wrapOffset = this.wrapIndent * this.charWidths[b.L], this.line = e < o.length ? this.line.substring(o[e - 1], o[e]) : this.line.substring(o[o.length - 1])) : this.line = this.line.substring(0, o[e])), e == o.length && (this.line += this.showInvisibles ? t : b.DOT)) : this.line += this.showInvisibles ? t : b.DOT;
                var i, s = this.session, h = 0;
                this.line = this.line.replace(/\t|[\u1100-\u2029, \u202F-\uFFE6]/g, function(r, p) {
                  return r === "	" || s.isFullWidth(r.charCodeAt(0)) ? (i = r === "	" ? s.getScreenTabSize(p + h) : 2, h += i - 1, w.stringRepeat(b.DOT, i)) : r;
                }), this.isRtlDir && (this.fontMetrics.$main.textContent = this.line.charAt(this.line.length - 1) == b.DOT ? this.line.substr(0, this.line.length - 1) : this.line, this.rtlLineOffset = this.contentWidth - this.fontMetrics.$main.getBoundingClientRect().width);
              }, this.updateBidiMap = function() {
                var o = [];
                b.hasBidiCharacters(this.line, o) || this.isRtlDir ? this.bidiMap = b.doBidiReorder(this.line, o, this.isRtlDir) : this.bidiMap = {};
              }, this.markAsDirty = function() {
                this.currentRow = null;
              }, this.updateCharacterWidths = function(o) {
                var e;
                this.characterWidth !== o.$characterSize.width && (this.fontMetrics = o, e = this.characterWidth = o.$characterSize.width, o = o.$measureCharWidth("ה"), this.charWidths[b.L] = this.charWidths[b.EN] = this.charWidths[b.ON_R] = e, this.charWidths[b.R] = this.charWidths[b.AN] = o, this.charWidths[b.R_H] = 0.45 * o, this.charWidths[b.B] = this.charWidths[b.RLE] = 0, this.currentRow = null);
              }, this.setShowInvisibles = function(o) {
                this.showInvisibles = o, this.currentRow = null;
              }, this.setEolChar = function(o) {
                this.EOL = o;
              }, this.setContentWidth = function(o) {
                this.contentWidth = o;
              }, this.isRtlLine = function(o) {
                return !!this.$isRtl || (o != null ? this.session.getLine(o).charAt(0) == this.RLE : this.isRtlDir);
              }, this.setRtlDirection = function(o, e) {
                for (var t = o.getCursorPosition(), i = o.selection.getSelectionAnchor().row; i <= t.row; i++) e || o.session.getLine(i).charAt(0) !== o.session.$bidiHandler.RLE ? e && o.session.getLine(i).charAt(0) !== o.session.$bidiHandler.RLE && o.session.doc.insert({ column: 0, row: i }, o.session.$bidiHandler.RLE) : o.session.doc.removeInLine(i, 0, 1);
              }, this.getPosLeft = function(o) {
                o -= this.wrapIndent;
                var e = this.line.charAt(0) === this.RLE ? 1 : 0, t = e < o ? this.session.getOverwrite() ? o : o - 1 : e, i = b.getVisualFromLogicalIdx(t, this.bidiMap), s = this.bidiMap.bidiLevels, h = 0;
                !this.session.getOverwrite() && o <= e && s[i] % 2 != 0 && i++;
                for (var r = 0; r < i; r++) h += this.charWidths[s[r]];
                return !this.session.getOverwrite() && e < o && s[i] % 2 == 0 && (h += this.charWidths[s[i]]), this.wrapIndent && (h += this.isRtlDir ? -1 * this.wrapOffset : this.wrapOffset), this.isRtlDir && (h += this.rtlLineOffset), h;
              }, this.getSelections = function(o, e) {
                var t, i = this.bidiMap, s = i.bidiLevels, h = [], r = 0, p = Math.min(o, e) - this.wrapIndent, l = Math.max(o, e) - this.wrapIndent, I = !1, f = !1, n = 0;
                this.wrapIndent && (r += this.isRtlDir ? -1 * this.wrapOffset : this.wrapOffset);
                for (var g, C = 0; C < s.length; C++) g = i.logicalFromVisual[C], t = s[C], (I = p <= g && g < l) && !f ? n = r : !I && f && h.push({ left: n, width: r - n }), r += this.charWidths[t], f = I;
                if (I && C === s.length && h.push({ left: n, width: r - n }), this.isRtlDir) for (var y = 0; y < h.length; y++) h[y].left += this.rtlLineOffset;
                return h;
              }, this.offsetToCol = function(t) {
                this.isRtlDir && (t -= this.rtlLineOffset);
                var e = 0, t = Math.max(t, 0), i = 0, s = 0, h = this.bidiMap.bidiLevels, r = this.charWidths[h[s]];
                for (this.wrapIndent && (t -= this.isRtlDir ? -1 * this.wrapOffset : this.wrapOffset); i + r / 2 < t; ) {
                  if (i += r, s === h.length - 1) {
                    r = 0;
                    break;
                  }
                  r = this.charWidths[h[++s]];
                }
                return (e = 0 < s && h[s - 1] % 2 != 0 && h[s] % 2 == 0 ? (t < i && s--, this.bidiMap.logicalFromVisual[s]) : 0 < s && h[s - 1] % 2 == 0 && h[s] % 2 != 0 ? 1 + (i < t ? this.bidiMap.logicalFromVisual[s] : this.bidiMap.logicalFromVisual[s - 1]) : this.isRtlDir && s === h.length - 1 && r === 0 && h[s - 1] % 2 == 0 || !this.isRtlDir && s === 0 && h[s] % 2 != 0 ? 1 + this.bidiMap.logicalFromVisual[s] : (0 < s && h[s - 1] % 2 != 0 && r !== 0 && s--, this.bidiMap.logicalFromVisual[s])) === 0 && this.isRtlDir && e++, e + this.wrapIndent;
              };
            }).call(a.prototype), m.BidiHandler = a;
          }), ace.define("ace/selection", ["require", "exports", "module", "ace/lib/oop", "ace/lib/lang", "ace/lib/event_emitter", "ace/range"], function(o, m, E) {
            var b = o("./lib/oop"), w = o("./lib/lang"), d = o("./lib/event_emitter").EventEmitter, a = o("./range").Range, o = function(e) {
              this.session = e, this.doc = e.getDocument(), this.clearSelection(), this.cursor = this.lead = this.doc.createAnchor(0, 0), this.anchor = this.doc.createAnchor(0, 0), this.$silent = !1;
              var t = this;
              this.cursor.on("change", function(i) {
                t.$cursorChanged = !0, t.$silent || t._emit("changeCursor"), t.$isEmpty || t.$silent || t._emit("changeSelection"), t.$keepDesiredColumnOnChange || i.old.column == i.value.column || (t.$desiredColumn = null);
              }), this.anchor.on("change", function() {
                t.$anchorChanged = !0, t.$isEmpty || t.$silent || t._emit("changeSelection");
              });
            };
            (function() {
              b.implement(this, d), this.isEmpty = function() {
                return this.$isEmpty || this.anchor.row == this.lead.row && this.anchor.column == this.lead.column;
              }, this.isMultiLine = function() {
                return !this.$isEmpty && this.anchor.row != this.cursor.row;
              }, this.getCursor = function() {
                return this.lead.getPosition();
              }, this.setSelectionAnchor = function(e, t) {
                this.$isEmpty = !1, this.anchor.setPosition(e, t);
              }, this.getAnchor = this.getSelectionAnchor = function() {
                return this.$isEmpty ? this.getSelectionLead() : this.anchor.getPosition();
              }, this.getSelectionLead = function() {
                return this.lead.getPosition();
              }, this.isBackwards = function() {
                var e = this.anchor, t = this.lead;
                return e.row > t.row || e.row == t.row && e.column > t.column;
              }, this.getRange = function() {
                var e = this.anchor, t = this.lead;
                return this.$isEmpty ? a.fromPoints(t, t) : this.isBackwards() ? a.fromPoints(t, e) : a.fromPoints(e, t);
              }, this.clearSelection = function() {
                this.$isEmpty || (this.$isEmpty = !0, this._emit("changeSelection"));
              }, this.selectAll = function() {
                this.$setSelection(0, 0, Number.MAX_VALUE, Number.MAX_VALUE);
              }, this.setRange = this.setSelectionRange = function(s, t) {
                var i = t ? s.end : s.start, s = t ? s.start : s.end;
                this.$setSelection(i.row, i.column, s.row, s.column);
              }, this.$setSelection = function(e, t, i, s) {
                var h, r;
                this.$silent || (h = this.$isEmpty, r = this.inMultiSelectMode, this.$silent = !0, this.$cursorChanged = this.$anchorChanged = !1, this.anchor.setPosition(e, t), this.cursor.setPosition(i, s), this.$isEmpty = !a.comparePoints(this.anchor, this.cursor), this.$silent = !1, this.$cursorChanged && this._emit("changeCursor"), (this.$cursorChanged || this.$anchorChanged || h != this.$isEmpty || r) && this._emit("changeSelection"));
              }, this.$moveSelection = function(e) {
                var t = this.lead;
                this.$isEmpty && this.setSelectionAnchor(t.row, t.column), e.call(this);
              }, this.selectTo = function(e, t) {
                this.$moveSelection(function() {
                  this.moveCursorTo(e, t);
                });
              }, this.selectToPosition = function(e) {
                this.$moveSelection(function() {
                  this.moveCursorToPosition(e);
                });
              }, this.moveTo = function(e, t) {
                this.clearSelection(), this.moveCursorTo(e, t);
              }, this.moveToPosition = function(e) {
                this.clearSelection(), this.moveCursorToPosition(e);
              }, 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(e, t) {
                var i;
                return t === void 0 && (e = (i = e || this.lead).row, t = i.column), this.session.getWordRange(e, t);
              }, this.selectWord = function() {
                this.setSelectionRange(this.getWordRange());
              }, this.selectAWord = function() {
                var e = this.getCursor(), e = this.session.getAWordRange(e.row, e.column);
                this.setSelectionRange(e);
              }, this.getLineRange = function(s, t) {
                var i = typeof s == "number" ? s : this.lead.row, s = this.session.getFoldLine(i), s = s ? (i = s.start.row, s.end.row) : i;
                return t === !0 ? new a(i, 0, s, this.session.getLine(s).length) : new a(i, 0, s + 1, 0);
              }, this.selectLine = function() {
                this.setSelectionRange(this.getLineRange());
              }, this.moveCursorUp = function() {
                this.moveCursorBy(-1, 0);
              }, this.moveCursorDown = function() {
                this.moveCursorBy(1, 0);
              }, this.wouldMoveIntoSoftTab = function(e, t, i) {
                var s = e.column, h = e.column + t;
                return i < 0 && (s = e.column - t, h = e.column), this.session.isTabStop(e) && this.doc.getLine(e.row).slice(s, h).split(" ").length - 1 == t;
              }, this.moveCursorLeft = function() {
                var e, t = this.lead.getPosition();
                (e = this.session.getFoldAt(t.row, t.column, -1)) ? this.moveCursorTo(e.start.row, e.start.column) : t.column === 0 ? 0 < t.row && this.moveCursorTo(t.row - 1, this.doc.getLine(t.row - 1).length) : (e = this.session.getTabSize(), this.wouldMoveIntoSoftTab(t, e, -1) && !this.session.getNavigateWithinSoftTabs() ? this.moveCursorBy(0, -e) : this.moveCursorBy(0, -1));
              }, this.moveCursorRight = function() {
                var e, t = this.lead.getPosition();
                (e = this.session.getFoldAt(t.row, t.column, 1)) ? this.moveCursorTo(e.end.row, e.end.column) : this.lead.column == this.doc.getLine(this.lead.row).length ? this.lead.row < this.doc.getLength() - 1 && this.moveCursorTo(this.lead.row + 1, 0) : (e = this.session.getTabSize(), t = this.lead, this.wouldMoveIntoSoftTab(t, e, 1) && !this.session.getNavigateWithinSoftTabs() ? this.moveCursorBy(0, e) : this.moveCursorBy(0, 1));
              }, this.moveCursorLineStart = function() {
                var i = this.lead.row, e = this.lead.column, t = this.session.documentToScreenRow(i, e), t = this.session.screenToDocumentPosition(t, 0), i = this.session.getDisplayLine(i, null, t.row, t.column).match(/^\s*/);
                i[0].length == e || this.session.$useEmacsStyleLineStart || (t.column += i[0].length), this.moveCursorToPosition(t);
              }, this.moveCursorLineEnd = function() {
                var e = this.lead, t = this.session.getDocumentLastRowColumnPosition(e.row, e.column);
                this.lead.column == t.column && (e = this.session.getLine(t.row), t.column != e.length || 0 < (e = e.search(/\s+$/)) && (t.column = e)), this.moveCursorTo(t.row, t.column);
              }, this.moveCursorFileEnd = function() {
                var e = this.doc.getLength() - 1, t = this.doc.getLine(e).length;
                this.moveCursorTo(e, t);
              }, this.moveCursorFileStart = function() {
                this.moveCursorTo(0, 0);
              }, this.moveCursorLongWordRight = function() {
                var e = this.lead.row, t = this.lead.column, i = this.doc.getLine(e), s = i.substring(t);
                this.session.nonTokenRe.lastIndex = 0, this.session.tokenRe.lastIndex = 0;
                var h = this.session.getFoldAt(e, t, 1);
                if (h) this.moveCursorTo(h.end.row, h.end.column);
                else {
                  if (this.session.nonTokenRe.exec(s) && (t += this.session.nonTokenRe.lastIndex, this.session.nonTokenRe.lastIndex = 0, s = i.substring(t)), t >= i.length) return this.moveCursorTo(e, i.length), this.moveCursorRight(), void (e < this.doc.getLength() - 1 && this.moveCursorWordRight());
                  this.session.tokenRe.exec(s) && (t += this.session.tokenRe.lastIndex, this.session.tokenRe.lastIndex = 0), this.moveCursorTo(e, t);
                }
              }, this.moveCursorLongWordLeft = function() {
                var e = this.lead.row, t = this.lead.column;
                if (i = this.session.getFoldAt(e, t, -1)) this.moveCursorTo(i.start.row, i.start.column);
                else {
                  var i = this.session.getFoldStringAt(e, t, -1);
                  if (i == null && (i = this.doc.getLine(e).substring(0, t)), i = w.stringReverse(i), this.session.nonTokenRe.lastIndex = 0, this.session.tokenRe.lastIndex = 0, this.session.nonTokenRe.exec(i) && (t -= this.session.nonTokenRe.lastIndex, i = i.slice(this.session.nonTokenRe.lastIndex), this.session.nonTokenRe.lastIndex = 0), t <= 0) return this.moveCursorTo(e, 0), this.moveCursorLeft(), void (0 < e && this.moveCursorWordLeft());
                  this.session.tokenRe.exec(i) && (t -= this.session.tokenRe.lastIndex, this.session.tokenRe.lastIndex = 0), this.moveCursorTo(e, t);
                }
              }, this.$shortWordEndIndex = function(e) {
                var t, i = 0, s = /\s/, h = this.session.tokenRe;
                if (h.lastIndex = 0, this.session.tokenRe.exec(e)) i = this.session.tokenRe.lastIndex;
                else {
                  for (; (t = e[i]) && s.test(t); ) i++;
                  if (i < 1) {
                    for (h.lastIndex = 0; (t = e[i]) && !h.test(t); ) if (h.lastIndex = 0, i++, s.test(t)) {
                      if (2 < i) {
                        i--;
                        break;
                      }
                      for (; (t = e[i]) && s.test(t); ) i++;
                      if (2 < i) break;
                    }
                  }
                }
                return h.lastIndex = 0, i;
              }, this.moveCursorShortWordRight = function() {
                var e = this.lead.row, t = this.lead.column, i = this.doc.getLine(e), s = i.substring(t), h = this.session.getFoldAt(e, t, 1);
                if (h) return this.moveCursorTo(h.end.row, h.end.column);
                if (t == i.length) {
                  for (var r = this.doc.getLength(); s = this.doc.getLine(++e), e < r && /^\s*$/.test(s); ) ;
                  /^\s+/.test(s) || (s = ""), t = 0;
                }
                i = this.$shortWordEndIndex(s), this.moveCursorTo(e, t + i);
              }, this.moveCursorShortWordLeft = function() {
                var e = this.lead.row, t = this.lead.column;
                if (s = this.session.getFoldAt(e, t, -1)) return this.moveCursorTo(s.start.row, s.start.column);
                var i = this.session.getLine(e).substring(0, t);
                if (t === 0) {
                  for (; i = this.doc.getLine(--e), 0 < e && /^\s*$/.test(i); ) ;
                  t = i.length, /\s+$/.test(i) || (i = "");
                }
                var s = w.stringReverse(i), s = this.$shortWordEndIndex(s);
                return this.moveCursorTo(e, t - s);
              }, this.moveCursorWordRight = function() {
                this.session.$selectLongWords ? this.moveCursorLongWordRight() : this.moveCursorShortWordRight();
              }, this.moveCursorWordLeft = function() {
                this.session.$selectLongWords ? this.moveCursorLongWordLeft() : this.moveCursorShortWordLeft();
              }, this.moveCursorBy = function(e, t) {
                var i, s = this.session.documentToScreenPosition(this.lead.row, this.lead.column);
                t === 0 && (e !== 0 && (this.session.$bidiHandler.isBidiRow(s.row, this.lead.row) ? (h = this.session.$bidiHandler.getPosLeft(s.column), s.column = Math.round(h / this.session.$bidiHandler.charWidths[0])) : h = s.column * this.session.$bidiHandler.charWidths[0]), this.$desiredColumn ? s.column = this.$desiredColumn : this.$desiredColumn = s.column), e != 0 && this.session.lineWidgets && this.session.lineWidgets[this.lead.row] && (i = this.session.lineWidgets[this.lead.row], e < 0 ? e -= i.rowsAbove || 0 : 0 < e && (e += i.rowCount - (i.rowsAbove || 0)));
                var h = this.session.screenToDocumentPosition(s.row + e, s.column, h);
                e !== 0 && t === 0 && h.row === this.lead.row && (h.column, this.lead.column), this.moveCursorTo(h.row, h.column + t, t === 0);
              }, this.moveCursorToPosition = function(e) {
                this.moveCursorTo(e.row, e.column);
              }, this.moveCursorTo = function(e, t, i) {
                var s = this.session.getFoldAt(e, t, 1);
                s && (e = s.start.row, t = s.start.column), this.$keepDesiredColumnOnChange = !0, s = this.session.getLine(e), /[\uDC00-\uDFFF]/.test(s.charAt(t)) && s.charAt(t - 1) && (this.lead.row == e && this.lead.column == t + 1 ? t -= 1 : t += 1), this.lead.setPosition(e, t), this.$keepDesiredColumnOnChange = !1, i || (this.$desiredColumn = null);
              }, this.moveCursorToScreen = function(e, t, i) {
                t = this.session.screenToDocumentPosition(e, t), this.moveCursorTo(t.row, t.column, i);
              }, this.detach = function() {
                this.lead.detach(), this.anchor.detach(), this.session = this.doc = null;
              }, this.fromOrientedRange = function(e) {
                this.setSelectionRange(e, e.cursor == e.start), this.$desiredColumn = e.desiredColumn || this.$desiredColumn;
              }, this.toOrientedRange = function(e) {
                var t = this.getRange();
                return e ? (e.start.column = t.start.column, e.start.row = t.start.row, e.end.column = t.end.column, e.end.row = t.end.row) : e = t, e.cursor = this.isBackwards() ? e.start : e.end, e.desiredColumn = this.$desiredColumn, e;
              }, this.getRangeOfMovements = function(e) {
                var t = this.getCursor();
                try {
                  e(this);
                  var i = this.getCursor();
                  return a.fromPoints(t, i);
                } catch {
                  return a.fromPoints(t, t);
                } finally {
                  this.moveCursorToPosition(t);
                }
              }, this.toJSON = function() {
                var e;
                return this.rangeCount ? e = this.ranges.map(function(t) {
                  var i = t.clone();
                  return i.isBackwards = t.cursor == t.start, i;
                }) : (e = this.getRange()).isBackwards = this.isBackwards(), e;
              }, this.fromJSON = function(e) {
                if (e.start == null) {
                  if (this.rangeList && 1 < e.length) {
                    this.toSingleRange(e[0]);
                    for (var t = e.length; t--; ) {
                      var i = a.fromPoints(e[t].start, e[t].end);
                      e[t].isBackwards && (i.cursor = i.start), this.addRange(i, !0);
                    }
                    return;
                  }
                  e = e[0];
                }
                this.rangeList && this.toSingleRange(e), this.setSelectionRange(e, e.isBackwards);
              }, this.isEqual = function(e) {
                if ((e.length || this.rangeCount) && e.length != this.rangeCount) return !1;
                if (!e.length || !this.ranges) return this.getRange().isEqual(e);
                for (var t = this.ranges.length; t--; ) if (!this.ranges[t].isEqual(e[t])) return !1;
                return !0;
              };
            }).call(o.prototype), m.Selection = o;
          }), ace.define("ace/tokenizer", ["require", "exports", "module", "ace/config"], function(d, m, E) {
            var b = d("./config"), w = 2e3, d = function(a) {
              for (var o in this.states = a, this.regExps = {}, this.matchMappings = {}, this.states) {
                for (var e = this.states[o], t = [], i = 0, s = this.matchMappings[o] = { defaultToken: "text" }, h = "g", r = [], p = 0; p < e.length; p++) {
                  var l, I, f = e[p];
                  f.defaultToken && (s.defaultToken = f.defaultToken), f.caseInsensitive && (h = "gi"), f.regex != null && (f.regex instanceof RegExp && (f.regex = f.regex.toString().slice(1, -1)), l = f.regex, I = new RegExp("(?:(" + l + ")|(.))").exec("a").length - 2, Array.isArray(f.token) ? f.token.length == 1 || I == 1 ? f.token = f.token[0] : I - 1 != f.token.length ? (this.reportError("number of classes and regexp groups doesn't match", { rule: f, groupCount: I - 1 }), f.token = f.token[0]) : (f.tokenArray = f.token, f.token = null, f.onMatch = this.$arrayTokens) : typeof f.token != "function" || f.onMatch || (f.onMatch = 1 < I ? this.$applyToken : f.token), 1 < I && (l = /\\\d/.test(f.regex) ? f.regex.replace(/\\([0-9]+)/g, function(n, g) {
                    return "\\" + (parseInt(g, 10) + i + 1);
                  }) : (I = 1, this.removeCapturingGroups(f.regex)), f.splitRegex || typeof f.token == "string" || r.push(f)), s[i] = p, i += I, t.push(l), f.onMatch || (f.onMatch = null));
                }
                t.length || (s[0] = 0, t.push("$")), r.forEach(function(n) {
                  n.splitRegex = this.createSplitterRegexp(n.regex, h);
                }, this), this.regExps[o] = new RegExp("(" + t.join(")|(") + ")|($)", h);
              }
            };
            (function() {
              this.$setMaxTokenCount = function(a) {
                w = 0 | a;
              }, this.$applyToken = function(a) {
                var o = this.splitRegex.exec(a).slice(1), e = this.token.apply(this, o);
                if (typeof e == "string") return [{ type: e, value: a }];
                for (var t = [], i = 0, s = e.length; i < s; i++) o[i] && (t[t.length] = { type: e[i], value: o[i] });
                return t;
              }, this.$arrayTokens = function(a) {
                if (!a) return [];
                var o = this.splitRegex.exec(a);
                if (!o) return "text";
                for (var e = [], t = this.tokenArray, i = 0, s = t.length; i < s; i++) o[i + 1] && (e[e.length] = { type: t[i], value: o[i + 1] });
                return e;
              }, this.removeCapturingGroups = function(a) {
                return a.replace(/\\.|\[(?:\\.|[^\\\]])*|\(\?[:=!]|(\()/g, function(o, e) {
                  return e ? "(?:" : o;
                });
              }, this.createSplitterRegexp = function(a, o) {
                var e, t, i;
                return a.indexOf("(?=") != -1 && (e = 0, t = !1, i = {}, a.replace(/(\\.)|(\((?:\?[=!])?)|(\))|([\[\]])/g, function(s, h, r, p, l, I) {
                  return t ? t = l != "]" : l ? t = !0 : p ? (e == i.stack && (i.end = I + 1, i.stack = -1), e--) : r && (e++, r.length != 1 && (i.stack = e, i.start = I)), s;
                }), i.end != null && /^\)*$/.test(a.substr(i.end)) && (a = a.substring(0, i.start) + a.substr(i.end))), (a = a.charAt(0) != "^" ? "^" + a : a).charAt(a.length - 1) != "$" && (a += "$"), new RegExp(a, (o || "").replace("g", ""));
              }, this.getLineTokens = function(a, o) {
                var e;
                o && typeof o != "string" ? (o = (e = o.slice(0))[0]) === "#tmp" && (e.shift(), o = e.shift()) : e = [];
                for (var t, i = o || "start", s = (s = this.states[i]) || this.states[i = "start"], h = this.matchMappings[i], r = this.regExps[i], p = [], l = r.lastIndex = 0, I = 0, f = { type: null, value: "" }; t = r.exec(a); ) {
                  var n, g = h.defaultToken, C = null, y = t[0], c = r.lastIndex;
                  c - y.length > l && (n = a.substring(l, c - y.length), f.type == g ? f.value += n : (f.type && p.push(f), f = { type: g, value: n }));
                  for (var v = 0; v < t.length - 2; v++) if (t[v + 1] !== void 0) {
                    g = (C = s[h[v]]).onMatch ? C.onMatch(y, i, e, a) : C.token, C.next && (i = typeof C.next == "string" ? C.next : C.next(i, e), (s = this.states[i]) || (this.reportError("state doesn't exist", i), s = this.states[i = "start"]), h = this.matchMappings[i], (r = this.regExps[i]).lastIndex = l = c), C.consumeLineEnd && (l = c);
                    break;
                  }
                  if (y) {
                    if (typeof g == "string") C && C.merge === !1 || f.type !== g ? (f.type && p.push(f), f = { type: g, value: y }) : f.value += y;
                    else if (g) for (f.type && p.push(f), f = { type: null, value: "" }, v = 0; v < g.length; v++) p.push(g[v]);
                  }
                  if (l == a.length) break;
                  if (l = c, I++ > w) {
                    for (I > 2 * a.length && this.reportError("infinite loop with in ace tokenizer", { startState: o, line: a }); l < a.length; ) f.type && p.push(f), f = { value: a.substring(l, l += 500), type: "overflow" };
                    i = "start", e = [];
                    break;
                  }
                }
                return f.type && p.push(f), 1 < e.length && e[0] !== i && e.unshift("#tmp", i), { tokens: p, state: e.length ? e : i };
              }, this.reportError = b.reportError;
            }).call(d.prototype), m.Tokenizer = d;
          }), ace.define("ace/mode/text_highlight_rules", ["require", "exports", "module", "ace/lib/lang"], function(w, m, E) {
            var b = w("../lib/lang"), w = function() {
              this.$rules = { start: [{ token: "empty_line", regex: "^$" }, { defaultToken: "text" }] };
            };
            (function() {
              function d(o, e) {
                return o == "start" && !e.length || e.unshift(this.nextState, o), this.nextState;
              }
              function a(o, e) {
                return e.shift(), e.shift() || "start";
              }
              this.addRules = function(o, e) {
                if (e) for (var t in o) {
                  for (var i = o[t], s = 0; s < i.length; s++) {
                    var h = i[s];
                    (h.next || h.onMatch) && (typeof h.next == "string" && h.next.indexOf(e) !== 0 && (h.next = e + h.next), h.nextState && h.nextState.indexOf(e) !== 0 && (h.nextState = e + h.nextState));
                  }
                  this.$rules[e + t] = i;
                }
                else for (var t in o) this.$rules[t] = o[t];
              }, this.getRules = function() {
                return this.$rules;
              }, this.embedRules = function(o, e, t, i, s) {
                if (o = typeof o == "function" ? new o().getRules() : o, i) for (var h = 0; h < i.length; h++) i[h] = e + i[h];
                else for (var r in i = [], o) i.push(e + r);
                if (this.addRules(o, e), t) for (var p = Array.prototype[s ? "push" : "unshift"], h = 0; h < i.length; h++) p.apply(this.$rules[i[h]], b.deepCopy(t));
                this.$embeds || (this.$embeds = []), this.$embeds.push(e);
              }, this.getEmbeds = function() {
                return this.$embeds;
              }, this.normalizeRules = function() {
                var o = 0, e = this.$rules;
                Object.keys(e).forEach(function t(i) {
                  var s = e[i];
                  s.processed = !0;
                  for (var h = 0; h < s.length; h++) {
                    var r = s[h], p = null;
                    Array.isArray(r) && (p = r, r = {}), !r.regex && r.start && (r.regex = r.start, r.next || (r.next = []), r.next.push({ defaultToken: r.token }, { token: r.token + ".end", regex: r.end || r.start, next: "pop" }), r.token = r.token + ".start", r.push = !0);
                    var l, I = r.next || r.push;
                    if (I && Array.isArray(I) ? ((l = r.stateName) || (typeof (l = r.token) != "string" && (l = l[0] || ""), e[l] && (l += o++)), e[l] = I, t(r.next = l)) : I == "pop" && (r.next = a), r.push && (r.nextState = r.next || r.push, r.next = d, delete r.push), r.rules) for (var f in r.rules) e[f] ? e[f].push && e[f].push.apply(e[f], r.rules[f]) : e[f] = r.rules[f];
                    I = typeof r == "string" ? r : r.include, (p = I ? Array.isArray(I) ? I.map(function(n) {
                      return e[n];
                    }) : e[I] : p) && (p = [h, 1].concat(p), r.noEscape && (p = p.filter(function(n) {
                      return !n.next;
                    })), s.splice.apply(s, p), h--), r.keywordMap && (r.token = this.createKeywordMapper(r.keywordMap, r.defaultToken || "text", r.caseInsensitive), delete r.defaultToken);
                  }
                }, this);
              }, this.createKeywordMapper = function(o, e, t, i) {
                var s = /* @__PURE__ */ Object.create(null);
                return this.$keywordList = [], Object.keys(o).forEach(function(h) {
                  for (var r = o[h].split(i || "|"), p = r.length; p--; ) {
                    var l = r[p];
                    this.$keywordList.push(l), t && (l = l.toLowerCase()), s[l] = h;
                  }
                }, this), o = null, t ? function(h) {
                  return s[h.toLowerCase()] || e;
                } : function(h) {
                  return s[h] || e;
                };
              }, this.getKeywords = function() {
                return this.$keywords;
              };
            }).call(w.prototype), m.TextHighlightRules = w;
          }), ace.define("ace/mode/behaviour", ["require", "exports", "module"], function(j, m, E) {
            function b() {
              this.$behaviours = {};
            }
            (function() {
              this.add = function(w, d, a) {
                switch (void 0) {
                  case this.$behaviours:
                    this.$behaviours = {};
                  case this.$behaviours[w]:
                    this.$behaviours[w] = {};
                }
                this.$behaviours[w][d] = a;
              }, this.addBehaviours = function(w) {
                for (var d in w) for (var a in w[d]) this.add(d, a, w[d][a]);
              }, this.remove = function(w) {
                this.$behaviours && this.$behaviours[w] && delete this.$behaviours[w];
              }, this.inherit = function(w, d) {
                d = (typeof w == "function" ? new w() : w).getBehaviours(d), this.addBehaviours(d);
              }, this.getBehaviours = function(w) {
                if (w) {
                  for (var d = {}, a = 0; a < w.length; a++) this.$behaviours[w[a]] && (d[w[a]] = this.$behaviours[w[a]]);
                  return d;
                }
                return this.$behaviours;
              };
            }).call(b.prototype), m.Behaviour = b;
          }), ace.define("ace/token_iterator", ["require", "exports", "module", "ace/range"], function(w, m, E) {
            var b = w("./range").Range, w = function(d, a, o) {
              this.$session = d, this.$row = a, this.$rowTokens = d.getTokens(a), o = d.getTokenAt(a, o), this.$tokenIndex = o ? o.index : -1;
            };
            (function() {
              this.stepBackward = function() {
                for (--this.$tokenIndex; this.$tokenIndex < 0; ) {
                  if (--this.$row < 0) return this.$row = 0, null;
                  this.$rowTokens = this.$session.getTokens(this.$row), this.$tokenIndex = this.$rowTokens.length - 1;
                }
                return this.$rowTokens[this.$tokenIndex];
              }, this.stepForward = function() {
                var d;
                for (this.$tokenIndex += 1; this.$tokenIndex >= this.$rowTokens.length; ) {
                  if (this.$row += 1, d = d || this.$session.getLength(), this.$row >= d) return this.$row = d - 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 d = this.$rowTokens, a = this.$tokenIndex, o = d[a].start;
                if (o !== void 0) return o;
                for (o = 0; 0 < a; ) o += d[--a].value.length;
                return o;
              }, this.getCurrentTokenPosition = function() {
                return { row: this.$row, column: this.getCurrentTokenColumn() };
              }, this.getCurrentTokenRange = function() {
                var d = this.$rowTokens[this.$tokenIndex], a = this.getCurrentTokenColumn();
                return new b(this.$row, a, this.$row, a + d.value.length);
              };
            }).call(w.prototype), m.TokenIterator = w;
          }), ace.define("ace/mode/behaviour/cstyle", ["require", "exports", "module", "ace/lib/oop", "ace/mode/behaviour", "ace/token_iterator", "ace/lib/lang"], function(j, m, E) {
            function b(l) {
              var I = -1;
              if (l.multiSelect && (I = l.selection.index, h.rangeCount != l.multiSelect.rangeCount && (h = { rangeCount: l.multiSelect.rangeCount })), h[I]) return d = h[I];
              d = h[I] = { autoInsertedBrackets: 0, autoInsertedRow: -1, autoInsertedLineEnd: "", maybeInsertedBrackets: 0, maybeInsertedRow: -1, maybeInsertedLineStart: "", maybeInsertedLineEnd: "" };
            }
            function w(l, I, f, n) {
              var g = l.end.row - l.start.row;
              return { text: f + I + n, selection: [0, l.start.column + 1, g, l.end.column + (g ? 0 : 1)] };
            }
            var d, a = j("../../lib/oop"), o = j("../behaviour").Behaviour, e = j("../../token_iterator").TokenIterator, t = j("../../lib/lang"), i = ["text", "paren.rparen", "rparen", "paren", "punctuation.operator"], s = ["text", "paren.rparen", "rparen", "paren", "punctuation.operator", "comment"], h = {}, r = { '"': '"', "'": "'" }, p = function(l) {
              this.add("braces", "insertion", function(I, f, n, g, C) {
                var y = n.getCursorPosition(), c = g.doc.getLine(y.row);
                if (C == "{") {
                  b(n);
                  var v = n.getSelectionRange(), k = g.doc.getTextRange(v);
                  return k !== "" && k !== "{" && n.getWrapBehavioursEnabled() ? w(v, k, "{", "}") : p.isSaneInsertion(n, g) ? /[\]\}\)]/.test(c[y.column]) || n.inMultiSelectMode || l && l.braces ? (p.recordAutoInsert(n, g, "}"), { text: "{}", selection: [1, 1] }) : (p.recordMaybeInsert(n, g, "{"), { text: "{", selection: [1, 1] }) : void 0;
                }
                if (C == "}") {
                  b(n);
                  var S = c.substring(y.column, y.column + 1);
                  if (S == "}" && g.$findOpeningBracket("}", { column: y.column + 1, row: y.row }) !== null && p.isAutoInsertedClosing(y, c, C)) return p.popAutoInsertedClosing(), { text: "", selection: [1, 1] };
                } else {
                  if (C == `
` || C == `\r
`) {
                    if (b(n), n = "", p.isMaybeInsertedClosing(y, c) && (n = t.stringRepeat("}", d.maybeInsertedBrackets), p.clearMaybeInsertedClosing()), (S = c.substring(y.column, y.column + 1)) === "}") {
                      var L = g.findMatchingBracket({ row: y.row, column: y.column + 1 }, "}");
                      if (!L) return null;
                      L = this.$getIndent(g.getLine(L.row));
                    } else {
                      if (!n) return void p.clearMaybeInsertedClosing();
                      L = this.$getIndent(c);
                    }
                    return g = L + g.getTabString(), { text: `
` + g + `
` + L + n, selection: [1, g.length, 1, g.length] };
                  }
                  p.clearMaybeInsertedClosing();
                }
              }), this.add("braces", "deletion", function(I, f, n, g, C) {
                var y = g.doc.getTextRange(C);
                if (!C.isMultiLine() && y == "{") {
                  if (b(n), g.doc.getLine(C.start.row).substring(C.end.column, C.end.column + 1) == "}") return C.end.column++, C;
                  d.maybeInsertedBrackets--;
                }
              }), this.add("parens", "insertion", function(I, f, n, g, C) {
                if (C == "(") {
                  b(n);
                  var y = n.getSelectionRange(), c = g.doc.getTextRange(y);
                  return c !== "" && n.getWrapBehavioursEnabled() ? w(y, c, "(", ")") : p.isSaneInsertion(n, g) ? (p.recordAutoInsert(n, g, ")"), { text: "()", selection: [1, 1] }) : void 0;
                }
                if (C == ")" && (b(n), y = n.getCursorPosition(), c = g.doc.getLine(y.row), n = c.substring(y.column, y.column + 1), n == ")" && g.$findOpeningBracket(")", { column: y.column + 1, row: y.row }) !== null && p.isAutoInsertedClosing(y, c, C))) return p.popAutoInsertedClosing(), { text: "", selection: [1, 1] };
              }), this.add("parens", "deletion", function(I, f, n, g, C) {
                var y = g.doc.getTextRange(C);
                if (!C.isMultiLine() && y == "(" && (b(n), g.doc.getLine(C.start.row).substring(C.start.column + 1, C.start.column + 2) == ")")) return C.end.column++, C;
              }), this.add("brackets", "insertion", function(I, f, n, g, C) {
                if (C == "[") {
                  b(n);
                  var y = n.getSelectionRange(), c = g.doc.getTextRange(y);
                  return c !== "" && n.getWrapBehavioursEnabled() ? w(y, c, "[", "]") : p.isSaneInsertion(n, g) ? (p.recordAutoInsert(n, g, "]"), { text: "[]", selection: [1, 1] }) : void 0;
                }
                if (C == "]" && (b(n), y = n.getCursorPosition(), c = g.doc.getLine(y.row), n = c.substring(y.column, y.column + 1), n == "]" && g.$findOpeningBracket("]", { column: y.column + 1, row: y.row }) !== null && p.isAutoInsertedClosing(y, c, C))) return p.popAutoInsertedClosing(), { text: "", selection: [1, 1] };
              }), this.add("brackets", "deletion", function(I, f, n, g, C) {
                var y = g.doc.getTextRange(C);
                if (!C.isMultiLine() && y == "[" && (b(n), g.doc.getLine(C.start.row).substring(C.start.column + 1, C.start.column + 2) == "]")) return C.end.column++, C;
              }), this.add("string_dquotes", "insertion", function(I, f, n, g, C) {
                var y = g.$mode.$quotes || r;
                if (C.length == 1 && y[C] && (!this.lineCommentStart || this.lineCommentStart.indexOf(C) == -1)) {
                  b(n);
                  var c = C, v = n.getSelectionRange(), k = g.doc.getTextRange(v);
                  if (!(k === "" || k.length == 1 && y[k]) && n.getWrapBehavioursEnabled()) return w(v, k, c, c);
                  if (!k) {
                    var S = n.getCursorPosition(), L = g.doc.getLine(S.row), C = L.substring(S.column - 1, S.column), y = L.substring(S.column, S.column + 1), v = g.getTokenAt(S.row, S.column), k = g.getTokenAt(S.row, S.column + 1);
                    if (C == "\\" && v && /escape/.test(v.type)) return null;
                    var W, n = v && /string|escape/.test(v.type), v = !k || /string|escape/.test(k.type);
                    if (y == c) (W = n !== v) && /string\.end/.test(k.type) && (W = !1);
                    else {
                      if (n && !v || n && v || (n = g.$mode.tokenRe, n.lastIndex = 0, v = n.test(C), n.lastIndex = 0, g = n.test(C), v || g) || y && !/[\s;,.})\]\\]/.test(y) || (S = L[S.column - 2], C == c && (S == c || n.test(S)))) return null;
                      W = !0;
                    }
                    return { text: W ? c + c : "", selection: [1, 1] };
                  }
                }
              }), this.add("string_dquotes", "deletion", function(I, f, n, g, C) {
                var y = g.$mode.$quotes || r, c = g.doc.getTextRange(C);
                if (!C.isMultiLine() && y.hasOwnProperty(c) && (b(n), g.doc.getLine(C.start.row).substring(C.start.column + 1, C.start.column + 2) == c)) return C.end.column++, C;
              });
            };
            p.isSaneInsertion = function(l, I) {
              var f = l.getCursorPosition(), n = new e(I, f.row, f.column);
              if (!this.$matchTokenType(n.getCurrentToken() || "text", i)) {
                if (/[)}\]]/.test(l.session.getLine(f.row)[f.column])) return !0;
                if (I = new e(I, f.row, f.column + 1), !this.$matchTokenType(I.getCurrentToken() || "text", i)) return !1;
              }
              return n.stepForward(), n.getCurrentTokenRow() !== f.row || this.$matchTokenType(n.getCurrentToken() || "text", s);
            }, p.$matchTokenType = function(l, I) {
              return -1 < I.indexOf(l.type || l);
            }, p.recordAutoInsert = function(l, I, f) {
              l = l.getCursorPosition(), I = I.doc.getLine(l.row), this.isAutoInsertedClosing(l, I, d.autoInsertedLineEnd[0]) || (d.autoInsertedBrackets = 0), d.autoInsertedRow = l.row, d.autoInsertedLineEnd = f + I.substr(l.column), d.autoInsertedBrackets++;
            }, p.recordMaybeInsert = function(l, I, f) {
              l = l.getCursorPosition(), I = I.doc.getLine(l.row), this.isMaybeInsertedClosing(l, I) || (d.maybeInsertedBrackets = 0), d.maybeInsertedRow = l.row, d.maybeInsertedLineStart = I.substr(0, l.column) + f, d.maybeInsertedLineEnd = I.substr(l.column), d.maybeInsertedBrackets++;
            }, p.isAutoInsertedClosing = function(l, I, f) {
              return 0 < d.autoInsertedBrackets && l.row === d.autoInsertedRow && f === d.autoInsertedLineEnd[0] && I.substr(l.column) === d.autoInsertedLineEnd;
            }, p.isMaybeInsertedClosing = function(l, I) {
              return 0 < d.maybeInsertedBrackets && l.row === d.maybeInsertedRow && I.substr(l.column) === d.maybeInsertedLineEnd && I.substr(0, l.column) == d.maybeInsertedLineStart;
            }, p.popAutoInsertedClosing = function() {
              d.autoInsertedLineEnd = d.autoInsertedLineEnd.substr(1), d.autoInsertedBrackets--;
            }, p.clearMaybeInsertedClosing = function() {
              d && (d.maybeInsertedBrackets = 0, d.maybeInsertedRow = -1);
            }, a.inherits(p, o), m.CstyleBehaviour = p;
          }), ace.define("ace/unicode", ["require", "exports", "module"], function(j, m, E) {
            for (var b = [48, 9, 8, 25, 5, 0, 2, 25, 48, 0, 11, 0, 5, 0, 6, 22, 2, 30, 2, 457, 5, 11, 15, 4, 8, 0, 2, 0, 18, 116, 2, 1, 3, 3, 9, 0, 2, 2, 2, 0, 2, 19, 2, 82, 2, 138, 2, 4, 3, 155, 12, 37, 3, 0, 8, 38, 10, 44, 2, 0, 2, 1, 2, 1, 2, 0, 9, 26, 6, 2, 30, 10, 7, 61, 2, 9, 5, 101, 2, 7, 3, 9, 2, 18, 3, 0, 17, 58, 3, 100, 15, 53, 5, 0, 6, 45, 211, 57, 3, 18, 2, 5, 3, 11, 3, 9, 2, 1, 7, 6, 2, 2, 2, 7, 3, 1, 3, 21, 2, 6, 2, 0, 4, 3, 3, 8, 3, 1, 3, 3, 9, 0, 5, 1, 2, 4, 3, 11, 16, 2, 2, 5, 5, 1, 3, 21, 2, 6, 2, 1, 2, 1, 2, 1, 3, 0, 2, 4, 5, 1, 3, 2, 4, 0, 8, 3, 2, 0, 8, 15, 12, 2, 2, 8, 2, 2, 2, 21, 2, 6, 2, 1, 2, 4, 3, 9, 2, 2, 2, 2, 3, 0, 16, 3, 3, 9, 18, 2, 2, 7, 3, 1, 3, 21, 2, 6, 2, 1, 2, 4, 3, 8, 3, 1, 3, 2, 9, 1, 5, 1, 2, 4, 3, 9, 2, 0, 17, 1, 2, 5, 4, 2, 2, 3, 4, 1, 2, 0, 2, 1, 4, 1, 4, 2, 4, 11, 5, 4, 4, 2, 2, 3, 3, 0, 7, 0, 15, 9, 18, 2, 2, 7, 2, 2, 2, 22, 2, 9, 2, 4, 4, 7, 2, 2, 2, 3, 8, 1, 2, 1, 7, 3, 3, 9, 19, 1, 2, 7, 2, 2, 2, 22, 2, 9, 2, 4, 3, 8, 2, 2, 2, 3, 8, 1, 8, 0, 2, 3, 3, 9, 19, 1, 2, 7, 2, 2, 2, 22, 2, 15, 4, 7, 2, 2, 2, 3, 10, 0, 9, 3, 3, 9, 11, 5, 3, 1, 2, 17, 4, 23, 2, 8, 2, 0, 3, 6, 4, 0, 5, 5, 2, 0, 2, 7, 19, 1, 14, 57, 6, 14, 2, 9, 40, 1, 2, 0, 3, 1, 2, 0, 3, 0, 7, 3, 2, 6, 2, 2, 2, 0, 2, 0, 3, 1, 2, 12, 2, 2, 3, 4, 2, 0, 2, 5, 3, 9, 3, 1, 35, 0, 24, 1, 7, 9, 12, 0, 2, 0, 2, 0, 5, 9, 2, 35, 5, 19, 2, 5, 5, 7, 2, 35, 10, 0, 58, 73, 7, 77, 3, 37, 11, 42, 2, 0, 4, 328, 2, 3, 3, 6, 2, 0, 2, 3, 3, 40, 2, 3, 3, 32, 2, 3, 3, 6, 2, 0, 2, 3, 3, 14, 2, 56, 2, 3, 3, 66, 5, 0, 33, 15, 17, 84, 13, 619, 3, 16, 2, 25, 6, 74, 22, 12, 2, 6, 12, 20, 12, 19, 13, 12, 2, 2, 2, 1, 13, 51, 3, 29, 4, 0, 5, 1, 3, 9, 34, 2, 3, 9, 7, 87, 9, 42, 6, 69, 11, 28, 4, 11, 5, 11, 11, 39, 3, 4, 12, 43, 5, 25, 7, 10, 38, 27, 5, 62, 2, 28, 3, 10, 7, 9, 14, 0, 89, 75, 5, 9, 18, 8, 13, 42, 4, 11, 71, 55, 9, 9, 4, 48, 83, 2, 2, 30, 14, 230, 23, 280, 3, 5, 3, 37, 3, 5, 3, 7, 2, 0, 2, 0, 2, 0, 2, 30, 3, 52, 2, 6, 2, 0, 4, 2, 2, 6, 4, 3, 3, 5, 5, 12, 6, 2, 2, 6, 67, 1, 20, 0, 29, 0, 14, 0, 17, 4, 60, 12, 5, 0, 4, 11, 18, 0, 5, 0, 3, 9, 2, 0, 4, 4, 7, 0, 2, 0, 2, 0, 2, 3, 2, 10, 3, 3, 6, 4, 5, 0, 53, 1, 2684, 46, 2, 46, 2, 132, 7, 6, 15, 37, 11, 53, 10, 0, 17, 22, 10, 6, 2, 6, 2, 6, 2, 6, 2, 6, 2, 6, 2, 6, 2, 6, 2, 31, 48, 0, 470, 1, 36, 5, 2, 4, 6, 1, 5, 85, 3, 1, 3, 2, 2, 89, 2, 3, 6, 40, 4, 93, 18, 23, 57, 15, 513, 6581, 75, 20939, 53, 1164, 68, 45, 3, 268, 4, 27, 21, 31, 3, 13, 13, 1, 2, 24, 9, 69, 11, 1, 38, 8, 3, 102, 3, 1, 111, 44, 25, 51, 13, 68, 12, 9, 7, 23, 4, 0, 5, 45, 3, 35, 13, 28, 4, 64, 15, 10, 39, 54, 10, 13, 3, 9, 7, 22, 4, 1, 5, 66, 25, 2, 227, 42, 2, 1, 3, 9, 7, 11171, 13, 22, 5, 48, 8453, 301, 3, 61, 3, 105, 39, 6, 13, 4, 6, 11, 2, 12, 2, 4, 2, 0, 2, 1, 2, 1, 2, 107, 34, 362, 19, 63, 3, 53, 41, 11, 5, 15, 17, 6, 13, 1, 25, 2, 33, 4, 2, 134, 20, 9, 8, 25, 5, 0, 2, 25, 12, 88, 4, 5, 3, 5, 3, 5, 3, 2], w = 0, d = [], a = 0; a < b.length; a += 2) d.push(w += b[a]), b[a + 1] && d.push(45, w += b[a + 1]);
            m.wordChars = String.fromCharCode.apply(null, d);
          }), ace.define("ace/mode/text", ["require", "exports", "module", "ace/config", "ace/tokenizer", "ace/mode/text_highlight_rules", "ace/mode/behaviour/cstyle", "ace/unicode", "ace/lib/lang", "ace/token_iterator", "ace/range"], function(s, m, E) {
            var b = s("../config"), w = s("../tokenizer").Tokenizer, d = s("./text_highlight_rules").TextHighlightRules, a = s("./behaviour/cstyle").CstyleBehaviour, o = s("../unicode"), e = s("../lib/lang"), t = s("../token_iterator").TokenIterator, i = s("../range").Range, s = function() {
              this.HighlightRules = d;
            };
            (function() {
              this.$defaultBehaviour = new a(), this.tokenRe = new RegExp("^[" + o.wordChars + "\\$_]+", "g"), this.nonTokenRe = new RegExp("^(?:[^" + o.wordChars + "\\$_]|\\s])+", "g"), this.getTokenizer = function() {
                return this.$tokenizer || (this.$highlightRules = this.$highlightRules || new this.HighlightRules(this.$highlightRuleConfig), this.$tokenizer = new w(this.$highlightRules.getRules())), this.$tokenizer;
              }, this.lineCommentStart = "", this.blockComment = "", this.toggleCommentLines = function(h, r, p, l) {
                function I(ie) {
                  for (var U = p; U <= l; U++) ie(f.getLine(U), U);
                }
                var f = r.doc, n = !0, g = !0, C = 1 / 0, y = r.getTabSize(), c = !1;
                if (this.lineCommentStart) {
                  _ = Array.isArray(this.lineCommentStart) ? (z = this.lineCommentStart.map(e.escapeRegExp).join("|"), this.lineCommentStart[0]) : (z = e.escapeRegExp(this.lineCommentStart), this.lineCommentStart), z = new RegExp("^(\\s*)(?:" + z + ") ?");
                  var c = r.getUseSoftTabs(), v = function(U, q) {
                    var ee, J, de = U.match(z);
                    de && (ee = de[1].length, J = de[0].length, W(U, ee, J) || de[0][J - 1] != " " || J--, f.removeInLine(q, ee, J));
                  }, k = _ + " ", S = function(U, q) {
                    n && !/\S/.test(U) || (W(U, C, C) ? f.insertInLine({ row: q, column: C }, k) : f.insertInLine({ row: q, column: C }, _));
                  }, L = function(U, q) {
                    return z.test(U);
                  }, W = function(U, q, ee) {
                    for (var J = 0; q-- && U.charAt(q) == " "; ) J++;
                    if (J % y != 0) return !1;
                    for (J = 0; U.charAt(ee++) == " "; ) J++;
                    return 2 < y ? J % y != y - 1 : J % y == 0;
                  };
                } else {
                  if (!this.blockComment) return !1;
                  var _ = this.blockComment.start, O = this.blockComment.end, z = new RegExp("^(\\s*)(?:" + e.escapeRegExp(_) + ")"), H = new RegExp("(?:" + e.escapeRegExp(O) + ")\\s*$"), S = function(ee, J) {
                    L(ee, J) || n && !/\S/.test(ee) || (f.insertInLine({ row: J, column: ee.length }, O), f.insertInLine({ row: J, column: C }, _));
                  }, v = function(ee, J) {
                    var de;
                    (de = ee.match(H)) && f.removeInLine(J, ee.length - de[0].length, ee.length), (de = ee.match(z)) && f.removeInLine(J, de[1].length, de[0].length);
                  }, L = function(ee, J) {
                    if (z.test(ee)) return !0;
                    for (var de = r.getTokens(J), R = 0; R < de.length; R++) if (de[R].type === "comment") return !0;
                  };
                }
                var Y = 1 / 0;
                I(function(ie, U) {
                  var q = ie.search(/\S/);
                  q !== -1 ? (q < C && (C = q), g && !L(ie, U) && (g = !1)) : Y > ie.length && (Y = ie.length);
                }), C == 1 / 0 && (C = Y, g = n = !1), c && C % y != 0 && (C = Math.floor(C / y) * y), I(g ? v : S);
              }, this.toggleBlockComment = function(h, r, p, l) {
                var I = this.blockComment;
                if (I) {
                  !I.start && I[0] && (I = I[0]);
                  var f, n, g = (k = new t(r, l.row, l.column)).getCurrentToken(), C = (r.selection, r.selection.toOrientedRange());
                  if (g && /comment/.test(g.type)) {
                    for (; g && /comment/.test(g.type); ) {
                      if ((S = g.value.indexOf(I.start)) != -1) {
                        var y = k.getCurrentTokenRow(), c = k.getCurrentTokenColumn() + S, v = new i(y, c, y, c + I.start.length);
                        break;
                      }
                      g = k.stepBackward();
                    }
                    for (var k, S, g = (k = new t(r, l.row, l.column)).getCurrentToken(); g && /comment/.test(g.type); ) {
                      if ((S = g.value.indexOf(I.end)) != -1) {
                        var y = k.getCurrentTokenRow(), c = k.getCurrentTokenColumn() + S, L = new i(y, c, y, c + I.end.length);
                        break;
                      }
                      g = k.stepForward();
                    }
                    L && r.remove(L), v && (r.remove(v), f = v.start.row, n = -I.start.length);
                  } else n = I.start.length, f = p.start.row, r.insert(p.end, I.end), r.insert(p.start, I.start);
                  C.start.row == f && (C.start.column += n), C.end.row == f && (C.end.column += n), r.selection.fromOrientedRange(C);
                }
              }, this.getNextLineIndent = function(h, r, p) {
                return this.$getIndent(r);
              }, this.checkOutdent = function(h, r, p) {
                return !1;
              }, this.autoOutdent = function(h, r, p) {
              }, this.$getIndent = function(h) {
                return h.match(/^\s*/)[0];
              }, this.createWorker = function(h) {
                return null;
              }, this.createModeDelegates = function(h) {
                for (var r in this.$embeds = [], this.$modes = {}, h) {
                  var p, l, I;
                  h[r] && (l = (p = h[r]).prototype.$id, (I = b.$modes[l]) || (b.$modes[l] = I = new p()), b.$modes[r] || (b.$modes[r] = I), this.$embeds.push(r), this.$modes[r] = I);
                }
                for (var f = ["toggleBlockComment", "toggleCommentLines", "getNextLineIndent", "checkOutdent", "autoOutdent", "transformAction", "getCompletions"], r = 0; r < f.length; r++) (function(g) {
                  var C = f[r], y = g[C];
                  g[f[r]] = function() {
                    return this.$delegator(C, arguments, y);
                  };
                })(this);
              }, this.$delegator = function(h, r, p) {
                var l = r[0] || "start";
                if (typeof l != "string") {
                  if (Array.isArray(l[2])) {
                    var I = l[2][l[2].length - 1];
                    if (n = this.$modes[I]) return n[h].apply(n, [l[1]].concat([].slice.call(r, 1)));
                  }
                  l = l[0] || "start";
                }
                for (var f = 0; f < this.$embeds.length; f++) if (this.$modes[this.$embeds[f]]) {
                  var n, g = l.split(this.$embeds[f]);
                  if (!g[0] && g[1]) return r[0] = g[1], (n = this.$modes[this.$embeds[f]])[h].apply(n, r);
                }
                return I = p.apply(this, r), p ? I : void 0;
              }, this.transformAction = function(h, r, p, l, I) {
                if (this.$behaviour) {
                  var f, n = this.$behaviour.getBehaviours();
                  for (f in n) if (n[f][r]) {
                    var g = n[f][r].apply(this, arguments);
                    if (g) return g;
                  }
                }
              }, this.getKeywords = function(h) {
                if (!this.completionKeywords) {
                  var r = this.$tokenizer.rules, p = [];
                  for (n in r) for (var l = r[n], I = 0, f = l.length; I < f; I++) if (typeof l[I].token == "string") /keyword|support|storage/.test(l[I].token) && p.push(l[I].regex);
                  else if (typeof l[I].token == "object") for (var n, g = 0, C = l[I].token.length; g < C; g++) /keyword|support|storage/.test(l[I].token[g]) && (n = l[I].regex.match(/\(.+?\)/g)[g], p.push(n.substr(1, n.length - 2)));
                  this.completionKeywords = p;
                }
                return h ? p.concat(this.$keywordList || []) : this.$keywordList;
              }, this.$createKeywordList = function() {
                return this.$highlightRules || this.getTokenizer(), this.$keywordList = this.$highlightRules.$keywordList || [];
              }, this.getCompletions = function(h, r, p, l) {
                return (this.$keywordList || this.$createKeywordList()).map(function(I) {
                  return { name: I, value: I, score: 0, meta: "keyword" };
                });
              }, this.$id = "ace/mode/text";
            }).call(s.prototype), m.Mode = s;
          }), ace.define("ace/apply_delta", ["require", "exports", "module"], function(j, m, E) {
            m.applyDelta = function(b, w, d) {
              var a = w.start.row, o = w.start.column, e = b[a] || "";
              switch (w.action) {
                case "insert":
                  w.lines.length === 1 ? b[a] = e.substring(0, o) + w.lines[0] + e.substring(o) : (i = [a, 1].concat(w.lines), b.splice.apply(b, i), b[a] = e.substring(0, o) + b[a], b[a + w.lines.length - 1] += e.substring(o));
                  break;
                case "remove":
                  var t = w.end.column, i = w.end.row;
                  a === i ? b[a] = e.substring(0, o) + e.substring(t) : b.splice(a, i - a + 1, e.substring(0, o) + b[i].substring(t));
              }
            };
          }), ace.define("ace/anchor", ["require", "exports", "module", "ace/lib/oop", "ace/lib/event_emitter"], function(j, d, E) {
            var b = j("./lib/oop"), w = j("./lib/event_emitter").EventEmitter, d = d.Anchor = function(a, o, e) {
              this.$onChange = this.onChange.bind(this), this.attach(a), e === void 0 ? this.setPosition(o.row, o.column) : this.setPosition(o, e);
            };
            (function() {
              function a(o, e, t) {
                return t = t ? o.column <= e.column : o.column < e.column, o.row < e.row || o.row == e.row && t;
              }
              b.implement(this, w), this.getPosition = function() {
                return this.$clipPositionToDocument(this.row, this.column);
              }, this.getDocument = function() {
                return this.document;
              }, this.$insertRight = !1, this.onChange = function(o) {
                o.start.row == o.end.row && o.start.row != this.row || o.start.row > this.row || (o = function(l, t, i) {
                  var s = l.action == "insert", h = (s ? 1 : -1) * (l.end.row - l.start.row), r = (s ? 1 : -1) * (l.end.column - l.start.column), p = l.start, l = s ? p : l.end;
                  return a(t, p, i) ? { row: t.row, column: t.column } : a(l, t, !i) ? { row: t.row + h, column: t.column + (t.row == l.row ? r : 0) } : { row: p.row, column: p.column };
                }(o, { row: this.row, column: this.column }, this.$insertRight), this.setPosition(o.row, o.column, !0));
              }, this.setPosition = function(o, e, t) {
                o = t ? { row: o, column: e } : this.$clipPositionToDocument(o, e), this.row == o.row && this.column == o.column || (e = { row: this.row, column: this.column }, this.row = o.row, this.column = o.column, this._signal("change", { old: e, value: o }));
              }, this.detach = function() {
                this.document.off("change", this.$onChange);
              }, this.attach = function(o) {
                this.document = o || this.document, this.document.on("change", this.$onChange);
              }, this.$clipPositionToDocument = function(o, e) {
                var t = {};
                return o >= this.document.getLength() ? (t.row = Math.max(0, this.document.getLength() - 1), t.column = this.document.getLine(t.row).length) : o < 0 ? (t.row = 0, t.column = 0) : (t.row = o, t.column = Math.min(this.document.getLine(t.row).length, Math.max(0, e))), e < 0 && (t.column = 0), t;
              };
            }).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(e, m, E) {
            var b = e("./lib/oop"), w = e("./apply_delta").applyDelta, d = e("./lib/event_emitter").EventEmitter, a = e("./range").Range, o = e("./anchor").Anchor, e = function(t) {
              this.$lines = [""], t.length === 0 ? this.$lines = [""] : Array.isArray(t) ? this.insertMergedLines({ row: 0, column: 0 }, t) : this.insert({ row: 0, column: 0 }, t);
            };
            (function() {
              b.implement(this, d), this.setValue = function(t) {
                var i = this.getLength() - 1;
                this.remove(new a(0, 0, i, this.getLine(i).length)), this.insert({ row: 0, column: 0 }, t);
              }, this.getValue = function() {
                return this.getAllLines().join(this.getNewLineCharacter());
              }, this.createAnchor = function(t, i) {
                return new o(this, t, i);
              }, "aaa".split(/a/).length === 0 ? this.$split = function(t) {
                return t.replace(/\r\n|\r/g, `
`).split(`
`);
              } : this.$split = function(t) {
                return t.split(/\r\n|\r|\n/);
              }, this.$detectNewLine = function(t) {
                t = t.match(/^.*?(\r\n|\r|\n)/m), this.$autoNewLine = t ? t[1] : `
`, this._signal("changeNewLineMode");
              }, this.getNewLineCharacter = function() {
                switch (this.$newLineMode) {
                  case "windows":
                    return `\r
`;
                  case "unix":
                    return `
`;
                  default:
                    return this.$autoNewLine || `
`;
                }
              }, 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 t == `\r
` || t == "\r" || t == `
`;
              }, this.getLine = function(t) {
                return this.$lines[t] || "";
              }, this.getLines = function(t, i) {
                return this.$lines.slice(t, i + 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 i, s;
                return t.start.row === t.end.row ? i = [this.getLine(t.start.row).substring(t.start.column, t.end.column)] : ((i = this.getLines(t.start.row, t.end.row))[0] = (i[0] || "").substring(t.start.column), s = i.length - 1, t.end.row - t.start.row == s && (i[s] = i[s].substring(0, t.end.column))), i;
              }, this.insertLines = function(t, i) {
                return console.warn("Use of document.insertLines is deprecated. Use the insertFullLines method instead."), this.insertFullLines(t, i);
              }, this.removeLines = function(t, i) {
                return console.warn("Use of document.removeLines is deprecated. Use the removeFullLines method instead."), this.removeFullLines(t, i);
              }, this.insertNewLine = function(t) {
                return console.warn("Use of document.insertNewLine is deprecated. Use insertMergedLines(position, ['', '']) instead."), this.insertMergedLines(t, ["", ""]);
              }, this.insert = function(t, i) {
                return this.getLength() <= 1 && this.$detectNewLine(i), this.insertMergedLines(t, this.$split(i));
              }, this.insertInLine = function(h, i) {
                var s = this.clippedPos(h.row, h.column), h = this.pos(h.row, h.column + i.length);
                return this.applyDelta({ start: s, end: h, action: "insert", lines: [i] }, !0), this.clonePos(h);
              }, this.clippedPos = function(t, i) {
                var s = this.getLength();
                return t === void 0 ? t = s : t < 0 ? t = 0 : s <= t && (t = s - 1, i = void 0), s = this.getLine(t), i == null && (i = s.length), { row: t, column: i = Math.min(Math.max(i, 0), s.length) };
              }, this.clonePos = function(t) {
                return { row: t.row, column: t.column };
              }, this.pos = function(t, i) {
                return { row: t, column: i };
              }, this.$clipPosition = function(t) {
                var i = this.getLength();
                return t.row >= i ? (t.row = Math.max(0, i - 1), t.column = this.getLine(i - 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, i) {
                var s = 0, s = (t = Math.min(Math.max(t, 0), this.getLength())) < this.getLength() ? (i = i.concat([""]), 0) : (i = [""].concat(i), this.$lines[--t].length);
                this.insertMergedLines({ row: t, column: s }, i);
              }, this.insertMergedLines = function(h, i) {
                var s = this.clippedPos(h.row, h.column), h = { row: s.row + i.length - 1, column: (i.length == 1 ? s.column : 0) + i[i.length - 1].length };
                return this.applyDelta({ start: s, end: h, action: "insert", lines: i }), this.clonePos(h);
              }, this.remove = function(s) {
                var i = this.clippedPos(s.start.row, s.start.column), s = this.clippedPos(s.end.row, s.end.column);
                return this.applyDelta({ start: i, end: s, action: "remove", lines: this.getLinesForRange({ start: i, end: s }) }), this.clonePos(i);
              }, this.removeInLine = function(t, i, s) {
                return i = this.clippedPos(t, i), s = this.clippedPos(t, s), this.applyDelta({ start: i, end: s, action: "remove", lines: this.getLinesForRange({ start: i, end: s }) }, !0), this.clonePos(i);
              }, this.removeFullLines = function(t, l) {
                t = Math.min(Math.max(0, t), this.getLength() - 1);
                var r = (l = Math.min(Math.max(0, l), this.getLength() - 1)) == this.getLength() - 1 && 0 < t, p = l < this.getLength() - 1, s = r ? t - 1 : t, h = r ? this.getLine(s).length : 0, r = p ? l + 1 : l, p = p ? 0 : this.getLine(r).length, p = new a(s, h, r, p), l = this.$lines.slice(t, l + 1);
                return this.applyDelta({ start: p.start, end: p.end, action: "remove", lines: this.getLinesForRange(p) }), l;
              }, this.removeNewLine = function(t) {
                t < this.getLength() - 1 && 0 <= t && this.applyDelta({ start: this.pos(t, this.getLine(t).length), end: this.pos(t + 1, 0), action: "remove", lines: ["", ""] });
              }, this.replace = function(t, i) {
                return t instanceof a || (t = a.fromPoints(t.start, t.end)), i.length === 0 && t.isEmpty() ? t.start : i == this.getTextRange(t) ? t.end : (this.remove(t), i ? this.insert(t.start, i) : t.start);
              }, this.applyDeltas = function(t) {
                for (var i = 0; i < t.length; i++) this.applyDelta(t[i]);
              }, this.revertDeltas = function(t) {
                for (var i = t.length - 1; 0 <= i; i--) this.revertDelta(t[i]);
              }, this.applyDelta = function(t, i) {
                var s = t.action == "insert";
                (s ? t.lines.length <= 1 && !t.lines[0] : !a.comparePoints(t.start, t.end)) || (s && 2e4 < t.lines.length ? this.$splitAndapplyLargeDelta(t, 2e4) : (w(this.$lines, t, i), this._signal("change", t)));
              }, this.$safeApplyDelta = function(t) {
                var i = this.$lines.length;
                (t.action == "remove" && t.start.row < i && t.end.row < i || t.action == "insert" && t.start.row <= i) && this.applyDelta(t);
              }, this.$splitAndapplyLargeDelta = function(t, i) {
                for (var s = t.lines, h = s.length - i + 1, r = t.start.row, p = t.start.column, l = 0, I = 0; l < h; l = I) {
                  I += i - 1;
                  var f = s.slice(l, I);
                  f.push(""), this.applyDelta({ start: this.pos(r + l, p), end: this.pos(r + I, p = 0), action: t.action, lines: f }, !0);
                }
                t.lines = s.slice(l), t.start.row = r + l, t.start.column = p, this.applyDelta(t, !0);
              }, this.revertDelta = function(t) {
                this.$safeApplyDelta({ start: this.clonePos(t.start), end: this.clonePos(t.end), action: t.action == "insert" ? "remove" : "insert", lines: t.lines.slice() });
              }, this.indexToPosition = function(t, i) {
                for (var s = this.$lines || this.getAllLines(), h = this.getNewLineCharacter().length, r = i || 0, p = s.length; r < p; r++) if ((t -= s[r].length + h) < 0) return { row: r, column: t + s[r].length + h };
                return { row: p - 1, column: t + s[p - 1].length + h };
              }, this.positionToIndex = function(t, i) {
                for (var s = this.$lines || this.getAllLines(), h = this.getNewLineCharacter().length, r = 0, p = Math.min(t.row, s.length), l = i || 0; l < p; ++l) r += s[l].length + h;
                return r + t.column;
              };
            }).call(e.prototype), m.Document = e;
          }), ace.define("ace/background_tokenizer", ["require", "exports", "module", "ace/lib/oop", "ace/lib/event_emitter"], function(d, m, E) {
            var b = d("./lib/oop"), w = d("./lib/event_emitter").EventEmitter, d = function(a, o) {
              this.running = !1, this.lines = [], this.states = [], this.currentLine = 0, this.tokenizer = a;
              var e = this;
              this.$worker = function() {
                if (e.running) {
                  for (var t = /* @__PURE__ */ new Date(), i = e.currentLine, s = -1, h = e.doc, r = i; e.lines[i]; ) i++;
                  var p = h.getLength(), l = 0;
                  for (e.running = !1; i < p; ) {
                    for (e.$tokenizeRow(i), s = i; i++, e.lines[i]; ) ;
                    if (++l % 5 == 0 && 20 < /* @__PURE__ */ new Date() - t) {
                      e.running = setTimeout(e.$worker, 20);
                      break;
                    }
                  }
                  e.currentLine = i, r <= (s = s == -1 ? i : s) && e.fireUpdateEvent(r, s);
                }
              };
            };
            (function() {
              b.implement(this, w), this.setTokenizer = function(a) {
                this.tokenizer = a, this.lines = [], this.states = [], this.start(0);
              }, this.setDocument = function(a) {
                this.doc = a, this.lines = [], this.states = [], this.stop();
              }, this.fireUpdateEvent = function(a, o) {
                this._signal("update", { data: { first: a, last: o } });
              }, this.start = function(a) {
                this.currentLine = Math.min(a || 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(a) {
                var o = a.start.row, e = a.end.row - o;
                e == 0 ? this.lines[o] = null : a.action == "remove" ? (this.lines.splice(o, 1 + e, null), this.states.splice(o, 1 + e, null)) : ((e = Array(1 + e)).unshift(o, 1), this.lines.splice.apply(this.lines, e), this.states.splice.apply(this.states, e)), this.currentLine = Math.min(o, this.currentLine, this.doc.getLength()), this.stop();
              }, this.stop = function() {
                this.running && clearTimeout(this.running), this.running = !1;
              }, this.getTokens = function(a) {
                return this.lines[a] || this.$tokenizeRow(a);
              }, this.getState = function(a) {
                return this.currentLine == a && this.$tokenizeRow(a), this.states[a] || "start";
              }, this.$tokenizeRow = function(a) {
                var o = this.doc.getLine(a), e = this.states[a - 1], e = this.tokenizer.getLineTokens(o, e, a);
                return this.states[a] + "" != e.state + "" ? (this.states[a] = e.state, this.lines[a + 1] = null, this.currentLine > a + 1 && (this.currentLine = a + 1)) : this.currentLine == a && (this.currentLine = a + 1), this.lines[a] = e.tokens;
              };
            }).call(d.prototype), m.BackgroundTokenizer = d;
          }), ace.define("ace/search_highlight", ["require", "exports", "module", "ace/lib/lang", "ace/lib/oop", "ace/range"], function(d, m, E) {
            var b = d("./lib/lang"), w = (d("./lib/oop"), d("./range").Range), d = function(a, o, e) {
              this.setRegexp(a), this.clazz = o, this.type = e || "text";
            };
            (function() {
              this.MAX_RANGES = 500, this.setRegexp = function(a) {
                this.regExp + "" != a + "" && (this.regExp = a, this.cache = []);
              }, this.update = function(a, o, e, t) {
                if (this.regExp) for (var i = t.firstRow, s = t.lastRow, h = i; h <= s; h++) {
                  var r = this.cache[h];
                  r == null && (r = (r = (r = b.getMatchOffsets(e.getLine(h), this.regExp)).length > this.MAX_RANGES ? r.slice(0, this.MAX_RANGES) : r).map(function(l) {
                    return new w(h, l.offset, h, l.offset + l.length);
                  }), this.cache[h] = r.length ? r : "");
                  for (var p = r.length; p--; ) o.drawSingleLineMarker(a, r[p].toScreenRange(e), this.clazz, t);
                }
              };
            }).call(d.prototype), m.SearchHighlight = d;
          }), ace.define("ace/edit_session/fold_line", ["require", "exports", "module", "ace/range"], function(j, m, E) {
            function b(d, a) {
              this.foldData = d, Array.isArray(a) ? this.folds = a : a = this.folds = [a], d = a[a.length - 1], this.range = new w(a[0].start.row, a[0].start.column, d.end.row, d.end.column), this.start = this.range.start, this.end = this.range.end, this.folds.forEach(function(o) {
                o.setFoldLine(this);
              }, this);
            }
            var w = j("../range").Range;
            (function() {
              this.shiftRow = function(d) {
                this.start.row += d, this.end.row += d, this.folds.forEach(function(a) {
                  a.start.row += d, a.end.row += d;
                });
              }, this.addFold = function(d) {
                if (d.sameRow) {
                  if (d.start.row < this.startRow || d.endRow > this.endRow) throw new Error("Can't add a fold to this FoldLine as it has no connection");
                  this.folds.push(d), this.folds.sort(function(a, o) {
                    return -a.range.compareEnd(o.start.row, o.start.column);
                  }), 0 < this.range.compareEnd(d.start.row, d.start.column) ? (this.end.row = d.end.row, this.end.column = d.end.column) : this.range.compareStart(d.end.row, d.end.column) < 0 && (this.start.row = d.start.row, this.start.column = d.start.column);
                } else if (d.start.row == this.end.row) this.folds.push(d), this.end.row = d.end.row, this.end.column = d.end.column;
                else {
                  if (d.end.row != this.start.row) throw new Error("Trying to add fold to FoldRow that doesn't have a matching row");
                  this.folds.unshift(d), this.start.row = d.start.row, this.start.column = d.start.column;
                }
                d.foldLine = this;
              }, this.containsRow = function(d) {
                return d >= this.start.row && d <= this.end.row;
              }, this.walk = function(d, a, o) {
                var e, t, i = 0, s = this.folds, h = !0;
                a == null && (a = this.end.row, o = this.end.column);
                for (var r = 0; r < s.length; r++) {
                  if ((t = (e = s[r]).range.compareStart(a, o)) == -1) return void d(null, a, o, i, h);
                  if (!d(null, e.start.row, e.start.column, i, h) && d(e.placeholder, e.start.row, e.start.column, i) || t === 0) return;
                  h = !e.sameRow, i = e.end.column;
                }
                d(null, a, o, i, h);
              }, this.getNextFoldTo = function(d, a) {
                for (var o, e, t = 0; t < this.folds.length; t++) {
                  if ((e = (o = this.folds[t]).range.compareEnd(d, a)) == -1) return { fold: o, kind: "after" };
                  if (e === 0) return { fold: o, kind: "inside" };
                }
                return null;
              }, this.addRemoveChars = function(d, a, o) {
                var e, t = this.getNextFoldTo(d, a);
                if (t) {
                  if (e = t.fold, t.kind == "inside" && e.start.column != a && e.start.row != d) window.console && window.console.log(d, a, e);
                  else if (e.start.row == d) {
                    var i, s = (i = this.folds).indexOf(e);
                    for (s === 0 && (this.start.column += o); s < i.length; s++) {
                      if ((e = i[s]).start.column += o, !e.sameRow) return;
                      e.end.column += o;
                    }
                    this.end.column += o;
                  }
                }
              }, this.split = function(o, e) {
                var t = this.getNextFoldTo(o, e);
                if (!t || t.kind == "inside") return null;
                var i = t.fold, o = this.folds, e = this.foldData, t = o.indexOf(i), i = o[t - 1];
                return this.end.row = i.end.row, this.end.column = i.end.column, o = new b(e, o = o.splice(t, o.length - t)), e.splice(e.indexOf(this) + 1, 0, o), o;
              }, this.merge = function(d) {
                for (var a = d.folds, o = 0; o < a.length; o++) this.addFold(a[o]);
                var e = this.foldData;
                e.splice(e.indexOf(d), 1);
              }, this.toString = function() {
                var d = [this.range.toString() + ": ["];
                return this.folds.forEach(function(a) {
                  d.push("  " + a.toString());
                }), d.push("]"), d.join(`
`);
              }, this.idxToPosition = function(d) {
                for (var a = 0, o = 0; o < this.folds.length; o++) {
                  var e = this.folds[o];
                  if ((d -= e.start.column - a) < 0) return { row: e.start.row, column: e.start.column + d };
                  if ((d -= e.placeholder.length) < 0) return e.start;
                  a = e.end.column;
                }
                return { row: this.end.row, column: this.end.column + d };
              };
            }).call(b.prototype), m.FoldLine = b;
          }), ace.define("ace/range_list", ["require", "exports", "module", "ace/range"], function(w, m, E) {
            var b = w("./range").Range.comparePoints, w = function() {
              this.ranges = [], this.$bias = 1;
            };
            (function() {
              this.comparePoints = b, this.pointIndex = function(d, a, o) {
                for (var e = this.ranges, t = o || 0; t < e.length; t++) {
                  var i = e[t], s = b(d, i.end);
                  if (!(0 < s)) return i = b(d, i.start), s === 0 ? a && i !== 0 ? -t - 2 : t : 0 < i || i === 0 && !a ? t : -t - 1;
                }
                return -t - 1;
              }, this.add = function(d) {
                var o = !d.isEmpty(), a = this.pointIndex(d.start, o), o = this.pointIndex(d.end, o, a = a < 0 ? -a - 1 : a);
                return o < 0 ? o = -o - 1 : o++, this.ranges.splice(a, o - a, d);
              }, this.addList = function(d) {
                for (var a = [], o = d.length; o--; ) a.push.apply(a, this.add(d[o]));
                return a;
              }, this.substractPoint = function(d) {
                if (0 <= (d = this.pointIndex(d))) return this.ranges.splice(d, 1);
              }, this.merge = function() {
                for (var d = [], a = this.ranges, o = (a = a.sort(function(s, h) {
                  return b(s.start, h.start);
                }))[0], e = 1; e < a.length; e++) {
                  var t = o, o = a[e], i = b(t.end, o.start);
                  i < 0 || (i != 0 || t.isEmpty() || o.isEmpty()) && (b(t.end, o.end) < 0 && (t.end.row = o.end.row, t.end.column = o.end.column), a.splice(e, 1), d.push(o), o = t, e--);
                }
                return this.ranges = a, d;
              }, this.contains = function(d, a) {
                return 0 <= this.pointIndex({ row: d, column: a });
              }, this.containsPoint = function(d) {
                return 0 <= this.pointIndex(d);
              }, this.rangeAtPoint = function(d) {
                if (0 <= (d = this.pointIndex(d))) return this.ranges[d];
              }, this.clipRows = function(e, a) {
                var o = this.ranges;
                if (o[0].start.row > a || o[o.length - 1].start.row < e) return [];
                var e = this.pointIndex({ row: e, column: 0 }), t = this.pointIndex({ row: a, column: 0 }, e = e < 0 ? -e - 1 : e);
                t < 0 && (t = -t - 1);
                for (var i = [], s = e; s < t; s++) i.push(o[s]);
                return i;
              }, this.removeAll = function() {
                return this.ranges.splice(0, this.ranges.length);
              }, this.attach = function(d) {
                this.session && this.detach(), this.session = d, this.onChange = this.$onChange.bind(this), this.session.on("change", this.onChange);
              }, this.detach = function() {
                this.session && (this.session.removeListener("change", this.onChange), this.session = null);
              }, this.$onChange = function(d) {
                for (var a = d.start, o = d.end, e = a.row, t = o.row, i = this.ranges, s = 0, h = i.length; s < h && !((l = i[s]).end.row >= e); s++) ;
                if (d.action == "insert") for (var r = t - e, p = -a.column + o.column; s < h && !((l = i[s]).start.row > e); s++) l.start.row == e && l.start.column >= a.column && (l.start.column == a.column && this.$bias <= 0 || (l.start.column += p, l.start.row += r)), l.end.row == e && l.end.column >= a.column && (l.end.column == a.column && this.$bias < 0 || (l.end.column == a.column && 0 < p && s < h - 1 && l.end.column > l.start.column && l.end.column == i[s + 1].start.column && (l.end.column -= p), l.end.column += p, l.end.row += r));
                else for (var l, r = e - t, p = a.column - o.column; s < h && !((l = i[s]).start.row > t); s++) l.end.row < t && (e < l.end.row || e == l.end.row && a.column < l.end.column) ? (l.end.row = e, l.end.column = a.column) : l.end.row == t ? l.end.column <= o.column ? (r || l.end.column > a.column) && (l.end.column = a.column, l.end.row = a.row) : (l.end.column += p, l.end.row += r) : l.end.row > t && (l.end.row += r), l.start.row < t && (e < l.start.row || e == l.start.row && a.column < l.start.column) ? (l.start.row = e, l.start.column = a.column) : l.start.row == t ? l.start.column <= o.column ? (r || l.start.column > a.column) && (l.start.column = a.column, l.start.row = a.row) : (l.start.column += p, l.start.row += r) : l.start.row > t && (l.start.row += r);
                if (r != 0 && s < h) for (; s < h; s++) (l = i[s]).start.row += r, l.end.row += r;
              };
            }).call(w.prototype), m.RangeList = w;
          }), ace.define("ace/edit_session/fold", ["require", "exports", "module", "ace/range_list", "ace/lib/oop"], function(a, m, E) {
            function b(e, t) {
              e.row -= t.row, e.row == 0 && (e.column -= t.column);
            }
            function w(e, t) {
              e.row == 0 && (e.column += t.column), e.row += t.row;
            }
            var d = a("../range_list").RangeList, a = a("../lib/oop"), o = m.Fold = function(e, t) {
              this.foldLine = null, this.placeholder = t, this.range = e, this.start = e.start, this.end = e.end, this.sameRow = e.start.row == e.end.row, this.subFolds = this.ranges = [];
            };
            a.inherits(o, d), (function() {
              this.toString = function() {
                return '"' + this.placeholder + '" ' + this.range.toString();
              }, this.setFoldLine = function(e) {
                this.foldLine = e, this.subFolds.forEach(function(t) {
                  t.setFoldLine(e);
                });
              }, this.clone = function() {
                var e = this.range.clone(), t = new o(e, this.placeholder);
                return this.subFolds.forEach(function(i) {
                  t.subFolds.push(i.clone());
                }), t.collapseChildren = this.collapseChildren, t;
              }, this.addSubFold = function(e) {
                if (!this.range.isEqual(e)) {
                  r = e, p = this.start, b(r.start, p), b(r.end, p);
                  for (var t = e.start.row, i = e.start.column, s = 0, h = -1; s < this.subFolds.length && (h = this.subFolds[s].range.compare(t, i)) == 1; s++) ;
                  var r = this.subFolds[s], p = 0;
                  if (h == 0) {
                    if (r.range.containsRange(e)) return r.addSubFold(e);
                    p = 1;
                  }
                  for (var t = e.range.end.row, i = e.range.end.column, l = s, h = -1; l < this.subFolds.length && (h = this.subFolds[l].range.compare(t, i)) == 1; l++) ;
                  h == 0 && l++;
                  for (var I = this.subFolds.splice(s, l - s, e), f = h == 0 ? I.length - 1 : I.length, n = p; n < f; n++) e.addSubFold(I[n]);
                  return e.setFoldLine(this.foldLine), e;
                }
              }, this.restoreRange = function(e) {
                return t = e, e = this.start, w(t.start, e), void w(t.end, e);
                var t;
              };
            }).call(o.prototype);
          }), ace.define("ace/edit_session/folding", ["require", "exports", "module", "ace/range", "ace/edit_session/fold_line", "ace/edit_session/fold", "ace/token_iterator"], function(j, m, E) {
            var b = j("../range").Range, w = j("./fold_line").FoldLine, d = j("./fold").Fold, a = j("../token_iterator").TokenIterator;
            m.Folding = function() {
              this.getFoldAt = function(o, e, t) {
                var i = this.getFoldLine(o);
                if (!i) return null;
                for (var s = i.folds, h = 0; h < s.length; h++) {
                  var r = s[h].range;
                  if (r.contains(o, e) && (t != 1 || !r.isEnd(o, e) || r.isEmpty()) && (t != -1 || !r.isStart(o, e) || r.isEmpty())) return s[h];
                }
              }, this.getFoldsInRange = function(o) {
                var e = o.start, t = o.end, i = this.$foldData, s = [];
                e.column += 1, --t.column;
                for (var h = 0; h < i.length; h++) if ((l = i[h].range.compareRange(o)) != 2) {
                  if (l == -2) break;
                  for (var r = i[h].folds, p = 0; p < r.length; p++) {
                    var l, I = r[p];
                    if ((l = I.range.compareRange(o)) == -2) break;
                    if (l != 2) {
                      if (l == 42) break;
                      s.push(I);
                    }
                  }
                }
                return --e.column, t.column += 1, s;
              }, this.getFoldsInRangeList = function(o) {
                var e;
                return Array.isArray(o) ? (e = [], o.forEach(function(t) {
                  e = e.concat(this.getFoldsInRange(t));
                }, this)) : e = this.getFoldsInRange(o), e;
              }, this.getAllFolds = function() {
                for (var o = [], e = this.$foldData, t = 0; t < e.length; t++) for (var i = 0; i < e[t].folds.length; i++) o.push(e[t].folds[i]);
                return o;
              }, this.getFoldStringAt = function(o, e, t, i) {
                if (!(i = i || this.getFoldLine(o))) return null;
                for (var s, h = { end: { column: 0 } }, r = 0; r < i.folds.length; r++) {
                  var p, l = (p = i.folds[r]).range.compareEnd(o, e);
                  if (l == -1) {
                    s = this.getLine(p.start.row).substring(h.end.column, p.start.column);
                    break;
                  }
                  if (l === 0) return null;
                  h = p;
                }
                return s = s || this.getLine(p.start.row).substring(h.end.column), t == -1 ? s.substring(0, e - h.end.column) : t == 1 ? s.substring(e - h.end.column) : s;
              }, this.getFoldLine = function(o, e) {
                var t = this.$foldData, i = 0;
                for ((i = e ? t.indexOf(e) : i) == -1 && (i = 0); i < t.length; i++) {
                  var s = t[i];
                  if (s.start.row <= o && s.end.row >= o) return s;
                  if (s.end.row > o) return null;
                }
                return null;
              }, this.getNextFoldLine = function(o, e) {
                var t = this.$foldData, i = 0;
                for ((i = e ? t.indexOf(e) : i) == -1 && (i = 0); i < t.length; i++) {
                  var s = t[i];
                  if (s.end.row >= o) return s;
                }
                return null;
              }, this.getFoldedRowCount = function(o, e) {
                for (var t = this.$foldData, i = e - o + 1, s = 0; s < t.length; s++) {
                  var r = t[s], h = r.end.row, r = r.start.row;
                  if (e <= h) {
                    r < e && (o <= r ? i -= e - r : i = 0);
                    break;
                  }
                  o <= h && (i -= o <= r ? h - r : h - o + 1);
                }
                return i;
              }, this.$addFoldLine = function(o) {
                return this.$foldData.push(o), this.$foldData.sort(function(e, t) {
                  return e.start.row - t.start.row;
                }), o;
              }, this.addFold = function(I, f) {
                var t, i = this.$foldData, s = !1;
                I instanceof d ? t = I : (t = new d(f, I)).collapseChildren = f.collapseChildren, this.$clipRangeToDocument(t.range);
                var h = t.start.row, r = t.start.column, p = t.end.row, l = t.end.column, I = this.getFoldAt(h, r, 1), f = this.getFoldAt(p, l, -1);
                if (I && f == I) return I.addSubFold(t);
                I && !I.range.isStart(h, r) && this.removeFold(I), f && !f.range.isEnd(p, l) && this.removeFold(f), f = this.getFoldsInRange(t.range), 0 < f.length && (this.removeFolds(f), t.collapseChildren || f.forEach(function(y) {
                  t.addSubFold(y);
                }));
                for (var n = 0; n < i.length; n++) {
                  var g = i[n];
                  if (p == g.start.row) {
                    g.addFold(t), s = !0;
                    break;
                  }
                  if (h == g.end.row) {
                    if (g.addFold(t), s = !0, !t.sameRow) {
                      var C = i[n + 1];
                      if (C && C.start.row == p) {
                        g.merge(C);
                        break;
                      }
                    }
                    break;
                  }
                  if (p <= g.start.row) break;
                }
                return s || (g = this.$addFoldLine(new w(this.$foldData, t))), this.$useWrapMode ? this.$updateWrapData(g.start.row, g.start.row) : this.$updateRowLengthCache(g.start.row, g.start.row), this.$modified = !0, this._signal("changeFold", { data: t, action: "add" }), t;
              }, this.addFolds = function(o) {
                o.forEach(function(e) {
                  this.addFold(e);
                }, this);
              }, this.removeFold = function(o) {
                var e = o.foldLine, t = e.start.row, i = e.end.row, s = this.$foldData, h = e.folds;
                h.length == 1 ? s.splice(s.indexOf(e), 1) : e.range.isEnd(o.end.row, o.end.column) ? (h.pop(), e.end.row = h[h.length - 1].end.row, e.end.column = h[h.length - 1].end.column) : e.range.isStart(o.start.row, o.start.column) ? (h.shift(), e.start.row = h[0].start.row, e.start.column = h[0].start.column) : o.sameRow ? h.splice(h.indexOf(o), 1) : ((h = (e = e.split(o.start.row, o.start.column)).folds).shift(), e.start.row = h[0].start.row, e.start.column = h[0].start.column), this.$updating || (this.$useWrapMode ? this.$updateWrapData(t, i) : this.$updateRowLengthCache(t, i)), this.$modified = !0, this._signal("changeFold", { data: o, action: "remove" });
              }, this.removeFolds = function(o) {
                for (var e = [], t = 0; t < o.length; t++) e.push(o[t]);
                e.forEach(function(i) {
                  this.removeFold(i);
                }, this), this.$modified = !0;
              }, this.expandFold = function(o) {
                this.removeFold(o), o.subFolds.forEach(function(e) {
                  o.restoreRange(e), this.addFold(e);
                }, this), 0 < o.collapseChildren && this.foldAll(o.start.row + 1, o.end.row, o.collapseChildren - 1), o.subFolds = [];
              }, this.expandFolds = function(o) {
                o.forEach(function(e) {
                  this.expandFold(e);
                }, this);
              }, this.unfold = function(o, e) {
                var t;
                if (o == null ? (t = new b(0, 0, this.getLength(), 0), e == null && (e = !0)) : t = typeof o == "number" ? new b(o, 0, o, this.getLine(o).length) : "row" in o ? b.fromPoints(o, o) : o, t = this.getFoldsInRangeList(t), e != 0 ? this.removeFolds(t) : this.expandFolds(t), t.length) return t;
              }, this.isRowFolded = function(o, e) {
                return !!this.getFoldLine(o, e);
              }, this.getRowFoldEnd = function(o, e) {
                return e = this.getFoldLine(o, e), e ? e.end.row : o;
              }, this.getRowFoldStart = function(o, e) {
                return e = this.getFoldLine(o, e), e ? e.start.row : o;
              }, this.getFoldDisplayLine = function(o, e, t, i, s) {
                i == null && (i = o.start.row), s == null && (s = 0), e == null && (e = o.end.row), t == null && (t = this.getLine(e).length);
                var h = this.doc, r = "";
                return o.walk(function(p, l, I, f) {
                  if (!(l < i)) {
                    if (l == i) {
                      if (I < s) return;
                      f = Math.max(s, f);
                    }
                    r += p ?? h.getLine(l).substring(f, I);
                  }
                }, e, t), r;
              }, this.getDisplayLine = function(o, e, t, i) {
                var s = this.getFoldLine(o);
                return s ? this.getFoldDisplayLine(s, o, e, t, i) : (o = this.doc.getLine(o), o.substring(i || 0, e || o.length));
              }, this.$cloneFoldData = function() {
                var o = [];
                return o = this.$foldData.map(function(e) {
                  return e = e.folds.map(function(t) {
                    return t.clone();
                  }), new w(o, e);
                });
              }, this.toggleFold = function(o) {
                var e, t = this.selection.getRange();
                if (t.isEmpty()) {
                  var i = t.start;
                  if (s = this.getFoldAt(i.row, i.column)) return void this.expandFold(s);
                  (e = this.findMatchingBracket(i)) ? t.comparePoint(e) == 1 ? t.end = e : (t.start = e, t.start.column++, t.end.column--) : (e = this.findMatchingBracket({ row: i.row, column: i.column + 1 })) ? (t.comparePoint(e) == 1 ? t.end = e : t.start = e, t.start.column++) : t = this.getCommentFoldRange(i.row, i.column) || t;
                } else {
                  if (i = this.getFoldsInRange(t), o && i.length) return void this.expandFolds(i);
                  i.length == 1 && (s = i[0]);
                }
                if ((s = s || this.getFoldAt(t.start.row, t.start.column)) && s.range.toString() == t.toString()) this.expandFold(s);
                else {
                  var s = "...";
                  if (!t.isMultiLine()) {
                    if ((s = this.getTextRange(t)).length < 4) return;
                    s = s.trim().substring(0, 2) + "..";
                  }
                  this.addFold(s, t);
                }
              }, this.getCommentFoldRange = function(o, e, t) {
                var i = new a(this, o, e), s = i.getCurrentToken(), h = s && s.type;
                if (s && /^comment|string/.test(h)) {
                  (h = h.match(/comment|string/)[0]) == "comment" && (h += "|doc-start");
                  var r = new RegExp(h), h = new b();
                  if (t != 1) {
                    for (; (s = i.stepBackward()) && r.test(s.type); ) ;
                    i.stepForward();
                  }
                  if (h.start.row = i.getCurrentTokenRow(), h.start.column = i.getCurrentTokenColumn() + 2, i = new a(this, o, e), t != -1) {
                    var p = -1;
                    do
                      if (s = i.stepForward(), p == -1) {
                        var l = this.getState(i.$row);
                        r.test(l) || (p = i.$row);
                      } else if (i.$row > p) break;
                    while (s && r.test(s.type));
                    s = i.stepBackward();
                  } else s = i.getCurrentToken();
                  return h.end.row = i.getCurrentTokenRow(), h.end.column = i.getCurrentTokenColumn() + s.value.length - 2, h;
                }
              }, this.foldAll = function(o, e, t, i) {
                t == null && (t = 1e5);
                var s = this.foldWidgets;
                if (s) {
                  e = e || this.getLength();
                  for (var h, r = o = o || 0; r < e; r++) s[r] == null && (s[r] = this.getFoldWidget(r)), s[r] == "start" && (i && !i(r) || (h = this.getFoldWidgetRange(r)) && h.isMultiLine() && h.end.row <= e && h.start.row >= o && (r = h.end.row, h.collapseChildren = t, this.addFold("...", h)));
                }
              }, this.foldToLevel = function(o) {
                for (this.foldAll(); 0 < o--; ) this.unfold(null, !1);
              }, this.foldAllComments = function() {
                var o = this;
                this.foldAll(null, null, null, function(e) {
                  for (var t = o.getTokens(e), i = 0; i < t.length; i++) {
                    var s = t[i];
                    if (s.type != "text" || !/^\s+$/.test(s.value)) return !!/comment/.test(s.type);
                  }
                });
              }, this.$foldStyles = { manual: 1, markbegin: 1, markbeginend: 1 }, this.$foldStyle = "markbegin", this.setFoldStyle = function(o) {
                if (!this.$foldStyles[o]) throw new Error("invalid fold style: " + o + "[" + Object.keys(this.$foldStyles).join(", ") + "]");
                this.$foldStyle != o && ((this.$foldStyle = o) == "manual" && this.unfold(), o = this.$foldMode, this.$setFolding(null), this.$setFolding(o));
              }, this.$setFolding = function(o) {
                this.$foldMode != o && (this.$foldMode = o, this.off("change", this.$updateFoldWidgets), this.off("tokenizerUpdate", this.$tokenizerUpdateFoldWidgets), this._signal("changeAnnotation"), o && this.$foldStyle != "manual" ? (this.foldWidgets = [], this.getFoldWidget = o.getFoldWidget.bind(o, this, this.$foldStyle), this.getFoldWidgetRange = o.getFoldWidgetRange.bind(o, 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(o, e) {
                var t = this.foldWidgets;
                if (!t || e && t[o]) return {};
                for (var i = o - 1; 0 <= i; ) {
                  var s = t[i];
                  if ((s = s ?? (t[i] = this.getFoldWidget(i))) == "start") {
                    var h = this.getFoldWidgetRange(i), r = r || h;
                    if (h && h.end.row >= o) break;
                  }
                  i--;
                }
                return { range: i !== -1 && h, firstRange: r };
              }, this.onFoldWidgetClick = function(o, e) {
                var t = { children: (e = e.domEvent).shiftKey, all: e.ctrlKey || e.metaKey, siblings: e.altKey };
                this.$toggleFoldWidget(o, t) || (e = e.target || e.srcElement) && /ace_fold-widget/.test(e.className) && (e.className += " ace_invalid");
              }, this.$toggleFoldWidget = function(o, e) {
                if (this.getFoldWidget) {
                  var h = this.getFoldWidget(o), t = this.getLine(o), h = h === "end" ? -1 : 1, t = this.getFoldAt(o, h == -1 ? 0 : t.length, h);
                  if (t) return e.children || e.all ? this.removeFold(t) : this.expandFold(t), t;
                  var i, s, h = this.getFoldWidgetRange(o, !0);
                  return h && !h.isMultiLine() && (t = this.getFoldAt(h.start.row, h.start.column, 1)) && h.isEqual(t.range) ? (this.removeFold(t), t) : (e.siblings ? ((t = this.getParentFoldRangeData(o)).range && (i = t.range.start.row + 1, s = t.range.end.row), this.foldAll(i, s, e.all ? 1e4 : 0)) : e.children ? (s = h ? h.end.row : this.getLength(), this.foldAll(o + 1, s, e.all ? 1e4 : 0)) : h && (e.all && (h.collapseChildren = 1e4), this.addFold("...", h)), h);
                }
              }, this.toggleFoldWidget = function(o) {
                var e, t, i = this.selection.getCursor().row;
                i = this.getRowFoldStart(i), (t = this.$toggleFoldWidget(i, {})) || (t = (e = this.getParentFoldRangeData(i, !0)).range || e.firstRange) && (i = t.start.row, (i = this.getFoldAt(i, this.getLine(i).length, 1)) ? this.removeFold(i) : this.addFold("...", t));
              }, this.updateFoldWidgets = function(o) {
                var e = o.start.row, t = o.end.row - e;
                t == 0 ? this.foldWidgets[e] = null : o.action == "remove" ? this.foldWidgets.splice(e, 1 + t, null) : ((t = Array(1 + t)).unshift(e, 1), this.foldWidgets.splice.apply(this.foldWidgets, t));
              }, this.tokenizerUpdateFoldWidgets = function(o) {
                o = o.data, o.first != o.last && this.foldWidgets.length > o.first && this.foldWidgets.splice(o.first, this.foldWidgets.length);
              };
            };
          }), ace.define("ace/edit_session/bracket_match", ["require", "exports", "module", "ace/token_iterator", "ace/range"], function(j, m, E) {
            var b = j("../token_iterator").TokenIterator, w = j("../range").Range;
            m.BracketMatch = function() {
              this.findMatchingBracket = function(d, a) {
                return d.column == 0 || (a = a || this.getLine(d.row).charAt(d.column - 1)) == "" ? null : (a = a.match(/([\(\[\{])|([\)\]\}])/), a ? a[1] ? this.$findClosingBracket(a[1], d) : this.$findOpeningBracket(a[2], d) : null);
              }, this.getBracketRange = function(d) {
                var a, o, e = this.getLine(d.row), t = !0, i = e.charAt(d.column - 1), s = i && i.match(/([\(\[\{])|([\)\]\}])/);
                if (s || (i = e.charAt(d.column), d = { row: d.row, column: d.column + 1 }, s = i && i.match(/([\(\[\{])|([\)\]\}])/), t = !1), !s) return null;
                if (s[1]) {
                  if (!(o = this.$findClosingBracket(s[1], d))) return null;
                  a = w.fromPoints(d, o), t || (a.end.column++, a.start.column--), a.cursor = a.end;
                } else {
                  if (!(o = this.$findOpeningBracket(s[2], d))) return null;
                  a = w.fromPoints(o, d), t || (a.start.column++, a.end.column--), a.cursor = a.start;
                }
                return a;
              }, this.getMatchingBracketRanges = function(d) {
                var a = this.getLine(d.row), o = a.charAt(d.column - 1), e = o && o.match(/([\(\[\{])|([\)\]\}])/);
                return e || (o = a.charAt(d.column), d = { row: d.row, column: d.column + 1 }, e = o && o.match(/([\(\[\{])|([\)\]\}])/)), e ? (o = new w(d.row, d.column - 1, d.row, d.column), d = e[1] ? this.$findClosingBracket(e[1], d) : this.$findOpeningBracket(e[2], d), d ? [o, new w(d.row, d.column, d.row, d.column + 1)] : [o]) : null;
              }, this.$brackets = { ")": "(", "(": ")", "]": "[", "[": "]", "{": "}", "}": "{", "<": ">", ">": "<" }, this.$findOpeningBracket = function(d, a, o) {
                var e = this.$brackets[d], t = 1, i = new b(this, a.row, a.column), s = i.getCurrentToken();
                if (s = s || i.stepForward()) {
                  o = o || new RegExp("(\\.?" + s.type.replace(".", "\\.").replace("rparen", ".paren").replace(/\b(?:end)\b/, "(?:start|begin|end)") + ")+");
                  for (var h = a.column - i.getCurrentTokenColumn() - 2, r = s.value; ; ) {
                    for (; 0 <= h; ) {
                      var p = r.charAt(h);
                      if (p == e) {
                        if (--t == 0) return { row: i.getCurrentTokenRow(), column: h + i.getCurrentTokenColumn() };
                      } else p == d && (t += 1);
                      --h;
                    }
                    for (; (s = i.stepBackward()) && !o.test(s.type); ) ;
                    if (s == null) break;
                    h = (r = s.value).length - 1;
                  }
                  return null;
                }
              }, this.$findClosingBracket = function(d, a, o) {
                var e = this.$brackets[d], t = 1, i = new b(this, a.row, a.column), s = i.getCurrentToken();
                if (s = s || i.stepForward()) {
                  o = o || new RegExp("(\\.?" + s.type.replace(".", "\\.").replace("lparen", ".paren").replace(/\b(?:start|begin)\b/, "(?:start|begin|end)") + ")+");
                  for (var h = a.column - i.getCurrentTokenColumn(); ; ) {
                    for (var r = s.value, p = r.length; h < p; ) {
                      var l = r.charAt(h);
                      if (l == e) {
                        if (--t == 0) return { row: i.getCurrentTokenRow(), column: h + i.getCurrentTokenColumn() };
                      } else l == d && (t += 1);
                      h += 1;
                    }
                    for (; (s = i.stepForward()) && !o.test(s.type); ) ;
                    if (s == null) break;
                    h = 0;
                  }
                  return null;
                }
              };
            };
          }), ace.define("ace/edit_session", ["require", "exports", "module", "ace/lib/oop", "ace/lib/lang", "ace/bidihandler", "ace/config", "ace/lib/event_emitter", "ace/selection", "ace/mode/text", "ace/range", "ace/document", "ace/background_tokenizer", "ace/search_highlight", "ace/edit_session/folding", "ace/edit_session/bracket_match"], function(j, m, E) {
            var b = j("./lib/oop"), w = j("./lib/lang"), d = j("./bidihandler").BidiHandler, a = j("./config"), o = j("./lib/event_emitter").EventEmitter, e = j("./selection").Selection, t = j("./mode/text").Mode, i = j("./range").Range, s = j("./document").Document, h = j("./background_tokenizer").BackgroundTokenizer, r = j("./search_highlight").SearchHighlight, p = function(l, I) {
              this.$breakpoints = [], this.$decorations = [], this.$frontMarkers = {}, this.$backMarkers = {}, this.$markerId = 1, this.$undoSelect = !0, this.$foldData = [], this.id = "session" + ++p.$uid, this.$foldData.toString = function() {
                return this.join(`
`);
              }, this.on("changeFold", this.onChangeFold.bind(this)), this.$onChange = this.onChange.bind(this), typeof l == "object" && l.getLine || (l = new s(l)), this.setDocument(l), this.selection = new e(this), this.$bidiHandler = new d(this), a.resetOptions(this), this.setMode(I), a._signal("session", this);
            };
            p.$uid = 0, (function() {
              function l(n) {
                return !(n < 4352) && (4352 <= n && n <= 4447 || 4515 <= n && n <= 4519 || 4602 <= n && n <= 4607 || 9001 <= n && n <= 9002 || 11904 <= n && n <= 11929 || 11931 <= n && n <= 12019 || 12032 <= n && n <= 12245 || 12272 <= n && n <= 12283 || 12288 <= n && n <= 12350 || 12353 <= n && n <= 12438 || 12441 <= n && n <= 12543 || 12549 <= n && n <= 12589 || 12593 <= n && n <= 12686 || 12688 <= n && n <= 12730 || 12736 <= n && n <= 12771 || 12784 <= n && n <= 12830 || 12832 <= n && n <= 12871 || 12880 <= n && n <= 13054 || 13056 <= n && n <= 19903 || 19968 <= n && n <= 42124 || 42128 <= n && n <= 42182 || 43360 <= n && n <= 43388 || 44032 <= n && n <= 55203 || 55216 <= n && n <= 55238 || 55243 <= n && n <= 55291 || 63744 <= n && n <= 64255 || 65040 <= n && n <= 65049 || 65072 <= n && n <= 65106 || 65108 <= n && n <= 65126 || 65128 <= n && n <= 65131 || 65281 <= n && n <= 65376 || 65504 <= n && n <= 65510);
              }
              b.implement(this, o), this.setDocument = function(n) {
                this.doc && this.doc.removeListener("change", this.$onChange), (this.doc = n).on("change", this.$onChange), this.bgTokenizer && this.bgTokenizer.setDocument(this.getDocument()), this.resetCaches();
              }, this.getDocument = function() {
                return this.doc;
              }, this.$resetRowCache = function(C) {
                if (!C) return this.$docRowCache = [], void (this.$screenRowCache = []);
                var g = this.$docRowCache.length, C = this.$getRowCacheIndex(this.$docRowCache, C) + 1;
                C < g && (this.$docRowCache.splice(C, g), this.$screenRowCache.splice(C, g));
              }, this.$getRowCacheIndex = function(n, g) {
                for (var C = 0, y = n.length - 1; C <= y; ) {
                  var c = C + y >> 1, v = n[c];
                  if (v < g) C = 1 + c;
                  else {
                    if (!(g < v)) return c;
                    y = c - 1;
                  }
                }
                return C - 1;
              }, this.resetCaches = function() {
                this.$modified = !0, this.$wrapData = [], this.$rowLengthCache = [], this.$resetRowCache(0), this.bgTokenizer && this.bgTokenizer.start(0);
              }, this.onChangeFold = function(n) {
                n = n.data, this.$resetRowCache(n.start.row);
              }, this.onChange = function(n) {
                this.$modified = !0, this.$bidiHandler.onChange(n), this.$resetRowCache(n.start.row);
                var g = this.$updateInternalDataOnChange(n);
                !this.$fromUndo && this.$undoManager && (g && g.length && (this.$undoManager.add({ action: "removeFolds", folds: g }, this.mergeUndoDeltas), this.mergeUndoDeltas = !0), this.$undoManager.add(n, this.mergeUndoDeltas), this.mergeUndoDeltas = !0, this.$informUndoManager.schedule()), this.bgTokenizer && this.bgTokenizer.$updateOnChange(n), this._signal("change", n);
              }, this.setValue = function(n) {
                this.doc.setValue(n), this.selection.moveTo(0, 0), this.$resetRowCache(0), this.setUndoManager(this.$undoManager), this.getUndoManager().reset();
              }, this.getValue = this.toString = function() {
                return this.doc.getValue();
              }, this.getSelection = function() {
                return this.selection;
              }, this.getState = function(n) {
                return this.bgTokenizer.getState(n);
              }, this.getTokens = function(n) {
                return this.bgTokenizer.getTokens(n);
              }, this.getTokenAt = function(n, g) {
                var C = this.bgTokenizer.getTokens(n), c = 0;
                if (g == null) var y = C.length - 1, c = this.getLine(n).length;
                else for (y = 0; y < C.length && !(g <= (c += C[y].value.length)); y++) ;
                return (n = C[y]) ? (n.index = y, n.start = c - n.value.length, n) : null;
              }, this.setUndoManager = function(n) {
                var g;
                this.$undoManager = n, this.$informUndoManager && this.$informUndoManager.cancel(), n ? (n.addSession(g = this), this.$syncInformUndoManager = function() {
                  g.$informUndoManager.cancel(), g.mergeUndoDeltas = !1;
                }, this.$informUndoManager = w.delayedCall(this.$syncInformUndoManager)) : this.$syncInformUndoManager = function() {
                };
              }, this.markUndoGroup = function() {
                this.$syncInformUndoManager && this.$syncInformUndoManager();
              }, this.$defaultUndoManager = { undo: function() {
              }, redo: function() {
              }, hasUndo: function() {
              }, hasRedo: function() {
              }, reset: function() {
              }, add: function() {
              }, addSelection: function() {
              }, startNewGroup: function() {
              }, addSession: function() {
              } }, this.getUndoManager = function() {
                return this.$undoManager || this.$defaultUndoManager;
              }, this.getTabString = function() {
                return this.getUseSoftTabs() ? w.stringRepeat(" ", this.getTabSize()) : "	";
              }, this.setUseSoftTabs = function(n) {
                this.setOption("useSoftTabs", n);
              }, this.getUseSoftTabs = function() {
                return this.$useSoftTabs && !this.$mode.$indentWithTabs;
              }, this.setTabSize = function(n) {
                this.setOption("tabSize", n);
              }, this.getTabSize = function() {
                return this.$tabSize;
              }, this.isTabStop = function(n) {
                return this.$useSoftTabs && n.column % this.$tabSize == 0;
              }, this.setNavigateWithinSoftTabs = function(n) {
                this.setOption("navigateWithinSoftTabs", n);
              }, this.getNavigateWithinSoftTabs = function() {
                return this.$navigateWithinSoftTabs;
              }, this.$overwrite = !1, this.setOverwrite = function(n) {
                this.setOption("overwrite", n);
              }, this.getOverwrite = function() {
                return this.$overwrite;
              }, this.toggleOverwrite = function() {
                this.setOverwrite(!this.$overwrite);
              }, this.addGutterDecoration = function(n, g) {
                this.$decorations[n] || (this.$decorations[n] = ""), this.$decorations[n] += " " + g, this._signal("changeBreakpoint", {});
              }, this.removeGutterDecoration = function(n, g) {
                this.$decorations[n] = (this.$decorations[n] || "").replace(" " + g, ""), this._signal("changeBreakpoint", {});
              }, this.getBreakpoints = function() {
                return this.$breakpoints;
              }, this.setBreakpoints = function(n) {
                this.$breakpoints = [];
                for (var g = 0; g < n.length; g++) this.$breakpoints[n[g]] = "ace_breakpoint";
                this._signal("changeBreakpoint", {});
              }, this.clearBreakpoints = function() {
                this.$breakpoints = [], this._signal("changeBreakpoint", {});
              }, this.setBreakpoint = function(n, g) {
                (g = g === void 0 ? "ace_breakpoint" : g) ? this.$breakpoints[n] = g : delete this.$breakpoints[n], this._signal("changeBreakpoint", {});
              }, this.clearBreakpoint = function(n) {
                delete this.$breakpoints[n], this._signal("changeBreakpoint", {});
              }, this.addMarker = function(n, v, C, y) {
                var c = this.$markerId++, v = { range: n, type: C || "line", renderer: typeof C == "function" ? C : null, clazz: v, inFront: !!y, id: c };
                return y ? (this.$frontMarkers[c] = v, this._signal("changeFrontMarker")) : (this.$backMarkers[c] = v, this._signal("changeBackMarker")), c;
              }, this.addDynamicMarker = function(n, g) {
                if (n.update) {
                  var C = this.$markerId++;
                  return n.id = C, n.inFront = !!g, g ? (this.$frontMarkers[C] = n, this._signal("changeFrontMarker")) : (this.$backMarkers[C] = n, this._signal("changeBackMarker")), n;
                }
              }, this.removeMarker = function(n) {
                var g = this.$frontMarkers[n] || this.$backMarkers[n];
                g && (delete (g.inFront ? this.$frontMarkers : this.$backMarkers)[n], this._signal(g.inFront ? "changeFrontMarker" : "changeBackMarker"));
              }, this.getMarkers = function(n) {
                return n ? this.$frontMarkers : this.$backMarkers;
              }, this.highlight = function(n) {
                var g;
                this.$searchHighlight || (g = new r(null, "ace_selected-word", "text"), this.$searchHighlight = this.addDynamicMarker(g)), this.$searchHighlight.setRegexp(n);
              }, this.highlightLines = function(n, g, C, y) {
                return typeof g != "number" && (C = g, g = n), C = C || "ace_step", g = new i(n, 0, g, 1 / 0), g.id = this.addMarker(g, C, "fullLine", y), g;
              }, this.setAnnotations = function(n) {
                this.$annotations = n, this._signal("changeAnnotation", {});
              }, this.getAnnotations = function() {
                return this.$annotations || [];
              }, this.clearAnnotations = function() {
                this.setAnnotations([]);
              }, this.$detectNewLine = function(n) {
                n = n.match(/^.*?(\r?\n)/m), this.$autoNewLine = n ? n[1] : `
`;
              }, this.getWordRange = function(n, g) {
                var C, y = this.getLine(n), c = !1;
                C = (c = (c = 0 < g ? !!y.charAt(g - 1).match(this.tokenRe) : c) || !!y.charAt(g).match(this.tokenRe)) ? this.tokenRe : /^\s+$/.test(y.slice(g - 1, g + 1)) ? /\s/ : this.nonTokenRe;
                var v = g;
                if (0 < v) {
                  for (; 0 <= --v && y.charAt(v).match(C); ) ;
                  v++;
                }
                for (var k = g; k < y.length && y.charAt(k).match(C); ) k++;
                return new i(n, v, n, k);
              }, this.getAWordRange = function(n, g) {
                for (var C = this.getWordRange(n, g), y = this.getLine(C.end.row); y.charAt(C.end.column).match(/[ \t]/); ) C.end.column += 1;
                return C;
              }, this.setNewLineMode = function(n) {
                this.doc.setNewLineMode(n);
              }, this.getNewLineMode = function() {
                return this.doc.getNewLineMode();
              }, this.setUseWorker = function(n) {
                this.setOption("useWorker", n);
              }, this.getUseWorker = function() {
                return this.$useWorker;
              }, this.onReloadTokenizer = function(n) {
                var g = n.data;
                this.bgTokenizer.start(g.first), this._signal("tokenizerUpdate", n);
              }, this.$modes = a.$modes, this.$mode = null, this.$modeId = null, this.setMode = function(n, g) {
                if (n && typeof n == "object") {
                  if (n.getTokenizer) return this.$onChangeMode(n);
                  var C = n, y = C.path;
                } else y = n || "ace/mode/text";
                if (this.$modes["ace/mode/text"] || (this.$modes["ace/mode/text"] = new t()), this.$modes[y] && !C) return this.$onChangeMode(this.$modes[y]), void (g && g());
                this.$modeId = y, a.loadModule(["mode", y], (function(c) {
                  if (this.$modeId !== y) return g && g();
                  this.$modes[y] && !C ? this.$onChangeMode(this.$modes[y]) : c && c.Mode && (c = new c.Mode(C), C || ((this.$modes[y] = c).$id = y), this.$onChangeMode(c)), g && g();
                }).bind(this)), this.$mode || this.$onChangeMode(this.$modes["ace/mode/text"], !0);
              }, this.$onChangeMode = function(n, g) {
                var C, y, c, v;
                g || (this.$modeId = n.$id), this.$mode !== n && (C = this.$mode, this.$mode = n, this.$stopWorker(), this.$useWorker && this.$startWorker(), (y = n.getTokenizer()).on !== void 0 && (c = this.onReloadTokenizer.bind(this), y.on("update", c)), this.bgTokenizer ? this.bgTokenizer.setTokenizer(y) : (this.bgTokenizer = new h(y), (v = this).bgTokenizer.on("update", function(k) {
                  v._signal("tokenizerUpdate", k);
                })), this.bgTokenizer.setDocument(this.getDocument()), this.tokenRe = n.tokenRe, this.nonTokenRe = n.nonTokenRe, g || (n.attachToSession && n.attachToSession(this), this.$options.wrapMethod.set.call(this, this.$wrapMethod), this.$setFolding(n.foldingRules), this.bgTokenizer.start(0), this._emit("changeMode", { oldMode: C, mode: n })));
              }, this.$stopWorker = function() {
                this.$worker && (this.$worker.terminate(), this.$worker = null);
              }, this.$startWorker = function() {
                try {
                  this.$worker = this.$mode.createWorker(this);
                } catch (n) {
                  a.warn("Could not load worker", n), this.$worker = null;
                }
              }, this.getMode = function() {
                return this.$mode;
              }, this.$scrollTop = 0, this.setScrollTop = function(n) {
                this.$scrollTop === n || isNaN(n) || (this.$scrollTop = n, this._signal("changeScrollTop", n));
              }, this.getScrollTop = function() {
                return this.$scrollTop;
              }, this.$scrollLeft = 0, this.setScrollLeft = function(n) {
                this.$scrollLeft === n || isNaN(n) || (this.$scrollLeft = n, this._signal("changeScrollLeft", n));
              }, this.getScrollLeft = function() {
                return this.$scrollLeft;
              }, this.getScreenWidth = function() {
                return this.$computeWidth(), this.lineWidgets ? Math.max(this.getLineWidgetMaxWidth(), this.screenWidth) : this.screenWidth;
              }, this.getLineWidgetMaxWidth = function() {
                if (this.lineWidgetsWidth != null) return this.lineWidgetsWidth;
                var n = 0;
                return this.lineWidgets.forEach(function(g) {
                  g && g.screenWidth > n && (n = g.screenWidth);
                }), this.lineWidgetWidth = n;
              }, this.$computeWidth = function(n) {
                if (this.$modified || n) {
                  if (this.$modified = !1, this.$useWrapMode) return this.screenWidth = this.$wrapLimit;
                  for (var g = this.doc.getAllLines(), C = this.$rowLengthCache, y = 0, c = 0, v = this.$foldData[c], k = v ? v.start.row : 1 / 0, S = g.length, L = 0; L < S; L++) {
                    if (k < L) {
                      if (S <= (L = v.end.row + 1)) break;
                      k = (v = this.$foldData[c++]) ? v.start.row : 1 / 0;
                    }
                    C[L] == null && (C[L] = this.$getStringScreenWidth(g[L])[0]), C[L] > y && (y = C[L]);
                  }
                  this.screenWidth = y;
                }
              }, this.getLine = function(n) {
                return this.doc.getLine(n);
              }, this.getLines = function(n, g) {
                return this.doc.getLines(n, g);
              }, this.getLength = function() {
                return this.doc.getLength();
              }, this.getTextRange = function(n) {
                return this.doc.getTextRange(n || this.selection.getRange());
              }, this.insert = function(n, g) {
                return this.doc.insert(n, g);
              }, this.remove = function(n) {
                return this.doc.remove(n);
              }, this.removeFullLines = function(n, g) {
                return this.doc.removeFullLines(n, g);
              }, this.undoChanges = function(n, g) {
                if (n.length) {
                  this.$fromUndo = !0;
                  for (var C = n.length - 1; C != -1; C--) {
                    var y = n[C];
                    y.action == "insert" || y.action == "remove" ? this.doc.revertDelta(y) : y.folds && this.addFolds(y.folds);
                  }
                  !g && this.$undoSelect && (n.selectionBefore ? this.selection.fromJSON(n.selectionBefore) : this.selection.setRange(this.$getUndoSelection(n, !0))), this.$fromUndo = !1;
                }
              }, this.redoChanges = function(n, g) {
                if (n.length) {
                  this.$fromUndo = !0;
                  for (var C = 0; C < n.length; C++) {
                    var y = n[C];
                    y.action != "insert" && y.action != "remove" || this.doc.$safeApplyDelta(y);
                  }
                  !g && this.$undoSelect && (n.selectionAfter ? this.selection.fromJSON(n.selectionAfter) : this.selection.setRange(this.$getUndoSelection(n, !1))), this.$fromUndo = !1;
                }
              }, this.setUndoSelect = function(n) {
                this.$undoSelect = n;
              }, this.$getUndoSelection = function(n, g) {
                function C(S) {
                  return g ? S.action !== "insert" : S.action === "insert";
                }
                for (var y, c, v = 0; v < n.length; v++) {
                  var k = n[v];
                  k.start && (y ? C(k) ? (c = k.start, y.compare(c.row, c.column) == -1 && y.setStart(c), c = k.end, y.compare(c.row, c.column) == 1 && y.setEnd(c)) : (c = k.start, y.compare(c.row, c.column) == -1 && (y = i.fromPoints(k.start, k.start))) : y = C(k) ? i.fromPoints(k.start, k.end) : i.fromPoints(k.start, k.start));
                }
                return y;
              }, this.replace = function(n, g) {
                return this.doc.replace(n, g);
              }, this.moveText = function(n, L, C) {
                var y, c, v, k = this.getTextRange(n), S = this.getFoldsInRange(n), L = i.fromPoints(L, L);
                return C || (this.remove(n), c = n.start.row - n.end.row, (v = c ? -n.end.column : n.start.column - n.end.column) && (L.start.row == n.end.row && L.start.column > n.end.column && (L.start.column += v), L.end.row == n.end.row && L.end.column > n.end.column && (L.end.column += v)), c && L.start.row >= n.end.row && (L.start.row += c, L.end.row += c)), L.end = this.insert(L.start, k), S.length && (y = n.start, n = L.start, c = n.row - y.row, v = n.column - y.column, this.addFolds(S.map(function(W) {
                  return (W = W.clone()).start.row == y.row && (W.start.column += v), W.end.row == y.row && (W.end.column += v), W.start.row += c, W.end.row += c, W;
                }))), L;
              }, this.indentRows = function(n, g, C) {
                C = C.replace(/\t/g, this.getTabString());
                for (var y = n; y <= g; y++) this.doc.insertInLine({ row: y, column: 0 }, C);
              }, this.outdentRows = function(n) {
                for (var g = n.collapseRows(), C = new i(0, 0, 0, 0), y = this.getTabSize(), c = g.start.row; c <= g.end.row; ++c) {
                  var v = this.getLine(c);
                  C.start.row = c, C.end.row = c;
                  for (var k = 0; k < y && v.charAt(k) == " "; ++k) ;
                  k < y && v.charAt(k) == "	" ? (C.start.column = k, C.end.column = k + 1) : (C.start.column = 0, C.end.column = k), this.remove(C);
                }
              }, this.$moveLines = function(n, v, C) {
                if (n = this.getRowFoldStart(n), v = this.getRowFoldEnd(v), C < 0) {
                  if ((c = this.getRowFoldStart(n + C)) < 0) return 0;
                  var y = c - n;
                } else if (0 < C) {
                  if ((c = this.getRowFoldEnd(v + C)) > this.doc.getLength() - 1) return 0;
                  y = c - v;
                } else n = this.$clipRowToDocument(n), y = (v = this.$clipRowToDocument(v)) - n + 1;
                var c = new i(n, 0, v, Number.MAX_VALUE), c = this.getFoldsInRange(c).map(function(k) {
                  return (k = k.clone()).start.row += y, k.end.row += y, k;
                }), v = C == 0 ? this.doc.getLines(n, v) : this.doc.removeFullLines(n, v);
                return this.doc.insertFullLines(n + y, v), c.length && this.addFolds(c), y;
              }, this.moveLinesUp = function(n, g) {
                return this.$moveLines(n, g, -1);
              }, this.moveLinesDown = function(n, g) {
                return this.$moveLines(n, g, 1);
              }, this.duplicateLines = function(n, g) {
                return this.$moveLines(n, g, 0);
              }, this.$clipRowToDocument = function(n) {
                return Math.max(0, Math.min(n, this.doc.getLength() - 1));
              }, this.$clipColumnToRow = function(n, g) {
                return g < 0 ? 0 : Math.min(this.doc.getLine(n).length, g);
              }, this.$clipPositionToDocument = function(n, g) {
                var C;
                return g = Math.max(0, g), g = n < 0 ? n = 0 : (C = this.doc.getLength()) <= n ? this.doc.getLine(n = C - 1).length : Math.min(this.doc.getLine(n).length, g), { row: n, column: g };
              }, this.$clipRangeToDocument = function(n) {
                n.start.row < 0 ? (n.start.row = 0, n.start.column = 0) : n.start.column = this.$clipColumnToRow(n.start.row, n.start.column);
                var g = this.doc.getLength() - 1;
                return n.end.row > g ? (n.end.row = g, n.end.column = this.doc.getLine(g).length) : n.end.column = this.$clipColumnToRow(n.end.row, n.end.column), n;
              }, this.$wrapLimit = 80, this.$useWrapMode = !1, this.$wrapLimitRange = { min: null, max: null }, this.setUseWrapMode = function(n) {
                n != this.$useWrapMode && (this.$useWrapMode = n, this.$modified = !0, this.$resetRowCache(0), n && (n = this.getLength(), this.$wrapData = Array(n), this.$updateWrapData(0, n - 1)), this._signal("changeWrapMode"));
              }, this.getUseWrapMode = function() {
                return this.$useWrapMode;
              }, this.setWrapLimitRange = function(n, g) {
                this.$wrapLimitRange.min === n && this.$wrapLimitRange.max === g || (this.$wrapLimitRange = { min: n, max: g }, this.$modified = !0, this.$bidiHandler.markAsDirty(), this.$useWrapMode && this._signal("changeWrapMode"));
              }, this.adjustWrapLimit = function(n, g) {
                var C = this.$wrapLimitRange;
                return C.max < 0 && (C = { min: g, max: g }), (C = this.$constrainWrapLimit(n, C.min, C.max)) != this.$wrapLimit && 1 < C && (this.$wrapLimit = C, this.$modified = !0, this.$useWrapMode && (this.$updateWrapData(0, this.getLength() - 1), this.$resetRowCache(0), this._signal("changeWrapLimit")), !0);
              }, this.$constrainWrapLimit = function(n, g, C) {
                return g && (n = Math.max(g, n)), n = C ? Math.min(C, n) : n;
              }, this.getWrapLimit = function() {
                return this.$wrapLimit;
              }, this.setWrapLimit = function(n) {
                this.setWrapLimitRange(n, n);
              }, this.getWrapLimitRange = function() {
                return { min: this.$wrapLimitRange.min, max: this.$wrapLimitRange.max };
              }, this.$updateInternalDataOnChange = function(n) {
                var g = this.$useWrapMode, C = n.action, y = n.start, c = n.end, v = y.row, k = c.row, S = k - v, L = null;
                if (this.$updating = !0, S != 0) if (C === "remove") {
                  this[g ? "$wrapData" : "$rowLengthCache"].splice(v, S);
                  var W = this.$foldData, L = this.getFoldsInRange(n);
                  this.removeFolds(L);
                  var _ = 0;
                  for ((H = this.getFoldLine(c.row)) && (H.addRemoveChars(c.row, c.column, y.column - c.column), H.shiftRow(-S), (z = this.getFoldLine(v)) && z !== H && (z.merge(H), H = z), _ = W.indexOf(H) + 1); _ < W.length; _++) (H = W[_]).start.row >= c.row && H.shiftRow(-S);
                  k = v;
                } else {
                  var O = Array(S);
                  O.unshift(v, 0);
                  var z = g ? this.$wrapData : this.$rowLengthCache;
                  for (z.splice.apply(z, O), W = this.$foldData, _ = 0, (H = this.getFoldLine(v)) && ((O = H.range.compareInside(y.row, y.column)) == 0 ? (H = H.split(y.row, y.column)) && (H.shiftRow(S), H.addRemoveChars(k, 0, c.column - y.column)) : O == -1 && (H.addRemoveChars(v, 0, c.column - y.column), H.shiftRow(S)), _ = W.indexOf(H) + 1); _ < W.length; _++) (H = W[_]).start.row >= v && H.shiftRow(S);
                }
                else {
                  var H, S = Math.abs(n.start.column - n.end.column);
                  C === "remove" && (L = this.getFoldsInRange(n), this.removeFolds(L), S = -S), (H = this.getFoldLine(v)) && H.addRemoveChars(v, y.column, S);
                }
                return g && this.$wrapData.length != this.doc.getLength() && console.error("doc.getLength() and $wrapData.length have to be the same!"), this.$updating = !1, g ? this.$updateWrapData(v, k) : this.$updateRowLengthCache(v, k), L;
              }, this.$updateRowLengthCache = function(n, g, C) {
                this.$rowLengthCache[n] = null, this.$rowLengthCache[g] = null;
              }, this.$updateWrapData = function(n, g) {
                var C, y, c = this.doc.getAllLines(), v = this.getTabSize(), k = this.$wrapData, S = this.$wrapLimit, L = n;
                for (g = Math.min(g, c.length - 1); L <= g; ) (y = this.getFoldLine(L, y)) ? (C = [], y.walk((function(W, _, O, z) {
                  var H;
                  if (W != null) {
                    (H = this.$getDisplayTokens(W, C.length))[0] = I;
                    for (var Y = 1; Y < H.length; Y++) H[Y] = f;
                  } else H = this.$getDisplayTokens(c[_].substring(z, O), C.length);
                  C = C.concat(H);
                }).bind(this), y.end.row, c[y.end.row].length + 1), k[y.start.row] = this.$computeWrapSplits(C, S, v), L = y.end.row + 1) : (C = this.$getDisplayTokens(c[L]), k[L] = this.$computeWrapSplits(C, S, v), L++);
              };
              var I = 3, f = 4;
              this.$computeWrapSplits = function(n, g, C) {
                function y(Y) {
                  for (var ie = Y - k, U = k; U < Y; U++) {
                    var q = n[U];
                    q !== 12 && q !== 2 || --ie;
                  }
                  c.length || (O = function() {
                    var ee = 0;
                    if (_ === 0) return ee;
                    if (W) for (var J = 0; J < n.length; J++) {
                      var de = n[J];
                      if (de == 10) ee += 1;
                      else if (de == 11) ee += C;
                      else if (de != 12) break;
                    }
                    return L && W !== !1 && (ee += C), Math.min(ee, _);
                  }(), c.indent = O), S += ie, c.push(S), k = Y;
                }
                if (n.length == 0) return [];
                for (var c = [], v = n.length, k = 0, S = 0, L = this.$wrapAsCode, W = this.$indentedSoftWrap, _ = g <= Math.max(2 * C, 8) || W === !1 ? 0 : Math.floor(g / 2), O = 0; g - O < v - k; ) {
                  var z = k + g - O;
                  if (10 <= n[z - 1] && 10 <= n[z]) y(z);
                  else if (n[z] != I && n[z] != f) {
                    for (var H = Math.max(z - (g - (g >> 2)), k - 1); H < z && n[z] < I; ) z--;
                    if (L) {
                      for (; H < z && n[z] < I; ) z--;
                      for (; H < z && n[z] == 9; ) z--;
                    } else for (; H < z && n[z] < 10; ) z--;
                    H < z ? y(++z) : (n[z = k + g] == 2 && z--, y(z - O));
                  } else {
                    for (; z != k - 1 && n[z] != I; z--) ;
                    if (k < z) y(z);
                    else {
                      for (z = k + g; z < n.length && n[z] == f; z++) ;
                      if (z == n.length) break;
                      y(z);
                    }
                  }
                }
                return c;
              }, this.$getDisplayTokens = function(n, g) {
                var C, y = [];
                g = g || 0;
                for (var c = 0; c < n.length; c++) {
                  var v = n.charCodeAt(c);
                  if (v == 9) {
                    C = this.getScreenTabSize(y.length + g), y.push(11);
                    for (var k = 1; k < C; k++) y.push(12);
                  } else v == 32 ? y.push(10) : 39 < v && v < 48 || 57 < v && v < 64 ? y.push(9) : 4352 <= v && l(v) ? y.push(1, 2) : y.push(1);
                }
                return y;
              }, this.$getStringScreenWidth = function(n, g, C) {
                if (g == 0) return [0, 0];
                var y, c;
                for (g == null && (g = 1 / 0), C = C || 0, c = 0; c < n.length && ((y = n.charCodeAt(c)) == 9 ? C += this.getScreenTabSize(C) : 4352 <= y && l(y) ? C += 2 : C += 1, !(g < C)); c++) ;
                return [C, c];
              }, this.lineWidgets = null, this.getRowLength = function(n) {
                var g = 1;
                return this.lineWidgets && (g += this.lineWidgets[n] && this.lineWidgets[n].rowCount || 0), this.$useWrapMode && this.$wrapData[n] ? this.$wrapData[n].length + g : g;
              }, this.getRowLineCount = function(n) {
                return this.$useWrapMode && this.$wrapData[n] ? this.$wrapData[n].length + 1 : 1;
              }, this.getRowWrapIndent = function(n) {
                if (this.$useWrapMode) {
                  var g = this.screenToDocumentPosition(n, Number.MAX_VALUE), n = this.$wrapData[g.row];
                  return n.length && n[0] < g.column ? n.indent : 0;
                }
                return 0;
              }, this.getScreenLastRowColumn = function(n) {
                return n = this.screenToDocumentPosition(n, Number.MAX_VALUE), this.documentToScreenColumn(n.row, n.column);
              }, this.getDocumentLastRowColumn = function(n, g) {
                return g = this.documentToScreenRow(n, g), this.getScreenLastRowColumn(g);
              }, this.getDocumentLastRowColumnPosition = function(n, g) {
                return g = this.documentToScreenRow(n, g), this.screenToDocumentPosition(g, Number.MAX_VALUE / 10);
              }, this.getRowSplitData = function(n) {
                if (this.$useWrapMode) return this.$wrapData[n];
              }, this.getScreenTabSize = function(n) {
                return this.$tabSize - (n % this.$tabSize | 0);
              }, this.screenToDocumentRow = function(n, g) {
                return this.screenToDocumentPosition(n, g).row;
              }, this.screenToDocumentColumn = function(n, g) {
                return this.screenToDocumentPosition(n, g).column;
              }, this.screenToDocumentPosition = function(n, g, C) {
                if (n < 0) return { row: 0, column: 0 };
                var y, c, v, k = 0, S = 0, L = 0, W = 0, _ = this.$screenRowCache, O = this.$getRowCacheIndex(_, n), z = _.length;
                v = z && 0 <= O ? (L = _[O], k = this.$docRowCache[O], n > _[z - 1]) : !z;
                for (var H = this.getLength() - 1, Y = this.getNextFoldLine(k), ie = Y ? Y.start.row : 1 / 0; L <= n && !(n < L + (W = this.getRowLength(k)) || H <= k); ) L += W, ie < ++k && (k = Y.end.row + 1, ie = (Y = this.getNextFoldLine(k, Y)) ? Y.start.row : 1 / 0), v && (this.$docRowCache.push(k), this.$screenRowCache.push(L));
                if (Y && Y.start.row <= k) y = this.getFoldDisplayLine(Y), k = Y.start.row;
                else {
                  if (L + W <= n || H < k) return { row: H, column: this.getLine(H).length };
                  y = this.getLine(k), Y = null;
                }
                return O = 0, _ = Math.floor(n - L), !this.$useWrapMode || (z = this.$wrapData[k]) && (c = z[_], 0 < _ && z.length && (O = z.indent, S = z[_ - 1] || z[z.length - 1], y = y.substring(S))), C !== void 0 && this.$bidiHandler.isBidiRow(L + _, k, _) && (g = this.$bidiHandler.offsetToCol(C)), S += this.$getStringScreenWidth(y, g - O)[1], this.$useWrapMode && c <= S && (S = c - 1), Y ? Y.idxToPosition(S) : { row: k, column: S };
              }, this.documentToScreenPosition = function(n, H) {
                var S = H === void 0 ? this.$clipPositionToDocument(n.row, n.column) : this.$clipPositionToDocument(n, H);
                n = S.row, H = S.column;
                var C = 0, z = null, L = null;
                (L = this.getFoldAt(n, H, 1)) && (n = L.start.row, H = L.start.column);
                var y, c, v = 0, k = this.$docRowCache, S = this.$getRowCacheIndex(k, n), L = k.length;
                c = L && 0 <= S ? (v = k[S], C = this.$screenRowCache[S], n > k[L - 1]) : !L;
                for (var W = this.getNextFoldLine(v), _ = W ? W.start.row : 1 / 0; v < n; ) {
                  if (_ <= v) {
                    if (n < (y = W.end.row + 1)) break;
                    _ = (W = this.getNextFoldLine(y, W)) ? W.start.row : 1 / 0;
                  } else y = v + 1;
                  C += this.getRowLength(v), v = y, c && (this.$docRowCache.push(v), this.$screenRowCache.push(C));
                }
                var O = "", z = W && _ <= v ? (O = this.getFoldDisplayLine(W, n, H), W.start.row) : (O = this.getLine(n).substring(0, H), n), H = 0;
                if (this.$useWrapMode) {
                  var Y = this.$wrapData[z];
                  if (Y) {
                    for (var ie = 0; O.length >= Y[ie]; ) C++, ie++;
                    O = O.substring(Y[ie - 1] || 0, O.length), H = 0 < ie ? Y.indent : 0;
                  }
                }
                return this.lineWidgets && this.lineWidgets[v] && this.lineWidgets[v].rowsAbove && (C += this.lineWidgets[v].rowsAbove), { row: C, column: H + this.$getStringScreenWidth(O)[0] };
              }, this.documentToScreenColumn = function(n, g) {
                return this.documentToScreenPosition(n, g).column;
              }, this.documentToScreenRow = function(n, g) {
                return this.documentToScreenPosition(n, g).row;
              }, this.getScreenLength = function() {
                var n = 0, g = null;
                if (this.$useWrapMode) for (var C = this.$wrapData.length, y = 0, c = 0, v = (g = this.$foldData[c++]) ? g.start.row : 1 / 0; y < C; ) {
                  var k = this.$wrapData[y];
                  n += k ? k.length + 1 : 1, v < ++y && (y = g.end.row + 1, v = (g = this.$foldData[c++]) ? g.start.row : 1 / 0);
                }
                else for (var n = this.getLength(), S = this.$foldData, c = 0; c < S.length; c++) n -= (g = S[c]).end.row - g.start.row;
                return this.lineWidgets && (n += this.$getWidgetScreenLength()), n;
              }, this.$setFontMetrics = function(n) {
                this.$enableVarChar && (this.$getStringScreenWidth = function(g, C, y) {
                  if (C === 0) return [0, 0];
                  var c, v;
                  for (C = C || 1 / 0, y = y || 0, v = 0; v < g.length && !(C < (y += (c = g.charAt(v)) === "	" ? this.getScreenTabSize(y) : n.getCharacterWidth(c))); v++) ;
                  return [y, v];
                });
              }, this.destroy = function() {
                this.bgTokenizer && (this.bgTokenizer.setDocument(null), this.bgTokenizer = null), this.$stopWorker(), this.removeAllListeners(), this.selection.detach();
              }, this.isFullWidth = l;
            }).call(p.prototype), j("./edit_session/folding").Folding.call(p.prototype), j("./edit_session/bracket_match").BracketMatch.call(p.prototype), a.defineOptions(p.prototype, "session", { wrap: { set: function(l) {
              l && l != "off" ? l == "free" ? l = !0 : l == "printMargin" ? l = -1 : typeof l == "string" && (l = parseInt(l, 10) || !1) : l = !1, this.$wrap != l && ((this.$wrap = l) ? (this.setWrapLimitRange(l = typeof l == "number" ? l : null, l), this.setUseWrapMode(!0)) : this.setUseWrapMode(!1));
            }, get: function() {
              return this.getUseWrapMode() ? this.$wrap == -1 ? "printMargin" : this.getWrapLimitRange().min ? this.$wrap : "free" : "off";
            }, handlesSet: !0 }, wrapMethod: { set: function(l) {
              (l = l == "auto" ? this.$mode.type != "text" : l != "text") != this.$wrapAsCode && (this.$wrapAsCode = l, this.$useWrapMode && (this.$useWrapMode = !1, this.setUseWrapMode(!0)));
            }, initialValue: "auto" }, indentedSoftWrap: { set: function() {
              this.$useWrapMode && (this.$useWrapMode = !1, this.setUseWrapMode(!0));
            }, initialValue: !0 }, firstLineNumber: { set: function() {
              this._signal("changeBreakpoint");
            }, initialValue: 1 }, useWorker: { set: function(l) {
              this.$useWorker = l, this.$stopWorker(), l && this.$startWorker();
            }, initialValue: !0 }, useSoftTabs: { initialValue: !0 }, tabSize: { set: function(l) {
              0 < (l = parseInt(l)) && this.$tabSize !== l && (this.$modified = !0, this.$rowLengthCache = [], this.$tabSize = l, this._signal("changeTabSize"));
            }, initialValue: 4, handlesSet: !0 }, navigateWithinSoftTabs: { initialValue: !1 }, foldStyle: { set: function(l) {
              this.setFoldStyle(l);
            }, handlesSet: !0 }, overwrite: { set: function(l) {
              this._signal("changeOverwrite");
            }, initialValue: !1 }, newLineMode: { set: function(l) {
              this.doc.setNewLineMode(l);
            }, get: function() {
              return this.doc.getNewLineMode();
            }, handlesSet: !0 }, mode: { set: function(l) {
              this.setMode(l);
            }, get: function() {
              return this.$modeId;
            }, handlesSet: !0 } }), m.EditSession = p;
          }), ace.define("ace/search", ["require", "exports", "module", "ace/lib/lang", "ace/lib/oop", "ace/range"], function(a, m, E) {
            var b = a("./lib/lang"), w = a("./lib/oop"), d = a("./range").Range, a = function() {
              this.$options = {};
            };
            (function() {
              this.set = function(o) {
                return w.mixin(this.$options, o), this;
              }, this.getOptions = function() {
                return b.copyObject(this.$options);
              }, this.setOptions = function(o) {
                this.$options = o;
              }, this.find = function(t) {
                var e = this.$options, t = this.$matchIterator(t, e);
                if (!t) return !1;
                var i = null;
                return t.forEach(function(s, h, r, p) {
                  return i = new d(s, h, r, p), !(h == p && e.start && e.start.start && e.skipCurrent != 0 && i.isEqual(e.start) && (i = null, 1));
                }), i;
              }, this.findAll = function(o) {
                var e = this.$options;
                if (!e.needle) return [];
                this.$assembleRegExp(e);
                var t = e.range, i = t ? o.getLines(t.start.row, t.end.row) : o.doc.getAllLines(), s = [], h = e.re;
                if (e.$isMultiLine) {
                  var r, p = h.length, l = i.length - p;
                  e: for (var I = h.offset || 0; I <= l; I++) {
                    for (var f = 0; f < p; f++) if (i[I + f].search(h[f]) == -1) continue e;
                    var n = i[I], g = i[I + p - 1], n = n.length - n.match(h[0])[0].length, g = g.match(h[p - 1])[0].length;
                    r && r.end.row === I && r.end.column > n || (s.push(r = new d(I, n, I + p - 1, g)), 2 < p && (I = I + p - 2));
                  }
                } else for (var C = 0; C < i.length; C++) for (var y = b.getMatchOffsets(i[C], h), f = 0; f < y.length; f++) {
                  var c = y[f];
                  s.push(new d(C, c.offset, C, c.offset + c.length));
                }
                if (t) {
                  for (var v = t.start.column, k = t.start.column, C = 0, f = s.length - 1; C < f && s[C].start.column < v && s[C].start.row == t.start.row; ) C++;
                  for (; C < f && s[f].end.column > k && s[f].end.row == t.end.row; ) f--;
                  for (s = s.slice(C, f + 1), C = 0, f = s.length; C < f; C++) s[C].start.row += t.start.row, s[C].end.row += t.start.row;
                }
                return s;
              }, this.replace = function(o, e) {
                var t = this.$options, i = this.$assembleRegExp(t);
                if (t.$isMultiLine) return e;
                if (i) {
                  var s = i.exec(o);
                  if (!s || s[0].length != o.length) return null;
                  if (e = o.replace(i, e), t.preserveCase) {
                    e = e.split("");
                    for (var h = Math.min(o.length, o.length); h--; ) {
                      var r = o[h];
                      r && r.toLowerCase() != r ? e[h] = e[h].toUpperCase() : e[h] = e[h].toLowerCase();
                    }
                    e = e.join("");
                  }
                  return e;
                }
              }, this.$assembleRegExp = function(o, e) {
                function t(p) {
                  return /\w/.test(p) || i.regExp ? "\\b" : "";
                }
                if (o.needle instanceof RegExp) return o.re = o.needle;
                var i, s = o.needle;
                if (!o.needle) return o.re = !1;
                o.regExp || (s = b.escapeRegExp(s)), o.wholeWord && (i = o, s = t((h = s)[0]) + h + t(h[h.length - 1]));
                var h = o.caseSensitive ? "gm" : "gmi";
                if (o.$isMultiLine = !e && /[\n\r]/.test(s), o.$isMultiLine) return o.re = this.$assembleMultilineRegExp(s, h);
                try {
                  var r = new RegExp(s, h);
                } catch {
                  r = !1;
                }
                return o.re = r;
              }, this.$assembleMultilineRegExp = function(o, e) {
                for (var t = o.replace(/\r\n|\r|\n/g, `$
^`).split(`
`), i = [], s = 0; s < t.length; s++) try {
                  i.push(new RegExp(t[s], e));
                } catch {
                  return !1;
                }
                return i;
              }, this.$matchIterator = function(o, e) {
                var t = this.$assembleRegExp(e);
                if (!t) return !1;
                var i = e.backwards == 1, s = e.skipCurrent != 0, h = e.range, r = e.start;
                (r = r || (h ? h[i ? "end" : "start"] : o.selection.getRange())).start && (r = r[s != i ? "end" : "start"]);
                var p, l, I = h ? h.start.row : 0, f = h ? h.end.row : o.getLength() - 1;
                return h = i ? function(n) {
                  var g = r.row;
                  if (!l(g, r.column, n)) {
                    for (g--; I <= g; g--) if (l(g, Number.MAX_VALUE, n)) return;
                    if (e.wrap != 0) {
                      for (g = f, I = r.row; I <= g; g--) if (l(g, Number.MAX_VALUE, n)) return;
                    }
                  }
                } : function(n) {
                  var g = r.row;
                  if (!l(g, r.column, n)) {
                    for (g += 1; g <= f; g++) if (l(g, 0, n)) return;
                    if (e.wrap != 0) {
                      for (g = I, f = r.row; g <= f; g++) if (l(g, 0, n)) return;
                    }
                  }
                }, l = e.$isMultiLine ? (p = t.length, function(n, g, C) {
                  var y = i ? n - p + 1 : n;
                  if (!(y < 0)) {
                    var c = o.getLine(y), v = c.search(t[0]);
                    if (!(!i && v < g || v === -1)) {
                      for (var k = 1; k < p; k++) if ((c = o.getLine(y + k)).search(t[k]) == -1) return;
                      if (n = c.match(t[p - 1])[0].length, !(i && g < n)) return !!C(y, v, y + p - 1, n) || void 0;
                    }
                  }
                }) : i ? function(n, g, C) {
                  var y, c = o.getLine(n), v = [];
                  for (t.lastIndex = 0; y = t.exec(c); ) {
                    var k = y[0].length, S = y.index;
                    if (!k) {
                      if (S >= c.length) break;
                      t.lastIndex = S += 1;
                    }
                    if (y.index + k > g) break;
                    v.push(y.index, k);
                  }
                  for (var L = v.length - 1; 0 <= L; L -= 2) {
                    var W = v[L - 1];
                    if (C(n, W, n, W + (k = v[L]))) return !0;
                  }
                } : function(n, g, C) {
                  var y = o.getLine(n);
                  for (t.lastIndex = g; c = t.exec(y); ) {
                    var c, v = c[0].length;
                    if (C(n, c = c.index, n, c + v)) return !0;
                    if (!v && (t.lastIndex = c += 1, c >= y.length)) return !1;
                  }
                }, { forEach: h };
              };
            }).call(a.prototype), m.Search = a;
          }), ace.define("ace/keyboard/hash_handler", ["require", "exports", "module", "ace/lib/keys", "ace/lib/useragent"], function(j, m, E) {
            function b(e, t) {
              this.platform = t || (a.isMac ? "mac" : "win"), this.commands = {}, this.commandKeyBinding = {}, this.addCommands(e), this.$singleCommand = !0;
            }
            function w(e, t) {
              b.call(this, e, t), this.$singleCommand = !1;
            }
            var d = j("../lib/keys"), a = j("../lib/useragent"), o = d.KEY_MODS;
            w.prototype = b.prototype, (function() {
              function e(t) {
                return typeof t == "object" && t.bindKey && t.bindKey.position || (t.isDefault ? -100 : 0);
              }
              this.addCommand = function(t) {
                this.commands[t.name] && this.removeCommand(t), (this.commands[t.name] = t).bindKey && this._buildKeyHash(t);
              }, this.removeCommand = function(t, i) {
                var s = t && (typeof t == "string" ? t : t.name);
                t = this.commands[s], i || delete this.commands[s];
                var h, r = this.commandKeyBinding;
                for (h in r) {
                  var p, l = r[h];
                  l == t ? delete r[h] : !Array.isArray(l) || (p = l.indexOf(t)) != -1 && (l.splice(p, 1), l.length == 1 && (r[h] = l[0]));
                }
              }, this.bindKey = function(t, i, s) {
                if (typeof t == "object" && t && (s == null && (s = t.position), t = t[this.platform]), t) return typeof i == "function" ? this.addCommand({ exec: i, bindKey: t, name: i.name || t }) : void t.split("|").forEach(function(h) {
                  var r, p = "";
                  h.indexOf(" ") != -1 && (h = (r = h.split(/\s+/)).pop(), r.forEach(function(l) {
                    l = this.parseKeys(l), l = o[l.hashId] + l.key, p += (p ? " " : "") + l, this._addCommandToBinding(p, "chainKeys");
                  }, this), p += " "), h = this.parseKeys(h), h = o[h.hashId] + h.key, this._addCommandToBinding(p + h, i, s);
                }, this);
              }, this._addCommandToBinding = function(t, i, s) {
                var h = this.commandKeyBinding;
                if (i) if (!h[t] || this.$singleCommand) h[t] = i;
                else {
                  Array.isArray(h[t]) ? (p = h[t].indexOf(i)) != -1 && h[t].splice(p, 1) : h[t] = [h[t]], typeof s != "number" && (s = e(i));
                  for (var r = h[t], p = 0; p < r.length && !(s < e(r[p])); p++) ;
                  r.splice(p, 0, i);
                }
                else delete h[t];
              }, this.addCommands = function(t) {
                t && Object.keys(t).forEach(function(i) {
                  var s = t[i];
                  if (s) {
                    if (typeof s == "string") return this.bindKey(s, i);
                    typeof (s = typeof s == "function" ? { exec: s } : s) == "object" && (s.name || (s.name = i), this.addCommand(s));
                  }
                }, this);
              }, this.removeCommands = function(t) {
                Object.keys(t).forEach(function(i) {
                  this.removeCommand(t[i]);
                }, this);
              }, this.bindKeys = function(t) {
                Object.keys(t).forEach(function(i) {
                  this.bindKey(i, t[i]);
                }, this);
              }, this._buildKeyHash = function(t) {
                this.bindKey(t.bindKey, t);
              }, this.parseKeys = function(t) {
                var i = t.toLowerCase().split(/[\-\+]([\-\+])?/).filter(function(I) {
                  return I;
                }), s = i.pop(), h = d[s];
                if (d.FUNCTION_KEYS[h]) s = d.FUNCTION_KEYS[h].toLowerCase();
                else {
                  if (!i.length) return { key: s, hashId: -1 };
                  if (i.length == 1 && i[0] == "shift") return { key: s.toUpperCase(), hashId: -1 };
                }
                for (var r = 0, p = i.length; p--; ) {
                  var l = d.KEY_MODS[i[p]];
                  if (l == null) return typeof console < "u" && console.error("invalid modifier " + i[p] + " in " + t), !1;
                  r |= l;
                }
                return { key: s, hashId: r };
              }, this.findKeyCommand = function(t, i) {
                return i = o[t] + i, this.commandKeyBinding[i];
              }, this.handleKeyboard = function(t, i, s, h) {
                if (!(h < 0)) {
                  var r = o[i] + s, p = this.commandKeyBinding[r];
                  return t.$keyChain && (t.$keyChain += " " + r, p = this.commandKeyBinding[t.$keyChain] || p), !p || p != "chainKeys" && p[p.length - 1] != "chainKeys" ? (t.$keyChain && (i && i != 4 || s.length != 1 ? (i == -1 || 0 < h) && (t.$keyChain = "") : t.$keyChain = t.$keyChain.slice(0, -r.length - 1)), { command: p }) : (t.$keyChain = t.$keyChain || r, { command: "null" });
                }
              }, this.getStatusText = function(t, i) {
                return i.$keyChain || "";
              };
            }).call(b.prototype), m.HashHandler = b, m.MultiHashHandler = w;
          }), ace.define("ace/commands/command_manager", ["require", "exports", "module", "ace/lib/oop", "ace/keyboard/hash_handler", "ace/lib/event_emitter"], function(a, m, E) {
            var b = a("../lib/oop"), w = a("../keyboard/hash_handler").MultiHashHandler, d = a("../lib/event_emitter").EventEmitter, a = function(o, e) {
              w.call(this, e, o), this.byName = this.commands, this.setDefaultHandler("exec", function(t) {
                return t.command.exec(t.editor, t.args || {});
              });
            };
            b.inherits(a, w), (function() {
              b.implement(this, d), this.exec = function(o, e, t) {
                if (Array.isArray(o)) {
                  for (var i = o.length; i--; ) if (this.exec(o[i], e, t)) return !0;
                  return !1;
                }
                if (!(o = typeof o == "string" ? this.commands[o] : o) || e && e.$readOnly && !o.readOnly || this.$checkCommandState != 0 && o.isAvailable && !o.isAvailable(e)) return !1;
                var s = { editor: e, command: o, args: t };
                return s.returnValue = this._emit("exec", s), this._signal("afterExec", s), s.returnValue !== !1;
              }, this.toggleRecording = function(o) {
                if (!this.$inReplay) return o && o._emit("changeStatus"), this.recording ? (this.macro.pop(), this.off("exec", this.$addCommandToMacro), this.macro.length || (this.macro = this.oldMacro), this.recording = !1) : (this.$addCommandToMacro || (this.$addCommandToMacro = (function(e) {
                  this.macro.push([e.command, e.args]);
                }).bind(this)), this.oldMacro = this.macro, this.macro = [], this.on("exec", this.$addCommandToMacro), this.recording = !0);
              }, this.replay = function(o) {
                if (!this.$inReplay && this.macro) {
                  if (this.recording) return this.toggleRecording(o);
                  try {
                    this.$inReplay = !0, this.macro.forEach(function(e) {
                      typeof e == "string" ? this.exec(e, o) : this.exec(e[0], o, e[1]);
                    }, this);
                  } finally {
                    this.$inReplay = !1;
                  }
                }
              }, this.trimMacro = function(o) {
                return o.map(function(e) {
                  return typeof e[0] != "string" && (e[0] = e[0].name), e = e[1] ? e : e[0];
                });
              };
            }).call(a.prototype), m.CommandManager = a;
          }), ace.define("ace/commands/default_commands", ["require", "exports", "module", "ace/lib/lang", "ace/config", "ace/range"], function(j, m, E) {
            function b(e, t) {
              return { win: e, mac: t };
            }
            var w = j("../lib/lang"), d = j("../config"), a = j("../range").Range;
            m.commands = [{ name: "showSettingsMenu", bindKey: b("Ctrl-,", "Command-,"), exec: function(e) {
              d.loadModule("ace/ext/settings_menu", function(t) {
                t.init(e), e.showSettingsMenu();
              });
            }, readOnly: !0 }, { name: "goToNextError", bindKey: b("Alt-E", "F4"), exec: function(e) {
              d.loadModule("./ext/error_marker", function(t) {
                t.showErrorMarker(e, 1);
              });
            }, scrollIntoView: "animate", readOnly: !0 }, { name: "goToPreviousError", bindKey: b("Alt-Shift-E", "Shift-F4"), exec: function(e) {
              d.loadModule("./ext/error_marker", function(t) {
                t.showErrorMarker(e, -1);
              });
            }, scrollIntoView: "animate", readOnly: !0 }, { name: "selectall", description: "Select all", bindKey: b("Ctrl-A", "Command-A"), exec: function(e) {
              e.selectAll();
            }, readOnly: !0 }, { name: "centerselection", description: "Center selection", bindKey: b(null, "Ctrl-L"), exec: function(e) {
              e.centerSelection();
            }, readOnly: !0 }, { name: "gotoline", description: "Go to line...", bindKey: b("Ctrl-L", "Command-L"), exec: function(e, t) {
              typeof t != "number" || isNaN(t) || e.gotoLine(t), e.prompt({ $type: "gotoLine" });
            }, readOnly: !0 }, { name: "fold", bindKey: b("Alt-L|Ctrl-F1", "Command-Alt-L|Command-F1"), exec: function(e) {
              e.session.toggleFold(!1);
            }, multiSelectAction: "forEach", scrollIntoView: "center", readOnly: !0 }, { name: "unfold", bindKey: b("Alt-Shift-L|Ctrl-Shift-F1", "Command-Alt-Shift-L|Command-Shift-F1"), exec: function(e) {
              e.session.toggleFold(!0);
            }, multiSelectAction: "forEach", scrollIntoView: "center", readOnly: !0 }, { name: "toggleFoldWidget", bindKey: b("F2", "F2"), exec: function(e) {
              e.session.toggleFoldWidget();
            }, multiSelectAction: "forEach", scrollIntoView: "center", readOnly: !0 }, { name: "toggleParentFoldWidget", bindKey: b("Alt-F2", "Alt-F2"), exec: function(e) {
              e.session.toggleFoldWidget(!0);
            }, multiSelectAction: "forEach", scrollIntoView: "center", readOnly: !0 }, { name: "foldall", description: "Fold all", bindKey: b(null, "Ctrl-Command-Option-0"), exec: function(e) {
              e.session.foldAll();
            }, scrollIntoView: "center", readOnly: !0 }, { name: "foldAllComments", description: "Fold all comments", bindKey: b(null, "Ctrl-Command-Option-0"), exec: function(e) {
              e.session.foldAllComments();
            }, scrollIntoView: "center", readOnly: !0 }, { name: "foldOther", description: "Fold other", bindKey: b("Alt-0", "Command-Option-0"), exec: function(e) {
              e.session.foldAll(), e.session.unfold(e.selection.getAllRanges());
            }, scrollIntoView: "center", readOnly: !0 }, { name: "unfoldall", description: "Unfold all", bindKey: b("Alt-Shift-0", "Command-Option-Shift-0"), exec: function(e) {
              e.session.unfold();
            }, scrollIntoView: "center", readOnly: !0 }, { name: "findnext", description: "Find next", bindKey: b("Ctrl-K", "Command-G"), exec: function(e) {
              e.findNext();
            }, multiSelectAction: "forEach", scrollIntoView: "center", readOnly: !0 }, { name: "findprevious", description: "Find previous", bindKey: b("Ctrl-Shift-K", "Command-Shift-G"), exec: function(e) {
              e.findPrevious();
            }, multiSelectAction: "forEach", scrollIntoView: "center", readOnly: !0 }, { name: "selectOrFindNext", description: "Select or find next", bindKey: b("Alt-K", "Ctrl-G"), exec: function(e) {
              e.selection.isEmpty() ? e.selection.selectWord() : e.findNext();
            }, readOnly: !0 }, { name: "selectOrFindPrevious", description: "Select or find previous", bindKey: b("Alt-Shift-K", "Ctrl-Shift-G"), exec: function(e) {
              e.selection.isEmpty() ? e.selection.selectWord() : e.findPrevious();
            }, readOnly: !0 }, { name: "find", description: "Find", bindKey: b("Ctrl-F", "Command-F"), exec: function(e) {
              d.loadModule("ace/ext/searchbox", function(t) {
                t.Search(e);
              });
            }, readOnly: !0 }, { name: "overwrite", description: "Overwrite", bindKey: "Insert", exec: function(e) {
              e.toggleOverwrite();
            }, readOnly: !0 }, { name: "selecttostart", description: "Select to start", bindKey: b("Ctrl-Shift-Home", "Command-Shift-Home|Command-Shift-Up"), exec: function(e) {
              e.getSelection().selectFileStart();
            }, multiSelectAction: "forEach", readOnly: !0, scrollIntoView: "animate", aceCommandGroup: "fileJump" }, { name: "gotostart", description: "Go to start", bindKey: b("Ctrl-Home", "Command-Home|Command-Up"), exec: function(e) {
              e.navigateFileStart();
            }, multiSelectAction: "forEach", readOnly: !0, scrollIntoView: "animate", aceCommandGroup: "fileJump" }, { name: "selectup", description: "Select up", bindKey: b("Shift-Up", "Shift-Up|Ctrl-Shift-P"), exec: function(e) {
              e.getSelection().selectUp();
            }, multiSelectAction: "forEach", scrollIntoView: "cursor", readOnly: !0 }, { name: "golineup", description: "Go line up", bindKey: b("Up", "Up|Ctrl-P"), exec: function(e, t) {
              e.navigateUp(t.times);
            }, multiSelectAction: "forEach", scrollIntoView: "cursor", readOnly: !0 }, { name: "selecttoend", description: "Select to end", bindKey: b("Ctrl-Shift-End", "Command-Shift-End|Command-Shift-Down"), exec: function(e) {
              e.getSelection().selectFileEnd();
            }, multiSelectAction: "forEach", readOnly: !0, scrollIntoView: "animate", aceCommandGroup: "fileJump" }, { name: "gotoend", description: "Go to end", bindKey: b("Ctrl-End", "Command-End|Command-Down"), exec: function(e) {
              e.navigateFileEnd();
            }, multiSelectAction: "forEach", readOnly: !0, scrollIntoView: "animate", aceCommandGroup: "fileJump" }, { name: "selectdown", description: "Select down", bindKey: b("Shift-Down", "Shift-Down|Ctrl-Shift-N"), exec: function(e) {
              e.getSelection().selectDown();
            }, multiSelectAction: "forEach", scrollIntoView: "cursor", readOnly: !0 }, { name: "golinedown", description: "Go line down", bindKey: b("Down", "Down|Ctrl-N"), exec: function(e, t) {
              e.navigateDown(t.times);
            }, multiSelectAction: "forEach", scrollIntoView: "cursor", readOnly: !0 }, { name: "selectwordleft", description: "Select word left", bindKey: b("Ctrl-Shift-Left", "Option-Shift-Left"), exec: function(e) {
              e.getSelection().selectWordLeft();
            }, multiSelectAction: "forEach", scrollIntoView: "cursor", readOnly: !0 }, { name: "gotowordleft", description: "Go to word left", bindKey: b("Ctrl-Left", "Option-Left"), exec: function(e) {
              e.navigateWordLeft();
            }, multiSelectAction: "forEach", scrollIntoView: "cursor", readOnly: !0 }, { name: "selecttolinestart", description: "Select to line start", bindKey: b("Alt-Shift-Left", "Command-Shift-Left|Ctrl-Shift-A"), exec: function(e) {
              e.getSelection().selectLineStart();
            }, multiSelectAction: "forEach", scrollIntoView: "cursor", readOnly: !0 }, { name: "gotolinestart", description: "Go to line start", bindKey: b("Alt-Left|Home", "Command-Left|Home|Ctrl-A"), exec: function(e) {
              e.navigateLineStart();
            }, multiSelectAction: "forEach", scrollIntoView: "cursor", readOnly: !0 }, { name: "selectleft", description: "Select left", bindKey: b("Shift-Left", "Shift-Left|Ctrl-Shift-B"), exec: function(e) {
              e.getSelection().selectLeft();
            }, multiSelectAction: "forEach", scrollIntoView: "cursor", readOnly: !0 }, { name: "gotoleft", description: "Go to left", bindKey: b("Left", "Left|Ctrl-B"), exec: function(e, t) {
              e.navigateLeft(t.times);
            }, multiSelectAction: "forEach", scrollIntoView: "cursor", readOnly: !0 }, { name: "selectwordright", description: "Select word right", bindKey: b("Ctrl-Shift-Right", "Option-Shift-Right"), exec: function(e) {
              e.getSelection().selectWordRight();
            }, multiSelectAction: "forEach", scrollIntoView: "cursor", readOnly: !0 }, { name: "gotowordright", description: "Go to word right", bindKey: b("Ctrl-Right", "Option-Right"), exec: function(e) {
              e.navigateWordRight();
            }, multiSelectAction: "forEach", scrollIntoView: "cursor", readOnly: !0 }, { name: "selecttolineend", description: "Select to line end", bindKey: b("Alt-Shift-Right", "Command-Shift-Right|Shift-End|Ctrl-Shift-E"), exec: function(e) {
              e.getSelection().selectLineEnd();
            }, multiSelectAction: "forEach", scrollIntoView: "cursor", readOnly: !0 }, { name: "gotolineend", description: "Go to line end", bindKey: b("Alt-Right|End", "Command-Right|End|Ctrl-E"), exec: function(e) {
              e.navigateLineEnd();
            }, multiSelectAction: "forEach", scrollIntoView: "cursor", readOnly: !0 }, { name: "selectright", description: "Select right", bindKey: b("Shift-Right", "Shift-Right"), exec: function(e) {
              e.getSelection().selectRight();
            }, multiSelectAction: "forEach", scrollIntoView: "cursor", readOnly: !0 }, { name: "gotoright", description: "Go to right", bindKey: b("Right", "Right|Ctrl-F"), exec: function(e, t) {
              e.navigateRight(t.times);
            }, multiSelectAction: "forEach", scrollIntoView: "cursor", readOnly: !0 }, { name: "selectpagedown", description: "Select page down", bindKey: "Shift-PageDown", exec: function(e) {
              e.selectPageDown();
            }, readOnly: !0 }, { name: "pagedown", description: "Page down", bindKey: b(null, "Option-PageDown"), exec: function(e) {
              e.scrollPageDown();
            }, readOnly: !0 }, { name: "gotopagedown", description: "Go to page down", bindKey: b("PageDown", "PageDown|Ctrl-V"), exec: function(e) {
              e.gotoPageDown();
            }, readOnly: !0 }, { name: "selectpageup", description: "Select page up", bindKey: "Shift-PageUp", exec: function(e) {
              e.selectPageUp();
            }, readOnly: !0 }, { name: "pageup", description: "Page up", bindKey: b(null, "Option-PageUp"), exec: function(e) {
              e.scrollPageUp();
            }, readOnly: !0 }, { name: "gotopageup", description: "Go to page up", bindKey: "PageUp", exec: function(e) {
              e.gotoPageUp();
            }, readOnly: !0 }, { name: "scrollup", description: "Scroll up", bindKey: b("Ctrl-Up", null), exec: function(e) {
              e.renderer.scrollBy(0, -2 * e.renderer.layerConfig.lineHeight);
            }, readOnly: !0 }, { name: "scrolldown", description: "Scroll down", bindKey: b("Ctrl-Down", null), exec: function(e) {
              e.renderer.scrollBy(0, 2 * e.renderer.layerConfig.lineHeight);
            }, readOnly: !0 }, { name: "selectlinestart", description: "Select line start", bindKey: "Shift-Home", exec: function(e) {
              e.getSelection().selectLineStart();
            }, multiSelectAction: "forEach", scrollIntoView: "cursor", readOnly: !0 }, { name: "selectlineend", description: "Select line end", bindKey: "Shift-End", exec: function(e) {
              e.getSelection().selectLineEnd();
            }, multiSelectAction: "forEach", scrollIntoView: "cursor", readOnly: !0 }, { name: "togglerecording", description: "Toggle recording", bindKey: b("Ctrl-Alt-E", "Command-Option-E"), exec: function(e) {
              e.commands.toggleRecording(e);
            }, readOnly: !0 }, { name: "replaymacro", description: "Replay macro", bindKey: b("Ctrl-Shift-E", "Command-Shift-E"), exec: function(e) {
              e.commands.replay(e);
            }, readOnly: !0 }, { name: "jumptomatching", description: "Jump to matching", bindKey: b("Ctrl-\\|Ctrl-P", "Command-\\"), exec: function(e) {
              e.jumpToMatching();
            }, multiSelectAction: "forEach", scrollIntoView: "animate", readOnly: !0 }, { name: "selecttomatching", description: "Select to matching", bindKey: b("Ctrl-Shift-\\|Ctrl-Shift-P", "Command-Shift-\\"), exec: function(e) {
              e.jumpToMatching(!0);
            }, multiSelectAction: "forEach", scrollIntoView: "animate", readOnly: !0 }, { name: "expandToMatching", description: "Expand to matching", bindKey: b("Ctrl-Shift-M", "Ctrl-Shift-M"), exec: function(e) {
              e.jumpToMatching(!0, !0);
            }, multiSelectAction: "forEach", scrollIntoView: "animate", readOnly: !0 }, { name: "passKeysToBrowser", description: "Pass keys to browser", bindKey: b(null, null), exec: function() {
            }, passEvent: !0, readOnly: !0 }, { name: "copy", description: "Copy", exec: function(e) {
            }, readOnly: !0 }, { name: "cut", description: "Cut", exec: function(e) {
              var t = e.$copyWithEmptySelection && e.selection.isEmpty() ? e.selection.getLineRange() : e.selection.getRange();
              e._emit("cut", t), t.isEmpty() || e.session.remove(t), e.clearSelection();
            }, scrollIntoView: "cursor", multiSelectAction: "forEach" }, { name: "paste", description: "Paste", exec: function(e, t) {
              e.$handlePaste(t);
            }, scrollIntoView: "cursor" }, { name: "removeline", description: "Remove line", bindKey: b("Ctrl-D", "Command-D"), exec: function(e) {
              e.removeLines();
            }, scrollIntoView: "cursor", multiSelectAction: "forEachLine" }, { name: "duplicateSelection", description: "Duplicate selection", bindKey: b("Ctrl-Shift-D", "Command-Shift-D"), exec: function(e) {
              e.duplicateSelection();
            }, scrollIntoView: "cursor", multiSelectAction: "forEach" }, { name: "sortlines", description: "Sort lines", bindKey: b("Ctrl-Alt-S", "Command-Alt-S"), exec: function(e) {
              e.sortLines();
            }, scrollIntoView: "selection", multiSelectAction: "forEachLine" }, { name: "togglecomment", description: "Toggle comment", bindKey: b("Ctrl-/", "Command-/"), exec: function(e) {
              e.toggleCommentLines();
            }, multiSelectAction: "forEachLine", scrollIntoView: "selectionPart" }, { name: "toggleBlockComment", description: "Toggle block comment", bindKey: b("Ctrl-Shift-/", "Command-Shift-/"), exec: function(e) {
              e.toggleBlockComment();
            }, multiSelectAction: "forEach", scrollIntoView: "selectionPart" }, { name: "modifyNumberUp", description: "Modify number up", bindKey: b("Ctrl-Shift-Up", "Alt-Shift-Up"), exec: function(e) {
              e.modifyNumber(1);
            }, scrollIntoView: "cursor", multiSelectAction: "forEach" }, { name: "modifyNumberDown", description: "Modify number down", bindKey: b("Ctrl-Shift-Down", "Alt-Shift-Down"), exec: function(e) {
              e.modifyNumber(-1);
            }, scrollIntoView: "cursor", multiSelectAction: "forEach" }, { name: "replace", description: "Replace", bindKey: b("Ctrl-H", "Command-Option-F"), exec: function(e) {
              d.loadModule("ace/ext/searchbox", function(t) {
                t.Search(e, !0);
              });
            } }, { name: "undo", description: "Undo", bindKey: b("Ctrl-Z", "Command-Z"), exec: function(e) {
              e.undo();
            } }, { name: "redo", description: "Redo", bindKey: b("Ctrl-Shift-Z|Ctrl-Y", "Command-Shift-Z|Command-Y"), exec: function(e) {
              e.redo();
            } }, { name: "copylinesup", description: "Copy lines up", bindKey: b("Alt-Shift-Up", "Command-Option-Up"), exec: function(e) {
              e.copyLinesUp();
            }, scrollIntoView: "cursor" }, { name: "movelinesup", description: "Move lines up", bindKey: b("Alt-Up", "Option-Up"), exec: function(e) {
              e.moveLinesUp();
            }, scrollIntoView: "cursor" }, { name: "copylinesdown", description: "Copy lines down", bindKey: b("Alt-Shift-Down", "Command-Option-Down"), exec: function(e) {
              e.copyLinesDown();
            }, scrollIntoView: "cursor" }, { name: "movelinesdown", description: "Move lines down", bindKey: b("Alt-Down", "Option-Down"), exec: function(e) {
              e.moveLinesDown();
            }, scrollIntoView: "cursor" }, { name: "del", description: "Delete", bindKey: b("Delete", "Delete|Ctrl-D|Shift-Delete"), exec: function(e) {
              e.remove("right");
            }, multiSelectAction: "forEach", scrollIntoView: "cursor" }, { name: "backspace", description: "Backspace", bindKey: b("Shift-Backspace|Backspace", "Ctrl-Backspace|Shift-Backspace|Backspace|Ctrl-H"), exec: function(e) {
              e.remove("left");
            }, multiSelectAction: "forEach", scrollIntoView: "cursor" }, { name: "cut_or_delete", description: "Cut or delete", bindKey: b("Shift-Delete", null), exec: function(e) {
              if (!e.selection.isEmpty()) return !1;
              e.remove("left");
            }, multiSelectAction: "forEach", scrollIntoView: "cursor" }, { name: "removetolinestart", description: "Remove to line start", bindKey: b("Alt-Backspace", "Command-Backspace"), exec: function(e) {
              e.removeToLineStart();
            }, multiSelectAction: "forEach", scrollIntoView: "cursor" }, { name: "removetolineend", description: "Remove to line end", bindKey: b("Alt-Delete", "Ctrl-K|Command-Delete"), exec: function(e) {
              e.removeToLineEnd();
            }, multiSelectAction: "forEach", scrollIntoView: "cursor" }, { name: "removetolinestarthard", description: "Remove to line start hard", bindKey: b("Ctrl-Shift-Backspace", null), exec: function(e) {
              var t = e.selection.getRange();
              t.start.column = 0, e.session.remove(t);
            }, multiSelectAction: "forEach", scrollIntoView: "cursor" }, { name: "removetolineendhard", description: "Remove to line end hard", bindKey: b("Ctrl-Shift-Delete", null), exec: function(e) {
              var t = e.selection.getRange();
              t.end.column = Number.MAX_VALUE, e.session.remove(t);
            }, multiSelectAction: "forEach", scrollIntoView: "cursor" }, { name: "removewordleft", description: "Remove word left", bindKey: b("Ctrl-Backspace", "Alt-Backspace|Ctrl-Alt-Backspace"), exec: function(e) {
              e.removeWordLeft();
            }, multiSelectAction: "forEach", scrollIntoView: "cursor" }, { name: "removewordright", description: "Remove word right", bindKey: b("Ctrl-Delete", "Alt-Delete"), exec: function(e) {
              e.removeWordRight();
            }, multiSelectAction: "forEach", scrollIntoView: "cursor" }, { name: "outdent", description: "Outdent", bindKey: b("Shift-Tab", "Shift-Tab"), exec: function(e) {
              e.blockOutdent();
            }, multiSelectAction: "forEach", scrollIntoView: "selectionPart" }, { name: "indent", description: "Indent", bindKey: b("Tab", "Tab"), exec: function(e) {
              e.indent();
            }, multiSelectAction: "forEach", scrollIntoView: "selectionPart" }, { name: "blockoutdent", description: "Block outdent", bindKey: b("Ctrl-[", "Ctrl-["), exec: function(e) {
              e.blockOutdent();
            }, multiSelectAction: "forEachLine", scrollIntoView: "selectionPart" }, { name: "blockindent", description: "Block indent", bindKey: b("Ctrl-]", "Ctrl-]"), exec: function(e) {
              e.blockIndent();
            }, multiSelectAction: "forEachLine", scrollIntoView: "selectionPart" }, { name: "insertstring", description: "Insert string", exec: function(e, t) {
              e.insert(t);
            }, multiSelectAction: "forEach", scrollIntoView: "cursor" }, { name: "inserttext", description: "Insert text", exec: function(e, t) {
              e.insert(w.stringRepeat(t.text || "", t.times || 1));
            }, multiSelectAction: "forEach", scrollIntoView: "cursor" }, { name: "splitline", description: "Split line", bindKey: b(null, "Ctrl-O"), exec: function(e) {
              e.splitLine();
            }, multiSelectAction: "forEach", scrollIntoView: "cursor" }, { name: "transposeletters", description: "Transpose letters", bindKey: b("Alt-Shift-X", "Ctrl-T"), exec: function(e) {
              e.transposeLetters();
            }, multiSelectAction: function(e) {
              e.transposeSelections(1);
            }, scrollIntoView: "cursor" }, { name: "touppercase", description: "To uppercase", bindKey: b("Ctrl-U", "Ctrl-U"), exec: function(e) {
              e.toUpperCase();
            }, multiSelectAction: "forEach", scrollIntoView: "cursor" }, { name: "tolowercase", description: "To lowercase", bindKey: b("Ctrl-Shift-U", "Ctrl-Shift-U"), exec: function(e) {
              e.toLowerCase();
            }, multiSelectAction: "forEach", scrollIntoView: "cursor" }, { name: "autoindent", description: "Auto Indent", bindKey: b(null, null), exec: function(e) {
              e.autoIndent();
            }, multiSelectAction: "forEachLine", scrollIntoView: "animate" }, { name: "expandtoline", description: "Expand to line", bindKey: b("Ctrl-Shift-L", "Command-Shift-L"), exec: function(e) {
              var t = e.selection.getRange();
              t.start.column = t.end.column = 0, t.end.row++, e.selection.setRange(t, !1);
            }, multiSelectAction: "forEach", scrollIntoView: "cursor", readOnly: !0 }, { name: "joinlines", description: "Join lines", bindKey: b(null, null), exec: function(e) {
              for (var h = e.selection.isBackwards(), t = h ? e.selection.getSelectionLead() : e.selection.getSelectionAnchor(), i = h ? e.selection.getSelectionAnchor() : e.selection.getSelectionLead(), s = e.session.doc.getLine(t.row).length, h = e.session.doc.getTextRange(e.selection.getRange()).replace(/\n\s*/, " ").length, r = e.session.doc.getLine(t.row), p = t.row + 1; p <= i.row + 1; p++) {
                var l = w.stringTrimLeft(w.stringTrimRight(e.session.doc.getLine(p)));
                r += l = l.length !== 0 ? " " + l : l;
              }
              i.row + 1 < e.session.doc.getLength() - 1 && (r += e.session.doc.getNewLineCharacter()), e.clearSelection(), e.session.doc.replace(new a(t.row, 0, i.row + 2, 0), r), 0 < h ? (e.selection.moveCursorTo(t.row, t.column), e.selection.selectTo(t.row, t.column + h)) : (s = e.session.doc.getLine(t.row).length > s ? s + 1 : s, e.selection.moveCursorTo(t.row, s));
            }, multiSelectAction: "forEach", readOnly: !0 }, { name: "invertSelection", description: "Invert selection", bindKey: b(null, null), exec: function(e) {
              var t = e.session.doc.getLength() - 1, i = e.session.doc.getLine(t).length, s = e.selection.rangeList.ranges, h = [];
              s.length < 1 && (s = [e.selection.getRange()]);
              for (var r = 0; r < s.length; r++) r == s.length - 1 && (s[r].end.row === t && s[r].end.column === i || h.push(new a(s[r].end.row, s[r].end.column, t, i))), r === 0 ? s[r].start.row === 0 && s[r].start.column === 0 || h.push(new a(0, 0, s[r].start.row, s[r].start.column)) : h.push(new a(s[r - 1].end.row, s[r - 1].end.column, s[r].start.row, s[r].start.column));
              for (e.exitMultiSelectMode(), e.clearSelection(), r = 0; r < h.length; r++) e.selection.addRange(h[r], !1);
            }, readOnly: !0, scrollIntoView: "none" }, { name: "addLineAfter", exec: function(e) {
              e.selection.clearSelection(), e.navigateLineEnd(), e.insert(`
`);
            }, multiSelectAction: "forEach", scrollIntoView: "cursor" }, { name: "addLineBefore", exec: function(e) {
              e.selection.clearSelection();
              var t = e.getCursorPosition();
              e.selection.moveTo(t.row - 1, Number.MAX_VALUE), e.insert(`
`), t.row === 0 && e.navigateUp();
            }, multiSelectAction: "forEach", scrollIntoView: "cursor" }, { name: "openCommandPallete", description: "Open command pallete", bindKey: b("F1", "F1"), exec: function(e) {
              e.prompt({ $type: "commands" });
            }, readOnly: !0 }, { name: "modeSelect", description: "Change language mode...", bindKey: b(null, null), exec: function(e) {
              e.prompt({ $type: "modes" });
            }, readOnly: !0 }];
            for (var o = 1; o < 9; o++) m.commands.push({ name: "foldToLevel" + o, description: "Fold To Level " + o, level: o, exec: function(e) {
              e.session.foldToLevel(this.level);
            }, scrollIntoView: "center", readOnly: !0 });
          }), ace.define("ace/editor", ["require", "exports", "module", "ace/lib/fixoldbrowsers", "ace/lib/oop", "ace/lib/dom", "ace/lib/lang", "ace/lib/useragent", "ace/keyboard/textinput", "ace/mouse/mouse_handler", "ace/mouse/fold_handler", "ace/keyboard/keybinding", "ace/edit_session", "ace/search", "ace/range", "ace/lib/event_emitter", "ace/commands/command_manager", "ace/commands/default_commands", "ace/config", "ace/token_iterator", "ace/clipboard"], function(j, m, E) {
            j("./lib/fixoldbrowsers");
            var b = j("./lib/oop"), w = j("./lib/dom"), d = j("./lib/lang"), a = j("./lib/useragent"), o = j("./keyboard/textinput").TextInput, e = j("./mouse/mouse_handler").MouseHandler, t = j("./mouse/fold_handler").FoldHandler, i = j("./keyboard/keybinding").KeyBinding, s = j("./edit_session").EditSession, h = j("./search").Search, r = j("./range").Range, p = j("./lib/event_emitter").EventEmitter, l = j("./commands/command_manager").CommandManager, I = j("./commands/default_commands").commands, f = j("./config"), n = j("./token_iterator").TokenIterator, g = j("./clipboard"), C = function(c, v, k) {
              this.$toDestroy = [];
              var S = c.getContainerElement();
              this.container = S, this.renderer = c, this.id = "editor" + ++C.$uid, this.commands = new l(a.isMac ? "mac" : "win", I), typeof document == "object" && (this.textInput = new o(c.getTextAreaContainer(), this), this.renderer.textarea = this.textInput.getElement(), this.$mouseHandler = new e(this), new t(this)), this.keyBinding = new i(this), this.$search = new h().set({ wrap: !0 }), this.$historyTracker = this.$historyTracker.bind(this), this.commands.on("exec", this.$historyTracker), this.$initOperationListeners(), this._$emitInputEvent = d.delayedCall((function() {
                this._signal("input", {}), this.session && this.session.bgTokenizer && this.session.bgTokenizer.scheduleStart();
              }).bind(this)), this.on("change", function(L, W) {
                W._$emitInputEvent.schedule(31);
              }), this.setSession(v || k && k.session || new s("")), f.resetOptions(this), k && this.setOptions(k), f._signal("editor", this);
            };
            C.$uid = 0, (function() {
              b.implement(this, p), this.$initOperationListeners = function() {
                this.commands.on("exec", this.startOperation.bind(this), !0), this.commands.on("afterExec", this.endOperation.bind(this), !0), this.$opResetTimer = d.delayedCall(this.endOperation.bind(this, !0)), this.on("change", (function() {
                  this.curOp || (this.startOperation(), this.curOp.selectionBefore = this.$lastSel), this.curOp.docChanged = !0;
                }).bind(this), !0), this.on("changeSelection", (function() {
                  this.curOp || (this.startOperation(), this.curOp.selectionBefore = this.$lastSel), this.curOp.selectionChanged = !0;
                }).bind(this), !0);
              }, this.curOp = null, this.prevOp = {}, this.startOperation = function(c) {
                if (this.curOp) {
                  if (!c || this.curOp.command) return;
                  this.prevOp = this.curOp;
                }
                c || (this.previousCommand = null, c = {}), this.$opResetTimer.schedule(), this.curOp = this.session.curOp = { command: c.command || {}, args: c.args, scrollTop: this.renderer.scrollTop }, this.curOp.selectionBefore = this.selection.toJSON();
              }, this.endOperation = function(c) {
                if (this.curOp && this.session) {
                  if (c && c.returnValue === !1 || !this.session) return this.curOp = null;
                  if ((c != 1 || !this.curOp.command || this.curOp.command.name != "mouse") && (this._signal("beforeEndOperation"), this.curOp)) {
                    var c = this.curOp.command, v = c && c.scrollIntoView;
                    if (v) {
                      switch (v) {
                        case "center-animate":
                          v = "animate";
                        case "center":
                          this.renderer.scrollCursorIntoView(null, 0.5);
                          break;
                        case "animate":
                        case "cursor":
                          this.renderer.scrollCursorIntoView();
                          break;
                        case "selectionPart":
                          var k = this.selection.getRange(), S = this.renderer.layerConfig;
                          (k.start.row >= S.lastRow || k.end.row <= S.firstRow) && this.renderer.scrollSelectionIntoView(this.selection.anchor, this.selection.lead);
                      }
                      v == "animate" && this.renderer.animateScrolling(this.curOp.scrollTop);
                    }
                    c = this.selection.toJSON(), this.curOp.selectionAfter = c, this.$lastSel = this.selection.toJSON(), this.session.getUndoManager().addSelection(c), this.prevOp = this.curOp, this.curOp = null;
                  }
                }
              }, this.$mergeableCommands = ["backspace", "del", "insertstring"], this.$historyTracker = function(c) {
                var v, k, S, L;
                this.$mergeUndoDeltas && (v = this.prevOp, k = this.$mergeableCommands, S = v.command && c.command.name == v.command.name, c.command.name == "insertstring" ? (L = c.args, this.mergeNextCommand === void 0 && (this.mergeNextCommand = !0), S = S && this.mergeNextCommand && (!/\s/.test(L) || /\s/.test(v.args)), this.mergeNextCommand = !0) : S = S && k.indexOf(c.command.name) !== -1, (S = !(this.$mergeUndoDeltas != "always" && 2e3 < Date.now() - this.sequenceStartTime) && S) ? this.session.mergeUndoDeltas = !0 : k.indexOf(c.command.name) !== -1 && (this.sequenceStartTime = Date.now()));
              }, this.setKeyboardHandler = function(c, v) {
                var k;
                c && typeof c == "string" && c != "ace" ? (this.$keybindingId = c, k = this, f.loadModule(["keybinding", c], function(S) {
                  k.$keybindingId == c && k.keyBinding.setKeyboardHandler(S && S.handler), v && v();
                })) : (this.$keybindingId = null, this.keyBinding.setKeyboardHandler(c), v && v());
              }, this.getKeyboardHandler = function() {
                return this.keyBinding.getKeyboardHandler();
              }, this.setSession = function(c) {
                var v, k;
                this.session != c && (this.curOp && this.endOperation(), this.curOp = {}, (v = this.session) && (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), (k = this.session.getSelection()).off("changeCursor", this.$onCursorChange), k.off("changeSelection", this.$onSelectionChange)), (this.session = c) ? (this.$onDocumentChange = this.onDocumentChange.bind(this), c.on("change", this.$onDocumentChange), this.renderer.setSession(c), this.$onChangeMode = this.onChangeMode.bind(this), c.on("changeMode", this.$onChangeMode), this.$onTokenizerUpdate = this.onTokenizerUpdate.bind(this), c.on("tokenizerUpdate", this.$onTokenizerUpdate), this.$onChangeTabSize = this.renderer.onChangeTabSize.bind(this.renderer), c.on("changeTabSize", this.$onChangeTabSize), this.$onChangeWrapLimit = this.onChangeWrapLimit.bind(this), c.on("changeWrapLimit", this.$onChangeWrapLimit), this.$onChangeWrapMode = this.onChangeWrapMode.bind(this), c.on("changeWrapMode", this.$onChangeWrapMode), this.$onChangeFold = this.onChangeFold.bind(this), c.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 = c.getSelection(), this.selection.on("changeCursor", this.$onCursorChange), this.$onSelectionChange = this.onSelectionChange.bind(this), this.selection.on("changeSelection", this.$onSelectionChange), this.onChangeMode(), this.onCursorChange(), 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(c)), this._signal("changeSession", { session: c, oldSession: v }), this.curOp = null, v && v._signal("changeEditor", { oldEditor: this }), c && c._signal("changeEditor", { editor: this }), c && c.bgTokenizer && c.bgTokenizer.scheduleStart());
              }, this.getSession = function() {
                return this.session;
              }, this.setValue = function(c, v) {
                return this.session.doc.setValue(c), v ? v == 1 ? this.navigateFileEnd() : v == -1 && this.navigateFileStart() : this.selectAll(), c;
              }, this.getValue = function() {
                return this.session.getValue();
              }, this.getSelection = function() {
                return this.selection;
              }, this.resize = function(c) {
                this.renderer.onResize(c);
              }, this.setTheme = function(c, v) {
                this.renderer.setTheme(c, v);
              }, this.getTheme = function() {
                return this.renderer.getTheme();
              }, this.setStyle = function(c) {
                this.renderer.setStyle(c);
              }, this.unsetStyle = function(c) {
                this.renderer.unsetStyle(c);
              }, this.getFontSize = function() {
                return this.getOption("fontSize") || w.computedStyle(this.container).fontSize;
              }, this.setFontSize = function(c) {
                this.setOption("fontSize", c);
              }, this.$highlightBrackets = function() {
                var c;
                this.$highlightPending || ((c = this).$highlightPending = !0, setTimeout(function() {
                  c.$highlightPending = !1;
                  var v, k, S = c.session;
                  S && S.bgTokenizer && (S.$bracketHighlight && (S.$bracketHighlight.markerIds.forEach(function(L) {
                    S.removeMarker(L);
                  }), S.$bracketHighlight = null), (v = !(v = S.getMatchingBracketRanges(c.getCursorPosition())) && S.$mode.getMatching ? S.$mode.getMatching(c.session) : v) && (k = "ace_bracket", Array.isArray(v) ? v.length == 1 && (k = "ace_error_bracket") : v = [v], v.length == 2 && (r.comparePoints(v[0].end, v[1].start) == 0 ? v = [r.fromPoints(v[0].start, v[1].end)] : r.comparePoints(v[0].start, v[1].end) == 0 && (v = [r.fromPoints(v[1].start, v[0].end)])), S.$bracketHighlight = { ranges: v, markerIds: v.map(function(L) {
                    return S.addMarker(L, k, "text");
                  }) }));
                }, 50));
              }, this.$highlightTags = function() {
                var c;
                this.$highlightTagPending || ((c = this).$highlightTagPending = !0, setTimeout(function() {
                  c.$highlightTagPending = !1;
                  var v = c.session;
                  if (v && v.bgTokenizer) {
                    var k = c.getCursorPosition(), S = new n(c.session, k.row, k.column), L = S.getCurrentToken();
                    if (!L || !/\b(?:tag-open|tag-name)/.test(L.type)) return v.removeMarker(v.$tagHighlight), void (v.$tagHighlight = null);
                    if (L.type.indexOf("tag-open") === -1 || (L = S.stepForward())) {
                      var W = L.value, _ = L.value, O = 0, z = S.stepBackward();
                      if (z.value === "<") for (; z = L, (L = S.stepForward()) && (L.type.indexOf("tag-name") !== -1 ? W === (_ = L.value) && (z.value === "<" ? O++ : z.value === "</" && O--) : W === _ && L.value === "/>" && O--), L && 0 <= O; ) ;
                      else {
                        do
                          if (L = z, z = S.stepBackward(), L) {
                            if (L.type.indexOf("tag-name") !== -1) W === L.value && (z.value === "<" ? O++ : z.value === "</" && O--);
                            else if (L.value === "/>") {
                              for (var H = 0, Y = z; Y; ) {
                                if (Y.type.indexOf("tag-name") !== -1 && Y.value === W) {
                                  O--;
                                  break;
                                }
                                if (Y.value === "<") break;
                                Y = S.stepBackward(), H++;
                              }
                              for (var ie = 0; ie < H; ie++) S.stepForward();
                            }
                          }
                        while (z && O <= 0);
                        S.stepForward();
                      }
                      if (!L) return v.removeMarker(v.$tagHighlight), void (v.$tagHighlight = null);
                      var U = S.getCurrentTokenRow(), k = S.getCurrentTokenColumn(), U = new r(U, k, U, k + L.value.length), k = v.$backMarkers[v.$tagHighlight];
                      v.$tagHighlight && k != null && U.compareRange(k.range) !== 0 && (v.removeMarker(v.$tagHighlight), v.$tagHighlight = null), v.$tagHighlight || (v.$tagHighlight = v.addMarker(U, "ace_bracket", "text"));
                    }
                  }
                }, 50));
              }, this.focus = function() {
                var c = this;
                setTimeout(function() {
                  c.isFocused() || c.textInput.focus();
                }), this.textInput.focus();
              }, this.isFocused = function() {
                return this.textInput.isFocused();
              }, this.blur = function() {
                this.textInput.blur();
              }, this.onFocus = function(c) {
                this.$isFocused || (this.$isFocused = !0, this.renderer.showCursor(), this.renderer.visualizeFocus(), this._emit("focus", c));
              }, this.onBlur = function(c) {
                this.$isFocused && (this.$isFocused = !1, this.renderer.hideCursor(), this.renderer.visualizeBlur(), this._emit("blur", c));
              }, this.$cursorChange = function() {
                this.renderer.updateCursor(), this.$highlightBrackets(), this.$highlightTags(), this.$updateHighlightActiveLine();
              }, this.onDocumentChange = function(c) {
                var v = this.session.$useWrapMode, k = c.start.row == c.end.row ? c.end.row : 1 / 0;
                this.renderer.updateLines(c.start.row, k, v), this._signal("change", c), this.$cursorChange();
              }, this.onTokenizerUpdate = function(c) {
                c = c.data, this.renderer.updateLines(c.first, c.last);
              }, this.onScrollTopChange = function() {
                this.renderer.scrollToY(this.session.getScrollTop());
              }, this.onScrollLeftChange = function() {
                this.renderer.scrollToX(this.session.getScrollLeft());
              }, this.onCursorChange = function() {
                this.$cursorChange(), this._signal("changeSelection");
              }, this.$updateHighlightActiveLine = function() {
                var c, v, k = this.getSession();
                this.$highlightActiveLine && (this.$selectionStyle == "line" && this.selection.isMultiLine() || (c = this.getCursorPosition()), this.renderer.theme && this.renderer.theme.$selectionColorConflict && !this.selection.isEmpty() && (c = !1), !this.renderer.$maxLines || this.session.getLength() !== 1 || 1 < this.renderer.$minLines || (c = !1)), k.$highlightLineMarker && !c ? (k.removeMarker(k.$highlightLineMarker.id), k.$highlightLineMarker = null) : !k.$highlightLineMarker && c ? ((v = new r(c.row, c.column, c.row, 1 / 0)).id = k.addMarker(v, "ace_active-line", "screenLine"), k.$highlightLineMarker = v) : c && (k.$highlightLineMarker.start.row = c.row, k.$highlightLineMarker.end.row = c.row, k.$highlightLineMarker.start.column = c.column, k._signal("changeBackMarker"));
              }, this.onSelectionChange = function(c) {
                var v, k = this.session;
                k.$selectionMarker && k.removeMarker(k.$selectionMarker), k.$selectionMarker = null, this.selection.isEmpty() ? this.$updateHighlightActiveLine() : (v = this.selection.getRange(), S = this.getSelectionStyle(), k.$selectionMarker = k.addMarker(v, "ace_selection", S));
                var S = this.$highlightSelectedWord && this.$getSelectionHighLightRegexp();
                this.session.highlight(S), this._signal("changeSelection");
              }, this.$getSelectionHighLightRegexp = function() {
                var c = this.session, v = this.getSelectionRange();
                if (!v.isEmpty() && !v.isMultiLine()) {
                  var k = v.start.column, S = v.end.column, c = c.getLine(v.start.row), v = c.substring(k, S);
                  if (!(5e3 < v.length) && /[\w\d]/.test(v) && (v = this.$search.$assembleRegExp({ wholeWord: !0, caseSensitive: !0, needle: v }), S = c.substring(k - 1, S + 1), v.test(S))) return v;
                }
              }, 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(c) {
                this.renderer.updateText(), this._emit("changeMode", c);
              }, 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 c = this.getSelectedText(), v = this.session.doc.getNewLineCharacter(), k = !1;
                if (!c && this.$copyWithEmptySelection) for (var k = !0, S = this.selection.getAllRanges(), L = 0; L < S.length; L++) {
                  var W = S[L];
                  L && S[L - 1].start.row == W.start.row || (c += this.session.getLine(W.start.row) + v);
                }
                var _ = { text: c };
                return this._signal("copy", _), g.lineMode = k ? _.text : "", _.text;
              }, this.onCopy = function() {
                this.commands.exec("copy", this);
              }, this.onCut = function() {
                this.commands.exec("cut", this);
              }, this.onPaste = function(c, v) {
                this.commands.exec("paste", this, { text: c, event: v });
              }, this.$handlePaste = function(k) {
                this._signal("paste", k = typeof k == "string" ? { text: k } : k);
                var v = k.text, k = v == g.lineMode, S = this.session;
                if (!this.inMultiSelectMode || this.inVirtualSelectionMode) k ? S.insert({ row: this.selection.lead.row, column: 0 }, v) : this.insert(v);
                else if (k) this.selection.rangeList.ranges.forEach(function(z) {
                  S.insert({ row: z.start.row, column: 0 }, v);
                });
                else {
                  var L = v.split(/\r\n|\r|\n/), W = this.selection.rangeList.ranges, k = !(L.length != 2 || L[0] && L[1]);
                  if (L.length != W.length || k) return this.commands.exec("insertstring", this, v);
                  for (var _ = W.length; _--; ) {
                    var O = W[_];
                    O.isEmpty() || S.remove(O), S.insert(O.start, L[_]);
                  }
                }
              }, this.execCommand = function(c, v) {
                return this.commands.exec(c, this, v);
              }, this.insert = function(c, _) {
                var k, S = this.session, L = S.getMode(), W = this.getCursorPosition();
                !this.getBehavioursEnabled() || _ || (k = L.transformAction(S.getState(W.row), "insertion", this, S, c)) && (c !== k.text && (this.inVirtualSelectionMode || (this.session.mergeUndoDeltas = !1, this.mergeNextCommand = !1)), c = k.text), c == "	" && (c = this.session.getTabString()), this.selection.isEmpty() ? this.session.getOverwrite() && c.indexOf(`
`) == -1 && ((O = new r.fromPoints(W, W)).end.column += c.length, this.session.remove(O)) : (O = this.getSelectionRange(), W = this.session.remove(O), this.clearSelection()), c != `
` && c != `\r
` || (z = S.getLine(W.row), W.column > z.search(/\S|$/) && (H = z.substr(W.column).search(/\S|$/), S.doc.removeInLine(W.row, W.column, W.column + H))), this.clearSelection();
                var _ = W.column, O = S.getState(W.row), z = S.getLine(W.row), H = L.checkOutdent(O, z, c);
                S.insert(W, c), k && k.selection && (k.selection.length == 2 ? this.selection.setSelectionRange(new r(W.row, _ + k.selection[0], W.row, _ + k.selection[1])) : this.selection.setSelectionRange(new r(W.row + k.selection[0], k.selection[1], W.row + k.selection[2], k.selection[3]))), this.$enableAutoIndent && (S.getDocument().isNewLine(c) && (z = L.getNextLineIndent(O, z.slice(0, W.column), S.getTabString()), S.insert({ row: W.row + 1, column: 0 }, z)), H && L.autoOutdent(O, S, W.row));
              }, this.autoIndent = function() {
                var c, v, k, S = this.session, L = S.getMode();
                k = this.selection.isEmpty() ? (v = 0, S.doc.getLength() - 1) : (v = (c = this.getSelectionRange()).start.row, c.end.row);
                for (var W, _, O = "", z = "", H = S.getTabString(), Y = v; Y <= k; Y++) 0 < Y && (O = S.getState(Y - 1), W = S.getLine(Y - 1), z = L.getNextLineIndent(O, W, H)), _ = S.getLine(Y), z !== (_ = L.$getIndent(_)) && (0 < _.length && (_ = new r(Y, 0, Y, _.length), S.remove(_)), 0 < z.length && S.insert({ row: Y, column: 0 }, z)), L.autoOutdent(O, S, Y);
              }, this.onTextInput = function(c, v) {
                if (!v) return this.keyBinding.onTextInput(c);
                this.startOperation({ command: { name: "insertstring" } }), v = this.applyComposition.bind(this, c, v), this.selection.rangeCount ? this.forEachSelection(v) : v(), this.endOperation();
              }, this.applyComposition = function(c, v) {
                var k;
                (v.extendLeft || v.extendRight) && ((k = this.selection.getRange()).start.column -= v.extendLeft, k.end.column += v.extendRight, k.start.column < 0 && (k.start.row--, k.start.column += this.session.getLine(k.start.row).length + 1), this.selection.setRange(k), c || k.isEmpty() || this.remove()), !c && this.selection.isEmpty() || this.insert(c, !0), (v.restoreStart || v.restoreEnd) && ((k = this.selection.getRange()).start.column -= v.restoreStart, k.end.column -= v.restoreEnd, this.selection.setRange(k));
              }, this.onCommandKey = function(c, v, k) {
                return this.keyBinding.onCommandKey(c, v, k);
              }, this.setOverwrite = function(c) {
                this.session.setOverwrite(c);
              }, this.getOverwrite = function() {
                return this.session.getOverwrite();
              }, this.toggleOverwrite = function() {
                this.session.toggleOverwrite();
              }, this.setScrollSpeed = function(c) {
                this.setOption("scrollSpeed", c);
              }, this.getScrollSpeed = function() {
                return this.getOption("scrollSpeed");
              }, this.setDragDelay = function(c) {
                this.setOption("dragDelay", c);
              }, this.getDragDelay = function() {
                return this.getOption("dragDelay");
              }, this.setSelectionStyle = function(c) {
                this.setOption("selectionStyle", c);
              }, this.getSelectionStyle = function() {
                return this.getOption("selectionStyle");
              }, this.setHighlightActiveLine = function(c) {
                this.setOption("highlightActiveLine", c);
              }, this.getHighlightActiveLine = function() {
                return this.getOption("highlightActiveLine");
              }, this.setHighlightGutterLine = function(c) {
                this.setOption("highlightGutterLine", c);
              }, this.getHighlightGutterLine = function() {
                return this.getOption("highlightGutterLine");
              }, this.setHighlightSelectedWord = function(c) {
                this.setOption("highlightSelectedWord", c);
              }, this.getHighlightSelectedWord = function() {
                return this.$highlightSelectedWord;
              }, this.setAnimatedScroll = function(c) {
                this.renderer.setAnimatedScroll(c);
              }, this.getAnimatedScroll = function() {
                return this.renderer.getAnimatedScroll();
              }, this.setShowInvisibles = function(c) {
                this.renderer.setShowInvisibles(c);
              }, this.getShowInvisibles = function() {
                return this.renderer.getShowInvisibles();
              }, this.setDisplayIndentGuides = function(c) {
                this.renderer.setDisplayIndentGuides(c);
              }, this.getDisplayIndentGuides = function() {
                return this.renderer.getDisplayIndentGuides();
              }, this.setShowPrintMargin = function(c) {
                this.renderer.setShowPrintMargin(c);
              }, this.getShowPrintMargin = function() {
                return this.renderer.getShowPrintMargin();
              }, this.setPrintMarginColumn = function(c) {
                this.renderer.setPrintMarginColumn(c);
              }, this.getPrintMarginColumn = function() {
                return this.renderer.getPrintMarginColumn();
              }, this.setReadOnly = function(c) {
                this.setOption("readOnly", c);
              }, this.getReadOnly = function() {
                return this.getOption("readOnly");
              }, this.setBehavioursEnabled = function(c) {
                this.setOption("behavioursEnabled", c);
              }, this.getBehavioursEnabled = function() {
                return this.getOption("behavioursEnabled");
              }, this.setWrapBehavioursEnabled = function(c) {
                this.setOption("wrapBehavioursEnabled", c);
              }, this.getWrapBehavioursEnabled = function() {
                return this.getOption("wrapBehavioursEnabled");
              }, this.setShowFoldWidgets = function(c) {
                this.setOption("showFoldWidgets", c);
              }, this.getShowFoldWidgets = function() {
                return this.getOption("showFoldWidgets");
              }, this.setFadeFoldWidgets = function(c) {
                this.setOption("fadeFoldWidgets", c);
              }, this.getFadeFoldWidgets = function() {
                return this.getOption("fadeFoldWidgets");
              }, this.remove = function(c) {
                this.selection.isEmpty() && (c == "left" ? this.selection.selectLeft() : this.selection.selectRight());
                var v, k, S = this.getSelectionRange();
                this.getBehavioursEnabled() && (v = (k = this.session).getState(S.start.row), c = k.getMode().transformAction(v, "deletion", this, k, S), S.end.column !== 0 || (v = k.getTextRange(S))[v.length - 1] == `
` && (k = k.getLine(S.end.row), /^\s+$/.test(k) && (S.end.column = k.length)), c && (S = c)), this.session.remove(S), 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.selection.isEmpty() && this.selection.selectLeft(), this.session.remove(this.getSelectionRange()), this.clearSelection();
              }, this.removeToLineEnd = function() {
                this.selection.isEmpty() && this.selection.selectLineEnd();
                var c = this.getSelectionRange();
                c.start.column == c.end.column && c.start.row == c.end.row && (c.end.column = 0, c.end.row++), this.session.remove(c), this.clearSelection();
              }, this.splitLine = function() {
                this.selection.isEmpty() || (this.session.remove(this.getSelectionRange()), this.clearSelection());
                var c = this.getCursorPosition();
                this.insert(`
`), this.moveCursorToPosition(c);
              }, this.transposeLetters = function() {
                var c, v, k, S;
                !this.selection.isEmpty() || (S = (c = this.getCursorPosition()).column) !== 0 && (S = S < (v = this.session.getLine(c.row)).length ? (k = v.charAt(S) + v.charAt(S - 1), new r(c.row, S - 1, c.row, S + 1)) : (k = v.charAt(S - 1) + v.charAt(S - 2), new r(c.row, S - 2, c.row, S)), this.session.replace(S, k), this.session.selection.moveToPosition(S.end));
              }, this.toLowerCase = function() {
                var c = this.getSelectionRange();
                this.selection.isEmpty() && this.selection.selectWord();
                var v = this.getSelectionRange(), k = this.session.getTextRange(v);
                this.session.replace(v, k.toLowerCase()), this.selection.setSelectionRange(c);
              }, this.toUpperCase = function() {
                var c = this.getSelectionRange();
                this.selection.isEmpty() && this.selection.selectWord();
                var v = this.getSelectionRange(), k = this.session.getTextRange(v);
                this.session.replace(v, k.toUpperCase()), this.selection.setSelectionRange(c);
              }, this.indent = function() {
                var c = this.session, v = this.getSelectionRange();
                if (!(v.start.row < v.end.row)) {
                  if (v.start.column < v.end.column) {
                    var S = c.getTextRange(v);
                    if (!/^\s+$/.test(S)) return O = this.$getSelectedRows(), void c.indentRows(O.first, O.last, "	");
                  }
                  var k = c.getLine(v.start.row), L = v.start, S = c.getTabSize(), L = c.documentToScreenColumn(L.row, L.column);
                  if (this.session.getUseSoftTabs()) var W = S - L % S, _ = d.stringRepeat(" ", W);
                  else {
                    for (W = L % S; k[v.start.column - 1] == " " && W; ) v.start.column--, W--;
                    this.selection.setSelectionRange(v), _ = "	";
                  }
                  return this.insert(_);
                }
                var O = this.$getSelectedRows();
                c.indentRows(O.first, O.last, "	");
              }, this.blockIndent = function() {
                var c = this.$getSelectedRows();
                this.session.indentRows(c.first, c.last, "	");
              }, this.blockOutdent = function() {
                var c = this.session.getSelection();
                this.session.outdentRows(c.getRange());
              }, this.sortLines = function() {
                for (var c = this.$getSelectedRows(), v = this.session, k = [], S = c.first; S <= c.last; S++) k.push(v.getLine(S));
                k.sort(function(_, O) {
                  return _.toLowerCase() < O.toLowerCase() ? -1 : _.toLowerCase() > O.toLowerCase() ? 1 : 0;
                });
                for (var L = new r(0, 0, 0, 0), S = c.first; S <= c.last; S++) {
                  var W = v.getLine(S);
                  L.start.row = S, L.end.row = S, L.end.column = W.length, v.replace(L, k[S - c.first]);
                }
              }, this.toggleCommentLines = function() {
                var c = this.session.getState(this.getCursorPosition().row), v = this.$getSelectedRows();
                this.session.getMode().toggleCommentLines(c, this.session, v.first, v.last);
              }, this.toggleBlockComment = function() {
                var c = this.getCursorPosition(), v = this.session.getState(c.row), k = this.getSelectionRange();
                this.session.getMode().toggleBlockComment(v, this.session, k, c);
              }, this.getNumberAt = function(c, v) {
                var k = /[\-]?[0-9]+(?:\.[0-9]+)?/g;
                k.lastIndex = 0;
                for (var S = this.session.getLine(c); k.lastIndex < v; ) {
                  var L = k.exec(S);
                  if (L.index <= v && L.index + L[0].length >= v) return { value: L[0], start: L.index, end: L.index + L[0].length };
                }
                return null;
              }, this.modifyNumber = function(c) {
                var v, k, S = this.selection.getCursor().row, L = this.selection.getCursor().column, W = new r(S, L - 1, S, L), _ = this.session.getTextRange(W);
                !isNaN(parseFloat(_)) && isFinite(_) ? (v = this.getNumberAt(S, L)) && (k = 0 <= v.value.indexOf(".") ? v.start + v.value.indexOf(".") + 1 : v.end, W = v.start + v.value.length - k, _ = parseFloat(v.value), _ *= Math.pow(10, W), k !== v.end && L < k ? c *= Math.pow(10, v.end - L - 1) : c *= Math.pow(10, v.end - L), _ += c, _ = (_ /= Math.pow(10, W)).toFixed(W), W = new r(S, v.start, S, v.end), this.session.replace(W, _), this.moveCursorTo(S, Math.max(v.start + 1, L + _.length - v.value.length))) : this.toggleWord();
              }, this.$toggleWordPairs = [["first", "last"], ["true", "false"], ["yes", "no"], ["width", "height"], ["top", "bottom"], ["right", "left"], ["on", "off"], ["x", "y"], ["get", "set"], ["max", "min"], ["horizontal", "vertical"], ["show", "hide"], ["add", "remove"], ["up", "down"], ["before", "after"], ["even", "odd"], ["in", "out"], ["inside", "outside"], ["next", "previous"], ["increase", "decrease"], ["attach", "detach"], ["&&", "||"], ["==", "!="]], this.toggleWord = function() {
                var c = this.selection.getCursor().row, v = this.selection.getCursor().column;
                this.selection.selectWord();
                var k = this.getSelectedText(), S = this.selection.getWordRange().start.column, L = k.replace(/([a-z]+|[A-Z]+)(?=[A-Z_]|$)/g, "$1 ").split(/\s/), W = v - S - 1;
                W < 0 && (W = 0);
                var _, O = 0, z = this;
                k.match(/[A-Za-z0-9_]+/) && L.forEach(function(J, de) {
                  _ = O + J.length, O <= W && W <= _ && (k = J, z.selection.clearSelection(), z.moveCursorTo(c, O + S), z.selection.selectTo(c, _ + S)), O = _;
                });
                for (var H = this.$toggleWordPairs, Y = 0; Y < H.length; Y++) for (var ie = H[Y], U = 0; U <= 1; U++) {
                  var q = +!U, ee = k.match(new RegExp("^\\s?_?(" + d.escapeRegExp(ie[U]) + ")\\s?$", "i"));
                  ee && k.match(new RegExp("([_]|^|\\s)(" + d.escapeRegExp(ee[1]) + ")($|\\s)", "g")) && (ee = k.replace(new RegExp(d.escapeRegExp(ie[U]), "i"), function(J) {
                    var de = ie[q];
                    return J.toUpperCase() == J ? de = de.toUpperCase() : J.charAt(0).toUpperCase() == J.charAt(0) && (de = de.substr(0, 0) + ie[q].charAt(0).toUpperCase() + de.substr(1)), de;
                  }), this.insert(ee));
                }
              }, this.removeLines = function() {
                var c = this.$getSelectedRows();
                this.session.removeFullLines(c.first, c.last), this.clearSelection();
              }, this.duplicateSelection = function() {
                var c, v = this.selection, k = this.session, S = v.getRange(), L = v.isBackwards();
                S.isEmpty() ? (c = S.start.row, k.duplicateLines(c, c)) : (c = L ? S.start : S.end, k = k.insert(c, k.getTextRange(S), !1), S.start = c, S.end = k, v.setSelectionRange(S, L));
              }, this.moveLinesDown = function() {
                this.$moveLines(1, !1);
              }, this.moveLinesUp = function() {
                this.$moveLines(-1, !1);
              }, this.moveText = function(c, v, k) {
                return this.session.moveText(c, v, k);
              }, this.copyLinesUp = function() {
                this.$moveLines(-1, !0);
              }, this.copyLinesDown = function() {
                this.$moveLines(1, !0);
              }, this.$moveLines = function(c, v) {
                var k = this.selection;
                if (!k.inMultiSelectMode || this.inVirtualSelectionMode) {
                  var S = k.toOrientedRange(), L = this.$getSelectedRows(S), W = this.session.$moveLines(L.first, L.last, v ? 0 : c);
                  S.moveBy(W = v && c == -1 ? 0 : W, 0), k.fromOrientedRange(S);
                } else {
                  var _ = k.rangeList.ranges;
                  k.rangeList.detach(this.session), this.inVirtualSelectionMode = !0;
                  for (var O = 0, z = 0, H = _.length, Y = 0; Y < H; Y++) {
                    var ie = Y;
                    _[Y].moveBy(O, 0);
                    for (var U = (L = this.$getSelectedRows(_[Y])).first, q = L.last; ++Y < H; ) {
                      z && _[Y].moveBy(z, 0);
                      var ee = this.$getSelectedRows(_[Y]);
                      if (v && ee.first != q || !v && ee.first > q + 1) break;
                      q = ee.last;
                    }
                    for (Y--, O = this.session.$moveLines(U, q, v ? 0 : c), v && c == -1 && (ie = Y + 1); ie <= Y; ) _[ie].moveBy(O, 0), ie++;
                    z += O = v ? O : 0;
                  }
                  k.fromOrientedRange(k.ranges[0]), k.rangeList.attach(this.session), this.inVirtualSelectionMode = !1;
                }
              }, this.$getSelectedRows = function(c) {
                return c = (c || this.getSelectionRange()).collapseRows(), { first: this.session.getRowFoldStart(c.start.row), last: this.session.getRowFoldEnd(c.end.row) };
              }, this.onCompositionStart = function(c) {
                this.renderer.showComposition(c);
              }, this.onCompositionUpdate = function(c) {
                this.renderer.setCompositionText(c);
              }, this.onCompositionEnd = function() {
                this.renderer.hideComposition();
              }, this.getFirstVisibleRow = function() {
                return this.renderer.getFirstVisibleRow();
              }, this.getLastVisibleRow = function() {
                return this.renderer.getLastVisibleRow();
              }, this.isRowVisible = function(c) {
                return c >= this.getFirstVisibleRow() && c <= this.getLastVisibleRow();
              }, this.isRowFullyVisible = function(c) {
                return c >= this.renderer.getFirstFullyVisibleRow() && c <= this.renderer.getLastFullyVisibleRow();
              }, this.$getVisibleRowCount = function() {
                return this.renderer.getScrollBottomRow() - this.renderer.getScrollTopRow() + 1;
              }, this.$moveByPage = function(c, v) {
                var k = this.renderer, S = this.renderer.layerConfig, L = c * Math.floor(S.height / S.lineHeight);
                v === !0 ? this.selection.$moveSelection(function() {
                  this.moveCursorBy(L, 0);
                }) : v === !1 && (this.selection.moveCursorBy(L, 0), this.selection.clearSelection()), c = k.scrollTop, k.scrollBy(0, L * S.lineHeight), v != null && k.scrollCursorIntoView(null, 0.5), k.animateScrolling(c);
              }, 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(c) {
                this.renderer.scrollToRow(c);
              }, this.scrollToLine = function(c, v, k, S) {
                this.renderer.scrollToLine(c, v, k, S);
              }, this.centerSelection = function() {
                var c = this.getSelectionRange(), c = { row: Math.floor(c.start.row + (c.end.row - c.start.row) / 2), column: Math.floor(c.start.column + (c.end.column - c.start.column) / 2) };
                this.renderer.alignCursor(c, 0.5);
              }, this.getCursorPosition = function() {
                return this.selection.getCursor();
              }, this.getCursorPositionScreen = function() {
                return this.session.documentToScreenPosition(this.getCursorPosition());
              }, this.getSelectionRange = function() {
                return this.selection.getRange();
              }, this.selectAll = function() {
                this.selection.selectAll();
              }, this.clearSelection = function() {
                this.selection.clearSelection();
              }, this.moveCursorTo = function(c, v) {
                this.selection.moveCursorTo(c, v);
              }, this.moveCursorToPosition = function(c) {
                this.selection.moveCursorToPosition(c);
              }, this.jumpToMatching = function(c, v) {
                var k = this.getCursorPosition(), S = new n(this.session, k.row, k.column), L = S.getCurrentToken(), W = L || S.stepForward();
                if (W) {
                  var _, O, z, H = !1, Y = {}, ie = k.column - W.start, U = { ")": "(", "(": "(", "]": "[", "[": "[", "{": "{", "}": "{" };
                  do
                    if (W.value.match(/[{}()\[\]]/g)) {
                      for (; ie < W.value.length && !H; ie++) if (U[W.value[ie]]) switch (O = U[W.value[ie]] + "." + W.type.replace("rparen", "lparen"), isNaN(Y[O]) && (Y[O] = 0), W.value[ie]) {
                        case "(":
                        case "[":
                        case "{":
                          Y[O]++;
                          break;
                        case ")":
                        case "]":
                        case "}":
                          --Y[O] === -1 && (_ = "bracket", H = !0);
                      }
                    } else W.type.indexOf("tag-name") !== -1 && (isNaN(Y[W.value]) && (Y[W.value] = 0), L.value === "<" ? Y[W.value]++ : L.value === "</" && Y[W.value]--, Y[W.value] === -1 && (_ = "tag", H = !0));
                  while (H || (L = W, W = S.stepForward(), ie = 0), W && !H);
                  if (_) {
                    if (_ === "bracket") (q = this.session.getBracketRange(k)) || (z = (q = new r(S.getCurrentTokenRow(), S.getCurrentTokenColumn() + ie - 1, S.getCurrentTokenRow(), S.getCurrentTokenColumn() + ie - 1)).start, (v || z.row === k.row && Math.abs(z.column - k.column) < 2) && (q = this.session.getBracketRange(z)));
                    else if (_ === "tag") {
                      if (!W || W.type.indexOf("tag-name") === -1) return;
                      var q, ee = W.value;
                      if ((q = new r(S.getCurrentTokenRow(), S.getCurrentTokenColumn() - 2, S.getCurrentTokenRow(), S.getCurrentTokenColumn() - 2)).compare(k.row, k.column) === 0) for (H = !1; W = L, (L = S.stepBackward()) && (L.type.indexOf("tag-close") !== -1 && q.setEnd(S.getCurrentTokenRow(), S.getCurrentTokenColumn() + 1), W.value === ee && W.type.indexOf("tag-name") !== -1 && (L.value === "<" ? Y[ee]++ : L.value === "</" && Y[ee]--, Y[ee] === 0 && (H = !0))), L && !H; ) ;
                      W && W.type.indexOf("tag-name") && (z = q.start).row == k.row && Math.abs(z.column - k.column) < 2 && (z = q.end);
                    }
                    (z = q && q.cursor || z) && (c ? q && v ? this.selection.setRange(q) : q && q.isEqual(this.getSelectionRange()) ? this.clearSelection() : this.selection.selectTo(z.row, z.column) : this.selection.moveTo(z.row, z.column));
                  }
                }
              }, this.gotoLine = function(c, v, k) {
                this.selection.clearSelection(), this.session.unfold({ row: c - 1, column: v || 0 }), this.exitMultiSelectMode && this.exitMultiSelectMode(), this.moveCursorTo(c - 1, v || 0), this.isRowFullyVisible(c - 1) || this.scrollToLine(c - 1, !0, k);
              }, this.navigateTo = function(c, v) {
                this.selection.moveTo(c, v);
              }, this.navigateUp = function(c) {
                if (this.selection.isMultiLine() && !this.selection.isBackwards()) {
                  var v = this.selection.anchor.getPosition();
                  return this.moveCursorToPosition(v);
                }
                this.selection.clearSelection(), this.selection.moveCursorBy(-c || -1, 0);
              }, this.navigateDown = function(c) {
                if (this.selection.isMultiLine() && this.selection.isBackwards()) {
                  var v = this.selection.anchor.getPosition();
                  return this.moveCursorToPosition(v);
                }
                this.selection.clearSelection(), this.selection.moveCursorBy(c || 1, 0);
              }, this.navigateLeft = function(c) {
                if (this.selection.isEmpty()) for (c = c || 1; c--; ) this.selection.moveCursorLeft();
                else {
                  var v = this.getSelectionRange().start;
                  this.moveCursorToPosition(v);
                }
                this.clearSelection();
              }, this.navigateRight = function(c) {
                if (this.selection.isEmpty()) for (c = c || 1; c--; ) this.selection.moveCursorRight();
                else {
                  var v = this.getSelectionRange().end;
                  this.moveCursorToPosition(v);
                }
                this.clearSelection();
              }, this.navigateLineStart = function() {
                this.selection.moveCursorLineStart(), this.clearSelection();
              }, this.navigateLineEnd = function() {
                this.selection.moveCursorLineEnd(), this.clearSelection();
              }, this.navigateFileEnd = function() {
                this.selection.moveCursorFileEnd(), this.clearSelection();
              }, this.navigateFileStart = function() {
                this.selection.moveCursorFileStart(), this.clearSelection();
              }, this.navigateWordRight = function() {
                this.selection.moveCursorWordRight(), this.clearSelection();
              }, this.navigateWordLeft = function() {
                this.selection.moveCursorWordLeft(), this.clearSelection();
              }, this.replace = function(c, S) {
                S && this.$search.set(S);
                var k = this.$search.find(this.session), S = 0;
                return k && (this.$tryReplace(k, c) && (S = 1), this.selection.setSelectionRange(k), this.renderer.scrollSelectionIntoView(k.start, k.end)), S;
              }, this.replaceAll = function(c, v) {
                v && this.$search.set(v);
                var k = this.$search.findAll(this.session), S = 0;
                if (!k.length) return S;
                v = this.getSelectionRange(), this.selection.moveTo(0, 0);
                for (var L = k.length - 1; 0 <= L; --L) this.$tryReplace(k[L], c) && S++;
                return this.selection.setSelectionRange(v), S;
              }, this.$tryReplace = function(c, v) {
                var k = this.session.getTextRange(c);
                return (v = this.$search.replace(k, v)) !== null ? (c.end = this.session.replace(c, v), c) : null;
              }, this.getLastSearchOptions = function() {
                return this.$search.getOptions();
              }, this.find = function(c, v, k) {
                v = v || {}, typeof c == "string" || c instanceof RegExp ? v.needle = c : typeof c == "object" && b.mixin(v, c);
                var S = this.selection.getRange();
                return v.needle == null && ((c = this.session.getTextRange(S) || this.$search.$options.needle) || (S = this.session.getWordRange(S.start.row, S.start.column), c = this.session.getTextRange(S)), this.$search.set({ needle: c })), this.$search.set(v), v.start || this.$search.set({ start: S }), c = this.$search.find(this.session), v.preventScroll ? c : c ? (this.revealRange(c, k), c) : (v.backwards ? S.start = S.end : S.end = S.start, void this.selection.setRange(S));
              }, this.findNext = function(c, v) {
                this.find({ skipCurrent: !0, backwards: !1 }, c, v);
              }, this.findPrevious = function(c, v) {
                this.find(c, { skipCurrent: !0, backwards: !0 }, v);
              }, this.revealRange = function(c, v) {
                this.session.unfold(c), this.selection.setSelectionRange(c);
                var k = this.renderer.scrollTop;
                this.renderer.scrollSelectionIntoView(c.start, c.end, 0.5), v !== !1 && this.renderer.animateScrolling(k);
              }, this.undo = function() {
                this.session.getUndoManager().undo(this.session), this.renderer.scrollCursorIntoView(null, 0.5);
              }, this.redo = function() {
                this.session.getUndoManager().redo(this.session), this.renderer.scrollCursorIntoView(null, 0.5);
              }, this.destroy = function() {
                this.$toDestroy && (this.$toDestroy.forEach(function(c) {
                  c.destroy();
                }), this.$toDestroy = null), this.$mouseHandler && this.$mouseHandler.destroy(), this.renderer.destroy(), this._signal("destroy", this), this.session && this.session.destroy(), this._$emitInputEvent && this._$emitInputEvent.cancel(), this.removeAllListeners();
              }, this.setAutoScrollEditorIntoView = function(c) {
                var v, k, S, L, W, _, O;
                c && (S = !1, (k = this).$scrollAnchor || (this.$scrollAnchor = document.createElement("div")), (L = this.$scrollAnchor).style.cssText = "position:absolute", this.container.insertBefore(L, this.container.firstChild), W = this.on("changeSelection", function() {
                  S = !0;
                }), _ = this.renderer.on("beforeRender", function() {
                  S && (v = k.renderer.container.getBoundingClientRect());
                }), O = this.renderer.on("afterRender", function() {
                  var z, H, Y;
                  S && v && (k.isFocused() || k.searchBox && k.searchBox.isFocused()) && (z = (Y = k.renderer).$cursorLayer.$pixelPos, H = Y.layerConfig, Y = z.top - H.offset, (S = 0 <= z.top && Y + v.top < 0 || !(z.top < H.height && z.top + v.top + H.lineHeight > window.innerHeight) && null) != null && (L.style.top = Y + "px", L.style.left = z.left + "px", L.style.height = H.lineHeight + "px", L.scrollIntoView(S)), S = v = null);
                }), this.setAutoScrollEditorIntoView = function(z) {
                  z || (delete this.setAutoScrollEditorIntoView, this.off("changeSelection", W), this.renderer.off("afterRender", O), this.renderer.off("beforeRender", _));
                });
              }, this.$resetCursorStyle = function() {
                var c = this.$cursorStyle || "ace", v = this.renderer.$cursorLayer;
                v && (v.setSmoothBlinking(/smooth/.test(c)), v.isBlinking = !this.$readOnly && c != "wide", w.setCssClass(v.element, "ace_slim-cursors", /slim/.test(c)));
              }, this.prompt = function(c, v, k) {
                var S = this;
                f.loadModule("./ext/prompt", function(L) {
                  L.prompt(S, c, v, k);
                });
              };
            }).call(C.prototype), f.defineOptions(C.prototype, "editor", { selectionStyle: { set: function(c) {
              this.onSelectionChange(), this._signal("changeSelectionStyle", { data: c });
            }, initialValue: "line" }, highlightActiveLine: { set: function() {
              this.$updateHighlightActiveLine();
            }, initialValue: !0 }, highlightSelectedWord: { set: function(c) {
              this.$onSelectionChange();
            }, initialValue: !0 }, readOnly: { set: function(c) {
              this.textInput.setReadOnly(c), this.$resetCursorStyle();
            }, initialValue: !1 }, copyWithEmptySelection: { set: function(c) {
              this.textInput.setCopyWithEmptySelection(c);
            }, initialValue: !1 }, cursorStyle: { set: function(c) {
              this.$resetCursorStyle();
            }, values: ["ace", "slim", "smooth", "wide"], initialValue: "ace" }, mergeUndoDeltas: { values: [!1, !0, "always"], initialValue: !0 }, behavioursEnabled: { initialValue: !0 }, wrapBehavioursEnabled: { initialValue: !0 }, enableAutoIndent: { initialValue: !0 }, autoScrollEditorIntoView: { set: function(c) {
              this.setAutoScrollEditorIntoView(c);
            } }, keyboardHandler: { set: function(c) {
              this.setKeyboardHandler(c);
            }, get: function() {
              return this.$keybindingId;
            }, handlesSet: !0 }, value: { set: function(c) {
              this.session.setValue(c);
            }, get: function() {
              return this.getValue();
            }, handlesSet: !0, hidden: !0 }, session: { set: function(c) {
              this.setSession(c);
            }, get: function() {
              return this.session;
            }, handlesSet: !0, hidden: !0 }, showLineNumbers: { set: function(c) {
              this.renderer.$gutterLayer.setShowLineNumbers(c), this.renderer.$loop.schedule(this.renderer.CHANGE_GUTTER), c && this.$relativeLineNumbers ? y.attach(this) : y.detach(this);
            }, initialValue: !0 }, relativeLineNumbers: { set: function(c) {
              this.$showLineNumbers && c ? y.attach(this) : y.detach(this);
            } }, placeholder: { set: function(c) {
              this.$updatePlaceholder || (this.$updatePlaceholder = (function() {
                var v = this.session && (this.renderer.$composition || this.getValue());
                v && this.renderer.placeholderNode ? (this.renderer.off("afterRender", this.$updatePlaceholder), w.removeCssClass(this.container, "ace_hasPlaceholder"), this.renderer.placeholderNode.remove(), this.renderer.placeholderNode = null) : v || this.renderer.placeholderNode ? !v && this.renderer.placeholderNode && (this.renderer.placeholderNode.textContent = this.$placeholder || "") : (this.renderer.on("afterRender", this.$updatePlaceholder), w.addCssClass(this.container, "ace_hasPlaceholder"), (v = w.createElement("div")).className = "ace_placeholder", v.textContent = this.$placeholder || "", this.renderer.placeholderNode = v, this.renderer.content.appendChild(this.renderer.placeholderNode));
              }).bind(this), this.on("input", this.$updatePlaceholder)), this.$updatePlaceholder();
            } }, hScrollBarAlwaysVisible: "renderer", vScrollBarAlwaysVisible: "renderer", highlightGutterLine: "renderer", animatedScroll: "renderer", showInvisibles: "renderer", showPrintMargin: "renderer", printMarginColumn: "renderer", printMargin: "renderer", fadeFoldWidgets: "renderer", showFoldWidgets: "renderer", displayIndentGuides: "renderer", showGutter: "renderer", fontSize: "renderer", fontFamily: "renderer", maxLines: "renderer", minLines: "renderer", scrollPastEnd: "renderer", fixedWidthGutter: "renderer", theme: "renderer", hasCssTransforms: "renderer", maxPixelHeight: "renderer", useTextareaForIME: "renderer", scrollSpeed: "$mouseHandler", dragDelay: "$mouseHandler", dragEnabled: "$mouseHandler", focusTimeout: "$mouseHandler", tooltipFollowsMouse: "$mouseHandler", firstLineNumber: "session", overwrite: "session", newLineMode: "session", useWorker: "session", useSoftTabs: "session", navigateWithinSoftTabs: "session", tabSize: "session", wrap: "session", indentedSoftWrap: "session", foldStyle: "session", mode: "session" });
            var y = { getText: function(c, v) {
              return (Math.abs(c.selection.lead.row - v) || v + 1 + (v < 9 ? "·" : "")) + "";
            }, getWidth: function(c, v, k) {
              return Math.max(v.toString().length, (k.lastRow + 1).toString().length, 2) * k.characterWidth;
            }, update: function(c, v) {
              v.renderer.$loop.schedule(v.renderer.CHANGE_GUTTER);
            }, attach: function(c) {
              c.renderer.$gutterLayer.$renderer = this, c.on("changeSelection", this.update), this.update(null, c);
            }, detach: function(c) {
              c.renderer.$gutterLayer.$renderer == this && (c.renderer.$gutterLayer.$renderer = null), c.off("changeSelection", this.update), this.update(null, c);
            } };
            m.Editor = C;
          }), ace.define("ace/undomanager", ["require", "exports", "module", "ace/range"], function(j, m, E) {
            function b() {
              this.$maxRev = 0, this.$fromUndo = !1, this.reset();
            }
            function w(r) {
              return { row: r.row, column: r.column };
            }
            function d(r) {
              if (r = r || this, Array.isArray(r)) return r.map(d).join(`
`);
              var p = "";
              return r.action ? (p = r.action == "insert" ? "+" : "-", p += "[" + r.lines + "]") : r.value && (p = Array.isArray(r.value) ? r.value.map(a).join(`
`) : a(r.value)), r.start && (p += a(r)), (r.id || r.rev) && (p += "	(" + (r.id || r.rev) + ")"), p;
            }
            function a(r) {
              return r.start.row + ":" + r.start.column + "=>" + r.end.row + ":" + r.end.column;
            }
            function o(r, p) {
              var l = r.action == "insert", I = p.action == "insert";
              if (l && I) if (0 <= h(p.start, r.end)) e(p, r, -1);
              else {
                if (!(h(p.start, r.start) <= 0)) return;
                e(r, p, 1);
              }
              else if (l && !I) if (0 <= h(p.start, r.end)) e(p, r, -1);
              else {
                if (!(h(p.end, r.start) <= 0)) return;
                e(r, p, -1);
              }
              else if (!l && I) if (0 <= h(p.start, r.start)) e(p, r, 1);
              else {
                if (!(h(p.start, r.start) <= 0)) return;
                e(r, p, 1);
              }
              else if (!l && !I) if (0 <= h(p.start, r.start)) e(p, r, 1);
              else {
                if (!(h(p.end, r.start) <= 0)) return;
                e(r, p, -1);
              }
              return 1;
            }
            function e(r, p, l) {
              t(r.start, p.start, p.end, l), t(r.end, p.start, p.end, l);
            }
            function t(r, p, l, I) {
              r.row == (I == 1 ? p : l).row && (r.column += I * (l.column - p.column)), r.row += I * (l.row - p.row);
            }
            function i(r, p) {
              var l = r.lines, I = r.end;
              r.end = w(p);
              var n = r.end.row - r.start.row, f = l.splice(n, l.length), n = n ? p.column : p.column - r.start.column;
              return l.push(f[0].substring(0, n)), f[0] = f[0].substr(n), { start: w(p), end: I, lines: f, action: r.action };
            }
            (function() {
              this.addSession = function(r) {
                this.$session = r;
              }, this.add = function(r, p, l) {
                this.$fromUndo || r != this.$lastDelta && (this.$keepRedoStack || (this.$redoStack.length = 0), p !== !1 && this.lastDeltas || (this.lastDeltas = [], this.$undoStack.push(this.lastDeltas), r.id = this.$rev = ++this.$maxRev), r.action != "remove" && r.action != "insert" || (this.$lastDelta = r), this.lastDeltas.push(r));
              }, this.addSelection = function(r, p) {
                this.selections.push({ value: r, rev: p || this.$rev });
              }, this.startNewGroup = function() {
                return this.lastDeltas = null, this.$rev;
              }, this.markIgnored = function(r, p) {
                p == null && (p = this.$rev + 1);
                for (var l = this.$undoStack, I = l.length; I--; ) {
                  var f = l[I][0];
                  if (f.id <= r) break;
                  f.id < p && (f.ignore = !0);
                }
                this.lastDeltas = null;
              }, this.getSelection = function(r, p) {
                for (var l = this.selections, I = l.length; I--; ) {
                  var f = l[I];
                  if (f.rev < r) return f = p ? l[I + 1] : f;
                }
              }, this.getRevision = function() {
                return this.$rev;
              }, this.getDeltas = function(r, p) {
                p == null && (p = this.$rev + 1);
                for (var l = this.$undoStack, I = null, f = 0, n = l.length; n--; ) {
                  var g = l[n][0];
                  if (g.id < p && !I && (I = n + 1), g.id <= r) {
                    f = n + 1;
                    break;
                  }
                }
                return l.slice(f, I);
              }, this.getChangedRanges = function(r, p) {
                p == null && this.$rev;
              }, this.getChangedLines = function(r, p) {
                p == null && this.$rev;
              }, this.undo = function(r, p) {
                this.lastDeltas = null;
                var l = this.$undoStack;
                if (function(f, n) {
                  for (var g = n; g--; ) {
                    var C = f[g];
                    if (C && !C[0].ignore) {
                      for (; g < n - 1; ) {
                        var y = function(c, v) {
                          for (var k = c.length; k--; ) for (var S = 0; S < v.length; S++) if (!o(c[k], v[S])) {
                            for (; k < c.length; ) {
                              for (; S--; ) o(v[S], c[k]);
                              S = v.length, k++;
                            }
                            return [c, v];
                          }
                          return c.selectionBefore = v.selectionBefore = c.selectionAfter = v.selectionAfter = null, [v, c];
                        }(f[g], f[g + 1]);
                        f[g] = y[0], f[g + 1] = y[1], g++;
                      }
                      return !0;
                    }
                  }
                }(l, l.length)) {
                  r = r || this.$session, this.$redoStackBaseRev !== this.$rev && this.$redoStack.length && (this.$redoStack = []), this.$fromUndo = !0;
                  var I = l.pop(), l = null;
                  return I && (l = r.undoChanges(I, p), this.$redoStack.push(I), this.$syncRev()), this.$fromUndo = !1, l;
                }
              }, this.redo = function(r, p) {
                this.lastDeltas = null, r = r || this.$session, this.$fromUndo = !0, this.$redoStackBaseRev != this.$rev && (I = this.getDeltas(this.$redoStackBaseRev, this.$rev + 1), function(f, n) {
                  for (var g = 0; g < n.length; g++) for (var C = n[g], y = 0; y < C.length; y++) (function(c, v) {
                    v = function(_) {
                      return { start: w(_.start), end: w(_.end), action: _.action, lines: _.lines.slice() };
                    }(v);
                    for (var k = c.length; k--; ) {
                      for (var S = c[k], L = 0; L < S.length; L++) {
                        var W = function(_, O) {
                          var z, H, Y = _.action == "insert", ie = O.action == "insert";
                          if (Y && ie) h(_.start, O.start) < 0 ? e(O, _, 1) : e(_, O, 1);
                          else if (Y && !ie) 0 <= h(_.start, O.end) ? e(_, O, -1) : (h(_.start, O.start) <= 0 || e(_, s.fromPoints(O.start, _.start), -1), e(O, _, 1));
                          else if (!Y && ie) 0 <= h(O.start, _.end) ? e(O, _, -1) : (h(O.start, _.start) <= 0 || e(O, s.fromPoints(_.start, O.start), -1), e(_, O, 1));
                          else if (!Y && !ie) if (0 <= h(O.start, _.end)) e(O, _, -1);
                          else {
                            if (!(h(O.end, _.start) <= 0)) return h(_.start, O.start) < 0 && (_ = i(z = _, O.start)), 0 < h(_.end, O.end) && (H = i(_, O.end)), t(O.end, _.start, _.end, -1), H && !z && (_.lines = H.lines, _.start = H.start, _.end = H.end, H = _), [O, z, H].filter(Boolean);
                            e(_, O, -1);
                          }
                          return [O, _];
                        }(S[L], v);
                        v = W[0], W.length != 2 && (W[2] ? (S.splice(L + 1, 1, W[1], W[2]), L++) : W[1] || (S.splice(L, 1), L--));
                      }
                      S.length || c.splice(k, 1);
                    }
                  })(f, C[y]);
                }(this.$redoStack, I), this.$redoStackBaseRev = this.$rev, this.$redoStack.forEach(function(f) {
                  f[0].id = ++this.$maxRev;
                }, this));
                var l = this.$redoStack.pop(), I = null;
                return l && (I = r.redoChanges(l, p), this.$undoStack.push(l), this.$syncRev()), this.$fromUndo = !1, I;
              }, this.$syncRev = function() {
                var r = this.$undoStack, r = r[r.length - 1], r = r && r[0].id || 0;
                this.$redoStackBaseRev = r, this.$rev = r;
              }, this.reset = function() {
                this.lastDeltas = null, this.$lastDelta = null, this.$undoStack = [], this.$redoStack = [], this.$rev = 0, this.mark = 0, this.$redoStackBaseRev = this.$rev, this.selections = [];
              }, this.canUndo = function() {
                return 0 < this.$undoStack.length;
              }, this.canRedo = function() {
                return 0 < this.$redoStack.length;
              }, this.bookmark = function(r) {
                r == null && (r = this.$rev), this.mark = r;
              }, this.isAtBookmark = function() {
                return this.$rev === this.mark;
              }, this.toJSON = function() {
              }, this.fromJSON = function() {
              }, this.hasUndo = this.canUndo, this.hasRedo = this.canRedo, this.isClean = this.isAtBookmark, this.markClean = this.bookmark, this.$prettyPrint = function(r) {
                return r ? d(r) : d(this.$undoStack) + `
---
` + d(this.$redoStack);
              };
            }).call(b.prototype);
            var s = j("./range").Range, h = s.comparePoints;
            s.comparePoints, m.UndoManager = b;
          }), ace.define("ace/layer/lines", ["require", "exports", "module", "ace/lib/dom"], function(w, m, E) {
            var b = w("../lib/dom"), w = function(d, a) {
              this.element = d, this.canvasHeight = a || 5e5, this.element.style.height = 2 * this.canvasHeight + "px", this.cells = [], this.cellCache = [], this.$offsetCoefficient = 0;
            };
            (function() {
              this.moveContainer = function(d) {
                b.translate(this.element, 0, -d.firstRowScreen * d.lineHeight % this.canvasHeight - d.offset * this.$offsetCoefficient);
              }, this.pageChanged = function(d, a) {
                return Math.floor(d.firstRowScreen * d.lineHeight / this.canvasHeight) !== Math.floor(a.firstRowScreen * a.lineHeight / this.canvasHeight);
              }, this.computeLineTop = function(d, a, o) {
                var e = a.firstRowScreen * a.lineHeight, e = Math.floor(e / this.canvasHeight);
                return o.documentToScreenRow(d, 0) * a.lineHeight - e * this.canvasHeight;
              }, this.computeLineHeight = function(d, a, o) {
                return a.lineHeight * o.getRowLineCount(d);
              }, this.getLength = function() {
                return this.cells.length;
              }, this.get = function(d) {
                return this.cells[d];
              }, this.shift = function() {
                this.$cacheCell(this.cells.shift());
              }, this.pop = function() {
                this.$cacheCell(this.cells.pop());
              }, this.push = function(d) {
                if (Array.isArray(d)) {
                  this.cells.push.apply(this.cells, d);
                  for (var a = b.createFragment(this.element), o = 0; o < d.length; o++) a.appendChild(d[o].element);
                  this.element.appendChild(a);
                } else this.cells.push(d), this.element.appendChild(d.element);
              }, this.unshift = function(d) {
                if (Array.isArray(d)) {
                  this.cells.unshift.apply(this.cells, d);
                  for (var a = b.createFragment(this.element), o = 0; o < d.length; o++) a.appendChild(d[o].element);
                  this.element.firstChild ? this.element.insertBefore(a, this.element.firstChild) : this.element.appendChild(a);
                } else this.cells.unshift(d), this.element.insertAdjacentElement("afterbegin", d.element);
              }, this.last = function() {
                return this.cells.length ? this.cells[this.cells.length - 1] : null;
              }, this.$cacheCell = function(d) {
                d && (d.element.remove(), this.cellCache.push(d));
              }, this.createCell = function(d, a, o, e) {
                var t, i = this.cellCache.pop();
                return i || (t = b.createElement("div"), e && e(t), this.element.appendChild(t), i = { element: t, text: "", row: d }), i.row = d, i;
              };
            }).call(w.prototype), m.Lines = w;
          }), ace.define("ace/layer/gutter", ["require", "exports", "module", "ace/lib/dom", "ace/lib/oop", "ace/lib/lang", "ace/lib/event_emitter", "ace/layer/lines"], function(t, m, E) {
            function b(i) {
              var s = document.createTextNode("");
              return i.appendChild(s), s = w.createElement("span"), i.appendChild(s), i;
            }
            var w = t("../lib/dom"), d = t("../lib/oop"), a = t("../lib/lang"), o = t("../lib/event_emitter").EventEmitter, e = t("./lines").Lines, t = function(i) {
              this.element = w.createElement("div"), this.element.className = "ace_layer ace_gutter-layer", i.appendChild(this.element), this.setShowFoldWidgets(this.$showFoldWidgets), this.gutterWidth = 0, this.$annotations = [], this.$updateAnnotations = this.$updateAnnotations.bind(this), this.$lines = new e(this.element), this.$lines.$offsetCoefficient = 1;
            };
            (function() {
              d.implement(this, o), this.setSession = function(i) {
                this.session && this.session.off("change", this.$updateAnnotations), (this.session = i) && i.on("change", this.$updateAnnotations);
              }, this.addGutterDecoration = function(i, s) {
                window.console && console.warn && console.warn("deprecated use session.addGutterDecoration"), this.session.addGutterDecoration(i, s);
              }, this.removeGutterDecoration = function(i, s) {
                window.console && console.warn && console.warn("deprecated use session.removeGutterDecoration"), this.session.removeGutterDecoration(i, s);
              }, this.setAnnotations = function(i) {
                this.$annotations = [];
                for (var s = 0; s < i.length; s++) {
                  var h = i[s], p = h.row, r = (r = this.$annotations[p]) || (this.$annotations[p] = { text: [] }), p = (p = h.text) ? a.escapeHTML(p) : h.html || "";
                  r.text.indexOf(p) === -1 && r.text.push(p), h = h.type, h == "error" ? r.className = " ace_error" : h == "warning" && r.className != " ace_error" ? r.className = " ace_warning" : h != "info" || r.className || (r.className = " ace_info");
                }
              }, this.$updateAnnotations = function(i) {
                var s, h;
                this.$annotations.length && (s = i.start.row, (h = i.end.row - s) == 0 || (i.action == "remove" ? this.$annotations.splice(s, 1 + h, null) : ((h = new Array(1 + h)).unshift(s, 1), this.$annotations.splice.apply(this.$annotations, h))));
              }, this.update = function(i) {
                this.config = i;
                var s = this.session, h = i.firstRow, r = Math.min(i.lastRow + i.gutterOffset, s.getLength() - 1);
                this.oldLastRow = r, this.config = i, this.$lines.moveContainer(i), this.$updateCursorRow();
                for (var p = s.getNextFoldLine(h), l = p ? p.start.row : 1 / 0, I = null, f = -1, n = h; ; ) {
                  if (l < n && (n = p.end.row + 1, l = (p = s.getNextFoldLine(n, p)) ? p.start.row : 1 / 0), r < n) {
                    for (; this.$lines.getLength() > f + 1; ) this.$lines.pop();
                    break;
                  }
                  (I = this.$lines.get(++f)) ? I.row = n : (I = this.$lines.createCell(n, i, this.session, b), this.$lines.push(I)), this.$renderCell(I, i, p, n), n++;
                }
                this._signal("afterRender"), this.$updateGutterWidth(i);
              }, this.$updateGutterWidth = function(i) {
                var s = this.session, h = s.gutterRenderer || this.$renderer, r = s.$firstLineNumber, p = this.$lines.last() ? this.$lines.last().text : "";
                (this.$fixedWidth || s.$useWrapMode) && (p = s.getLength() + r - 1), p = h ? h.getWidth(s, p, i) : p.toString().length * i.characterWidth, i = this.$padding || this.$computePadding(), (p += i.left + i.right) === this.gutterWidth || isNaN(p) || (this.gutterWidth = p, this.element.parentNode.style.width = this.element.style.width = Math.ceil(this.gutterWidth) + "px", this._signal("changeGutterWidth", p));
              }, this.$updateCursorRow = function() {
                var i;
                this.$highlightGutterLine && (i = this.session.selection.getCursor(), this.$cursorRow !== i.row && (this.$cursorRow = i.row));
              }, this.updateLineHighlight = function() {
                if (this.$highlightGutterLine) {
                  var i = this.session.selection.cursor.row;
                  if (this.$cursorRow = i, !this.$cursorCell || this.$cursorCell.row != i) {
                    this.$cursorCell && (this.$cursorCell.element.className = this.$cursorCell.element.className.replace("ace_gutter-active-line ", ""));
                    var s = this.$lines.cells;
                    this.$cursorCell = null;
                    for (var h = 0; h < s.length; h++) {
                      var r = s[h];
                      if (r.row >= this.$cursorRow) {
                        if (r.row > this.$cursorRow) {
                          var p = this.session.getFoldLine(this.$cursorRow);
                          if (!(0 < h && p && p.start.row == s[h - 1].row)) break;
                          r = s[h - 1];
                        }
                        r.element.className = "ace_gutter-active-line " + r.element.className, this.$cursorCell = r;
                        break;
                      }
                    }
                  }
                }
              }, this.scrollLines = function(i) {
                var s = this.config;
                if (this.config = i, this.$updateCursorRow(), this.$lines.pageChanged(s, i)) return this.update(i);
                this.$lines.moveContainer(i);
                var h = Math.min(i.lastRow + i.gutterOffset, this.session.getLength() - 1), r = this.oldLastRow;
                if (this.oldLastRow = h, !s || r < i.firstRow) return this.update(i);
                if (h < s.firstRow) return this.update(i);
                if (s.firstRow < i.firstRow) for (var p = this.session.getFoldedRowCount(s.firstRow, i.firstRow - 1); 0 < p; p--) this.$lines.shift();
                if (h < r) for (p = this.session.getFoldedRowCount(h + 1, r); 0 < p; p--) this.$lines.pop();
                i.firstRow < s.firstRow && this.$lines.unshift(this.$renderLines(i, i.firstRow, s.firstRow - 1)), r < h && this.$lines.push(this.$renderLines(i, r + 1, h)), this.updateLineHighlight(), this._signal("afterRender"), this.$updateGutterWidth(i);
              }, this.$renderLines = function(i, s, h) {
                for (var r = [], p = s, l = this.session.getNextFoldLine(p), I = l ? l.start.row : 1 / 0; I < p && (p = l.end.row + 1, I = (l = this.session.getNextFoldLine(p, l)) ? l.start.row : 1 / 0), !(h < p); ) {
                  var f = this.$lines.createCell(p, i, this.session, b);
                  this.$renderCell(f, i, l, p), r.push(f), p++;
                }
                return r;
              }, this.$renderCell = function(i, s, h, r) {
                var p, l = i.element, I = this.session, f = l.childNodes[0], n = l.childNodes[1], g = I.$firstLineNumber, C = I.$breakpoints, y = I.$decorations, c = I.gutterRenderer || this.$renderer, v = this.$showFoldWidgets && I.foldWidgets, k = h ? h.start.row : Number.MAX_VALUE, S = "ace_gutter-cell ";
                return this.$highlightGutterLine && (r == this.$cursorRow || h && r < this.$cursorRow && k <= r && this.$cursorRow <= h.end.row) && (S += "ace_gutter-active-line ", this.$cursorCell != i && (this.$cursorCell && (this.$cursorCell.element.className = this.$cursorCell.element.className.replace("ace_gutter-active-line ", "")), this.$cursorCell = i)), C[r] && (S += C[r]), y[r] && (S += y[r]), this.$annotations[r] && (S += this.$annotations[r].className), l.className != S && (l.className = S), !v || (p = v[r]) == null && (p = v[r] = I.getFoldWidget(r)), p ? (S = "ace_fold-widget ace_" + p, p == "start" && r == k && r < h.end.row ? S += " ace_closed" : S += " ace_open", n.className != S && (n.className = S), S = s.lineHeight + "px", w.setStyle(n.style, "height", S), w.setStyle(n.style, "display", "inline-block")) : n && w.setStyle(n.style, "display", "none"), g = (c ? c.getText(I, r) : r + g).toString(), g !== f.data && (f.data = g), w.setStyle(i.element.style, "height", this.$lines.computeLineHeight(r, s, I) + "px"), w.setStyle(i.element.style, "top", this.$lines.computeLineTop(r, s, I) + "px"), i.text = g, i;
              }, this.$fixedWidth = !1, this.$highlightGutterLine = !0, this.$renderer = "", this.setHighlightGutterLine = function(i) {
                this.$highlightGutterLine = i;
              }, this.$showLineNumbers = !0, this.$renderer = "", this.setShowLineNumbers = function(i) {
                this.$renderer = !i && { getWidth: function() {
                  return 0;
                }, getText: function() {
                  return "";
                } };
              }, this.getShowLineNumbers = function() {
                return this.$showLineNumbers;
              }, this.$showFoldWidgets = !0, this.setShowFoldWidgets = function(i) {
                i ? w.addCssClass(this.element, "ace_folding-enabled") : w.removeCssClass(this.element, "ace_folding-enabled"), this.$showFoldWidgets = i, this.$padding = null;
              }, this.getShowFoldWidgets = function() {
                return this.$showFoldWidgets;
              }, this.$computePadding = function() {
                if (!this.element.firstChild) return { left: 0, right: 0 };
                var i = w.computedStyle(this.element.firstChild);
                return this.$padding = {}, this.$padding.left = (parseInt(i.borderLeftWidth) || 0) + (parseInt(i.paddingLeft) || 0) + 1, this.$padding.right = (parseInt(i.borderRightWidth) || 0) + (parseInt(i.paddingRight) || 0), this.$padding;
              }, this.getRegion = function(i) {
                var s = this.$padding || this.$computePadding(), h = this.element.getBoundingClientRect();
                return i.x < s.left + h.left ? "markers" : this.$showFoldWidgets && i.x > h.right - s.right ? "foldWidgets" : void 0;
              };
            }).call(t.prototype), m.Gutter = t;
          }), ace.define("ace/layer/marker", ["require", "exports", "module", "ace/range", "ace/lib/dom"], function(d, m, E) {
            var b = d("../range").Range, w = d("../lib/dom"), d = function(a) {
              this.element = w.createElement("div"), this.element.className = "ace_layer ace_marker-layer", a.appendChild(this.element);
            };
            (function() {
              this.$padding = 0, this.setPadding = function(a) {
                this.$padding = a;
              }, this.setSession = function(a) {
                this.session = a;
              }, this.setMarkers = function(a) {
                this.markers = a;
              }, this.elt = function(a, o) {
                var e = this.i != -1 && this.element.childNodes[this.i];
                e ? this.i++ : (e = document.createElement("div"), this.element.appendChild(e), this.i = -1), e.style.cssText = o, e.className = a;
              }, this.update = function(a) {
                if (a) {
                  var o, e;
                  for (e in this.config = a, this.i = 0, this.markers) {
                    var t, i, s, h = this.markers[e];
                    h.range ? (s = h.range.clipRows(a.firstRow, a.lastRow)).isEmpty() || (s = s.toScreenRange(this.session), h.renderer ? (t = this.$getTop(s.start.row, a), i = this.$padding + s.start.column * a.characterWidth, h.renderer(o, s, i, t, a)) : h.type == "fullLine" ? this.drawFullLineMarker(o, s, h.clazz, a) : h.type == "screenLine" ? this.drawScreenLineMarker(o, s, h.clazz, a) : s.isMultiLine() ? h.type == "text" ? this.drawTextMarker(o, s, h.clazz, a) : this.drawMultiLineMarker(o, s, h.clazz, a) : this.drawSingleLineMarker(o, s, h.clazz + " ace_start ace_br15", a)) : h.update(o, this, this.session, a);
                  }
                  if (this.i != -1) for (; this.i < this.element.childElementCount; ) this.element.removeChild(this.element.lastChild);
                }
              }, this.$getTop = function(a, o) {
                return (a - o.firstRowScreen) * o.lineHeight;
              }, this.drawTextMarker = function(a, o, e, t, i) {
                for (var s, h = this.session, r = o.start.row, p = o.end.row, l = r, I = 0, f = h.getScreenLastRowColumn(l), n = new b(l, o.start.column, l, I); l <= p; l++) n.start.row = n.end.row = l, n.start.column = l == r ? o.start.column : h.getRowWrapIndent(l), s = I, I = n.end.column = f, f = l + 1 < p ? h.getScreenLastRowColumn(l + 1) : l == p ? 0 : o.end.column, this.drawSingleLineMarker(a, n, e + (l == r ? " ace_start" : "") + " ace_br" + ((l == r || l == r + 1 && o.start.column ? 1 : 0) | (s < I ? 2 : 0) | (f < I ? 4 : 0) | (l == p ? 8 : 0)), t, l == p ? 0 : 1, i);
              }, this.drawMultiLineMarker = function(a, o, e, t, i) {
                var s, h = this.$padding, r = t.lineHeight, p = this.$getTop(o.start.row, t), l = h + o.start.column * t.characterWidth;
                i = i || "", this.session.$bidiHandler.isBidiRow(o.start.row) ? ((s = o.clone()).end.row = s.start.row, s.end.column = this.session.getLine(s.start.row).length, this.drawBidiSingleLineMarker(a, s, e + " ace_br1 ace_start", t, null, i)) : this.elt(e + " ace_br1 ace_start", "height:" + r + "px;right:0;top:" + p + "px;left:" + l + "px;" + (i || "")), this.session.$bidiHandler.isBidiRow(o.end.row) ? ((s = o.clone()).start.row = s.end.row, s.start.column = 0, this.drawBidiSingleLineMarker(a, s, e + " ace_br12", t, null, i)) : (p = this.$getTop(o.end.row, t), s = o.end.column * t.characterWidth, this.elt(e + " ace_br12", "height:" + r + "px;width:" + s + "px;top:" + p + "px;left:" + h + "px;" + (i || ""))), (r = (o.end.row - o.start.row - 1) * t.lineHeight) <= 0 || (p = this.$getTop(o.start.row + 1, t), o = (o.start.column ? 1 : 0) | (o.end.column ? 0 : 8), this.elt(e + (o ? " ace_br" + o : ""), "height:" + r + "px;right:0;top:" + p + "px;left:" + h + "px;" + (i || "")));
              }, this.drawSingleLineMarker = function(r, o, e, l, p, s) {
                if (this.session.$bidiHandler.isBidiRow(o.start.row)) return this.drawBidiSingleLineMarker(r, o, e, l, p, s);
                var h = l.lineHeight, r = (o.end.column + (p || 0) - o.start.column) * l.characterWidth, p = this.$getTop(o.start.row, l), l = this.$padding + o.start.column * l.characterWidth;
                this.elt(e, "height:" + h + "px;width:" + r + "px;top:" + p + "px;left:" + l + "px;" + (s || ""));
              }, this.drawBidiSingleLineMarker = function(a, o, e, t, i, s) {
                var h = t.lineHeight, r = this.$getTop(o.start.row, t), p = this.$padding;
                this.session.$bidiHandler.getSelections(o.start.column, o.end.column).forEach(function(l) {
                  this.elt(e, "height:" + h + "px;width:" + l.width + (i || 0) + "px;top:" + r + "px;left:" + (p + l.left) + "px;" + (s || ""));
                }, this);
              }, this.drawFullLineMarker = function(a, o, e, t, i) {
                var s = this.$getTop(o.start.row, t), h = t.lineHeight;
                o.start.row != o.end.row && (h += this.$getTop(o.end.row, t) - s), this.elt(e, "height:" + h + "px;top:" + s + "px;left:0;right:0;" + (i || ""));
              }, this.drawScreenLineMarker = function(a, o, e, t, i) {
                o = this.$getTop(o.start.row, t), t = t.lineHeight, this.elt(e, "height:" + t + "px;top:" + o + "px;left:0;right:0;" + (i || ""));
              };
            }).call(d.prototype), m.Marker = d;
          }), ace.define("ace/layer/text", ["require", "exports", "module", "ace/lib/oop", "ace/lib/dom", "ace/lib/lang", "ace/layer/lines", "ace/lib/event_emitter"], function(e, m, E) {
            var b = e("../lib/oop"), w = e("../lib/dom"), d = e("../lib/lang"), a = e("./lines").Lines, o = e("../lib/event_emitter").EventEmitter, e = function(t) {
              this.dom = w, this.element = this.dom.createElement("div"), this.element.className = "ace_layer ace_text-layer", t.appendChild(this.element), this.$updateEolChar = this.$updateEolChar.bind(this), this.$lines = new a(this.element);
            };
            (function() {
              b.implement(this, o), 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.MAX_LINE_LENGTH = 1e4, this.$updateEolChar = function() {
                var t = this.session.doc, t = t.getNewLineCharacter() == `
` && t.getNewLineMode() != "windows" ? 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.margin = "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(i) {
                  this._signal("changeCharacterSize", i);
                }).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) && this.$computeTabString();
              }, this.showInvisibles = !1, this.showSpaces = !1, this.showTabs = !1, this.showEOL = !1, this.setShowInvisibles = function(t) {
                return this.showInvisibles != t && (typeof (this.showInvisibles = t) == "string" ? (this.showSpaces = /tab/i.test(t), this.showTabs = /space/i.test(t), this.showEOL = /eol/i.test(t)) : this.showSpaces = this.showTabs = this.showEOL = 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 i, s, h, r, p, l, I = this.$tabStrings = [0], f = 1; f < t + 1; f++) this.showTabs ? ((l = this.dom.createElement("span")).className = "ace_invisible ace_invisible_tab", l.textContent = d.stringRepeat(this.TAB_CHAR, f), I.push(l)) : I.push(this.dom.createTextNode(d.stringRepeat(" ", f), this.element));
                this.displayIndentGuides && (this.$indentGuideRe = /\s\S| \t|\t |\s$/, i = "ace_indent-guide", s = this.showSpaces ? " ace_invisible ace_invisible_space" : "", h = this.showSpaces ? d.stringRepeat(this.SPACE_CHAR, this.tabSize) : d.stringRepeat(" ", this.tabSize), r = this.showTabs ? " ace_invisible ace_invisible_tab" : "", p = this.showTabs ? d.stringRepeat(this.TAB_CHAR, this.tabSize) : h, (l = this.dom.createElement("span")).className = i + s, l.textContent = h, this.$tabStrings[" "] = l, (l = this.dom.createElement("span")).className = i + r, l.textContent = p, this.$tabStrings["	"] = l);
              }, this.updateLines = function(t, i, s) {
                if (this.config.lastRow != t.lastRow || this.config.firstRow != t.firstRow) return this.update(t);
                this.config = t;
                for (var h = Math.max(i, t.firstRow), r = Math.min(s, t.lastRow), p = this.element.childNodes, l = 0, I = t.firstRow; I < h; I++) {
                  if (f = this.session.getFoldLine(I)) {
                    if (f.containsRow(h)) {
                      h = f.start.row;
                      break;
                    }
                    I = f.end.row;
                  }
                  l++;
                }
                for (var f, n = !1, I = h, g = (f = this.session.getNextFoldLine(I)) ? f.start.row : 1 / 0; g < I && (I = f.end.row + 1, g = (f = this.session.getNextFoldLine(I, f)) ? f.start.row : 1 / 0), !(r < I); ) {
                  var C, y = p[l++];
                  y && (this.dom.removeChildren(y), this.$renderLine(y, I, I == g && f), n && (y.style.top = this.$lines.computeLineTop(I, t, this.session) + "px"), C = t.lineHeight * this.session.getRowLength(I) + "px", y.style.height != C && (n = !0, y.style.height = C)), I++;
                }
                if (n) for (; l < this.$lines.cells.length; ) {
                  var c = this.$lines.cells[l++];
                  c.element.style.top = this.$lines.computeLineTop(c.row, t, this.session) + "px";
                }
              }, this.scrollLines = function(t) {
                var i = this.config;
                if (this.config = t, this.$lines.pageChanged(i, t)) return this.update(t);
                this.$lines.moveContainer(t);
                var s = t.lastRow, h = i ? i.lastRow : -1;
                if (!i || h < t.firstRow) return this.update(t);
                if (s < i.firstRow) return this.update(t);
                if (!i || i.lastRow < t.firstRow) return this.update(t);
                if (t.lastRow < i.firstRow) return this.update(t);
                if (i.firstRow < t.firstRow) for (var r = this.session.getFoldedRowCount(i.firstRow, t.firstRow - 1); 0 < r; r--) this.$lines.shift();
                if (i.lastRow > t.lastRow) for (r = this.session.getFoldedRowCount(t.lastRow + 1, i.lastRow); 0 < r; r--) this.$lines.pop();
                t.firstRow < i.firstRow && this.$lines.unshift(this.$renderLinesFragment(t, t.firstRow, i.firstRow - 1)), t.lastRow > i.lastRow && this.$lines.push(this.$renderLinesFragment(t, i.lastRow + 1, t.lastRow));
              }, this.$renderLinesFragment = function(t, i, s) {
                for (var h = [], r = i, p = this.session.getNextFoldLine(r), l = p ? p.start.row : 1 / 0; l < r && (r = p.end.row + 1, l = (p = this.session.getNextFoldLine(r, p)) ? p.start.row : 1 / 0), !(s < r); ) {
                  var I = this.$lines.createCell(r, t, this.session), f = I.element;
                  this.dom.removeChildren(f), w.setStyle(f.style, "height", this.$lines.computeLineHeight(r, t, this.session) + "px"), w.setStyle(f.style, "top", this.$lines.computeLineTop(r, t, this.session) + "px"), this.$renderLine(f, r, r == l && p), this.$useLineGroups() ? f.className = "ace_line_group" : f.className = "ace_line", h.push(I), r++;
                }
                return h;
              }, this.update = function(t) {
                this.$lines.moveContainer(t);
                for (var i = (this.config = t).firstRow, s = t.lastRow, h = this.$lines; h.getLength(); ) h.pop();
                h.push(this.$renderLinesFragment(t, i, s));
              }, this.$textToken = { text: !0, rparen: !0, lparen: !0 }, this.$renderToken = function(t, i, s, h) {
                for (var r, p = this, l = /(\t)|( +)|([\x00-\x1f\x80-\xa0\xad\u1680\u180E\u2000-\u200f\u2028\u2029\u202F\u205F\uFEFF\uFFF9-\uFFFC]+)|(\u3000)|([\u1100-\u115F\u11A3-\u11A7\u11FA-\u11FF\u2329-\u232A\u2E80-\u2E99\u2E9B-\u2EF3\u2F00-\u2FD5\u2FF0-\u2FFB\u3001-\u303E\u3041-\u3096\u3099-\u30FF\u3105-\u312D\u3131-\u318E\u3190-\u31BA\u31C0-\u31E3\u31F0-\u321E\u3220-\u3247\u3250-\u32FE\u3300-\u4DBF\u4E00-\uA48C\uA490-\uA4C6\uA960-\uA97C\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFAFF\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE66\uFE68-\uFE6B\uFF01-\uFF60\uFFE0-\uFFE6]|[\uD800-\uDBFF][\uDC00-\uDFFF])/g, I = this.dom.createFragment(this.element), f = 0; g = l.exec(h); ) {
                  var n, g, C, y = g[1], c = g[2], v = g[3], k = g[4], S = g[5];
                  !p.showSpaces && c || (n = f != g.index ? h.slice(f, g.index) : "", f = g.index + g[0].length, n && I.appendChild(this.dom.createTextNode(n, this.element)), y ? (g = p.session.getScreenTabSize(i + g.index), I.appendChild(p.$tabStrings[g].cloneNode(!0)), i += g - 1) : c ? p.showSpaces ? ((C = this.dom.createElement("span")).className = "ace_invisible ace_invisible_space", C.textContent = d.stringRepeat(p.SPACE_CHAR, c.length), I.appendChild(C)) : I.appendChild(this.com.createTextNode(c, this.element)) : v ? ((C = this.dom.createElement("span")).className = "ace_invisible ace_invisible_space ace_invalid", C.textContent = d.stringRepeat(p.SPACE_CHAR, v.length), I.appendChild(C)) : k ? (i += 1, (C = this.dom.createElement("span")).style.width = 2 * p.config.characterWidth + "px", C.className = p.showSpaces ? "ace_cjk ace_invisible ace_invisible_space" : "ace_cjk", C.textContent = p.showSpaces ? p.SPACE_CHAR : k, I.appendChild(C)) : S && (i += 1, (C = this.dom.createElement("span")).style.width = 2 * p.config.characterWidth + "px", C.className = "ace_cjk", C.textContent = S, I.appendChild(C)));
                }
                return I.appendChild(this.dom.createTextNode(f ? h.slice(f) : h, this.element)), this.$textToken[s.type] ? t.appendChild(I) : (r = "ace_" + s.type.replace(/\./g, " ace_"), C = this.dom.createElement("span"), s.type == "fold" && (C.style.width = s.value.length * this.config.characterWidth + "px"), C.className = r, C.appendChild(I), t.appendChild(C)), i + h.length;
              }, this.renderIndentGuide = function(t, i, s) {
                var h = i.search(this.$indentGuideRe);
                if (h <= 0 || s <= h) return i;
                if (i[0] == " ") {
                  for (var r = (h -= h % this.tabSize) / this.tabSize, p = 0; p < r; p++) t.appendChild(this.$tabStrings[" "].cloneNode(!0));
                  return i.substr(h);
                }
                if (i[0] != "	") return i;
                for (p = 0; p < h; p++) t.appendChild(this.$tabStrings["	"].cloneNode(!0));
                return i.substr(h);
              }, this.$createLineElement = function(t) {
                var i = this.dom.createElement("div");
                return i.className = "ace_line", i.style.height = this.config.lineHeight + "px", i;
              }, this.$renderWrappedLine = function(t, i, s) {
                var h = 0, r = 0, p = s[0], l = 0, I = this.$createLineElement();
                t.appendChild(I);
                for (var f = 0; f < i.length; f++) {
                  var n = i[f], g = n.value;
                  if (f == 0 && this.displayIndentGuides) {
                    if (h = g.length, !(g = this.renderIndentGuide(I, g, p))) continue;
                    h -= g.length;
                  }
                  if (h + g.length < p) l = this.$renderToken(I, l, n, g), h += g.length;
                  else {
                    for (; h + g.length >= p; ) l = this.$renderToken(I, l, n, g.substring(0, p - h)), g = g.substring(p - h), h = p, I = this.$createLineElement(), t.appendChild(I), I.appendChild(this.dom.createTextNode(d.stringRepeat(" ", s.indent), this.element)), l = 0, p = s[++r] || Number.MAX_VALUE;
                    g.length != 0 && (h += g.length, l = this.$renderToken(I, l, n, g));
                  }
                }
                s[s.length - 1] > this.MAX_LINE_LENGTH && this.$renderOverflowMessage(I, l, null, "", !0);
              }, this.$renderSimpleLine = function(t, i) {
                var s = 0, h = i[0], r = h.value;
                (r = this.displayIndentGuides ? this.renderIndentGuide(t, r) : r) && (s = this.$renderToken(t, s, h, r));
                for (var p = 1; p < i.length; p++) {
                  if (s + (r = (h = i[p]).value).length > this.MAX_LINE_LENGTH) return this.$renderOverflowMessage(t, s, h, r);
                  s = this.$renderToken(t, s, h, r);
                }
              }, this.$renderOverflowMessage = function(t, i, s, h, r) {
                s && this.$renderToken(t, i, s, h.slice(0, this.MAX_LINE_LENGTH - i)), i = this.dom.createElement("span"), i.className = "ace_inline_button ace_keyword ace_toggle_wrap", i.textContent = r ? "<hide>" : "<click to see more...>", t.appendChild(i);
              }, this.$renderLine = function(t, i, s) {
                var h, r, p = t;
                (h = (s = s || s == 0 ? s : this.session.getFoldLine(i)) ? this.$getFoldLineTokens(i, s) : this.session.getTokens(i)).length ? (r = this.session.getRowSplitData(i)) && r.length ? (this.$renderWrappedLine(t, h, r), p = t.lastChild) : (p = t, this.$useLineGroups() && (p = this.$createLineElement(), t.appendChild(p)), this.$renderSimpleLine(p, h)) : this.$useLineGroups() && (p = this.$createLineElement(), t.appendChild(p)), this.showEOL && p && (s && (i = s.end.row), (s = this.dom.createElement("span")).className = "ace_invisible ace_invisible_eol", s.textContent = i == this.session.getLength() - 1 ? this.EOF_CHAR : this.EOL_CHAR, p.appendChild(s));
              }, this.$getFoldLineTokens = function(t, i) {
                var s = this.session, h = [], r = s.getTokens(t);
                return i.walk(function(p, l, I, f, n) {
                  p != null ? h.push({ type: "fold", value: p }) : (r = n ? s.getTokens(l) : r).length && function(g, C, y) {
                    for (var c, v = 0, k = 0; k + g[v].value.length < C; ) if (k += g[v].value.length, ++v == g.length) return;
                    for (k != C && ((c = g[v].value.substring(C - k)).length > y - C && (c = c.substring(0, y - C)), h.push({ type: g[v].type, value: c }), k = C + c.length, v += 1); k < y && v < g.length; ) (c = g[v].value).length + k > y ? h.push({ type: g[v].type, value: c.substring(0, y - k) }) : h.push(g[v]), k += c.length, v += 1;
                  }(r, f, I);
                }, i.end.row, this.session.getLine(i.end.row).length), h;
              }, this.$useLineGroups = function() {
                return this.session.getUseWrapMode();
              }, this.destroy = function() {
              };
            }).call(e.prototype), m.Text = e;
          }), ace.define("ace/layer/cursor", ["require", "exports", "module", "ace/lib/dom"], function(w, m, E) {
            var b = w("../lib/dom"), w = function(d) {
              this.element = b.createElement("div"), this.element.className = "ace_layer ace_cursor-layer", d.appendChild(this.element), this.isVisible = !1, this.isBlinking = !0, this.blinkInterval = 1e3, this.smoothBlinking = !1, this.cursors = [], this.cursor = this.addCursor(), b.addCssClass(this.element, "ace_hidden-cursors"), this.$updateCursors = this.$updateOpacity.bind(this);
            };
            (function() {
              this.$updateOpacity = function(d) {
                for (var a = this.cursors, o = a.length; o--; ) b.setStyle(a[o].style, "opacity", d ? "" : "0");
              }, this.$startCssAnimation = function() {
                for (var d = this.cursors, a = d.length; a--; ) d[a].style.animationDuration = this.blinkInterval + "ms";
                setTimeout((function() {
                  b.addCssClass(this.element, "ace_animate-blinking");
                }).bind(this));
              }, this.$stopCssAnimation = function() {
                b.removeCssClass(this.element, "ace_animate-blinking");
              }, this.$padding = 0, this.setPadding = function(d) {
                this.$padding = d;
              }, this.setSession = function(d) {
                this.session = d;
              }, this.setBlinking = function(d) {
                d != this.isBlinking && (this.isBlinking = d, this.restartTimer());
              }, this.setBlinkInterval = function(d) {
                d != this.blinkInterval && (this.blinkInterval = d, this.restartTimer());
              }, this.setSmoothBlinking = function(d) {
                d != this.smoothBlinking && (this.smoothBlinking = d, b.setCssClass(this.element, "ace_smooth-blinking", d), this.$updateCursors(!0), this.restartTimer());
              }, this.addCursor = function() {
                var d = b.createElement("div");
                return d.className = "ace_cursor", this.element.appendChild(d), this.cursors.push(d), d;
              }, this.removeCursor = function() {
                if (1 < this.cursors.length) {
                  var d = this.cursors.pop();
                  return d.parentNode.removeChild(d), d;
                }
              }, this.hideCursor = function() {
                this.isVisible = !1, b.addCssClass(this.element, "ace_hidden-cursors"), this.restartTimer();
              }, this.showCursor = function() {
                this.isVisible = !0, b.removeCssClass(this.element, "ace_hidden-cursors"), this.restartTimer();
              }, this.restartTimer = function() {
                var d, a = this.$updateCursors;
                clearInterval(this.intervalId), clearTimeout(this.timeoutId), this.$stopCssAnimation(), this.smoothBlinking && b.removeCssClass(this.element, "ace_smooth-blinking"), a(!0), this.isBlinking && this.blinkInterval && this.isVisible ? (this.smoothBlinking && setTimeout((function() {
                  b.addCssClass(this.element, "ace_smooth-blinking");
                }).bind(this)), b.HAS_CSS_ANIMATION ? this.$startCssAnimation() : (d = (function() {
                  this.timeoutId = setTimeout(function() {
                    a(!1);
                  }, 0.6 * this.blinkInterval);
                }).bind(this), this.intervalId = setInterval(function() {
                  a(!0), d();
                }, this.blinkInterval), d())) : this.$stopCssAnimation();
              }, this.getPixelPosition = function(d, a) {
                if (!this.config || !this.session) return { left: 0, top: 0 };
                d = d || this.session.selection.getCursor();
                var o = this.session.documentToScreenPosition(d);
                return { left: this.$padding + (this.session.$bidiHandler.isBidiRow(o.row, d.row) ? this.session.$bidiHandler.getPosLeft(o.column) : o.column * this.config.characterWidth), top: (o.row - (a ? this.config.firstRowScreen : 0)) * this.config.lineHeight };
              }, this.isCursorInView = function(d, a) {
                return 0 <= d.top && d.top < a.maxHeight;
              }, this.update = function(d) {
                this.config = d;
                for (var a = this.session.$selectionMarkers, e = 0, o = 0, e = 0, t = (a = a === void 0 || a.length === 0 ? [{ cursor: null }] : a).length; e < t; e++) {
                  var i, s, h = this.getPixelPosition(a[e].cursor, !0);
                  (h.top > d.height + d.offset || h.top < 0) && 1 < e || (s = (i = this.cursors[o++] || this.addCursor()).style, this.drawCursor ? this.drawCursor(i, h, d, a[e], this.session) : this.isCursorInView(h, d) ? (b.setStyle(s, "display", "block"), b.translate(i, h.left, h.top), b.setStyle(s, "width", Math.round(d.characterWidth) + "px"), b.setStyle(s, "height", d.lineHeight + "px")) : b.setStyle(s, "display", "none"));
                }
                for (; this.cursors.length > o; ) this.removeCursor();
                var r = this.session.getOverwrite();
                this.$setOverwrite(r), this.$pixelPos = h, this.restartTimer();
              }, this.drawCursor = null, this.$setOverwrite = function(d) {
                d != this.overwrite && ((this.overwrite = d) ? b.addCssClass(this.element, "ace_overwrite-cursors") : b.removeCssClass(this.element, "ace_overwrite-cursors"));
              }, this.destroy = function() {
                clearInterval(this.intervalId), clearTimeout(this.timeoutId);
              };
            }).call(w.prototype), m.Cursor = w;
          }), ace.define("ace/scrollbar", ["require", "exports", "module", "ace/lib/oop", "ace/lib/dom", "ace/lib/event", "ace/lib/event_emitter"], function(j, m, E) {
            function b(t) {
              this.element = a.createElement("div"), this.element.className = "ace_scrollbar ace_scrollbar" + this.classSuffix, this.inner = a.createElement("div"), this.inner.className = "ace_scrollbar-inner", this.inner.textContent = " ", this.element.appendChild(this.inner), t.appendChild(this.element), this.setVisible(!1), this.skipEvent = !1, o.addListener(this.element, "scroll", this.onScroll.bind(this)), o.addListener(this.element, "mousedown", o.preventDefault);
            }
            function w(t, i) {
              b.call(this, t), this.scrollTop = 0, this.scrollHeight = 0, i.$scrollbarWidth = this.width = a.scrollbarWidth(t.ownerDocument), this.inner.style.width = this.element.style.width = (this.width || 15) + 5 + "px", this.$minWidth = 0;
            }
            var d = j("./lib/oop"), a = j("./lib/dom"), o = j("./lib/event"), e = j("./lib/event_emitter").EventEmitter;
            (function() {
              d.implement(this, e), this.setVisible = function(t) {
                this.element.style.display = t ? "" : "none", this.isVisible = t, this.coeff = 1;
              };
            }).call(b.prototype), d.inherits(w, b), (function() {
              this.classSuffix = "-v", this.onScroll = function() {
                var t;
                this.skipEvent || (this.scrollTop = this.element.scrollTop, this.coeff != 1 && (t = this.element.clientHeight / this.scrollHeight, this.scrollTop = this.scrollTop * (1 - t) / (this.coeff - t)), this._emit("scroll", { data: this.scrollTop })), this.skipEvent = !1;
              }, this.getWidth = function() {
                return Math.max(this.isVisible ? this.width : 0, this.$minWidth || 0);
              }, this.setHeight = function(t) {
                this.element.style.height = t + "px";
              }, this.setInnerHeight = this.setScrollHeight = function(t) {
                32768 < (this.scrollHeight = t) ? (this.coeff = 32768 / t, t = 32768) : this.coeff != 1 && (this.coeff = 1), this.inner.style.height = t + "px";
              }, this.setScrollTop = function(t) {
                this.scrollTop != t && (this.skipEvent = !0, this.scrollTop = t, this.element.scrollTop = t * this.coeff);
              };
            }).call(w.prototype), j = function(t, i) {
              b.call(this, t), this.scrollLeft = 0, this.height = i.$scrollbarWidth, this.inner.style.height = this.element.style.height = (this.height || 15) + 5 + "px";
            }, d.inherits(j, b), (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(j.prototype), m.ScrollBar = w, m.ScrollBarV = w, m.ScrollBarH = j, m.VScrollBar = w, m.HScrollBar = j;
          }), ace.define("ace/renderloop", ["require", "exports", "module", "ace/lib/event"], function(w, m, E) {
            var b = w("./lib/event"), w = function(d, a) {
              this.onRender = d, this.pending = !1, this.changes = 0, this.$recursionLimit = 2, this.window = a || window;
              var o = this;
              this._flush = function(e) {
                o.pending = !1;
                var t = o.changes;
                t && (b.blockIdle(100), o.changes = 0, o.onRender(t)), o.changes ? o.$recursionLimit-- < 0 || o.schedule() : o.$recursionLimit = 2;
              };
            };
            (function() {
              this.schedule = function(d) {
                this.changes = this.changes | d, this.changes && !this.pending && (b.nextFrame(this._flush), this.pending = !0);
              }, this.clear = function(d) {
                var a = this.changes;
                return this.changes = 0, a;
              };
            }).call(w.prototype), m.RenderLoop = w;
          }), ace.define("ace/layer/font_metrics", ["require", "exports", "module", "ace/lib/oop", "ace/lib/dom", "ace/lib/lang", "ace/lib/event", "ace/lib/useragent", "ace/lib/event_emitter"], function(j, i, E) {
            var b = j("../lib/oop"), w = j("../lib/dom"), d = j("../lib/lang"), a = j("../lib/event"), o = j("../lib/useragent"), e = j("../lib/event_emitter").EventEmitter, t = typeof ResizeObserver == "function", i = i.FontMetrics = function(s) {
              this.el = w.createElement("div"), this.$setMeasureNodeStyles(this.el.style, !0), this.$main = w.createElement("div"), this.$setMeasureNodeStyles(this.$main.style), this.$measureNode = w.createElement("div"), this.$setMeasureNodeStyles(this.$measureNode.style), this.el.appendChild(this.$main), this.el.appendChild(this.$measureNode), s.appendChild(this.el), this.$measureNode.textContent = d.stringRepeat("X", 256), this.$characterSize = { width: 0, height: 0 }, t ? this.$addObserver() : this.checkForSizeChanges();
            };
            (function() {
              b.implement(this, e), this.$characterSize = { width: 0, height: 0 }, this.$setMeasureNodeStyles = function(s, h) {
                s.width = s.height = "auto", s.left = s.top = "0px", s.visibility = "hidden", s.position = "absolute", s.whiteSpace = "pre", o.isIE < 8 ? s["font-family"] = "inherit" : s.font = "inherit", s.overflow = h ? "hidden" : "visible";
              }, this.checkForSizeChanges = function(s) {
                var h;
                !(s = s === void 0 ? this.$measureSizes() : s) || this.$characterSize.width === s.width && this.$characterSize.height === s.height || (this.$measureNode.style.fontWeight = "bold", h = this.$measureSizes(), this.$measureNode.style.fontWeight = "", this.$characterSize = s, this.charSizes = /* @__PURE__ */ Object.create(null), this.allowBoldFonts = h && h.width === s.width && h.height === s.height, this._emit("changeCharacterSize", { data: s }));
              }, this.$addObserver = function() {
                var s = this;
                this.$observer = new window.ResizeObserver(function(h) {
                  s.checkForSizeChanges();
                }), this.$observer.observe(this.$measureNode);
              }, this.$pollSizeChanges = function() {
                if (this.$pollSizeChangesTimer || this.$observer) return this.$pollSizeChangesTimer;
                var s = this;
                return this.$pollSizeChangesTimer = a.onIdle(function h() {
                  s.checkForSizeChanges(), a.onIdle(h, 500);
                }, 500);
              }, this.setPolling = function(s) {
                s ? this.$pollSizeChanges() : this.$pollSizeChangesTimer && (clearInterval(this.$pollSizeChangesTimer), this.$pollSizeChangesTimer = 0);
              }, this.$measureSizes = function(s) {
                return s = { height: (s || this.$measureNode).clientHeight, width: (s || this.$measureNode).clientWidth / 256 }, s.width === 0 || s.height === 0 ? null : s;
              }, this.$measureCharWidth = function(s) {
                return this.$main.textContent = d.stringRepeat(s, 256), this.$main.getBoundingClientRect().width / 256;
              }, this.getCharacterWidth = function(s) {
                var h = this.charSizes[s];
                return h = h === void 0 ? this.charSizes[s] = this.$measureCharWidth(s) / this.$characterSize.width : h;
              }, this.destroy = function() {
                clearInterval(this.$pollSizeChangesTimer), this.$observer && this.$observer.disconnect(), this.el && this.el.parentNode && this.el.parentNode.removeChild(this.el);
              }, this.$getZoom = function s(h) {
                return h && h.parentElement ? (window.getComputedStyle(h).zoom || 1) * s(h.parentElement) : 1;
              }, this.$initTransformMeasureNodes = function() {
                function s(h, r) {
                  return ["div", { style: "position: absolute;top:" + h + "px;left:" + r + "px;" }];
                }
                this.els = w.buildDom([s(0, 0), s(200, 0), s(0, 200), s(200, 200)], this.el);
              }, this.transformCoordinates = function(s, h) {
                function r(v, k, S) {
                  var L = v[1] * k[0] - v[0] * k[1];
                  return [(-k[1] * S[0] + k[0] * S[1]) / L, (+v[1] * S[0] - v[0] * S[1]) / L];
                }
                function p(v, k) {
                  return [v[0] - k[0], v[1] - k[1]];
                }
                function l(v, k) {
                  return [v[0] + k[0], v[1] + k[1]];
                }
                function I(v, k) {
                  return [v * k[0], v * k[1]];
                }
                function f(v) {
                  return v = v.getBoundingClientRect(), [v.left, v.top];
                }
                s = s && I(1 / this.$getZoom(this.el), s), this.els || this.$initTransformMeasureNodes();
                var n = f(this.els[0]), c = f(this.els[1]), g = f(this.els[2]), y = f(this.els[3]), C = r(p(y, c), p(y, g), p(l(c, g), l(y, n))), y = I(1 + C[0], p(c, n)), c = I(1 + C[1], p(g, n));
                return h ? (g = C[0] * h[0] / 200 + C[1] * h[1] / 200 + 1, h = l(I(h[0], y), I(h[1], c)), l(I(1 / g / 200, h), n)) : (n = p(s, n), n = r(p(y, I(C[0], n)), p(c, I(C[1], n)), n), I(200, n));
              };
            }).call(i.prototype);
          }), ace.define("ace/virtual_renderer", ["require", "exports", "module", "ace/lib/oop", "ace/lib/dom", "ace/config", "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", "ace/lib/useragent"], function(j, m, E) {
            var b = j("./lib/oop"), w = j("./lib/dom"), d = j("./config"), a = j("./layer/gutter").Gutter, o = j("./layer/marker").Marker, e = j("./layer/text").Text, t = j("./layer/cursor").Cursor, i = j("./scrollbar").HScrollBar, s = j("./scrollbar").VScrollBar, h = j("./renderloop").RenderLoop, r = j("./layer/font_metrics").FontMetrics, p = j("./lib/event_emitter").EventEmitter, l = `.ace_br1 {border-top-left-radius    : 3px;}.ace_br2 {border-top-right-radius   : 3px;}.ace_br3 {border-top-left-radius    : 3px; border-top-right-radius:    3px;}.ace_br4 {border-bottom-right-radius: 3px;}.ace_br5 {border-top-left-radius    : 3px; border-bottom-right-radius: 3px;}.ace_br6 {border-top-right-radius   : 3px; border-bottom-right-radius: 3px;}.ace_br7 {border-top-left-radius    : 3px; border-top-right-radius:    3px; border-bottom-right-radius: 3px;}.ace_br8 {border-bottom-left-radius : 3px;}.ace_br9 {border-top-left-radius    : 3px; border-bottom-left-radius:  3px;}.ace_br10{border-top-right-radius   : 3px; border-bottom-left-radius:  3px;}.ace_br11{border-top-left-radius    : 3px; border-top-right-radius:    3px; border-bottom-left-radius:  3px;}.ace_br12{border-bottom-right-radius: 3px; border-bottom-left-radius:  3px;}.ace_br13{border-top-left-radius    : 3px; border-bottom-right-radius: 3px; border-bottom-left-radius:  3px;}.ace_br14{border-top-right-radius   : 3px; border-bottom-right-radius: 3px; border-bottom-left-radius:  3px;}.ace_br15{border-top-left-radius    : 3px; border-top-right-radius:    3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;}.ace_editor {position: relative;overflow: hidden;padding: 0;font: 12px/normal 'Monaco', 'Menlo', 'Ubuntu Mono', 'Consolas', 'source-code-pro', monospace;direction: ltr;text-align: left;-webkit-tap-highlight-color: rgba(0, 0, 0, 0);}.ace_scroller {position: absolute;overflow: hidden;top: 0;bottom: 0;background-color: inherit;-ms-user-select: none;-moz-user-select: none;-webkit-user-select: none;user-select: none;cursor: text;}.ace_content {position: absolute;box-sizing: border-box;min-width: 100%;contain: style size layout;font-variant-ligatures: no-common-ligatures;}.ace_dragging .ace_scroller:before{position: absolute;top: 0;left: 0;right: 0;bottom: 0;content: '';background: rgba(250, 250, 250, 0.01);z-index: 1000;}.ace_dragging.ace_dark .ace_scroller:before{background: rgba(0, 0, 0, 0.01);}.ace_selecting, .ace_selecting * {cursor: text !important;}.ace_gutter {position: absolute;overflow : hidden;width: auto;top: 0;bottom: 0;left: 0;cursor: default;z-index: 4;-ms-user-select: none;-moz-user-select: none;-webkit-user-select: none;user-select: none;contain: style size layout;}.ace_gutter-active-line {position: absolute;left: 0;right: 0;}.ace_scroller.ace_scroll-left {box-shadow: 17px 0 16px -16px rgba(0, 0, 0, 0.4) inset;}.ace_gutter-cell {position: absolute;top: 0;left: 0;right: 0;padding-left: 19px;padding-right: 6px;background-repeat: no-repeat;}.ace_gutter-cell.ace_error {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAABOFBMVEX/////////QRswFAb/Ui4wFAYwFAYwFAaWGAfDRymzOSH/PxswFAb/SiUwFAYwFAbUPRvjQiDllog5HhHdRybsTi3/Tyv9Tir+Syj/UC3////XurebMBIwFAb/RSHbPx/gUzfdwL3kzMivKBAwFAbbvbnhPx66NhowFAYwFAaZJg8wFAaxKBDZurf/RB6mMxb/SCMwFAYwFAbxQB3+RB4wFAb/Qhy4Oh+4QifbNRcwFAYwFAYwFAb/QRzdNhgwFAYwFAbav7v/Uy7oaE68MBK5LxLewr/r2NXewLswFAaxJw4wFAbkPRy2PyYwFAaxKhLm1tMwFAazPiQwFAaUGAb/QBrfOx3bvrv/VC/maE4wFAbRPBq6MRO8Qynew8Dp2tjfwb0wFAbx6eju5+by6uns4uH9/f36+vr/GkHjAAAAYnRSTlMAGt+64rnWu/bo8eAA4InH3+DwoN7j4eLi4xP99Nfg4+b+/u9B/eDs1MD1mO7+4PHg2MXa347g7vDizMLN4eG+Pv7i5evs/v79yu7S3/DV7/498Yv24eH+4ufQ3Ozu/v7+y13sRqwAAADLSURBVHjaZc/XDsFgGIBhtDrshlitmk2IrbHFqL2pvXf/+78DPokj7+Fz9qpU/9UXJIlhmPaTaQ6QPaz0mm+5gwkgovcV6GZzd5JtCQwgsxoHOvJO15kleRLAnMgHFIESUEPmawB9ngmelTtipwwfASilxOLyiV5UVUyVAfbG0cCPHig+GBkzAENHS0AstVF6bacZIOzgLmxsHbt2OecNgJC83JERmePUYq8ARGkJx6XtFsdddBQgZE2nPR6CICZhawjA4Fb/chv+399kfR+MMMDGOQAAAABJRU5ErkJggg==");background-repeat: no-repeat;background-position: 2px center;}.ace_gutter-cell.ace_warning {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAmVBMVEX///8AAAD///8AAAAAAABPSzb/5sAAAAB/blH/73z/ulkAAAAAAAD85pkAAAAAAAACAgP/vGz/rkDerGbGrV7/pkQICAf////e0IsAAAD/oED/qTvhrnUAAAD/yHD/njcAAADuv2r/nz//oTj/p064oGf/zHAAAAA9Nir/tFIAAAD/tlTiuWf/tkIAAACynXEAAAAAAAAtIRW7zBpBAAAAM3RSTlMAABR1m7RXO8Ln31Z36zT+neXe5OzooRDfn+TZ4p3h2hTf4t3k3ucyrN1K5+Xaks52Sfs9CXgrAAAAjklEQVR42o3PbQ+CIBQFYEwboPhSYgoYunIqqLn6/z8uYdH8Vmdnu9vz4WwXgN/xTPRD2+sgOcZjsge/whXZgUaYYvT8QnuJaUrjrHUQreGczuEafQCO/SJTufTbroWsPgsllVhq3wJEk2jUSzX3CUEDJC84707djRc5MTAQxoLgupWRwW6UB5fS++NV8AbOZgnsC7BpEAAAAABJRU5ErkJggg==");background-position: 2px center;}.ace_gutter-cell.ace_info {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAAAAAA6mKC9AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAAJ0Uk5TAAB2k804AAAAPklEQVQY02NgIB68QuO3tiLznjAwpKTgNyDbMegwisCHZUETUZV0ZqOquBpXj2rtnpSJT1AEnnRmL2OgGgAAIKkRQap2htgAAAAASUVORK5CYII=");background-position: 2px center;}.ace_dark .ace_gutter-cell.ace_info {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQBAMAAADt3eJSAAAAJFBMVEUAAAChoaGAgIAqKiq+vr6tra1ZWVmUlJSbm5s8PDxubm56enrdgzg3AAAAAXRSTlMAQObYZgAAAClJREFUeNpjYMAPdsMYHegyJZFQBlsUlMFVCWUYKkAZMxZAGdxlDMQBAG+TBP4B6RyJAAAAAElFTkSuQmCC");}.ace_scrollbar {contain: strict;position: absolute;right: 0;bottom: 0;z-index: 6;}.ace_scrollbar-inner {position: absolute;cursor: text;left: 0;top: 0;}.ace_scrollbar-v{overflow-x: hidden;overflow-y: scroll;top: 0;}.ace_scrollbar-h {overflow-x: scroll;overflow-y: hidden;left: 0;}.ace_print-margin {position: absolute;height: 100%;}.ace_text-input {position: absolute;z-index: 0;width: 0.5em;height: 1em;opacity: 0;background: transparent;-moz-appearance: none;appearance: none;border: none;resize: none;outline: none;overflow: hidden;font: inherit;padding: 0 1px;margin: 0 -1px;contain: strict;-ms-user-select: text;-moz-user-select: text;-webkit-user-select: text;user-select: text;white-space: pre!important;}.ace_text-input.ace_composition {background: transparent;color: inherit;z-index: 1000;opacity: 1;}.ace_composition_placeholder { color: transparent }.ace_composition_marker { border-bottom: 1px solid;position: absolute;border-radius: 0;margin-top: 1px;}[ace_nocontext=true] {transform: none!important;filter: none!important;clip-path: none!important;mask : none!important;contain: none!important;perspective: none!important;mix-blend-mode: initial!important;z-index: auto;}.ace_layer {z-index: 1;position: absolute;overflow: hidden;word-wrap: normal;white-space: pre;height: 100%;width: 100%;box-sizing: border-box;pointer-events: none;}.ace_gutter-layer {position: relative;width: auto;text-align: right;pointer-events: auto;height: 1000000px;contain: style size layout;}.ace_text-layer {font: inherit !important;position: absolute;height: 1000000px;width: 1000000px;contain: style size layout;}.ace_text-layer > .ace_line, .ace_text-layer > .ace_line_group {contain: style size layout;position: absolute;top: 0;left: 0;right: 0;}.ace_hidpi .ace_text-layer,.ace_hidpi .ace_gutter-layer,.ace_hidpi .ace_content,.ace_hidpi .ace_gutter {contain: strict;will-change: transform;}.ace_hidpi .ace_text-layer > .ace_line, .ace_hidpi .ace_text-layer > .ace_line_group {contain: strict;}.ace_cjk {display: inline-block;text-align: center;}.ace_cursor-layer {z-index: 4;}.ace_cursor {z-index: 4;position: absolute;box-sizing: border-box;border-left: 2px solid;transform: translatez(0);}.ace_multiselect .ace_cursor {border-left-width: 1px;}.ace_slim-cursors .ace_cursor {border-left-width: 1px;}.ace_overwrite-cursors .ace_cursor {border-left-width: 0;border-bottom: 1px solid;}.ace_hidden-cursors .ace_cursor {opacity: 0.2;}.ace_hasPlaceholder .ace_hidden-cursors .ace_cursor {opacity: 0;}.ace_smooth-blinking .ace_cursor {transition: opacity 0.18s;}.ace_animate-blinking .ace_cursor {animation-duration: 1000ms;animation-timing-function: step-end;animation-name: blink-ace-animate;animation-iteration-count: infinite;}.ace_animate-blinking.ace_smooth-blinking .ace_cursor {animation-duration: 1000ms;animation-timing-function: ease-in-out;animation-name: blink-ace-animate-smooth;}@keyframes blink-ace-animate {from, to { opacity: 1; }60% { opacity: 0; }}@keyframes blink-ace-animate-smooth {from, to { opacity: 1; }45% { opacity: 1; }60% { opacity: 0; }85% { opacity: 0; }}.ace_marker-layer .ace_step, .ace_marker-layer .ace_stack {position: absolute;z-index: 3;}.ace_marker-layer .ace_selection {position: absolute;z-index: 5;}.ace_marker-layer .ace_bracket {position: absolute;z-index: 6;}.ace_marker-layer .ace_error_bracket {position: absolute;border-bottom: 1px solid #DE5555;border-radius: 0;}.ace_marker-layer .ace_active-line {position: absolute;z-index: 2;}.ace_marker-layer .ace_selected-word {position: absolute;z-index: 4;box-sizing: border-box;}.ace_line .ace_fold {box-sizing: border-box;display: inline-block;height: 11px;margin-top: -2px;vertical-align: middle;background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAJCAYAAADU6McMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJpJREFUeNpi/P//PwOlgAXGYGRklAVSokD8GmjwY1wasKljQpYACtpCFeADcHVQfQyMQAwzwAZI3wJKvCLkfKBaMSClBlR7BOQikCFGQEErIH0VqkabiGCAqwUadAzZJRxQr/0gwiXIal8zQQPnNVTgJ1TdawL0T5gBIP1MUJNhBv2HKoQHHjqNrA4WO4zY0glyNKLT2KIfIMAAQsdgGiXvgnYAAAAASUVORK5CYII="),url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAA3CAYAAADNNiA5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACJJREFUeNpi+P//fxgTAwPDBxDxD078RSX+YeEyDFMCIMAAI3INmXiwf2YAAAAASUVORK5CYII=");background-repeat: no-repeat, repeat-x;background-position: center center, top left;color: transparent;border: 1px solid black;border-radius: 2px;cursor: pointer;pointer-events: auto;}.ace_dark .ace_fold {}.ace_fold:hover{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAJCAYAAADU6McMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJpJREFUeNpi/P//PwOlgAXGYGRklAVSokD8GmjwY1wasKljQpYACtpCFeADcHVQfQyMQAwzwAZI3wJKvCLkfKBaMSClBlR7BOQikCFGQEErIH0VqkabiGCAqwUadAzZJRxQr/0gwiXIal8zQQPnNVTgJ1TdawL0T5gBIP1MUJNhBv2HKoQHHjqNrA4WO4zY0glyNKLT2KIfIMAAQsdgGiXvgnYAAAAASUVORK5CYII="),url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAA3CAYAAADNNiA5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACBJREFUeNpi+P//fz4TAwPDZxDxD5X4i5fLMEwJgAADAEPVDbjNw87ZAAAAAElFTkSuQmCC");}.ace_tooltip {background-color: #FFF;background-image: linear-gradient(to bottom, transparent, rgba(0, 0, 0, 0.1));border: 1px solid gray;border-radius: 1px;box-shadow: 0 1px 2px rgba(0, 0, 0, 0.3);color: black;max-width: 100%;padding: 3px 4px;position: fixed;z-index: 999999;box-sizing: border-box;cursor: default;white-space: pre;word-wrap: break-word;line-height: normal;font-style: normal;font-weight: normal;letter-spacing: normal;pointer-events: none;}.ace_folding-enabled > .ace_gutter-cell {padding-right: 13px;}.ace_fold-widget {box-sizing: border-box;margin: 0 -12px 0 1px;display: none;width: 11px;vertical-align: top;background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAANElEQVR42mWKsQ0AMAzC8ixLlrzQjzmBiEjp0A6WwBCSPgKAXoLkqSot7nN3yMwR7pZ32NzpKkVoDBUxKAAAAABJRU5ErkJggg==");background-repeat: no-repeat;background-position: center;border-radius: 3px;border: 1px solid transparent;cursor: pointer;}.ace_folding-enabled .ace_fold-widget {display: inline-block;   }.ace_fold-widget.ace_end {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAANElEQVR42m3HwQkAMAhD0YzsRchFKI7sAikeWkrxwScEB0nh5e7KTPWimZki4tYfVbX+MNl4pyZXejUO1QAAAABJRU5ErkJggg==");}.ace_fold-widget.ace_closed {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAGCAYAAAAG5SQMAAAAOUlEQVR42jXKwQkAMAgDwKwqKD4EwQ26sSOkVWjgIIHAzPiCgaqiqnJHZnKICBERHN194O5b9vbLuAVRL+l0YWnZAAAAAElFTkSuQmCCXA==");}.ace_fold-widget:hover {border: 1px solid rgba(0, 0, 0, 0.3);background-color: rgba(255, 255, 255, 0.2);box-shadow: 0 1px 1px rgba(255, 255, 255, 0.7);}.ace_fold-widget:active {border: 1px solid rgba(0, 0, 0, 0.4);background-color: rgba(0, 0, 0, 0.05);box-shadow: 0 1px 1px rgba(255, 255, 255, 0.8);}.ace_dark .ace_fold-widget {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHklEQVQIW2P4//8/AzoGEQ7oGCaLLAhWiSwB146BAQCSTPYocqT0AAAAAElFTkSuQmCC");}.ace_dark .ace_fold-widget.ace_end {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAH0lEQVQIW2P4//8/AxQ7wNjIAjDMgC4AxjCVKBirIAAF0kz2rlhxpAAAAABJRU5ErkJggg==");}.ace_dark .ace_fold-widget.ace_closed {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAFCAYAAACAcVaiAAAAHElEQVQIW2P4//+/AxAzgDADlOOAznHAKgPWAwARji8UIDTfQQAAAABJRU5ErkJggg==");}.ace_dark .ace_fold-widget:hover {box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);background-color: rgba(255, 255, 255, 0.1);}.ace_dark .ace_fold-widget:active {box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);}.ace_inline_button {border: 1px solid lightgray;display: inline-block;margin: -1px 8px;padding: 0 5px;pointer-events: auto;cursor: pointer;}.ace_inline_button:hover {border-color: gray;background: rgba(200,200,200,0.2);display: inline-block;pointer-events: auto;}.ace_fold-widget.ace_invalid {background-color: #FFB4B4;border-color: #DE5555;}.ace_fade-fold-widgets .ace_fold-widget {transition: opacity 0.4s ease 0.05s;opacity: 0;}.ace_fade-fold-widgets:hover .ace_fold-widget {transition: opacity 0.05s ease 0.05s;opacity:1;}.ace_underline {text-decoration: underline;}.ace_bold {font-weight: bold;}.ace_nobold .ace_bold {font-weight: normal;}.ace_italic {font-style: italic;}.ace_error-marker {background-color: rgba(255, 0, 0,0.2);position: absolute;z-index: 9;}.ace_highlight-marker {background-color: rgba(255, 255, 0,0.2);position: absolute;z-index: 8;}.ace_mobile-menu {position: absolute;line-height: 1.5;border-radius: 4px;-ms-user-select: none;-moz-user-select: none;-webkit-user-select: none;user-select: none;background: white;box-shadow: 1px 3px 2px grey;border: 1px solid #dcdcdc;color: black;}.ace_dark > .ace_mobile-menu {background: #333;color: #ccc;box-shadow: 1px 3px 2px grey;border: 1px solid #444;}.ace_mobile-button {padding: 2px;cursor: pointer;overflow: hidden;}.ace_mobile-button:hover {background-color: #eee;opacity:1;}.ace_mobile-button:active {background-color: #ddd;}.ace_placeholder {font-family: arial;transform: scale(0.9);transform-origin: left;white-space: pre;opacity: 0.7;margin: 0 10px;}`, I = j("./lib/useragent"), f = I.isIE;
            w.importCssString(l, "ace_editor.css"), j = function(n, g) {
              var C = this;
              this.container = n || w.createElement("div"), w.addCssClass(this.container, "ace_editor"), w.HI_DPI && w.addCssClass(this.container, "ace_hidpi"), this.setTheme(g), this.$gutter = w.createElement("div"), this.$gutter.className = "ace_gutter", this.container.appendChild(this.$gutter), this.$gutter.setAttribute("aria-hidden", !0), this.scroller = w.createElement("div"), this.scroller.className = "ace_scroller", this.container.appendChild(this.scroller), this.content = w.createElement("div"), this.content.className = "ace_content", this.scroller.appendChild(this.content), this.$gutterLayer = new a(this.$gutter), this.$gutterLayer.on("changeGutterWidth", this.onGutterResize.bind(this)), this.$markerBack = new o(this.content), g = this.$textLayer = new e(this.content), this.canvas = g.element, this.$markerFront = new o(this.content), this.$cursorLayer = new t(this.content), this.$horizScroll = !1, this.$vScroll = !1, this.scrollBar = this.scrollBarV = new s(this.container, this), this.scrollBarH = new i(this.container, this), this.scrollBarV.on("scroll", function(y) {
                C.$scrollAnimation || C.session.setScrollTop(y.data - C.scrollMargin.top);
              }), this.scrollBarH.on("scroll", function(y) {
                C.$scrollAnimation || C.session.setScrollLeft(y.data - C.scrollMargin.left);
              }), this.scrollTop = 0, this.scrollLeft = 0, this.cursorPos = { row: 0, column: 0 }, this.$fontMetrics = new r(this.container), this.$textLayer.$setFontMetrics(this.$fontMetrics), this.$textLayer.on("changeCharacterSize", function(y) {
                C.updateCharacterSize(), C.onResize(!0, C.gutterWidth, C.$size.width, C.$size.height), C._signal("changeCharacterSize", y);
              }), 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.margin = { left: 0, right: 0, top: 0, bottom: 0, v: 0, h: 0 }, this.$keepTextAreaAtCursor = !I.isIOS, this.$loop = new h(this.$renderChanges.bind(this), this.container.ownerDocument.defaultView), this.$loop.schedule(this.CHANGE_FULL), this.updateCharacterSize(), this.setPadding(4), d.resetOptions(this), d._signal("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, b.implement(this, p), 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(), w.setStyle(this.scroller.style, "line-height", this.lineHeight + "px");
              }, this.setSession = function(n) {
                this.session && this.session.doc.off("changeNewLineMode", this.onChangeNewLineMode), (this.session = n) && this.scrollMargin.top && n.getScrollTop() <= 0 && n.setScrollTop(-this.scrollMargin.top), this.$cursorLayer.setSession(n), this.$markerBack.setSession(n), this.$markerFront.setSession(n), this.$gutterLayer.setSession(n), this.$textLayer.setSession(n), n && (this.$loop.schedule(this.CHANGE_FULL), this.session.$setFontMetrics(this.$fontMetrics), this.scrollBarH.scrollLeft = this.scrollBarV.scrollTop = null, this.onChangeNewLineMode = this.onChangeNewLineMode.bind(this), this.onChangeNewLineMode(), this.session.doc.on("changeNewLineMode", this.onChangeNewLineMode));
              }, this.updateLines = function(n, g, C) {
                if (g === void 0 && (g = 1 / 0), this.$changedLines ? (this.$changedLines.firstRow > n && (this.$changedLines.firstRow = n), this.$changedLines.lastRow < g && (this.$changedLines.lastRow = g)) : this.$changedLines = { firstRow: n, lastRow: g }, this.$changedLines.lastRow < this.layerConfig.firstRow) {
                  if (!C) return;
                  this.$changedLines.lastRow = this.layerConfig.lastRow;
                }
                this.$changedLines.firstRow > this.layerConfig.lastRow || this.$loop.schedule(this.CHANGE_LINES);
              }, this.onChangeNewLineMode = function() {
                this.$loop.schedule(this.CHANGE_TEXT), this.$textLayer.$updateEolChar(), this.session.$bidiHandler.setEolChar(this.$textLayer.EOL_CHAR);
              }, this.onChangeTabSize = function() {
                this.$loop.schedule(this.CHANGE_TEXT | this.CHANGE_MARKER), this.$textLayer.onChangeTabSize();
              }, this.updateText = function() {
                this.$loop.schedule(this.CHANGE_TEXT);
              }, this.updateFull = function(n) {
                n ? 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(n, g, C, y) {
                if (!(2 < this.resizing)) {
                  0 < this.resizing ? this.resizing++ : this.resizing = n ? 1 : 0;
                  var c = this.container;
                  if (y = y || c.clientHeight || c.scrollHeight, C = C || c.clientWidth || c.scrollWidth, g = this.$updateCachedSize(n, g, C, y), !this.$size.scrollerHeight || !C && !y) return this.resizing = 0;
                  n && (this.$gutterLayer.$padding = null), n ? this.$renderChanges(g | this.$changes, !0) : this.$loop.schedule(g | this.$changes), this.resizing && (this.resizing = 0), this.scrollBarV.scrollLeft = this.scrollBarV.scrollTop = null;
                }
              }, this.$updateCachedSize = function(n, g, C, y) {
                y -= this.$extraHeight || 0;
                var c = 0, v = this.$size, k = { width: v.width, height: v.height, scrollerHeight: v.scrollerHeight, scrollerWidth: v.scrollerWidth };
                return y && (n || v.height != y) && (v.height = y, c |= this.CHANGE_SIZE, v.scrollerHeight = v.height, this.$horizScroll && (v.scrollerHeight -= this.scrollBarH.getHeight()), this.scrollBarV.element.style.bottom = this.scrollBarH.getHeight() + "px", c |= this.CHANGE_SCROLL), C && (n || v.width != C) && (c |= this.CHANGE_SIZE, v.width = C, g == null && (g = this.$showGutter ? this.$gutter.offsetWidth : 0), this.gutterWidth = g, w.setStyle(this.scrollBarH.element.style, "left", g + "px"), w.setStyle(this.scroller.style, "left", g + this.margin.left + "px"), v.scrollerWidth = Math.max(0, C - g - this.scrollBarV.getWidth() - this.margin.h), w.setStyle(this.$gutter.style, "left", this.margin.left + "px"), g = this.scrollBarV.getWidth() + "px", w.setStyle(this.scrollBarH.element.style, "right", g), w.setStyle(this.scroller.style, "right", g), w.setStyle(this.scroller.style, "bottom", this.scrollBarH.getHeight()), (this.session && this.session.getUseWrapMode() && this.adjustWrapLimit() || n) && (c |= this.CHANGE_FULL)), v.$dirty = !C || !y, c && this._signal("resize", k), c;
              }, this.onGutterResize = function(n) {
                n = this.$showGutter ? n : 0, n != this.gutterWidth && (this.$changes |= this.$updateCachedSize(!0, n, this.$size.width, this.$size.height)), this.session.getUseWrapMode() && this.adjustWrapLimit() || this.$size.$dirty ? this.$loop.schedule(this.CHANGE_FULL) : this.$computeLayerConfig();
              }, this.adjustWrapLimit = function() {
                var n = this.$size.scrollerWidth - 2 * this.$padding, n = Math.floor(n / this.characterWidth);
                return this.session.adjustWrapLimit(n, this.$showPrintMargin && this.$printMarginColumn);
              }, this.setAnimatedScroll = function(n) {
                this.setOption("animatedScroll", n);
              }, this.getAnimatedScroll = function() {
                return this.$animatedScroll;
              }, this.setShowInvisibles = function(n) {
                this.setOption("showInvisibles", n), this.session.$bidiHandler.setShowInvisibles(n);
              }, this.getShowInvisibles = function() {
                return this.getOption("showInvisibles");
              }, this.getDisplayIndentGuides = function() {
                return this.getOption("displayIndentGuides");
              }, this.setDisplayIndentGuides = function(n) {
                this.setOption("displayIndentGuides", n);
              }, this.setShowPrintMargin = function(n) {
                this.setOption("showPrintMargin", n);
              }, this.getShowPrintMargin = function() {
                return this.getOption("showPrintMargin");
              }, this.setPrintMarginColumn = function(n) {
                this.setOption("printMarginColumn", n);
              }, this.getPrintMarginColumn = function() {
                return this.getOption("printMarginColumn");
              }, this.getShowGutter = function() {
                return this.getOption("showGutter");
              }, this.setShowGutter = function(n) {
                return this.setOption("showGutter", n);
              }, this.getFadeFoldWidgets = function() {
                return this.getOption("fadeFoldWidgets");
              }, this.setFadeFoldWidgets = function(n) {
                this.setOption("fadeFoldWidgets", n);
              }, this.setHighlightGutterLine = function(n) {
                this.setOption("highlightGutterLine", n);
              }, this.getHighlightGutterLine = function() {
                return this.getOption("highlightGutterLine");
              }, this.$updatePrintMargin = function() {
                var n;
                (this.$showPrintMargin || this.$printMarginEl) && (this.$printMarginEl || ((n = w.createElement("div")).className = "ace_layer ace_print-margin-layer", this.$printMarginEl = w.createElement("div"), this.$printMarginEl.className = "ace_print-margin", n.appendChild(this.$printMarginEl), this.content.insertBefore(n, this.content.firstChild)), (n = this.$printMarginEl.style).left = Math.round(this.characterWidth * this.$printMarginColumn + this.$padding) + "px", n.visibility = this.$showPrintMargin ? "visible" : "hidden", this.session && this.session.$wrap == -1 && this.adjustWrapLimit());
              }, this.getContainerElement = function() {
                return this.container;
              }, this.getMouseEventTarget = function() {
                return this.scroller;
              }, this.getTextAreaContainer = function() {
                return this.container;
              }, this.$moveTextAreaToCursor = function() {
                var n, g, C, y, c, v, k;
                this.$isMousePressed || (n = this.textarea.style, v = this.$composition, this.$keepTextAreaAtCursor || v ? (k = this.$cursorLayer.$pixelPos) && (v && v.markerRange && (k = this.$cursorLayer.getPixelPosition(v.markerRange.start, !0)), c = this.layerConfig, g = k.top, C = k.left, g -= c.offset, y = v && v.useTextareaForIME ? this.lineHeight : f ? 0 : 1, g < 0 || g > c.height - y ? w.translate(this.textarea, 0, 0) : (k = 1, c = this.$size.height - y, v ? v.useTextareaForIME ? (v = this.textarea.value, k = this.characterWidth * this.session.$getStringScreenWidth(v)[0]) : g += this.lineHeight + 2 : g += this.lineHeight, (C -= this.scrollLeft) > this.$size.scrollerWidth - k && (C = this.$size.scrollerWidth - k), C += this.gutterWidth + this.margin.left, w.setStyle(n, "height", y + "px"), w.setStyle(n, "width", k + "px"), w.translate(this.textarea, Math.min(C, this.$size.scrollerWidth - k), Math.min(g, c)))) : w.translate(this.textarea, -100, 0));
              }, this.getFirstVisibleRow = function() {
                return this.layerConfig.firstRow;
              }, this.getFirstFullyVisibleRow = function() {
                return this.layerConfig.firstRow + (this.layerConfig.offset === 0 ? 0 : 1);
              }, this.getLastFullyVisibleRow = function() {
                var n = this.layerConfig, g = n.lastRow;
                return this.session.documentToScreenRow(g, 0) * n.lineHeight - this.session.getScrollTop() > n.height - n.lineHeight ? g - 1 : g;
              }, this.getLastVisibleRow = function() {
                return this.layerConfig.lastRow;
              }, this.$padding = null, this.setPadding = function(n) {
                this.$padding = n, this.$textLayer.setPadding(n), this.$cursorLayer.setPadding(n), this.$markerFront.setPadding(n), this.$markerBack.setPadding(n), this.$loop.schedule(this.CHANGE_FULL), this.$updatePrintMargin();
              }, this.setScrollMargin = function(n, g, C, y) {
                var c = this.scrollMargin;
                c.top = 0 | n, c.bottom = 0 | g, c.right = 0 | y, c.left = 0 | C, c.v = c.top + c.bottom, c.h = c.left + c.right, c.top && this.scrollTop <= 0 && this.session && this.session.setScrollTop(-c.top), this.updateFull();
              }, this.setMargin = function(n, g, C, y) {
                var c = this.margin;
                c.top = 0 | n, c.bottom = 0 | g, c.right = 0 | y, c.left = 0 | C, c.v = c.top + c.bottom, c.h = c.left + c.right, this.$updateCachedSize(!0, this.gutterWidth, this.$size.width, this.$size.height), this.updateFull();
              }, this.getHScrollBarAlwaysVisible = function() {
                return this.$hScrollBarAlwaysVisible;
              }, this.setHScrollBarAlwaysVisible = function(n) {
                this.setOption("hScrollBarAlwaysVisible", n);
              }, this.getVScrollBarAlwaysVisible = function() {
                return this.$vScrollBarAlwaysVisible;
              }, this.setVScrollBarAlwaysVisible = function(n) {
                this.setOption("vScrollBarAlwaysVisible", n);
              }, this.$updateScrollBarV = function() {
                var n = this.layerConfig.maxHeight, g = this.$size.scrollerHeight;
                !this.$maxLines && this.$scrollPastEnd && (n -= (g - this.lineHeight) * this.$scrollPastEnd, this.scrollTop > n - g && (n = this.scrollTop + g, this.scrollBarV.scrollTop = null)), this.scrollBarV.setScrollHeight(n + 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(n, g) {
                if (this.$changes && (n |= this.$changes, this.$changes = 0), this.session && this.container.offsetWidth && !this.$frozen && (n || g)) {
                  if (this.$size.$dirty) return this.$changes |= n, this.onResize(!0);
                  this.lineHeight || this.$textLayer.checkForSizeChanges(), this._signal("beforeRender", n), this.session && this.session.$bidiHandler && this.session.$bidiHandler.updateCharacterWidths(this.$fontMetrics);
                  var C, y = this.layerConfig;
                  return (n & this.CHANGE_FULL || n & this.CHANGE_SIZE || n & this.CHANGE_TEXT || n & this.CHANGE_LINES || n & this.CHANGE_SCROLL || n & this.CHANGE_H_SCROLL) && (n |= this.$computeLayerConfig() | this.$loop.clear(), y.firstRow == this.layerConfig.firstRow || y.firstRowScreen != this.layerConfig.firstRowScreen || 0 < (C = this.scrollTop + (y.firstRow - this.layerConfig.firstRow) * this.lineHeight) && (this.scrollTop = C, n |= this.CHANGE_SCROLL, n |= this.$computeLayerConfig() | this.$loop.clear()), y = this.layerConfig, this.$updateScrollBarV(), n & this.CHANGE_H_SCROLL && this.$updateScrollBarH(), w.translate(this.content, -this.scrollLeft, -y.offset), g = y.width + 2 * this.$padding + "px", C = y.minHeight + "px", w.setStyle(this.content.style, "width", g), w.setStyle(this.content.style, "height", C)), n & this.CHANGE_H_SCROLL && (w.translate(this.content, -this.scrollLeft, -y.offset), this.scroller.className = this.scrollLeft <= 0 ? "ace_scroller" : "ace_scroller ace_scroll-left"), n & this.CHANGE_FULL ? (this.$changedLines = null, this.$textLayer.update(y), this.$showGutter && this.$gutterLayer.update(y), this.$markerBack.update(y), this.$markerFront.update(y), this.$cursorLayer.update(y), this.$moveTextAreaToCursor(), void this._signal("afterRender", n)) : (n & this.CHANGE_SCROLL ? (this.$changedLines = null, n & this.CHANGE_TEXT || n & this.CHANGE_LINES ? this.$textLayer.update(y) : this.$textLayer.scrollLines(y), this.$showGutter && (n & this.CHANGE_GUTTER || n & this.CHANGE_LINES ? this.$gutterLayer.update(y) : this.$gutterLayer.scrollLines(y)), this.$markerBack.update(y), this.$markerFront.update(y), this.$cursorLayer.update(y), this.$moveTextAreaToCursor()) : (n & this.CHANGE_TEXT ? (this.$changedLines = null, this.$textLayer.update(y), this.$showGutter && this.$gutterLayer.update(y)) : n & this.CHANGE_LINES ? (this.$updateLines() || n & this.CHANGE_GUTTER && this.$showGutter) && this.$gutterLayer.update(y) : n & this.CHANGE_TEXT || n & this.CHANGE_GUTTER ? this.$showGutter && this.$gutterLayer.update(y) : n & this.CHANGE_CURSOR && this.$highlightGutterLine && this.$gutterLayer.updateLineHighlight(y), n & this.CHANGE_CURSOR && (this.$cursorLayer.update(y), this.$moveTextAreaToCursor()), n & (this.CHANGE_MARKER | this.CHANGE_MARKER_FRONT) && this.$markerFront.update(y), n & (this.CHANGE_MARKER | this.CHANGE_MARKER_BACK) && this.$markerBack.update(y)), void this._signal("afterRender", n));
                }
                this.$changes |= n;
              }, this.$autosize = function() {
                var n = this.session.getScreenLength() * this.lineHeight, g = this.$maxLines * this.lineHeight, C = Math.min(g, Math.max((this.$minLines || 1) * this.lineHeight, n)) + this.scrollMargin.v + (this.$extraHeight || 0);
                this.$horizScroll && (C += this.scrollBarH.getHeight()), n = !((C = this.$maxPixelHeight && C > this.$maxPixelHeight ? this.$maxPixelHeight : C) <= 2 * this.lineHeight) && g < n, C == this.desiredHeight && this.$size.height == this.desiredHeight && n == this.$vScroll || (n != this.$vScroll && (this.$vScroll = n, this.scrollBarV.setVisible(n)), n = this.container.clientWidth, this.container.style.height = C + "px", this.$updateCachedSize(!0, this.$gutterWidth, n, C), this.desiredHeight = C, this._signal("autosize"));
              }, this.$computeLayerConfig = function() {
                var n = this.session, g = this.$size, L = g.height <= 2 * this.lineHeight, C = this.session.getScreenLength() * this.lineHeight, y = this.$getLongestLine(), S = !L && (this.$hScrollBarAlwaysVisible || g.scrollerWidth - y - 2 * this.$padding < 0), c = this.$horizScroll !== S;
                c && (this.$horizScroll = S, this.scrollBarH.setVisible(S));
                var _ = this.$vScroll;
                this.$maxLines && 1 < this.lineHeight && this.$autosize();
                var v = g.scrollerHeight + this.lineHeight, O = !this.$maxLines && this.$scrollPastEnd ? (g.scrollerHeight - this.lineHeight) * this.$scrollPastEnd : 0;
                C += O;
                var W = this.scrollMargin;
                this.session.setScrollTop(Math.max(-W.top, Math.min(this.scrollTop, C - g.scrollerHeight + W.bottom))), this.session.setScrollLeft(Math.max(-W.left, Math.min(this.scrollLeft, y + 2 * this.$padding - g.scrollerWidth + W.right)));
                var z = !L && (this.$vScrollBarAlwaysVisible || g.scrollerHeight - C + O < 0 || this.scrollTop > W.top), k = _ !== z;
                k && (this.$vScroll = z, this.scrollBarV.setVisible(z));
                var S = this.scrollTop % this.lineHeight, L = Math.ceil(v / this.lineHeight) - 1, W = (O = Math.max(0, Math.round((this.scrollTop - S) / this.lineHeight))) + L, _ = this.lineHeight, O = n.screenToDocumentRow(O, 0), z = n.getFoldLine(O);
                return z && (O = z.start.row), L = n.documentToScreenRow(O, 0), z = n.getRowLength(O) * _, W = Math.min(n.screenToDocumentRow(W, 0), n.getLength() - 1), v = g.scrollerHeight + n.getRowLength(W) * _ + z, S = this.scrollTop - L * _, z = 0, this.layerConfig.width == y && !c || (z = this.CHANGE_H_SCROLL), (c || k) && (z |= this.$updateCachedSize(!0, this.gutterWidth, g.width, g.height), this._signal("scrollbarVisibilityChanged"), k && (y = this.$getLongestLine())), this.layerConfig = { width: y, padding: this.$padding, firstRow: O, firstRowScreen: L, lastRow: W, lineHeight: _, characterWidth: this.characterWidth, minHeight: v, maxHeight: C, offset: S, gutterOffset: _ ? Math.max(0, Math.ceil((S + g.height - g.scrollerHeight) / _)) : 0, height: this.$size.scrollerHeight }, this.session.$bidiHandler && this.session.$bidiHandler.setContentWidth(y - this.$padding), z;
              }, this.$updateLines = function() {
                if (this.$changedLines) {
                  var n = this.$changedLines.firstRow, g = this.$changedLines.lastRow;
                  this.$changedLines = null;
                  var C = this.layerConfig;
                  if (!(n > C.lastRow + 1 || g < C.firstRow)) return g === 1 / 0 ? (this.$showGutter && this.$gutterLayer.update(C), void this.$textLayer.update(C)) : (this.$textLayer.updateLines(C, n, g), !0);
                }
              }, this.$getLongestLine = function() {
                var n = this.session.getScreenWidth();
                return this.showInvisibles && !this.session.$useWrapMode && (n += 1), this.$textLayer && n > this.$textLayer.MAX_LINE_LENGTH && (n = this.$textLayer.MAX_LINE_LENGTH + 30), Math.max(this.$size.scrollerWidth - 2 * this.$padding, Math.round(n * this.characterWidth));
              }, this.updateFrontMarkers = function() {
                this.$markerFront.setMarkers(this.session.getMarkers(!0)), this.$loop.schedule(this.CHANGE_MARKER_FRONT);
              }, this.updateBackMarkers = function() {
                this.$markerBack.setMarkers(this.session.getMarkers()), this.$loop.schedule(this.CHANGE_MARKER_BACK);
              }, this.addGutterDecoration = function(n, g) {
                this.$gutterLayer.addGutterDecoration(n, g);
              }, this.removeGutterDecoration = function(n, g) {
                this.$gutterLayer.removeGutterDecoration(n, g);
              }, this.updateBreakpoints = function(n) {
                this.$loop.schedule(this.CHANGE_GUTTER);
              }, this.setAnnotations = function(n) {
                this.$gutterLayer.setAnnotations(n), this.$loop.schedule(this.CHANGE_GUTTER);
              }, this.updateCursor = function() {
                this.$loop.schedule(this.CHANGE_CURSOR);
              }, this.hideCursor = function() {
                this.$cursorLayer.hideCursor();
              }, this.showCursor = function() {
                this.$cursorLayer.showCursor();
              }, this.scrollSelectionIntoView = function(n, g, C) {
                this.scrollCursorIntoView(n, C), this.scrollCursorIntoView(g, C);
              }, this.scrollCursorIntoView = function(n, g, C) {
                var y, c, v;
                this.$size.scrollerHeight !== 0 && (y = (v = this.$cursorLayer.getPixelPosition(n)).left, c = v.top, n = C && C.top || 0, v = C && C.bottom || 0, c < (C = this.$scrollAnimation ? this.session.getScrollTop() : this.scrollTop) + n ? (g && C + n > c + this.lineHeight && (c -= g * this.$size.scrollerHeight), c === 0 && (c = -this.scrollMargin.top), this.session.setScrollTop(c)) : C + this.$size.scrollerHeight - v < c + this.lineHeight && (g && C + this.$size.scrollerHeight - v < c - this.lineHeight && (c += g * this.$size.scrollerHeight), this.session.setScrollTop(c + this.lineHeight + v - this.$size.scrollerHeight)), y < (v = this.scrollLeft) ? (y < this.$padding + 2 * this.layerConfig.characterWidth && (y = -this.scrollMargin.left), this.session.setScrollLeft(y)) : v + this.$size.scrollerWidth < y + this.characterWidth ? this.session.setScrollLeft(Math.round(y + this.characterWidth - this.$size.scrollerWidth)) : v <= this.$padding && y - v < this.characterWidth && this.session.setScrollLeft(0));
              }, this.getScrollTop = function() {
                return this.session.getScrollTop();
              }, this.getScrollLeft = function() {
                return this.session.getScrollLeft();
              }, this.getScrollTopRow = function() {
                return this.scrollTop / this.lineHeight;
              }, this.getScrollBottomRow = function() {
                return Math.max(0, Math.floor((this.scrollTop + this.$size.scrollerHeight) / this.lineHeight) - 1);
              }, this.scrollToRow = function(n) {
                this.session.setScrollTop(n * this.lineHeight);
              }, this.alignCursor = function(y, c) {
                var C = this.$cursorLayer.getPixelPosition(y = typeof y == "number" ? { row: y, column: 0 } : y), y = this.$size.scrollerHeight - this.lineHeight, c = C.top - y * (c || 0);
                return this.session.setScrollTop(c), c;
              }, this.STEPS = 8, this.$calcSteps = function(n, g) {
                for (var C, y, k = 0, c = this.STEPS, v = [], k = 0; k < c; ++k) v.push((C = k / this.STEPS, (g - (y = n)) * (Math.pow(C - 1, 3) + 1) + y));
                return v;
              }, this.scrollToLine = function(n, g, C, y) {
                n = this.$cursorLayer.getPixelPosition({ row: n, column: 0 }).top, g && (n -= this.$size.scrollerHeight / 2), g = this.scrollTop, this.session.setScrollTop(n), C !== !1 && this.animateScrolling(g, y);
              }, this.animateScrolling = function(n, g) {
                var C = this.scrollTop;
                if (this.$animatedScroll) {
                  var y = this;
                  if (n != C) {
                    if (this.$scrollAnimation) {
                      var c = this.$scrollAnimation.steps;
                      if (c.length && (n = c[0]) == C) return;
                    }
                    var v = y.$calcSteps(n, C);
                    this.$scrollAnimation = { from: n, to: C, steps: v }, clearInterval(this.$timer), y.session.setScrollTop(v.shift()), y.session.$scrollTop = C, this.$timer = setInterval(function() {
                      return y.session ? void (v.length ? (y.session.setScrollTop(v.shift()), y.session.$scrollTop = C) : C != null ? (y.session.$scrollTop = -1, y.session.setScrollTop(C), C = null) : (y.$timer = clearInterval(y.$timer), y.$scrollAnimation = null, g && g())) : clearInterval(y.$timer);
                    }, 10);
                  }
                }
              }, this.scrollToY = function(n) {
                this.scrollTop !== n && (this.$loop.schedule(this.CHANGE_SCROLL), this.scrollTop = n);
              }, this.scrollToX = function(n) {
                this.scrollLeft !== n && (this.scrollLeft = n), this.$loop.schedule(this.CHANGE_H_SCROLL);
              }, this.scrollTo = function(n, g) {
                this.session.setScrollTop(g), this.session.setScrollLeft(g);
              }, this.scrollBy = function(n, g) {
                g && this.session.setScrollTop(this.session.getScrollTop() + g), n && this.session.setScrollLeft(this.session.getScrollLeft() + n);
              }, this.isScrollableBy = function(n, g) {
                return g < 0 && this.session.getScrollTop() >= 1 - this.scrollMargin.top || 0 < g && this.session.getScrollTop() + this.$size.scrollerHeight - this.layerConfig.maxHeight < -1 + this.scrollMargin.bottom || n < 0 && this.session.getScrollLeft() >= 1 - this.scrollMargin.left || 0 < n && this.session.getScrollLeft() + this.$size.scrollerWidth - this.layerConfig.width < -1 + this.scrollMargin.right || void 0;
              }, this.pixelToScreenCoordinates = function(y, c) {
                this.$hasCssTransforms ? (v = { top: 0, left: 0 }, y = (C = this.$fontMetrics.transformCoordinates([y, c]))[1] - this.gutterWidth - this.margin.left, c = C[0]) : v = this.scroller.getBoundingClientRect();
                var C = y + this.scrollLeft - v.left - this.$padding, y = C / this.characterWidth, c = Math.floor((c + this.scrollTop - v.top) / this.lineHeight), v = this.$blockCursor ? Math.floor(y) : Math.round(y);
                return { row: c, column: v, side: 0 < y - v ? 1 : -1, offsetX: C };
              }, this.screenToTextCoordinates = function(y, g) {
                this.$hasCssTransforms ? (c = { top: 0, left: 0 }, y = (C = this.$fontMetrics.transformCoordinates([y, g]))[1] - this.gutterWidth - this.margin.left, g = C[0]) : c = this.scroller.getBoundingClientRect();
                var C = y + this.scrollLeft - c.left - this.$padding, y = C / this.characterWidth, y = this.$blockCursor ? Math.floor(y) : Math.round(y), c = Math.floor((g + this.scrollTop - c.top) / this.lineHeight);
                return this.session.screenToDocumentPosition(c, Math.max(y, 0), C);
              }, this.textToScreenCoordinates = function(y, c) {
                var C = this.scroller.getBoundingClientRect(), c = this.session.documentToScreenPosition(y, c), y = this.$padding + (this.session.$bidiHandler.isBidiRow(c.row, y) ? this.session.$bidiHandler.getPosLeft(c.column) : Math.round(c.column * this.characterWidth)), c = c.row * this.lineHeight;
                return { pageX: C.left + y - this.scrollLeft, pageY: C.top + c - this.scrollTop };
              }, this.visualizeFocus = function() {
                w.addCssClass(this.container, "ace_focus");
              }, this.visualizeBlur = function() {
                w.removeCssClass(this.container, "ace_focus");
              }, this.showComposition = function(n) {
                (this.$composition = n).cssText || (n.cssText = this.textarea.style.cssText), n.useTextareaForIME == null && (n.useTextareaForIME = this.$useTextareaForIME), this.$useTextareaForIME ? (w.addCssClass(this.textarea, "ace_composition"), this.textarea.style.cssText = "", this.$moveTextAreaToCursor(), this.$cursorLayer.element.style.display = "none") : n.markerId = this.session.addMarker(n.markerRange, "ace_composition_marker", "text");
              }, this.setCompositionText = function(n) {
                var g = this.session.selection.cursor;
                this.addToken(n, "composition_placeholder", g.row, g.column), this.$moveTextAreaToCursor();
              }, this.hideComposition = function() {
                var n;
                this.$composition && (this.$composition.markerId && this.session.removeMarker(this.$composition.markerId), w.removeCssClass(this.textarea, "ace_composition"), this.textarea.style.cssText = this.$composition.cssText, n = this.session.selection.cursor, this.removeExtraToken(n.row, n.column), this.$composition = null, this.$cursorLayer.element.style.display = "");
              }, this.addToken = function(n, g, C, y) {
                var c = this.session;
                c.bgTokenizer.lines[C] = null;
                var v = { type: g, value: n }, k = c.getTokens(C);
                if (y == null) k.push(v);
                else for (var S = 0, L = 0; L < k.length; L++) {
                  var W = k[L];
                  if (y <= (S += W.value.length)) {
                    var O = W.value.length - (S - y), _ = W.value.slice(0, O), O = W.value.slice(O);
                    k.splice(L, 1, { type: W.type, value: _ }, v, { type: W.type, value: O });
                    break;
                  }
                }
                this.updateLines(C, C);
              }, this.removeExtraToken = function(n, g) {
                this.updateLines(n, n);
              }, this.setTheme = function(n, g) {
                function C(v) {
                  if (c.$themeId != n) return g && g();
                  if (!v || !v.cssClass) throw new Error("couldn't load module " + n + " or it didn't call define");
                  v.$id && (c.$themeId = v.$id), w.importCssString(v.cssText, v.cssClass, c.container), c.theme && w.removeCssClass(c.container, c.theme.cssClass);
                  var k = "padding" in v ? v.padding : "padding" in (c.theme || {}) ? 4 : c.$padding;
                  c.$padding && k != c.$padding && c.setPadding(k), c.$theme = v.cssClass, c.theme = v, w.addCssClass(c.container, v.cssClass), w.setCssClass(c.container, "ace_dark", v.isDark), c.$size && (c.$size.width = 0, c.$updateSizeAsync()), c._dispatchEvent("themeLoaded", { theme: v }), g && g();
                }
                var y, c = this;
                this.$themeId = n, c._dispatchEvent("themeChange", { theme: n }), n && typeof n != "string" ? C(n) : (y = n || this.$options.theme.initialValue, d.loadModule(["theme", y], C));
              }, this.getTheme = function() {
                return this.$themeId;
              }, this.setStyle = function(n, g) {
                w.setCssClass(this.container, n, g !== !1);
              }, this.unsetStyle = function(n) {
                w.removeCssClass(this.container, n);
              }, this.setCursorStyle = function(n) {
                w.setStyle(this.scroller.style, "cursor", n);
              }, this.setMouseCursor = function(n) {
                w.setStyle(this.scroller.style, "cursor", n);
              }, this.attachToShadowRoot = function() {
                w.importCssString(l, "ace_editor.css", this.container);
              }, this.destroy = function() {
                this.freeze(), this.$fontMetrics.destroy(), this.$cursorLayer.destroy(), this.removeAllListeners(), this.container.textContent = "";
              };
            }).call(j.prototype), d.defineOptions(j.prototype, "renderer", { animatedScroll: { initialValue: !1 }, showInvisibles: { set: function(n) {
              this.$textLayer.setShowInvisibles(n) && this.$loop.schedule(this.CHANGE_TEXT);
            }, initialValue: !1 }, showPrintMargin: { set: function() {
              this.$updatePrintMargin();
            }, initialValue: !0 }, printMarginColumn: { set: function() {
              this.$updatePrintMargin();
            }, initialValue: 80 }, printMargin: { set: function(n) {
              typeof n == "number" && (this.$printMarginColumn = n), this.$showPrintMargin = !!n, this.$updatePrintMargin();
            }, get: function() {
              return this.$showPrintMargin && this.$printMarginColumn;
            } }, showGutter: { set: function(n) {
              this.$gutter.style.display = n ? "block" : "none", this.$loop.schedule(this.CHANGE_FULL), this.onGutterResize();
            }, initialValue: !0 }, fadeFoldWidgets: { set: function(n) {
              w.setCssClass(this.$gutter, "ace_fade-fold-widgets", n);
            }, initialValue: !1 }, showFoldWidgets: { set: function(n) {
              this.$gutterLayer.setShowFoldWidgets(n), this.$loop.schedule(this.CHANGE_GUTTER);
            }, initialValue: !0 }, displayIndentGuides: { set: function(n) {
              this.$textLayer.setDisplayIndentGuides(n) && this.$loop.schedule(this.CHANGE_TEXT);
            }, initialValue: !0 }, highlightGutterLine: { set: function(n) {
              this.$gutterLayer.setHighlightGutterLine(n), this.$loop.schedule(this.CHANGE_GUTTER);
            }, initialValue: !0 }, hScrollBarAlwaysVisible: { set: function(n) {
              this.$hScrollBarAlwaysVisible && this.$horizScroll || this.$loop.schedule(this.CHANGE_SCROLL);
            }, initialValue: !1 }, vScrollBarAlwaysVisible: { set: function(n) {
              this.$vScrollBarAlwaysVisible && this.$vScroll || this.$loop.schedule(this.CHANGE_SCROLL);
            }, initialValue: !1 }, fontSize: { set: function(n) {
              typeof n == "number" && (n += "px"), this.container.style.fontSize = n, this.updateFontSize();
            }, initialValue: 12 }, fontFamily: { set: function(n) {
              this.container.style.fontFamily = n, this.updateFontSize();
            } }, maxLines: { set: function(n) {
              this.updateFull();
            } }, minLines: { set: function(n) {
              this.$minLines < 562949953421311 || (this.$minLines = 0), this.updateFull();
            } }, maxPixelHeight: { set: function(n) {
              this.updateFull();
            }, initialValue: 0 }, scrollPastEnd: { set: function(n) {
              this.$scrollPastEnd != (n = +n || 0) && (this.$scrollPastEnd = n, this.$loop.schedule(this.CHANGE_SCROLL));
            }, initialValue: 0, handlesSet: !0 }, fixedWidthGutter: { set: function(n) {
              this.$gutterLayer.$fixedWidth = !!n, this.$loop.schedule(this.CHANGE_GUTTER);
            } }, theme: { set: function(n) {
              this.setTheme(n);
            }, get: function() {
              return this.$themeId || this.theme;
            }, initialValue: "./theme/textmate", handlesSet: !0 }, hasCssTransforms: {}, useTextareaForIME: { initialValue: !I.isMobile && !I.isIE } }), m.VirtualRenderer = j;
          }), ace.define("ace/worker/worker_client", ["require", "exports", "module", "ace/lib/oop", "ace/lib/net", "ace/lib/event_emitter", "ace/config"], function(j, m, E) {
            function b(t) {
              if (typeof Worker > "u") return { postMessage: function() {
              }, terminate: function() {
              } };
              if (e.get("loadWorkerFromBlob")) {
                var i = function(s) {
                  var h = "importScripts('" + a.qualifyURL(s) + "');";
                  try {
                    return new Blob([h], { type: "application/javascript" });
                  } catch {
                    return s = new (window.BlobBuilder || window.WebKitBlobBuilder || window.MozBlobBuilder)(), s.append(h), s.getBlob("application/javascript");
                  }
                }(t), i = (window.URL || window.webkitURL).createObjectURL(i);
                return new Worker(i);
              }
              return new Worker(t);
            }
            function w(t) {
              t.postMessage || (t = this.$createWorkerFromOldConfig.apply(this, arguments)), this.$worker = t, this.$sendDeltaQueue = this.$sendDeltaQueue.bind(this), this.changeListener = this.changeListener.bind(this), this.onMessage = this.onMessage.bind(this), this.callbackId = 1, this.callbacks = {}, this.$worker.onmessage = this.onMessage;
            }
            var d = j("../lib/oop"), a = j("../lib/net"), o = j("../lib/event_emitter").EventEmitter, e = j("../config");
            (function() {
              d.implement(this, o), this.$createWorkerFromOldConfig = function(t, i, s, h, r) {
                var p, l;
                return j.nameToUrl && !j.toUrl && (j.toUrl = j.nameToUrl), e.get("packaged") || !j.toUrl ? h = h || e.moduleUrl(i, "worker") : (p = this.$normalizePath, h = h || p(j.toUrl("ace/worker/worker.js", null, "_")), l = {}, t.forEach(function(I) {
                  l[I] = p(j.toUrl(I, null, "_").replace(/(\.js)?(\?.*)?$/, ""));
                })), this.$worker = b(h), r && this.send("importScripts", r), this.$worker.postMessage({ init: !0, tlns: l, module: i, classname: s }), this.$worker;
              }, this.onMessage = function(t) {
                var i = t.data;
                switch (i.type) {
                  case "event":
                    this._signal(i.name, { data: i.data });
                    break;
                  case "call":
                    var s = this.callbacks[i.id];
                    s && (s(i.data), delete this.callbacks[i.id]);
                    break;
                  case "error":
                    this.reportError(i.data);
                    break;
                  case "log":
                    window.console && console.log && console.log.apply(console, i.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, i) {
                this.$worker.postMessage({ command: t, args: i });
              }, this.call = function(t, i, s) {
                var h;
                s && (h = this.callbackId++, this.callbacks[h] = s, i.push(h)), this.send(t, i);
              }, this.emit = function(t, i) {
                try {
                  i.data && i.data.err && (i.data.err = { message: i.data.err.message, stack: i.data.err.stack, code: i.data.err.code }), this.$worker.postMessage({ event: t, data: { data: i.data } });
                } catch (s) {
                  console.error(s.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)), t.action == "insert" ? 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, 50 < t.length && t.length > this.$doc.getLength() >> 1 ? this.call("setValue", [this.$doc.getValue()]) : this.emit("change", { data: t }));
              };
            }).call(w.prototype), m.UIWorkerClient = function(t, i, s) {
              var h = null, r = !1, p = Object.create(o), l = [], I = new w({ messageBuffer: l, terminate: function() {
              }, postMessage: function(n) {
                l.push(n), h && (r ? setTimeout(f) : f());
              } });
              I.setEmitSync = function(n) {
                r = n;
              };
              var f = function() {
                var n = l.shift();
                n.command ? h[n.command].apply(h, n.args) : n.event && p._signal(n.event, n.data);
              };
              return p.postMessage = function(n) {
                I.onMessage({ data: n });
              }, p.callback = function(n, g) {
                this.postMessage({ type: "call", id: g, data: n });
              }, p.emit = function(n, g) {
                this.postMessage({ type: "event", name: n, data: g });
              }, e.loadModule(["worker", i], function(n) {
                for (h = new n[s](p); l.length; ) f();
              }), I;
            }, m.WorkerClient = w, m.createWorker = b;
          }), ace.define("ace/placeholder", ["require", "exports", "module", "ace/range", "ace/lib/event_emitter", "ace/lib/oop"], function(a, m, E) {
            var b = a("./range").Range, w = a("./lib/event_emitter").EventEmitter, d = a("./lib/oop"), a = function(o, e, t, i, s, h) {
              var r = this;
              this.length = e, this.session = o, this.doc = o.getDocument(), this.mainClass = s, this.othersClass = h, this.$onUpdate = this.onUpdate.bind(this), this.doc.on("change", this.$onUpdate), this.$others = i, this.$onCursorChange = function() {
                setTimeout(function() {
                  r.onCursorChange();
                });
              }, this.$pos = t, t = o.getUndoManager().$undoStack || o.getUndoManager().$undostack || { length: -1 }, this.$undoStackDepth = t.length, this.setup(), o.selection.on("changeCursor", this.$onCursorChange);
            };
            (function() {
              d.implement(this, w), this.setup = function() {
                var o = this, e = this.doc, t = this.session;
                this.selectionBefore = t.selection.toJSON(), t.selection.inMultiSelectMode && t.selection.toSingleRange(), this.pos = e.createAnchor(this.$pos.row, this.$pos.column);
                var i = this.pos;
                i.$insertRight = !0, i.detach(), i.markerId = t.addMarker(new b(i.row, i.column, i.row, i.column + this.length), this.mainClass, null, !1), this.others = [], this.$others.forEach(function(s) {
                  s = e.createAnchor(s.row, s.column), s.$insertRight = !0, s.detach(), o.others.push(s);
                }), t.setUndoSelect(!1);
              }, this.showOtherMarkers = function() {
                var o, e;
                this.othersActive || (o = this.session, (e = this).othersActive = !0, this.others.forEach(function(t) {
                  t.markerId = o.addMarker(new b(t.row, t.column, t.row, t.column + e.length), e.othersClass, null, !1);
                }));
              }, this.hideOtherMarkers = function() {
                if (this.othersActive) {
                  this.othersActive = !1;
                  for (var o = 0; o < this.others.length; o++) this.session.removeMarker(this.others[o].markerId);
                }
              }, this.onUpdate = function(o) {
                if (this.$updating) return this.updateAnchors(o);
                var e = o;
                if (e.start.row === e.end.row && e.start.row === this.pos.row) {
                  this.$updating = !0;
                  var t = o.action === "insert" ? e.end.column - e.start.column : e.start.column - e.end.column, i = e.start.column >= this.pos.column && e.start.column <= this.pos.column + this.length + 1, s = e.start.column - this.pos.column;
                  if (this.updateAnchors(o), i && (this.length += t), i && !this.session.$fromUndo) {
                    if (o.action === "insert") for (var h = this.others.length - 1; 0 <= h; h--) {
                      var r = { row: (p = this.others[h]).row, column: p.column + s };
                      this.doc.insertMergedLines(r, o.lines);
                    }
                    else if (o.action === "remove") for (h = this.others.length - 1; 0 <= h; h--) {
                      var p, r = { row: (p = this.others[h]).row, column: p.column + s };
                      this.doc.remove(new b(r.row, r.column, r.row, r.column - t));
                    }
                  }
                  this.$updating = !1, this.updateMarkers();
                }
              }, this.updateAnchors = function(o) {
                this.pos.onChange(o);
                for (var e = this.others.length; e--; ) this.others[e].onChange(o);
                this.updateMarkers();
              }, this.updateMarkers = function() {
                if (!this.$updating) {
                  var o = this, e = this.session, t = function(s, h) {
                    e.removeMarker(s.markerId), s.markerId = e.addMarker(new b(s.row, s.column, s.row, s.column + o.length), h, null, !1);
                  };
                  t(this.pos, this.mainClass);
                  for (var i = this.others.length; i--; ) t(this.others[i], this.othersClass);
                }
              }, this.onCursorChange = function(o) {
                var e;
                !this.$updating && this.session && ((e = this.session.selection.getCursor()).row === this.pos.row && e.column >= this.pos.column && e.column <= this.pos.column + this.length ? (this.showOtherMarkers(), this._emit("cursorEnter", o)) : (this.hideOtherMarkers(), this._emit("cursorLeave", o)));
              }, this.detach = function() {
                this.session.removeMarker(this.pos && this.pos.markerId), this.hideOtherMarkers(), this.doc.off("change", this.$onUpdate), this.session.selection.off("changeCursor", this.$onCursorChange), this.session.setUndoSelect(!0), this.session = null;
              }, this.cancel = function() {
                if (this.$undoStackDepth !== -1) {
                  for (var o = this.session.getUndoManager(), e = (o.$undoStack || o.$undostack).length - this.$undoStackDepth, t = 0; t < e; t++) o.undo(this.session, !0);
                  this.selectionBefore && this.session.selection.fromJSON(this.selectionBefore);
                }
              };
            }).call(a.prototype), m.PlaceHolder = a;
          }), ace.define("ace/mouse/multi_select_handler", ["require", "exports", "module", "ace/lib/event", "ace/lib/useragent"], function(j, m, E) {
            function b(a, o) {
              return a.row == o.row && a.column == o.column;
            }
            var w = j("../lib/event"), d = j("../lib/useragent");
            m.onMouseDown = function(a) {
              function o() {
                var H = n.renderer.pixelToScreenCoordinates(v, k), Y = S.screenToDocumentPosition(H.row, H.column, H.offsetX);
                b(W, H) && b(Y, g.lead) || (W = H, n.selection.moveToPosition(Y), n.renderer.scrollCursorIntoView(), n.removeSelectionMarkers(_), _ = g.rectangularRangeBlock(W, L), n.$mouseHandler.$clickSelection && _.length == 1 && _[0].isEmpty() && (_[0] = n.$mouseHandler.$clickSelection.clone()), _.forEach(n.addSelectionMarker, n), n.updateSelectionMarkers());
              }
              var e = a.domEvent, t = e.altKey, i = e.shiftKey, s = e.ctrlKey, h = a.getAccelKey(), r = a.getButton();
              if (s && d.isMac && (r = e.button), a.editor.inMultiSelectMode && r == 2) a.editor.textInput.onContextMenu(a.domEvent);
              else if (s || t || h) {
                if (r === 0) {
                  var p, l, I, f, n = a.editor, g = n.selection, C = n.inMultiSelectMode, y = a.getDocumentPosition(), c = g.getCursor(), c = a.inSelection() || g.isEmpty() && b(y, c), v = a.x, k = a.y, S = n.session, L = n.renderer.pixelToScreenCoordinates(v, k), W = L;
                  if (n.$mouseHandler.$enableJumpToDef) s && t || h && t ? p = i ? "block" : "add" : t && n.$blockSelectEnabled && (p = "block");
                  else if (h && !t) {
                    if (p = "add", !C && i) return;
                  } else t && n.$blockSelectEnabled && (p = "block");
                  if (p && d.isMac && e.ctrlKey && n.$mouseHandler.cancelContextMenu(), p == "add") !C && c || (C || (l = g.toOrientedRange(), n.addSelectionMarker(l)), I = g.rangeList.rangeAtPoint(y), n.inVirtualSelectionMode = !0, i && (I = null, l = g.ranges[0] || l, n.removeSelectionMarker(l)), n.once("mouseup", function() {
                    var H = g.toOrientedRange();
                    I && H.isEmpty() && b(I.cursor, H.cursor) ? g.substractPoint(H.cursor) : (i ? g.substractPoint(l.cursor) : l && (n.removeSelectionMarker(l), g.addRange(l)), g.addRange(H)), n.inVirtualSelectionMode = !1;
                  }));
                  else if (p == "block") {
                    a.stop(), n.inVirtualSelectionMode = !0;
                    var _ = [];
                    C && !h ? g.toSingleRange() : !C && h && (f = g.toOrientedRange(), n.addSelectionMarker(f)), i ? L = S.documentToScreenPosition(g.lead) : g.moveToPosition(y);
                    var W = { row: -1, column: -1 }, O = o;
                    w.capture(n.container, function(Y) {
                      v = Y.clientX, k = Y.clientY;
                    }, function(Y) {
                      o(), clearInterval(z), n.removeSelectionMarkers(_), _.length || (_ = [g.toOrientedRange()]), f && (n.removeSelectionMarker(f), g.toSingleRange(f));
                      for (var ie = 0; ie < _.length; ie++) g.addRange(_[ie]);
                      n.inVirtualSelectionMode = !1, n.$mouseHandler.$clickSelection = null;
                    });
                    var z = setInterval(function() {
                      O();
                    }, 20);
                    return a.preventDefault();
                  }
                }
              } else r === 0 && a.editor.inMultiSelectMode && a.editor.exitMultiSelectMode();
            };
          }), ace.define("ace/commands/multi_select_commands", ["require", "exports", "module", "ace/keyboard/hash_handler"], function(j, m, E) {
            m.defaultCommands = [{ name: "addCursorAbove", description: "Add cursor above", exec: function(b) {
              b.selectMoreLines(-1);
            }, bindKey: { win: "Ctrl-Alt-Up", mac: "Ctrl-Alt-Up" }, scrollIntoView: "cursor", readOnly: !0 }, { name: "addCursorBelow", description: "Add cursor below", exec: function(b) {
              b.selectMoreLines(1);
            }, bindKey: { win: "Ctrl-Alt-Down", mac: "Ctrl-Alt-Down" }, scrollIntoView: "cursor", readOnly: !0 }, { name: "addCursorAboveSkipCurrent", description: "Add cursor above (skip current)", exec: function(b) {
              b.selectMoreLines(-1, !0);
            }, bindKey: { win: "Ctrl-Alt-Shift-Up", mac: "Ctrl-Alt-Shift-Up" }, scrollIntoView: "cursor", readOnly: !0 }, { name: "addCursorBelowSkipCurrent", description: "Add cursor below (skip current)", exec: function(b) {
              b.selectMoreLines(1, !0);
            }, bindKey: { win: "Ctrl-Alt-Shift-Down", mac: "Ctrl-Alt-Shift-Down" }, scrollIntoView: "cursor", readOnly: !0 }, { name: "selectMoreBefore", description: "Select more before", exec: function(b) {
              b.selectMore(-1);
            }, bindKey: { win: "Ctrl-Alt-Left", mac: "Ctrl-Alt-Left" }, scrollIntoView: "cursor", readOnly: !0 }, { name: "selectMoreAfter", description: "Select more after", exec: function(b) {
              b.selectMore(1);
            }, bindKey: { win: "Ctrl-Alt-Right", mac: "Ctrl-Alt-Right" }, scrollIntoView: "cursor", readOnly: !0 }, { name: "selectNextBefore", description: "Select next before", exec: function(b) {
              b.selectMore(-1, !0);
            }, bindKey: { win: "Ctrl-Alt-Shift-Left", mac: "Ctrl-Alt-Shift-Left" }, scrollIntoView: "cursor", readOnly: !0 }, { name: "selectNextAfter", description: "Select next after", exec: function(b) {
              b.selectMore(1, !0);
            }, bindKey: { win: "Ctrl-Alt-Shift-Right", mac: "Ctrl-Alt-Shift-Right" }, scrollIntoView: "cursor", readOnly: !0 }, { name: "toggleSplitSelectionIntoLines", description: "Split into lines", exec: function(b) {
              1 < b.multiSelect.rangeCount ? b.multiSelect.joinSelections() : b.multiSelect.splitIntoLines();
            }, bindKey: { win: "Ctrl-Alt-L", mac: "Ctrl-Alt-L" }, readOnly: !0 }, { name: "splitSelectionIntoLines", description: "Split into lines", exec: function(b) {
              b.multiSelect.splitIntoLines();
            }, readOnly: !0 }, { name: "alignCursors", description: "Align cursors", exec: function(b) {
              b.alignCursors();
            }, bindKey: { win: "Ctrl-Alt-A", mac: "Ctrl-Alt-A" }, scrollIntoView: "cursor" }, { name: "findAll", description: "Find all", exec: function(b) {
              b.findAll();
            }, bindKey: { win: "Ctrl-Alt-K", mac: "Ctrl-Alt-G" }, scrollIntoView: "cursor", readOnly: !0 }], m.multiSelectCommands = [{ name: "singleSelection", description: "Single selection", bindKey: "esc", exec: function(b) {
              b.exitMultiSelectMode();
            }, scrollIntoView: "cursor", readOnly: !0, isAvailable: function(b) {
              return b && b.inMultiSelectMode;
            } }], j = j("../keyboard/hash_handler").HashHandler, m.keyboardHandler = new j(m.multiSelectCommands);
          }), ace.define("ace/multi_select", ["require", "exports", "module", "ace/range_list", "ace/range", "ace/selection", "ace/mouse/multi_select_handler", "ace/lib/event", "ace/lib/lang", "ace/commands/multi_select_commands", "ace/search", "ace/edit_session", "ace/editor", "ace/config"], function(j, m, E) {
            function b(r) {
              function p(f) {
                I && (l.renderer.setMouseCursor(""), I = !1);
              }
              var l, I;
              r.$multiselectOnSessionChange || (r.$onAddRange = r.$onAddRange.bind(r), r.$onRemoveRange = r.$onRemoveRange.bind(r), r.$onMultiSelect = r.$onMultiSelect.bind(r), r.$onSingleSelect = r.$onSingleSelect.bind(r), r.$multiselectOnSessionChange = m.onSessionChange.bind(r), r.$checkMultiselectChange = r.$checkMultiselectChange.bind(r), r.$multiselectOnSessionChange(r), r.on("changeSession", r.$multiselectOnSessionChange), r.on("mousedown", o), r.commands.addCommands(i.defaultCommands), (l = r).textInput && (r = l.textInput.getElement(), I = !1, e.addListener(r, "keydown", function(f) {
                f = f.keyCode == 18 && !(f.ctrlKey || f.shiftKey || f.metaKey), l.$blockSelectEnabled && f ? I || (l.renderer.setMouseCursor("crosshair"), I = !0) : I && p();
              }, l), e.addListener(r, "keyup", p, l), e.addListener(r, "blur", p, l)));
            }
            var w = j("./range_list").RangeList, d = j("./range").Range, a = j("./selection").Selection, o = j("./mouse/multi_select_handler").onMouseDown, e = j("./lib/event"), t = j("./lib/lang"), i = j("./commands/multi_select_commands");
            m.commands = i.defaultCommands.concat(i.multiSelectCommands);
            var s = new (j("./search")).Search(), h = j("./edit_session").EditSession;
            (function() {
              this.getSelectionMarkers = function() {
                return this.$selectionMarkers;
              };
            }).call(h.prototype), (function() {
              this.ranges = null, this.rangeList = null, this.addRange = function(r, p) {
                if (r) {
                  if (!this.inMultiSelectMode && this.rangeCount === 0) {
                    var l = this.toOrientedRange();
                    if (this.rangeList.add(l), this.rangeList.add(r), this.rangeList.ranges.length != 2) return this.rangeList.removeAll(), p || this.fromOrientedRange(r);
                    this.rangeList.removeAll(), this.rangeList.add(l), this.$onAddRange(l);
                  }
                  return r.cursor || (r.cursor = r.end), l = this.rangeList.add(r), this.$onAddRange(r), l.length && this.$onRemoveRange(l), 1 < this.rangeCount && !this.inMultiSelectMode && (this._signal("multiSelect"), this.inMultiSelectMode = !0, this.session.$undoSelect = !1, this.rangeList.attach(this.session)), p || this.fromOrientedRange(r);
                }
              }, this.toSingleRange = function(r) {
                r = r || this.ranges[0];
                var p = this.rangeList.removeAll();
                p.length && this.$onRemoveRange(p), r && this.fromOrientedRange(r);
              }, this.substractPoint = function(r) {
                if (r = this.rangeList.substractPoint(r)) return this.$onRemoveRange(r), r[0];
              }, this.mergeOverlappingRanges = function() {
                var r = this.rangeList.merge();
                r.length && this.$onRemoveRange(r);
              }, this.$onAddRange = function(r) {
                this.rangeCount = this.rangeList.ranges.length, this.ranges.unshift(r), this._signal("addRange", { range: r });
              }, this.$onRemoveRange = function(r) {
                var p;
                this.rangeCount = this.rangeList.ranges.length, this.rangeCount == 1 && this.inMultiSelectMode && (p = this.rangeList.ranges.pop(), r.push(p), this.rangeCount = 0);
                for (var l = r.length; l--; ) {
                  var I = this.ranges.indexOf(r[l]);
                  this.ranges.splice(I, 1);
                }
                this._signal("removeRange", { ranges: r }), this.rangeCount === 0 && this.inMultiSelectMode && (this.inMultiSelectMode = !1, this._signal("singleSelect"), this.session.$undoSelect = !0, this.rangeList.detach(this.session)), (p = p || this.ranges[0]) && !p.isEqual(this.getRange()) && this.fromOrientedRange(p);
              }, this.$initRangeList = function() {
                this.rangeList || (this.rangeList = new w(), this.ranges = [], this.rangeCount = 0);
              }, this.getAllRanges = function() {
                return this.rangeCount ? this.rangeList.ranges.concat() : [this.getRange()];
              }, this.splitIntoLines = function() {
                for (var r = this.ranges.length ? this.ranges : [this.getRange()], p = [], l = 0; l < r.length; l++) {
                  var I = r[l], f = I.start.row, n = I.end.row;
                  if (f === n) p.push(I.clone());
                  else {
                    for (p.push(new d(f, I.start.column, f, this.session.getLine(f).length)); ++f < n; ) p.push(this.getLineRange(f, !0));
                    p.push(new d(n, 0, n, I.end.column));
                  }
                  l != 0 || this.isBackwards() || (p = p.reverse());
                }
                for (this.toSingleRange(), l = p.length; l--; ) this.addRange(p[l]);
              }, this.joinSelections = function() {
                var p = this.rangeList.ranges, r = p[p.length - 1], p = d.fromPoints(p[0].start, r.end);
                this.toSingleRange(), this.setSelectionRange(p, r.cursor == r.start);
              }, this.toggleBlockSelection = function() {
                var r, p;
                1 < this.rangeCount ? (p = (r = this.rangeList.ranges)[r.length - 1], r = d.fromPoints(r[0].start, p.end), this.toSingleRange(), this.setSelectionRange(r, p.cursor == p.start)) : (r = this.session.documentToScreenPosition(this.cursor), p = this.session.documentToScreenPosition(this.anchor), this.rectangularRangeBlock(r, p).forEach(this.addRange, this));
              }, this.rectangularRangeBlock = function(r, p, l) {
                var I, f, n, g, C = [], y = r.column < p.column;
                g = y ? (I = r.column, f = p.column, n = r.offsetX, p.offsetX) : (I = p.column, f = r.column, n = p.offsetX, r.offsetX);
                var c, v, k, S = r.row < p.row;
                v = S ? (c = r.row, p.row) : (c = p.row, r.row), I < 0 && (I = 0), (c = c < 0 ? 0 : c) == v && (l = !0);
                for (var L, W, _ = c; _ <= v; _++) {
                  var O = d.fromPoints(this.session.screenToDocumentPosition(_, I, n), this.session.screenToDocumentPosition(_, f, g));
                  if (O.isEmpty()) {
                    if (k && (L = O.end, W = k, L.row == W.row && L.column == W.column)) break;
                    k = O.end;
                  }
                  O.cursor = y ? O.start : O.end, C.push(O);
                }
                if (S && C.reverse(), !l) {
                  for (var z = C.length - 1; C[z].isEmpty() && 0 < z; ) z--;
                  if (0 < z) for (var H = 0; C[H].isEmpty(); ) H++;
                  for (var Y = z; H <= Y; Y--) C[Y].isEmpty() && C.splice(Y, 1);
                }
                return C;
              };
            }).call(a.prototype), h = j("./editor").Editor, (function() {
              this.updateSelectionMarkers = function() {
                this.renderer.updateCursor(), this.renderer.updateBackMarkers();
              }, this.addSelectionMarker = function(r) {
                r.cursor || (r.cursor = r.end);
                var p = this.getSelectionStyle();
                return r.marker = this.session.addMarker(r, "ace_selection", p), this.session.$selectionMarkers.push(r), this.session.selectionMarkerCount = this.session.$selectionMarkers.length, r;
              }, this.removeSelectionMarker = function(r) {
                r.marker && (this.session.removeMarker(r.marker), (r = this.session.$selectionMarkers.indexOf(r)) != -1 && this.session.$selectionMarkers.splice(r, 1), this.session.selectionMarkerCount = this.session.$selectionMarkers.length);
              }, this.removeSelectionMarkers = function(r) {
                for (var p = this.session.$selectionMarkers, l = r.length; l--; ) {
                  var I = r[l];
                  I.marker && (this.session.removeMarker(I.marker), (I = p.indexOf(I)) != -1 && p.splice(I, 1));
                }
                this.session.selectionMarkerCount = p.length;
              }, this.$onAddRange = function(r) {
                this.addSelectionMarker(r.range), this.renderer.updateCursor(), this.renderer.updateBackMarkers();
              }, this.$onRemoveRange = function(r) {
                this.removeSelectionMarkers(r.ranges), this.renderer.updateCursor(), this.renderer.updateBackMarkers();
              }, this.$onMultiSelect = function(r) {
                this.inMultiSelectMode || (this.inMultiSelectMode = !0, this.setStyle("ace_multiselect"), this.keyBinding.addKeyboardHandler(i.keyboardHandler), this.commands.setDefaultHandler("exec", this.$onMultiSelectExec), this.renderer.updateCursor(), this.renderer.updateBackMarkers());
              }, this.$onSingleSelect = function(r) {
                this.session.multiSelect.inVirtualMode || (this.inMultiSelectMode = !1, this.unsetStyle("ace_multiselect"), this.keyBinding.removeKeyboardHandler(i.keyboardHandler), this.commands.removeDefaultHandler("exec", this.$onMultiSelectExec), this.renderer.updateCursor(), this.renderer.updateBackMarkers(), this._emit("changeSelection"));
              }, this.$onMultiSelectExec = function(r) {
                var p, l = r.command, I = r.editor;
                if (I.multiSelect) return l.multiSelectAction ? p = l.multiSelectAction == "forEach" ? I.forEachSelection(l, r.args) : l.multiSelectAction == "forEachLine" ? I.forEachSelection(l, r.args, !0) : l.multiSelectAction == "single" ? (I.exitMultiSelectMode(), l.exec(I, r.args || {})) : l.multiSelectAction(I, r.args || {}) : (p = l.exec(I, r.args || {}), I.multiSelect.addRange(I.multiSelect.toOrientedRange()), I.multiSelect.mergeOverlappingRanges()), p;
              }, this.forEachSelection = function(r, p, l) {
                if (!this.inVirtualSelectionMode) {
                  var I, f = l && l.keepOrder, n = l == 1 || l && l.$byLines, g = this.session, C = this.selection, l = C.rangeList, y = (f ? C : l).ranges;
                  if (!y.length) return r.exec ? r.exec(this, p || {}) : r(this, p || {});
                  l = C._eventRegistry, C._eventRegistry = {};
                  var c = new a(g);
                  this.inVirtualSelectionMode = !0;
                  for (var v = y.length; v--; ) {
                    if (n) for (; 0 < v && y[v].start.row == y[v - 1].end.row; ) v--;
                    c.fromOrientedRange(y[v]), c.index = v, this.selection = g.selection = c;
                    var k = r.exec ? r.exec(this, p || {}) : r(this, p || {});
                    I || k === void 0 || (I = k), c.toOrientedRange(y[v]);
                  }
                  return c.detach(), this.selection = g.selection = C, this.inVirtualSelectionMode = !1, C._eventRegistry = l, C.mergeOverlappingRanges(), C.ranges[0] && C.fromOrientedRange(C.ranges[0]), C = this.renderer.$scrollAnimation, this.onCursorChange(), this.onSelectionChange(), C && C.from == C.to && this.renderer.animateScrolling(C.from), I;
                }
              }, this.exitMultiSelectMode = function() {
                this.inMultiSelectMode && !this.inVirtualSelectionMode && this.multiSelect.toSingleRange();
              }, this.getSelectedText = function() {
                var r = "";
                if (this.inMultiSelectMode && !this.inVirtualSelectionMode) {
                  for (var p = this.multiSelect.rangeList.ranges, l = [], I = 0; I < p.length; I++) l.push(this.session.getTextRange(p[I]));
                  var f = this.session.getDocument().getNewLineCharacter();
                  (r = l.join(f)).length == (l.length - 1) * f.length && (r = "");
                } else this.selection.isEmpty() || (r = this.session.getTextRange(this.getSelectionRange()));
                return r;
              }, this.$checkMultiselectChange = function(r, p) {
                var l;
                this.inMultiSelectMode && !this.inVirtualSelectionMode && (l = this.multiSelect.ranges[0], this.multiSelect.isEmpty() && p == this.multiSelect.anchor || ((l = p == this.multiSelect.anchor ? l.cursor == l.start ? l.end : l.start : l.cursor).row != p.row || this.session.$clipPositionToDocument(l.row, l.column).column != p.column ? this.multiSelect.toSingleRange(this.multiSelect.toOrientedRange()) : this.multiSelect.mergeOverlappingRanges()));
              }, this.findAll = function(r, p, l) {
                var I;
                (p = p || {}).needle = r || p.needle, p.needle == null && (I = this.selection.isEmpty() ? this.selection.getWordRange() : this.selection.getRange(), p.needle = this.session.getTextRange(I)), this.$search.set(p);
                var f = this.$search.findAll(this.session);
                if (!f.length) return 0;
                var n = this.multiSelect;
                l || n.toSingleRange(f[0]);
                for (var g = f.length; g--; ) n.addRange(f[g], !0);
                return I && n.rangeList.rangeAtPoint(I.start) && n.addRange(I, !0), f.length;
              }, this.selectMoreLines = function(r, p) {
                var l = this.selection.toOrientedRange(), I = l.cursor == l.end, f = this.session.documentToScreenPosition(l.cursor);
                this.selection.$desiredColumn && (f.column = this.selection.$desiredColumn);
                var n, g, C, y = this.session.screenToDocumentPosition(f.row + r, f.column);
                n = l.isEmpty() ? y : (n = this.session.documentToScreenPosition(I ? l.end : l.start), this.session.screenToDocumentPosition(n.row + r, n.column)), I ? (g = d.fromPoints(y, n)).cursor = g.start : (g = d.fromPoints(n, y)).cursor = g.end, g.desiredColumn = f.column, this.selection.inMultiSelectMode ? p && (C = l.cursor) : this.selection.addRange(l), this.selection.addRange(g), C && this.selection.substractPoint(C);
              }, this.transposeSelections = function(r) {
                for (var p = this.session, l = p.multiSelect, I = l.ranges, f = I.length; f--; ) (g = I[f]).isEmpty() && (C = p.getWordRange(g.start.row, g.start.column), g.start.row = C.start.row, g.start.column = C.start.column, g.end.row = C.end.row, g.end.column = C.end.column);
                l.mergeOverlappingRanges();
                for (var n = [], f = I.length; f--; ) {
                  var g = I[f];
                  n.unshift(p.getTextRange(g));
                }
                for (r < 0 ? n.unshift(n.pop()) : n.push(n.shift()), f = I.length; f--; ) {
                  var C = (g = I[f]).clone();
                  p.replace(g, n[f]), g.start.row = C.start.row, g.start.column = C.start.column;
                }
                l.fromOrientedRange(l.ranges[0]);
              }, this.selectMore = function(r, p, l) {
                var I, f = this.session, n = f.multiSelect.toOrientedRange();
                n.isEmpty() && ((n = f.getWordRange(n.start.row, n.start.column)).cursor = r == -1 ? n.start : n.end, this.multiSelect.addRange(n), l) || (I = f.getTextRange(n), l = f, f = I, I = r, s.$options.wrap = !0, s.$options.needle = f, s.$options.backwards = I == -1, (l = s.find(l)) && (l.cursor = r == -1 ? l.start : l.end, this.session.unfold(l), this.multiSelect.addRange(l), this.renderer.scrollCursorIntoView(null, 0.5)), p && this.multiSelect.substractPoint(n.cursor));
              }, this.alignCursors = function() {
                var r = this.session, p = r.multiSelect, l = p.ranges, I = -1, f = l.filter(function(L) {
                  return L.cursor.row == I || void (I = L.cursor.row);
                });
                if (l.length && f.length != l.length - 1) {
                  f.forEach(function(L) {
                    p.substractPoint(L.cursor);
                  });
                  var n = 0, g = 1 / 0, C = l.map(function(_) {
                    var W = _.cursor, _ = r.getLine(W.row).substr(W.column).search(/\S/g);
                    return W.column > n && (n = W.column), (_ = _ == -1 ? 0 : _) < g && (g = _), _;
                  });
                  l.forEach(function(L, z) {
                    var _ = L.cursor, O = n - _.column, z = C[z] - g;
                    z < O ? r.insert(_, t.stringRepeat(" ", O - z)) : r.remove(new d(_.row, _.column, _.row, _.column - O + z)), L.start.column = L.end.column = n, L.start.row = L.end.row = _.row, L.cursor = L.end;
                  }), p.fromOrientedRange(l[0]), this.renderer.updateCursor(), this.renderer.updateBackMarkers();
                } else {
                  var y = this.selection.getRange(), c = y.start.row, v = y.end.row, f = c == v;
                  if (f) {
                    for (var k, S = this.session.getLength(); k = this.session.getLine(v), /[=:]/.test(k) && ++v < S; ) ;
                    for (; k = this.session.getLine(c), /[=:]/.test(k) && 0 < --c; ) ;
                    c < 0 && (c = 0), S <= v && (v = S - 1);
                  }
                  l = this.session.removeFullLines(c, v), l = this.$reAlignText(l, f), this.session.insert({ row: c, column: 0 }, l.join(`
`) + `
`), f || (y.start.column = 0, y.end.column = l[l.length - 1].length), this.selection.setRange(y);
                }
              }, this.$reAlignText = function(r, p) {
                function l(c) {
                  return t.stringRepeat(" ", c);
                }
                function I(c) {
                  return c[2] ? l(f) + c[2] + l(n - c[2].length + g) + c[4].replace(/^([=:])\s+/, "$1 ") : c[0];
                }
                var f, n, g, C = !0, y = !0;
                return r.map(function(c) {
                  var v = c.match(/(\s*)(.*?)(\s*)([=:].*)/);
                  return v ? (f == null ? (f = v[1].length, n = v[2].length, g = v[3].length) : (f + n + g != v[1].length + v[2].length + v[3].length && (y = !1), f != v[1].length && (C = !1), f > v[1].length && (f = v[1].length), n < v[2].length && (n = v[2].length), g > v[3].length && (g = v[3].length)), v) : [c];
                }).map(p ? I : C ? y ? function(c) {
                  return c[2] ? l(f + n - c[2].length) + c[2] + l(g) + c[4].replace(/^([=:])\s+/, "$1 ") : c[0];
                } : I : function(c) {
                  return c[2] ? l(f) + c[2] + l(g) + c[4].replace(/^([=:])\s+/, "$1 ") : c[0];
                });
              };
            }).call(h.prototype), m.onSessionChange = function(r) {
              var p = r.session;
              p && !p.multiSelect && (p.$selectionMarkers = [], p.selection.$initRangeList(), p.multiSelect = p.selection), this.multiSelect = p && p.multiSelect, r = r.oldSession, r && (r.multiSelect.off("addRange", this.$onAddRange), r.multiSelect.off("removeRange", this.$onRemoveRange), r.multiSelect.off("multiSelect", this.$onMultiSelect), r.multiSelect.off("singleSelect", this.$onSingleSelect), r.multiSelect.lead.off("change", this.$checkMultiselectChange), r.multiSelect.anchor.off("change", this.$checkMultiselectChange)), p && (p.multiSelect.on("addRange", this.$onAddRange), p.multiSelect.on("removeRange", this.$onRemoveRange), p.multiSelect.on("multiSelect", this.$onMultiSelect), p.multiSelect.on("singleSelect", this.$onSingleSelect), p.multiSelect.lead.on("change", this.$checkMultiselectChange), p.multiSelect.anchor.on("change", this.$checkMultiselectChange)), p && this.inMultiSelectMode != p.selection.inMultiSelectMode && (p.selection.inMultiSelectMode ? this.$onMultiSelect() : this.$onSingleSelect());
            }, m.MultiSelect = b, j("./config").defineOptions(h.prototype, "editor", { enableMultiselect: { set: function(r) {
              b(this), r ? (this.on("changeSession", this.$multiselectOnSessionChange), this.on("mousedown", o)) : (this.off("changeSession", this.$multiselectOnSessionChange), this.off("mousedown", o));
            }, value: !0 }, enableBlockSelect: { set: function(r) {
              this.$blockSelectEnabled = r;
            }, value: !0 } });
          }), ace.define("ace/mode/folding/fold_mode", ["require", "exports", "module", "ace/range"], function(j, w, E) {
            var b = j("../../range").Range, w = w.FoldMode = function() {
            };
            (function() {
              this.foldingStartMarker = null, this.foldingStopMarker = null, this.getFoldWidget = function(d, a, o) {
                return o = d.getLine(o), this.foldingStartMarker.test(o) ? "start" : a == "markbeginend" && this.foldingStopMarker && this.foldingStopMarker.test(o) ? "end" : "";
              }, this.getFoldWidgetRange = function(d, a, o) {
                return null;
              }, this.indentationBlock = function(d, a, o) {
                var e = /\S/, t = d.getLine(a), i = t.search(e);
                if (i != -1) {
                  for (var s = o || t.length, h = d.getLength(), o = a, r = a; ++a < h; ) {
                    var p = d.getLine(a).search(e);
                    if (p != -1) {
                      if (p <= i && (!(p = d.getTokenAt(a, 0)) || p.type !== "string")) break;
                      r = a;
                    }
                  }
                  if (o < r) return t = d.getLine(r).length, new b(o, s, r, t);
                }
              }, this.openingBracketBlock = function(d, a, o, e, t) {
                if (e = { row: o, column: e + 1 }, a = d.$findClosingBracket(a, e, t)) return t = d.foldWidgets[a.row], (t = t ?? d.getFoldWidget(a.row)) == "start" && a.row > e.row && (a.row--, a.column = d.getLine(a.row).length), b.fromPoints(e, a);
              }, this.closingBracketBlock = function(d, a, o, e, t) {
                if (e = { row: o, column: e }, a = d.$findOpeningBracket(a, e)) return a.column++, e.column--, b.fromPoints(a, e);
              };
            }).call(w.prototype);
          }), ace.define("ace/theme/textmate", ["require", "exports", "module", "ace/lib/dom"], function(j, m, E) {
            m.isDark = !1, m.cssClass = "ace-tm", m.cssText = '.ace-tm .ace_gutter {background: #f0f0f0;color: #333;}.ace-tm .ace_print-margin {width: 1px;background: #e8e8e8;}.ace-tm .ace_fold {background-color: #6B72E6;}.ace-tm {background-color: #FFFFFF;color: black;}.ace-tm .ace_cursor {color: black;}.ace-tm .ace_invisible {color: rgb(191, 191, 191);}.ace-tm .ace_storage,.ace-tm .ace_keyword {color: blue;}.ace-tm .ace_constant {color: rgb(197, 6, 11);}.ace-tm .ace_constant.ace_buildin {color: rgb(88, 72, 246);}.ace-tm .ace_constant.ace_language {color: rgb(88, 92, 246);}.ace-tm .ace_constant.ace_library {color: rgb(6, 150, 14);}.ace-tm .ace_invalid {background-color: rgba(255, 0, 0, 0.1);color: red;}.ace-tm .ace_support.ace_function {color: rgb(60, 76, 114);}.ace-tm .ace_support.ace_constant {color: rgb(6, 150, 14);}.ace-tm .ace_support.ace_type,.ace-tm .ace_support.ace_class {color: rgb(109, 121, 222);}.ace-tm .ace_keyword.ace_operator {color: rgb(104, 118, 135);}.ace-tm .ace_string {color: rgb(3, 106, 7);}.ace-tm .ace_comment {color: rgb(76, 136, 107);}.ace-tm .ace_comment.ace_doc {color: rgb(0, 102, 255);}.ace-tm .ace_comment.ace_doc.ace_tag {color: rgb(128, 159, 191);}.ace-tm .ace_constant.ace_numeric {color: rgb(0, 0, 205);}.ace-tm .ace_variable {color: rgb(49, 132, 149);}.ace-tm .ace_xml-pe {color: rgb(104, 104, 91);}.ace-tm .ace_entity.ace_name.ace_function {color: #0000A2;}.ace-tm .ace_heading {color: rgb(12, 7, 255);}.ace-tm .ace_list {color:rgb(185, 6, 144);}.ace-tm .ace_meta.ace_tag {color:rgb(0, 22, 142);}.ace-tm .ace_string.ace_regex {color: rgb(255, 0, 0)}.ace-tm .ace_marker-layer .ace_selection {background: rgb(181, 213, 255);}.ace-tm.ace_multiselect .ace_selection.ace_start {box-shadow: 0 0 3px 0px white;}.ace-tm .ace_marker-layer .ace_step {background: rgb(252, 255, 0);}.ace-tm .ace_marker-layer .ace_stack {background: rgb(164, 229, 101);}.ace-tm .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid rgb(192, 192, 192);}.ace-tm .ace_marker-layer .ace_active-line {background: rgba(0, 0, 0, 0.07);}.ace-tm .ace_gutter-active-line {background-color : #dcdcdc;}.ace-tm .ace_marker-layer .ace_selected-word {background: rgb(250, 250, 255);border: 1px solid rgb(200, 200, 250);}.ace-tm .ace_indent-guide {background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==") right repeat-y;}', m.$id = "ace/theme/textmate", j("../lib/dom").importCssString(m.cssText, m.cssClass);
          }), ace.define("ace/line_widgets", ["require", "exports", "module", "ace/lib/dom"], function(j, m, E) {
            function b(d) {
              this.session = d, (this.session.widgetManager = 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);
            }
            var w = j("./lib/dom");
            (function() {
              this.getRowLength = function(d) {
                var a = this.lineWidgets && this.lineWidgets[d] && this.lineWidgets[d].rowCount || 0;
                return this.$useWrapMode && this.$wrapData[d] ? this.$wrapData[d].length + 1 + a : 1 + a;
              }, this.$getWidgetScreenLength = function() {
                var d = 0;
                return this.lineWidgets.forEach(function(a) {
                  a && a.rowCount && !a.hidden && (d += a.rowCount);
                }), d;
              }, this.$onChangeEditor = function(d) {
                this.attach(d.editor);
              }, this.attach = function(d) {
                d && d.widgetManager && d.widgetManager != this && d.widgetManager.detach(), this.editor != d && (this.detach(), (this.editor = d) && (d.widgetManager = this, d.renderer.on("beforeRender", this.measureWidgets), d.renderer.on("afterRender", this.renderWidgets)));
              }, this.detach = function(d) {
                var a = this.editor;
                a && (this.editor = null, a.widgetManager = null, a.renderer.off("beforeRender", this.measureWidgets), a.renderer.off("afterRender", this.renderWidgets), (a = this.session.lineWidgets) && a.forEach(function(o) {
                  o && o.el && o.el.parentNode && (o._inDocument = !1, o.el.parentNode.removeChild(o.el));
                }));
              }, this.updateOnFold = function(d, a) {
                var o = a.lineWidgets;
                if (o && d.action) {
                  for (var e = d.data, a = e.start.row, t = e.end.row, i = d.action == "add", s = a + 1; s < t; s++) o[s] && (o[s].hidden = i);
                  o[t] && (i ? o[a] ? o[t].hidden = i : o[a] = o[t] : (o[a] == o[t] && (o[a] = void 0), o[t].hidden = i));
                }
              }, this.updateOnChange = function(d) {
                var a, o, e, t = this.session.lineWidgets;
                t && (a = d.start.row, (e = d.end.row - a) == 0 || (d.action == "remove" ? (o = t.splice(a + 1, e), !t[a] && o[o.length - 1] && (t[a] = o.pop()), o.forEach(function(i) {
                  i && this.removeLineWidget(i);
                }, this)) : (e = new Array(e), t[a] && t[a].column != null && d.start.column > t[a].column && a++, e.unshift(a, 0), t.splice.apply(t, e)), this.$updateRows()));
              }, this.$updateRows = function() {
                var d, a = this.session.lineWidgets;
                a && (d = !0, a.forEach(function(o, e) {
                  if (o) for (d = !1, o.row = e; o.$oldWidget; ) o.$oldWidget.row = e, o = o.$oldWidget;
                }), d && (this.session.lineWidgets = null));
              }, this.$registerLineWidget = function(d) {
                this.session.lineWidgets || (this.session.lineWidgets = new Array(this.session.getLength()));
                var a = this.session.lineWidgets[d.row];
                return a && (d.$oldWidget = a).el && a.el.parentNode && (a.el.parentNode.removeChild(a.el), a._inDocument = !1), this.session.lineWidgets[d.row] = d;
              }, this.addLineWidget = function(d) {
                if (this.$registerLineWidget(d), d.session = this.session, !this.editor) return d;
                var a = this.editor.renderer;
                d.html && !d.el && (d.el = w.createElement("div"), d.el.innerHTML = d.html), d.el && (w.addCssClass(d.el, "ace_lineWidgetContainer"), d.el.style.position = "absolute", d.el.style.zIndex = 5, a.container.appendChild(d.el), d._inDocument = !0, d.coverGutter || (d.el.style.zIndex = 3), d.pixelHeight == null && (d.pixelHeight = d.el.offsetHeight)), d.rowCount == null && (d.rowCount = d.pixelHeight / a.layerConfig.lineHeight);
                var o, e = this.session.getFoldAt(d.row, 0);
                return (d.$fold = e) && (o = this.session.lineWidgets, d.row != e.end.row || o[e.start.row] ? d.hidden = !0 : o[e.start.row] = d), this.session._emit("changeFold", { data: { start: { row: d.row } } }), this.$updateRows(), this.renderWidgets(null, a), this.onWidgetChanged(d), d;
              }, this.removeLineWidget = function(d) {
                if (d._inDocument = !1, d.session = null, d.el && d.el.parentNode && d.el.parentNode.removeChild(d.el), d.editor && d.editor.destroy) try {
                  d.editor.destroy();
                } catch {
                }
                if (this.session.lineWidgets) {
                  var a = this.session.lineWidgets[d.row];
                  if (a == d) this.session.lineWidgets[d.row] = d.$oldWidget, d.$oldWidget && this.onWidgetChanged(d.$oldWidget);
                  else for (; a; ) {
                    if (a.$oldWidget == d) {
                      a.$oldWidget = d.$oldWidget;
                      break;
                    }
                    a = a.$oldWidget;
                  }
                }
                this.session._emit("changeFold", { data: { start: { row: d.row } } }), this.$updateRows();
              }, this.getWidgetsAtRow = function(d) {
                for (var a = this.session.lineWidgets, o = a && a[d], e = []; o; ) e.push(o), o = o.$oldWidget;
                return e;
              }, this.onWidgetChanged = function(d) {
                this.session._changedWidgets.push(d), this.editor && this.editor.renderer.updateFull();
              }, this.measureWidgets = function(d, a) {
                var o = this.session._changedWidgets, e = a.layerConfig;
                if (o && o.length) {
                  for (var t = 1 / 0, i = 0; i < o.length; i++) {
                    var s = o[i];
                    if (s && s.el && s.session == this.session) {
                      if (!s._inDocument) {
                        if (this.session.lineWidgets[s.row] != s) continue;
                        s._inDocument = !0, a.container.appendChild(s.el);
                      }
                      s.h = s.el.offsetHeight, s.fixedWidth || (s.w = s.el.offsetWidth, s.screenWidth = Math.ceil(s.w / e.characterWidth));
                      var h = s.h / e.lineHeight;
                      s.coverLine && (h -= this.session.getRowLineCount(s.row)) < 0 && (h = 0), s.rowCount != h && (s.rowCount = h, s.row < t && (t = s.row));
                    }
                  }
                  t != 1 / 0 && (this.session._emit("changeFold", { data: { start: { row: t } } }), this.session.lineWidgetWidth = null), this.session._changedWidgets = [];
                }
              }, this.renderWidgets = function(d, a) {
                var o = a.layerConfig, e = this.session.lineWidgets;
                if (e) {
                  for (var t = Math.min(this.firstRow, o.firstRow), i = Math.max(this.lastRow, o.lastRow, e.length); 0 < t && !e[t]; ) t--;
                  this.firstRow = o.firstRow, this.lastRow = o.lastRow, a.$cursorLayer.config = o;
                  for (var s = t; s <= i; s++) {
                    var h, r = e[s];
                    r && r.el && (r.hidden ? r.el.style.top = -100 - (r.pixelHeight || 0) + "px" : (r._inDocument || (r._inDocument = !0, a.container.appendChild(r.el)), h = a.$cursorLayer.getPixelPosition({ row: s, column: 0 }, !0).top, r.coverLine || (h += o.lineHeight * this.session.getRowLineCount(r.row)), r.el.style.top = h - o.offset + "px", h = r.coverGutter ? 0 : a.gutterWidth, r.fixedWidth || (h -= a.scrollLeft), r.el.style.left = h + "px", r.fullWidth && r.screenWidth && (r.el.style.minWidth = o.width + 2 * o.padding + "px"), r.fixedWidth ? r.el.style.right = a.scrollBar.getWidth() + "px" : r.el.style.right = ""));
                  }
                }
              };
            }).call(b.prototype), m.LineWidgets = b;
          }), ace.define("ace/ext/error_marker", ["require", "exports", "module", "ace/line_widgets", "ace/lib/dom", "ace/range"], function(j, m, E) {
            function b(o, e, t) {
              var i = o.getAnnotations().sort(a.comparePoints);
              if (i.length) {
                var s = function(p, l, I) {
                  for (var f = 0, n = p.length - 1; f <= n; ) {
                    var g = f + n >> 1, C = I(l, p[g]);
                    if (0 < C) f = 1 + g;
                    else {
                      if (!(C < 0)) return g;
                      n = g - 1;
                    }
                  }
                  return -(f + 1);
                }(i, { row: e, column: -1 }, a.comparePoints);
                (s = s < 0 ? -s - 1 : s) >= i.length ? s = 0 < t ? 0 : i.length - 1 : s === 0 && t < 0 && (s = i.length - 1);
                var h = i[s];
                if (h && t) {
                  if (h.row === e) {
                    for (; (h = i[s += t]) && h.row === e; ) ;
                    if (!h) return i.slice();
                  }
                  var r = [];
                  for (e = h.row; r[t < 0 ? "unshift" : "push"](h), (h = i[s += t]) && h.row == e; ) ;
                  return r.length && r;
                }
              }
            }
            var w = j("../line_widgets").LineWidgets, d = j("../lib/dom"), a = j("../range").Range;
            m.showErrorMarker = function(o, p) {
              function t(n, g, C) {
                if (g === 0 && (C === "esc" || C === "return")) return l.destroy(), { command: "null" };
              }
              var i = o.session;
              i.widgetManager || (i.widgetManager = new w(i), i.widgetManager.attach(o));
              var s = o.getCursorPosition(), h = s.row, f = i.widgetManager.getWidgetsAtRow(h).filter(function(n) {
                return n.type == "errorMarker";
              })[0];
              f ? f.destroy() : h -= p;
              var r, p = b(i, h, p);
              if (p) {
                var I = p[0];
                s.column = (I.pos && typeof I.column != "number" ? I.pos.sc : I.column) || 0, s.row = I.row, r = o.renderer.$gutterLayer.$annotations[s.row];
              } else {
                if (f) return;
                r = { text: ["Looks good!"], className: "ace_ok" };
              }
              o.session.unfold(s.row), o.selection.moveToPosition(s);
              var l = { row: s.row, fixedWidth: !0, coverGutter: !0, el: d.createElement("div"), type: "errorMarker" }, I = l.el.appendChild(d.createElement("div")), f = l.el.appendChild(d.createElement("div"));
              f.className = "error_widget_arrow " + r.className, s = o.renderer.$cursorLayer.getPixelPosition(s).left, f.style.left = s + o.renderer.gutterWidth - 5 + "px", l.el.className = "error_widget_wrapper", I.className = "error_widget " + r.className, I.innerHTML = r.text.join("<br>"), I.appendChild(d.createElement("div")), l.destroy = function() {
                o.$mouseHandler.isMousePressed || (o.keyBinding.removeKeyboardHandler(t), i.widgetManager.removeLineWidget(l), o.off("changeSelection", l.destroy), o.off("changeSession", l.destroy), o.off("mouseup", l.destroy), o.off("change", l.destroy));
              }, o.keyBinding.addKeyboardHandler(t), o.on("changeSelection", l.destroy), o.on("changeSession", l.destroy), o.on("mouseup", l.destroy), o.on("change", l.destroy), o.session.widgetManager.addLineWidget(l), l.el.onmousedown = o.focus.bind(o), o.renderer.scrollCursorIntoView(null, 0.5, { bottom: l.el.offsetHeight });
            }, d.importCssString("    .error_widget_wrapper {        background: inherit;        color: inherit;        border:none    }    .error_widget {        border-top: solid 2px;        border-bottom: solid 2px;        margin: 5px 0;        padding: 10px 40px;        white-space: pre-wrap;    }    .error_widget.ace_error, .error_widget_arrow.ace_error{        border-color: #ff5a5a    }    .error_widget.ace_warning, .error_widget_arrow.ace_warning{        border-color: #F1D817    }    .error_widget.ace_info, .error_widget_arrow.ace_info{        border-color: #5a5a5a    }    .error_widget.ace_ok, .error_widget_arrow.ace_ok{        border-color: #5aaa5a    }    .error_widget_arrow {        position: absolute;        border: solid 5px;        border-top-color: transparent!important;        border-right-color: transparent!important;        border-left-color: transparent!important;        top: -5px;    }", "");
          }), ace.define("ace/ace", ["require", "exports", "module", "ace/lib/fixoldbrowsers", "ace/lib/dom", "ace/lib/event", "ace/range", "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(j, m, E) {
            j("./lib/fixoldbrowsers");
            var b = j("./lib/dom"), w = j("./lib/event"), d = j("./range").Range, a = j("./editor").Editor, o = j("./edit_session").EditSession, e = j("./undomanager").UndoManager, t = j("./virtual_renderer").VirtualRenderer;
            j("./worker/worker_client"), j("./keyboard/hash_handler"), j("./placeholder"), j("./multi_select"), j("./mode/folding/fold_mode"), j("./theme/textmate"), j("./ext/error_marker"), m.config = j("./config"), m.require = j, m.define = D.amdD, m.edit = function(i, p) {
              if (typeof i == "string") {
                var r = i;
                if (!(i = document.getElementById(r))) throw new Error("ace.edit can't find div #" + r);
              }
              if (i && i.env && i.env.editor instanceof a) return i.env.editor;
              var h, r = "";
              i && /input|textarea/i.test(i.tagName) ? (r = (h = i).value, i = b.createElement("pre"), h.parentNode.replaceChild(i, h)) : i && (r = i.textContent, i.innerHTML = "");
              var r = m.createEditSession(r), p = new a(new t(i), r, p), l = { document: r, editor: p, onResize: p.resize.bind(p, null) };
              return h && (l.textarea = h), w.addListener(window, "resize", l.onResize), p.on("destroy", function() {
                w.removeListener(window, "resize", l.onResize), l.editor.container.env = null;
              }), p.container.env = p.env = l, p;
            }, m.createEditSession = function(i, s) {
              return s = new o(i, s), s.setUndoManager(new e()), s;
            }, m.Range = d, m.Editor = a, m.EditSession = o, m.UndoManager = e, m.VirtualRenderer = t, m.version = m.config.version;
          }), ace.require(["ace/ace"], function(j) {
            for (var m in j && (j.config.init(!0), j.define = ace.define), window.ace || (window.ace = j), j) j.hasOwnProperty(m) && (window.ace[m] = j[m]);
            window.ace.default = window.ace, F && (F.exports = window.ace);
          });
        }, 3330: function(F, u, D) {
          F = D.nmd(F), 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(j, m, E) {
            function b(i, s, h) {
              var r = w.createElement("div");
              w.buildDom(["div", { class: "ace_search right" }, ["span", { action: "hide", class: "ace_searchbtn_close" }], ["div", { class: "ace_search_form" }, ["input", { class: "ace_search_field", placeholder: "Search for", spellcheck: "false" }], ["span", { action: "findPrev", class: "ace_searchbtn prev" }, "​"], ["span", { action: "findNext", class: "ace_searchbtn next" }, "​"], ["span", { action: "findAll", class: "ace_searchbtn", title: "Alt-Enter" }, "All"]], ["div", { class: "ace_replace_form" }, ["input", { class: "ace_search_field", placeholder: "Replace with", spellcheck: "false" }], ["span", { action: "replaceAndFindNext", class: "ace_searchbtn" }, "Replace"], ["span", { action: "replaceAll", class: "ace_searchbtn" }, "All"]], ["div", { class: "ace_search_options" }, ["span", { action: "toggleReplace", class: "ace_button", title: "Toggle Replace mode", style: "float:left;margin-top:-2px;padding:0 5px;" }, "+"], ["span", { class: "ace_search_counter" }], ["span", { action: "toggleRegexpMode", class: "ace_button", title: "RegExp Search" }, ".*"], ["span", { action: "toggleCaseSensitive", class: "ace_button", title: "CaseSensitive Search" }, "Aa"], ["span", { action: "toggleWholeWords", class: "ace_button", title: "Whole Word Search" }, "\\b"], ["span", { action: "searchInSelection", class: "ace_button", title: "Search In Selection" }, "S"]]], r), this.element = r.firstChild, this.setSession = this.setSession.bind(this), this.$init(), this.setEditor(i), w.importCssString(o, "ace_searchbox", i.container);
            }
            var w = j("../lib/dom"), d = j("../lib/lang"), a = j("../lib/event"), o = '.ace_search {background-color: #ddd;color: #666;border: 1px solid #cbcbcb;border-top: 0 none;overflow: hidden;margin: 0;padding: 4px 6px 0 4px;position: absolute;top: 0;z-index: 99;white-space: normal;}.ace_search.left {border-left: 0 none;border-radius: 0px 0px 5px 0px;left: 0;}.ace_search.right {border-radius: 0px 0px 0px 5px;border-right: 0 none;right: 0;}.ace_search_form, .ace_replace_form {margin: 0 20px 4px 0;overflow: hidden;line-height: 1.9;}.ace_replace_form {margin-right: 0;}.ace_search_form.ace_nomatch {outline: 1px solid red;}.ace_search_field {border-radius: 3px 0 0 3px;background-color: white;color: black;border: 1px solid #cbcbcb;border-right: 0 none;outline: 0;padding: 0;font-size: inherit;margin: 0;line-height: inherit;padding: 0 6px;min-width: 17em;vertical-align: top;min-height: 1.8em;box-sizing: content-box;}.ace_searchbtn {border: 1px solid #cbcbcb;line-height: inherit;display: inline-block;padding: 0 6px;background: #fff;border-right: 0 none;border-left: 1px solid #dcdcdc;cursor: pointer;margin: 0;position: relative;color: #666;}.ace_searchbtn:last-child {border-radius: 0 3px 3px 0;border-right: 1px solid #cbcbcb;}.ace_searchbtn:disabled {background: none;cursor: default;}.ace_searchbtn:hover {background-color: #eef1f6;}.ace_searchbtn.prev, .ace_searchbtn.next {padding: 0px 0.7em}.ace_searchbtn.prev:after, .ace_searchbtn.next:after {content: "";border: solid 2px #888;width: 0.5em;height: 0.5em;border-width:  2px 0 0 2px;display:inline-block;transform: rotate(-45deg);}.ace_searchbtn.next:after {border-width: 0 2px 2px 0 ;}.ace_searchbtn_close {background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAcCAYAAABRVo5BAAAAZ0lEQVR42u2SUQrAMAhDvazn8OjZBilCkYVVxiis8H4CT0VrAJb4WHT3C5xU2a2IQZXJjiQIRMdkEoJ5Q2yMqpfDIo+XY4k6h+YXOyKqTIj5REaxloNAd0xiKmAtsTHqW8sR2W5f7gCu5nWFUpVjZwAAAABJRU5ErkJggg==) no-repeat 50% 0;border-radius: 50%;border: 0 none;color: #656565;cursor: pointer;font: 16px/16px Arial;padding: 0;height: 14px;width: 14px;top: 9px;right: 7px;position: absolute;}.ace_searchbtn_close:hover {background-color: #656565;background-position: 50% 100%;color: white;}.ace_button {margin-left: 2px;cursor: pointer;-webkit-user-select: none;-moz-user-select: none;-o-user-select: none;-ms-user-select: none;user-select: none;overflow: hidden;opacity: 0.7;border: 1px solid rgba(100,100,100,0.23);padding: 1px;box-sizing:    border-box!important;color: black;}.ace_button:hover {background-color: #eee;opacity:1;}.ace_button:active {background-color: #ddd;}.ace_button.checked {border-color: #3399ff;opacity:1;}.ace_search_options{margin-bottom: 3px;text-align: right;-webkit-user-select: none;-moz-user-select: none;-o-user-select: none;-ms-user-select: none;user-select: none;clear: both;}.ace_search_counter {float: left;font-family: arial;padding: 0 8px;}', e = j("../keyboard/hash_handler").HashHandler, t = j("../lib/keys");
            w.importCssString(o, "ace_searchbox"), (function() {
              this.setEditor = function(i) {
                i.searchBox = this, i.renderer.scroller.appendChild(this.element), this.editor = i;
              }, this.setSession = function(i) {
                this.searchRange = null, this.$syncOptions(!0);
              }, this.$initElements = function(i) {
                this.searchBox = i.querySelector(".ace_search_form"), this.replaceBox = i.querySelector(".ace_replace_form"), this.searchOption = i.querySelector("[action=searchInSelection]"), this.replaceOption = i.querySelector("[action=toggleReplace]"), this.regExpOption = i.querySelector("[action=toggleRegexpMode]"), this.caseSensitiveOption = i.querySelector("[action=toggleCaseSensitive]"), this.wholeWordOption = i.querySelector("[action=toggleWholeWords]"), this.searchInput = this.searchBox.querySelector(".ace_search_field"), this.replaceInput = this.replaceBox.querySelector(".ace_search_field"), this.searchCounter = i.querySelector(".ace_search_counter");
              }, this.$init = function() {
                var i = this.element;
                this.$initElements(i);
                var s = this;
                a.addListener(i, "mousedown", function(h) {
                  setTimeout(function() {
                    s.activeInput.focus();
                  }, 0), a.stopPropagation(h);
                }), a.addListener(i, "click", function(h) {
                  var r = (h.target || h.srcElement).getAttribute("action");
                  r && s[r] ? s[r]() : s.$searchBarKb.commands[r] && s.$searchBarKb.commands[r].exec(s), a.stopPropagation(h);
                }), a.addCommandKeyListener(i, function(h, r, p) {
                  p = t.keyCodeToString(p), p = s.$searchBarKb.findKeyCommand(r, p), p && p.exec && (p.exec(s), a.stopEvent(h));
                }), this.$onChange = d.delayedCall(function() {
                  s.find(!1, !1);
                }), a.addListener(this.searchInput, "input", function() {
                  s.$onChange.schedule(20);
                }), a.addListener(this.searchInput, "focus", function() {
                  s.activeInput = s.searchInput, s.searchInput.value && s.highlight();
                }), a.addListener(this.replaceInput, "focus", function() {
                  s.activeInput = s.replaceInput, s.searchInput.value && s.highlight();
                });
              }, this.$closeSearchBarKb = new e([{ bindKey: "Esc", name: "closeSearchBar", exec: function(i) {
                i.searchBox.hide();
              } }]), this.$searchBarKb = new e(), this.$searchBarKb.bindKeys({ "Ctrl-f|Command-f": function(i) {
                var s = i.isReplace = !i.isReplace;
                i.replaceBox.style.display = s ? "" : "none", i.replaceOption.checked = !1, i.$syncOptions(), i.searchInput.focus();
              }, "Ctrl-H|Command-Option-F": function(i) {
                i.editor.getReadOnly() || (i.replaceOption.checked = !0, i.$syncOptions(), i.replaceInput.focus());
              }, "Ctrl-G|Command-G": function(i) {
                i.findNext();
              }, "Ctrl-Shift-G|Command-Shift-G": function(i) {
                i.findPrev();
              }, esc: function(i) {
                setTimeout(function() {
                  i.hide();
                });
              }, Return: function(i) {
                i.activeInput == i.replaceInput && i.replace(), i.findNext();
              }, "Shift-Return": function(i) {
                i.activeInput == i.replaceInput && i.replace(), i.findPrev();
              }, "Alt-Return": function(i) {
                i.activeInput == i.replaceInput && i.replaceAll(), i.findAll();
              }, Tab: function(i) {
                (i.activeInput == i.replaceInput ? i.searchInput : i.replaceInput).focus();
              } }), this.$searchBarKb.addCommands([{ name: "toggleRegexpMode", bindKey: { win: "Alt-R|Alt-/", mac: "Ctrl-Alt-R|Ctrl-Alt-/" }, exec: function(i) {
                i.regExpOption.checked = !i.regExpOption.checked, i.$syncOptions();
              } }, { name: "toggleCaseSensitive", bindKey: { win: "Alt-C|Alt-I", mac: "Ctrl-Alt-R|Ctrl-Alt-I" }, exec: function(i) {
                i.caseSensitiveOption.checked = !i.caseSensitiveOption.checked, i.$syncOptions();
              } }, { name: "toggleWholeWords", bindKey: { win: "Alt-B|Alt-W", mac: "Ctrl-Alt-B|Ctrl-Alt-W" }, exec: function(i) {
                i.wholeWordOption.checked = !i.wholeWordOption.checked, i.$syncOptions();
              } }, { name: "toggleReplace", exec: function(i) {
                i.replaceOption.checked = !i.replaceOption.checked, i.$syncOptions();
              } }, { name: "searchInSelection", exec: function(i) {
                i.searchOption.checked = !i.searchRange, i.setSearchRange(i.searchOption.checked && i.editor.getSelectionRange()), i.$syncOptions();
              } }]), this.setSearchRange = function(i) {
                (this.searchRange = i) ? this.searchRangeMarker = this.editor.session.addMarker(i, "ace_active-line") : this.searchRangeMarker && (this.editor.session.removeMarker(this.searchRangeMarker), this.searchRangeMarker = null);
              }, this.$syncOptions = function(i) {
                w.setCssClass(this.replaceOption, "checked", this.searchRange), w.setCssClass(this.searchOption, "checked", this.searchOption.checked), this.replaceOption.textContent = this.replaceOption.checked ? "-" : "+", w.setCssClass(this.regExpOption, "checked", this.regExpOption.checked), w.setCssClass(this.wholeWordOption, "checked", this.wholeWordOption.checked), w.setCssClass(this.caseSensitiveOption, "checked", this.caseSensitiveOption.checked);
                var s = this.editor.getReadOnly();
                this.replaceOption.style.display = s ? "none" : "", this.replaceBox.style.display = this.replaceOption.checked && !s ? "" : "none", this.find(!1, !1, i);
              }, this.highlight = function(i) {
                this.editor.session.highlight(i || this.editor.$search.$options.re), this.editor.renderer.updateBackMarkers();
              }, this.find = function(i, s, h) {
                h = !this.editor.find(this.searchInput.value, { skipCurrent: i, backwards: s, wrap: !0, regExp: this.regExpOption.checked, caseSensitive: this.caseSensitiveOption.checked, wholeWord: this.wholeWordOption.checked, preventScroll: h, range: this.searchRange }) && this.searchInput.value, w.setCssClass(this.searchBox, "ace_nomatch", h), this.editor._emit("findSearchBox", { match: !h }), this.highlight(), this.updateCounter();
              }, this.updateCounter = function() {
                var i = this.editor, s = i.$search.$options.re, h = 0, r = 0;
                if (s) {
                  var p = this.searchRange ? i.session.getTextRange(this.searchRange) : i.getValue(), l = i.session.doc.positionToIndex(i.selection.anchor);
                  this.searchRange && (l -= i.session.doc.positionToIndex(this.searchRange.start));
                  var I, f;
                  for (s.lastIndex = 0; (f = s.exec(p)) && ((I = f.index) <= l && r++, !(999 < ++h)) && (f[0] || (s.lastIndex = I += 1, !(I >= p.length))); ) ;
                }
                this.searchCounter.textContent = r + " of " + (999 < h ? "999+" : h);
              }, this.findNext = function() {
                this.find(!0, !1);
              }, this.findPrev = function() {
                this.find(!0, !0);
              }, this.findAll = function() {
                var i = !this.editor.findAll(this.searchInput.value, { regExp: this.regExpOption.checked, caseSensitive: this.caseSensitiveOption.checked, wholeWord: this.wholeWordOption.checked }) && this.searchInput.value;
                w.setCssClass(this.searchBox, "ace_nomatch", i), this.editor._emit("findSearchBox", { match: !i }), 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.active = !1, this.setSearchRange(null), this.editor.off("changeSession", this.setSession), this.element.style.display = "none", this.editor.keyBinding.removeKeyboardHandler(this.$closeSearchBarKb), this.editor.focus();
              }, this.show = function(i, s) {
                this.active = !0, this.editor.on("changeSession", this.setSession), this.element.style.display = "", this.replaceOption.checked = s, i && (this.searchInput.value = i), this.searchInput.focus(), this.searchInput.select(), this.editor.keyBinding.addKeyboardHandler(this.$closeSearchBarKb), this.$syncOptions(!0);
              }, this.isFocused = function() {
                var i = document.activeElement;
                return i == this.searchInput || i == this.replaceInput;
              };
            }).call(b.prototype), m.SearchBox = b, m.Search = function(i, s) {
              (i.searchBox || new b(i)).show(i.session.getTextRange(), s);
            };
          }), ace.require(["ace/ext/searchbox"], function(j) {
            F && (F.exports = j);
          });
        }, 4091: function(F, u, D) {
          F = D.nmd(F), ace.define("ace/mode/json_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text_highlight_rules"], function(d, m, E) {
            var b = d("../lib/oop"), w = d("./text_highlight_rules").TextHighlightRules, d = function() {
              this.$rules = { start: [{ token: "variable", regex: '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]\\s*(?=:)' }, { token: "string", regex: '"', next: "string" }, { token: "constant.numeric", regex: "0[xX][0-9a-fA-F]+\\b" }, { token: "constant.numeric", regex: "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" }, { token: "constant.language.boolean", regex: "(?:true|false)\\b" }, { token: "text", regex: "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" }, { token: "comment", regex: "\\/\\/.*$" }, { token: "comment.start", regex: "\\/\\*", next: "comment" }, { token: "paren.lparen", regex: "[[({]" }, { token: "paren.rparen", regex: "[\\])}]" }, { token: "text", regex: "\\s+" }], string: [{ token: "constant.language.escape", regex: /\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|["\\\/bfnrt])/ }, { token: "string", regex: '"|$', next: "start" }, { defaultToken: "string" }], comment: [{ token: "comment.end", regex: "\\*\\/", next: "start" }, { defaultToken: "comment" }] };
            };
            b.inherits(d, w), m.JsonHighlightRules = d;
          }), ace.define("ace/mode/matching_brace_outdent", ["require", "exports", "module", "ace/range"], function(w, m, E) {
            var b = w("../range").Range, w = function() {
            };
            (function() {
              this.checkOutdent = function(d, a) {
                return !!/^\s+$/.test(d) && /^\s*\}/.test(a);
              }, this.autoOutdent = function(d, a) {
                var e = d.getLine(a).match(/^(\s*\})/);
                if (!e) return 0;
                var o = e[1].length, e = d.findMatchingBracket({ row: a, column: o });
                if (!e || e.row == a) return 0;
                e = this.$getIndent(d.getLine(e.row)), d.replace(new b(a, 0, a, o - 1), e);
              }, this.$getIndent = function(d) {
                return d.match(/^\s*/)[0];
              };
            }).call(w.prototype), m.MatchingBraceOutdent = w;
          }), ace.define("ace/mode/folding/cstyle", ["require", "exports", "module", "ace/lib/oop", "ace/range", "ace/mode/folding/fold_mode"], function(d, a, E) {
            var b = d("../../lib/oop"), w = d("../../range").Range, d = d("./fold_mode").FoldMode, a = a.FoldMode = function(o) {
              o && (this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + o.start)), this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + o.end)));
            };
            b.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(o, e, t) {
                var i = o.getLine(t);
                return !this.singleLineBlockCommentRe.test(i) || this.startRegionRe.test(i) || this.tripleStarBlockCommentRe.test(i) ? (t = this._getFoldWidgetBase(o, e, t), !t && this.startRegionRe.test(i) ? "start" : t) : "";
              }, this.getFoldWidgetRange = function(o, e, t, i) {
                var s = o.getLine(t);
                if (this.startRegionRe.test(s)) return this.getCommentRegionBlock(o, s, t);
                var h = s.match(this.foldingStartMarker);
                if (h) {
                  var r = h.index;
                  if (h[1]) return this.openingBracketBlock(o, h[1], t, r);
                  var p = o.getCommentFoldRange(t, r + h[0].length, 1);
                  return p && !p.isMultiLine() && (i ? p = this.getSectionRange(o, t) : e != "all" && (p = null)), p;
                }
                return e !== "markbegin" && (h = s.match(this.foldingStopMarker)) ? (r = h.index + h[0].length, h[1] ? this.closingBracketBlock(o, h[1], t, r) : o.getCommentFoldRange(t, r, -1)) : void 0;
              }, this.getSectionRange = function(o, e) {
                for (var t = (p = o.getLine(e)).search(/\S/), i = e, s = p.length, h = e += 1, r = o.getLength(); ++e < r; ) {
                  var p, l = (p = o.getLine(e)).search(/\S/);
                  if (l !== -1) {
                    if (l < t) break;
                    var I = this.getFoldWidgetRange(o, "all", e);
                    if (I) {
                      if (I.start.row <= i) break;
                      if (I.isMultiLine()) e = I.end.row;
                      else if (t == l) break;
                    }
                    h = e;
                  }
                }
                return new w(i, s, h, o.getLine(h).length);
              }, this.getCommentRegionBlock = function(o, e, t) {
                for (var i = e.search(/\s*$/), s = o.getLength(), h = t, r = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/, p = 1; ++t < s; ) {
                  e = o.getLine(t);
                  var l = r.exec(e);
                  if (l && (l[1] ? p-- : p++, !p)) break;
                }
                if (h < t) return new w(h, i, t, 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(i, m, E) {
            var b = i("../lib/oop"), w = i("./text").Mode, d = i("./json_highlight_rules").JsonHighlightRules, a = i("./matching_brace_outdent").MatchingBraceOutdent, o = i("./behaviour/cstyle").CstyleBehaviour, e = i("./folding/cstyle").FoldMode, t = i("../worker/worker_client").WorkerClient, i = function() {
              this.HighlightRules = d, this.$outdent = new a(), this.$behaviour = new o(), this.foldingRules = new e();
            };
            b.inherits(i, w), (function() {
              this.lineCommentStart = "//", this.blockComment = { start: "/*", end: "*/" }, this.getNextLineIndent = function(s, h, r) {
                var p = this.$getIndent(h);
                return s == "start" && h.match(/^.*[\{\(\[]\s*$/) && (p += r), p;
              }, this.checkOutdent = function(s, h, r) {
                return this.$outdent.checkOutdent(h, r);
              }, this.autoOutdent = function(s, h, r) {
                this.$outdent.autoOutdent(h, r);
              }, this.createWorker = function(s) {
                var h = new t(["ace"], "ace/mode/json_worker", "JsonWorker");
                return h.attachToDocument(s.getDocument()), h.on("annotate", function(r) {
                  s.setAnnotations(r.data);
                }), h.on("terminate", function() {
                  s.clearAnnotations();
                }), h;
              }, this.$id = "ace/mode/json";
            }).call(i.prototype), m.Mode = i;
          }), ace.require(["ace/mode/json"], function(j) {
            F && (F.exports = j);
          });
        }, 8903: function(F, u, D) {
          function j(C) {
            if (!(this instanceof j)) return new j(C);
            C = this._opts = I.copy(C) || {}, function(y) {
              var c = y._opts.logger;
              if (c === !1) y.logger = { log: o, warn: o, error: o };
              else {
                if (!(typeof (c = c === void 0 ? console : c) == "object" && c.log && c.warn && c.error)) throw new Error("logger must implement log, warn and error methods");
                y.logger = c;
              }
            }(this), this._schemas = {}, this._refs = {}, this._fragments = {}, this._formats = r(C.format), this._cache = C.cache || new i(), this._loadingSchemas = {}, this._compilations = [], this.RULES = p(), this._getId = function(y) {
              switch (y.schemaId) {
                case "auto":
                  return d;
                case "id":
                  return b;
                default:
                  return w;
              }
            }(C), C.loopRequired = C.loopRequired || 1 / 0, C.errorDataPath == "property" && (C._errorDataPathProperty = !0), C.serialize === void 0 && (C.serialize = h), this._metaOpts = function(y) {
              for (var c = I.copy(y._opts), v = 0; v < n.length; v++) delete c[n[v]];
              return c;
            }(this), C.formats && function(y) {
              for (var c in y._opts.formats) {
                var v = y._opts.formats[c];
                y.addFormat(c, v);
              }
            }(this), C.keywords && function(y) {
              for (var c in y._opts.keywords) {
                var v = y._opts.keywords[c];
                y.addKeyword(c, v);
              }
            }(this), function(y) {
              var c;
              y._opts.$data && (c = D(6835), y.addMetaSchema(c, c.$id, !0)), y._opts.meta !== !1 && (c = D(38), y._opts.$data && (c = l(c, g)), y.addMetaSchema(c, f, !0), y._refs["http://json-schema.org/schema"] = f);
            }(this), typeof C.meta == "object" && this.addMetaSchema(C.meta), C.nullable && this.addKeyword("nullable", { metaSchema: { type: "boolean" } }), function(y) {
              var c = y._opts.schemas;
              if (c) if (Array.isArray(c)) y.addSchema(c);
              else for (var v in c) y.addSchema(c[v], v);
            }(this);
          }
          function m(C, y) {
            return y = t.normalizeId(y), C._schemas[y] || C._refs[y] || C._fragments[y];
          }
          function E(C, y, c) {
            for (var v in y) {
              var k = y[v];
              k.meta || c && !c.test(v) || (C._cache.del(k.cacheKey), delete y[v]);
            }
          }
          function b(C) {
            return C.$id && this.logger.warn("schema $id ignored", C.$id), C.id;
          }
          function w(C) {
            return C.id && this.logger.warn("schema id ignored", C.id), C.$id;
          }
          function d(C) {
            if (C.$id && C.id && C.$id != C.id) throw new Error("schema $id is different from id");
            return C.$id || C.id;
          }
          function a(C, y) {
            if (C._schemas[y] || C._refs[y]) throw new Error('schema with key or id "' + y + '" already exists');
          }
          function o() {
          }
          var e = D(5689), t = D(3969), i = D(5255), s = D(4293), h = D(3508), r = D(3368), p = D(742), l = D(9394), I = D(3724);
          (F.exports = j).prototype.validate = function(C, y) {
            var c;
            if (typeof C == "string") {
              if (!(c = this.getSchema(C))) throw new Error('no schema with key or ref "' + C + '"');
            } else C = this._addSchema(C), c = C.validate || this._compile(C);
            return y = c(y), c.$async !== !0 && (this.errors = c.errors), y;
          }, j.prototype.compile = function(C, y) {
            return y = this._addSchema(C, void 0, y), y.validate || this._compile(y);
          }, j.prototype.addSchema = function(C, y, c, v) {
            if (Array.isArray(C)) {
              for (var k = 0; k < C.length; k++) this.addSchema(C[k], void 0, c, v);
              return this;
            }
            var S = this._getId(C);
            if (S !== void 0 && typeof S != "string") throw new Error("schema id must be string");
            return a(this, y = t.normalizeId(y || S)), this._schemas[y] = this._addSchema(C, c, v, !0), this;
          }, j.prototype.addMetaSchema = function(C, y, c) {
            return this.addSchema(C, y, c, !0), this;
          }, j.prototype.validateSchema = function(C, y) {
            var c = C.$schema;
            if (c !== void 0 && typeof c != "string") throw new Error("$schema must be a string");
            if (!(c = c || this._opts.defaultMeta || function(v) {
              var k = v._opts.meta;
              return v._opts.defaultMeta = typeof k == "object" ? v._getId(k) || k : v.getSchema(f) ? f : void 0, v._opts.defaultMeta;
            }(this))) return this.logger.warn("meta-schema not available"), !(this.errors = null);
            if (!(C = this.validate(c, C)) && y) {
              if (y = "schema is invalid: " + this.errorsText(), this._opts.validateSchema != "log") throw new Error(y);
              this.logger.error(y);
            }
            return C;
          }, j.prototype.getSchema = function(C) {
            var y = m(this, C);
            switch (typeof y) {
              case "object":
                return y.validate || this._compile(y);
              case "string":
                return this.getSchema(y);
              case "undefined":
                return function(c, v) {
                  var k = t.schema.call(c, { schema: {} }, v);
                  if (k) {
                    var S = k.schema, L = k.root, W = k.baseId, k = e.call(c, S, L, void 0, W);
                    return c._fragments[v] = new s({ ref: v, fragment: !0, schema: S, root: L, baseId: W, validate: k }), k;
                  }
                }(this, C);
            }
          }, j.prototype.removeSchema = function(C) {
            if (C instanceof RegExp) return E(this, this._schemas, C), E(this, this._refs, C), this;
            switch (typeof C) {
              case "undefined":
                return E(this, this._schemas), E(this, this._refs), this._cache.clear(), this;
              case "string":
                var y = m(this, C);
                return y && this._cache.del(y.cacheKey), delete this._schemas[C], delete this._refs[C], this;
              case "object":
                y = this._opts.serialize, y = y ? y(C) : C, this._cache.del(y), y = this._getId(C), y && (y = t.normalizeId(y), delete this._schemas[y], delete this._refs[y]);
            }
            return this;
          }, j.prototype.addFormat = function(C, y) {
            return typeof y == "string" && (y = new RegExp(y)), this._formats[C] = y, this;
          }, j.prototype.errorsText = function(C, y) {
            if (!(C = C || this.errors)) return "No errors";
            for (var c = (y = y || {}).separator === void 0 ? ", " : y.separator, v = y.dataVar === void 0 ? "data" : y.dataVar, k = "", S = 0; S < C.length; S++) {
              var L = C[S];
              L && (k += v + L.dataPath + " " + L.message + c);
            }
            return k.slice(0, -c.length);
          }, j.prototype._addSchema = function(C, y, c, v) {
            if (typeof C != "object" && typeof C != "boolean") throw new Error("schema should be object or boolean");
            var k = this._opts.serialize, S = k ? k(C) : C, W = this._cache.get(S);
            if (W) return W;
            v = v || this._opts.addUsedSchema !== !1, (k = t.normalizeId(this._getId(C))) && v && a(this, k);
            var L, W = this._opts.validateSchema !== !1 && !y;
            return W && !(L = k && k == t.normalizeId(C.$schema)) && this.validateSchema(C, !0), y = t.ids.call(this, C), c = new s({ id: k, schema: C, localRefs: y, cacheKey: S, meta: c }), k[0] != "#" && v && (this._refs[k] = c), this._cache.put(S, c), W && L && this.validateSchema(C, !0), c;
          }, j.prototype._compile = function(C, y) {
            function c() {
              var S = C.validate, L = S.apply(this, arguments);
              return c.errors = S.errors, L;
            }
            if (C.compiling) return (C.validate = c).schema = C.schema, c.errors = null, c.root = y || c, C.schema.$async === !0 && (c.$async = !0), c;
            var v, k;
            C.compiling = !0, C.meta && (v = this._opts, this._opts = this._metaOpts);
            try {
              k = e.call(this, C.schema, y, C.localRefs);
            } catch (S) {
              throw delete C.validate, S;
            } finally {
              C.compiling = !1, C.meta && (this._opts = v);
            }
            return C.validate = k, C.refs = k.refs, C.refVal = k.refVal, C.root = k.root, k;
          }, j.prototype.compileAsync = D(9677), F = D(7931), j.prototype.addKeyword = F.add, j.prototype.getKeyword = F.get, j.prototype.removeKeyword = F.remove, j.prototype.validateKeyword = F.validate, F = D(5359), j.ValidationError = F.Validation, j.MissingRefError = F.MissingRef, j.$dataMetaSchema = l;
          var f = "http://json-schema.org/draft-07/schema", n = ["removeAdditional", "useDefaults", "coerceTypes", "strictDefaults"], g = ["/properties"];
        }, 5255: function(F) {
          F = F.exports = function() {
            this._cache = {};
          }, F.prototype.put = function(u, D) {
            this._cache[u] = D;
          }, F.prototype.get = function(u) {
            return this._cache[u];
          }, F.prototype.del = function(u) {
            delete this._cache[u];
          }, F.prototype.clear = function() {
            this._cache = {};
          };
        }, 9677: function(F, u, D) {
          function j(E, b, w) {
            function d(e) {
              return e = e.$schema, e && !a.getSchema(e) ? j.call(a, { $ref: e }, !0) : Promise.resolve();
            }
            var a = this;
            if (typeof this._opts.loadSchema != "function") throw new Error("options.loadSchema should be a function");
            typeof b == "function" && (w = b, b = void 0);
            var o = d(E).then(function() {
              var e = a._addSchema(E, void 0, b);
              return e.validate || function t(i) {
                try {
                  return a._compile(i);
                } catch (s) {
                  if (s instanceof m) return function(h) {
                    function r() {
                      delete a._loadingSchemas[l];
                    }
                    function p(I) {
                      return a._refs[I] || a._schemas[I];
                    }
                    var l = h.missingSchema;
                    if (p(l)) throw new Error("Schema " + l + " is loaded but " + h.missingRef + " cannot be resolved");
                    return h = a._loadingSchemas[l], h || (h = a._loadingSchemas[l] = a._opts.loadSchema(l)).then(r, r), h.then(function(I) {
                      if (!p(l)) return d(I).then(function() {
                        p(l) || a.addSchema(I, l, void 0, b);
                      });
                    }).then(function() {
                      return t(i);
                    });
                  }(s);
                  throw s;
                }
              }(e);
            });
            return w && o.then(function(e) {
              w(null, e);
            }, w), o;
          }
          var m = D(5359).MissingRef;
          F.exports = j;
        }, 5359: function(F, u, D) {
          function j(b, w, d) {
            this.message = d || j.message(b, w), this.missingRef = E.url(b, w), this.missingSchema = E.normalizeId(E.fullPath(this.missingRef));
          }
          function m(b) {
            return b.prototype = Object.create(Error.prototype), b.prototype.constructor = b;
          }
          var E = D(3969);
          F.exports = { Validation: m(function(b) {
            this.message = "validation failed", this.errors = b, this.ajv = this.validation = !0;
          }), MissingRef: m(j) }, j.message = function(b, w) {
            return "can't resolve reference " + w + " from id " + b;
          };
        }, 3368: function(F, u, l) {
          function j(g) {
            return w.copy(j[g = g == "full" ? "full" : "fast"]);
          }
          function m(y) {
            var c = y.match(d);
            if (!c) return !1;
            var C = +c[1], y = +c[2], c = +c[3];
            return 1 <= y && y <= 12 && 1 <= c && c <= (y != 2 || (C = C) % 4 != 0 || C % 100 == 0 && C % 400 != 0 ? a[y] : 29);
          }
          function E(v, C) {
            var k = v.match(o);
            if (!k) return !1;
            var y = k[1], c = k[2], v = k[3], k = k[5];
            return (y <= 23 && c <= 59 && v <= 59 || y == 23 && c == 59 && v == 60) && (!C || k);
          }
          function b(g) {
            if (n.test(g)) return !1;
            try {
              return new RegExp(g), !0;
            } catch {
              return !1;
            }
          }
          var w = l(3724), d = /^(\d\d\d\d)-(\d\d)-(\d\d)$/, a = [0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31], o = /^(\d\d):(\d\d):(\d\d)(\.\d+)?(z|[+-]\d\d(?::?\d\d)?)?$/i, e = /^(?=.{1,253}\.?$)[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\.[a-z0-9](?:[-0-9a-z]{0,61}[0-9a-z])?)*\.?$/i, t = /^(?:[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, i = /^(?:(?:[^\x00-\x20"'<>%\\^`{|}]|%[0-9a-f]{2})|\{[+#./;?&=,!@|]?(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\*)?(?:,(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\*)?)*\})*$/i, s = /^(?:(?:http[s\u017F]?|ftp):\/\/)(?:(?:[\0-\x08\x0E-\x1F!-\x9F\xA1-\u167F\u1681-\u1FFF\u200B-\u2027\u202A-\u202E\u2030-\u205E\u2060-\u2FFF\u3001-\uD7FF\uE000-\uFEFE\uFF00-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+(?::(?:[\0-\x08\x0E-\x1F!-\x9F\xA1-\u167F\u1681-\u1FFF\u200B-\u2027\u202A-\u202E\u2030-\u205E\u2060-\u2FFF\u3001-\uD7FF\uE000-\uFEFE\uFF00-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])*)?@)?(?:(?!10(?:\.[0-9]{1,3}){3})(?!127(?:\.[0-9]{1,3}){3})(?!169\.254(?:\.[0-9]{1,3}){2})(?!192\.168(?:\.[0-9]{1,3}){2})(?!172\.(?:1[6-9]|2[0-9]|3[01])(?:\.[0-9]{1,3}){2})(?:[1-9][0-9]?|1[0-9][0-9]|2[01][0-9]|22[0-3])(?:\.(?:1?[0-9]{1,2}|2[0-4][0-9]|25[0-5])){2}(?:\.(?:[1-9][0-9]?|1[0-9][0-9]|2[0-4][0-9]|25[0-4]))|(?:(?:(?:[0-9a-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+-)*(?:[0-9a-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+)(?:\.(?:(?:[0-9a-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+-)*(?:[0-9a-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+)*(?:\.(?:(?:[a-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]){2,})))(?::[0-9]{2,5})?(?:\/(?:[\0-\x08\x0E-\x1F!-\x9F\xA1-\u167F\u1681-\u1FFF\u200B-\u2027\u202A-\u202E\u2030-\u205E\u2060-\u2FFF\u3001-\uD7FF\uE000-\uFEFE\uFF00-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])*)?$/i, h = /^(?:urn:uuid:)?[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/i, r = /^(?:\/(?:[^~/]|~0|~1)*)*$/, p = /^#(?:\/(?:[a-z0-9_\-.!$&'()*+,;:=@]|%[0-9a-f]{2}|~0|~1)*)*$/i, l = /^(?:0|[1-9][0-9]*)(?:#|(?:\/(?:[^~/]|~0|~1)*)*)$/;
          (F.exports = j).fast = { date: /^\d\d\d\d-[0-1]\d-[0-3]\d$/, time: /^(?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\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|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)$/i, uri: /^(?:[a-z][a-z0-9+\-.]*:)(?:\/?\/)?[^\s]*$/i, "uri-reference": /^(?:(?:[a-z][a-z0-9+\-.]*:)?\/?\/)?(?:[^\\\s#][^\s#]*)?(?:#[^\\\s]*)?$/i, "uri-template": i, url: s, 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: e, 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: b, uuid: h, "json-pointer": r, "json-pointer-uri-fragment": p, "relative-json-pointer": l }, j.full = { date: m, time: E, "date-time": function(g) {
            return g = g.split(I), g.length == 2 && m(g[0]) && E(g[1], !0);
          }, uri: function(g) {
            return f.test(g) && t.test(g);
          }, "uri-reference": /^(?:[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, "uri-template": i, url: s, 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: e, 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: b, uuid: h, "json-pointer": r, "json-pointer-uri-fragment": p, "relative-json-pointer": l };
          var I = /t|\s/i, f = /\/|:/, n = /[^\\]\\Z/;
        }, 5689: function(F, u, D) {
          function j(l, I, f, n) {
            function g() {
              var A = J.validate, x = A.apply(this, arguments);
              return g.errors = A.errors, x;
            }
            function C(A, x, M, Z) {
              var G = !x || x && x.schema == A;
              if (x.schema != I.schema) return j.call(W, A, x, M, Z);
              M = A.$async === !0, Z = s({ isTop: !0, schema: A, isRoot: G, baseId: Z, root: x, schemaPath: "", errSchemaPath: "#", errorPath: '""', MissingRefError: t.MissingRef, RULES: R, validate: s, util: e, resolve: o, resolveRef: y, usePattern: k, useDefault: S, useCustomRule: L, opts: _, formats: de, logger: W.logger, self: W }), Z = a(O, w) + a(H, E) + a(ie, b) + a(q, d) + Z, _.processCode && (Z = _.processCode(Z, A));
              try {
                var $ = new Function("self", "RULES", "formats", "root", "refVal", "defaults", "customRules", "equal", "ucs2length", "ValidationError", Z)(W, R, de, I, O, ie, q, r, h, p);
                O[0] = $;
              } catch (X) {
                throw W.logger.error("Error compiling schema, function code:", Z), X;
              }
              return $.schema = A, $.errors = null, $.refs = z, $.refVal = O, $.root = G ? $ : x, M && ($.$async = !0), _.sourceCode === !0 && ($.source = { code: Z, patterns: H, defaults: ie }), $;
            }
            function y(A, x, M) {
              x = o.url(A, x);
              var Z = z[x];
              if (Z !== void 0) return v(G = O[Z], $ = "refVal[" + Z + "]");
              if (!M && I.refs) {
                var X = I.refs[x];
                if (X !== void 0) return v(G = I.refVal[X], $ = c(x, G));
              }
              var G, $ = c(x), X = o.call(W, C, I, x);
              if (X !== void 0 || (G = f && f[x]) && (X = o.inlineRef(G, _.inlineRefs) ? G : j.call(W, G, I, f, A)), X !== void 0) return function(te, se) {
                te = z[te], O[te] = se;
              }(x, X), v(X, $);
              delete z[x];
            }
            function c(A, x) {
              var M = O.length;
              return O[M] = x, "refVal" + (z[A] = M);
            }
            function v(A, x) {
              return typeof A == "object" || typeof A == "boolean" ? { code: x, schema: A, inline: !0 } : { code: x, $async: A && !!A.$async };
            }
            function k(A) {
              var x = Y[A];
              return x === void 0 && (x = Y[A] = H.length, H[x] = A), "pattern" + x;
            }
            function S(A) {
              switch (typeof A) {
                case "boolean":
                case "number":
                  return "" + A;
                case "string":
                  return e.toQuotedString(A);
                case "object":
                  if (A === null) return "null";
                  var x = i(A), M = U[x];
                  return M === void 0 && (M = U[x] = ie.length, ie[M] = A), "default" + M;
              }
            }
            function L(A, x, M, Z) {
              if (W._opts.validateSchema !== !1) {
                var $ = A.definition.dependencies;
                if ($ && !$.every(function(ce) {
                  return Object.prototype.hasOwnProperty.call(M, ce);
                })) throw new Error("parent schema must have all required keywords: " + $.join(","));
                var X = A.definition.validateSchema;
                if (X && !X(x)) {
                  var te = "keyword schema is invalid: " + W.errorsText(X.errors);
                  if (W._opts.validateSchema != "log") throw new Error(te);
                  W.logger.error(te);
                }
              }
              var G, $ = A.definition.compile, X = A.definition.inline, te = A.definition.macro;
              if ($) G = $.call(W, x, M, Z);
              else if (te) G = te.call(W, x, M, Z), _.validateSchema !== !1 && W.validateSchema(G, !0);
              else if (X) G = X.call(W, Z, A.keyword, x, M);
              else if (!(G = A.definition.validate)) return;
              if (G === void 0) throw new Error('custom keyword "' + A.keyword + '"failed to compile');
              return A = q.length, { code: "customRule" + A, validate: q[A] = G };
            }
            var W = this, _ = this._opts, O = [void 0], z = {}, H = [], Y = {}, ie = [], U = {}, q = [];
            I = I || { schema: l, refVal: O, refs: z };
            var ee = (function(A, x, M) {
              var Z = m.call(this, A, x, M);
              return 0 <= Z ? { index: Z, compiling: !0 } : (Z = this._compilations.length, this._compilations[Z] = { schema: A, root: x, baseId: M }, { index: Z, compiling: !1 });
            }).call(this, l, I, n), J = this._compilations[ee.index];
            if (ee.compiling) return J.callValidate = g;
            var de = this._formats, R = this.RULES;
            try {
              var T = C(l, I, f, n);
              J.validate = T;
              var N = J.callValidate;
              return N && (N.schema = T.schema, N.errors = null, N.refs = T.refs, N.refVal = T.refVal, N.root = T.root, N.$async = T.$async, _.sourceCode && (N.source = T.source)), T;
            } finally {
              (function(A, x, M) {
                0 <= (M = m.call(this, A, x, M)) && this._compilations.splice(M, 1);
              }).call(this, l, I, n);
            }
          }
          function m(l, I, f) {
            for (var n = 0; n < this._compilations.length; n++) {
              var g = this._compilations[n];
              if (g.schema == l && g.root == I && g.baseId == f) return n;
            }
            return -1;
          }
          function E(l, I) {
            return "var pattern" + l + " = new RegExp(" + e.toQuotedString(I[l]) + ");";
          }
          function b(l) {
            return "var default" + l + " = defaults[" + l + "];";
          }
          function w(l, I) {
            return I[l] === void 0 ? "" : "var refVal" + l + " = refVal[" + l + "];";
          }
          function d(l) {
            return "var customRule" + l + " = customRules[" + l + "];";
          }
          function a(l, I) {
            if (!l.length) return "";
            for (var f = "", n = 0; n < l.length; n++) f += I(n, l);
            return f;
          }
          var o = D(3969), e = D(3724), t = D(5359), i = D(3508), s = D(1869), h = e.ucs2length, r = D(2303), p = t.Validation;
          F.exports = j;
        }, 3969: function(F, u, D) {
          function j(I, f, v) {
            var g = this._refs[v];
            if (typeof g == "string") {
              if (!this._refs[g]) return j.call(this, I, f, g);
              g = this._refs[g];
            }
            if ((g = g || this._schemas[v]) instanceof s) return b(g.schema, this._opts.inlineRefs) ? g.schema : g.validate || this._compile(g);
            var C, y, c, v = m.call(this, f, v);
            return v && (C = v.schema, f = v.root, c = v.baseId), C instanceof s ? y = C.validate || I.call(this, C.schema, f, void 0, c) : C !== void 0 && (y = b(C, this._opts.inlineRefs) ? C : I.call(this, C, f, void 0, c)), y;
          }
          function m(I, f) {
            var n = e.parse(f), g = d(n), C = w(this._getId(I.schema));
            if (Object.keys(I.schema).length === 0 || g !== C) {
              var y = a(g), g = this._refs[y];
              if (typeof g == "string") return (function(v, k, S) {
                var L = m.call(this, v, k);
                if (L) {
                  var W = L.schema, k = L.baseId;
                  return v = L.root, L = this._getId(W), L && (k = o(k, L)), E.call(this, S, k, W, v);
                }
              }).call(this, I, g, n);
              if (g instanceof s) g.validate || this._compile(g), I = g;
              else {
                if (!((g = this._schemas[y]) instanceof s)) return;
                if (g.validate || this._compile(g), y == a(f)) return { schema: g, root: I, baseId: C };
                I = g;
              }
              if (!I.schema) return;
              C = w(this._getId(I.schema));
            }
            return E.call(this, n, C, I.schema, I);
          }
          function E(I, f, n, g) {
            if (I.fragment = I.fragment || "", I.fragment.slice(0, 1) == "/") {
              for (var C = I.fragment.split("/"), y = 1; y < C.length; y++) {
                var c = C[y];
                if (c) {
                  if ((n = n[c = i.unescapeFragment(c)]) === void 0) break;
                  r[c] || ((c = this._getId(n)) && (f = o(f, c)), n.$ref && (c = o(f, n.$ref), (c = m.call(this, g, c)) && (n = c.schema, g = c.root, f = c.baseId)));
                }
              }
              return n !== void 0 && n !== g.schema ? { schema: n, root: g, baseId: f } : void 0;
            }
          }
          function b(I, f) {
            return f !== !1 && (f === void 0 || f === !0 ? function n(g) {
              var C;
              if (Array.isArray(g)) {
                for (var y = 0; y < g.length; y++) if (typeof (C = g[y]) == "object" && !n(C)) return !1;
              } else for (var c in g)
                if (c == "$ref" || typeof (C = g[c]) == "object" && !n(C)) return !1;
              return !0;
            }(I) : f ? function n(g) {
              var C, y = 0;
              if (Array.isArray(g)) {
                for (var c = 0; c < g.length; c++) if (typeof (C = g[c]) == "object" && (y += n(C)), y == 1 / 0) return 1 / 0;
              } else for (var v in g) {
                if (v == "$ref") return 1 / 0;
                if (p[v]) y++;
                else if (typeof (C = g[v]) == "object" && (y += n(C) + 1), y == 1 / 0) return 1 / 0;
              }
              return y;
            }(I) <= f : void 0);
          }
          function w(I, f) {
            return f !== !1 && (I = a(I)), d(e.parse(I));
          }
          function d(I) {
            return e.serialize(I).split("#")[0] + "#";
          }
          function a(I) {
            return I ? I.replace(l, "") : "";
          }
          function o(I, f) {
            return f = a(f), e.resolve(I, f);
          }
          var e = D(7533), t = D(2303), i = D(3724), s = D(4293), h = D(500);
          (F.exports = j).normalizeId = a, j.fullPath = w, j.url = o, j.ids = function(I) {
            var f = a(this._getId(I)), n = { "": f }, g = { "": w(f, !1) }, C = {}, y = this;
            return h(I, { allKeys: !0 }, function(c, v, k, S, L, W, _) {
              if (v !== "") {
                var O = y._getId(c), z = n[S], L = g[S] + "/" + L;
                if (_ !== void 0 && (L += "/" + (typeof _ == "number" ? _ : i.escapeFragment(_))), typeof O == "string") {
                  if (O = z = a(z ? e.resolve(z, O) : O), _ = y._refs[O], (_ = typeof _ == "string" ? y._refs[_] : _) && _.schema) {
                    if (!t(c, _.schema)) throw new Error('id "' + O + '" resolves to more than one schema');
                  } else if (O != a(L)) if (O[0] == "#") {
                    if (C[O] && !t(c, C[O])) throw new Error('id "' + O + '" resolves to more than one schema');
                    C[O] = c;
                  } else y._refs[O] = L;
                }
                n[v] = z, g[v] = L;
              }
            }), C;
          }, j.inlineRef = b, j.schema = m;
          var r = i.toHash(["properties", "patternProperties", "enum", "dependencies", "definitions"]), p = i.toHash(["type", "format", "pattern", "maxLength", "minLength", "maxProperties", "minProperties", "maxItems", "minItems", "maximum", "minimum", "uniqueItems", "multipleOf", "required", "enum"]), l = /#\/?$/;
        }, 742: function(F, u, D) {
          var j = D(9646), m = D(3724).toHash;
          F.exports = function() {
            var E = [{ type: "number", rules: [{ maximum: ["exclusiveMaximum"] }, { minimum: ["exclusiveMinimum"] }, "multipleOf", "format"] }, { type: "string", rules: ["maxLength", "minLength", "pattern", "format"] }, { type: "array", rules: ["maxItems", "minItems", "items", "contains", "uniqueItems"] }, { type: "object", rules: ["maxProperties", "minProperties", "required", "dependencies", "propertyNames", { properties: ["additionalProperties", "patternProperties"] }] }, { rules: ["$ref", "const", "enum", "not", "anyOf", "oneOf", "allOf", "if"] }], b = ["type", "$comment"];
            return E.all = m(b), E.types = m(["number", "integer", "string", "array", "object", "boolean", "null"]), E.forEach(function(w) {
              w.rules = w.rules.map(function(d) {
                var a, o;
                return typeof d == "object" && (o = d[a = Object.keys(d)[0]], d = a, o.forEach(function(e) {
                  b.push(e), E.all[e] = !0;
                })), b.push(d), E.all[d] = { keyword: d, code: j[d], implements: o };
              }), E.all.$comment = { keyword: "$comment", code: j.$comment }, w.type && (E.types[w.type] = w);
            }), E.keywords = m(b.concat(["$schema", "$id", "id", "$data", "$async", "title", "description", "default", "definitions", "examples", "readOnly", "writeOnly", "contentMediaType", "contentEncoding", "additionalItems", "then", "else"])), E.custom = {}, E;
          };
        }, 4293: function(F, u, D) {
          var j = D(3724);
          F.exports = function(m) {
            j.copy(m, this);
          };
        }, 6887: function(F) {
          F.exports = function(u) {
            for (var D, j = 0, m = u.length, E = 0; E < m; ) j++, 55296 <= (D = u.charCodeAt(E++)) && D <= 56319 && E < m && (64512 & (D = u.charCodeAt(E))) == 56320 && E++;
            return j;
          };
        }, 3724: function(F, u, D) {
          function j(r, p, l, I) {
            var f = I ? " !== " : " === ", n = I ? " || " : " && ", g = I ? "!" : "", C = I ? "" : "!";
            switch (r) {
              case "null":
                return p + f + "null";
              case "array":
                return g + "Array.isArray(" + p + ")";
              case "object":
                return "(" + g + p + n + "typeof " + p + f + '"object"' + n + C + "Array.isArray(" + p + "))";
              case "integer":
                return "(typeof " + p + f + '"number"' + n + C + "(" + p + " % 1)" + n + p + f + p + (l ? n + g + "isFinite(" + p + ")" : "") + ")";
              case "number":
                return "(typeof " + p + f + '"' + r + '"' + (l ? n + g + "isFinite(" + p + ")" : "") + ")";
              default:
                return "typeof " + p + f + '"' + r + '"';
            }
          }
          function m(r) {
            for (var p = {}, l = 0; l < r.length; l++) p[r[l]] = !0;
            return p;
          }
          function E(r) {
            return typeof r == "number" ? "[" + r + "]" : t.test(r) ? "." + r : "['" + b(r) + "']";
          }
          function b(r) {
            return r.replace(i, "\\$&").replace(/\n/g, "\\n").replace(/\r/g, "\\r").replace(/\f/g, "\\f").replace(/\t/g, "\\t");
          }
          function w(r) {
            return "'" + b(r) + "'";
          }
          function d(r, p) {
            return r == '""' ? p : (r + " + " + p).replace(/([^\\])' \+ '/g, "$1");
          }
          function a(r) {
            return r.replace(/~/g, "~0").replace(/\//g, "~1");
          }
          function o(r) {
            return r.replace(/~1/g, "/").replace(/~0/g, "~");
          }
          F.exports = { copy: function(r, p) {
            for (var l in p = p || {}, r) p[l] = r[l];
            return p;
          }, checkDataType: j, checkDataTypes: function(n, p, l) {
            if (n.length === 1) return j(n[0], p, l, !0);
            var I, f = "", n = m(n);
            for (I in n.array && n.object && (f = n.null ? "(" : "(!" + p + " || ", f += "typeof " + p + ' !== "object")', delete n.null, delete n.array, delete n.object), n.number && delete n.integer, n) f += (f ? " && " : "") + j(I, p, l, !0);
            return f;
          }, coerceToTypes: function(r, p) {
            if (!Array.isArray(p)) return e[p] ? [p] : r === "array" && p === "array" ? ["array"] : void 0;
            for (var l = [], I = 0; I < p.length; I++) {
              var f = p[I];
              (e[f] || r === "array" && f === "array") && (l[l.length] = f);
            }
            return l.length ? l : void 0;
          }, toHash: m, getProperty: E, escapeQuotes: b, equal: D(2303), ucs2length: D(6887), varOccurences: function(r, p) {
            return p += "[^0-9]", p = r.match(new RegExp(p, "g")), p ? p.length : 0;
          }, varReplace: function(r, p, l) {
            return p += "([^0-9])", l = l.replace(/\$/g, "$$$$"), r.replace(new RegExp(p, "g"), l + "$1");
          }, schemaHasRules: function(r, p) {
            if (typeof r == "boolean") return !r;
            for (var l in r) if (p[l]) return !0;
          }, schemaHasRulesExcept: function(r, p, l) {
            if (typeof r == "boolean") return !r && l != "not";
            for (var I in r) if (I != l && p[I]) return !0;
          }, schemaUnknownRules: function(r, p) {
            if (typeof r != "boolean") {
              for (var l in r) if (!p[l]) return l;
            }
          }, toQuotedString: w, getPathExpr: function(r, p, l, I) {
            return d(r, l ? "'/' + " + p + (I ? "" : ".replace(/~/g, '~0').replace(/\\//g, '~1')") : I ? "'[' + " + p + " + ']'" : "'[\\'' + " + p + " + '\\']'");
          }, getPath: function(r, p, l) {
            return p = w(l ? "/" + a(p) : E(p)), d(r, p);
          }, getData: function(r, p, l) {
            var I, f, n;
            if (r === "") return "rootData";
            if (r[0] == "/") {
              if (!s.test(r)) throw new Error("Invalid JSON-pointer: " + r);
              I = r, f = "rootData";
            } else {
              if (!(n = r.match(h))) throw new Error("Invalid JSON-pointer: " + r);
              if (r = +n[1], (I = n[2]) == "#") {
                if (p <= r) throw new Error("Cannot access property/index " + r + " levels up, current level is " + p);
                return l[p - r];
              }
              if (p < r) throw new Error("Cannot access data " + r + " levels up, current level is " + p);
              if (f = "data" + (p - r || ""), !I) return f;
            }
            for (var g = f, C = I.split("/"), y = 0; y < C.length; y++) {
              var c = C[y];
              c && (f += E(o(c)), g += " && " + f);
            }
            return g;
          }, unescapeFragment: function(r) {
            return o(decodeURIComponent(r));
          }, unescapeJsonPointer: o, escapeFragment: function(r) {
            return encodeURIComponent(a(r));
          }, escapeJsonPointer: a };
          var e = m(["string", "number", "integer", "boolean", "null"]), t = /^[a-z$_][a-z$_0-9]*$/i, i = /'|\\/g, s = /^\/(?:[^~]|~0|~1)*$/, h = /^([0-9]+)(#|\/(?:[^~]|~0|~1)*)?$/;
        }, 9394: function(F) {
          var u = ["multipleOf", "maximum", "exclusiveMaximum", "minimum", "exclusiveMinimum", "maxLength", "minLength", "pattern", "additionalItems", "maxItems", "minItems", "uniqueItems", "maxProperties", "minProperties", "required", "additionalProperties", "enum", "format", "const"];
          F.exports = function(D, j) {
            for (var m = 0; m < j.length; m++) {
              D = JSON.parse(JSON.stringify(D));
              for (var E = j[m].split("/"), b = D, w = 1; w < E.length; w++) b = b[E[w]];
              for (w = 0; w < u.length; w++) {
                var d = u[w], a = b[d];
                a && (b[d] = { anyOf: [a, { $ref: "https://raw.githubusercontent.com/ajv-validator/ajv/master/lib/refs/data.json#" }] });
              }
            }
            return D;
          };
        }, 5868: function(F, u, D) {
          D = D(38), F.exports = { $id: "https://github.com/ajv-validator/ajv/blob/master/lib/definition_schema.js", definitions: { simpleTypes: D.definitions.simpleTypes }, type: "object", dependencies: { schema: ["validate"], $data: ["validate"], statements: ["inline"], valid: { not: { required: ["macro"] } } }, properties: { type: D.properties.type, schema: { type: "boolean" }, statements: { type: "boolean" }, dependencies: { type: "array", items: { type: "string" } }, metaSchema: { type: "object" }, modifying: { type: "boolean" }, valid: { type: "boolean" }, $data: { type: "boolean" }, async: { type: "boolean" }, errors: { anyOf: [{ type: "boolean" }, { const: "full" }] } } };
        }, 1796: function(F) {
          F.exports = function(u, D, j) {
            var m, E, b, w, d, a, o = " ", e = u.level, t = u.dataLevel, i = u.schema[D], s = u.schemaPath + u.util.getProperty(D), h = u.errSchemaPath + "/" + D, r = !u.opts.allErrors, p = "data" + (t || ""), l = u.opts.$data && i && i.$data, I = l ? (o += " var schema" + e + " = " + u.util.getData(i.$data, t, u.dataPathArr) + "; ", "schema" + e) : i, f = D == "maximum", n = f ? "exclusiveMaximum" : "exclusiveMinimum", g = u.schema[n], C = u.opts.$data && g && g.$data, y = f ? "<" : ">", c = f ? ">" : "<", v = void 0;
            if (!l && typeof i != "number" && i !== void 0) throw new Error(D + " must be number");
            if (!C && g !== void 0 && typeof g != "number" && typeof g != "boolean") throw new Error(n + " must be number or boolean");
            C ? (m = "exclusive" + e, E = "exclType" + e, b = "exclIsNumber" + e, w = "' + " + (d = "op" + e) + " + '", o += " var schemaExcl" + e + " = " + (t = u.util.getData(g.$data, t, u.dataPathArr)) + "; ", v = n, (a = a || []).push(o += " var " + m + "; var " + E + " = typeof " + (t = "schemaExcl" + e) + "; if (" + E + " != 'boolean' && " + E + " != 'undefined' && " + E + " != 'number') { "), o = "", u.createErrors !== !1 ? (o += " { keyword: '" + (v || "_exclusiveLimit") + "' , dataPath: (dataPath || '') + " + u.errorPath + " , schemaPath: " + u.util.toQuotedString(h) + " , params: {} ", u.opts.messages !== !1 && (o += " , message: '" + n + " should be boolean' "), u.opts.verbose && (o += " , schema: validate.schema" + s + " , parentSchema: validate.schema" + u.schemaPath + " , data: " + p + " "), o += " } ") : o += " {} ", k = o, o = a.pop(), !u.compositeRule && r ? u.async ? o += " throw new ValidationError([" + k + "]); " : o += " validate.errors = [" + k + "]; return false; " : o += " var err = " + k + ";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ", o += " } else if ( ", l && (o += " (" + I + " !== undefined && typeof " + I + " != 'number') || "), o += " " + E + " == 'number' ? ( (" + m + " = " + I + " === undefined || " + t + " " + y + "= " + I + ") ? " + p + " " + c + "= " + t + " : " + p + " " + c + " " + I + " ) : ( (" + m + " = " + t + " === true) ? " + p + " " + c + "= " + I + " : " + p + " " + c + " " + I + " ) || " + p + " !== " + p + ") { var op" + e + " = " + m + " ? '" + y + "' : '" + y + "='; ", i === void 0 && (h = u.errSchemaPath + "/" + (v = n), I = t, l = C)) : (w = y, (b = typeof g == "number") && l ? (d = "'" + w + "'", o += " if ( ", l && (o += " (" + I + " !== undefined && typeof " + I + " != 'number') || "), o += " ( " + I + " === undefined || " + g + " " + y + "= " + I + " ? " + p + " " + c + "= " + g + " : " + p + " " + c + " " + I + " ) || " + p + " !== " + p + ") { ") : (b && i === void 0 ? (m = !0, h = u.errSchemaPath + "/" + (v = n), I = g, c += "=") : (b && (I = Math[f ? "min" : "max"](g, i)), g === (!b || I) ? (m = !0, h = u.errSchemaPath + "/" + (v = n), c += "=") : (m = !1, w += "=")), d = "'" + w + "'", o += " if ( ", l && (o += " (" + I + " !== undefined && typeof " + I + " != 'number') || "), o += " " + p + " " + c + " " + I + " || " + p + " !== " + p + ") { ")), v = v || D, (a = a || []).push(o), o = "", u.createErrors !== !1 ? (o += " { keyword: '" + (v || "_limit") + "' , dataPath: (dataPath || '') + " + u.errorPath + " , schemaPath: " + u.util.toQuotedString(h) + " , params: { comparison: " + d + ", limit: " + I + ", exclusive: " + m + " } ", u.opts.messages !== !1 && (o += " , message: 'should be " + w + " ", o += l ? "' + " + I : I + "'"), u.opts.verbose && (o += " , schema:  ", o += l ? "validate.schema" + s : "" + i, o += "         , parentSchema: validate.schema" + u.schemaPath + " , data: " + p + " "), o += " } ") : o += " {} ";
            var k = o;
            return o = a.pop(), !u.compositeRule && r ? u.async ? o += " throw new ValidationError([" + k + "]); " : o += " validate.errors = [" + k + "]; return false; " : o += " var err = " + k + ";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ", o += " } ", r && (o += " else { "), o;
          };
        }, 2407: function(F) {
          F.exports = function(u, D, j) {
            var m = " ", t = u.level, e = u.dataLevel, E = u.schema[D], b = u.schemaPath + u.util.getProperty(D), w = u.errSchemaPath + "/" + D, d = !u.opts.allErrors, a = "data" + (e || ""), o = u.opts.$data && E && E.$data, e = o ? (m += " var schema" + t + " = " + u.util.getData(E.$data, e, u.dataPathArr) + "; ", "schema" + t) : E;
            if (!o && typeof E != "number") throw new Error(D + " must be number");
            m += "if ( ", o && (m += " (" + e + " !== undefined && typeof " + e + " != 'number') || ");
            var t = D, i = i || [];
            return i.push(m += " " + a + ".length " + (D == "maxItems" ? ">" : "<") + " " + e + ") { "), m = "", u.createErrors !== !1 ? (m += " { keyword: '" + (t || "_limitItems") + "' , dataPath: (dataPath || '') + " + u.errorPath + " , schemaPath: " + u.util.toQuotedString(w) + " , params: { limit: " + e + " } ", u.opts.messages !== !1 && (m += " , message: 'should NOT have ", m += D == "maxItems" ? "more" : "fewer", m += " than ", m += o ? "' + " + e + " + '" : "" + E, m += " items' "), u.opts.verbose && (m += " , schema:  ", m += o ? "validate.schema" + b : "" + E, m += "         , parentSchema: validate.schema" + u.schemaPath + " , data: " + a + " "), m += " } ") : m += " {} ", a = m, m = i.pop(), !u.compositeRule && d ? u.async ? m += " throw new ValidationError([" + a + "]); " : m += " validate.errors = [" + a + "]; return false; " : m += " var err = " + a + ";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ", m += "} ", d && (m += " else { "), m;
          };
        }, 1250: function(F) {
          F.exports = function(u, D, j) {
            var m = " ", t = u.level, e = u.dataLevel, E = u.schema[D], b = u.schemaPath + u.util.getProperty(D), w = u.errSchemaPath + "/" + D, d = !u.opts.allErrors, a = "data" + (e || ""), o = u.opts.$data && E && E.$data, e = o ? (m += " var schema" + t + " = " + u.util.getData(E.$data, e, u.dataPathArr) + "; ", "schema" + t) : E;
            if (!o && typeof E != "number") throw new Error(D + " must be number");
            m += "if ( ", o && (m += " (" + e + " !== undefined && typeof " + e + " != 'number') || "), u.opts.unicode === !1 ? m += " " + a + ".length " : m += " ucs2length(" + a + ") ";
            var t = D, i = i || [];
            return i.push(m += " " + (D == "maxLength" ? ">" : "<") + " " + e + ") { "), m = "", u.createErrors !== !1 ? (m += " { keyword: '" + (t || "_limitLength") + "' , dataPath: (dataPath || '') + " + u.errorPath + " , schemaPath: " + u.util.toQuotedString(w) + " , params: { limit: " + e + " } ", u.opts.messages !== !1 && (m += " , message: 'should NOT be ", m += D == "maxLength" ? "longer" : "shorter", m += " than ", m += o ? "' + " + e + " + '" : "" + E, m += " characters' "), u.opts.verbose && (m += " , schema:  ", m += o ? "validate.schema" + b : "" + E, m += "         , parentSchema: validate.schema" + u.schemaPath + " , data: " + a + " "), m += " } ") : m += " {} ", a = m, m = i.pop(), !u.compositeRule && d ? u.async ? m += " throw new ValidationError([" + a + "]); " : m += " validate.errors = [" + a + "]; return false; " : m += " var err = " + a + ";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ", m += "} ", d && (m += " else { "), m;
          };
        }, 2596: function(F) {
          F.exports = function(u, D, j) {
            var m = " ", t = u.level, e = u.dataLevel, E = u.schema[D], b = u.schemaPath + u.util.getProperty(D), w = u.errSchemaPath + "/" + D, d = !u.opts.allErrors, a = "data" + (e || ""), o = u.opts.$data && E && E.$data, e = o ? (m += " var schema" + t + " = " + u.util.getData(E.$data, e, u.dataPathArr) + "; ", "schema" + t) : E;
            if (!o && typeof E != "number") throw new Error(D + " must be number");
            m += "if ( ", o && (m += " (" + e + " !== undefined && typeof " + e + " != 'number') || ");
            var t = D, i = i || [];
            return i.push(m += " Object.keys(" + a + ").length " + (D == "maxProperties" ? ">" : "<") + " " + e + ") { "), m = "", u.createErrors !== !1 ? (m += " { keyword: '" + (t || "_limitProperties") + "' , dataPath: (dataPath || '') + " + u.errorPath + " , schemaPath: " + u.util.toQuotedString(w) + " , params: { limit: " + e + " } ", u.opts.messages !== !1 && (m += " , message: 'should NOT have ", m += D == "maxProperties" ? "more" : "fewer", m += " than ", m += o ? "' + " + e + " + '" : "" + E, m += " properties' "), u.opts.verbose && (m += " , schema:  ", m += o ? "validate.schema" + b : "" + E, m += "         , parentSchema: validate.schema" + u.schemaPath + " , data: " + a + " "), m += " } ") : m += " {} ", a = m, m = i.pop(), !u.compositeRule && d ? u.async ? m += " throw new ValidationError([" + a + "]); " : m += " validate.errors = [" + a + "]; return false; " : m += " var err = " + a + ";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ", m += "} ", d && (m += " else { "), m;
          };
        }, 9486: function(F) {
          F.exports = function(u, D, j) {
            var m = " ", E = u.schema[D], b = u.schemaPath + u.util.getProperty(D), w = u.errSchemaPath + "/" + D, d = !u.opts.allErrors, a = u.util.copy(u), o = "";
            a.level++;
            var e = "valid" + a.level, t = a.baseId, i = !0, s = E;
            if (s) for (var h, r = -1, p = s.length - 1; r < p; ) h = s[r += 1], (u.opts.strictKeywords ? typeof h == "object" && 0 < Object.keys(h).length || h === !1 : u.util.schemaHasRules(h, u.RULES.all)) && (i = !1, a.schema = h, a.schemaPath = b + "[" + r + "]", a.errSchemaPath = w + "/" + r, m += "  " + u.validate(a) + " ", a.baseId = t, d && (m += " if (" + e + ") { ", o += "}"));
            return d && (m += i ? " if (true) { " : " " + o.slice(0, -1) + " "), m;
          };
        }, 5347: function(F) {
          F.exports = function(u, o, j) {
            var m = " ", E = u.level, t = u.dataLevel, b = u.schema[o], w = u.schemaPath + u.util.getProperty(o), d = u.errSchemaPath + "/" + o, a = !u.opts.allErrors, o = "data" + (t || ""), e = "valid" + E, t = "errs__" + E, i = u.util.copy(u), s = "";
            i.level++;
            var h = "valid" + i.level;
            if (b.every(function(n) {
              return u.opts.strictKeywords ? typeof n == "object" && 0 < Object.keys(n).length || n === !1 : u.util.schemaHasRules(n, u.RULES.all);
            })) {
              var r = i.baseId;
              m += " var " + t + " = errors; var " + e + " = false;  ", E = u.compositeRule, u.compositeRule = i.compositeRule = !0;
              var p = b;
              if (p) for (var l, I = -1, f = p.length - 1; I < f; ) l = p[I += 1], i.schema = l, i.schemaPath = w + "[" + I + "]", i.errSchemaPath = d + "/" + I, m += "  " + u.validate(i) + " ", i.baseId = r, m += " " + e + " = " + e + " || " + h + "; if (!" + e + ") { ", s += "}";
              u.compositeRule = i.compositeRule = E, m += " " + s + " if (!" + e + ") {   var err =   ", u.createErrors !== !1 ? (m += " { keyword: 'anyOf' , dataPath: (dataPath || '') + " + u.errorPath + " , schemaPath: " + u.util.toQuotedString(d) + " , params: {} ", u.opts.messages !== !1 && (m += " , message: 'should match some schema in anyOf' "), u.opts.verbose && (m += " , schema: validate.schema" + w + " , parentSchema: validate.schema" + u.schemaPath + " , data: " + o + " "), m += " } ") : m += " {} ", m += ";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ", !u.compositeRule && a && (u.async ? m += " throw new ValidationError(vErrors); " : m += " validate.errors = vErrors; return false; "), m += " } else {  errors = " + t + "; if (vErrors !== null) { if (" + t + ") vErrors.length = " + t + "; else vErrors = null; } ", u.opts.allErrors && (m += " } ");
            } else a && (m += " if (true) { ");
            return m;
          };
        }, 923: function(F) {
          F.exports = function(u, E, j) {
            var m = " ", b = u.schema[E], E = u.errSchemaPath + "/" + E, b = (u.opts.allErrors, u.util.toQuotedString(b));
            return u.opts.$comment === !0 ? m += " console.log(" + b + ");" : typeof u.opts.$comment == "function" && (m += " self._opts.$comment(" + b + ", " + u.util.toQuotedString(E) + ", validate.root.schema);"), m;
          };
        }, 2617: function(F) {
          F.exports = function(u, i, j) {
            var m = " ", E = u.level, b = u.dataLevel, w = u.schema[i], d = u.schemaPath + u.util.getProperty(i), a = u.errSchemaPath + "/" + i, o = !u.opts.allErrors, e = "data" + (b || ""), t = "valid" + E, i = u.opts.$data && w && w.$data;
            i && (m += " var schema" + E + " = " + u.util.getData(w.$data, b, u.dataPathArr) + "; "), i || (m += " var schema" + E + " = validate.schema" + d + ";");
            var s = s || [];
            return s.push(m += "var " + t + " = equal(" + e + ", schema" + E + "); if (!" + t + ") {   "), m = "", u.createErrors !== !1 ? (m += " { keyword: 'const' , dataPath: (dataPath || '') + " + u.errorPath + " , schemaPath: " + u.util.toQuotedString(a) + " , params: { allowedValue: schema" + E + " } ", u.opts.messages !== !1 && (m += " , message: 'should be equal to constant' "), u.opts.verbose && (m += " , schema: validate.schema" + d + " , parentSchema: validate.schema" + u.schemaPath + " , data: " + e + " "), m += " } ") : m += " {} ", e = m, m = s.pop(), !u.compositeRule && o ? u.async ? m += " throw new ValidationError([" + e + "]); " : m += " validate.errors = [" + e + "]; return false; " : m += " var err = " + e + ";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ", m += " }", o && (m += " else { "), m;
          };
        }, 2119: function(F) {
          F.exports = function(u, r, j) {
            var m = " ", l = u.level, p = u.dataLevel, E = u.schema[r], b = u.schemaPath + u.util.getProperty(r), w = u.errSchemaPath + "/" + r, d = !u.opts.allErrors, a = "data" + (p || ""), o = "valid" + l, e = "errs__" + l, t = u.util.copy(u);
            t.level++;
            var i = "valid" + t.level, s = "i" + l, h = t.dataLevel = u.dataLevel + 1, r = "data" + h, p = u.baseId, l = u.opts.strictKeywords ? typeof E == "object" && 0 < Object.keys(E).length || E === !1 : u.util.schemaHasRules(E, u.RULES.all);
            m += "var " + e + " = errors;var " + o + ";", l ? (o = u.compositeRule, u.compositeRule = t.compositeRule = !0, t.schema = E, t.schemaPath = b, t.errSchemaPath = w, m += " var " + i + " = false; for (var " + s + " = 0; " + s + " < " + a + ".length; " + s + "++) { ", t.errorPath = u.util.getPathExpr(u.errorPath, s, u.opts.jsonPointers, !0), E = a + "[" + s + "]", t.dataPathArr[h] = s, s = u.validate(t), t.baseId = p, u.util.varOccurences(s, r) < 2 ? m += " " + u.util.varReplace(s, r, E) + " " : m += " var " + r + " = " + E + "; " + s + " ", m += " if (" + i + ") break; }  ", u.compositeRule = t.compositeRule = o, m += "  if (!" + i + ") {") : m += " if (" + a + ".length == 0) {";
            var I = I || [];
            return I.push(m), m = "", u.createErrors !== !1 ? (m += " { keyword: 'contains' , dataPath: (dataPath || '') + " + u.errorPath + " , schemaPath: " + u.util.toQuotedString(w) + " , params: {} ", u.opts.messages !== !1 && (m += " , message: 'should contain a valid item' "), u.opts.verbose && (m += " , schema: validate.schema" + b + " , parentSchema: validate.schema" + u.schemaPath + " , data: " + a + " "), m += " } ") : m += " {} ", a = m, m = I.pop(), !u.compositeRule && d ? u.async ? m += " throw new ValidationError([" + a + "]); " : m += " validate.errors = [" + a + "]; return false; " : m += " var err = " + a + ";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ", m += " } else { ", l && (m += "  errors = " + e + "; if (vErrors !== null) { if (" + e + ") vErrors.length = " + e + "; else vErrors = null; } "), u.opts.allErrors && (m += " } "), m;
          };
        }, 1793: function(F) {
          F.exports = function(u, W, j) {
            var m, E, b, w = " ", d = u.level, a = u.dataLevel, _ = u.schema[W], o = u.schemaPath + u.util.getProperty(W), e = u.errSchemaPath + "/" + W, t = !u.opts.allErrors, i = "data" + (a || ""), s = "valid" + d, h = "errs__" + d, r = u.opts.$data && _ && _.$data, p = r ? (w += " var schema" + d + " = " + u.util.getData(_.$data, a, u.dataPathArr) + "; ", "schema" + d) : _, l = "definition" + d, I = this.definition, f = "";
            if (r && I.$data) {
              var n = "keywordValidate" + d, g = I.validateSchema;
              w += " var " + l + " = RULES.custom['" + W + "'].definition; var " + n + " = " + l + ".validate;";
            } else {
              if (!(C = u.useCustomRule(this, _, u.schema, u))) return;
              p = "validate.schema" + o, n = C.code, m = I.compile, E = I.inline, b = I.macro;
            }
            var C, y, c, v, k, S = n + ".errors", L = "i" + d, W = "ruleErr" + d, _ = I.async;
            if (_ && !u.async) throw new Error("async keyword in sync schema");
            return E || b || (w += S + " = null;"), w += "var " + h + " = errors;var " + s + ";", r && I.$data && (f += "}", w += " if (" + p + " === undefined) { " + s + " = true; } else { ", g && (f += "}", w += " " + s + " = " + l + ".validateSchema(" + p + "); if (" + s + ") { ")), E ? I.statements ? w += " " + C.validate + " " : w += " " + s + " = " + C.validate + "; " : b ? (f = "", (g = u.util.copy(u)).level++, v = "valid" + g.level, g.schema = C.validate, g.schemaPath = "", l = u.compositeRule, u.compositeRule = g.compositeRule = !0, C = u.validate(g).replace(/validate\.schema/g, n), u.compositeRule = g.compositeRule = l, w += " " + C) : ((k = k || []).push(w), w = "", w += "  " + n + ".call( ", u.opts.passContext ? w += "this" : w += "self", m || I.schema === !1 ? w += " , " + i + " " : w += " , " + p + " , " + i + " , validate.schema" + u.schemaPath + " ", w += " , (dataPath || '')", u.errorPath != '""' && (w += " + " + u.errorPath), a = w += " , " + (y = a ? "data" + (a - 1 || "") : "parentData") + " , " + (c = a ? u.dataPathArr[a] : "parentDataProperty") + " , rootData )  ", w = k.pop(), I.errors === !1 ? (w += " " + s + " = ", _ && (w += "await "), w += a + "; ") : w += _ ? " var " + (S = "customErrors" + d) + " = null; try { " + s + " = await " + a + "; } catch (e) { " + s + " = false; if (e instanceof ValidationError) " + S + " = e.errors; else throw e; } " : " " + S + " = null; " + s + " = " + a + "; "), I.modifying && (w += " if (" + y + ") " + i + " = " + y + "[" + c + "];"), w += "" + f, I.valid ? t && (w += " if (true) { ") : (w += " if ( ", I.valid === void 0 ? (w += " !", w += b ? "" + v : s) : w += " " + !I.valid + " ", v = this.keyword, (k = k || []).push(w += ") { "), (k = k || []).push(w = ""), w = "", u.createErrors !== !1 ? (w += " { keyword: '" + (v || "custom") + "' , dataPath: (dataPath || '') + " + u.errorPath + " , schemaPath: " + u.util.toQuotedString(e) + " , params: { keyword: '" + this.keyword + "' } ", u.opts.messages !== !1 && (w += ` , message: 'should pass "` + this.keyword + `" keyword validation' `), u.opts.verbose && (w += " , schema: validate.schema" + o + " , parentSchema: validate.schema" + u.schemaPath + " , data: " + i + " "), w += " } ") : w += " {} ", s = w, w = k.pop(), !u.compositeRule && t ? u.async ? w += " throw new ValidationError([" + s + "]); " : w += " validate.errors = [" + s + "]; return false; " : w += " var err = " + s + ";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ", s = w, w = k.pop(), E ? I.errors ? I.errors != "full" && (w += "  for (var " + L + "=" + h + "; " + L + "<errors; " + L + "++) { var " + W + " = vErrors[" + L + "]; if (" + W + ".dataPath === undefined) " + W + ".dataPath = (dataPath || '') + " + u.errorPath + "; if (" + W + ".schemaPath === undefined) { " + W + '.schemaPath = "' + e + '"; } ', u.opts.verbose && (w += " " + W + ".schema = " + p + "; " + W + ".data = " + i + "; "), w += " } ") : I.errors === !1 ? w += " " + s + " " : (w += " if (" + h + " == errors) { " + s + " } else {  for (var " + L + "=" + h + "; " + L + "<errors; " + L + "++) { var " + W + " = vErrors[" + L + "]; if (" + W + ".dataPath === undefined) " + W + ".dataPath = (dataPath || '') + " + u.errorPath + "; if (" + W + ".schemaPath === undefined) { " + W + '.schemaPath = "' + e + '"; } ', u.opts.verbose && (w += " " + W + ".schema = " + p + "; " + W + ".data = " + i + "; "), w += " } } ") : b ? (w += "   var err =   ", u.createErrors !== !1 ? (w += " { keyword: '" + (v || "custom") + "' , dataPath: (dataPath || '') + " + u.errorPath + " , schemaPath: " + u.util.toQuotedString(e) + " , params: { keyword: '" + this.keyword + "' } ", u.opts.messages !== !1 && (w += ` , message: 'should pass "` + this.keyword + `" keyword validation' `), u.opts.verbose && (w += " , schema: validate.schema" + o + " , parentSchema: validate.schema" + u.schemaPath + " , data: " + i + " "), w += " } ") : w += " {} ", w += ";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ", !u.compositeRule && t && (u.async ? w += " throw new ValidationError(vErrors); " : w += " validate.errors = vErrors; return false; ")) : I.errors === !1 ? w += " " + s + " " : (w += " if (Array.isArray(" + S + ")) { if (vErrors === null) vErrors = " + S + "; else vErrors = vErrors.concat(" + S + "); errors = vErrors.length;  for (var " + L + "=" + h + "; " + L + "<errors; " + L + "++) { var " + W + " = vErrors[" + L + "]; if (" + W + ".dataPath === undefined) " + W + ".dataPath = (dataPath || '') + " + u.errorPath + ";  " + W + '.schemaPath = "' + e + '";  ', u.opts.verbose && (w += " " + W + ".schema = " + p + "; " + W + ".data = " + i + "; "), w += " } } else { " + s + " } "), w += " } ", t && (w += " else { ")), w;
          };
        }, 9115: function(F) {
          F.exports = function(u, D, j) {
            var m = " ", E = u.level, e = u.dataLevel, b = u.schema[D], w = u.schemaPath + u.util.getProperty(D), d = u.errSchemaPath + "/" + D, a = !u.opts.allErrors, o = "data" + (e || ""), e = "errs__" + E, t = u.util.copy(u), i = "";
            t.level++;
            var s, h = "valid" + t.level, r = {}, p = {}, l = u.opts.ownProperties;
            for (O in b) O != "__proto__" && (H = b[O], (s = Array.isArray(H) ? p : r)[O] = H);
            m += "var " + e + " = errors;";
            var I = u.errorPath;
            for (O in m += "var missing" + E + ";", p) if ((s = p[O]).length) {
              if (m += " if ( " + o + u.util.getProperty(O) + " !== undefined ", l && (m += " && Object.prototype.hasOwnProperty.call(" + o + ", '" + u.util.escapeQuotes(O) + "') "), a) {
                m += " && ( ";
                var f = s;
                if (f) for (var n = -1, g = f.length - 1; n < g; ) k = f[n += 1], n && (m += " || "), m += " ( ( " + (_ = o + (W = u.util.getProperty(k))) + " === undefined ", l && (m += " || ! Object.prototype.hasOwnProperty.call(" + o + ", '" + u.util.escapeQuotes(k) + "') "), m += ") && (missing" + E + " = " + u.util.toQuotedString(u.opts.jsonPointers ? k : W) + ") ) ";
                m += ")) {  ";
                var C = "missing" + E, y = "' + " + C + " + '";
                u.opts._errorDataPathProperty && (u.errorPath = u.opts.jsonPointers ? u.util.getPathExpr(I, C, !0) : I + " + " + C);
                var c = c || [];
                c.push(m), m = "", u.createErrors !== !1 ? (m += " { keyword: 'dependencies' , dataPath: (dataPath || '') + " + u.errorPath + " , schemaPath: " + u.util.toQuotedString(d) + " , params: { property: '" + u.util.escapeQuotes(O) + "', missingProperty: '" + y + "', depsCount: " + s.length + ", deps: '" + u.util.escapeQuotes(s.length == 1 ? s[0] : s.join(", ")) + "' } ", u.opts.messages !== !1 && (m += " , message: 'should have ", s.length == 1 ? m += "property " + u.util.escapeQuotes(s[0]) : m += "properties " + u.util.escapeQuotes(s.join(", ")), m += " when property " + u.util.escapeQuotes(O) + " is present' "), u.opts.verbose && (m += " , schema: validate.schema" + w + " , parentSchema: validate.schema" + u.schemaPath + " , data: " + o + " "), m += " } ") : m += " {} ", C = m, m = c.pop(), !u.compositeRule && a ? u.async ? m += " throw new ValidationError([" + C + "]); " : m += " validate.errors = [" + C + "]; return false; " : m += " var err = " + C + ";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ";
              } else {
                m += " ) { ";
                var v = s;
                if (v) for (var k, S = -1, L = v.length - 1; S < L; ) {
                  k = v[S += 1];
                  var W = u.util.getProperty(k), y = u.util.escapeQuotes(k), _ = o + W;
                  u.opts._errorDataPathProperty && (u.errorPath = u.util.getPath(I, k, u.opts.jsonPointers)), m += " if ( " + _ + " === undefined ", l && (m += " || ! Object.prototype.hasOwnProperty.call(" + o + ", '" + u.util.escapeQuotes(k) + "') "), m += ") {  var err =   ", u.createErrors !== !1 ? (m += " { keyword: 'dependencies' , dataPath: (dataPath || '') + " + u.errorPath + " , schemaPath: " + u.util.toQuotedString(d) + " , params: { property: '" + u.util.escapeQuotes(O) + "', missingProperty: '" + y + "', depsCount: " + s.length + ", deps: '" + u.util.escapeQuotes(s.length == 1 ? s[0] : s.join(", ")) + "' } ", u.opts.messages !== !1 && (m += " , message: 'should have ", s.length == 1 ? m += "property " + u.util.escapeQuotes(s[0]) : m += "properties " + u.util.escapeQuotes(s.join(", ")), m += " when property " + u.util.escapeQuotes(O) + " is present' "), u.opts.verbose && (m += " , schema: validate.schema" + w + " , parentSchema: validate.schema" + u.schemaPath + " , data: " + o + " "), m += " } ") : m += " {} ", m += ";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } ";
                }
              }
              m += " }   ", a && (i += "}", m += " else { ");
            }
            u.errorPath = I;
            var O, z = t.baseId;
            for (O in r) {
              var H = r[O];
              (u.opts.strictKeywords ? typeof H == "object" && 0 < Object.keys(H).length || H === !1 : u.util.schemaHasRules(H, u.RULES.all)) && (m += " " + h + " = true; if ( " + o + u.util.getProperty(O) + " !== undefined ", l && (m += " && Object.prototype.hasOwnProperty.call(" + o + ", '" + u.util.escapeQuotes(O) + "') "), m += ") { ", t.schema = H, t.schemaPath = w + u.util.getProperty(O), t.errSchemaPath = d + "/" + u.util.escapeFragment(O), m += "  " + u.validate(t) + " ", t.baseId = z, m += " }  ", a && (m += " if (" + h + ") { ", i += "}"));
            }
            return a && (m += "   " + i + " if (" + e + " == errors) {"), m;
          };
        }, 9317: function(F) {
          F.exports = function(u, e, j) {
            var m = " ", E = u.level, t = u.dataLevel, i = u.schema[e], b = u.schemaPath + u.util.getProperty(e), w = u.errSchemaPath + "/" + e, d = !u.opts.allErrors, a = "data" + (t || ""), o = "valid" + E, e = u.opts.$data && i && i.$data, t = (e && (m += " var schema" + E + " = " + u.util.getData(i.$data, t, u.dataPathArr) + "; "), "i" + E), i = "schema" + E;
            e || (m += " var " + i + " = validate.schema" + b + ";"), m += "var " + o + ";", e && (m += " if (schema" + E + " === undefined) " + o + " = true; else if (!Array.isArray(schema" + E + ")) " + o + " = false; else {"), m += o + " = false;for (var " + t + "=0; " + t + "<" + i + ".length; " + t + "++) if (equal(" + a + ", " + i + "[" + t + "])) { " + o + " = true; break; }", e && (m += "  }  ");
            var s = s || [];
            return s.push(m += " if (!" + o + ") {   "), m = "", u.createErrors !== !1 ? (m += " { keyword: 'enum' , dataPath: (dataPath || '') + " + u.errorPath + " , schemaPath: " + u.util.toQuotedString(w) + " , params: { allowedValues: schema" + E + " } ", u.opts.messages !== !1 && (m += " , message: 'should be equal to one of the allowed values' "), u.opts.verbose && (m += " , schema: validate.schema" + b + " , parentSchema: validate.schema" + u.schemaPath + " , data: " + a + " "), m += " } ") : m += " {} ", a = m, m = s.pop(), !u.compositeRule && d ? u.async ? m += " throw new ValidationError([" + a + "]); " : m += " validate.errors = [" + a + "]; return false; " : m += " var err = " + a + ";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ", m += " }", d && (m += " else { "), m;
          };
        }, 8327: function(F) {
          F.exports = function(u, s, j) {
            var m = " ", E = u.level, h = u.dataLevel, b = u.schema[s], w = u.schemaPath + u.util.getProperty(s), d = u.errSchemaPath + "/" + s, a = !u.opts.allErrors, o = "data" + (h || "");
            if (u.opts.format === !1) return a && (m += " if (true) { "), m;
            var e, t = u.opts.$data && b && b.$data, i = t ? (m += " var schema" + E + " = " + u.util.getData(b.$data, h, u.dataPathArr) + "; ", "schema" + E) : b, s = u.opts.unknownFormats, h = Array.isArray(s);
            if (t) m += " var " + (e = "format" + E) + " = formats[" + i + "]; var " + (r = "isObject" + E) + " = typeof " + e + " == 'object' && !(" + e + " instanceof RegExp) && " + e + ".validate; var " + (l = "formatType" + E) + " = " + r + " && " + e + ".type || 'string'; if (" + r + ") { ", u.async && (m += " var async" + E + " = " + e + ".async; "), m += " " + e + " = " + e + ".validate; } if (  ", t && (m += " (" + i + " !== undefined && typeof " + i + " != 'string') || "), m += " (", s != "ignore" && (m += " (" + i + " && !" + e + " ", h && (m += " && self._opts.unknownFormats.indexOf(" + i + ") == -1 "), m += ") || "), m += " (" + e + " && " + l + " == '" + j + "' && !(typeof " + e + " == 'function' ? ", u.async ? m += " (async" + E + " ? await " + e + "(" + o + ") : " + e + "(" + o + ")) " : m += " " + e + "(" + o + ") ", m += " : " + e + ".test(" + o + "))))) {";
            else {
              if (!(e = u.formats[b])) {
                if (s == "ignore") return u.logger.warn('unknown format "' + b + '" ignored in schema at path "' + u.errSchemaPath + '"'), a && (m += " if (true) { "), m;
                if (h && 0 <= s.indexOf(b)) return a && (m += " if (true) { "), m;
                throw new Error('unknown format "' + b + '" is used in schema at path "' + u.errSchemaPath + '"');
              }
              var r, p, l = (r = typeof e == "object" && !(e instanceof RegExp) && e.validate) && e.type || "string";
              if (r && (p = e.async === !0, e = e.validate), l != j) return a && (m += " if (true) { "), m;
              if (p) {
                if (!u.async) throw new Error("async format in sync schema");
                m += " if (!(await " + (I = "formats" + u.util.getProperty(b) + ".validate") + "(" + o + "))) { ";
              } else {
                m += " if (! ";
                var I = "formats" + u.util.getProperty(b);
                r && (I += ".validate"), m += typeof e == "function" ? " " + I + "(" + o + ") " : " " + I + ".test(" + o + ") ", m += ") { ";
              }
            }
            var f = f || [];
            return f.push(m), m = "", u.createErrors !== !1 ? (m += " { keyword: 'format' , dataPath: (dataPath || '') + " + u.errorPath + " , schemaPath: " + u.util.toQuotedString(d) + " , params: { format:  ", m += t ? "" + i : "" + u.util.toQuotedString(b), m += "  } ", u.opts.messages !== !1 && (m += ` , message: 'should match format "`, m += t ? "' + " + i + " + '" : "" + u.util.escapeQuotes(b), m += `"' `), u.opts.verbose && (m += " , schema:  ", m += t ? "validate.schema" + w : "" + u.util.toQuotedString(b), m += "         , parentSchema: validate.schema" + u.schemaPath + " , data: " + o + " "), m += " } ") : m += " {} ", o = m, m = f.pop(), !u.compositeRule && a ? u.async ? m += " throw new ValidationError([" + o + "]); " : m += " validate.errors = [" + o + "]; return false; " : m += " var err = " + o + ";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ", m += " } ", a && (m += " else { "), m;
          };
        }, 5926: function(F) {
          F.exports = function(u, l, j) {
            var m = " ", E = u.level, r = u.dataLevel, b = u.schema[l], w = u.schemaPath + u.util.getProperty(l), d = u.errSchemaPath + "/" + l, a = !u.opts.allErrors, o = "data" + (r || ""), e = "valid" + E, t = "errs__" + E, i = u.util.copy(u);
            i.level++;
            var s, h = "valid" + i.level, p = u.schema.then, l = u.schema.else, r = p !== void 0 && (u.opts.strictKeywords ? typeof p == "object" && 0 < Object.keys(p).length || p === !1 : u.util.schemaHasRules(p, u.RULES.all)), p = l !== void 0 && (u.opts.strictKeywords ? typeof l == "object" && 0 < Object.keys(l).length || l === !1 : u.util.schemaHasRules(l, u.RULES.all)), l = i.baseId;
            return r || p ? (i.createErrors = !1, i.schema = b, i.schemaPath = w, i.errSchemaPath = d, m += " var " + t + " = errors; var " + e + " = true;  ", b = u.compositeRule, u.compositeRule = i.compositeRule = !0, m += "  " + u.validate(i) + " ", i.baseId = l, i.createErrors = !0, m += "  errors = " + t + "; if (vErrors !== null) { if (" + t + ") vErrors.length = " + t + "; else vErrors = null; }  ", u.compositeRule = i.compositeRule = b, r ? (m += " if (" + h + ") {  ", i.schema = u.schema.then, i.schemaPath = u.schemaPath + ".then", i.errSchemaPath = u.errSchemaPath + "/then", m += "  " + u.validate(i) + " ", i.baseId = l, m += " " + e + " = " + h + "; ", r && p ? m += " var " + (s = "ifClause" + E) + " = 'then'; " : s = "'then'", m += " } ", p && (m += " else { ")) : m += " if (!" + h + ") { ", p && (i.schema = u.schema.else, i.schemaPath = u.schemaPath + ".else", i.errSchemaPath = u.errSchemaPath + "/else", m += "  " + u.validate(i) + " ", i.baseId = l, m += " " + e + " = " + h + "; ", r && p ? m += " var " + (s = "ifClause" + E) + " = 'else'; " : s = "'else'", m += " } "), m += " if (!" + e + ") {   var err =   ", u.createErrors !== !1 ? (m += " { keyword: 'if' , dataPath: (dataPath || '') + " + u.errorPath + " , schemaPath: " + u.util.toQuotedString(d) + " , params: { failingKeyword: " + s + " } ", u.opts.messages !== !1 && (m += ` , message: 'should match "' + ` + s + ` + '" schema' `), u.opts.verbose && (m += " , schema: validate.schema" + w + " , parentSchema: validate.schema" + u.schemaPath + " , data: " + o + " "), m += " } ") : m += " {} ", m += ";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ", !u.compositeRule && a && (u.async ? m += " throw new ValidationError(vErrors); " : m += " validate.errors = vErrors; return false; "), m += " }   ", a && (m += " else { ")) : a && (m += " if (true) { "), m;
          };
        }, 9646: function(F, u, D) {
          F.exports = { $ref: D(2331), allOf: D(9486), anyOf: D(5347), $comment: D(923), const: D(2617), contains: D(2119), dependencies: D(9115), enum: D(9317), format: D(8327), if: D(5926), items: D(392), maximum: D(1796), minimum: D(1796), maxItems: D(2407), minItems: D(2407), maxLength: D(1250), minLength: D(1250), maxProperties: D(2596), minProperties: D(2596), multipleOf: D(6039), not: D(7946), oneOf: D(9344), pattern: D(9737), properties: D(2537), propertyNames: D(2127), required: D(1204), uniqueItems: D(1985), validate: D(1869) };
        }, 392: function(F) {
          F.exports = function(u, p, j) {
            var m = " ", E = u.level, b = u.dataLevel, w = u.schema[p], d = u.schemaPath + u.util.getProperty(p), a = u.errSchemaPath + "/" + p, o = !u.opts.allErrors, e = "data" + (b || ""), t = "valid" + E, i = "errs__" + E, s = u.util.copy(u), h = "";
            s.level++;
            var r = "valid" + s.level, p = "i" + E, l = s.dataLevel = u.dataLevel + 1, I = "data" + l, f = u.baseId;
            if (m += "var " + i + " = errors;var " + t + ";", Array.isArray(w)) {
              var n, b = u.schema.additionalItems;
              b === !1 && (m += " " + t + " = " + e + ".length <= " + w.length + "; ", E = a, a = u.errSchemaPath + "/additionalItems", (n = n || []).push(m += "  if (!" + t + ") {   "), m = "", u.createErrors !== !1 ? (m += " { keyword: 'additionalItems' , dataPath: (dataPath || '') + " + u.errorPath + " , schemaPath: " + u.util.toQuotedString(a) + " , params: { limit: " + w.length + " } ", u.opts.messages !== !1 && (m += " , message: 'should NOT have more than " + w.length + " items' "), u.opts.verbose && (m += " , schema: false , parentSchema: validate.schema" + u.schemaPath + " , data: " + e + " "), m += " } ") : m += " {} ", t = m, m = n.pop(), !u.compositeRule && o ? u.async ? m += " throw new ValidationError([" + t + "]); " : m += " validate.errors = [" + t + "]; return false; " : m += " var err = " + t + ";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ", m += " } ", a = E, o && (h += "}", m += " else { "));
              var g = w;
              if (g) for (var C = -1, y = g.length - 1; C < y; ) {
                var c, v, k = g[C += 1];
                (u.opts.strictKeywords ? typeof k == "object" && 0 < Object.keys(k).length || k === !1 : u.util.schemaHasRules(k, u.RULES.all)) && (m += " " + r + " = true; if (" + e + ".length > " + C + ") { ", c = e + "[" + C + "]", s.schema = k, s.schemaPath = d + "[" + C + "]", s.errSchemaPath = a + "/" + C, s.errorPath = u.util.getPathExpr(u.errorPath, C, u.opts.jsonPointers, !0), s.dataPathArr[l] = C, v = u.validate(s), s.baseId = f, u.util.varOccurences(v, I) < 2 ? m += " " + u.util.varReplace(v, I, c) + " " : m += " var " + I + " = " + c + "; " + v + " ", m += " }  ", o && (m += " if (" + r + ") { ", h += "}"));
              }
              typeof b == "object" && (u.opts.strictKeywords ? typeof b == "object" && 0 < Object.keys(b).length || b === !1 : u.util.schemaHasRules(b, u.RULES.all)) && (s.schema = b, s.schemaPath = u.schemaPath + ".additionalItems", s.errSchemaPath = u.errSchemaPath + "/additionalItems", m += " " + r + " = true; if (" + e + ".length > " + w.length + ") {  for (var " + p + " = " + w.length + "; " + p + " < " + e + ".length; " + p + "++) { ", s.errorPath = u.util.getPathExpr(u.errorPath, p, u.opts.jsonPointers, !0), c = e + "[" + p + "]", s.dataPathArr[l] = p, v = u.validate(s), s.baseId = f, u.util.varOccurences(v, I) < 2 ? m += " " + u.util.varReplace(v, I, c) + " " : m += " var " + I + " = " + c + "; " + v + " ", o && (m += " if (!" + r + ") break; "), m += " } }  ", o && (m += " if (" + r + ") { ", h += "}"));
            } else (u.opts.strictKeywords ? typeof w == "object" && 0 < Object.keys(w).length || w === !1 : u.util.schemaHasRules(w, u.RULES.all)) && (s.schema = w, s.schemaPath = d, s.errSchemaPath = a, m += "  for (var " + p + " = 0; " + p + " < " + e + ".length; " + p + "++) { ", s.errorPath = u.util.getPathExpr(u.errorPath, p, u.opts.jsonPointers, !0), c = e + "[" + p + "]", s.dataPathArr[l] = p, v = u.validate(s), s.baseId = f, u.util.varOccurences(v, I) < 2 ? m += " " + u.util.varReplace(v, I, c) + " " : m += " var " + I + " = " + c + "; " + v + " ", o && (m += " if (!" + r + ") break; "), m += " }");
            return o && (m += " " + h + " if (" + i + " == errors) {"), m;
          };
        }, 6039: function(F) {
          F.exports = function(u, D, j) {
            var m = " ", E = u.level, t = u.dataLevel, b = u.schema[D], w = u.schemaPath + u.util.getProperty(D), d = u.errSchemaPath + "/" + D, a = !u.opts.allErrors, o = "data" + (t || ""), e = u.opts.$data && b && b.$data, t = e ? (m += " var schema" + E + " = " + u.util.getData(b.$data, t, u.dataPathArr) + "; ", "schema" + E) : b;
            if (!e && typeof b != "number") throw new Error(D + " must be number");
            m += "var division" + E + ";if (", e && (m += " " + t + " !== undefined && ( typeof " + t + " != 'number' || "), m += " (division" + E + " = " + o + " / " + t + ", ", u.opts.multipleOfPrecision ? m += " Math.abs(Math.round(division" + E + ") - division" + E + ") > 1e-" + u.opts.multipleOfPrecision + " " : m += " division" + E + " !== parseInt(division" + E + ") ", m += " ) ", e && (m += "  )  ");
            var i = i || [];
            return i.push(m += " ) {   "), m = "", u.createErrors !== !1 ? (m += " { keyword: 'multipleOf' , dataPath: (dataPath || '') + " + u.errorPath + " , schemaPath: " + u.util.toQuotedString(d) + " , params: { multipleOf: " + t + " } ", u.opts.messages !== !1 && (m += " , message: 'should be multiple of ", m += e ? "' + " + t : t + "'"), u.opts.verbose && (m += " , schema:  ", m += e ? "validate.schema" + w : "" + b, m += "         , parentSchema: validate.schema" + u.schemaPath + " , data: " + o + " "), m += " } ") : m += " {} ", o = m, m = i.pop(), !u.compositeRule && a ? u.async ? m += " throw new ValidationError([" + o + "]); " : m += " validate.errors = [" + o + "]; return false; " : m += " var err = " + o + ";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ", m += "} ", a && (m += " else { "), m;
          };
        }, 7946: function(F) {
          F.exports = function(u, o, j) {
            var m = " ", s = u.level, e = u.dataLevel, E = u.schema[o], b = u.schemaPath + u.util.getProperty(o), w = u.errSchemaPath + "/" + o, d = !u.opts.allErrors, a = "data" + (e || ""), o = "errs__" + s, e = u.util.copy(u);
            e.level++;
            var t, i, s = "valid" + e.level;
            return (u.opts.strictKeywords ? typeof E == "object" && 0 < Object.keys(E).length || E === !1 : u.util.schemaHasRules(E, u.RULES.all)) ? (e.schema = E, e.schemaPath = b, e.errSchemaPath = w, m += " var " + o + " = errors;  ", E = u.compositeRule, u.compositeRule = e.compositeRule = !0, e.createErrors = !1, e.opts.allErrors && (t = e.opts.allErrors, e.opts.allErrors = !1), m += " " + u.validate(e) + " ", e.createErrors = !0, t && (e.opts.allErrors = t), u.compositeRule = e.compositeRule = E, (i = i || []).push(m += " if (" + s + ") {   "), m = "", u.createErrors !== !1 ? (m += " { keyword: 'not' , dataPath: (dataPath || '') + " + u.errorPath + " , schemaPath: " + u.util.toQuotedString(w) + " , params: {} ", u.opts.messages !== !1 && (m += " , message: 'should NOT be valid' "), u.opts.verbose && (m += " , schema: validate.schema" + b + " , parentSchema: validate.schema" + u.schemaPath + " , data: " + a + " "), m += " } ") : m += " {} ", s = m, m = i.pop(), !u.compositeRule && d ? u.async ? m += " throw new ValidationError([" + s + "]); " : m += " validate.errors = [" + s + "]; return false; " : m += " var err = " + s + ";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ", m += " } else {  errors = " + o + "; if (vErrors !== null) { if (" + o + ") vErrors.length = " + o + "; else vErrors = null; } ", u.opts.allErrors && (m += " } ")) : (m += "  var err =   ", u.createErrors !== !1 ? (m += " { keyword: 'not' , dataPath: (dataPath || '') + " + u.errorPath + " , schemaPath: " + u.util.toQuotedString(w) + " , params: {} ", u.opts.messages !== !1 && (m += " , message: 'should NOT be valid' "), u.opts.verbose && (m += " , schema: validate.schema" + b + " , parentSchema: validate.schema" + u.schemaPath + " , data: " + a + " "), m += " } ") : m += " {} ", m += ";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ", d && (m += " if (false) { ")), m;
          };
        }, 9344: function(F) {
          F.exports = function(u, o, j) {
            var m = " ", E = u.level, t = u.dataLevel, b = u.schema[o], w = u.schemaPath + u.util.getProperty(o), d = u.errSchemaPath + "/" + o, a = !u.opts.allErrors, o = "data" + (t || ""), e = "valid" + E, t = "errs__" + E, i = u.util.copy(u), s = "";
            i.level++;
            var h = "valid" + i.level, r = i.baseId, p = "prevValid" + E, l = "passingSchemas" + E;
            m += "var " + t + " = errors , " + p + " = false , " + e + " = false , " + l + " = null; ", E = u.compositeRule, u.compositeRule = i.compositeRule = !0;
            var I = b;
            if (I) for (var f, n = -1, g = I.length - 1; n < g; ) f = I[n += 1], (u.opts.strictKeywords ? typeof f == "object" && 0 < Object.keys(f).length || f === !1 : u.util.schemaHasRules(f, u.RULES.all)) ? (i.schema = f, i.schemaPath = w + "[" + n + "]", i.errSchemaPath = d + "/" + n, m += "  " + u.validate(i) + " ", i.baseId = r) : m += " var " + h + " = true; ", n && (m += " if (" + h + " && " + p + ") { " + e + " = false; " + l + " = [" + l + ", " + n + "]; } else { ", s += "}"), m += " if (" + h + ") { " + e + " = " + p + " = true; " + l + " = " + n + "; }";
            return u.compositeRule = i.compositeRule = E, m += s + "if (!" + e + ") {   var err =   ", u.createErrors !== !1 ? (m += " { keyword: 'oneOf' , dataPath: (dataPath || '') + " + u.errorPath + " , schemaPath: " + u.util.toQuotedString(d) + " , params: { passingSchemas: " + l + " } ", u.opts.messages !== !1 && (m += " , message: 'should match exactly one schema in oneOf' "), u.opts.verbose && (m += " , schema: validate.schema" + w + " , parentSchema: validate.schema" + u.schemaPath + " , data: " + o + " "), m += " } ") : m += " {} ", m += ";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ", !u.compositeRule && a && (u.async ? m += " throw new ValidationError(vErrors); " : m += " validate.errors = vErrors; return false; "), m += "} else {  errors = " + t + "; if (vErrors !== null) { if (" + t + ") vErrors.length = " + t + "; else vErrors = null; }", u.opts.allErrors && (m += " } "), m;
          };
        }, 9737: function(F) {
          F.exports = function(u, o, j) {
            var m = " ", t = u.level, e = u.dataLevel, E = u.schema[o], b = u.schemaPath + u.util.getProperty(o), w = u.errSchemaPath + "/" + o, d = !u.opts.allErrors, a = "data" + (e || ""), o = u.opts.$data && E && E.$data, e = o ? (m += " var schema" + t + " = " + u.util.getData(E.$data, e, u.dataPathArr) + "; ", "schema" + t) : E, t = o ? "(new RegExp(" + e + "))" : u.usePattern(E);
            m += "if ( ", o && (m += " (" + e + " !== undefined && typeof " + e + " != 'string') || ");
            var i = i || [];
            return i.push(m += " !" + t + ".test(" + a + ") ) {   "), m = "", u.createErrors !== !1 ? (m += " { keyword: 'pattern' , dataPath: (dataPath || '') + " + u.errorPath + " , schemaPath: " + u.util.toQuotedString(w) + " , params: { pattern:  ", m += o ? "" + e : "" + u.util.toQuotedString(E), m += "  } ", u.opts.messages !== !1 && (m += ` , message: 'should match pattern "`, m += o ? "' + " + e + " + '" : "" + u.util.escapeQuotes(E), m += `"' `), u.opts.verbose && (m += " , schema:  ", m += o ? "validate.schema" + b : "" + u.util.toQuotedString(E), m += "         , parentSchema: validate.schema" + u.schemaPath + " , data: " + a + " "), m += " } ") : m += " {} ", a = m, m = i.pop(), !u.compositeRule && d ? u.async ? m += " throw new ValidationError([" + a + "]); " : m += " validate.errors = [" + a + "]; return false; " : m += " var err = " + a + ";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ", m += "} ", d && (m += " else { "), m;
          };
        }, 2537: function(F) {
          F.exports = function(u, W, j) {
            function m(fe) {
              return fe !== "__proto__";
            }
            var E = " ", b = u.level, z = u.dataLevel, w = u.schema[W], d = u.schemaPath + u.util.getProperty(W), a = u.errSchemaPath + "/" + W, o = !u.opts.allErrors, e = "data" + (z || ""), t = "errs__" + b, i = u.util.copy(u), s = "";
            i.level++;
            var h, r = "valid" + i.level, p = "key" + b, l = "idx" + b, I = i.dataLevel = u.dataLevel + 1, f = "data" + I, n = "dataProperties" + b, g = Object.keys(w || {}).filter(m), C = u.schema.patternProperties || {}, y = Object.keys(C).filter(m), c = u.schema.additionalProperties, v = g.length || y.length, k = c === !1, S = typeof c == "object" && Object.keys(c).length, L = u.opts.removeAdditional, W = k || S || L, _ = u.opts.ownProperties, O = u.baseId, z = u.schema.required;
            if (z && (!u.opts.$data || !z.$data) && z.length < u.opts.loopRequired && (h = u.util.toHash(z)), E += "var " + t + " = errors;var " + r + " = true;", _ && (E += " var " + n + " = undefined;"), W) {
              if (E += _ ? " " + n + " = " + n + " || Object.keys(" + e + "); for (var " + l + "=0; " + l + "<" + n + ".length; " + l + "++) { var " + p + " = " + n + "[" + l + "]; " : " for (var " + p + " in " + e + ") { ", v) {
                if (E += " var isAdditional" + b + " = !(false ", g.length) if (8 < g.length) E += " || validate.schema" + d + ".hasOwnProperty(" + p + ") ";
                else {
                  var H = g;
                  if (H) for (var Y = -1, ie = H.length - 1; Y < ie; ) R = H[Y += 1], E += " || " + p + " == " + u.util.toQuotedString(R) + " ";
                }
                if (y.length) {
                  var U = y;
                  if (U) for (var q = -1, ee = U.length - 1; q < ee; ) le = U[q += 1], E += " || " + u.usePattern(le) + ".test(" + p + ") ";
                }
                E += " ); if (isAdditional" + b + ") { ";
              }
              L == "all" ? E += " delete " + e + "[" + p + "]; " : (M = u.errorPath, b = "' + " + p + " + '", u.opts._errorDataPathProperty && (u.errorPath = u.util.getPathExpr(u.errorPath, p, u.opts.jsonPointers)), k ? L ? E += " delete " + e + "[" + p + "]; " : (Z = a, a = u.errSchemaPath + "/additionalProperties", ($ = $ || []).push(E += " " + r + " = false; "), E = "", u.createErrors !== !1 ? (E += " { keyword: 'additionalProperties' , dataPath: (dataPath || '') + " + u.errorPath + " , schemaPath: " + u.util.toQuotedString(a) + " , params: { additionalProperty: '" + b + "' } ", u.opts.messages !== !1 && (E += " , message: '", u.opts._errorDataPathProperty ? E += "is an invalid additional property" : E += "should NOT have additional properties", E += "' "), u.opts.verbose && (E += " , schema: false , parentSchema: validate.schema" + u.schemaPath + " , data: " + e + " "), E += " } ") : E += " {} ", X = E, E = $.pop(), !u.compositeRule && o ? u.async ? E += " throw new ValidationError([" + X + "]); " : E += " validate.errors = [" + X + "]; return false; " : E += " var err = " + X + ";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ", a = Z, o && (E += " break; ")) : S && (L == "failing" ? (E += " var " + t + " = errors;  ", L = u.compositeRule, u.compositeRule = i.compositeRule = !0, i.schema = c, i.schemaPath = u.schemaPath + ".additionalProperties", i.errSchemaPath = u.errSchemaPath + "/additionalProperties", i.errorPath = u.opts._errorDataPathProperty ? u.errorPath : u.util.getPathExpr(u.errorPath, p, u.opts.jsonPointers), ge = e + "[" + p + "]", i.dataPathArr[I] = p, ae = u.validate(i), i.baseId = O, u.util.varOccurences(ae, f) < 2 ? E += " " + u.util.varReplace(ae, f, ge) + " " : E += " var " + f + " = " + ge + "; " + ae + " ", E += " if (!" + r + ") { errors = " + t + "; if (validate.errors !== null) { if (errors) validate.errors.length = errors; else validate.errors = null; } delete " + e + "[" + p + "]; }  ", u.compositeRule = i.compositeRule = L) : (i.schema = c, i.schemaPath = u.schemaPath + ".additionalProperties", i.errSchemaPath = u.errSchemaPath + "/additionalProperties", i.errorPath = u.opts._errorDataPathProperty ? u.errorPath : u.util.getPathExpr(u.errorPath, p, u.opts.jsonPointers), ge = e + "[" + p + "]", i.dataPathArr[I] = p, ae = u.validate(i), i.baseId = O, u.util.varOccurences(ae, f) < 2 ? E += " " + u.util.varReplace(ae, f, ge) + " " : E += " var " + f + " = " + ge + "; " + ae + " ", o && (E += " if (!" + r + ") break; "))), u.errorPath = M), v && (E += " } "), E += " }  ", o && (E += " if (" + r + ") { ", s += "}");
            }
            var J = u.opts.useDefaults && !u.compositeRule;
            if (g.length) {
              var de = g;
              if (de) for (var R, T = -1, N = de.length - 1; T < N; ) {
                var A, x, M, Z, G, $, X, te = w[R = de[T += 1]];
                (u.opts.strictKeywords ? typeof te == "object" && 0 < Object.keys(te).length || te === !1 : u.util.schemaHasRules(te, u.RULES.all)) && (ge = e + (A = u.util.getProperty(R)), G = J && te.default !== void 0, i.schema = te, i.schemaPath = d + A, i.errSchemaPath = a + "/" + u.util.escapeFragment(R), i.errorPath = u.util.getPath(u.errorPath, R, u.opts.jsonPointers), i.dataPathArr[I] = u.util.toQuotedString(R), ae = u.validate(i), i.baseId = O, u.util.varOccurences(ae, f) < 2 ? (ae = u.util.varReplace(ae, f, ge), x = ge) : E += " var " + (x = f) + " = " + ge + "; ", G ? E += " " + ae + " " : (h && h[R] ? (E += " if ( " + x + " === undefined ", _ && (E += " || ! Object.prototype.hasOwnProperty.call(" + e + ", '" + u.util.escapeQuotes(R) + "') "), E += ") { " + r + " = false; ", M = u.errorPath, Z = a, G = u.util.escapeQuotes(R), u.opts._errorDataPathProperty && (u.errorPath = u.util.getPath(M, R, u.opts.jsonPointers)), a = u.errSchemaPath + "/required", ($ = $ || []).push(E), E = "", u.createErrors !== !1 ? (E += " { keyword: 'required' , dataPath: (dataPath || '') + " + u.errorPath + " , schemaPath: " + u.util.toQuotedString(a) + " , params: { missingProperty: '" + G + "' } ", u.opts.messages !== !1 && (E += " , message: '", u.opts._errorDataPathProperty ? E += "is a required property" : E += "should have required property \\'" + G + "\\'", E += "' "), u.opts.verbose && (E += " , schema: validate.schema" + d + " , parentSchema: validate.schema" + u.schemaPath + " , data: " + e + " "), E += " } ") : E += " {} ", X = E, E = $.pop(), !u.compositeRule && o ? u.async ? E += " throw new ValidationError([" + X + "]); " : E += " validate.errors = [" + X + "]; return false; " : E += " var err = " + X + ";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ", a = Z, u.errorPath = M, E += " } else { ") : o ? (E += " if ( " + x + " === undefined ", _ && (E += " || ! Object.prototype.hasOwnProperty.call(" + e + ", '" + u.util.escapeQuotes(R) + "') "), E += ") { " + r + " = true; } else { ") : (E += " if (" + x + " !== undefined ", _ && (E += " &&   Object.prototype.hasOwnProperty.call(" + e + ", '" + u.util.escapeQuotes(R) + "') "), E += " ) { "), E += " " + ae + " } ")), o && (E += " if (" + r + ") { ", s += "}");
              }
            }
            if (y.length) {
              var se = y;
              if (se) for (var le, ce = -1, ue = se.length - 1; ce < ue; ) {
                var ge, ae, te = C[le = se[ce += 1]];
                (u.opts.strictKeywords ? typeof te == "object" && 0 < Object.keys(te).length || te === !1 : u.util.schemaHasRules(te, u.RULES.all)) && (i.schema = te, i.schemaPath = u.schemaPath + ".patternProperties" + u.util.getProperty(le), i.errSchemaPath = u.errSchemaPath + "/patternProperties/" + u.util.escapeFragment(le), E += _ ? " " + n + " = " + n + " || Object.keys(" + e + "); for (var " + l + "=0; " + l + "<" + n + ".length; " + l + "++) { var " + p + " = " + n + "[" + l + "]; " : " for (var " + p + " in " + e + ") { ", E += " if (" + u.usePattern(le) + ".test(" + p + ")) { ", i.errorPath = u.util.getPathExpr(u.errorPath, p, u.opts.jsonPointers), ge = e + "[" + p + "]", i.dataPathArr[I] = p, ae = u.validate(i), i.baseId = O, u.util.varOccurences(ae, f) < 2 ? E += " " + u.util.varReplace(ae, f, ge) + " " : E += " var " + f + " = " + ge + "; " + ae + " ", o && (E += " if (!" + r + ") break; "), E += " } ", o && (E += " else " + r + " = true; "), E += " }  ", o && (E += " if (" + r + ") { ", s += "}"));
              }
            }
            return o && (E += " " + s + " if (" + t + " == errors) {"), E;
          };
        }, 2127: function(F) {
          F.exports = function(u, D, j) {
            var m = " ", E = u.level, b = u.dataLevel, w = u.schema[D], d = u.schemaPath + u.util.getProperty(D), a = u.errSchemaPath + "/" + D, o = !u.opts.allErrors, e = "data" + (b || ""), t = "errs__" + E, i = u.util.copy(u);
            i.level++;
            var s, h, r, p, l, I = "valid" + i.level;
            return m += "var " + t + " = errors;", (u.opts.strictKeywords ? typeof w == "object" && 0 < Object.keys(w).length || w === !1 : u.util.schemaHasRules(w, u.RULES.all)) && (i.schema = w, i.schemaPath = d, i.errSchemaPath = a, l = "idx" + E, h = "i" + E, r = "' + " + (s = "key" + E) + " + '", p = "data" + (i.dataLevel = u.dataLevel + 1), D = "dataProperties" + E, b = u.opts.ownProperties, w = u.baseId, b && (m += " var " + D + " = undefined; "), m += b ? " " + D + " = " + D + " || Object.keys(" + e + "); for (var " + l + "=0; " + l + "<" + D + ".length; " + l + "++) { var " + s + " = " + D + "[" + l + "]; " : " for (var " + s + " in " + e + ") { ", m += " var startErrs" + E + " = errors; ", b = s, D = u.compositeRule, u.compositeRule = i.compositeRule = !0, l = u.validate(i), i.baseId = w, u.util.varOccurences(l, p) < 2 ? m += " " + u.util.varReplace(l, p, b) + " " : m += " var " + p + " = " + b + "; " + l + " ", u.compositeRule = i.compositeRule = D, m += " if (!" + I + ") { for (var " + h + "=startErrs" + E + "; " + h + "<errors; " + h + "++) { vErrors[" + h + "].propertyName = " + s + "; }   var err =   ", u.createErrors !== !1 ? (m += " { keyword: 'propertyNames' , dataPath: (dataPath || '') + " + u.errorPath + " , schemaPath: " + u.util.toQuotedString(a) + " , params: { propertyName: '" + r + "' } ", u.opts.messages !== !1 && (m += " , message: 'property name \\'" + r + "\\' is invalid' "), u.opts.verbose && (m += " , schema: validate.schema" + d + " , parentSchema: validate.schema" + u.schemaPath + " , data: " + e + " "), m += " } ") : m += " {} ", m += ";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ", !u.compositeRule && o && (u.async ? m += " throw new ValidationError(vErrors); " : m += " validate.errors = vErrors; return false; "), o && (m += " break; "), m += " } }"), o && (m += "  if (" + t + " == errors) {"), m;
          };
        }, 2331: function(F) {
          F.exports = function(u, i, j) {
            var m, E, b = " ", w = u.level, d = u.dataLevel, a = u.schema[i], o = u.errSchemaPath + "/" + i, e = !u.opts.allErrors, t = "data" + (d || ""), i = "valid" + w;
            if (a == "#" || a == "#/") E = u.isRoot ? (m = u.async, "validate") : (m = u.root.schema.$async === !0, "root.refVal[0]");
            else if ((w = u.resolveRef(u.baseId, a, u.isRoot)) === void 0) {
              var s, h = u.MissingRefError.message(u.baseId, a);
              if (u.opts.missingRefs == "fail") {
                u.logger.error(h), (s = s || []).push(b), b = "", u.createErrors !== !1 ? (b += " { keyword: '$ref' , dataPath: (dataPath || '') + " + u.errorPath + " , schemaPath: " + u.util.toQuotedString(o) + " , params: { ref: '" + u.util.escapeQuotes(a) + "' } ", u.opts.messages !== !1 && (b += " , message: 'can\\'t resolve reference " + u.util.escapeQuotes(a) + "' "), u.opts.verbose && (b += " , schema: " + u.util.toQuotedString(a) + " , parentSchema: validate.schema" + u.schemaPath + " , data: " + t + " "), b += " } ") : b += " {} ";
                var r = b, b = s.pop();
                !u.compositeRule && e ? u.async ? b += " throw new ValidationError([" + r + "]); " : b += " validate.errors = [" + r + "]; return false; " : b += " var err = " + r + ";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ", e && (b += " if (false) { ");
              } else {
                if (u.opts.missingRefs != "ignore") throw new u.MissingRefError(u.baseId, a, h);
                u.logger.warn(h), e && (b += " if (true) { ");
              }
            } else w.inline ? ((r = u.util.copy(u)).level++, h = "valid" + r.level, r.schema = w.schema, r.schemaPath = "", r.errSchemaPath = a, b += " " + u.validate(r).replace(/validate\.schema/g, w.code) + " ", e && (b += " if (" + h + ") { ")) : (m = w.$async === !0 || u.async && w.$async !== !1, E = w.code);
            if (E) if ((s = s || []).push(b), b = "", u.opts.passContext ? b += " " + E + ".call(this, " : b += " " + E + "( ", b += " " + t + ", (dataPath || '')", u.errorPath != '""' && (b += " + " + u.errorPath), d = b += " , " + (d ? "data" + (d - 1 || "") : "parentData") + " , " + (d ? u.dataPathArr[d] : "parentDataProperty") + ", rootData)  ", b = s.pop(), m) {
              if (!u.async) throw new Error("async schema referenced by sync schema");
              e && (b += " var " + i + "; "), b += " try { await " + d + "; ", e && (b += " " + i + " = true; "), b += " } catch (e) { if (!(e instanceof ValidationError)) throw e; if (vErrors === null) vErrors = e.errors; else vErrors = vErrors.concat(e.errors); errors = vErrors.length; ", e && (b += " " + i + " = false; "), b += " } ", e && (b += " if (" + i + ") { ");
            } else b += " if (!" + d + ") { if (vErrors === null) vErrors = " + E + ".errors; else vErrors = vErrors.concat(" + E + ".errors); errors = vErrors.length; } ", e && (b += " else { ");
            return b;
          };
        }, 1204: function(F) {
          F.exports = function(u, t, j) {
            var m = " ", E = u.level, i = u.dataLevel, b = u.schema[t], w = u.schemaPath + u.util.getProperty(t), d = u.errSchemaPath + "/" + t, a = !u.opts.allErrors, o = "data" + (i || ""), e = "valid" + E, t = u.opts.$data && b && b.$data, i = (t && (m += " var schema" + E + " = " + u.util.getData(b.$data, i, u.dataPathArr) + "; "), "schema" + E);
            if (!t) if (b.length < u.opts.loopRequired && u.schema.properties && Object.keys(u.schema.properties).length) {
              var s = [], h = b;
              if (h) for (var r = -1, p = h.length - 1; r < p; ) {
                var l = h[r += 1], I = u.schema.properties[l];
                I && (u.opts.strictKeywords ? typeof I == "object" && 0 < Object.keys(I).length || I === !1 : u.util.schemaHasRules(I, u.RULES.all)) || (s[s.length] = l);
              }
            } else s = b;
            if (t || s.length) {
              var f = u.errorPath, b = t || s.length >= u.opts.loopRequired, n = u.opts.ownProperties;
              if (a) if (m += " var missing" + E + "; ", b) {
                t || (m += " var " + i + " = validate.schema" + w + "; ");
                var g = "' + " + (S = "schema" + E + "[" + (c = "i" + E) + "]") + " + '";
                u.opts._errorDataPathProperty && (u.errorPath = u.util.getPathExpr(f, S, u.opts.jsonPointers)), m += " var " + e + " = true; ", t && (m += " if (schema" + E + " === undefined) " + e + " = true; else if (!Array.isArray(schema" + E + ")) " + e + " = false; else {"), m += " for (var " + c + " = 0; " + c + " < " + i + ".length; " + c + "++) { " + e + " = " + o + "[" + i + "[" + c + "]] !== undefined ", n && (m += " &&   Object.prototype.hasOwnProperty.call(" + o + ", " + i + "[" + c + "]) "), m += "; if (!" + e + ") break; } ", t && (m += "  }  "), (k = k || []).push(m += "  if (!" + e + ") {   "), m = "", u.createErrors !== !1 ? (m += " { keyword: 'required' , dataPath: (dataPath || '') + " + u.errorPath + " , schemaPath: " + u.util.toQuotedString(d) + " , params: { missingProperty: '" + g + "' } ", u.opts.messages !== !1 && (m += " , message: '", u.opts._errorDataPathProperty ? m += "is a required property" : m += "should have required property \\'" + g + "\\'", m += "' "), u.opts.verbose && (m += " , schema: validate.schema" + w + " , parentSchema: validate.schema" + u.schemaPath + " , data: " + o + " "), m += " } ") : m += " {} ";
                var C = m, m = k.pop();
                !u.compositeRule && a ? u.async ? m += " throw new ValidationError([" + C + "]); " : m += " validate.errors = [" + C + "]; return false; " : m += " var err = " + C + ";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ", m += " } else { ";
              } else {
                m += " if ( ";
                var y = s;
                if (y) for (var c = -1, v = y.length - 1; c < v; ) W = y[c += 1], c && (m += " || "), m += " ( ( " + (H = o + (z = u.util.getProperty(W))) + " === undefined ", n && (m += " || ! Object.prototype.hasOwnProperty.call(" + o + ", '" + u.util.escapeQuotes(W) + "') "), m += ") && (missing" + E + " = " + u.util.toQuotedString(u.opts.jsonPointers ? W : z) + ") ) ";
                m += ") {  ";
                var k, g = "' + " + (S = "missing" + E) + " + '";
                u.opts._errorDataPathProperty && (u.errorPath = u.opts.jsonPointers ? u.util.getPathExpr(f, S, !0) : f + " + " + S), (k = k || []).push(m), m = "", u.createErrors !== !1 ? (m += " { keyword: 'required' , dataPath: (dataPath || '') + " + u.errorPath + " , schemaPath: " + u.util.toQuotedString(d) + " , params: { missingProperty: '" + g + "' } ", u.opts.messages !== !1 && (m += " , message: '", u.opts._errorDataPathProperty ? m += "is a required property" : m += "should have required property \\'" + g + "\\'", m += "' "), u.opts.verbose && (m += " , schema: validate.schema" + w + " , parentSchema: validate.schema" + u.schemaPath + " , data: " + o + " "), m += " } ") : m += " {} ", C = m, m = k.pop(), !u.compositeRule && a ? u.async ? m += " throw new ValidationError([" + C + "]); " : m += " validate.errors = [" + C + "]; return false; " : m += " var err = " + C + ";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ", m += " } else { ";
              }
              else if (b) {
                t || (m += " var " + i + " = validate.schema" + w + "; ");
                var S, g = "' + " + (S = "schema" + E + "[" + (c = "i" + E) + "]") + " + '";
                u.opts._errorDataPathProperty && (u.errorPath = u.util.getPathExpr(f, S, u.opts.jsonPointers)), t && (m += " if (" + i + " && !Array.isArray(" + i + ")) {  var err =   ", u.createErrors !== !1 ? (m += " { keyword: 'required' , dataPath: (dataPath || '') + " + u.errorPath + " , schemaPath: " + u.util.toQuotedString(d) + " , params: { missingProperty: '" + g + "' } ", u.opts.messages !== !1 && (m += " , message: '", u.opts._errorDataPathProperty ? m += "is a required property" : m += "should have required property \\'" + g + "\\'", m += "' "), u.opts.verbose && (m += " , schema: validate.schema" + w + " , parentSchema: validate.schema" + u.schemaPath + " , data: " + o + " "), m += " } ") : m += " {} ", m += ";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } else if (" + i + " !== undefined) { "), m += " for (var " + c + " = 0; " + c + " < " + i + ".length; " + c + "++) { if (" + o + "[" + i + "[" + c + "]] === undefined ", n && (m += " || ! Object.prototype.hasOwnProperty.call(" + o + ", " + i + "[" + c + "]) "), m += ") {  var err =   ", u.createErrors !== !1 ? (m += " { keyword: 'required' , dataPath: (dataPath || '') + " + u.errorPath + " , schemaPath: " + u.util.toQuotedString(d) + " , params: { missingProperty: '" + g + "' } ", u.opts.messages !== !1 && (m += " , message: '", u.opts._errorDataPathProperty ? m += "is a required property" : m += "should have required property \\'" + g + "\\'", m += "' "), u.opts.verbose && (m += " , schema: validate.schema" + w + " , parentSchema: validate.schema" + u.schemaPath + " , data: " + o + " "), m += " } ") : m += " {} ", m += ";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } } ", t && (m += "  }  ");
              } else {
                var L = s;
                if (L) for (var W, _ = -1, O = L.length - 1; _ < O; ) {
                  W = L[_ += 1];
                  var z = u.util.getProperty(W), g = u.util.escapeQuotes(W), H = o + z;
                  u.opts._errorDataPathProperty && (u.errorPath = u.util.getPath(f, W, u.opts.jsonPointers)), m += " if ( " + H + " === undefined ", n && (m += " || ! Object.prototype.hasOwnProperty.call(" + o + ", '" + u.util.escapeQuotes(W) + "') "), m += ") {  var err =   ", u.createErrors !== !1 ? (m += " { keyword: 'required' , dataPath: (dataPath || '') + " + u.errorPath + " , schemaPath: " + u.util.toQuotedString(d) + " , params: { missingProperty: '" + g + "' } ", u.opts.messages !== !1 && (m += " , message: '", u.opts._errorDataPathProperty ? m += "is a required property" : m += "should have required property \\'" + g + "\\'", m += "' "), u.opts.verbose && (m += " , schema: validate.schema" + w + " , parentSchema: validate.schema" + u.schemaPath + " , data: " + o + " "), m += " } ") : m += " {} ", m += ";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } ";
                }
              }
              u.errorPath = f;
            } else a && (m += " if (true) {");
            return m;
          };
        }, 1985: function(F) {
          F.exports = function(u, i, j) {
            var m, E = " ", b = u.level, s = u.dataLevel, w = u.schema[i], d = u.schemaPath + u.util.getProperty(i), a = u.errSchemaPath + "/" + i, o = !u.opts.allErrors, e = "data" + (s || ""), t = "valid" + b, i = u.opts.$data && w && w.$data, s = i ? (E += " var schema" + b + " = " + u.util.getData(w.$data, s, u.dataPathArr) + "; ", "schema" + b) : w;
            return (w || i) && u.opts.uniqueItems !== !1 ? (i && (E += " var " + t + "; if (" + s + " === false || " + s + " === undefined) " + t + " = true; else if (typeof " + s + " != 'boolean') " + t + " = false; else { "), E += " var i = " + e + ".length , " + t + " = true , j; if (i > 1) { ", b = u.schema.items && u.schema.items.type, s = Array.isArray(b), !b || b == "object" || b == "array" || s && (0 <= b.indexOf("object") || 0 <= b.indexOf("array")) ? E += " outer: for (;i--;) { for (j = i; j--;) { if (equal(" + e + "[i], " + e + "[j])) { " + t + " = false; break outer; } } } " : (E += " var itemIndices = {}, item; for (;i--;) { var item = " + e + "[i]; ", E += " if (" + u.util["checkDataType" + (s ? "s" : "")](b, "item", u.opts.strictNumbers, !0) + ") continue; ", s && (E += ` if (typeof item == 'string') item = '"' + item; `), E += " if (typeof itemIndices[item] == 'number') { " + t + " = false; j = itemIndices[item]; break; } itemIndices[item] = i; } "), E += " } ", i && (E += "  }  "), (m = m || []).push(E += " if (!" + t + ") {   "), E = "", u.createErrors !== !1 ? (E += " { keyword: 'uniqueItems' , dataPath: (dataPath || '') + " + u.errorPath + " , schemaPath: " + u.util.toQuotedString(a) + " , params: { i: i, j: j } ", u.opts.messages !== !1 && (E += " , message: 'should NOT have duplicate items (items ## ' + j + ' and ' + i + ' are identical)' "), u.opts.verbose && (E += " , schema:  ", E += i ? "validate.schema" + d : "" + w, E += "         , parentSchema: validate.schema" + u.schemaPath + " , data: " + e + " "), E += " } ") : E += " {} ", e = E, E = m.pop(), !u.compositeRule && o ? u.async ? E += " throw new ValidationError([" + e + "]); " : E += " validate.errors = [" + e + "]; return false; " : E += " var err = " + e + ";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ", E += " } ", o && (E += " else { ")) : o && (E += " if (true) { "), E;
          };
        }, 1869: function(F) {
          F.exports = function(u, D, j) {
            function m($) {
              for (var X = $.rules, te = 0; te < X.length; te++) if (E(X[te])) return 1;
            }
            function E($) {
              return u.schema[$.keyword] !== void 0 || $.implements && function(X) {
                for (var te = X.implements, se = 0; se < te.length; se++) if (u.schema[te[se]] !== void 0) return 1;
              }($);
            }
            var b = "", w = u.schema.$async === !0, d = u.util.schemaHasRulesExcept(u.schema, u.RULES.all, "$ref"), a = u.self._getId(u.schema);
            if (u.opts.strictKeywords) {
              var o = u.util.schemaUnknownRules(u.schema, u.RULES.keywords);
              if (o) {
                if (o = "unknown keyword: " + o, u.opts.strictKeywords !== "log") throw new Error(o);
                u.logger.warn(o);
              }
            }
            if (u.isTop && (b += " var validate = ", w && (u.async = !0, b += "async "), b += "function(data, dataPath, parentData, parentDataProperty, rootData) { 'use strict'; ", a && (u.opts.sourceCode || u.opts.processCode) && (b += " /*# sourceURL=" + a + " */ ")), typeof u.schema == "boolean" || !d && !u.schema.$ref) {
              var e = u.level, t = u.dataLevel, i = u.schema[D = "false schema"], s = u.schemaPath + u.util.getProperty(D), h = u.errSchemaPath + "/" + D, n = !u.opts.allErrors, r = "data" + (t || ""), f = "valid" + e;
              return u.schema === !1 ? (u.isTop ? n = !0 : b += " var " + f + " = false; ", (A = A || []).push(b), b = "", u.createErrors !== !1 ? (b += " { keyword: 'false schema' , dataPath: (dataPath || '') + " + u.errorPath + " , schemaPath: " + u.util.toQuotedString(h) + " , params: {} ", u.opts.messages !== !1 && (b += " , message: 'boolean schema is false' "), u.opts.verbose && (b += " , schema: false , parentSchema: validate.schema" + u.schemaPath + " , data: " + r + " "), b += " } ") : b += " {} ", z = b, b = A.pop(), !u.compositeRule && n ? u.async ? b += " throw new ValidationError([" + z + "]); " : b += " validate.errors = [" + z + "]; return false; " : b += " var err = " + z + ";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ") : u.isTop ? b += w ? " return data; " : " validate.errors = null; return true; " : b += " var " + f + " = true; ", u.isTop && (b += " }; return validate; "), b;
            }
            if (u.isTop) {
              var p = u.isTop, e = u.level = 0, t = u.dataLevel = 0, r = "data";
              if (u.rootId = u.resolve.fullPath(u.self._getId(u.root.schema)), u.baseId = u.baseId || u.rootId, delete u.isTop, u.dataPathArr = [""], u.schema.default !== void 0 && u.opts.useDefaults && u.opts.strictDefaults) {
                var l = "default is ignored in the schema root";
                if (u.opts.strictDefaults !== "log") throw new Error(l);
                u.logger.warn(l);
              }
              b += " var vErrors = null; ", b += " var errors = 0;     ", b += " if (rootData === undefined) rootData = data; ";
            } else {
              if (e = u.level, r = "data" + ((t = u.dataLevel) || ""), a && (u.baseId = u.resolve.url(u.baseId, a)), w && !u.async) throw new Error("async schema in sync schema");
              b += " var errs_" + e + " = errors;";
            }
            var I, f = "valid" + e, n = !u.opts.allErrors, g = "", C = "", y = u.schema.type, c = Array.isArray(y);
            if (y && u.opts.nullable && u.schema.nullable === !0 && (c ? y.indexOf("null") == -1 && (y = y.concat("null")) : y != "null" && (y = [y, "null"], c = !0)), c && y.length == 1 && (y = y[0], c = !1), u.schema.$ref && d) {
              if (u.opts.extendRefs == "fail") throw new Error('$ref: validation keywords used in schema at path "' + u.errSchemaPath + '" (see option extendRefs)');
              u.opts.extendRefs !== !0 && (d = !1, u.logger.warn('$ref: keywords ignored in schema at path "' + u.errSchemaPath + '"'));
            }
            if (u.schema.$comment && u.opts.$comment && (b += " " + u.RULES.all.$comment.code(u, "$comment")), y) {
              u.opts.coerceTypes && (I = u.util.coerceToTypes(u.opts.coerceTypes, y));
              var v = u.RULES.types[y];
              if (I || c || v === !0 || v && !m(v)) {
                if (s = u.schemaPath + ".type", h = u.errSchemaPath + "/type", s = u.schemaPath + ".type", h = u.errSchemaPath + "/type", b += " if (" + u.util[c ? "checkDataTypes" : "checkDataType"](y, r, u.opts.strictNumbers, !0) + ") { ", I) {
                  var k = "dataType" + e, S = "coerced" + e;
                  b += " var " + k + " = typeof " + r + "; var " + S + " = undefined; ", u.opts.coerceTypes == "array" && (b += " if (" + k + " == 'object' && Array.isArray(" + r + ") && " + r + ".length == 1) { " + r + " = " + r + "[0]; " + k + " = typeof " + r + "; if (" + u.util.checkDataType(u.schema.type, r, u.opts.strictNumbers) + ") " + S + " = " + r + "; } "), b += " if (" + S + " !== undefined) ; ";
                  var L = I;
                  if (L) for (var W, _ = -1, O = L.length - 1; _ < O; ) (W = L[_ += 1]) == "string" ? b += " else if (" + k + " == 'number' || " + k + " == 'boolean') " + S + " = '' + " + r + "; else if (" + r + " === null) " + S + " = ''; " : W == "number" || W == "integer" ? (b += " else if (" + k + " == 'boolean' || " + r + " === null || (" + k + " == 'string' && " + r + " && " + r + " == +" + r + " ", W == "integer" && (b += " && !(" + r + " % 1)"), b += ")) " + S + " = +" + r + "; ") : W == "boolean" ? b += " else if (" + r + " === 'false' || " + r + " === 0 || " + r + " === null) " + S + " = false; else if (" + r + " === 'true' || " + r + " === 1) " + S + " = true; " : W == "null" ? b += " else if (" + r + " === '' || " + r + " === 0 || " + r + " === false) " + S + " = null; " : u.opts.coerceTypes == "array" && W == "array" && (b += " else if (" + k + " == 'string' || " + k + " == 'number' || " + k + " == 'boolean' || " + r + " == null) " + S + " = [" + r + "]; ");
                  (A = A || []).push(b += " else {   "), b = "", u.createErrors !== !1 ? (b += " { keyword: 'type' , dataPath: (dataPath || '') + " + u.errorPath + " , schemaPath: " + u.util.toQuotedString(h) + " , params: { type: '", b += c ? "" + y.join(",") : "" + y, b += "' } ", u.opts.messages !== !1 && (b += " , message: 'should be ", b += c ? "" + y.join(",") : "" + y, b += "' "), u.opts.verbose && (b += " , schema: validate.schema" + s + " , parentSchema: validate.schema" + u.schemaPath + " , data: " + r + " "), b += " } ") : b += " {} ";
                  var z = b;
                  b = A.pop(), !u.compositeRule && n ? u.async ? b += " throw new ValidationError([" + z + "]); " : b += " validate.errors = [" + z + "]; return false; " : b += " var err = " + z + ";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ", b += " } if (" + S + " !== undefined) {  ", a = t ? "data" + (t - 1 || "") : "parentData", b += " " + r + " = " + S + "; ", t || (b += "if (" + a + " !== undefined)"), b += " " + a + "[" + (t ? u.dataPathArr[t] : "parentDataProperty") + "] = " + S + "; } ";
                } else (A = A || []).push(b), b = "", u.createErrors !== !1 ? (b += " { keyword: 'type' , dataPath: (dataPath || '') + " + u.errorPath + " , schemaPath: " + u.util.toQuotedString(h) + " , params: { type: '", b += c ? "" + y.join(",") : "" + y, b += "' } ", u.opts.messages !== !1 && (b += " , message: 'should be ", b += c ? "" + y.join(",") : "" + y, b += "' "), u.opts.verbose && (b += " , schema: validate.schema" + s + " , parentSchema: validate.schema" + u.schemaPath + " , data: " + r + " "), b += " } ") : b += " {} ", z = b, b = A.pop(), !u.compositeRule && n ? u.async ? b += " throw new ValidationError([" + z + "]); " : b += " validate.errors = [" + z + "]; return false; " : b += " var err = " + z + ";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ";
                b += " } ";
              }
            }
            if (u.schema.$ref && !d) b += " " + u.RULES.all.$ref.code(u, "$ref") + " ", n && (b += " } if (errors === ", b += p ? "0" : "errs_" + e, b += ") { ", C += "}");
            else {
              var H = u.RULES;
              if (H) {
                for (var Y = -1, ie = H.length - 1; Y < ie; ) if (m(v = H[Y += 1])) {
                  if (v.type && (b += " if (" + u.util.checkDataType(v.type, r, u.opts.strictNumbers) + ") { "), u.opts.useDefaults) {
                    if (v.type == "object" && u.schema.properties) {
                      var i = u.schema.properties, U = Object.keys(i);
                      if (U) {
                        for (var q, ee = -1, J = U.length - 1; ee < J; ) if ((T = i[q = U[ee += 1]]).default !== void 0) {
                          var de = r + u.util.getProperty(q);
                          if (u.compositeRule) {
                            if (u.opts.strictDefaults) {
                              if (l = "default is ignored for: " + de, u.opts.strictDefaults !== "log") throw new Error(l);
                              u.logger.warn(l);
                            }
                          } else b += " if (" + de + " === undefined ", u.opts.useDefaults == "empty" && (b += " || " + de + " === null || " + de + " === '' "), b += " ) " + de + " = ", u.opts.useDefaults == "shared" ? b += " " + u.useDefault(T.default) + " " : b += " " + JSON.stringify(T.default) + " ", b += "; ";
                        }
                      }
                    } else if (v.type == "array" && Array.isArray(u.schema.items)) {
                      var R = u.schema.items;
                      if (R) {
                        for (var T, _ = -1, N = R.length - 1; _ < N; ) if ((T = R[_ += 1]).default !== void 0) if (de = r + "[" + _ + "]", u.compositeRule) {
                          if (u.opts.strictDefaults) {
                            if (l = "default is ignored for: " + de, u.opts.strictDefaults !== "log") throw new Error(l);
                            u.logger.warn(l);
                          }
                        } else b += " if (" + de + " === undefined ", u.opts.useDefaults == "empty" && (b += " || " + de + " === null || " + de + " === '' "), b += " ) " + de + " = ", u.opts.useDefaults == "shared" ? b += " " + u.useDefault(T.default) + " " : b += " " + JSON.stringify(T.default) + " ", b += "; ";
                      }
                    }
                  }
                  var A, x = v.rules;
                  if (x) for (var M, Z = -1, G = x.length - 1; Z < G; ) !E(M = x[Z += 1]) || (M = M.code(u, M.keyword, v.type)) && (b += " " + M + " ", n && (g += "}"));
                  n && (b += " " + g + " ", g = ""), v.type && (b += " } ", y && y === v.type && !I && (b += " else { ", s = u.schemaPath + ".type", h = u.errSchemaPath + "/type", (A = A || []).push(b), b = "", u.createErrors !== !1 ? (b += " { keyword: 'type' , dataPath: (dataPath || '') + " + u.errorPath + " , schemaPath: " + u.util.toQuotedString(h) + " , params: { type: '", b += c ? "" + y.join(",") : "" + y, b += "' } ", u.opts.messages !== !1 && (b += " , message: 'should be ", b += c ? "" + y.join(",") : "" + y, b += "' "), u.opts.verbose && (b += " , schema: validate.schema" + s + " , parentSchema: validate.schema" + u.schemaPath + " , data: " + r + " "), b += " } ") : b += " {} ", z = b, b = A.pop(), !u.compositeRule && n ? u.async ? b += " throw new ValidationError([" + z + "]); " : b += " validate.errors = [" + z + "]; return false; " : b += " var err = " + z + ";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ", b += " } ")), n && (b += " if (errors === ", b += p ? "0" : "errs_" + e, b += ") { ", C += "}");
                }
              }
            }
            return n && (b += " " + C + " "), p ? (w ? (b += " if (errors === 0) return data;           ", b += " else throw new ValidationError(vErrors); ") : (b += " validate.errors = vErrors; ", b += " return errors === 0;       "), b += " }; return validate;") : b += " var " + f + " = errors === errs_" + e + ";", b;
          };
        }, 7931: function(F, u, D) {
          function j(w, d) {
            j.errors = null;
            var a = this._validateKeyword = this._validateKeyword || this.compile(b, !0);
            if (a(w)) return !0;
            if (j.errors = a.errors, d) throw new Error("custom keyword definition is invalid: " + this.errorsText(a.errors));
            return !1;
          }
          var m = /^[a-z_$][a-z0-9_$-]*$/i, E = D(1793), b = D(5868);
          F.exports = { add: function(w, d) {
            function a(s, h, r) {
              for (var p, l = 0; l < o.length; l++) {
                var I = o[l];
                if (I.type == h) {
                  p = I;
                  break;
                }
              }
              p || o.push(p = { type: h, rules: [] }), r = { keyword: s, definition: r, custom: !0, code: E, implements: r.implements }, p.rules.push(r), o.custom[s] = r;
            }
            var o = this.RULES;
            if (o.keywords[w]) throw new Error("Keyword " + w + " is already defined");
            if (!m.test(w)) throw new Error("Keyword " + w + " is not a valid identifier");
            if (d) {
              this.validateKeyword(d, !0);
              var e = d.type;
              if (Array.isArray(e)) for (var t = 0; t < e.length; t++) a(w, e[t], d);
              else a(w, e, d);
              var i = d.metaSchema;
              i && (d.$data && this._opts.$data && (i = { anyOf: [i, { $ref: "https://raw.githubusercontent.com/ajv-validator/ajv/master/lib/refs/data.json#" }] }), d.validateSchema = this.compile(i, !0));
            }
            return o.keywords[w] = o.all[w] = !0, this;
          }, get: function(w) {
            var d = this.RULES.custom[w];
            return d ? d.definition : this.RULES.keywords[w] || !1;
          }, remove: function(w) {
            var d = this.RULES;
            delete d.keywords[w], delete d.all[w], delete d.custom[w];
            for (var a = 0; a < d.length; a++) for (var o = d[a].rules, e = 0; e < o.length; e++) if (o[e].keyword == w) {
              o.splice(e, 1);
              break;
            }
            return this;
          }, validate: j };
        }, 2303: function(F) {
          F.exports = function u(D, j) {
            if (D === j) return !0;
            if (D && j && typeof D == "object" && typeof j == "object") {
              if (D.constructor !== j.constructor) return !1;
              var m, E, b;
              if (Array.isArray(D)) {
                if ((m = D.length) != j.length) return !1;
                for (E = m; E-- != 0; ) if (!u(D[E], j[E])) return !1;
                return !0;
              }
              if (D.constructor === RegExp) return D.source === j.source && D.flags === j.flags;
              if (D.valueOf !== Object.prototype.valueOf) return D.valueOf() === j.valueOf();
              if (D.toString !== Object.prototype.toString) return D.toString() === j.toString();
              if ((m = (b = Object.keys(D)).length) !== Object.keys(j).length) return !1;
              for (E = m; E-- != 0; ) if (!Object.prototype.hasOwnProperty.call(j, b[E])) return !1;
              for (E = m; E-- != 0; ) {
                var w = b[E];
                if (!u(D[w], j[w])) return !1;
              }
              return !0;
            }
            return D != D && j != j;
          };
        }, 3508: function(F) {
          F.exports = function(u, D) {
            var j, m = typeof (D = typeof (D = D || {}) == "function" ? { cmp: D } : D).cycles == "boolean" && D.cycles, E = D.cmp && (j = D.cmp, function(w) {
              return function(d, a) {
                return d = { key: d, value: w[d] }, a = { key: a, value: w[a] }, j(d, a);
              };
            }), b = [];
            return function w(d) {
              if ((d = d && d.toJSON && typeof d.toJSON == "function" ? d.toJSON() : d) !== void 0) {
                if (typeof d == "number") return isFinite(d) ? "" + d : "null";
                if (typeof d != "object") return JSON.stringify(d);
                if (Array.isArray(d)) {
                  for (e = "[", t = 0; t < d.length; t++) t && (e += ","), e += w(d[t]) || "null";
                  return e + "]";
                }
                if (d === null) return "null";
                if (b.indexOf(d) !== -1) {
                  if (m) return JSON.stringify("__cycle__");
                  throw new TypeError("Converting circular structure to JSON");
                }
                for (var a = b.push(d) - 1, o = Object.keys(d).sort(E && E(d)), e = "", t = 0; t < o.length; t++) {
                  var i = o[t], s = w(d[i]);
                  s && (e && (e += ","), e += JSON.stringify(i) + ":" + s);
                }
                return b.splice(a, 1), "{" + e + "}";
              }
            }(u);
          };
        }, 233: function(F) {
          F.exports = function u(i, j) {
            function m(p) {
              return u.insensitive && ("" + p).toLowerCase() || "" + p;
            }
            var E, b, w = /(^([+\-]?(?:0|[1-9]\d*)(?:\.\d*)?(?:[eE][+\-]?\d+)?)?$|^0x[0-9a-f]+$|\d+)/gi, s = /(^[ ]*|[ ]*$)/g, d = /(^([\w ]+,?[\w ]+)?[\w ]+,?[\w ]+\d+:\d+(:\d+)?[\w ]?|^\d{1,4}[\/\-]\d{1,4}[\/\-]\d{1,4}|^\w+, \w+ \d+, \d{4})/, a = /^0x[0-9a-f]+$/i, o = /^0/, i = m(i).replace(s, "") || "", s = m(j).replace(s, "") || "", e = i.replace(w, "\0$1\0").replace(/\0$/, "").replace(/^\0/, "").split("\0"), t = s.replace(w, "\0$1\0").replace(/\0$/, "").replace(/^\0/, "").split("\0"), i = parseInt(i.match(a), 16) || e.length !== 1 && i.match(d) && Date.parse(i), s = parseInt(s.match(a), 16) || i && s.match(d) && Date.parse(s) || null;
            if (s) {
              if (i < s) return -1;
              if (s < i) return 1;
            }
            for (var h = 0, r = Math.max(e.length, t.length); h < r; h++) {
              if (E = !(e[h] || "").match(o) && parseFloat(e[h]) || e[h] || 0, b = !(t[h] || "").match(o) && parseFloat(t[h]) || t[h] || 0, isNaN(E) !== isNaN(b)) return isNaN(E) ? 1 : -1;
              if (typeof E != typeof b && (E += "", b += ""), E < b) return -1;
              if (b < E) return 1;
            }
            return 0;
          };
        }, 5156: function(F, u) {
          (function(D) {
            function j(T) {
              return T !== null && Object.prototype.toString.call(T) === "[object Array]";
            }
            function m(T) {
              return T !== null && Object.prototype.toString.call(T) === "[object Object]";
            }
            function E(T, N) {
              if (T === N) return !0;
              if (Object.prototype.toString.call(T) !== Object.prototype.toString.call(N)) return !1;
              if (j(T) === !0) {
                if (T.length !== N.length) return !1;
                for (var A = 0; A < T.length; A++) if (E(T[A], N[A]) === !1) return !1;
                return !0;
              }
              if (m(T) !== !0) return !1;
              var x, M, Z = {};
              for (x in T) if (hasOwnProperty.call(T, x)) {
                if (E(T[x], N[x]) === !1) return !1;
                Z[x] = !0;
              }
              for (M in N) if (hasOwnProperty.call(N, M) && Z[M] !== !0) return !1;
              return !0;
            }
            function b(T) {
              if (T === "" || T === !1 || T === null || j(T) && T.length === 0) return !0;
              if (m(T)) {
                for (var N in T) if (T.hasOwnProperty(N)) return !1;
                return !0;
              }
              return !1;
            }
            function w(T) {
              return "0" <= T && T <= "9" || T === "-";
            }
            function d() {
            }
            function a() {
            }
            function o(T) {
              this.runtime = T;
            }
            function e(T) {
              this._interpreter = T, this.functionTable = { abs: { _func: this._functionAbs, _signature: [{ types: [i] }] }, avg: { _func: this._functionAvg, _signature: [{ types: [I] }] }, ceil: { _func: this._functionCeil, _signature: [{ types: [i] }] }, contains: { _func: this._functionContains, _signature: [{ types: [h, r] }, { types: [s] }] }, ends_with: { _func: this._functionEndsWith, _signature: [{ types: [h] }, { types: [h] }] }, floor: { _func: this._functionFloor, _signature: [{ types: [i] }] }, length: { _func: this._functionLength, _signature: [{ types: [h, r, p] }] }, map: { _func: this._functionMap, _signature: [{ types: [l] }, { types: [r] }] }, max: { _func: this._functionMax, _signature: [{ types: [I, f] }] }, merge: { _func: this._functionMerge, _signature: [{ types: [p], variadic: !0 }] }, max_by: { _func: this._functionMaxBy, _signature: [{ types: [r] }, { types: [l] }] }, sum: { _func: this._functionSum, _signature: [{ types: [I] }] }, starts_with: { _func: this._functionStartsWith, _signature: [{ types: [h] }, { types: [h] }] }, min: { _func: this._functionMin, _signature: [{ types: [I, f] }] }, min_by: { _func: this._functionMinBy, _signature: [{ types: [r] }, { types: [l] }] }, type: { _func: this._functionType, _signature: [{ types: [s] }] }, keys: { _func: this._functionKeys, _signature: [{ types: [p] }] }, values: { _func: this._functionValues, _signature: [{ types: [p] }] }, sort: { _func: this._functionSort, _signature: [{ types: [f, I] }] }, sort_by: { _func: this._functionSortBy, _signature: [{ types: [r] }, { types: [l] }] }, join: { _func: this._functionJoin, _signature: [{ types: [h] }, { types: [f] }] }, reverse: { _func: this._functionReverse, _signature: [{ types: [h, r] }] }, to_array: { _func: this._functionToArray, _signature: [{ types: [s] }] }, to_string: { _func: this._functionToString, _signature: [{ types: [s] }] }, to_number: { _func: this._functionToNumber, _signature: [{ types: [s] }] }, not_null: { _func: this._functionNotNull, _signature: [{ types: [s], variadic: !0 }] } };
            }
            var t = typeof String.prototype.trimLeft == "function" ? function(T) {
              return T.trimLeft();
            } : function(T) {
              return T.match(/^\s*(.*)/)[1];
            }, i = 0, s = 1, h = 2, r = 3, p = 4, l = 6, I = 8, f = 9, n = "UnquotedIdentifier", g = "QuotedIdentifier", C = "Rbracket", y = "Rparen", c = "Comma", v = "Colon", k = "Rbrace", S = "Number", L = "Current", W = "Expref", _ = "Pipe", O = "Flatten", z = "Star", H = "Filter", Y = "Lbrace", ie = "Lbracket", U = "Lparen", q = "Literal", ee = { ".": "Dot", "*": z, ",": c, ":": v, "{": Y, "}": k, "]": C, "(": U, ")": y, "@": L }, J = { "<": !0, ">": !0, "=": !0, "!": !0 }, de = { " ": !0, "	": !0, "\n": !0 };
            d.prototype = { tokenize: function(T) {
              var N, A, x, M = [];
              for (this._current = 0; this._current < T.length; ) if ("a" <= (x = T[this._current]) && x <= "z" || "A" <= x && x <= "Z" || x === "_") Z = this._current, N = this._consumeUnquotedIdentifier(T), M.push({ type: n, value: N, start: Z });
              else if (ee[T[this._current]] !== void 0) M.push({ type: ee[T[this._current]], value: T[this._current], start: this._current }), this._current++;
              else if (w(T[this._current])) A = this._consumeNumber(T), M.push(A);
              else if (T[this._current] === "[") A = this._consumeLBracket(T), M.push(A);
              else if (T[this._current] === '"') Z = this._current, N = this._consumeQuotedIdentifier(T), M.push({ type: g, value: N, start: Z });
              else if (T[this._current] === "'") Z = this._current, N = this._consumeRawStringLiteral(T), M.push({ type: q, value: N, start: Z });
              else if (T[this._current] === "`") {
                var Z = this._current, G = this._consumeLiteral(T);
                M.push({ type: q, value: G, start: Z });
              } else if (J[T[this._current]] !== void 0) M.push(this._consumeOperator(T));
              else if (de[T[this._current]] !== void 0) this._current++;
              else if (T[this._current] === "&") Z = this._current, this._current++, T[this._current] === "&" ? (this._current++, M.push({ type: "And", value: "&&", start: Z })) : M.push({ type: W, value: "&", start: Z });
              else {
                if (T[this._current] !== "|") throw G = new Error("Unknown character:" + T[this._current]), G.name = "LexerError", G;
                Z = this._current, this._current++, T[this._current] === "|" ? (this._current++, M.push({ type: "Or", value: "||", start: Z })) : M.push({ type: _, value: "|", start: Z });
              }
              return M;
            }, _consumeUnquotedIdentifier: function(T) {
              var N, A = this._current;
              for (this._current++; this._current < T.length && ("a" <= (N = T[this._current]) && N <= "z" || "A" <= N && N <= "Z" || "0" <= N && N <= "9" || N === "_"); ) this._current++;
              return T.slice(A, this._current);
            }, _consumeQuotedIdentifier: function(T) {
              var N = this._current;
              this._current++;
              for (var A = T.length; T[this._current] !== '"' && this._current < A; ) {
                var x = this._current;
                T[x] !== "\\" || T[x + 1] !== "\\" && T[x + 1] !== '"' ? x++ : x += 2, this._current = x;
              }
              return this._current++, JSON.parse(T.slice(N, this._current));
            }, _consumeRawStringLiteral: function(T) {
              var N = this._current;
              this._current++;
              for (var A = T.length; T[this._current] !== "'" && this._current < A; ) {
                var x = this._current;
                T[x] !== "\\" || T[x + 1] !== "\\" && T[x + 1] !== "'" ? x++ : x += 2, this._current = x;
              }
              return this._current++, T.slice(N + 1, this._current - 1).replace("\\'", "'");
            }, _consumeNumber: function(T) {
              var N = this._current;
              this._current++;
              for (var A = T.length; w(T[this._current]) && this._current < A; ) this._current++;
              var x = parseInt(T.slice(N, this._current));
              return { type: S, value: x, start: N };
            }, _consumeLBracket: function(T) {
              var N = this._current;
              return this._current++, T[this._current] === "?" ? (this._current++, { type: H, value: "[?", start: N }) : T[this._current] === "]" ? (this._current++, { type: O, value: "[]", start: N }) : { type: ie, value: "[", start: N };
            }, _consumeOperator: function(T) {
              var N = this._current, A = T[N];
              return this._current++, A === "!" ? T[this._current] === "=" ? (this._current++, { type: "NE", value: "!=", start: N }) : { type: "Not", value: "!", start: N } : A === "<" ? T[this._current] === "=" ? (this._current++, { type: "LTE", value: "<=", start: N }) : { type: "LT", value: "<", start: N } : A === ">" ? T[this._current] === "=" ? (this._current++, { type: "GTE", value: ">=", start: N }) : { type: "GT", value: ">", start: N } : A === "=" && T[this._current] === "=" ? (this._current++, { type: "EQ", value: "==", start: N }) : void 0;
            }, _consumeLiteral: function(T) {
              this._current++;
              for (var x = this._current, N = T.length; T[this._current] !== "`" && this._current < N; ) {
                var A = this._current;
                T[A] !== "\\" || T[A + 1] !== "\\" && T[A + 1] !== "`" ? A++ : A += 2, this._current = A;
              }
              var x = (x = t(T.slice(x, this._current))).replace("\\`", "`"), x = this._looksLikeJSON(x) ? JSON.parse(x) : JSON.parse('"' + x + '"');
              return this._current++, x;
            }, _looksLikeJSON: function(T) {
              if (T === "") return !1;
              if (0 <= '[{"'.indexOf(T[0]) || 0 <= ["true", "false", "null"].indexOf(T)) return !0;
              if (!(0 <= "-0123456789".indexOf(T[0]))) return !1;
              try {
                return JSON.parse(T), !0;
              } catch {
                return !1;
              }
            } };
            var R = {};
            R.EOF = 0, R[n] = 0, R[g] = 0, R[C] = 0, R[y] = 0, R[c] = 0, R[k] = 0, R[S] = 0, R[L] = 0, R[W] = 0, R.Pipe = 1, R.Or = 2, R.And = 3, R.EQ = 5, R.GT = 5, R.LT = 5, R.GTE = 5, R.LTE = 5, R.NE = 5, R[O] = 9, R.Star = 20, R[H] = 21, R.Dot = 40, R.Not = 45, R[Y] = 50, R[ie] = 55, R[U] = 60, a.prototype = { parse: function(T) {
              if (this._loadTokens(T), this.index = 0, T = this.expression(0), this._lookahead(0) === "EOF") return T;
              throw T = this._lookaheadToken(0), T = new Error("Unexpected token type: " + T.type + ", value: " + T.value), T.name = "ParserError", T;
            }, _loadTokens: function(T) {
              var N = new d().tokenize(T);
              N.push({ type: "EOF", value: "", start: T.length }), this.tokens = N;
            }, expression: function(T) {
              var N = this._lookaheadToken(0);
              this._advance();
              for (var A = this.nud(N), x = this._lookahead(0); T < R[x]; ) this._advance(), A = this.led(x, A), x = this._lookahead(0);
              return A;
            }, _lookahead: function(T) {
              return this.tokens[this.index + T].type;
            }, _lookaheadToken: function(T) {
              return this.tokens[this.index + T];
            }, _advance: function() {
              this.index++;
            }, nud: function(T) {
              var N, A;
              switch (T.type) {
                case q:
                  return { type: "Literal", value: T.value };
                case n:
                  return { type: "Field", name: T.value };
                case g:
                  var x = { type: "Field", name: T.value };
                  if (this._lookahead(0) === U) throw new Error("Quoted identifier not allowed for function names.");
                  return x;
                case "Not":
                  return { type: "NotExpression", children: [N = this.expression(R.Not)] };
                case z:
                  return N = null, { type: "ValueProjection", children: [{ type: "Identity" }, N = this._lookahead(0) === C ? { type: "Identity" } : this._parseProjectionRHS(R.Star)] };
                case H:
                  return this.led(T.type, { type: "Identity" });
                case Y:
                  return this._parseMultiselectHash();
                case O:
                  return { type: "Projection", children: [{ type: O, children: [{ type: "Identity" }] }, N = this._parseProjectionRHS(R.Flatten)] };
                case ie:
                  return this._lookahead(0) === S || this._lookahead(0) === v ? (N = this._parseIndexExpression(), this._projectIfSlice({ type: "Identity" }, N)) : this._lookahead(0) === z && this._lookahead(1) === C ? (this._advance(), this._advance(), { type: "Projection", children: [{ type: "Identity" }, N = this._parseProjectionRHS(R.Star)] }) : this._parseMultiselectList();
                case L:
                  return { type: L };
                case W:
                  return { type: "ExpressionReference", children: [A = this.expression(R.Expref)] };
                case U:
                  for (var M = []; this._lookahead(0) !== y; ) this._lookahead(0) === L ? (A = { type: L }, this._advance()) : A = this.expression(0), M.push(A);
                  return this._match(y), M[0];
                default:
                  this._errorToken(T);
              }
            }, led: function(T, N) {
              var A;
              switch (T) {
                case "Dot":
                  var x = R.Dot;
                  return this._lookahead(0) !== z ? { type: "Subexpression", children: [N, A = this._parseDotRHS(x)] } : (this._advance(), { type: "ValueProjection", children: [N, A = this._parseProjectionRHS(x)] });
                case _:
                  return A = this.expression(R.Pipe), { type: _, children: [N, A] };
                case "Or":
                  return { type: "OrExpression", children: [N, A = this.expression(R.Or)] };
                case "And":
                  return { type: "AndExpression", children: [N, A = this.expression(R.And)] };
                case U:
                  for (var M, x = N.name, Z = []; this._lookahead(0) !== y; ) this._lookahead(0) === L ? (M = { type: L }, this._advance()) : M = this.expression(0), this._lookahead(0) === c && this._match(c), Z.push(M);
                  return this._match(y), { type: "Function", name: x, children: Z };
                case H:
                  var G = this.expression(0);
                  return this._match(C), { type: "FilterProjection", children: [N, A = this._lookahead(0) === O ? { type: "Identity" } : this._parseProjectionRHS(R.Filter), G] };
                case O:
                  return { type: "Projection", children: [{ type: O, children: [N] }, this._parseProjectionRHS(R.Flatten)] };
                case "EQ":
                case "NE":
                case "GT":
                case "GTE":
                case "LT":
                case "LTE":
                  return this._parseComparator(N, T);
                case ie:
                  return G = this._lookaheadToken(0), G.type === S || G.type === v ? (A = this._parseIndexExpression(), this._projectIfSlice(N, A)) : (this._match(z), this._match(C), { type: "Projection", children: [N, A = this._parseProjectionRHS(R.Star)] });
                default:
                  this._errorToken(this._lookaheadToken(0));
              }
            }, _match: function(T) {
              if (this._lookahead(0) !== T) {
                var N = this._lookaheadToken(0), N = new Error("Expected " + T + ", got: " + N.type);
                throw N.name = "ParserError", N;
              }
              this._advance();
            }, _errorToken: function(T) {
              throw T = new Error("Invalid token (" + T.type + '): "' + T.value + '"'), T.name = "ParserError", T;
            }, _parseIndexExpression: function() {
              if (this._lookahead(0) === v || this._lookahead(1) === v) return this._parseSliceExpression();
              var T = { type: "Index", value: this._lookaheadToken(0).value };
              return this._advance(), this._match(C), T;
            }, _projectIfSlice: function(T, N) {
              return T = { type: "IndexExpression", children: [T, N] }, N.type === "Slice" ? { type: "Projection", children: [T, this._parseProjectionRHS(R.Star)] } : T;
            }, _parseSliceExpression: function() {
              for (var T = [null, null, null], N = 0, A = this._lookahead(0); A !== C && N < 3; ) {
                if (A === v) N++, this._advance();
                else {
                  if (A !== S) {
                    var x = this._lookahead(0), x = new Error("Syntax error, unexpected token: " + x.value + "(" + x.type + ")");
                    throw x.name = "Parsererror", x;
                  }
                  T[N] = this._lookaheadToken(0).value, this._advance();
                }
                A = this._lookahead(0);
              }
              return this._match(C), { type: "Slice", children: T };
            }, _parseComparator: function(T, N) {
              return { type: "Comparator", name: N, children: [T, this.expression(R[N])] };
            }, _parseDotRHS: function(T) {
              var N = this._lookahead(0);
              return 0 <= [n, g, z].indexOf(N) ? this.expression(T) : N === ie ? (this._match(ie), this._parseMultiselectList()) : N === Y ? (this._match(Y), this._parseMultiselectHash()) : void 0;
            }, _parseProjectionRHS: function(T) {
              var N;
              if (R[this._lookahead(0)] < 10) N = { type: "Identity" };
              else if (this._lookahead(0) === ie) N = this.expression(T);
              else if (this._lookahead(0) === H) N = this.expression(T);
              else {
                if (this._lookahead(0) !== "Dot") {
                  var A = this._lookaheadToken(0), A = new Error("Sytanx error, unexpected token: " + A.value + "(" + A.type + ")");
                  throw A.name = "ParserError", A;
                }
                this._match("Dot"), N = this._parseDotRHS(T);
              }
              return N;
            }, _parseMultiselectList: function() {
              for (var T = []; this._lookahead(0) !== C; ) {
                var N = this.expression(0);
                if (T.push(N), this._lookahead(0) === c && (this._match(c), this._lookahead(0) === C)) throw new Error("Unexpected token Rbracket");
              }
              return this._match(C), { type: "MultiSelectList", children: T };
            }, _parseMultiselectHash: function() {
              for (var T, N, A = [], x = [n, g]; ; ) {
                if (N = this._lookaheadToken(0), x.indexOf(N.type) < 0) throw new Error("Expecting an identifier token, got: " + N.type);
                if (T = N.value, this._advance(), this._match(v), N = this.expression(0), A.push({ type: "KeyValuePair", name: T, value: N }), this._lookahead(0) === c) this._match(c);
                else if (this._lookahead(0) === k) {
                  this._match(k);
                  break;
                }
              }
              return { type: "MultiSelectHash", children: A };
            } }, o.prototype = { search: function(T, N) {
              return this.visit(T, N);
            }, visit: function(T, N) {
              var A, x, M, Z, G;
              switch (T.type) {
                case "Field":
                  return N !== null && m(N) && (X = N[T.name]) !== void 0 ? X : null;
                case "Subexpression":
                  for (le = this.visit(T.children[0], N), ae = 1; ae < T.children.length; ae++) if ((le = this.visit(T.children[1], le)) === null) return null;
                  return le;
                case "IndexExpression":
                  return me = this.visit(T.children[0], N), this.visit(T.children[1], me);
                case "Index":
                  if (!j(N)) return null;
                  var $ = T.value;
                  return le = (le = N[$ = $ < 0 ? N.length + $ : $]) === void 0 ? null : le;
                case "Slice":
                  if (!j(N)) return null;
                  var X = T.children.slice(0), $ = this.computeSliceParams(N.length, X), X = $[0], te = $[1], se = $[2], le = [];
                  if (0 < se) for (ae = X; ae < te; ae += se) le.push(N[ae]);
                  else for (ae = X; te < ae; ae += se) le.push(N[ae]);
                  return le;
                case "Projection":
                  var ce = this.visit(T.children[0], N);
                  if (!j(ce)) return null;
                  for (ue = [], ae = 0; ae < ce.length; ae++) (x = this.visit(T.children[1], ce[ae])) !== null && ue.push(x);
                  return ue;
                case "ValueProjection":
                  if (!m(ce = this.visit(T.children[0], N))) return null;
                  for (var ue = [], ge = function(be) {
                    for (var Se = Object.keys(be), ke = [], We = 0; We < Se.length; We++) ke.push(be[Se[We]]);
                    return ke;
                  }(ce), ae = 0; ae < ge.length; ae++) (x = this.visit(T.children[1], ge[ae])) !== null && ue.push(x);
                  return ue;
                case "FilterProjection":
                  if (!j(ce = this.visit(T.children[0], N))) return null;
                  var fe = [], we = [];
                  for (ae = 0; ae < ce.length; ae++) b(A = this.visit(T.children[2], ce[ae])) || fe.push(ce[ae]);
                  for (var ve = 0; ve < fe.length; ve++) (x = this.visit(T.children[1], fe[ve])) !== null && we.push(x);
                  return we;
                case "Comparator":
                  switch (M = this.visit(T.children[0], N), Z = this.visit(T.children[1], N), T.name) {
                    case "EQ":
                      le = E(M, Z);
                      break;
                    case "NE":
                      le = !E(M, Z);
                      break;
                    case "GT":
                      le = Z < M;
                      break;
                    case "GTE":
                      le = Z <= M;
                      break;
                    case "LT":
                      le = M < Z;
                      break;
                    case "LTE":
                      le = M <= Z;
                      break;
                    default:
                      throw new Error("Unknown comparator: " + T.name);
                  }
                  return le;
                case O:
                  var ye = this.visit(T.children[0], N);
                  if (!j(ye)) return null;
                  var Ne = [];
                  for (ae = 0; ae < ye.length; ae++) j(x = ye[ae]) ? Ne.push.apply(Ne, x) : Ne.push(x);
                  return Ne;
                case "Identity":
                  return N;
                case "MultiSelectList":
                  if (N === null) return null;
                  for (ue = [], ae = 0; ae < T.children.length; ae++) ue.push(this.visit(T.children[ae], N));
                  return ue;
                case "MultiSelectHash":
                  if (N === null) return null;
                  for (ue = {}, ae = 0; ae < T.children.length; ae++) ue[(G = T.children[ae]).name] = this.visit(G.value, N);
                  return ue;
                case "OrExpression":
                  return A = b(A = this.visit(T.children[0], N)) ? this.visit(T.children[1], N) : A;
                case "AndExpression":
                  return b(M = this.visit(T.children[0], N)) === !0 ? M : this.visit(T.children[1], N);
                case "NotExpression":
                  return b(M = this.visit(T.children[0], N));
                case "Literal":
                  return T.value;
                case _:
                  return me = this.visit(T.children[0], N), this.visit(T.children[1], me);
                case L:
                  return N;
                case "Function":
                  var Ze = [];
                  for (ae = 0; ae < T.children.length; ae++) Ze.push(this.visit(T.children[ae], N));
                  return this.runtime.callFunction(T.name, Ze);
                case "ExpressionReference":
                  var me = T.children[0];
                  return me.jmespathType = W, me;
                default:
                  throw new Error("Unknown node type: " + T.type);
              }
            }, computeSliceParams: function(T, Z) {
              var A = Z[0], x = Z[1], M = Z[2], Z = [null, null, null];
              if (M === null) M = 1;
              else if (M === 0) {
                var G = new Error("Invalid slice, step cannot be 0");
                throw G.name = "RuntimeError", G;
              }
              return G = M < 0, A = A === null ? G ? T - 1 : 0 : this.capSliceRange(T, A, M), x = x === null ? G ? -1 : T : this.capSliceRange(T, x, M), Z[0] = A, Z[1] = x, Z[2] = M, Z;
            }, capSliceRange: function(T, N, A) {
              return N < 0 ? (N += T) < 0 && (N = A < 0 ? -1 : 0) : T <= N && (N = A < 0 ? T - 1 : T), N;
            } }, e.prototype = { callFunction: function(T, N) {
              var A = this.functionTable[T];
              if (A === void 0) throw new Error("Unknown function: " + T + "()");
              return this._validateArgs(T, N, A._signature), A._func.call(this, N);
            }, _validateArgs: function(T, N, A) {
              var x;
              if (A[A.length - 1].variadic) {
                if (N.length < A.length) throw x = A.length === 1 ? " argument" : " arguments", new Error("ArgumentError: " + T + "() takes at least" + A.length + x + " but received " + N.length);
              } else if (N.length !== A.length) throw x = A.length === 1 ? " argument" : " arguments", new Error("ArgumentError: " + T + "() takes " + A.length + x + " but received " + N.length);
              for (var M = 0; M < A.length; M++) {
                for (var Z = !1, G = A[M].types, $ = this._getTypeName(N[M]), X = 0; X < G.length; X++) if (this._typeMatches($, G[X], N[M])) {
                  Z = !0;
                  break;
                }
                if (!Z) throw new Error("TypeError: " + T + "() expected argument " + (M + 1) + " to be type " + G + " but received type " + $ + " instead.");
              }
            }, _typeMatches: function(T, N, A) {
              if (N === s) return !0;
              if (N !== f && N !== I && N !== r) return T === N;
              if (N === r) return T === r;
              if (T === r) {
                var x;
                N === I ? x = i : N === f && (x = h);
                for (var M = 0; M < A.length; M++) if (!this._typeMatches(this._getTypeName(A[M]), x, A[M])) return !1;
                return !0;
              }
            }, _getTypeName: function(T) {
              switch (Object.prototype.toString.call(T)) {
                case "[object String]":
                  return h;
                case "[object Number]":
                  return i;
                case "[object Array]":
                  return r;
                case "[object Boolean]":
                  return 5;
                case "[object Null]":
                  return 7;
                case "[object Object]":
                  return T.jmespathType === W ? l : p;
              }
            }, _functionStartsWith: function(T) {
              return T[0].lastIndexOf(T[1]) === 0;
            }, _functionEndsWith: function(A) {
              var N = A[0], A = A[1];
              return N.indexOf(A, N.length - A.length) !== -1;
            }, _functionReverse: function(T) {
              if (this._getTypeName(T[0]) === h) {
                for (var N = T[0], A = "", x = N.length - 1; 0 <= x; x--) A += N[x];
                return A;
              }
              return T = T[0].slice(0), T.reverse(), T;
            }, _functionAbs: function(T) {
              return Math.abs(T[0]);
            }, _functionCeil: function(T) {
              return Math.ceil(T[0]);
            }, _functionAvg: function(T) {
              for (var N = 0, A = T[0], x = 0; x < A.length; x++) N += A[x];
              return N / A.length;
            }, _functionContains: function(T) {
              return 0 <= T[0].indexOf(T[1]);
            }, _functionFloor: function(T) {
              return Math.floor(T[0]);
            }, _functionLength: function(T) {
              return (m(T[0]) ? Object.keys(T[0]) : T[0]).length;
            }, _functionMap: function(T) {
              for (var N = [], A = this._interpreter, x = T[0], M = T[1], Z = 0; Z < M.length; Z++) N.push(A.visit(x, M[Z]));
              return N;
            }, _functionMerge: function(T) {
              for (var N = {}, A = 0; A < T.length; A++) {
                var x, M = T[A];
                for (x in M) N[x] = M[x];
              }
              return N;
            }, _functionMax: function(T) {
              if (0 < T[0].length) {
                if (this._getTypeName(T[0][0]) === i) return Math.max.apply(Math, T[0]);
                for (var N = T[0], A = N[0], x = 1; x < N.length; x++) A.localeCompare(N[x]) < 0 && (A = N[x]);
                return A;
              }
              return null;
            }, _functionMin: function(T) {
              if (0 < T[0].length) {
                if (this._getTypeName(T[0][0]) === i) return Math.min.apply(Math, T[0]);
                for (var N = T[0], A = N[0], x = 1; x < N.length; x++) N[x].localeCompare(A) < 0 && (A = N[x]);
                return A;
              }
              return null;
            }, _functionSum: function(T) {
              for (var N = 0, A = T[0], x = 0; x < A.length; x++) N += A[x];
              return N;
            }, _functionType: function(T) {
              switch (this._getTypeName(T[0])) {
                case i:
                  return "number";
                case h:
                  return "string";
                case r:
                  return "array";
                case p:
                  return "object";
                case 5:
                  return "boolean";
                case l:
                  return "expref";
                case 7:
                  return "null";
              }
            }, _functionKeys: function(T) {
              return Object.keys(T[0]);
            }, _functionValues: function(T) {
              for (var N = T[0], A = Object.keys(N), x = [], M = 0; M < A.length; M++) x.push(N[A[M]]);
              return x;
            }, _functionJoin: function(T) {
              var N = T[0];
              return T[1].join(N);
            }, _functionToArray: function(T) {
              return this._getTypeName(T[0]) === r ? T[0] : [T[0]];
            }, _functionToString: function(T) {
              return this._getTypeName(T[0]) === h ? T[0] : JSON.stringify(T[0]);
            }, _functionToNumber: function(T) {
              var N, A = this._getTypeName(T[0]);
              return A === i ? T[0] : A !== h || (N = +T[0], isNaN(N)) ? null : N;
            }, _functionNotNull: function(T) {
              for (var N = 0; N < T.length; N++) if (this._getTypeName(T[N]) !== 7) return T[N];
              return null;
            }, _functionSort: function(T) {
              return T = T[0].slice(0), T.sort(), T;
            }, _functionSortBy: function(T) {
              var N = T[0].slice(0);
              if (N.length === 0) return N;
              var A = this._interpreter, x = T[1], M = this._getTypeName(A.visit(x, N[0]));
              if ([i, h].indexOf(M) < 0) throw new Error("TypeError");
              for (var Z = this, G = [], $ = 0; $ < N.length; $++) G.push([$, N[$]]);
              G.sort(function(te, se) {
                var le = A.visit(x, te[1]), ce = A.visit(x, se[1]);
                if (Z._getTypeName(le) !== M) throw new Error("TypeError: expected " + M + ", received " + Z._getTypeName(le));
                if (Z._getTypeName(ce) !== M) throw new Error("TypeError: expected " + M + ", received " + Z._getTypeName(ce));
                return ce < le ? 1 : le < ce ? -1 : te[0] - se[0];
              });
              for (var X = 0; X < G.length; X++) N[X] = G[X][1];
              return N;
            }, _functionMaxBy: function(T) {
              for (var N, A, x = T[1], M = T[0], Z = this.createKeyFunction(x, [i, h]), G = -1 / 0, $ = 0; $ < M.length; $++) G < (A = Z(M[$])) && (G = A, N = M[$]);
              return N;
            }, _functionMinBy: function(T) {
              for (var N, A, x = T[1], M = T[0], Z = this.createKeyFunction(x, [i, h]), G = 1 / 0, $ = 0; $ < M.length; $++) (A = Z(M[$])) < G && (G = A, N = M[$]);
              return N;
            }, createKeyFunction: function(T, N) {
              var A = this, x = this._interpreter;
              return function(M) {
                var Z = x.visit(T, M);
                if (N.indexOf(A._getTypeName(Z)) < 0) throw M = "TypeError: expected one of " + N + ", received " + A._getTypeName(Z), new Error(M);
                return Z;
              };
            } }, D.tokenize = function(T) {
              return new d().tokenize(T);
            }, D.compile = function(T) {
              return new a().parse(T);
            }, D.search = function(T, N) {
              var A = new a(), x = new e(), M = new o(x);
              return x._interpreter = M, N = A.parse(N), M.search(N, T);
            }, D.strictDeepEqual = E;
          })(u);
        }, 500: function(F) {
          function u(j) {
            return j.replace(/~/g, "~0").replace(/\//g, "~1");
          }
          var D = F.exports = function(j, m, E) {
            typeof m == "function" && (E = m, m = {}), function b(w, d, a, o, e, t, i, s, h, r) {
              if (o && typeof o == "object" && !Array.isArray(o)) {
                for (var p in d(o, e, t, i, s, h, r), o) {
                  var l = o[p];
                  if (Array.isArray(l)) {
                    if (p in D.arrayKeywords) for (var I = 0; I < l.length; I++) b(w, d, a, l[I], e + "/" + p + "/" + I, t, e, p, o, I);
                  } else if (p in D.propsKeywords) {
                    if (l && typeof l == "object") for (var f in l) b(w, d, a, l[f], e + "/" + p + "/" + u(f), t, e, p, o, f);
                  } else (p in D.keywords || w.allKeys && !(p in D.skipKeywords)) && b(w, d, a, l, e + "/" + p, t, e, p, o);
                }
                a(o, e, t, i, s, h, r);
              }
            }(m, typeof (E = m.cb || E) == "function" ? E : E.pre || function() {
            }, E.post || function() {
            }, j, "", j);
          };
          D.keywords = { additionalItems: !0, items: !0, contains: !0, additionalProperties: !0, propertyNames: !0, not: !0 }, D.arrayKeywords = { items: !0, allOf: !0, anyOf: !0, oneOf: !0 }, D.propsKeywords = { definitions: !0, properties: !0, patternProperties: !0, dependencies: !0 }, D.skipKeywords = { default: !0, enum: !0, const: !0, required: !0, maximum: !0, minimum: !0, exclusiveMaximum: !0, exclusiveMinimum: !0, multipleOf: !0, maxLength: !0, minLength: !0, pattern: !0, format: !0, maxItems: !0, minItems: !0, uniqueItems: !0, maxProperties: !0, minProperties: !0 };
        }, 7026: function(F, u) {
          function D(r) {
            return 0 <= w.indexOf(typeof r);
          }
          function j(r) {
            return '"' + (r = r.replace(d, "\\$&").replace(o, "\\f").replace(a, "\\b").replace(e, "\\n").replace(t, "\\r").replace(i, "\\t")) + '"';
          }
          function m(r) {
            return r.replace(s, "~0").replace(h, "~1");
          }
          var E = { b: "\b", f: "\f", n: `
`, r: "\r", t: "	", '"': '"', "/": "/", "\\": "\\" }, b = 97;
          u.parse = function(r, p, l) {
            function I(U, q) {
              var ee;
              f(), v(U, "value");
              var J = C();
              switch (J) {
                case "t":
                  g("rue"), ee = !0;
                  break;
                case "f":
                  g("alse"), ee = !1;
                  break;
                case "n":
                  g("ull"), ee = null;
                  break;
                case '"':
                  ee = n();
                  break;
                case "[":
                  ee = function(de) {
                    f();
                    var R = [], T = 0;
                    if (C() == "]") return R;
                    for (y(); ; ) {
                      var N = de + "/" + T;
                      if (R.push(I(N)), f(), (N = C()) == "]") break;
                      N != "," && W(), f(), T++;
                    }
                    return R;
                  }(U);
                  break;
                case "{":
                  ee = function(de) {
                    f();
                    var R = {};
                    if (C() == "}") return R;
                    for (y(); ; ) {
                      var T = S();
                      C() != '"' && W();
                      var N = n(), A = de + "/" + m(N);
                      if (k(A, "key", T), v(A, "keyEnd"), f(), C() != ":" && W(), f(), R[N] = I(A), f(), (A = C()) == "}") break;
                      A != "," && W(), f();
                    }
                    return R;
                  }(U);
                  break;
                default:
                  y(), 0 <= "-0123456789".indexOf(J) ? ee = function() {
                    var de = "", R = !0;
                    r[Y] == "-" && (de += C()), de += (r[Y] == "0" ? C : c)(), r[Y] == "." && (de += C() + c(), R = !1), r[Y] != "e" && r[Y] != "E" || (de += C(), r[Y] != "+" && r[Y] != "-" || (de += C()), de += c(), R = !1);
                    var T = +de;
                    return ie && R && (T > Number.MAX_SAFE_INTEGER || T < Number.MIN_SAFE_INTEGER) ? BigInt(de) : T;
                  }() : L();
              }
              return v(U, "valueEnd"), f(), q && Y < r.length && L(), ee;
            }
            function f() {
              e: for (; Y < r.length; ) {
                switch (r[Y]) {
                  case " ":
                    H++;
                    break;
                  case "	":
                    H += 4;
                    break;
                  case "\r":
                    H = 0;
                    break;
                  case `
`:
                    H = 0, z++;
                    break;
                  default:
                    break e;
                }
                Y++;
              }
            }
            function n() {
              for (var U, q = ""; (U = C()) != '"'; ) U == "\\" ? (U = C()) in E ? q += E[U] : U == "u" ? q += function() {
                for (var ee = 4, J = 0; ee--; ) {
                  J <<= 4;
                  var de = C().toLowerCase();
                  "a" <= de && de <= "f" ? J += de.charCodeAt() - b + 10 : "0" <= de && de <= "9" ? J += +de : W();
                }
                return String.fromCharCode(J);
              }() : W() : q += U;
              return q;
            }
            function g(U) {
              for (var q = 0; q < U.length; q++) C() !== U[q] && W();
            }
            function C() {
              _();
              var U = r[Y];
              return Y++, H++, U;
            }
            function y() {
              Y--, H--;
            }
            function c() {
              for (var U = ""; "0" <= r[Y] && r[Y] <= "9"; ) U += C();
              if (U.length) return U;
              _(), L();
            }
            function v(U, q) {
              k(U, q, S());
            }
            function k(U, q, ee) {
              O[U] = O[U] || {}, O[U][q] = ee;
            }
            function S() {
              return { line: z, column: H, pos: Y };
            }
            function L() {
              throw new SyntaxError("Unexpected token " + r[Y] + " in JSON at position " + Y);
            }
            function W() {
              y(), L();
            }
            function _() {
              if (Y >= r.length) throw new SyntaxError("Unexpected end of JSON input");
            }
            var O = {}, z = 0, H = 0, Y = 0, ie = l && l.bigint && typeof BigInt < "u";
            return { data: I("", !0), pointers: O };
          }, u.stringify = function(r, p, l) {
            function I(Y) {
              O += Y.length, z += Y.length, L += Y;
            }
            function f(Y) {
              if (c) {
                for (L += `
` + g(Y, c), _++, O = 0; Y--; ) C ? (_ += C, O = k) : O += k, z += v;
                z += 1;
              }
            }
            function n(Y, ie) {
              W[Y] = W[Y] || {}, W[Y][ie] = { line: _, column: O, pos: z };
            }
            function g(Y, ie) {
              return Array(Y + 1).join(ie);
            }
            if (D(r)) {
              var C = 0;
              switch (typeof (c = typeof l == "object" ? l.space : l)) {
                case "number":
                  var y = 10 < c ? 10 : c < 0 ? 0 : Math.floor(c), c = y && g(y, " "), v = y, k = y;
                  break;
                case "string":
                  c = c.slice(0, 10);
                  for (var S = k = v = 0; S < c.length; S++) {
                    switch (c[S]) {
                      case " ":
                        k++;
                        break;
                      case "	":
                        k += 4;
                        break;
                      case "\r":
                        k = 0;
                        break;
                      case `
`:
                        k = 0, C++;
                        break;
                      default:
                        throw new Error("whitespace characters not allowed in JSON");
                    }
                    v++;
                  }
                  break;
                default:
                  c = void 0;
              }
              var L = "", W = {}, _ = 0, O = 0, z = 0, H = l && l.es6 && typeof Map == "function";
              return function Y(ie, U, q) {
                function ee() {
                  if (ie.length) {
                    I("[");
                    for (var R = U + 1, T = 0; T < ie.length; T++) {
                      T && I(","), f(R);
                      var N = D(ie[T]) ? ie[T] : null;
                      Y(N, R, q + "/" + T);
                    }
                    f(U), I("]");
                  } else I("[]");
                }
                function J() {
                  var R = Object.keys(ie);
                  if (R.length) {
                    I("{");
                    for (var T = U + 1, N = 0; N < R.length; N++) {
                      var A, x = R[N], M = ie[x];
                      D(M) && (N && I(","), A = q + "/" + m(x), f(T), n(A, "key"), I(j(x)), n(A, "keyEnd"), I(":"), c && I(" "), Y(M, T, A));
                    }
                    f(U), I("}");
                  } else I("{}");
                }
                function de(R) {
                  if (ie.size) {
                    I("{");
                    for (var T = U + 1, N = !0, A = ie.entries(), x = A.next(); !x.done; ) {
                      var M = x.value, Z = M[0], G = !!R || M[1];
                      D(G) && (N || I(","), N = !1, M = q + "/" + m(Z), f(T), n(M, "key"), I(j(Z)), n(M, "keyEnd"), I(":"), c && I(" "), Y(G, T, M)), x = A.next();
                    }
                    f(U), I("}");
                  } else I("{}");
                }
                switch (n(q, "value"), typeof ie) {
                  case "number":
                  case "bigint":
                  case "boolean":
                    I("" + ie);
                    break;
                  case "string":
                    I(j(ie));
                    break;
                  case "object":
                    ie === null ? I("null") : typeof ie.toJSON == "function" ? I(j(ie.toJSON())) : Array.isArray(ie) ? ee() : H ? ie.constructor.BYTES_PER_ELEMENT ? ee() : ie instanceof Map ? de() : ie instanceof Set ? de(!0) : J() : J();
                }
                n(q, "valueEnd");
              }(r, 0, ""), { json: L, pointers: W };
            }
          };
          var w = ["number", "bigint", "boolean", "string", "object"], d = /"|\\/g, a = /[\b]/g, o = /\f/g, e = /\n/g, t = /\r/g, i = /\t/g, s = /~/g, h = /\//g;
        }, 5755: function(F, u) {
          function D(j, m) {
            if (!(this instanceof D)) throw new SyntaxError("Constructor must be called with the new operator");
            this.message = j + " (char " + m + ")", this.char = m, this.stack = new Error().stack;
          }
          Object.defineProperty(u, "__esModule", { value: !0 }), ((u.default = D).prototype = new Error()).constructor = Error;
        }, 8909: function(F, u, D) {
          F.exports = D(8107).default;
        }, 8107: function(F, u, D) {
          function j() {
            k++, S = c.charAt(k);
          }
          function m() {
            j(), S === "\\" && j();
          }
          function E() {
            return W === i && (L === "[" || L === "{") || W === h || W === s || W === r;
          }
          function b() {
            v += L, W = I, L = "", f[S] ? (W = i, L = S, j()) : function() {
              if ((0, t.isDigit)(S) || S === "-") {
                if (W = s, S === "-") {
                  if (L += S, j(), !(0, t.isDigit)(S)) throw new e.default("Invalid number, digit expected", k);
                } else S === "0" && (L += S, j());
                for (; (0, t.isDigit)(S); ) L += S, j();
                if (S === ".") {
                  if (L += S, j(), !(0, t.isDigit)(S)) throw new e.default("Invalid number, digit expected", k);
                  for (; (0, t.isDigit)(S); ) L += S, j();
                }
                if (S === "e" || S === "E") {
                  if (L += S, j(), S !== "+" && S !== "-" || (L += S, j()), !(0, t.isDigit)(S)) throw new e.default("Invalid number, digit expected", k);
                  for (; (0, t.isDigit)(S); ) L += S, j();
                }
              } else S === "\\" && c.charAt(k + 1) === '"' ? (j(), d(m)) : d(j);
            }(), W === p && (L = (0, t.normalizeWhitespace)(L), b()), W === l && (W = I, L = "", b());
          }
          function w() {
            L === "," && (L = "", W = I, b());
          }
          function d(_) {
            if ((0, t.isQuote)(S)) {
              var O = (0, t.normalizeQuote)(S), z = (0, t.isSingleQuote)(S) ? t.isSingleQuote : t.isDoubleQuote;
              for (L += '"', W = h, _(); S !== "" && !z(S); ) if (S === "\\") if (_(), n[S] !== void 0) L += "\\" + S, _();
              else if (S === "u") {
                L += "\\u", _();
                for (var H = 0; H < 4; H++) {
                  if (!(0, t.isHex)(S)) throw new e.default("Invalid unicode character", k - L.length);
                  L += S, _();
                }
              } else {
                if (S !== "'") throw new e.default('Invalid escape character "\\' + S + '"', k);
                L += "'", _();
              }
              else g[S] ? L += g[S] : L += S === '"' ? '\\"' : S, _();
              if ((0, t.normalizeQuote)(S) !== O) throw new e.default("End of string expected", k - L.length);
              return L += '"', void _();
            }
            (function() {
              if ((0, t.isAlpha)(S)) for (W = r; (0, t.isAlpha)(S) || (0, t.isDigit)(S) || S === "$"; ) L += S, j();
              else (function() {
                if ((0, t.isWhitespace)(S) || (0, t.isSpecialWhitespace)(S)) for (W = p; (0, t.isWhitespace)(S) || (0, t.isSpecialWhitespace)(S); ) L += S, j();
                else (function() {
                  if (S !== "/" || c[k + 1] !== "*") if (S !== "/" || c[k + 1] !== "/") (function() {
                    for (W = I; S !== ""; ) L += S, j();
                    throw new e.default('Syntax error in part "' + L + '"', k - L.length);
                  })();
                  else for (W = l; S !== "" && S !== `
`; ) L += S, j();
                  else {
                    for (W = l; S !== "" && (S !== "*" || S === "*" && c[k + 1] !== "/"); ) L += S, j();
                    S === "*" && c[k + 1] === "/" && (L += S, j(), L += S, j());
                  }
                })();
              })();
            })();
          }
          function a() {
            if (W !== i || L !== "{") (function() {
              if (W !== i || L !== "[") (function() {
                if (W !== h) (W !== s ? function() {
                  if (W !== r) (function() {
                    throw L === "" ? new e.default("Unexpected end of json string", k - L.length) : new e.default("Value expected", k - L.length);
                  })();
                  else if (C[L]) b();
                  else {
                    if (y[L]) return L = y[L], b();
                    var O = L, z = v.length;
                    if (L = "", b(), W === i && L === "(") return L = "", b(), a(), W === i && L === ")" && (L = "", b(), W === i && L === ";" && (L = "", b()));
                    for (v = (0, t.insertAtIndex)(v, '"'.concat(O), z); W === r || W === s; ) b();
                    v += '"';
                  }
                } : b)();
                else for (b(); W === i && L === "+"; ) {
                  var _;
                  L = "", b(), W === h && (_ = v.lastIndexOf('"'), v = v.substring(0, _) + L.substring(1), L = "", b());
                }
              })();
              else if (b(), W !== i || L !== "]") {
                for (; ; ) if (a(), W === i && L === ",") {
                  if (b(), W === i && L === "]") {
                    v = (0, t.stripLastOccurrence)(v, ",");
                    break;
                  }
                  if (L === "") {
                    v = (0, t.stripLastOccurrence)(v, ",");
                    break;
                  }
                } else {
                  if (!E()) break;
                  v = (0, t.insertBeforeLastWhitespace)(v, ",");
                }
                W === i && L === "]" ? b() : v = (0, t.insertBeforeLastWhitespace)(v, "]");
              } else b();
            })();
            else if (b(), W !== i || L !== "}") {
              for (; ; ) {
                if (W !== r && W !== s || (W = h, L = '"'.concat(L, '"')), W !== h) throw new e.default("Object key expected", k - L.length);
                if (b(), W === i && L === ":") b();
                else {
                  if (!E()) throw new e.default("Colon expected", k - L.length);
                  v = (0, t.insertBeforeLastWhitespace)(v, ":");
                }
                if (a(), W === i && L === ",") {
                  if (b(), W === i && L === "}") {
                    v = (0, t.stripLastOccurrence)(v, ",");
                    break;
                  }
                  if (L === "") {
                    v = (0, t.stripLastOccurrence)(v, ",");
                    break;
                  }
                } else {
                  if (W !== h && W !== s && W !== r) break;
                  v = (0, t.insertBeforeLastWhitespace)(v, ",");
                }
              }
              W === i && L === "}" ? b() : v = (0, t.insertBeforeLastWhitespace)(v, "}");
            } else b();
          }
          u.default = function(_) {
            v = "", k = 0, S = (c = _).charAt(0), L = "", W = I, b();
            var O = W;
            if (a(), w(), L === "") return v;
            if (O === W && E()) {
              for (var z = ""; O === W && E(); ) v = (0, t.insertBeforeLastWhitespace)(v, ","), z += v, v = "", a(), w();
              return `[
`.concat(z).concat(v, `
]`);
            }
            throw new e.default("Unexpected characters", k - L.length);
          };
          var o, e = (o = D(5755)) && o.__esModule ? o : { default: o }, t = D(1536), i = 0, s = 1, h = 2, r = 3, p = 4, l = 5, I = 6, f = { "": !0, "{": !0, "}": !0, "[": !0, "]": !0, ":": !0, ",": !0, "(": !0, ")": !0, ";": !0, "+": !0 }, n = { '"': '"', "\\": "\\", "/": "/", b: "\b", f: "\f", n: `
`, r: "\r", t: "	" }, g = { "\b": "\\b", "\f": "\\f", "\n": "\\n", "\r": "\\r", "	": "\\t" }, C = { null: "null", true: "true", false: "false" }, y = { None: "null", True: "true", False: "false" }, c = "", v = "", k = 0, S = "", L = "", W = I;
        }, 1536: function(F, u) {
          function D(a) {
            return a === " " || a === "	" || a === `
` || a === "\r";
          }
          function j(a) {
            return a === " " || " " <= a && a <= " " || a === " " || a === " " || a === "　";
          }
          Object.defineProperty(u, "__esModule", { value: !0 }), u.isAlpha = function(a) {
            return b.test(a);
          }, u.isHex = function(a) {
            return w.test(a);
          }, u.isDigit = function(a) {
            return d.test(a);
          }, u.isWhitespace = D, u.isSpecialWhitespace = j, u.normalizeWhitespace = function(a) {
            for (var o = "", e = 0; e < a.length; e++) {
              var t = a[e];
              o += j(t) ? " " : t;
            }
            return o;
          }, u.isQuote = function(a) {
            return m[a] === !0 || E[a] === !0;
          }, u.isSingleQuote = function(a) {
            return m[a] === !0;
          }, u.isDoubleQuote = function(a) {
            return E[a] === !0;
          }, u.normalizeQuote = function(a) {
            return m[a] !== !0 ? E[a] !== !0 ? a : '"' : "'";
          }, u.stripLastOccurrence = function(a, o) {
            return o = a.lastIndexOf(o), o !== -1 ? a.substring(0, o) + a.substring(o + 1) : a;
          }, u.insertBeforeLastWhitespace = function(a, o) {
            var e = a.length;
            if (!D(a[e - 1])) return a + o;
            for (; D(a[e - 1]); ) e--;
            return a.substring(0, e) + o + a.substring(e);
          }, u.insertAtIndex = function(a, o, e) {
            return a.substring(0, e) + o + a.substring(e);
          };
          var m = { "'": !0, "‘": !0, "’": !0, "`": !0, "´": !0 }, E = { '"': !0, "“": !0, "”": !0 }, b = /^[a-zA-Z_]$/, w = /^[0-9a-fA-F]$/, d = /^[0-9]$/;
        }, 483: function(F, u) {
          var D, j;
          (function() {
            D = [], (j = typeof (j = function() {
              function m(l) {
                return typeof Node == "object" ? l instanceof Node : l && typeof l == "object" && typeof l.nodeType == "number";
              }
              function E(l) {
                return typeof l == "string";
              }
              function b() {
                var l = [];
                return { watch: l.push.bind(l), trigger: function(I, f) {
                  for (var n = !0, g = { detail: f, preventDefault: function() {
                    n = !1;
                  } }, C = 0; C < l.length; C++) l[C](I, g);
                  return n;
                } };
              }
              function w(l) {
                return window.getComputedStyle(l).display === "none";
              }
              function d(l) {
                this.elem = l;
              }
              function a(l, I) {
                return d.make(l("parent")).clazz("pico-overlay").clazz(l("overlayClass", "")).stylize({ display: "none", position: "fixed", top: "0px", left: "0px", height: "100%", width: "100%", zIndex: 1e4 }).stylize(l("overlayStyles", { opacity: 0.5, background: "#000" })).onClick(function() {
                  l("overlayClose", !0) && I();
                });
              }
              function o(l, I) {
                var f = l("width", "auto");
                typeof f == "number" && (f += "px");
                var n = l("modalId", "pico-" + h++);
                return d.make(l("parent")).clazz("pico-content").clazz(l("modalClass", "")).stylize({ display: "none", position: "fixed", zIndex: 10001, left: "50%", top: "38.1966%", maxHeight: "90%", boxSizing: "border-box", width: f, "-ms-transform": "translate(-50%,-38.1966%)", "-moz-transform": "translate(-50%,-38.1966%)", "-webkit-transform": "translate(-50%,-38.1966%)", "-o-transform": "translate(-50%,-38.1966%)", transform: "translate(-50%,-38.1966%)" }).stylize(l("modalStyles", { overflow: "auto", backgroundColor: "white", padding: "20px", borderRadius: "5px" })).html(l("content")).attr("id", n).attr("role", "dialog").attr("aria-labelledby", l("ariaLabelledBy")).attr("aria-describedby", l("ariaDescribedBy", n)).onClick(function(g) {
                  new d(g.target).anyAncestor(function(C) {
                    return /\bpico-close\b/.test(C.elem.className);
                  }) && I();
                });
              }
              function e(l, I) {
                if (I("closeButton", !0)) return l.child("button").html(I("closeHtml", "&#xD7;")).clazz("pico-close").clazz(I("closeClass", "")).stylize(I("closeStyles", { borderRadius: "2px", border: 0, padding: 0, cursor: "pointer", height: "15px", width: "15px", position: "absolute", top: "5px", right: "5px", fontSize: "16px", textAlign: "center", lineHeight: "15px", background: "#CCC" })).attr("aria-label", I("close-label", "Close"));
              }
              function t(l) {
                return function() {
                  return l().elem;
                };
              }
              function i(l, I) {
                function f(c, v) {
                  return (c.msMatchesSelector || c.webkitMatchesSelector || c.matches).call(c, v);
                }
                function n(c) {
                  return !(w(c) || f(c, ":disabled") || c.hasAttribute("contenteditable")) && (c.hasAttribute("tabindex") || f(c, "input,select,textarea,button,a[href],area[href],iframe"));
                }
                function g(c) {
                  for (var v = c.getElementsByTagName("*"), k = 0; k < v.length; k++) if (n(v[k])) return v[k];
                }
                function C(c) {
                  for (var v = c.getElementsByTagName("*"), k = v.length; k--; ) if (n(v[k])) return v[k];
                }
                var y;
                l.beforeShow(function() {
                  y = document.activeElement;
                }), l.afterShow(function() {
                  if (I()) {
                    var c = g(l.modalElem());
                    c && c.focus();
                  }
                }), l.afterClose(function() {
                  I() && y && y.focus(), y = null;
                }), p.watch(function(c) {
                  if (I() && l.isVisible()) {
                    var v = g(l.modalElem()), k = C(l.modalElem());
                    (c.shiftKey ? v : k) === document.activeElement && ((c.shiftKey ? k : v).focus(), c.preventDefault());
                  }
                });
              }
              function s(l, I) {
                var f, n = new d(document.body);
                l.beforeShow(function() {
                  f = n.elem.style.overflow, I() && n.stylize({ overflow: "hidden" });
                }), l.afterClose(function() {
                  n.stylize({ overflow: f });
                });
              }
              d.make = function(l, I) {
                typeof l == "string" && (l = document.querySelector(l));
                var f = document.createElement(I || "div");
                return (l || document.body).appendChild(f), new d(f);
              }, d.prototype = { child: function(l) {
                return d.make(this.elem, l);
              }, stylize: function(l) {
                l = l || {}, l.opacity !== void 0 && (l.filter = "alpha(opacity=" + 100 * l.opacity + ")");
                for (var I in l) l.hasOwnProperty(I) && (this.elem.style[I] = l[I]);
                return this;
              }, clazz: function(l) {
                return this.elem.className += " " + l, this;
              }, html: function(l) {
                return m(l) ? this.elem.appendChild(l) : this.elem.innerHTML = l, this;
              }, onClick: function(l) {
                return this.elem.addEventListener("click", l), this;
              }, destroy: function() {
                this.elem.parentNode.removeChild(this.elem);
              }, hide: function() {
                this.elem.style.display = "none";
              }, show: function() {
                this.elem.style.display = "block";
              }, attr: function(l, I) {
                return I !== void 0 && this.elem.setAttribute(l, I), this;
              }, anyAncestor: function(l) {
                for (var I = this.elem; I; ) {
                  if (l(new d(I))) return !0;
                  I = I.parentNode;
                }
                return !1;
              }, isVisible: function() {
                return !w(this.elem);
              } };
              var h = 1, r = b(), p = b();
              return document.documentElement.addEventListener("keydown", function(l) {
                var I = l.which || l.keyCode;
                I === 27 ? r.trigger() : I === 9 && p.trigger(l);
              }), function(l) {
                function I(H, Y) {
                  var ie = l[H];
                  return typeof ie == "function" && (ie = ie(Y)), ie === void 0 ? Y : ie;
                }
                function f(H) {
                  O().hide(), _().hide(), W.trigger(y, H);
                }
                function n(H) {
                  L.trigger(y, H) && f(H);
                }
                function g(H) {
                  return function() {
                    return H.apply(this, arguments), y;
                  };
                }
                function C(H, Y) {
                  if (!c) {
                    var ie = o(I, n);
                    c = { modal: ie, overlay: a(I, n), close: e(ie, I) }, v.trigger(y, Y);
                  }
                  return c[H];
                }
                (E(l) || m(l)) && (l = { content: l });
                var y, c, v = b(), k = b(), S = b(), L = b(), W = b(), _ = C.bind(window, "modal"), O = C.bind(window, "overlay"), z = C.bind(window, "close");
                return y = { modalElem: t(_), closeElem: t(z), overlayElem: t(O), buildDom: g(C.bind(null, null)), isVisible: function() {
                  return !!(c && _ && _().isVisible());
                }, show: function(H) {
                  return k.trigger(y, H) && (O().show(), z(), _().show(), S.trigger(y, H)), this;
                }, close: g(n), forceClose: g(f), destroy: function() {
                  _().destroy(), O().destroy(), O = _ = z = void 0;
                }, options: function(H) {
                  Object.keys(H).map(function(Y) {
                    l[Y] = H[Y];
                  });
                }, afterCreate: g(v.watch), beforeShow: g(k.watch), afterShow: g(S.watch), beforeClose: g(L.watch), afterClose: g(W.watch) }, i(y, I.bind(null, "focus", !0)), s(y, I.bind(null, "bodyOverflow", !0)), r.watch(function() {
                  I("escCloses", !0) && y.isVisible() && y.close();
                }), y;
              };
            }) == "function" ? j.apply(u, D) : j) === void 0 || (F.exports = j);
          })();
        }, 7533: function(F, u) {
          /** @license URI.js v4.4.1 (c) 2011 Gary Court. License: http://github.com/garycourt/uri-js */
          (function(D) {
            function j() {
              for (var B = arguments.length, V = Array(B), K = 0; K < B; K++) V[K] = arguments[K];
              if (V.length > 1) {
                V[0] = V[0].slice(0, -1);
                for (var ne = V.length - 1, re = 1; re < ne; ++re) V[re] = V[re].slice(1, -1);
                return V[ne] = V[ne].slice(1), V.join("");
              }
              return V[0];
            }
            function m(B) {
              return "(?:" + B + ")";
            }
            function E(B) {
              return B === void 0 ? "undefined" : B === null ? "null" : Object.prototype.toString.call(B).split(" ").pop().split("]").shift().toLowerCase();
            }
            function b(B) {
              return B.toUpperCase();
            }
            function w(B) {
              return B != null ? B instanceof Array ? B : typeof B.length != "number" || B.split || B.setInterval || B.call ? [B] : Array.prototype.slice.call(B) : [];
            }
            function d(B, V) {
              var K = B;
              if (V) for (var ne in V) K[ne] = V[ne];
              return K;
            }
            function a(B) {
              var V = "[A-Za-z]", K = "[0-9]", ne = j(K, "[A-Fa-f]"), re = m(m("%[EFef]" + ne + "%" + ne + ne + "%" + ne + ne) + "|" + m("%[89A-Fa-f]" + ne + "%" + ne + ne) + "|" + m("%" + ne + ne)), Ce = "[\\!\\$\\&\\'\\(\\)\\*\\+\\,\\;\\=]", Te = j("[\\:\\/\\?\\#\\[\\]\\@]", Ce), De = B ? "[\\xA0-\\u200D\\u2010-\\u2029\\u202F-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]" : "[]", $e = B ? "[\\uE000-\\uF8FF]" : "[]", Ee = j(V, K, "[\\-\\.\\_\\~]", De);
              m(V + j(V, K, "[\\+\\-\\.]") + "*"), m(m(re + "|" + j(Ee, Ce, "[\\:]")) + "*");
              var _e = m(m("25[0-5]") + "|" + m("2[0-4]" + K) + "|" + m("1" + K + K) + "|" + m("0?[1-9]" + K) + "|0?0?" + K), He = m(_e + "\\." + _e + "\\." + _e + "\\." + _e), Me = m(ne + "{1,4}"), Ge = m(m(Me + "\\:" + Me) + "|" + He), ze = m(m(Me + "\\:") + "{6}" + Ge), Be = m("\\:\\:" + m(Me + "\\:") + "{5}" + Ge), Pe = m(m(Me) + "?\\:\\:" + m(Me + "\\:") + "{4}" + Ge), qe = m(m(m(Me + "\\:") + "{0,1}" + Me) + "?\\:\\:" + m(Me + "\\:") + "{3}" + Ge), Fe = m(m(m(Me + "\\:") + "{0,2}" + Me) + "?\\:\\:" + m(Me + "\\:") + "{2}" + Ge), Ke = m(m(m(Me + "\\:") + "{0,3}" + Me) + "?\\:\\:" + Me + "\\:" + Ge), Je = m(m(m(Me + "\\:") + "{0,4}" + Me) + "?\\:\\:" + Ge), Ue = m(m(m(Me + "\\:") + "{0,5}" + Me) + "?\\:\\:" + Me), Ve = m(m(m(Me + "\\:") + "{0,6}" + Me) + "?\\:\\:"), Ye = m([ze, Be, Pe, qe, Fe, Ke, Je, Ue, Ve].join("|")), Qe = m(m(Ee + "|" + re) + "+");
              m("[vV]" + ne + "+\\." + j(Ee, Ce, "[\\:]") + "+"), m(m(re + "|" + j(Ee, Ce)) + "*");
              var Xe = m(re + "|" + j(Ee, Ce, "[\\:\\@]"));
              return m(m(re + "|" + j(Ee, Ce, "[\\@]")) + "+"), m(m(Xe + "|" + j("[\\/\\?]", $e)) + "*"), { NOT_SCHEME: new RegExp(j("[^]", V, K, "[\\+\\-\\.]"), "g"), NOT_USERINFO: new RegExp(j("[^\\%\\:]", Ee, Ce), "g"), NOT_HOST: new RegExp(j("[^\\%\\[\\]\\:]", Ee, Ce), "g"), NOT_PATH: new RegExp(j("[^\\%\\/\\:\\@]", Ee, Ce), "g"), NOT_PATH_NOSCHEME: new RegExp(j("[^\\%\\/\\@]", Ee, Ce), "g"), NOT_QUERY: new RegExp(j("[^\\%]", Ee, Ce, "[\\:\\@\\/\\?]", $e), "g"), NOT_FRAGMENT: new RegExp(j("[^\\%]", Ee, Ce, "[\\:\\@\\/\\?]"), "g"), ESCAPE: new RegExp(j("[^]", Ee, Ce), "g"), UNRESERVED: new RegExp(Ee, "g"), OTHER_CHARS: new RegExp(j("[^\\%]", Ee, Te), "g"), PCT_ENCODED: new RegExp(re, "g"), IPV4ADDRESS: new RegExp("^(" + He + ")$"), IPV6ADDRESS: new RegExp("^\\[?(" + Ye + ")" + m(m("\\%25|\\%(?!" + ne + "{2})") + "(" + Qe + ")") + "?\\]?$") };
            }
            function o(B) {
              throw new RangeError(de[B]);
            }
            function e(B, V) {
              for (var K = [], ne = B.length; ne--; ) K[ne] = V(B[ne]);
              return K;
            }
            function t(B, V) {
              var K = B.split("@"), ne = "";
              return K.length > 1 && (ne = K[0] + "@", B = K[1]), B = B.replace(J, "."), ne + e(B.split("."), V).join(".");
            }
            function i(B) {
              for (var V = [], K = 0, ne = B.length; K < ne; ) {
                var re = B.charCodeAt(K++);
                if (re >= 55296 && re <= 56319 && K < ne) {
                  var Ce = B.charCodeAt(K++);
                  (64512 & Ce) == 56320 ? V.push(((1023 & re) << 10) + (1023 & Ce) + 65536) : (V.push(re), K--);
                } else V.push(re);
              }
              return V;
            }
            function s(B) {
              var V = B.charCodeAt(0);
              return V < 16 ? "%0" + V.toString(16).toUpperCase() : V < 128 ? "%" + V.toString(16).toUpperCase() : V < 2048 ? "%" + (V >> 6 | 192).toString(16).toUpperCase() + "%" + (63 & V | 128).toString(16).toUpperCase() : "%" + (V >> 12 | 224).toString(16).toUpperCase() + "%" + (V >> 6 & 63 | 128).toString(16).toUpperCase() + "%" + (63 & V | 128).toString(16).toUpperCase();
            }
            function h(B) {
              for (var V = "", K = 0, ne = B.length; K < ne; ) {
                var re = parseInt(B.substr(K + 1, 2), 16);
                if (re < 128) V += String.fromCharCode(re), K += 3;
                else if (re >= 194 && re < 224) {
                  if (ne - K >= 6) {
                    var Ce = parseInt(B.substr(K + 4, 2), 16);
                    V += String.fromCharCode((31 & re) << 6 | 63 & Ce);
                  } else V += B.substr(K, 6);
                  K += 6;
                } else if (re >= 224) {
                  if (ne - K >= 9) {
                    var Te = parseInt(B.substr(K + 4, 2), 16), De = parseInt(B.substr(K + 7, 2), 16);
                    V += String.fromCharCode((15 & re) << 12 | (63 & Te) << 6 | 63 & De);
                  } else V += B.substr(K, 9);
                  K += 9;
                } else V += B.substr(K, 3), K += 3;
              }
              return V;
            }
            function r(B, V) {
              function K(ne) {
                var re = h(ne);
                return re.match(V.UNRESERVED) ? re : ne;
              }
              return B.scheme && (B.scheme = String(B.scheme).replace(V.PCT_ENCODED, K).toLowerCase().replace(V.NOT_SCHEME, "")), B.userinfo !== void 0 && (B.userinfo = String(B.userinfo).replace(V.PCT_ENCODED, K).replace(V.NOT_USERINFO, s).replace(V.PCT_ENCODED, b)), B.host !== void 0 && (B.host = String(B.host).replace(V.PCT_ENCODED, K).toLowerCase().replace(V.NOT_HOST, s).replace(V.PCT_ENCODED, b)), B.path !== void 0 && (B.path = String(B.path).replace(V.PCT_ENCODED, K).replace(B.scheme ? V.NOT_PATH : V.NOT_PATH_NOSCHEME, s).replace(V.PCT_ENCODED, b)), B.query !== void 0 && (B.query = String(B.query).replace(V.PCT_ENCODED, K).replace(V.NOT_QUERY, s).replace(V.PCT_ENCODED, b)), B.fragment !== void 0 && (B.fragment = String(B.fragment).replace(V.PCT_ENCODED, K).replace(V.NOT_FRAGMENT, s).replace(V.PCT_ENCODED, b)), B;
            }
            function p(B) {
              return B.replace(/^0*(.*)/, "$1") || "0";
            }
            function l(B, V) {
              var K = B.match(V.IPV4ADDRESS) || [], ne = H(K, 2), re = ne[1];
              return re ? re.split(".").map(p).join(".") : B;
            }
            function I(B, V) {
              var K = B.match(V.IPV6ADDRESS) || [], ne = H(K, 3), re = ne[1], Ce = ne[2];
              if (re) {
                for (var Te = re.toLowerCase().split("::").reverse(), De = H(Te, 2), $e = De[0], Ee = De[1], _e = Ee ? Ee.split(":").map(p) : [], He = $e.split(":").map(p), Me = V.IPV4ADDRESS.test(He[He.length - 1]), Ge = Me ? 7 : 8, ze = He.length - Ge, Be = Array(Ge), Pe = 0; Pe < Ge; ++Pe) Be[Pe] = _e[Pe] || He[ze + Pe] || "";
                Me && (Be[Ge - 1] = l(Be[Ge - 1], V));
                var qe = Be.reduce(function(Ve, Ye, Qe) {
                  if (!Ye || Ye === "0") {
                    var Xe = Ve[Ve.length - 1];
                    Xe && Xe.index + Xe.length === Qe ? Xe.length++ : Ve.push({ index: Qe, length: 1 });
                  }
                  return Ve;
                }, []), Fe = qe.sort(function(Ve, Ye) {
                  return Ye.length - Ve.length;
                })[0], Ke = void 0;
                if (Fe && Fe.length > 1) {
                  var Je = Be.slice(0, Fe.index), Ue = Be.slice(Fe.index + Fe.length);
                  Ke = Je.join(":") + "::" + Ue.join(":");
                } else Ke = Be.join(":");
                return Ce && (Ke += "%" + Ce), Ke;
              }
              return B;
            }
            function f(B) {
              var V = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}, K = {}, ne = V.iri !== !1 ? z : O;
              V.reference === "suffix" && (B = (V.scheme ? V.scheme + ":" : "") + "//" + B);
              var re = B.match(X);
              if (re) {
                te ? (K.scheme = re[1], K.userinfo = re[3], K.host = re[4], K.port = parseInt(re[5], 10), K.path = re[6] || "", K.query = re[7], K.fragment = re[8], isNaN(K.port) && (K.port = re[5])) : (K.scheme = re[1] || void 0, K.userinfo = B.indexOf("@") !== -1 ? re[3] : void 0, K.host = B.indexOf("//") !== -1 ? re[4] : void 0, K.port = parseInt(re[5], 10), K.path = re[6] || "", K.query = B.indexOf("?") !== -1 ? re[7] : void 0, K.fragment = B.indexOf("#") !== -1 ? re[8] : void 0, isNaN(K.port) && (K.port = B.match(/\/\/(?:.|\n)*\:(?:\/|\?|\#|$)/) ? re[4] : void 0)), K.host && (K.host = I(l(K.host, ne), ne)), K.scheme !== void 0 || K.userinfo !== void 0 || K.host !== void 0 || K.port !== void 0 || K.path || K.query !== void 0 ? K.scheme === void 0 ? K.reference = "relative" : K.fragment === void 0 ? K.reference = "absolute" : K.reference = "uri" : K.reference = "same-document", V.reference && V.reference !== "suffix" && V.reference !== K.reference && (K.error = K.error || "URI is not a " + V.reference + " reference.");
                var Ce = $[(V.scheme || K.scheme || "").toLowerCase()];
                if (V.unicodeSupport || Ce && Ce.unicodeSupport) r(K, ne);
                else {
                  if (K.host && (V.domainHost || Ce && Ce.domainHost)) try {
                    K.host = G.toASCII(K.host.replace(ne.PCT_ENCODED, h).toLowerCase());
                  } catch (Te) {
                    K.error = K.error || "Host's domain name can not be converted to ASCII via punycode: " + Te;
                  }
                  r(K, O);
                }
                Ce && Ce.parse && Ce.parse(K, V);
              } else K.error = K.error || "URI can not be parsed.";
              return K;
            }
            function n(B, V) {
              var K = V.iri !== !1 ? z : O, ne = [];
              return B.userinfo !== void 0 && (ne.push(B.userinfo), ne.push("@")), B.host !== void 0 && ne.push(I(l(String(B.host), K), K).replace(K.IPV6ADDRESS, function(re, Ce, Te) {
                return "[" + Ce + (Te ? "%25" + Te : "") + "]";
              })), typeof B.port != "number" && typeof B.port != "string" || (ne.push(":"), ne.push(String(B.port))), ne.length ? ne.join("") : void 0;
            }
            function g(B) {
              for (var V = []; B.length; ) if (B.match(se)) B = B.replace(se, "");
              else if (B.match(le)) B = B.replace(le, "/");
              else if (B.match(ce)) B = B.replace(ce, "/"), V.pop();
              else if (B === "." || B === "..") B = "";
              else {
                var K = B.match(ue);
                if (!K) throw new Error("Unexpected dot segment condition");
                var ne = K[0];
                B = B.slice(ne.length), V.push(ne);
              }
              return V.join("");
            }
            function C(B) {
              var V = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}, K = V.iri ? z : O, ne = [], re = $[(V.scheme || B.scheme || "").toLowerCase()];
              if (re && re.serialize && re.serialize(B, V), B.host && !K.IPV6ADDRESS.test(B.host)) {
                if (V.domainHost || re && re.domainHost) try {
                  B.host = V.iri ? G.toUnicode(B.host) : G.toASCII(B.host.replace(K.PCT_ENCODED, h).toLowerCase());
                } catch (De) {
                  B.error = B.error || "Host's domain name can not be converted to " + (V.iri ? "Unicode" : "ASCII") + " via punycode: " + De;
                }
              }
              r(B, K), V.reference !== "suffix" && B.scheme && (ne.push(B.scheme), ne.push(":"));
              var Ce = n(B, V);
              if (Ce !== void 0 && (V.reference !== "suffix" && ne.push("//"), ne.push(Ce), B.path && B.path.charAt(0) !== "/" && ne.push("/")), B.path !== void 0) {
                var Te = B.path;
                V.absolutePath || re && re.absolutePath || (Te = g(Te)), Ce === void 0 && (Te = Te.replace(/^\/\//, "/%2F")), ne.push(Te);
              }
              return B.query !== void 0 && (ne.push("?"), ne.push(B.query)), B.fragment !== void 0 && (ne.push("#"), ne.push(B.fragment)), ne.join("");
            }
            function y(B, V) {
              var K = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {}, ne = arguments[3], re = {};
              return ne || (B = f(C(B, K), K), V = f(C(V, K), K)), K = K || {}, !K.tolerant && V.scheme ? (re.scheme = V.scheme, re.userinfo = V.userinfo, re.host = V.host, re.port = V.port, re.path = g(V.path || ""), re.query = V.query) : (V.userinfo !== void 0 || V.host !== void 0 || V.port !== void 0 ? (re.userinfo = V.userinfo, re.host = V.host, re.port = V.port, re.path = g(V.path || ""), re.query = V.query) : (V.path ? (V.path.charAt(0) === "/" ? re.path = g(V.path) : (B.userinfo === void 0 && B.host === void 0 && B.port === void 0 || B.path ? B.path ? re.path = B.path.slice(0, B.path.lastIndexOf("/") + 1) + V.path : re.path = V.path : re.path = "/" + V.path, re.path = g(re.path)), re.query = V.query) : (re.path = B.path, V.query !== void 0 ? re.query = V.query : re.query = B.query), re.userinfo = B.userinfo, re.host = B.host, re.port = B.port), re.scheme = B.scheme), re.fragment = V.fragment, re;
            }
            function c(B, V, K) {
              var ne = d({ scheme: "null" }, K);
              return C(y(f(B, ne), f(V, ne), ne, !0), ne);
            }
            function v(B, V) {
              return typeof B == "string" ? B = C(f(B, V), V) : E(B) === "object" && (B = f(C(B, V), V)), B;
            }
            function k(B, V, K) {
              return typeof B == "string" ? B = C(f(B, K), K) : E(B) === "object" && (B = C(B, K)), typeof V == "string" ? V = C(f(V, K), K) : E(V) === "object" && (V = C(V, K)), B === V;
            }
            function S(B, V) {
              return B && B.toString().replace(V && V.iri ? z.ESCAPE : O.ESCAPE, s);
            }
            function L(B, V) {
              return B && B.toString().replace(V && V.iri ? z.PCT_ENCODED : O.PCT_ENCODED, h);
            }
            function W(B) {
              return typeof B.secure == "boolean" ? B.secure : String(B.scheme).toLowerCase() === "wss";
            }
            function _(B) {
              var V = h(B);
              return V.match(be) ? V : B;
            }
            var O = a(!1), z = a(!0), H = /* @__PURE__ */ function() {
              function B(V, K) {
                var ne = [], re = !0, Ce = !1, Te = void 0;
                try {
                  for (var De, $e = V[Symbol.iterator](); !(re = (De = $e.next()).done) && (ne.push(De.value), !K || ne.length !== K); re = !0) ;
                } catch (Ee) {
                  Ce = !0, Te = Ee;
                } finally {
                  try {
                    !re && $e.return && $e.return();
                  } finally {
                    if (Ce) throw Te;
                  }
                }
                return ne;
              }
              return function(V, K) {
                if (Array.isArray(V)) return V;
                if (Symbol.iterator in Object(V)) return B(V, K);
                throw new TypeError("Invalid attempt to destructure non-iterable instance");
              };
            }(), Y = function(B) {
              if (Array.isArray(B)) {
                for (var V = 0, K = Array(B.length); V < B.length; V++) K[V] = B[V];
                return K;
              }
              return Array.from(B);
            }, ie = 2147483647, U = 36, q = /^xn--/, ee = /[^\0-\x7E]/, J = /[\x2E\u3002\uFF0E\uFF61]/g, de = { overflow: "Overflow: input needs wider integers to process", "not-basic": "Illegal input >= 0x80 (not a basic code point)", "invalid-input": "Invalid input" }, R = Math.floor, T = String.fromCharCode, N = function(B) {
              return B - 48 < 10 ? B - 22 : B - 65 < 26 ? B - 65 : B - 97 < 26 ? B - 97 : U;
            }, A = function(B, V) {
              return B + 22 + 75 * (B < 26) - ((V != 0) << 5);
            }, x = function(B, V, K) {
              var ne = 0;
              for (B = K ? R(B / 700) : B >> 1, B += R(B / V); B > 455; ne += U) B = R(B / 35);
              return R(ne + 36 * B / (B + 38));
            }, M = function(B) {
              var V = [], K = B.length, ne = 0, re = 128, Ce = 72, Te = B.lastIndexOf("-");
              Te < 0 && (Te = 0);
              for (var De = 0; De < Te; ++De) B.charCodeAt(De) >= 128 && o("not-basic"), V.push(B.charCodeAt(De));
              for (var $e = Te > 0 ? Te + 1 : 0; $e < K; ) {
                for (var Ee = ne, _e = 1, He = U; ; He += U) {
                  $e >= K && o("invalid-input");
                  var Me = N(B.charCodeAt($e++));
                  (Me >= U || Me > R((ie - ne) / _e)) && o("overflow"), ne += Me * _e;
                  var Ge = He <= Ce ? 1 : He >= Ce + 26 ? 26 : He - Ce;
                  if (Me < Ge) break;
                  var ze = U - Ge;
                  _e > R(ie / ze) && o("overflow"), _e *= ze;
                }
                var Be = V.length + 1;
                Ce = x(ne - Ee, Be, Ee == 0), R(ne / Be) > ie - re && o("overflow"), re += R(ne / Be), ne %= Be, V.splice(ne++, 0, re);
              }
              return String.fromCodePoint.apply(String, V);
            }, Z = function(B) {
              var V = [];
              B = i(B);
              var K = B.length, ne = 128, re = 0, Ce = 72, Te = !0, De = !1, $e = void 0;
              try {
                for (var Ee, _e = B[Symbol.iterator](); !(Te = (Ee = _e.next()).done); Te = !0) {
                  var He = Ee.value;
                  He < 128 && V.push(T(He));
                }
              } catch (et) {
                De = !0, $e = et;
              } finally {
                try {
                  !Te && _e.return && _e.return();
                } finally {
                  if (De) throw $e;
                }
              }
              var Me = V.length, Ge = Me;
              for (Me && V.push("-"); Ge < K; ) {
                var ze = ie, Be = !0, Pe = !1, qe = void 0;
                try {
                  for (var Fe, Ke = B[Symbol.iterator](); !(Be = (Fe = Ke.next()).done); Be = !0) {
                    var Je = Fe.value;
                    Je >= ne && Je < ze && (ze = Je);
                  }
                } catch (et) {
                  Pe = !0, qe = et;
                } finally {
                  try {
                    !Be && Ke.return && Ke.return();
                  } finally {
                    if (Pe) throw qe;
                  }
                }
                var Ue = Ge + 1;
                ze - ne > R((ie - re) / Ue) && o("overflow"), re += (ze - ne) * Ue, ne = ze;
                var Ve = !0, Ye = !1, Qe = void 0;
                try {
                  for (var Xe, ot = B[Symbol.iterator](); !(Ve = (Xe = ot.next()).done); Ve = !0) {
                    var rt = Xe.value;
                    if (rt < ne && ++re > ie && o("overflow"), rt == ne) {
                      for (var tt = re, it = U; ; it += U) {
                        var nt = it <= Ce ? 1 : it >= Ce + 26 ? 26 : it - Ce;
                        if (tt < nt) break;
                        var st = tt - nt, at = U - nt;
                        V.push(T(A(nt + st % at, 0))), tt = R(st / at);
                      }
                      V.push(T(A(tt, 0))), Ce = x(re, Ue, Ge == Me), re = 0, ++Ge;
                    }
                  }
                } catch (et) {
                  Ye = !0, Qe = et;
                } finally {
                  try {
                    !Ve && ot.return && ot.return();
                  } finally {
                    if (Ye) throw Qe;
                  }
                }
                ++re, ++ne;
              }
              return V.join("");
            }, G = { version: "2.1.0", ucs2: { decode: i, encode: function(B) {
              return String.fromCodePoint.apply(String, Y(B));
            } }, decode: M, encode: Z, toASCII: function(B) {
              return t(B, function(V) {
                return ee.test(V) ? "xn--" + Z(V) : V;
              });
            }, toUnicode: function(B) {
              return t(B, function(V) {
                return q.test(V) ? M(V.slice(4).toLowerCase()) : V;
              });
            } }, $ = {}, X = /^(?:([^:\/?#]+):)?(?:\/\/((?:([^\/?#@]*)@)?(\[[^\/?#\]]+\]|[^\/?#:]*)(?:\:(\d*))?))?([^?#]*)(?:\?([^#]*))?(?:#((?:.|\n|\r)*))?/i, te = "".match(/(){0}/)[1] === void 0, se = /^\.\.?\//, le = /^\/\.(\/|$)/, ce = /^\/\.\.(\/|$)/, ue = /^\/?(?:.|\n)*?(?=\/|$)/, ge = { scheme: "http", domainHost: !0, parse: function(B, V) {
              return B.host || (B.error = B.error || "HTTP URIs must have a host."), B;
            }, serialize: function(B, V) {
              var K = String(B.scheme).toLowerCase() === "https";
              return B.port !== (K ? 443 : 80) && B.port !== "" || (B.port = void 0), B.path || (B.path = "/"), B;
            } }, ae = { scheme: "https", domainHost: ge.domainHost, parse: ge.parse, serialize: ge.serialize }, fe = { scheme: "ws", domainHost: !0, parse: function(B, V) {
              var K = B;
              return K.secure = W(K), K.resourceName = (K.path || "/") + (K.query ? "?" + K.query : ""), K.path = void 0, K.query = void 0, K;
            }, serialize: function(B, V) {
              if (B.port !== (W(B) ? 443 : 80) && B.port !== "" || (B.port = void 0), typeof B.secure == "boolean" && (B.scheme = B.secure ? "wss" : "ws", B.secure = void 0), B.resourceName) {
                var K = B.resourceName.split("?"), ne = H(K, 2), re = ne[0], Ce = ne[1];
                B.path = re && re !== "/" ? re : void 0, B.query = Ce, B.resourceName = void 0;
              }
              return B.fragment = void 0, B;
            } }, we = { scheme: "wss", domainHost: fe.domainHost, parse: fe.parse, serialize: fe.serialize }, ve = {}, ye = "[A-Za-z0-9\\-\\.\\_\\~\\xA0-\\u200D\\u2010-\\u2029\\u202F-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]", Ne = "[0-9A-Fa-f]", Ze = m(m("%[EFef]" + Ne + "%" + Ne + Ne + "%" + Ne + Ne) + "|" + m("%[89A-Fa-f]" + Ne + "%" + Ne + Ne) + "|" + m("%" + Ne + Ne)), me = j("[\\!\\$\\%\\'\\(\\)\\*\\+\\,\\-\\.0-9\\<\\>A-Z\\x5E-\\x7E]", '[\\"\\\\]'), be = new RegExp(ye, "g"), Se = new RegExp(Ze, "g"), ke = new RegExp(j("[^]", "[A-Za-z0-9\\!\\$\\%\\'\\*\\+\\-\\^\\_\\`\\{\\|\\}\\~]", "[\\.]", '[\\"]', me), "g"), We = new RegExp(j("[^]", ye, "[\\!\\$\\'\\(\\)\\*\\+\\,\\;\\:\\@]"), "g"), Le = We, P = { scheme: "mailto", parse: function(B, V) {
              var K = B, ne = K.to = K.path ? K.path.split(",") : [];
              if (K.path = void 0, K.query) {
                for (var re = !1, Ce = {}, Te = K.query.split("&"), De = 0, $e = Te.length; De < $e; ++De) {
                  var Ee = Te[De].split("=");
                  switch (Ee[0]) {
                    case "to":
                      for (var _e = Ee[1].split(","), He = 0, Me = _e.length; He < Me; ++He) ne.push(_e[He]);
                      break;
                    case "subject":
                      K.subject = L(Ee[1], V);
                      break;
                    case "body":
                      K.body = L(Ee[1], V);
                      break;
                    default:
                      re = !0, Ce[L(Ee[0], V)] = L(Ee[1], V);
                  }
                }
                re && (K.headers = Ce);
              }
              K.query = void 0;
              for (var Ge = 0, ze = ne.length; Ge < ze; ++Ge) {
                var Be = ne[Ge].split("@");
                if (Be[0] = L(Be[0]), V.unicodeSupport) Be[1] = L(Be[1], V).toLowerCase();
                else try {
                  Be[1] = G.toASCII(L(Be[1], V).toLowerCase());
                } catch (Pe) {
                  K.error = K.error || "Email address's domain name can not be converted to ASCII via punycode: " + Pe;
                }
                ne[Ge] = Be.join("@");
              }
              return K;
            }, serialize: function(B, V) {
              var K = B, ne = w(B.to);
              if (ne) {
                for (var re = 0, Ce = ne.length; re < Ce; ++re) {
                  var Te = String(ne[re]), De = Te.lastIndexOf("@"), $e = Te.slice(0, De).replace(Se, _).replace(Se, b).replace(ke, s), Ee = Te.slice(De + 1);
                  try {
                    Ee = V.iri ? G.toUnicode(Ee) : G.toASCII(L(Ee, V).toLowerCase());
                  } catch (Ge) {
                    K.error = K.error || "Email address's domain name can not be converted to " + (V.iri ? "Unicode" : "ASCII") + " via punycode: " + Ge;
                  }
                  ne[re] = $e + "@" + Ee;
                }
                K.path = ne.join(",");
              }
              var _e = B.headers = B.headers || {};
              B.subject && (_e.subject = B.subject), B.body && (_e.body = B.body);
              var He = [];
              for (var Me in _e) _e[Me] !== ve[Me] && He.push(Me.replace(Se, _).replace(Se, b).replace(We, s) + "=" + _e[Me].replace(Se, _).replace(Se, b).replace(Le, s));
              return He.length && (K.query = He.join("&")), K;
            } }, Q = /^([^\:]+)\:(.*)/, oe = { scheme: "urn", parse: function(B, V) {
              var K = B.path && B.path.match(Q), ne = B;
              if (K) {
                var re = V.scheme || ne.scheme || "urn", Ce = K[1].toLowerCase(), Te = K[2], De = re + ":" + (V.nid || Ce), $e = $[De];
                ne.nid = Ce, ne.nss = Te, ne.path = void 0, $e && (ne = $e.parse(ne, V));
              } else ne.error = ne.error || "URN can not be parsed.";
              return ne;
            }, serialize: function(B, V) {
              var K = V.scheme || B.scheme || "urn", ne = B.nid, re = K + ":" + (V.nid || ne), Ce = $[re];
              Ce && (B = Ce.serialize(B, V));
              var Te = B, De = B.nss;
              return Te.path = (ne || V.nid) + ":" + De, Te;
            } }, he = /^[0-9A-Fa-f]{8}(?:\-[0-9A-Fa-f]{4}){3}\-[0-9A-Fa-f]{12}$/, Ae = { scheme: "urn:uuid", parse: function(B, V) {
              var K = B;
              return K.uuid = K.nss, K.nss = void 0, V.tolerant || K.uuid && K.uuid.match(he) || (K.error = K.error || "UUID is not valid."), K;
            }, serialize: function(B, V) {
              var K = B;
              return K.nss = (B.uuid || "").toLowerCase(), K;
            } };
            $[ge.scheme] = ge, $[ae.scheme] = ae, $[fe.scheme] = fe, $[we.scheme] = we, $[P.scheme] = P, $[oe.scheme] = oe, $[Ae.scheme] = Ae, D.SCHEMES = $, D.pctEncChar = s, D.pctDecChars = h, D.parse = f, D.removeDotSegments = g, D.serialize = C, D.resolveComponents = y, D.resolve = c, D.normalize = v, D.equal = k, D.escapeComponent = S, D.unescapeComponent = L, Object.defineProperty(D, "__esModule", { value: !0 });
          })(u);
        }, 4049: function(F) {
          F.exports = function() {
            function u(p) {
              var l = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 1;
              return (l > 0 ? p.toFixed(l).replace(/0+$/, "").replace(/\.$/, "") : p.toString()) || "0";
            }
            function D(p) {
              var l = document.createElement("div");
              return l.innerHTML = p, l.firstElementChild;
            }
            function j(p, l, I) {
              function f(c, v, k) {
                return Math.max(v, Math.min(c, k));
              }
              function n(c, v, k) {
                if (k && (y = !0), y) {
                  c.preventDefault();
                  var S = l.getBoundingClientRect(), L = S.width, W = S.height, _ = v.clientX, O = v.clientY, z = f(_ - S.left, 0, L), H = f(O - S.top, 0, W);
                  I(z / L, H / W);
                }
              }
              function g(c, v) {
                (c.buttons === void 0 ? c.which : c.buttons) === 1 ? n(c, c, v) : y = !1;
              }
              function C(c, v) {
                c.touches.length === 1 ? n(c, c.touches[0], v) : y = !1;
              }
              var y = !1;
              p.add(l, "mousedown", function(c) {
                g(c, !0);
              }), p.add(l, "touchstart", function(c) {
                C(c, !0);
              }), p.add(window, "mousemove", g), p.add(l, "touchmove", C), p.add(window, "mouseup", function(c) {
                y = !1;
              }), p.add(l, "touchend", function(c) {
                y = !1;
              }), p.add(l, "touchcancel", function(c) {
                y = !1;
              });
            }
            function m(p, l) {
              return (l || document).querySelector(p);
            }
            function E(p) {
              p.preventDefault(), p.stopPropagation();
            }
            function b(p, l, I, f, n) {
              p.add(l, i, function(g) {
                I.indexOf(g.key) >= 0 && f(g);
              });
            }
            var w = function(p, l) {
              if (!(p instanceof l)) throw new TypeError("Cannot call a class as a function");
            }, d = /* @__PURE__ */ function() {
              function p(l, I) {
                for (var f = 0; f < I.length; f++) {
                  var n = I[f];
                  n.enumerable = n.enumerable || !1, n.configurable = !0, "value" in n && (n.writable = !0), Object.defineProperty(l, n.key, n);
                }
              }
              return function(l, I, f) {
                return I && p(l.prototype, I), f && p(l, f), l;
              };
            }(), a = /* @__PURE__ */ function() {
              function p(l, I) {
                var f = [], n = !0, g = !1, C = void 0;
                try {
                  for (var y, c = l[Symbol.iterator](); !(n = (y = c.next()).done) && (f.push(y.value), !I || f.length !== I); n = !0) ;
                } catch (v) {
                  g = !0, C = v;
                } finally {
                  try {
                    !n && c.return && c.return();
                  } finally {
                    if (g) throw C;
                  }
                }
                return f;
              }
              return function(l, I) {
                if (Array.isArray(l)) return l;
                if (Symbol.iterator in Object(l)) return p(l, I);
                throw new TypeError("Invalid attempt to destructure non-iterable instance");
              };
            }();
            String.prototype.startsWith = String.prototype.startsWith || function(p) {
              return this.indexOf(p) === 0;
            }, String.prototype.padStart = String.prototype.padStart || function(p, l) {
              for (var I = this; I.length < p; ) I = l + I;
              return I;
            };
            var o = { cb: "0f8ff", tqw: "aebd7", q: "-ffff", qmrn: "7fffd4", zr: "0ffff", bg: "5f5dc", bsq: "e4c4", bck: "---", nch: "ebcd", b: "--ff", bvt: "8a2be2", brwn: "a52a2a", brw: "deb887", ctb: "5f9ea0", hrt: "7fff-", chcT: "d2691e", cr: "7f50", rnw: "6495ed", crns: "8dc", crms: "dc143c", cn: "-ffff", Db: "--8b", Dcn: "-8b8b", Dgnr: "b8860b", Dgr: "a9a9a9", Dgrn: "-64-", Dkhk: "bdb76b", Dmgn: "8b-8b", Dvgr: "556b2f", Drng: "8c-", Drch: "9932cc", Dr: "8b--", Dsmn: "e9967a", Dsgr: "8fbc8f", DsTb: "483d8b", DsTg: "2f4f4f", Dtrq: "-ced1", Dvt: "94-d3", ppnk: "1493", pskb: "-bfff", mgr: "696969", grb: "1e90ff", rbrc: "b22222", rwht: "af0", stg: "228b22", chs: "-ff", gnsb: "dcdcdc", st: "8f8ff", g: "d7-", gnr: "daa520", gr: "808080", grn: "-8-0", grnw: "adff2f", hnw: "0fff0", htpn: "69b4", nnr: "cd5c5c", ng: "4b-82", vr: "0", khk: "0e68c", vnr: "e6e6fa", nrb: "0f5", wngr: "7cfc-", mnch: "acd", Lb: "add8e6", Lcr: "08080", Lcn: "e0ffff", Lgnr: "afad2", Lgr: "d3d3d3", Lgrn: "90ee90", Lpnk: "b6c1", Lsmn: "a07a", Lsgr: "20b2aa", Lskb: "87cefa", LsTg: "778899", Lstb: "b0c4de", Lw: "e0", m: "-ff-", mgrn: "32cd32", nn: "af0e6", mgnt: "-ff", mrn: "8--0", mqm: "66cdaa", mmb: "--cd", mmrc: "ba55d3", mmpr: "9370db", msg: "3cb371", mmsT: "7b68ee", "": "-fa9a", mtr: "48d1cc", mmvt: "c71585", mnLb: "191970", ntc: "5fffa", mstr: "e4e1", mccs: "e4b5", vjw: "dead", nv: "--80", c: "df5e6", v: "808-0", vrb: "6b8e23", rng: "a5-", rngr: "45-", rch: "da70d6", pgnr: "eee8aa", pgrn: "98fb98", ptrq: "afeeee", pvtr: "db7093", ppwh: "efd5", pchp: "dab9", pr: "cd853f", pnk: "c0cb", pm: "dda0dd", pwrb: "b0e0e6", prp: "8-080", cc: "663399", r: "--", sbr: "bc8f8f", rb: "4169e1", sbrw: "8b4513", smn: "a8072", nbr: "4a460", sgrn: "2e8b57", ssh: "5ee", snn: "a0522d", svr: "c0c0c0", skb: "87ceeb", sTb: "6a5acd", sTgr: "708090", snw: "afa", n: "-ff7f", stb: "4682b4", tn: "d2b48c", t: "-8080", thst: "d8bfd8", tmT: "6347", trqs: "40e0d0", vt: "ee82ee", whT: "5deb3", wht: "", hts: "5f5f5", w: "-", wgrn: "9acd32" }, e = function() {
              function p(l, I, f, n) {
                w(this, p);
                var g = this;
                if (l !== void 0) if (Array.isArray(l)) this.rgba = l;
                else if (f === void 0) {
                  var C = l && "" + l;
                  C && function(y) {
                    if (y.startsWith("hsl")) {
                      var c = y.match(/([\-\d\.e]+)/g).map(Number), v = a(c, 4), k = v[0], S = v[1], L = v[2], W = v[3];
                      W === void 0 && (W = 1), k /= 360, S /= 100, L /= 100, g.hsla = [k, S, L, W];
                    } else if (y.startsWith("rgb")) {
                      var _ = y.match(/([\-\d\.e]+)/g).map(Number), O = a(_, 4), z = O[0], H = O[1], Y = O[2], ie = O[3];
                      ie === void 0 && (ie = 1), g.rgba = [z, H, Y, ie];
                    } else y.startsWith("#") ? g.rgba = p.hexToRgb(y) : g.rgba = p.nameToRgb(y) || p.hexToRgb(y);
                  }(C.toLowerCase());
                } else this.rgba = [l, I, f, n === void 0 ? 1 : n];
              }
              return d(p, [{ key: "printRGB", value: function(l) {
                var I = l ? this.rgba : this.rgba.slice(0, 3), f = I.map(function(n, g) {
                  return u(n, g === 3 ? 3 : 0);
                });
                return l ? "rgba(" + f + ")" : "rgb(" + f + ")";
              } }, { key: "printHSL", value: function(l) {
                var I = [360, 100, 100, 1], f = ["", "%", "%", ""], n = l ? this.hsla : this.hsla.slice(0, 3), g = n.map(function(C, y) {
                  return u(C * I[y], y === 3 ? 3 : 1) + f[y];
                });
                return l ? "hsla(" + g + ")" : "hsl(" + g + ")";
              } }, { key: "printHex", value: function(l) {
                var I = this.hex;
                return l ? I : I.substring(0, 7);
              } }, { key: "rgba", get: function() {
                if (this._rgba) return this._rgba;
                if (!this._hsla) throw new Error("No color is set");
                return this._rgba = p.hslToRgb(this._hsla);
              }, set: function(l) {
                l.length === 3 && (l[3] = 1), this._rgba = l, this._hsla = null;
              } }, { key: "rgbString", get: function() {
                return this.printRGB();
              } }, { key: "rgbaString", get: function() {
                return this.printRGB(!0);
              } }, { key: "hsla", get: function() {
                if (this._hsla) return this._hsla;
                if (!this._rgba) throw new Error("No color is set");
                return this._hsla = p.rgbToHsl(this._rgba);
              }, set: function(l) {
                l.length === 3 && (l[3] = 1), this._hsla = l, this._rgba = null;
              } }, { key: "hslString", get: function() {
                return this.printHSL();
              } }, { key: "hslaString", get: function() {
                return this.printHSL(!0);
              } }, { key: "hex", get: function() {
                return "#" + this.rgba.map(function(l, I) {
                  return I < 3 ? l.toString(16) : Math.round(255 * l).toString(16);
                }).map(function(l) {
                  return l.padStart(2, "0");
                }).join("");
              }, set: function(l) {
                this.rgba = p.hexToRgb(l);
              } }], [{ key: "hexToRgb", value: function(l) {
                var I = (l.startsWith("#") ? l.slice(1) : l).replace(/^(\w{3})$/, "$1F").replace(/^(\w)(\w)(\w)(\w)$/, "$1$1$2$2$3$3$4$4").replace(/^(\w{6})$/, "$1FF");
                if (!I.match(/^([0-9a-fA-F]{8})$/)) throw new Error("Unknown hex color; " + l);
                var f = I.match(/^(\w\w)(\w\w)(\w\w)(\w\w)$/).slice(1).map(function(n) {
                  return parseInt(n, 16);
                });
                return f[3] = f[3] / 255, f;
              } }, { key: "nameToRgb", value: function(l) {
                var I = l.toLowerCase().replace("at", "T").replace(/[aeiouyldf]/g, "").replace("ght", "L").replace("rk", "D").slice(-5, 4), f = o[I];
                return f === void 0 ? f : p.hexToRgb(f.replace(/\-/g, "00").padStart(6, "f"));
              } }, { key: "rgbToHsl", value: function(l) {
                var I = a(l, 4), f = I[0], n = I[1], g = I[2], C = I[3];
                f /= 255, n /= 255, g /= 255;
                var y = Math.max(f, n, g), c = Math.min(f, n, g), v = void 0, k = void 0, S = (y + c) / 2;
                if (y === c) v = k = 0;
                else {
                  var L = y - c;
                  switch (k = S > 0.5 ? L / (2 - y - c) : L / (y + c), y) {
                    case f:
                      v = (n - g) / L + (n < g ? 6 : 0);
                      break;
                    case n:
                      v = (g - f) / L + 2;
                      break;
                    case g:
                      v = (f - n) / L + 4;
                  }
                  v /= 6;
                }
                return [v, k, S, C];
              } }, { key: "hslToRgb", value: function(l) {
                var I = a(l, 4), f = I[0], n = I[1], g = I[2], C = I[3], y = void 0, c = void 0, v = void 0;
                if (n === 0) y = c = v = g;
                else {
                  var k = function(_, O, z) {
                    return z < 0 && (z += 1), z > 1 && (z -= 1), z < 0.16666666666666666 ? _ + 6 * (O - _) * z : z < 0.5 ? O : z < 0.6666666666666666 ? _ + (O - _) * (0.6666666666666666 - z) * 6 : _;
                  }, S = g < 0.5 ? g * (1 + n) : g + n - g * n, L = 2 * g - S;
                  y = k(L, S, f + 1 / 3), c = k(L, S, f), v = k(L, S, f - 1 / 3);
                }
                var W = [255 * y, 255 * c, 255 * v].map(Math.round);
                return W[3] = C, W;
              } }]), p;
            }(), t = function() {
              function p() {
                w(this, p), this._events = [];
              }
              return d(p, [{ key: "add", value: function(l, I, f) {
                l.addEventListener(I, f, !1), this._events.push({ target: l, type: I, handler: f });
              } }, { key: "remove", value: function(l, I, f) {
                this._events = this._events.filter(function(n) {
                  var g = !0;
                  return l && l !== n.target && (g = !1), I && I !== n.type && (g = !1), f && f !== n.handler && (g = !1), g && p._doRemove(n.target, n.type, n.handler), !g;
                });
              } }, { key: "destroy", value: function() {
                this._events.forEach(function(l) {
                  return p._doRemove(l.target, l.type, l.handler);
                }), this._events = [];
              } }], [{ key: "_doRemove", value: function(l, I, f) {
                l.removeEventListener(I, f, !1);
              } }]), p;
            }(), i = "keydown", s = "mousedown", h = "focusin", r = document.createElement("style");
            return r.textContent = `.picker_wrapper.no_alpha .picker_alpha{display:none}.picker_wrapper.no_editor .picker_editor{position:absolute;z-index:-1;opacity:0}.picker_wrapper.no_cancel .picker_cancel{display:none}.layout_default.picker_wrapper{display:-webkit-box;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;flex-flow:row wrap;-webkit-box-pack:justify;justify-content:space-between;-webkit-box-align:stretch;align-items:stretch;font-size:10px;width:25em;padding:.5em}.layout_default.picker_wrapper input,.layout_default.picker_wrapper button{font-size:1rem}.layout_default.picker_wrapper>*{margin:.5em}.layout_default.picker_wrapper::before{content:'';display:block;width:100%;height:0;-webkit-box-ordinal-group:2;order:1}.layout_default .picker_slider,.layout_default .picker_selector{padding:1em}.layout_default .picker_hue{width:100%}.layout_default .picker_sl{-webkit-box-flex:1;flex:1 1 auto}.layout_default .picker_sl::before{content:'';display:block;padding-bottom:100%}.layout_default .picker_editor{-webkit-box-ordinal-group:2;order:1;width:6.5rem}.layout_default .picker_editor input{width:100%;height:100%}.layout_default .picker_sample{-webkit-box-ordinal-group:2;order:1;-webkit-box-flex:1;flex:1 1 auto}.layout_default .picker_done,.layout_default .picker_cancel{-webkit-box-ordinal-group:2;order:1}.picker_wrapper{box-sizing:border-box;background:#f2f2f2;box-shadow:0 0 0 1px silver;cursor:default;font-family:sans-serif;color:#444;pointer-events:auto}.picker_wrapper:focus{outline:none}.picker_wrapper button,.picker_wrapper input{box-sizing:border-box;border:none;box-shadow:0 0 0 1px silver;outline:none}.picker_wrapper button:focus,.picker_wrapper button:active,.picker_wrapper input:focus,.picker_wrapper input:active{box-shadow:0 0 2px 1px dodgerblue}.picker_wrapper button{padding:.4em .6em;cursor:pointer;background-color:whitesmoke;background-image:-webkit-gradient(linear, left bottom, left top, from(gainsboro), to(transparent));background-image:linear-gradient(0deg, gainsboro, transparent)}.picker_wrapper button:active{background-image:-webkit-gradient(linear, left bottom, left top, from(transparent), to(gainsboro));background-image:linear-gradient(0deg, transparent, gainsboro)}.picker_wrapper button:hover{background-color:white}.picker_selector{position:absolute;z-index:1;display:block;-webkit-transform:translate(-50%, -50%);transform:translate(-50%, -50%);border:2px solid white;border-radius:100%;box-shadow:0 0 3px 1px #67b9ff;background:currentColor;cursor:pointer}.picker_slider .picker_selector{border-radius:2px}.picker_hue{position:relative;background-image:-webkit-gradient(linear, left top, right top, from(red), color-stop(yellow), color-stop(lime), color-stop(cyan), color-stop(blue), color-stop(magenta), to(red));background-image:linear-gradient(90deg, red, yellow, lime, cyan, blue, magenta, red);box-shadow:0 0 0 1px silver}.picker_sl{position:relative;box-shadow:0 0 0 1px silver;background-image:-webkit-gradient(linear, left top, left bottom, from(white), color-stop(50%, rgba(255,255,255,0))),-webkit-gradient(linear, left bottom, left top, from(black), color-stop(50%, rgba(0,0,0,0))),-webkit-gradient(linear, left top, right top, from(gray), to(rgba(128,128,128,0)));background-image:linear-gradient(180deg, white, rgba(255,255,255,0) 50%),linear-gradient(0deg, black, rgba(0,0,0,0) 50%),linear-gradient(90deg, gray, rgba(128,128,128,0))}.picker_alpha,.picker_sample{position:relative;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='2' height='2'%3E%3Cpath d='M1,0H0V1H2V2H1' fill='lightgrey'/%3E%3C/svg%3E") left top/contain white;box-shadow:0 0 0 1px silver}.picker_alpha .picker_selector,.picker_sample .picker_selector{background:none}.picker_editor input{font-family:monospace;padding:.2em .4em}.picker_sample::before{content:'';position:absolute;display:block;width:100%;height:100%;background:currentColor}.picker_arrow{position:absolute;z-index:-1}.picker_wrapper.popup{position:absolute;z-index:2;margin:1.5em}.picker_wrapper.popup,.picker_wrapper.popup .picker_arrow::before,.picker_wrapper.popup .picker_arrow::after{background:#f2f2f2;box-shadow:0 0 10px 1px rgba(0,0,0,0.4)}.picker_wrapper.popup .picker_arrow{width:3em;height:3em;margin:0}.picker_wrapper.popup .picker_arrow::before,.picker_wrapper.popup .picker_arrow::after{content:"";display:block;position:absolute;top:0;left:0;z-index:-99}.picker_wrapper.popup .picker_arrow::before{width:100%;height:100%;-webkit-transform:skew(45deg);transform:skew(45deg);-webkit-transform-origin:0 100%;transform-origin:0 100%}.picker_wrapper.popup .picker_arrow::after{width:150%;height:150%;box-shadow:none}.popup.popup_top{bottom:100%;left:0}.popup.popup_top .picker_arrow{bottom:0;left:0;-webkit-transform:rotate(-90deg);transform:rotate(-90deg)}.popup.popup_bottom{top:100%;left:0}.popup.popup_bottom .picker_arrow{top:0;left:0;-webkit-transform:rotate(90deg) scale(1, -1);transform:rotate(90deg) scale(1, -1)}.popup.popup_left{top:0;right:100%}.popup.popup_left .picker_arrow{top:0;right:0;-webkit-transform:scale(-1, 1);transform:scale(-1, 1)}.popup.popup_right{top:0;left:100%}.popup.popup_right .picker_arrow{top:0;left:0}`, document.documentElement.firstElementChild.appendChild(r), function() {
              function p(l) {
                w(this, p), this.settings = { popup: "right", layout: "default", alpha: !0, editor: !0, editorFormat: "hex", cancelButton: !1, defaultColor: "#0cf" }, this._events = new t(), this.onChange = null, this.onDone = null, this.onOpen = null, this.onClose = null, this.setOptions(l);
              }
              return d(p, [{ key: "setOptions", value: function(l) {
                var I = this;
                if (l) {
                  var f = this.settings;
                  if (l instanceof HTMLElement) f.parent = l;
                  else {
                    f.parent && l.parent && f.parent !== l.parent && (this._events.remove(f.parent), this._popupInited = !1), function(y, c, v) {
                      for (var k in y) c[k] = y[k];
                    }(l, f), l.onChange && (this.onChange = l.onChange), l.onDone && (this.onDone = l.onDone), l.onOpen && (this.onOpen = l.onOpen), l.onClose && (this.onClose = l.onClose);
                    var n = l.color || l.colour;
                    n && this._setColor(n);
                  }
                  var g = f.parent;
                  if (g && f.popup && !this._popupInited) {
                    var C = function(y) {
                      return I.openHandler(y);
                    };
                    this._events.add(g, "click", C), b(this._events, g, [" ", "Spacebar", "Enter"], C), this._popupInited = !0;
                  } else l.parent && !f.popup && this.show();
                }
              } }, { key: "openHandler", value: function(l) {
                if (this.show()) {
                  l && l.preventDefault(), this.settings.parent.style.pointerEvents = "none";
                  var I = l && l.type === i ? this._domEdit : this.domElement;
                  setTimeout(function() {
                    return I.focus();
                  }, 100), this.onOpen && this.onOpen(this.colour);
                }
              } }, { key: "closeHandler", value: function(l) {
                var I = l && l.type, f = !1;
                if (l) if (I === s || I === h) {
                  var n = (this.__containedEvent || 0) + 100;
                  l.timeStamp > n && (f = !0);
                } else E(l), f = !0;
                else f = !0;
                f && this.hide() && (this.settings.parent.style.pointerEvents = "", I !== s && this.settings.parent.focus(), this.onClose && this.onClose(this.colour));
              } }, { key: "movePopup", value: function(l, I) {
                this.closeHandler(), this.setOptions(l), I && this.openHandler();
              } }, { key: "setColor", value: function(l, I) {
                this._setColor(l, { silent: I });
              } }, { key: "_setColor", value: function(l, I) {
                if (typeof l == "string" && (l = l.trim()), l) {
                  I = I || {};
                  var f = void 0;
                  try {
                    f = new e(l);
                  } catch (g) {
                    if (I.failSilently) return;
                    throw g;
                  }
                  if (!this.settings.alpha) {
                    var n = f.hsla;
                    n[3] = 1, f.hsla = n;
                  }
                  this.colour = this.color = f, this._setHSLA(null, null, null, null, I);
                }
              } }, { key: "setColour", value: function(l, I) {
                this.setColor(l, I);
              } }, { key: "show", value: function() {
                if (!this.settings.parent) return !1;
                if (this.domElement) {
                  var l = this._toggleDOM(!0);
                  return this._setPosition(), l;
                }
                var I = this.settings.template || '<div class="picker_wrapper" tabindex="-1"><div class="picker_arrow"></div><div class="picker_hue picker_slider"><div class="picker_selector"></div></div><div class="picker_sl"><div class="picker_selector"></div></div><div class="picker_alpha picker_slider"><div class="picker_selector"></div></div><div class="picker_editor"><input aria-label="Type a color name or hex value"/></div><div class="picker_sample"></div><div class="picker_done"><button>Ok</button></div><div class="picker_cancel"><button>Cancel</button></div></div>', f = D(I);
                return this.domElement = f, this._domH = m(".picker_hue", f), this._domSL = m(".picker_sl", f), this._domA = m(".picker_alpha", f), this._domEdit = m(".picker_editor input", f), this._domSample = m(".picker_sample", f), this._domOkay = m(".picker_done button", f), this._domCancel = m(".picker_cancel button", f), f.classList.add("layout_" + this.settings.layout), this.settings.alpha || f.classList.add("no_alpha"), this.settings.editor || f.classList.add("no_editor"), this.settings.cancelButton || f.classList.add("no_cancel"), this._ifPopup(function() {
                  return f.classList.add("popup");
                }), this._setPosition(), this.colour ? this._updateUI() : this._setColor(this.settings.defaultColor), this._bindEvents(), !0;
              } }, { key: "hide", value: function() {
                return this._toggleDOM(!1);
              } }, { key: "destroy", value: function() {
                this._events.destroy(), this.domElement && this.settings.parent.removeChild(this.domElement);
              } }, { key: "_bindEvents", value: function() {
                function l(c, v, k) {
                  g.add(c, v, k);
                }
                var I = this, f = this, n = this.domElement, g = this._events;
                l(n, "click", function(c) {
                  return c.preventDefault();
                }), j(g, this._domH, function(c, v) {
                  return f._setHSLA(c);
                }), j(g, this._domSL, function(c, v) {
                  return f._setHSLA(null, c, 1 - v);
                }), this.settings.alpha && j(g, this._domA, function(c, v) {
                  return f._setHSLA(null, null, null, 1 - v);
                });
                var C = this._domEdit;
                l(C, "input", function(c) {
                  f._setColor(this.value, { fromEditor: !0, failSilently: !0 });
                }), l(C, "focus", function(c) {
                  var v = this;
                  v.selectionStart === v.selectionEnd && v.select();
                }), this._ifPopup(function() {
                  var c = function(k) {
                    return I.closeHandler(k);
                  };
                  l(window, s, c), l(window, h, c), b(g, n, ["Esc", "Escape"], c);
                  var v = function(k) {
                    I.__containedEvent = k.timeStamp;
                  };
                  l(n, s, v), l(n, h, v), l(I._domCancel, "click", c);
                });
                var y = function(c) {
                  I._ifPopup(function() {
                    return I.closeHandler(c);
                  }), I.onDone && I.onDone(I.colour);
                };
                l(this._domOkay, "click", y), b(g, n, ["Enter"], y);
              } }, { key: "_setPosition", value: function() {
                var l = this.settings.parent, I = this.domElement;
                l !== I.parentNode && l.appendChild(I), this._ifPopup(function(f) {
                  getComputedStyle(l).position === "static" && (l.style.position = "relative");
                  var n = f === !0 ? "popup_right" : "popup_" + f;
                  ["popup_top", "popup_bottom", "popup_left", "popup_right"].forEach(function(g) {
                    g === n ? I.classList.add(g) : I.classList.remove(g);
                  }), I.classList.add(n);
                });
              } }, { key: "_setHSLA", value: function(l, I, f, n, g) {
                g = g || {};
                var C = this.colour, y = C.hsla;
                [l, I, f, n].forEach(function(c, v) {
                  (c || c === 0) && (y[v] = c);
                }), C.hsla = y, this._updateUI(g), this.onChange && !g.silent && this.onChange(C);
              } }, { key: "_updateUI", value: function(l) {
                function I(q, ee, J) {
                  ee.style.left = 100 * J + "%";
                }
                function f(q, ee, J) {
                  ee.style.top = 100 * J + "%";
                }
                if (this.domElement) {
                  l = l || {};
                  var n = this.colour, g = n.hsla, C = "hsl(" + 360 * g[0] + ", 100%, 50%)", y = n.hslString, c = n.hslaString, v = this._domH, k = this._domSL, S = this._domA, L = m(".picker_selector", v), W = m(".picker_selector", k), _ = m(".picker_selector", S);
                  I(v, L, g[0]), this._domSL.style.backgroundColor = this._domH.style.color = C, I(k, W, g[1]), f(k, W, 1 - g[2]), k.style.color = y, f(S, _, 1 - g[3]);
                  var O = y, z = O.replace("hsl", "hsla").replace(")", ", 0)"), H = "linear-gradient(" + [O, z] + ")";
                  if (this._domA.style.backgroundImage = H + `, url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='2' height='2'%3E%3Cpath d='M1,0H0V1H2V2H1' fill='lightgrey'/%3E%3C/svg%3E")`, !l.fromEditor) {
                    var Y = this.settings.editorFormat, ie = this.settings.alpha, U = void 0;
                    switch (Y) {
                      case "rgb":
                        U = n.printRGB(ie);
                        break;
                      case "hsl":
                        U = n.printHSL(ie);
                        break;
                      default:
                        U = n.printHex(ie);
                    }
                    this._domEdit.value = U;
                  }
                  this._domSample.style.color = c;
                }
              } }, { key: "_ifPopup", value: function(l, I) {
                this.settings.parent && this.settings.popup ? l && l(this.settings.popup) : I && I();
              } }, { key: "_toggleDOM", value: function(l) {
                var I = this.domElement;
                if (!I) return !1;
                var f = l ? "" : "none", n = I.style.display !== f;
                return n && (I.style.display = f), n;
              } }], [{ key: "StyleElement", get: function() {
                return r;
              } }]), p;
            }();
          }();
        } }, Oe = {}, pe.amdD = function() {
          throw new Error("define cannot be used indirect");
        }, pe.n = function(F) {
          var u = F && F.__esModule ? function() {
            return F.default;
          } : function() {
            return F;
          };
          return pe.d(u, { a: u }), u;
        }, pe.d = function(F, u) {
          for (var D in u) pe.o(u, D) && !pe.o(F, D) && Object.defineProperty(F, D, { enumerable: !0, get: u[D] });
        }, pe.o = function(F, u) {
          return Object.prototype.hasOwnProperty.call(F, u);
        }, pe.r = function(F) {
          typeof Symbol < "u" && Symbol.toStringTag && Object.defineProperty(F, Symbol.toStringTag, { value: "Module" }), Object.defineProperty(F, "__esModule", { value: !0 });
        }, pe.nmd = function(F) {
          return F.paths = [], F.children || (F.children = []), F;
        }, pe(3161);
        var xe, Oe;
      });
    }, function(je, Re, Ie) {
      var pe = Ie(14);
      typeof pe == "string" && (pe = [[je.i, pe, ""]]), pe.locals && (je.exports = pe.locals), Ie(3)("62bece8f", pe, !0, {});
    }, function(je, Re, Ie) {
      var pe = Ie(1);
      Re = je.exports = Ie(2)(!1), Re.push([je.i, ".jsoneditor-modal input,.jsoneditor-modal input:not([type]),.jsoneditor-modal input[type=search],.jsoneditor-modal input[type=text],.jsoneditor input,.jsoneditor input:not([type]),.jsoneditor input[type=search],.jsoneditor input[type=text]{height:auto;border:inherit;box-shadow:none;font-size:inherit;box-sizing:inherit;padding:inherit;font-family:inherit;transition:none;line-height:inherit}.jsoneditor-modal input:focus,.jsoneditor-modal input:not([type]):focus,.jsoneditor-modal input[type=search]:focus,.jsoneditor-modal input[type=text]:focus,.jsoneditor input:focus,.jsoneditor input:not([type]):focus,.jsoneditor input[type=search]:focus,.jsoneditor input[type=text]:focus{border:inherit;box-shadow:inherit}.jsoneditor-modal textarea,.jsoneditor textarea{height:inherit}.jsoneditor-modal select,.jsoneditor select{display:inherit;height:inherit}.jsoneditor-modal label,.jsoneditor label{font-size:inherit;font-weight:inherit;color:inherit}.jsoneditor-modal table,.jsoneditor table{border-collapse:collapse;width:auto}.jsoneditor-modal td,.jsoneditor-modal th,.jsoneditor td,.jsoneditor th{padding:0;display:table-cell;text-align:left;vertical-align:inherit;border-radius:inherit}.jsoneditor .autocomplete.dropdown{position:absolute;background:#fff;box-shadow:2px 2px 12px hsla(0,0%,50%,.3);border:1px solid #d3d3d3;overflow-x:hidden;overflow-y:auto;cursor:default;margin:0;padding:5px;text-align:left;outline:0;font-family:dejavu sans mono,droid sans mono,consolas,monaco,lucida console,courier new,courier,monospace,sans-serif;font-size:10pt}.jsoneditor .autocomplete.dropdown .item{color:#1a1a1a}.jsoneditor .autocomplete.dropdown .item.hover{background-color:#ebebeb}.jsoneditor .autocomplete.hint{color:#a1a1a1;top:4px;left:4px}.jsoneditor-contextmenu-root{position:relative;width:0;height:0}.jsoneditor-contextmenu{position:absolute;box-sizing:content-box;z-index:2}.jsoneditor-contextmenu .jsoneditor-menu{position:relative;left:0;top:0;width:128px;height:auto;background:#fff;border:1px solid #d3d3d3;box-shadow:2px 2px 12px hsla(0,0%,50%,.3);list-style:none;margin:0;padding:0}.jsoneditor-contextmenu .jsoneditor-menu button{position:relative;padding:0 8px 0 0;margin:0;width:128px;height:auto;border:none;cursor:pointer;color:#4d4d4d;background:0 0;font-size:10pt;font-family:arial,sans-serif;box-sizing:border-box;text-align:left}.jsoneditor-contextmenu .jsoneditor-menu button::-moz-focus-inner{padding:0;border:0}.jsoneditor-contextmenu .jsoneditor-menu button.jsoneditor-default{width:96px}.jsoneditor-contextmenu .jsoneditor-menu button.jsoneditor-expand{float:right;width:32px;height:24px;border-left:1px solid #e5e5e5}.jsoneditor-contextmenu .jsoneditor-menu li{overflow:hidden}.jsoneditor-contextmenu .jsoneditor-menu li ul{display:none;position:relative;left:-10px;top:0;border:none;box-shadow:inset 0 0 10px hsla(0,0%,50%,.5);padding:0 10px;-webkit-transition:all .3s ease-out;-moz-transition:all .3s ease-out;-o-transition:all .3s ease-out;transition:all .3s ease-out}.jsoneditor-contextmenu .jsoneditor-menu li ul .jsoneditor-icon{margin-left:24px}.jsoneditor-contextmenu .jsoneditor-menu li ul li button{padding-left:24px;animation:all ease-in-out 1s}.jsoneditor-contextmenu .jsoneditor-menu li button .jsoneditor-expand{position:absolute;top:0;right:0;width:24px;height:24px;padding:0;margin:0 4px 0 0;background-image:url(" + pe(Ie(0)) + ");background-position:0 -72px}.jsoneditor-contextmenu .jsoneditor-icon{position:absolute;top:0;left:0;width:24px;height:24px;border:none;padding:0;margin:0;background-image:url(" + pe(Ie(0)) + ')}.jsoneditor-contextmenu .jsoneditor-text{padding:4px 0 4px 24px;word-wrap:break-word}.jsoneditor-contextmenu .jsoneditor-text.jsoneditor-right-margin{padding-right:24px}.jsoneditor-contextmenu .jsoneditor-separator{height:0;border-top:1px solid #e5e5e5;padding-top:5px;margin-top:5px}.jsoneditor-contextmenu button.jsoneditor-remove .jsoneditor-icon{background-position:-24px 0}.jsoneditor-contextmenu button.jsoneditor-append .jsoneditor-icon,.jsoneditor-contextmenu button.jsoneditor-insert .jsoneditor-icon{background-position:0 0}.jsoneditor-contextmenu button.jsoneditor-duplicate .jsoneditor-icon{background-position:-48px 0}.jsoneditor-contextmenu button.jsoneditor-sort-asc .jsoneditor-icon{background-position:-168px 0}.jsoneditor-contextmenu button.jsoneditor-sort-desc .jsoneditor-icon{background-position:-192px 0}.jsoneditor-contextmenu button.jsoneditor-transform .jsoneditor-icon{background-position:-216px 0}.jsoneditor-contextmenu button.jsoneditor-extract .jsoneditor-icon{background-position:0 -24px}.jsoneditor-contextmenu button.jsoneditor-type-string .jsoneditor-icon{background-position:-144px 0}.jsoneditor-contextmenu button.jsoneditor-type-auto .jsoneditor-icon{background-position:-120px 0}.jsoneditor-contextmenu button.jsoneditor-type-object .jsoneditor-icon{background-position:-72px 0}.jsoneditor-contextmenu button.jsoneditor-type-array .jsoneditor-icon{background-position:-96px 0}.jsoneditor-contextmenu button.jsoneditor-type-modes .jsoneditor-icon{background-image:none;width:6px}.jsoneditor-contextmenu li,.jsoneditor-contextmenu ul{box-sizing:content-box;position:relative}.jsoneditor-contextmenu .jsoneditor-menu button:focus,.jsoneditor-contextmenu .jsoneditor-menu button:hover{color:#1a1a1a;background-color:#f5f5f5;outline:0}.jsoneditor-contextmenu .jsoneditor-menu li button.jsoneditor-selected,.jsoneditor-contextmenu .jsoneditor-menu li button.jsoneditor-selected:focus,.jsoneditor-contextmenu .jsoneditor-menu li button.jsoneditor-selected:hover{color:#fff;background-color:#ee422e}.jsoneditor-contextmenu .jsoneditor-menu li ul li button:focus,.jsoneditor-contextmenu .jsoneditor-menu li ul li button:hover{background-color:#f5f5f5}.jsoneditor-modal{max-width:95%;border-radius:2px!important;padding:45px 15px 15px!important;box-shadow:2px 2px 12px hsla(0,0%,50%,.3);color:#4d4d4d;line-height:1.3em}.jsoneditor-modal.jsoneditor-modal-transform{width:600px!important}.jsoneditor-modal .pico-modal-header{position:absolute;box-sizing:border-box;top:0;left:0;width:100%;padding:0 10px;height:30px;line-height:30px;font-family:arial,sans-serif;font-size:11pt;background:#3883fa;color:#fff}.jsoneditor-modal table{width:100%}.jsoneditor-modal table td{padding:3px 0}.jsoneditor-modal table td.jsoneditor-modal-input{text-align:right;padding-right:0;white-space:nowrap}.jsoneditor-modal table td.jsoneditor-modal-actions{padding-top:15px}.jsoneditor-modal table th{vertical-align:middle}.jsoneditor-modal p:first-child{margin-top:0}.jsoneditor-modal a{color:#3883fa}.jsoneditor-modal .jsoneditor-jmespath-block{margin-bottom:10px}.jsoneditor-modal .pico-close{background:0 0!important;font-size:24px!important;top:7px!important;right:7px!important;color:#fff}.jsoneditor-modal input{padding:4px}.jsoneditor-modal input[type=text]{cursor:inherit}.jsoneditor-modal input[disabled]{background:#d3d3d3;color:grey}.jsoneditor-modal .jsoneditor-select-wrapper{position:relative;display:inline-block}.jsoneditor-modal .jsoneditor-select-wrapper:after{content:"";width:0;height:0;border-left:5px solid transparent;border-right:5px solid transparent;border-top:6px solid #666;position:absolute;right:8px;top:14px;pointer-events:none}.jsoneditor-modal select{padding:3px 24px 3px 10px;min-width:180px;max-width:350px;-webkit-appearance:none;-moz-appearance:none;appearance:none;text-indent:0;text-overflow:"";font-size:10pt;line-height:1.5em}.jsoneditor-modal select::-ms-expand{display:none}.jsoneditor-modal .jsoneditor-button-group input{padding:4px 10px;margin:0;border-radius:0;border-left-style:none}.jsoneditor-modal .jsoneditor-button-group input.jsoneditor-button-first{border-top-left-radius:3px;border-bottom-left-radius:3px;border-left-style:solid}.jsoneditor-modal .jsoneditor-button-group input.jsoneditor-button-last{border-top-right-radius:3px;border-bottom-right-radius:3px}.jsoneditor-modal .jsoneditor-transform-preview{background:#f5f5f5;height:200px}.jsoneditor-modal .jsoneditor-transform-preview.jsoneditor-error{color:#ee422e}.jsoneditor-modal .jsoneditor-jmespath-wizard{line-height:1.2em;width:100%;padding:0;border-radius:3px}.jsoneditor-modal .jsoneditor-jmespath-label{font-weight:700;color:#1e90ff;margin-top:20px;margin-bottom:5px}.jsoneditor-modal .jsoneditor-jmespath-wizard-table{width:100%;border-collapse:collapse}.jsoneditor-modal .jsoneditor-jmespath-wizard-label{font-style:italic;margin:4px 0 2px}.jsoneditor-modal .jsoneditor-inline{position:relative;display:inline-block;width:100%;padding-top:2px;padding-bottom:2px}.jsoneditor-modal .jsoneditor-inline:not(:last-child){padding-right:2px}.jsoneditor-modal .jsoneditor-jmespath-filter{display:flex;flex-wrap:wrap}.jsoneditor-modal .jsoneditor-jmespath-filter-field{width:180px}.jsoneditor-modal .jsoneditor-jmespath-filter-relation{width:100px}.jsoneditor-modal .jsoneditor-jmespath-filter-value{min-width:180px;flex:1}.jsoneditor-modal .jsoneditor-jmespath-sort-field{width:170px}.jsoneditor-modal .jsoneditor-jmespath-sort-order{width:150px}.jsoneditor-modal .jsoneditor-jmespath-select-fields{width:100%}.jsoneditor-modal .selectr-selected{border-color:#d3d3d3;padding:4px 28px 4px 8px}.jsoneditor-modal .selectr-selected .selectr-tag{background-color:#3883fa;border-radius:5px}.jsoneditor-modal table td,.jsoneditor-modal table th{text-align:left;vertical-align:middle;font-weight:400;color:#4d4d4d;border-spacing:0;border-collapse:collapse}.jsoneditor-modal #query,.jsoneditor-modal input,.jsoneditor-modal input[type=text],.jsoneditor-modal input[type=text]:focus,.jsoneditor-modal select,.jsoneditor-modal textarea{background:#fff;border:1px solid #d3d3d3;color:#4d4d4d;border-radius:3px;padding:4px}.jsoneditor-modal,.jsoneditor-modal #query,.jsoneditor-modal input,.jsoneditor-modal input[type=text],.jsoneditor-modal option,.jsoneditor-modal select,.jsoneditor-modal table td,.jsoneditor-modal table th,.jsoneditor-modal textarea{font-size:10.5pt;font-family:arial,sans-serif}.jsoneditor-modal #query,.jsoneditor-modal .jsoneditor-transform-preview{font-family:dejavu sans mono,droid sans mono,consolas,monaco,lucida console,courier new,courier,monospace,sans-serif;font-size:10pt;width:100%;box-sizing:border-box}.jsoneditor-modal input[type=button],.jsoneditor-modal input[type=submit]{background:#f5f5f5;padding:4px 20px}.jsoneditor-modal input,.jsoneditor-modal select{cursor:pointer}.jsoneditor-modal .jsoneditor-button-group.jsoneditor-button-group-value-asc input.jsoneditor-button-asc,.jsoneditor-modal .jsoneditor-button-group.jsoneditor-button-group-value-desc input.jsoneditor-button-desc{background:#3883fa;border-color:#3883fa;color:#fff}.jsoneditor{color:#1a1a1a;border:thin solid #3883fa;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box;width:100%;height:100%;position:relative;padding:0;line-height:100%}div.jsoneditor-default,div.jsoneditor-field,div.jsoneditor-readonly,div.jsoneditor-value{border:1px solid transparent;min-height:16px;min-width:32px;padding:2px;margin:1px;word-wrap:break-word;float:left}div.jsoneditor-field p,div.jsoneditor-value p{margin:0}div.jsoneditor-value{word-break:break-word}div.jsoneditor-value.jsoneditor-empty:after{content:"value"}div.jsoneditor-value.jsoneditor-string{color:#006000}div.jsoneditor-value.jsoneditor-number{color:#ee422e}div.jsoneditor-value.jsoneditor-boolean{color:#ff8c00}div.jsoneditor-value.jsoneditor-null{color:#004ed0}div.jsoneditor-value.jsoneditor-color-value,div.jsoneditor-value.jsoneditor-invalid{color:#1a1a1a}div.jsoneditor-readonly{min-width:16px;color:grey}div.jsoneditor-empty{border-color:#d3d3d3;border-style:dashed;border-radius:2px}div.jsoneditor-field.jsoneditor-empty:after{content:"field"}div.jsoneditor td{vertical-align:top}div.jsoneditor td.jsoneditor-separator{padding:3px 0;vertical-align:top;color:grey}div.jsoneditor td.jsoneditor-tree{vertical-align:top}div.jsoneditor.busy pre.jsoneditor-preview{background:#f5f5f5;color:grey}div.jsoneditor.busy div.jsoneditor-busy{display:inherit}div.jsoneditor code.jsoneditor-preview{background:0 0}div.jsoneditor.jsoneditor-mode-preview pre.jsoneditor-preview{width:100%;height:100%;box-sizing:border-box;overflow:auto;padding:2px;margin:0;white-space:pre-wrap;word-break:break-all}div.jsoneditor-default{color:grey;padding-left:10px}div.jsoneditor-tree{width:100%;height:100%;position:relative;overflow:auto;background:#fff}div.jsoneditor-tree button.jsoneditor-button{width:24px;height:24px;padding:0;margin:0;border:none;cursor:pointer;background-color:transparent;background-image:url(' + pe(Ie(0)) + ")}div.jsoneditor-tree button.jsoneditor-button:focus{background-color:#f5f5f5;outline:1px solid #e5e5e5}div.jsoneditor-tree button.jsoneditor-collapsed{background-position:0 -48px}div.jsoneditor-tree button.jsoneditor-expanded{background-position:0 -72px}div.jsoneditor-tree button.jsoneditor-contextmenu-button{background-position:-48px -72px}div.jsoneditor-tree button.jsoneditor-invisible{visibility:hidden;background:0 0}div.jsoneditor-tree button.jsoneditor-dragarea{background-image:url(" + pe(Ie(0)) + ");background-position:-72px -72px;cursor:move}div.jsoneditor-tree :focus{outline:0}div.jsoneditor-tree div.jsoneditor-show-more{display:inline-block;padding:3px 4px;margin:2px 0;background-color:#e5e5e5;border-radius:3px;color:grey;font-family:arial,sans-serif;font-size:10pt}div.jsoneditor-tree div.jsoneditor-show-more a{display:inline-block;color:grey}div.jsoneditor-tree div.jsoneditor-color{display:inline-block;width:12px;height:12px;margin:4px;border:1px solid grey;cursor:pointer}div.jsoneditor-tree div.jsoneditor-date{background:#a1a1a1;color:#fff;font-family:arial,sans-serif;border-radius:3px;display:inline-block;padding:3px;margin:0 3px}div.jsoneditor-tree table.jsoneditor-tree{border-collapse:collapse;border-spacing:0;width:100%}div.jsoneditor-tree .jsoneditor-button.jsoneditor-schema-error{width:24px;height:24px;padding:0;margin:0 4px 0 0;background-image:url(" + pe(Ie(0)) + ');background-position:-168px -48px;background-color:transparent}div.jsoneditor-outer{position:static;width:100%;height:100%;margin:0;padding:0;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}div.jsoneditor-outer.has-nav-bar{margin-top:-26px;padding-top:26px}div.jsoneditor-outer.has-nav-bar.has-main-menu-bar{margin-top:-61px;padding-top:61px}div.jsoneditor-outer.has-status-bar{margin-bottom:-26px;padding-bottom:26px}div.jsoneditor-outer.has-main-menu-bar{margin-top:-35px;padding-top:35px}div.jsoneditor-busy{position:absolute;top:15%;left:0;box-sizing:border-box;width:100%;text-align:center;display:none}div.jsoneditor-busy span{background-color:#ffffab;border:1px solid #fe0;border-radius:3px;padding:5px 15px;box-shadow:0 0 5px rgba(0,0,0,.4)}div.jsoneditor-field.jsoneditor-empty:after,div.jsoneditor-value.jsoneditor-empty:after{pointer-events:none;color:#d3d3d3;font-size:8pt}a.jsoneditor-value.jsoneditor-url,div.jsoneditor-value.jsoneditor-url{color:#006000;text-decoration:underline}a.jsoneditor-value.jsoneditor-url{display:inline-block;padding:2px;margin:2px}a.jsoneditor-value.jsoneditor-url:focus,a.jsoneditor-value.jsoneditor-url:hover{color:#ee422e}div.jsoneditor-field.jsoneditor-highlight,div.jsoneditor-field[contenteditable=true]:focus,div.jsoneditor-field[contenteditable=true]:hover,div.jsoneditor-value.jsoneditor-highlight,div.jsoneditor-value[contenteditable=true]:focus,div.jsoneditor-value[contenteditable=true]:hover{background-color:#ffffab;border:1px solid #fe0;border-radius:2px}div.jsoneditor-field.jsoneditor-highlight-active,div.jsoneditor-field.jsoneditor-highlight-active:focus,div.jsoneditor-field.jsoneditor-highlight-active:hover,div.jsoneditor-value.jsoneditor-highlight-active,div.jsoneditor-value.jsoneditor-highlight-active:focus,div.jsoneditor-value.jsoneditor-highlight-active:hover{background-color:#fe0;border:1px solid #ffc700;border-radius:2px}div.jsoneditor-value.jsoneditor-array,div.jsoneditor-value.jsoneditor-object{min-width:16px}div.jsoneditor-tree button.jsoneditor-contextmenu-button.jsoneditor-selected,div.jsoneditor-tree button.jsoneditor-contextmenu-button:focus,div.jsoneditor-tree button.jsoneditor-contextmenu-button:hover,tr.jsoneditor-selected.jsoneditor-first button.jsoneditor-contextmenu-button{background-position:-48px -48px}div.jsoneditor-tree div.jsoneditor-show-more a:focus,div.jsoneditor-tree div.jsoneditor-show-more a:hover{color:#ee422e}.ace-jsoneditor,textarea.jsoneditor-text{min-height:150px}.ace-jsoneditor *,textarea.jsoneditor-text *{font-family:dejavu sans mono,droid sans mono,consolas,monaco,lucida console,courier new,courier,monospace,sans-serif}textarea.jsoneditor-text{width:100%;height:100%;margin:0;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box;outline-width:0;border:none;background-color:#fff;resize:none}tr.jsoneditor-highlight,tr.jsoneditor-selected{background-color:#d3d3d3}tr.jsoneditor-selected button.jsoneditor-contextmenu-button,tr.jsoneditor-selected button.jsoneditor-dragarea{visibility:hidden}tr.jsoneditor-selected.jsoneditor-first button.jsoneditor-contextmenu-button,tr.jsoneditor-selected.jsoneditor-first button.jsoneditor-dragarea{visibility:visible}div.jsoneditor-tree button.jsoneditor-dragarea:focus,div.jsoneditor-tree button.jsoneditor-dragarea:hover,tr.jsoneditor-selected.jsoneditor-first button.jsoneditor-dragarea{background-position:-72px -48px}div.jsoneditor td,div.jsoneditor th,div.jsoneditor tr{padding:0;margin:0}.jsoneditor-popover,.jsoneditor-schema-error,div.jsoneditor-field,div.jsoneditor-value,div.jsoneditor td,div.jsoneditor textarea,div.jsoneditor th,pre.jsoneditor-preview{font-family:dejavu sans mono,droid sans mono,consolas,monaco,lucida console,courier new,courier,monospace,sans-serif;font-size:10pt;color:#1a1a1a}.jsoneditor-schema-error{cursor:default;display:inline-block;height:24px;line-height:24px;position:relative;text-align:center;width:24px}.jsoneditor-popover{background-color:#4c4c4c;border-radius:3px;box-shadow:0 0 5px rgba(0,0,0,.4);color:#fff;padding:7px 10px;position:absolute;cursor:auto;width:200px}.jsoneditor-popover.jsoneditor-above{bottom:32px;left:-98px}.jsoneditor-popover.jsoneditor-above:before{border-top:7px solid #4c4c4c;bottom:-7px}.jsoneditor-popover.jsoneditor-below{top:32px;left:-98px}.jsoneditor-popover.jsoneditor-below:before{border-bottom:7px solid #4c4c4c;top:-7px}.jsoneditor-popover.jsoneditor-left{top:-7px;right:32px}.jsoneditor-popover.jsoneditor-left:before{border-left:7px solid #4c4c4c;border-top:7px solid transparent;border-bottom:7px solid transparent;content:"";top:19px;right:-14px;left:inherit;margin-left:inherit;margin-top:-7px;position:absolute}.jsoneditor-popover.jsoneditor-right{top:-7px;left:32px}.jsoneditor-popover.jsoneditor-right:before{border-right:7px solid #4c4c4c;border-top:7px solid transparent;border-bottom:7px solid transparent;content:"";top:19px;left:-14px;margin-left:inherit;margin-top:-7px;position:absolute}.jsoneditor-popover:before{border-right:7px solid transparent;border-left:7px solid transparent;content:"";display:block;left:50%;margin-left:-7px;position:absolute}.jsoneditor-text-errors tr.jump-to-line:hover{text-decoration:underline;cursor:pointer}.jsoneditor-schema-error:focus .jsoneditor-popover,.jsoneditor-schema-error:hover .jsoneditor-popover{display:block;animation:fade-in .3s linear 1,move-up .3s linear 1}@keyframes fade-in{0%{opacity:0}to{opacity:1}}.jsoneditor .jsoneditor-validation-errors-container{max-height:130px;overflow-y:auto}.jsoneditor .jsoneditor-validation-errors{width:100%;overflow:hidden}.jsoneditor .jsoneditor-additional-errors{position:absolute;margin:auto;bottom:31px;left:calc(50% - 92px);color:grey;background-color:#ebebeb;padding:7px 15px;border-radius:8px}.jsoneditor .jsoneditor-additional-errors.visible{visibility:visible;opacity:1;transition:opacity 2s linear}.jsoneditor .jsoneditor-additional-errors.hidden{visibility:hidden;opacity:0;transition:visibility 0s 2s,opacity 2s linear}.jsoneditor .jsoneditor-text-errors{width:100%;border-collapse:collapse;border-top:1px solid #ffc700}.jsoneditor .jsoneditor-text-errors td{padding:3px 6px;vertical-align:middle}.jsoneditor .jsoneditor-text-errors td pre{margin:0;white-space:normal}.jsoneditor .jsoneditor-text-errors tr{background-color:#ffffab}.jsoneditor .jsoneditor-text-errors tr.parse-error{background-color:#ee2e2e70}.jsoneditor-text-errors .jsoneditor-schema-error{border:none;width:24px;height:24px;padding:0;margin:0 4px 0 0;cursor:pointer}.jsoneditor-text-errors tr .jsoneditor-schema-error{background-image:url(' + pe(Ie(0)) + ");background-position:-168px -48px;background-color:transparent}.jsoneditor-text-errors tr.parse-error .jsoneditor-schema-error{background-image:url(" + pe(Ie(0)) + ");background-position:-25px 0;background-color:transparent}.jsoneditor-anchor{cursor:pointer}.jsoneditor-anchor .picker_wrapper.popup.popup_bottom{top:28px;left:-10px}.fadein{-webkit-animation:fadein .3s;animation:fadein .3s;-moz-animation:fadein .3s;-o-animation:fadein .3s}@keyframes fadein{0%{opacity:0}to{opacity:1}}.jsoneditor-modal input[type=search].selectr-input{border:1px solid #d3d3d3;width:calc(100% - 4px);margin:2px;padding:4px;box-sizing:border-box}.jsoneditor-modal button.selectr-input-clear{right:8px}.jsoneditor-menu{width:100%;height:35px;padding:2px;margin:0;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box;color:#fff;background-color:#3883fa;border-bottom:1px solid #3883fa}.jsoneditor-menu>.jsoneditor-modes>button,.jsoneditor-menu>button{width:26px;height:26px;margin:2px;padding:0;border-radius:2px;border:1px solid transparent;background-color:transparent;background-image:url(" + pe(Ie(0)) + ");color:#fff;opacity:.8;font-family:arial,sans-serif;font-size:10pt;float:left}.jsoneditor-menu>.jsoneditor-modes>button:hover,.jsoneditor-menu>button:hover{background-color:hsla(0,0%,100%,.2);border:1px solid hsla(0,0%,100%,.4)}.jsoneditor-menu>.jsoneditor-modes>button:active,.jsoneditor-menu>.jsoneditor-modes>button:focus,.jsoneditor-menu>button:active,.jsoneditor-menu>button:focus{background-color:hsla(0,0%,100%,.3)}.jsoneditor-menu>.jsoneditor-modes>button:disabled,.jsoneditor-menu>button:disabled{opacity:.5;background-color:transparent;border:none}.jsoneditor-menu>button.jsoneditor-collapse-all{background-position:0 -96px}.jsoneditor-menu>button.jsoneditor-expand-all{background-position:0 -120px}.jsoneditor-menu>button.jsoneditor-sort{background-position:-120px -96px}.jsoneditor-menu>button.jsoneditor-transform{background-position:-144px -96px}.jsoneditor.jsoneditor-mode-form>.jsoneditor-menu>button.jsoneditor-sort,.jsoneditor.jsoneditor-mode-form>.jsoneditor-menu>button.jsoneditor-transform,.jsoneditor.jsoneditor-mode-view>.jsoneditor-menu>button.jsoneditor-sort,.jsoneditor.jsoneditor-mode-view>.jsoneditor-menu>button.jsoneditor-transform{display:none}.jsoneditor-menu>button.jsoneditor-undo{background-position:-24px -96px}.jsoneditor-menu>button.jsoneditor-undo:disabled{background-position:-24px -120px}.jsoneditor-menu>button.jsoneditor-redo{background-position:-48px -96px}.jsoneditor-menu>button.jsoneditor-redo:disabled{background-position:-48px -120px}.jsoneditor-menu>button.jsoneditor-compact{background-position:-72px -96px}.jsoneditor-menu>button.jsoneditor-format{background-position:-72px -120px}.jsoneditor-menu>button.jsoneditor-repair{background-position:-96px -96px}.jsoneditor-menu>.jsoneditor-modes{display:inline-block;float:left}.jsoneditor-menu>.jsoneditor-modes>button{background-image:none;width:auto;padding-left:6px;padding-right:6px}.jsoneditor-menu>.jsoneditor-modes>button.jsoneditor-separator,.jsoneditor-menu>button.jsoneditor-separator{margin-left:10px}.jsoneditor-menu a{font-family:arial,sans-serif;font-size:10pt;color:#fff;opacity:.8;vertical-align:middle}.jsoneditor-menu a:hover{opacity:1}.jsoneditor-menu a.jsoneditor-poweredBy{font-size:8pt;position:absolute;right:0;top:0;padding:10px}.jsoneditor-navigation-bar{width:100%;height:26px;line-height:26px;padding:0;margin:0;border-bottom:1px solid #d3d3d3;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box;color:grey;background-color:#ebebeb;overflow:hidden;font-family:arial,sans-serif;font-size:10pt}.jsoneditor-search{font-family:arial,sans-serif;position:absolute;right:4px;top:4px;border-collapse:collapse;border-spacing:0;display:flex}.jsoneditor-search input{color:#1a1a1a;width:120px;border:none;outline:0;margin:1px;line-height:20px;font-family:arial,sans-serif}.jsoneditor-search button{width:16px;height:24px;padding:0;margin:0;border:none;background:url(" + pe(Ie(0)) + ");vertical-align:top}.jsoneditor-search button:hover{background-color:transparent}.jsoneditor-search button.jsoneditor-refresh{width:18px;background-position:-99px -73px}.jsoneditor-search button.jsoneditor-next{cursor:pointer;background-position:-124px -73px}.jsoneditor-search button.jsoneditor-next:hover{background-position:-124px -49px}.jsoneditor-search button.jsoneditor-previous{cursor:pointer;background-position:-148px -73px;margin-right:2px}.jsoneditor-search button.jsoneditor-previous:hover{background-position:-148px -49px}.jsoneditor-results{font-family:arial,sans-serif;color:#fff;padding-right:5px;line-height:26px}.jsoneditor-frame{border:1px solid transparent;background-color:#fff;padding:0 2px;margin:0}.jsoneditor-statusbar{line-height:26px;height:26px;color:grey;background-color:#ebebeb;border-top:1px solid #d3d3d3;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box;font-size:10pt}.jsoneditor-statusbar>.jsoneditor-curserinfo-val{margin-right:12px}.jsoneditor-statusbar>.jsoneditor-curserinfo-count{margin-left:4px}.jsoneditor-statusbar>.jsoneditor-validation-error-icon{float:right;width:24px;height:24px;padding:0;margin-top:1px;background-image:url(" + pe(Ie(0)) + ");background-position:-168px -48px;cursor:pointer}.jsoneditor-statusbar>.jsoneditor-validation-error-count{float:right;margin:0 4px 0 0;cursor:pointer}.jsoneditor-statusbar>.jsoneditor-parse-error-icon{float:right;width:24px;height:24px;padding:0;margin:1px;background-image:url(" + pe(Ie(0)) + `);background-position:-25px 0}.jsoneditor-statusbar .jsoneditor-array-info a{color:inherit}div.jsoneditor-statusbar>.jsoneditor-curserinfo-label,div.jsoneditor-statusbar>.jsoneditor-size-info{margin:0 4px}.jsoneditor-treepath{padding:0 5px;overflow:hidden;white-space:nowrap;outline:0}.jsoneditor-treepath.show-all{word-wrap:break-word;white-space:normal;position:absolute;background-color:#ebebeb;z-index:1;box-shadow:2px 2px 12px hsla(0,0%,50%,.3)}.jsoneditor-treepath.show-all span.jsoneditor-treepath-show-all-btn{display:none}.jsoneditor-treepath div.jsoneditor-contextmenu-root{position:absolute;left:0}.jsoneditor-treepath .jsoneditor-treepath-show-all-btn{position:absolute;background-color:#ebebeb;left:0;height:20px;padding:0 3px;cursor:pointer}.jsoneditor-treepath .jsoneditor-treepath-element{margin:1px;font-family:arial,sans-serif;font-size:10pt}.jsoneditor-treepath .jsoneditor-treepath-seperator{margin:2px;font-size:9pt;font-family:arial,sans-serif}.jsoneditor-treepath span.jsoneditor-treepath-element:hover,.jsoneditor-treepath span.jsoneditor-treepath-seperator:hover{cursor:pointer;text-decoration:underline}/*!
 * Selectr 2.4.0
 * https://github.com/Mobius1/Selectr
 *
 * Released under the MIT license
 */.selectr-container{position:relative}.selectr-container li{list-style:none}.selectr-hidden{position:absolute;overflow:hidden;clip:rect(0,0,0,0);width:1px;height:1px;margin:-1px;padding:0;border:0 none}.selectr-visible{position:absolute;left:0;top:0;width:100%;height:100%;opacity:0;z-index:11}.selectr-desktop.multiple .selectr-visible{display:none}.selectr-desktop.multiple.native-open .selectr-visible{top:100%;min-height:200px!important;height:auto;opacity:1;display:block}.selectr-container.multiple.selectr-mobile .selectr-selected{z-index:0}.selectr-selected{position:relative;z-index:1;box-sizing:border-box;width:100%;padding:7px 28px 7px 14px;cursor:pointer;border:1px solid #999;border-radius:3px;background-color:#fff}.selectr-selected:before{position:absolute;top:50%;right:10px;width:0;height:0;content:"";-o-transform:rotate(0) translate3d(0,-50%,0);-ms-transform:rotate(0) translate3d(0,-50%,0);-moz-transform:rotate(0) translate3d(0,-50%,0);-webkit-transform:rotate(0) translate3d(0,-50%,0);transform:rotate(0) translate3d(0,-50%,0);border-width:4px 4px 0;border-style:solid;border-color:#6c7a86 transparent transparent}.selectr-container.native-open .selectr-selected:before,.selectr-container.open .selectr-selected:before{border-width:0 4px 4px;border-style:solid;border-color:transparent transparent #6c7a86}.selectr-label{display:none;overflow:hidden;width:100%;white-space:nowrap;text-overflow:ellipsis}.selectr-placeholder{color:#6c7a86}.selectr-tags{margin:0;padding:0;white-space:normal}.has-selected .selectr-tags{margin:0 0 -2px}.selectr-tag{list-style:none;position:relative;float:left;padding:2px 25px 2px 8px;margin:0 2px 2px 0;cursor:default;color:#fff;border:medium none;border-radius:10px;background:#acb7bf none repeat scroll 0 0}.selectr-container.multiple.has-selected .selectr-selected{padding:5px 28px 5px 5px}.selectr-options-container{position:absolute;z-index:10000;top:calc(100% - 1px);left:0;display:none;box-sizing:border-box;width:100%;border-width:0 1px 1px;border-style:solid;border-color:transparent #999 #999;border-radius:0 0 3px 3px;background-color:#fff}.selectr-container.open .selectr-options-container{display:block}.selectr-input-container{position:relative;display:none}.selectr-clear,.selectr-input-clear,.selectr-tag-remove{position:absolute;top:50%;right:22px;width:20px;height:20px;padding:0;cursor:pointer;-o-transform:translate3d(0,-50%,0);-ms-transform:translate3d(0,-50%,0);-moz-transform:translate3d(0,-50%,0);-webkit-transform:translate3d(0,-50%,0);transform:translate3d(0,-50%,0);border:medium none;background-color:transparent;z-index:11}.selectr-clear,.selectr-input-clear{display:none}.selectr-container.has-selected .selectr-clear,.selectr-input-container.active .selectr-input-clear{display:block}.selectr-selected .selectr-tag-remove{right:2px}.selectr-clear:after,.selectr-clear:before,.selectr-input-clear:after,.selectr-input-clear:before,.selectr-tag-remove:after,.selectr-tag-remove:before{position:absolute;top:5px;left:9px;width:2px;height:10px;content:" ";background-color:#6c7a86}.selectr-tag-remove:after,.selectr-tag-remove:before{top:4px;width:3px;height:12px;background-color:#fff}.selectr-clear:before,.selectr-input-clear:before,.selectr-tag-remove:before{-o-transform:rotate(45deg);-ms-transform:rotate(45deg);-moz-transform:rotate(45deg);-webkit-transform:rotate(45deg);transform:rotate(45deg)}.selectr-clear:after,.selectr-input-clear:after,.selectr-tag-remove:after{-o-transform:rotate(-45deg);-ms-transform:rotate(-45deg);-moz-transform:rotate(-45deg);-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}.selectr-input-container.active,.selectr-input-container.active .selectr-clear{display:block}.selectr-input{top:5px;left:5px;box-sizing:border-box;width:calc(100% - 30px);margin:10px 15px;padding:7px 30px 7px 9px;border:1px solid #999;border-radius:3px}.selectr-notice{display:none;box-sizing:border-box;width:100%;padding:8px 16px;border-top:1px solid #999;border-radius:0 0 3px 3px;background-color:#fff}.selectr-container.notice .selectr-notice{display:block}.selectr-container.notice .selectr-selected{border-radius:3px 3px 0 0}.selectr-options{position:relative;top:calc(100% + 2px);display:none;overflow-x:auto;overflow-y:scroll;max-height:200px;margin:0;padding:0}.selectr-container.notice .selectr-options-container,.selectr-container.open .selectr-input-container,.selectr-container.open .selectr-options{display:block}.selectr-option{position:relative;display:block;padding:5px 20px;list-style:outside none none;cursor:pointer;font-weight:400}.selectr-options.optgroups>.selectr-option{padding-left:25px}.selectr-optgroup{font-weight:700;padding:0}.selectr-optgroup--label{font-weight:700;margin-top:10px;padding:5px 15px}.selectr-match{text-decoration:underline}.selectr-option.selected{background-color:#ddd}.selectr-option.active{color:#fff;background-color:#5897fb}.selectr-option.disabled{opacity:.4}.selectr-option.excluded{display:none}.selectr-container.open .selectr-selected{border-color:#999 #999 transparent;border-radius:3px 3px 0 0}.selectr-container.open .selectr-selected:after{-o-transform:rotate(180deg) translate3d(0,50%,0);-ms-transform:rotate(180deg) translate3d(0,50%,0);-moz-transform:rotate(180deg) translate3d(0,50%,0);-webkit-transform:rotate(180deg) translate3d(0,50%,0);transform:rotate(180deg) translate3d(0,50%,0)}.selectr-disabled{opacity:.6}.has-selected .selectr-placeholder,.selectr-empty{display:none}.has-selected .selectr-label{display:block}.taggable .selectr-selected{padding:4px 28px 4px 4px}.taggable .selectr-selected:after{display:table;content:" ";clear:both}.taggable .selectr-label{width:auto}.taggable .selectr-tags{float:left;display:block}.taggable .selectr-placeholder{display:none}.input-tag{float:left;min-width:90px;width:auto}.selectr-tag-input{border:medium none;padding:3px 10px;width:100%;font-family:inherit;font-weight:inherit;font-size:inherit}.selectr-input-container.loading:after{position:absolute;top:50%;right:20px;width:20px;height:20px;content:"";-o-transform:translate3d(0,-50%,0);-ms-transform:translate3d(0,-50%,0);-moz-transform:translate3d(0,-50%,0);-webkit-transform:translate3d(0,-50%,0);transform:translate3d(0,-50%,0);-o-transform-origin:50% 0 0;-ms-transform-origin:50% 0 0;-moz-transform-origin:50% 0 0;-webkit-transform-origin:50% 0 0;transform-origin:50% 0 0;-moz-animation:.5s linear 0s normal forwards infinite running selectr-spin;-webkit-animation:.5s linear 0s normal forwards infinite running selectr-spin;animation:.5s linear 0s normal forwards infinite running selectr-spin;border-width:3px;border-style:solid;border-color:#aaa #ddd #ddd;border-radius:50%}@-webkit-keyframes selectr-spin{0%{-webkit-transform:rotate(0) translate3d(0,-50%,0);transform:rotate(0) translate3d(0,-50%,0)}to{-webkit-transform:rotate(1turn) translate3d(0,-50%,0);transform:rotate(1turn) translate3d(0,-50%,0)}}@keyframes selectr-spin{0%{-webkit-transform:rotate(0) translate3d(0,-50%,0);transform:rotate(0) translate3d(0,-50%,0)}to{-webkit-transform:rotate(1turn) translate3d(0,-50%,0);transform:rotate(1turn) translate3d(0,-50%,0)}}.selectr-container.open.inverted .selectr-selected{border-color:transparent #999 #999;border-radius:0 0 3px 3px}.selectr-container.inverted .selectr-options-container{border-width:1px 1px 0;border-color:#999 #999 transparent;border-radius:3px 3px 0 0;background-color:#fff;top:auto;bottom:calc(100% - 1px)}.selectr-container ::-webkit-input-placeholder{color:#6c7a86;opacity:1}.selectr-container ::-moz-placeholder{color:#6c7a86;opacity:1}.selectr-container :-ms-input-placeholder{color:#6c7a86;opacity:1}.selectr-container ::placeholder{color:#6c7a86;opacity:1}`, ""]);
    }, function(je, Re, Ie) {
      var pe = function() {
        var F = this, u = F.$createElement, D = F._self._c || u;
        return D("div", { staticClass: "jsoneditor-container", class: { "max-box": F.max, "min-box": !F.max }, style: F.getHeight }, [D("div", { ref: "jsoneditor", staticClass: "jsoneditor-box" }), F._v(" "), F.options.mode == "code" && F.plus ? D("button", { staticClass: "max-btn", attrs: { type: "button", size: "mini" }, on: { click: function(j) {
          F.max = !F.max;
        } } }) : F._e()]);
      }, xe = [], Oe = { render: pe, staticRenderFns: xe };
      Re.a = Oe;
    }]);
  });
})(lt);
var ut = lt.exports;
const mt = /* @__PURE__ */ ht(ut);
export {
  mt as V
};
